@fusion.dev/helix 0.36.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.
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
 
@@ -9108,12 +9126,7 @@ HTML writes as one costs what an attribute always costs here: nothing
9108
9126
  warns. `<helix-input readonly>` is what anybody who has written HTML types;
9109
9127
  against `read-only` it parses to no property at all, and the field stays
9110
9128
  editable with no error anywhere. Measured on the dash-cased form, `readOnly`
9111
- came back `false`.
9112
-
9113
- A part was renamed for
9114
- the same kind of reason: there is no `helix-v` tag, so no consumer is
9115
- holding the old spelling, and this is free today and a deprecation after
9116
- the first release. */
9129
+ came back `false`. */
9117
9130
  readonly?: (HelixInput["readOnly"]) | undefined;
9118
9131
  /** Whether the field refuses input while still submitting its value.
9119
9132
 
@@ -9123,12 +9136,7 @@ HTML writes as one costs what an attribute always costs here: nothing
9123
9136
  warns. `<helix-input readonly>` is what anybody who has written HTML types;
9124
9137
  against `read-only` it parses to no property at all, and the field stays
9125
9138
  editable with no error anywhere. Measured on the dash-cased form, `readOnly`
9126
- came back `false`.
9127
-
9128
- A part was renamed for
9129
- the same kind of reason: there is no `helix-v` tag, so no consumer is
9130
- holding the old spelling, and this is free today and a deprecation after
9131
- the first release. */
9139
+ came back `false`. */
9132
9140
  readOnly?: (HelixInput["readOnly"]) | undefined;
9133
9141
  /** Whether a password field offers a toggle that shows what was typed.
9134
9142
 
@@ -9272,12 +9280,7 @@ HTML writes as one costs what an attribute always costs here: nothing
9272
9280
  warns. `<helix-input readonly>` is what anybody who has written HTML types;
9273
9281
  against `read-only` it parses to no property at all, and the field stays
9274
9282
  editable with no error anywhere. Measured on the dash-cased form, `readOnly`
9275
- came back `false`.
9276
-
9277
- A part was renamed for
9278
- the same kind of reason: there is no `helix-v` tag, so no consumer is
9279
- holding the old spelling, and this is free today and a deprecation after
9280
- the first release. */
9283
+ came back `false`. */
9281
9284
  "bool:readonly"?: (HelixInput["readOnly"]) | undefined;
9282
9285
  /** Whether the field refuses input while still submitting its value.
9283
9286
 
@@ -9287,12 +9290,7 @@ HTML writes as one costs what an attribute always costs here: nothing
9287
9290
  warns. `<helix-input readonly>` is what anybody who has written HTML types;
9288
9291
  against `read-only` it parses to no property at all, and the field stays
9289
9292
  editable with no error anywhere. Measured on the dash-cased form, `readOnly`
9290
- came back `false`.
9291
-
9292
- A part was renamed for
9293
- the same kind of reason: there is no `helix-v` tag, so no consumer is
9294
- holding the old spelling, and this is free today and a deprecation after
9295
- the first release. */
9293
+ came back `false`. */
9296
9294
  "prop:readOnly"?: (HelixInput["readOnly"]) | undefined;
9297
9295
  /** Whether a password field offers a toggle that shows what was typed.
9298
9296
 
@@ -10352,8 +10350,16 @@ fits.
10352
10350
  a band is not a question of paint: a band is not placed against the trigger,
10353
10351
  so the controller has to be told not to measure, and that decision is here
10354
10352
  whatever the stylesheet says. Writing the width in both places would be one
10355
- number in two languages, drifting the first time either moved. This sets
10356
- `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`. */
10357
10363
  "full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
10358
10364
  /** The width, in pixels, under which a card becomes a band. Zero never does.
10359
10365
 
@@ -10368,8 +10374,16 @@ fits.
10368
10374
  a band is not a question of paint: a band is not placed against the trigger,
10369
10375
  so the controller has to be told not to measure, and that decision is here
10370
10376
  whatever the stylesheet says. Writing the width in both places would be one
10371
- number in two languages, drifting the first time either moved. This sets
10372
- `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`. */
10373
10387
  fullBelow?: (HelixMegamenu["fullBelow"]) | undefined;
