@fusion.dev/helix 0.54.0 → 0.56.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.
Files changed (36) hide show
  1. package/custom-elements.json +180 -156
  2. package/dist/avatar/root/avatar-root.css.js +1 -1
  3. package/dist/avatar/root/avatar-root.d.ts +5 -1
  4. package/dist/bar-chart/root/bar-chart-root.css.js +19 -19
  5. package/dist/carousel/root/carousel-root.css.js +18 -18
  6. package/dist/carousel/root/carousel-root.d.ts +22 -15
  7. package/dist/checkbox/root/checkbox-root.css.js +20 -11
  8. package/dist/checkbox/root/checkbox-root.d.ts +19 -7
  9. package/dist/checkbox/root/checkbox-root.js +1 -1
  10. package/dist/description-list/root/description-list-root.d.ts +6 -3
  11. package/dist/dialog/root/dialog-root.css.js +3 -3
  12. package/dist/dialog/root/dialog-root.d.ts +24 -16
  13. package/dist/dialog/root/dialog-root.js +3 -3
  14. package/dist/flex/root/flex-root.css.js +8 -12
  15. package/dist/flex/root/flex-root.d.ts +23 -4
  16. package/dist/flex/root/flex-root.js +4 -4
  17. package/dist/grid/root/grid-root.css.js +3 -7
  18. package/dist/grid/root/grid-root.d.ts +14 -2
  19. package/dist/grid/root/grid-root.js +2 -2
  20. package/dist/image/root/image-root.css.js +1 -1
  21. package/dist/image/root/image-root.d.ts +7 -6
  22. package/dist/image/root/image-root.js +2 -6
  23. package/dist/megamenu/root/megamenu-root.css.js +6 -6
  24. package/dist/orb/root/orb-root.d.ts +8 -1
  25. package/dist/progress/root/progress-root.d.ts +2 -2
  26. package/dist/radio/root/radio-root.css.js +22 -12
  27. package/dist/radio/root/radio-root.d.ts +36 -14
  28. package/dist/radio/root/radio-root.js +3 -0
  29. package/dist/rating/root/rating-root.css.js +2 -2
  30. package/dist/rating/root/rating-root.d.ts +17 -12
  31. package/dist/rating/root/rating-root.js +1 -1
  32. package/dist/select/root/select-root.d.ts +5 -5
  33. package/dist/table/column/table-column.css.js +4 -4
  34. package/package.json +6 -6
  35. package/types/jsx.d.ts +1139 -487
  36. package/types/vue.d.ts +347 -136
@@ -52,17 +52,13 @@ gap: var(--helix-space-2xl);
52
52
  gap: var(--helix-space-3xl);
53
53
  }
54
54
 
