web-expressive
Version:
A standard-first frontend toolkit based on Material Expressive design language intent.
2 lines (1 loc) • 8.57 kB
CSS
@layer design-system.components{.toggle-button{--_fill:0;--_button-transitions:border-radius var(--sys-motion-spring-fast-spatial-duration) var(--sys-motion-spring-fast-spatial), background var(--sys-motion-spring-fast-effects-duration) var(--sys-motion-spring-fast-effects), outline-width var(--sys-motion-spring-fast-spatial-duration) var(--sys-motion-spring-pop-focus);--_radius-full:calc((var(--_block-size) - var(--_inner-padding) * 2) / 2);--_shadow:none;--_background:var(--sys-color-surface-container);--_border:none;--_cursor:pointer;--_color:var(--sys-color-on-surface-variant);--_state:none;--_outline-width:0px;place-items:center;inline-size:fit-content;display:inline-grid;&:has(.input:not(:disabled)){&:has(.input:hover){--_state:oklch(from var(--_color) l c h / 8%)}&:has(.input:focus-visible){--_state:oklch(from var(--_color) l c h / 10%);--_outline-width:3px}&:has(.input:active){--_border-radius:var(--_active-button-corner);--_state:oklch(from var(--_color) l c h / 10%)}&:has(.input:checked){--_background:var(--sys-color-primary);--_color:var(--sys-color-on-primary);--_fill:1}&.tonal{--_background:var(--sys-color-secondary-container);--_color:var(--sys-color-on-secondary-container);&:has(.input:checked){--_background:var(--sys-color-secondary);--_color:var(--sys-color-on-secondary)}}&.outline{--_background:transparent;--_border:1px solid var(--sys-color-outline-variant);--_color:var(--sys-color-on-surface-variant);&:has(.input:checked){--_background:var(--sys-color-inverse-surface);--_color:var(--sys-color-inverse-on-surface)}}&.elevated{--_background:var(--sys-color-surface-container-low);--_color:var(--sys-color-primary);--_shadow:var(--sys-elevation-level-1);&:has(.input:checked){--_background:var(--sys-color-primary);--_color:var(--sys-color-on-primary)}}}&:has(.input:disabled){--_background:oklch(from var(--sys-color-on-surface) l c h / 10%);--_cursor:not-allowed;--_color:oklch(from var(--sys-color-on-surface) l c h / 38%);--_state:none;&.outline{--_border:1px solid var(--sys-color-outline-variant)}}& .input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:none;outline:none;grid-area:1/1;block-size:100%;inline-size:100%}& .label{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;justify-content:center;align-items:center;gap:var(--_gap);cursor:var(--_cursor);isolation:isolate;padding-inline:var(--_padding-inline);inline-size:fit-content;block-size:var(--_block-size);color:var(--_color);font:var(--_font);user-select:none;white-space:nowrap;background:0 0;border:none;outline:none;grid-area:1/1;text-decoration:none;display:inline-flex;position:relative;& .icon{inline-size:var(--_icon-font-size);block-size:var(--_icon-font-size);font-size:var(--_icon-font-size);line-height:1;font-family:var(--ref-typeface-symbols);font-variation-settings:"FILL" var(--_fill,0), "wght" 400, "GRAD" 0, "opsz" 24;font-feature-settings:"liga";white-space:nowrap;grid-area:1/1;display:inline-block;overflow:clip;&:is(svg){fill:var(--_color)}&:is(img){object-fit:cover}.toggle-button:has(&.selected){& .selected{display:none}&:has(input:checked){& .icon{display:none}& .selected{display:block}}}}&:before{z-index:-1;transition:var(--_button-transitions);inset:var(--_inner-padding) 0px;outline:var(--_outline-width) solid var(--sys-color-secondary);outline-offset:2px;box-shadow:var(--_shadow);border:var(--_border);border-radius:var(--_border-radius);background:var(--_background);content:"";position:absolute}&:after{z-index:-1;transition:var(--_button-transitions);inset:var(--_inner-padding) 0px;border-radius:var(--_border-radius);background:var(--_state);content:"";position:absolute}}}.toggle-button{--_block-size:3rem;--_initial-button-corner:var(--_radius-full);--_selected-button-corner:var(--sys-shape-corner-medium);--_active-button-corner:var(--sys-shape-corner-small);--_initial-square-button-corner:var(--sys-shape-corner-medium);--_selected-square-button-corner:var(--_radius-full);--_border-radius:var(--_initial-button-corner);--_font:var(--sys-typescale-label-large);--_gap:var(--sys-measurement-space-100);--_icon-font-size:1.25rem;--_inner-padding:var(--sys-measurement-space-50);--_padding-block:var(--sys-measurement-space-125);--_padding-inline:var(--sys-measurement-space-200);&:not(.round){@container style(--shape-items:square){--_border-radius:var(--_initial-square-button-corner)}}&.square{--_border-radius:var(--_initial-square-button-corner)}&:has(.input:checked){--_border-radius:var(--_selected-button-corner);&:not(.round){@container style(--shape-items:square){--_border-radius:var(--_selected-square-button-corner)}}&.square{--_border-radius:var(--_selected-square-button-corner)}}&:not(.small){@container style(--size-items:extra-small){--_block-size:3rem;--_active-button-corner:var(--sys-shape-corner-small);--_font:var(--sys-typescale-label-large);--_gap:var(--sys-measurement-space-50);--_icon-font-size:1.25rem;--_inner-padding:var(--sys-measurement-space-100);--_padding-block:var(--sys-measurement-space-75);--_padding-inline:var(--sys-measurement-space-150);--_selected-button-corner:var(--sys-shape-corner-medium);--_initial-square-button-corner:var(--sys-shape-corner-medium)}@container style(--size-items:medium){--_block-size:3.5rem;--_active-button-corner:var(--sys-shape-corner-medium);--_font:var(--sys-typescale-title-medium);--_gap:var(--sys-measurement-space-100);--_icon-font-size:1.5rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-200);--_padding-inline:var(--sys-measurement-space-300);--_selected-button-corner:var(--sys-shape-corner-large);--_initial-square-button-corner:var(--sys-shape-corner-large)}@container style(--size-items:large){--_block-size:6rem;--_active-button-corner:var(--sys-shape-corner-large);--_font:var(--sys-typescale-headline-small);--_gap:var(--sys-measurement-space-150);--_icon-font-size:2rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-400);--_padding-inline:var(--sys-measurement-space-600);--_selected-button-corner:var(--sys-shape-corner-extra-large);--_initial-square-button-corner:var(--sys-shape-corner-extra-large)}@container style(--size-items:extra-large){--_block-size:8.5rem;--_active-button-corner:var(--sys-shape-corner-large);--_font:var(--sys-typescale-headline-large);--_gap:var(--sys-measurement-space-200);--_icon-font-size:2.5rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-600);--_padding-inline:var(--sys-measurement-space-800);--_selected-button-corner:var(--sys-shape-corner-extra-large);--_initial-square-button-corner:var(--sys-shape-corner-extra-large)}}&.extra-small{--_block-size:3rem;--_active-button-corner:var(--sys-shape-corner-small);--_font:var(--sys-typescale-label-large);--_gap:var(--sys-measurement-space-50);--_icon-font-size:1.25rem;--_inner-padding:var(--sys-measurement-space-100);--_padding-block:var(--sys-measurement-space-75);--_padding-inline:var(--sys-measurement-space-150);--_selected-button-corner:var(--sys-shape-corner-medium);--_initial-square-button-corner:var(--sys-shape-corner-medium)}&.medium{--_block-size:3.5rem;--_active-button-corner:var(--sys-shape-corner-medium);--_font:var(--sys-typescale-title-medium);--_gap:var(--sys-measurement-space-100);--_icon-font-size:1.5rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-200);--_padding-inline:var(--sys-measurement-space-300);--_selected-button-corner:var(--sys-shape-corner-large);--_initial-square-button-corner:var(--sys-shape-corner-large)}&.large{--_block-size:6rem;--_active-button-corner:var(--sys-shape-corner-large);--_font:var(--sys-typescale-headline-small);--_gap:var(--sys-measurement-space-150);--_icon-font-size:2rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-400);--_padding-inline:var(--sys-measurement-space-600);--_selected-button-corner:var(--sys-shape-corner-extra-large);--_initial-square-button-corner:var(--sys-shape-corner-extra-large)}&.extra-large{--_block-size:8.5rem;--_active-button-corner:var(--sys-shape-corner-large);--_font:var(--sys-typescale-headline-large);--_gap:var(--sys-measurement-space-200);--_icon-font-size:2.5rem;--_inner-padding:var(--sys-measurement-space-0);--_padding-block:var(--sys-measurement-space-600);--_padding-inline:var(--sys-measurement-space-800);--_selected-button-corner:var(--sys-shape-corner-extra-large);--_initial-square-button-corner:var(--sys-shape-corner-extra-large)}}}