@fusion.dev/helix 0.170.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
@@ -51210,6 +51412,12 @@ export type CustomElements = {
51210
51412
  * nothing between them, because a word every chip carries is a word nobody
51211
51413
  * reads. The moment somebody picks a different comparison it appears, which
51212
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)
51213
51421
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
51214
51422
  *
51215
51423
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -51667,6 +51875,17 @@ export type CustomElements = {
51667
51875
  * and this one was the English a form in another language still spoke in
51668
51876
  * the bubble it raises on submit: `feedback` replaces the message under
51669
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.
51670
51889
  * - `clearable`: Shows a button that empties the field.
51671
51890
  *
51672
51891
  * The text only. The tokens are the consumer's markup and this element is not
@@ -51678,6 +51897,18 @@ export type CustomElements = {
51678
51897
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
51679
51898
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
51680
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.
51681
51912
  * - `placeholder`: The text shown while the field is empty.
51682
51913
  *
51683
51914
  * Not a label: it goes when typing starts.
@@ -51780,6 +52011,8 @@ export type CustomElements = {
51780
52011
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
51781
52012
  * - `hint`: Help under the control, for content richer than the `hint` text.
51782
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`.
51783
52016
  * - `start`: Content before the text, such as a search icon.
51784
52017
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
51785
52018
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -51883,12 +52116,14 @@ export type CustomElements = {
51883
52116
  *
51884
52117
  * - `clear`: The button that empties the field.
51885
52118
  * - `control`: The input itself.
52119
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
51886
52120
  * - `feedback`: The error message under the field.
51887
52121
  * - `field`: The box that holds everything.
51888
52122
  * - `hint`: The help text under the field, shown while there is no error.
51889
52123
  * - `label`: The label above the field.
51890
52124
  * - `lead`: The box before the text that holds the `start` slot.
51891
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.
51892
52127
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
51893
52128
  * - `surface`: The floating panel the suggestions sit in.
51894
52129
  * - `tags`: The row the tokens sit in.
@@ -51898,6 +52133,8 @@ export type CustomElements = {
51898
52133
  * These can be used to apply styling when a component is in a given state.
51899
52134
  *
51900
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.
51901
52138
  * - `open`: The suggestions are open.
51902
52139
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
51903
52140
  */
@@ -53763,6 +54000,9 @@ export type CustomElements = {
53763
54000
  * Falling back to what the markup declared rather than to empty, because
53764
54001
  * a restore with no state is a form the browser has nothing recorded for,
53765
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.
53766
54006
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
53767
54007
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
53768
54008
  *
@@ -58211,7 +58451,9 @@ export type CustomElements = {
58211
58451
  * speaks it: `feedback` replaces the message under the field and does not
58212
58452
  * reach the bubble. Unset is the sentence registered for the page's
58213
58453
  * language, then the English.
58214
- * - `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.
58215
58457
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
58216
58458
  * not being edited: a currency, a percent, a unit, or a number of decimals.
58217
58459
  * Written as JSON in the attribute.
@@ -58219,7 +58461,9 @@ export type CustomElements = {
58219
58461
  * ```html
58220
58462
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
58221
58463
  * ```
58222
- * - `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.
58223
58467
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
58224
58468
  *
58225
58469
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -58380,8 +58624,10 @@ export type CustomElements = {
58380
58624
  * Falling back to what the markup declared rather than to empty, because
58381
58625
  * a restore with no state is a form the browser has nothing recorded for,
58382
58626
  * 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.
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.
58385
58631
  *
58386
58632
  * The same path a press of the down arrow takes, so a consumer driving this
58387
58633
  * from their own control gets the clamping and the announcement rather than
@@ -61322,6 +61568,15 @@ export type CustomElements = {
61322
61568
  * `servePreview` does. It defines no element, so an example that uses Helix
61323
61569
  * components needs a `src` that imports them.
61324
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
+ *
61325
61580
  * **Examples render in a frame**, so an example's styles and scripts do not
61326
61581
  * affect the page around the sandbox, and `position: fixed` stays inside the
61327
61582
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -61374,6 +61629,10 @@ export type CustomElements = {
61374
61629
  * it, here or anywhere: a frame is a document of its own and what is written
61375
61630
  * on this host reaches nothing inside it, which is the same reason
61376
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.
61377
61636
  * - `label`: The frame's name, read by screen readers.
61378
61637
  * - `layout`: How the example is placed in the frame.
61379
61638
  *
@@ -61691,6 +61950,18 @@ export type CustomElements = {
61691
61950
  * that throws leaves the source drawn plain and the field editable, and the
61692
61951
  * error is reported to the page as an uncaught one.
61693
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
+ *
61694
61965
  * ## Attributes & Properties
61695
61966
  *
61696
61967
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -61702,6 +61973,7 @@ export type CustomElements = {
61702
61973
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
61703
61974
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
61704
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.
61705
61977
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
61706
61978
  *
61707
61979
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -61760,6 +62032,7 @@ export type CustomElements = {
61760
62032
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
61761
62033
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
61762
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`.
61763
62036
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
61764
62037
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
61765
62038
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -61769,8 +62042,9 @@ export type CustomElements = {
61769
62042
  *
61770
62043
  * Custom selectors for styling elements within the component.
61771
62044
  *
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`.
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`.
61774
62048
  * - `source`: The editable region.
61775
62049
  * - `token`: One run of the source that has a kind, under `tokenize`.
61776
62050
  *
@@ -64312,7 +64586,8 @@ export type CustomElements = {
64312
64586
  *
64313
64587
  * Ignored once `active` is written.
64314
64588
  * - `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.
64589
+ * way the steps run, and the names are one tab stop. Off by default, so the
64590
+ * arrows keep scrolling the page.
64316
64591
  * - `completion`: What marks a stage `complete`.
64317
64592
  *
64318
64593
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -64467,7 +64742,9 @@ export type CustomElements = {
64467
64742
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
64468
64743
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
64469
64744
  * with `linear`. Ark UI's skippable step.
64470
- * - `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.
64471
64748
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
64472
64749
  *
64473
64750
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -75038,6 +75315,10 @@ export type CustomElementsSolidJs = {
75038
75315
  *
75039
75316
  * These can be used to apply styling when a component is in a given state.
75040
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.
75041
75322
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
75042
75323
  */
75043
75324
  "helix-chat": Partial<
@@ -75571,6 +75852,8 @@ export type CustomElementsSolidJs = {
75571
75852
  *
75572
75853
  * Component attributes and properties that can be applied to the element or by using JavaScript.
75573
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.
75574
75857
  * - `code-label`/`codeLabel`: The name of a block that scrolls, which is a tab stop while it does.
75575
75858
  *
75576
75859
  * Where the block has a name, the scroller says it too, such as "Code,
@@ -75647,6 +75930,8 @@ export type CustomElementsSolidJs = {
75647
75930
  * `no-copy=""` on hosts that never asked for one, and the rule about a
75648
75931
  * reflected property taking no default is satisfied by the default being
75649
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.
75650
75935
  * - `show-unchanged-label`/`showUnchangedLabel`: The words of a button that shows a folded run of unchanged lines, in a
75651
75936
  * diff with `context-lines`. `{count}` is how many.
75652
75937
  * - `variant`: How a diff's two versions are arranged. It has no effect without `diff`.
@@ -75726,6 +76011,8 @@ export type CustomElementsSolidJs = {
75726
76011
  * - `actions`: Controls for the block, in the header before the copy button.
75727
76012
  * - `copied-icon`: The copy button's icon after a copy. Defaults to a check mark.
75728
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.
75729
76016
  *
75730
76017
  * ## CSS Custom Properties
75731
76018
  *
@@ -75790,7 +76077,9 @@ export type CustomElementsSolidJs = {
75790
76077
  * - `header`: The bar that holds the name and the copy button, shown when there is a name.
75791
76078
  * - `hunk`: In a diff, a `@@` line saying where the lines under it are.
75792
76079
  * - `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.
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`.
75794
76083
  * - `marker`: In a diff, the `+`, `-`, or space that starts a line.
75795
76084
  * - `new`: In a split diff, the new version's `<pre>`.
75796
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`.
@@ -76407,10 +76696,11 @@ export type CustomElementsSolidJs = {
76407
76696
  * the anchor the browser points its bubble at.
76408
76697
  *
76409
76698
  * **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.
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.
76414
76704
  * - `saturation-label`/`saturationLabel`: What the square's horizontal ramp is called.
76415
76705
  * - `square-text`/`squareText`: What a screen reader hears for the square's place, the color's two
76416
76706
  * numbers and its name, on whichever of its two inputs it is on.
@@ -76509,12 +76799,8 @@ export type CustomElementsSolidJs = {
76509
76799
  *
76510
76800
  * Methods that can be called to access component functionality.
76511
76801
  *
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.
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.
76518
76804
  * - `requestValue(next: string) => boolean`: Requests a new value, and returns whether the change was applied.
76519
76805
  *
76520
76806
  * Announces before it acts, so `preventDefault()` on the `helix-before-change` is
@@ -76613,7 +76899,7 @@ export type CustomElementsSolidJs = {
76613
76899
  * - `eyedropper-live`: The live region of the button inside `eyedropper`, which says its pending label.
76614
76900
  * - `eyedropper-spinner`: The ring the eyedropper button turns while it is pending.
76615
76901
  * - `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.
76902
+ * - `feedback`: The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.
76617
76903
  * - `field`: One channel's number field with its label, in `channel-fields`.
76618
76904
  * - `field-input`: The number input in a channel's field.
76619
76905
  * - `field-label`: The name above a channel's number input.
@@ -76783,12 +77069,13 @@ export type CustomElementsSolidJs = {
76783
77069
  * language.
76784
77070
  * - `multiple`: Whether more than one option can be chosen.
76785
77071
  *
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.
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.
76789
77076
  *
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.
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.
76792
77079
  *
76793
77080
  * **The list is told, and the field is not.** `aria-multiselectable` belongs
76794
77081
  * to `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in
@@ -77082,6 +77369,11 @@ export type CustomElementsSolidJs = {
77082
77369
  * - `filter-delay`/`filterDelay`: How long typing rests before the commands are filtered, in milliseconds,
77083
77370
  * so a palette filtered on a server sends one `helix-filter` for a word.
77084
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.
77085
77377
  * - `hotkey`: The key that opens the palette, written as `mod+k`, `shift+p`, or `k`,
77086
77378
  * in Kbd's chord spelling: `mod` is Command or Control, `ctrl`, `cmd`,
77087
77379
  * `alt` and `shift` the keys they name.
@@ -77096,6 +77388,9 @@ export type CustomElementsSolidJs = {
77096
77388
  * Choosing a command says `helix-select` and leaves the list where it is,
77097
77389
  * and `open`, `toggle` and the dialog's parts do nothing.
77098
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.
77099
77394
  * - `load-error`/`loadError`: What the list says when its commands could not be loaded, such as after a
77100
77395
  * request to a server fails. Empty, null or no attribute is no error, so
77101
77396
  * removing the attribute clears it. Passed to the list, which shows it
@@ -80539,6 +80834,12 @@ export type CustomElementsSolidJs = {
80539
80834
  * nothing between them, because a word every chip carries is a word nobody
80540
80835
  * reads. The moment somebody picks a different comparison it appears, which
80541
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)
80542
80843
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
80543
80844
  *
80544
80845
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -81008,6 +81309,17 @@ export type CustomElementsSolidJs = {
81008
81309
  * and this one was the English a form in another language still spoke in
81009
81310
  * the bubble it raises on submit: `feedback` replaces the message under
81010
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.
81011
81323
  * - `clearable`: Shows a button that empties the field.
81012
81324
  *
81013
81325
  * The text only. The tokens are the consumer's markup and this element is not
@@ -81019,6 +81331,18 @@ export type CustomElementsSolidJs = {
81019
81331
  * - `filter-suggestions`/`filterSuggestions`: Whether the panel narrows itself to the suggestions that hold the term
81020
81332
  * being typed, as React Aria's Autocomplete filters. Off, the panel shows
81021
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.
81022
81346
  * - `placeholder`: The text shown while the field is empty.
81023
81347
  *
81024
81348
  * Not a label: it goes when typing starts.
@@ -81121,6 +81445,8 @@ export type CustomElementsSolidJs = {
81121
81445
  * - `feedback`: The message that says what is wrong, for content richer than a string. It shows while there is a message.
81122
81446
  * - `hint`: Help under the control, for content richer than the `hint` text.
81123
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`.
81124
81450
  * - `start`: Content before the text, such as a search icon.
81125
81451
  * - `suggestions`: Suggestions for what to type next, as `Option`s and `Option.Group`s.
81126
81452
  * - `tags`: The active filters, as `FilterChip`s or `Tag`s.
@@ -81224,12 +81550,14 @@ export type CustomElementsSolidJs = {
81224
81550
  *
81225
81551
  * - `clear`: The button that empties the field.
81226
81552
  * - `control`: The input itself.
81553
+ * - `empty`: Shown in the panel when `filter-suggestions` hides every suggestion.
81227
81554
  * - `feedback`: The error message under the field.
81228
81555
  * - `field`: The box that holds everything.
81229
81556
  * - `hint`: The help text under the field, shown while there is no error.
81230
81557
  * - `label`: The label above the field.
81231
81558
  * - `lead`: The box before the text that holds the `start` slot.
81232
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.
81233
81561
  * - `rest`: The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.
81234
81562
  * - `surface`: The floating panel the suggestions sit in.
81235
81563
  * - `tags`: The row the tokens sit in.
@@ -81239,6 +81567,8 @@ export type CustomElementsSolidJs = {
81239
81567
  * These can be used to apply styling when a component is in a given state.
81240
81568
  *
81241
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.
81242
81572
  * - `open`: The suggestions are open.
81243
81573
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
81244
81574
  */
@@ -83132,6 +83462,9 @@ export type CustomElementsSolidJs = {
83132
83462
  * Falling back to what the markup declared rather than to empty, because
83133
83463
  * a restore with no state is a form the browser has nothing recorded for,
83134
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.
83135
83468
  * - `setSelectionRange(start: number, end: number, direction?: SelectionDirection) => void`: Selects the range from `start` to `end` in one call, which setting
83136
83469
  * `selectionStart` and `selectionEnd` one at a time cannot always do.
83137
83470
  *
@@ -87670,7 +88003,9 @@ export type CustomElementsSolidJs = {
87670
88003
  * speaks it: `feedback` replaces the message under the field and does not
87671
88004
  * reach the bubble. Unset is the sentence registered for the page's
87672
88005
  * language, then the English.
87673
- * - `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.
87674
88009
  * - `format-options`/`formatOptions`: `Intl.NumberFormat` options the number is shown with while the field is
87675
88010
  * not being edited: a currency, a percent, a unit, or a number of decimals.
87676
88011
  * Written as JSON in the attribute.
@@ -87678,7 +88013,9 @@ export type CustomElementsSolidJs = {
87678
88013
  * ```html
87679
88014
  * <helix-number-input format-options='{"style":"currency","currency":"EUR"}'></helix-number-input>
87680
88015
  * ```
87681
- * - `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.
87682
88019
  * - `large-step`/`largeStep`: How many steps `PageUp` and `PageDown` move.
87683
88020
  *
87684
88021
  * Ten steps, which is the convention every spinner on the platform follows,
@@ -87839,8 +88176,10 @@ export type CustomElementsSolidJs = {
87839
88176
  * Falling back to what the markup declared rather than to empty, because
87840
88177
  * a restore with no state is a form the browser has nothing recorded for,
87841
88178
  * 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.
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.
87844
88183
  *
87845
88184
  * The same path a press of the down arrow takes, so a consumer driving this
87846
88185
  * from their own control gets the clamping and the announcement rather than
@@ -90838,6 +91177,15 @@ export type CustomElementsSolidJs = {
90838
91177
  * `servePreview` does. It defines no element, so an example that uses Helix
90839
91178
  * components needs a `src` that imports them.
90840
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
+ *
90841
91189
  * **Examples render in a frame**, so an example's styles and scripts do not
90842
91190
  * affect the page around the sandbox, and `position: fixed` stays inside the
90843
91191
  * pane. The frame starts empty, with its own stylesheets and its own custom
@@ -90890,6 +91238,10 @@ export type CustomElementsSolidJs = {
90890
91238
  * it, here or anywhere: a frame is a document of its own and what is written
90891
91239
  * on this host reaches nothing inside it, which is the same reason
90892
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.
90893
91245
  * - `label`: The frame's name, read by screen readers.
90894
91246
  * - `layout`: How the example is placed in the frame.
90895
91247
  *
@@ -91213,6 +91565,18 @@ export type CustomElementsSolidJs = {
91213
91565
  * that throws leaves the source drawn plain and the field editable, and the
91214
91566
  * error is reported to the page as an uncaught one.
91215
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
+ *
91216
91580
  * ## Attributes & Properties
91217
91581
  *
91218
91582
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -91224,6 +91588,7 @@ export type CustomElementsSolidJs = {
91224
91588
  * - `keys-description`/`keysDescription`: The field's description, read by screen readers while Tab indents.
91225
91589
  * - `label`: The pane's file name, such as `index.html`, on its tab where a sandbox
91226
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.
91227
91592
  * - `name`: Which source this pane holds. Every `helix-before-edit` event includes it.
91228
91593
  *
91229
91594
  * `html` and `css` are what the sandbox root routes on; any other name is
@@ -91282,6 +91647,7 @@ export type CustomElementsSolidJs = {
91282
91647
  * - `--sandbox-source-constant-color`: Color of a `constant` run, under `tokenize`. Defaults to `--helix-color-syntax-constant`.
91283
91648
  * - `--sandbox-source-invalid-color`: Color of an `invalid` run, under `tokenize`. Defaults to `--helix-color-syntax-invalid`.
91284
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`.
91285
91651
  * - `--sandbox-source-min-block-size`: Minimum height of the pane.
91286
91652
  * - `--sandbox-source-name-color`: Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`.
91287
91653
  * - `--sandbox-source-string-color`: Color of a `string` run, under `tokenize`. Defaults to `--helix-color-syntax-string`.
@@ -91291,8 +91657,9 @@ export type CustomElementsSolidJs = {
91291
91657
  *
91292
91658
  * Custom selectors for styling elements within the component.
91293
91659
  *
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`.
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`.
91296
91663
  * - `source`: The editable region.
91297
91664
  * - `token`: One run of the source that has a kind, under `tokenize`.
91298
91665
  *
@@ -93884,7 +94251,8 @@ export type CustomElementsSolidJs = {
93884
94251
  *
93885
94252
  * Ignored once `active` is written.
93886
94253
  * - `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.
94254
+ * way the steps run, and the names are one tab stop. Off by default, so the
94255
+ * arrows keep scrolling the page.
93888
94256
  * - `completion`: What marks a stage `complete`.
93889
94257
  *
93890
94258
  * Absent, you do: each step's `complete` is yours, because a reader who
@@ -94044,7 +94412,9 @@ export type CustomElementsSolidJs = {
94044
94412
  * - `disabled`: Whether the stage is disabled, so the user cannot go to it.
94045
94413
  * - `optional`: Whether a reader may pass the stage without finishing it, in a sequence
94046
94414
  * with `linear`. Ark UI's skippable step.
94047
- * - `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.
94048
94418
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
94049
94419
  *
94050
94420
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -101874,6 +102244,8 @@ export type CustomCssProperties = {
101874
102244
  "--sandbox-source-invalid-color"?: (string) | undefined;
101875
102245
  /** Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`. */
101876
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;
101877
102249
  /** Minimum height of the pane. */
101878
102250
  "--sandbox-source-min-block-size"?: (string) | undefined;
101879
102251
  /** Color of a `name` run, under `tokenize`. Defaults to `--helix-color-syntax-name`. */