@fusion.dev/helix 0.218.0 → 0.220.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api.json +1 -1
- package/custom-elements.json +1 -1
- package/dist/breadcrumbs/breadcrumb/breadcrumb.css.js +1 -1
- package/dist/canvas/root/canvas-root.d.ts +1 -0
- package/dist/canvas/root/canvas-root.js +1 -0
- package/dist/chat/composer/chat-composer.css.js +1 -1
- package/dist/chat/composer/chat-composer.d.ts +102 -5
- package/dist/chat/composer/chat-composer.js +134 -0
- package/dist/chat/message/chat-message.css.js +1 -1
- package/dist/chat/message/chat-message.d.ts +1 -0
- package/dist/checkbox/root/checkbox-root.css.js +1 -1
- package/dist/code-editor/root/code-editor-root.css.js +1 -1
- package/dist/code-editor/root/code-editor-root.d.ts +1 -0
- package/dist/code-editor/root/code-editor-root.js +1 -0
- package/dist/color-input/root/color-input-root.d.ts +1 -3
- package/dist/combobox/root/combobox-root.d.ts +1 -2
- package/dist/command/root/command-root.css.js +1 -1
- package/dist/command/root/command-root.d.ts +16 -1
- package/dist/command/root/command-root.js +16 -0
- package/dist/date-input/root/date-input-root.d.ts +1 -2
- package/dist/device-screen/root/device-screen-root.d.ts +1 -0
- package/dist/device-screen/root/device-screen-root.js +1 -0
- package/dist/dialog/root/dialog-root.css.js +1 -1
- package/dist/dialog/root/dialog-root.d.ts +14 -2
- package/dist/dialog/root/dialog-root.js +3 -0
- package/dist/drawer/root/drawer-root.css.js +1 -1
- package/dist/drawer/root/drawer-root.d.ts +1 -2
- package/dist/element-events.generated.js +4 -1
- package/dist/find/index.d.ts +1 -0
- package/dist/find/index.js +1 -0
- package/dist/find/root/find-root.css.d.ts +1 -0
- package/dist/find/root/find-root.css.js +2 -0
- package/dist/find/root/find-root.d.ts +38 -0
- package/dist/find/root/find-root.js +17 -0
- package/dist/graph/root/graph-root.d.ts +1 -0
- package/dist/graph/root/graph-root.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/kbd/root/kbd-root.css.js +1 -1
- package/dist/log/group/log-group.css.js +1 -1
- package/dist/log/line/log-line.css.js +1 -1
- package/dist/log/root/log-root.css.js +1 -1
- package/dist/log/root/log-root.d.ts +5 -1
- package/dist/map/root/map-root.css.js +1 -1
- package/dist/map/root/map-root.d.ts +1 -0
- package/dist/map/root/map-root.js +1 -0
- package/dist/megamenu/root/megamenu-root.css.js +1 -1
- package/dist/megamenu/root/megamenu-root.d.ts +2 -2
- package/dist/menu/item/menu-item.css.js +1 -1
- package/dist/menu/root/menu-root.css.js +1 -1
- package/dist/menu/root/menu-root.d.ts +19 -1
- package/dist/menu/root/menu-root.js +4 -0
- package/dist/menu/section/menu-section.css.js +1 -1
- package/dist/meter/index.d.ts +1 -0
- package/dist/meter/index.js +1 -0
- package/dist/meter/root/meter-root.css.js +1 -1
- package/dist/meter/segment/meter-segment.css.d.ts +1 -0
- package/dist/meter/segment/meter-segment.css.js +2 -0
- package/dist/meter/segment/meter-segment.d.ts +39 -0
- package/dist/meter/segment/meter-segment.js +11 -0
- package/dist/popover/root/popover-root.css.js +1 -1
- package/dist/popover/root/popover-root.d.ts +20 -2
- package/dist/popover/root/popover-root.js +3 -0
- package/dist/radio/root/radio-root.css.js +1 -1
- package/dist/scroll-area/root/scroll-area-root.css.js +1 -1
- package/dist/scroll-area/root/scroll-area-root.d.ts +14 -2
- package/dist/scroll-area/root/scroll-area-root.js +29 -0
- package/dist/select/root/select-root.d.ts +1 -2
- package/dist/shared/floating/entrance.css.js +1 -1
- package/dist/skip-link/root/skip-link-root.d.ts +1 -2
- package/dist/spatial-bar-chart/root/spatial-bar-chart-root.css.js +1 -1
- package/dist/spatial-bar-chart/root/spatial-bar-chart-root.d.ts +9 -1
- package/dist/strands/renderer.d.ts +2 -0
- package/dist/strands/renderer.js +1 -0
- package/dist/strands/root/strands-root.css.js +1 -1
- package/dist/strands/root/strands-root.d.ts +14 -0
- package/dist/strands/root/strands-root.js +5 -0
- package/dist/strands/shader.d.ts +7 -1
- package/dist/strands/shader.js +11 -3
- package/dist/switch/root/switch-root.css.js +1 -1
- package/dist/tabs/root/tabs-root.css.js +1 -1
- package/dist/tabs/root/tabs-root.d.ts +36 -0
- package/dist/tabs/root/tabs-root.js +7 -0
- package/dist/tabs/tab/tab.css.js +1 -1
- package/dist/tabs/tab/tab.d.ts +2 -0
- package/dist/terminal/root/terminal-root.css.js +1 -1
- package/dist/terminal/root/terminal-root.d.ts +2 -0
- package/dist/terminal/root/terminal-root.js +2 -0
- package/dist/time-input/root/time-input-root.d.ts +1 -2
- package/dist/toast/item/toast-item.d.ts +1 -2
- package/dist/tooltip/root/tooltip-root.css.js +1 -1
- package/dist/tour/root/tour-root.css.js +1 -1
- package/dist/tour/stop/tour-stop.d.ts +1 -2
- package/dist/tree/item/tree-item.css.js +1 -1
- package/dist/tree/root/tree-root.css.js +1 -1
- package/dist/tree/root/tree-root.d.ts +5 -1
- package/examples.json +1 -1
- package/lint.json +1 -1
- package/package.json +6 -6
- package/skills/helix/SKILL.md +2 -2
- package/types/jsx.d.ts +2624 -153
- package/types/svelte.d.ts +2 -0
- package/types/vue.d.ts +610 -26
- package/types/words.d.ts +93 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {display: block}:host([show-value]) {align-items: center;column-gap: var(--meter-value-gap, var(--helix-space-sm));display: grid;grid-template-columns: 1fr auto;row-gap: var(--meter-label-gap, var(--helix-space-2xs))}slot[name="label"]::slotted(*) {color: var(--meter-label-color, var(--helix-color-foreground));display: block;font-size: var(--meter-label-size, var(--helix-text-sm));grid-column: 1 / -1;margin-block-end: var(--meter-label-gap, var(--helix-space-2xs))}:host([show-value]) slot[name="label"]::slotted(*) {margin-block-end: 0}:host([shape="arc"]) slot[name="label"]::slotted(*), :host([shape="ring"]) slot[name="label"]::slotted(*) {grid-column: 1;margin-block: 0}[part="live"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;position: absolute;white-space: nowrap}[part="value"] {color: var(--meter-value-color, var(--helix-color-foreground-muted));font-family: var(--helix-font-sans);font-size: var(--meter-value-size, var(--helix-text-xs));font-variant-numeric: tabular-nums;min-inline-size: 3ch;text-align: end}[part="track"] {background-color: var(--meter-track-color, var(--helix-color-surface-sunken));block-size: var(--meter-size, var(--helix-size-meter));border-radius: var(--helix-radii-sm);inline-size: 100%;overflow: hidden;position: relative}[part~="indicator"] {--_meter-hue: var(--meter-color, var(--helix-color-primary));background-color: var(--_meter-hue);block-size: 100%;border-radius: inherit;inline-size: 100%;scale: var(--meter-fraction, 0) 1;transform-origin: left center;transition: background-color var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-standard), scale var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-decelerate)}:host(:dir(rtl)) [part~="indicator"] {transform-origin: right center}[part~="indicator"][data-band="good"] {--_meter-hue: var(--meter-color, var(--helix-color-success));background-color: var(--_meter-hue)}[part~="indicator"][data-band="fair"] {--_meter-hue: var(--meter-color, var(--helix-color-warning));background-color: var(--_meter-hue)}[part~="indicator"][data-band="poor"] {--_meter-hue: var(--meter-color, var(--helix-color-danger));background-color: var(--_meter-hue)}[part~="indicator"][data-beyond="over"] {border-end-end-radius: var(--helix-radii-none);border-start-end-radius: var(--helix-radii-none)}[part~="indicator"][data-beyond="under"] {border-end-start-radius: var(--helix-radii-none);border-start-start-radius: var(--helix-radii-none)}[part="tick"] {background-color: var(--meter-tick-color, var(--helix-color-background));block-size: 100%;inline-size: var(--helix-border-thick);inset-block-start: 0;inset-inline-start: var(--meter-at, 0%);position: absolute;translate: -50%;z-index: var(--helix-layer-raised)}:host([shape="arc"]), :host([shape="ring"]) {display: inline-grid;place-items: center;row-gap: var(--meter-label-gap, var(--helix-space-2xs))}:host([shape="arc"]) [part="track"], :host([shape="ring"]) [part="track"] {--_meter-stroke: var(--meter-ring-width, var(--helix-size-progress));background-color: transparent;block-size: var(--meter-ring-size, 6rem);border-radius: var(--helix-radii-none);grid-area: 1 / 1;inline-size: var(--meter-ring-size, 6rem)}:host([shape="ring"]) [part="track"] {rotate: -90deg}:host([shape="arc"]) [part="track"] {rotate: 135deg}:host([shape="arc"]) [part="groove"], :host([shape="arc"]) [part~="indicator"], :host([shape="arc"]) [part="tick"], :host([shape="ring"]) [part="groove"], :host([shape="ring"]) [part~="indicator"], :host([shape="ring"]) [part="tick"] {cx: 50%;cy: 50%;fill: none;r: calc(50% - var(--_meter-stroke) / 2);stroke-width: var(--_meter-stroke)}:host([shape="arc"]) [part="groove"], :host([shape="ring"]) [part="groove"] {stroke: var(--meter-track-color, var(--helix-color-surface-sunken));stroke-dasharray: var(--meter-sweep) 100}:host([shape="arc"]) [part~="indicator"], :host([shape="ring"]) [part~="indicator"] {--_meter-hue: var(--meter-color, var(--helix-color-foreground-muted));scale: none;stroke: var(--_meter-hue);stroke-dasharray: var(--meter-along) 100;stroke-linecap: round;transition: stroke-dasharray var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-standard)}:host([shape="arc"]) [part="tick"], :host([shape="ring"]) [part="tick"] {inset-inline-start: auto;position: static;stroke: var(--meter-tick-color, var(--helix-color-background));stroke-dasharray: 1 99;stroke-dashoffset: calc(var(--meter-along) * -1)}:host([shape="arc"]) [part~="indicator"][data-band="good"], :host([shape="ring"]) [part~="indicator"][data-band="good"] {--_meter-hue: var(--meter-color, var(--helix-color-success));stroke: var(--_meter-hue)}:host([shape="arc"]) [part~="indicator"][data-band="fair"], :host([shape="ring"]) [part~="indicator"][data-band="fair"] {--_meter-hue: var(--meter-color, var(--helix-color-warning));stroke: var(--_meter-hue)}:host([shape="arc"]) [part~="indicator"][data-band="poor"], :host([shape="ring"]) [part~="indicator"][data-band="poor"] {--_meter-hue: var(--meter-color, var(--helix-color-danger));stroke: var(--_meter-hue)}:host([shape="arc"]) [part="value"], :host([shape="ring"]) [part="value"] {grid-area: 1 / 1}@media print {:host {print-color-adjust: exact}}:host([emphasis="subtle"]) [part~="indicator"] {background-color: color-mix(in oklab, var(--_meter-hue) 30%, var(--meter-track-color, var(--helix-color-surface-sunken)))}:host([emphasis="subtle"][shape="arc"]) [part~="indicator"], :host([emphasis="subtle"][shape="ring"]) [part~="indicator"] {stroke: color-mix(in oklab, var(--_meter-hue) 30%, var(--meter-track-color, var(--helix-color-surface-sunken)))}@media (forced-colors: active) {[part="track"] {outline: var(--helix-border-thin) solid CanvasText}[part~="indicator"] {background-color: Highlight;forced-color-adjust: none}[part~="indicator"][data-band] {background-color: var(--_meter-hue)}[part="tick"] {background-color: Canvas;forced-color-adjust: none}}`);
|
|
2
|
+
export const styles = createSheet(`:host {display: block}:host([show-value]) {align-items: center;column-gap: var(--meter-value-gap, var(--helix-space-sm));display: grid;grid-template-columns: 1fr auto;row-gap: var(--meter-label-gap, var(--helix-space-2xs))}slot[name="label"]::slotted(*) {color: var(--meter-label-color, var(--helix-color-foreground));display: block;font-size: var(--meter-label-size, var(--helix-text-sm));grid-column: 1 / -1;margin-block-end: var(--meter-label-gap, var(--helix-space-2xs))}:host([show-value]) slot[name="label"]::slotted(*) {margin-block-end: 0}:host([shape="arc"]) slot[name="label"]::slotted(*), :host([shape="ring"]) slot[name="label"]::slotted(*) {grid-column: 1;margin-block: 0}[part="live"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;position: absolute;white-space: nowrap}[part="value"] {color: var(--meter-value-color, var(--helix-color-foreground-muted));font-family: var(--helix-font-sans);font-size: var(--meter-value-size, var(--helix-text-xs));font-variant-numeric: tabular-nums;min-inline-size: 3ch;text-align: end}[part="track"] {background-color: var(--meter-track-color, var(--helix-color-surface-sunken));block-size: var(--meter-size, var(--helix-size-meter));border-radius: var(--helix-radii-sm);inline-size: 100%;overflow: hidden;position: relative}:host(:not([shape])) [part="track"] {display: flex}:host(:not([shape])) [part~="indicator"] {inset: 0;position: absolute}[part~="indicator"] {--_meter-hue: var(--meter-color, var(--helix-color-primary));background-color: var(--_meter-hue);block-size: 100%;border-radius: inherit;inline-size: 100%;scale: var(--meter-fraction, 0) 1;transform-origin: left center;transition: background-color var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-standard), scale var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-decelerate)}:host(:dir(rtl)) [part~="indicator"] {transform-origin: right center}[part~="indicator"][data-band="good"] {--_meter-hue: var(--meter-color, var(--helix-color-success));background-color: var(--_meter-hue)}[part~="indicator"][data-band="fair"] {--_meter-hue: var(--meter-color, var(--helix-color-warning));background-color: var(--_meter-hue)}[part~="indicator"][data-band="poor"] {--_meter-hue: var(--meter-color, var(--helix-color-danger));background-color: var(--_meter-hue)}[part~="indicator"][data-beyond="over"] {border-end-end-radius: var(--helix-radii-none);border-start-end-radius: var(--helix-radii-none)}[part~="indicator"][data-beyond="under"] {border-end-start-radius: var(--helix-radii-none);border-start-start-radius: var(--helix-radii-none)}[part="tick"] {background-color: var(--meter-tick-color, var(--helix-color-background));block-size: 100%;inline-size: var(--helix-border-thick);inset-block-start: 0;inset-inline-start: var(--meter-at, 0%);position: absolute;translate: -50%;z-index: var(--helix-layer-raised)}:host([shape="arc"]), :host([shape="ring"]) {display: inline-grid;place-items: center;row-gap: var(--meter-label-gap, var(--helix-space-2xs))}:host([shape="arc"]) [part="track"], :host([shape="ring"]) [part="track"] {--_meter-stroke: var(--meter-ring-width, var(--helix-size-progress));background-color: transparent;block-size: var(--meter-ring-size, 6rem);border-radius: var(--helix-radii-none);grid-area: 1 / 1;inline-size: var(--meter-ring-size, 6rem)}:host([shape="ring"]) [part="track"] {rotate: -90deg}:host([shape="arc"]) [part="track"] {rotate: 135deg}:host([shape="arc"]) [part="groove"], :host([shape="arc"]) [part~="indicator"], :host([shape="arc"]) [part="tick"], :host([shape="ring"]) [part="groove"], :host([shape="ring"]) [part~="indicator"], :host([shape="ring"]) [part="tick"] {cx: 50%;cy: 50%;fill: none;r: calc(50% - var(--_meter-stroke) / 2);stroke-width: var(--_meter-stroke)}:host([shape="arc"]) [part="groove"], :host([shape="ring"]) [part="groove"] {stroke: var(--meter-track-color, var(--helix-color-surface-sunken));stroke-dasharray: var(--meter-sweep) 100}:host([shape="arc"]) [part~="indicator"], :host([shape="ring"]) [part~="indicator"] {--_meter-hue: var(--meter-color, var(--helix-color-foreground-muted));scale: none;stroke: var(--_meter-hue);stroke-dasharray: var(--meter-along) 100;stroke-linecap: round;transition: stroke-dasharray var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-standard)}:host([shape="arc"]) [part="tick"], :host([shape="ring"]) [part="tick"] {inset-inline-start: auto;position: static;stroke: var(--meter-tick-color, var(--helix-color-background));stroke-dasharray: 1 99;stroke-dashoffset: calc(var(--meter-along) * -1)}:host([shape="arc"]) [part~="indicator"][data-band="good"], :host([shape="ring"]) [part~="indicator"][data-band="good"] {--_meter-hue: var(--meter-color, var(--helix-color-success));stroke: var(--_meter-hue)}:host([shape="arc"]) [part~="indicator"][data-band="fair"], :host([shape="ring"]) [part~="indicator"][data-band="fair"] {--_meter-hue: var(--meter-color, var(--helix-color-warning));stroke: var(--_meter-hue)}:host([shape="arc"]) [part~="indicator"][data-band="poor"], :host([shape="ring"]) [part~="indicator"][data-band="poor"] {--_meter-hue: var(--meter-color, var(--helix-color-danger));stroke: var(--_meter-hue)}:host([shape="arc"]) [part="value"], :host([shape="ring"]) [part="value"] {grid-area: 1 / 1}@media print {:host {print-color-adjust: exact}}:host([emphasis="subtle"]) [part~="indicator"] {background-color: color-mix(in oklab, var(--_meter-hue) 30%, var(--meter-track-color, var(--helix-color-surface-sunken)))}:host([emphasis="subtle"][shape="arc"]) [part~="indicator"], :host([emphasis="subtle"][shape="ring"]) [part~="indicator"] {stroke: color-mix(in oklab, var(--_meter-hue) 30%, var(--meter-track-color, var(--helix-color-surface-sunken)))}@media (forced-colors: active) {[part="track"] {outline: var(--helix-border-thin) solid CanvasText}[part~="indicator"] {background-color: Highlight;forced-color-adjust: none}[part~="indicator"][data-band] {background-color: var(--_meter-hue)}[part="tick"] {background-color: Canvas;forced-color-adjust: none}}`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import("lit").CSSResult;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
+
export const styles = createSheet(`:host {display: contents}[part="fill"] {background-color: var(--meter-segment-color, var(--_meter-segment-hue, var(--helix-color-series-1)));block-size: 100%;box-sizing: border-box;flex: 0 0 calc(var(--meter-segment-value, 0) / var(--meter-span, 1) * 100%);transition: flex-basis var(--meter-transition-duration, var(--helix-duration-normal)) var(--helix-easing-decelerate)}:host(:nth-of-type(1)) {--_meter-segment-hue: var(--helix-color-series-1)}:host(:nth-of-type(2)) {--_meter-segment-hue: var(--helix-color-series-2)}:host(:nth-of-type(3)) {--_meter-segment-hue: var(--helix-color-series-3)}:host(:nth-of-type(4)) {--_meter-segment-hue: var(--helix-color-series-4)}:host(:nth-of-type(5)) {--_meter-segment-hue: var(--helix-color-series-5)}:host(:nth-of-type(6)) {--_meter-segment-hue: var(--helix-color-series-6)}:host(:nth-of-type(7)) {--_meter-segment-hue: var(--helix-color-series-7)}:host(:nth-of-type(8)) {--_meter-segment-hue: var(--helix-color-series-8)}:host(:nth-of-type(9)) {--_meter-segment-hue: var(--helix-color-series-9)}:host(:nth-of-type(10)) {--_meter-segment-hue: var(--helix-color-series-10)}:host(:nth-of-type(11)) {--_meter-segment-hue: var(--helix-color-series-11)}:host([tone="accent"]) {--_meter-segment-hue: var(--helix-color-accent)}:host([tone="danger"]) {--_meter-segment-hue: var(--helix-color-danger)}:host([tone="info"]) {--_meter-segment-hue: var(--helix-color-info)}:host([tone="neutral"]) {--_meter-segment-hue: var(--helix-color-foreground-subtle)}:host([tone="primary"]) {--_meter-segment-hue: var(--helix-color-primary)}:host([tone="success"]) {--_meter-segment-hue: var(--helix-color-success)}:host([tone="warning"]) {--_meter-segment-hue: var(--helix-color-warning)}:host(:not(:first-of-type)) [part="fill"] {box-shadow: inset var(--helix-border-thin) 0 0 var(--meter-segment-gap-color, var(--helix-color-background))}[part="fill"] {min-inline-size: min(3px, calc(var(--meter-segment-value, 0) * 1000px))}@media (prefers-reduced-motion: reduce) {[part="fill"] {transition: none}}@media (forced-colors: active) {[part="fill"] {background-color: CanvasText;box-shadow: inset var(--helix-border-thin) 0 0 Canvas}}`);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { HelixHeadlessMeterSegment } from '@fusion.dev/helix-headless/meter';
|
|
2
|
+
import type { CSSResultGroup } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* @summary One share of a meter's whole, drawn as a slice of its bar.
|
|
5
|
+
*
|
|
6
|
+
* @description
|
|
7
|
+
* Each segment takes the next color in the chart series, in the order written, so
|
|
8
|
+
* two of them are told apart without being given a color. A `tone` is what a
|
|
9
|
+
* segment means, and takes the place of its turn. A hairline in the track's ground
|
|
10
|
+
* sits between neighbors, so the boundary is there for a reader who cannot tell
|
|
11
|
+
* two of the colors apart.
|
|
12
|
+
*
|
|
13
|
+
* Write the segments inside a meter, and the page imports the family beside it:
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* import '@fusion.dev/helix/meter'
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
* @status experimental
|
|
21
|
+
* @category feedback
|
|
22
|
+
* @groups charts
|
|
23
|
+
* @documentation https://fusion.dev/helix/components/meter
|
|
24
|
+
*
|
|
25
|
+
* @csspart fill - The slice of the bar the segment takes.
|
|
26
|
+
*
|
|
27
|
+
* @cssproperty --meter-segment-color - The slice's color. Overrides the series and the tone.
|
|
28
|
+
* @cssproperty --meter-segment-gap-color - The color of the hairline between neighbors.
|
|
29
|
+
*
|
|
30
|
+
* @replaces meter-segment
|
|
31
|
+
*/
|
|
32
|
+
export declare class HelixMeterSegment extends HelixHeadlessMeterSegment {
|
|
33
|
+
static styles: CSSResultGroup;
|
|
34
|
+
}
|
|
35
|
+
declare global {
|
|
36
|
+
interface HTMLElementTagNameMap {
|
|
37
|
+
'helix-meter-segment': HelixMeterSegment;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement } from '@fusion.dev/helix-core';
|
|
3
|
+
import { HelixHeadlessMeterSegment } from '@fusion.dev/helix-headless/meter';
|
|
4
|
+
import { styles } from './meter-segment.css.js';
|
|
5
|
+
let HelixMeterSegment = class HelixMeterSegment extends HelixHeadlessMeterSegment {
|
|
6
|
+
static { this.styles = styles; }
|
|
7
|
+
};
|
|
8
|
+
HelixMeterSegment = __decorate([
|
|
9
|
+
customElement('helix-meter-segment')
|
|
10
|
+
], HelixMeterSegment);
|
|
11
|
+
export { HelixMeterSegment };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {display: contents}[part="surface"] {overflow: visible;background-color: var(--helix-color-surface-overlay);border: var(--popover-border-width, var(--helix-border-floating)) solid var(--popover-border-color, var(--helix-color-border));--_popover-edge: var(--popover-border-width, var(--helix-border-floating)) solid var(--popover-border-color, var(--helix-color-border));border-radius: var(--helix-radii-sm);box-shadow: var(--popover-shadow, var(--helix-shadow-floating));box-sizing: border-box;color: var(--helix-color-foreground);inset: auto;margin: var(--helix-space-none);max-inline-size: calc(100vw - var(--helix-space-lg));padding: var(--helix-space-none);inline-size: var(--popover-inline-size, max-content)}[part="surface"]:not(:popover-open) {display: none}[part="surface"] {--_travel: calc(var(--helix-space-2xs) * -1);--_popover-from: 0.96;opacity: 0;transform: translateY(var(--_travel));scale: var(--_popover-from);transition: opacity var(--helix-duration-fast) var(--helix-easing-standard), scale var(--helix-duration-fast) var(--helix-easing-emphasized), transform var(--helix-duration-fast) var(--helix-easing-emphasized), display var(--helix-duration-fast) allow-discrete, overlay var(--helix-duration-fast) allow-discrete}[part="surface"][data-placement^="top"] {--_travel: var(--helix-space-2xs)}[part="surface"][data-placed] {opacity: 1;scale: 1;transform: none}[part="surface"][data-placement^="top"] {transform-origin: var(--floating-arrow-x, 50%) 100%}[part="surface"][data-placement^="bottom"] {transform-origin: var(--floating-arrow-x, 50%) 0}[part="surface"][data-placement^="left"] {transform-origin: 100% var(--floating-arrow-y, 50%)}[part="surface"][data-placement^="right"] {transform-origin: 0 var(--floating-arrow-y, 50%)}@media (prefers-reduced-motion: reduce) {[part="surface"], [part="surface"][data-placed] {scale: 1;transform: none;transition: none}}[part="content"] {max-block-size: var(--popover-max-block-size, var(--floating-available-block-size, none));overflow: auto;padding: var(--popover-padding, var(--helix-space-md))}:host([separation="plain"]) [part="content"] {padding: var(--popover-padding, var(--helix-space-none))}[part="surface"]:focus, [part="surface"]:focus-visible {outline: none}[part~="arrow"] {background-color: var(--helix-color-surface-overlay);block-size: var(--popover-arrow-size, 0.5rem);inline-size: var(--popover-arrow-size, 0.5rem);position: absolute;rotate: 45deg}[part="surface"][data-placement^="bottom"] [part~="arrow"] {border-left: var(--_popover-edge);border-top: var(--_popover-edge)}[part="surface"][data-placement^="top"] [part~="arrow"] {border-bottom: var(--_popover-edge);border-right: var(--_popover-edge)}[part="surface"][data-placement^="right"] [part~="arrow"] {border-bottom: var(--_popover-edge);border-left: var(--_popover-edge)}[part="surface"][data-placement^="left"] [part~="arrow"] {border-right: var(--_popover-edge);border-top: var(--_popover-edge)}@media print {:host {display: none}}`);
|
|
2
|
+
export const styles = createSheet(`:host {display: contents}[part="surface"] {overflow: visible;background-color: var(--popover-background-color, var(--helix-color-surface-overlay));border: var(--popover-border-width, var(--helix-border-floating)) solid var(--popover-border-color, var(--helix-color-border));--_popover-edge: var(--popover-border-width, var(--helix-border-floating)) solid var(--popover-border-color, var(--helix-color-border));border-radius: var(--helix-radii-sm);box-shadow: var(--popover-shadow, var(--helix-shadow-floating));box-sizing: border-box;color: var(--helix-color-foreground);inset: auto;margin: var(--helix-space-none);max-inline-size: calc(100vw - var(--helix-space-lg));padding: var(--helix-space-none);inline-size: var(--popover-inline-size, max-content)}[part="surface"]:not(:popover-open) {display: none}[part="surface"] {--_travel: calc(var(--helix-space-2xs) * -1);--_popover-from: 0.96;opacity: 0;transform: translateY(var(--_travel));scale: var(--_popover-from);transition: opacity var(--helix-duration-fast) var(--helix-easing-standard), scale var(--helix-duration-fast) var(--helix-easing-emphasized), transform var(--helix-duration-fast) var(--helix-easing-emphasized), display var(--helix-duration-fast) allow-discrete, overlay var(--helix-duration-fast) allow-discrete}[part="surface"][data-placement^="top"] {--_travel: var(--helix-space-2xs)}[part="surface"][data-placed] {opacity: 1;scale: 1;transform: none}[part="surface"][data-placement^="top"] {transform-origin: var(--floating-arrow-x, 50%) 100%}[part="surface"][data-placement^="bottom"] {transform-origin: var(--floating-arrow-x, 50%) 0}[part="surface"][data-placement^="left"] {transform-origin: 100% var(--floating-arrow-y, 50%)}[part="surface"][data-placement^="right"] {transform-origin: 0 var(--floating-arrow-y, 50%)}@media (prefers-reduced-motion: reduce) {[part="surface"], [part="surface"][data-placed] {scale: 1;transform: none;transition: none}}[part="content"] {max-block-size: var(--popover-max-block-size, var(--floating-available-block-size, none));overflow: auto;padding: var(--popover-padding, var(--helix-space-md))}:host([separation="plain"]) [part="content"] {padding: var(--popover-padding, var(--helix-space-none))}[part="surface"]:focus, [part="surface"]:focus-visible {outline: none}[part~="arrow"] {background-color: var(--popover-background-color, var(--helix-color-surface-overlay));block-size: var(--popover-arrow-size, 0.5rem);inline-size: var(--popover-arrow-size, 0.5rem);position: absolute;rotate: 45deg}[part="surface"][data-placement^="bottom"] [part~="arrow"] {border-left: var(--_popover-edge);border-top: var(--_popover-edge)}[part="surface"][data-placement^="top"] [part~="arrow"] {border-bottom: var(--_popover-edge);border-right: var(--_popover-edge)}[part="surface"][data-placement^="right"] [part~="arrow"] {border-bottom: var(--_popover-edge);border-left: var(--_popover-edge)}[part="surface"][data-placement^="left"] [part~="arrow"] {border-right: var(--_popover-edge);border-top: var(--_popover-edge)}:host([material="glass"]) [part="surface"], :host([material="glass"]) [part~="arrow"] {backdrop-filter: var(--popover-backdrop, var(--helix-material-backdrop));background-color: var(--popover-background-color, light-dark(var(--helix-material-translucent-strong), var(--helix-material-translucent)))}:host([material="frosted"]) [part="surface"], :host([material="frosted"]) [part~="arrow"] {backdrop-filter: var(--popover-backdrop, blur(var(--helix-material-blur-lg)));background-color: var(--popover-background-color, var(--helix-material-translucent-strong))}@supports not (overlay: auto) {[part="surface"] {transition-behavior: normal}}@media print {:host {display: none}}`);
|
|
@@ -19,10 +19,12 @@ import type { CSSResultGroup } from 'lit';
|
|
|
19
19
|
* @documentation https://fusion.dev/helix/components/popover
|
|
20
20
|
*
|
|
21
21
|
* @cssproperty --popover-arrow-size - Size of the point drawn with `arrow`. Tooltip's point is the same size.
|
|
22
|
+
* @cssproperty --popover-backdrop - Filter applied behind a `frosted` or `glass` panel.
|
|
23
|
+
* Follows the theme's material policy.
|
|
24
|
+
* @cssproperty --popover-background-color - Fill of the surface.
|
|
22
25
|
* @cssproperty --popover-border-color - Color of the panel's edge.
|
|
23
26
|
* @cssproperty --popover-border-width - Width of the panel's edge. Defaults to
|
|
24
|
-
* `--helix-border-floating`,
|
|
25
|
-
* your theme sets a width.
|
|
27
|
+
* `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone.
|
|
26
28
|
* @cssproperty --popover-inline-size - Width of the panel.
|
|
27
29
|
* @cssproperty --popover-max-block-size - Maximum height of the panel before it scrolls.
|
|
28
30
|
* @cssproperty --popover-padding - Space between the panel's edge and its contents.
|
|
@@ -30,6 +32,22 @@ import type { CSSResultGroup } from 'lit';
|
|
|
30
32
|
* `--helix-shadow-floating`, because the panel can sit over any content.
|
|
31
33
|
*/
|
|
32
34
|
export declare class HelixPopover extends HelixHeadlessPopover {
|
|
35
|
+
/**
|
|
36
|
+
* The panel's surface: `frosted` or `glass`.
|
|
37
|
+
*
|
|
38
|
+
* Absent is the opaque overlay surface. `glass` is the page's translucent
|
|
39
|
+
* ground over a blur, for a page whose surfaces are glass, so a panel opened
|
|
40
|
+
* over a glass window is not the one opaque slab on it. `frosted` is the same
|
|
41
|
+
* pair turned up, a ground that admits less and a heavier blur.
|
|
42
|
+
*
|
|
43
|
+
* The strength is the theme's: `--helix-material-translucent`,
|
|
44
|
+
* `--helix-material-translucent-strong` and `--helix-material-backdrop` are
|
|
45
|
+
* what the policy moves. `Drawer` and `Tooltip` carry the same attribute.
|
|
46
|
+
*
|
|
47
|
+
* **No `transparent`, deliberately.** A panel floating over arbitrary page
|
|
48
|
+
* content is only readable because it has a ground.
|
|
49
|
+
*/
|
|
50
|
+
material?: 'frosted' | 'glass';
|
|
33
51
|
/**
|
|
34
52
|
* How the panel is set apart from the content under it.
|
|
35
53
|
*
|
|
@@ -6,6 +6,9 @@ import { styles } from './popover-root.css.js';
|
|
|
6
6
|
let HelixPopover = class HelixPopover extends HelixHeadlessPopover {
|
|
7
7
|
static { this.styles = styles; }
|
|
8
8
|
};
|
|
9
|
+
__decorate([
|
|
10
|
+
property({ reflect: true })
|
|
11
|
+
], HelixPopover.prototype, "material", void 0);
|
|
9
12
|
__decorate([
|
|
10
13
|
property({ reflect: true })
|
|
11
14
|
], HelixPopover.prototype, "separation", void 0);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {--_radio-size: var(--radio-size, var(--helix-size-checkbox));display: block}[part="item"] {all: unset;align-items: center;box-sizing: border-box;cursor: pointer;display: inline-flex;gap: var(--helix-space-xs)}:host([disabled]) [part="item"] {cursor: default}:host([disabled]) {opacity: 0.5}[part="box"] {background-color: var(--radio-background-color,
|
|
2
|
+
export const styles = createSheet(`:host {--_radio-size: var(--radio-size, var(--helix-size-checkbox));display: block}[part="item"] {all: unset;align-items: center;box-sizing: border-box;cursor: pointer;display: inline-flex;gap: var(--helix-space-xs)}:host([disabled]) [part="item"] {cursor: default}:host([disabled]) {opacity: 0.5}[part="box"] {background-color: var(--radio-background-color, transparent);block-size: var(--_radio-size);border: var(--helix-border-thin) solid var(--radio-border-color, var(--helix-color-foreground-subtle));border-radius: var(--helix-radii-full);display: grid;flex: 0 0 auto;inline-size: var(--_radio-size);place-items: center;transition: border-color var(--helix-duration-fast) var(--helix-easing-standard)}:host(:not([disabled])) [part="item"]:hover [part="box"] {border-color: var(--radio-border-color, var(--helix-color-foreground-muted))}:host(:state(selected)) [part="box"] {border-color: var(--radio-border-color, var(--helix-color-foreground))}[part="box"]::after {background-color: var(--radio-mark-color, var(--helix-color-foreground));block-size: calc(var(--_radio-size) * 0.4);border-radius: var(--helix-radii-full);content: "";inline-size: calc(var(--_radio-size) * 0.4);scale: 0;transition: scale var(--helix-duration-fast) var(--helix-easing-emphasized)}:host(:state(selected)) [part="box"]::after {scale: 1}:host(:state(has-indicator)) [part="box"]::after {content: none}slot[name="indicator"]::slotted(*) {block-size: var(--radio-indicator-size, calc(var(--_radio-size) * 0.75));color: var(--radio-mark-color, var(--helix-color-foreground));inline-size: var(--radio-indicator-size, calc(var(--_radio-size) * 0.75));scale: 0;transition: scale var(--helix-duration-fast) var(--helix-easing-emphasized)}:host(:state(selected)) slot[name="indicator"]::slotted(*) {scale: 1}[part="item"]:focus-visible [part="box"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}[part="label"] {color: var(--helix-color-foreground);font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);font-weight: var(--helix-weight-medium);line-height: var(--helix-leading-tight)}:host(:is([separation="filled"], [separation="outlined"])) {display: block}:host(:is([separation="filled"], [separation="outlined"])) [part="item"] {align-items: start;background-color: var(--radio-card-background-color, var(--helix-color-surface));border: var(--helix-border-thin) solid var(--radio-card-border-color, var(--helix-color-border));border-radius: var(--helix-radii-sm);display: flex;gap: var(--helix-space-sm);inline-size: 100%;padding: var(--radio-card-padding, var(--helix-space-md));transition: background-color var(--helix-duration-fast) var(--helix-easing-standard), border-color var(--helix-duration-fast) var(--helix-easing-standard)}:host([separation="filled"]) [part="item"] {border-color: transparent}:host(:not([disabled]):is([separation="filled"], [separation="outlined"])) [part="item"]:hover {border-color: var(--helix-color-foreground-muted)}:host(:is([separation="filled"], [separation="outlined"]):state(selected)) [part="item"] {background-color: var(--helix-color-surface-raised);border-color: var(--helix-color-primary);box-shadow: 0 0 0 var(--helix-border-thick) var(--helix-color-primary)}:host(:is([separation="filled"], [separation="outlined"])) [part="item"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}:host(:is([separation="filled"], [separation="outlined"])) [part="item"]:focus-visible [part="box"] {outline: none}:host(:is([separation="filled"], [separation="outlined"])) [part="label"] {font-size: var(--helix-text-md);line-height: var(--helix-leading-normal)}:host(:is([separation="filled"], [separation="outlined"])) [part="box"] {font-size: var(--helix-text-md);line-height: var(--helix-leading-normal);margin-block-start: calc((1lh - var(--_radio-size)) / 2)}:host(:is([separation="filled"], [separation="outlined"])[hide-control]) [part="box"] {display: none}:host([variant="chip"]) [part="box"] {display: none}:host([variant="chip"]) [part="item"] {--_radio-chip-lift: 2px;align-items: center;background-color: var(--helix-color-surface-sunken);block-size: var(--radio-chip-size, var(--helix-size-control));border-radius: var(--helix-radii-full);color: var(--helix-color-foreground-muted);cursor: pointer;display: inline-flex;inline-size: var(--radio-chip-size, var(--helix-size-control));justify-content: center;padding: 0;transition: background-color var(--helix-duration-fast) var(--helix-easing-standard), box-shadow var(--helix-duration-fast) var(--helix-easing-standard), translate var(--helix-duration-fast) var(--helix-easing-standard)}:host([variant="chip"]:state(selected)) [part="item"] {background-color: var(--helix-color-surface-inverse);box-shadow: var(--helix-shadow-md);color: var(--helix-color-foreground-inverse);translate: 0 calc(var(--_radio-chip-lift) * -1)}:host(:not([disabled])[variant="chip"]) [part="item"]:hover {translate: 0 calc(var(--_radio-chip-lift) / -2)}:host([variant="chip"]) [part="item"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}:host([variant="chip"]) [part="label"] {clip-path: inset(50%);block-size: 1px;inline-size: 1px;overflow: hidden;position: absolute;white-space: nowrap}@media (prefers-reduced-motion: reduce) {:host([variant="chip"]) [part="item"] {transition: none}:host([variant="chip"]:state(selected)) [part="item"], :host(:not([disabled])[variant="chip"]) [part="item"]:hover {translate: none}}@media print {:host {box-shadow: none;print-color-adjust: exact}}`);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {display: block;position: relative}[part="viewport"] {block-size: 100%;overflow: auto;overscroll-behavior: contain}[part="viewport"]
|
|
2
|
+
export const styles = createSheet(`:host {display: block;position: relative}[part="viewport"] {block-size: 100%;overflow: auto;overscroll-behavior: contain}[part="viewport"] {scrollbar-color: var(--scroll-area-thumb-color, var(--helix-scrollbar-thumb-color)) var(--scroll-area-track-color, var(--helix-scrollbar-track-color));scrollbar-width: var(--scroll-area-scrollbar, thin)}[part="viewport"]:hover {scrollbar-color: var(--scroll-area-thumb-hover-color, var(--helix-scrollbar-thumb-hover-color)) var(--scroll-area-track-color, var(--helix-scrollbar-track-color))}:host([scrollbars]) [part="viewport"] {scrollbar-width: none}[part~="scrollbar"] {--_scroll-area-thumb: max(var(--scroll-area-thumb-min-size, var(--helix-space-lg)), var(--scroll-area-thumb-fraction, 1) * 100%);background-color: var(--scroll-area-track-color, var(--helix-scrollbar-track-color));opacity: 0;position: absolute;touch-action: none;transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);user-select: none;z-index: calc(var(--helix-layer-raised) + 1)}[part~="scrollbar-visible"] {opacity: 1}[part~="scrollbar-vertical"] {inline-size: var(--scroll-area-scrollbar-size, var(--helix-space-sm));inset-block: 0;inset-inline-end: 0}[part~="scrollbar-horizontal"] {block-size: var(--scroll-area-scrollbar-size, var(--helix-space-sm));inset-block-end: 0;inset-inline: 0}:host(:state(scrollbar-horizontal)) [part~="scrollbar-vertical"] {inset-block-end: var(--scroll-area-scrollbar-size, var(--helix-space-sm))}:host(:state(scrollbar-vertical)) [part~="scrollbar-horizontal"] {inset-inline-end: var(--scroll-area-scrollbar-size, var(--helix-space-sm))}[part~="thumb"] {background-color: var(--scroll-area-thumb-color, var(--helix-scrollbar-thumb-color));border-radius: var(--helix-radii-full);position: absolute}[part~="thumb"]:hover {background-color: var(--scroll-area-thumb-hover-color, var(--helix-scrollbar-thumb-hover-color))}[part~="thumb-vertical"] {block-size: var(--_scroll-area-thumb);inset-block-start: calc(var(--scroll-area-scroll-fraction, 0) * (100% - var(--_scroll-area-thumb)));inset-inline: var(--helix-border-thick)}[part~="thumb-horizontal"] {inline-size: var(--_scroll-area-thumb);inset-block: var(--helix-border-thick);inset-inline-start: calc(var(--scroll-area-scroll-fraction, 0) * (100% - var(--_scroll-area-thumb)))}[part="corner"] {background-color: var(--scroll-area-track-color, var(--helix-scrollbar-track-color));block-size: var(--scroll-area-scrollbar-size, var(--helix-space-sm));inline-size: var(--scroll-area-scrollbar-size, var(--helix-space-sm));inset-block-end: 0;inset-inline-end: 0;position: absolute}[part="viewport"], [part="edges"] {--_scroll-area-from-start: to right;--_scroll-area-from-end: to left}:host(:dir(rtl)) [part="viewport"], :host(:dir(rtl)) [part="edges"] {--_scroll-area-from-start: to left;--_scroll-area-from-end: to right}[part="viewport"] {--_scroll-area-content-size: calc(100% - var(--scroll-area-gutter-inline-end, 0px)) calc(100% - var(--scroll-area-gutter-block-end, 0px));mask-composite: add, add, intersect, add;mask-position: right top, left bottom, left top, left top;mask-repeat: no-repeat;mask-size: var(--scroll-area-gutter-inline-end, 0px) 100%, 100% var(--scroll-area-gutter-block-end, 0px), var(--_scroll-area-content-size), var(--_scroll-area-content-size);transition: --_scroll-area-depth-block-start var(--helix-duration-fast) var(--helix-easing-standard), --_scroll-area-depth-block-end var(--helix-duration-fast) var(--helix-easing-standard), --_scroll-area-depth-inline-start var(--helix-duration-fast) var(--helix-easing-standard), --_scroll-area-depth-inline-end var(--helix-duration-fast) var(--helix-easing-standard)}:host(:dir(rtl)) [part="viewport"] {mask-position: left top, left bottom, right top, right top}:host(:state(more-block-start)) [part="viewport"] {--_scroll-area-depth-block-start: var(--scroll-area-fade-block-start, var(--scroll-area-fade, var(--helix-space-xl)))}:host(:state(more-block-end)) [part="viewport"] {--_scroll-area-depth-block-end: var(--scroll-area-fade-block-end, var(--scroll-area-fade, var(--helix-space-xl)))}:host(:state(more-inline-start)) [part="viewport"] {--_scroll-area-depth-inline-start: var(--scroll-area-fade-inline-start, var(--scroll-area-fade, var(--helix-space-xl)))}:host(:state(more-inline-end)) [part="viewport"] {--_scroll-area-depth-inline-end: var(--scroll-area-fade-inline-end, var(--scroll-area-fade, var(--helix-space-xl)))}:host(:state(scrolls)) [part="viewport"] {-webkit-mask-image: var(--scroll-area-fade-color, linear-gradient(#000 0 0)), linear-gradient(#000 0 0), linear-gradient(var(--_scroll-area-from-start), transparent 0, #000 var(--_scroll-area-depth-inline-start, 0px), #000 calc(100% - var(--_scroll-area-depth-inline-end, 0px)), transparent 100%), linear-gradient(to bottom, transparent 0, #000 var(--_scroll-area-depth-block-start, 0px), #000 calc(100% - var(--_scroll-area-depth-block-end, 0px)), transparent 100%);mask-image: var(--scroll-area-fade-color, linear-gradient(#000 0 0)), linear-gradient(#000 0 0), linear-gradient(var(--_scroll-area-from-start), transparent 0, #000 var(--_scroll-area-depth-inline-start, 0px), #000 calc(100% - var(--_scroll-area-depth-inline-end, 0px)), transparent 100%), linear-gradient(to bottom, transparent 0, #000 var(--_scroll-area-depth-block-start, 0px), #000 calc(100% - var(--_scroll-area-depth-block-end, 0px)), transparent 100%)}:host::before, :host::after {content: "";opacity: 0;pointer-events: none;position: absolute;transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);z-index: var(--helix-layer-raised)}:host::before {background: linear-gradient(to bottom, var(--scroll-area-fade-color), transparent);block-size: var(--scroll-area-fade-block-start, var(--scroll-area-fade, var(--helix-space-xl)));inset-block-start: 0;inset-inline: 0}:host::after {background: linear-gradient(to top, var(--scroll-area-fade-color), transparent);block-size: var(--scroll-area-fade-block-end, var(--scroll-area-fade, var(--helix-space-xl)));inset-block-end: 0;inset-inline: 0}:host(:state(more-block-start))::before, :host(:state(more-block-end))::after {opacity: 1}[part="edges"] {inset: 0;pointer-events: none;position: absolute}[part="edges"]::before, [part="edges"]::after {content: "";inset-block: 0;opacity: 0;position: absolute;transition: opacity var(--helix-duration-fast) var(--helix-easing-standard);z-index: var(--helix-layer-raised)}[part="edges"]::before {background: linear-gradient(var(--_scroll-area-from-start), var(--scroll-area-fade-color), transparent);inline-size: var(--scroll-area-fade-inline-start, var(--scroll-area-fade, var(--helix-space-xl)));inset-inline-start: 0}[part="edges"]::after {background: linear-gradient(var(--_scroll-area-from-end), var(--scroll-area-fade-color), transparent);inline-size: var(--scroll-area-fade-inline-end, var(--scroll-area-fade, var(--helix-space-xl)));inset-inline-end: 0}:host(:state(more-inline-start)) [part="edges"]::before, :host(:state(more-inline-end)) [part="edges"]::after {opacity: 1}[part="viewport"]:focus-visible ~ [part="edges"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: calc(var(--helix-size-focus-offset) * -1)}@media (prefers-reduced-motion: reduce) {:host::before, :host::after, [part="edges"]::before, [part="edges"]::after, [part="viewport"], [part~="scrollbar"] {transition: none}}@media print {:host {overflow: visible}}`);
|
|
@@ -8,6 +8,17 @@ import type { CSSResultGroup } from 'lit';
|
|
|
8
8
|
* styled to match the design system. The base class measures which edges have
|
|
9
9
|
* content past them.
|
|
10
10
|
*
|
|
11
|
+
* **The content fades out toward each edge that has more past it.** The fade
|
|
12
|
+
* is a mask on the viewport, so the surface behind the scroll area shows
|
|
13
|
+
* through it: the page, a card, or a translucent pane. Set the depth with
|
|
14
|
+
* `--scroll-area-fade`, or one edge's depth with its own property, and use `0`
|
|
15
|
+
* to keep an edge from fading. A scrollbar that takes room beside the content
|
|
16
|
+
* stays out of the mask.
|
|
17
|
+
*
|
|
18
|
+
* **Set `--scroll-area-fade-color` to paint the fades.** Each fade is then a
|
|
19
|
+
* gradient from that color over the content, and there is no mask. Use it for
|
|
20
|
+
* a scroll area on a solid ground, in the ground's color or one of your own.
|
|
21
|
+
*
|
|
11
22
|
* Under `scrollbars`, the browser's scrollbar is hidden and the component's own
|
|
12
23
|
* are drawn over the content at the edge, in the same colors.
|
|
13
24
|
*
|
|
@@ -17,10 +28,10 @@ import type { CSSResultGroup } from 'lit';
|
|
|
17
28
|
* @aliases Scroller, Overflow, Scroll container
|
|
18
29
|
* @documentation https://fusion.dev/helix/components/scroll-area
|
|
19
30
|
*
|
|
20
|
-
* @cssproperty --scroll-area-fade - The depth of the
|
|
31
|
+
* @cssproperty --scroll-area-fade - The depth of the fade at each edge.
|
|
21
32
|
* @cssproperty --scroll-area-fade-block-end - The depth of the bottom fade, or `0` to remove it.
|
|
22
33
|
* @cssproperty --scroll-area-fade-block-start - The depth of the top fade, or `0` to remove it.
|
|
23
|
-
* @cssproperty --scroll-area-fade-color - The color the fades
|
|
34
|
+
* @cssproperty --scroll-area-fade-color - The color to paint the fades in, as a gradient over the content at each edge. Unset, the fades are a mask.
|
|
24
35
|
* @cssproperty --scroll-area-fade-inline-end - The depth of the fade at the inline end, or `0` to remove it.
|
|
25
36
|
* @cssproperty --scroll-area-fade-inline-start - The depth of the fade at the inline start, or `0` to remove it.
|
|
26
37
|
* @cssproperty --scroll-area-scrollbar - The scrollbar width, as a `scrollbar-width` keyword.
|
|
@@ -32,6 +43,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
32
43
|
*/
|
|
33
44
|
export declare class HelixScrollArea extends HelixHeadlessScrollArea {
|
|
34
45
|
static styles: CSSResultGroup;
|
|
46
|
+
connectedCallback(): void;
|
|
35
47
|
}
|
|
36
48
|
declare global {
|
|
37
49
|
interface HTMLElementTagNameMap {
|
|
@@ -2,8 +2,37 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { customElement } from '@fusion.dev/helix-core';
|
|
3
3
|
import { HelixHeadlessScrollArea } from '@fusion.dev/helix-headless/scroll-area';
|
|
4
4
|
import { styles } from './scroll-area-root.css.js';
|
|
5
|
+
const DEPTHS = [
|
|
6
|
+
'--_scroll-area-depth-block-end',
|
|
7
|
+
'--_scroll-area-depth-block-start',
|
|
8
|
+
'--_scroll-area-depth-inline-end',
|
|
9
|
+
'--_scroll-area-depth-inline-start',
|
|
10
|
+
];
|
|
11
|
+
let registered = false;
|
|
12
|
+
function registerDepths() {
|
|
13
|
+
if (registered || typeof CSS === 'undefined' || !('registerProperty' in CSS)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
registered = true;
|
|
17
|
+
for (const name of DEPTHS) {
|
|
18
|
+
try {
|
|
19
|
+
CSS.registerProperty({
|
|
20
|
+
inherits: false,
|
|
21
|
+
initialValue: '0px',
|
|
22
|
+
name,
|
|
23
|
+
syntax: '<length-percentage>',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
5
30
|
let HelixScrollArea = class HelixScrollArea extends HelixHeadlessScrollArea {
|
|
6
31
|
static { this.styles = styles; }
|
|
32
|
+
connectedCallback() {
|
|
33
|
+
super.connectedCallback();
|
|
34
|
+
registerDepths();
|
|
35
|
+
}
|
|
7
36
|
};
|
|
8
37
|
HelixScrollArea = __decorate([
|
|
9
38
|
customElement('helix-scroll-area')
|
|
@@ -20,8 +20,7 @@ import '../../listbox/index.js';
|
|
|
20
20
|
*
|
|
21
21
|
* @cssproperty --select-border-color - Color of the panel's edge.
|
|
22
22
|
* @cssproperty --select-border-width - Width of the panel's edge. Defaults to
|
|
23
|
-
* `--helix-border-floating`,
|
|
24
|
-
* your theme sets a width.
|
|
23
|
+
* `--helix-border-floating`, a hairline, so the panel has an edge as well as its shadow over a dark page. Set it to `0` for the shadow alone.
|
|
25
24
|
* @cssproperty --select-shadow - Shadow under the panel. Defaults to
|
|
26
25
|
* `--helix-shadow-floating`, because the panel can sit over any content.
|
|
27
26
|
* @cssproperty --select-surface-max-block-size - Maximum height of the panel.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`[part="surface"] {--_travel: calc(var(--helix-space-2xs) * -1);opacity: 0;scale: 0.96;transform: translateY(var(--_travel));transition: opacity var(--helix-duration-fast) var(--helix-easing-standard), scale var(--helix-duration-fast) var(--helix-easing-emphasized), transform var(--helix-duration-fast) var(--helix-easing-emphasized), display var(--helix-duration-fast) allow-discrete, overlay var(--helix-duration-fast) allow-discrete}[part="surface"][data-placement^="top"] {--_travel: var(--helix-space-2xs);transform-origin: var(--floating-arrow-x, 50%) 100%}[part="surface"][data-placement^="bottom"] {transform-origin: var(--floating-arrow-x, 50%) 0}[part="surface"][data-placed] {opacity: 1;scale: 1;transform: none}@media (prefers-reduced-motion: reduce) {[part="surface"], [part="surface"][data-placed] {scale: 1;transform: none;transition: none}}`);
|
|
2
|
+
export const styles = createSheet(`[part="surface"] {--_travel: calc(var(--helix-space-2xs) * -1);opacity: 0;scale: 0.96;transform: translateY(var(--_travel));transition: opacity var(--helix-duration-fast) var(--helix-easing-standard), scale var(--helix-duration-fast) var(--helix-easing-emphasized), transform var(--helix-duration-fast) var(--helix-easing-emphasized), display var(--helix-duration-fast) allow-discrete, overlay var(--helix-duration-fast) allow-discrete}[part="surface"][data-placement^="top"] {--_travel: var(--helix-space-2xs);transform-origin: var(--floating-arrow-x, 50%) 100%}[part="surface"][data-placement^="bottom"] {transform-origin: var(--floating-arrow-x, 50%) 0}[part="surface"][data-placed] {opacity: 1;scale: 1;transform: none}@media (prefers-reduced-motion: reduce) {[part="surface"], [part="surface"][data-placed] {scale: 1;transform: none;transition: none}}@supports not (overlay: auto) {[part="surface"] {transition-behavior: normal}}`);
|
|
@@ -25,8 +25,7 @@ import type { CSSResultGroup } from 'lit';
|
|
|
25
25
|
* @cssproperty --skip-link-background-color - The background of the link while it is shown.
|
|
26
26
|
* @cssproperty --skip-link-border-color - The border color of the link while it is shown.
|
|
27
27
|
* @cssproperty --skip-link-border-width - The border width of the link while it is shown. Follows
|
|
28
|
-
* `--helix-border-floating`,
|
|
29
|
-
* theme sets a border.
|
|
28
|
+
* `--helix-border-floating`, a hairline. Set it to `0` for the shadow alone.
|
|
30
29
|
* @cssproperty --skip-link-color - The text color of the link while it is shown.
|
|
31
30
|
* @cssproperty --skip-link-font-size - The size of the link's text.
|
|
32
31
|
* @cssproperty --skip-link-inset-block - How far the shown link sits from the top of the viewport.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {display: block}[part="plot"] {background-color: var(--helix-color-surface-sunken);aspect-ratio: 4 / 3;block-size: var(--spatial-bar-chart-block-size, auto);inline-size: 100%;max-block-size: var(--spatial-bar-chart-block-size, 22em);border-radius: var(--helix-radii-md);overflow: hidden;position: relative}::slotted(*) {inset: 0;position: absolute}:host([no-box]) [part="plot"] {background-color: transparent}[part="plot"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}[part="fallback"] {inset: var(--helix-space-md);position: absolute}[part="fallback"][hidden] {display: none}[part="drawing"] {block-size: 100%;display: block;font-family: var(--helix-font-sans);inline-size: 100%;overflow: visible;touch-action: pan-y;user-select: none}[part="grid"] {fill: none;opacity: 0.35;stroke: var(--helix-color-foreground-muted);stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part="tick"] {fill: var(--helix-color-foreground-muted);font-weight: var(--helix-weight-medium)}[part="axis-name"] {fill: var(--helix-color-foreground);font-weight: var(--helix-weight-semibold)}[part~="bar"] {--_spatial-bar-chart-color: var(--chart-series, var(--helix-color-primary))}[part="face"] {--_spatial-bar-chart-face: oklch(from var(--_spatial-bar-chart-color) calc(l - var(--spatial-bar-chart-shade, 0) * 0.5) c h);--_spatial-bar-chart-edge: oklch(from var(--_spatial-bar-chart-face) calc(l + clamp(-0.08, (0.6 - l) * 1000, 0.1)) c h);fill: var(--_spatial-bar-chart-fill, var(--_spatial-bar-chart-face));fill-opacity: calc(var(--_spatial-bar-chart-area, 1) * var(--_spatial-bar-chart-through, 1));stroke: var(--_spatial-bar-chart-line, var(--_spatial-bar-chart-edge));stroke-linejoin: round;stroke-opacity: var(--_spatial-bar-chart-through, 1);stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}:host([emphasis="outlined"]) [part="face"] {--_spatial-bar-chart-fill: color-mix(in oklab, var(--_spatial-bar-chart-face) 60%, var(--helix-color-background));--_spatial-bar-chart-line: var(--_spatial-bar-chart-color)}:host([emphasis="subtle"]) [part="face"] {--_spatial-bar-chart-area: 0.2;--_spatial-bar-chart-line: var(--_spatial-bar-chart-color)}:host([material="glass"]) {--_spatial-bar-chart-through: calc(0.62 * var(--helix-material-opacity))}:host([material="frosted"]) {--_spatial-bar-chart-through: calc(0.88 * var(--helix-material-opacity))}foreignObject > [part="mark"] {translate: -50% -50%}[part="ring"] {fill: none;pointer-events: none;stroke: var(--helix-color-foreground);stroke-width: var(--helix-border-thick);vector-effect: non-scaling-stroke}[part="ring-behind"] {fill: none;opacity: 0.6;pointer-events: none;stroke: var(--helix-color-foreground);stroke-dasharray: 3px 2px;stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part="live"], [part="summary"], [part="table"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;position: absolute;white-space: nowrap}[part="empty"], [part="loading"] {color: var(--helix-color-foreground-muted);font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);margin: var(--helix-space-none);text-align: center}@media print {[part="face"] {stroke: var(--helix-color-border)}}@media (forced-colors: active) {[part="face"] {forced-color-adjust: none;stroke: CanvasText}[part="grid"] {stroke: CanvasText}[part="tick"], [part="axis-name"] {fill: CanvasText}[part="ring"], [part="ring-behind"] {stroke: Highlight}}`);
|
|
2
|
+
export const styles = createSheet(`:host {display: block}:host {--spatial-bar-chart-tone-accent: var(--helix-color-accent);--spatial-bar-chart-tone-danger: var(--helix-color-danger);--spatial-bar-chart-tone-info: var(--helix-color-info);--spatial-bar-chart-tone-muted: var(--helix-color-foreground-subtle);--spatial-bar-chart-tone-primary: var(--helix-color-primary);--spatial-bar-chart-tone-success: var(--helix-color-success);--spatial-bar-chart-tone-warning: var(--helix-color-warning)}[part="plot"] {background-color: var(--helix-color-surface-sunken);aspect-ratio: 4 / 3;block-size: var(--spatial-bar-chart-block-size, auto);inline-size: 100%;max-block-size: var(--spatial-bar-chart-block-size, 22em);border-radius: var(--helix-radii-md);overflow: hidden;position: relative}::slotted(*) {inset: 0;position: absolute}:host([no-box]) [part="plot"], :host([variant="row"]) [part="plot"], :host([variant="diagonal"]) [part="plot"] {background-color: transparent}[part="plot"]:focus-visible {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}[part="fallback"] {font-size: var(--helix-text-xs);inset: var(--helix-space-md);position: absolute}:host([variant]) [part="fallback"] {column-gap: var(--spatial-bar-chart-bar-size, normal)}[part="fallback"][hidden] {display: none}[part="drawing"] {block-size: 100%;display: block;font-family: var(--helix-font-sans);inline-size: 100%;overflow: visible;touch-action: pan-y;user-select: none}[part="grid"] {fill: none;opacity: 0.35;stroke: var(--helix-color-foreground-muted);stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part="tick"] {fill: var(--helix-color-foreground-muted);font-weight: var(--helix-weight-medium)}[part="axis-name"] {fill: var(--helix-color-foreground);font-weight: var(--helix-weight-semibold)}[part="floor"] {fill: none;stroke: var(--helix-color-border);stroke-linejoin: round;stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part="tick"][data-tone] {fill: var(--chart-series, var(--helix-color-foreground-muted))}[part="value"] {fill: var(--helix-color-foreground);font-variant-numeric: tabular-nums;font-weight: var(--helix-weight-semibold)}[part~="bar"] {--_spatial-bar-chart-color: var(--chart-series, var(--helix-color-primary))}[part="face"] {--_spatial-bar-chart-face: oklch(from var(--_spatial-bar-chart-color) calc(l - var(--spatial-bar-chart-shade, 0) * 0.5) c h);--_spatial-bar-chart-edge: oklch(from var(--_spatial-bar-chart-face) calc(l + clamp(-0.08, (0.6 - l) * 1000, 0.1)) c h);fill: var(--_spatial-bar-chart-fill, var(--_spatial-bar-chart-face));fill-opacity: calc(var(--_spatial-bar-chart-area, 1) * var(--_spatial-bar-chart-through, 1));stroke: var(--_spatial-bar-chart-line, var(--_spatial-bar-chart-edge));stroke-linejoin: round;stroke-opacity: var(--_spatial-bar-chart-through, 1);stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}:host([emphasis="outlined"]) [part="face"] {--_spatial-bar-chart-fill: color-mix(in oklab, var(--_spatial-bar-chart-face) 60%, var(--helix-color-background));--_spatial-bar-chart-line: var(--_spatial-bar-chart-color)}:host([emphasis="subtle"]) [part="face"] {--_spatial-bar-chart-area: 0.2;--_spatial-bar-chart-line: var(--_spatial-bar-chart-color)}:host([emphasis="muted"]) [part="face"] {--_spatial-bar-chart-fill: color-mix(in oklab, var(--helix-color-foreground) calc(30% - var(--spatial-bar-chart-shade, 0) * 66%), var(--helix-color-surface));--_spatial-bar-chart-line: color-mix(in oklab, var(--helix-color-foreground) 10%, transparent)}:host([emphasis="muted"]) [part~="bar"][data-tone] [part="face"] {--_spatial-bar-chart-fill: color-mix(in oklab, var(--_spatial-bar-chart-color) calc(100% - var(--spatial-bar-chart-shade, 0) * 130%), var(--helix-color-surface))}:host([emphasis="muted"]) [part="glow"] {fill: color-mix(in oklab, var(--chart-series, var(--helix-color-primary)) 40%, transparent)}:host([material="glass"]) {--_spatial-bar-chart-through: calc(0.62 * var(--helix-material-opacity))}:host([material="frosted"]) {--_spatial-bar-chart-through: calc(0.88 * var(--helix-material-opacity))}foreignObject > [part="mark"] {block-size: calc(var(--helix-border-thin) / 50);inline-size: calc(var(--helix-border-thin) / 50);translate: -50% -50%}[part="ring"] {fill: none;pointer-events: none;stroke: var(--helix-color-foreground);stroke-width: var(--helix-border-thick);vector-effect: non-scaling-stroke}[part="ring-behind"] {fill: none;opacity: 0.6;pointer-events: none;stroke: var(--helix-color-foreground);stroke-dasharray: 3px 2px;stroke-width: var(--helix-border-thin);vector-effect: non-scaling-stroke}[part="live"], [part="summary"], [part="table"] {block-size: 1px;clip-path: inset(50%);inline-size: 1px;margin: var(--helix-space-none);overflow: hidden;position: absolute;white-space: nowrap}[part="empty"], [part="loading"] {color: var(--helix-color-foreground-muted);font-family: var(--helix-font-sans);font-size: var(--helix-text-sm);margin: var(--helix-space-none);text-align: center}@media print {[part="face"] {stroke: var(--helix-color-border)}}@media (forced-colors: active) {[part="face"] {forced-color-adjust: none;stroke: CanvasText}[part="grid"], [part="floor"] {stroke: CanvasText}[part="tick"], [part="axis-name"], [part="value"] {fill: CanvasText}[part="ring"], [part="ring-behind"] {stroke: Highlight}[part="glow"] {display: none}}`);
|
|
@@ -16,6 +16,7 @@ import '../../tooltip/index.js';
|
|
|
16
16
|
* @groups charts
|
|
17
17
|
* @documentation https://fusion.dev/helix/components/spatial-bar-chart
|
|
18
18
|
*
|
|
19
|
+
* @cssproperty --spatial-bar-chart-bar-size - How wide each bar of a `row` or a `diagonal` stands on the page, whatever the number of bars: the row is as long as its bars make it, centered in the plot, and the tallest bar stands as high as the plot has room for, and no taller than the row is long and a quarter again, so one bar stands as a block. `fits` says how many bars the plot holds. Unset, the row fills the plot's width.
|
|
19
20
|
* @cssproperty --spatial-bar-chart-block-size - How tall the plot is. By default, three quarters of its width and 22em at most.
|
|
20
21
|
*/
|
|
21
22
|
export declare class HelixSpatialBarChart extends HelixHeadlessSpatialBarChart {
|
|
@@ -30,11 +31,18 @@ export declare class HelixSpatialBarChart extends HelixHeadlessSpatialBarChart {
|
|
|
30
31
|
* reflected property takes no default, and `solid` writes it out. A
|
|
31
32
|
* renderer draws the bars the same way.
|
|
32
33
|
*
|
|
34
|
+
* **`muted` draws every bar in the neutral ink**, so the one bar whose cell
|
|
35
|
+
* names a tone, such as `data-tone="primary"`, is the bar in color, with a
|
|
36
|
+
* soft glow in its tone: one reading lit among the others, such as today
|
|
37
|
+
* among a week. Each top takes the most ink and each side less, as a
|
|
38
|
+
* colored bar's faces do. A renderer draws the neutral bars and the toned
|
|
39
|
+
* one, without the glow.
|
|
40
|
+
*
|
|
33
41
|
* It composes with `material`: emphasis decides what is drawn, and material
|
|
34
42
|
* how much of it comes through. The outline on the bar the keys rest on
|
|
35
43
|
* keeps its own ink.
|
|
36
44
|
*/
|
|
37
|
-
emphasis?: 'outlined' | 'solid' | 'subtle';
|
|
45
|
+
emphasis?: 'muted' | 'outlined' | 'solid' | 'subtle';
|
|
38
46
|
/**
|
|
39
47
|
* How much of each mark comes through, as on every chart: `glass` admits the
|
|
40
48
|
* most of what is behind it, `frosted` less, and absent is opaque. The
|
|
@@ -13,6 +13,8 @@ export declare const MAX_DUST: number;
|
|
|
13
13
|
export interface StrandsFrame {
|
|
14
14
|
/** How much the glow around the strands adds, as a multiplier. */
|
|
15
15
|
bloom: number;
|
|
16
|
+
/** Whether the light is drawn alone, with no ground under it, so what is behind shows. */
|
|
17
|
+
clear: boolean;
|
|
16
18
|
/** How far apart the brightest and dimmest strands are, from `0` to `1`. */
|
|
17
19
|
contrast: number;
|
|
18
20
|
/** How many of the path's points are in use. */
|
package/dist/strands/renderer.js
CHANGED
|
@@ -116,6 +116,7 @@ export class StrandsRenderer {
|
|
|
116
116
|
this.vec3(this.composite, 'uGround', palette.ground);
|
|
117
117
|
this.vec3(this.composite, 'uInk', palette.peak);
|
|
118
118
|
this.float(this.composite, 'uLight', palette.light ? 1 : 0);
|
|
119
|
+
this.float(this.composite, 'uClear', frame.clear ? 1 : 0);
|
|
119
120
|
this.float(this.composite, 'uGain', (GAIN * frame.gain) / this.scale);
|
|
120
121
|
this.float(this.composite, 'uBloom', BLOOM * frame.bloom);
|
|
121
122
|
gl.bindVertexArray(this.empty);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {--_strands-glow: var(--strands-glow, var(--helix-color-primary));--_strands-ground: var(--strands-ground, var(--helix-color-background));--_strands-tint: var(--strands-tint, var(--helix-color-accent));position: relative;display: block;inline-size: 100%;block-size: 100%;background-image: linear-gradient(115deg, var(--_strands-ground) 20%, color-mix(in oklab, var(--_strands-glow) 22%, var(--_strands-ground)) 48%, color-mix(in oklab, var(--_strands-tint) 12%, var(--_strands-ground)) 58%, var(--_strands-ground) 82%);pointer-events: none}:host([travel]) {block-size: auto;inline-size: auto;inset: 0;position: fixed;z-index: var(--helix-layer-beneath)}[part="canvas"] {display: block;inline-size: 100%;block-size: 100%;caret-color: var(--strands-peak, var(--helix-color-primary-hover));color: var(--_strands-glow);column-rule-color: var(--strands-peak, var(--helix-color-primary-active));outline-color: var(--_strands-ground);text-decoration-color: var(--_strands-tint);transition-duration: var(--helix-duration-fast);transition-property: caret-color, color, column-rule-color, outline-color, text-decoration-color}[part="content"] {inset: 0;pointer-events: none;position: absolute}::slotted(*) {pointer-events: auto}[part="canvas"][hidden] {display: none}@media print {:host {display: none}}`);
|
|
2
|
+
export const styles = createSheet(`:host {--_strands-glow: var(--strands-glow, var(--helix-color-primary));--_strands-ground: var(--strands-ground, var(--helix-color-background));--_strands-tint: var(--strands-tint, var(--helix-color-accent));position: relative;display: block;inline-size: 100%;block-size: 100%;background-image: linear-gradient(115deg, var(--_strands-ground) 20%, color-mix(in oklab, var(--_strands-glow) 22%, var(--_strands-ground)) 48%, color-mix(in oklab, var(--_strands-tint) 12%, var(--_strands-ground)) 58%, var(--_strands-ground) 82%);pointer-events: none}:host([clear]) {background-image: none}:host([clear]:state(fallback)) {background-image: linear-gradient(115deg, transparent 20%, color-mix(in oklab, var(--_strands-glow) 22%, transparent) 48%, color-mix(in oklab, var(--_strands-tint) 12%, transparent) 58%, transparent 82%)}:host([travel]) {block-size: auto;inline-size: auto;inset: 0;position: fixed;z-index: var(--helix-layer-beneath)}[part="canvas"] {display: block;inline-size: 100%;block-size: 100%;caret-color: var(--strands-peak, var(--helix-color-primary-hover));color: var(--_strands-glow);column-rule-color: var(--strands-peak, var(--helix-color-primary-active));outline-color: var(--_strands-ground);text-decoration-color: var(--_strands-tint);transition-duration: var(--helix-duration-fast);transition-property: caret-color, color, column-rule-color, outline-color, text-decoration-color}[part="content"] {inset: 0;pointer-events: none;position: absolute}::slotted(*) {pointer-events: auto}[part="canvas"][hidden] {display: none}@media print {:host {display: none}}`);
|
|
@@ -21,6 +21,10 @@ import { type StrandsVariant } from '../path.js';
|
|
|
21
21
|
* `at` is nearer, and crosses in one diagonal to the far side. `waves` is sharp
|
|
22
22
|
* strands crossing the full width.
|
|
23
23
|
*
|
|
24
|
+
* **Clear, over glass.** Set `clear` and the ribbon is drawn without its
|
|
25
|
+
* ground, so a translucent pane or a frosted window behind the element shows
|
|
26
|
+
* through, with the light over it.
|
|
27
|
+
*
|
|
24
28
|
* **Quiet behind words.** `quiet` names elements, such as a hero's words, that
|
|
25
29
|
* the light dims behind to a faint glow, so a bright ribbon can cross the page
|
|
26
30
|
* under them and they stay crisp.
|
|
@@ -90,6 +94,16 @@ export declare class HelixStrands extends HelixElement {
|
|
|
90
94
|
* strands alone, crisp and dimmer, and `1` is the default glow.
|
|
91
95
|
*/
|
|
92
96
|
bloom: number;
|
|
97
|
+
/**
|
|
98
|
+
* Whether the light is drawn alone, without the ground under it, so what is
|
|
99
|
+
* behind the element shows through, such as a translucent pane or a window's
|
|
100
|
+
* glass. The ground still says which way the page runs: light added on a
|
|
101
|
+
* dark one, ink on a light one.
|
|
102
|
+
*
|
|
103
|
+
* Reflected because the stylesheet selects on it: the band under the canvas
|
|
104
|
+
* shows only while the element falls back, and loses its ground too.
|
|
105
|
+
*/
|
|
106
|
+
clear: boolean;
|
|
93
107
|
/**
|
|
94
108
|
* How far apart the brightest and dimmest strands are, from `0`, most of
|
|
95
109
|
* them alike, to `1`, a few burning bright over many faint ones. Clamped to
|
|
@@ -15,6 +15,7 @@ let HelixStrands = class HelixStrands extends HelixElement {
|
|
|
15
15
|
constructor() {
|
|
16
16
|
super(...arguments);
|
|
17
17
|
this.bloom = 1;
|
|
18
|
+
this.clear = false;
|
|
18
19
|
this.contrast = 1;
|
|
19
20
|
this.density = 0.8;
|
|
20
21
|
this.depth = 1;
|
|
@@ -396,6 +397,7 @@ let HelixStrands = class HelixStrands extends HelixElement {
|
|
|
396
397
|
const share = (value) => Math.min(1, Math.max(0, value));
|
|
397
398
|
renderer.render({
|
|
398
399
|
bloom: Math.max(0, this.bloom),
|
|
400
|
+
clear: this.clear,
|
|
399
401
|
contrast: share(this.contrast),
|
|
400
402
|
count: this.count,
|
|
401
403
|
depth: share(this.depth),
|
|
@@ -475,6 +477,9 @@ __decorate([
|
|
|
475
477
|
__decorate([
|
|
476
478
|
property({ converter: numberConverter('bloom', 1) })
|
|
477
479
|
], HelixStrands.prototype, "bloom", void 0);
|
|
480
|
+
__decorate([
|
|
481
|
+
property({ reflect: true, type: Boolean })
|
|
482
|
+
], HelixStrands.prototype, "clear", void 0);
|
|
478
483
|
__decorate([
|
|
479
484
|
property({ converter: numberConverter('contrast', 1) })
|
|
480
485
|
], HelixStrands.prototype, "contrast", void 0);
|
package/dist/strands/shader.d.ts
CHANGED
|
@@ -20,5 +20,11 @@ export declare const BLUR_FRAGMENT = "#version 300 es\nprecision highp float;\ni
|
|
|
20
20
|
* the peak rather than clipping. On a light page added light is invisible, so
|
|
21
21
|
* the same energy darkens the ground toward the peak as ink. A step of noise
|
|
22
22
|
* under a code value hides the banding a slow gradient shows on eight bits.
|
|
23
|
+
*
|
|
24
|
+
* **Clear, the light is drawn without the ground**, premultiplied, so the
|
|
25
|
+
* canvas composites over whatever is behind it. On a dark page it is the light
|
|
26
|
+
* over black, as much as its brightest channel covers; on a light page, the
|
|
27
|
+
* ink as much as it darkens. Over the ground it was meant for, it reads as the
|
|
28
|
+
* ground-drawn ribbon does.
|
|
23
29
|
*/
|
|
24
|
-
export declare const COMPOSITE_FRAGMENT = "#version 300 es\nprecision highp float;\nin vec2 vUv;\nuniform sampler2D uScene;\nuniform sampler2D uNear;\nuniform sampler2D uFar;\nuniform vec3 uGround;\nuniform vec3 uInk;\nuniform float uLight;\nuniform float uGain;\nuniform float uBloom;\nout vec4 outColor;\nfloat hash(vec2 p) { return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453); }\nvoid main() {\n vec3 e = texture(uScene, vUv).rgb + (texture(uNear, vUv).rgb * 1.1 + texture(uFar, vUv).rgb * 0.9) * uBloom;\n e *= uGain;\n vec3 dark = 1.0 - (1.0 - uGround) * exp(-e);\n float lum = dot(e, vec3(0.3, 0.55, 0.15));\n vec3 light = mix(uGround, uInk, 1.0 - exp(-
|
|
30
|
+
export declare const COMPOSITE_FRAGMENT = "#version 300 es\nprecision highp float;\nin vec2 vUv;\nuniform sampler2D uScene;\nuniform sampler2D uNear;\nuniform sampler2D uFar;\nuniform vec3 uGround;\nuniform vec3 uInk;\nuniform float uLight;\nuniform float uClear;\nuniform float uGain;\nuniform float uBloom;\nout vec4 outColor;\nfloat hash(vec2 p) { return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453); }\nvoid main() {\n vec3 e = texture(uScene, vUv).rgb + (texture(uNear, vUv).rgb * 1.1 + texture(uFar, vUv).rgb * 0.9) * uBloom;\n e *= uGain;\n vec3 dark = 1.0 - (1.0 - uGround) * exp(-e);\n float lum = dot(e, vec3(0.3, 0.55, 0.15));\n float ink = 1.0 - exp(-lum * 1.4);\n vec3 light = mix(uGround, uInk, ink);\n vec3 c = mix(dark, light, uLight);\n float a = 1.0;\n if (uClear > 0.5) {\n vec3 shine = 1.0 - exp(-e);\n a = mix(max(max(shine.r, shine.g), shine.b), ink, uLight);\n c = mix(shine, uInk * ink, uLight);\n }\n c = clamp(c + (hash(gl_FragCoord.xy) - 0.5) / 255.0 * a, 0.0, a);\n outColor = vec4(c, a);\n}\n";
|
package/dist/strands/shader.js
CHANGED
|
@@ -308,6 +308,7 @@ uniform sampler2D uFar;
|
|
|
308
308
|
uniform vec3 uGround;
|
|
309
309
|
uniform vec3 uInk;
|
|
310
310
|
uniform float uLight;
|
|
311
|
+
uniform float uClear;
|
|
311
312
|
uniform float uGain;
|
|
312
313
|
uniform float uBloom;
|
|
313
314
|
out vec4 outColor;
|
|
@@ -317,9 +318,16 @@ void main() {
|
|
|
317
318
|
e *= uGain;
|
|
318
319
|
vec3 dark = 1.0 - (1.0 - uGround) * exp(-e);
|
|
319
320
|
float lum = dot(e, vec3(0.3, 0.55, 0.15));
|
|
320
|
-
|
|
321
|
+
float ink = 1.0 - exp(-lum * 1.4);
|
|
322
|
+
vec3 light = mix(uGround, uInk, ink);
|
|
321
323
|
vec3 c = mix(dark, light, uLight);
|
|
322
|
-
|
|
323
|
-
|
|
324
|
+
float a = 1.0;
|
|
325
|
+
if (uClear > 0.5) {
|
|
326
|
+
vec3 shine = 1.0 - exp(-e);
|
|
327
|
+
a = mix(max(max(shine.r, shine.g), shine.b), ink, uLight);
|
|
328
|
+
c = mix(shine, uInk * ink, uLight);
|
|
329
|
+
}
|
|
330
|
+
c = clamp(c + (hash(gl_FragCoord.xy) - 0.5) / 255.0 * a, 0.0, a);
|
|
331
|
+
outColor = vec4(c, a);
|
|
324
332
|
}
|
|
325
333
|
`;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {--_switch-height: var(--switch-block-size, var(--helix-size-switch));--_switch-width: var(--switch-inline-size, calc(var(--_switch-height) * 1.75));--_switch-inset: calc(var(--helix-space-2xs) / 2);--_field-control-inline-size: var(--_switch-width);display: inline-flex;flex-direction: column;gap: var(--helix-space-2xs)}[part="field"] {align-items: center;cursor: pointer;display: inline-flex;gap: var(--helix-space-xs)}:host(:disabled) [part="field"] {cursor: default}:host(:disabled) {opacity: 0.5}[part="track"] {background-color: var(--helix-color-surface-sunken);block-size: var(--_switch-height);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-full);display: grid;flex: 0 0 auto;inline-size: var(--_switch-width);position: relative;transition: background-color var(--helix-duration-fast) var(--helix-easing-standard), border-color var(--helix-duration-fast) var(--helix-easing-standard)}[part="thumb"] {align-items: center;color: var(--switch-icon-color, var(--helix-color-foreground-muted));display: flex;justify-content: center;background-color: var(--switch-thumb-color, var(--helix-color-surface-overlay));block-size: calc(var(--_switch-height) - var(--_switch-inset) * 2);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-full);inline-size: calc(var(--_switch-height) - var(--_switch-inset) * 2);inset-block-start: 50%;inset-inline-start: calc(var(--_switch-inset) - var(--helix-border-thin));pointer-events: none;position: absolute;translate: 0 -50%;transition: translate var(--helix-duration-fast) var(--helix-easing-emphasized)}:host(:state(checked)) [part="thumb"] {border-color: transparent;color: var(--switch-icon-color, var(--switch-on-color, var(--helix-color-primary-surface)))}[part="thumb"] ::slotted(*) {--icon-size: calc((var(--_switch-height) - var(--_switch-inset) * 2) * 0.7)}:host(:state(checked)) [part="track"] {background-color: var(--switch-on-color, var(--helix-color-primary-surface));border-color: var(--switch-on-color, var(--helix-color-primary-surface))}[part="control"] {appearance: none;block-size: 100%;cursor: inherit;grid-area: 1 / 1;inline-size: 100%;margin: var(--helix-space-none);opacity: 0}:host(:state(checked)) [part="thumb"] {background-color: var(--switch-thumb-color, var(--helix-color-foreground-on-primary));translate: calc(var(--_switch-width) - var(--_switch-height)) -50%}[part="track"]:has([part="control"]:focus-visible) [part="thumb"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}:host(:state(invalid)) [part="track"] {border-color: var(--helix-color-danger)}[part="label"][data-empty] {display: none}@media print {:host {print-color-adjust: exact}}`);
|
|
2
|
+
export const styles = createSheet(`:host {--_switch-height: var(--switch-block-size, var(--helix-size-switch));--_switch-width: var(--switch-inline-size, calc(var(--_switch-height) * 1.75));--_switch-inset: calc(var(--helix-space-2xs) / 2);--_field-control-inline-size: var(--_switch-width);display: inline-flex;flex-direction: column;gap: var(--helix-space-2xs)}[part="field"] {align-items: center;cursor: pointer;display: inline-flex;gap: var(--helix-space-xs)}:host(:disabled) [part="field"] {cursor: default}:host(:disabled) {opacity: 0.5}[part="track"] {background-color: var(--helix-color-surface-sunken);block-size: var(--_switch-height);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-full);display: grid;flex: 0 0 auto;inline-size: var(--_switch-width);position: relative;transition: background-color var(--helix-duration-fast) var(--helix-easing-standard), border-color var(--helix-duration-fast) var(--helix-easing-standard)}[part="thumb"] {align-items: center;color: var(--switch-icon-color, light-dark(var(--helix-color-foreground-muted), var(--helix-color-surface-sunken)));display: flex;justify-content: center;background-color: var(--switch-thumb-color, light-dark(var(--helix-color-surface-overlay), var(--helix-color-foreground-muted)));block-size: calc(var(--_switch-height) - var(--_switch-inset) * 2);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-full);inline-size: calc(var(--_switch-height) - var(--_switch-inset) * 2);inset-block-start: 50%;inset-inline-start: calc(var(--_switch-inset) - var(--helix-border-thin));pointer-events: none;position: absolute;translate: 0 -50%;transition: translate var(--helix-duration-fast) var(--helix-easing-emphasized)}:host(:state(checked)) [part="thumb"] {border-color: transparent;color: var(--switch-icon-color, var(--switch-on-color, var(--helix-color-primary-surface)))}[part="thumb"] ::slotted(*) {--icon-size: calc((var(--_switch-height) - var(--_switch-inset) * 2) * 0.7)}:host(:state(checked)) [part="track"] {background-color: var(--switch-on-color, var(--helix-color-primary-surface));border-color: var(--switch-on-color, var(--helix-color-primary-surface))}[part="control"] {appearance: none;block-size: 100%;cursor: inherit;grid-area: 1 / 1;inline-size: 100%;margin: var(--helix-space-none);opacity: 0}:host(:state(checked)) [part="thumb"] {background-color: var(--switch-thumb-color, var(--helix-color-foreground-on-primary));translate: calc(var(--_switch-width) - var(--_switch-height)) -50%}[part="track"]:has([part="control"]:focus-visible) [part="thumb"] {outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);outline-offset: var(--helix-size-focus-offset)}:host(:state(invalid)) [part="track"] {border-color: var(--helix-color-danger)}[part="label"][data-empty] {display: none}@media print {:host {print-color-adjust: exact}}`);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createSheet } from '@fusion.dev/helix-core';
|
|
2
|
-
export const styles = createSheet(`:host {--_tabs-rule: none;--_tab-radius: var(--helix-radii-sm);--_tab-selected-shadow: var(--helix-shadow-sm);--_tab-selected-surface: var(--helix-color-surface-raised);display: grid;grid-template-rows: auto minmax(0, 1fr);min-block-size: 0}[part="tabs"] {background-image: var(--_tabs-rule, none);background-position: bottom;background-repeat: repeat-x;background-size: 100% var(--helix-border-thin);display: flex;gap: var(--tabs-gap, var(--helix-space-2xs));overflow-x: auto}[part="scroll-start"], [part="scroll-end"] {align-items: center;background-color: var(--tabs-scroll-background-color, var(--helix-color-surface));border: none;color: var(--helix-color-foreground-muted);cursor: pointer;display: inline-flex;flex: none;justify-content: center;padding-inline: var(--helix-space-2xs);position: sticky;z-index: 1}[part="scroll-start"] {inset-inline-start: 0}[part="scroll-end"] {inset-inline-end: 0}[part="scroll-start"][hidden], [part="scroll-end"][hidden] {display: none}[part="scroll-start"] svg, [part="scroll-end"] svg {block-size: var(--helix-size-icon);inline-size: var(--helix-size-icon)}slot[name="scroll-start-icon"]::slotted(*), slot[name="scroll-end-icon"]::slotted(*) {--icon-size: var(--helix-size-icon);block-size: var(--helix-size-icon);inline-size: var(--helix-size-icon)}[part="scroll-start"]:hover, [part="scroll-end"]:hover {color: var(--helix-color-foreground)}:host([orientation="vertical"]) [part="scroll-start"] {inset-block-start: 0;inset-inline-start: auto;padding-block: var(--helix-space-2xs)}:host([orientation="vertical"]) [part="scroll-end"] {inset-block-end: 0;inset-inline-end: auto;padding-block: var(--helix-space-2xs)}:host([variant="underlined"]) {--_tabs-rule: linear-gradient(var(--tabs-rule-color, var(--helix-color-border)), var(--tabs-rule-color, var(--helix-color-border)));--_tab-radius: var(--helix-radii-none);--_tab-selected-shadow: none;--_tab-selected-surface: transparent}:host([variant="segmented"]) [part="tabs"] {--_tab-selected-surface: var(--helix-color-surface-overlay);--_tab-height: 100%;background-color: var(--helix-color-surface-sunken);block-size: var(--helix-size-control);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-sm);justify-self: start;padding: var(--helix-space-2xs);inline-size: fit-content}[part="panels"] {display: grid;grid-template-rows: minmax(0, 1fr);min-block-size: 0;min-inline-size: 0}[part="indicator"] {background-color: var(--_indicator-color, transparent);block-size: var(--_indicator-block, var(--helix-border-thick));border: var(--_indicator-border, 0) solid var(--_indicator-border-color, transparent);border-radius: var(--tabs-indicator-radius, var(--_indicator-radius, var(--helix-radii-none)));box-shadow: var(--tabs-indicator-shadow, var(--_indicator-shadow, none));inline-size: var(--indicator-inline-size, 0);inset-block-start: 0;inset-inline-start: 0;opacity: 0;position: absolute;translate: calc(var(--indicator-x, 0px) + var(--_indicator-offset-x, 0px)) calc(var(--indicator-y, 0px) + var(--_indicator-offset, 0px));transition: translate var(--helix-duration-normal) var(--helix-easing-emphasized), inline-size var(--helix-duration-normal) var(--helix-easing-emphasized), opacity var(--helix-duration-fast) var(--helix-easing-standard);z-index: var(--helix-layer-base)}[part="indicator"][data-placed] {opacity: 1}[part="tabs"] {position: relative}::slotted(helix-tab) {position: relative;z-index: var(--helix-layer-raised)}:host([variant="underlined"]) [part="indicator"] {--_indicator-block: var(--tabs-indicator-thickness, var(--helix-border-thick));--_indicator-color: var(--tabs-indicator-color, var(--helix-color-primary));--_indicator-offset: calc(var(--indicator-block-size, 0px) - var(--tabs-indicator-thickness, var(--helix-border-thick)))}:host([variant="segmented"]) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));--_indicator-radius: calc(var(--helix-radii-sm) - var(--helix-border-thin));--_indicator-shadow: var(--helix-shadow-sm);--_indicator-offset: 0px}:host([variant="segmented"]) {--_tab-selected-surface: transparent}:host(:not([variant])) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-border: var(--helix-border-thin);--_indicator-border-color: var(--helix-color-border);--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));--_indicator-radius: var(--helix-radii-sm);--_indicator-shadow: var(--helix-shadow-sm);--_indicator-offset: 0px}:host(:not([variant])) {--_tab-selected-surface: transparent;--_tab-selected-shadow: none}:host([orientation="vertical"]) {--_tabs-inline-sign: 1;--_tabs-panel-padding-block-start: var(--helix-space-none);--_tabs-panel-padding-inline-start: var(--helix-space-md);grid-template-columns: auto minmax(0, 1fr);grid-template-rows: minmax(0, 1fr)}:host([orientation="vertical"]:dir(rtl)) {--_tabs-inline-sign: -1}:host([orientation="vertical"]) [part="tabs"] {align-content: start;background-position: right;background-repeat: repeat-y;background-size: var(--helix-border-thin) 100%;flex-direction: column;overflow-x: visible;overflow-y: auto}:host([orientation="vertical"]:dir(rtl)) [part="tabs"] {background-position: left}:host([orientation="vertical"]) ::slotted(helix-tab) {--_tab-inline-size: 100%;--_tab-justify: flex-start}:host([orientation="vertical"][variant="segmented"]) [part="tabs"] {--_tab-height: initial;block-size: auto;justify-self: start}:host([orientation="vertical"][variant="underlined"]) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-offset: 0px;--_indicator-offset-x: calc((var(--indicator-inline-size, 0px) - var(--tabs-indicator-thickness, var(--helix-border-thick))) * var(--_tabs-inline-sign, 1));inline-size: var(--tabs-indicator-thickness, var(--helix-border-thick))}@media print {:host {box-shadow: none;overflow: visible}}`);
|
|
2
|
+
export const styles = createSheet(`:host {--_tabs-rule: none;--_tab-radius: var(--helix-radii-sm);--_tab-selected-shadow: var(--helix-shadow-sm);--_tab-selected-surface: var(--helix-color-surface-raised);display: grid;grid-template-rows: auto minmax(0, 1fr);min-block-size: 0}[part="tabs"] {background-image: var(--_tabs-rule, none);background-position: bottom;background-repeat: repeat-x;background-size: 100% var(--helix-border-thin);display: flex;gap: var(--tabs-gap, var(--helix-space-2xs));overflow-x: auto}[part="scroll-start"], [part="scroll-end"] {align-items: center;background-color: var(--tabs-scroll-background-color, var(--helix-color-surface));border: none;color: var(--helix-color-foreground-muted);cursor: pointer;display: inline-flex;flex: none;justify-content: center;padding-inline: var(--helix-space-2xs);position: sticky;z-index: 1}[part="scroll-start"] {inset-inline-start: 0}[part="scroll-end"] {inset-inline-end: 0}[part="scroll-start"][hidden], [part="scroll-end"][hidden] {display: none}[part="scroll-start"] svg, [part="scroll-end"] svg {block-size: var(--helix-size-icon);inline-size: var(--helix-size-icon)}slot[name="scroll-start-icon"]::slotted(*), slot[name="scroll-end-icon"]::slotted(*) {--icon-size: var(--helix-size-icon);block-size: var(--helix-size-icon);inline-size: var(--helix-size-icon)}[part="scroll-start"]:hover, [part="scroll-end"]:hover {color: var(--helix-color-foreground)}:host([orientation="vertical"]) [part="scroll-start"] {inset-block-start: 0;inset-inline-start: auto;padding-block: var(--helix-space-2xs)}:host([orientation="vertical"]) [part="scroll-end"] {inset-block-end: 0;inset-inline-end: auto;padding-block: var(--helix-space-2xs)}:host([variant="underlined"]) {--_tabs-rule: linear-gradient(var(--tabs-rule-color, var(--helix-color-border)), var(--tabs-rule-color, var(--helix-color-border)));--_tab-radius: var(--helix-radii-none);--_tab-selected-shadow: none;--_tab-selected-surface: transparent}:host([variant="segmented"]) [part="tabs"] {--_tab-selected-surface: var(--helix-color-surface-overlay);--_tab-height: 100%;background-color: var(--helix-color-surface-sunken);block-size: var(--helix-size-control);border: var(--helix-border-thin) solid var(--helix-color-border);border-radius: var(--helix-radii-sm);justify-self: start;padding: var(--helix-space-2xs);inline-size: fit-content}[part="panels"] {display: grid;grid-template-rows: minmax(0, 1fr);min-block-size: 0;min-inline-size: 0}[part="indicator"] {background-color: var(--_indicator-color, transparent);block-size: var(--_indicator-block, var(--helix-border-thick));border: var(--_indicator-border, 0) solid var(--_indicator-border-color, transparent);border-radius: var(--tabs-indicator-radius, var(--_indicator-radius, var(--helix-radii-none)));box-shadow: var(--tabs-indicator-shadow, var(--_indicator-shadow, none));inline-size: var(--indicator-inline-size, 0);inset-block-start: 0;inset-inline-start: 0;opacity: 0;position: absolute;translate: calc(var(--indicator-x, 0px) + var(--_indicator-offset-x, 0px)) calc(var(--indicator-y, 0px) + var(--_indicator-offset, 0px));transition: translate var(--helix-duration-normal) var(--helix-easing-emphasized), inline-size var(--helix-duration-normal) var(--helix-easing-emphasized), opacity var(--helix-duration-fast) var(--helix-easing-standard);z-index: var(--helix-layer-base)}[part="indicator"][data-placed] {opacity: 1}[part="tabs"] {position: relative}::slotted(helix-tab) {position: relative;z-index: var(--helix-layer-raised)}:host([variant="underlined"]) [part="indicator"] {--_indicator-block: var(--tabs-indicator-thickness, var(--helix-border-thick));--_indicator-color: var(--tabs-indicator-color, var(--helix-color-primary));--_indicator-offset: calc(var(--indicator-block-size, 0px) - var(--tabs-indicator-thickness, var(--helix-border-thick)))}:host([variant="segmented"]) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));--_indicator-radius: calc(var(--helix-radii-sm) - var(--helix-border-thin));--_indicator-shadow: var(--helix-shadow-sm);--_indicator-offset: 0px}:host([variant="segmented"]) {--_tab-selected-surface: transparent}:host(:not([variant])) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-border: var(--helix-border-thin);--_indicator-border-color: var(--helix-color-border);--_indicator-color: var(--tabs-indicator-color, var(--helix-color-surface-overlay));--_indicator-radius: var(--helix-radii-sm);--_indicator-shadow: var(--helix-shadow-sm);--_indicator-offset: 0px}:host(:not([variant])) {--_tab-selected-surface: transparent;--_tab-selected-shadow: none}:host([orientation="vertical"]) {--_tabs-inline-sign: 1;--_tabs-panel-padding-block-start: var(--helix-space-none);--_tabs-panel-padding-inline-start: var(--helix-space-md);grid-template-columns: auto minmax(0, 1fr);grid-template-rows: minmax(0, 1fr)}:host([orientation="vertical"]:dir(rtl)) {--_tabs-inline-sign: -1}:host([orientation="vertical"]) [part="tabs"] {align-content: start;background-position: right;background-repeat: repeat-y;background-size: var(--helix-border-thin) 100%;flex-direction: column;overflow-x: visible;overflow-y: auto}:host([orientation="vertical"]:dir(rtl)) [part="tabs"] {background-position: left}:host([orientation="vertical"]) ::slotted(helix-tab) {--_tab-inline-size: 100%;--_tab-justify: flex-start}:host([orientation="vertical"][variant="segmented"]) [part="tabs"] {--_tab-height: initial;block-size: auto;justify-self: start}:host([orientation="vertical"][variant="underlined"]) [part="indicator"] {--_indicator-block: var(--indicator-block-size, 0);--_indicator-offset: 0px;--_indicator-offset-x: calc((var(--indicator-inline-size, 0px) - var(--tabs-indicator-thickness, var(--helix-border-thick))) * var(--_tabs-inline-sign, 1));inline-size: var(--tabs-indicator-thickness, var(--helix-border-thick))}@media print {:host {box-shadow: none;overflow: visible}}:host([emphasis="subtle"]:not([variant])) [part="indicator"], :host([emphasis="subtle"][variant="segmented"]) [part="indicator"] {--_indicator-border: 0;--_indicator-color: var(--tabs-indicator-color, color-mix(in oklab, var(--helix-color-foreground) 8%, transparent));--_indicator-shadow: none}:host([emphasis="subtle"][variant="underlined"]) [part="indicator"] {--_indicator-color: var(--tabs-indicator-color, var(--helix-color-foreground))}:host([dismiss-marks="hover"]) {--_tabs-dismiss-rest: 0}`);
|