UNPKG

@indiekit/frontend

Version:

Frontend components for Indiekit

97 lines (82 loc) 2.42 kB
checkboxes-field { --checkbox-size: 1.7778em; --checkbox-space: var(--space-s); --checkbox-padding-inline: calc(var(--checkbox-size) + var(--checkbox-space)); display: block; } .checkboxes { display: flex; flex-direction: column; } .checkboxes__item { margin-block: var(--space-2xs); padding-block: var(--space-xs); padding-inline-start: var(--checkbox-padding-inline); position: relative; } .checkboxes__input { appearance: none; background: var(--color-background); block-size: var(--checkbox-size); border: var(--input-border-width) solid var(--color-outline-variant); border-radius: var(--border-radius-small); cursor: pointer; inline-size: var(--checkbox-size); inset: 0; position: absolute; z-index: 1; &:checked { background: var(--color-background) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M6.5 13 2 8.5 3.5 7l3 3 6-6L14 5.5z"/></svg>') center center / 100% auto no-repeat; @media (prefers-color-scheme: dark) { background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path fill="white" d="M6.5 13 2 8.5 3.5 7l3 3 6-6L14 5.5z"/></svg>'); } } &:focus-visible { border-color: var(--color-on-background); border-width: var(--input-border-width-focus); } &:disabled, &[readonly] { background-color: var(--color-offset); border-color: var(--color-offset); color: var(--color-on-offset); cursor: default; & + .checkboxes__label { cursor: default; } } } .checkboxes__label.label { --label-font: var(--font-fieldset-label); cursor: pointer; margin: 0; touch-action: manipulation; /* remove 300ms pause on mobile */ } .checkboxes__hint { inline-size: 100%; } /* Divider (‘or’) */ .checkboxes__divider { inline-size: var(--checkbox-size); text-align: center; } /* Conditonal reveals */ .checkboxes__conditional { --label-font: var(--font-fieldset-label); padding-inline-start: var(--checkbox-padding-inline); position: relative; &::before { border-inline-start: var(--input-border-width) solid var(--color-outline-variant); content: ""; display: block; inset-block: 0; inset-inline-start: calc(var(--checkbox-size) / 2); position: absolute; } .js-enabled &.checkboxes__conditional--hidden { display: none; } }