10374
10388
  /** The section's name, which names the default trigger and the panel. */
10375
10389
  label?: (HelixMegamenu["label"]) | undefined;
@@ -10443,8 +10457,16 @@ fits.
10443
10457
  a band is not a question of paint: a band is not placed against the trigger,
10444
10458
  so the controller has to be told not to measure, and that decision is here
10445
10459
  whatever the stylesheet says. Writing the width in both places would be one
10446
- number in two languages, drifting the first time either moved. This sets
10447
- `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`. */
10448
10470
  "attr:full-below"?: (HelixMegamenu["fullBelow"] | `${number}`) | undefined;
10449
10471
  /** The width, in pixels, under which a card becomes a band. Zero never does.
10450
10472
 
@@ -10459,8 +10481,16 @@ fits.
10459
10481
  a band is not a question of paint: a band is not placed against the trigger,
10460
10482
  so the controller has to be told not to measure, and that decision is here
10461
10483
  whatever the stylesheet says. Writing the width in both places would be one
10462
- number in two languages, drifting the first time either moved. This sets
10463
- `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`. */
10464
10494
  "prop:fullBelow"?: (HelixMegamenu["fullBelow"]) | undefined;
10465
10495
  /** The section's name, which names the default trigger and the panel. */
10466
10496
  "prop:label"?: (HelixMegamenu["label"]) | undefined;
@@ -11997,9 +12027,9 @@ markup. */
11997
12027
 
11998
12028
  /** `HelixOutline` component event */
11999
12029
  export type HelixOutlineElementEvent<E = Event> = TypedEvent<HelixOutline, E>;
12000
- /** `helix-before-activate` event type */
12001
- export type HelixOutlineHelixBeforeActivateElementEvent =
12002
- HelixOutlineElementEvent<HelixBeforeActivateEvent>;
12030
+ /** `helix-activate` event type */
12031
+ export type HelixOutlineHelixActivateElementEvent =
12032
+ HelixOutlineElementEvent<HelixActivateEvent>;
12003
12033
 
