@fusion.dev/helix-headless 0.156.0 → 0.157.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/jsx.d.ts CHANGED
@@ -12308,6 +12308,16 @@ export type HelixHeadlessDrilldownItemHelixSelectElementEvent =
12308
12308
  export type HelixHeadlessDrilldownItemProps = {
12309
12309
  /** Whether the row can be reached at all. */
12310
12310
  disabled?: (HelixHeadlessDrilldownItem["disabled"]) | undefined;
12311
+ /** Whether the link downloads the file when the row is chosen. Only
12312
+ meaningful beside an `href`, and only for a file served from this origin. */
12313
+ download?: (HelixHeadlessDrilldownItem["download"]) | undefined;
12314
+ /** The URL the row links to. Setting it renders the row as a link, unless the
12315
+ row opens a page or is disabled. */
12316
+ href?: (HelixHeadlessDrilldownItem["href"]) | undefined;
12317
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
12318
+ rel?: (HelixHeadlessDrilldownItem["rel"]) | undefined;
12319
+ /** Where the link opens, for rows that should open outside the current page. */
12320
+ target?: (HelixHeadlessDrilldownItem["target"]) | undefined;
12311
12321
  /** Identifies the row to your event listeners. */
12312
12322
  value?: (HelixHeadlessDrilldownItem["value"]) | undefined;
12313
12323
  /** Whether this row holds the region's tab stop. Set by the drill-down.
@@ -12332,6 +12342,16 @@ lands inside this shadow root instead. */
12332
12342
  export type HelixHeadlessDrilldownItemSolidJsProps = {
12333
12343
  /** Whether the row can be reached at all. */
12334
12344
  "prop:disabled"?: (HelixHeadlessDrilldownItem["disabled"]) | undefined;
12345
+ /** Whether the link downloads the file when the row is chosen. Only
12346
+ meaningful beside an `href`, and only for a file served from this origin. */
12347
+ "prop:download"?: (HelixHeadlessDrilldownItem["download"]) | undefined;
12348
+ /** The URL the row links to. Setting it renders the row as a link, unless the
12349
+ row opens a page or is disabled. */
12350
+ "prop:href"?: (HelixHeadlessDrilldownItem["href"]) | undefined;
12351
+ /** The link's `rel`. Set it whenever you set `target="_blank"`. */
12352
+ "prop:rel"?: (HelixHeadlessDrilldownItem["rel"]) | undefined;
12353
+ /** Where the link opens, for rows that should open outside the current page. */
12354
+ "prop:target"?: (HelixHeadlessDrilldownItem["target"]) | undefined;
12335
12355
  /** Identifies the row to your event listeners. */
12336
12356
  "prop:value"?: (HelixHeadlessDrilldownItem["value"]) | undefined;
12337
12357
  /** Whether this row holds the region's tab stop. Set by the drill-down.
@@ -12362,6 +12382,9 @@ export type HelixHeadlessDrilldownElementEvent<E = Event> = TypedEvent<
12362
12382
  HelixHeadlessDrilldown,
12363
12383
  E
12364
12384
  >;
12385
+ /** `helix-navigate` event type */
12386
+ export type HelixHeadlessDrilldownHelixNavigateElementEvent =
12387
+ HelixHeadlessDrilldownElementEvent<HelixNavigateEvent>;
12365
12388
  /** `helix-select` event type */
12366
12389
  export type HelixHeadlessDrilldownHelixSelectElementEvent =
12367
12390
  HelixHeadlessDrilldownElementEvent<HelixSelectEvent>;
@@ -12377,6 +12400,14 @@ and wins over this. */
12377
12400
  "back-label"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
12378
12401
  /** The text of the back button. */
12379
12402
  backLabel?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
12403
+ /** Whether the drilldown is a site's navigation: a `navigation` landmark
12404
+ named by `label`, whose pages are lists of links. Without it, each page is
12405
+ a `menu`. */
12406
+ navigation?: (HelixHeadlessDrilldown["navigation"]) | undefined;
12407
+ /** The page showing, as the `value` of the row that opens it. Empty is the
12408
+ top page. Setting it shows that page, and a value no row with a page has
12409
+ shows the top page. */
12410
+ page?: (HelixHeadlessDrilldown["page"]) | undefined;
12380
12411
  /** The text shown and announced when there are no rows and none are loading. */
12381
12412
  "empty-text"?: (HelixHeadlessDrilldown["emptyText"]) | undefined;
12382
12413
  /** The text shown and announced when there are no rows and none are loading. */
@@ -12392,6 +12423,10 @@ say that without the component knowing what a row looks like. */
12392
12423
  /** The text shown and announced while the rows load. */
12393
12424
  loadingText?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
12394
12425
 
12426
+ /** Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing. */
12427
+ "onhelix-navigate"?: ((
12428
+ e: HelixHeadlessDrilldownHelixNavigateElementEvent,
12429
+ ) => void) | undefined;
12395
12430
  /** Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
12396
12431
  "onhelix-select"?: ((e: HelixHeadlessDrilldownHelixSelectElementEvent) => void) | undefined;
12397
12432
  };
@@ -12407,6 +12442,14 @@ and wins over this. */
12407
12442
  "attr:back-label"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
12408
12443
  /** The text of the back button. */
12409
12444
  "prop:backLabel"?: (HelixHeadlessDrilldown["backLabel"]) | undefined;
12445
+ /** Whether the drilldown is a site's navigation: a `navigation` landmark
12446
+ named by `label`, whose pages are lists of links. Without it, each page is
12447
+ a `menu`. */
12448
+ "prop:navigation"?: (HelixHeadlessDrilldown["navigation"]) | undefined;
12449
+ /** The page showing, as the `value` of the row that opens it. Empty is the
12450
+ top page. Setting it shows that page, and a value no row with a page has
12451
+ shows the top page. */
12452
+ "prop:page"?: (HelixHeadlessDrilldown["page"]) | undefined;
12410
12453
  /** The text shown and announced when there are no rows and none are loading. */
12411
12454
  "attr:empty-text"?: (HelixHeadlessDrilldown["emptyText"]) | undefined;
12412
12455
  /** The text shown and announced when there are no rows and none are loading. */
@@ -12421,6 +12464,10 @@ say that without the component knowing what a row looks like. */
12421
12464
  "attr:loading-text"?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
12422
12465
  /** The text shown and announced while the rows load. */
12423
12466
  "prop:loadingText"?: (HelixHeadlessDrilldown["loadingText"]) | undefined;
12467
+ /** Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing. */
12468
+ "on:helix-navigate"?: ((
12469
+ e: HelixHeadlessDrilldownHelixNavigateElementEvent,
12470
+ ) => void) | undefined;
12424
12471
  /** Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you. */
12425
12472
  "on:helix-select"?: ((
12426
12473
  e: HelixHeadlessDrilldownHelixSelectElementEvent,
@@ -19855,8 +19902,24 @@ narrow exception the server specs describe covers a mirror that can only
19855
19902
  become true long after hydration, and a viewport measured before the first
19856
19903
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
19857
19904
  bandBelow?: (HelixHeadlessMegamenu["bandBelow"]) | undefined;
19905
+ /** How long a pointer leaving the trigger and the panel waits before the panel
19906
+ closes, in milliseconds. The pointer needs the time to cross from the
19907
+ trigger to the panel. */
19908
+ "close-delay"?: (HelixHeadlessMegamenu["closeDelay"] | `${number}`) | undefined;
19909
+ /** How long a pointer leaving the trigger and the panel waits before the panel
19910
+ closes, in milliseconds. The pointer needs the time to cross from the
19911
+ trigger to the panel. */
19912
+ closeDelay?: (HelixHeadlessMegamenu["closeDelay"]) | undefined;
19858
19913
  /** The section's name, used for the default trigger and the panel. */
19859
19914
  label?: (HelixHeadlessMegamenu["label"]) | undefined;
19915
+ /** How long a pointer rests on the trigger before the panel opens, in
19916
+ milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
19917
+ way somewhere else opens nothing. */
19918
+ "open-delay"?: (HelixHeadlessMegamenu["openDelay"] | `${number}`) | undefined;
19919
+ /** How long a pointer rests on the trigger before the panel opens, in
19920
+ milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
19921
+ way somewhere else opens nothing. */
19922
+ openDelay?: (HelixHeadlessMegamenu["openDelay"]) | undefined;
19860
19923
  /** Whether hovering over the trigger opens the panel (`hover`), or only a press
19861
19924
  does (`click`).
19862
19925
 
@@ -19873,6 +19936,10 @@ the trigger, and it is the default because that is what a navigation bar
19873
19936
  does. `click` is for a trigger that does something else as well, or a panel
19874
19937
  heavy enough that opening it on the way past is rude. */
19875
19938
  openOn?: (HelixHeadlessMegamenu["openOn"]) | undefined;
19939
+ /** The side of the trigger a card panel opens on, when there is room. It
19940
+ moves if that side does not fit. A band ignores it, since a band spans the
19941
+ page under its bar. */
19942
+ placement?: (HelixHeadlessMegamenu["placement"]) | undefined;
19876
19943
  /** Whether the panel is a card under the trigger or a band across the page.
19877
19944
 
19878
19945
  The resting one is the card, hanging off the trigger and as wide as it
@@ -19975,8 +20042,24 @@ narrow exception the server specs describe covers a mirror that can only
19975
20042
  become true long after hydration, and a viewport measured before the first
19976
20043
  paint is the opposite case. See `MixinControllerOpen` on `open`. */
19977
20044
  "prop:bandBelow"?: (HelixHeadlessMegamenu["bandBelow"]) | undefined;
20045
+ /** How long a pointer leaving the trigger and the panel waits before the panel
20046
+ closes, in milliseconds. The pointer needs the time to cross from the
20047
+ trigger to the panel. */
20048
+ "attr:close-delay"?: (HelixHeadlessMegamenu["closeDelay"] | `${number}`) | undefined;
20049
+ /** How long a pointer leaving the trigger and the panel waits before the panel
20050
+ closes, in milliseconds. The pointer needs the time to cross from the
20051
+ trigger to the panel. */
20052
+ "prop:closeDelay"?: (HelixHeadlessMegamenu["closeDelay"]) | undefined;
19978
20053
  /** The section's name, used for the default trigger and the panel. */
19979
20054
  "prop:label"?: (HelixHeadlessMegamenu["label"]) | undefined;
20055
+ /** How long a pointer rests on the trigger before the panel opens, in
20056
+ milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
20057
+ way somewhere else opens nothing. */
20058
+ "attr:open-delay"?: (HelixHeadlessMegamenu["openDelay"] | `${number}`) | undefined;
20059
+ /** How long a pointer rests on the trigger before the panel opens, in
20060
+ milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
20061
+ way somewhere else opens nothing. */
20062
+ "prop:openDelay"?: (HelixHeadlessMegamenu["openDelay"]) | undefined;
19980
20063
  /** Whether hovering over the trigger opens the panel (`hover`), or only a press
19981
20064
  does (`click`).
19982
20065
 
@@ -19993,6 +20076,10 @@ the trigger, and it is the default because that is what a navigation bar
19993
20076
  does. `click` is for a trigger that does something else as well, or a panel
19994
20077
  heavy enough that opening it on the way past is rude. */
19995
20078
  "prop:openOn"?: (HelixHeadlessMegamenu["openOn"]) | undefined;
20079
+ /** The side of the trigger a card panel opens on, when there is room. It
20080
+ moves if that side does not fit. A band ignores it, since a band spans the
20081
+ page under its bar. */
20082
+ "prop:placement"?: (HelixHeadlessMegamenu["placement"]) | undefined;
19996
20083
  /** Whether the panel is a card under the trigger or a band across the page.
19997
20084
 
19998
20085
  The resting one is the card, hanging off the trigger and as wide as it
@@ -20244,12 +20331,29 @@ Empty by default, which names the surface by its trigger, so a menu opened
20244
20331
  from "Actions" is announced as "Actions". An `aria-label` or
20245
20332
  `aria-labelledby` on the host names it too, and wins over both. */
20246
20333
  label?: (HelixHeadlessMenu["label"]) | undefined;
20334
+ /** The description a trigger gives under `open-on="long-press"`, saying how
20335
+ to open the menu. Translate it with the rest of your interface. */
20336
+ "long-press-label"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
20337
+ /** The description a trigger gives under `open-on="long-press"`, saying how
20338
+ to open the menu. Translate it with the rest of your interface. */
20339
+ longPressLabel?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
20247
20340
  /** Space between the trigger and the surface, in pixels. */
20248
20341
  offset?: (HelixHeadlessMenu["offset"]) | undefined;
20342
+ /** What opens the menu from its trigger. `long-press` leaves a press to the
20343
+ trigger's own action and opens the menu on a press held for half a second,
20344
+ or on Alt+Down or Alt+Up. */
20345
+ "open-on"?: (HelixHeadlessMenu["openOn"]) | undefined;
20346
+ /** What opens the menu from its trigger. `long-press` leaves a press to the
20347
+ trigger's own action and opens the menu on a press held for half a second,
20348
+ or on Alt+Down or Alt+Up. */
20349
+ openOn?: (HelixHeadlessMenu["openOn"]) | undefined;
20249
20350
  /** The side the menu opens on, when there is room.
20250
20351
 
20251
20352
  It moves if that side does not fit. */
20252
20353
  placement?: (HelixHeadlessMenu["placement"]) | undefined;
20354
+ /** How a submenu opens. `drill` shows it in place of the page showing, with
20355
+ a way back. `flyout` opens it in a panel of its own beside its row. */
20356
+ submenus?: (HelixHeadlessMenu["submenus"]) | undefined;
20253
20357
  /** The text shown and announced when there are no rows and none are loading. */
20254
20358
  "empty-text"?: (HelixHeadlessMenu["emptyText"]) | undefined;
20255
20359
  /** The text shown and announced when there are no rows and none are loading. */
@@ -20310,12 +20414,29 @@ Empty by default, which names the surface by its trigger, so a menu opened
20310
20414
  from "Actions" is announced as "Actions". An `aria-label` or
20311
20415
  `aria-labelledby` on the host names it too, and wins over both. */
20312
20416
  "prop:label"?: (HelixHeadlessMenu["label"]) | undefined;
20417
+ /** The description a trigger gives under `open-on="long-press"`, saying how
20418
+ to open the menu. Translate it with the rest of your interface. */
20419
+ "attr:long-press-label"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
20420
+ /** The description a trigger gives under `open-on="long-press"`, saying how
20421
+ to open the menu. Translate it with the rest of your interface. */
20422
+ "prop:longPressLabel"?: (HelixHeadlessMenu["longPressLabel"]) | undefined;
20313
20423
  /** Space between the trigger and the surface, in pixels. */
20314
20424
  "prop:offset"?: (HelixHeadlessMenu["offset"]) | undefined;
20425
+ /** What opens the menu from its trigger. `long-press` leaves a press to the
20426
+ trigger's own action and opens the menu on a press held for half a second,
20427
+ or on Alt+Down or Alt+Up. */
20428
+ "attr:open-on"?: (HelixHeadlessMenu["openOn"]) | undefined;
20429
+ /** What opens the menu from its trigger. `long-press` leaves a press to the
20430
+ trigger's own action and opens the menu on a press held for half a second,
20431
+ or on Alt+Down or Alt+Up. */
20432
+ "prop:openOn"?: (HelixHeadlessMenu["openOn"]) | undefined;
20315
20433
  /** The side the menu opens on, when there is room.
20316
20434
 
20317
20435
  It moves if that side does not fit. */
20318
20436
  "prop:placement"?: (HelixHeadlessMenu["placement"]) | undefined;
20437
+ /** How a submenu opens. `drill` shows it in place of the page showing, with
20438
+ a way back. `flyout` opens it in a panel of its own beside its row. */
20439
+ "prop:submenus"?: (HelixHeadlessMenu["submenus"]) | undefined;
20319
20440
  /** The text shown and announced when there are no rows and none are loading. */
20320
20441
  "attr:empty-text"?: (HelixHeadlessMenu["emptyText"]) | undefined;
20321
20442
  /** The text shown and announced when there are no rows and none are loading. */
@@ -21054,6 +21175,12 @@ export type HelixHeadlessNotificationsHelixReadElementEvent =
21054
21175
  HelixHeadlessNotificationsElementEvent<HelixReadEvent>;
21055
21176
 
21056
21177
  export type HelixHeadlessNotificationsProps = {
21178
+ /** What the feed says when unread notifications arrive, with `{count}` the
21179
+ number of them. Empty it to say nothing. */
21180
+ "arrived-label"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
21181
+ /** What the feed says when unread notifications arrive, with `{count}` the
21182
+ number of them. Empty it to say nothing. */
21183
+ arrivedLabel?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
21057
21184
  /** The region's name where `label` is empty. */
21058
21185
  "fallback-label"?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
21059
21186
  /** The region's name where `label` is empty. */
@@ -21126,6 +21253,12 @@ say that without the component knowing what a row looks like. */
21126
21253
  };
21127
21254
 
21128
21255
  export type HelixHeadlessNotificationsSolidJsProps = {
21256
+ /** What the feed says when unread notifications arrive, with `{count}` the
21257
+ number of them. Empty it to say nothing. */
21258
+ "attr:arrived-label"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
21259
+ /** What the feed says when unread notifications arrive, with `{count}` the
21260
+ number of them. Empty it to say nothing. */
21261
+ "prop:arrivedLabel"?: (HelixHeadlessNotifications["arrivedLabel"]) | undefined;
21129
21262
  /** The region's name where `label` is empty. */
21130
21263
  "attr:fallback-label"?: (HelixHeadlessNotifications["fallbackLabel"]) | undefined;
21131
21264
  /** The region's name where `label` is empty. */
@@ -31381,6 +31514,10 @@ A word property: register it for a locale under the host's key. A family
31381
31514
  that names the control otherwise, such as Tag's `Remove {label}`,
31382
31515
  declares its own English with `@words` above the override. */
31383
31516
  dismissLabel?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
31517
+ /** Whether the region holds the message back, because more messages are
31518
+ showing than its `max-visible`. The region sets it. A waiting message is
31519
+ hidden, its timer has not started, and it is said once it shows. */
31520
+ waiting?: (HelixHeadlessToastItem["waiting"]) | undefined;
31384
31521
 
31385
31522
  /** Fired when the message is dismissed, by the control or by its timer, and cancelable. Canceling it keeps the message. */
31386
31523
  "onhelix-dismiss"?: ((
@@ -31435,6 +31572,10 @@ A word property: register it for a locale under the host's key. A family
31435
31572
  that names the control otherwise, such as Tag's `Remove {label}`,
31436
31573
  declares its own English with `@words` above the override. */
31437
31574
  "prop:dismissLabel"?: (HelixHeadlessToastItem["dismissLabel"]) | undefined;
31575
+ /** Whether the region holds the message back, because more messages are
31576
+ showing than its `max-visible`. The region sets it. A waiting message is
31577
+ hidden, its timer has not started, and it is said once it shows. */
31578
+ "prop:waiting"?: (HelixHeadlessToastItem["waiting"]) | undefined;
31438
31579
  /** Fired when the message is dismissed, by the control or by its timer, and cancelable. Canceling it keeps the message. */
31439
31580
  "on:helix-dismiss"?: ((
31440
31581
  e: HelixHeadlessToastItemHelixDismissElementEvent,
@@ -31464,6 +31605,14 @@ Empty turns it off. */
31464
31605
  /** Accessible name for the region, with `{hotkey}` filled in. Translate it with
31465
31606
  the rest of your interface. */
31466
31607
  label?: (HelixHeadlessToast["label"]) | undefined;
31608
+ /** How many messages show at once. The messages after that many wait, hidden
31609
+ and with their timers stopped, until a message before them goes. Unset,
31610
+ every message shows. */
31611
+ "max-visible"?: (HelixHeadlessToast["maxVisible"] | `${number}`) | undefined;
31612
+ /** How many messages show at once. The messages after that many wait, hidden
31613
+ and with their timers stopped, until a message before them goes. Unset,
31614
+ every message shows. */
31615
+ maxVisible?: (HelixHeadlessToast["maxVisible"]) | undefined;
31467
31616
  /** Which corner or edge the stack sits at.
31468
31617
 
31469
31618
  Named here rather than on each message, because where a page puts its
@@ -31503,6 +31652,14 @@ Empty turns it off. */
31503
31652
  /** Accessible name for the region, with `{hotkey}` filled in. Translate it with
31504
31653
  the rest of your interface. */
31505
31654
  "prop:label"?: (HelixHeadlessToast["label"]) | undefined;
31655
+ /** How many messages show at once. The messages after that many wait, hidden
31656
+ and with their timers stopped, until a message before them goes. Unset,
31657
+ every message shows. */
31658
+ "attr:max-visible"?: (HelixHeadlessToast["maxVisible"] | `${number}`) | undefined;
31659
+ /** How many messages show at once. The messages after that many wait, hidden
31660
+ and with their timers stopped, until a message before them goes. Unset,
31661
+ every message shows. */
31662
+ "prop:maxVisible"?: (HelixHeadlessToast["maxVisible"]) | undefined;
31506
31663
  /** Which corner or edge the stack sits at.
31507
31664
 
31508
31665
  Named here rather than on each message, because where a page puts its
@@ -43706,6 +43863,16 @@ export type CustomElements = {
43706
43863
  * `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
43707
43864
  * render leaves both out, because the server cannot see the children.
43708
43865
  *
43866
+ * **A row with an `href` is a link.** The row itself renders as an `<a>`
43867
+ * carrying `menuitem`, as `Menu.Item` does, so a middle click, a modified
43868
+ * click and the status bar keep working. Enter follows it, and Space does too.
43869
+ * Choosing it fires `helix-select` first: cancel the event and the link is not
43870
+ * followed, so a router can take the navigation. A row that opens a page, or a
43871
+ * disabled row, renders no link.
43872
+ *
43873
+ * A development build warns when a row has no words to be named by, such as a
43874
+ * row holding only an icon with no label.
43875
+ *
43709
43876
  * The row is named by its label alone. Words in `description`, a line under
43710
43877
  * the label, and in `end` describe it instead, through `aria-describedby`, as
43711
43878
  * `Menu.Item` does: a reader hears "Theme", then "Dark".
@@ -43715,6 +43882,12 @@ export type CustomElements = {
43715
43882
  * Component attributes and properties that can be applied to the element or by using JavaScript.
43716
43883
  *
43717
43884
  * - `disabled`: Whether the row can be reached at all.
43885
+ * - `download`: Whether the link downloads the file when the row is chosen. Only
43886
+ * meaningful beside an `href`, and only for a file served from this origin.
43887
+ * - `href`: The URL the row links to. Setting it renders the row as a link, unless the
43888
+ * row opens a page or is disabled.
43889
+ * - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
43890
+ * - `target`: Where the link opens, for rows that should open outside the current page.
43718
43891
  * - `value`: Identifies the row to your event listeners.
43719
43892
  * - `focusable`: Whether this row holds the region's tab stop. Set by the drill-down.
43720
43893
  *
@@ -43788,7 +43961,7 @@ export type CustomElements = {
43788
43961
  *
43789
43962
  * Custom selectors for styling elements within the component.
43790
43963
  *
43791
- * - `item`: The row itself.
43964
+ * - `item`: The row itself, which is an `<a>` where `href` is set.
43792
43965
  * - `label`: The row's label.
43793
43966
  * - `mark`: The caret at the end of a row that opens a page, after the `end` slot. The caret points, so a stylesheet mirrors it in a right-to-left document.
43794
43967
  *
@@ -43820,6 +43993,11 @@ export type CustomElements = {
43820
43993
  * and reads the rest from the DOM. The behavior lives in `DrilldownController`,
43821
43994
  * which `Menu` shares.
43822
43995
  *
43996
+ * **`page` is the page showing**, as the `value` of the row that opens it,
43997
+ * and empty on the top page. Set it to show a page, such as one a link to a
43998
+ * settings screen names. A reader's move updates it, and `helix-navigate`
43999
+ * comes first, so you can refuse the move or take it yourself.
44000
+ *
43823
44001
  * After each move the host carries `data-direction`, `forward` into a page or
43824
44002
  * `back` out of one, and records `:state(forward)` or `:state(back)`, so a
43825
44003
  * stylesheet can slide the new page in from the side the reader is going. Both
@@ -43827,13 +44005,25 @@ export type CustomElements = {
43827
44005
  * page, two moves the same way included. The styled tier slides the page and
43828
44006
  * swaps it at once under `prefers-reduced-motion`.
43829
44007
  *
43830
- * Keys, on a row: Up and Down Arrow move between the rows, Home and End go to
43831
- * the first and the last, and a typed letter moves to the next row whose name
43832
- * starts with it. Enter, Space, or Right Arrow opens a row's page, and Left
43833
- * Arrow or Escape goes back, the two arrows swapping on a right-to-left page.
44008
+ * **Keyboard.** The drilldown is one tab stop, on the row last focused.
44009
+ *
44010
+ * | Key | What it does |
44011
+ * |---|---|
44012
+ * | Down Arrow, Up Arrow | Moves to the next or the previous row. |
44013
+ * | Home, End | Moves to the first or the last row. |
44014
+ * | A letter | Moves to the next row whose name starts with it. |
44015
+ * | Enter, Space | Chooses the row: opens its page, follows its link, or sends `helix-select`. |
44016
+ * | Right Arrow | Opens the row's page. Left Arrow on a right-to-left page. |
44017
+ * | Left Arrow, Escape | Goes back one page, with focus on the row that opened it. Right Arrow on a right-to-left page. |
43834
44018
  *
43835
44019
  * The rows of the page showing are a `menu`, named by `label` on the top page
43836
- * and by the page's title below it. The back button and the title sit above
44020
+ * and by the page's title below it.
44021
+ *
44022
+ * **`navigation` makes it a site's navigation.** The host is a `navigation`
44023
+ * landmark named by `label`, each page is a list, and each row is a list item
44024
+ * holding a link or a button, as the APG's disclosure navigation is built,
44025
+ * so a reader meets places to go in place of a menu of commands. The keys stay
44026
+ * the same. The back button and the title sit above
43837
44027
  * the menu. Disabled rows stay reachable with the arrow keys, and typing a
43838
44028
  * letter moves to the next row whose name starts with it.
43839
44029
  *
@@ -43847,6 +44037,12 @@ export type CustomElements = {
43847
44037
  * An `aria-label` or `aria-labelledby` on the host names the top page too,
43848
44038
  * and wins over this.
43849
44039
  * - `back-label`/`backLabel`: The text of the back button.
44040
+ * - `navigation`: Whether the drilldown is a site's navigation: a `navigation` landmark
44041
+ * named by `label`, whose pages are lists of links. Without it, each page is
44042
+ * a `menu`.
44043
+ * - `page`: The page showing, as the `value` of the row that opens it. Empty is the
44044
+ * top page. Setting it shows that page, and a value no row with a page has
44045
+ * shows the top page.
43850
44046
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
43851
44047
  * - `loading`: Whether the rows are still loading.
43852
44048
  *
@@ -43879,6 +44075,7 @@ export type CustomElements = {
43879
44075
  *
43880
44076
  * Events that will be emitted by the component.
43881
44077
  *
44078
+ * - `helix-navigate`: Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing.
43882
44079
  * - `helix-select`: Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
43883
44080
  *
43884
44081
  * ## Slots
@@ -44734,6 +44931,7 @@ export type CustomElements = {
44734
44931
  * - `entry-shortcut-key`: One key of the shortcut's chord.
44735
44932
  * - `entry-shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
44736
44933
  * - `entry-start`: The leading column.
44934
+ * - `entry-surface`: The panel a row's submenu opens in beside it. The filter menu's rows have none.
44737
44935
  * - `menu`: The menu the fields are offered in.
44738
44936
  * - `menu-back`: The button that goes back from a field's page.
44739
44937
  * - `menu-back-mark`: The icon on the back button.
@@ -49880,7 +50078,10 @@ export type CustomElements = {
49880
50078
  *
49881
50079
  * It opens on hover by default, and a press always opens it too. `open-on` sets
49882
50080
  * which. Hover is the default because in a navigation bar people expect to move
49883
- * along the row and see each section.
50081
+ * along the row and see each section. A pointer resting on the trigger opens
50082
+ * the panel after `open-delay`, and leaving closes it after `close-delay`. Moving
50083
+ * from one open panel's trigger to another's opens the next at once, as Radix's
50084
+ * `skipDelayDuration` does.
49884
50085
  *
49885
50086
  * When one panel opens in place of another, each says which way the reader
49886
50087
  * moved, as Radix's `data-motion` does. Moving toward the end of the bar, the
@@ -49898,6 +50099,10 @@ export type CustomElements = {
49898
50099
  * navigation menu publishes the same pair from its shared viewport, so a
49899
50100
  * stylesheet can grow or shrink one panel into the next.
49900
50101
  *
50102
+ * While a link in the panel carries `aria-current="page"`, the host has
50103
+ * `:state(current)`, so the trigger of the section holding the page you are
50104
+ * on can say so, as Radix's navigation menu marks its active link.
50105
+ *
49901
50106
  * The panel's default slot is the `columns` part and draws no box, so a sheet
49902
50107
  * can give the columns one of their own. While a panel is open, an
49903
50108
  * `indicator` slot is rendered beside its trigger, as Radix's indicator
@@ -49914,6 +50119,12 @@ export type CustomElements = {
49914
50119
  * way out. The trigger says `aria-expanded`, and the panel is a group named by
49915
50120
  * `label`.
49916
50121
  *
50122
+ * A Helix trigger, such as `helix-button`, is told whether the panel is open
50123
+ * inside its own shadow root. On a plain element, such as a `<button>`, the
50124
+ * megamenu writes `aria-expanded`, from a frame after its own first render, so
50125
+ * a server's markup is never changed while a framework hydrates it. It never
50126
+ * writes it where you wrote `aria-expanded` yourself.
50127
+ *
49917
50128
  * ## Attributes & Properties
49918
50129
  *
49919
50130
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -49942,7 +50153,13 @@ export type CustomElements = {
49942
50153
  * narrow exception the server specs describe covers a mirror that can only
49943
50154
  * become true long after hydration, and a viewport measured before the first
49944
50155
  * paint is the opposite case. See `MixinControllerOpen` on `open`.
50156
+ * - `close-delay`/`closeDelay`: How long a pointer leaving the trigger and the panel waits before the panel
50157
+ * closes, in milliseconds. The pointer needs the time to cross from the
50158
+ * trigger to the panel.
49945
50159
  * - `label`: The section's name, used for the default trigger and the panel.
50160
+ * - `open-delay`/`openDelay`: How long a pointer rests on the trigger before the panel opens, in
50161
+ * milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
50162
+ * way somewhere else opens nothing.
49946
50163
  * - `open-on`/`openOn`: Whether hovering over the trigger opens the panel (`hover`), or only a press
49947
50164
  * does (`click`).
49948
50165
  *
@@ -49950,6 +50167,9 @@ export type CustomElements = {
49950
50167
  * the trigger, and it is the default because that is what a navigation bar
49951
50168
  * does. `click` is for a trigger that does something else as well, or a panel
49952
50169
  * heavy enough that opening it on the way past is rude.
50170
+ * - `placement`: The side of the trigger a card panel opens on, when there is room. It
50171
+ * moves if that side does not fit. A band ignores it, since a band spans the
50172
+ * page under its bar.
49953
50173
  * - `variant`: Whether the panel is a card under the trigger or a band across the page.
49954
50174
  *
49955
50175
  * The resting one is the card, hanging off the trigger and as wide as it
@@ -50057,6 +50277,7 @@ export type CustomElements = {
50057
50277
  *
50058
50278
  * These can be used to apply styling when a component is in a given state.
50059
50279
  *
50280
+ * - `current`: A link in the panel carries `aria-current="page"`, so the trigger can show the section you are in.
50060
50281
  * - `from-end`: The panel opened in place of one earlier in the bar, so it can enter from the end side.
50061
50282
  * - `from-start`: The panel opened in place of one later in the bar, so it can enter from the start side.
50062
50283
  * - `narrow`: The page is narrower than `band-below`, so the panel is shown as a band whatever its variant.
@@ -50099,6 +50320,9 @@ export type CustomElements = {
50099
50320
  * React Aria's menu item does with its description: a reader hears "Copy",
50100
50321
  * then "Copies the selection".
50101
50322
  *
50323
+ * A development build warns when a row has no words to be named by, such as a
50324
+ * row holding only an icon with no label.
50325
+ *
50102
50326
  * The check mark and the caret are the fallbacks of the `check` and `chevron`
50103
50327
  * slots, so a mark of your own replaces either by being slotted. Neither is
50104
50328
  * read as part of the row's name.
@@ -50243,12 +50467,15 @@ export type CustomElements = {
50243
50467
  * - `shortcut-key`: One key of the shortcut's chord, such as `Ctrl`.
50244
50468
  * - `shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
50245
50469
  * - `start`: The leading column that holds the `start` slot. It is always rendered.
50470
+ * - `surface`: The panel a submenu opens in beside the row, under the menu's `submenus="flyout"`.
50246
50471
  *
50247
50472
  * ## CSS States
50248
50473
  *
50249
50474
  * These can be used to apply styling when a component is in a given state.
50250
50475
  *
50251
50476
  * - `checked`: The row is checked.
50477
+ * - `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.
50478
+ * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
50252
50479
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
50253
50480
  */
50254
50481
  "helix-headless-menu-item": Partial<
@@ -50261,15 +50488,24 @@ export type CustomElements = {
50261
50488
  * ancestor with `overflow: hidden` does not clip it and it needs no `z-index`.
50262
50489
  *
50263
50490
  * Slot a `helix-button` or `helix-icon-button` as the trigger, and the menu
50264
- * tells it that it opens a menu and whether the menu is open. A plain
50265
- * `<button>` can only be told by writing attributes onto your markup, which
50266
- * the menu does not do, so give it `aria-haspopup="menu"` and set its
50267
- * `aria-expanded` from the `toggle` event.
50268
- *
50269
- * Submenus drill down. A submenu replaces the panel's content, and a back row
50270
- * returns to the previous page. One panel avoids the diagonal pointer path that
50271
- * side-by-side panels need, stays inside a narrow window, and works on touch
50272
- * screens, which have no hover.
50491
+ * tells it that it opens a menu and whether the menu is open, inside its own
50492
+ * shadow root. On a plain element, such as a `<button>`, the menu writes
50493
+ * `aria-haspopup="menu"` and `aria-expanded`, from a frame after its own first
50494
+ * render, so a server's markup is never changed while a framework hydrates it.
50495
+ * It never writes `aria-expanded` where you wrote it yourself.
50496
+ *
50497
+ * Submenus drill down by default. A submenu replaces the panel's content, and a
50498
+ * back row returns to the previous page. One panel stays inside a narrow
50499
+ * window, and works on touch screens, which have no hover.
50500
+ *
50501
+ * **`submenus="flyout"` opens each submenu in a panel of its own beside its
50502
+ * row**, as React Aria's `SubmenuTrigger` and Radix's `Sub` do. Resting the
50503
+ * pointer on the row opens it, and a pointer crossing toward the open panel
50504
+ * over the rows between keeps it open, as Radix's grace area does. Right Arrow
50505
+ * opens a row's submenu on its first row, and Left Arrow or Escape closes it
50506
+ * and returns focus to the row, the two arrows swapping on a right-to-left
50507
+ * page. The row says `aria-expanded`, and the panel is a `menu` named by the
50508
+ * row.
50273
50509
  *
50274
50510
  * The root holds which page is open, because only one page shows at a time. It
50275
50511
  * sets this on items as a property, never as an attribute. An attribute written
@@ -50297,7 +50533,14 @@ export type CustomElements = {
50297
50533
  * right-click, a long press, Shift+F10 or the menu key over the area opens it
50298
50534
  * at the pointer, or at the area's corner from the keyboard, as Radix's context
50299
50535
  * menu does. A press on the area does not open it, and closing it returns focus
50300
- * to where it was.
50536
+ * to where it was. A touch or a pen held still on the area opens it too, on
50537
+ * every browser, since iOS sends no `contextmenu` for one.
50538
+ *
50539
+ * **A trigger with its own action.** With `open-on="long-press"`, a press on
50540
+ * the trigger is the trigger's own, and a press held for half a second opens
50541
+ * the menu, as React Aria's `trigger="longPress"` does. Alt+Down or Alt+Up
50542
+ * opens it from the keyboard, and the trigger is described by
50543
+ * `long-press-label`, which says so.
50301
50544
  *
50302
50545
  * ## Attributes & Properties
50303
50546
  *
@@ -50311,10 +50554,17 @@ export type CustomElements = {
50311
50554
  * Empty by default, which names the surface by its trigger, so a menu opened
50312
50555
  * from "Actions" is announced as "Actions". An `aria-label` or
50313
50556
  * `aria-labelledby` on the host names it too, and wins over both.
50557
+ * - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
50558
+ * to open the menu. Translate it with the rest of your interface.
50314
50559
  * - `offset`: Space between the trigger and the surface, in pixels.
50560
+ * - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
50561
+ * trigger's own action and opens the menu on a press held for half a second,
50562
+ * or on Alt+Down or Alt+Up.
50315
50563
  * - `placement`: The side the menu opens on, when there is room.
50316
50564
  *
50317
50565
  * It moves if that side does not fit.
50566
+ * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
50567
+ * a way back. `flyout` opens it in a panel of its own beside its row.
50318
50568
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
50319
50569
  * - `loading`: Whether the rows are still loading.
50320
50570
  *
@@ -51109,6 +51359,11 @@ export type CustomElements = {
51109
51359
  * | Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |
51110
51360
  * | Tab | Moves through the controls in a row, and on out of the feed. |
51111
51361
  *
51362
+ * **A notification that arrives says so.** Unread rows added above the rows
51363
+ * there were are counted in the live region,
51364
+ * "1 new notification", in `arrived-label`. Rows that arrive while `loading`
51365
+ * is set say nothing, so set it while a page is on its way.
51366
+ *
51112
51367
  * **`load-more` adds a button after the list** that sends `helix-load-more`,
51113
51368
  * for a feed that holds one page of a longer list. Append the next page, set
51114
51369
  * `loading` while it is on its way, and take `load-more` off once there is
@@ -51124,6 +51379,8 @@ export type CustomElements = {
51124
51379
  *
51125
51380
  * Component attributes and properties that can be applied to the element or by using JavaScript.
51126
51381
  *
51382
+ * - `arrived-label`/`arrivedLabel`: What the feed says when unread notifications arrive, with `{count}` the
51383
+ * number of them. Empty it to say nothing.
51127
51384
  * - `fallback-label`/`fallbackLabel`: The region's name where `label` is empty.
51128
51385
  * - `label`: The feed's name, read by screen readers.
51129
51386
  * - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
@@ -59912,6 +60169,9 @@ export type CustomElements = {
59912
60169
  * control. While it moves, the distance is on the `item` part as
59913
60170
  * `--toast-swipe-x`.
59914
60171
  *
60172
+ * **Escape dismisses the message holding focus**, through the same
60173
+ * `helix-dismiss`, and focus moves to the next message.
60174
+ *
59915
60175
  * **Messages are inverted by default.** The item flips `color-scheme`, so a new
59916
60176
  * message stands out from the page without using a color that carries meaning.
59917
60177
  *
@@ -59949,6 +60209,9 @@ export type CustomElements = {
59949
60209
  * A word property: register it for a locale under the host's key. A family
59950
60210
  * that names the control otherwise, such as Tag's `Remove {label}`,
59951
60211
  * declares its own English with `@words` above the override.
60212
+ * - `waiting`: Whether the region holds the message back, because more messages are
60213
+ * showing than its `max-visible`. The region sets it. A waiting message is
60214
+ * hidden, its timer has not started, and it is said once it shows. (property only)
59952
60215
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
59953
60216
  *
59954
60217
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -60026,6 +60289,9 @@ export type CustomElements = {
60026
60289
  *
60027
60290
  * These can be used to apply styling when a component is in a given state.
60028
60291
  *
60292
+ * - `closed`: The message has been dismissed and is hidden, or leaving.
60293
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
60294
+ * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
60029
60295
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60030
60296
  */
60031
60297
  "helix-headless-toast-item": Partial<
@@ -60078,6 +60344,19 @@ export type CustomElements = {
60078
60344
  * message, then the one before it, then back to where it was before it entered
60079
60345
  * the stack.
60080
60346
  *
60347
+ * **`max-visible` limits how many messages show at once**, as Zag's `max`
60348
+ * does. The messages after that many, in document order, wait: each is hidden,
60349
+ * its timer has not started, and the region says it once it shows, when a
60350
+ * message before it goes. A waiting message has `:state(waiting)`.
60351
+ *
60352
+ * **Keyboard.**
60353
+ *
60354
+ * | Key | What it does |
60355
+ * |---|---|
60356
+ * | F8, or your `hotkey` | Moves focus to the first control in the stack, and back to where it was when pressed in the stack. |
60357
+ * | Tab, Shift+Tab | Moves between the controls of the messages. |
60358
+ * | Escape | Dismisses the message holding focus. Focus moves to the next message, then the one before it, then back to where it was. |
60359
+ *
60081
60360
  * ## Attributes & Properties
60082
60361
  *
60083
60362
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -60088,6 +60367,9 @@ export type CustomElements = {
60088
60367
  * Empty turns it off.
60089
60368
  * - `label`: Accessible name for the region, with `{hotkey}` filled in. Translate it with
60090
60369
  * the rest of your interface.
60370
+ * - `max-visible`/`maxVisible`: How many messages show at once. The messages after that many wait, hidden
60371
+ * and with their timers stopped, until a message before them goes. Unset,
60372
+ * every message shows.
60091
60373
  * - `placement`: Which corner or edge the stack sits at.
60092
60374
  *
60093
60375
  * Named here rather than on each message, because where a page puts its
@@ -62020,6 +62302,7 @@ export type CustomElements = {
62020
62302
  * - `entry-shortcut-key`: One key of an entry's shortcut chord, inside `entry-shortcut`. The playlist's entries set none.
62021
62303
  * - `entry-shortcut-separator`: The `+` between two keys of an entry's shortcut, where the platform writes one.
62022
62304
  * - `entry-start`: The column at the start of an entry. It is a slot and is always present.
62305
+ * - `entry-surface`: The panel an entry's submenu opens in beside it. The playlist's entries have none.
62023
62306
  * - `menu`: The menu that holds the entries.
62024
62307
  * - `menu-back`: The button that goes back from a submenu.
62025
62308
  * - `menu-back-mark`: The icon on a submenu's back button.
@@ -62584,6 +62867,7 @@ export type CustomElements = {
62584
62867
  * - `entry-shortcut-key`: One key of a row's shortcut chord, inside `entry-shortcut`. The player's rows set none.
62585
62868
  * - `entry-shortcut-separator`: The `+` between two keys of a row's shortcut, where the platform writes one.
62586
62869
  * - `entry-start`: The leading column that holds the `start` slot. It is always rendered.
62870
+ * - `entry-surface`: The panel a row's submenu opens in beside it. The player's rows have none.
62587
62871
  * - `failure`: The message shown when the source cannot be played.
62588
62872
  * - `forward`: The button that skips forward ten seconds.
62589
62873
  * - `fullscreen`: The button that enters and leaves fullscreen.
@@ -71785,6 +72069,16 @@ export type CustomElementsSolidJs = {
71785
72069
  * `aria-haspopup`, the same way `Menu` marks a row with a submenu. The server
71786
72070
  * render leaves both out, because the server cannot see the children.
71787
72071
  *
72072
+ * **A row with an `href` is a link.** The row itself renders as an `<a>`
72073
+ * carrying `menuitem`, as `Menu.Item` does, so a middle click, a modified
72074
+ * click and the status bar keep working. Enter follows it, and Space does too.
72075
+ * Choosing it fires `helix-select` first: cancel the event and the link is not
72076
+ * followed, so a router can take the navigation. A row that opens a page, or a
72077
+ * disabled row, renders no link.
72078
+ *
72079
+ * A development build warns when a row has no words to be named by, such as a
72080
+ * row holding only an icon with no label.
72081
+ *
71788
72082
  * The row is named by its label alone. Words in `description`, a line under
71789
72083
  * the label, and in `end` describe it instead, through `aria-describedby`, as
71790
72084
  * `Menu.Item` does: a reader hears "Theme", then "Dark".
@@ -71794,6 +72088,12 @@ export type CustomElementsSolidJs = {
71794
72088
  * Component attributes and properties that can be applied to the element or by using JavaScript.
71795
72089
  *
71796
72090
  * - `disabled`: Whether the row can be reached at all.
72091
+ * - `download`: Whether the link downloads the file when the row is chosen. Only
72092
+ * meaningful beside an `href`, and only for a file served from this origin.
72093
+ * - `href`: The URL the row links to. Setting it renders the row as a link, unless the
72094
+ * row opens a page or is disabled.
72095
+ * - `rel`: The link's `rel`. Set it whenever you set `target="_blank"`.
72096
+ * - `target`: Where the link opens, for rows that should open outside the current page.
71797
72097
  * - `value`: Identifies the row to your event listeners.
71798
72098
  * - `focusable`: Whether this row holds the region's tab stop. Set by the drill-down.
71799
72099
  *
@@ -71867,7 +72167,7 @@ export type CustomElementsSolidJs = {
71867
72167
  *
71868
72168
  * Custom selectors for styling elements within the component.
71869
72169
  *
71870
- * - `item`: The row itself.
72170
+ * - `item`: The row itself, which is an `<a>` where `href` is set.
71871
72171
  * - `label`: The row's label.
71872
72172
  * - `mark`: The caret at the end of a row that opens a page, after the `end` slot. The caret points, so a stylesheet mirrors it in a right-to-left document.
71873
72173
  *
@@ -71900,6 +72200,11 @@ export type CustomElementsSolidJs = {
71900
72200
  * and reads the rest from the DOM. The behavior lives in `DrilldownController`,
71901
72201
  * which `Menu` shares.
71902
72202
  *
72203
+ * **`page` is the page showing**, as the `value` of the row that opens it,
72204
+ * and empty on the top page. Set it to show a page, such as one a link to a
72205
+ * settings screen names. A reader's move updates it, and `helix-navigate`
72206
+ * comes first, so you can refuse the move or take it yourself.
72207
+ *
71903
72208
  * After each move the host carries `data-direction`, `forward` into a page or
71904
72209
  * `back` out of one, and records `:state(forward)` or `:state(back)`, so a
71905
72210
  * stylesheet can slide the new page in from the side the reader is going. Both
@@ -71907,13 +72212,25 @@ export type CustomElementsSolidJs = {
71907
72212
  * page, two moves the same way included. The styled tier slides the page and
71908
72213
  * swaps it at once under `prefers-reduced-motion`.
71909
72214
  *
71910
- * Keys, on a row: Up and Down Arrow move between the rows, Home and End go to
71911
- * the first and the last, and a typed letter moves to the next row whose name
71912
- * starts with it. Enter, Space, or Right Arrow opens a row's page, and Left
71913
- * Arrow or Escape goes back, the two arrows swapping on a right-to-left page.
72215
+ * **Keyboard.** The drilldown is one tab stop, on the row last focused.
72216
+ *
72217
+ * | Key | What it does |
72218
+ * |---|---|
72219
+ * | Down Arrow, Up Arrow | Moves to the next or the previous row. |
72220
+ * | Home, End | Moves to the first or the last row. |
72221
+ * | A letter | Moves to the next row whose name starts with it. |
72222
+ * | Enter, Space | Chooses the row: opens its page, follows its link, or sends `helix-select`. |
72223
+ * | Right Arrow | Opens the row's page. Left Arrow on a right-to-left page. |
72224
+ * | Left Arrow, Escape | Goes back one page, with focus on the row that opened it. Right Arrow on a right-to-left page. |
71914
72225
  *
71915
72226
  * The rows of the page showing are a `menu`, named by `label` on the top page
71916
- * and by the page's title below it. The back button and the title sit above
72227
+ * and by the page's title below it.
72228
+ *
72229
+ * **`navigation` makes it a site's navigation.** The host is a `navigation`
72230
+ * landmark named by `label`, each page is a list, and each row is a list item
72231
+ * holding a link or a button, as the APG's disclosure navigation is built,
72232
+ * so a reader meets places to go in place of a menu of commands. The keys stay
72233
+ * the same. The back button and the title sit above
71917
72234
  * the menu. Disabled rows stay reachable with the arrow keys, and typing a
71918
72235
  * letter moves to the next row whose name starts with it.
71919
72236
  *
@@ -71927,6 +72244,12 @@ export type CustomElementsSolidJs = {
71927
72244
  * An `aria-label` or `aria-labelledby` on the host names the top page too,
71928
72245
  * and wins over this.
71929
72246
  * - `back-label`/`backLabel`: The text of the back button.
72247
+ * - `navigation`: Whether the drilldown is a site's navigation: a `navigation` landmark
72248
+ * named by `label`, whose pages are lists of links. Without it, each page is
72249
+ * a `menu`.
72250
+ * - `page`: The page showing, as the `value` of the row that opens it. Empty is the
72251
+ * top page. Setting it shows that page, and a value no row with a page has
72252
+ * shows the top page.
71930
72253
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
71931
72254
  * - `loading`: Whether the rows are still loading.
71932
72255
  *
@@ -71959,6 +72282,7 @@ export type CustomElementsSolidJs = {
71959
72282
  *
71960
72283
  * Events that will be emitted by the component.
71961
72284
  *
72285
+ * - `helix-navigate`: Fired before a reader moves into a page or back out of one. `detail.value` is the `value` of the row whose page is about to show, empty for the top page. Cancelable: cancel it to stay on the page showing.
71962
72286
  * - `helix-select`: Fired when a row with no page is chosen. Cancelable: canceling it stops the change and leaves the decision to you.
71963
72287
  *
71964
72288
  * ## Slots
@@ -72825,6 +73149,7 @@ export type CustomElementsSolidJs = {
72825
73149
  * - `entry-shortcut-key`: One key of the shortcut's chord.
72826
73150
  * - `entry-shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
72827
73151
  * - `entry-start`: The leading column.
73152
+ * - `entry-surface`: The panel a row's submenu opens in beside it. The filter menu's rows have none.
72828
73153
  * - `menu`: The menu the fields are offered in.
72829
73154
  * - `menu-back`: The button that goes back from a field's page.
72830
73155
  * - `menu-back-mark`: The icon on the back button.
@@ -78039,7 +78364,10 @@ export type CustomElementsSolidJs = {
78039
78364
  *
78040
78365
  * It opens on hover by default, and a press always opens it too. `open-on` sets
78041
78366
  * which. Hover is the default because in a navigation bar people expect to move
78042
- * along the row and see each section.
78367
+ * along the row and see each section. A pointer resting on the trigger opens
78368
+ * the panel after `open-delay`, and leaving closes it after `close-delay`. Moving
78369
+ * from one open panel's trigger to another's opens the next at once, as Radix's
78370
+ * `skipDelayDuration` does.
78043
78371
  *
78044
78372
  * When one panel opens in place of another, each says which way the reader
78045
78373
  * moved, as Radix's `data-motion` does. Moving toward the end of the bar, the
@@ -78057,6 +78385,10 @@ export type CustomElementsSolidJs = {
78057
78385
  * navigation menu publishes the same pair from its shared viewport, so a
78058
78386
  * stylesheet can grow or shrink one panel into the next.
78059
78387
  *
78388
+ * While a link in the panel carries `aria-current="page"`, the host has
78389
+ * `:state(current)`, so the trigger of the section holding the page you are
78390
+ * on can say so, as Radix's navigation menu marks its active link.
78391
+ *
78060
78392
  * The panel's default slot is the `columns` part and draws no box, so a sheet
78061
78393
  * can give the columns one of their own. While a panel is open, an
78062
78394
  * `indicator` slot is rendered beside its trigger, as Radix's indicator
@@ -78073,6 +78405,12 @@ export type CustomElementsSolidJs = {
78073
78405
  * way out. The trigger says `aria-expanded`, and the panel is a group named by
78074
78406
  * `label`.
78075
78407
  *
78408
+ * A Helix trigger, such as `helix-button`, is told whether the panel is open
78409
+ * inside its own shadow root. On a plain element, such as a `<button>`, the
78410
+ * megamenu writes `aria-expanded`, from a frame after its own first render, so
78411
+ * a server's markup is never changed while a framework hydrates it. It never
78412
+ * writes it where you wrote `aria-expanded` yourself.
78413
+ *
78076
78414
  * ## Attributes & Properties
78077
78415
  *
78078
78416
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -78101,7 +78439,13 @@ export type CustomElementsSolidJs = {
78101
78439
  * narrow exception the server specs describe covers a mirror that can only
78102
78440
  * become true long after hydration, and a viewport measured before the first
78103
78441
  * paint is the opposite case. See `MixinControllerOpen` on `open`.
78442
+ * - `close-delay`/`closeDelay`: How long a pointer leaving the trigger and the panel waits before the panel
78443
+ * closes, in milliseconds. The pointer needs the time to cross from the
78444
+ * trigger to the panel.
78104
78445
  * - `label`: The section's name, used for the default trigger and the panel.
78446
+ * - `open-delay`/`openDelay`: How long a pointer rests on the trigger before the panel opens, in
78447
+ * milliseconds, under `open-on="hover"`. A pointer crossing the bar on its
78448
+ * way somewhere else opens nothing.
78105
78449
  * - `open-on`/`openOn`: Whether hovering over the trigger opens the panel (`hover`), or only a press
78106
78450
  * does (`click`).
78107
78451
  *
@@ -78109,6 +78453,9 @@ export type CustomElementsSolidJs = {
78109
78453
  * the trigger, and it is the default because that is what a navigation bar
78110
78454
  * does. `click` is for a trigger that does something else as well, or a panel
78111
78455
  * heavy enough that opening it on the way past is rude.
78456
+ * - `placement`: The side of the trigger a card panel opens on, when there is room. It
78457
+ * moves if that side does not fit. A band ignores it, since a band spans the
78458
+ * page under its bar.
78112
78459
  * - `variant`: Whether the panel is a card under the trigger or a band across the page.
78113
78460
  *
78114
78461
  * The resting one is the card, hanging off the trigger and as wide as it
@@ -78216,6 +78563,7 @@ export type CustomElementsSolidJs = {
78216
78563
  *
78217
78564
  * These can be used to apply styling when a component is in a given state.
78218
78565
  *
78566
+ * - `current`: A link in the panel carries `aria-current="page"`, so the trigger can show the section you are in.
78219
78567
  * - `from-end`: The panel opened in place of one earlier in the bar, so it can enter from the end side.
78220
78568
  * - `from-start`: The panel opened in place of one later in the bar, so it can enter from the start side.
78221
78569
  * - `narrow`: The page is narrower than `band-below`, so the panel is shown as a band whatever its variant.
@@ -78261,6 +78609,9 @@ export type CustomElementsSolidJs = {
78261
78609
  * React Aria's menu item does with its description: a reader hears "Copy",
78262
78610
  * then "Copies the selection".
78263
78611
  *
78612
+ * A development build warns when a row has no words to be named by, such as a
78613
+ * row holding only an icon with no label.
78614
+ *
78264
78615
  * The check mark and the caret are the fallbacks of the `check` and `chevron`
78265
78616
  * slots, so a mark of your own replaces either by being slotted. Neither is
78266
78617
  * read as part of the row's name.
@@ -78405,12 +78756,15 @@ export type CustomElementsSolidJs = {
78405
78756
  * - `shortcut-key`: One key of the shortcut's chord, such as `Ctrl`.
78406
78757
  * - `shortcut-separator`: The `+` between two keys of the shortcut, where the platform writes one.
78407
78758
  * - `start`: The leading column that holds the `start` slot. It is always rendered.
78759
+ * - `surface`: The panel a submenu opens in beside the row, under the menu's `submenus="flyout"`.
78408
78760
  *
78409
78761
  * ## CSS States
78410
78762
  *
78411
78763
  * These can be used to apply styling when a component is in a given state.
78412
78764
  *
78413
78765
  * - `checked`: The row is checked.
78766
+ * - `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.
78767
+ * - `submenu-start`: Under `submenus="flyout"`, a row in this row's submenu has content before its label, so the submenu keeps its leading column.
78414
78768
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
78415
78769
  */
78416
78770
  "helix-headless-menu-item": Partial<
@@ -78426,15 +78780,24 @@ export type CustomElementsSolidJs = {
78426
78780
  * ancestor with `overflow: hidden` does not clip it and it needs no `z-index`.
78427
78781
  *
78428
78782
  * Slot a `helix-button` or `helix-icon-button` as the trigger, and the menu
78429
- * tells it that it opens a menu and whether the menu is open. A plain
78430
- * `<button>` can only be told by writing attributes onto your markup, which
78431
- * the menu does not do, so give it `aria-haspopup="menu"` and set its
78432
- * `aria-expanded` from the `toggle` event.
78433
- *
78434
- * Submenus drill down. A submenu replaces the panel's content, and a back row
78435
- * returns to the previous page. One panel avoids the diagonal pointer path that
78436
- * side-by-side panels need, stays inside a narrow window, and works on touch
78437
- * screens, which have no hover.
78783
+ * tells it that it opens a menu and whether the menu is open, inside its own
78784
+ * shadow root. On a plain element, such as a `<button>`, the menu writes
78785
+ * `aria-haspopup="menu"` and `aria-expanded`, from a frame after its own first
78786
+ * render, so a server's markup is never changed while a framework hydrates it.
78787
+ * It never writes `aria-expanded` where you wrote it yourself.
78788
+ *
78789
+ * Submenus drill down by default. A submenu replaces the panel's content, and a
78790
+ * back row returns to the previous page. One panel stays inside a narrow
78791
+ * window, and works on touch screens, which have no hover.
78792
+ *
78793
+ * **`submenus="flyout"` opens each submenu in a panel of its own beside its
78794
+ * row**, as React Aria's `SubmenuTrigger` and Radix's `Sub` do. Resting the
78795
+ * pointer on the row opens it, and a pointer crossing toward the open panel
78796
+ * over the rows between keeps it open, as Radix's grace area does. Right Arrow
78797
+ * opens a row's submenu on its first row, and Left Arrow or Escape closes it
78798
+ * and returns focus to the row, the two arrows swapping on a right-to-left
78799
+ * page. The row says `aria-expanded`, and the panel is a `menu` named by the
78800
+ * row.
78438
78801
  *
78439
78802
  * The root holds which page is open, because only one page shows at a time. It
78440
78803
  * sets this on items as a property, never as an attribute. An attribute written
@@ -78462,7 +78825,14 @@ export type CustomElementsSolidJs = {
78462
78825
  * right-click, a long press, Shift+F10 or the menu key over the area opens it
78463
78826
  * at the pointer, or at the area's corner from the keyboard, as Radix's context
78464
78827
  * menu does. A press on the area does not open it, and closing it returns focus
78465
- * to where it was.
78828
+ * to where it was. A touch or a pen held still on the area opens it too, on
78829
+ * every browser, since iOS sends no `contextmenu` for one.
78830
+ *
78831
+ * **A trigger with its own action.** With `open-on="long-press"`, a press on
78832
+ * the trigger is the trigger's own, and a press held for half a second opens
78833
+ * the menu, as React Aria's `trigger="longPress"` does. Alt+Down or Alt+Up
78834
+ * opens it from the keyboard, and the trigger is described by
78835
+ * `long-press-label`, which says so.
78466
78836
  *
78467
78837
  * ## Attributes & Properties
78468
78838
  *
@@ -78476,10 +78846,17 @@ export type CustomElementsSolidJs = {
78476
78846
  * Empty by default, which names the surface by its trigger, so a menu opened
78477
78847
  * from "Actions" is announced as "Actions". An `aria-label` or
78478
78848
  * `aria-labelledby` on the host names it too, and wins over both.
78849
+ * - `long-press-label`/`longPressLabel`: The description a trigger gives under `open-on="long-press"`, saying how
78850
+ * to open the menu. Translate it with the rest of your interface.
78479
78851
  * - `offset`: Space between the trigger and the surface, in pixels.
78852
+ * - `open-on`/`openOn`: What opens the menu from its trigger. `long-press` leaves a press to the
78853
+ * trigger's own action and opens the menu on a press held for half a second,
78854
+ * or on Alt+Down or Alt+Up.
78480
78855
  * - `placement`: The side the menu opens on, when there is room.
78481
78856
  *
78482
78857
  * It moves if that side does not fit.
78858
+ * - `submenus`: How a submenu opens. `drill` shows it in place of the page showing, with
78859
+ * a way back. `flyout` opens it in a panel of its own beside its row.
78483
78860
  * - `empty-text`/`emptyText`: The text shown and announced when there are no rows and none are loading.
78484
78861
  * - `loading`: Whether the rows are still loading.
78485
78862
  *
@@ -79284,6 +79661,11 @@ export type CustomElementsSolidJs = {
79284
79661
  * | Control+Home | From anywhere in the feed, moves to the nearest control before it on the page. |
79285
79662
  * | Tab | Moves through the controls in a row, and on out of the feed. |
79286
79663
  *
79664
+ * **A notification that arrives says so.** Unread rows added above the rows
79665
+ * there were are counted in the live region,
79666
+ * "1 new notification", in `arrived-label`. Rows that arrive while `loading`
79667
+ * is set say nothing, so set it while a page is on its way.
79668
+ *
79287
79669
  * **`load-more` adds a button after the list** that sends `helix-load-more`,
79288
79670
  * for a feed that holds one page of a longer list. Append the next page, set
79289
79671
  * `loading` while it is on its way, and take `load-more` off once there is
@@ -79299,6 +79681,8 @@ export type CustomElementsSolidJs = {
79299
79681
  *
79300
79682
  * Component attributes and properties that can be applied to the element or by using JavaScript.
79301
79683
  *
79684
+ * - `arrived-label`/`arrivedLabel`: What the feed says when unread notifications arrive, with `{count}` the
79685
+ * number of them. Empty it to say nothing.
79302
79686
  * - `fallback-label`/`fallbackLabel`: The region's name where `label` is empty.
79303
79687
  * - `label`: The feed's name, read by screen readers.
79304
79688
  * - `load-error`/`loadError`: What the feed says when a page of it could not be loaded, such as after a
@@ -88200,6 +88584,9 @@ export type CustomElementsSolidJs = {
88200
88584
  * control. While it moves, the distance is on the `item` part as
88201
88585
  * `--toast-swipe-x`.
88202
88586
  *
88587
+ * **Escape dismisses the message holding focus**, through the same
88588
+ * `helix-dismiss`, and focus moves to the next message.
88589
+ *
88203
88590
  * **Messages are inverted by default.** The item flips `color-scheme`, so a new
88204
88591
  * message stands out from the page without using a color that carries meaning.
88205
88592
  *
@@ -88237,6 +88624,9 @@ export type CustomElementsSolidJs = {
88237
88624
  * A word property: register it for a locale under the host's key. A family
88238
88625
  * that names the control otherwise, such as Tag's `Remove {label}`,
88239
88626
  * declares its own English with `@words` above the override.
88627
+ * - `waiting`: Whether the region holds the message back, because more messages are
88628
+ * showing than its `max-visible`. The region sets it. A waiting message is
88629
+ * hidden, its timer has not started, and it is said once it shows. (property only)
88240
88630
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
88241
88631
  *
88242
88632
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -88314,6 +88704,9 @@ export type CustomElementsSolidJs = {
88314
88704
  *
88315
88705
  * These can be used to apply styling when a component is in a given state.
88316
88706
  *
88707
+ * - `closed`: The message has been dismissed and is hidden, or leaving.
88708
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
88709
+ * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
88317
88710
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88318
88711
  */
88319
88712
  "helix-headless-toast-item": Partial<
@@ -88369,6 +88762,19 @@ export type CustomElementsSolidJs = {
88369
88762
  * message, then the one before it, then back to where it was before it entered
88370
88763
  * the stack.
88371
88764
  *
88765
+ * **`max-visible` limits how many messages show at once**, as Zag's `max`
88766
+ * does. The messages after that many, in document order, wait: each is hidden,
88767
+ * its timer has not started, and the region says it once it shows, when a
88768
+ * message before it goes. A waiting message has `:state(waiting)`.
88769
+ *
88770
+ * **Keyboard.**
88771
+ *
88772
+ * | Key | What it does |
88773
+ * |---|---|
88774
+ * | F8, or your `hotkey` | Moves focus to the first control in the stack, and back to where it was when pressed in the stack. |
88775
+ * | Tab, Shift+Tab | Moves between the controls of the messages. |
88776
+ * | Escape | Dismisses the message holding focus. Focus moves to the next message, then the one before it, then back to where it was. |
88777
+ *
88372
88778
  * ## Attributes & Properties
88373
88779
  *
88374
88780
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -88379,6 +88785,9 @@ export type CustomElementsSolidJs = {
88379
88785
  * Empty turns it off.
88380
88786
  * - `label`: Accessible name for the region, with `{hotkey}` filled in. Translate it with
88381
88787
  * the rest of your interface.
88788
+ * - `max-visible`/`maxVisible`: How many messages show at once. The messages after that many wait, hidden
88789
+ * and with their timers stopped, until a message before them goes. Unset,
88790
+ * every message shows.
88382
88791
  * - `placement`: Which corner or edge the stack sits at.
88383
88792
  *
88384
88793
  * Named here rather than on each message, because where a page puts its
@@ -90340,6 +90749,7 @@ export type CustomElementsSolidJs = {
90340
90749
  * - `entry-shortcut-key`: One key of an entry's shortcut chord, inside `entry-shortcut`. The playlist's entries set none.
90341
90750
  * - `entry-shortcut-separator`: The `+` between two keys of an entry's shortcut, where the platform writes one.
90342
90751
  * - `entry-start`: The column at the start of an entry. It is a slot and is always present.
90752
+ * - `entry-surface`: The panel an entry's submenu opens in beside it. The playlist's entries have none.
90343
90753
  * - `menu`: The menu that holds the entries.
90344
90754
  * - `menu-back`: The button that goes back from a submenu.
90345
90755
  * - `menu-back-mark`: The icon on a submenu's back button.
@@ -90906,6 +91316,7 @@ export type CustomElementsSolidJs = {
90906
91316
  * - `entry-shortcut-key`: One key of a row's shortcut chord, inside `entry-shortcut`. The player's rows set none.
90907
91317
  * - `entry-shortcut-separator`: The `+` between two keys of a row's shortcut, where the platform writes one.
90908
91318
  * - `entry-start`: The leading column that holds the `start` slot. It is always rendered.
91319
+ * - `entry-surface`: The panel a row's submenu opens in beside it. The player's rows have none.
90909
91320
  * - `failure`: The message shown when the source cannot be played.
90910
91321
  * - `forward`: The button that skips forward ten seconds.
90911
91322
  * - `fullscreen`: The button that enters and leaves fullscreen.