@fusion.dev/helix 0.39.0 → 0.40.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.
@@ -85,7 +85,7 @@
85
85
  }
86
86
  },
87
87
  {
88
- "description": "Padding wrapper inside the animated region.",
88
+ "description": "The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.",
89
89
  "name": "content-inner",
90
90
  "inheritedFrom": {
91
91
  "name": "HelixHeadlessAccordionItem",
@@ -649,44 +649,6 @@
649
649
  }
650
650
  }
651
651
  ],
652
- "events": [
653
- {
654
- "type": {
655
- "text": "HelixBeforeOpenEvent"
656
- },
657
- "description": "Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.",
658
- "name": "helix-before-open",
659
- "reactProp": "onhelix-before-open",
660
- "inheritedFrom": {
661
- "name": "HelixHeadlessAccordionItem",
662
- "module": "src/accordion/item/accordion-item.ts"
663
- }
664
- },
665
- {
666
- "type": {
667
- "text": "HelixBeforeCloseEvent"
668
- },
669
- "description": "Fired before the section closes, and cancelable.",
670
- "name": "helix-before-close",
671
- "reactProp": "onhelix-before-close",
672
- "inheritedFrom": {
673
- "name": "HelixHeadlessAccordionItem",
674
- "module": "src/accordion/item/accordion-item.ts"
675
- }
676
- },
677
- {
678
- "type": {
679
- "text": "Event"
680
- },
681
- "description": "Says the state moved, carrying `newState` and `oldState`.",
682
- "name": "toggle",
683
- "reactProp": "ontoggle",
684
- "inheritedFrom": {
685
- "name": "HelixHeadlessAccordionItem",
686
- "module": "src/accordion/item/accordion-item.ts"
687
- }
688
- }
689
- ],
690
652
  "superclass": {
691
653
  "name": "HelixHeadlessAccordionItem",
692
654
  "package": "@fusion.dev/helix-headless/accordion"
@@ -694,7 +656,7 @@
694
656
  "summary": "One collapsible section of an accordion.",
695
657
  "helix": {
696
658
  "since": "0.1.0",
697
- "status": "experimental",
659
+ "status": "stable",
698
660
  "documentation": "https://fusion.dev/helix/components/accordion",
699
661
  "aliases": [
700
662
  "Collapsible",
@@ -758,6 +720,44 @@
758
720
  }
759
721
  }
760
722
  ],