12004
12034
  export type HelixOutlineProps = {
12005
12035
  /** How a click on one of these links travels to its section.
@@ -12032,10 +12062,8 @@ a little more: without it the current section changes as a heading slides
12032
12062
  under the chrome rather than as it reaches the top of what can be seen. */
12033
12063
  offset?: (HelixOutline["offset"]) | undefined;
12034
12064
 
12035
- /** The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves. */
12036
- "onhelix-before-activate"?: ((
12037
- e: HelixOutlineHelixBeforeActivateElementEvent,
12038
- ) => 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;
12039
12067
  };
12040
12068
 
12041
12069
  export type HelixOutlineSolidJsProps = {
@@ -12068,10 +12096,8 @@ The reading line. A page with a sticky masthead sets this to its height, or
12068
12096
  a little more: without it the current section changes as a heading slides
12069
12097
  under the chrome rather than as it reaches the top of what can be seen. */
12070
12098
  "prop:offset"?: (HelixOutline["offset"]) | undefined;
12071
- /** The section being read has changed, carrying its id as the value. Cancelable: refusing it takes the decision and nothing moves. */
12072
- "on:helix-before-activate"?: ((
12073
- e: HelixOutlineHelixBeforeActivateElementEvent,
12074
- ) => 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;
12075
12101
 
12076
12102
  /** Set the innerHTML of the element */
12077
12103
  innerHTML?: (string) | undefined;
@@ -13445,7 +13471,7 @@ either, and both are only a choice of drawing. A scale whose marks are
13445
13471
  `Radio.Group`, whose options already carry a value and a name each.
13446
13472
 
13447
13473
  **Undefaulted, because it reflects.** A default of `marks` writes
13448
- `appearance="marks"` onto every server-rendered rating, which React holds no
13474
+ `variant="marks"` onto every server-rendered rating, which React holds no
13449
13475
  prop for and reports as a hydration mismatch. The stylesheet names only
13450
13476
  `dots`, so an unset one draws marks anyway. */
13451
13477
  variant?: (HelixRating["variant"]) | undefined;
@@ -13585,7 +13611,7 @@ either, and both are only a choice of drawing. A scale whose marks are
13585
13611
  `Radio.Group`, whose options already carry a value and a name each.
13586
13612
 
13587
13613
  **Undefaulted, because it reflects.** A default of `marks` writes
13588
- `appearance="marks"` onto every server-rendered rating, which React holds no
13614
+ `variant="marks"` onto every server-rendered rating, which React holds no
13589
13615
  prop for and reports as a hydration mismatch. The stylesheet names only
13590
13616
  `dots`, so an unset one draws marks anyway. */
13591
13617
  "prop:variant"?: (HelixRating["variant"]) | undefined;
@@ -23300,7 +23326,7 @@ export type CustomElements = {
23300
23326
  * - `--color-input-panel-size`: Width of the panel, and so of the square. (default: `undefined`)
23301
23327
  * - `--color-input-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`)
23302
23328
  * - `--color-input-swatch-radius`: Corner radius of that block. (default: `undefined`)
23303
- * - `--color-input-swatch-size`: Edge length of the block in `appearance="swatch"`. (default: `undefined`)
23329
+ * - `--color-input-swatch-size`: Edge length of the block in `variant="swatch"`. (default: `undefined`)
23304
23330
  * - `--color-input-swatch`: The chosen color, to paint over the transparency check. (default: `undefined`)
23305
23331
  *
23306
23332
  * ## CSS Parts
@@ -23667,6 +23693,15 @@ export type CustomElements = {
23667
23693
  *
23668
23694
  * A comma is therefore not available inside an option's value, which is the
23669
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.
23670
23705
  * - `placeholder`: Text shown while nothing has been chosen.
23671
23706
  * - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
23672
23707
  * - `suggest`: Whether the field finishes the word as it is typed.
@@ -23821,7 +23856,7 @@ export type CustomElements = {
23821
23856
  * - `--combobox-background-color`: Fill behind the field. (default: `undefined`)
23822
23857
  * - `--combobox-border-color`: Color of the panel's edge. (default: `undefined`)
23823
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`)
23824
- * - `--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`)
23825
23860
  * - `--combobox-panel-size`: Width of the panel. Follows the field by default. (default: `undefined`)
23826
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`)
23827
23862
  *
@@ -25783,9 +25818,9 @@ export type CustomElements = {
25783
25818
  *
25784
25819
  * Events that will be emitted by the component.
25785
25820
  *
25786
- * - `helix-before-open`: Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
25787
25821
  * - `close`: Relayed, because the platform's own does not escape.
25788
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.
25789
25824
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
25790
25825
  *
25791
25826
  * ## Slots
@@ -25812,12 +25847,12 @@ export type CustomElements = {
25812
25847
  *
25813
25848
  * CSS variables available for styling the component.
25814
25849
  *
25815
- * - `--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`)
25816
25851
  * - `--drawer-background-color`: Surface behind the panel. (default: `undefined`)
25817
25852
  * - `--drawer-border-color`: Color of the panel's edge. (default: `undefined`)
25818
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`)
25819
25854
  * - `--drawer-padding`: Padding inside the panel. (default: `undefined`)
25820
- * - `--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`)
25821
25856
  * - `--drawer-radius`: Corner radius on the edges that face the page. (default: `undefined`)
25822
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`)
25823
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`)
@@ -26028,6 +26063,7 @@ export type CustomElements = {
26028
26063
  *
26029
26064
  * These can be used to apply styling when a component is in a given state.
26030
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.
26031
26067
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
26032
26068
  */
26033
26069
  "helix-drilldown": Partial<
@@ -27837,8 +27873,11 @@ export type CustomElements = {
27837
27873
  * the platform's.
27838
27874
  *
27839
27875
  * Height comes from the region, like every other control: `data-density` on
27840
- * whatever holds it, not a `size` here. Invalid styling waits for
27841
- * `:user-invalid`, because a field is not wrong before anyone has filled it in.
27876
+ * whatever holds it, not a `size` here. Invalid styling waits for the `invalid`
27877
+ * custom state, because a field is not wrong before anyone has filled it in and
27878
+ * `:user-invalid` cannot answer that here: it tracks the control the reader is
27879
+ * in, which is inside this shadow root, so it never reaches the host the rule
27880
+ * selects on.
27842
27881
  *
27843
27882
  * ## Attributes & Properties
27844
27883
  *
@@ -27885,11 +27924,6 @@ export type CustomElements = {
27885
27924
  * against `read-only` it parses to no property at all, and the field stays
27886
27925
  * editable with no error anywhere. Measured on the dash-cased form, `readOnly`
27887
27926
  * came back `false`.
27888
- *
27889
- * A part was renamed for
27890
- * the same kind of reason: there is no `helix-v` tag, so no consumer is
27891
- * holding the old spelling, and this is free today and a deprecation after
27892
- * the first release.
27893
27927
  * - `reveal`: Whether a password field offers a toggle that shows what was typed.
27894
27928
  *
27895
27929
  * Ignored on every other type. A reveal on an email field would be a button
@@ -28848,6 +28882,7 @@ export type CustomElements = {
28848
28882
  * Areas where markup can be added to the component.
28849
28883
  *
28850
28884
  * - `(default)`: The options, and any groups of them.
28885
+ * - `filter-icon`: The mark in the filter's field. Left empty, a magnifier is drawn.
28851
28886
  * - `hint`: Richer than a string.
28852
28887
  * - `label`: Richer than a string.
28853
28888
  *
@@ -29080,8 +29115,16 @@ export type CustomElements = {
29080
29115
  * a band is not a question of paint: a band is not placed against the trigger,
29081
29116
  * so the controller has to be told not to measure, and that decision is here
29082
29117
  * whatever the stylesheet says. Writing the width in both places would be one
29083
- * number in two languages, drifting the first time either moved. This sets
29084
- * `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`.
29085
29128
  * - `label`: The section's name, which names the default trigger and the panel.
29086
29129
  * - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
29087
29130
  *
@@ -29155,7 +29198,7 @@ export type CustomElements = {
29155
29198
  *
29156
29199
  * CSS variables available for styling the component.
29157
29200
  *
29158
- * - `--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`)
29159
29202
  * - `--megamenu-background-color`: The panel's own fill. (default: `undefined`)
29160
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`)
29161
29204
  * - `--megamenu-column-size`: The narrowest a column goes before the grid wraps. (default: `undefined`)
@@ -29175,6 +29218,7 @@ export type CustomElements = {
29175
29218
  *
29176
29219
  * These can be used to apply styling when a component is in a given state.
29177
29220
  *
29221
+ * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
29178
29222
  * - `open`: While the panel is open, which is when the trigger reads as current.
29179
29223
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
29180
29224
  */
@@ -30840,9 +30884,11 @@ export type CustomElements = {
30840
30884
  * the shape a table of contents has taken since printed marginalia: the line
30841
30885
  * says the list is one thing, and the lit segment says where in it you are.
30842
30886
  *
30843
- * Nesting is the consumer's, expressed as `data-level` on a link. An outline
30844
- * that read heading levels itself would have to look at the document, and the
30845
- * 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.
30846
30892
  *
30847
30893
  * ## Attributes & Properties
30848
30894
  *
@@ -30907,7 +30953,7 @@ export type CustomElements = {
30907
30953
  *
30908
30954
  * Events that will be emitted by the component.
30909
30955
  *
30910
- * - `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.
30911
30957
  *
30912
30958
  * ## Slots
30913
30959
  *
@@ -32219,7 +32265,7 @@ export type CustomElements = {
32219
32265
  * `Radio.Group`, whose options already carry a value and a name each.
32220
32266
  *
32221
32267
  * **Undefaulted, because it reflects.** A default of `marks` writes
32222
- * `appearance="marks"` onto every server-rendered rating, which React holds no
32268
+ * `variant="marks"` onto every server-rendered rating, which React holds no
32223
32269
  * prop for and reports as a hydration mismatch. The stylesheet names only
32224
32270
  * `dots`, so an unset one draws marks anyway.
32225
32271
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
@@ -37358,7 +37404,7 @@ export type CustomElements = {
37358
37404
  * CSS variables available for styling the component.
37359
37405
  *
37360
37406
  * - `--tooltip-arrow-size`: Size of the point at the bubble's edge. (default: `undefined`)
37361
- * - `--tooltip-backdrop`: Blur behind a `glass` bubble. (default: `undefined`)
37407
+ * - `--tooltip-backdrop`: Blur behind a `frosted` or `glass` bubble. (default: `undefined`)
37362
37408
  * - `--tooltip-background-color`: Fill of the bubble. (default: `undefined`)
37363
37409
  * - `--tooltip-max-inline-size`: Widest the bubble grows before wrapping. (default: `undefined`)
37364
37410
  *
@@ -42182,7 +42228,7 @@ export type CustomElementsSolidJs = {
42182
42228
  * - `--color-input-panel-size`: Width of the panel, and so of the square. (default: `undefined`)
42183
42229
  * - `--color-input-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`)
42184
42230
  * - `--color-input-swatch-radius`: Corner radius of that block. (default: `undefined`)
42185
- * - `--color-input-swatch-size`: Edge length of the block in `appearance="swatch"`. (default: `undefined`)
42231
+ * - `--color-input-swatch-size`: Edge length of the block in `variant="swatch"`. (default: `undefined`)
42186
42232
  * - `--color-input-swatch`: The chosen color, to paint over the transparency check. (default: `undefined`)
42187
42233
  *
42188
42234
  * ## CSS Parts
@@ -42555,6 +42601,15 @@ export type CustomElementsSolidJs = {
42555
42601
  *
42556
42602
  * A comma is therefore not available inside an option's value, which is the
42557
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.
42558
42613
  * - `placeholder`: Text shown while nothing has been chosen.
42559
42614
  * - `remove-label`/`removeLabel`: What a tag's remove control is called, since the mark has no name.
42560
42615
  * - `suggest`: Whether the field finishes the word as it is typed.
@@ -42709,7 +42764,7 @@ export type CustomElementsSolidJs = {
42709
42764
  * - `--combobox-background-color`: Fill behind the field. (default: `undefined`)
42710
42765
  * - `--combobox-border-color`: Color of the panel's edge. (default: `undefined`)
42711
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`)
42712
- * - `--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`)
42713
42768
  * - `--combobox-panel-size`: Width of the panel. Follows the field by default. (default: `undefined`)
42714
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`)
42715
42770
  *
@@ -44702,9 +44757,9 @@ export type CustomElementsSolidJs = {
44702
44757
  *
44703
44758
  * Events that will be emitted by the component.
44704
44759
  *
44705
- * - `helix-before-open`: Fired before the drawer opens or closes. Cancelable: refusing it takes the decision and nothing moves.
44706
44760
  * - `close`: Relayed, because the platform's own does not escape.
44707
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.
44708
44763
  * - `toggle`: Says the state moved, carrying `newState` and `oldState`.
44709
44764
  *
44710
44765
  * ## Slots
@@ -44731,12 +44786,12 @@ export type CustomElementsSolidJs = {
44731
44786
  *
44732
44787
  * CSS variables available for styling the component.
44733
44788
  *
44734
- * - `--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`)
44735
44790
  * - `--drawer-background-color`: Surface behind the panel. (default: `undefined`)
44736
44791
  * - `--drawer-border-color`: Color of the panel's edge. (default: `undefined`)
44737
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`)
44738
44793
  * - `--drawer-padding`: Padding inside the panel. (default: `undefined`)
44739
- * - `--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`)
44740
44795
  * - `--drawer-radius`: Corner radius on the edges that face the page. (default: `undefined`)
44741
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`)
44742
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`)
@@ -44953,6 +45008,7 @@ export type CustomElementsSolidJs = {
44953
45008
  *
44954
45009
  * These can be used to apply styling when a component is in a given state.
44955
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.
44956
45012
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
44957
45013
  */
44958
45014
  "helix-drilldown": Partial<
@@ -46808,8 +46864,11 @@ export type CustomElementsSolidJs = {
46808
46864
  * the platform's.
46809
46865
  *
46810
46866
  * Height comes from the region, like every other control: `data-density` on
46811
- * whatever holds it, not a `size` here. Invalid styling waits for
46812
- * `:user-invalid`, because a field is not wrong before anyone has filled it in.
46867
+ * whatever holds it, not a `size` here. Invalid styling waits for the `invalid`
46868
+ * custom state, because a field is not wrong before anyone has filled it in and
46869
+ * `:user-invalid` cannot answer that here: it tracks the control the reader is
46870
+ * in, which is inside this shadow root, so it never reaches the host the rule
46871
+ * selects on.
46813
46872
  *
46814
46873
  * ## Attributes & Properties
46815
46874
  *
@@ -46856,11 +46915,6 @@ export type CustomElementsSolidJs = {
46856
46915
  * against `read-only` it parses to no property at all, and the field stays
46857
46916
  * editable with no error anywhere. Measured on the dash-cased form, `readOnly`
46858
46917
  * came back `false`.
46859
- *
46860
- * A part was renamed for
46861
- * the same kind of reason: there is no `helix-v` tag, so no consumer is
46862
- * holding the old spelling, and this is free today and a deprecation after
46863
- * the first release.
46864
46918
  * - `reveal`: Whether a password field offers a toggle that shows what was typed.
46865
46919
  *
46866
46920
  * Ignored on every other type. A reveal on an email field would be a button
@@ -47837,6 +47891,7 @@ export type CustomElementsSolidJs = {
47837
47891
  * Areas where markup can be added to the component.
47838
47892
  *
47839
47893
  * - `(default)`: The options, and any groups of them.
47894
+ * - `filter-icon`: The mark in the filter's field. Left empty, a magnifier is drawn.
47840
47895
  * - `hint`: Richer than a string.
47841
47896
  * - `label`: Richer than a string.
47842
47897
  *
@@ -48075,8 +48130,16 @@ export type CustomElementsSolidJs = {
48075
48130
  * a band is not a question of paint: a band is not placed against the trigger,
48076
48131
  * so the controller has to be told not to measure, and that decision is here
48077
48132
  * whatever the stylesheet says. Writing the width in both places would be one
48078
- * number in two languages, drifting the first time either moved. This sets
48079
- * `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`.
48080
48143
  * - `label`: The section's name, which names the default trigger and the panel.
48081
48144
  * - `open-on`/`openOn`: Whether hovering the trigger opens the panel, or only a press does.
48082
48145
  *
@@ -48150,7 +48213,7 @@ export type CustomElementsSolidJs = {
48150
48213
  *
48151
48214
  * CSS variables available for styling the component.
48152
48215
  *
48153
- * - `--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`)
48154
48217
  * - `--megamenu-background-color`: The panel's own fill. (default: `undefined`)
48155
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`)
48156
48219
  * - `--megamenu-column-size`: The narrowest a column goes before the grid wraps. (default: `undefined`)
@@ -48170,6 +48233,7 @@ export type CustomElementsSolidJs = {
48170
48233
  *
48171
48234
  * These can be used to apply styling when a component is in a given state.
48172
48235
  *
48236
+ * - `narrow`: While the page is under `full-below`, so the panel is a band whether or not one was asked for.
48173
48237
  * - `open`: While the panel is open, which is when the trigger reads as current.
48174
48238
  * - `settled`: Set a frame after the first render. Transitions are held off until it is, so an element never animates its own arrival.
48175
48239
  */
@@ -49874,9 +49938,11 @@ export type CustomElementsSolidJs = {
49874
49938
  * the shape a table of contents has taken since printed marginalia: the line
49875
49939
  * says the list is one thing, and the lit segment says where in it you are.
49876
49940
  *
49877
- * Nesting is the consumer's, expressed as `data-level` on a link. An outline
49878
- * that read heading levels itself would have to look at the document, and the
49879
- * 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.
49880
49946
  *
49881
49947
  * ## Attributes & Properties
49882
49948
  *
@@ -49941,7 +50007,7 @@ export type CustomElementsSolidJs = {
49941
50007
  *
49942
50008
  * Events that will be emitted by the component.
49943
50009
  *
49944
- * - `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.
49945
50011
  *
49946
50012
  * ## Slots
49947
50013
  *
@@ -51290,7 +51356,7 @@ export type CustomElementsSolidJs = {
51290
51356
  * `Radio.Group`, whose options already carry a value and a name each.
51291
51357
  *
51292
51358
  * **Undefaulted, because it reflects.** A default of `marks` writes
51293
- * `appearance="marks"` onto every server-rendered rating, which React holds no
51359
+ * `variant="marks"` onto every server-rendered rating, which React holds no
51294
51360
  * prop for and reports as a hydration mismatch. The stylesheet names only
51295
51361
  * `dots`, so an unset one draws marks anyway.
51296
51362
  * - `default-value`/`defaultValue`: The value the markup declared, which is where a reset returns to.
@@ -56552,7 +56618,7 @@ export type CustomElementsSolidJs = {
56552
56618
  * CSS variables available for styling the component.
56553
56619
  *
56554
56620
  * - `--tooltip-arrow-size`: Size of the point at the bubble's edge. (default: `undefined`)
56555
- * - `--tooltip-backdrop`: Blur behind a `glass` bubble. (default: `undefined`)
56621
+ * - `--tooltip-backdrop`: Blur behind a `frosted` or `glass` bubble. (default: `undefined`)
56556
56622
  * - `--tooltip-background-color`: Fill of the bubble. (default: `undefined`)
56557
56623
  * - `--tooltip-max-inline-size`: Widest the bubble grows before wrapping. (default: `undefined`)
56558
56624
  *
@@ -58089,7 +58155,7 @@ export type CustomCssProperties = {
58089
58155
  "--color-input-shadow"?: (string) | undefined;
58090
58156
  /** Corner radius of that block. */
58091
58157
  "--color-input-swatch-radius"?: (string) | undefined;
58092
- /** Edge length of the block in `appearance="swatch"`. */
58158
+ /** Edge length of the block in `variant="swatch"`. */
58093
58159
  "--color-input-swatch-size"?: (string) | undefined;
58094
58160
  /** The chosen color, to paint over the transparency check. */
58095
58161
  "--color-input-swatch"?: (string) | undefined;
@@ -58117,7 +58183,7 @@ export type CustomCssProperties = {
58117
58183
  "--combobox-border-color"?: (string) | undefined;
58118
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. */
58119
58185
  "--combobox-border-width"?: (string) | undefined;
58120
- /** Smallest the text field shrinks to */
58186
+ /** Smallest the text field shrinks to once tags share its line. */
58121
58187
  "--combobox-control-size"?: (string) | undefined;
58122
58188
  /** Width of the panel. Follows the field by default. */
58123
58189
  "--combobox-panel-size"?: (string) | undefined;
@@ -58213,7 +58279,7 @@ export type CustomCssProperties = {
58213
58279
  "--donut-chart-track-color"?: (string) | undefined;
58214
58280
  /** How thick the ring is drawn, derived from `hole`. */
58215
58281
  "--donut-chart-stroke"?: (string) | undefined;
58216
- /** 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. */
58217
58283
  "--drawer-backdrop"?: (string) | undefined;
58218
58284
  /** Surface behind the panel. */
58219
58285
  "--drawer-background-color"?: (string) | undefined;
@@ -58223,7 +58289,7 @@ export type CustomCssProperties = {
58223
58289
  "--drawer-border-width"?: (string) | undefined;
58224
58290
  /** Padding inside the panel. */
58225
58291
  "--drawer-padding"?: (string) | undefined;
58226
- /** 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. */
58227
58293
  "--drawer-padding-block-start"?: (string) | undefined;
58228
58294
  /** Corner radius on the edges that face the page. */
58229
58295
  "--drawer-radius"?: (string) | undefined;
@@ -58381,7 +58447,7 @@ export type CustomCssProperties = {
58381
58447
  "--loader-size"?: (string) | undefined;
58382
58448
  /** Color of the circle behind it. */
58383
58449
  "--loader-track-color"?: (string) | undefined;
58384
- /** 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. */
58385
58451
  "--megamenu-backdrop"?: (string) | undefined;
58386
58452
  /** The panel's own fill. */
58387
58453
  "--megamenu-background-color"?: (string) | undefined;
@@ -58817,7 +58883,7 @@ export type CustomCssProperties = {
58817
58883
  "--toolbar-gap"?: (string) | undefined;
58818
58884
  /** Size of the point at the bubble's edge. */
58819
58885
  "--tooltip-arrow-size"?: (string) | undefined;
58820
- /** Blur behind a `glass` bubble. */
58886
+ /** Blur behind a `frosted` or `glass` bubble. */
58821
58887
  "--tooltip-backdrop"?: (string) | undefined;
58822
58888
  /** Fill of the bubble. */
58823
58889
  "--tooltip-background-color"?: (string) | undefined;