@fusion.dev/helix 0.169.0 → 0.171.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
@@ -7751,6 +7751,12 @@ export type HelixCodeBlockHelixToggleElementEvent =
7751
7751
  HelixCodeBlockElementEvent<HelixToggleEvent>;
7752
7752
 
7753
7753
  export type HelixCodeBlockProps = {
7754
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7755
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7756
+ "added-lines"?: (HelixCodeBlock["addedLines"]) | undefined;
7757
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7758
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7759
+ addedLines?: (HelixCodeBlock["addedLines"]) | undefined;
7754
7760
  /** The name of a block that scrolls, which is a tab stop while it does.
7755
7761
 
7756
7762
  Where the block has a name, the scroller says it too, such as "Code,
@@ -7909,6 +7915,12 @@ A false boolean reflects as the attribute's absence, so this costs no
7909
7915
  reflected property taking no default is satisfied by the default being
7910
7916
  `false`. */
7911
7917
  noCopy?: (HelixCodeBlock["noCopy"]) | undefined;
7918
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
7919
+ as `mark-lines` is, in the removed color. Not for a diff. */
7920
+ "removed-lines"?: (HelixCodeBlock["removedLines"]) | undefined;
7921
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
7922
+ as `mark-lines` is, in the removed color. Not for a diff. */
7923
+ removedLines?: (HelixCodeBlock["removedLines"]) | undefined;
7912
7924
  /** The words of a button that shows a folded run of unchanged lines, in a
7913
7925
  diff with `context-lines`. `{count}` is how many. */
7914
7926
  "show-unchanged-label"?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
@@ -7979,6 +7991,12 @@ read, nor for a diff. */
7979
7991
  };
7980
7992
 
