Spaces:
Runtime error
Runtime error
| <script lang="ts"> | |
| import { style } from './stores'; | |
| import { styles } from './config.json'; | |
| const keys: string[] = Object.keys(styles); | |
| </script> | |
| <fieldset> | |
| <legend>{styles[$style] || 'Synthesizer'}</legend> | |
| <div class="grid"> | |
| {#each keys as key, i} | |
| <label data-selected={$style === key}> | |
| <div> | |
| <img src={`static/${key}.svg`} alt={styles[key]} /> | |
| </div> | |
| <input type="radio" bind:group={$style} value={key} /> | |
| </label> | |
| {/each} | |
| </div> | |
| </fieldset> | |
| <style> | |
| fieldset { | |
| position: relative; | |
| padding: 0; | |
| border: none; | |
| margin-top: 1rem; | |
| } | |
| legend { | |
| text-align: center; | |
| font-size: 1.25rem; | |
| font-weight: 700; | |
| padding: 0; | |
| } | |
| .grid { | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 1rem; | |
| width: min-content; | |
| margin: 1rem auto; | |
| } | |
| img { | |
| width: 100%; | |
| height: 100%; | |
| filter: invert(1); | |
| margin: auto; | |
| } | |
| label { | |
| background-color: transparent; | |
| border-radius: 0.375rem; | |
| transition: background-color 0.25s; | |
| cursor: pointer; | |
| } | |
| label > div { | |
| width: 3rem; | |
| aspect-ratio: 1 / 1; | |
| } | |
| input { | |
| position: fixed; | |
| opacity: 0; | |
| pointer-events: none; | |
| } | |
| label[data-selected='true'] { | |
| background-color: hsl(0 0% 97%); | |
| border-radius: 0.375rem; | |
| } | |
| label[data-selected='true'] img { | |
| filter: none; | |
| } | |
| @media (min-width: 600px) and (max-width: 899px) { | |
| .grid { | |
| display: flex; | |
| flex-direction: row; | |
| } | |
| } | |
| @media (min-width: 900px) { | |
| .grid { | |
| grid-template-columns: repeat(4, 1fr); | |
| } | |
| } | |
| </style> | |