@fusion.dev/helix 0.4.2 → 0.4.3

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.
Files changed (56) hide show
  1. package/custom-elements.json +119 -119
  2. package/dist/aura/root/aura-root.d.ts +10 -31
  3. package/dist/badge/root/badge-root.css.js +3 -3
  4. package/dist/bar-chart/root/bar-chart-root.css.js +7 -9
  5. package/dist/button/root/button-root.d.ts +1 -1
  6. package/dist/button/root/button-root.js +1 -1
  7. package/dist/button-group/root/button-group-root.css.js +3 -3
  8. package/dist/callout/root/callout-root.css.js +1 -2
  9. package/dist/card/root/card-root.css.js +6 -8
  10. package/dist/carousel/root/carousel-root.css.js +2 -2
  11. package/dist/checkbox/root/checkbox-root.css.js +3 -4
  12. package/dist/copy-button/root/copy-button-root.d.ts +1 -1
  13. package/dist/copy-button/root/copy-button-root.js +1 -1
  14. package/dist/date-input/root/date-input-root.css.js +1 -1
  15. package/dist/date-picker/root/date-picker-root.css.js +1 -1
  16. package/dist/divider/root/divider-root.css.js +2 -2
  17. package/dist/drawer/root/drawer-root.css.js +1 -2
  18. package/dist/file-input/root/file-input-root.css.js +1 -1
  19. package/dist/heatmap/root/heatmap-root.css.js +3 -3
  20. package/dist/icon-button/root/icon-button-root.css.js +1 -2
  21. package/dist/icon-button/root/icon-button-root.d.ts +1 -1
  22. package/dist/icon-button/root/icon-button-root.js +1 -1
  23. package/dist/input/root/input-root.css.js +2 -3
  24. package/dist/kbd/root/kbd-root.css.js +4 -4
  25. package/dist/legend/root/legend-root.css.js +1 -2
  26. package/dist/loader/root/loader-root.css.js +2 -2
  27. package/dist/menu/root/menu-root.css.js +4 -4
  28. package/dist/meter/root/meter-root.css.js +9 -16
  29. package/dist/outline/root/outline-root.css.js +1 -1
  30. package/dist/popover/root/popover-root.css.js +1 -1
  31. package/dist/radio/root/radio-root.css.js +1 -2
  32. package/dist/sandbox/preview/sandbox-preview.d.ts +11 -31
  33. package/dist/sandbox/root/sandbox-root.d.ts +11 -32
  34. package/dist/select/root/select-root.css.js +1 -1
  35. package/dist/slider/root/slider-root.css.js +8 -8
  36. package/dist/sparkline/root/sparkline-root.css.js +1 -2
  37. package/dist/speed-dial/root/speed-dial-root.css.js +1 -1
  38. package/dist/steps/root/steps-root.css.js +4 -6
  39. package/dist/steps/step/step.css.js +2 -2
  40. package/dist/switch/root/switch-root.css.js +3 -4
  41. package/dist/tag/root/tag-root.css.js +9 -10
  42. package/dist/time-input/root/time-input-root.css.js +1 -1
  43. package/dist/toast/item/toast-item.css.js +5 -5
  44. package/dist/toast/root/toast-root.css.js +5 -8
  45. package/dist/toggle/group/toggle-group.css.js +9 -10
  46. package/dist/trend/root/trend-root.css.js +1 -1
  47. package/dist/video/root/video-root.css.js +2 -2
  48. package/dist/video-playlist/menu/video-playlist-menu.css.js +1 -2
  49. package/package.json +16 -21
  50. package/{jsx.d.ts → types/jsx.d.ts} +66 -190
  51. package/{vue.d.ts → types/vue.d.ts} +3 -3
  52. package/elements.css +0 -286
  53. package/helix.css +0 -31
  54. /package/dist/{mixins → shared}/mixin-control-surface/mixin-control-surface.d.ts +0 -0
  55. /package/dist/{mixins → shared}/mixin-control-surface/mixin-control-surface.js +0 -0
  56. /package/{svelte.d.ts → types/svelte.d.ts} +0 -0
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessCopyButton } from '@fusion.dev/helix-headless/copy-button';
9
9
  import { HelixIconButton } from '../../icon-button/root/icon-button-root.js';