723
+ "events": [
724
+ {
725
+ "type": {
726
+ "text": "HelixBeforeCloseEvent"
727
+ },
728
+ "description": "Fired before the section closes, and cancelable.",
729
+ "name": "helix-before-close",
730
+ "reactProp": "onhelix-before-close",
731
+ "inheritedFrom": {
732
+ "name": "HelixHeadlessAccordionItem",
733
+ "module": "src/accordion/item/accordion-item.ts"
734
+ }
735
+ },
736
+ {
737
+ "type": {
738
+ "text": "HelixBeforeOpenEvent"
739
+ },
740
+ "description": "Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves.",
741
+ "name": "helix-before-open",
742
+ "reactProp": "onhelix-before-open",
743
+ "inheritedFrom": {
744
+ "name": "HelixHeadlessAccordionItem",
745
+ "module": "src/accordion/item/accordion-item.ts"
746
+ }
747
+ },
748
+ {
749
+ "type": {
750
+ "text": "Event"
751
+ },
752
+ "description": "Says the state moved, carrying `newState` and `oldState`.",
753
+ "name": "toggle",
754
+ "reactProp": "ontoggle",
755
+ "inheritedFrom": {
756
+ "name": "HelixHeadlessAccordionItem",
757
+ "module": "src/accordion/item/accordion-item.ts"
758
+ }
759
+ }
760
+ ],
761
761
  "cssStates": [
762
762
  {
763
763
  "description": "While the item is open.",
@@ -1255,7 +1255,7 @@
1255
1255
  "helix": {
1256
1256
  "category": "layout",
1257
1257
  "since": "0.1.0",
1258
- "status": "experimental",
1258
+ "status": "stable",
1259
1259
  "documentation": "https://fusion.dev/helix/components/accordion",
1260
1260
  "aliases": [
1261
1261
  "Collapse",
@@ -1278,7 +1278,7 @@
1278
1278
  "slug": "events"
1279
1279
  },
1280
1280
  {
1281
- "description": "A hairline around the set, for a panel that needs an edge against the page.",
1281
+ "description": "A hairline around each item, for a set sitting directly on the page.",
1282
1282
  "slug": "outlined"
1283
1283
  },
1284
1284
  {
@@ -68010,7 +68010,7 @@
68010
68010
  "declarations": [
68011
68011
  {
68012
68012
  "kind": "class",
68013
- "description": "The tick and the arrow hold their space whether or not they are showing, so\nthe labels in a menu start at one place and the rows read as a column rather\nthan as a ragged list.",
68013
+ "description": "A row draws a column beside its label only where it has something to put in\none, and the width is the menu's rather than the row's: the page reserves a\nleading or a trailing track as soon as any row on it fills one, so every\nlabel on that page starts at the same edge and a page that fills neither pays\nfor neither. A row knows about its own slots and nothing about its\nneighbors, which is why the reservation is not made here.",
68014
68014
  "name": "HelixMenuItem",
68015
68015
  "cssProperties": [
68016
68016
  {
@@ -68677,7 +68677,7 @@
68677
68677
  "summary": "One row in a menu: a command, a choice, or a way into a submenu.",
68678
68678
  "helix": {
68679
68679
  "since": "0.1.0",
68680
- "status": "experimental",
68680
+ "status": "stable",
68681
68681
  "documentation": "https://fusion.dev/helix/components/menu",
68682
68682
  "aliases": [
68683
68683
  "Menu option",
@@ -69836,7 +69836,7 @@
69836
69836
  "helix": {
69837
69837
  "category": "overlays",
69838
69838
  "since": "0.1.0",
69839
- "status": "experimental",
69839
+ "status": "stable",
69840
69840
  "documentation": "https://fusion.dev/helix/components/menu",
69841
69841
  "aliases": [
69842
69842
  "Dropdown",
@@ -71668,7 +71668,7 @@
71668
71668
  "helix": {
71669
71669
  "category": "navigation",
71670
71670
  "since": "0.1.0",
71671
- "status": "experimental",
71671
+ "status": "stable",
71672
71672
  "documentation": "https://fusion.dev/helix/components/navigation",
71673
71673
  "aliases": [
71674
71674
  "Nav",
@@ -82136,7 +82136,7 @@
82136
82136
  "helix": {
82137
82137
  "category": "navigation",
82138
82138
  "since": "0.1.0",
82139
- "status": "experimental",
82139
+ "status": "stable",
82140
82140
  "documentation": "https://fusion.dev/helix/components/pagination",
82141
82141
  "aliases": [
82142
82142
  "Pager",
@@ -82152,7 +82152,7 @@
82152
82152
  "slug": "preview"
82153
82153
  },
82154
82154
  {
82155
- "description": "Large counts written short, so a summary does not wrap at page nine hundred.",
82155
+ "description": "Large counts grouped for the locale and written short, so a summary does not wrap at page nine hundred.",
82156
82156
  "slug": "compact-counts"
82157
82157
  },
82158
82158
  {
@@ -83239,7 +83239,7 @@
83239
83239
  "summary": "Chooses how many items a page holds.",
83240
83240
  "helix": {
83241
83241
  "since": "0.1.0",
83242
- "status": "experimental",
83242
+ "status": "stable",
83243
83243
  "documentation": "https://fusion.dev/helix/components/pagination",
83244
83244
  "aliases": [
83245
83245
  "Page size",
@@ -83817,7 +83817,7 @@
83817
83817
  "summary": "Reads out which items of how many are on show.",
83818
83818
  "helix": {
83819
83819
  "since": "0.1.0",
83820
- "status": "experimental",
83820
+ "status": "stable",
83821
83821
  "documentation": "https://fusion.dev/helix/components/pagination",
83822
83822
  "aliases": [
83823
83823
  "Result count",
@@ -107901,7 +107901,7 @@
107901
107901
  "helix": {
107902
107902
  "category": "navigation",
107903
107903
  "since": "0.1.0",
107904
- "status": "experimental",
107904
+ "status": "stable",
107905
107905
  "documentation": "https://fusion.dev/helix/components/steps",
107906
107906
  "aliases": [
107907
107907
  "Stepper",
@@ -107917,11 +107917,11 @@
107917
107917
  "slug": "preview"
107918
107918
  },
107919
107919
  {
107920
- "description": "A sequence with the third step current, so before and after both show.",
107920
+ "description": "A sequence with the middle step current, so a finished one and one still ahead both show.",
107921
107921
  "slug": "active"
107922
107922
  },
107923
107923
  {
107924
- "description": "Steps that fold to the current one where there is no room for all of them.",
107924
+ "description": "Down a column, where only the stage the reader is in holds its content open.",
107925
107925
  "slug": "collapsible"
107926
107926
  },
107927
107927
  {
@@ -108557,7 +108557,7 @@
108557
108557
  "summary": "One stage in a sequence.",
108558
108558
  "helix": {
108559
108559
  "since": "0.1.0",
108560
- "status": "experimental",
108560
+ "status": "stable",
108561
108561
  "documentation": "https://fusion.dev/helix/components/steps",
108562
108562
  "aliases": [
108563
108563
  "Stage"
@@ -108578,7 +108578,7 @@
108578
108578
  }
108579
108579
  },
108580
108580
  {
108581
- "description": "What the stage holds, shown while it is the current one.",
108581
+ "description": "What the stage holds. Always rendered here, a tier with no stylesheet having nothing to fold it with; the styled tier opens it on the current step down a column, and a row has no space under a step to open it into.",
108582
108582
  "name": "content",
108583
108583
  "inheritedFrom": {
108584
108584
  "name": "HelixHeadlessStep",
@@ -113308,7 +113308,7 @@
113308
113308
  "declarations": [
113309
113309
  {
113310
113310
  "kind": "class",
113311
- "description": "Selection is marked with a rule under the active tab rather than a filled\npill, which keeps the row flat and lets the underline animate between tabs as\na movement instead of two separate fills.",
113311
+ "description": "One mark travels between the tabs rather than each of them filling and\nemptying in turn. A fill that swaps is two things changing at once and reads\nas a flicker; one that moves is a single object the eye follows, and it says\nwhere the current tab was as well as where it is. `Navigation` marks its\ndestinations the same way and for the same reason.\n\nWhat the mark is depends on `variant`: unset it is a raised pill on the\nselected tab with nothing behind the row, `underlined` makes it a bar along\nthe bottom of the strip on a rule, and `segmented` grows it to the tab's own\nbox inside a sunken track.",
113312
113312
  "name": "HelixTabs",
113313
113313
  "cssParts": [
113314
113314
  {
@@ -113338,7 +113338,7 @@
113338
113338
  ],
113339
113339
  "slots": [
113340
113340
  {
113341
- "description": "The tabs.",
113341
+ "description": "The tabs, which are this element's own children.",
113342
113342
  "name": "",
113343
113343
  "inheritedFrom": {
113344
113344
  "name": "HelixHeadlessTabs",
@@ -113346,7 +113346,7 @@
113346
113346
  }
113347
113347
  },
113348
113348
  {
113349
- "description": "The panels.",
113349
+ "description": "The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.",
113350
113350
  "name": "panels",
113351
113351
  "inheritedFrom": {
113352
113352
  "name": "HelixHeadlessTabs",
@@ -12,19 +12,17 @@ import type { CSSResultGroup } from 'lit';
12
12
  * Usable on its own as a disclosure, with no accordion around it.
13
13
  *
14
14
  * @since 0.1.0
15
- * @status experimental
15
+ * @status stable
16
16
  * @aliases Collapsible, Expander, Disclosure
17
17
  * @documentation https://fusion.dev/helix/components/accordion
18
18
  *
19
19
  * @slot - The content revealed when open.
20
20
  * @slot summary - The always-visible trigger content.
21
21
  *
22
- * @event {HelixBeforeOpenEvent} helix-before-open - Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.
23
- *
24
22
  * @csspart chevron - The open and close indicator.
25
23
  * @csspart container - The outer wrapper.
26
24
  * @csspart content - The revealed region.
27
- * @csspart content-inner - Padding wrapper inside the animated region.
25
+ * @csspart content-inner - The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.
28
26
  * @csspart trigger - The clickable summary row.
29
27
  *
30
28
  * @cssproperty --accordion-item-padding - Inset of the trigger and content.
@@ -10,7 +10,7 @@ import type { CSSResultGroup } from 'lit';
10
10
  * the default: an accordion is a list, where a card is a surface.
11
11
  *
12
12
  * @since 0.1.0
13
- * @status experimental
13
+ * @status stable
14
14
  * @category layout
15
15
  * @aliases Collapse, Expander group
16
16
  * @documentation https://fusion.dev/helix/components/accordion
@@ -4,12 +4,15 @@ import type { CSSResultGroup } from 'lit';
4
4
  * @summary One row in a menu: a command, a choice, or a way into a submenu.
5
5
  *
6
6
  * @description
7
- * The tick and the arrow hold their space whether or not they are showing, so
8
- * the labels in a menu start at one place and the rows read as a column rather
9
- * than as a ragged list.
7
+ * A row draws a column beside its label only where it has something to put in
8
+ * one, and the width is the menu's rather than the row's: the page reserves a
9
+ * leading or a trailing track as soon as any row on it fills one, so every
10
+ * label on that page starts at the same edge and a page that fills neither pays
11
+ * for neither. A row knows about its own slots and nothing about its
12
+ * neighbors, which is why the reservation is not made here.
10
13
  *
11
14
  * @since 0.1.0
12
- * @status experimental
15
+ * @status stable
13
16
  * @aliases Menu option, Menu row
14
17
  * @documentation https://fusion.dev/helix/components/menu
15
18
  *
@@ -11,7 +11,7 @@ import type { CSSResultGroup } from 'lit';
11
11
  * one panel and reads the same on a phone as on a desk.
12
12
  *
13
13
  * @since 0.1.0
14
- * @status experimental
14
+ * @status stable
15
15
  * @category overlays
16
16
  * @aliases Dropdown, Action menu
17
17
  * @documentation https://fusion.dev/helix/components/menu
@@ -10,7 +10,7 @@ import type { CSSResultGroup } from 'lit';
10
10
  * says where the current page was as well as where it is.
11
11
  *
12
12
  * @since 0.1.0
13
- * @status experimental
13
+ * @status stable
14
14
  * @category navigation
15
15
  * @aliases Nav, NavList, Tabs
16
16
  * @documentation https://fusion.dev/helix/components/navigation
@@ -29,7 +29,7 @@ import type { CSSResultGroup } from 'lit';
29
29
  * is a way through rather than a destination, so it does not compete.
30
30
  *
31
31
  * @since 0.1.0
32
- * @status experimental
32
+ * @status stable
33
33
  * @category navigation
34
34
  * @aliases Pager, Page nav
35
35
  * @documentation https://fusion.dev/helix/components/pagination
@@ -15,7 +15,7 @@ import '../../select/index.js';
15
15
  * as the select it is.
16
16
  *
17
17
  * @since 0.1.0
18
- * @status experimental
18
+ * @status stable
19
19
  * @aliases Page size, Rows per page
20
20
  * @documentation https://fusion.dev/helix/components/pagination
21
21
  *
@@ -9,7 +9,7 @@ import type { CSSResultGroup } from 'lit';
9
9
  * a way to move through it.
10
10
  *
11
11
  * @since 0.1.0
12
- * @status experimental
12
+ * @status stable
13
13
  * @aliases Result count, Range
14
14
  * @documentation https://fusion.dev/helix/components/pagination
15
15
  */
@@ -14,7 +14,7 @@ import type { CSSResultGroup } from 'lit';
14
14
  * second name for it here would be a second thing to keep in step.
15
15
  *
16
16
  * @since 0.1.0
17
- * @status experimental
17
+ * @status stable
18
18
  * @category navigation
19
19
  * @aliases Stepper, Wizard, Progress steps
20
20
  * @documentation https://fusion.dev/helix/components/steps
@@ -5,7 +5,7 @@ import '../../button/index.js';
5
5
  * @summary One stage in a sequence.
6
6
  *
7
7
  * @since 0.1.0
8
- * @status experimental
8
+ * @status stable
9
9
  * @aliases Stage
10
10
  * @documentation https://fusion.dev/helix/components/steps
11
11
  */
@@ -4,17 +4,24 @@ import type { CSSResultGroup } from 'lit';
4
4
  * @summary A row of tabs and the panel each one shows.
5
5
  *
6
6
  * @description
7
- * Selection is marked with a rule under the active tab rather than a filled
8
- * pill, which keeps the row flat and lets the underline animate between tabs as
9
- * a movement instead of two separate fills.
7
+ * One mark travels between the tabs rather than each of them filling and
8
+ * emptying in turn. A fill that swaps is two things changing at once and reads
9
+ * as a flicker; one that moves is a single object the eye follows, and it says
10
+ * where the current tab was as well as where it is. `Navigation` marks its
11
+ * destinations the same way and for the same reason.
12
+ *
13
+ * What the mark is depends on `variant`: unset it is a raised pill on the
14
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
15
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
16
+ * box inside a sunken track.
10
17
  *
11
18
  * @since 0.1.0
12
19
  * @status experimental
13
20
  * @category navigation
14
21
  * @documentation https://fusion.dev/helix/components/tabs
15
22
  *
16
- * @slot - The tabs.
17
- * @slot panels - The panels.
23
+ * @slot - The tabs, which are this element's own children.
24
+ * @slot panels - The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
18
25
  *
19
26
  * @csspart panels - The panel container.
20
27
  * @csspart tabs - The tab list.
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.39.0",
4
+ "version": "0.40.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.39.0",
51
- "@fusion.dev/helix-headless": "0.39.0",
52
- "@fusion.dev/helix-styles": "0.39.0"
50
+ "@fusion.dev/helix-core": "0.40.0",
51
+ "@fusion.dev/helix-headless": "0.40.0",
52
+ "@fusion.dev/helix-styles": "0.40.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.39.0",
57
- "@fusion.dev/helix-testing": "0.39.0",
56
+ "@fusion.dev/helix-cem": "0.40.0",
57
+ "@fusion.dev/helix-testing": "0.40.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",
package/types/jsx.d.ts CHANGED
@@ -390,12 +390,12 @@ export type HelixAccordionItemElementEvent<E = Event> = TypedEvent<
390
390
  HelixAccordionItem,
391
391
  E
392
392
  >;
393
- /** `helix-before-open` event type */
394
- export type HelixAccordionItemHelixBeforeOpenElementEvent =
395
- HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
396
393
  /** `helix-before-close` event type */
397
394
  export type HelixAccordionItemHelixBeforeCloseElementEvent =
398
395
  HelixAccordionItemElementEvent<HelixBeforeCloseEvent>;
396
+ /** `helix-before-open` event type */
397
+ export type HelixAccordionItemHelixBeforeOpenElementEvent =
398
+ HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
399
399
 
400
400
  export type HelixAccordionItemProps = {
401
401
  /** Whether the element is open.
@@ -452,14 +452,14 @@ it, and the resting state of a reflected property is the attribute's
452
452
  absence. Caught by `hydration.dom.spec.ts`. */
453
453
  name?: (HelixAccordionItem["name"]) | undefined;
454
454
 
455
- /** Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
456
- "onhelix-before-open"?: ((
457
- e: HelixAccordionItemHelixBeforeOpenElementEvent,
458
- ) => void) | undefined;
459
455
  /** Fired before the section closes, and cancelable. */
460
456
  "onhelix-before-close"?: ((
461
457
  e: HelixAccordionItemHelixBeforeCloseElementEvent,
462
458
  ) => void) | undefined;
459
+ /** Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves. */
460
+ "onhelix-before-open"?: ((
461
+ e: HelixAccordionItemHelixBeforeOpenElementEvent,
462
+ ) => void) | undefined;
463
463
  /** Says the state moved, carrying `newState` and `oldState`. */
464
464
  ontoggle?: ((e: HelixAccordionItemElementEvent) => void) | undefined;
465
465
  };
@@ -518,14 +518,14 @@ empty string writes `name=""` onto every item ever rendered: Lit reflects
518
518
  it, and the resting state of a reflected property is the attribute's
519
519
  absence. Caught by `hydration.dom.spec.ts`. */
520
520
  "prop:name"?: (HelixAccordionItem["name"]) | undefined;
521
- /** Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
522
- "on:helix-before-open"?: ((
523
- e: HelixAccordionItemHelixBeforeOpenElementEvent,
524
- ) => void) | undefined;
525
521
  /** Fired before the section closes, and cancelable. */
526
522
  "on:helix-before-close"?: ((
527
523
  e: HelixAccordionItemHelixBeforeCloseElementEvent,
528
524
  ) => void) | undefined;
525
+ /** Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves. */
526
+ "on:helix-before-open"?: ((
527
+ e: HelixAccordionItemHelixBeforeOpenElementEvent,
528
+ ) => void) | undefined;
529
529
  /** Says the state moved, carrying `newState` and `oldState`. */
530
530
  "on:toggle"?: ((e: HelixAccordionItemElementEvent) => void) | undefined;
531
531
 
@@ -19970,8 +19970,8 @@ export type CustomElements = {
19970
19970
  *
19971
19971
  * Events that will be emitted by the component.
19972
19972
  *
19973
- * - `helix-before-open`: Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.
19974
19973
  * - `helix-before-close`: Fired before the section closes, and cancelable.
19974
+ * - `helix-before-open`: Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves.
19975
19975
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
19976
19976
  *
19977
19977
  * ## Slots
@@ -20012,7 +20012,7 @@ export type CustomElements = {
20012
20012
  * - `chevron`: The open and close indicator.
20013
20013
  * - `container`: The outer wrapper.
20014
20014
  * - `content`: The revealed region.
20015
- * - `content-inner`: Padding wrapper inside the animated region.
20015
+ * - `content-inner`: The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.
20016
20016
  * - `trigger`: The clickable summary row.
20017
20017
  *
20018
20018
  * ## CSS States
@@ -29273,9 +29273,12 @@ export type CustomElements = {
29273
29273
  >;
29274
29274
 
29275
29275
  /**
29276
- * The tick and the arrow hold their space whether or not they are showing, so
29277
- * the labels in a menu start at one place and the rows read as a column rather
29278
- * than as a ragged list.
29276
+ * A row draws a column beside its label only where it has something to put in
29277
+ * one, and the width is the menu's rather than the row's: the page reserves a
29278
+ * leading or a trailing track as soon as any row on it fills one, so every
29279
+ * label on that page starts at the same edge and a page that fills neither pays
29280
+ * for neither. A row knows about its own slots and nothing about its
29281
+ * neighbors, which is why the reservation is not made here.
29279
29282
  *
29280
29283
  * ## Attributes & Properties
29281
29284
  *
@@ -34770,7 +34773,7 @@ export type CustomElements = {
34770
34773
  * Areas where markup can be added to the component.
34771
34774
  *
34772
34775
  * - `(default)`: The step's name.
34773
- * - `content`: What the stage holds, shown while it is the current one.
34776
+ * - `content`: What the stage holds. Always rendered here, a tier with no stylesheet having nothing to fold it with; the styled tier opens it on the current step down a column, and a row has no space under a step to open it into.
34774
34777
  * - `description`: A line under the name, for what the stage is for.
34775
34778
  * - `marker`: Replaces the number, or the check a complete step shows.
34776
34779
  *
@@ -35412,9 +35415,16 @@ export type CustomElements = {
35412
35415
  >;
35413
35416
 
35414
35417
  /**
35415
- * Selection is marked with a rule under the active tab rather than a filled
35416
- * pill, which keeps the row flat and lets the underline animate between tabs as
35417
- * a movement instead of two separate fills.
35418
+ * One mark travels between the tabs rather than each of them filling and
35419
+ * emptying in turn. A fill that swaps is two things changing at once and reads
35420
+ * as a flicker; one that moves is a single object the eye follows, and it says
35421
+ * where the current tab was as well as where it is. `Navigation` marks its
35422
+ * destinations the same way and for the same reason.
35423
+ *
35424
+ * What the mark is depends on `variant`: unset it is a raised pill on the
35425
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
35426
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
35427
+ * box inside a sunken track.
35418
35428
  *
35419
35429
  * ## Attributes & Properties
35420
35430
  *
@@ -35484,8 +35494,8 @@ export type CustomElements = {
35484
35494
  *
35485
35495
  * Areas where markup can be added to the component.
35486
35496
  *
35487
- * - `(default)`: The tabs.
35488
- * - `panels`: The panels.
35497
+ * - `(default)`: The tabs, which are this element's own children.
35498
+ * - `panels`: The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
35489
35499
  *
35490
35500
  * ## Methods
35491
35501
  *
@@ -38810,8 +38820,8 @@ export type CustomElementsSolidJs = {
38810
38820
  *
38811
38821
  * Events that will be emitted by the component.
38812
38822
  *
38813
- * - `helix-before-open`: Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves.
38814
38823
  * - `helix-before-close`: Fired before the section closes, and cancelable.
38824
+ * - `helix-before-open`: Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves.
38815
38825
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
38816
38826
  *
38817
38827
  * ## Slots
@@ -38852,7 +38862,7 @@ export type CustomElementsSolidJs = {
38852
38862
  * - `chevron`: The open and close indicator.
38853
38863
  * - `container`: The outer wrapper.
38854
38864
  * - `content`: The revealed region.
38855
- * - `content-inner`: Padding wrapper inside the animated region.
38865
+ * - `content-inner`: The clipping box inside the animated region. The inset is on the slot within it, not here: padding on the grid item survives a zero track, which left a shut section with a band of space under it.
38856
38866
  * - `trigger`: The clickable summary row.
38857
38867
  *
38858
38868
  * ## CSS States
@@ -48302,9 +48312,12 @@ export type CustomElementsSolidJs = {
48302
48312
  >;
48303
48313
 
48304
48314
  /**
48305
- * The tick and the arrow hold their space whether or not they are showing, so
48306
- * the labels in a menu start at one place and the rows read as a column rather
48307
- * than as a ragged list.
48315
+ * A row draws a column beside its label only where it has something to put in
48316
+ * one, and the width is the menu's rather than the row's: the page reserves a
48317
+ * leading or a trailing track as soon as any row on it fills one, so every
48318
+ * label on that page starts at the same edge and a page that fills neither pays
48319
+ * for neither. A row knows about its own slots and nothing about its
48320
+ * neighbors, which is why the reservation is not made here.
48308
48321
  *
48309
48322
  * ## Attributes & Properties
48310
48323
  *
@@ -53933,7 +53946,7 @@ export type CustomElementsSolidJs = {
53933
53946
  * Areas where markup can be added to the component.
53934
53947
  *
53935
53948
  * - `(default)`: The step's name.
53936
- * - `content`: What the stage holds, shown while it is the current one.
53949
+ * - `content`: What the stage holds. Always rendered here, a tier with no stylesheet having nothing to fold it with; the styled tier opens it on the current step down a column, and a row has no space under a step to open it into.
53937
53950
  * - `description`: A line under the name, for what the stage is for.
53938
53951
  * - `marker`: Replaces the number, or the check a complete step shows.
53939
53952
  *
@@ -54597,9 +54610,16 @@ export type CustomElementsSolidJs = {
54597
54610
  >;
54598
54611
 
54599
54612
  /**
54600
- * Selection is marked with a rule under the active tab rather than a filled
54601
- * pill, which keeps the row flat and lets the underline animate between tabs as
54602
- * a movement instead of two separate fills.
54613
+ * One mark travels between the tabs rather than each of them filling and
54614
+ * emptying in turn. A fill that swaps is two things changing at once and reads
54615
+ * as a flicker; one that moves is a single object the eye follows, and it says
54616
+ * where the current tab was as well as where it is. `Navigation` marks its
54617
+ * destinations the same way and for the same reason.
54618
+ *
54619
+ * What the mark is depends on `variant`: unset it is a raised pill on the
54620
+ * selected tab with nothing behind the row, `underlined` makes it a bar along
54621
+ * the bottom of the strip on a rule, and `segmented` grows it to the tab's own
54622
+ * box inside a sunken track.
54603
54623
  *
54604
54624
  * ## Attributes & Properties
54605
54625
  *
@@ -54669,8 +54689,8 @@ export type CustomElementsSolidJs = {
54669
54689
  *
54670
54690
  * Areas where markup can be added to the component.
54671
54691
  *
54672
- * - `(default)`: The tabs.
54673
- * - `panels`: The panels.
54692
+ * - `(default)`: The tabs, which are this element's own children.
54693
+ * - `panels`: The panels, which are this element's own children. A wrapper around them is assigned to the slot and pairs with nothing, since the pairing walks these children rather than the slot's tree.
54674
54694
  *
54675
54695
  * ## Methods
54676
54696
  *
package/types/vue.d.ts CHANGED
@@ -138,8 +138,8 @@ import type {
138
138
  HelixVideoPlaylist,
139
139
  HelixVideo,
140
140
  HelixVirtualList,
141
- HelixBeforeOpenEvent,
142
141
  HelixBeforeCloseEvent,
142
+ HelixBeforeOpenEvent,
143
143
  HelixDismissEvent,
144
144
  HelixScrolledEvent,
145
145
  HelixSelectEvent,
@@ -218,12 +218,12 @@ export type HelixAccordionItemElementEvent<E = Event> = TypedEvent<
218
218
  HelixAccordionItem,
219
219
  E
220
220
  >;
221
- /** `helix-before-open` event type */
222
- export type HelixAccordionItemHelixBeforeOpenElementEvent =
223
- HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
224
221
  /** `helix-before-close` event type */
225
222
  export type HelixAccordionItemHelixBeforeCloseElementEvent =
226
223
  HelixAccordionItemElementEvent<HelixBeforeCloseEvent>;
224
+ /** `helix-before-open` event type */
225
+ export type HelixAccordionItemHelixBeforeOpenElementEvent =
226
+ HelixAccordionItemElementEvent<HelixBeforeOpenEvent>;
227
227
 
228
228
  export type HelixAccordionItemVueProps = {
229
229
  /** Whether the element is open.
@@ -282,10 +282,10 @@ absence. Caught by `hydration.dom.spec.ts`. */
282
282
  };
283
283
 
284
284
  export type HelixAccordionItemVueEvents = {
285
- /** Fired before the item opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
286
- "helix-before-open": HelixAccordionItemHelixBeforeOpenElementEvent;
287
285
  /** Fired before the section closes, and cancelable. */
288
286
  "helix-before-close": HelixAccordionItemHelixBeforeCloseElementEvent;
287
+ /** Fired before the section opens. Cancelable: refusing it takes the decision and nothing moves. */
288
+ "helix-before-open": HelixAccordionItemHelixBeforeOpenElementEvent;
289
289
  /** Says the state moved, carrying `newState` and `oldState`. */
290
290
  toggle: HelixAccordionItemElementEvent;
291
291
  };
@@ -11629,7 +11629,7 @@ export interface WcToolkitVueGlobalComponents {
11629
11629
  HelixMegamenuVueProps,
11630
11630
  HelixMegamenuVueEvents
11631
11631
  >;
11632
- /** The tick and the arrow hold their space whether or not they are showing, so the labels in a menu start at one place and the rows read as a column rather than as a ragged list. */
11632
+ /** A row draws a column beside its label only where it has something to put in one, and the width is the menu's rather than the row's: the page reserves a leading or a trailing track as soon as any row on it fills one, so every label on that page starts at the same edge and a page that fills neither pays for neither. A row knows about its own slots and nothing about its neighbors, which is why the reservation is not made here. */
11633
11633
  "helix-menu-item": DefineCustomElement<
11634
11634
  HelixMenuItem,
11635
11635
  HelixMenuItemVueProps,
@@ -11928,7 +11928,7 @@ export interface WcToolkitVueGlobalComponents {
11928
11928
  HelixTabPanelVueProps,
11929
11929
  HelixTabPanelVueEvents
11930
11930
  >;
11931
- /** Selection is marked with a rule under the active tab rather than a filled pill, which keeps the row flat and lets the underline animate between tabs as a movement instead of two separate fills. */
11931
+ /** One mark travels between the tabs rather than each of them filling and emptying in turn. A fill that swaps is two things changing at once and reads as a flicker; one that moves is a single object the eye follows, and it says where the current tab was as well as where it is. 'Navigation' marks its destinations the same way and for the same reason. What the mark is depends on 'variant': unset it is a raised pill on the selected tab with nothing behind the row, 'underlined' makes it a bar along the bottom of the strip on a rule, and 'segmented' grows it to the tab's own box inside a sunken track. */
11932
11932
  "helix-tabs": DefineCustomElement<
11933
11933
  HelixTabs,
11934
11934
  HelixTabsVueProps,