55
- :host([align]) {
56
- text-align: inherit;
57
- }
58
-
59
- :host([align="start"]) {
55
+ :host([align-items="start"]) {
60
56
  align-items: start;
61
57
  }
62
- :host([align="center"]) {
58
+ :host([align-items="center"]) {
63
59
  align-items: center;
64
60
  }
65
- :host([align="end"]) {
61
+ :host([align-items="end"]) {
66
62
  align-items: end;
67
63
  }
68
64
 
@@ -23,9 +23,21 @@ import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
23
23
  */
24
24
  export declare class HelixGrid extends HelixElement {
25
25
  /**
26
- * Alignment of each cell within its row.
26
+ * Alignment of each cell within its row, which is `align-items`.
27
+ *
28
+ * **Named for the CSS property it sets**, the way `Flex` is, and the same
29
+ * property on a grid: it places every cell in its row's track rather than
30
+ * placing the tracks. No `baseline`, which `Flex` offers, because cells in a
31
+ * row of a grid are boxes of unrelated content and lining their first lines
32
+ * up is a thing a reader asks for between siblings in a row, not between
33
+ * cells in a table of them.
34
+ *
35
+ * There is no `justifyContent` here for the same reason: the tracks are
36
+ * `1fr`, so they already fill the row and there is nothing left over to
37
+ * distribute. `columns`, `min` and `--grid-columns` are how a grid says how
38
+ * wide its tracks are.
27
39
  */
28
- align?: 'start' | 'center' | 'end' | 'stretch';
40
+ alignItems?: 'start' | 'center' | 'end' | 'stretch';
29
41
  /**
30
42
  * Fixed number of equal columns.
31
43
  */
@@ -38,8 +38,8 @@ let HelixGrid = class HelixGrid extends HelixElement {
38
38
  static { this.styles = styles; }
39
39
  };
40
40
  __decorate([
41
- property({ reflect: true })
42
- ], HelixGrid.prototype, "align", void 0);
41
+ property({ attribute: 'align-items', reflect: true })
42
+ ], HelixGrid.prototype, "alignItems", void 0);
43
43
  __decorate([
44
44
  property({ reflect: true, type: Number })
45
45
  ], HelixGrid.prototype, "columns", void 0);
@@ -6,7 +6,7 @@ overflow: hidden;
6
6
  position: relative;
7
7
  }
8
8
 
9
- :host([rounded]) {
9
+ :host([shape="rounded"]) {
10
10
  border-radius: var(--image-radius, var(--helix-radii-md));
11
11
  }
12
12
 
@@ -18,19 +18,20 @@ import type { CSSResultGroup } from 'lit';
18
18
  * @cssproperty --image-fit - How the picture fills it.
19
19
  * @cssproperty --image-placeholder-color - The resting surface behind both stand-ins.
20
20
  * @cssproperty --image-position - Which part survives a crop.
21
- * @cssproperty --image-radius - Corner radius, under `rounded`.
21
+ * @cssproperty --image-radius - Corner radius, under `shape="rounded"`.
22
22
  */
23
23
  export declare class HelixImage extends HelixHeadlessImage {
24
24
  static styles: CSSResultGroup;
25
25
  /**
26
26
  * Whether the corners are cut.
27
27
  *
28
- * A boolean rather than a radius, because the radius is a token and the
29
- * question a consumer is answering is whether this picture is a card's
30
- * surface or a page's. `--image-radius` moves it for the case that is
31
- * neither.
28
+ * The axis and not a boolean, because `rounded` is a registered word and a
29
+ * private spelling of a registry question is what `appearance` was retired
30
+ * for. Not a radius either: the radius is a token and the question a consumer
31
+ * is answering is whether this picture is a card's surface or a page's.
32
+ * `--image-radius` moves it for the case that is neither.
32
33
  */
33
- rounded: boolean;
34
+ shape?: 'rounded';
34
35
  }
35
36
  declare global {
36
37
  interface HTMLElementTagNameMap {
@@ -9,15 +9,11 @@ import { HelixHeadlessImage } from '@fusion.dev/helix-headless/image';
9
9
  import { property } from 'lit/decorators.js';
10
10
  import { styles } from './image-root.css.js';
11
11
  let HelixImage = class HelixImage extends HelixHeadlessImage {
12
- constructor() {
13
- super(...arguments);
14
- this.rounded = false;
15
- }
16
12
  static { this.styles = styles; }
17
13
  };
18
14
  __decorate([
19
- property({ reflect: true, type: Boolean })
20
- ], HelixImage.prototype, "rounded", void 0);
15
+ property({ reflect: true })
16
+ ], HelixImage.prototype, "shape", void 0);
21
17
  HelixImage = __decorate([
22
18
  customElement('helix-image')
23
19
  ], HelixImage);
@@ -81,11 +81,11 @@ clip-path: inset(0 calc(var(--helix-space-xl) * -1) 100% calc(var(--helix-space-
81
81
  }
82
82
  }
83
83
 
84
- :host(:not([variant="full"])) [part="surface"] {
84
+ :host(:not([variant="band"])) [part="surface"] {
85
85
  clip-path: inset(0 100% 100% calc(var(--helix-space-xl) * -1));
86
86
  }
87
87
 
88
- :host(:not([variant="full"])) [part="surface"]:popover-open {
88
+ :host(:not([variant="band"])) [part="surface"]:popover-open {
89
89
  clip-path: inset(
90
90
  0 calc(var(--helix-space-xl) * -1) calc(var(--helix-space-xl) * -1)
91
91
  calc(var(--helix-space-xl) * -1)
@@ -93,12 +93,12 @@ calc(var(--helix-space-xl) * -1)
93
93
  }
94
94
 
95
95
  @starting-style {
96
- :host(:not([variant="full"])) [part="surface"]:popover-open {
96
+ :host(:not([variant="band"])) [part="surface"]:popover-open {
97
97
  clip-path: inset(0 100% 100% calc(var(--helix-space-xl) * -1));
98
98
  }
99
99
  }
100
100
 
101
- :host([variant="full"]) [part="surface"],
101
+ :host([variant="band"]) [part="surface"],
102
102
  :host(:state(narrow)) [part="surface"] {
103
103
 
104
104
  backdrop-filter: var(--megamenu-backdrop, none);
@@ -124,13 +124,13 @@ padding-inline: max(var(--helix-space-xl), calc((100% - var(--megamenu-full-size
124
124
  position: fixed;
125
125
  }
126
126
 
127
- :host([variant="full"]) [part="surface"]:popover-open,
127
+ :host([variant="band"]) [part="surface"]:popover-open,
128
128
  :host(:state(narrow)) [part="surface"]:popover-open {
129
129
  clip-path: inset(0 0 calc(var(--helix-space-xl) * -1) 0);
130
130
  }
131
131
 
132
132
  @starting-style {
133
- :host([variant="full"]) [part="surface"]:popover-open,
133
+ :host([variant="band"]) [part="surface"]:popover-open,
134
134
  :host(:state(narrow)) [part="surface"]:popover-open {
135
135
  clip-path: inset(0 0 100% 0);
136
136
  }
@@ -66,11 +66,18 @@ export declare class HelixOrb extends HelixElement {
66
66
  /**
67
67
  * Diameter relative to the surrounding text.
68
68
  *
69
+ * **`Loader`'s three steps, because the two are swapped for each other.** An
70
+ * orb and a spinner are the same job drawn differently, a wait a reader is
71
+ * looking at, and a product that replaces one with the other should not find
72
+ * that a step it was writing has stopped existing. `md` is the resting one
73
+ * and selects nothing, landing on the base rule the way a written resting
74
+ * value does everywhere else.
75
+ *
69
76
  * Reflected because the stylesheet selects on it. The mesh is chosen from the
70
77
  * rendered box rather than from this, so `--orb-size` and a consumer's own
71
78
  * `inline-size` get the same treatment as the named steps.
72
79
  */
73
- size?: 'lg' | 'sm';
80
+ size?: 'sm' | 'md' | 'lg';
74
81
  /**
75
82
  * What the agent is doing.
76
83
  *
@@ -24,6 +24,8 @@ import type { CSSResultGroup } from 'lit';
24
24
  * @cssproperty --progress-color - Fill of the part that is done.
25
25
  * @cssproperty --progress-ring-size - Diameter of the ring appearance.
26
26
  * @cssproperty --progress-ring-width - Thickness of its stroke.
27
+ * @cssproperty --progress-size - Thickness of the bar.
28
+ * @cssproperty --progress-track-color - Fill of the part that is not.
27
29
  */
28
30
  export declare class HelixProgress extends HelixHeadlessProgress {
29
31
  /**
@@ -44,8 +46,6 @@ export declare class HelixProgress extends HelixHeadlessProgress {
44
46
  * from, so an outline there costs legibility and buys no distinction. `solid`
45
47
  * is the resting state and is written by not writing it, per the rule that a
46
48
  * reflected property takes no default.
47
- * @cssproperty --progress-size - Thickness of the bar.
48
- * @cssproperty --progress-track-color - Fill of the part that is not.
49
49
  */
50
50
  emphasis?: 'subtle';
51
51
  static styles: CSSResultGroup;
@@ -71,11 +71,11 @@ font-weight: var(--helix-weight-medium);
71
71
  line-height: var(--helix-leading-tight);
72
72
  }
73
73
 
74
- :host([variant="card"]) {
74
+ :host(:is([separation="filled"], [separation="outlined"])) {
75
75
  display: block;
76
76
  }
77
77
 
78
- :host([variant="card"]) [part="item"] {
78
+ :host(:is([separation="filled"], [separation="outlined"])) [part="item"] {
79
79
  align-items: start;
80
80
  background-color: var(--radio-card-background-color, var(--helix-color-surface));
81
81
  border: var(--helix-border-thin) solid var(--radio-card-border-color, var(--helix-color-border));
@@ -89,33 +89,43 @@ background-color var(--helix-duration-fast) var(--helix-easing-standard),
89
89
  border-color var(--helix-duration-fast) var(--helix-easing-standard);
90
90
  }
91
91
 
92
- :host(:not([disabled])[variant="card"]) [part="item"]:hover {
92
+ :host([separation="filled"]) [part="item"] {
93
+ border-color: transparent;
94
+ }
95
+
96
+ :host(:not([disabled]):is([separation="filled"], [separation="outlined"])) [part="item"]:hover {
93
97
  border-color: var(--helix-color-foreground-muted);
94
98
  }
95
99
 
96
- :host([variant="card"]:state(selected)) [part="item"] {
100
+ :host(:is([separation="filled"], [separation="outlined"]):state(selected)) [part="item"] {
97
101
  background-color: var(--helix-color-surface-raised);
98
102
  border-color: var(--helix-color-primary);
99
103
  box-shadow: 0 0 0 var(--helix-border-thick) var(--helix-color-primary);
100
104
  }
101
105
 
102
- :host([variant="card"]) [part="item"]:focus-visible {
106
+ :host(:is([separation="filled"], [separation="outlined"])) [part="item"]:focus-visible {
103
107
  outline: var(--helix-size-focus-ring) solid var(--helix-color-focus-ring);
104
108
  outline-offset: var(--helix-size-focus-offset);
105
109
  }
106
110
 
107
- :host([variant="card"]) [part="item"]:focus-visible [part="box"] {
111
+ :host(:is([separation="filled"], [separation="outlined"]))
112
+ [part="item"]:focus-visible
113
+ [part="box"] {
108
114
  outline: none;
109
115
  }
110
116
 
111
- :host([variant="card"]) [part="box"] {
112
- margin-block-start: calc(
113
- (var(--helix-text-sm) * var(--helix-leading-tight) - var(--_radio-size)) /
114
- 2
115
- );
117
+ :host(:is([separation="filled"], [separation="outlined"])) [part="label"] {
118
+ font-size: var(--helix-text-md);
119
+ line-height: var(--helix-leading-normal);
120
+ }
121
+
122
+ :host(:is([separation="filled"], [separation="outlined"])) [part="box"] {
123
+ font-size: var(--helix-text-md);
124
+ line-height: var(--helix-leading-normal);
125
+ margin-block-start: calc((1lh - var(--_radio-size)) / 2);
116
126
  }
117
127
 
118
- :host([variant="card"][hide-control]) [part="box"] {
128
+ :host(:is([separation="filled"], [separation="outlined"])[hide-control]) [part="box"] {
119
129
  display: none;
120
130
  }
121
131
 
@@ -36,9 +36,9 @@ export declare class HelixRadio extends HelixHeadlessRadio {
36
36
  * Unnecessary under `chip`, which has no room for a circle beside its mark
37
37
  * and hides it already.
38
38
  *
39
- * `card` only, and it is a graphic that goes rather than a radio: the control
40
- * in the shadow root is untouched, so the row is still focusable, still
41
- * reported to a screen reader, and still the thing a form submits.
39
+ * A separated choice only, and it is a graphic that goes rather than a radio:
40
+ * the control in the shadow root is untouched, so the row is still focusable,
41
+ * still reported to a screen reader, and still the thing a form submits.
42
42
  *
43
43
  * Safe because the card already carries the answer in its surface, a raised
44
44
  * fill inside a primary edge and a three-pixel ring of it. Without that ring
@@ -50,23 +50,45 @@ export declare class HelixRadio extends HelixHeadlessRadio {
50
50
  */
51
51
  hideControl: boolean;
52
52
  /**
53
- * How the choice presents itself.
53
+ * Where the choice's own surface ends.
54
54
  *
55
- * - `plain` is the default and is never written: a circle beside its words,
56
- * which is what a list of choices should be almost always.
57
- * - `card` puts it in a bounded surface, for options that need room to
55
+ * The question `separation` asks everywhere else, asked of one option, so it
56
+ * is that word: what these values pick is a surface, and `plain` is already
57
+ * the registry's own word for the answer this family used it for.
58
+ *
59
+ * - `plain` is the resting one and is never written: a circle beside its
60
+ * words, which is what a list of choices should be almost always.
61
+ * - `outlined` puts it in a bounded surface, for options that need room to
58
62
  * explain themselves: a description, an icon, a price. It is the half a
59
63
  * `data-card` link cannot do, because a link reports no value and belongs
60
64
  * to no group, so a card that is genuinely an answer has to be this.
61
- * - `chip` is the answer as its own small surface, for a row of short
62
- * choices read at a glance. It hides the circle, the surface being the
63
- * whole mark, which is why `hide-control` says it is unnecessary here.
65
+ * - `filled` is that same card on a ground of its own with no edge, which is
66
+ * what a column of choices wants where a hairline around every one of them
67
+ * is a grid of lines rather than a set of answers.
68
+ *
69
+ * **`elevated` is the one value of the axis this family does not take.** A
70
+ * raised choice competes with a dialog: the top layer is where a thing that
71
+ * interrupts you lives, and an option in a form is not one of those, so a
72
+ * column of lifted cards reads as a stack of floating things none of which is
73
+ * settled.
74
+ *
75
+ * The circle stays in all of them. A card whose only marker was its own
76
+ * border would ask a reader to compare surfaces across a row to find the
77
+ * answer, and would leave nothing for a high-contrast display.
78
+ */
79
+ separation?: 'filled' | 'outlined' | 'plain';
80
+ /**
81
+ * The answer as its own small surface, for a row of short choices read at a
82
+ * glance.
64
83
  *
65
- * The circle stays in both. A card whose only marker was its own border would
66
- * ask a reader to compare surfaces across a row to find the answer, and would
67
- * leave nothing for a high-contrast display.
84
+ * **Not a separation, which is why it is still `variant`.** The other values
85
+ * pick where a surface ends around a row that keeps its circle and its words;
86
+ * a chip has neither. It hides the circle, the surface being the whole mark,
87
+ * which is why `hide-control` says it is unnecessary here, and it takes the
88
+ * words out of the flow to be the accessible name. That removes the
89
+ * distinction `separation` exists to make rather than answering it.
68
90
  */
69
- variant?: 'chip' | 'plain' | 'card';
91
+ variant?: 'chip';
70
92
  }
71
93
  declare global {
72
94
  interface HTMLElementTagNameMap {
@@ -18,6 +18,9 @@ let HelixRadio = class HelixRadio extends HelixHeadlessRadio {
18
18
  __decorate([
19
19
  property({ attribute: 'hide-control', reflect: true, type: Boolean })
20
20
  ], HelixRadio.prototype, "hideControl", void 0);
21
+ __decorate([
22
+ property({ reflect: true })
23
+ ], HelixRadio.prototype, "separation", void 0);
21
24
  __decorate([
22
25
  property({ reflect: true })
23
26
  ], HelixRadio.prototype, "variant", void 0);
@@ -87,11 +87,11 @@ font-variant-numeric: tabular-nums;
87
87
  line-height: 1;
88
88
  }
89
89
 
90
- :host([variant="dots"]) {
90
+ :host([shape="dots"]) {
91
91
  --_rating-mark-size: var(--rating-size, var(--helix-size-icon-sm));
92
92
  }
93
93
 
94
- :host([variant="dots"]) [part="mark"] {
94
+ :host([shape="dots"]) [part="mark"] {
95
95
  border-radius: var(--helix-radii-full);
96
96
  mask-image: none;
97
97
  }
@@ -25,24 +25,29 @@ import type { CSSResultGroup } from 'lit';
25
25
  export declare class HelixRating extends HelixHeadlessRating {
26
26
  static styles: CSSResultGroup;
27
27
  /**
28
- * Which mark the row is drawn with.
28
+ * The geometry one mark is drawn to.
29
29
  *
30
- * `marks` is the star, and is what a rating means to most readers. `dots`
31
- * drops the glyph for a plain circle, which says how much rather than how
32
- * good: a star carries a judgment that a level of spice, a difficulty or a
33
- * confidence has not earned.
30
+ * The registry's word, because the question is the registry's: `Avatar`,
31
+ * `Skeleton`, `IconButton`, `Meter` and `Progress` each ask what geometry
32
+ * their own thing is cut to under this name, and `dots` is already a value
33
+ * the axis holds. What is picked here is the outline of one mark and nothing
34
+ * else, which is a shape and not a component-specific choice.
34
35
  *
35
- * Both are one shape repeated and clipped to the score, so halves work in
36
- * either, and both are only a choice of drawing. A scale whose marks are
36
+ * `dots` drops the glyph for a plain circle, which says how much rather than
37
+ * how good: a star carries a judgment that a level of spice, a difficulty or
38
+ * a confidence has not earned. Either way it is one shape repeated and
39
+ * clipped to the score, so halves work in both. A scale whose marks are
37
40
  * *different* drawings is a set of choices rather than a quantity: that is
38
41
  * `Radio.Group`, whose options already carry a value and a name each.
39
42
  *
40
- * **Undefaulted, because it reflects.** A default of `marks` writes
41
- * `variant="marks"` onto every server-rendered rating, which React holds no
42
- * prop for and reports as a hydration mismatch. The stylesheet names only
43
- * `dots`, so an unset one draws marks anyway.
43
+ * **The star is the resting one and has no word**, which is the rule every
44
+ * axis follows and is also what this family needed anyway: it reflects, so a
45
+ * default would write the resting value onto every server-rendered rating,
46
+ * an attribute React holds no prop for and so a hydration mismatch for each
47
+ * one. The stylesheet names only `dots`, so an unset one draws the star by
48
+ * landing on the base rule.
44
49
  */
45
- variant?: 'dots' | 'marks';
50
+ shape?: 'dots';
46
51
  }
47
52
  declare global {
48
53
  interface HTMLElementTagNameMap {
@@ -15,7 +15,7 @@ let HelixRating = class HelixRating extends HelixHeadlessRating {
15
15
  };
16
16
  __decorate([
17
17
  property({ reflect: true })
18
- ], HelixRating.prototype, "variant", void 0);
18
+ ], HelixRating.prototype, "shape", void 0);
19
19
  HelixRating = __decorate([
20
20
  customElement('helix-rating')
21
21
  ], HelixRating);
@@ -58,11 +58,11 @@ export declare class HelixSelect extends HelixHeadlessSelect {
58
58
  * `outlined` is what the unset frame already draws, so writing it would be
59
59
  * writing the resting state out.
60
60
  *
61
- * **The other three fields want this too and do not have it yet.** `Input`,
62
- * `Textarea` and `Combobox` wear the same frame from the same shared
63
- * stylesheet, and an inline one of each is as reasonable as an inline select.
64
- * They are left alone rather than swept, because each has a different thing
65
- * inside the frame and guessing at three is how an axis ends up meaning four
61
+ * **Every field wearing `field-frame.css` wants this too and does not have it
62
+ * yet**, which this trigger is not one of: it draws its own frame below. An
63
+ * inline number input in a toolbar is as reasonable as an inline select. They
64
+ * are left alone rather than swept, because each has a different thing inside
65
+ * the frame and guessing at a set of them is how an axis ends up meaning four
66
66
  * things, which is the fault `appearance` was retired for.
67
67
  */
68
68
  emphasis?: 'ghost';
@@ -42,13 +42,13 @@ gap: var(--helix-space-2xs);
42
42
  min-inline-size: 0;
43
43
  }
44
44
 
45
- :host([align="center"]) [part="column"],
46
- :host([align="center"]) [part="sort"] {
45
+ :host([text-align="center"]) [part="column"],
46
+ :host([text-align="center"]) [part="sort"] {
47
47
  justify-content: center;
48
48
  }
49
49
 
50
- :host([align="end"]) [part="column"],
51
- :host([align="end"]) [part="sort"] {
50
+ :host([text-align="end"]) [part="column"],
51
+ :host([text-align="end"]) [part="sort"] {
52
52
  justify-content: flex-end;
53
53
  }
54
54
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.54.0",
4
+ "version": "0.56.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -47,14 +47,14 @@
47
47
  },
48
48
  "bugs": "https://github.com/project-fusion/fusion/issues",
49
49
  "dependencies": {
50
- "@fusion.dev/helix-core": "0.54.0",
51
- "@fusion.dev/helix-headless": "0.54.0",
52
- "@fusion.dev/helix-styles": "0.54.0"
50
+ "@fusion.dev/helix-core": "0.56.0",
51
+ "@fusion.dev/helix-headless": "0.56.0",
52
+ "@fusion.dev/helix-styles": "0.56.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.54.0",
57
- "@fusion.dev/helix-testing": "0.54.0",
56
+ "@fusion.dev/helix-cem": "0.56.0",
57
+ "@fusion.dev/helix-testing": "0.56.0",
58
58
  "@fusion.dev/scripts": "0.0.0-dev",
59
59
  "@happy-dom/global-registrator": "^20.0.0",
60
60
  "@lit-labs/ssr": "^4.1.0",