10
- import { MixinControlSurface } from '../../mixins/mixin-control-surface/mixin-control-surface.js';
10
+ import { MixinControlSurface } from '../../shared/mixin-control-surface/mixin-control-surface.js';
11
11
  import { styles } from './copy-button-root.css.js';
12
12
  import '../../tooltip/index.js';
13
13
  let HelixCopyButton = class HelixCopyButton extends MixinControlSurface(HelixHeadlessCopyButton) {
@@ -77,8 +77,8 @@ position: absolute;
77
77
  }
78
78
 
79
79
  [part="surface"] {
80
- opacity: 0;
81
80
  --_travel: calc(var(--helix-space-2xs) * -1);
81
+ opacity: 0;
82
82
  transform: translateY(var(--_travel));
83
83
  scale: 0.96;
84
84
  transition:
@@ -1,10 +1,10 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: inline-block;
4
3
 
5
4
  --_calendar-track: var(--date-picker-track-size, 2.5rem);
6
5
  --_calendar-row: var(--date-picker-row-size, 2.25rem);
7
6
  --_calendar-day: var(--date-picker-day-size, 1.875rem);
7
+ display: inline-block;
8
8
  }
9
9
 
10
10
  [part="months"] {
@@ -1,9 +1,9 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- align-items: center;
4
- display: flex;
5
3
 
6
4
  --_divider-thickness: var(--divider-thickness, var(--helix-border-thin));
5
+ align-items: center;
6
+ display: flex;
7
7
  }
8
8
 
9
9
  [part="content"] {
@@ -1,9 +1,8 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+ --_drawer-size: var(--drawer-size, 20rem);
3
4
 
4
5
  display: contents;
5
-
6
- --_drawer-size: var(--drawer-size, 20rem);
7
6
  }
8
7
 
9
8
  :host {
@@ -119,8 +119,8 @@ overflow-wrap: anywhere;
119
119
  }
120
120
 
121
121
  [part="remove"] {
122
- all: unset;
123
122
  --icon-size: var(--helix-size-icon-tight);
123
+ all: unset;
124
124
 
125
125
  align-items: center;
126
126
  border-radius: var(--helix-radii-sm);
@@ -1,9 +1,6 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
 
4
- display: grid;
5
- grid-template-columns: minmax(0, max-content);
6
-
7
4
  --_heatmap-cell-width: var(--heatmap-cell-inline-size, var(--heatmap-cell-size, 0.75rem));
8
5
  --_heatmap-cell-height: var(--heatmap-cell-height, var(--heatmap-cell-size, 0.75rem));
9
6
 
@@ -36,6 +33,9 @@ var(--helix-color-primary-active) 80%,
36
33
  var(--helix-color-surface-sunken)
37
34
  );
38
35
  --heatmap-tone-5: var(--helix-color-primary-active);
36
+
37
+ display: grid;
38
+ grid-template-columns: minmax(0, max-content);
39
39
  }
40
40
 
41
41
  [part="strip"] {
@@ -1,8 +1,7 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: inline-flex;
4
-
5
3
  --_icon-button-size: var(--icon-button-size, var(--helix-size-control));
4
+ display: inline-flex;
6
5
  }
7
6
 
