diff options
author | Deniz Akşimşek <deniz@aksimsek.tr> | 2024-12-11 22:28:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-11 22:28:46 +0300 |
commit | 1e2d5a420f2b4c6fe0b6bdc2e8adfedaed99af74 (patch) | |
tree | fac3ddfe56da6be6da978b994e93dc4c13cb963d /src/aria.css | |
parent | 0efeb805e84b86f54b8727ea6613e68cbd53a57a (diff) | |
parent | 82dee6361c8ee4c213990c646a0d2100a9fd4644 (diff) | |
download | missing-dev.tar.gz missing-dev.zip |
Toggle
Diffstat (limited to 'src/aria.css')
-rw-r--r-- | src/aria.css | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/aria.css b/src/aria.css index 6a57157..ed12c76 100644 --- a/src/aria.css +++ b/src/aria.css @@ -116,3 +116,77 @@ width: fit-content; text-align: center; } + + +input[type=checkbox][role=switch] { + all: unset; + appearance: none; + + display: inline-grid; + vertical-align: middle; + grid-template-columns: repeat(2, 1rem); + aspect-ratio: 2 / 1; + margin-block: auto; + + &::before, &::after { + content: ''; + display: inline-block; + + transition: transform .2s ease-in-out, background-color .2s ease-in-out, background-color .2s ease-in-out; + } + + &::before { + grid-column: 1 / span 2; + grid-row: 1; + border: 1px solid var(--graphical-fg); + background: var(--bg); + border-radius: 9999rem; + } + + &::after { + --toggle-nub-margin: 2px; + grid-column: 1; + grid-row: 1; + margin: var(--toggle-nub-margin); + border-radius: 99999rem; + background: var(--graphical-fg); + } + + &:checked { + &::before { + border-color: var(--accent); + background: var(--accent); + } + &::after { + transform: translateX(calc(100% + 2 * var(--toggle-nub-margin))); + background: var(--bg); + } + } + + &:indeterminate { + &::after { + transform: translateX(calc(50% + var(--toggle-nub-margin))); + background: var(--bg); + border: 1px solid var(--graphical-fg); + } + } + + &:is(label > *):not(#specificity-hack) { + margin-block-end: auto; + } + &:not(label > *) { + padding-block: calc(var(--gap) / 4 + (var(--rhythm) - 1em) / 2); + } + + :is(label:has(> &)) { + /* Lightning CSS requires :is() when nested selector doesn't start with & */ + display: flex; + gap: var(--gap); + flex-direction: row; + } + :is(label:has(+ &)) { + /* Lightning CSS requires :is() when nested selector doesn't start with & */ + width: 100%; + } + +} |