web-expressive
Version:
A standard-first frontend toolkit based on Material Expressive design language intent.
2 lines (1 loc) • 12.5 kB
CSS
@layer design-system.components{.icon-btn{--_shadow:none;--_motion:border-radius var(--sys-motion-spring-fast-spatial-duration) var(--sys-motion-spring-fast-spatial);--_radius-full:calc(min( (var(--_block-size) - var(--_padding-block) * 2) / 2, (var(--_inline-size) - var(--_padding-inline) * 2) / 2));--_btn-radius:var(--_radius-full);--_btn-radius-expand:var(--sys-shape-corner-small);--_bg:var(--sys-color-primary);--_border:none;--_corner:var(--_btn-radius);--_cursor:pointer;--_on-bg:var(--sys-color-on-primary);--_state:none;--_outline-width:0px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;cursor:var(--_cursor);isolation:isolate;padding-inline:var(--_padding-inline);padding-block:var(--_padding-block);inline-size:var(--_inline-size);block-size:var(--_block-size);color:var(--_on-bg);font:var(--_font);user-select:none;background:0 0;border:none;outline:none;place-items:center;text-decoration:none;display:inline-grid;position:relative;& .icon{font-size:var(--_icon-font-size);line-height:1;font-family:var(--ref-typeface-symbols);font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";white-space:nowrap;grid-area:1/1;display:inline-block}&:before{z-index:-1;transition:var(--_motion);outline:var(--_outline-width) solid var(--sys-color-secondary);outline-offset:2px;box-shadow:var(--_shadow);border:var(--_border);border-radius:var(--_corner);background:var(--_bg);content:"";grid-area:1/1;block-size:100%;inline-size:100%;display:block;@media (prefers-reduced-motion:no-preference){transition:var(--_motion), outline-width var(--sys-motion-spring-fast-spatial-duration) var(--sys-motion-spring-pop-focus)}}&:after{z-index:-1;transition:var(--_motion);border-radius:var(--_corner);background:var(--_state);content:"";grid-area:1/1;block-size:100%;inline-size:100%;display:block}&:hover{--_bg:var(--sys-color-primary);--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-primary);--_state:oklch(from var(--sys-color-on-primary) l c h / 8%)}&:focus-visible{--_bg:var(--sys-color-primary);--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-primary);--_state:oklch(from var(--sys-color-on-primary) l c h / 10%);--_outline-width:3px}&:active{--_bg:var(--sys-color-primary);--_border:none;--_corner:var(--_btn-radius-expand);--_on-bg:var(--sys-color-on-primary);--_state:oklch(from var(--sys-color-on-primary) l c h / 10%)}&:disabled{--_bg:oklch(from var(--sys-color-on-surface) l c h / 10%);--_border:none;--_corner:var(--_btn-radius);--_cursor:not-allowed;--_on-bg:oklch(from var(--sys-color-on-surface) l c h / 38%);--_state:none}&.tonal{--_bg:var(--sys-color-secondary-container);--_border:none;--_corner:var(--_btn-radius);--_cursor:pointer;--_on-bg:var(--sys-color-on-secondary-container);--_state:none;&:hover{--_bg:var(--sys-color-secondary-container);--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-secondary-container);--_state:oklch(from var(--sys-color-on-secondary-container) l c h / 8%)}&:focus-visible{--_bg:var(--sys-color-secondary-container);--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-secondary-container);--_state:oklch(from var(--sys-color-on-secondary-container) l c h / 10%)}&:active{--_bg:var(--sys-color-secondary-container);--_border:none;--_corner:var(--_btn-radius-expand);--_on-bg:var(--sys-color-on-secondary-container);--_state:oklch(from var(--sys-color-on-secondary-container) l c h / 10%)}&:disabled{--_bg:oklch(from var(--sys-color-on-surface) l c h / 10%);--_border:none;--_corner:var(--_btn-radius);--_cursor:not-allowed;--_on-bg:oklch(from var(--sys-color-on-surface) l c h / 38%);--_state:none}}&.outline{--_bg:none;--_border:1px solid var(--sys-color-outline-variant);--_corner:var(--_btn-radius);--_cursor:pointer;--_on-bg:var(--sys-color-on-surface-variant);--_state:none;&:hover{--_bg:none;--_border:1px solid var(--sys-color-outline-variant);--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 8%)}&:focus-visible{--_bg:none;--_border:1px solid var(--sys-color-outline-variant);--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 10%)}&:active{--_bg:none;--_border:1px solid var(--sys-color-outline-variant);--_corner:var(--_btn-radius-expand);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 10%)}&:disabled{--_bg:none;--_border:1px solid var(--sys-color-outline-variant);--_corner:var(--_btn-radius);--_cursor:not-allowed;--_on-bg:oklch(from var(--sys-color-on-surface) l c h / 38%);--_state:none}}&.standard{--_bg:none;--_border:none;--_corner:var(--_btn-radius);--_cursor:pointer;--_on-bg:var(--sys-color-on-surface-variant);--_state:none;&:hover{--_bg:none;--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 8%)}&:focus-visible{--_bg:none;--_border:none;--_corner:var(--_btn-radius);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 10%)}&:active{--_bg:none;--_border:none;--_corner:var(--_btn-radius-expand);--_on-bg:var(--sys-color-on-surface-variant);--_state:oklch(from var(--sys-color-on-surface-variant) l c h / 10%)}&:disabled{--_bg:none;--_border:none;--_corner:var(--_btn-radius);--_cursor:not-allowed;--_on-bg:oklch(from var(--sys-color-on-surface) l c h / 38%);--_state:none}}}.icon-btn{--_block-size:3rem;--_icon-font-size:1.25rem;--_inline-size:3rem;--_padding-block:.25rem;--_padding-inline:.25rem;&:not(.normal){@container style(--width:narrow){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.25rem;--_padding-inline:.5rem}@container style(--width:wide){--_block-size:3rem;--_inline-size:3.25rem;--_padding-block:.25rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-medium)}}&.narrow{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.25rem;--_padding-inline:.5rem}&.wide{--_block-size:3rem;--_inline-size:3.25rem;--_padding-block:.25rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-medium)}}.icon-btn:not(.sm){&.xs{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.5rem;--_icon-font-size:1.25rem;&:not(.normal){@container style(--width:narrow){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.625rem}@container style(--width:wide){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.25rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-medium)}}&.narrow{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.625rem}&.wide{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.25rem}&.square{--_btn-radius:var(--sys-shape-corner-medium)}}&.md{--_block-size:3.5rem;--_icon-font-size:1.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-medium);&:not(.normal){@container style(--width:narrow){--_block-size:3.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:.25rem}@container style(--width:wide){--_block-size:3.5rem;--_inline-size:4.5rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-large)}}&.narrow{--_block-size:3.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:.25rem}&.wide{--_block-size:3.5rem;--_inline-size:4.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-large)}}&.lg{--_block-size:6rem;--_icon-font-size:2rem;--_inline-size:6rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-large);&:not(.normal){@container style(--width:narrow){--_block-size:6rem;--_inline-size:4rem;--_padding-block:0rem;--_padding-inline:0rem}@container style(--width:wide){--_block-size:6rem;--_inline-size:8rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-extra-large)}}&.narrow{--_block-size:6rem;--_inline-size:4rem;--_padding-block:0rem;--_padding-inline:0rem}&.wide{--_block-size:6rem;--_inline-size:8rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-extra-large)}}&.xl{--_block-size:8.5rem;--_icon-font-size:2.5rem;--_inline-size:8.5rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-large);&:not(.normal){@container style(--width:narrow){--_block-size:8.5rem;--_inline-size:6.5rem;--_padding-block:0rem;--_padding-inline:0rem}@container style(--width:wide){--_block-size:8.5rem;--_inline-size:11.5rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-extra-large)}}&.narrow{--_block-size:8.5rem;--_inline-size:6.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.wide{--_block-size:8.5rem;--_inline-size:11.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-extra-large)}}}.icon-btn:not(.sm){@container style(--size:xs){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.5rem;--_icon-font-size:1.25rem;&:not(.normal){@container style(--width:narrow){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.625rem}@container style(--width:wide){--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.25rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-medium)}}&.narrow{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.625rem}&.wide{--_block-size:3rem;--_inline-size:3rem;--_padding-block:.5rem;--_padding-inline:.25rem}&.square{--_btn-radius:var(--sys-shape-corner-medium)}}@container style(--size:md){--_block-size:3.5rem;--_icon-font-size:1.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-medium);&:not(.normal){@container style(--width:narrow){--_block-size:3.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:.25rem}@container style(--width:wide){--_block-size:3.5rem;--_inline-size:4.5rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-large)}}&.narrow{--_block-size:3.5rem;--_inline-size:3.5rem;--_padding-block:0rem;--_padding-inline:.25rem}&.wide{--_block-size:3.5rem;--_inline-size:4.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-large)}}@container style(--size:lg){--_block-size:6rem;--_icon-font-size:2rem;--_inline-size:6rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-large);&:not(.normal){@container style(--width:narrow){--_block-size:6rem;--_inline-size:4rem;--_padding-block:0rem;--_padding-inline:0rem}@container style(--width:wide){--_block-size:6rem;--_inline-size:8rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-extra-large)}}&.narrow{--_block-size:6rem;--_inline-size:4rem;--_padding-block:0rem;--_padding-inline:0rem}&.wide{--_block-size:6rem;--_inline-size:8rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-extra-large)}}@container style(--size:xl){--_block-size:8.5rem;--_icon-font-size:2.5rem;--_inline-size:8.5rem;--_padding-block:0rem;--_padding-inline:0rem;--_btn-radius-expand:var(--sys-shape-corner-large);&:not(.normal){@container style(--width:narrow){--_block-size:8.5rem;--_inline-size:6.5rem;--_padding-block:0rem;--_padding-inline:0rem}@container style(--width:wide){--_block-size:8.5rem;--_inline-size:11.5rem;--_padding-block:0rem;--_padding-inline:0rem}}&:not(.round){@container style(--shape:square){--_btn-radius:var(--sys-shape-corner-extra-large)}}&.narrow{--_block-size:8.5rem;--_inline-size:6.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.wide{--_block-size:8.5rem;--_inline-size:11.5rem;--_padding-block:0rem;--_padding-inline:0rem}&.square{--_btn-radius:var(--sys-shape-corner-extra-large)}}}}