@fusion.dev/helix-headless 0.179.0 → 0.180.1

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.
Files changed (48) hide show
  1. package/custom-elements.json +212 -50
  2. package/dist/chat/composer/chat-composer.d.ts +2 -1
  3. package/dist/chat/composer/chat-composer.js +1 -1
  4. package/dist/checkbox/root/checkbox-root.d.ts +6 -0
  5. package/dist/checkbox/root/checkbox-root.js +5 -0
  6. package/dist/combobox/root/combobox-root.d.ts +12 -0
  7. package/dist/combobox/root/combobox-root.js +3 -2
  8. package/dist/command/root/command-root.d.ts +12 -0
  9. package/dist/command/root/command-root.js +3 -2
  10. package/dist/data-table/root/data-table-root.d.ts +13 -1
  11. package/dist/data-table/root/data-table-root.js +18 -15
  12. package/dist/date-input/root/date-input-root.d.ts +7 -0
  13. package/dist/date-input/root/date-input-root.js +12 -0
  14. package/dist/date-picker/root/date-picker-root.d.ts +7 -1
  15. package/dist/date-picker/root/date-picker-root.js +12 -0
  16. package/dist/drilldown/root/drilldown-root.js +9 -0
  17. package/dist/filter-input/root/filter-input-root.d.ts +13 -0
  18. package/dist/filter-input/root/filter-input-root.js +2 -1
  19. package/dist/listbox/root/listbox-root.d.ts +16 -2
  20. package/dist/listbox/root/listbox-root.js +8 -4
  21. package/dist/meter/root/meter-root.js +1 -2
  22. package/dist/notifications/notification/notification.js +14 -1
  23. package/dist/option/among.d.ts +23 -0
  24. package/dist/option/among.js +2 -0
  25. package/dist/option/root/option-root.d.ts +1 -17
  26. package/dist/option/root/option-root.js +1 -4
  27. package/dist/radio/root/radio-root.d.ts +6 -0
  28. package/dist/radio/root/radio-root.js +5 -0
  29. package/dist/scatter-chart/root/scatter-chart-root.d.ts +5 -4
  30. package/dist/scatter-chart/root/scatter-chart-root.js +1 -0
  31. package/dist/select/root/select-root.d.ts +13 -2
  32. package/dist/select/root/select-root.js +3 -3
  33. package/dist/switch/root/switch-root.d.ts +6 -0
  34. package/dist/switch/root/switch-root.js +5 -0
  35. package/dist/table/column/table-column.d.ts +1 -10
  36. package/dist/table/column/table-column.js +1 -2
  37. package/dist/table/edge.d.ts +10 -0
  38. package/dist/table/edge.js +2 -0
  39. package/dist/tabs/root/tabs-root.d.ts +1 -0
  40. package/dist/tabs/root/tabs-root.js +13 -0
  41. package/dist/toggle/root/toggle-root.d.ts +6 -0
  42. package/dist/toggle/root/toggle-root.js +5 -0
  43. package/dist/tooltip/root/tooltip-root.js +1 -0
  44. package/lint.json +1 -1
  45. package/package.json +5 -5
  46. package/types/jsx.d.ts +234 -16
  47. package/types/vue.d.ts +25 -11
  48. package/types/words.d.ts +14 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix-headless",
3
3
  "description": "Headless component tier. Structure, accessibility, state, and form participation. No styling.",
4
- "version": "0.179.0",
4
+ "version": "0.180.1",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -49,13 +49,13 @@
49
49
  },
50
50
  "bugs": "https://github.com/project-fusion/fusion/issues",
51
51
  "dependencies": {
52
- "@fusion.dev/helix-core": "0.179.0",
53
- "@fusion.dev/helix-icons": "0.179.0",
52
+ "@fusion.dev/helix-core": "0.180.1",
53
+ "@fusion.dev/helix-icons": "0.180.1",
54
54
  "uqr": "^0.1.3"
55
55
  },
