@fusion.dev/helix 0.37.0 → 0.38.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.
@@ -26164,7 +26164,7 @@
26164
26164
  "name": "--combobox-border-width"
26165
26165
  },
26166
26166
  {
26167
- "description": "Smallest the text field shrinks to",
26167
+ "description": "Smallest the text field shrinks to once tags share its line.",
26168
26168
  "name": "--combobox-control-size"
26169
26169
  },
26170
26170
  {
@@ -26986,7 +26986,7 @@
26986
26986
  "text": "boolean"
26987
26987
  },
26988
26988
  "default": "false",
26989
- "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.",
26989
+ "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
26990
26990
  "attribute": "multiple",
26991
26991
  "inheritedFrom": {
26992
26992
  "name": "HelixHeadlessCombobox",
@@ -27882,7 +27882,7 @@
27882
27882
  "helix": {
27883
27883
  "category": "forms",
27884
27884
  "since": "0.1.0",
27885
- "status": "experimental",
27885
+ "status": "stable",
27886
27886
  "documentation": "https://fusion.dev/helix/components/combobox",
27887
27887
  "aliases": [
27888
27888
  "Autocomplete",
@@ -28194,7 +28194,7 @@
28194
28194
  "text": "boolean"
28195
28195
  },
28196
28196
  "default": "false",
28197
- "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.",
28197
+ "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
28198
28198
  "fieldName": "multiple",
28199
28199
  "inheritedFrom": {
28200
28200
  "name": "HelixHeadlessCombobox",
@@ -42247,7 +42247,7 @@
42247
42247
  "name": "HelixDrawer",
42248
42248
  "cssProperties": [
42249
42249
  {
42250
- "description": "Filter applied behind a `material=\"glass\"` drawer. Follows the theme's material policy; set it to override the strength on one drawer.",
42250
+ "description": "Filter applied behind a `frosted` or `glass` drawer. Follows the theme's material policy; set it to override the strength on one drawer.",
42251
42251
  "name": "--drawer-backdrop"
42252
42252
  },
42253
42253
  {
@@ -42267,7 +42267,7 @@
42267
42267
  "name": "--drawer-padding"
42268
42268
  },
42269
42269
  {
42270
- "description": "Padding above the content, which clears the close control.",
42270
+ "description": "Padding above the header, which is a step deeper than the other three so the first line clears the window's own edge. Falls back to `--drawer-padding`, so setting that alone governs all four sides.",
42271
42271
  "name": "--drawer-padding-block-start"
42272
42272
  },
42273
42273
  {
@@ -42913,56 +42913,6 @@
42913
42913
  }
42914
42914
  }
42915
42915
  ],
42916
- "events": [
42917
- {
42918
- "type": {
42919
- "text": "HelixBeforeOpenEvent"
42920
- },
42921
- "description": "Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.",
42922
- "name": "helix-before-open",
42923
- "reactProp": "onhelix-before-open",
42924
- "inheritedFrom": {
42925
- "name": "HelixHeadlessDrawer",
42926
- "module": "src/drawer/root/drawer-root.ts"
42927
- }
42928
- },
42929
- {
42930
- "type": {
42931
- "text": "Event"
42932
- },
42933
- "description": "Relayed, because the platform's own does not escape.",
42934
- "name": "close",
42935
- "reactProp": "onclose",
42936
- "inheritedFrom": {
42937
- "name": "HelixHeadlessDrawer",
42938
- "module": "src/drawer/root/drawer-root.ts"
42939
- }
42940
- },
42941
- {
42942
- "type": {
42943
- "text": "HelixBeforeCloseEvent"
42944
- },
42945
- "description": "Fired before the panel closes, and cancelable.",
42946
- "name": "helix-before-close",
42947
- "reactProp": "onhelix-before-close",
42948
- "inheritedFrom": {
42949
- "name": "HelixHeadlessDrawer",
42950
- "module": "src/drawer/root/drawer-root.ts"
42951
- }
42952
- },
42953
- {
42954
- "type": {
42955
- "text": "Event"
42956
- },
42957
- "description": "Says the state moved, carrying `newState` and `oldState`.",
42958
- "name": "toggle",
42959
- "reactProp": "ontoggle",
42960
- "inheritedFrom": {
42961
- "name": "HelixHeadlessDrawer",
42962
- "module": "src/drawer/root/drawer-root.ts"
42963
- }
42964
- }
42965
- ],
42966
42916
  "attributes": [
42967
42917
  {
42968
42918
  "name": "material",
@@ -43056,7 +43006,7 @@
43056
43006
  "helix": {
43057
43007
  "category": "overlays",
43058
43008
  "since": "0.1.0",
43059
- "status": "experimental",
43009
+ "status": "stable",
43060
43010
  "documentation": "https://fusion.dev/helix/components/drawer",
43061
43011
  "aliases": [
43062
43012
  "Sheet",
@@ -43091,6 +43041,56 @@
43091
43041
  },
43092
43042
  "tagName": "helix-drawer",
43093
43043
  "customElement": true,
43044
+ "events": [
43045
+ {
43046
+ "type": {
43047
+ "text": "Event"
43048
+ },
43049
+ "description": "Relayed, because the platform's own does not escape.",
43050
+ "name": "close",
43051
+ "reactProp": "onclose",
43052
+ "inheritedFrom": {
43053
+ "name": "HelixHeadlessDrawer",
43054
+ "module": "src/drawer/root/drawer-root.ts"
43055
+ }
43056
+ },
43057
+ {
43058
+ "type": {
43059
+ "text": "HelixBeforeCloseEvent"
43060
+ },
43061
+ "description": "Fired before the panel closes, and cancelable.",
43062
+ "name": "helix-before-close",
43063
+ "reactProp": "onhelix-before-close",
43064
+ "inheritedFrom": {
43065
+ "name": "HelixHeadlessDrawer",
43066
+ "module": "src/drawer/root/drawer-root.ts"
43067
+ }
43068
+ },
43069
+ {
43070
+ "type": {
43071
+ "text": "HelixBeforeOpenEvent"
43072
+ },
43073
+ "description": "Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves.",
43074
+ "name": "helix-before-open",
43075
+ "reactProp": "onhelix-before-open",
43076
+ "inheritedFrom": {
43077
+ "name": "HelixHeadlessDrawer",
43078
+ "module": "src/drawer/root/drawer-root.ts"
43079
+ }
43080
+ },
43081
+ {
43082
+ "type": {
43083
+ "text": "Event"
43084
+ },
43085
+ "description": "Says the state moved, carrying `newState` and `oldState`.",
43086
+ "name": "toggle",
43087
+ "reactProp": "ontoggle",
43088
+ "inheritedFrom": {
43089
+ "name": "HelixHeadlessDrawer",
43090
+ "module": "src/drawer/root/drawer-root.ts"
43091
+ }
43092
+ }
43093
+ ],
43094
43094
  "cssStates": [
43095
43095
  {
43096
43096
  "description": "While the drawer is open.",
@@ -43649,7 +43649,7 @@
43649
43649
  "summary": "One row of a drill-down, which may hold a page of its own.",
43650
43650
  "helix": {
43651
43651
  "since": "0.1.0",
43652
- "status": "experimental",
43652
+ "status": "stable",
43653
43653
  "documentation": "https://fusion.dev/helix/components/drilldown",
43654
43654
  "aliases": [
43655
43655
  "Panel item",
@@ -44498,7 +44498,7 @@
44498
44498
  "helix": {
44499
44499
  "category": "navigation",
44500
44500
  "since": "0.1.0",
44501
- "status": "experimental",
44501
+ "status": "stable",
44502
44502
  "documentation": "https://fusion.dev/helix/components/drilldown",
44503
44503
  "aliases": [
44504
44504
  "Panel",
@@ -44672,6 +44672,14 @@
44672
44672
  }
44673
44673
  ],
44674
44674
  "cssStates": [
44675
+ {
44676
+ "description": "While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.",
44677
+ "name": "drilled",
44678
+ "inheritedFrom": {
44679
+ "name": "HelixHeadlessDrilldown",
44680
+ "module": "src/drilldown/root/drilldown-root.ts"
44681
+ }
44682
+ },
44675
44683
  {
44676
44684
  "description": "Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.",
44677
44685
  "name": "settled",
@@ -66824,7 +66832,7 @@
66824
66832
  "name": "HelixMegamenu",
66825
66833
  "cssProperties": [
66826
66834
  {
66827
- "description": "A filter behind the panel, for glass.",
66835
+ "description": "A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word.",
66828
66836
  "name": "--megamenu-backdrop"
66829
66837
  },
66830
66838
  {
@@ -66974,7 +66982,7 @@
66974
66982
  "text": "number"
66975
66983
  },
66976
66984
  "default": "640",
66977
- "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This sets\n`data-narrow` on the host and the stylesheet arranges itself off that.",
66985
+ "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
66978
66986
  "attribute": "full-below",
66979
66987
  "inheritedFrom": {
66980
66988
  "name": "HelixHeadlessMegamenu",
@@ -67692,7 +67700,7 @@
67692
67700
  "helix": {
67693
67701
  "category": "navigation",
67694
67702
  "since": "0.1.0",
67695
- "status": "experimental",
67703
+ "status": "stable",
67696
67704
  "documentation": "https://fusion.dev/helix/components/megamenu",
67697
67705
  "aliases": [
67698
67706
  "Mega menu",
@@ -67765,7 +67773,7 @@
67765
67773
  "text": "number"
67766
67774
  },
67767
67775
  "default": "640",
67768
- "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This sets\n`data-narrow` on the host and the stylesheet arranges itself off that.",
67776
+ "description": "The width, in pixels, under which a card becomes a band. Zero never does.\n\nA card is a panel hung off one word, and there is no room to hang anything\noff a word on a phone: the columns do not shrink past\n`--megamenu-column-size`, so four of them stay four of them and the panel\nruns off the side of the screen rather than reflowing. Below this it takes\nthe whole width and its columns stack, which is the only arrangement that\nfits.\n\n**In script rather than a media query, and only once.** Whether the panel is\na band is not a question of paint: a band is not placed against the trigger,\nso the controller has to be told not to measure, and that decision is here\nwhatever the stylesheet says. Writing the width in both places would be one\nnumber in two languages, drifting the first time either moved. This records\n`:state(narrow)` on the host and the stylesheet arranges itself off that.\n\n**A custom state and never `data-narrow`, which is what it was.** The width\nis read in `connectedCallback`, so on a phone this is true on the very first\nupdate: an attribute written there is markup a consumer's server never sent,\nwhich React reports as a mismatch and answers by rebuilding the subtree. The\nnarrow exception the server specs describe covers a mirror that can only\nbecome true long after hydration, and a viewport measured before the first\npaint is the opposite case. See `MixinControllerOpen` on `open`.",
67769
67777
  "fieldName": "fullBelow",
67770
67778
  "inheritedFrom": {
67771
67779
  "name": "HelixHeadlessMegamenu",
@@ -67886,6 +67894,14 @@
67886
67894
  }
67887
67895
  ],
67888
67896
  "cssStates": [
67897
+ {
67898
+ "description": "While the page is under `full-below`, so the panel is a band whether or not one was asked for.",
67899
+ "name": "narrow",
67900
+ "inheritedFrom": {
67901
+ "name": "HelixHeadlessMegamenu",
67902
+ "module": "src/megamenu/root/megamenu-root.ts"
67903
+ }
67904
+ },
67889
67905
  {
67890
67906
  "description": "While the panel is open, which is when the trigger reads as current.",
67891
67907
  "name": "open",
@@ -80243,7 +80259,7 @@
80243
80259
  "declarations": [
80244
80260
  {
80245
80261
  "kind": "class",
80246
- "description": "A rule down the leading edge with the current section lit along it, which is\nthe shape a table of contents has taken since printed marginalia: the line\nsays the list is one thing, and the lit segment says where in it you are.\n\nNesting is the consumer's, expressed as `data-level` on a link. An outline\nthat read heading levels itself would have to look at the document, and the\ndocument is not always where the headings are.",
80262
+ "description": "A rule down the leading edge with the current section lit along it, which is\nthe shape a table of contents has taken since printed marginalia: the line\nsays the list is one thing, and the lit segment says where in it you are.\n\nNesting is the consumer's, expressed as `data-level` on a link, and the\nlevels are the heading levels: `2` through `6` each take one more step of\n`--outline-indent`, and a link with no `data-level` is the top one. An\noutline that read heading levels itself would have to look at the document,\nand the document is not always where the headings are.",
80247
80263
  "name": "HelixOutline",
80248
80264
  "cssProperties": [
80249
80265
  {
@@ -80992,11 +81008,11 @@
80992
81008
  "events": [
80993
81009
  {
80994
81010
  "type": {
80995
- "text": "HelixBeforeActivateEvent"
81011
+ "text": "HelixActivateEvent"
80996
81012
  },
80997
- "description": "The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves.",
80998
- "name": "helix-before-activate",
80999
- "reactProp": "onhelix-before-activate",
81013
+ "description": "The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.",
81014
+ "name": "helix-activate",
81015
+ "reactProp": "onhelix-activate",
81000
81016
  "inheritedFrom": {
81001
81017
  "name": "HelixHeadlessOutline",
81002
81018
  "module": "src/outline/root/outline-root.ts"
@@ -127168,7 +127184,7 @@
127168
127184
  "name": "--tooltip-arrow-size"
127169
127185
  },
127170
127186
  {
127171
- "description": "Blur behind a `glass` bubble.",
127187
+ "description": "Blur behind a `frosted` or `glass` bubble.",
127172
127188
  "name": "--tooltip-backdrop"
127173
127189
  },
127174
127190
  {
@@ -128243,7 +128259,7 @@
128243
128259
  "helix": {
128244
128260
  "category": "overlays",
128245
128261
  "since": "0.1.0",
128246
- "status": "experimental",
128262
+ "status": "stable",
128247
128263
  "documentation": "https://fusion.dev/helix/components/tooltip",
128248
128264
  "aliases": [
128249
128265
  "Hint",
@@ -11,7 +11,7 @@ import '../../tag/index.js';
11
11
  * Input, Color Input and Date Input all take.
12
12
  *
13
13
  * @since 0.1.0
14
- * @status experimental
14
+ * @status stable
15
15
  * @category forms
16
16
  * @aliases Autocomplete, Typeahead, Search select
17
17
  * @documentation https://fusion.dev/helix/components/combobox
@@ -21,7 +21,7 @@ import '../../tag/index.js';
21
21
  * @cssproperty --combobox-border-width - Width of the panel's edge. Follows
22
22
  * `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
23
23
  * theme says otherwise.
24
- * @cssproperty --combobox-control-size - Smallest the text field shrinks to
24
+ * @cssproperty --combobox-control-size - Smallest the text field shrinks to once tags share its line.
25
25
  * @cssproperty --combobox-panel-size - Width of the panel. Follows the field by default.
26
26
  * @cssproperty --combobox-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
27
27
  * floating surface sits over content nobody can predict, so it keeps a lift by default.
@@ -42,7 +42,7 @@ inset: auto;
42
42
  inline-size: auto;
43
43
  block-size: auto;
44
44
 
45
- background-color: var(--helix-color-surface-overlay);
45
+ background-color: var(--drawer-background-color, var(--helix-color-surface-overlay));
46
46
 
47
47
  padding: var(--drawer-padding, var(--helix-space-lg));
48
48
 
@@ -9,7 +9,7 @@ import type { CSSResultGroup } from 'lit';
9
9
  * rest is flat and the movement is what says something happened.
10
10
  *
11
11
  * @since 0.1.0
12
- * @status experimental
12
+ * @status stable
13
13
  * @category overlays
14
14
  * @aliases Sheet, Sidebar, Panel, Off-canvas
15
15
  * @documentation https://fusion.dev/helix/components/drawer
@@ -17,13 +17,11 @@ import type { CSSResultGroup } from 'lit';
17
17
  * @slot - The drawer's content.
18
18
  * @slot header - Content pinned above the scrolling area.
19
19
  *
20
- * @event {HelixBeforeOpenEvent} helix-before-open - Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
21
- *
22
20
  * @csspart content - The scrolling content region.
23
21
  * @csspart header - The header region.
24
22
  * @csspart panel - The sliding panel.
25
23
  *
26
- * @cssproperty --drawer-backdrop - Filter applied behind a `material="glass"` drawer.
24
+ * @cssproperty --drawer-backdrop - Filter applied behind a `frosted` or `glass` drawer.
27
25
  * Follows the theme's material policy; set it to override the strength on one drawer.
28
26
  * @cssproperty --drawer-background-color - Surface behind the panel.
29
27
  * @cssproperty --drawer-border-color - Color of the panel's edge.
@@ -31,7 +29,9 @@ import type { CSSResultGroup } from 'lit';
31
29
  * `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
32
30
  * theme says otherwise.
33
31
  * @cssproperty --drawer-padding - Padding inside the panel.
34
- * @cssproperty --drawer-padding-block-start - Padding above the content, which clears the close control.
32
+ * @cssproperty --drawer-padding-block-start - Padding above the header, which is a step deeper than
33
+ * the other three so the first line clears the window's own edge. Falls back to
34
+ * `--drawer-padding`, so setting that alone governs all four sides.
35
35
  * @cssproperty --drawer-radius - Corner radius on the edges that face the page.
36
36
  * @cssproperty --drawer-scrim - The wash over the page behind the drawer. Set on the host, where a token still resolves: a `var()` written inside `::backdrop` cannot see one.
37
37
  * @cssproperty --drawer-shadow - Lift under the panel. Follows `--helix-shadow-floating`: a
@@ -9,7 +9,7 @@ import type { CSSResultGroup } from 'lit';
9
9
  * lines up with the edge the eye is already following down the list.
10
10
  *
11
11
  * @since 0.1.0
12
- * @status experimental
12
+ * @status stable
13
13
  * @aliases Panel item, Drill row
14
14
  * @documentation https://fusion.dev/helix/components/drilldown
15
15
  *
@@ -15,7 +15,7 @@ import type { CSSResultGroup } from 'lit';
15
15
  * `prefers-reduced-motion` it becomes the instant swap `Menu` does.
16
16
  *
17
17
  * @since 0.1.0
18
- * @status experimental
18
+ * @status stable
19
19
  * @category navigation
20
20
  * @aliases Panel, Nested list, Drill-in
21
21
  * @documentation https://fusion.dev/helix/components/drilldown
@@ -86,7 +86,7 @@ registerElementEvents({
86
86
  'helix-number-input': ['change', 'helix-before-change', 'input'],
87
87
  'helix-object-inspector': ['helix-copy'],
88
88
  'helix-option': ['helix-select'],
89
- 'helix-outline': ['helix-before-activate'],
89
+ 'helix-outline': ['helix-activate'],
90
90
  'helix-pagination': ['helix-navigate'],
91
91
  'helix-pagination-size': ['helix-before-change'],
92
92
  'helix-pin-input': ['change', 'helix-before-change', 'helix-complete', 'input'],
@@ -99,7 +99,7 @@ clip-path: inset(0 100% 100% calc(var(--helix-space-xl) * -1));
99
99
  }
100
100
 
101
101
  :host([variant="full"]) [part="surface"],
102
- :host([data-narrow]) [part="surface"] {
102
+ :host(:state(narrow)) [part="surface"] {
103
103
 
104
104
  backdrop-filter: var(--megamenu-backdrop, none);
105
105
  background-color: var(--megamenu-background-color, var(--helix-color-background));
@@ -125,18 +125,18 @@ position: fixed;
125
125
  }
126
126
 
127
127
  :host([variant="full"]) [part="surface"]:popover-open,
128
- :host([data-narrow]) [part="surface"]:popover-open {
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
133
  :host([variant="full"]) [part="surface"]:popover-open,
134
- :host([data-narrow]) [part="surface"]:popover-open {
134
+ :host(:state(narrow)) [part="surface"]:popover-open {
135
135
  clip-path: inset(0 0 100% 0);
136
136
  }
137
137
  }
138
138
 
139
- :host([data-narrow]) [part="surface"] {
139
+ :host(:state(narrow)) [part="surface"] {
140
140
  grid-auto-flow: row;
141
141
  grid-template-columns: 1fr;
142
142
 
@@ -8,12 +8,13 @@ import type { CSSResultGroup } from 'lit';
8
8
  * Everything about what opens it and what closes it is the base class.
9
9
  *
10
10
  * @since 0.1.0
11
- * @status experimental
11
+ * @status stable
12
12
  * @category navigation
13
13
  * @aliases Mega menu, Flyout, Nav panel
14
14
  * @documentation https://fusion.dev/helix/components/megamenu
15
15
  *
16
- * @cssproperty --megamenu-backdrop - A filter behind the panel, for glass.
16
+ * @cssproperty --megamenu-backdrop - A filter behind the panel, which is `none` until one is
17
+ * asked for: this family carries no `material`, so the pair is two hooks rather than a word.
17
18
  * @cssproperty --megamenu-background-color - The panel's own fill.
18
19
  * @cssproperty --megamenu-border-width - Width of the panel's edge. Follows
19
20
  * `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a
@@ -8,9 +8,11 @@ import type { CSSResultGroup } from 'lit';
8
8
  * the shape a table of contents has taken since printed marginalia: the line
9
9
  * says the list is one thing, and the lit segment says where in it you are.
10
10
  *
11
- * Nesting is the consumer's, expressed as `data-level` on a link. An outline
12
- * that read heading levels itself would have to look at the document, and the
13
- * document is not always where the headings are.
11
+ * Nesting is the consumer's, expressed as `data-level` on a link, and the
12
+ * levels are the heading levels: `2` through `6` each take one more step of
13
+ * `--outline-indent`, and a link with no `data-level` is the top one. An
14
+ * outline that read heading levels itself would have to look at the document,
15
+ * and the document is not always where the headings are.
14
16
  *
15
17
  * @since 0.1.0
16
18
  * @status experimental
@@ -11,14 +11,14 @@ import type { CSSResultGroup } from 'lit';
11
11
  * still points at the trigger after the bubble has slid along to stay in view.
12
12
  *
13
13
  * @since 0.1.0
14
- * @status experimental
14
+ * @status stable
15
15
  * @category overlays
16
16
  * @groups charts
17
17
  * @aliases Hint, Popup label
18
18
  * @documentation https://fusion.dev/helix/components/tooltip
19
19
  *
20
20
  * @cssproperty --tooltip-arrow-size - Size of the point at the bubble's edge.
21
- * @cssproperty --tooltip-backdrop - Blur behind a `glass` bubble.
21
+ * @cssproperty --tooltip-backdrop - Blur behind a `frosted` or `glass` bubble.
22
22
  * @cssproperty --tooltip-background-color - Fill of the bubble.
23
23
  * @cssproperty --tooltip-max-inline-size - Widest the bubble grows before wrapping.
24
24
  */
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.37.0",
4
+ "version": "0.38.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.37.0",
51
- "@fusion.dev/helix-headless": "0.37.0",
52
- "@fusion.dev/helix-styles": "0.37.0"
50
+ "@fusion.dev/helix-core": "0.38.0",
51
+ "@fusion.dev/helix-headless": "0.38.0",
52
+ "@fusion.dev/helix-styles": "0.38.0"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@custom-elements-manifest/analyzer": "^0.11.0",
56
- "@fusion.dev/helix-cem": "0.37.0",
57
- "@fusion.dev/helix-testing": "0.37.0",
56
+ "@fusion.dev/helix-cem": "0.38.0",
57
+ "@fusion.dev/helix-testing": "0.38.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
@@ -4438,7 +4438,16 @@ toggles rather than replaces, and the arrows move without choosing. What
4438
4438
  this adds is the tags, and keeping the panel open between picks.
4439
4439
 
4440
4440
  A comma is therefore not available inside an option's value, which is the
4441
- listbox's contract and not this element's to change. */
4441
+ listbox's contract and not this element's to change.
4442
+
4443
+ **The list is told, and the field is not.** `aria-multiselectable` belongs
4444
+ to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
4445
+ ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
4446
+ reader on the field hears it through `aria-controls`. This element wrote it
4447
+ onto its own `role="combobox"` input as well, which an audit reports as a
4448
+ property the role does not support and no spec here ever asserted: the one
4449
+ that covers this says in as many words that telling the list is what this
4450
+ element is responsible for. */
4442
4451
  multiple?: (HelixCombobox["multiple"]) | undefined;
4443
4452
  /** Text shown while nothing has been chosen. */
4444
4453
  placeholder?: (HelixCombobox["placeholder"]) | undefined;
@@ -4602,7 +4611,16 @@ toggles rather than replaces, and the arrows move without choosing. What
4602
4611
  this adds is the tags, and keeping the panel open between picks.
4603
4612
 
4604
4613
  A comma is therefore not available inside an option's value, which is the
4605
- listbox's contract and not this element's to change. */
4614
+ listbox's contract and not this element's to change.
4615
+
4616
+ **The list is told, and the field is not.** `aria-multiselectable` belongs
4617
+ to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
4618
+ ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
4619
+ reader on the field hears it through `aria-controls`. This element wrote it
4620
+ onto its own `role="combobox"` input as well, which an audit reports as a
4621
+ property the role does not support and no spec here ever asserted: the one
4622
+ that covers this says in as many words that telling the list is what this
4623
+ element is responsible for. */
4606
4624
  "prop:multiple"?: (HelixCombobox["multiple"]) | undefined;
4607
4625
  /** Text shown while nothing has been chosen. */
4608
4626
  "prop:placeholder"?: (HelixCombobox["placeholder"]) | undefined;
@@ -6939,12 +6957,12 @@ the circle is not drawn. */
6939
6957
 
6940
6958
  /** `HelixDrawer` component event */
6941
6959
  export type HelixDrawerElementEvent<E = Event> = TypedEvent<HelixDrawer, E>;
6942
- /** `helix-before-open` event type */
6943
- export type HelixDrawerHelixBeforeOpenElementEvent =
6944
- HelixDrawerElementEvent<HelixBeforeOpenEvent>;
6945
6960
  /** `helix-before-close` event type */
6946
6961
  export type HelixDrawerHelixBeforeCloseElementEvent =
6947
6962
  HelixDrawerElementEvent<HelixBeforeCloseEvent>;
6963
+ /** `helix-before-open` event type */
6964
+ export type HelixDrawerHelixBeforeOpenElementEvent =
6965
+ HelixDrawerElementEvent<HelixBeforeOpenEvent>;
6948
6966
 
6949
6967
  export type HelixDrawerProps = {
6950
6968
  /** Whether the panel is glass rather than opaque.
@@ -7038,12 +7056,12 @@ Held here as well as on the element, so a value set before the first render
7038
7056
  survives to it and a consumer reading one back gets what they wrote. */
7039
7057
  returnValue?: (HelixDrawer["returnValue"]) | undefined;
7040
7058
 
7041
- /** Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
7042
- "onhelix-before-open"?: ((e: HelixDrawerHelixBeforeOpenElementEvent) => void) | undefined;
7043
7059
  /** Relayed, because the platform's own does not escape. */
7044
7060
  onclose?: ((e: HelixDrawerElementEvent) => void) | undefined;
7045
7061
  /** Fired before the panel closes, and cancelable. */
7046
7062
  "onhelix-before-close"?: ((e: HelixDrawerHelixBeforeCloseElementEvent) => void) | undefined;
7063
+ /** Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves. */
7064
+ "onhelix-before-open"?: ((e: HelixDrawerHelixBeforeOpenElementEvent) => void) | undefined;
7047
7065
  /** Says the state moved, carrying `newState` and `oldState`. */
7048
7066
  ontoggle?: ((e: HelixDrawerElementEvent) => void) | undefined;
7049
7067
  };
@@ -7139,14 +7157,14 @@ alone, and `Dialog`'s `close()` is the one that takes the value directly.
7139
7157
  Held here as well as on the element, so a value set before the first render
7140
7158
  survives to it and a consumer reading one back gets what they wrote. */
7141
7159
  "prop:returnValue"?: (HelixDrawer["returnValue"]) | undefined;
7142
- /** Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
7143
- "on:helix-before-open"?: ((e: HelixDrawerHelixBeforeOpenElementEvent) => void) | undefined;
7144
7160
  /** Relayed, because the platform's own does not escape. */
7145
7161
  "on:close"?: ((e: HelixDrawerElementEvent) => void) | undefined;
7146
7162
  /** Fired before the panel closes, and cancelable. */
7147
7163
  "on:helix-before-close"?: ((
7148
7164
  e: HelixDrawerHelixBeforeCloseElementEvent,
7149
7165
  ) => void) | undefined;
7166
+ /** Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves. */
7167
+ "on:helix-before-open"?: ((e: HelixDrawerHelixBeforeOpenElementEvent) => void) | undefined;
7150
7168
  /** Says the state moved, carrying `newState` and `oldState`. */
7151
7169
  "on:toggle"?: ((e: HelixDrawerElementEvent) => void) | undefined;
7152
7170
 
@@ -10332,8 +10350,16 @@ fits.
10332
10350
  a band is not a question of paint: a band is not placed against the trigger,
10333
10351
  so the controller has to be told not to measure, and that decision is here
10334
10352
  whatever the stylesheet says. Writing the width in both places would be one
10335
- number in two languages, drifting the first time either moved. This sets
10336
- `data-narrow` on the host and the stylesheet arranges itself off that. */
10353
+ number in two languages, drifting the first time either moved. This records
10354
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
10355
+
10356
+ **A custom state and never `data-narrow`, which is what it was.** The width
10357
+ is read in `connectedCallback`, so on a phone this is true on the very first
10358
+ update: an attribute written there is markup a consumer's server never sent,
10359
+ which React reports as a mismatch and answers by rebuilding the subtree. The
10360
+ narrow exception the server specs describe covers a mirror that can only
10361
+ become true long after hydration, and a viewport measured before the first
10362
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
10337
10363
  "full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
10338
10364
  /** The width, in pixels, under which a card becomes a band. Zero never does.
10339
10365
 
@@ -10348,8 +10374,16 @@ fits.
10348
10374
  a band is not a question of paint: a band is not placed against the trigger,
10349
10375
  so the controller has to be told not to measure, and that decision is here
10350
10376
  whatever the stylesheet says. Writing the width in both places would be one
10351
- number in two languages, drifting the first time either moved. This sets
10352
- `data-narrow` on the host and the stylesheet arranges itself off that. */
10377
+ number in two languages, drifting the first time either moved. This records
10378
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
10379
+
10380
+ **A custom state and never `data-narrow`, which is what it was.** The width
10381
+ is read in `connectedCallback`, so on a phone this is true on the very first
10382
+ update: an attribute written there is markup a consumer's server never sent,
10383
+ which React reports as a mismatch and answers by rebuilding the subtree. The
10384
+ narrow exception the server specs describe covers a mirror that can only
10385
+ become true long after hydration, and a viewport measured before the first
10386
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
10353
10387
  fullBelow?: (HelixMegamenu["fullBelow"]) | undefined;
10354
10388
  /** The section's name, which names the default trigger and the panel. */
10355
10389
  label?: (HelixMegamenu["label"]) | undefined;
@@ -10423,8 +10457,16 @@ fits.
10423
10457
  a band is not a question of paint: a band is not placed against the trigger,
10424
10458
  so the controller has to be told not to measure, and that decision is here
10425
10459
  whatever the stylesheet says. Writing the width in both places would be one
10426
- number in two languages, drifting the first time either moved. This sets
10427
- `data-narrow` on the host and the stylesheet arranges itself off that. */
10460
+ number in two languages, drifting the first time either moved. This records
10461
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
10462
+
10463
+ **A custom state and never `data-narrow`, which is what it was.** The width
10464
+ is read in `connectedCallback`, so on a phone this is true on the very first
10465
+ update: an attribute written there is markup a consumer's server never sent,
10466
+ which React reports as a mismatch and answers by rebuilding the subtree. The
10467
+ narrow exception the server specs describe covers a mirror that can only
10468
+ become true long after hydration, and a viewport measured before the first
10469
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
10428
10470
  "attr:full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
10429
10471
  /** The width, in pixels, under which a card becomes a band. Zero never does.
10430
10472
 
@@ -10439,8 +10481,16 @@ fits.
10439
10481
  a band is not a question of paint: a band is not placed against the trigger,
10440
10482
  so the controller has to be told not to measure, and that decision is here
10441
10483
  whatever the stylesheet says. Writing the width in both places would be one
10442
- number in two languages, drifting the first time either moved. This sets
10443
- `data-narrow` on the host and the stylesheet arranges itself off that. */
10484
+ number in two languages, drifting the first time either moved. This records
10485
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
10486
+
10487
+ **A custom state and never `data-narrow`, which is what it was.** The width
10488
+ is read in `connectedCallback`, so on a phone this is true on the very first
10489
+ update: an attribute written there is markup a consumer's server never sent,
10490
+ which React reports as a mismatch and answers by rebuilding the subtree. The
10491
+ narrow exception the server specs describe covers a mirror that can only
10492
+ become true long after hydration, and a viewport measured before the first
10493
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
10444
10494
  "prop:fullBelow"?: (HelixMegamenu["fullBelow"]) | undefined;
10445
10495
  /** The section's name, which names the default trigger and the panel. */
10446
10496
  "prop:label"?: (HelixMegamenu["label"]) | undefined;
@@ -11977,9 +12027,9 @@ markup. */
11977
12027
 
11978
12028
  /** `HelixOutline` component event */
11979
12029
  export type HelixOutlineElementEvent<E = Event> = TypedEvent<HelixOutline, E>;
11980
- /** `helix-before-activate` event type */
11981
- export type HelixOutlineHelixBeforeActivateElementEvent =
11982
- HelixOutlineElementEvent<HelixBeforeActivateEvent>;
12030
+ /** `helix-activate` event type */
12031
+ export type HelixOutlineHelixActivateElementEvent =
12032
+ HelixOutlineElementEvent<HelixActivateEvent>;
11983
12033
 
11984
12034
  export type HelixOutlineProps = {
11985
12035
  /** How a click on one of these links travels to its section.
@@ -12012,10 +12062,8 @@ a little more: without it the current section changes as a heading slides
12012
12062
  under the chrome rather than as it reaches the top of what can be seen. */
12013
12063
  offset?: (HelixOutline["offset"]) | undefined;
12014
12064
 
12015
- /** The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves. */
12016
- "onhelix-before-activate"?: ((
12017
- e: HelixOutlineHelixBeforeActivateElementEvent,
12018
- ) => void) | undefined;
12065
+ /** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
12066
+ "onhelix-activate"?: ((e: HelixOutlineHelixActivateElementEvent) => void) | undefined;
12019
12067
  };
12020
12068
 
12021
12069
  export type HelixOutlineSolidJsProps = {
@@ -12048,10 +12096,8 @@ The reading line. A page with a sticky masthead sets this to its height, or
12048
12096
  a little more: without it the current section changes as a heading slides
12049
12097
  under the chrome rather than as it reaches the top of what can be seen. */
12050
12098
  "prop:offset"?: (HelixOutline["offset"]) | undefined;
12051
- /** The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves. */
12052
- "on:helix-before-activate"?: ((
12053
- e: HelixOutlineHelixBeforeActivateElementEvent,
12054
- ) => void) | undefined;
12099
+ /** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
12100
+ "on:helix-activate"?: ((e: HelixOutlineHelixActivateElementEvent) => void) | undefined;
12055
12101
 
12056
12102
  /** Set the innerHTML of the element */
12057
12103
  innerHTML?: (string) | undefined;
@@ -23647,6 +23693,15 @@ export type CustomElements = {
23647
23693
  *
23648
23694
  * A comma is therefore not available inside an option's value, which is the
23649
23695
  * listbox's contract and not this element's to change.
23696
+ *
23697
+ * **The list is told, and the field is not.** `aria-multiselectable` belongs
23698
+ * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
23699
+ * ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
23700
+ * reader on the field hears it through `aria-controls`. This element wrote it
23701
+ * onto its own `role="combobox"` input as well, which an audit reports as a
23702
+ * property the role does not support and no spec here ever asserted: the one
23703
+ * that covers this says in as many words that telling the list is what this
23704
+ * element is responsible for.
23650
23705
  * - `placeholder`: Text shown while nothing has been chosen.
23651
23706
  * - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
23652
23707
  * - `suggest`: Whether the field finishes the word as it is typed.
@@ -23801,7 +23856,7 @@ export type CustomElements = {
23801
23856
  * - `--combobox-background-color`: Fill behind the field. (default: `undefined`)
23802
23857
  * - `--combobox-border-color`: Color of the panel's edge. (default: `undefined`)
23803
23858
  * - `--combobox-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
23804
- * - `--combobox-control-size`: Smallest the text field shrinks to (default: `undefined`)
23859
+ * - `--combobox-control-size`: Smallest the text field shrinks to once tags share its line. (default: `undefined`)
23805
23860
  * - `--combobox-panel-size`: Width of the panel. Follows the field by default. (default: `undefined`)
23806
23861
  * - `--combobox-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
23807
23862
  *
@@ -25763,9 +25818,9 @@ export type CustomElements = {
25763
25818
  *
25764
25819
  * Events that will be emitted by the component.
25765
25820
  *
25766
- * - `helix-before-open`: Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
25767
25821
  * - `close`: Relayed, because the platform's own does not escape.
25768
25822
  * - `helix-before-close`: Fired before the panel closes, and cancelable.
25823
+ * - `helix-before-open`: Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves.
25769
25824
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
25770
25825
  *
25771
25826
  * ## Slots
@@ -25792,12 +25847,12 @@ export type CustomElements = {
25792
25847
  *
25793
25848
  * CSS variables available for styling the component.
25794
25849
  *
25795
- * - `--drawer-backdrop`: Filter applied behind a `material="glass"` drawer. Follows the theme's material policy; set it to override the strength on one drawer. (default: `undefined`)
25850
+ * - `--drawer-backdrop`: Filter applied behind a `frosted` or `glass` drawer. Follows the theme's material policy; set it to override the strength on one drawer. (default: `undefined`)
25796
25851
  * - `--drawer-background-color`: Surface behind the panel. (default: `undefined`)
25797
25852
  * - `--drawer-border-color`: Color of the panel's edge. (default: `undefined`)
25798
25853
  * - `--drawer-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
25799
25854
  * - `--drawer-padding`: Padding inside the panel. (default: `undefined`)
25800
- * - `--drawer-padding-block-start`: Padding above the content, which clears the close control. (default: `undefined`)
25855
+ * - `--drawer-padding-block-start`: Padding above the header, which is a step deeper than the other three so the first line clears the window's own edge. Falls back to `--drawer-padding`, so setting that alone governs all four sides. (default: `undefined`)
25801
25856
  * - `--drawer-radius`: Corner radius on the edges that face the page. (default: `undefined`)
25802
25857
  * - `--drawer-scrim`: The wash over the page behind the drawer. Set on the host, where a token still resolves: a `var()` written inside `::backdrop` cannot see one. (default: `undefined`)
25803
25858
  * - `--drawer-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
@@ -26008,6 +26063,7 @@ export type CustomElements = {
26008
26063
  *
26009
26064
  * These can be used to apply styling when a component is in a given state.
26010
26065
  *
26066
+ * - `drilled`: While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
26011
26067
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
26012
26068
  */
26013
26069
  "helix-drilldown": Partial<
@@ -29059,8 +29115,16 @@ export type CustomElements = {
29059
29115
  * a band is not a question of paint: a band is not placed against the trigger,
29060
29116
  * so the controller has to be told not to measure, and that decision is here
29061
29117
  * whatever the stylesheet says. Writing the width in both places would be one
29062
- * number in two languages, drifting the first time either moved. This sets
29063
- * `data-narrow` on the host and the stylesheet arranges itself off that.
29118
+ * number in two languages, drifting the first time either moved. This records
29119
+ * `:state(narrow)` on the host and the stylesheet arranges itself off that.
29120
+ *
29121
+ * **A custom state and never `data-narrow`, which is what it was.** The width
29122
+ * is read in `connectedCallback`, so on a phone this is true on the very first
29123
+ * update: an attribute written there is markup a consumer's server never sent,
29124
+ * which React reports as a mismatch and answers by rebuilding the subtree. The
29125
+ * narrow exception the server specs describe covers a mirror that can only
29126
+ * become true long after hydration, and a viewport measured before the first
29127
+ * paint is the opposite case. See `MixinControllerOpen` on `open`.
29064
29128
  * - `label`: The section's name, which names the default trigger and the panel.
29065
29129
  * - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
29066
29130
  *
@@ -29134,7 +29198,7 @@ export type CustomElements = {
29134
29198
  *
29135
29199
  * CSS variables available for styling the component.
29136
29200
  *
29137
- * - `--megamenu-backdrop`: A filter behind the panel, for glass. (default: `undefined`)
29201
+ * - `--megamenu-backdrop`: A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word. (default: `undefined`)
29138
29202
  * - `--megamenu-background-color`: The panel's own fill. (default: `undefined`)
29139
29203
  * - `--megamenu-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
29140
29204
  * - `--megamenu-column-size`: The narrowest a column goes before the grid wraps. (default: `undefined`)
@@ -29154,6 +29218,7 @@ export type CustomElements = {
29154
29218
  *
29155
29219
  * These can be used to apply styling when a component is in a given state.
29156
29220
  *
29221
+ * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
29157
29222
  * - `open`: While the panel is open, which is when the trigger reads as current.
29158
29223
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
29159
29224
  */
@@ -30819,9 +30884,11 @@ export type CustomElements = {
30819
30884
  * the shape a table of contents has taken since printed marginalia: the line
30820
30885
  * says the list is one thing, and the lit segment says where in it you are.
30821
30886
  *
30822
- * Nesting is the consumer's, expressed as `data-level` on a link. An outline
30823
- * that read heading levels itself would have to look at the document, and the
30824
- * document is not always where the headings are.
30887
+ * Nesting is the consumer's, expressed as `data-level` on a link, and the
30888
+ * levels are the heading levels: `2` through `6` each take one more step of
30889
+ * `--outline-indent`, and a link with no `data-level` is the top one. An
30890
+ * outline that read heading levels itself would have to look at the document,
30891
+ * and the document is not always where the headings are.
30825
30892
  *
30826
30893
  * ## Attributes & Properties
30827
30894
  *
@@ -30886,7 +30953,7 @@ export type CustomElements = {
30886
30953
  *
30887
30954
  * Events that will be emitted by the component.
30888
30955
  *
30889
- * - `helix-before-activate`: The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves.
30956
+ * - `helix-activate`: The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.
30890
30957
  *
30891
30958
  * ## Slots
30892
30959
  *
@@ -37337,7 +37404,7 @@ export type CustomElements = {
37337
37404
  * CSS variables available for styling the component.
37338
37405
  *
37339
37406
  * - `--tooltip-arrow-size`: Size of the point at the bubble's edge. (default: `undefined`)
37340
- * - `--tooltip-backdrop`: Blur behind a `glass` bubble. (default: `undefined`)
37407
+ * - `--tooltip-backdrop`: Blur behind a `frosted` or `glass` bubble. (default: `undefined`)
37341
37408
  * - `--tooltip-background-color`: Fill of the bubble. (default: `undefined`)
37342
37409
  * - `--tooltip-max-inline-size`: Widest the bubble grows before wrapping. (default: `undefined`)
37343
37410
  *
@@ -42534,6 +42601,15 @@ export type CustomElementsSolidJs = {
42534
42601
  *
42535
42602
  * A comma is therefore not available inside an option's value, which is the
42536
42603
  * listbox's contract and not this element's to change.
42604
+ *
42605
+ * **The list is told, and the field is not.** `aria-multiselectable` belongs
42606
+ * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
42607
+ * ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
42608
+ * reader on the field hears it through `aria-controls`. This element wrote it
42609
+ * onto its own `role="combobox"` input as well, which an audit reports as a
42610
+ * property the role does not support and no spec here ever asserted: the one
42611
+ * that covers this says in as many words that telling the list is what this
42612
+ * element is responsible for.
42537
42613
  * - `placeholder`: Text shown while nothing has been chosen.
42538
42614
  * - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
42539
42615
  * - `suggest`: Whether the field finishes the word as it is typed.
@@ -42688,7 +42764,7 @@ export type CustomElementsSolidJs = {
42688
42764
  * - `--combobox-background-color`: Fill behind the field. (default: `undefined`)
42689
42765
  * - `--combobox-border-color`: Color of the panel's edge. (default: `undefined`)
42690
42766
  * - `--combobox-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
42691
- * - `--combobox-control-size`: Smallest the text field shrinks to (default: `undefined`)
42767
+ * - `--combobox-control-size`: Smallest the text field shrinks to once tags share its line. (default: `undefined`)
42692
42768
  * - `--combobox-panel-size`: Width of the panel. Follows the field by default. (default: `undefined`)
42693
42769
  * - `--combobox-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
42694
42770
  *
@@ -44681,9 +44757,9 @@ export type CustomElementsSolidJs = {
44681
44757
  *
44682
44758
  * Events that will be emitted by the component.
44683
44759
  *
44684
- * - `helix-before-open`: Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
44685
44760
  * - `close`: Relayed, because the platform's own does not escape.
44686
44761
  * - `helix-before-close`: Fired before the panel closes, and cancelable.
44762
+ * - `helix-before-open`: Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves.
44687
44763
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
44688
44764
  *
44689
44765
  * ## Slots
@@ -44710,12 +44786,12 @@ export type CustomElementsSolidJs = {
44710
44786
  *
44711
44787
  * CSS variables available for styling the component.
44712
44788
  *
44713
- * - `--drawer-backdrop`: Filter applied behind a `material="glass"` drawer. Follows the theme's material policy; set it to override the strength on one drawer. (default: `undefined`)
44789
+ * - `--drawer-backdrop`: Filter applied behind a `frosted` or `glass` drawer. Follows the theme's material policy; set it to override the strength on one drawer. (default: `undefined`)
44714
44790
  * - `--drawer-background-color`: Surface behind the panel. (default: `undefined`)
44715
44791
  * - `--drawer-border-color`: Color of the panel's edge. (default: `undefined`)
44716
44792
  * - `--drawer-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
44717
44793
  * - `--drawer-padding`: Padding inside the panel. (default: `undefined`)
44718
- * - `--drawer-padding-block-start`: Padding above the content, which clears the close control. (default: `undefined`)
44794
+ * - `--drawer-padding-block-start`: Padding above the header, which is a step deeper than the other three so the first line clears the window's own edge. Falls back to `--drawer-padding`, so setting that alone governs all four sides. (default: `undefined`)
44719
44795
  * - `--drawer-radius`: Corner radius on the edges that face the page. (default: `undefined`)
44720
44796
  * - `--drawer-scrim`: The wash over the page behind the drawer. Set on the host, where a token still resolves: a `var()` written inside `::backdrop` cannot see one. (default: `undefined`)
44721
44797
  * - `--drawer-shadow`: Lift under the panel. Follows `--helix-shadow-floating`: a floating surface sits over content nobody can predict, so it keeps a lift by default. (default: `undefined`)
@@ -44932,6 +45008,7 @@ export type CustomElementsSolidJs = {
44932
45008
  *
44933
45009
  * These can be used to apply styling when a component is in a given state.
44934
45010
  *
45011
+ * - `drilled`: While a row's page is showing rather than the top one, so a frame around this can answer the depth it is at.
44935
45012
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
44936
45013
  */
44937
45014
  "helix-drilldown": Partial<
@@ -48053,8 +48130,16 @@ export type CustomElementsSolidJs = {
48053
48130
  * a band is not a question of paint: a band is not placed against the trigger,
48054
48131
  * so the controller has to be told not to measure, and that decision is here
48055
48132
  * whatever the stylesheet says. Writing the width in both places would be one
48056
- * number in two languages, drifting the first time either moved. This sets
48057
- * `data-narrow` on the host and the stylesheet arranges itself off that.
48133
+ * number in two languages, drifting the first time either moved. This records
48134
+ * `:state(narrow)` on the host and the stylesheet arranges itself off that.
48135
+ *
48136
+ * **A custom state and never `data-narrow`, which is what it was.** The width
48137
+ * is read in `connectedCallback`, so on a phone this is true on the very first
48138
+ * update: an attribute written there is markup a consumer's server never sent,
48139
+ * which React reports as a mismatch and answers by rebuilding the subtree. The
48140
+ * narrow exception the server specs describe covers a mirror that can only
48141
+ * become true long after hydration, and a viewport measured before the first
48142
+ * paint is the opposite case. See `MixinControllerOpen` on `open`.
48058
48143
  * - `label`: The section's name, which names the default trigger and the panel.
48059
48144
  * - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
48060
48145
  *
@@ -48128,7 +48213,7 @@ export type CustomElementsSolidJs = {
48128
48213
  *
48129
48214
  * CSS variables available for styling the component.
48130
48215
  *
48131
- * - `--megamenu-backdrop`: A filter behind the panel, for glass. (default: `undefined`)
48216
+ * - `--megamenu-backdrop`: A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word. (default: `undefined`)
48132
48217
  * - `--megamenu-background-color`: The panel's own fill. (default: `undefined`)
48133
48218
  * - `--megamenu-border-width`: Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. (default: `undefined`)
48134
48219
  * - `--megamenu-column-size`: The narrowest a column goes before the grid wraps. (default: `undefined`)
@@ -48148,6 +48233,7 @@ export type CustomElementsSolidJs = {
48148
48233
  *
48149
48234
  * These can be used to apply styling when a component is in a given state.
48150
48235
  *
48236
+ * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
48151
48237
  * - `open`: While the panel is open, which is when the trigger reads as current.
48152
48238
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
48153
48239
  */
@@ -49852,9 +49938,11 @@ export type CustomElementsSolidJs = {
49852
49938
  * the shape a table of contents has taken since printed marginalia: the line
49853
49939
  * says the list is one thing, and the lit segment says where in it you are.
49854
49940
  *
49855
- * Nesting is the consumer's, expressed as `data-level` on a link. An outline
49856
- * that read heading levels itself would have to look at the document, and the
49857
- * document is not always where the headings are.
49941
+ * Nesting is the consumer's, expressed as `data-level` on a link, and the
49942
+ * levels are the heading levels: `2` through `6` each take one more step of
49943
+ * `--outline-indent`, and a link with no `data-level` is the top one. An
49944
+ * outline that read heading levels itself would have to look at the document,
49945
+ * and the document is not always where the headings are.
49858
49946
  *
49859
49947
  * ## Attributes & Properties
49860
49948
  *
@@ -49919,7 +50007,7 @@ export type CustomElementsSolidJs = {
49919
50007
  *
49920
50008
  * Events that will be emitted by the component.
49921
50009
  *
49922
- * - `helix-before-activate`: The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves.
50010
+ * - `helix-activate`: The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take.
49923
50011
  *
49924
50012
  * ## Slots
49925
50013
  *
@@ -56530,7 +56618,7 @@ export type CustomElementsSolidJs = {
56530
56618
  * CSS variables available for styling the component.
56531
56619
  *
56532
56620
  * - `--tooltip-arrow-size`: Size of the point at the bubble's edge. (default: `undefined`)
56533
- * - `--tooltip-backdrop`: Blur behind a `glass` bubble. (default: `undefined`)
56621
+ * - `--tooltip-backdrop`: Blur behind a `frosted` or `glass` bubble. (default: `undefined`)
56534
56622
  * - `--tooltip-background-color`: Fill of the bubble. (default: `undefined`)
56535
56623
  * - `--tooltip-max-inline-size`: Widest the bubble grows before wrapping. (default: `undefined`)
56536
56624
  *
@@ -58095,7 +58183,7 @@ export type CustomCssProperties = {
58095
58183
  "--combobox-border-color"?: (string) | undefined;
58096
58184
  /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. */
58097
58185
  "--combobox-border-width"?: (string) | undefined;
58098
- /** Smallest the text field shrinks to */
58186
+ /** Smallest the text field shrinks to once tags share its line. */
58099
58187
  "--combobox-control-size"?: (string) | undefined;
58100
58188
  /** Width of the panel. Follows the field by default. */
58101
58189
  "--combobox-panel-size"?: (string) | undefined;
@@ -58191,7 +58279,7 @@ export type CustomCssProperties = {
58191
58279
  "--donut-chart-track-color"?: (string) | undefined;
58192
58280
  /** How thick the ring is drawn, derived from `hole`. */
58193
58281
  "--donut-chart-stroke"?: (string) | undefined;
58194
- /** Filter applied behind a `material="glass"` drawer. Follows the theme's material policy; set it to override the strength on one drawer. */
58282
+ /** Filter applied behind a `frosted` or `glass` drawer. Follows the theme's material policy; set it to override the strength on one drawer. */
58195
58283
  "--drawer-backdrop"?: (string) | undefined;
58196
58284
  /** Surface behind the panel. */
58197
58285
  "--drawer-background-color"?: (string) | undefined;
@@ -58201,7 +58289,7 @@ export type CustomCssProperties = {
58201
58289
  "--drawer-border-width"?: (string) | undefined;
58202
58290
  /** Padding inside the panel. */
58203
58291
  "--drawer-padding"?: (string) | undefined;
58204
- /** Padding above the content, which clears the close control. */
58292
+ /** Padding above the header, which is a step deeper than the other three so the first line clears the window's own edge. Falls back to `--drawer-padding`, so setting that alone governs all four sides. */
58205
58293
  "--drawer-padding-block-start"?: (string) | undefined;
58206
58294
  /** Corner radius on the edges that face the page. */
58207
58295
  "--drawer-radius"?: (string) | undefined;
@@ -58359,7 +58447,7 @@ export type CustomCssProperties = {
58359
58447
  "--loader-size"?: (string) | undefined;
58360
58448
  /** Color of the circle behind it. */
58361
58449
  "--loader-track-color"?: (string) | undefined;
58362
- /** A filter behind the panel, for glass. */
58450
+ /** A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word. */
58363
58451
  "--megamenu-backdrop"?: (string) | undefined;
58364
58452
  /** The panel's own fill. */
58365
58453
  "--megamenu-background-color"?: (string) | undefined;
@@ -58795,7 +58883,7 @@ export type CustomCssProperties = {
58795
58883
  "--toolbar-gap"?: (string) | undefined;
58796
58884
  /** Size of the point at the bubble's edge. */
58797
58885
  "--tooltip-arrow-size"?: (string) | undefined;
58798
- /** Blur behind a `glass` bubble. */
58886
+ /** Blur behind a `frosted` or `glass` bubble. */
58799
58887
  "--tooltip-backdrop"?: (string) | undefined;
58800
58888
  /** Fill of the bubble. */
58801
58889
  "--tooltip-background-color"?: (string) | undefined;
package/types/vue.d.ts CHANGED
@@ -160,7 +160,7 @@ import type {
160
160
  HelixResizeEvent,
161
161
  HelixShortcutEvent,
162
162
  HelixReadEvent,
163
- HelixBeforeActivateEvent,
163
+ HelixActivateEvent,
164
164
  HelixCompleteEvent,
165
165
  HelixConsoleEvent,
166
166
  HelixBeforeEditEvent,
@@ -169,7 +169,7 @@ import type {
169
169
  HelixCaretEvent,
170
170
  HelixBeforeCollapseEvent,
171
171
  HelixBeforeResizeEvent,
172
- HelixActivateEvent,
172
+ HelixBeforeActivateEvent,
173
173
  HelixTourAskEvent,
174
174
  HelixNextEvent,
175
175
  HelixPreviousEvent,
@@ -2326,7 +2326,16 @@ toggles rather than replaces, and the arrows move without choosing. What
2326
2326
  this adds is the tags, and keeping the panel open between picks.
2327
2327
 
2328
2328
  A comma is therefore not available inside an option's value, which is the
2329
- listbox's contract and not this element's to change. */
2329
+ listbox's contract and not this element's to change.
2330
+
2331
+ **The list is told, and the field is not.** `aria-multiselectable` belongs
2332
+ to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
2333
+ ARIA 1.2; the list sets it on itself through `ElementInternals`, where a
2334
+ reader on the field hears it through `aria-controls`. This element wrote it
2335
+ onto its own `role="combobox"` input as well, which an audit reports as a
2336
+ property the role does not support and no spec here ever asserted: the one
2337
+ that covers this says in as many words that telling the list is what this
2338
+ element is responsible for. */
2330
2339
  multiple?: (HelixCombobox["multiple"]) | undefined;
2331
2340
  /** Text shown while nothing has been chosen. */
2332
2341
  placeholder?: (HelixCombobox["placeholder"]) | undefined;
@@ -3552,12 +3561,12 @@ export type HelixDonutChartVueEvents = {};
3552
3561
 
3553
3562
  /** `HelixDrawer` component event */
3554
3563
  export type HelixDrawerElementEvent<E = Event> = TypedEvent<HelixDrawer, E>;
3555
- /** `helix-before-open` event type */
3556
- export type HelixDrawerHelixBeforeOpenElementEvent =
3557
- HelixDrawerElementEvent<HelixBeforeOpenEvent>;
3558
3564
  /** `helix-before-close` event type */
3559
3565
  export type HelixDrawerHelixBeforeCloseElementEvent =
3560
3566
  HelixDrawerElementEvent<HelixBeforeCloseEvent>;
3567
+ /** `helix-before-open` event type */
3568
+ export type HelixDrawerHelixBeforeOpenElementEvent =
3569
+ HelixDrawerElementEvent<HelixBeforeOpenEvent>;
3561
3570
 
3562
3571
  export type HelixDrawerVueProps = {
3563
3572
  /** Whether the panel is glass rather than opaque.
@@ -3653,12 +3662,12 @@ survives to it and a consumer reading one back gets what they wrote. */
3653
3662
  };
3654
3663
 
3655
3664
  export type HelixDrawerVueEvents = {
3656
- /** Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves. */
3657
- "helix-before-open": HelixDrawerHelixBeforeOpenElementEvent;
3658
3665
  /** Relayed, because the platform's own does not escape. */
3659
3666
  close: HelixDrawerElementEvent;
3660
3667
  /** Fired before the panel closes, and cancelable. */
3661
3668
  "helix-before-close": HelixDrawerHelixBeforeCloseElementEvent;
3669
+ /** Fired before the panel opens. Cancelable: refusing it takes the decision and nothing moves. */
3670
+ "helix-before-open": HelixDrawerHelixBeforeOpenElementEvent;
3662
3671
  /** Says the state moved, carrying `newState` and `oldState`. */
3663
3672
  toggle: HelixDrawerElementEvent;
3664
3673
  };
@@ -5302,8 +5311,16 @@ fits.
5302
5311
  a band is not a question of paint: a band is not placed against the trigger,
5303
5312
  so the controller has to be told not to measure, and that decision is here
5304
5313
  whatever the stylesheet says. Writing the width in both places would be one
5305
- number in two languages, drifting the first time either moved. This sets
5306
- `data-narrow` on the host and the stylesheet arranges itself off that. */
5314
+ number in two languages, drifting the first time either moved. This records
5315
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
5316
+
5317
+ **A custom state and never `data-narrow`, which is what it was.** The width
5318
+ is read in `connectedCallback`, so on a phone this is true on the very first
5319
+ update: an attribute written there is markup a consumer's server never sent,
5320
+ which React reports as a mismatch and answers by rebuilding the subtree. The
5321
+ narrow exception the server specs describe covers a mirror that can only
5322
+ become true long after hydration, and a viewport measured before the first
5323
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
5307
5324
  "full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
5308
5325
  /** The width, in pixels, under which a card becomes a band. Zero never does.
5309
5326
 
@@ -5318,8 +5335,16 @@ fits.
5318
5335
  a band is not a question of paint: a band is not placed against the trigger,
5319
5336
  so the controller has to be told not to measure, and that decision is here
5320
5337
  whatever the stylesheet says. Writing the width in both places would be one
5321
- number in two languages, drifting the first time either moved. This sets
5322
- `data-narrow` on the host and the stylesheet arranges itself off that. */
5338
+ number in two languages, drifting the first time either moved. This records
5339
+ `:state(narrow)` on the host and the stylesheet arranges itself off that.
5340
+
5341
+ **A custom state and never `data-narrow`, which is what it was.** The width
5342
+ is read in `connectedCallback`, so on a phone this is true on the very first
5343
+ update: an attribute written there is markup a consumer's server never sent,
5344
+ which React reports as a mismatch and answers by rebuilding the subtree. The
5345
+ narrow exception the server specs describe covers a mirror that can only
5346
+ become true long after hydration, and a viewport measured before the first
5347
+ paint is the opposite case. See `MixinControllerOpen` on `open`. */
5323
5348
  fullBelow?: (HelixMegamenu["fullBelow"]) | undefined;
5324
5349
  /** The section's name, which names the default trigger and the panel. */
5325
5350
  label?: (HelixMegamenu["label"]) | undefined;
@@ -6138,9 +6163,9 @@ export type HelixOrbVueEvents = {};
6138
6163
 
6139
6164
  /** `HelixOutline` component event */
6140
6165
  export type HelixOutlineElementEvent<E = Event> = TypedEvent<HelixOutline, E>;
6141
- /** `helix-before-activate` event type */
6142
- export type HelixOutlineHelixBeforeActivateElementEvent =
6143
- HelixOutlineElementEvent<HelixBeforeActivateEvent>;
6166
+ /** `helix-activate` event type */
6167
+ export type HelixOutlineHelixActivateElementEvent =
6168
+ HelixOutlineElementEvent<HelixActivateEvent>;
6144
6169
 
6145
6170
  export type HelixOutlineVueProps = {
6146
6171
  /** How a click on one of these links travels to its section.
@@ -6175,8 +6200,8 @@ under the chrome rather than as it reaches the top of what can be seen. */
6175
6200
  };
6176
6201
 
6177
6202
  export type HelixOutlineVueEvents = {
6178
- /** The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves. */
6179
- "helix-before-activate": HelixOutlineHelixBeforeActivateElementEvent;
6203
+ /** The section being read has changed, carrying its id as the value. An announcement: it is read off where the page is scrolled to, so there is no decision here to take. */
6204
+ "helix-activate": HelixOutlineHelixActivateElementEvent;
6180
6205
  };
6181
6206
 
6182
6207
  /** `HelixPagination` component event */
@@ -10415,7 +10440,7 @@ export type CustomCssProperties = {
10415
10440
  "--combobox-border-color"?: (string) | undefined;
10416
10441
  /** Width of the panel's edge. Follows `--helix-border-floating`, which is `0`, so the panel is told apart by its lift unless a theme says otherwise. */
10417
10442
  "--combobox-border-width"?: (string) | undefined;
10418
- /** Smallest the text field shrinks to */
10443
+ /** Smallest the text field shrinks to once tags share its line. */
10419
10444
  "--combobox-control-size"?: (string) | undefined;
10420
10445
  /** Width of the panel. Follows the field by default. */
10421
10446
  "--combobox-panel-size"?: (string) | undefined;
@@ -10511,7 +10536,7 @@ export type CustomCssProperties = {
10511
10536
  "--donut-chart-track-color"?: (string) | undefined;
10512
10537
  /** How thick the ring is drawn, derived from `hole`. */
10513
10538
  "--donut-chart-stroke"?: (string) | undefined;
10514
- /** Filter applied behind a `material="glass"` drawer. Follows the theme's material policy; set it to override the strength on one drawer. */
10539
+ /** Filter applied behind a `frosted` or `glass` drawer. Follows the theme's material policy; set it to override the strength on one drawer. */
10515
10540
  "--drawer-backdrop"?: (string) | undefined;
10516
10541
  /** Surface behind the panel. */
10517
10542
  "--drawer-background-color"?: (string) | undefined;
@@ -10521,7 +10546,7 @@ export type CustomCssProperties = {
10521
10546
  "--drawer-border-width"?: (string) | undefined;
10522
10547
  /** Padding inside the panel. */
10523
10548
  "--drawer-padding"?: (string) | undefined;
10524
- /** Padding above the content, which clears the close control. */
10549
+ /** Padding above the header, which is a step deeper than the other three so the first line clears the window's own edge. Falls back to `--drawer-padding`, so setting that alone governs all four sides. */
10525
10550
  "--drawer-padding-block-start"?: (string) | undefined;
10526
10551
  /** Corner radius on the edges that face the page. */
10527
10552
  "--drawer-radius"?: (string) | undefined;
@@ -10679,7 +10704,7 @@ export type CustomCssProperties = {
10679
10704
  "--loader-size"?: (string) | undefined;
10680
10705
  /** Color of the circle behind it. */
10681
10706
  "--loader-track-color"?: (string) | undefined;
10682
- /** A filter behind the panel, for glass. */
10707
+ /** A filter behind the panel, which is `none` until one is asked for: this family carries no `material`, so the pair is two hooks rather than a word. */
10683
10708
  "--megamenu-backdrop"?: (string) | undefined;
10684
10709
  /** The panel's own fill. */
10685
10710
  "--megamenu-background-color"?: (string) | undefined;
@@ -11115,7 +11140,7 @@ export type CustomCssProperties = {
11115
11140
  "--toolbar-gap"?: (string) | undefined;
11116
11141
  /** Size of the point at the bubble's edge. */
11117
11142
  "--tooltip-arrow-size"?: (string) | undefined;
11118
- /** Blur behind a `glass` bubble. */
11143
+ /** Blur behind a `frosted` or `glass` bubble. */
11119
11144
  "--tooltip-backdrop"?: (string) | undefined;
11120
11145
  /** Fill of the bubble. */
11121
11146
  "--tooltip-background-color"?: (string) | undefined;
@@ -11653,7 +11678,7 @@ export interface WcToolkitVueGlobalComponents {
11653
11678
  HelixOrbVueProps,
11654
11679
  HelixOrbVueEvents
11655
11680
  >;
11656
- /** A rule down the leading edge with the current section lit along it, which is the shape a table of contents has taken since printed marginalia: the line says the list is one thing, and the lit segment says where in it you are. Nesting is the consumer's, expressed as 'data-level' on a link. An outline that read heading levels itself would have to look at the document, and the document is not always where the headings are. */
11681
+ /** A rule down the leading edge with the current section lit along it, which is the shape a table of contents has taken since printed marginalia: the line says the list is one thing, and the lit segment says where in it you are. Nesting is the consumer's, expressed as 'data-level' on a link, and the levels are the heading levels: '2' through '6' each take one more step of '--outline-indent', and a link with no 'data-level' is the top one. An outline that read heading levels itself would have to look at the document, and the document is not always where the headings are. */
11657
11682
  "helix-outline": DefineCustomElement<
11658
11683
  HelixOutline,
11659
11684
  HelixOutlineVueProps,