8
7
  :host {
@@ -1,6 +1,6 @@
1
1
  import { HelixHeadlessIconButton } from '@fusion.dev/helix-headless/icon-button';
2
2
  import type { CSSResultGroup } from 'lit';
3
- declare const HelixIconButton_base: (new (...args: any[]) => import("../../mixins/mixin-control-surface/mixin-control-surface.js").MixinControlSurfaceInterface) & typeof HelixHeadlessIconButton;
3
+ declare const HelixIconButton_base: (new (...args: any[]) => import("../../shared/mixin-control-surface/mixin-control-surface.js").MixinControlSurfaceInterface) & typeof HelixHeadlessIconButton;
4
4
  /**
5
5
  * @summary A square button whose content is an icon.
6
6
  *
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement } from '@fusion.dev/helix-core';
8
8
  import { HelixHeadlessIconButton } from '@fusion.dev/helix-headless/icon-button';
9
9
  import { property } from 'lit/decorators.js';
10
- import { MixinControlSurface } from '../../mixins/mixin-control-surface/mixin-control-surface.js';
10
+ import { MixinControlSurface } from '../../shared/mixin-control-surface/mixin-control-surface.js';
11
11
  import { styles } from './icon-button-root.css.js';
12
12
  let HelixIconButton = class HelixIconButton extends MixinControlSurface(HelixHeadlessIconButton) {
13
13
  constructor() {
@@ -1,10 +1,9 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+ --_input-size: var(--input-size, var(--helix-size-control));
3
4
  display: flex;
4
5
  flex-direction: column;
5
6
  gap: var(--helix-space-2xs);
6
-
7
- --_input-size: var(--input-size, var(--helix-size-control));
8
7
  }
9
8
 
10
9
  [part="field"] {
@@ -75,8 +74,8 @@ background-color: transparent;
75
74
 
76
75
  [part="clear"],
77
76
  [part="reveal"] {
78
- all: unset;
79
77
  --icon-size: var(--helix-size-icon-tight);
78
+ all: unset;
80
79
 
81
80
  align-items: center;
82
81
  border-radius: var(--helix-radii-sm);
@@ -1,13 +1,13 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: inline-flex;
4
- font: inherit;
5
-
6
- vertical-align: -0.05em;
7
3
 
8
4
  --_kbd-size: 0.85em;
9
5
  --_kbd-height: 1.5em;
10
6
  --_kbd-inset: 0.4em;
7
+ display: inline-flex;
8
+ font: inherit;
9
+
10
+ vertical-align: -0.05em;
11
11
  }
12
12
 
13
13
  [part="kbd"] {
@@ -62,10 +62,9 @@ color-mix(in oklab, var(--chart-series) calc(var(--_legend-through, 1) * 100%),
62
62
 
63
63
  [part="entry"][data-emphasis="subtle"] [part="swatch"],
64
64
  :host([emphasis="subtle"]) [part="entry"]:not([data-emphasis]) [part="swatch"] {
65
+ --_legend-area: 0.2;
65
66
  border: var(--legend-swatch-stroke, var(--helix-border-thick)) solid
66
67
  color-mix(in oklab, var(--chart-series) calc(var(--_legend-through, 1) * 100%), transparent);
67
-
68
- --_legend-area: 0.2;
69
68
  }
70
69
 
71
70
  [part="swatch"] {
@@ -1,13 +1,13 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+
4
+ --_loader-size: var(--helix-size-loader-md);
3
5
  color: inherit;
4
6
 
5
7
  display: inline-grid;
6
8
  flex-shrink: 0;
7
9
  place-items: center;
8
10
  vertical-align: middle;
9
-
10
- --_loader-size: var(--helix-size-loader-md);
11
11
  }
12
12
 
13
13
  :host([size="sm"]) {
@@ -6,12 +6,12 @@ display: contents;
6
6
 
7
7
  [part="surface"] {
8
8
 
9
- max-block-size: var(--menu-max-block-size, var(--floating-available-block-size, none));
10
- overflow-y: auto;
11
-
12
9
  --helix-size-control: var(--helix-size-control-sm);
13
10
  --helix-size-icon: var(--helix-size-icon-sm);
14
11
 
12
+ max-block-size: var(--menu-max-block-size, var(--floating-available-block-size, none));
13
+ overflow-y: auto;
14
+
15
15
  background-color: var(--menu-background-color, var(--helix-color-surface-overlay));
16
16
 
17
17
  border: var(--menu-border-width, var(--helix-border-floating)) solid
@@ -33,8 +33,8 @@ display: none;
33
33
  }
34
34
 
35
35
  [part="surface"] {
36
- opacity: 0;
37
36
  --_travel: calc(var(--helix-space-2xs) * -1);
37
+ opacity: 0;
38
38
  transform: translateY(var(--_travel));
39
39
  scale: 0.96;
40
40
  transition:
@@ -31,9 +31,8 @@ position: relative;
31
31
  }
32
32
 
33
33
  [part="indicator"] {
34
- background-color: var(--_meter-hue);
35
-
36
34
  --_meter-hue: var(--meter-color, var(--helix-color-primary));
35
+ background-color: var(--_meter-hue);
37
36
  block-size: 100%;
38
37
  border-radius: inherit;
39
38
  inline-size: 100%;
@@ -49,21 +48,18 @@ transform-origin: right center;
49
48
  }
50
49
 
51
50
  [part="indicator"][data-band="good"] {
52
- background-color: var(--_meter-hue);
53
-
54
51
  --_meter-hue: var(--meter-color, var(--helix-color-success));
52
+ background-color: var(--_meter-hue);
55
53
  }
56
54
 
57
55
  [part="indicator"][data-band="fair"] {
58
- background-color: var(--_meter-hue);
59
-
60
56
  --_meter-hue: var(--meter-color, var(--helix-color-warning));
57
+ background-color: var(--_meter-hue);
61
58
  }
62
59
 
63
60
  [part="indicator"][data-band="poor"] {
64
- background-color: var(--_meter-hue);
65
-
66
61
  --_meter-hue: var(--meter-color, var(--helix-color-danger));
62
+ background-color: var(--_meter-hue);
67
63
  }
68
64
 
69
65
  [part="indicator"][data-beyond="over"] {
@@ -134,10 +130,10 @@ stroke-dasharray: var(--meter-sweep) 100;
134
130
 
135
131
  :host([shape="arc"]) [part="indicator"],
136
132
  :host([shape="ring"]) [part="indicator"] {
137
- scale: none;
138
- stroke: var(--_meter-hue);
139
133
 
140
134
  --_meter-hue: var(--helix-color-foreground-muted);
135
+ scale: none;
136
+ stroke: var(--_meter-hue);
141
137
  stroke-dasharray: var(--meter-along) 100;
142
138
  stroke-linecap: round;
143
139
  transition: stroke-dasharray var(--helix-duration-normal) var(--helix-easing-standard);
@@ -155,23 +151,20 @@ stroke-dashoffset: calc(var(--meter-along) * -1);
155
151
 
156
152
  :host([shape="arc"]) [part="indicator"][data-band="good"],
157
153
  :host([shape="ring"]) [part="indicator"][data-band="good"] {
158
- stroke: var(--_meter-hue);
159
-
160
154
  --_meter-hue: var(--helix-color-success);
155
+ stroke: var(--_meter-hue);
161
156
  }
162
157
 
163
158
  :host([shape="arc"]) [part="indicator"][data-band="fair"],
164
159
  :host([shape="ring"]) [part="indicator"][data-band="fair"] {
165
- stroke: var(--_meter-hue);
166
-
167
160
  --_meter-hue: var(--helix-color-warning);
161
+ stroke: var(--_meter-hue);
168
162
  }
169
163
 
170
164
  :host([shape="arc"]) [part="indicator"][data-band="poor"],
171
165
  :host([shape="ring"]) [part="indicator"][data-band="poor"] {
172
- stroke: var(--_meter-hue);
173
-
174
166
  --_meter-hue: var(--helix-color-danger);
167
+ stroke: var(--_meter-hue);
175
168
  }
176
169
 
177
170
  :host([shape="arc"]) [part="value"],
@@ -1,8 +1,8 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: block;
4
3
 
5
4
  --outline-rail: var(--helix-space-2xs);
5
+ display: block;
6
6
  }
7
7
 
8
8
  [part="nav"] {
@@ -33,10 +33,10 @@ padding: var(--popover-padding, var(--helix-space-none));
33
33
  }
34
34
 
35
35
  [part="popover"] {
36
- opacity: 0;
37
36
  --_travel: calc(var(--helix-space-2xs) * -1);
38
37
 
39
38
  --_popover-from: 0.96;
39
+ opacity: 0;
40
40
  transform: translateY(var(--_travel));
41
41
  scale: var(--_popover-from);
42
42
  transition:
@@ -1,8 +1,7 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: block;
4
-
5
3
  --_radio-size: var(--radio-size, var(--helix-size-checkbox));
4
+ display: block;
6
5
  }
7
6
 
8
7
  [part="item"] {
@@ -42,41 +42,21 @@ export type PreviewMessage = PreviewConsole | PreviewPress | PreviewReady | Prev
42
42
  * @summary Renders sandbox source in a frame of its own.
43
43
  *
44
44
  * @description
45
- * A sandboxed `<iframe>` pointed at `src`, which is a document the consumer
46
- * provides. That document imports whatever the examples need, listens for a
47
- * render message, and writes the markup into itself.
45
+ * A sandboxed `<iframe>` pointed at `src`, a document the consumer provides.
46
+ * That document imports whatever the examples need, listens for a render
47
+ * message, and writes the markup into itself.
48
48
  *
49
49
  * **A frame rather than the page.** Rendering into the page meant an example
50
- * was styled by whatever surrounded it, which flatters the preview and lies
51
- * about it: an example that restyles `helix-card` restyled the sandbox too, a
52
- * script in an example ran against the real document, and a stray
53
- * `position: fixed` escaped the pane. It also left nothing to capture console
54
- * output from, and the terminal has to come from somewhere.
55
- *
56
- * The cost is that the frame starts empty. Styles and element definitions do
57
- * not cross into it, because a document has its own stylesheets and a window
58
- * has its own custom element registry, so `src` has to load them. That is the
59
- * consumer's document rather than something guessed at here.
50
+ * was styled by whatever surrounded it: an example restyling `helix-card`
51
+ * restyled the sandbox too, a script ran against the real document, and a stray
52
+ * `position: fixed` escaped the pane. The cost is that the frame starts empty,
53
+ * a document having its own stylesheets and a window its own registry, so `src`
54
+ * has to load them.
60
55
  *
61
56
  * **The source is not trusted, and the frame is what makes that safe.**
62
- * `sandbox="allow-scripts"` and no `allow-same-origin`, so the document runs on
63
- * an opaque origin: script in an example cannot reach this page, its storage,
64
- * its cookies, or the editor the source was typed into. Without it they could,
65
- * measured, through an `onerror` handler on an image that fails to load, which
66
- * `innerHTML` does not strip the way it refuses a `<script>` tag. That is what
67
- * lets a sandbox hold markup a reader pasted from somewhere, or one day arrived
68
- * in a shared link, rather than only what its owner typed.
69
- *
70
- * `allow-forms` is granted because examples have forms in them and a submit
71
- * that silently does nothing is a worse lie than one that navigates a frame
72
- * nobody is looking at. Top-level navigation, popups and modals are not.
73
- *
74
- * **`allow="clipboard-write *; fullscreen *"`, and the stars matter.** Both
75
- * policies default to `self`, and a frame on an opaque origin is not `self`, so
76
- * the default denies both: a component that copies to the clipboard and a video
77
- * offering a fullscreen button each become a control that silently does nothing,
78
- * a denied request rejecting a promise nobody was watching. Nothing else is
79
- * granted, and a copy still needs the reader's own gesture.
57
+ * `sandbox="allow-scripts"` and never `allow-same-origin`: the two together are
58
+ * the same as no sandbox at all, a document on its own origin being able to
59
+ * reach up and remove the attribute.
80
60
  *
81
61
  * @since 0.1.0
82
62
  * @status experimental
@@ -5,41 +5,20 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
5
5
  * @summary Pairs an editable source pane with a live preview.
6
6
  *
7
7
  * @description
8
- * Coordination is by event, the same way the accordion does it: a source pane
9
- * dispatches `helix-before-edit`, which bubbles, and the sandbox hands the value to
10
- * whatever preview is slotted into it. Neither child knows the other exists, so
11
- * either can be replaced or used alone.
8
+ * Coordination is by event: a source pane dispatches `helix-before-edit`, which
9
+ * bubbles, and the sandbox hands the value to whatever preview is slotted into
10
+ * it. Neither child knows the other exists, so either can be replaced or used
11
+ * alone.
12
12
  *
13
13
  * The event carries the pane's `name`, which is what lets one sandbox hold
14
- * several panes without the root identifying senders by reference. `html` is
15
- * the preview's markup and `css` is its stylesheet. A pane named anything else
16
- * is showing something rather than driving it, and is ignored: the sandbox has
17
- * a pane rendering the example as JSX, and guessing would have put the text of
18
- * a React component into the preview.
14
+ * several panes: `html` is the preview's markup and `css` its stylesheet. A
15
+ * pane named anything else is showing something rather than driving it, and is
16
+ * ignored.
19
17
  *
20
- * **The dividers are two nested `helix-splitter`s, not a grid this element
21
- * drags itself.** The pointer handling, the keyboard handling and the corner are
22
- * all the splitter's, and the corner arrives on its own wherever a nested
23
- * splitter crosses the one it is in.
24
- *
25
- * The panes are the inner splitter and the panel is the outer one, which is the
26
- * order that makes the panel span the full width: the outer divider runs edge to
27
- * edge and the inner stops at it.
28
- *
29
- * **Both are controlled from here, so `split` and `panel-size` stay the truth.**
30
- * A splitter that owned its own position would leave this element reporting one
31
- * arrangement and showing another, and a consumer restoring a saved layout
32
- * writes to these two properties. Each splitter announces where it wants to go
33
- * and this answers, which is the same contract a form control has with a
34
- * framework.
35
- *
36
- * **The panel is in pixels here and a percentage in the splitter, and the
37
- * conversion belongs here.** A terminal wants a number of lines rather than a
38
- * share of the window, so its height should not change when the window does. A
39
- * splitter has no business knowing that, so it stays percentage-pure and this
40
- * element, which does know what is in the panel, holds the box and converts.
41
- * That is also what keeps a stored `panelSize` from a previous visit meaning
42
- * what it meant when it was written.
18
+ * **The dividers are two nested `helix-splitter`s**, not a grid this element
19
+ * drags itself, so the pointer handling, the keyboard handling and the corner
20
+ * are all the splitter's. The panes are the inner splitter and the panel is the
21
+ * outer one, which is the order that makes the panel span the full width.
43
22
  *
44
23
  * @since 0.1.0
45
24
  * @status experimental
@@ -99,8 +99,8 @@ margin: var(--helix-space-none);
99
99
  }
100
100
 
101
101
  [part="surface"] {
102
- opacity: 0;
103
102
  --_travel: calc(var(--helix-space-2xs) * -1);
103
+ opacity: 0;
104
104
  transform: translateY(var(--_travel));
105
105
 
106
106
  scale: 0.96;
@@ -1,8 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: flex;
4
- flex-direction: column;
5
- gap: var(--helix-space-2xs);
6
3
 
7
4
  --_slider-track: var(--slider-track-size, var(--helix-size-progress));
8
5
 
@@ -17,6 +14,9 @@ transparent
17
14
  );
18
15
 
19
16
  --_slider-track-color: var(--slider-track-color, var(--helix-color-border));
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: var(--helix-space-2xs);
20
20
  }
21
21
 
22
22
  [part="field"] {
@@ -285,11 +285,6 @@ grid-template-rows: 1fr auto;
285
285
  }
286
286
 
287
287
  :host([orientation="vertical"]) [part="control"] {
288
- direction: rtl;
289
- inline-size: var(--slider-length, 9rem);
290
- margin-block: calc(var(--_slider-thumb-length) / 2);
291
- margin-inline: 0;
292
- writing-mode: vertical-lr;
293
288
 
294
289
  --_slider-track-image: var(
295
290
  --slider-track-image,
@@ -299,6 +294,11 @@ var(--slider-fill-color, var(--helix-color-primary)) calc(var(--slider-fraction,
299
294
  var(--_slider-track-color) calc(var(--slider-fraction, 0) * 100%)
300
295
  )
301
296
  );
297
+ direction: rtl;
298
+ inline-size: var(--slider-length, 9rem);
299
+ margin-block: calc(var(--_slider-thumb-length) / 2);
300
+ margin-inline: 0;
301
+ writing-mode: vertical-lr;
302
302
  }
303
303
 
304
304
  :host([orientation="vertical"]) [part="marker"] {
@@ -1,11 +1,10 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+ --_sparkline-ink: var(--sparkline-color, var(--helix-color-series-1));
3
4
  block-size: var(--sparkline-block-size, 2.5em);
4
5
 
5
6
  color: var(--_sparkline-ink);
6
7
 
7
- --_sparkline-ink: var(--sparkline-color, var(--helix-color-series-1));
8
-
9
8
  position: relative;
10
9
 
11
10
  display: inline-block;
@@ -101,8 +101,8 @@ transition: none;
101
101
  }
102
102
 
103
103
  [part="trigger"] {
104
- all: unset;
105
104
  --icon-size: var(--helix-size-icon);
105
+ all: unset;
106
106
 
107
107
  align-items: center;
108
108
 
@@ -1,9 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- counter-reset: helix-step;
4
- display: flex;
5
- gap: var(--steps-gap, var(--helix-space-md));
6
-
7
3
  --_steps-m: var(--steps-marker-size, var(--helix-size-icon));
8
4
  --_steps-mark-box: var(--_steps-m);
9
5
 
@@ -44,6 +40,9 @@ var(--_steps-connector-inset)
44
40
  );
45
41
  --_steps-trail-block-start: calc(var(--_steps-mark-box) / 2);
46
42
  --_steps-trail-block-size: var(--helix-border-thin);
43
+ counter-reset: helix-step;
44
+ display: flex;
45
+ gap: var(--steps-gap, var(--helix-space-md));
47
46
  }
48
47
 
49
48
  :host(:not([orientation="vertical"])) ::slotted(*) {
@@ -52,8 +51,6 @@ min-inline-size: 0;
52
51
  }
53
52
 
54
53
  :host([orientation="vertical"]) {
55
- flex-direction: column;
56
-
57
54
  --_steps-mark-box: var(--helix-size-control-tight);
58
55
  --_steps-columns: auto minmax(0, 1fr);
59
56
  --_steps-marker-justify: start;
@@ -76,6 +73,7 @@ var(--_steps-mark-box) +
76
73
  var(--steps-gap, var(--helix-space-md)) /
77
74
  2
78
75
  );
76
+ flex-direction: column;
79
77
  }
80
78
 
81
79
  :host([variant="numeric"]) {
@@ -1,5 +1,7 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+
4
+ --_step-inset: var(--helix-space-sm);
3
5
  align-items: start;
4
6
  column-gap: var(--helix-space-2xs);
5
7
  counter-increment: helix-step;
@@ -9,8 +11,6 @@ grid-template-columns: var(--_steps-columns, minmax(0, 1fr));
9
11
  min-inline-size: 0;
10
12
  position: relative;
11
13
  row-gap: var(--_steps-row-gap, var(--helix-space-2xs));
12
-
13
- --_step-inset: var(--helix-space-sm);
14
14
  }
15
15
 
16
16
  [part="lead"],
@@ -1,9 +1,5 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
- display: inline-flex;
4
- flex-direction: column;
5
- gap: var(--helix-space-2xs);
6
-
7
3
  --_switch-height: var(--switch-block-size, var(--helix-size-switch));
8
4
 
9
5
  --_switch-width: var(--switch-inline-size, calc(var(--_switch-height) * 1.75));
@@ -11,6 +7,9 @@ gap: var(--helix-space-2xs);
11
7
  --_switch-inset: calc(var(--helix-space-2xs) / 2);
12
8
 
13
9
  --_field-control-inline-size: var(--_switch-width);
10
+ display: inline-flex;
11
+ flex-direction: column;
12
+ gap: var(--helix-space-2xs);
14
13
  }
15
14
 
16
15
  [part="field"] {
@@ -1,5 +1,14 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
+ --_tag-height: var(--helix-size-tag);
4
+
5
+ --_tag-color: var(--helix-color-foreground-muted);
6
+ --_tag-text: var(--helix-text-xs);
7
+ --_tag-inset: var(--helix-space-xs);
8
+
9
+ --_tag-fill: color-mix(in srgb, var(--_tag-color) 14%, var(--helix-color-background));
10
+ --_tag-edge: color-mix(in srgb, var(--_tag-color) 28%, var(--helix-color-background));
11
+ --_tag-label: color-mix(in oklab, var(--_tag-color) 55%, var(--helix-color-foreground));
3
12
  align-items: center;
4
13
  background-color: var(--tag-background-color, var(--_tag-fill));
5
14
  block-size: var(--_tag-height);
@@ -13,16 +22,6 @@ gap: var(--helix-space-2xs);
13
22
  line-height: var(--helix-leading-tight);
14
23
  padding-inline: var(--_tag-inset);
15
24
  white-space: nowrap;
16
-
17
- --_tag-height: var(--helix-size-tag);
18
-
19
- --_tag-color: var(--helix-color-foreground-muted);
20
- --_tag-text: var(--helix-text-xs);
21
- --_tag-inset: var(--helix-space-xs);
22
-
23
- --_tag-fill: color-mix(in srgb, var(--_tag-color) 14%, var(--helix-color-background));
24
- --_tag-edge: color-mix(in srgb, var(--_tag-color) 28%, var(--helix-color-background));
25
- --_tag-label: color-mix(in oklab, var(--_tag-color) 55%, var(--helix-color-foreground));
26
25
  }
27
26
 
28
27
  slot:not([name]) {
@@ -46,8 +46,8 @@ color: var(--helix-color-foreground-subtle);
46
46
  }
47
47
 
48
48
  [part="trigger"] {
49
- all: unset;
50
49
  --icon-size: var(--helix-size-icon);
50
+ all: unset;
51
51
 
52
52
  align-items: center;
53
53
  color: var(--helix-color-foreground-muted);
@@ -1,6 +1,11 @@
1
1
  import { createSheet } from '@fusion.dev/helix-core';
2
2
  export const styles = createSheet(`:host {
3
3
 
4
+ --helix-size-icon: var(--helix-size-icon-sm);
5
+ --helix-size-control: var(--helix-size-control-sm);
6
+
7
+ --_toast-line: calc(var(--helix-text-sm) * var(--helix-leading-normal));
8
+
4
9
  display: grid;
5
10
 
6
11
  grid-template-rows: minmax(0, 1fr);
@@ -12,11 +17,6 @@ margin-block-start var(--helix-duration-normal) var(--helix-easing-standard),
12
17
  opacity var(--helix-duration-fast) var(--helix-easing-standard),
13
18
  translate var(--helix-duration-normal) var(--helix-easing-standard);
14
19
 
15
- --helix-size-icon: var(--helix-size-icon-sm);
16
- --helix-size-control: var(--helix-size-control-sm);
17
-
18
- --_toast-line: calc(var(--helix-text-sm) * var(--helix-leading-normal));
19
-
20
20
  inline-size: var(--toast-inline-size, 22rem);
21
21
  max-inline-size: calc(100vw - var(--helix-space-xl));
22
22
  }