56
56
  "devDependencies": {
57
- "@fusion.dev/helix-cem": "0.179.0",
58
- "@fusion.dev/helix-testing": "0.179.0",
57
+ "@fusion.dev/helix-cem": "0.180.1",
58
+ "@fusion.dev/helix-testing": "0.180.1",
59
59
  "@fusion.dev/scripts": "0.0.0-dev",
60
60
  "@happy-dom/global-registrator": "^20.14.5",
61
61
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -10476,6 +10476,12 @@ for the page's language, then the English. */
10476
10476
  so a form in another language speaks it. Unset is the sentence registered
10477
10477
  for the page's language, then the English. */
10478
10478
  rangeLengthMessage?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
10479
+ /** The message shown when a range ends before it starts. `{start}` is
10480
+ replaced with the start, written the way the field writes dates. */
10481
+ "range-order-message"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
10482
+ /** The message shown when a range ends before it starts. `{start}` is
10483
+ replaced with the start, written the way the field writes dates. */
10484
+ rangeOrderMessage?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
10479
10485
  /** The message shown when a date is after `max`. `{max}` is replaced with
10480
10486
  `max`, written the way the field writes dates. */
10481
10487
  "range-overflow-message"?: (HelixHeadlessDateInput["rangeOverflowMessage"]) | undefined;
@@ -11008,6 +11014,12 @@ for the page's language, then the English. */
11008
11014
  so a form in another language speaks it. Unset is the sentence registered
11009
11015
  for the page's language, then the English. */
11010
11016
  "prop:rangeLengthMessage"?: (HelixHeadlessDateInput["rangeLengthMessage"]) | undefined;
11017
+ /** The message shown when a range ends before it starts. `{start}` is
11018
+ replaced with the start, written the way the field writes dates. */
11019
+ "attr:range-order-message"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
11020
+ /** The message shown when a range ends before it starts. `{start}` is
11021
+ replaced with the start, written the way the field writes dates. */
11022
+ "prop:rangeOrderMessage"?: (HelixHeadlessDateInput["rangeOrderMessage"]) | undefined;
11011
11023
  /** The message shown when a date is after `max`. `{max}` is replaced with
11012
11024
  `max`, written the way the field writes dates. */
11013
11025
  "attr:range-overflow-message"?: (HelixHeadlessDateInput["rangeOverflowMessage"]) | undefined;
@@ -11527,6 +11539,12 @@ it. */
11527
11539
  "previous-years-label"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11528
11540
  /** Accessible name for the control that moves back a page, in the years. */
11529
11541
  previousYearsLabel?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11542
+ /** The validation message for a range that ends before it starts. `{start}`
11543
+ is replaced with the start, written as a date in `locale`. */
11544
+ "range-order-message"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11545
+ /** The validation message for a range that ends before it starts. `{start}`
11546
+ is replaced with the start, written as a date in `locale`. */
11547
+ rangeOrderMessage?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11530
11548
  /** The validation message for a date after `max`. `{max}` is replaced with
11531
11549
  `max`, written as a date in `locale`. */
11532
11550
  "range-overflow-message"?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
@@ -11882,6 +11900,12 @@ it. */
11882
11900
  "attr:previous-years-label"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11883
11901
  /** Accessible name for the control that moves back a page, in the years. */
11884
11902
  "prop:previousYearsLabel"?: (HelixHeadlessDatePicker["previousYearsLabel"]) | undefined;
11903
+ /** The validation message for a range that ends before it starts. `{start}`
11904
+ is replaced with the start, written as a date in `locale`. */
11905
+ "attr:range-order-message"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11906
+ /** The validation message for a range that ends before it starts. `{start}`
11907
+ is replaced with the start, written as a date in `locale`. */
11908
+ "prop:rangeOrderMessage"?: (HelixHeadlessDatePicker["rangeOrderMessage"]) | undefined;
11885
11909
  /** The validation message for a date after `max`. `{max}` is replaced with
11886
11910
  `max`, written as a date in `locale`. */
11887
11911
  "attr:range-overflow-message"?: (HelixHeadlessDatePicker["rangeOverflowMessage"]) | undefined;
@@ -19157,7 +19181,8 @@ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
19157
19181
 
19158
19182
  **The list needs a height to scroll in**: the styled tier's
19159
19183
  `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
19160
- headless tier. Import the Option family as well, whose elements are drawn.
19184
+ headless tier. The options drawn are this tier's Option, which the page
19185
+ imports, as it imports the options it writes.
19161
19186
  A server sends the list empty, and the options are drawn once it hydrates. */
19162
19187
  items?: (HelixHeadlessListbox["items"]) | undefined;
19163
19188
  /** Which option is chosen, as an index, or `-1` where none is.
@@ -19455,7 +19480,8 @@ React Aria virtualizes a `ListBox` with its `Virtualizer`; this is core's
19455
19480
 
19456
19481
  **The list needs a height to scroll in**: the styled tier's
19457
19482
  `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
19458
- headless tier. Import the Option family as well, whose elements are drawn.
19483
+ headless tier. The options drawn are this tier's Option, which the page
19484
+ imports, as it imports the options it writes.
19459
19485
  A server sends the list empty, and the options are drawn once it hydrates. */
19460
19486
  "prop:items"?: (HelixHeadlessListbox["items"]) | undefined;
19461
19487
  /** Which option is chosen, as an index, or `-1` where none is.
@@ -40938,7 +40964,8 @@ export type CustomElements = {
40938
40964
  * The composer clears only when no listener cancels the send, so the text is
40939
40965
  * kept when you cancel a send that failed.
40940
40966
  *
40941
- * **In a form, the draft is the composer's value**, submitted under `name`. A
40967
+ * **In a form, the draft is the composer's value**, submitted under `name`,
40968
+ * and an empty draft submits an empty entry, as a native textarea does. A
40942
40969
  * form reset puts back the `value` the markup declared, and a `<fieldset
40943
40970
  * disabled>` turns the composer off. Sending is still `helix-send`, and it
40944
40971
  * does not submit the form.
@@ -41912,6 +41939,9 @@ export type CustomElements = {
41912
41939
  * Methods that can be called to access component functionality.
41913
41940
  *
41914
41941
  * - `formResetCallback() => void`: Resets the box to the state set in its markup.
41942
+ * - `click() => void`: Ticks or clears the box, as `click()` does a native checkbox: passed to the control
41943
+ * inside, so the one click a listener hears is the control's, after it has
41944
+ * moved. See `HostClickController`.
41915
41945
  * - `requestChecked(next: boolean) => boolean`: Requests a change to `checked`, and returns whether it was applied.
41916
41946
  *
41917
41947
  * Announces before it acts, so `preventDefault()` on the
@@ -43223,6 +43253,18 @@ export type CustomElements = {
43223
43253
  * framework would re-render over an element the combobox inserted, so add the
43224
43254
  * option in your event handler.
43225
43255
  *
43256
+ * **The options are an import of their own.** An option is the Option family's,
43257
+ * which the combobox does not register, so a page that writes one imports it
43258
+ * beside the combobox:
43259
+ *
43260
+ * ```js
43261
+ * import '@fusion.dev/helix/combobox'
43262
+ * import '@fusion.dev/helix/option'
43263
+ * ```
43264
+ *
43265
+ * In development, a combobox holding an option nobody registered says so once
43266
+ * the page has loaded, with the line to add.
43267
+ *
43226
43268
  * ## Attributes & Properties
43227
43269
  *
43228
43270
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -43655,6 +43697,18 @@ export type CustomElements = {
43655
43697
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
43656
43698
  * the loading text are said in a polite live region.
43657
43699
  *
43700
+ * **The commands are an import of their own.** A command is an option, the
43701
+ * Option family's, which the palette does not register, so a page that writes
43702
+ * one imports it beside the palette:
43703
+ *
43704
+ * ```js
43705
+ * import '@fusion.dev/helix/command'
43706
+ * import '@fusion.dev/helix/option'
43707
+ * ```
43708
+ *
43709
+ * In development, a palette holding an option nobody registered says so once
43710
+ * the page has loaded, with the line to add.
43711
+ *
43658
43712
  * ## Attributes & Properties
43659
43713
  *
43660
43714
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -44230,6 +44284,18 @@ export type CustomElements = {
44230
44284
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
44231
44285
  * move a table from `Table` to `DataTable`.
44232
44286
  *
44287
+ * **The columns are an import of their own.** A column is the Table family's
44288
+ * `TableColumn`, which the data table does not register, so a page that writes
44289
+ * one imports the Table entry beside the data table:
44290
+ *
44291
+ * ```js
44292
+ * import '@fusion.dev/helix/data-table'
44293
+ * import '@fusion.dev/helix/table'
44294
+ * ```
44295
+ *
44296
+ * In development, a data table holding a column nobody registered says so once
44297
+ * the page has loaded, with the line to add.
44298
+ *
44233
44299
  * ## Attributes & Properties
44234
44300
  *
44235
44301
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -44628,6 +44694,8 @@ export type CustomElements = {
44628
44694
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
44629
44695
  * `range` is two rows with a dash between them, the start and the end, as
44630
44696
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
44697
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
44698
+ * Picker does, with `range-order-message`.
44631
44699
  *
44632
44700
  * Text that is not a date gives the form an empty value, as a native date
44633
44701
  * field does, and `value` keeps the text so it can be corrected.
@@ -44748,6 +44816,8 @@ export type CustomElements = {
44748
44816
  * **Every sentence a control raises in the browser's bubble is a property**,
44749
44817
  * so a form in another language speaks it. Unset is the sentence registered
44750
44818
  * for the page's language, then the English.
44819
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
44820
+ * replaced with the start, written the way the field writes dates.
44751
44821
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
44752
44822
  * `max`, written the way the field writes dates.
44753
44823
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -45152,7 +45222,8 @@ export type CustomElements = {
45152
45222
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
45153
45223
  * keys stop at them too. A value outside the bounds, on a barred day, or off
45154
45224
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
45155
- * `stepMismatch`, so a form does not submit it.
45225
+ * `stepMismatch`, so a form does not submit it. A range set from a script
45226
+ * whose end is before its start reports `rangeUnderflow` as well.
45156
45227
  *
45157
45228
  * ## Attributes & Properties
45158
45229
  *
@@ -45233,6 +45304,8 @@ export type CustomElements = {
45233
45304
  * it.
45234
45305
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
45235
45306
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
45307
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
45308
+ * is replaced with the start, written as a date in `locale`.
45236
45309
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
45237
45310
  * `max`, written as a date in `locale`.
45238
45311
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -47885,6 +47958,19 @@ export type CustomElements = {
47885
47958
  * filter goes. Set `chips` and the field adds, updates, and removes those
47886
47959
  * chips itself, from every `helix-facet` you do not cancel.
47887
47960
  *
47961
+ * **The suggestions you write are an import of their own.** A suggestion is an
47962
+ * option, the Option family's, which the field does not register, so a page
47963
+ * that slots one imports it beside the field:
47964
+ *
47965
+ * ```js
47966
+ * import '@fusion.dev/helix/filter-input'
47967
+ * import '@fusion.dev/helix/option'
47968
+ * ```
47969
+ *
47970
+ * In development, a field holding an option nobody registered says so once the
47971
+ * page has loaded, with the line to add. The options `source` gives are drawn
47972
+ * as this Option too, and need the same import.
47973
+ *
47888
47974
  * ## Attributes & Properties
47889
47975
  *
47890
47976
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51459,6 +51545,19 @@ export type CustomElements = {
51459
51545
  * filter narrows the list, under `layout="grid"`, or while the list is
51460
51546
  * disabled.
51461
51547
  *
51548
+ * **The options are an import of their own.** An option you write is the Option
51549
+ * family's, which the list does not register, so a page that writes one imports
51550
+ * it beside the list:
51551
+ *
51552
+ * ```js
51553
+ * import '@fusion.dev/helix/listbox'
51554
+ * import '@fusion.dev/helix/option'
51555
+ * ```
51556
+ *
51557
+ * In development, a list holding an option nobody registered says so once the
51558
+ * page has loaded, with the line to add. The options `items` draws are this
51559
+ * Option too, and need the same import.
51560
+ *
51462
51561
  * ## Attributes & Properties
51463
51562
  *
51464
51563
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51627,7 +51726,8 @@ export type CustomElements = {
51627
51726
  *
51628
51727
  * **The list needs a height to scroll in**: the styled tier's
51629
51728
  * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
51630
- * headless tier. Import the Option family as well, whose elements are drawn.
51729
+ * headless tier. The options drawn are this tier's Option, which the page
51730
+ * imports, as it imports the options it writes.
51631
51731
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
51632
51732
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
51633
51733
  *
@@ -57460,6 +57560,9 @@ export type CustomElements = {
57460
57560
  *
57461
57561
  * Methods that can be called to access component functionality.
57462
57562
  *
57563
+ * - `click() => void`: Chooses the radio, as `click()` does a native radio: passed to the control
57564
+ * inside, so the one click a listener hears is the control's, after it has
57565
+ * moved. See `HostClickController`.
57463
57566
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
57464
57567
  *
57465
57568
  * The set drives the keys and cannot reach the control itself, which is
@@ -57836,9 +57939,10 @@ export type CustomElements = {
57836
57939
  *
57837
57940
  * The plot runs left to right in every text direction, as a number line does.
57838
57941
  * The plot, its axes, and the axis names sit in a `plane` part with
57839
- * `dir="ltr"`. The axis names carry `dir="auto"`, so a name in Arabic or Hebrew
57840
- * reads in its own direction. The summary and the tooltip bubble follow the
57841
- * page's direction.
57942
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
57943
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
57944
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
57945
+ * tooltip bubble follow the page's direction.
57842
57946
  *
57843
57947
  * **A tap shows the reading under it**, and keeps it until a tap lands
57844
57948
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -57860,7 +57964,7 @@ export type CustomElements = {
57860
57964
  * | Key | What it does |
57861
57965
  * |---|---|
57862
57966
  * | Tab | Moves focus to the plot and shows the first reading. |
57863
- * | Right, Left | Moves to the next or the previous point, left to right across the plot. On a right-to-left page, Left moves to the next. |
57967
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
57864
57968
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
57865
57969
  * | Home, End | Moves to the first or the last point. |
57866
57970
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -58312,6 +58416,18 @@ export type CustomElements = {
58312
58416
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
58313
58417
  * with the same attribute would.
58314
58418
  *
58419
+ * **The options are an import of their own.** An option is the Option family's,
58420
+ * which the select does not register, so a page that writes one imports it
58421
+ * beside the select:
58422
+ *
58423
+ * ```js
58424
+ * import '@fusion.dev/helix/select'
58425
+ * import '@fusion.dev/helix/option'
58426
+ * ```
58427
+ *
58428
+ * In development, a select holding an option nobody registered says so once the
58429
+ * page has loaded, with the line to add.
58430
+ *
58315
58431
  * ## Attributes & Properties
58316
58432
  *
58317
58433
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -60587,6 +60703,9 @@ export type CustomElements = {
60587
60703
  * Methods that can be called to access component functionality.
60588
60704
  *
60589
60705
  * - `formResetCallback() => void`: Returns the switch to the state its markup declared.
60706
+ * - `click() => void`: Turns the switch on or off, as `click()` does a native checkbox: passed to the control
60707
+ * inside, so the one click a listener hears is the control's, after it has
60708
+ * moved. See `HostClickController`.
60590
60709
  * - `requestChecked(next: boolean) => boolean`: Requests a change to `checked`, and returns whether it was applied.
60591
60710
  *
60592
60711
  * Announces before it acts, so `preventDefault()` on the
@@ -64305,6 +64424,9 @@ export type CustomElements = {
64305
64424
  *
64306
64425
  * - `select() => boolean`: Chooses the item in its group, or, on its own, flips `selected` once
64307
64426
  * `helix-select` stands and sends `change`.
64427
+ * - `click() => void`: Presses the toggle, as `click()` does a native button: passed to the control
64428
+ * inside, so the one click a listener hears is the control's, after it has
64429
+ * moved. See `HostClickController`.
64308
64430
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
64309
64431
  *
64310
64432
  * The set drives the keys and cannot reach the control itself, which is
@@ -70539,7 +70661,8 @@ export type CustomElementsSolidJs = {
70539
70661
  * The composer clears only when no listener cancels the send, so the text is
70540
70662
  * kept when you cancel a send that failed.
70541
70663
  *
70542
- * **In a form, the draft is the composer's value**, submitted under `name`. A
70664
+ * **In a form, the draft is the composer's value**, submitted under `name`,
70665
+ * and an empty draft submits an empty entry, as a native textarea does. A
70543
70666
  * form reset puts back the `value` the markup declared, and a `<fieldset
70544
70667
  * disabled>` turns the composer off. Sending is still `helix-send`, and it
70545
70668
  * does not submit the form.
@@ -71519,6 +71642,9 @@ export type CustomElementsSolidJs = {
71519
71642
  * Methods that can be called to access component functionality.
71520
71643
  *
71521
71644
  * - `formResetCallback() => void`: Resets the box to the state set in its markup.
71645
+ * - `click() => void`: Ticks or clears the box, as `click()` does a native checkbox: passed to the control
71646
+ * inside, so the one click a listener hears is the control's, after it has
71647
+ * moved. See `HostClickController`.
71522
71648
  * - `requestChecked(next: boolean) => boolean`: Requests a change to `checked`, and returns whether it was applied.
71523
71649
  *
71524
71650
  * Announces before it acts, so `preventDefault()` on the
@@ -72841,6 +72967,18 @@ export type CustomElementsSolidJs = {
72841
72967
  * framework would re-render over an element the combobox inserted, so add the
72842
72968
  * option in your event handler.
72843
72969
  *
72970
+ * **The options are an import of their own.** An option is the Option family's,
72971
+ * which the combobox does not register, so a page that writes one imports it
72972
+ * beside the combobox:
72973
+ *
72974
+ * ```js
72975
+ * import '@fusion.dev/helix/combobox'
72976
+ * import '@fusion.dev/helix/option'
72977
+ * ```
72978
+ *
72979
+ * In development, a combobox holding an option nobody registered says so once
72980
+ * the page has loaded, with the line to add.
72981
+ *
72844
72982
  * ## Attributes & Properties
72845
72983
  *
72846
72984
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73276,6 +73414,18 @@ export type CustomElementsSolidJs = {
73276
73414
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
73277
73415
  * the loading text are said in a polite live region.
73278
73416
  *
73417
+ * **The commands are an import of their own.** A command is an option, the
73418
+ * Option family's, which the palette does not register, so a page that writes
73419
+ * one imports it beside the palette:
73420
+ *
73421
+ * ```js
73422
+ * import '@fusion.dev/helix/command'
73423
+ * import '@fusion.dev/helix/option'
73424
+ * ```
73425
+ *
73426
+ * In development, a palette holding an option nobody registered says so once
73427
+ * the page has loaded, with the line to add.
73428
+ *
73279
73429
  * ## Attributes & Properties
73280
73430
  *
73281
73431
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73855,6 +74005,18 @@ export type CustomElementsSolidJs = {
73855
74005
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
73856
74006
  * move a table from `Table` to `DataTable`.
73857
74007
  *
74008
+ * **The columns are an import of their own.** A column is the Table family's
74009
+ * `TableColumn`, which the data table does not register, so a page that writes
74010
+ * one imports the Table entry beside the data table:
74011
+ *
74012
+ * ```js
74013
+ * import '@fusion.dev/helix/data-table'
74014
+ * import '@fusion.dev/helix/table'
74015
+ * ```
74016
+ *
74017
+ * In development, a data table holding a column nobody registered says so once
74018
+ * the page has loaded, with the line to add.
74019
+ *
73858
74020
  * ## Attributes & Properties
73859
74021
  *
73860
74022
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -74256,6 +74418,8 @@ export type CustomElementsSolidJs = {
74256
74418
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
74257
74419
  * `range` is two rows with a dash between them, the start and the end, as
74258
74420
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
74421
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
74422
+ * Picker does, with `range-order-message`.
74259
74423
  *
74260
74424
  * Text that is not a date gives the form an empty value, as a native date
74261
74425
  * field does, and `value` keeps the text so it can be corrected.
@@ -74376,6 +74540,8 @@ export type CustomElementsSolidJs = {
74376
74540
  * **Every sentence a control raises in the browser's bubble is a property**,
74377
74541
  * so a form in another language speaks it. Unset is the sentence registered
74378
74542
  * for the page's language, then the English.
74543
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
74544
+ * replaced with the start, written the way the field writes dates.
74379
74545
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
74380
74546
  * `max`, written the way the field writes dates.
74381
74547
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -74783,7 +74949,8 @@ export type CustomElementsSolidJs = {
74783
74949
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
74784
74950
  * keys stop at them too. A value outside the bounds, on a barred day, or off
74785
74951
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
74786
- * `stepMismatch`, so a form does not submit it.
74952
+ * `stepMismatch`, so a form does not submit it. A range set from a script
74953
+ * whose end is before its start reports `rangeUnderflow` as well.
74787
74954
  *
74788
74955
  * ## Attributes & Properties
74789
74956
  *
@@ -74864,6 +75031,8 @@ export type CustomElementsSolidJs = {
74864
75031
  * it.
74865
75032
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
74866
75033
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
75034
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
75035
+ * is replaced with the start, written as a date in `locale`.
74867
75036
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
74868
75037
  * `max`, written as a date in `locale`.
74869
75038
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -77543,6 +77712,19 @@ export type CustomElementsSolidJs = {
77543
77712
  * filter goes. Set `chips` and the field adds, updates, and removes those
77544
77713
  * chips itself, from every `helix-facet` you do not cancel.
77545
77714
  *
77715
+ * **The suggestions you write are an import of their own.** A suggestion is an
77716
+ * option, the Option family's, which the field does not register, so a page
77717
+ * that slots one imports it beside the field:
77718
+ *
77719
+ * ```js
77720
+ * import '@fusion.dev/helix/filter-input'
77721
+ * import '@fusion.dev/helix/option'
77722
+ * ```
77723
+ *
77724
+ * In development, a field holding an option nobody registered says so once the
77725
+ * page has loaded, with the line to add. The options `source` gives are drawn
77726
+ * as this Option too, and need the same import.
77727
+ *
77546
77728
  * ## Attributes & Properties
77547
77729
  *
77548
77730
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81154,6 +81336,19 @@ export type CustomElementsSolidJs = {
81154
81336
  * filter narrows the list, under `layout="grid"`, or while the list is
81155
81337
  * disabled.
81156
81338
  *
81339
+ * **The options are an import of their own.** An option you write is the Option
81340
+ * family's, which the list does not register, so a page that writes one imports
81341
+ * it beside the list:
81342
+ *
81343
+ * ```js
81344
+ * import '@fusion.dev/helix/listbox'
81345
+ * import '@fusion.dev/helix/option'
81346
+ * ```
81347
+ *
81348
+ * In development, a list holding an option nobody registered says so once the
81349
+ * page has loaded, with the line to add. The options `items` draws are this
81350
+ * Option too, and need the same import.
81351
+ *
81157
81352
  * ## Attributes & Properties
81158
81353
  *
81159
81354
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81322,7 +81517,8 @@ export type CustomElementsSolidJs = {
81322
81517
  *
81323
81518
  * **The list needs a height to scroll in**: the styled tier's
81324
81519
  * `--listbox-max-block-size`, or a `max-block-size` on `::part(items)` in the
81325
- * headless tier. Import the Option family as well, whose elements are drawn.
81520
+ * headless tier. The options drawn are this tier's Option, which the page
81521
+ * imports, as it imports the options it writes.
81326
81522
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
81327
81523
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
81328
81524
  *
@@ -87230,6 +87426,9 @@ export type CustomElementsSolidJs = {
87230
87426
  *
87231
87427
  * Methods that can be called to access component functionality.
87232
87428
  *
87429
+ * - `click() => void`: Chooses the radio, as `click()` does a native radio: passed to the control
87430
+ * inside, so the one click a listener hears is the control's, after it has
87431
+ * moved. See `HostClickController`.
87233
87432
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
87234
87433
  *
87235
87434
  * The set drives the keys and cannot reach the control itself, which is
@@ -87612,9 +87811,10 @@ export type CustomElementsSolidJs = {
87612
87811
  *
87613
87812
  * The plot runs left to right in every text direction, as a number line does.
87614
87813
  * The plot, its axes, and the axis names sit in a `plane` part with
87615
- * `dir="ltr"`. The axis names carry `dir="auto"`, so a name in Arabic or Hebrew
87616
- * reads in its own direction. The summary and the tooltip bubble follow the
87617
- * page's direction.
87814
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
87815
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
87816
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
87817
+ * tooltip bubble follow the page's direction.
87618
87818
  *
87619
87819
  * **A tap shows the reading under it**, and keeps it until a tap lands
87620
87820
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -87636,7 +87836,7 @@ export type CustomElementsSolidJs = {
87636
87836
  * | Key | What it does |
87637
87837
  * |---|---|
87638
87838
  * | Tab | Moves focus to the plot and shows the first reading. |
87639
- * | Right, Left | Moves to the next or the previous point, left to right across the plot. On a right-to-left page, Left moves to the next. |
87839
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
87640
87840
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
87641
87841
  * | Home, End | Moves to the first or the last point. |
87642
87842
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -88090,6 +88290,18 @@ export type CustomElementsSolidJs = {
88090
88290
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
88091
88291
  * with the same attribute would.
88092
88292
  *
88293
+ * **The options are an import of their own.** An option is the Option family's,
88294
+ * which the select does not register, so a page that writes one imports it
88295
+ * beside the select:
88296
+ *
88297
+ * ```js
88298
+ * import '@fusion.dev/helix/select'
88299
+ * import '@fusion.dev/helix/option'
88300
+ * ```
88301
+ *
88302
+ * In development, a select holding an option nobody registered says so once the
88303
+ * page has loaded, with the line to add.
88304
+ *
88093
88305
  * ## Attributes & Properties
88094
88306
  *
88095
88307
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -90400,6 +90612,9 @@ export type CustomElementsSolidJs = {
90400
90612
  * Methods that can be called to access component functionality.
90401
90613
  *
90402
90614
  * - `formResetCallback() => void`: Returns the switch to the state its markup declared.
90615
+ * - `click() => void`: Turns the switch on or off, as `click()` does a native checkbox: passed to the control
90616
+ * inside, so the one click a listener hears is the control's, after it has
90617
+ * moved. See `HostClickController`.
90403
90618
  * - `requestChecked(next: boolean) => boolean`: Requests a change to `checked`, and returns whether it was applied.
90404
90619
  *
90405
90620
  * Announces before it acts, so `preventDefault()` on the
@@ -94165,6 +94380,9 @@ export type CustomElementsSolidJs = {
94165
94380
  *
94166
94381
  * - `select() => boolean`: Chooses the item in its group, or, on its own, flips `selected` once
94167
94382
  * `helix-select` stands and sends `change`.
94383
+ * - `click() => void`: Presses the toggle, as `click()` does a native button: passed to the control
94384
+ * inside, so the one click a listener hears is the control's, after it has
94385
+ * moved. See `HostClickController`.
94168
94386
  * - `focusItem() => void`: Moves focus to the item's control, for the set's arrow keys.
94169
94387
  *
94170
94388
  * The set drives the keys and cannot reach the control itself, which is