@fusion.dev/helix 0.171.0 → 0.172.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fusion.dev/helix",
3
3
  "description": "Styled component tier. Extends the headless tier with token-driven presentation.",
4
- "version": "0.171.0",
4
+ "version": "0.172.0",
5
5
  "license": "MIT",
6
6
  "author": "Ross Sheppard <ross.sheppard@fusion.dev>",
7
7
  "repository": {
@@ -54,13 +54,13 @@
54
54
  },
55
55
  "bugs": "https://github.com/project-fusion/fusion/issues",
56
56
  "dependencies": {
57
- "@fusion.dev/helix-core": "0.171.0",
58
- "@fusion.dev/helix-headless": "0.171.0",
59
- "@fusion.dev/helix-styles": "0.171.0"
57
+ "@fusion.dev/helix-core": "0.172.0",
58
+ "@fusion.dev/helix-headless": "0.172.0",
59
+ "@fusion.dev/helix-styles": "0.172.0"
60
60
  },
61
61
  "devDependencies": {
62
- "@fusion.dev/helix-cem": "0.171.0",
63
- "@fusion.dev/helix-testing": "0.171.0",
62
+ "@fusion.dev/helix-cem": "0.172.0",
63
+ "@fusion.dev/helix-testing": "0.172.0",
64
64
  "@fusion.dev/scripts": "0.0.0-dev",
65
65
  "@happy-dom/global-registrator": "^20.14.5",
66
66
  "@lit-labs/ssr": "^4.1.0",
package/types/jsx.d.ts CHANGED
@@ -6429,6 +6429,10 @@ export type HelixChatComposerHelixTypingElementEvent =
6429
6429
  HelixChatComposerElementEvent<HelixTypingEvent>;
6430
6430
 
6431
6431
  export type HelixChatComposerProps = {
6432
+ /** A message about the draft, shown under the field. While set, the composer
6433
+ is invalid, does not send, and does not submit, as a field's `feedback`
6434
+ does, and the message is announced as it appears. */
6435
+ feedback?: (HelixChatComposer["feedback"]) | undefined;
6432
6436
  /** The field's name, read by screen readers. */
6433
6437
  label?: (HelixChatComposer["label"]) | undefined;
6434
6438
  /** The most characters a draft can have. The field stops taking more. */
@@ -6515,6 +6519,10 @@ Here rather than on each control. */
6515
6519
  };
6516
6520
 
6517
6521
  export type HelixChatComposerSolidJsProps = {
6522
+ /** A message about the draft, shown under the field. While set, the composer
6523
+ is invalid, does not send, and does not submit, as a field's `feedback`
6524
+ does, and the message is announced as it appears. */
6525
+ "prop:feedback"?: (HelixChatComposer["feedback"]) | undefined;
6518
6526
  /** The field's name, read by screen readers. */
6519
6527
  "prop:label"?: (HelixChatComposer["label"]) | undefined;
6520
6528
  /** The most characters a draft can have. The field stops taking more. */
@@ -11356,7 +11364,11 @@ thousand rows, where the page is a reasonable fetch and a poor render.
11356
11364
 
11357
11365
  Off by default. Windowing costs a scroll listener, a measurement per row
11358
11366
  drawn, and a `block-size` on the scrolling box, and a table of twenty rows
11359
- should pay none of them. */
11367
+ should pay none of them.
11368
+
11369
+ While windowed, the `table` part scrolls on this tier: it carries
11370
+ `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
11371
+ every shadow root. You still need to give it a block size. */
11360
11372
  windowed?: (HelixDataTable["windowed"]) | undefined;
11361
11373
  /** Every row of the result, in the order it arrived.
11362
11374
 
@@ -11771,7 +11783,11 @@ thousand rows, where the page is a reasonable fetch and a poor render.
11771
11783
 
11772
11784
  Off by default. Windowing costs a scroll listener, a measurement per row
11773
11785
  drawn, and a `block-size` on the scrolling box, and a table of twenty rows
11774
- should pay none of them. */
11786
+ should pay none of them.
11787
+
11788
+ While windowed, the `table` part scrolls on this tier: it carries
11789
+ `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
11790
+ every shadow root. You still need to give it a block size. */
11775
11791
  "prop:windowed"?: (HelixDataTable["windowed"]) | undefined;
11776
11792
  /** Every row of the result, in the order it arrived.
11777
11793
 
@@ -23910,6 +23926,14 @@ or on Alt+Down or Alt+Up. */
23910
23926
 
23911
23927
  It moves if that side does not fit. */
23912
23928
  placement?: (HelixMenu["placement"]) | undefined;
23929
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
23930
+ how many rows are left, written in the locale, and each language writes
23931
+ the forms it has, as Listbox's `results-label` does. */
23932
+ "results-label"?: (HelixMenu["resultsLabel"]) | undefined;
23933
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
23934
+ how many rows are left, written in the locale, and each language writes
23935
+ the forms it has, as Listbox's `results-label` does. */
23936
+ resultsLabel?: (HelixMenu["resultsLabel"]) | undefined;
23913
23937
  /** How a submenu opens. `drill` shows it in place of the page showing, with
23914
23938
  a way back. `flyout` opens it in a panel of its own beside its row. */
23915
23939
  submenus?: (HelixMenu["submenus"]) | undefined;
@@ -23920,9 +23944,19 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
23920
23944
  Absent, a row is kept where its words hold the filter, in any case. A
23921
23945
  property only, there being no way to write a function in markup. */
23922
23946
  filterMatch?: (HelixMenu["filterMatch"]) | undefined;
23947
+ /** The values of the choice rows that are checked, anywhere in the menu, in
23948
+ document order.
23949
+
23950
+ Set it to check exactly those rows and uncheck every other choice row, as
23951
+ React Aria's `selectedKeys` controls a menu's selection from one place.
23952
+ Each row keeps its own `checked` too, which this reads and writes. `change`
23953
+ is sent on the menu when a reader's choice changes it. */
23954
+ checkedValues?: (HelixMenu["checkedValues"]) | undefined;
23923
23955
 
23924
23956
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
23925
23957
  ontoggle?: ((e: HelixMenuToggleElementEvent) => void) | undefined;
23958
+ /** A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now. */
23959
+ onchange?: ((e: HelixMenuElementEvent) => void) | undefined;
23926
23960
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
23927
23961
  "onhelix-before-close"?: ((e: HelixMenuHelixBeforeCloseElementEvent) => void) | undefined;
23928
23962
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
@@ -24026,6 +24060,14 @@ or on Alt+Down or Alt+Up. */
24026
24060
 
24027
24061
  It moves if that side does not fit. */
24028
24062
  "prop:placement"?: (HelixMenu["placement"]) | undefined;
24063
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
24064
+ how many rows are left, written in the locale, and each language writes
24065
+ the forms it has, as Listbox's `results-label` does. */
24066
+ "attr:results-label"?: (HelixMenu["resultsLabel"]) | undefined;
24067
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
24068
+ how many rows are left, written in the locale, and each language writes
24069
+ the forms it has, as Listbox's `results-label` does. */
24070
+ "prop:resultsLabel"?: (HelixMenu["resultsLabel"]) | undefined;
24029
24071
  /** How a submenu opens. `drill` shows it in place of the page showing, with
24030
24072
  a way back. `flyout` opens it in a panel of its own beside its row. */
24031
24073
  "prop:submenus"?: (HelixMenu["submenus"]) | undefined;
@@ -24036,8 +24078,18 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
24036
24078
  Absent, a row is kept where its words hold the filter, in any case. A
24037
24079
  property only, there being no way to write a function in markup. */
24038
24080
  "prop:filterMatch"?: (HelixMenu["filterMatch"]) | undefined;
24081
+ /** The values of the choice rows that are checked, anywhere in the menu, in
24082
+ document order.
24083
+
24084
+ Set it to check exactly those rows and uncheck every other choice row, as
24085
+ React Aria's `selectedKeys` controls a menu's selection from one place.
24086
+ Each row keeps its own `checked` too, which this reads and writes. `change`
24087
+ is sent on the menu when a reader's choice changes it. */
24088
+ "prop:checkedValues"?: (HelixMenu["checkedValues"]) | undefined;
24039
24089
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
24040
24090
  "on:toggle"?: ((e: HelixMenuToggleElementEvent) => void) | undefined;
24091
+ /** A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now. */
24092
+ "on:change"?: ((e: HelixMenuElementEvent) => void) | undefined;
24041
24093
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
24042
24094
  "on:helix-before-close"?: ((e: HelixMenuHelixBeforeCloseElementEvent) => void) | undefined;
24043
24095
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
@@ -27563,17 +27615,42 @@ hydration, or diffed by a framework, it comes back holding whatever the
27563
27615
  last reader did rather than what the author wrote. `:state(open)` carries
27564
27616
  the resolved state for stylesheets, which is what the mirror is for. */
27565
27617
  open?: (HelixPopover["open"]) | undefined;
27618
+ /** The element the panel opens against, where that is not the trigger: its
27619
+ `id` in the same document or shadow root, or the element itself. Left
27620
+ empty, the panel opens against the trigger, or against the button whose
27621
+ command opened it. */
27622
+ anchor?: (HelixPopover["anchor"]) | undefined;
27566
27623
  /** Draws a point on the panel's edge facing the trigger.
27567
27624
 
27568
27625
  Off by default, which is the house style: a panel that opens from its
27569
27626
  trigger already reads as belonging to it. */
27570
27627
  arrow?: (HelixPopover["arrow"]) | undefined;
27628
+ /** How close to the window's edges the panel may come, in pixels, when it
27629
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27630
+ and shrinks to 8 pixels from an edge and moves to the other side only
27631
+ once it would cross one. */
27632
+ "container-padding"?: (HelixPopover["containerPadding"] | `${number}`) | undefined;
27633
+ /** How close to the window's edges the panel may come, in pixels, when it
27634
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27635
+ and shrinks to 8 pixels from an edge and moves to the other side only
27636
+ once it would cross one. */
27637
+ containerPadding?: (HelixPopover["containerPadding"]) | undefined;
27638
+ /** How far to slide the panel along the side it is on, in pixels: to the
27639
+ right on the top or the bottom, and down on the left or the right. */
27640
+ "cross-offset"?: (HelixPopover["crossOffset"] | `${number}`) | undefined;
27641
+ /** How far to slide the panel along the side it is on, in pixels: to the
27642
+ right on the top or the bottom, and down on the left or the right. */
27643
+ crossOffset?: (HelixPopover["crossOffset"]) | undefined;
27571
27644
  /** The panel's name where nothing else names it: no `label`, no heading in
27572
27645
  the panel, and no `aria-labelledby` on the host. */
27573
27646
  "fallback-label"?: (HelixPopover["fallbackLabel"]) | undefined;
27574
27647
  /** The panel's name where nothing else names it: no `label`, no heading in
27575
27648
  the panel, and no `aria-labelledby` on the host. */
27576
27649
  fallbackLabel?: (HelixPopover["fallbackLabel"]) | undefined;
27650
+ /** Whether the panel moves to the other side of the trigger when its own
27651
+ side has no room. On by default. Write `flip="false"` to keep it on its
27652
+ side, where it shrinks to fit, as React Aria's `shouldFlip` turns off. */
27653
+ flip?: (HelixPopover["flip"]) | undefined;
27577
27654
  /** The panel's name, read by screen readers. Left empty, the first heading in
27578
27655
  the panel names it, and then `fallback-label`. */
27579
27656
  label?: (HelixPopover["label"]) | undefined;
@@ -27627,17 +27704,42 @@ hydration, or diffed by a framework, it comes back holding whatever the
27627
27704
  last reader did rather than what the author wrote. `:state(open)` carries
27628
27705
  the resolved state for stylesheets, which is what the mirror is for. */
27629
27706
  "prop:open"?: (HelixPopover["open"]) | undefined;
27707
+ /** The element the panel opens against, where that is not the trigger: its
27708
+ `id` in the same document or shadow root, or the element itself. Left
27709
+ empty, the panel opens against the trigger, or against the button whose
27710
+ command opened it. */
27711
+ "prop:anchor"?: (HelixPopover["anchor"]) | undefined;
27630
27712
  /** Draws a point on the panel's edge facing the trigger.
27631
27713
 
27632
27714
  Off by default, which is the house style: a panel that opens from its
27633
27715
  trigger already reads as belonging to it. */
27634
27716
  "prop:arrow"?: (HelixPopover["arrow"]) | undefined;
27717
+ /** How close to the window's edges the panel may come, in pixels, when it
27718
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27719
+ and shrinks to 8 pixels from an edge and moves to the other side only
27720
+ once it would cross one. */
27721
+ "attr:container-padding"?: (HelixPopover["containerPadding"] | `${number}`) | undefined;
27722
+ /** How close to the window's edges the panel may come, in pixels, when it
27723
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
27724
+ and shrinks to 8 pixels from an edge and moves to the other side only
27725
+ once it would cross one. */
27726
+ "prop:containerPadding"?: (HelixPopover["containerPadding"]) | undefined;
27727
+ /** How far to slide the panel along the side it is on, in pixels: to the
27728
+ right on the top or the bottom, and down on the left or the right. */
27729
+ "attr:cross-offset"?: (HelixPopover["crossOffset"] | `${number}`) | undefined;
27730
+ /** How far to slide the panel along the side it is on, in pixels: to the
27731
+ right on the top or the bottom, and down on the left or the right. */
27732
+ "prop:crossOffset"?: (HelixPopover["crossOffset"]) | undefined;
27635
27733
  /** The panel's name where nothing else names it: no `label`, no heading in
27636
27734
  the panel, and no `aria-labelledby` on the host. */
27637
27735
  "attr:fallback-label"?: (HelixPopover["fallbackLabel"]) | undefined;
27638
27736
  /** The panel's name where nothing else names it: no `label`, no heading in
27639
27737
  the panel, and no `aria-labelledby` on the host. */
27640
27738
  "prop:fallbackLabel"?: (HelixPopover["fallbackLabel"]) | undefined;
27739
+ /** Whether the panel moves to the other side of the trigger when its own
27740
+ side has no room. On by default. Write `flip="false"` to keep it on its
27741
+ side, where it shrinks to fit, as React Aria's `shouldFlip` turns off. */
27742
+ "prop:flip"?: (HelixPopover["flip"]) | undefined;
27641
27743
  /** The panel's name, read by screen readers. Left empty, the first heading in
27642
27744
  the panel names it, and then `fallback-label`. */
27643
27745
  "prop:label"?: (HelixPopover["label"]) | undefined;
@@ -45432,6 +45534,9 @@ export type CustomElements = {
45432
45534
  *
45433
45535
  * Component attributes and properties that can be applied to the element or by using JavaScript.
45434
45536
  *
45537
+ * - `feedback`: A message about the draft, shown under the field. While set, the composer
45538
+ * is invalid, does not send, and does not submit, as a field's `feedback`
45539
+ * does, and the message is announced as it appears.
45435
45540
  * - `label`: The field's name, read by screen readers.
45436
45541
  * - `maxlength`/`maxLength`: The most characters a draft can have. The field stops taking more.
45437
45542
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
@@ -45597,6 +45702,7 @@ export type CustomElements = {
45597
45702
  * - `tools`: The row under the field.
45598
45703
  * - `composer`: The whole composer.
45599
45704
  * - `end`: The box around the `end` slot.
45705
+ * - `feedback`: The `feedback` message, under the field while it is set.
45600
45706
  * - `mark`: The icon inside the send button.
45601
45707
  * - `start`: The box around the `start` slot.
45602
45708
  *
@@ -45604,7 +45710,7 @@ export type CustomElements = {
45604
45710
  *
45605
45711
  * These can be used to apply styling when a component is in a given state.
45606
45712
  *
45607
- * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it.
45713
+ * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
45608
45714
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
45609
45715
  */
45610
45716
  "helix-chat-composer": Partial<
@@ -48628,6 +48734,10 @@ export type CustomElements = {
48628
48734
  * Off by default. Windowing costs a scroll listener, a measurement per row
48629
48735
  * drawn, and a `block-size` on the scrolling box, and a table of twenty rows
48630
48736
  * should pay none of them.
48737
+ *
48738
+ * While windowed, the `table` part scrolls on this tier: it carries
48739
+ * `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
48740
+ * every shadow root. You still need to give it a block size.
48631
48741
  * - `rows`: Every row of the result, in the order it arrived.
48632
48742
  *
48633
48743
  * A property and not an attribute: it is an array. Left alone this element
@@ -57293,6 +57403,8 @@ export type CustomElements = {
57293
57403
  * These can be used to apply styling when a component is in a given state.
57294
57404
  *
57295
57405
  * - `checked`: The row is checked.
57406
+ * - `disabled`: The row is disabled.
57407
+ * - `expanded`: Under `submenus="flyout"`, the row's submenu is open beside it.
57296
57408
  * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
57297
57409
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
57298
57410
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
@@ -57363,6 +57475,9 @@ export type CustomElements = {
57363
57475
  * - `placement`: The side the menu opens on, when there is room.
57364
57476
  *
57365
57477
  * It moves if that side does not fit.
57478
+ * - `results-label`/`resultsLabel`: What a screen reader hears when the filter narrows the rows. `{count}` is
57479
+ * how many rows are left, written in the locale, and each language writes
57480
+ * the forms it has, as Listbox's `results-label` does.
57366
57481
  * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
57367
57482
  * a way back. `flyout` opens it in a panel of its own beside its row.
57368
57483
  * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
@@ -57371,6 +57486,13 @@ export type CustomElements = {
57371
57486
  *
57372
57487
  * Absent, a row is kept where its words hold the filter, in any case. A
57373
57488
  * property only, there being no way to write a function in markup. (property only)
57489
+ * - `checkedValues`: The values of the choice rows that are checked, anywhere in the menu, in
57490
+ * document order.
57491
+ *
57492
+ * Set it to check exactly those rows and uncheck every other choice row, as
57493
+ * React Aria's `selectedKeys` controls a menu's selection from one place.
57494
+ * Each row keeps its own `checked` too, which this reads and writes. `change`
57495
+ * is sent on the menu when a reader's choice changes it. (property only)
57374
57496
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
57375
57497
  *
57376
57498
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -57397,6 +57519,7 @@ export type CustomElements = {
57397
57519
  * Events that will be emitted by the component.
57398
57520
  *
57399
57521
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
57522
+ * - `change`: A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now.
57400
57523
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
57401
57524
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
57402
57525
  * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
@@ -57407,6 +57530,8 @@ export type CustomElements = {
57407
57530
  * Areas where markup can be added to the component.
57408
57531
  *
57409
57532
  * - `(default)`: The items.
57533
+ * - `empty`: What the menu shows when it has no items, for content richer than `empty-text`.
57534
+ * - `loading`: What the menu shows while its items load, for content richer than `loading-text`.
57410
57535
  * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
57411
57536
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
57412
57537
  *
@@ -57458,6 +57583,8 @@ export type CustomElements = {
57458
57583
  * These can be used to apply styling when a component is in a given state.
57459
57584
  *
57460
57585
  * - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
57586
+ * - `entering`: From the moment the panel shows until its entrance has finished.
57587
+ * - `exiting`: From the moment the panel hides until its exit has finished.
57461
57588
  * - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
57462
57589
  * - `open`: While the menu is open.
57463
57590
  * - `placed-bottom`: While the open panel sits below its trigger.
@@ -60319,12 +60446,25 @@ export type CustomElements = {
60319
60446
  * hydration, or diffed by a framework, it comes back holding whatever the
60320
60447
  * last reader did rather than what the author wrote. `:state(open)` carries
60321
60448
  * the resolved state for stylesheets, which is what the mirror is for.
60449
+ * - `anchor`: The element the panel opens against, where that is not the trigger: its
60450
+ * `id` in the same document or shadow root, or the element itself. Left
60451
+ * empty, the panel opens against the trigger, or against the button whose
60452
+ * command opened it.
60322
60453
  * - `arrow`: Draws a point on the panel's edge facing the trigger.
60323
60454
  *
60324
60455
  * Off by default, which is the house style: a panel that opens from its
60325
60456
  * trigger already reads as belonging to it.
60457
+ * - `container-padding`/`containerPadding`: How close to the window's edges the panel may come, in pixels, when it
60458
+ * slides, shrinks or moves to the other side to fit. Left unset, it slides
60459
+ * and shrinks to 8 pixels from an edge and moves to the other side only
60460
+ * once it would cross one.
60461
+ * - `cross-offset`/`crossOffset`: How far to slide the panel along the side it is on, in pixels: to the
60462
+ * right on the top or the bottom, and down on the left or the right.
60326
60463
  * - `fallback-label`/`fallbackLabel`: The panel's name where nothing else names it: no `label`, no heading in
60327
60464
  * the panel, and no `aria-labelledby` on the host.
60465
+ * - `flip`: Whether the panel moves to the other side of the trigger when its own
60466
+ * side has no room. On by default. Write `flip="false"` to keep it on its
60467
+ * side, where it shrinks to fit, as React Aria's `shouldFlip` turns off.
60328
60468
  * - `label`: The panel's name, read by screen readers. Left empty, the first heading in
60329
60469
  * the panel names it, and then `fallback-label`.
60330
60470
  * - `modal`: Keeps `Tab` inside the panel while it is open, marks the panel
@@ -60416,6 +60556,8 @@ export type CustomElements = {
60416
60556
  *
60417
60557
  * These can be used to apply styling when a component is in a given state.
60418
60558
  *
60559
+ * - `aligned-end`: While the panel is aligned to the end of the side it sits on.
60560
+ * - `aligned-start`: While the panel is aligned to the start of the side it sits on.
60419
60561
  * - `entering`: From the moment the panel shows until its entrance has finished.
60420
60562
  * - `exiting`: From the moment the panel hides until its exit has finished.
60421
60563
  * - `open`: While the popover is open.
@@ -66792,6 +66934,10 @@ export type CustomElements = {
66792
66934
  * along, so the two writes a consumer would make in sequence do not compose
66793
66935
  * into the range they asked for. The platform has this method for that reason
66794
66936
  * and so does this.
66937
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
66938
+ * where `start` and `end` are left out, and `selectMode` says what is
66939
+ * selected after. It sends no event, as the native method sends none.
66940
+ * - `select() => void`: Selects everything in the field.
66795
66941
  * - `focus(options?: FocusOptions) => void`: Moves focus to the control, as focusing a native control does.
66796
66942
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
66797
66943
  *
@@ -74781,6 +74927,9 @@ export type CustomElementsSolidJs = {
74781
74927
  *
74782
74928
  * Component attributes and properties that can be applied to the element or by using JavaScript.
74783
74929
  *
74930
+ * - `feedback`: A message about the draft, shown under the field. While set, the composer
74931
+ * is invalid, does not send, and does not submit, as a field's `feedback`
74932
+ * does, and the message is announced as it appears.
74784
74933
  * - `label`: The field's name, read by screen readers.
74785
74934
  * - `maxlength`/`maxLength`: The most characters a draft can have. The field stops taking more.
74786
74935
  * - `minlength`/`minLength`: The fewest characters a draft can have, once the reader has written in
@@ -74946,6 +75095,7 @@ export type CustomElementsSolidJs = {
74946
75095
  * - `tools`: The row under the field.
74947
75096
  * - `composer`: The whole composer.
74948
75097
  * - `end`: The box around the `end` slot.
75098
+ * - `feedback`: The `feedback` message, under the field while it is set.
74949
75099
  * - `mark`: The icon inside the send button.
74950
75100
  * - `start`: The box around the `start` slot.
74951
75101
  *
@@ -74953,7 +75103,7 @@ export type CustomElementsSolidJs = {
74953
75103
  *
74954
75104
  * These can be used to apply styling when a component is in a given state.
74955
75105
  *
74956
- * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it.
75106
+ * - `invalid`: The draft fails `required`, `minlength`, `maxlength`, or a custom error, and the reader has tried to send or submit it, or edited the field and left it. Or `feedback` is set.
74957
75107
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
74958
75108
  */
74959
75109
  "helix-chat-composer": Partial<
@@ -78011,6 +78161,10 @@ export type CustomElementsSolidJs = {
78011
78161
  * Off by default. Windowing costs a scroll listener, a measurement per row
78012
78162
  * drawn, and a `block-size` on the scrolling box, and a table of twenty rows
78013
78163
  * should pay none of them.
78164
+ *
78165
+ * While windowed, the `table` part scrolls on this tier: it carries
78166
+ * `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
78167
+ * every shadow root. You still need to give it a block size.
78014
78168
  * - `rows`: Every row of the result, in the order it arrived.
78015
78169
  *
78016
78170
  * A property and not an attribute: it is an array. Left alone this element
@@ -86820,6 +86974,8 @@ export type CustomElementsSolidJs = {
86820
86974
  * These can be used to apply styling when a component is in a given state.
86821
86975
  *
86822
86976
  * - `checked`: The row is checked.
86977
+ * - `disabled`: The row is disabled.
86978
+ * - `expanded`: Under `submenus="flyout"`, the row's submenu is open beside it.
86823
86979
  * - `highlighted`: In a menu with `filterable`, the arrow keys or the pointer reached the row while focus stays in the filter field.
86824
86980
  * - `submenu-mark`: Under `submenus="flyout"`, a row in this row's submenu can be ticked or opens a submenu, so the submenu keeps its trailing column.
86825
86981
  * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
@@ -86893,6 +87049,9 @@ export type CustomElementsSolidJs = {
86893
87049
  * - `placement`: The side the menu opens on, when there is room.
86894
87050
  *
86895
87051
  * It moves if that side does not fit.
87052
+ * - `results-label`/`resultsLabel`: What a screen reader hears when the filter narrows the rows. `{count}` is
87053
+ * how many rows are left, written in the locale, and each language writes
87054
+ * the forms it has, as Listbox's `results-label` does.
86896
87055
  * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
86897
87056
  * a way back. `flyout` opens it in a panel of its own beside its row.
86898
87057
  * - `filterMatch`: Whether a row is kept by the filter: a function given the row's words and
@@ -86901,6 +87060,13 @@ export type CustomElementsSolidJs = {
86901
87060
  *
86902
87061
  * Absent, a row is kept where its words hold the filter, in any case. A
86903
87062
  * property only, there being no way to write a function in markup. (property only)
87063
+ * - `checkedValues`: The values of the choice rows that are checked, anywhere in the menu, in
87064
+ * document order.
87065
+ *
87066
+ * Set it to check exactly those rows and uncheck every other choice row, as
87067
+ * React Aria's `selectedKeys` controls a menu's selection from one place.
87068
+ * Each row keeps its own `checked` too, which this reads and writes. `change`
87069
+ * is sent on the menu when a reader's choice changes it. (property only)
86904
87070
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
86905
87071
  *
86906
87072
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -86927,6 +87093,7 @@ export type CustomElementsSolidJs = {
86927
87093
  * Events that will be emitted by the component.
86928
87094
  *
86929
87095
  * - `toggle`: The menu opened or closed. The event carries `newState` and `oldState`.
87096
+ * - `change`: A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now.
86930
87097
  * - `helix-before-close`: The menu is about to close. Cancelable: cancel it to keep it open.
86931
87098
  * - `helix-before-open`: The menu is about to open. Cancelable: cancel it to keep it closed.
86932
87099
  * - `helix-filter`: The text in the filter field changed, with the new text in `detail.value`. Cancelable: cancel it to keep every row showing and narrow the rows yourself.
@@ -86937,6 +87104,8 @@ export type CustomElementsSolidJs = {
86937
87104
  * Areas where markup can be added to the component.
86938
87105
  *
86939
87106
  * - `(default)`: The items.
87107
+ * - `empty`: What the menu shows when it has no items, for content richer than `empty-text`.
87108
+ * - `loading`: What the menu shows while its items load, for content richer than `loading-text`.
86940
87109
  * - `no-results`: What the menu shows when the filter keeps no rows, for content richer than `no-results-text`.
86941
87110
  * - `trigger`: The control that opens the menu, or with `context` the area a context menu opens over.
86942
87111
  *
@@ -86988,6 +87157,8 @@ export type CustomElementsSolidJs = {
86988
87157
  * These can be used to apply styling when a component is in a given state.
86989
87158
  *
86990
87159
  * - `drilled`: A submenu's page is showing, so content that is not a row can hide with the top page.
87160
+ * - `entering`: From the moment the panel shows until its entrance has finished.
87161
+ * - `exiting`: From the moment the panel hides until its exit has finished.
86991
87162
  * - `mark`: A row on the current page has a checkbox or a link, so every row keeps the trailing column.
86992
87163
  * - `open`: While the menu is open.
86993
87164
  * - `placed-bottom`: While the open panel sits below its trigger.
@@ -89903,12 +90074,25 @@ export type CustomElementsSolidJs = {
89903
90074
  * hydration, or diffed by a framework, it comes back holding whatever the
89904
90075
  * last reader did rather than what the author wrote. `:state(open)` carries
89905
90076
  * the resolved state for stylesheets, which is what the mirror is for.
90077
+ * - `anchor`: The element the panel opens against, where that is not the trigger: its
90078
+ * `id` in the same document or shadow root, or the element itself. Left
90079
+ * empty, the panel opens against the trigger, or against the button whose
90080
+ * command opened it.
89906
90081
  * - `arrow`: Draws a point on the panel's edge facing the trigger.
89907
90082
  *
89908
90083
  * Off by default, which is the house style: a panel that opens from its
89909
90084
  * trigger already reads as belonging to it.
90085
+ * - `container-padding`/`containerPadding`: How close to the window's edges the panel may come, in pixels, when it
90086
+ * slides, shrinks or moves to the other side to fit. Left unset, it slides
90087
+ * and shrinks to 8 pixels from an edge and moves to the other side only
90088
+ * once it would cross one.
90089
+ * - `cross-offset`/`crossOffset`: How far to slide the panel along the side it is on, in pixels: to the
90090
+ * right on the top or the bottom, and down on the left or the right.
89910
90091
  * - `fallback-label`/`fallbackLabel`: The panel's name where nothing else names it: no `label`, no heading in
89911
90092
  * the panel, and no `aria-labelledby` on the host.
90093
+ * - `flip`: Whether the panel moves to the other side of the trigger when its own
90094
+ * side has no room. On by default. Write `flip="false"` to keep it on its
90095
+ * side, where it shrinks to fit, as React Aria's `shouldFlip` turns off.
89912
90096
  * - `label`: The panel's name, read by screen readers. Left empty, the first heading in
89913
90097
  * the panel names it, and then `fallback-label`.
89914
90098
  * - `modal`: Keeps `Tab` inside the panel while it is open, marks the panel
@@ -90000,6 +90184,8 @@ export type CustomElementsSolidJs = {
90000
90184
  *
90001
90185
  * These can be used to apply styling when a component is in a given state.
90002
90186
  *
90187
+ * - `aligned-end`: While the panel is aligned to the end of the side it sits on.
90188
+ * - `aligned-start`: While the panel is aligned to the start of the side it sits on.
90003
90189
  * - `entering`: From the moment the panel shows until its entrance has finished.
90004
90190
  * - `exiting`: From the moment the panel hides until its exit has finished.
90005
90191
  * - `open`: While the popover is open.
@@ -96501,6 +96687,10 @@ export type CustomElementsSolidJs = {
96501
96687
  * along, so the two writes a consumer would make in sequence do not compose
96502
96688
  * into the range they asked for. The platform has this method for that reason
96503
96689
  * and so does this.
96690
+ * - `setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void`: Replaces a range of the text, as the native method does: the selection
96691
+ * where `start` and `end` are left out, and `selectMode` says what is
96692
+ * selected after. It sends no event, as the native method sends none.
96693
+ * - `select() => void`: Selects everything in the field.
96504
96694
  * - `focus(options?: FocusOptions) => void`: Moves focus to the control, as focusing a native control does.
96505
96695
  * - `formDisabledCallback(disabled: boolean) => void`: Called by the browser when an ancestor fieldset is disabled or enabled.
96506
96696
  *
package/types/vue.d.ts CHANGED
@@ -3318,6 +3318,10 @@ export type HelixChatComposerHelixTypingElementEvent =
3318
3318
  HelixChatComposerElementEvent<HelixTypingEvent>;
3319
3319
 
3320
3320
  export type HelixChatComposerVueProps = {
3321
+ /** A message about the draft, shown under the field. While set, the composer
3322
+ is invalid, does not send, and does not submit, as a field's `feedback`
3323
+ does, and the message is announced as it appears. */
3324
+ feedback?: (HelixChatComposer["feedback"]) | undefined;
3321
3325
  /** The field's name, read by screen readers. */
3322
3326
  label?: (HelixChatComposer["label"]) | undefined;
3323
3327
  /** The most characters a draft can have. The field stops taking more. */
@@ -6037,7 +6041,11 @@ thousand rows, where the page is a reasonable fetch and a poor render.
6037
6041
 
6038
6042
  Off by default. Windowing costs a scroll listener, a measurement per row
6039
6043
  drawn, and a `block-size` on the scrolling box, and a table of twenty rows
6040
- should pay none of them. */
6044
+ should pay none of them.
6045
+
6046
+ While windowed, the `table` part scrolls on this tier: it carries
6047
+ `data-scroller`, and `core` ships `[data-scroller] { overflow: auto }` into
6048
+ every shadow root. You still need to give it a block size. */
6041
6049
  windowed?: (HelixDataTable["windowed"]) | undefined;
6042
6050
  /** Every row of the result, in the order it arrived.
6043
6051
 
@@ -12316,6 +12324,14 @@ or on Alt+Down or Alt+Up. */
12316
12324
 
12317
12325
  It moves if that side does not fit. */
12318
12326
  placement?: (HelixMenu["placement"]) | undefined;
12327
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
12328
+ how many rows are left, written in the locale, and each language writes
12329
+ the forms it has, as Listbox's `results-label` does. */
12330
+ "results-label"?: (HelixMenu["resultsLabel"]) | undefined;
12331
+ /** What a screen reader hears when the filter narrows the rows. `{count}` is
12332
+ how many rows are left, written in the locale, and each language writes
12333
+ the forms it has, as Listbox's `results-label` does. */
12334
+ resultsLabel?: (HelixMenu["resultsLabel"]) | undefined;
12319
12335
  /** How a submenu opens. `drill` shows it in place of the page showing, with
12320
12336
  a way back. `flyout` opens it in a panel of its own beside its row. */
12321
12337
  submenus?: (HelixMenu["submenus"]) | undefined;
@@ -12326,11 +12342,21 @@ Aria's `Autocomplete` takes `filter`. See Listbox's `filterMatch`.
12326
12342
  Absent, a row is kept where its words hold the filter, in any case. A
12327
12343
  property only, there being no way to write a function in markup. */
12328
12344
  filterMatch?: (HelixMenu["filterMatch"]) | undefined;
12345
+ /** The values of the choice rows that are checked, anywhere in the menu, in
12346
+ document order.
12347
+
12348
+ Set it to check exactly those rows and uncheck every other choice row, as
12349
+ React Aria's `selectedKeys` controls a menu's selection from one place.
12350
+ Each row keeps its own `checked` too, which this reads and writes. `change`
12351
+ is sent on the menu when a reader's choice changes it. */
12352
+ checkedValues?: (HelixMenu["checkedValues"]) | undefined;
12329
12353
  };
12330
12354
 
12331
12355
  export type HelixMenuVueEvents = {
12332
12356
  /** The menu opened or closed. The event carries `newState` and `oldState`. */
12333
12357
  toggle: HelixMenuToggleElementEvent;
12358
+ /** A reader's choice checked or unchecked rows. Read `checkedValues` for the rows that are checked now. */
12359
+ change: HelixMenuElementEvent;
12334
12360
  /** The menu is about to close. Cancelable: cancel it to keep it open. */
12335
12361
  "helix-before-close": HelixMenuHelixBeforeCloseElementEvent;
12336
12362
  /** The menu is about to open. Cancelable: cancel it to keep it closed. */
@@ -14156,17 +14182,42 @@ hydration, or diffed by a framework, it comes back holding whatever the
14156
14182
  last reader did rather than what the author wrote. `:state(open)` carries
14157
14183
  the resolved state for stylesheets, which is what the mirror is for. */
14158
14184
  open?: (HelixPopover["open"]) | undefined;
14185
+ /** The element the panel opens against, where that is not the trigger: its
14186
+ `id` in the same document or shadow root, or the element itself. Left
14187
+ empty, the panel opens against the trigger, or against the button whose
14188
+ command opened it. */
14189
+ anchor?: (HelixPopover["anchor"]) | undefined;
14159
14190
  /** Draws a point on the panel's edge facing the trigger.
14160
14191
 
14161
14192
  Off by default, which is the house style: a panel that opens from its
14162
14193
  trigger already reads as belonging to it. */
14163
14194
  arrow?: (HelixPopover["arrow"]) | undefined;
14195
+ /** How close to the window's edges the panel may come, in pixels, when it
14196
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
14197
+ and shrinks to 8 pixels from an edge and moves to the other side only
14198
+ once it would cross one. */
14199
+ "container-padding"?: (HelixPopover["containerPadding"] | `${number}`) | undefined;
14200
+ /** How close to the window's edges the panel may come, in pixels, when it
14201
+ slides, shrinks or moves to the other side to fit. Left unset, it slides
14202
+ and shrinks to 8 pixels from an edge and moves to the other side only
14203
+ once it would cross one. */
14204
+ containerPadding?: (HelixPopover["containerPadding"]) | undefined;
14205
+ /** How far to slide the panel along the side it is on, in pixels: to the
14206
+ right on the top or the bottom, and down on the left or the right. */
14207
+ "cross-offset"?: (HelixPopover["crossOffset"] | `${number}`) | undefined;
14208
+ /** How far to slide the panel along the side it is on, in pixels: to the
14209
+ right on the top or the bottom, and down on the left or the right. */
14210
+ crossOffset?: (HelixPopover["crossOffset"]) | undefined;
14164
14211
  /** The panel's name where nothing else names it: no `label`, no heading in
14165
14212
  the panel, and no `aria-labelledby` on the host. */
14166
14213
  "fallback-label"?: (HelixPopover["fallbackLabel"]) | undefined;
14167
14214
  /** The panel's name where nothing else names it: no `label`, no heading in
14168
14215
  the panel, and no `aria-labelledby` on the host. */
14169
14216
  fallbackLabel?: (HelixPopover["fallbackLabel"]) | undefined;
14217
+ /** Whether the panel moves to the other side of the trigger when its own
14218
+ side has no room. On by default. Write `flip="false"` to keep it on its
14219
+ side, where it shrinks to fit, as React Aria's `shouldFlip` turns off. */
14220
+ flip?: (HelixPopover["flip"]) | undefined;
14170
14221
  /** The panel's name, read by screen readers. Left empty, the first heading in
14171
14222
  the panel names it, and then `fallback-label`. */
14172
14223
  label?: (HelixPopover["label"]) | undefined;