7981
7993
  export type HelixCodeBlockSolidJsProps = {
7994
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7995
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7996
+ "attr:added-lines"?: (HelixCodeBlock["addedLines"]) | undefined;
7997
+ /** The lines to mark as inserted, as numbers and ranges counted from 1, such
7998
+ as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff. */
7999
+ "prop:addedLines"?: (HelixCodeBlock["addedLines"]) | undefined;
7982
8000
  /** The name of a block that scrolls, which is a tab stop while it does.
7983
8001
 
7984
8002
  Where the block has a name, the scroller says it too, such as "Code,
@@ -8137,6 +8155,12 @@ A false boolean reflects as the attribute's absence, so this costs no
8137
8155
  reflected property taking no default is satisfied by the default being
8138
8156
  `false`. */
8139
8157
  "prop:noCopy"?: (HelixCodeBlock["noCopy"]) | undefined;
8158
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
8159
+ as `mark-lines` is, in the removed color. Not for a diff. */
8160
+ "attr:removed-lines"?: (HelixCodeBlock["removedLines"]) | undefined;
8161
+ /** The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
8162
+ as `mark-lines` is, in the removed color. Not for a diff. */
8163
+ "prop:removedLines"?: (HelixCodeBlock["removedLines"]) | undefined;
8140
8164
  /** The words of a button that shows a folded run of unchanged lines, in a
8141
8165
  diff with `context-lines`. `{count}` is how many. */
8142
8166
  "attr:show-unchanged-label"?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
@@ -9029,10 +9053,11 @@ would give one control two of each. What is left is the validity call and
9029
9053
  the anchor the browser points its bubble at.
9030
9054
 
9031
9055
  **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. */
9056
+ `#00` from a half-typed value. The picker marks it, and says
9057
+ `badInputMessage` under itself, once the reader leaves the value field or
9058
+ presses Enter, and a missing color once the reader has committed one or a
9059
+ form has refused the picker. Color Input shows its own message against the
9060
+ field the reader typed into. */
9036
9061
  required?: (HelixColorPicker["required"]) | undefined;
9037
9062
  /** What the square's horizontal ramp is called. */
9038
9063
  "saturation-label"?: (HelixColorPicker["saturationLabel"]) | undefined;
@@ -9409,10 +9434,11 @@ would give one control two of each. What is left is the validity call and
9409
9434
  the anchor the browser points its bubble at.
9410
9435
 
9411
9436
  **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. */
9437
+ `#00` from a half-typed value. The picker marks it, and says
9438
+ `badInputMessage` under itself, once the reader leaves the value field or
9439
+ presses Enter, and a missing color once the reader has committed one or a
9440
+ form has refused the picker. Color Input shows its own message against the
9441
+ field the reader typed into. */
9416
9442
  "prop:required"?: (HelixColorPicker["required"]) | undefined;
9417
9443
  /** What the square's horizontal ramp is called. */
9418
9444
  "attr:saturation-label"?: (HelixColorPicker["saturationLabel"]) | undefined;
@@ -9773,12 +9799,13 @@ language. */
9773
9799
  locale?: (HelixCombobox["locale"]) | undefined;
9774
9800
  /** Whether more than one option can be chosen.
9775
9801
 
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.
9802
+ The list already does the work: `value` is the chosen values joined with
9803
+ commas, a press toggles rather than replaces, and the arrows move without
9804
+ choosing. What this adds is the tags, and keeping the panel open between
9805
+ picks.
9779
9806
 
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.
9807
+ An option's value may hold a comma, and it is read as one value, as
9808
+ `Select` and `Listbox` read it. So may an answer the reader created.
9782
9809
 
9783
9810
  **The list is told, and the field is not.** `aria-multiselectable` belongs
9784
9811
  to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -10148,12 +10175,13 @@ language. */
10148
10175
  "prop:locale"?: (HelixCombobox["locale"]) | undefined;
10149
10176
  /** Whether more than one option can be chosen.
10150
10177
 
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.
10178
+ The list already does the work: `value` is the chosen values joined with
10179
+ commas, a press toggles rather than replaces, and the arrows move without
10180
+ choosing. What this adds is the tags, and keeping the panel open between
10181
+ picks.
10154
10182
 
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.
10183
+ An option's value may hold a comma, and it is read as one value, as
10184
+ `Select` and `Listbox` read it. So may an answer the reader created.
10157
10185
 
10158
10186
  **The list is told, and the field is not.** `aria-multiselectable` belongs
10159
10187
  to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -10348,6 +10376,18 @@ so a palette filtered on a server sends one `helix-filter` for a word.
10348
10376
  so a palette filtered on a server sends one `helix-filter` for a word.
10349
10377
  `0` filters on every keystroke. See Listbox's `filter-delay`. */
10350
10378
  filterDelay?: (HelixCommand["filterDelay"]) | undefined;
10379
+ /** Where Home and End go from the filter field.
10380
+
10381
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10382
+ highlight to the first or the last command, as React Aria's Autocomplete
10383
+ does, and Shift with either still selects the text. */
10384
+ "home-end"?: (HelixCommand["homeEnd"]) | undefined;
10385
+ /** Where Home and End go from the filter field.
10386
+
10387
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10388
+ highlight to the first or the last command, as React Aria's Autocomplete
10389
+ does, and Shift with either still selects the text. */
10390
+ homeEnd?: (HelixCommand["homeEnd"]) | undefined;
10351
10391
  /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
10352
10392
  in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
10353
10393
  `alt` and `shift` the keys they name.
@@ -10365,6 +10405,10 @@ and `open`, `toggle` and the dialog's parts do nothing. */
10365
10405
  inline?: (HelixCommand["inline"]) | undefined;
10366
10406
  /** Accessible name for the overlay, which has no visible heading. */
10367
10407
  label?: (HelixCommand["label"]) | undefined;
10408
+ /** How the commands are laid out, as Listbox's `layout`: `grid` draws them in
10409
+ rows and columns, for a palette of icons or emoji, and the arrow keys
10410
+ follow the rows and the columns. Absent is one command under another. */
10411
+ layout?: (HelixCommand["layout"]) | undefined;
10368
10412
  /** What the list says when its commands could not be loaded, such as after a
10369
10413
  request to a server fails. Empty, null or no attribute is no error, so
10370
10414
  removing the attribute clears it. Passed to the list, which shows it
@@ -10480,6 +10524,18 @@ so a palette filtered on a server sends one `helix-filter` for a word.
10480
10524
  so a palette filtered on a server sends one `helix-filter` for a word.
10481
10525
  `0` filters on every keystroke. See Listbox's `filter-delay`. */
10482
10526
  "prop:filterDelay"?: (HelixCommand["filterDelay"]) | undefined;
10527
+ /** Where Home and End go from the filter field.
10528
+
10529
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10530
+ highlight to the first or the last command, as React Aria's Autocomplete
10531
+ does, and Shift with either still selects the text. */
10532
+ "attr:home-end"?: (HelixCommand["homeEnd"]) | undefined;
10533
+ /** Where Home and End go from the filter field.
10534
+
10535
+ Absent, they move the caret, as APG's combobox has them. `list` moves the
10536
+ highlight to the first or the last command, as React Aria's Autocomplete
10537
+ does, and Shift with either still selects the text. */
10538
+ "prop:homeEnd"?: (HelixCommand["homeEnd"]) | undefined;
10483
10539
  /** The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
10484
10540
  in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
10485
10541
  `alt` and `shift` the keys they name.
@@ -10497,6 +10553,10 @@ and `open`, `toggle` and the dialog's parts do nothing. */
10497
10553
  "prop:inline"?: (HelixCommand["inline"]) | undefined;
10498
10554
  /** Accessible name for the overlay, which has no visible heading. */
10499
10555
  "prop:label"?: (HelixCommand["label"]) | undefined;
10556
+ /** How the commands are laid out, as Listbox's `layout`: `grid` draws them in
10557
+ rows and columns, for a palette of icons or emoji, and the arrow keys
10558
+ follow the rows and the columns. Absent is one command under another. */
10559
+ "prop:layout"?: (HelixCommand["layout"]) | undefined;
10500
10560
  /** What the list says when its commands could not be loaded, such as after a
10501
10561
  request to a server fails. Empty, null or no attribute is no error, so
10502
10562
  removing the attribute clears it. Passed to the list, which shows it
@@ -15439,6 +15499,13 @@ nothing between them, because a word every chip carries is a word nobody
15439
15499
  reads. The moment somebody picks a different comparison it appears, which
15440
15500
  makes an unusual filter look unusual. */
15441
15501
  operatorLabel?: (HelixFilterChip["operatorLabel"]) | undefined;
15502
+ /** Whether the remove button is a tab stop of its own.
15503
+
15504
+ `FilterInput` writes `false` on the chips in its `tags` slot: the field's
15505
+ text is its one tab stop, and the arrow keys move from the text to the
15506
+ chips, as in a `multiple` Combobox. No attribute: it is coordination
15507
+ between elements, as `Tag.dismissTabStop` is. */
15508
+ dismissTabStop?: (HelixFilterChip["dismissTabStop"]) | undefined;
15442
15509
 
15443
15510
  /** Fired when the user asks to remove the filter. Cancelable: call `preventDefault()` to keep the chip. */
15444
15511
  "onhelix-dismiss"?: ((e: HelixFilterChipHelixDismissElementEvent) => void) | undefined;
@@ -15515,6 +15582,13 @@ nothing between them, because a word every chip carries is a word nobody
15515
15582
  reads. The moment somebody picks a different comparison it appears, which
15516
15583
  makes an unusual filter look unusual. */
15517
15584
  "prop:operatorLabel"?: (HelixFilterChip["operatorLabel"]) | undefined;
15585
+ /** Whether the remove button is a tab stop of its own.
15586
+
15587
+ `FilterInput` writes `false` on the chips in its `tags` slot: the field's
15588
+ text is its one tab stop, and the arrow keys move from the text to the
15589
+ chips, as in a `multiple` Combobox. No attribute: it is coordination
15590
+ between elements, as `Tag.dismissTabStop` is. */
15591
+ "prop:dismissTabStop"?: (HelixFilterChip["dismissTabStop"]) | undefined;
15518
15592
  /** Fired when the user asks to remove the filter. Cancelable: call `preventDefault()` to keep the chip. */
15519
15593
  "on:helix-dismiss"?: ((e: HelixFilterChipHelixDismissElementEvent) => void) | undefined;
15520
15594
 
@@ -15839,6 +15913,18 @@ and this one was the English a form in another language still spoke in
15839
15913
  the bubble it raises on submit: `feedback` replaces the message under
15840
15914
  the field and does not reach that one. */
15841
15915
  valueMissingMessage?: (HelixFilterInput["valueMissingMessage"]) | undefined;
15916
+ /** Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
15917
+ from the `helix-facet` events it hears.
15918
+
15919
+ Off, you build the chips, which is what you do when your own model holds
15920
+ the filters. On, a filter typed, picked, or changed adds or updates the
15921
+ chip for its field, one with no values takes it away (unless its
15922
+ comparison takes none, such as "is empty"), and removing the chip clears
15923
+ the filter. A `helix-facet` you cancel changes no chip.
15924
+
15925
+ The chips are elements the field adds to its own children, so leave this
15926
+ off where a framework renders those children and would remove them. */
15927
+ chips?: (HelixFilterInput["chips"]) | undefined;
15842
15928
  /** Shows a button that empties the field.
15843
15929
 
15844
15930
  The text only. The tokens are the consumer's markup and this element is not
@@ -15860,6 +15946,29 @@ what you slot and you narrow it. */
15860
15946
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
15861
15947
  what you slot and you narrow it. */
15862
15948
  filterSuggestions?: (HelixFilterInput["filterSuggestions"]) | undefined;
15949
+ /** Whether the suggestions are still loading, such as while a request for the
15950
+ values of a typed key is out.
15951
+
15952
+ The panel opens on `loading-text`, or the `loading` slot, while the field
15953
+ has focus, and a screen reader hears it. Slot the options and clear this
15954
+ when they arrive. */
15955
+ loading?: (HelixFilterInput["loading"]) | undefined;
15956
+ /** Text the panel shows while the suggestions load. */
15957
+ "loading-text"?: (HelixFilterInput["loadingText"]) | undefined;
15958
+ /** Text the panel shows while the suggestions load. */
15959
+ loadingText?: (HelixFilterInput["loadingText"]) | undefined;
15960
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
15961
+ as "No matching filters".
15962
+
15963
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
15964
+ when it has nothing to offer. */
15965
+ "no-results-text"?: (HelixFilterInput["noResultsText"]) | undefined;
15966
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
15967
+ as "No matching filters".
15968
+
15969
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
15970
+ when it has nothing to offer. */
15971
+ noResultsText?: (HelixFilterInput["noResultsText"]) | undefined;
15863
15972
  /** The text shown while the field is empty.
15864
15973
 
15865
15974
  Not a label: it goes when typing starts. */
@@ -16050,6 +16159,18 @@ and this one was the English a form in another language still spoke in
16050
16159
  the bubble it raises on submit: `feedback` replaces the message under
16051
16160
  the field and does not reach that one. */
16052
16161
  "prop:valueMissingMessage"?: (HelixFilterInput["valueMissingMessage"]) | undefined;
16162
+ /** Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
16163
+ from the `helix-facet` events it hears.
16164
+
16165
+ Off, you build the chips, which is what you do when your own model holds
16166
+ the filters. On, a filter typed, picked, or changed adds or updates the
16167
+ chip for its field, one with no values takes it away (unless its
16168
+ comparison takes none, such as "is empty"), and removing the chip clears
16169
+ the filter. A `helix-facet` you cancel changes no chip.
16170
+
16171
+ The chips are elements the field adds to its own children, so leave this
16172
+ off where a framework renders those children and would remove them. */
16173
+ "prop:chips"?: (HelixFilterInput["chips"]) | undefined;
16053
16174
  /** Shows a button that empties the field.
16054
16175
 
16055
16176
  The text only. The tokens are the consumer's markup and this element is not
@@ -16071,6 +16192,29 @@ what you slot and you narrow it. */
16071
16192
  being typed, as React Aria's Autocomplete filters. Off, the panel shows
16072
16193
  what you slot and you narrow it. */
16073
16194
  "prop:filterSuggestions"?: (HelixFilterInput["filterSuggestions"]) | undefined;
16195
+ /** Whether the suggestions are still loading, such as while a request for the
16196
+ values of a typed key is out.
16197
+
16198
+ The panel opens on `loading-text`, or the `loading` slot, while the field
16199
+ has focus, and a screen reader hears it. Slot the options and clear this
16200
+ when they arrive. */
16201
+ "prop:loading"?: (HelixFilterInput["loading"]) | undefined;
16202
+ /** Text the panel shows while the suggestions load. */
16203
+ "attr:loading-text"?: (HelixFilterInput["loadingText"]) | undefined;
16204
+ /** Text the panel shows while the suggestions load. */
16205
+ "prop:loadingText"?: (HelixFilterInput["loadingText"]) | undefined;
16206
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
16207
+ as "No matching filters".
16208
+
16209
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
16210
+ when it has nothing to offer. */
16211
+ "attr:no-results-text"?: (HelixFilterInput["noResultsText"]) | undefined;
16212
+ /** Text the panel shows when `filter-suggestions` hides every suggestion, such
16213
+ as "No matching filters".
16214
+
16215
+ Empty, or no `no-results` slot, and the panel closes instead, as it does
16216
+ when it has nothing to offer. */
16217
+ "prop:noResultsText"?: (HelixFilterInput["noResultsText"]) | undefined;
16074
16218
  /** The text shown while the field is empty.
16075
16219
 
16076
16220
  Not a label: it goes when typing starts. */
@@ -24991,9 +25135,13 @@ speaks it: `feedback` replaces the message under the field and does not
24991
25135
  reach the bubble. Unset is the sentence registered for the page's
24992
25136
  language, then the English. */
24993
25137
  badInputMessage?: (HelixNumberInput["badInputMessage"]) | undefined;
24994
- /** The name of the step down button, read by screen readers. */
25138
+ /** The name of the step down button, read by screen readers. The field's
25139
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25140
+ names its steppers. */
24995
25141
  "decrement-label"?: (HelixNumberInput["decrementLabel"]) | undefined;
24996
- /** The name of the step down button, read by screen readers. */
25142
+ /** The name of the step down button, read by screen readers. The field's
25143
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25144
+ names its steppers. */
24997
25145
  decrementLabel?: (HelixNumberInput["decrementLabel"]) | undefined;
24998
25146
  /** `Intl.NumberFormat` options the number is shown with while the field is
24999
25147
  not being edited: a currency, a percent, a unit, or a number of decimals.
@@ -25011,9 +25159,13 @@ Written as JSON in the attribute.
25011
25159
  <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
25012
25160
  ``` */
25013
25161
  formatOptions?: (HelixNumberInput["formatOptions"]) | undefined;
25014
- /** The name of the step up button, read by screen readers. */
25162
+ /** The name of the step up button, read by screen readers. The field's
25163
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25164
+ names its steppers. */
25015
25165
  "increment-label"?: (HelixNumberInput["incrementLabel"]) | undefined;
25016
- /** The name of the step up button, read by screen readers. */
25166
+ /** The name of the step up button, read by screen readers. The field's
25167
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25168
+ names its steppers. */
25017
25169
  incrementLabel?: (HelixNumberInput["incrementLabel"]) | undefined;
25018
25170
  /** How many steps `PageUp` and `PageDown` move.
25019
25171
 
@@ -25270,9 +25422,13 @@ speaks it: `feedback` replaces the message under the field and does not
25270
25422
  reach the bubble. Unset is the sentence registered for the page's
25271
25423
  language, then the English. */
25272
25424
  "prop:badInputMessage"?: (HelixNumberInput["badInputMessage"]) | undefined;
25273
- /** The name of the step down button, read by screen readers. */
25425
+ /** The name of the step down button, read by screen readers. The field's
25426
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25427
+ names its steppers. */
25274
25428
  "attr:decrement-label"?: (HelixNumberInput["decrementLabel"]) | undefined;
25275
- /** The name of the step down button, read by screen readers. */
25429
+ /** The name of the step down button, read by screen readers. The field's
25430
+ label follows it, so a reader hears "Decrease Quantity", as React Aria
25431
+ names its steppers. */
25276
25432
  "prop:decrementLabel"?: (HelixNumberInput["decrementLabel"]) | undefined;
25277
25433
  /** `Intl.NumberFormat` options the number is shown with while the field is
25278
25434
  not being edited: a currency, a percent, a unit, or a number of decimals.
@@ -25290,9 +25446,13 @@ Written as JSON in the attribute.
25290
25446
  <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
25291
25447
  ``` */
25292
25448
  "prop:formatOptions"?: (HelixNumberInput["formatOptions"]) | undefined;
25293
- /** The name of the step up button, read by screen readers. */
25449
+ /** The name of the step up button, read by screen readers. The field's
25450
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25451
+ names its steppers. */
25294
25452
  "attr:increment-label"?: (HelixNumberInput["incrementLabel"]) | undefined;
25295
- /** The name of the step up button, read by screen readers. */
25453
+ /** The name of the step up button, read by screen readers. The field's
25454
+ label follows it, so a reader hears "Increase Quantity", as React Aria
25455
+ names its steppers. */
25296
25456
  "prop:incrementLabel"?: (HelixNumberInput["incrementLabel"]) | undefined;
25297
25457
  /** How many steps `PageUp` and `PageDown` move.
25298
25458
 
@@ -29131,6 +29291,11 @@ it, here or anywhere: a frame is a document of its own and what is written
29131
29291
  on this host reaches nothing inside it, which is the same reason
29132
29292
  `colorMode` has to be sent rather than set. */
29133
29293
  direction?: (HelixSandboxPreview["direction"]) | undefined;
29294
+ /** The packages an example can import by name in the built-in document,
29295
+ each mapped to the address of an ES module, as an import map's `imports`.
29296
+ Set it as JSON in the attribute or as an object. Not read where `src` is
29297
+ set. */
29298
+ imports?: (HelixSandboxPreview["imports"]) | undefined;
29134
29299
  /** The frame's name, read by screen readers. */
29135
29300
  label?: (HelixSandboxPreview["label"]) | undefined;
29136
29301
  /** How the example is placed in the frame.
@@ -29213,6 +29378,11 @@ it, here or anywhere: a frame is a document of its own and what is written
29213
29378
  on this host reaches nothing inside it, which is the same reason
29214
29379
  `colorMode` has to be sent rather than set. */
29215
29380
  "prop:direction"?: (HelixSandboxPreview["direction"]) | undefined;
29381
+ /** The packages an example can import by name in the built-in document,
29382
+ each mapped to the address of an ES module, as an import map's `imports`.
29383
+ Set it as JSON in the attribute or as an object. Not read where `src` is
29384
+ set. */
29385
+ "prop:imports"?: (HelixSandboxPreview["imports"]) | undefined;
29216
29386
  /** The frame's name, read by screen readers. */
29217
29387
  "prop:label"?: (HelixSandboxPreview["label"]) | undefined;
29218
29388
  /** How the example is placed in the frame.
@@ -29652,6 +29822,10 @@ the pane's `label`. */
29652
29822
  /** The pane's file name, such as `index.html`, on its tab where a sandbox
29653
29823
  holds several panes. Empty puts the pane's `name` on the tab. */
29654
29824
  label?: (HelixSandboxSource["label"]) | undefined;
29825
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29826
+ "line-numbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29827
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29828
+ lineNumbers?: (HelixSandboxSource["lineNumbers"]) | undefined;
29655
29829
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
29656
29830
 
29657
29831
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -29708,6 +29882,10 @@ the pane's `label`. */
29708
29882
  /** The pane's file name, such as `index.html`, on its tab where a sandbox
29709
29883
  holds several panes. Empty puts the pane's `name` on the tab. */
29710
29884
  "prop:label"?: (HelixSandboxSource["label"]) | undefined;
29885
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29886
+ "bool:line-numbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29887
+ /** Whether each line of the source is numbered, in a gutter beside it. */
29888
+ "prop:lineNumbers"?: (HelixSandboxSource["lineNumbers"]) | undefined;
29711
29889
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
29712
29890
 
29713
29891
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -32687,7 +32865,8 @@ Ignored once `active` is written. */
32687
32865
  Ignored once `active` is written. */
32688
32866
  defaultActive?: (HelixSteps["defaultActive"]) | undefined;
32689
32867
  /** 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. */
32868
+ way the steps run, and the names are one tab stop. Off by default, so the
32869
+ arrows keep scrolling the page. */
32691
32870
  arrows?: (HelixSteps["arrows"]) | undefined;
32692
32871
  /** What marks a stage `complete`.
32693
32872
 
@@ -32771,7 +32950,8 @@ Ignored once `active` is written. */
32771
32950
  Ignored once `active` is written. */
32772
32951
  "prop:defaultActive"?: (HelixSteps["defaultActive"]) | undefined;
32773
32952
  /** 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. */
32953
+ way the steps run, and the names are one tab stop. Off by default, so the
32954
+ arrows keep scrolling the page. */
32775
32955
  "prop:arrows"?: (HelixSteps["arrows"]) | undefined;
32776
32956
  /** What marks a stage `complete`.
32777
32957
 
@@ -32872,7 +33052,9 @@ with the page. */
32872
33052
  /** Whether a reader may pass the stage without finishing it, in a sequence
32873
33053
  with `linear`. Ark UI's skippable step. */
32874
33054
  optional?: (HelixStep["optional"]) | undefined;
32875
- /** The value the step sends in `helix-select`. */
33055
+ /** The value the step sends in `helix-select`, and what names the step in its
33056
+ sequence's `active`. Without one, the sequence names the step by its place,
33057
+ counted from 1. */
32876
33058
  value?: (HelixStep["value"]) | undefined;
32877
33059
 
32878
33060
  /** Fired when the step is pressed. Cancelable: cancel it to keep the current step. */
@@ -32905,7 +33087,9 @@ with the page. */
32905
33087
  /** Whether a reader may pass the stage without finishing it, in a sequence
32906
33088
  with `linear`. Ark UI's skippable step. */
32907
33089
  "prop:optional"?: (HelixStep["optional"]) | undefined;
32908
- /** The value the step sends in `helix-select`. */
33090
+ /** The value the step sends in `helix-select`, and what names the step in its
33091
+ sequence's `active`. Without one, the sequence names the step by its place,
33092
+ counted from 1. */
32909
33093
  "prop:value"?: (HelixStep["value"]) | undefined;
32910
33094
  /** Fired when the step is pressed. Cancelable: cancel it to keep the current step. */
32911
33095
  "on:helix-select"?: ((e: HelixStepHelixSelectElementEvent) => void) | undefined;
@@ -45776,6 +45960,10 @@ export type CustomElements = {
45776
45960
  *
45777
45961
  * These can be used to apply styling when a component is in a given state.
45778
45962
  *
45963
+ * - `empty`: The conversation has no turns.
45964
+ * - `loading`: Older turns are loading: `history` is `loading`.
45965
+ * - `pinned`: The transcript follows its newest turn.
45966
+ * - `typing`: `typing` names someone on the other side.
45779
45967
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
45780
45968
  */
45781
45969
  "helix-chat": Partial<HelixChatProps & BaseProps<HelixChat> & BaseEvents<HelixChat>>;
@@ -46301,6 +46489,8 @@ export type CustomElements = {
46301
46489
  *
46302
46490
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46303
46491
  *
46492
+ * - `added-lines`/`addedLines`: The lines to mark as inserted, as numbers and ranges counted from 1, such
46493
+ * as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.
46304
46494
  * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
46305
46495
  *
46306
46496
  * Where the block has a name, the scroller says it too, such as "Code,
@@ -46377,6 +46567,8 @@ export type CustomElements = {
46377
46567
  * `no-copy=""` on hosts that never asked for one, and the rule about a
46378
46568
  * reflected property taking no default is satisfied by the default being
46379
46569
  * `false`.
46570
+ * - `removed-lines`/`removedLines`: The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
46571
+ * as `mark-lines` is, in the removed color. Not for a diff.
46380
46572
  * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
46381
46573
  * diff with `context-lines`. `{count}` is how many.
46382
46574
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
@@ -46456,6 +46648,8 @@ export type CustomElements = {
46456
46648
  * - `actions`: Controls for the block, in the header before the copy button.
46457
46649
  * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
46458
46650
  * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
46651
+ * - `expand-icon`: An icon on the button that shows every line of a capped block, before its words.
46652
+ * - `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
46653
  *
46460
46654
  * ## CSS Custom Properties
46461
46655
  *
@@ -46520,7 +46714,9 @@ export type CustomElements = {
46520
46714
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
46521
46715
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
46522
46716
  * - `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.
46717
+ * - `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.
46718
+ * - `mark-added`: The band behind a run of lines `added-lines` names. Applied with `mark`.
46719
+ * - `mark-removed`: The band behind a run of lines `removed-lines` names. Applied with `mark`.
46524
46720
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
46525
46721
  * - `new`: In a split diff, the new version's `<pre>`.
46526
46722
  * - `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 +47325,11 @@ export type CustomElements = {
47129
47325
  * the anchor the browser points its bubble at.
47130
47326
  *
47131
47327
  * **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.
47328
+ * `#00` from a half-typed value. The picker marks it, and says
47329
+ * `badInputMessage` under itself, once the reader leaves the value field or
47330
+ * presses Enter, and a missing color once the reader has committed one or a
47331
+ * form has refused the picker. Color Input shows its own message against the
47332
+ * field the reader typed into.
47136
47333
  * - `saturation-label`/`saturationLabel`: What the square's horizontal ramp is called.
47137
47334
  * - `square-text`/`squareText`: What a screen reader hears for the square's place, the color's two
47138
47335
  * numbers and its name, on whichever of its two inputs it is on.
@@ -47231,12 +47428,8 @@ export type CustomElements = {
47231
47428
  *
47232
47429
  * Methods that can be called to access component functionality.
47233
47430
  *
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.
47431
+ * - `formResetCallback() => void`: A reset ends any typing and takes back text that was not a color, so the
47432
+ * field shows the color the reset put back.
47240
47433
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
47241
47434
  *
47242
47435
  * Announces before it acts, so `preventDefault()` on the `helix-before-change` is
@@ -47335,7 +47528,7 @@ export type CustomElements = {
47335
47528
  * - `eyedropper-live`: The live region of the button inside `eyedropper`, which says its pending label.
47336
47529
  * - `eyedropper-spinner`: The ring the eyedropper button turns while it is pending.
47337
47530
  * - `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.
47531
+ * - `feedback`: The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.
47339
47532
  * - `field`: One channel's number field with its label, in `channel-fields`.
47340
47533
  * - `field-input`: The number input in a channel's field.
47341
47534
  * - `field-label`: The name above a channel's number input.
@@ -47502,12 +47695,13 @@ export type CustomElements = {
47502
47695
  * language.
47503
47696
  * - `multiple`: Whether more than one option can be chosen.
47504
47697
  *
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.
47698
+ * The list already does the work: `value` is the chosen values joined with
47699
+ * commas, a press toggles rather than replaces, and the arrows move without
47700
+ * choosing. What this adds is the tags, and keeping the panel open between
47701
+ * picks.
47508
47702
  *
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.
47703
+ * An option's value may hold a comma, and it is read as one value, as
47704
+ * `Select` and `Listbox` read it. So may an answer the reader created.
47511
47705
  *
47512
47706
  * **The list is told, and the field is not.** `aria-multiselectable` belongs
47513
47707
  * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -47798,6 +47992,11 @@ export type CustomElements = {
47798
47992
  * - `filter-delay`/`filterDelay`: How long typing rests before the commands are filtered, in milliseconds,
47799
47993
  * so a palette filtered on a server sends one `helix-filter` for a word.
47800
47994
  * `0` filters on every keystroke. See Listbox's `filter-delay`.
47995
+ * - `home-end`/`homeEnd`: Where Home and End go from the filter field.
47996
+ *
47997
+ * Absent, they move the caret, as APG's combobox has them. `list` moves the
47998
+ * highlight to the first or the last command, as React Aria's Autocomplete
47999
+ * does, and Shift with either still selects the text.
47801
48000
  * - `hotkey`: The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
47802
48001
  * in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
47803
48002
  * `alt` and `shift` the keys they name.
@@ -47812,6 +48011,9 @@ export type CustomElements = {
47812
48011
  * Choosing a command says `helix-select` and leaves the list where it is,
47813
48012
  * and `open`, `toggle` and the dialog's parts do nothing.
47814
48013
  * - `label`: Accessible name for the overlay, which has no visible heading.
48014
+ * - `layout`: How the commands are laid out, as Listbox's `layout`: `grid` draws them in
48015
+ * rows and columns, for a palette of icons or emoji, and the arrow keys
48016
+ * follow the rows and the columns. Absent is one command under another.
47815
48017
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
47816
48018
  * request to a server fails. Empty, null or no attribute is no error, so
47817
48019
  * removing the attribute clears it. Passed to the list, which shows it
@@ -48227,8 +48429,11 @@ export type CustomElements = {
48227
48429
  * without `paginated` and with either `mode`, so a page or a chunk from a
48228
48430
  * server can be windowed.
48229
48431
  *
48230
- * **The cell values do not server-render.** Use `helix-table` when the content
48231
- * has to be in the served HTML.
48432
+ * **Write the first page as rows, so the served HTML carries the values.**
48433
+ * Write it under the columns as `helix-table-row` and `helix-table-cell`
48434
+ * elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
48435
+ * draws them before it upgrades, and the table shows them until `rows` holds a
48436
+ * row.
48232
48437
  *
48233
48438
  * ## Attributes & Properties
48234
48439
  *
@@ -48481,7 +48686,7 @@ export type CustomElements = {
48481
48686
  *
48482
48687
  * Areas where markup can be added to the component.
48483
48688
  *
48484
- * - `(default)`: The columns, as `TableColumn` elements.
48689
+ * - `(default)`: The columns, as `TableColumn` elements, and the first page served as `TableRow` elements, which show until `rows` holds a row.
48485
48690
  * - `empty`: Content shown when there are no rows to show and none are loading, such as a picture and a link. Falls back to `empty-text`, which the live region still says.
48486
48691
  * - `error`: Content shown while `error-text` is set, such as a button that tries again. Falls back to `error-text`, which the live region still says.
48487
48692
  * - `footer`: Content below the grid. It replaces the built-in pagination.
@@ -51207,6 +51412,12 @@ export type CustomElements = {
51207
51412
  * nothing between them, because a word every chip carries is a word nobody
51208
51413
  * reads. The moment somebody picks a different comparison it appears, which
51209
51414
  * makes an unusual filter look unusual.
51415
+ * - `dismissTabStop`: Whether the remove button is a tab stop of its own.
51416
+ *
51417
+ * `FilterInput` writes `false` on the chips in its `tags` slot: the field's
51418
+ * text is its one tab stop, and the arrow keys move from the text to the
51419
+ * chips, as in a `multiple` Combobox. No attribute: it is coordination
51420
+ * between elements, as `Tag.dismissTabStop` is. (property only)
51210
51421
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
51211
51422
  *
51212
51423
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -51664,6 +51875,17 @@ export type CustomElements = {
51664
51875
  * and this one was the English a form in another language still spoke in
51665
51876
  * the bubble it raises on submit: `feedback` replaces the message under
51666
51877
  * the field and does not reach that one.
51878
+ * - `chips`: Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
51879
+ * from the `helix-facet` events it hears.
51880
+ *
51881
+ * Off, you build the chips, which is what you do when your own model holds
51882
+ * the filters. On, a filter typed, picked, or changed adds or updates the
51883
+ * chip for its field, one with no values takes it away (unless its
51884
+ * comparison takes none, such as "is empty"), and removing the chip clears
51885
+ * the filter. A `helix-facet` you cancel changes no chip.
51886
+ *
51887
+ * The chips are elements the field adds to its own children, so leave this
51888
+ * off where a framework renders those children and would remove them.
51667
51889
  * - `clearable`: Shows a button that empties the field.
51668
51890
  *
51669
51891
  * The text only. The tokens are the consumer's markup and this element is not
@@ -51675,6 +51897,18 @@ export type CustomElements = {
51675
51897
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
51676
51898
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
51677
51899
  * what you slot and you narrow it.
51900
+ * - `loading`: Whether the suggestions are still loading, such as while a request for the
51901
+ * values of a typed key is out.
51902
+ *
51903
+ * The panel opens on `loading-text`, or the `loading` slot, while the field
51904
+ * has focus, and a screen reader hears it. Slot the options and clear this
51905
+ * when they arrive.
51906
+ * - `loading-text`/`loadingText`: Text the panel shows while the suggestions load.
51907
+ * - `no-results-text`/`noResultsText`: Text the panel shows when `filter-suggestions` hides every suggestion, such
51908
+ * as "No matching filters".
51909
+ *
51910
+ * Empty, or no `no-results` slot, and the panel closes instead, as it does
51911
+ * when it has nothing to offer.
51678
51912
  * - `placeholder`: The text shown while the field is empty.
51679
51913
  *
51680
51914
  * Not a label: it goes when typing starts.
@@ -51777,6 +52011,8 @@ export type CustomElements = {
51777
52011
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
51778
52012
  * - `hint`: Help under the control, for content richer than the `hint` text.
51779
52013
  * - `label`: The label, for content richer than the `label` text.
52014
+ * - `loading`: What the panel shows while `loading` is set, for content richer than `loading-text`.
52015
+ * - `no-results`: What the panel shows when `filter-suggestions` hides every suggestion, for content richer than `no-results-text`.
51780
52016
  * - `start`: Content before the text, such as a search icon.
51781
52017
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
51782
52018
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -51880,12 +52116,14 @@ export type CustomElements = {
51880
52116
  *
51881
52117
  * - `clear`: The button that empties the field.
51882
52118
  * - `control`: The input itself.
52119
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
51883
52120
  * - `feedback`: The error message under the field.
51884
52121
  * - `field`: The box that holds everything.
51885
52122
  * - `hint`: The help text under the field, shown while there is no error.
51886
52123
  * - `label`: The label above the field.
51887
52124
  * - `lead`: The box before the text that holds the `start` slot.
51888
52125
  * - `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.
52126
+ * - `loading`: Shown in the panel while the suggestions load.
51889
52127
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
51890
52128
  * - `surface`: The floating panel the suggestions sit in.
51891
52129
  * - `tags`: The row the tokens sit in.
@@ -51895,6 +52133,8 @@ export type CustomElements = {
51895
52133
  * These can be used to apply styling when a component is in a given state.
51896
52134
  *
51897
52135
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
52136
+ * - `loading`: While `loading` is set.
52137
+ * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
51898
52138
  * - `open`: The suggestions are open.
51899
52139
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
51900
52140
  */
@@ -53760,6 +54000,9 @@ export type CustomElements = {
53760
54000
  * Falling back to what the markup declared rather than to empty, because
53761
54001
  * a restore with no state is a form the browser has nothing recorded for,
53762
54002
  * which is the same situation as a fresh one.
54003
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
54004
+ * where `start` and `end` are left out, and `selectMode` says what is
54005
+ * selected after. It sends no event, as the native method sends none.
53763
54006
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
53764
54007
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
53765
54008
  *
@@ -58208,7 +58451,9 @@ export type CustomElements = {
58208
58451
  * speaks it: `feedback` replaces the message under the field and does not
58209
58452
  * reach the bubble. Unset is the sentence registered for the page's
58210
58453
  * language, then the English.
58211
- * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers.
58454
+ * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers. The field's
58455
+ * label follows it, so a reader hears "Decrease Quantity", as React Aria
58456
+ * names its steppers.
58212
58457
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
58213
58458
  * not being edited: a currency, a percent, a unit, or a number of decimals.
58214
58459
  * Written as JSON in the attribute.
@@ -58216,7 +58461,9 @@ export type CustomElements = {
58216
58461
  * ```html
58217
58462
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
58218
58463
  * ```
58219
- * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers.
58464
+ * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers. The field's
58465
+ * label follows it, so a reader hears "Increase Quantity", as React Aria
58466
+ * names its steppers.
58220
58467
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
58221
58468
  *
58222
58469
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -58377,8 +58624,10 @@ export type CustomElements = {
58377
58624
  * Falling back to what the markup declared rather than to empty, because
58378
58625
  * a restore with no state is a form the browser has nothing recorded for,
58379
58626
  * which is the same situation as a fresh one.
58380
- * - `stepUp(large = false) => void`: Steps the value up, by `largeStep` steps when `large` is set.
58381
- * - `stepDown(large = false) => void`: Steps the value down, by `largeStep` steps when `large` is set.
58627
+ * - `stepUp(count: number | boolean = 1) => void`: Steps the value up by `step`, `count` times, as the native method and
58628
+ * `Input.stepUp` do. `true` takes `largeStep` steps, as `PageUp` does.
58629
+ * - `stepDown(count: number | boolean = 1) => void`: Steps the value down by `step`, `count` times. `true` takes `largeStep`
58630
+ * steps, as `PageDown` does.
58382
58631
  *
58383
58632
  * The same path a press of the down arrow takes, so a consumer driving this
58384
58633
  * from their own control gets the clamping and the announcement rather than
@@ -61319,6 +61568,15 @@ export type CustomElements = {
61319
61568
  * `servePreview` does. It defines no element, so an example that uses Helix
61320
61569
  * components needs a `src` that imports them.
61321
61570
  *
61571
+ * **`imports` lets an example import packages by name** in the built-in
61572
+ * document, as an import map: each name maps to the address of an ES module,
61573
+ * such as `{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}`, and
61574
+ * `import confetti from 'canvas-confetti'` in the `js` pane then loads it. A
61575
+ * CDN that serves npm packages as modules, such as esm.sh or jsDelivr's
61576
+ * `+esm`, gives every package an address. A new map loads the document again,
61577
+ * since a browser reads one only as a document starts. A `src` document
61578
+ * declares its own.
61579
+ *
61322
61580
  * **Examples render in a frame**, so an example's styles and scripts do not
61323
61581
  * affect the page around the sandbox, and `position: fixed` stays inside the
61324
61582
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -61371,6 +61629,10 @@ export type CustomElements = {
61371
61629
  * it, here or anywhere: a frame is a document of its own and what is written
61372
61630
  * on this host reaches nothing inside it, which is the same reason
61373
61631
  * `colorMode` has to be sent rather than set.
61632
+ * - `imports`: The packages an example can import by name in the built-in document,
61633
+ * each mapped to the address of an ES module, as an import map's `imports`.
61634
+ * Set it as JSON in the attribute or as an object. Not read where `src` is
61635
+ * set.
61374
61636
  * - `label`: The frame's name, read by screen readers.
61375
61637
  * - `layout`: How the example is placed in the frame.
61376
61638
  *
@@ -61688,6 +61950,18 @@ export type CustomElements = {
61688
61950
  * that throws leaves the source drawn plain and the field editable, and the
61689
61951
  * error is reported to the page as an uncaught one.
61690
61952
  *
61953
+ * **`line-numbers` numbers each line** in a gutter beside the source. A line
61954
+ * that wraps keeps one number. The numbers are drawn, and hidden from screen
61955
+ * readers, which read the field.
61956
+ *
61957
+ * Enter keeps the indentation of the line it breaks, and the new line is
61958
+ * undone with the next undo as typing is.
61959
+ *
61960
+ * **The source can be written inside the pane** where `value` is not set: its
61961
+ * text, or the markup of a `<template>` it holds, without the indentation the
61962
+ * page gave it. Markup goes in a template so the page does not render it or
61963
+ * run its scripts. Text inside the pane is read once, when it connects.
61964
+ *
61691
61965
  * ## Attributes & Properties
61692
61966
  *
61693
61967
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -61699,6 +61973,7 @@ export type CustomElements = {
61699
61973
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
61700
61974
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
61701
61975
  * holds several panes. Empty puts the pane's `name` on the tab.
61976
+ * - `line-numbers`/`lineNumbers`: Whether each line of the source is numbered, in a gutter beside it.
61702
61977
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
61703
61978
  *
61704
61979
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -61757,6 +62032,7 @@ export type CustomElements = {
61757
62032
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
61758
62033
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
61759
62034
  * - `--sandbox-source-keyword-color`: Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`.
62035
+ * - `--sandbox-source-line-number-color`: Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`.
61760
62036
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
61761
62037
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
61762
62038
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -61766,8 +62042,9 @@ export type CustomElements = {
61766
62042
  *
61767
62043
  * Custom selectors for styling elements within the component.
61768
62044
  *
61769
- * - `field`: The box that scrolls the field and its colors together, under `tokenize`.
61770
- * - `highlight`: The colored copy of the source drawn under the field, under `tokenize`.
62045
+ * - `field`: The box that scrolls the field and its colors together, under `tokenize` or `line-numbers`.
62046
+ * - `highlight`: The colored copy of the source drawn under the field, under `tokenize` or `line-numbers`.
62047
+ * - `line`: One line of that copy, under `line-numbers`, numbered in the gutter by its `::before`.
61771
62048
  * - `source`: The editable region.
61772
62049
  * - `token`: One run of the source that has a kind, under `tokenize`.
61773
62050
  *
@@ -64309,7 +64586,8 @@ export type CustomElements = {
64309
64586
  *
64310
64587
  * Ignored once `active` is written.
64311
64588
  * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
64312
- * way the steps run. Off by default, so the arrows keep scrolling the page.
64589
+ * way the steps run, and the names are one tab stop. Off by default, so the
64590
+ * arrows keep scrolling the page.
64313
64591
  * - `completion`: What marks a stage `complete`.
64314
64592
  *
64315
64593
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -64464,7 +64742,9 @@ export type CustomElements = {
64464
64742
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
64465
64743
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
64466
64744
  * with `linear`. Ark UI's skippable step.
64467
- * - `value`: The value the step sends in `helix-select`.
64745
+ * - `value`: The value the step sends in `helix-select`, and what names the step in its
64746
+ * sequence's `active`. Without one, the sequence names the step by its place,
64747
+ * counted from 1.
64468
64748
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
64469
64749
  *
64470
64750
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -75035,6 +75315,10 @@ export type CustomElementsSolidJs = {
75035
75315
  *
75036
75316
  * These can be used to apply styling when a component is in a given state.
75037
75317
  *
75318
+ * - `empty`: The conversation has no turns.
75319
+ * - `loading`: Older turns are loading: `history` is `loading`.
75320
+ * - `pinned`: The transcript follows its newest turn.
75321
+ * - `typing`: `typing` names someone on the other side.
75038
75322
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75039
75323
  */
75040
75324
  "helix-chat": Partial<
@@ -75568,6 +75852,8 @@ export type CustomElementsSolidJs = {
75568
75852
  *
75569
75853
  * Component attributes and properties that can be applied to the element or by using JavaScript.
75570
75854
  *
75855
+ * - `added-lines`/`addedLines`: The lines to mark as inserted, as numbers and ranges counted from 1, such
75856
+ * as `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.
75571
75857
  * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
75572
75858
  *
75573
75859
  * Where the block has a name, the scroller says it too, such as "Code,
@@ -75644,6 +75930,8 @@ export type CustomElementsSolidJs = {
75644
75930
  * `no-copy=""` on hosts that never asked for one, and the rule about a
75645
75931
  * reflected property taking no default is satisfied by the default being
75646
75932
  * `false`.
75933
+ * - `removed-lines`/`removedLines`: The lines to mark as deleted, as numbers and ranges counted from 1. Drawn
75934
+ * as `mark-lines` is, in the removed color. Not for a diff.
75647
75935
  * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
75648
75936
  * diff with `context-lines`. `{count}` is how many.
75649
75937
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
@@ -75723,6 +76011,8 @@ export type CustomElementsSolidJs = {
75723
76011
  * - `actions`: Controls for the block, in the header before the copy button.
75724
76012
  * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
75725
76013
  * - `copy-icon`: The copy button's icon before a copy. Defaults to a clipboard.
76014
+ * - `expand-icon`: An icon on the button that shows every line of a capped block, before its words.
76015
+ * - `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.
75726
76016
  *
75727
76017
  * ## CSS Custom Properties
75728
76018
  *
@@ -75787,7 +76077,9 @@ export type CustomElementsSolidJs = {
75787
76077
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
75788
76078
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
75789
76079
  * - `label`: The block's name: its `label`, or its `language` where it has no label.
75790
- * - `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.
76080
+ * - `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.
76081
+ * - `mark-added`: The band behind a run of lines `added-lines` names. Applied with `mark`.
76082
+ * - `mark-removed`: The band behind a run of lines `removed-lines` names. Applied with `mark`.
75791
76083
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
75792
76084
  * - `new`: In a split diff, the new version's `<pre>`.
75793
76085
  * - `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`.
@@ -76404,10 +76696,11 @@ export type CustomElementsSolidJs = {
76404
76696
  * the anchor the browser points its bubble at.
76405
76697
  *
76406
76698
  * **Text that is not a color is bad input**, so a form does not submit
76407
- * `#00` from a half-typed value. The picker draws no message of its own, so
76408
- * reporting it as each keystroke arrives shows nothing until the form asks;
76409
- * Color Input shows its own message against the field the reader typed
76410
- * into.
76699
+ * `#00` from a half-typed value. The picker marks it, and says
76700
+ * `badInputMessage` under itself, once the reader leaves the value field or
76701
+ * presses Enter, and a missing color once the reader has committed one or a
76702
+ * form has refused the picker. Color Input shows its own message against the
76703
+ * field the reader typed into.
76411
76704
  * - `saturation-label`/`saturationLabel`: What the square's horizontal ramp is called.
76412
76705
  * - `square-text`/`squareText`: What a screen reader hears for the square's place, the color's two
76413
76706
  * numbers and its name, on whichever of its two inputs it is on.
@@ -76506,12 +76799,8 @@ export type CustomElementsSolidJs = {
76506
76799
  *
76507
76800
  * Methods that can be called to access component functionality.
76508
76801
  *
76509
- * - `formResetCallback() => void`: Returns the control to its `defaultValue`, or to its `value` attribute
76510
- * where there is no `default-value`.
76511
- *
76512
- * Both halves are dropped, the consumer's and the control's, because a
76513
- * reset means the form is as it was served. Clearing only the internal one
76514
- * would leave a control that had been written to stuck at that value.
76802
+ * - `formResetCallback() => void`: A reset ends any typing and takes back text that was not a color, so the
76803
+ * field shows the color the reset put back.
76515
76804
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
76516
76805
  *
76517
76806
  * Announces before it acts, so `preventDefault()` on the `helix-before-change` is
@@ -76610,7 +76899,7 @@ export type CustomElementsSolidJs = {
76610
76899
  * - `eyedropper-live`: The live region of the button inside `eyedropper`, which says its pending label.
76611
76900
  * - `eyedropper-spinner`: The ring the eyedropper button turns while it is pending.
76612
76901
  * - `eyedropper-text`: The words on the button inside `eyedropper`, trimmed to their capitals and baseline.
76613
- * - `feedback`: The message under the picker, while `feedback` is set.
76902
+ * - `feedback`: The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.
76614
76903
  * - `field`: One channel's number field with its label, in `channel-fields`.
76615
76904
  * - `field-input`: The number input in a channel's field.
76616
76905
  * - `field-label`: The name above a channel's number input.
@@ -76780,12 +77069,13 @@ export type CustomElementsSolidJs = {
76780
77069
  * language.
76781
77070
  * - `multiple`: Whether more than one option can be chosen.
76782
77071
  *
76783
- * The list already does the work: `value` comes apart on commas, a press
76784
- * toggles rather than replaces, and the arrows move without choosing. What
76785
- * this adds is the tags, and keeping the panel open between picks.
77072
+ * The list already does the work: `value` is the chosen values joined with
77073
+ * commas, a press toggles rather than replaces, and the arrows move without
77074
+ * choosing. What this adds is the tags, and keeping the panel open between
77075
+ * picks.
76786
77076
  *
76787
- * A comma is therefore not available inside an option's value, which is the
76788
- * listbox's contract and not this element's to change.
77077
+ * An option's value may hold a comma, and it is read as one value, as
77078
+ * `Select` and `Listbox` read it. So may an answer the reader created.
76789
77079
  *
76790
77080
  * **The list is told, and the field is not.** `aria-multiselectable` belongs
76791
77081
  * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -77079,6 +77369,11 @@ export type CustomElementsSolidJs = {
77079
77369
  * - `filter-delay`/`filterDelay`: How long typing rests before the commands are filtered, in milliseconds,
77080
77370
  * so a palette filtered on a server sends one `helix-filter` for a word.
77081
77371
  * `0` filters on every keystroke. See Listbox's `filter-delay`.
77372
+ * - `home-end`/`homeEnd`: Where Home and End go from the filter field.
77373
+ *
77374
+ * Absent, they move the caret, as APG's combobox has them. `list` moves the
77375
+ * highlight to the first or the last command, as React Aria's Autocomplete
77376
+ * does, and Shift with either still selects the text.
77082
77377
  * - `hotkey`: The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
77083
77378
  * in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
77084
77379
  * `alt` and `shift` the keys they name.
@@ -77093,6 +77388,9 @@ export type CustomElementsSolidJs = {
77093
77388
  * Choosing a command says `helix-select` and leaves the list where it is,
77094
77389
  * and `open`, `toggle` and the dialog's parts do nothing.
77095
77390
  * - `label`: Accessible name for the overlay, which has no visible heading.
77391
+ * - `layout`: How the commands are laid out, as Listbox's `layout`: `grid` draws them in
77392
+ * rows and columns, for a palette of icons or emoji, and the arrow keys
77393
+ * follow the rows and the columns. Absent is one command under another.
77096
77394
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
77097
77395
  * request to a server fails. Empty, null or no attribute is no error, so
77098
77396
  * removing the attribute clears it. Passed to the list, which shows it
@@ -77514,8 +77812,11 @@ export type CustomElementsSolidJs = {
77514
77812
  * without `paginated` and with either `mode`, so a page or a chunk from a
77515
77813
  * server can be windowed.
77516
77814
  *
77517
- * **The cell values do not server-render.** Use `helix-table` when the content
77518
- * has to be in the served HTML.
77815
+ * **Write the first page as rows, so the served HTML carries the values.**
77816
+ * Write it under the columns as `helix-table-row` and `helix-table-cell`
77817
+ * elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
77818
+ * draws them before it upgrades, and the table shows them until `rows` holds a
77819
+ * row.
77519
77820
  *
77520
77821
  * ## Attributes & Properties
77521
77822
  *
@@ -77768,7 +78069,7 @@ export type CustomElementsSolidJs = {
77768
78069
  *
77769
78070
  * Areas where markup can be added to the component.
77770
78071
  *
77771
- * - `(default)`: The columns, as `TableColumn` elements.
78072
+ * - `(default)`: The columns, as `TableColumn` elements, and the first page served as `TableRow` elements, which show until `rows` holds a row.
77772
78073
  * - `empty`: Content shown when there are no rows to show and none are loading, such as a picture and a link. Falls back to `empty-text`, which the live region still says.
77773
78074
  * - `error`: Content shown while `error-text` is set, such as a button that tries again. Falls back to `error-text`, which the live region still says.
77774
78075
  * - `footer`: Content below the grid. It replaces the built-in pagination.
@@ -80533,6 +80834,12 @@ export type CustomElementsSolidJs = {
80533
80834
  * nothing between them, because a word every chip carries is a word nobody
80534
80835
  * reads. The moment somebody picks a different comparison it appears, which
80535
80836
  * makes an unusual filter look unusual.
80837
+ * - `dismissTabStop`: Whether the remove button is a tab stop of its own.
80838
+ *
80839
+ * `FilterInput` writes `false` on the chips in its `tags` slot: the field's
80840
+ * text is its one tab stop, and the arrow keys move from the text to the
80841
+ * chips, as in a `multiple` Combobox. No attribute: it is coordination
80842
+ * between elements, as `Tag.dismissTabStop` is. (property only)
80536
80843
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
80537
80844
  *
80538
80845
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81002,6 +81309,17 @@ export type CustomElementsSolidJs = {
81002
81309
  * and this one was the English a form in another language still spoke in
81003
81310
  * the bubble it raises on submit: `feedback` replaces the message under
81004
81311
  * the field and does not reach that one.
81312
+ * - `chips`: Whether the field keeps a `FilterChip` for each filter in its `tags` slot,
81313
+ * from the `helix-facet` events it hears.
81314
+ *
81315
+ * Off, you build the chips, which is what you do when your own model holds
81316
+ * the filters. On, a filter typed, picked, or changed adds or updates the
81317
+ * chip for its field, one with no values takes it away (unless its
81318
+ * comparison takes none, such as "is empty"), and removing the chip clears
81319
+ * the filter. A `helix-facet` you cancel changes no chip.
81320
+ *
81321
+ * The chips are elements the field adds to its own children, so leave this
81322
+ * off where a framework renders those children and would remove them.
81005
81323
  * - `clearable`: Shows a button that empties the field.
81006
81324
  *
81007
81325
  * The text only. The tokens are the consumer's markup and this element is not
@@ -81013,6 +81331,18 @@ export type CustomElementsSolidJs = {
81013
81331
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
81014
81332
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
81015
81333
  * what you slot and you narrow it.
81334
+ * - `loading`: Whether the suggestions are still loading, such as while a request for the
81335
+ * values of a typed key is out.
81336
+ *
81337
+ * The panel opens on `loading-text`, or the `loading` slot, while the field
81338
+ * has focus, and a screen reader hears it. Slot the options and clear this
81339
+ * when they arrive.
81340
+ * - `loading-text`/`loadingText`: Text the panel shows while the suggestions load.
81341
+ * - `no-results-text`/`noResultsText`: Text the panel shows when `filter-suggestions` hides every suggestion, such
81342
+ * as "No matching filters".
81343
+ *
81344
+ * Empty, or no `no-results` slot, and the panel closes instead, as it does
81345
+ * when it has nothing to offer.
81016
81346
  * - `placeholder`: The text shown while the field is empty.
81017
81347
  *
81018
81348
  * Not a label: it goes when typing starts.
@@ -81115,6 +81445,8 @@ export type CustomElementsSolidJs = {
81115
81445
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
81116
81446
  * - `hint`: Help under the control, for content richer than the `hint` text.
81117
81447
  * - `label`: The label, for content richer than the `label` text.
81448
+ * - `loading`: What the panel shows while `loading` is set, for content richer than `loading-text`.
81449
+ * - `no-results`: What the panel shows when `filter-suggestions` hides every suggestion, for content richer than `no-results-text`.
81118
81450
  * - `start`: Content before the text, such as a search icon.
81119
81451
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
81120
81452
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -81218,12 +81550,14 @@ export type CustomElementsSolidJs = {
81218
81550
  *
81219
81551
  * - `clear`: The button that empties the field.
81220
81552
  * - `control`: The input itself.
81553
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
81221
81554
  * - `feedback`: The error message under the field.
81222
81555
  * - `field`: The box that holds everything.
81223
81556
  * - `hint`: The help text under the field, shown while there is no error.
81224
81557
  * - `label`: The label above the field.
81225
81558
  * - `lead`: The box before the text that holds the `start` slot.
81226
81559
  * - `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.
81560
+ * - `loading`: Shown in the panel while the suggestions load.
81227
81561
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
81228
81562
  * - `surface`: The floating panel the suggestions sit in.
81229
81563
  * - `tags`: The row the tokens sit in.
@@ -81233,6 +81567,8 @@ export type CustomElementsSolidJs = {
81233
81567
  * These can be used to apply styling when a component is in a given state.
81234
81568
  *
81235
81569
  * - `invalid`: The field has an error to show, from the browser's validation or from your `feedback`.
81570
+ * - `loading`: While `loading` is set.
81571
+ * - `no-results`: `filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.
81236
81572
  * - `open`: The suggestions are open.
81237
81573
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81238
81574
  */
@@ -83126,6 +83462,9 @@ export type CustomElementsSolidJs = {
83126
83462
  * Falling back to what the markup declared rather than to empty, because
83127
83463
  * a restore with no state is a form the browser has nothing recorded for,
83128
83464
  * which is the same situation as a fresh one.
83465
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
83466
+ * where `start` and `end` are left out, and `selectMode` says what is
83467
+ * selected after. It sends no event, as the native method sends none.
83129
83468
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
83130
83469
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
83131
83470
  *
@@ -87664,7 +88003,9 @@ export type CustomElementsSolidJs = {
87664
88003
  * speaks it: `feedback` replaces the message under the field and does not
87665
88004
  * reach the bubble. Unset is the sentence registered for the page's
87666
88005
  * language, then the English.
87667
- * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers.
88006
+ * - `decrement-label`/`decrementLabel`: The name of the step down button, read by screen readers. The field's
88007
+ * label follows it, so a reader hears "Decrease Quantity", as React Aria
88008
+ * names its steppers.
87668
88009
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
87669
88010
  * not being edited: a currency, a percent, a unit, or a number of decimals.
87670
88011
  * Written as JSON in the attribute.
@@ -87672,7 +88013,9 @@ export type CustomElementsSolidJs = {
87672
88013
  * ```html
87673
88014
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
87674
88015
  * ```
87675
- * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers.
88016
+ * - `increment-label`/`incrementLabel`: The name of the step up button, read by screen readers. The field's
88017
+ * label follows it, so a reader hears "Increase Quantity", as React Aria
88018
+ * names its steppers.
87676
88019
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
87677
88020
  *
87678
88021
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -87833,8 +88176,10 @@ export type CustomElementsSolidJs = {
87833
88176
  * Falling back to what the markup declared rather than to empty, because
87834
88177
  * a restore with no state is a form the browser has nothing recorded for,
87835
88178
  * which is the same situation as a fresh one.
87836
- * - `stepUp(large = false) => void`: Steps the value up, by `largeStep` steps when `large` is set.
87837
- * - `stepDown(large = false) => void`: Steps the value down, by `largeStep` steps when `large` is set.
88179
+ * - `stepUp(count: number | boolean = 1) => void`: Steps the value up by `step`, `count` times, as the native method and
88180
+ * `Input.stepUp` do. `true` takes `largeStep` steps, as `PageUp` does.
88181
+ * - `stepDown(count: number | boolean = 1) => void`: Steps the value down by `step`, `count` times. `true` takes `largeStep`
88182
+ * steps, as `PageDown` does.
87838
88183
  *
87839
88184
  * The same path a press of the down arrow takes, so a consumer driving this
87840
88185
  * from their own control gets the clamping and the announcement rather than
@@ -90832,6 +91177,15 @@ export type CustomElementsSolidJs = {
90832
91177
  * `servePreview` does. It defines no element, so an example that uses Helix
90833
91178
  * components needs a `src` that imports them.
90834
91179
  *
91180
+ * **`imports` lets an example import packages by name** in the built-in
91181
+ * document, as an import map: each name maps to the address of an ES module,
91182
+ * such as `{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}`, and
91183
+ * `import confetti from 'canvas-confetti'` in the `js` pane then loads it. A
91184
+ * CDN that serves npm packages as modules, such as esm.sh or jsDelivr's
91185
+ * `+esm`, gives every package an address. A new map loads the document again,
91186
+ * since a browser reads one only as a document starts. A `src` document
91187
+ * declares its own.
91188
+ *
90835
91189
  * **Examples render in a frame**, so an example's styles and scripts do not
90836
91190
  * affect the page around the sandbox, and `position: fixed` stays inside the
90837
91191
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -90884,6 +91238,10 @@ export type CustomElementsSolidJs = {
90884
91238
  * it, here or anywhere: a frame is a document of its own and what is written
90885
91239
  * on this host reaches nothing inside it, which is the same reason
90886
91240
  * `colorMode` has to be sent rather than set.
91241
+ * - `imports`: The packages an example can import by name in the built-in document,
91242
+ * each mapped to the address of an ES module, as an import map's `imports`.
91243
+ * Set it as JSON in the attribute or as an object. Not read where `src` is
91244
+ * set.
90887
91245
  * - `label`: The frame's name, read by screen readers.
90888
91246
  * - `layout`: How the example is placed in the frame.
90889
91247
  *
@@ -91207,6 +91565,18 @@ export type CustomElementsSolidJs = {
91207
91565
  * that throws leaves the source drawn plain and the field editable, and the
91208
91566
  * error is reported to the page as an uncaught one.
91209
91567
  *
91568
+ * **`line-numbers` numbers each line** in a gutter beside the source. A line
91569
+ * that wraps keeps one number. The numbers are drawn, and hidden from screen
91570
+ * readers, which read the field.
91571
+ *
91572
+ * Enter keeps the indentation of the line it breaks, and the new line is
91573
+ * undone with the next undo as typing is.
91574
+ *
91575
+ * **The source can be written inside the pane** where `value` is not set: its
91576
+ * text, or the markup of a `<template>` it holds, without the indentation the
91577
+ * page gave it. Markup goes in a template so the page does not render it or
91578
+ * run its scripts. Text inside the pane is read once, when it connects.
91579
+ *
91210
91580
  * ## Attributes & Properties
91211
91581
  *
91212
91582
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -91218,6 +91588,7 @@ export type CustomElementsSolidJs = {
91218
91588
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
91219
91589
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
91220
91590
  * holds several panes. Empty puts the pane's `name` on the tab.
91591
+ * - `line-numbers`/`lineNumbers`: Whether each line of the source is numbered, in a gutter beside it.
91221
91592
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
91222
91593
  *
91223
91594
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -91276,6 +91647,7 @@ export type CustomElementsSolidJs = {
91276
91647
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
91277
91648
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
91278
91649
  * - `--sandbox-source-keyword-color`: Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`.
91650
+ * - `--sandbox-source-line-number-color`: Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`.
91279
91651
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
91280
91652
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
91281
91653
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -91285,8 +91657,9 @@ export type CustomElementsSolidJs = {
91285
91657
  *
91286
91658
  * Custom selectors for styling elements within the component.
91287
91659
  *
91288
- * - `field`: The box that scrolls the field and its colors together, under `tokenize`.
91289
- * - `highlight`: The colored copy of the source drawn under the field, under `tokenize`.
91660
+ * - `field`: The box that scrolls the field and its colors together, under `tokenize` or `line-numbers`.
91661
+ * - `highlight`: The colored copy of the source drawn under the field, under `tokenize` or `line-numbers`.
91662
+ * - `line`: One line of that copy, under `line-numbers`, numbered in the gutter by its `::before`.
91290
91663
  * - `source`: The editable region.
91291
91664
  * - `token`: One run of the source that has a kind, under `tokenize`.
91292
91665
  *
@@ -93878,7 +94251,8 @@ export type CustomElementsSolidJs = {
93878
94251
  *
93879
94252
  * Ignored once `active` is written.
93880
94253
  * - `arrows`: Whether the arrow keys move focus between the stages' names, along the
93881
- * way the steps run. Off by default, so the arrows keep scrolling the page.
94254
+ * way the steps run, and the names are one tab stop. Off by default, so the
94255
+ * arrows keep scrolling the page.
93882
94256
  * - `completion`: What marks a stage `complete`.
93883
94257
  *
93884
94258
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -94038,7 +94412,9 @@ export type CustomElementsSolidJs = {
94038
94412
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
94039
94413
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
94040
94414
  * with `linear`. Ark UI's skippable step.
94041
- * - `value`: The value the step sends in `helix-select`.
94415
+ * - `value`: The value the step sends in `helix-select`, and what names the step in its
94416
+ * sequence's `active`. Without one, the sequence names the step by its place,
94417
+ * counted from 1.
94042
94418
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
94043
94419
  *
94044
94420
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -101868,6 +102244,8 @@ export type CustomCssProperties = {
101868
102244
  "--sandbox-source-invalid-color"?: (string) | undefined;
101869
102245
  /** Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`. */
101870
102246
  "--sandbox-source-keyword-color"?: (string) | undefined;
102247
+ /** Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`. */
102248
+ "--sandbox-source-line-number-color"?: (string) | undefined;
101871
102249
  /** Minimum height of the pane. */
101872
102250
  "--sandbox-source-min-block-size"?: (string) | undefined;
101873
102251
  /** Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`. */