@fusion.dev/helix 0.170.0 → 0.172.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
@@ -6429,6 +6429,10 @@ export type HelixChatComposerHelixTypingElementEvent =
6429
6429
  HelixChatComposerElementEvent<HelixTypingEvent>;
6430
6430
 
6431
6431
  export type HelixChatComposerProps = {
6432
+ /** A message about the draft, shown under the field. While set, the composer
6433
+ is invalid, does not send, and does not submit, as a field's `feedback`
6434
+ does, and the message is announced as it appears. */
6435
+ feedback?: (HelixChatComposer["feedback"]) | undefined;
6432
6436
  /** The field's name, read by screen readers. */
6433
6437
  label?: (HelixChatComposer["label"]) | undefined;
6434
6438
  /** The most characters a draft can have. The field stops taking more. */
@@ -6515,6 +6519,10 @@ Here rather than on each control. */
6515
6519
  };
6516
6520
 
6517
6521
  export type HelixChatComposerSolidJsProps = {
6522
+ /** A message about the draft, shown under the field. While set, the composer
6523
+ is invalid, does not send, and does not submit, as a field's `feedback`
6524
+ does, and the message is announced as it appears. */
6525
+ "prop:feedback"?: (HelixChatComposer["feedback"]) | undefined;
6518
6526
  /** The field's name, read by screen readers. */
6519
6527
  "prop:label"?: (HelixChatComposer["label"]) | undefined;
6520
6528
  /** The most characters a draft can have. The field stops taking more. */
@@ -7751,6 +7759,12 @@ export type HelixCodeBlockHelixToggleElementEvent =
7751
7759
  HelixCodeBlockElementEvent<HelixToggleEvent>;
7752
7760
 
7753
7761
  export type HelixCodeBlockProps = {
7762
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7763
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7764
+ "added-lines"?: (HelixCodeBlock["addedLines"]) | undefined;
7765
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7766
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7767
+ addedLines?: (HelixCodeBlock["addedLines"]) | undefined;
7754
7768
  /** The name of a block that scrolls, which is a tab stop while it does.
7755
7769
 
7756
7770
  Where the block has a name, the scroller says it too, such as "Code,
@@ -7909,6 +7923,12 @@ A false boolean reflects as the attribute's absence, so this costs no
7909
7923
  reflected property taking no default is satisfied by the default being
7910
7924
  `false`. */
7911
7925
  noCopy?: (HelixCodeBlock["noCopy"]) | undefined;
7926
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
7927
+ as `mark-lines` is, in the removed color. Not for a diff. */
7928
+ "removed-lines"?: (HelixCodeBlock["removedLines"]) | undefined;
7929
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
7930
+ as `mark-lines` is, in the removed color. Not for a diff. */
7931
+ removedLines?: (HelixCodeBlock["removedLines"]) | undefined;
7912
7932
  /** The words of a button that shows a folded run of unchanged lines, in a
7913
7933
  diff with `context-lines`. `{count}` is how many. */
7914
7934
  "show-unchanged-label"?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
@@ -7979,6 +7999,12 @@ read, nor for a diff. */
7979
7999
  };
7980
8000
 
7981
8001
  export type HelixCodeBlockSolidJsProps = {
8002
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
8003
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
8004
+ "attr:added-lines"?: (HelixCodeBlock["addedLines"]) | undefined;
8005
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
8006
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
8007
+ "prop:addedLines"?: (HelixCodeBlock["addedLines"]) | undefined;
7982
8008
  /** The name of a block that scrolls, which is a tab stop while it does.
7983
8009
 
7984
8010
  Where the block has a name, the scroller says it too, such as "Code,
@@ -8137,6 +8163,12 @@ A false boolean reflects as the attribute's absence, so this costs no
8137
8163
  reflected property taking no default is satisfied by the default being
8138
8164
  `false`. */
8139
8165
  "prop:noCopy"?: (HelixCodeBlock["noCopy"]) | undefined;
8166
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
8167
+ as `mark-lines` is, in the removed color. Not for a diff. */
8168
+ "attr:removed-lines"?: (HelixCodeBlock["removedLines"]) | undefined;
8169
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
8170
+ as `mark-lines` is, in the removed color. Not for a diff. */
8171
+ "prop:removedLines"?: (HelixCodeBlock["removedLines"]) | undefined;
8140
8172
  /** The words of a button that shows a folded run of unchanged lines, in a
8141
8173
  diff with `context-lines`. `{count}` is how many. */
8142
8174
  "attr:show-unchanged-label"?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
@@ -9029,10 +9061,11 @@ would give one control two of each. What is left is the validity call and
9029
9061
  the anchor the browser points its bubble at.
9030
9062
 
9031
9063
  **Text that is not a color is bad input**, so a form does not submit
9032
- `#00` from a half-typed value. The picker draws no message of its own, so
9033
- reporting it as each keystroke arrives shows nothing until the form asks;
9034
- Color Input shows its own message against the field the reader typed
9035
- into. */
9064
+ `#00` from a half-typed value. The picker marks it, and says
9065
+ `badInputMessage` under itself, once the reader leaves the value field or
9066
+ presses Enter, and a missing color once the reader has committed one or a
9067
+ form has refused the picker. Color Input shows its own message against the
9068
+ field the reader typed into. */
9036
9069
  required?: (HelixColorPicker["required"]) | undefined;
9037
9070
  /** What the square's horizontal ramp is called. */
9038
9071
  "saturation-label"?: (HelixColorPicker["saturationLabel"]) | undefined;
@@ -9409,10 +9442,11 @@ would give one control two of each. What is left is the validity call and
9409
9442
  the anchor the browser points its bubble at.
9410
9443
 
9411
9444
  **Text that is not a color is bad input**, so a form does not submit
9412
- `#00` from a half-typed value. The picker draws no message of its own, so
9413
- reporting it as each keystroke arrives shows nothing until the form asks;
9414
- Color Input shows its own message against the field the reader typed
9415
- into. */
9445
+ `#00` from a half-typed value. The picker marks it, and says
9446
+ `badInputMessage` under itself, once the reader leaves the value field or
9447
+ presses Enter, and a missing color once the reader has committed one or a
9448
+ form has refused the picker. Color Input shows its own message against the
9449
+ field the reader typed into. */
9416
9450
  "prop:required"?: (HelixColorPicker["required"]) | undefined;
9417
9451
  /** What the square's horizontal ramp is called. */
9418
9452
  "attr:saturation-label"?: (HelixColorPicker["saturationLabel"]) | undefined;
@@ -9773,12 +9807,13 @@ language. */
9773
9807
  locale?: (HelixCombobox["locale"]) | undefined;
9774
9808
  /** Whether more than one option can be chosen.
9775
9809
 
9776
- The list already does the work: `value` comes apart on commas, a press
9777
- toggles rather than replaces, and the arrows move without choosing. What
9778
- this adds is the tags, and keeping the panel open between picks.
9810
+ The list already does the work: `value` is the chosen values joined with
9811
+ commas, a press toggles rather than replaces, and the arrows move without
9812
+ choosing. What this adds is the tags, and keeping the panel open between
9813
+ picks.
9779
9814
 
9780
- A comma is therefore not available inside an option's value, which is the
9781
- listbox's contract and not this element's to change.
9815
+ An option's value may hold a comma, and it is read as one value, as
9816
+ `Select` and `Listbox` read it. So may an answer the reader created.
9782
9817
 
9783
9818
  **The list is told, and the field is not.** `aria-multiselectable` belongs
9784
9819
  to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -10148,12 +10183,13 @@ language. */
10148
10183
  "prop:locale"?: (HelixCombobox["locale"]) | undefined;
10149
10184
  /** Whether more than one option can be chosen.
10150
10185
 
10151
- The list already does the work: `value` comes apart on commas, a press
10152
- toggles rather than replaces, and the arrows move without choosing. What
10153
- this adds is the tags, and keeping the panel open between picks.
10186
+ The list already does the work: `value` is the chosen values joined with
10187
+ commas, a press toggles rather than replaces, and the arrows move without
10188
+ choosing. What this adds is the tags, and keeping the panel open between
10189
+ picks.
10154
10190
 
10155
- A comma is therefore not available inside an option's value, which is the
10156
- listbox's contract and not this element's to change.
10191
+ An option's value may hold a comma, and it is read as one value, as
10192
+ `Select` and `Listbox` read it. So may an answer the reader created.
10157
10193
 
10158
10194
  **The list is told, and the field is not.** `aria-multiselectable` belongs
10159
10195
  to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -10348,6 +10384,18 @@ so a palette filtered on a server sends one `helix-filter` for a word.
10348
10384
  so a palette filtered on a server sends one `helix-filter` for a word.
10349
10385
  `0` filters on every keystroke. See Listbox's `filter-delay`. */
10350
10386
  filterDelay?: (HelixCommand["filterDelay"]) | undefined;
10387
+ /** Where Home and End go from the filter field.
10388
+
10389
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10390
+ highlight to the first or the last command, as React Aria's Autocomplete
10391
+ does, and Shift with either still selects the text. */
10392
+ "home-end"?: (HelixCommand["homeEnd"]) | undefined;
10393
+ /** Where Home and End go from the filter field.
10394
+
10395
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10396
+ highlight to the first or the last command, as React Aria's Autocomplete
10397
+ does, and Shift with either still selects the text. */
10398
+ homeEnd?: (HelixCommand["homeEnd"]) | undefined;
10351
10399
  /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
10352
10400
  in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
10353
10401
  `alt` and `shift` the keys they name.
@@ -10365,6 +10413,10 @@ and `open`, `toggle` and the dialog's parts do nothing. */
10365
10413
  inline?: (HelixCommand["inline"]) | undefined;
10366
10414
  /** Accessible name for the overlay, which has no visible heading. */
10367
10415
  label?: (HelixCommand["label"]) | undefined;
10416
+ /** How the commands are laid out, as Listbox's `layout`: `grid` draws them in
10417
+ rows and columns, for a palette of icons or emoji, and the arrow keys
10418
+ follow the rows and the columns. Absent is one command under another. */
10419
+ layout?: (HelixCommand["layout"]) | undefined;
10368
10420
  /** What the list says when its commands could not be loaded, such as after a
10369
10421
  request to a server fails. Empty, null or no attribute is no error, so
10370
10422
  removing the attribute clears it. Passed to the list, which shows it
@@ -10480,6 +10532,18 @@ so a palette filtered on a server sends one `helix-filter` for a word.
10480
10532
  so a palette filtered on a server sends one `helix-filter` for a word.
10481
10533
  `0` filters on every keystroke. See Listbox's `filter-delay`. */
10482
10534
  "prop:filterDelay"?: (HelixCommand["filterDelay"]) | undefined;
10535
+ /** Where Home and End go from the filter field.
10536
+
10537
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10538
+ highlight to the first or the last command, as React Aria's Autocomplete
10539
+ does, and Shift with either still selects the text. */
10540
+ "attr:home-end"?: (HelixCommand["homeEnd"]) | undefined;
10541
+ /** Where Home and End go from the filter field.
10542
+
10543
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10544
+ highlight to the first or the last command, as React Aria's Autocomplete
10545
+ does, and Shift with either still selects the text. */
10546
+ "prop:homeEnd"?: (HelixCommand["homeEnd"]) | undefined;
10483
10547
  /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
10484
10548
  in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
10485
10549
  `alt` and `shift` the keys they name.
@@ -10497,6 +10561,10 @@ and `open`, `toggle` and the dialog's parts do nothing. */
10497
10561
  "prop:inline"?: (HelixCommand["inline"]) | undefined;
10498
10562
  /** Accessible name for the overlay, which has no visible heading. */
10499
10563
  "prop:label"?: (HelixCommand["label"]) | undefined;
10564
+ /** How the commands are laid out, as Listbox's `layout`: `grid` draws them in
10565
+ rows and columns, for a palette of icons or emoji, and the arrow keys
10566
+ follow the rows and the columns. Absent is one command under another. */
10567
+ "prop:layout"?: (HelixCommand["layout"]) | undefined;
10500
10568
  /** What the list says when its commands could not be loaded, such as after a
10501
10569
  request to a server fails. Empty, null or no attribute is no error, so
10502
10570
  removing the attribute clears it. Passed to the list, which shows it
@@ -11296,7 +11364,11 @@ thousand rows, where the page is a reasonable fetch and a poor render.
11296
11364
 
11297
11365
  Off by default. Windowing costs a scroll listener, a measurement per row
11298
11366
  drawn, and a `block-size` on the scrolling box, and a table of twenty rows
11299
- should pay none of them. */
11367
+ should pay none of them.
11368
+
11369
+ While windowed, the `table` part scrolls on this tier: it carries
11370
+ `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
11371
+ every shadow root. You still need to give it a block size. */
11300
11372
  windowed?: (HelixDataTable["windowed"]) | undefined;
11301
11373
  /** Every row of the result, in the order it arrived.
11302
11374
 
@@ -11711,7 +11783,11 @@ thousand rows, where the page is a reasonable fetch and a poor render.
11711
11783
 
11712
11784
  Off by default. Windowing costs a scroll listener, a measurement per row
11713
11785
  drawn, and a `block-size` on the scrolling box, and a table of twenty rows
11714
- should pay none of them. */
11786
+ should pay none of them.
11787
+
11788
+ While windowed, the `table` part scrolls on this tier: it carries
11789
+ `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
11790
+ every shadow root. You still need to give it a block size. */
11715
11791
  "prop:windowed"?: (HelixDataTable["windowed"]) | undefined;
11716
11792
  /** Every row of the result, in the order it arrived.
11717
11793
 
@@ -15439,6 +15515,13 @@ nothing between them, because a word every chip carries is a word nobody
15439
15515
  reads. The moment somebody picks a different comparison it appears, which
15440
15516
  makes an unusual filter look unusual. */
15441
15517
  operatorLabel?: (HelixFilterChip["operatorLabel"]) | undefined;
15518
+ /** Whether the remove button is a tab stop of its own.
15519
+
15520
+ `FilterInput` writes `false` on the chips in its `tags` slot: the field's
15521
+ text is its one tab stop, and the arrow keys move from the text to the
15522
+ chips, as in a `multiple` Combobox. No attribute: it is coordination
15523
+ between elements, as `Tag.dismissTabStop` is. */
15524
+ dismissTabStop?: (HelixFilterChip["dismissTabStop"]) | undefined;
15442
15525
 
15443
15526
  /** Fired when the user asks to remove the filter. Cancelable: call `preventDefault()` to keep the chip. */
15444
15527
  "onhelix-dismiss"?: ((e: HelixFilterChipHelixDismissElementEvent) => void) | undefined;
@@ -15515,6 +15598,13 @@ nothing between them, because a word every chip carries is a word nobody
15515
15598
  reads. The moment somebody picks a different comparison it appears, which
15516
15599
  makes an unusual filter look unusual. */
15517
15600
  "prop:operatorLabel"?: (HelixFilterChip["operatorLabel"]) | undefined;
15601
+ /** Whether the remove button is a tab stop of its own.
15602
+
15603
+ `FilterInput` writes `false` on the chips in its `tags` slot: the field's
15604
+ text is its one tab stop, and the arrow keys move from the text to the
15605
+ chips, as in a `multiple` Combobox. No attribute: it is coordination
15606
+ between elements, as `Tag.dismissTabStop` is. */
15607
+ "prop:dismissTabStop"?: (HelixFilterChip["dismissTabStop"]) | undefined;
15518
15608
  /** Fired when the user asks to remove the filter. Cancelable: call `preventDefault()` to keep the chip. */
15519
15609
  "on:helix-dismiss"?: ((e: HelixFilterChipHelixDismissElementEvent) => void) | undefined;
15520
15610
 
@@ -15839,6 +15929,18 @@ and this one was the English a form in another language still spoke in
15839
15929
  the bubble it raises on submit: `feedback` replaces the message under
15840
15930
  the field and does not reach that one. */
15841
15931
  valueMissingMessage?: (HelixFilterInput["valueMissingMessage"]) | undefined;
15932
+ /** Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
15933
+ from the `helix-facet` events it hears.
15934
+
15935
+ Off, you build the chips, which is what you do when your own model holds
15936
+ the filters. On, a filter typed, picked, or changed adds or updates the
15937
+ chip for its field, one with no values takes it away (unless its
15938
+ comparison takes none, such as "is empty"), and removing the chip clears
15939
+ the filter. A `helix-facet` you cancel changes no chip.
15940
+
15941
+ The chips are elements the field adds to its own children, so leave this
15942
+ off where a framework renders those children and would remove them. */
15943
+ chips?: (HelixFilterInput["chips"]) | undefined;
15842
15944
  /** Shows a button that empties the field.
15843
15945
 
15844
15946
  The text only. The tokens are the consumer's markup and this element is not
@@ -15860,6 +15962,29 @@ what you slot and you narrow it. */
15860
15962
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
15861
15963
  what you slot and you narrow it. */
15862
15964
  filterSuggestions?: (HelixFilterInput["filterSuggestions"]) | undefined;
15965
+ /** Whether the suggestions are still loading, such as while a request for the
15966
+ values of a typed key is out.
15967
+
15968
+ The panel opens on `loading-text`, or the `loading` slot, while the field
15969
+ has focus, and a screen reader hears it. Slot the options and clear this
15970
+ when they arrive. */
15971
+ loading?: (HelixFilterInput["loading"]) | undefined;
15972
+ /** Text the panel shows while the suggestions load. */
15973
+ "loading-text"?: (HelixFilterInput["loadingText"]) | undefined;
15974
+ /** Text the panel shows while the suggestions load. */
15975
+ loadingText?: (HelixFilterInput["loadingText"]) | undefined;
15976
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
15977
+ as "No matching filters".
15978
+
15979
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
15980
+ when it has nothing to offer. */
15981
+ "no-results-text"?: (HelixFilterInput["noResultsText"]) | undefined;
15982
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
15983
+ as "No matching filters".
15984
+
15985
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
15986
+ when it has nothing to offer. */
15987
+ noResultsText?: (HelixFilterInput["noResultsText"]) | undefined;
15863
15988
  /** The text shown while the field is empty.
15864
15989
 
15865
15990
  Not a label: it goes when typing starts. */
@@ -16050,6 +16175,18 @@ and this one was the English a form in another language still spoke in
16050
16175
  the bubble it raises on submit: `feedback` replaces the message under
16051
16176
  the field and does not reach that one. */
16052
16177
  "prop:valueMissingMessage"?: (HelixFilterInput["valueMissingMessage"]) | undefined;
16178
+ /** Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
16179
+ from the `helix-facet` events it hears.
16180
+
16181
+ Off, you build the chips, which is what you do when your own model holds
16182
+ the filters. On, a filter typed, picked, or changed adds or updates the
16183
+ chip for its field, one with no values takes it away (unless its
16184
+ comparison takes none, such as "is empty"), and removing the chip clears
16185
+ the filter. A `helix-facet` you cancel changes no chip.
16186
+
16187
+ The chips are elements the field adds to its own children, so leave this
16188
+ off where a framework renders those children and would remove them. */
16189
+ "prop:chips"?: (HelixFilterInput["chips"]) | undefined;
16053
16190
  /** Shows a button that empties the field.
16054
16191
 
16055
16192
  The text only. The tokens are the consumer's markup and this element is not
@@ -16071,6 +16208,29 @@ what you slot and you narrow it. */
16071
16208
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
16072
16209
  what you slot and you narrow it. */
16073
16210
  "prop:filterSuggestions"?: (HelixFilterInput["filterSuggestions"]) | undefined;
16211
+ /** Whether the suggestions are still loading, such as while a request for the
16212
+ values of a typed key is out.
16213
+
16214
+ The panel opens on `loading-text`, or the `loading` slot, while the field
16215
+ has focus, and a screen reader hears it. Slot the options and clear this
16216
+ when they arrive. */
16217
+ "prop:loading"?: (HelixFilterInput["loading"]) | undefined;
16218
+ /** Text the panel shows while the suggestions load. */
16219
+ "attr:loading-text"?: (HelixFilterInput["loadingText"]) | undefined;
16220
+ /** Text the panel shows while the suggestions load. */
16221
+ "prop:loadingText"?: (HelixFilterInput["loadingText"]) | undefined;
16222
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
16223
+ as "No matching filters".
16224
+
16225
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
16226
+ when it has nothing to offer. */
16227
+ "attr:no-results-text"?: (HelixFilterInput["noResultsText"]) | undefined;
16228
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
16229
+ as "No matching filters".
16230
+
16231
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
16232
+ when it has nothing to offer. */
16233
+ "prop:noResultsText"?: (HelixFilterInput["noResultsText"]) | undefined;
16074
16234
  /** The text shown while the field is empty.
16075
16235
 
16076
16236
  Not a label: it goes when typing starts. */
@@ -23766,6 +23926,14 @@ or on Alt+Down or Alt+Up. */
23766
23926
 
23767
23927
  It moves if that side does not fit. */
23768
23928
  placement?: (HelixMenu["placement"]) | undefined;
23929
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
23930
+ how many rows are left, written in the locale, and each language writes
23931
+ the forms it has, as Listbox's `results-label` does. */
23932
+ "results-label"?: (HelixMenu["resultsLabel"]) | undefined;
23933
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
23934
+ how many rows are left, written in the locale, and each language writes
23935
+ the forms it has, as Listbox's `results-label` does. */
23936
+ resultsLabel?: (HelixMenu["resultsLabel"]) | undefined;
23769
23937
  /** How a submenu opens. `drill` shows it in place of the page showing, with
23770
23938
  a way back. `flyout` opens it in a panel of its own beside its row. */
23771
23939
  submenus?: (HelixMenu["submenus"]) | undefined;
@@ -23776,9 +23944,19 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
23776
23944
  Absent, a row is kept where its words hold the filter, in any case. A
23777
23945
  property only, there being no way to write a function in markup. */
23778
23946
  filterMatch?: (HelixMenu["filterMatch"]) | undefined;
23947
+ /** The values of the choice rows that are checked, anywhere in the menu, in
23948
+ document order.
23949
+
23950
+ Set it to check exactly those rows and uncheck every other choice row, as
23951
+ React Aria's `selectedKeys` controls a menu's selection from one place.
23952
+ Each row keeps its own `checked` too, which this reads and writes. `change`
23953
+ is sent on the menu when a reader's choice changes it. */
23954
+ checkedValues?: (HelixMenu["checkedValues"]) | undefined;
23779
23955
 
23780
23956
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
23781
23957
  ontoggle?: ((e: HelixMenuToggleElementEvent) => void) | undefined;
23958
+ /** A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now. */
23959
+ onchange?: ((e: HelixMenuElementEvent) => void) | undefined;
23782
23960
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
23783
23961
  "onhelix-before-close"?: ((e: HelixMenuHelixBeforeCloseElementEvent) => void) | undefined;
23784
23962
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
@@ -23882,6 +24060,14 @@ or on Alt+Down or Alt+Up. */
23882
24060
 
23883
24061
  It moves if that side does not fit. */
23884
24062
  "prop:placement"?: (HelixMenu["placement"]) | undefined;
24063
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
24064
+ how many rows are left, written in the locale, and each language writes
24065
+ the forms it has, as Listbox's `results-label` does. */
24066
+ "attr:results-label"?: (HelixMenu["resultsLabel"]) | undefined;
24067
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
24068
+ how many rows are left, written in the locale, and each language writes
24069
+ the forms it has, as Listbox's `results-label` does. */
24070
+ "prop:resultsLabel"?: (HelixMenu["resultsLabel"]) | undefined;
23885
24071
  /** How a submenu opens. `drill` shows it in place of the page showing, with
23886
24072
  a way back. `flyout` opens it in a panel of its own beside its row. */
23887
24073
  "prop:submenus"?: (HelixMenu["submenus"]) | undefined;
@@ -23892,8 +24078,18 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
23892
24078
  Absent, a row is kept where its words hold the filter, in any case. A
23893
24079
  property only, there being no way to write a function in markup. */
23894
24080
  "prop:filterMatch"?: (HelixMenu["filterMatch"]) | undefined;
24081
+ /** The values of the choice rows that are checked, anywhere in the menu, in
24082
+ document order.
24083
+
24084
+ Set it to check exactly those rows and uncheck every other choice row, as
24085
+ React Aria's `selectedKeys` controls a menu's selection from one place.
24086
+ Each row keeps its own `checked` too, which this reads and writes. `change`
24087
+ is sent on the menu when a reader's choice changes it. */
24088
+ "prop:checkedValues"?: (HelixMenu["checkedValues"]) | undefined;
23895
24089
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
23896
24090
  "on:toggle"?: ((e: HelixMenuToggleElementEvent) => void) | undefined;
24091
+ /** A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now. */
24092
+ "on:change"?: ((e: HelixMenuElementEvent) => void) | undefined;
23897
24093
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
23898
24094
  "on:helix-before-close"?: ((e: HelixMenuHelixBeforeCloseElementEvent) => void) | undefined;
23899
24095
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
@@ -24991,9 +25187,13 @@ speaks it: `feedback` replaces the message under the field and does not
24991
25187
  reach the bubble. Unset is the sentence registered for the page's
24992
25188
  language, then the English. */
24993
25189
  badInputMessage?: (HelixNumberInput["badInputMessage"]) | undefined;
24994
- /** The name of the step down button, read by screen readers. */
25190
+ /** The name of the step down button, read by screen readers. The field's
25191
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25192
+ names its steppers. */
24995
25193
  "decrement-label"?: (HelixNumberInput["decrementLabel"]) | undefined;
24996
- /** The name of the step down button, read by screen readers. */
25194
+ /** The name of the step down button, read by screen readers. The field's
25195
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25196
+ names its steppers. */
24997
25197
  decrementLabel?: (HelixNumberInput["decrementLabel"]) | undefined;
24998
25198
  /** `Intl.NumberFormat` options the number is shown with while the field is
24999
25199
  not being edited: a currency, a percent, a unit, or a number of decimals.
@@ -25011,9 +25211,13 @@ Written as JSON in the attribute.
25011
25211
  <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
25012
25212
  ``` */
25013
25213
  formatOptions?: (HelixNumberInput["formatOptions"]) | undefined;
25014
- /** The name of the step up button, read by screen readers. */
25214
+ /** The name of the step up button, read by screen readers. The field's
25215
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25216
+ names its steppers. */
25015
25217
  "increment-label"?: (HelixNumberInput["incrementLabel"]) | undefined;
25016
- /** The name of the step up button, read by screen readers. */
25218
+ /** The name of the step up button, read by screen readers. The field's
25219
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25220
+ names its steppers. */
25017
25221
  incrementLabel?: (HelixNumberInput["incrementLabel"]) | undefined;
25018
25222
  /** How many steps `PageUp` and `PageDown` move.
25019
25223
 
@@ -25270,9 +25474,13 @@ speaks it: `feedback` replaces the message under the field and does not
25270
25474
  reach the bubble. Unset is the sentence registered for the page's
25271
25475
  language, then the English. */
25272
25476
  "prop:badInputMessage"?: (HelixNumberInput["badInputMessage"]) | undefined;
25273
- /** The name of the step down button, read by screen readers. */
25477
+ /** The name of the step down button, read by screen readers. The field's
25478
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25479
+ names its steppers. */
25274
25480
  "attr:decrement-label"?: (HelixNumberInput["decrementLabel"]) | undefined;
25275
- /** The name of the step down button, read by screen readers. */
25481
+ /** The name of the step down button, read by screen readers. The field's
25482
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25483
+ names its steppers. */
25276
25484
  "prop:decrementLabel"?: (HelixNumberInput["decrementLabel"]) | undefined;
25277
25485
  /** `Intl.NumberFormat` options the number is shown with while the field is
25278
25486
  not being edited: a currency, a percent, a unit, or a number of decimals.
@@ -25290,9 +25498,13 @@ Written as JSON in the attribute.
25290
25498
  <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
25291
25499
  ``` */
25292
25500
  "prop:formatOptions"?: (HelixNumberInput["formatOptions"]) | undefined;
25293
- /** The name of the step up button, read by screen readers. */
25501
+ /** The name of the step up button, read by screen readers. The field's
25502
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25503
+ names its steppers. */
25294
25504
  "attr:increment-label"?: (HelixNumberInput["incrementLabel"]) | undefined;
25295
- /** The name of the step up button, read by screen readers. */
25505
+ /** The name of the step up button, read by screen readers. The field's
25506
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25507
+ names its steppers. */
25296
25508
  "prop:incrementLabel"?: (HelixNumberInput["incrementLabel"]) | undefined;
25297
25509
  /** How many steps `PageUp` and `PageDown` move.
25298
25510
 
@@ -27403,17 +27615,42 @@ hydration, or diffed by a framework, it comes back holding whatever the
27403
27615
  last reader did rather than what the author wrote. `:state(open)` carries
27404
27616
  the resolved state for stylesheets, which is what the mirror is for. */
27405
27617
  open?: (HelixPopover["open"]) | undefined;
27618
+ /** The element the panel opens against, where that is not the trigger: its
27619
+ `id` in the same document or shadow root, or the element itself. Left
27620
+ empty, the panel opens against the trigger, or against the button whose
27621
+ command opened it. */
27622
+ anchor?: (HelixPopover["anchor"]) | undefined;
27406
27623
  /** Draws a point on the panel's edge facing the trigger.
27407
27624
 
27408
27625
  Off by default, which is the house style: a panel that opens from its
27409
27626
  trigger already reads as belonging to it. */
27410
27627
  arrow?: (HelixPopover["arrow"]) | undefined;
27628
+ /** How close to the window's edges the panel may come, in pixels, when it
27629
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27630
+ and shrinks to 8 pixels from an edge and moves to the other side only
27631
+ once it would cross one. */
27632
+ "container-padding"?: (HelixPopover["containerPadding"] | `${number}`) | undefined;
27633
+ /** How close to the window's edges the panel may come, in pixels, when it
27634
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27635
+ and shrinks to 8 pixels from an edge and moves to the other side only
27636
+ once it would cross one. */
27637
+ containerPadding?: (HelixPopover["containerPadding"]) | undefined;
27638
+ /** How far to slide the panel along the side it is on, in pixels: to the
27639
+ right on the top or the bottom, and down on the left or the right. */
27640
+ "cross-offset"?: (HelixPopover["crossOffset"] | `${number}`) | undefined;
27641
+ /** How far to slide the panel along the side it is on, in pixels: to the
27642
+ right on the top or the bottom, and down on the left or the right. */
27643
+ crossOffset?: (HelixPopover["crossOffset"]) | undefined;
27411
27644
  /** The panel's name where nothing else names it: no `label`, no heading in
27412
27645
  the panel, and no `aria-labelledby` on the host. */
27413
27646
  "fallback-label"?: (HelixPopover["fallbackLabel"]) | undefined;
27414
27647
  /** The panel's name where nothing else names it: no `label`, no heading in
27415
27648
  the panel, and no `aria-labelledby` on the host. */
27416
27649
  fallbackLabel?: (HelixPopover["fallbackLabel"]) | undefined;
27650
+ /** Whether the panel moves to the other side of the trigger when its own
27651
+ side has no room. On by default. Write `flip="false"` to keep it on its
27652
+ side, where it shrinks to fit, as React Aria's `shouldFlip` turns off. */
27653
+ flip?: (HelixPopover["flip"]) | undefined;
27417
27654
  /** The panel's name, read by screen readers. Left empty, the first heading in
27418
27655
  the panel names it, and then `fallback-label`. */
27419
27656
  label?: (HelixPopover["label"]) | undefined;
@@ -27467,17 +27704,42 @@ hydration, or diffed by a framework, it comes back holding whatever the
27467
27704
  last reader did rather than what the author wrote. `:state(open)` carries
27468
27705
  the resolved state for stylesheets, which is what the mirror is for. */
27469
27706
  "prop:open"?: (HelixPopover["open"]) | undefined;
27707
+ /** The element the panel opens against, where that is not the trigger: its
27708
+ `id` in the same document or shadow root, or the element itself. Left
27709
+ empty, the panel opens against the trigger, or against the button whose
27710
+ command opened it. */
27711
+ "prop:anchor"?: (HelixPopover["anchor"]) | undefined;
27470
27712
  /** Draws a point on the panel's edge facing the trigger.
27471
27713
 
27472
27714
  Off by default, which is the house style: a panel that opens from its
27473
27715
  trigger already reads as belonging to it. */
27474
27716
  "prop:arrow"?: (HelixPopover["arrow"]) | undefined;
27717
+ /** How close to the window's edges the panel may come, in pixels, when it
27718
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27719
+ and shrinks to 8 pixels from an edge and moves to the other side only
27720
+ once it would cross one. */
27721
+ "attr:container-padding"?: (HelixPopover["containerPadding"] | `${number}`) | undefined;
27722
+ /** How close to the window's edges the panel may come, in pixels, when it
27723
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27724
+ and shrinks to 8 pixels from an edge and moves to the other side only
27725
+ once it would cross one. */
27726
+ "prop:containerPadding"?: (HelixPopover["containerPadding"]) | undefined;
27727
+ /** How far to slide the panel along the side it is on, in pixels: to the
27728
+ right on the top or the bottom, and down on the left or the right. */
27729
+ "attr:cross-offset"?: (HelixPopover["crossOffset"] | `${number}`) | undefined;
27730
+ /** How far to slide the panel along the side it is on, in pixels: to the
27731
+ right on the top or the bottom, and down on the left or the right. */
27732
+ "prop:crossOffset"?: (HelixPopover["crossOffset"]) | undefined;
27475
27733
  /** The panel's name where nothing else names it: no `label`, no heading in
27476
27734
  the panel, and no `aria-labelledby` on the host. */
27477
27735
  "attr:fallback-label"?: (HelixPopover["fallbackLabel"]) | undefined;
27478
27736
  /** The panel's name where nothing else names it: no `label`, no heading in
27479
27737
  the panel, and no `aria-labelledby` on the host. */
27480
27738
  "prop:fallbackLabel"?: (HelixPopover["fallbackLabel"]) | undefined;
27739
+ /** Whether the panel moves to the other side of the trigger when its own
27740
+ side has no room. On by default. Write `flip="false"` to keep it on its
27741
+ side, where it shrinks to fit, as React Aria's `shouldFlip` turns off. */
27742
+ "prop:flip"?: (HelixPopover["flip"]) | undefined;
27481
27743
  /** The panel's name, read by screen readers. Left empty, the first heading in
27482
27744
  the panel names it, and then `fallback-label`. */
27483
27745
  "prop:label"?: (HelixPopover["label"]) | undefined;
@@ -29131,6 +29393,11 @@ it, here or anywhere: a frame is a document of its own and what is written
29131
29393
  on this host reaches nothing inside it, which is the same reason
29132
29394
  `colorMode` has to be sent rather than set. */
29133
29395
  direction?: (HelixSandboxPreview["direction"]) | undefined;
29396
+ /** The packages an example can import by name in the built-in document,
29397
+ each mapped to the address of an ES module, as an import map's `imports`.
29398
+ Set it as JSON in the attribute or as an object. Not read where `src` is
29399
+ set. */
29400
+ imports?: (HelixSandboxPreview["imports"]) | undefined;
29134
29401
  /** The frame's name, read by screen readers. */
29135
29402
  label?: (HelixSandboxPreview["label"]) | undefined;
29136
29403
  /** How the example is placed in the frame.
@@ -29213,6 +29480,11 @@ it, here or anywhere: a frame is a document of its own and what is written
29213
29480
  on this host reaches nothing inside it, which is the same reason
29214
29481
  `colorMode` has to be sent rather than set. */
29215
29482
  "prop:direction"?: (HelixSandboxPreview["direction"]) | undefined;
29483
+ /** The packages an example can import by name in the built-in document,
29484
+ each mapped to the address of an ES module, as an import map's `imports`.
29485
+ Set it as JSON in the attribute or as an object. Not read where `src` is
29486
+ set. */
29487
+ "prop:imports"?: (HelixSandboxPreview["imports"]) | undefined;
29216
29488
  /** The frame's name, read by screen readers. */
29217
29489
  "prop:label"?: (HelixSandboxPreview["label"]) | undefined;
29218
29490
  /** How the example is placed in the frame.
@@ -29652,6 +29924,10 @@ the pane's `label`. */
29652
29924
  /** The pane's file name, such as `index.html`, on its tab where a sandbox
29653
29925
  holds several panes. Empty puts the pane's `name` on the tab. */
29654
29926
  label?: (HelixSandboxSource["label"]) | undefined;
29927
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29928
+ "line-numbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29929
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29930
+ lineNumbers?: (HelixSandboxSource["lineNumbers"]) | undefined;
29655
29931
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
29656
29932
 
29657
29933
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -29708,6 +29984,10 @@ the pane's `label`. */
29708
29984
  /** The pane's file name, such as `index.html`, on its tab where a sandbox
29709
29985
  holds several panes. Empty puts the pane's `name` on the tab. */
29710
29986
  "prop:label"?: (HelixSandboxSource["label"]) | undefined;
29987
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29988
+ "bool:line-numbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29989
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29990
+ "prop:lineNumbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29711
29991
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
29712
29992
 
29713
29993
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -32687,7 +32967,8 @@ Ignored once `active` is written. */
32687
32967
  Ignored once `active` is written. */
32688
32968
  defaultActive?: (HelixSteps["defaultActive"]) | undefined;
32689
32969
  /** Whether the arrow keys move focus between the stages' names, along the
32690
- way the steps run. Off by default, so the arrows keep scrolling the page. */
32970
+ way the steps run, and the names are one tab stop. Off by default, so the
32971
+ arrows keep scrolling the page. */
32691
32972
  arrows?: (HelixSteps["arrows"]) | undefined;
32692
32973
  /** What marks a stage `complete`.
32693
32974
 
@@ -32771,7 +33052,8 @@ Ignored once `active` is written. */
32771
33052
  Ignored once `active` is written. */
32772
33053
  "prop:defaultActive"?: (HelixSteps["defaultActive"]) | undefined;
32773
33054
  /** Whether the arrow keys move focus between the stages' names, along the
32774
- way the steps run. Off by default, so the arrows keep scrolling the page. */
33055
+ way the steps run, and the names are one tab stop. Off by default, so the
33056
+ arrows keep scrolling the page. */
32775
33057
  "prop:arrows"?: (HelixSteps["arrows"]) | undefined;
32776
33058
  /** What marks a stage `complete`.
32777
33059
 
@@ -32872,7 +33154,9 @@ with the page. */
32872
33154
  /** Whether a reader may pass the stage without finishing it, in a sequence
32873
33155
  with `linear`. Ark UI's skippable step. */
32874
33156
  optional?: (HelixStep["optional"]) | undefined;
32875
- /** The value the step sends in `helix-select`. */
33157
+ /** The value the step sends in `helix-select`, and what names the step in its
33158
+ sequence's `active`. Without one, the sequence names the step by its place,
33159
+ counted from 1. */
32876
33160
  value?: (HelixStep["value"]) | undefined;
32877
33161
 
32878
33162
  /** Fired when the step is pressed. Cancelable: cancel it to keep the current step. */
@@ -32905,7 +33189,9 @@ with the page. */
32905
33189
  /** Whether a reader may pass the stage without finishing it, in a sequence
32906
33190
  with `linear`. Ark UI's skippable step. */
32907
33191
  "prop:optional"?: (HelixStep["optional"]) | undefined;
32908
- /** The value the step sends in `helix-select`. */
33192
+ /** The value the step sends in `helix-select`, and what names the step in its
33193
+ sequence's `active`. Without one, the sequence names the step by its place,
33194
+ counted from 1. */
32909
33195
  "prop:value"?: (HelixStep["value"]) | undefined;
32910
33196
  /** Fired when the step is pressed. Cancelable: cancel it to keep the current step. */
32911
33197
  "on:helix-select"?: ((e: HelixStepHelixSelectElementEvent) => void) | undefined;
@@ -45248,6 +45534,9 @@ export type CustomElements = {
45248
45534
  *
45249
45535
  * Component attributes and properties that can be applied to the element or by using JavaScript.
45250
45536
  *
45537
+ * - `feedback`: A message about the draft, shown under the field. While set, the composer
45538
+ * is invalid, does not send, and does not submit, as a field's `feedback`
45539
+ * does, and the message is announced as it appears.
45251
45540
  * - `label`: The field's name, read by screen readers.
45252
45541
  * - `maxlength`/`maxLength`: The most characters a draft can have. The field stops taking more.
45253
45542
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
@@ -45413,6 +45702,7 @@ export type CustomElements = {
45413
45702
  * - `tools`: The row under the field.
45414
45703
  * - `composer`: The whole composer.
45415
45704
  * - `end`: The box around the `end` slot.
45705
+ * - `feedback`: The `feedback` message, under the field while it is set.
45416
45706
  * - `mark`: The icon inside the send button.
45417
45707
  * - `start`: The box around the `start` slot.
45418
45708
  *
@@ -45420,7 +45710,7 @@ export type CustomElements = {
45420
45710
  *
45421
45711
  * These can be used to apply styling when a component is in a given state.
45422
45712
  *
45423
- * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it.
45713
+ * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
45424
45714
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
45425
45715
  */
45426
45716
  "helix-chat-composer": Partial<
@@ -45776,6 +46066,10 @@ export type CustomElements = {
45776
46066
  *
45777
46067
  * These can be used to apply styling when a component is in a given state.
45778
46068
  *
46069
+ * - `empty`: The conversation has no turns.
46070
+ * - `loading`: Older turns are loading: `history` is `loading`.
46071
+ * - `pinned`: The transcript follows its newest turn.
46072
+ * - `typing`: `typing` names someone on the other side.
45779
46073
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
45780
46074
  */
45781
46075
  "helix-chat": Partial<HelixChatProps & BaseProps<HelixChat> & BaseEvents<HelixChat>>;
@@ -46301,6 +46595,8 @@ export type CustomElements = {
46301
46595
  *
46302
46596
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46303
46597
  *
46598
+ * - `added-lines`/`addedLines`: The lines to mark as inserted, as numbers and ranges counted from 1, such
46599
+ * as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.
46304
46600
  * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
46305
46601
  *
46306
46602
  * Where the block has a name, the scroller says it too, such as "Code,
@@ -46377,6 +46673,8 @@ export type CustomElements = {
46377
46673
  * `no-copy=""` on hosts that never asked for one, and the rule about a
46378
46674
  * reflected property taking no default is satisfied by the default being
46379
46675
  * `false`.
46676
+ * - `removed-lines`/`removedLines`: The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
46677
+ * as `mark-lines` is, in the removed color. Not for a diff.
46380
46678
  * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
46381
46679
  * diff with `context-lines`. `{count}` is how many.
46382
46680
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
@@ -46456,6 +46754,8 @@ export type CustomElements = {
46456
46754
  * - `actions`: Controls for the block, in the header before the copy button.
46457
46755
  * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
46458
46756
  * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
46757
+ * - `expand-icon`: An icon on the button that shows every line of a capped block, before its words.
46758
+ * - `label`: The block's name in the header, such as a file icon beside the file name. Replaces `label` and `language` there, and draws the header.
46459
46759
  *
46460
46760
  * ## CSS Custom Properties
46461
46761
  *
@@ -46520,7 +46820,9 @@ export type CustomElements = {
46520
46820
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
46521
46821
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
46522
46822
  * - `label`: The block's name: its `label`, or its `language` where it has no label.
46523
- * - `mark`: The band behind a run of lines `mark-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
46823
+ * - `mark`: The band behind a run of lines `mark-lines`, `added-lines` or `removed-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
46824
+ * - `mark-added`: The band behind a run of lines `added-lines` names. Applied with `mark`.
46825
+ * - `mark-removed`: The band behind a run of lines `removed-lines` names. Applied with `mark`.
46524
46826
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
46525
46827
  * - `new`: In a split diff, the new version's `<pre>`.
46526
46828
  * - `number`: In a diff, a line number. In a `wrap` block with `line-numbers`, one line's number in the gutter, which the block makes as tall as the line it numbers through `--code-block-line-size`.
@@ -47129,10 +47431,11 @@ export type CustomElements = {
47129
47431
  * the anchor the browser points its bubble at.
47130
47432
  *
47131
47433
  * **Text that is not a color is bad input**, so a form does not submit
47132
- * `#00` from a half-typed value. The picker draws no message of its own, so
47133
- * reporting it as each keystroke arrives shows nothing until the form asks;
47134
- * Color Input shows its own message against the field the reader typed
47135
- * into.
47434
+ * `#00` from a half-typed value. The picker marks it, and says
47435
+ * `badInputMessage` under itself, once the reader leaves the value field or
47436
+ * presses Enter, and a missing color once the reader has committed one or a
47437
+ * form has refused the picker. Color Input shows its own message against the
47438
+ * field the reader typed into.
47136
47439
  * - `saturation-label`/`saturationLabel`: What the square's horizontal ramp is called.
47137
47440
  * - `square-text`/`squareText`: What a screen reader hears for the square's place, the color's two
47138
47441
  * numbers and its name, on whichever of its two inputs it is on.
@@ -47231,12 +47534,8 @@ export type CustomElements = {
47231
47534
  *
47232
47535
  * Methods that can be called to access component functionality.
47233
47536
  *
47234
- * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
47235
- * where there is no `default-value`.
47236
- *
47237
- * Both halves are dropped, the consumer's and the control's, because a
47238
- * reset means the form is as it was served. Clearing only the internal one
47239
- * would leave a control that had been written to stuck at that value.
47537
+ * - `formResetCallback() => void`: A reset ends any typing and takes back text that was not a color, so the
47538
+ * field shows the color the reset put back.
47240
47539
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
47241
47540
  *
47242
47541
  * Announces before it acts, so `preventDefault()` on the `helix-before-change` is
@@ -47335,7 +47634,7 @@ export type CustomElements = {
47335
47634
  * - `eyedropper-live`: The live region of the button inside `eyedropper`, which says its pending label.
47336
47635
  * - `eyedropper-spinner`: The ring the eyedropper button turns while it is pending.
47337
47636
  * - `eyedropper-text`: The words on the button inside `eyedropper`, trimmed to their capitals and baseline.
47338
- * - `feedback`: The message under the picker, while `feedback` is set.
47637
+ * - `feedback`: The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.
47339
47638
  * - `field`: One channel's number field with its label, in `channel-fields`.
47340
47639
  * - `field-input`: The number input in a channel's field.
47341
47640
  * - `field-label`: The name above a channel's number input.
@@ -47502,12 +47801,13 @@ export type CustomElements = {
47502
47801
  * language.
47503
47802
  * - `multiple`: Whether more than one option can be chosen.
47504
47803
  *
47505
- * The list already does the work: `value` comes apart on commas, a press
47506
- * toggles rather than replaces, and the arrows move without choosing. What
47507
- * this adds is the tags, and keeping the panel open between picks.
47804
+ * The list already does the work: `value` is the chosen values joined with
47805
+ * commas, a press toggles rather than replaces, and the arrows move without
47806
+ * choosing. What this adds is the tags, and keeping the panel open between
47807
+ * picks.
47508
47808
  *
47509
- * A comma is therefore not available inside an option's value, which is the
47510
- * listbox's contract and not this element's to change.
47809
+ * An option's value may hold a comma, and it is read as one value, as
47810
+ * `Select` and `Listbox` read it. So may an answer the reader created.
47511
47811
  *
47512
47812
  * **The list is told, and the field is not.** `aria-multiselectable` belongs
47513
47813
  * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -47798,6 +48098,11 @@ export type CustomElements = {
47798
48098
  * - `filter-delay`/`filterDelay`: How long typing rests before the commands are filtered, in milliseconds,
47799
48099
  * so a palette filtered on a server sends one `helix-filter` for a word.
47800
48100
  * `0` filters on every keystroke. See Listbox's `filter-delay`.
48101
+ * - `home-end`/`homeEnd`: Where Home and End go from the filter field.
48102
+ *
48103
+ * Absent, they move the caret, as APG's combobox has them. `list` moves the
48104
+ * highlight to the first or the last command, as React Aria's Autocomplete
48105
+ * does, and Shift with either still selects the text.
47801
48106
  * - `hotkey`: The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
47802
48107
  * in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
47803
48108
  * `alt` and `shift` the keys they name.
@@ -47812,6 +48117,9 @@ export type CustomElements = {
47812
48117
  * Choosing a command says `helix-select` and leaves the list where it is,
47813
48118
  * and `open`, `toggle` and the dialog's parts do nothing.
47814
48119
  * - `label`: Accessible name for the overlay, which has no visible heading.
48120
+ * - `layout`: How the commands are laid out, as Listbox's `layout`: `grid` draws them in
48121
+ * rows and columns, for a palette of icons or emoji, and the arrow keys
48122
+ * follow the rows and the columns. Absent is one command under another.
47815
48123
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
47816
48124
  * request to a server fails. Empty, null or no attribute is no error, so
47817
48125
  * removing the attribute clears it. Passed to the list, which shows it
@@ -48426,6 +48734,10 @@ export type CustomElements = {
48426
48734
  * Off by default. Windowing costs a scroll listener, a measurement per row
48427
48735
  * drawn, and a `block-size` on the scrolling box, and a table of twenty rows
48428
48736
  * should pay none of them.
48737
+ *
48738
+ * While windowed, the `table` part scrolls on this tier: it carries
48739
+ * `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
48740
+ * every shadow root. You still need to give it a block size.
48429
48741
  * - `rows`: Every row of the result, in the order it arrived.
48430
48742
  *
48431
48743
  * A property and not an attribute: it is an array. Left alone this element
@@ -51210,6 +51522,12 @@ export type CustomElements = {
51210
51522
  * nothing between them, because a word every chip carries is a word nobody
51211
51523
  * reads. The moment somebody picks a different comparison it appears, which
51212
51524
  * makes an unusual filter look unusual.
51525
+ * - `dismissTabStop`: Whether the remove button is a tab stop of its own.
51526
+ *
51527
+ * `FilterInput` writes `false` on the chips in its `tags` slot: the field's
51528
+ * text is its one tab stop, and the arrow keys move from the text to the
51529
+ * chips, as in a `multiple` Combobox. No attribute: it is coordination
51530
+ * between elements, as `Tag.dismissTabStop` is. (property only)
51213
51531
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
51214
51532
  *
51215
51533
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -51667,6 +51985,17 @@ export type CustomElements = {
51667
51985
  * and this one was the English a form in another language still spoke in
51668
51986
  * the bubble it raises on submit: `feedback` replaces the message under
51669
51987
  * the field and does not reach that one.
51988
+ * - `chips`: Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
51989
+ * from the `helix-facet` events it hears.
51990
+ *
51991
+ * Off, you build the chips, which is what you do when your own model holds
51992
+ * the filters. On, a filter typed, picked, or changed adds or updates the
51993
+ * chip for its field, one with no values takes it away (unless its
51994
+ * comparison takes none, such as "is empty"), and removing the chip clears
51995
+ * the filter. A `helix-facet` you cancel changes no chip.
51996
+ *
51997
+ * The chips are elements the field adds to its own children, so leave this
51998
+ * off where a framework renders those children and would remove them.
51670
51999
  * - `clearable`: Shows a button that empties the field.
51671
52000
  *
51672
52001
  * The text only. The tokens are the consumer's markup and this element is not
@@ -51678,6 +52007,18 @@ export type CustomElements = {
51678
52007
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
51679
52008
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
51680
52009
  * what you slot and you narrow it.
52010
+ * - `loading`: Whether the suggestions are still loading, such as while a request for the
52011
+ * values of a typed key is out.
52012
+ *
52013
+ * The panel opens on `loading-text`, or the `loading` slot, while the field
52014
+ * has focus, and a screen reader hears it. Slot the options and clear this
52015
+ * when they arrive.
52016
+ * - `loading-text`/`loadingText`: Text the panel shows while the suggestions load.
52017
+ * - `no-results-text`/`noResultsText`: Text the panel shows when `filter-suggestions` hides every suggestion, such
52018
+ * as "No matching filters".
52019
+ *
52020
+ * Empty, or no `no-results` slot, and the panel closes instead, as it does
52021
+ * when it has nothing to offer.
51681
52022
  * - `placeholder`: The text shown while the field is empty.
51682
52023
  *
51683
52024
  * Not a label: it goes when typing starts.
@@ -51780,6 +52121,8 @@ export type CustomElements = {
51780
52121
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
51781
52122
  * - `hint`: Help under the control, for content richer than the `hint` text.
51782
52123
  * - `label`: The label, for content richer than the `label` text.
52124
+ * - `loading`: What the panel shows while `loading` is set, for content richer than `loading-text`.
52125
+ * - `no-results`: What the panel shows when `filter-suggestions` hides every suggestion, for content richer than `no-results-text`.
51783
52126
  * - `start`: Content before the text, such as a search icon.
51784
52127
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
51785
52128
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -51883,12 +52226,14 @@ export type CustomElements = {
51883
52226
  *
51884
52227
  * - `clear`: The button that empties the field.
51885
52228
  * - `control`: The input itself.
52229
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
51886
52230
  * - `feedback`: The error message under the field.
51887
52231
  * - `field`: The box that holds everything.
51888
52232
  * - `hint`: The help text under the field, shown while there is no error.
51889
52233
  * - `label`: The label above the field.
51890
52234
  * - `lead`: The box before the text that holds the `start` slot.
51891
52235
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
52236
+ * - `loading`: Shown in the panel while the suggestions load.
51892
52237
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
51893
52238
  * - `surface`: The floating panel the suggestions sit in.
51894
52239
  * - `tags`: The row the tokens sit in.
@@ -51898,6 +52243,8 @@ export type CustomElements = {
51898
52243
  * These can be used to apply styling when a component is in a given state.
51899
52244
  *
51900
52245
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
52246
+ * - `loading`: While `loading` is set.
52247
+ * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
51901
52248
  * - `open`: The suggestions are open.
51902
52249
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
51903
52250
  */
@@ -53763,6 +54110,9 @@ export type CustomElements = {
53763
54110
  * Falling back to what the markup declared rather than to empty, because
53764
54111
  * a restore with no state is a form the browser has nothing recorded for,
53765
54112
  * which is the same situation as a fresh one.
54113
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
54114
+ * where `start` and `end` are left out, and `selectMode` says what is
54115
+ * selected after. It sends no event, as the native method sends none.
53766
54116
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
53767
54117
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
53768
54118
  *
@@ -57053,6 +57403,8 @@ export type CustomElements = {
57053
57403
  * These can be used to apply styling when a component is in a given state.
57054
57404
  *
57055
57405
  * - `checked`: The row is checked.
57406
+ * - `disabled`: The row is disabled.
57407
+ * - `expanded`: Under `submenus="flyout"`, the row's submenu is open beside it.
57056
57408
  * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
57057
57409
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
57058
57410
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
@@ -57123,6 +57475,9 @@ export type CustomElements = {
57123
57475
  * - `placement`: The side the menu opens on, when there is room.
57124
57476
  *
57125
57477
  * It moves if that side does not fit.
57478
+ * - `results-label`/`resultsLabel`: What a screen reader hears when the filter narrows the rows. `{count}` is
57479
+ * how many rows are left, written in the locale, and each language writes
57480
+ * the forms it has, as Listbox's `results-label` does.
57126
57481
  * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
57127
57482
  * a way back. `flyout` opens it in a panel of its own beside its row.
57128
57483
  * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
@@ -57131,6 +57486,13 @@ export type CustomElements = {
57131
57486
  *
57132
57487
  * Absent, a row is kept where its words hold the filter, in any case. A
57133
57488
  * property only, there being no way to write a function in markup. (property only)
57489
+ * - `checkedValues`: The values of the choice rows that are checked, anywhere in the menu, in
57490
+ * document order.
57491
+ *
57492
+ * Set it to check exactly those rows and uncheck every other choice row, as
57493
+ * React Aria's `selectedKeys` controls a menu's selection from one place.
57494
+ * Each row keeps its own `checked` too, which this reads and writes. `change`
57495
+ * is sent on the menu when a reader's choice changes it. (property only)
57134
57496
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
57135
57497
  *
57136
57498
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57157,6 +57519,7 @@ export type CustomElements = {
57157
57519
  * Events that will be emitted by the component.
57158
57520
  *
57159
57521
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
57522
+ * - `change`: A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now.
57160
57523
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
57161
57524
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
57162
57525
  * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
@@ -57167,6 +57530,8 @@ export type CustomElements = {
57167
57530
  * Areas where markup can be added to the component.
57168
57531
  *
57169
57532
  * - `(default)`: The items.
57533
+ * - `empty`: What the menu shows when it has no items, for content richer than `empty-text`.
57534
+ * - `loading`: What the menu shows while its items load, for content richer than `loading-text`.
57170
57535
  * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
57171
57536
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
57172
57537
  *
@@ -57218,6 +57583,8 @@ export type CustomElements = {
57218
57583
  * These can be used to apply styling when a component is in a given state.
57219
57584
  *
57220
57585
  * - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
57586
+ * - `entering`: From the moment the panel shows until its entrance has finished.
57587
+ * - `exiting`: From the moment the panel hides until its exit has finished.
57221
57588
  * - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
57222
57589
  * - `open`: While the menu is open.
57223
57590
  * - `placed-bottom`: While the open panel sits below its trigger.
@@ -58211,7 +58578,9 @@ export type CustomElements = {
58211
58578
  * speaks it: `feedback` replaces the message under the field and does not
58212
58579
  * reach the bubble. Unset is the sentence registered for the page's
58213
58580
  * language, then the English.
58214
- * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers.
58581
+ * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers. The field's
58582
+ * label follows it, so a reader hears "Decrease Quantity", as React Aria
58583
+ * names its steppers.
58215
58584
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
58216
58585
  * not being edited: a currency, a percent, a unit, or a number of decimals.
58217
58586
  * Written as JSON in the attribute.
@@ -58219,7 +58588,9 @@ export type CustomElements = {
58219
58588
  * ```html
58220
58589
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
58221
58590
  * ```
58222
- * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers.
58591
+ * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers. The field's
58592
+ * label follows it, so a reader hears "Increase Quantity", as React Aria
58593
+ * names its steppers.
58223
58594
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
58224
58595
  *
58225
58596
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -58380,8 +58751,10 @@ export type CustomElements = {
58380
58751
  * Falling back to what the markup declared rather than to empty, because
58381
58752
  * a restore with no state is a form the browser has nothing recorded for,
58382
58753
  * which is the same situation as a fresh one.
58383
- * - `stepUp(large = false) => void`: Steps the value up, by `largeStep` steps when `large` is set.
58384
- * - `stepDown(large = false) => void`: Steps the value down, by `largeStep` steps when `large` is set.
58754
+ * - `stepUp(count: number | boolean = 1) => void`: Steps the value up by `step`, `count` times, as the native method and
58755
+ * `Input.stepUp` do. `true` takes `largeStep` steps, as `PageUp` does.
58756
+ * - `stepDown(count: number | boolean = 1) => void`: Steps the value down by `step`, `count` times. `true` takes `largeStep`
58757
+ * steps, as `PageDown` does.
58385
58758
  *
58386
58759
  * The same path a press of the down arrow takes, so a consumer driving this
58387
58760
  * from their own control gets the clamping and the announcement rather than
@@ -60073,12 +60446,25 @@ export type CustomElements = {
60073
60446
  * hydration, or diffed by a framework, it comes back holding whatever the
60074
60447
  * last reader did rather than what the author wrote. `:state(open)` carries
60075
60448
  * the resolved state for stylesheets, which is what the mirror is for.
60449
+ * - `anchor`: The element the panel opens against, where that is not the trigger: its
60450
+ * `id` in the same document or shadow root, or the element itself. Left
60451
+ * empty, the panel opens against the trigger, or against the button whose
60452
+ * command opened it.
60076
60453
  * - `arrow`: Draws a point on the panel's edge facing the trigger.
60077
60454
  *
60078
60455
  * Off by default, which is the house style: a panel that opens from its
60079
60456
  * trigger already reads as belonging to it.
60457
+ * - `container-padding`/`containerPadding`: How close to the window's edges the panel may come, in pixels, when it
60458
+ * slides, shrinks or moves to the other side to fit. Left unset, it slides
60459
+ * and shrinks to 8 pixels from an edge and moves to the other side only
60460
+ * once it would cross one.
60461
+ * - `cross-offset`/`crossOffset`: How far to slide the panel along the side it is on, in pixels: to the
60462
+ * right on the top or the bottom, and down on the left or the right.
60080
60463
  * - `fallback-label`/`fallbackLabel`: The panel's name where nothing else names it: no `label`, no heading in
60081
60464
  * the panel, and no `aria-labelledby` on the host.
60465
+ * - `flip`: Whether the panel moves to the other side of the trigger when its own
60466
+ * side has no room. On by default. Write `flip="false"` to keep it on its
60467
+ * side, where it shrinks to fit, as React Aria's `shouldFlip` turns off.
60082
60468
  * - `label`: The panel's name, read by screen readers. Left empty, the first heading in
60083
60469
  * the panel names it, and then `fallback-label`.
60084
60470
  * - `modal`: Keeps `Tab` inside the panel while it is open, marks the panel
@@ -60170,6 +60556,8 @@ export type CustomElements = {
60170
60556
  *
60171
60557
  * These can be used to apply styling when a component is in a given state.
60172
60558
  *
60559
+ * - `aligned-end`: While the panel is aligned to the end of the side it sits on.
60560
+ * - `aligned-start`: While the panel is aligned to the start of the side it sits on.
60173
60561
  * - `entering`: From the moment the panel shows until its entrance has finished.
60174
60562
  * - `exiting`: From the moment the panel hides until its exit has finished.
60175
60563
  * - `open`: While the popover is open.
@@ -61322,6 +61710,15 @@ export type CustomElements = {
61322
61710
  * `servePreview` does. It defines no element, so an example that uses Helix
61323
61711
  * components needs a `src` that imports them.
61324
61712
  *
61713
+ * **`imports` lets an example import packages by name** in the built-in
61714
+ * document, as an import map: each name maps to the address of an ES module,
61715
+ * such as `{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}`, and
61716
+ * `import confetti from 'canvas-confetti'` in the `js` pane then loads it. A
61717
+ * CDN that serves npm packages as modules, such as esm.sh or jsDelivr's
61718
+ * `+esm`, gives every package an address. A new map loads the document again,
61719
+ * since a browser reads one only as a document starts. A `src` document
61720
+ * declares its own.
61721
+ *
61325
61722
  * **Examples render in a frame**, so an example's styles and scripts do not
61326
61723
  * affect the page around the sandbox, and `position: fixed` stays inside the
61327
61724
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -61374,6 +61771,10 @@ export type CustomElements = {
61374
61771
  * it, here or anywhere: a frame is a document of its own and what is written
61375
61772
  * on this host reaches nothing inside it, which is the same reason
61376
61773
  * `colorMode` has to be sent rather than set.
61774
+ * - `imports`: The packages an example can import by name in the built-in document,
61775
+ * each mapped to the address of an ES module, as an import map's `imports`.
61776
+ * Set it as JSON in the attribute or as an object. Not read where `src` is
61777
+ * set.
61377
61778
  * - `label`: The frame's name, read by screen readers.
61378
61779
  * - `layout`: How the example is placed in the frame.
61379
61780
  *
@@ -61691,6 +62092,18 @@ export type CustomElements = {
61691
62092
  * that throws leaves the source drawn plain and the field editable, and the
61692
62093
  * error is reported to the page as an uncaught one.
61693
62094
  *
62095
+ * **`line-numbers` numbers each line** in a gutter beside the source. A line
62096
+ * that wraps keeps one number. The numbers are drawn, and hidden from screen
62097
+ * readers, which read the field.
62098
+ *
62099
+ * Enter keeps the indentation of the line it breaks, and the new line is
62100
+ * undone with the next undo as typing is.
62101
+ *
62102
+ * **The source can be written inside the pane** where `value` is not set: its
62103
+ * text, or the markup of a `<template>` it holds, without the indentation the
62104
+ * page gave it. Markup goes in a template so the page does not render it or
62105
+ * run its scripts. Text inside the pane is read once, when it connects.
62106
+ *
61694
62107
  * ## Attributes & Properties
61695
62108
  *
61696
62109
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -61702,6 +62115,7 @@ export type CustomElements = {
61702
62115
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
61703
62116
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
61704
62117
  * holds several panes. Empty puts the pane's `name` on the tab.
62118
+ * - `line-numbers`/`lineNumbers`: Whether each line of the source is numbered, in a gutter beside it.
61705
62119
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
61706
62120
  *
61707
62121
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -61760,6 +62174,7 @@ export type CustomElements = {
61760
62174
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
61761
62175
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
61762
62176
  * - `--sandbox-source-keyword-color`: Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`.
62177
+ * - `--sandbox-source-line-number-color`: Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`.
61763
62178
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
61764
62179
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
61765
62180
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -61769,8 +62184,9 @@ export type CustomElements = {
61769
62184
  *
61770
62185
  * Custom selectors for styling elements within the component.
61771
62186
  *
61772
- * - `field`: The box that scrolls the field and its colors together, under `tokenize`.
61773
- * - `highlight`: The colored copy of the source drawn under the field, under `tokenize`.
62187
+ * - `field`: The box that scrolls the field and its colors together, under `tokenize` or `line-numbers`.
62188
+ * - `highlight`: The colored copy of the source drawn under the field, under `tokenize` or `line-numbers`.
62189
+ * - `line`: One line of that copy, under `line-numbers`, numbered in the gutter by its `::before`.
61774
62190
  * - `source`: The editable region.
61775
62191
  * - `token`: One run of the source that has a kind, under `tokenize`.
61776
62192
  *
@@ -64312,7 +64728,8 @@ export type CustomElements = {
64312
64728
  *
64313
64729
  * Ignored once `active` is written.
64314
64730
  * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
64315
- * way the steps run. Off by default, so the arrows keep scrolling the page.
64731
+ * way the steps run, and the names are one tab stop. Off by default, so the
64732
+ * arrows keep scrolling the page.
64316
64733
  * - `completion`: What marks a stage `complete`.
64317
64734
  *
64318
64735
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -64467,7 +64884,9 @@ export type CustomElements = {
64467
64884
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
64468
64885
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
64469
64886
  * with `linear`. Ark UI's skippable step.
64470
- * - `value`: The value the step sends in `helix-select`.
64887
+ * - `value`: The value the step sends in `helix-select`, and what names the step in its
64888
+ * sequence's `active`. Without one, the sequence names the step by its place,
64889
+ * counted from 1.
64471
64890
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
64472
64891
  *
64473
64892
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -66515,6 +66934,10 @@ export type CustomElements = {
66515
66934
  * along, so the two writes a consumer would make in sequence do not compose
66516
66935
  * into the range they asked for. The platform has this method for that reason
66517
66936
  * and so does this.
66937
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
66938
+ * where `start` and `end` are left out, and `selectMode` says what is
66939
+ * selected after. It sends no event, as the native method sends none.
66940
+ * - `select() => void`: Selects everything in the field.
66518
66941
  * - `focus(options?: FocusOptions) => void`: Moves focus to the control, as focusing a native control does.
66519
66942
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
66520
66943
  *
@@ -74504,6 +74927,9 @@ export type CustomElementsSolidJs = {
74504
74927
  *
74505
74928
  * Component attributes and properties that can be applied to the element or by using JavaScript.
74506
74929
  *
74930
+ * - `feedback`: A message about the draft, shown under the field. While set, the composer
74931
+ * is invalid, does not send, and does not submit, as a field's `feedback`
74932
+ * does, and the message is announced as it appears.
74507
74933
  * - `label`: The field's name, read by screen readers.
74508
74934
  * - `maxlength`/`maxLength`: The most characters a draft can have. The field stops taking more.
74509
74935
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
@@ -74669,6 +75095,7 @@ export type CustomElementsSolidJs = {
74669
75095
  * - `tools`: The row under the field.
74670
75096
  * - `composer`: The whole composer.
74671
75097
  * - `end`: The box around the `end` slot.
75098
+ * - `feedback`: The `feedback` message, under the field while it is set.
74672
75099
  * - `mark`: The icon inside the send button.
74673
75100
  * - `start`: The box around the `start` slot.
74674
75101
  *
@@ -74676,7 +75103,7 @@ export type CustomElementsSolidJs = {
74676
75103
  *
74677
75104
  * These can be used to apply styling when a component is in a given state.
74678
75105
  *
74679
- * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it.
75106
+ * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
74680
75107
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
74681
75108
  */
74682
75109
  "helix-chat-composer": Partial<
@@ -75038,6 +75465,10 @@ export type CustomElementsSolidJs = {
75038
75465
  *
75039
75466
  * These can be used to apply styling when a component is in a given state.
75040
75467
  *
75468
+ * - `empty`: The conversation has no turns.
75469
+ * - `loading`: Older turns are loading: `history` is `loading`.
75470
+ * - `pinned`: The transcript follows its newest turn.
75471
+ * - `typing`: `typing` names someone on the other side.
75041
75472
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75042
75473
  */
75043
75474
  "helix-chat": Partial<
@@ -75571,6 +76002,8 @@ export type CustomElementsSolidJs = {
75571
76002
  *
75572
76003
  * Component attributes and properties that can be applied to the element or by using JavaScript.
75573
76004
  *
76005
+ * - `added-lines`/`addedLines`: The lines to mark as inserted, as numbers and ranges counted from 1, such
76006
+ * as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.
75574
76007
  * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
75575
76008
  *
75576
76009
  * Where the block has a name, the scroller says it too, such as "Code,
@@ -75647,6 +76080,8 @@ export type CustomElementsSolidJs = {
75647
76080
  * `no-copy=""` on hosts that never asked for one, and the rule about a
75648
76081
  * reflected property taking no default is satisfied by the default being
75649
76082
  * `false`.
76083
+ * - `removed-lines`/`removedLines`: The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
76084
+ * as `mark-lines` is, in the removed color. Not for a diff.
75650
76085
  * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
75651
76086
  * diff with `context-lines`. `{count}` is how many.
75652
76087
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
@@ -75726,6 +76161,8 @@ export type CustomElementsSolidJs = {
75726
76161
  * - `actions`: Controls for the block, in the header before the copy button.
75727
76162
  * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
75728
76163
  * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
76164
+ * - `expand-icon`: An icon on the button that shows every line of a capped block, before its words.
76165
+ * - `label`: The block's name in the header, such as a file icon beside the file name. Replaces `label` and `language` there, and draws the header.
75729
76166
  *
75730
76167
  * ## CSS Custom Properties
75731
76168
  *
@@ -75790,7 +76227,9 @@ export type CustomElementsSolidJs = {
75790
76227
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
75791
76228
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
75792
76229
  * - `label`: The block's name: its `label`, or its `language` where it has no label.
75793
- * - `mark`: The band behind a run of lines `mark-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
76230
+ * - `mark`: The band behind a run of lines `mark-lines`, `added-lines` or `removed-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.
76231
+ * - `mark-added`: The band behind a run of lines `added-lines` names. Applied with `mark`.
76232
+ * - `mark-removed`: The band behind a run of lines `removed-lines` names. Applied with `mark`.
75794
76233
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
75795
76234
  * - `new`: In a split diff, the new version's `<pre>`.
75796
76235
  * - `number`: In a diff, a line number. In a `wrap` block with `line-numbers`, one line's number in the gutter, which the block makes as tall as the line it numbers through `--code-block-line-size`.
@@ -76407,10 +76846,11 @@ export type CustomElementsSolidJs = {
76407
76846
  * the anchor the browser points its bubble at.
76408
76847
  *
76409
76848
  * **Text that is not a color is bad input**, so a form does not submit
76410
- * `#00` from a half-typed value. The picker draws no message of its own, so
76411
- * reporting it as each keystroke arrives shows nothing until the form asks;
76412
- * Color Input shows its own message against the field the reader typed
76413
- * into.
76849
+ * `#00` from a half-typed value. The picker marks it, and says
76850
+ * `badInputMessage` under itself, once the reader leaves the value field or
76851
+ * presses Enter, and a missing color once the reader has committed one or a
76852
+ * form has refused the picker. Color Input shows its own message against the
76853
+ * field the reader typed into.
76414
76854
  * - `saturation-label`/`saturationLabel`: What the square's horizontal ramp is called.
76415
76855
  * - `square-text`/`squareText`: What a screen reader hears for the square's place, the color's two
76416
76856
  * numbers and its name, on whichever of its two inputs it is on.
@@ -76509,12 +76949,8 @@ export type CustomElementsSolidJs = {
76509
76949
  *
76510
76950
  * Methods that can be called to access component functionality.
76511
76951
  *
76512
- * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
76513
- * where there is no `default-value`.
76514
- *
76515
- * Both halves are dropped, the consumer's and the control's, because a
76516
- * reset means the form is as it was served. Clearing only the internal one
76517
- * would leave a control that had been written to stuck at that value.
76952
+ * - `formResetCallback() => void`: A reset ends any typing and takes back text that was not a color, so the
76953
+ * field shows the color the reset put back.
76518
76954
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
76519
76955
  *
76520
76956
  * Announces before it acts, so `preventDefault()` on the `helix-before-change` is
@@ -76613,7 +77049,7 @@ export type CustomElementsSolidJs = {
76613
77049
  * - `eyedropper-live`: The live region of the button inside `eyedropper`, which says its pending label.
76614
77050
  * - `eyedropper-spinner`: The ring the eyedropper button turns while it is pending.
76615
77051
  * - `eyedropper-text`: The words on the button inside `eyedropper`, trimmed to their capitals and baseline.
76616
- * - `feedback`: The message under the picker, while `feedback` is set.
77052
+ * - `feedback`: The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.
76617
77053
  * - `field`: One channel's number field with its label, in `channel-fields`.
76618
77054
  * - `field-input`: The number input in a channel's field.
76619
77055
  * - `field-label`: The name above a channel's number input.
@@ -76783,12 +77219,13 @@ export type CustomElementsSolidJs = {
76783
77219
  * language.
76784
77220
  * - `multiple`: Whether more than one option can be chosen.
76785
77221
  *
76786
- * The list already does the work: `value` comes apart on commas, a press
76787
- * toggles rather than replaces, and the arrows move without choosing. What
76788
- * this adds is the tags, and keeping the panel open between picks.
77222
+ * The list already does the work: `value` is the chosen values joined with
77223
+ * commas, a press toggles rather than replaces, and the arrows move without
77224
+ * choosing. What this adds is the tags, and keeping the panel open between
77225
+ * picks.
76789
77226
  *
76790
- * A comma is therefore not available inside an option's value, which is the
76791
- * listbox's contract and not this element's to change.
77227
+ * An option's value may hold a comma, and it is read as one value, as
77228
+ * `Select` and `Listbox` read it. So may an answer the reader created.
76792
77229
  *
76793
77230
  * **The list is told, and the field is not.** `aria-multiselectable` belongs
76794
77231
  * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -77082,6 +77519,11 @@ export type CustomElementsSolidJs = {
77082
77519
  * - `filter-delay`/`filterDelay`: How long typing rests before the commands are filtered, in milliseconds,
77083
77520
  * so a palette filtered on a server sends one `helix-filter` for a word.
77084
77521
  * `0` filters on every keystroke. See Listbox's `filter-delay`.
77522
+ * - `home-end`/`homeEnd`: Where Home and End go from the filter field.
77523
+ *
77524
+ * Absent, they move the caret, as APG's combobox has them. `list` moves the
77525
+ * highlight to the first or the last command, as React Aria's Autocomplete
77526
+ * does, and Shift with either still selects the text.
77085
77527
  * - `hotkey`: The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
77086
77528
  * in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
77087
77529
  * `alt` and `shift` the keys they name.
@@ -77096,6 +77538,9 @@ export type CustomElementsSolidJs = {
77096
77538
  * Choosing a command says `helix-select` and leaves the list where it is,
77097
77539
  * and `open`, `toggle` and the dialog's parts do nothing.
77098
77540
  * - `label`: Accessible name for the overlay, which has no visible heading.
77541
+ * - `layout`: How the commands are laid out, as Listbox's `layout`: `grid` draws them in
77542
+ * rows and columns, for a palette of icons or emoji, and the arrow keys
77543
+ * follow the rows and the columns. Absent is one command under another.
77099
77544
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
77100
77545
  * request to a server fails. Empty, null or no attribute is no error, so
77101
77546
  * removing the attribute clears it. Passed to the list, which shows it
@@ -77716,6 +78161,10 @@ export type CustomElementsSolidJs = {
77716
78161
  * Off by default. Windowing costs a scroll listener, a measurement per row
77717
78162
  * drawn, and a `block-size` on the scrolling box, and a table of twenty rows
77718
78163
  * should pay none of them.
78164
+ *
78165
+ * While windowed, the `table` part scrolls on this tier: it carries
78166
+ * `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
78167
+ * every shadow root. You still need to give it a block size.
77719
78168
  * - `rows`: Every row of the result, in the order it arrived.
77720
78169
  *
77721
78170
  * A property and not an attribute: it is an array. Left alone this element
@@ -80539,6 +80988,12 @@ export type CustomElementsSolidJs = {
80539
80988
  * nothing between them, because a word every chip carries is a word nobody
80540
80989
  * reads. The moment somebody picks a different comparison it appears, which
80541
80990
  * makes an unusual filter look unusual.
80991
+ * - `dismissTabStop`: Whether the remove button is a tab stop of its own.
80992
+ *
80993
+ * `FilterInput` writes `false` on the chips in its `tags` slot: the field's
80994
+ * text is its one tab stop, and the arrow keys move from the text to the
80995
+ * chips, as in a `multiple` Combobox. No attribute: it is coordination
80996
+ * between elements, as `Tag.dismissTabStop` is. (property only)
80542
80997
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
80543
80998
  *
80544
80999
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81008,6 +81463,17 @@ export type CustomElementsSolidJs = {
81008
81463
  * and this one was the English a form in another language still spoke in
81009
81464
  * the bubble it raises on submit: `feedback` replaces the message under
81010
81465
  * the field and does not reach that one.
81466
+ * - `chips`: Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
81467
+ * from the `helix-facet` events it hears.
81468
+ *
81469
+ * Off, you build the chips, which is what you do when your own model holds
81470
+ * the filters. On, a filter typed, picked, or changed adds or updates the
81471
+ * chip for its field, one with no values takes it away (unless its
81472
+ * comparison takes none, such as "is empty"), and removing the chip clears
81473
+ * the filter. A `helix-facet` you cancel changes no chip.
81474
+ *
81475
+ * The chips are elements the field adds to its own children, so leave this
81476
+ * off where a framework renders those children and would remove them.
81011
81477
  * - `clearable`: Shows a button that empties the field.
81012
81478
  *
81013
81479
  * The text only. The tokens are the consumer's markup and this element is not
@@ -81019,6 +81485,18 @@ export type CustomElementsSolidJs = {
81019
81485
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
81020
81486
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
81021
81487
  * what you slot and you narrow it.
81488
+ * - `loading`: Whether the suggestions are still loading, such as while a request for the
81489
+ * values of a typed key is out.
81490
+ *
81491
+ * The panel opens on `loading-text`, or the `loading` slot, while the field
81492
+ * has focus, and a screen reader hears it. Slot the options and clear this
81493
+ * when they arrive.
81494
+ * - `loading-text`/`loadingText`: Text the panel shows while the suggestions load.
81495
+ * - `no-results-text`/`noResultsText`: Text the panel shows when `filter-suggestions` hides every suggestion, such
81496
+ * as "No matching filters".
81497
+ *
81498
+ * Empty, or no `no-results` slot, and the panel closes instead, as it does
81499
+ * when it has nothing to offer.
81022
81500
  * - `placeholder`: The text shown while the field is empty.
81023
81501
  *
81024
81502
  * Not a label: it goes when typing starts.
@@ -81121,6 +81599,8 @@ export type CustomElementsSolidJs = {
81121
81599
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
81122
81600
  * - `hint`: Help under the control, for content richer than the `hint` text.
81123
81601
  * - `label`: The label, for content richer than the `label` text.
81602
+ * - `loading`: What the panel shows while `loading` is set, for content richer than `loading-text`.
81603
+ * - `no-results`: What the panel shows when `filter-suggestions` hides every suggestion, for content richer than `no-results-text`.
81124
81604
  * - `start`: Content before the text, such as a search icon.
81125
81605
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
81126
81606
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -81224,12 +81704,14 @@ export type CustomElementsSolidJs = {
81224
81704
  *
81225
81705
  * - `clear`: The button that empties the field.
81226
81706
  * - `control`: The input itself.
81707
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
81227
81708
  * - `feedback`: The error message under the field.
81228
81709
  * - `field`: The box that holds everything.
81229
81710
  * - `hint`: The help text under the field, shown while there is no error.
81230
81711
  * - `label`: The label above the field.
81231
81712
  * - `lead`: The box before the text that holds the `start` slot.
81232
81713
  * - `live`: The live region that says how many suggestions the open panel offers. It is rendered from the first time the panel opens with suggestions.
81714
+ * - `loading`: Shown in the panel while the suggestions load.
81233
81715
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
81234
81716
  * - `surface`: The floating panel the suggestions sit in.
81235
81717
  * - `tags`: The row the tokens sit in.
@@ -81239,6 +81721,8 @@ export type CustomElementsSolidJs = {
81239
81721
  * These can be used to apply styling when a component is in a given state.
81240
81722
  *
81241
81723
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
81724
+ * - `loading`: While `loading` is set.
81725
+ * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
81242
81726
  * - `open`: The suggestions are open.
81243
81727
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81244
81728
  */
@@ -83132,6 +83616,9 @@ export type CustomElementsSolidJs = {
83132
83616
  * Falling back to what the markup declared rather than to empty, because
83133
83617
  * a restore with no state is a form the browser has nothing recorded for,
83134
83618
  * which is the same situation as a fresh one.
83619
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
83620
+ * where `start` and `end` are left out, and `selectMode` says what is
83621
+ * selected after. It sends no event, as the native method sends none.
83135
83622
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
83136
83623
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
83137
83624
  *
@@ -86487,6 +86974,8 @@ export type CustomElementsSolidJs = {
86487
86974
  * These can be used to apply styling when a component is in a given state.
86488
86975
  *
86489
86976
  * - `checked`: The row is checked.
86977
+ * - `disabled`: The row is disabled.
86978
+ * - `expanded`: Under `submenus="flyout"`, the row's submenu is open beside it.
86490
86979
  * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
86491
86980
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
86492
86981
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
@@ -86560,6 +87049,9 @@ export type CustomElementsSolidJs = {
86560
87049
  * - `placement`: The side the menu opens on, when there is room.
86561
87050
  *
86562
87051
  * It moves if that side does not fit.
87052
+ * - `results-label`/`resultsLabel`: What a screen reader hears when the filter narrows the rows. `{count}` is
87053
+ * how many rows are left, written in the locale, and each language writes
87054
+ * the forms it has, as Listbox's `results-label` does.
86563
87055
  * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
86564
87056
  * a way back. `flyout` opens it in a panel of its own beside its row.
86565
87057
  * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
@@ -86568,6 +87060,13 @@ export type CustomElementsSolidJs = {
86568
87060
  *
86569
87061
  * Absent, a row is kept where its words hold the filter, in any case. A
86570
87062
  * property only, there being no way to write a function in markup. (property only)
87063
+ * - `checkedValues`: The values of the choice rows that are checked, anywhere in the menu, in
87064
+ * document order.
87065
+ *
87066
+ * Set it to check exactly those rows and uncheck every other choice row, as
87067
+ * React Aria's `selectedKeys` controls a menu's selection from one place.
87068
+ * Each row keeps its own `checked` too, which this reads and writes. `change`
87069
+ * is sent on the menu when a reader's choice changes it. (property only)
86571
87070
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
86572
87071
  *
86573
87072
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -86594,6 +87093,7 @@ export type CustomElementsSolidJs = {
86594
87093
  * Events that will be emitted by the component.
86595
87094
  *
86596
87095
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
87096
+ * - `change`: A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now.
86597
87097
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
86598
87098
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
86599
87099
  * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
@@ -86604,6 +87104,8 @@ export type CustomElementsSolidJs = {
86604
87104
  * Areas where markup can be added to the component.
86605
87105
  *
86606
87106
  * - `(default)`: The items.
87107
+ * - `empty`: What the menu shows when it has no items, for content richer than `empty-text`.
87108
+ * - `loading`: What the menu shows while its items load, for content richer than `loading-text`.
86607
87109
  * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
86608
87110
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
86609
87111
  *
@@ -86655,6 +87157,8 @@ export type CustomElementsSolidJs = {
86655
87157
  * These can be used to apply styling when a component is in a given state.
86656
87158
  *
86657
87159
  * - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
87160
+ * - `entering`: From the moment the panel shows until its entrance has finished.
87161
+ * - `exiting`: From the moment the panel hides until its exit has finished.
86658
87162
  * - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
86659
87163
  * - `open`: While the menu is open.
86660
87164
  * - `placed-bottom`: While the open panel sits below its trigger.
@@ -87670,7 +88174,9 @@ export type CustomElementsSolidJs = {
87670
88174
  * speaks it: `feedback` replaces the message under the field and does not
87671
88175
  * reach the bubble. Unset is the sentence registered for the page's
87672
88176
  * language, then the English.
87673
- * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers.
88177
+ * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers. The field's
88178
+ * label follows it, so a reader hears "Decrease Quantity", as React Aria
88179
+ * names its steppers.
87674
88180
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
87675
88181
  * not being edited: a currency, a percent, a unit, or a number of decimals.
87676
88182
  * Written as JSON in the attribute.
@@ -87678,7 +88184,9 @@ export type CustomElementsSolidJs = {
87678
88184
  * ```html
87679
88185
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
87680
88186
  * ```
87681
- * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers.
88187
+ * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers. The field's
88188
+ * label follows it, so a reader hears "Increase Quantity", as React Aria
88189
+ * names its steppers.
87682
88190
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
87683
88191
  *
87684
88192
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -87839,8 +88347,10 @@ export type CustomElementsSolidJs = {
87839
88347
  * Falling back to what the markup declared rather than to empty, because
87840
88348
  * a restore with no state is a form the browser has nothing recorded for,
87841
88349
  * which is the same situation as a fresh one.
87842
- * - `stepUp(large = false) => void`: Steps the value up, by `largeStep` steps when `large` is set.
87843
- * - `stepDown(large = false) => void`: Steps the value down, by `largeStep` steps when `large` is set.
88350
+ * - `stepUp(count: number | boolean = 1) => void`: Steps the value up by `step`, `count` times, as the native method and
88351
+ * `Input.stepUp` do. `true` takes `largeStep` steps, as `PageUp` does.
88352
+ * - `stepDown(count: number | boolean = 1) => void`: Steps the value down by `step`, `count` times. `true` takes `largeStep`
88353
+ * steps, as `PageDown` does.
87844
88354
  *
87845
88355
  * The same path a press of the down arrow takes, so a consumer driving this
87846
88356
  * from their own control gets the clamping and the announcement rather than
@@ -89564,12 +90074,25 @@ export type CustomElementsSolidJs = {
89564
90074
  * hydration, or diffed by a framework, it comes back holding whatever the
89565
90075
  * last reader did rather than what the author wrote. `:state(open)` carries
89566
90076
  * the resolved state for stylesheets, which is what the mirror is for.
90077
+ * - `anchor`: The element the panel opens against, where that is not the trigger: its
90078
+ * `id` in the same document or shadow root, or the element itself. Left
90079
+ * empty, the panel opens against the trigger, or against the button whose
90080
+ * command opened it.
89567
90081
  * - `arrow`: Draws a point on the panel's edge facing the trigger.
89568
90082
  *
89569
90083
  * Off by default, which is the house style: a panel that opens from its
89570
90084
  * trigger already reads as belonging to it.
90085
+ * - `container-padding`/`containerPadding`: How close to the window's edges the panel may come, in pixels, when it
90086
+ * slides, shrinks or moves to the other side to fit. Left unset, it slides
90087
+ * and shrinks to 8 pixels from an edge and moves to the other side only
90088
+ * once it would cross one.
90089
+ * - `cross-offset`/`crossOffset`: How far to slide the panel along the side it is on, in pixels: to the
90090
+ * right on the top or the bottom, and down on the left or the right.
89571
90091
  * - `fallback-label`/`fallbackLabel`: The panel's name where nothing else names it: no `label`, no heading in
89572
90092
  * the panel, and no `aria-labelledby` on the host.
90093
+ * - `flip`: Whether the panel moves to the other side of the trigger when its own
90094
+ * side has no room. On by default. Write `flip="false"` to keep it on its
90095
+ * side, where it shrinks to fit, as React Aria's `shouldFlip` turns off.
89573
90096
  * - `label`: The panel's name, read by screen readers. Left empty, the first heading in
89574
90097
  * the panel names it, and then `fallback-label`.
89575
90098
  * - `modal`: Keeps `Tab` inside the panel while it is open, marks the panel
@@ -89661,6 +90184,8 @@ export type CustomElementsSolidJs = {
89661
90184
  *
89662
90185
  * These can be used to apply styling when a component is in a given state.
89663
90186
  *
90187
+ * - `aligned-end`: While the panel is aligned to the end of the side it sits on.
90188
+ * - `aligned-start`: While the panel is aligned to the start of the side it sits on.
89664
90189
  * - `entering`: From the moment the panel shows until its entrance has finished.
89665
90190
  * - `exiting`: From the moment the panel hides until its exit has finished.
89666
90191
  * - `open`: While the popover is open.
@@ -90838,6 +91363,15 @@ export type CustomElementsSolidJs = {
90838
91363
  * `servePreview` does. It defines no element, so an example that uses Helix
90839
91364
  * components needs a `src` that imports them.
90840
91365
  *
91366
+ * **`imports` lets an example import packages by name** in the built-in
91367
+ * document, as an import map: each name maps to the address of an ES module,
91368
+ * such as `{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}`, and
91369
+ * `import confetti from 'canvas-confetti'` in the `js` pane then loads it. A
91370
+ * CDN that serves npm packages as modules, such as esm.sh or jsDelivr's
91371
+ * `+esm`, gives every package an address. A new map loads the document again,
91372
+ * since a browser reads one only as a document starts. A `src` document
91373
+ * declares its own.
91374
+ *
90841
91375
  * **Examples render in a frame**, so an example's styles and scripts do not
90842
91376
  * affect the page around the sandbox, and `position: fixed` stays inside the
90843
91377
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -90890,6 +91424,10 @@ export type CustomElementsSolidJs = {
90890
91424
  * it, here or anywhere: a frame is a document of its own and what is written
90891
91425
  * on this host reaches nothing inside it, which is the same reason
90892
91426
  * `colorMode` has to be sent rather than set.
91427
+ * - `imports`: The packages an example can import by name in the built-in document,
91428
+ * each mapped to the address of an ES module, as an import map's `imports`.
91429
+ * Set it as JSON in the attribute or as an object. Not read where `src` is
91430
+ * set.
90893
91431
  * - `label`: The frame's name, read by screen readers.
90894
91432
  * - `layout`: How the example is placed in the frame.
90895
91433
  *
@@ -91213,6 +91751,18 @@ export type CustomElementsSolidJs = {
91213
91751
  * that throws leaves the source drawn plain and the field editable, and the
91214
91752
  * error is reported to the page as an uncaught one.
91215
91753
  *
91754
+ * **`line-numbers` numbers each line** in a gutter beside the source. A line
91755
+ * that wraps keeps one number. The numbers are drawn, and hidden from screen
91756
+ * readers, which read the field.
91757
+ *
91758
+ * Enter keeps the indentation of the line it breaks, and the new line is
91759
+ * undone with the next undo as typing is.
91760
+ *
91761
+ * **The source can be written inside the pane** where `value` is not set: its
91762
+ * text, or the markup of a `<template>` it holds, without the indentation the
91763
+ * page gave it. Markup goes in a template so the page does not render it or
91764
+ * run its scripts. Text inside the pane is read once, when it connects.
91765
+ *
91216
91766
  * ## Attributes & Properties
91217
91767
  *
91218
91768
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -91224,6 +91774,7 @@ export type CustomElementsSolidJs = {
91224
91774
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
91225
91775
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
91226
91776
  * holds several panes. Empty puts the pane's `name` on the tab.
91777
+ * - `line-numbers`/`lineNumbers`: Whether each line of the source is numbered, in a gutter beside it.
91227
91778
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
91228
91779
  *
91229
91780
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -91282,6 +91833,7 @@ export type CustomElementsSolidJs = {
91282
91833
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
91283
91834
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
91284
91835
  * - `--sandbox-source-keyword-color`: Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`.
91836
+ * - `--sandbox-source-line-number-color`: Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`.
91285
91837
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
91286
91838
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
91287
91839
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -91291,8 +91843,9 @@ export type CustomElementsSolidJs = {
91291
91843
  *
91292
91844
  * Custom selectors for styling elements within the component.
91293
91845
  *
91294
- * - `field`: The box that scrolls the field and its colors together, under `tokenize`.
91295
- * - `highlight`: The colored copy of the source drawn under the field, under `tokenize`.
91846
+ * - `field`: The box that scrolls the field and its colors together, under `tokenize` or `line-numbers`.
91847
+ * - `highlight`: The colored copy of the source drawn under the field, under `tokenize` or `line-numbers`.
91848
+ * - `line`: One line of that copy, under `line-numbers`, numbered in the gutter by its `::before`.
91296
91849
  * - `source`: The editable region.
91297
91850
  * - `token`: One run of the source that has a kind, under `tokenize`.
91298
91851
  *
@@ -93884,7 +94437,8 @@ export type CustomElementsSolidJs = {
93884
94437
  *
93885
94438
  * Ignored once `active` is written.
93886
94439
  * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
93887
- * way the steps run. Off by default, so the arrows keep scrolling the page.
94440
+ * way the steps run, and the names are one tab stop. Off by default, so the
94441
+ * arrows keep scrolling the page.
93888
94442
  * - `completion`: What marks a stage `complete`.
93889
94443
  *
93890
94444
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -94044,7 +94598,9 @@ export type CustomElementsSolidJs = {
94044
94598
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
94045
94599
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
94046
94600
  * with `linear`. Ark UI's skippable step.
94047
- * - `value`: The value the step sends in `helix-select`.
94601
+ * - `value`: The value the step sends in `helix-select`, and what names the step in its
94602
+ * sequence's `active`. Without one, the sequence names the step by its place,
94603
+ * counted from 1.
94048
94604
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
94049
94605
  *
94050
94606
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -96131,6 +96687,10 @@ export type CustomElementsSolidJs = {
96131
96687
  * along, so the two writes a consumer would make in sequence do not compose
96132
96688
  * into the range they asked for. The platform has this method for that reason
96133
96689
  * and so does this.
96690
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
96691
+ * where `start` and `end` are left out, and `selectMode` says what is
96692
+ * selected after. It sends no event, as the native method sends none.
96693
+ * - `select() => void`: Selects everything in the field.
96134
96694
  * - `focus(options?: FocusOptions) => void`: Moves focus to the control, as focusing a native control does.
96135
96695
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
96136
96696
  *
@@ -101874,6 +102434,8 @@ export type CustomCssProperties = {
101874
102434
  "--sandbox-source-invalid-color"?: (string) | undefined;
101875
102435
  /** Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`. */
101876
102436
  "--sandbox-source-keyword-color"?: (string) | undefined;
102437
+ /** Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`. */
102438
+ "--sandbox-source-line-number-color"?: (string) | undefined;
101877
102439
  /** Minimum height of the pane. */
101878
102440
  "--sandbox-source-min-block-size"?: (string) | undefined;
101879
102441
  /** Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`. */