@fusion.dev/helix-headless 0.179.0 → 0.180.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.
Files changed (40) hide show
  1. package/custom-elements.json +160 -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/combobox/root/combobox-root.d.ts +12 -0
  5. package/dist/combobox/root/combobox-root.js +3 -2
  6. package/dist/command/root/command-root.d.ts +12 -0
  7. package/dist/command/root/command-root.js +3 -2
  8. package/dist/data-table/root/data-table-root.d.ts +13 -1
  9. package/dist/data-table/root/data-table-root.js +18 -15
  10. package/dist/date-input/root/date-input-root.d.ts +7 -0
  11. package/dist/date-input/root/date-input-root.js +12 -0
  12. package/dist/date-picker/root/date-picker-root.d.ts +7 -1
  13. package/dist/date-picker/root/date-picker-root.js +12 -0
  14. package/dist/drilldown/root/drilldown-root.js +9 -0
  15. package/dist/filter-input/root/filter-input-root.d.ts +13 -0
  16. package/dist/filter-input/root/filter-input-root.js +2 -1
  17. package/dist/listbox/root/listbox-root.d.ts +16 -2
  18. package/dist/listbox/root/listbox-root.js +8 -4
  19. package/dist/meter/root/meter-root.js +1 -2
  20. package/dist/notifications/notification/notification.js +14 -1
  21. package/dist/option/among.d.ts +23 -0
  22. package/dist/option/among.js +2 -0
  23. package/dist/option/root/option-root.d.ts +1 -17
  24. package/dist/option/root/option-root.js +1 -4
  25. package/dist/scatter-chart/root/scatter-chart-root.d.ts +5 -4
  26. package/dist/scatter-chart/root/scatter-chart-root.js +1 -0
  27. package/dist/select/root/select-root.d.ts +13 -2
  28. package/dist/select/root/select-root.js +3 -3
  29. package/dist/table/column/table-column.d.ts +1 -10
  30. package/dist/table/column/table-column.js +1 -2
  31. package/dist/table/edge.d.ts +10 -0
  32. package/dist/table/edge.js +2 -0
  33. package/dist/tabs/root/tabs-root.d.ts +1 -0
  34. package/dist/tabs/root/tabs-root.js +13 -0
  35. package/dist/tooltip/root/tooltip-root.js +1 -0
  36. package/lint.json +1 -1
  37. package/package.json +5 -5
  38. package/types/jsx.d.ts +210 -16
  39. package/types/vue.d.ts +25 -11
  40. 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.0",
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.0",
53
+ "@fusion.dev/helix-icons": "0.180.0",
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.0",
58
+ "@fusion.dev/helix-testing": "0.180.0",
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.
@@ -43223,6 +43250,18 @@ export type CustomElements = {
43223
43250
  * framework would re-render over an element the combobox inserted, so add the
43224
43251
  * option in your event handler.
43225
43252
  *
43253
+ * **The options are an import of their own.** An option is the Option family's,
43254
+ * which the combobox does not register, so a page that writes one imports it
43255
+ * beside the combobox:
43256
+ *
43257
+ * ```js
43258
+ * import '@fusion.dev/helix/combobox'
43259
+ * import '@fusion.dev/helix/option'
43260
+ * ```
43261
+ *
43262
+ * In development, a combobox holding an option nobody registered says so once
43263
+ * the page has loaded, with the line to add.
43264
+ *
43226
43265
  * ## Attributes & Properties
43227
43266
  *
43228
43267
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -43655,6 +43694,18 @@ export type CustomElements = {
43655
43694
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
43656
43695
  * the loading text are said in a polite live region.
43657
43696
  *
43697
+ * **The commands are an import of their own.** A command is an option, the
43698
+ * Option family's, which the palette does not register, so a page that writes
43699
+ * one imports it beside the palette:
43700
+ *
43701
+ * ```js
43702
+ * import '@fusion.dev/helix/command'
43703
+ * import '@fusion.dev/helix/option'
43704
+ * ```
43705
+ *
43706
+ * In development, a palette holding an option nobody registered says so once
43707
+ * the page has loaded, with the line to add.
43708
+ *
43658
43709
  * ## Attributes & Properties
43659
43710
  *
43660
43711
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -44230,6 +44281,18 @@ export type CustomElements = {
44230
44281
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
44231
44282
  * move a table from `Table` to `DataTable`.
44232
44283
  *
44284
+ * **The columns are an import of their own.** A column is the Table family's
44285
+ * `TableColumn`, which the data table does not register, so a page that writes
44286
+ * one imports the Table entry beside the data table:
44287
+ *
44288
+ * ```js
44289
+ * import '@fusion.dev/helix/data-table'
44290
+ * import '@fusion.dev/helix/table'
44291
+ * ```
44292
+ *
44293
+ * In development, a data table holding a column nobody registered says so once
44294
+ * the page has loaded, with the line to add.
44295
+ *
44233
44296
  * ## Attributes & Properties
44234
44297
  *
44235
44298
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -44628,6 +44691,8 @@ export type CustomElements = {
44628
44691
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
44629
44692
  * `range` is two rows with a dash between them, the start and the end, as
44630
44693
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
44694
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
44695
+ * Picker does, with `range-order-message`.
44631
44696
  *
44632
44697
  * Text that is not a date gives the form an empty value, as a native date
44633
44698
  * field does, and `value` keeps the text so it can be corrected.
@@ -44748,6 +44813,8 @@ export type CustomElements = {
44748
44813
  * **Every sentence a control raises in the browser's bubble is a property**,
44749
44814
  * so a form in another language speaks it. Unset is the sentence registered
44750
44815
  * for the page's language, then the English.
44816
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
44817
+ * replaced with the start, written the way the field writes dates.
44751
44818
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
44752
44819
  * `max`, written the way the field writes dates.
44753
44820
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -45152,7 +45219,8 @@ export type CustomElements = {
45152
45219
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
45153
45220
  * keys stop at them too. A value outside the bounds, on a barred day, or off
45154
45221
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
45155
- * `stepMismatch`, so a form does not submit it.
45222
+ * `stepMismatch`, so a form does not submit it. A range set from a script
45223
+ * whose end is before its start reports `rangeUnderflow` as well.
45156
45224
  *
45157
45225
  * ## Attributes & Properties
45158
45226
  *
@@ -45233,6 +45301,8 @@ export type CustomElements = {
45233
45301
  * it.
45234
45302
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
45235
45303
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
45304
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
45305
+ * is replaced with the start, written as a date in `locale`.
45236
45306
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
45237
45307
  * `max`, written as a date in `locale`.
45238
45308
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -47885,6 +47955,19 @@ export type CustomElements = {
47885
47955
  * filter goes. Set `chips` and the field adds, updates, and removes those
47886
47956
  * chips itself, from every `helix-facet` you do not cancel.
47887
47957
  *
47958
+ * **The suggestions you write are an import of their own.** A suggestion is an
47959
+ * option, the Option family's, which the field does not register, so a page
47960
+ * that slots one imports it beside the field:
47961
+ *
47962
+ * ```js
47963
+ * import '@fusion.dev/helix/filter-input'
47964
+ * import '@fusion.dev/helix/option'
47965
+ * ```
47966
+ *
47967
+ * In development, a field holding an option nobody registered says so once the
47968
+ * page has loaded, with the line to add. The options `source` gives are drawn
47969
+ * as this Option too, and need the same import.
47970
+ *
47888
47971
  * ## Attributes & Properties
47889
47972
  *
47890
47973
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51459,6 +51542,19 @@ export type CustomElements = {
51459
51542
  * filter narrows the list, under `layout="grid"`, or while the list is
51460
51543
  * disabled.
51461
51544
  *
51545
+ * **The options are an import of their own.** An option you write is the Option
51546
+ * family's, which the list does not register, so a page that writes one imports
51547
+ * it beside the list:
51548
+ *
51549
+ * ```js
51550
+ * import '@fusion.dev/helix/listbox'
51551
+ * import '@fusion.dev/helix/option'
51552
+ * ```
51553
+ *
51554
+ * In development, a list holding an option nobody registered says so once the
51555
+ * page has loaded, with the line to add. The options `items` draws are this
51556
+ * Option too, and need the same import.
51557
+ *
51462
51558
  * ## Attributes & Properties
51463
51559
  *
51464
51560
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -51627,7 +51723,8 @@ export type CustomElements = {
51627
51723
  *
51628
51724
  * **The list needs a height to scroll in**: the styled tier's
51629
51725
  * `--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.
51726
+ * headless tier. The options drawn are this tier's Option, which the page
51727
+ * imports, as it imports the options it writes.
51631
51728
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
51632
51729
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
51633
51730
  *
@@ -57836,9 +57933,10 @@ export type CustomElements = {
57836
57933
  *
57837
57934
  * The plot runs left to right in every text direction, as a number line does.
57838
57935
  * 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.
57936
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
57937
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
57938
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
57939
+ * tooltip bubble follow the page's direction.
57842
57940
  *
57843
57941
  * **A tap shows the reading under it**, and keeps it until a tap lands
57844
57942
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -57860,7 +57958,7 @@ export type CustomElements = {
57860
57958
  * | Key | What it does |
57861
57959
  * |---|---|
57862
57960
  * | 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. |
57961
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
57864
57962
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
57865
57963
  * | Home, End | Moves to the first or the last point. |
57866
57964
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -58312,6 +58410,18 @@ export type CustomElements = {
58312
58410
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
58313
58411
  * with the same attribute would.
58314
58412
  *
58413
+ * **The options are an import of their own.** An option is the Option family's,
58414
+ * which the select does not register, so a page that writes one imports it
58415
+ * beside the select:
58416
+ *
58417
+ * ```js
58418
+ * import '@fusion.dev/helix/select'
58419
+ * import '@fusion.dev/helix/option'
58420
+ * ```
58421
+ *
58422
+ * In development, a select holding an option nobody registered says so once the
58423
+ * page has loaded, with the line to add.
58424
+ *
58315
58425
  * ## Attributes & Properties
58316
58426
  *
58317
58427
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -70539,7 +70649,8 @@ export type CustomElementsSolidJs = {
70539
70649
  * The composer clears only when no listener cancels the send, so the text is
70540
70650
  * kept when you cancel a send that failed.
70541
70651
  *
70542
- * **In a form, the draft is the composer's value**, submitted under `name`. A
70652
+ * **In a form, the draft is the composer's value**, submitted under `name`,
70653
+ * and an empty draft submits an empty entry, as a native textarea does. A
70543
70654
  * form reset puts back the `value` the markup declared, and a `<fieldset
70544
70655
  * disabled>` turns the composer off. Sending is still `helix-send`, and it
70545
70656
  * does not submit the form.
@@ -72841,6 +72952,18 @@ export type CustomElementsSolidJs = {
72841
72952
  * framework would re-render over an element the combobox inserted, so add the
72842
72953
  * option in your event handler.
72843
72954
  *
72955
+ * **The options are an import of their own.** An option is the Option family's,
72956
+ * which the combobox does not register, so a page that writes one imports it
72957
+ * beside the combobox:
72958
+ *
72959
+ * ```js
72960
+ * import '@fusion.dev/helix/combobox'
72961
+ * import '@fusion.dev/helix/option'
72962
+ * ```
72963
+ *
72964
+ * In development, a combobox holding an option nobody registered says so once
72965
+ * the page has loaded, with the line to add.
72966
+ *
72844
72967
  * ## Attributes & Properties
72845
72968
  *
72846
72969
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73276,6 +73399,18 @@ export type CustomElementsSolidJs = {
73276
73399
  * Aria's `Autocomplete` is. The commands are a `listbox` of `option`s. How many commands typing left, the empty text and
73277
73400
  * the loading text are said in a polite live region.
73278
73401
  *
73402
+ * **The commands are an import of their own.** A command is an option, the
73403
+ * Option family's, which the palette does not register, so a page that writes
73404
+ * one imports it beside the palette:
73405
+ *
73406
+ * ```js
73407
+ * import '@fusion.dev/helix/command'
73408
+ * import '@fusion.dev/helix/option'
73409
+ * ```
73410
+ *
73411
+ * In development, a palette holding an option nobody registered says so once
73412
+ * the page has loaded, with the line to add.
73413
+ *
73279
73414
  * ## Attributes & Properties
73280
73415
  *
73281
73416
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -73855,6 +73990,18 @@ export type CustomElementsSolidJs = {
73855
73990
  * Written on `DataTable`, `columns` has no effect, so watch for it when you
73856
73991
  * move a table from `Table` to `DataTable`.
73857
73992
  *
73993
+ * **The columns are an import of their own.** A column is the Table family's
73994
+ * `TableColumn`, which the data table does not register, so a page that writes
73995
+ * one imports the Table entry beside the data table:
73996
+ *
73997
+ * ```js
73998
+ * import '@fusion.dev/helix/data-table'
73999
+ * import '@fusion.dev/helix/table'
74000
+ * ```
74001
+ *
74002
+ * In development, a data table holding a column nobody registered says so once
74003
+ * the page has loaded, with the line to add.
74004
+ *
73858
74005
  * ## Attributes & Properties
73859
74006
  *
73860
74007
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -74256,6 +74403,8 @@ export type CustomElementsSolidJs = {
74256
74403
  * digits or the arrow keys. Alt+Down opens the calendar from a segment. A
74257
74404
  * `range` is two rows with a dash between them, the start and the end, as
74258
74405
  * React Aria's DateRangePicker draws them, and `multiple` keeps the text.
74406
+ * A range whose end is before its start reports `rangeUnderflow`, as Date
74407
+ * Picker does, with `range-order-message`.
74259
74408
  *
74260
74409
  * Text that is not a date gives the form an empty value, as a native date
74261
74410
  * field does, and `value` keeps the text so it can be corrected.
@@ -74376,6 +74525,8 @@ export type CustomElementsSolidJs = {
74376
74525
  * **Every sentence a control raises in the browser's bubble is a property**,
74377
74526
  * so a form in another language speaks it. Unset is the sentence registered
74378
74527
  * for the page's language, then the English.
74528
+ * - `range-order-message`/`rangeOrderMessage`: The message shown when a range ends before it starts. `{start}` is
74529
+ * replaced with the start, written the way the field writes dates.
74379
74530
  * - `range-overflow-message`/`rangeOverflowMessage`: The message shown when a date is after `max`. `{max}` is replaced with
74380
74531
  * `max`, written the way the field writes dates.
74381
74532
  * - `range-underflow-message`/`rangeUnderflowMessage`: The message shown when a date is before `min`. `{min}` is replaced with
@@ -74783,7 +74934,8 @@ export type CustomElementsSolidJs = {
74783
74934
  * when Previous or Next is pressed. Neither moves past `min` or `max`, and the
74784
74935
  * keys stop at them too. A value outside the bounds, on a barred day, or off
74785
74936
  * `step` reports `rangeUnderflow`, `rangeOverflow`, `badInput` or
74786
- * `stepMismatch`, so a form does not submit it.
74937
+ * `stepMismatch`, so a form does not submit it. A range set from a script
74938
+ * whose end is before its start reports `rangeUnderflow` as well.
74787
74939
  *
74788
74940
  * ## Attributes & Properties
74789
74941
  *
@@ -74864,6 +75016,8 @@ export type CustomElementsSolidJs = {
74864
75016
  * it.
74865
75017
  * - `previous-year-label`/`previousYearLabel`: Accessible name for the control that moves back a year, in the months.
74866
75018
  * - `previous-years-label`/`previousYearsLabel`: Accessible name for the control that moves back a page, in the years.
75019
+ * - `range-order-message`/`rangeOrderMessage`: The validation message for a range that ends before it starts. `{start}`
75020
+ * is replaced with the start, written as a date in `locale`.
74867
75021
  * - `range-overflow-message`/`rangeOverflowMessage`: The validation message for a date after `max`. `{max}` is replaced with
74868
75022
  * `max`, written as a date in `locale`.
74869
75023
  * - `range-underflow-message`/`rangeUnderflowMessage`: The validation message for a date before `min`. `{min}` is replaced with
@@ -77543,6 +77697,19 @@ export type CustomElementsSolidJs = {
77543
77697
  * filter goes. Set `chips` and the field adds, updates, and removes those
77544
77698
  * chips itself, from every `helix-facet` you do not cancel.
77545
77699
  *
77700
+ * **The suggestions you write are an import of their own.** A suggestion is an
77701
+ * option, the Option family's, which the field does not register, so a page
77702
+ * that slots one imports it beside the field:
77703
+ *
77704
+ * ```js
77705
+ * import '@fusion.dev/helix/filter-input'
77706
+ * import '@fusion.dev/helix/option'
77707
+ * ```
77708
+ *
77709
+ * In development, a field holding an option nobody registered says so once the
77710
+ * page has loaded, with the line to add. The options `source` gives are drawn
77711
+ * as this Option too, and need the same import.
77712
+ *
77546
77713
  * ## Attributes & Properties
77547
77714
  *
77548
77715
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81154,6 +81321,19 @@ export type CustomElementsSolidJs = {
81154
81321
  * filter narrows the list, under `layout="grid"`, or while the list is
81155
81322
  * disabled.
81156
81323
  *
81324
+ * **The options are an import of their own.** An option you write is the Option
81325
+ * family's, which the list does not register, so a page that writes one imports
81326
+ * it beside the list:
81327
+ *
81328
+ * ```js
81329
+ * import '@fusion.dev/helix/listbox'
81330
+ * import '@fusion.dev/helix/option'
81331
+ * ```
81332
+ *
81333
+ * In development, a list holding an option nobody registered says so once the
81334
+ * page has loaded, with the line to add. The options `items` draws are this
81335
+ * Option too, and need the same import.
81336
+ *
81157
81337
  * ## Attributes & Properties
81158
81338
  *
81159
81339
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -81322,7 +81502,8 @@ export type CustomElementsSolidJs = {
81322
81502
  *
81323
81503
  * **The list needs a height to scroll in**: the styled tier's
81324
81504
  * `--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.
81505
+ * headless tier. The options drawn are this tier's Option, which the page
81506
+ * imports, as it imports the options it writes.
81326
81507
  * A server sends the list empty, and the options are drawn once it hydrates. (property only)
81327
81508
  * - `selectedIndex`: Which option is chosen, as an index, or `-1` where none is.
81328
81509
  *
@@ -87612,9 +87793,10 @@ export type CustomElementsSolidJs = {
87612
87793
  *
87613
87794
  * The plot runs left to right in every text direction, as a number line does.
87614
87795
  * 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.
87796
+ * `dir="ltr"`, and the arrow keys follow the drawing: Right moves to the next
87797
+ * point on a right-to-left page too. The axis names carry `dir="auto"`, so a
87798
+ * name in Arabic or Hebrew reads in its own direction. The summary and the
87799
+ * tooltip bubble follow the page's direction.
87618
87800
  *
87619
87801
  * **A tap shows the reading under it**, and keeps it until a tap lands
87620
87802
  * elsewhere. `helix-reading-change` says each move of the reading, by pointer,
@@ -87636,7 +87818,7 @@ export type CustomElementsSolidJs = {
87636
87818
  * | Key | What it does |
87637
87819
  * |---|---|
87638
87820
  * | 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. |
87821
+ * | Right, Left | Moves to the next or the previous point, left to right across the plot, on a right-to-left page too. |
87640
87822
  * | Down, Up | Moves among the series of the point. With one series, moves to the next or the previous point. |
87641
87823
  * | Home, End | Moves to the first or the last point. |
87642
87824
  * | Page Down, Page Up | Moves a tenth of the points on or back. |
@@ -88090,6 +88272,18 @@ export type CustomElementsSolidJs = {
88090
88272
  * Set `autocomplete` to let a browser's autofill choose, as a native `<select>`
88091
88273
  * with the same attribute would.
88092
88274
  *
88275
+ * **The options are an import of their own.** An option is the Option family's,
88276
+ * which the select does not register, so a page that writes one imports it
88277
+ * beside the select:
88278
+ *
88279
+ * ```js
88280
+ * import '@fusion.dev/helix/select'
88281
+ * import '@fusion.dev/helix/option'
88282
+ * ```
88283
+ *
88284
+ * In development, a select holding an option nobody registered says so once the
88285
+ * page has loaded, with the line to add.
88286
+ *
88093
88287
  * ## Attributes & Properties
88094
88288
  *
88095
88289
  * Component attributes and properties that can be applied to the element or by using JavaScript.