@fusion.dev/helix-headless 0.158.0 → 0.159.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/custom-elements.json +674 -35
  2. package/dist/app-header/root/app-header-root.d.ts +59 -12
  3. package/dist/app-header/root/app-header-root.js +68 -29
  4. package/dist/button/root/button-root.d.ts +8 -0
  5. package/dist/button/root/button-root.js +4 -0
  6. package/dist/button-group/root/button-group-root.d.ts +20 -7
  7. package/dist/button-group/root/button-group-root.js +30 -5
  8. package/dist/element-events.generated.js +7 -1
  9. package/dist/lightbox/item/lightbox-item.d.ts +7 -1
  10. package/dist/lightbox/item/lightbox-item.js +15 -2
  11. package/dist/lightbox/root/lightbox-root.d.ts +8 -4
  12. package/dist/lightbox/root/lightbox-root.js +9 -1
  13. package/dist/lightbox/zoom-controller.d.ts +13 -4
  14. package/dist/lightbox/zoom-controller.js +17 -0
  15. package/dist/steps/root/steps-root.js +8 -6
  16. package/dist/steps/step/step.d.ts +9 -0
  17. package/dist/steps/step/step.js +19 -2
  18. package/dist/tabs/panel/tab-panel.d.ts +22 -1
  19. package/dist/tabs/panel/tab-panel.js +22 -1
  20. package/dist/tabs/root/tabs-root.d.ts +21 -5
  21. package/dist/tabs/root/tabs-root.js +24 -13
  22. package/dist/tabs/tab/tab.d.ts +4 -2
  23. package/dist/tabs/tab/tab.js +3 -1
  24. package/dist/toast/item/toast-item.d.ts +27 -8
  25. package/dist/toast/item/toast-item.js +47 -11
  26. package/dist/toast/root/toast-root.d.ts +24 -1
  27. package/dist/toast/root/toast-root.js +54 -0
  28. package/dist/tour/root/tour-root.d.ts +34 -0
  29. package/dist/tour/root/tour-root.js +92 -3
  30. package/dist/tour/stop/tour-stop.d.ts +33 -1
  31. package/dist/tour/stop/tour-stop.js +12 -1
  32. package/lint.json +1 -1
  33. package/package.json +5 -5
  34. package/types/jsx.d.ts +459 -62
  35. package/types/vue.d.ts +100 -14
package/types/jsx.d.ts CHANGED
@@ -936,9 +936,18 @@ export type HelixHeadlessAppHeaderElementEvent<E = Event> = TypedEvent<
936
936
  HelixHeadlessAppHeader,
937
937
  E
938
938
  >;
939
+ /** `helix-before-close` event type */
940
+ export type HelixHeadlessAppHeaderHelixBeforeCloseElementEvent =
941
+ HelixHeadlessAppHeaderElementEvent<HelixBeforeCloseEvent>;
942
+ /** `helix-before-open` event type */
943
+ export type HelixHeadlessAppHeaderHelixBeforeOpenElementEvent =
944
+ HelixHeadlessAppHeaderElementEvent<HelixBeforeOpenEvent>;
939
945
  /** `helix-scrolled` event type */
940
946
  export type HelixHeadlessAppHeaderHelixScrolledElementEvent =
941
947
  HelixHeadlessAppHeaderElementEvent<HelixScrolledEvent>;
948
+ /** `toggle` event type */
949
+ export type HelixHeadlessAppHeaderToggleElementEvent =
950
+ HelixHeadlessAppHeaderElementEvent<ToggleEvent>;
942
951
 
943
952
  export type HelixHeadlessAppHeaderProps = {
944
953
  /** Where the middle region sits in the bar.
@@ -988,11 +997,50 @@ page scrolls up. */
988
997
  /** The id of the element whose scrolling lifts the bar, for an app shell that
989
998
  scrolls a container instead of the window. Unset is the window. */
990
999
  scroller?: (HelixHeadlessAppHeader["scroller"]) | undefined;
1000
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1001
+ bar, after the trailing content, or with `start`, before the leading
1002
+ content.
1003
+
1004
+ Optional, so the resting bar writes no attribute onto the host. */
1005
+ "toggle-placement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1006
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1007
+ bar, after the trailing content, or with `start`, before the leading
1008
+ content.
1009
+
1010
+ Optional, so the resting bar writes no attribute onto the host. */
1011
+ togglePlacement?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1012
+ /** Whether the element starts open. Ignored once `open` is written. */
1013
+ "default-open"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1014
+ /** Whether the element starts open. Ignored once `open` is written. */
1015
+ defaultOpen?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1016
+ /** Whether the element is open.
1017
+
1018
+ One property, not two, so `dialog.open` answers the question anyone
1019
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
1020
+ same statement in markup.
1021
+
1022
+ **Not reflected, and that is required rather than tidy.** Reflection
1023
+ writes the resolved state back as an attribute, so an element that opened
1024
+ itself would put `open` on its own host: cloned, serialized for
1025
+ hydration, or diffed by a framework, it comes back holding whatever the
1026
+ last reader did rather than what the author wrote. `:state(open)` carries
1027
+ the resolved state for stylesheets, which is what the mirror is for. */
1028
+ open?: (HelixHeadlessAppHeader["open"]) | undefined;
991
1029
 
1030
+ /** The folded region is about to close. Cancelable: cancel it to keep it open. */
1031
+ "onhelix-before-close"?: ((
1032
+ e: HelixHeadlessAppHeaderHelixBeforeCloseElementEvent,
1033
+ ) => void) | undefined;
1034
+ /** The folded region is about to open. Cancelable: cancel it to keep it closed. */
1035
+ "onhelix-before-open"?: ((
1036
+ e: HelixHeadlessAppHeaderHelixBeforeOpenElementEvent,
1037
+ ) => void) | undefined;
992
1038
  /** Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener. */
993
1039
  "onhelix-scrolled"?: ((
994
1040
  e: HelixHeadlessAppHeaderHelixScrolledElementEvent,
995
1041
  ) => void) | undefined;
1042
+ /** The folded region opened or closed. The event carries `newState` and `oldState`. */
1043
+ ontoggle?: ((e: HelixHeadlessAppHeaderToggleElementEvent) => void) | undefined;
996
1044
  };
997
1045
 
998
1046
  export type HelixHeadlessAppHeaderSolidJsProps = {
@@ -1043,10 +1091,49 @@ page scrolls up. */
1043
1091
  /** The id of the element whose scrolling lifts the bar, for an app shell that
1044
1092
  scrolls a container instead of the window. Unset is the window. */
1045
1093
  "prop:scroller"?: (HelixHeadlessAppHeader["scroller"]) | undefined;
1094
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1095
+ bar, after the trailing content, or with `start`, before the leading
1096
+ content.
1097
+
1098
+ Optional, so the resting bar writes no attribute onto the host. */
1099
+ "attr:toggle-placement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1100
+ /** Where the toggle that opens a folded middle region sits: at the end of the
1101
+ bar, after the trailing content, or with `start`, before the leading
1102
+ content.
1103
+
1104
+ Optional, so the resting bar writes no attribute onto the host. */
1105
+ "prop:togglePlacement"?: (HelixHeadlessAppHeader["togglePlacement"]) | undefined;
1106
+ /** Whether the element starts open. Ignored once `open` is written. */
1107
+ "bool:default-open"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1108
+ /** Whether the element starts open. Ignored once `open` is written. */
1109
+ "prop:defaultOpen"?: (HelixHeadlessAppHeader["defaultOpen"]) | undefined;
1110
+ /** Whether the element is open.
1111
+
1112
+ One property, not two, so `dialog.open` answers the question anyone
1113
+ asking it meant. Writing always applies; `<helix-dialog open>` is the
1114
+ same statement in markup.
1115
+
1116
+ **Not reflected, and that is required rather than tidy.** Reflection
1117
+ writes the resolved state back as an attribute, so an element that opened
1118
+ itself would put `open` on its own host: cloned, serialized for
1119
+ hydration, or diffed by a framework, it comes back holding whatever the
1120
+ last reader did rather than what the author wrote. `:state(open)` carries
1121
+ the resolved state for stylesheets, which is what the mirror is for. */
1122
+ "prop:open"?: (HelixHeadlessAppHeader["open"]) | undefined;
1123
+ /** The folded region is about to close. Cancelable: cancel it to keep it open. */
1124
+ "on:helix-before-close"?: ((
1125
+ e: HelixHeadlessAppHeaderHelixBeforeCloseElementEvent,
1126
+ ) => void) | undefined;
1127
+ /** The folded region is about to open. Cancelable: cancel it to keep it closed. */
1128
+ "on:helix-before-open"?: ((
1129
+ e: HelixHeadlessAppHeaderHelixBeforeOpenElementEvent,
1130
+ ) => void) | undefined;
1046
1131
  /** Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener. */
1047
1132
  "on:helix-scrolled"?: ((
1048
1133
  e: HelixHeadlessAppHeaderHelixScrolledElementEvent,
1049
1134
  ) => void) | undefined;
1135
+ /** The folded region opened or closed. The event carries `newState` and `oldState`. */
1136
+ "on:toggle"?: ((e: HelixHeadlessAppHeaderToggleElementEvent) => void) | undefined;
1050
1137
 
1051
1138
  /** Set the innerHTML of the element */
1052
1139
  innerHTML?: (string) | undefined;
@@ -2317,6 +2404,14 @@ export type HelixHeadlessButtonGroupHelixBeforeChangeElementEvent =
2317
2404
  HelixHeadlessButtonGroupElementEvent<HelixBeforeChangeEvent>;
2318
2405
 
2319
2406
  export type HelixHeadlessButtonGroupProps = {
2407
+ /** Keeps at least one button pressed once one is, as React Aria's
2408
+ `disallowEmptySelection`: a press that would leave none pressed is
2409
+ refused. */
2410
+ "disallow-empty-selection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2411
+ /** Keeps at least one button pressed once one is, as React Aria's
2412
+ `disallowEmptySelection`: a press that would leave none pressed is
2413
+ refused. */
2414
+ disallowEmptySelection?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2320
2415
  /** The group's name, read by screen readers.
2321
2416
 
2322
2417
  On the host through internals, so an author's `aria-label` still overrides
@@ -2368,6 +2463,14 @@ not reflect, as a native control's `value` does not. */
2368
2463
  };
2369
2464
 
2370
2465
  export type HelixHeadlessButtonGroupSolidJsProps = {
2466
+ /** Keeps at least one button pressed once one is, as React Aria's
2467
+ `disallowEmptySelection`: a press that would leave none pressed is
2468
+ refused. */
2469
+ "bool:disallow-empty-selection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2470
+ /** Keeps at least one button pressed once one is, as React Aria's
2471
+ `disallowEmptySelection`: a press that would leave none pressed is
2472
+ refused. */
2473
+ "prop:disallowEmptySelection"?: (HelixHeadlessButtonGroup["disallowEmptySelection"]) | undefined;
2371
2474
  /** The group's name, read by screen readers.
2372
2475
 
2373
2476
  On the host through internals, so an author's `aria-label` still overrides
@@ -29059,7 +29162,19 @@ known by its place among the rows as written. */
29059
29162
  textContent?: (string | number) | undefined;
29060
29163
  };
29061
29164
 
29165
+ /** `HelixHeadlessTabPanel` component event */
29166
+ export type HelixHeadlessTabPanelElementEvent<E = Event> = TypedEvent<
29167
+ HelixHeadlessTabPanel,
29168
+ E
29169
+ >;
29170
+ /** `helix-load` event type */
29171
+ export type HelixHeadlessTabPanelHelixLoadElementEvent =
29172
+ HelixHeadlessTabPanelElementEvent<HelixLoadEvent>;
29173
+
29062
29174
  export type HelixHeadlessTabPanelProps = {
29175
+ /** Whether the panel's content waits in a `<template>` until the panel is
29176
+ first shown. */
29177
+ lazy?: (HelixHeadlessTabPanel["lazy"]) | undefined;
29063
29178
  /** Whether this panel is the visible one. */
29064
29179
  selected?: (HelixHeadlessTabPanel["selected"]) | undefined;
29065
29180
  /** Pairs the panel with the tab of the same value. */
@@ -29075,9 +29190,15 @@ written in, and the tab's control is inside the tab's shadow root, which no
29075
29190
  reference from the light DOM can reach. `aria-label` on a `tabpanel` is how
29076
29191
  the pattern names one anyway. */
29077
29192
  label?: (HelixHeadlessTabPanel["label"]) | undefined;
29193
+
29194
+ /** Fired the first time a `lazy` panel is shown, once its template's content is in. */
29195
+ "onhelix-load"?: ((e: HelixHeadlessTabPanelHelixLoadElementEvent) => void) | undefined;
29078
29196
  };
29079
29197
 
29080
29198
  export type HelixHeadlessTabPanelSolidJsProps = {
29199
+ /** Whether the panel's content waits in a `<template>` until the panel is
29200
+ first shown. */
29201
+ "prop:lazy"?: (HelixHeadlessTabPanel["lazy"]) | undefined;
29081
29202
  /** Whether this panel is the visible one. */
29082
29203
  "prop:selected"?: (HelixHeadlessTabPanel["selected"]) | undefined;
29083
29204
  /** Pairs the panel with the tab of the same value. */
@@ -29093,6 +29214,8 @@ written in, and the tab's control is inside the tab's shadow root, which no
29093
29214
  reference from the light DOM can reach. `aria-label` on a `tabpanel` is how
29094
29215
  the pattern names one anyway. */
29095
29216
  "prop:label"?: (HelixHeadlessTabPanel["label"]) | undefined;
29217
+ /** Fired the first time a `lazy` panel is shown, once its template's content is in. */
29218
+ "on:helix-load"?: ((e: HelixHeadlessTabPanelHelixLoadElementEvent) => void) | undefined;
29096
29219
 
29097
29220
  /** Set the innerHTML of the element */
29098
29221
  innerHTML?: (string) | undefined;
@@ -31716,6 +31839,12 @@ consumer's server markup does not have. A sheet carries the resting
31716
31839
  arrangement in its own `:host` rule and the selectors describe only the
31717
31840
  departures, which is what `orientation` does. */
31718
31841
  placement?: (HelixHeadlessToast["placement"]) | undefined;
31842
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
31843
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
31844
+ "swipe-direction"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31845
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
31846
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
31847
+ swipeDirection?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31719
31848
 
31720
31849
  /** A message is being dismissed, by its control or by its timer. The message sends it, and you can listen for it on the region. Cancelable: canceling it keeps the message. */
31721
31850
  "onhelix-dismiss"?: ((e: HelixHeadlessToastHelixDismissElementEvent) => void) | undefined;
@@ -31763,6 +31892,12 @@ consumer's server markup does not have. A sheet carries the resting
31763
31892
  arrangement in its own `:host` rule and the selectors describe only the
31764
31893
  departures, which is what `orientation` does. */
31765
31894
  "prop:placement"?: (HelixHeadlessToast["placement"]) | undefined;
31895
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
31896
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
31897
+ "attr:swipe-direction"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31898
+ /** The edge a touch or a pen swipes a message toward to dismiss it: `end`,
31899
+ the end of the line, or `start`, `top` or `bottom`. Unset is `end`. */
31900
+ "prop:swipeDirection"?: (HelixHeadlessToast["swipeDirection"]) | undefined;
31766
31901
  /** A message is being dismissed, by its control or by its timer. The message sends it, and you can listen for it on the region. Cancelable: canceling it keeps the message. */
31767
31902
  "on:helix-dismiss"?: ((e: HelixHeadlessToastHelixDismissElementEvent) => void) | undefined;
31768
31903
 
@@ -32679,6 +32814,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
32679
32814
  "next-label"?: (HelixHeadlessTour["nextLabel"]) | undefined;
32680
32815
  /** Label for the control that goes on. */
32681
32816
  nextLabel?: (HelixHeadlessTour["nextLabel"]) | undefined;
32817
+ /** What a press outside the current stop and its target does while the tour
32818
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
32819
+ Skip does, and `block` refuses the press. */
32820
+ "outside-press"?: (HelixHeadlessTour["outsidePress"]) | undefined;
32821
+ /** What a press outside the current stop and its target does while the tour
32822
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
32823
+ Skip does, and `block` refuses the press. */
32824
+ outsidePress?: (HelixHeadlessTour["outsidePress"]) | undefined;
32682
32825
  /** Draws each stop's place in the run in its panel, as well as saying it. */
32683
32826
  progress?: (HelixHeadlessTour["progress"]) | undefined;
32684
32827
  /** Each stop's place in the run, with `{index}` and `{count}` filled in and
@@ -32769,6 +32912,14 @@ The shape is `Carousel`'s, which is the nearest thing in the library: a
32769
32912
  "attr:next-label"?: (HelixHeadlessTour["nextLabel"]) | undefined;
32770
32913
  /** Label for the control that goes on. */
32771
32914
  "prop:nextLabel"?: (HelixHeadlessTour["nextLabel"]) | undefined;
32915
+ /** What a press outside the current stop and its target does while the tour
32916
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
32917
+ Skip does, and `block` refuses the press. */
32918
+ "attr:outside-press"?: (HelixHeadlessTour["outsidePress"]) | undefined;
32919
+ /** What a press outside the current stop and its target does while the tour
32920
+ runs. Unset, nothing: the page stays usable. `close` ends the tour, as
32921
+ Skip does, and `block` refuses the press. */
32922
+ "prop:outsidePress"?: (HelixHeadlessTour["outsidePress"]) | undefined;
32772
32923
  /** Draws each stop's place in the run in its panel, as well as saying it. */
32773
32924
  "prop:progress"?: (HelixHeadlessTour["progress"]) | undefined;
32774
32925
  /** Each stop's place in the run, with `{index}` and `{count}` filled in and
@@ -32887,6 +33038,9 @@ heading. */
32887
33038
  Reflected, because the styled tier places a dialog and a floating panel by
32888
33039
  it, and unset at rest, so no default is written onto the host. */
32889
33040
  type?: (HelixHeadlessTourStop["type"]) | undefined;
33041
+ /** Run as the tour reaches the stop, before it is shown: see the description
33042
+ above. A function, so it is set from script and has no attribute. */
33043
+ effect?: (HelixHeadlessTourStop["effect"]) | undefined;
32890
33044
 
32891
33045
  /** Fired when one of the stop's controls is pressed, to move the tour. */
32892
33046
  "onhelix-tour-ask"?: ((
@@ -32939,6 +33093,9 @@ heading. */
32939
33093
  Reflected, because the styled tier places a dialog and a floating panel by
32940
33094
  it, and unset at rest, so no default is written onto the host. */
32941
33095
  "prop:type"?: (HelixHeadlessTourStop["type"]) | undefined;
33096
+ /** Run as the tour reaches the stop, before it is shown: see the description
33097
+ above. A function, so it is set from script and has no attribute. */
33098
+ "prop:effect"?: (HelixHeadlessTourStop["effect"]) | undefined;
32942
33099
  /** Fired when one of the stop's controls is pressed, to move the tour. */
32943
33100
  "on:helix-tour-ask"?: ((
32944
33101
  e: HelixHeadlessTourStopHelixTourAskElementEvent,
@@ -35558,12 +35715,21 @@ export type CustomElements = {
35558
35715
  *
35559
35716
  * **Set `fold-below` to fold the middle region on a narrow screen.** Below that
35560
35717
  * many pixels of the bar's own width, the middle region is hidden behind a
35561
- * toggle at the end of the bar, named by `menu-label`. The toggle says whether
35562
- * the region is open with `aria-expanded`, and the region opens below the row.
35563
- * Escape closes it and puts focus back on the toggle. The custom state
35564
- * `folded` is on the host while the bar is that narrow, and `open` while the
35565
- * folded region is open. A server serves the bar unfolded, and the browser
35566
- * folds it once it has measured it.
35718
+ * toggle at the end of the bar, named by `menu-label`, or at its start with
35719
+ * `toggle-placement="start"`. The toggle says whether the region is open with
35720
+ * `aria-expanded`, and the region opens below the row. The region follows the
35721
+ * toggle's region in focus order, so Tab from the toggle at the end goes into
35722
+ * the open region. The custom state `folded` is on the host while the bar is
35723
+ * that narrow, and `open` while the folded region is open. A server serves the
35724
+ * bar unfolded, and the browser folds it once it has measured it.
35725
+ *
35726
+ * **`open` says whether the folded region is open, and setting it opens or
35727
+ * closes the region.** `requestOpen(true)` and `requestOpen(false)` do the same
35728
+ * and send `helix-before-open` or `helix-before-close` first, which you can
35729
+ * cancel, and `toggleOpen()` asks for the opposite. `toggle` follows every
35730
+ * change. The region closes on Escape, which puts focus back on the toggle,
35731
+ * when focus moves to something outside the header, and on a press outside
35732
+ * it. A bar that widens past `fold-below` closes its region.
35567
35733
  *
35568
35734
  * The host is the page's `banner` landmark. Placed inside `main`, `article`,
35569
35735
  * `aside`, `nav` or `section`, it is a plain box instead, as a native
@@ -35598,6 +35764,24 @@ export type CustomElements = {
35598
35764
  * - `menu-label`/`menuLabel`: The name of the toggle that opens a folded middle region.
35599
35765
  * - `scroller`: The id of the element whose scrolling lifts the bar, for an app shell that
35600
35766
  * scrolls a container instead of the window. Unset is the window.
35767
+ * - `toggle-placement`/`togglePlacement`: Where the toggle that opens a folded middle region sits: at the end of the
35768
+ * bar, after the trailing content, or with `start`, before the leading
35769
+ * content.
35770
+ *
35771
+ * Optional, so the resting bar writes no attribute onto the host.
35772
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
35773
+ * - `open`: Whether the element is open.
35774
+ *
35775
+ * One property, not two, so `dialog.open` answers the question anyone
35776
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
35777
+ * same statement in markup.
35778
+ *
35779
+ * **Not reflected, and that is required rather than tidy.** Reflection
35780
+ * writes the resolved state back as an attribute, so an element that opened
35781
+ * itself would put `open` on its own host: cloned, serialized for
35782
+ * hydration, or diffed by a framework, it comes back holding whatever the
35783
+ * last reader did rather than what the author wrote. `:state(open)` carries
35784
+ * the resolved state for stylesheets, which is what the mirror is for.
35601
35785
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
35602
35786
  *
35603
35787
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -35623,7 +35807,10 @@ export type CustomElements = {
35623
35807
  *
35624
35808
  * Events that will be emitted by the component.
35625
35809
  *
35810
+ * - `helix-before-close`: The folded region is about to close. Cancelable: cancel it to keep it open.
35811
+ * - `helix-before-open`: The folded region is about to open. Cancelable: cancel it to keep it closed.
35626
35812
  * - `helix-scrolled`: Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener.
35813
+ * - `toggle`: The folded region opened or closed. The event carries `newState` and `oldState`.
35627
35814
  *
35628
35815
  * ## Slots
35629
35816
  *
@@ -35634,6 +35821,20 @@ export type CustomElements = {
35634
35821
  * - `menu-icon`: Replaces the glyph inside the toggle that opens a folded middle region.
35635
35822
  * - `start`: Leading content, usually a wordmark.
35636
35823
  *
35824
+ * ## Methods
35825
+ *
35826
+ * Methods that can be called to access component functionality.
35827
+ *
35828
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
35829
+ * was applied.
35830
+ *
35831
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
35832
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
35833
+ * element opens or closes itself, whether or not a consumer declared
35834
+ * `open`: a declared property is a seed and a correction, and a consumer
35835
+ * who wants the decision for themselves refuses it and assigns their own.
35836
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
35837
+ *
35637
35838
  * ## CSS Parts
35638
35839
  *
35639
35840
  * Custom selectors for styling elements within the component.
@@ -37018,11 +37219,15 @@ export type CustomElements = {
37018
37219
  * appearance and size.
37019
37220
  *
37020
37221
  * **Buttons that stay pressed.** With `selection-mode`, each button with a
37021
- * `value` is a toggle button: a press presses or releases it, and it says so
37022
- * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
37023
- * pressed one releases it. `multiple` lets any number be pressed. `value` is
37024
- * the pressed values, comma separated. A press sends a cancelable
37025
- * `helix-before-change` with the value it would leave, then `change`.
37222
+ * `value` is a toggle button: a press presses or releases it. `multiple` lets
37223
+ * any number be pressed, and each button says so with `aria-pressed`. `single`
37224
+ * keeps one pressed at a time: the group is a `radiogroup` and each button a
37225
+ * `radio` that says so with `aria-checked`, as React Aria's toggle button
37226
+ * group is. A press on the pressed one releases it, unless
37227
+ * `disallow-empty-selection` keeps one pressed. `value` is the pressed values,
37228
+ * comma separated. A press sends a cancelable `helix-before-change` with the
37229
+ * value it would leave, then `change`. A pressed Helix button has
37230
+ * `:state(pressed)` on its own element.
37026
37231
  *
37027
37232
  * The pressed state is written on the control inside each button's shadow
37028
37233
  * root, so the markup you rendered is never changed and a framework hydrating
@@ -37050,15 +37255,18 @@ export type CustomElements = {
37050
37255
  * | Space, Enter | Presses or releases the focused button. |
37051
37256
  *
37052
37257
  * Left and Right swap on a right-to-left page, and a disabled button is
37053
- * passed over. In a selection mode the group is a `toolbar`, with
37258
+ * passed over. Under `multiple` the group is a `toolbar`, with
37054
37259
  * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
37055
37260
  * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
37056
- * reader meets one toolbar.
37261
+ * reader meets one toolbar. Under `single` it is a `radiogroup` either way.
37057
37262
  *
37058
37263
  * ## Attributes & Properties
37059
37264
  *
37060
37265
  * Component attributes and properties that can be applied to the element or by using JavaScript.
37061
37266
  *
37267
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one button pressed once one is, as React Aria's
37268
+ * `disallowEmptySelection`: a press that would leave none pressed is
37269
+ * refused.
37062
37270
  * - `label`: The group's name, read by screen readers.
37063
37271
  *
37064
37272
  * On the host through internals, so an author's `aria-label` still overrides
@@ -37426,6 +37634,7 @@ export type CustomElements = {
37426
37634
  * These can be used to apply styling when a component is in a given state.
37427
37635
  *
37428
37636
  * - `pending`: The button is pending: `pending` is set.
37637
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
37429
37638
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
37430
37639
  */
37431
37640
  "helix-headless-button": Partial<
@@ -41607,6 +41816,7 @@ export type CustomElements = {
41607
41816
  * - `copied`: The moment after a successful copy, while `copied-label` names the button.
41608
41817
  * - `failed`: The moment after a press that put nothing on the clipboard, while `error-label` names the button.
41609
41818
  * - `pending`: The button is pending: `pending` is set.
41819
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
41610
41820
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
41611
41821
  */
41612
41822
  "helix-headless-copy-button": Partial<
@@ -46632,6 +46842,7 @@ export type CustomElements = {
46632
46842
  * These can be used to apply styling when a component is in a given state.
46633
46843
  *
46634
46844
  * - `pending`: The button is pending: `pending` is set.
46845
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
46635
46846
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
46636
46847
  */
46637
46848
  "helix-headless-icon-button": Partial<
@@ -47518,7 +47729,8 @@ export type CustomElements = {
47518
47729
  * Each item is a `group` with the role description `slide`, named by its
47519
47730
  * `label` or, without one, by its place in the set, such as "2 of 5", as the
47520
47731
  * APG carousel pattern names a slide. The lightbox supplies both words, so they
47521
- * are translated on the lightbox.
47732
+ * are translated on the lightbox. A `description`, while there is one,
47733
+ * describes the group, so a screen reader says it with the name.
47522
47734
  *
47523
47735
  * An item that is not current is hidden and stays in the DOM, as a `TabPanel`
47524
47736
  * does. Crawlers can read it, it is in the server-rendered markup, and an
@@ -47602,9 +47814,10 @@ export type CustomElements = {
47602
47814
  * buttons that send `--previous`, `--next` and `--close`.
47603
47815
  *
47604
47816
  * **Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.
47605
- * Two fingers pinch it, a double click or a double tap zooms all the way in
47606
- * about the point pressed and back out, and once zoomed one pointer drags it
47607
- * about. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
47817
+ * Two fingers pinch it, and so does a trackpad pinch or the wheel with Ctrl
47818
+ * held, about the point under the pointer. A double click or a double tap
47819
+ * zooms all the way in about the point pressed and back out, and once zoomed
47820
+ * one pointer drags it about and the wheel moves it. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
47608
47821
  * The scale and the offset are on the `viewport` part as `--lightbox-zoom`,
47609
47822
  * `--lightbox-pan-x` and `--lightbox-pan-y`, written only while zoomed, and a
47610
47823
  * swipe moves to the next item only while the item is at its own size. With
@@ -47825,6 +48038,8 @@ export type CustomElements = {
47825
48038
  *
47826
48039
  * These can be used to apply styling when a component is in a given state.
47827
48040
  *
48041
+ * - `entering`: From the moment the viewer opens until its entrance has finished.
48042
+ * - `exiting`: From the moment the viewer closes until its exit has finished.
47828
48043
  * - `fullscreen`: While the viewer fills the screen.
47829
48044
  * - `idle`: The user has been still long enough for the controls to hide.
47830
48045
  * - `open`: While the viewer is open.
@@ -57275,6 +57490,10 @@ export type CustomElements = {
57275
57490
  * region. The current stage's button carries `aria-current="step"`, and only
57276
57491
  * the button, so the state is said once, on the control.
57277
57492
  *
57493
+ * A stage's `content`, while it holds anything, is a group named by the
57494
+ * stage's name, so a screen reader moving into it hears which stage it
57495
+ * belongs to.
57496
+ *
57278
57497
  * ## Attributes & Properties
57279
57498
  *
57280
57499
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -58321,10 +58540,18 @@ export type CustomElements = {
58321
58540
  * the tab list lands on the panel's first link or control where there is one,
58322
58541
  * and on the panel itself where there is none.
58323
58542
  *
58543
+ * **Set `lazy` for a panel that is expensive to draw.** Its content waits in a
58544
+ * `<template>` inside it, and goes into the panel the first time the panel is
58545
+ * shown, so it costs nothing until a reader opens that tab. Once in, it stays.
58546
+ * The panel sends `helix-load` at the same moment, for content your code
58547
+ * renders itself.
58548
+ *
58324
58549
  * ## Attributes & Properties
58325
58550
  *
58326
58551
  * Component attributes and properties that can be applied to the element or by using JavaScript.
58327
58552
  *
58553
+ * - `lazy`: Whether the panel's content waits in a `<template>` until the panel is
58554
+ * first shown.
58328
58555
  * - `selected`: Whether this panel is the visible one.
58329
58556
  * - `value`: Pairs the panel with the tab of the same value.
58330
58557
  * - `label`: The name of the panel, which is the text of the tab that opens it.
@@ -58358,11 +58585,17 @@ export type CustomElements = {
58358
58585
  * browser harness's awaits it alone: a browser always runs the frame, and a
58359
58586
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
58360
58587
  *
58588
+ * ## Events
58589
+ *
58590
+ * Events that will be emitted by the component.
58591
+ *
58592
+ * - `helix-load`: Fired the first time a `lazy` panel is shown, once its template's content is in.
58593
+ *
58361
58594
  * ## Slots
58362
58595
  *
58363
58596
  * Areas where markup can be added to the component.
58364
58597
  *
58365
- * - `(default)`: The panel's content.
58598
+ * - `(default)`: The panel's content. Under `lazy`, a `<template>` holding it.
58366
58599
  *
58367
58600
  * ## CSS Parts
58368
58601
  *
@@ -58374,6 +58607,7 @@ export type CustomElements = {
58374
58607
  *
58375
58608
  * These can be used to apply styling when a component is in a given state.
58376
58609
  *
58610
+ * - `loaded`: Once a `lazy` panel has been shown and its content is in.
58377
58611
  * - `selected`: While its tab is the one selected.
58378
58612
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
58379
58613
  */
@@ -58423,9 +58657,9 @@ export type CustomElements = {
58423
58657
  * | Enter, Space | Selects the tab with focus, or follows its link. |
58424
58658
  * | Tab | Leaves the list for the selected panel. |
58425
58659
  *
58426
- * Removing the selected tab selects the first enabled tab that is left, and
58427
- * `active` says so, with `helix-activate`. Where the removed tab had focus,
58428
- * focus moves to the tab now selected.
58660
+ * Removing the selected tab selects the enabled tab beside it, the next one
58661
+ * or else the one before, and `active` says so, with `helix-activate`. Where
58662
+ * the removed tab had focus, focus moves to the tab now selected.
58429
58663
  *
58430
58664
  * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
58431
58665
  * button at each end it can scroll toward, as Web Awesome's tab group does,
@@ -58531,6 +58765,8 @@ export type CustomElements = {
58531
58765
  * - `(default)`: The tabs, as direct children of this element.
58532
58766
  * - `indicator`: A mark of your own, drawn inside the `indicator` part, where `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size` reach it.
58533
58767
  * - `panels`: The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.
58768
+ * - `scroll-end-icon`: Replaces the glyph on the button that scrolls the strip toward its end.
58769
+ * - `scroll-start-icon`: Replaces the glyph on the button that scrolls the strip toward its start.
58534
58770
  *
58535
58771
  * ## Methods
58536
58772
  *
@@ -58552,7 +58788,9 @@ export type CustomElements = {
58552
58788
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
58553
58789
  * - `panels`: The panel container.
58554
58790
  * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
58791
+ * - `scroll-end-mark`: The glyph on that button, where none is slotted.
58555
58792
  * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
58793
+ * - `scroll-start-mark`: The glyph on that button, where none is slotted.
58556
58794
  * - `tabs`: The tab list.
58557
58795
  *
58558
58796
  * ## CSS States
@@ -58577,8 +58815,8 @@ export type CustomElements = {
58577
58815
  * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
58578
58816
  * has focus, sends `helix-dismiss`. The tab does not remove itself, because
58579
58817
  * your code owns the set, so remove the tab and its panel in your handler.
58580
- * Focus moves to the tab beside it, and the tab set selects a tab that is
58581
- * left.
58818
+ * Focus moves to the tab beside it, and where the tab was selected, the tab
58819
+ * set selects that same tab.
58582
58820
  * The tab says the key through `aria-keyshortcuts`, and the mark is for the
58583
58821
  * pointer, hidden from screen readers.
58584
58822
  *
@@ -58635,6 +58873,7 @@ export type CustomElements = {
58635
58873
  * Areas where markup can be added to the component.
58636
58874
  *
58637
58875
  * - `(default)`: The tab's label.
58876
+ * - `dismiss-icon`: Replaces the glyph on the mark that closes a `dismissible` tab.
58638
58877
  *
58639
58878
  * ## Methods
58640
58879
  *
@@ -58659,6 +58898,7 @@ export type CustomElements = {
58659
58898
  * Custom selectors for styling elements within the component.
58660
58899
  *
58661
58900
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
58901
+ * - `dismiss-mark`: The glyph on that mark, where none is slotted.
58662
58902
  * - `tab`: The tab itself.
58663
58903
  *
58664
58904
  * ## CSS States
@@ -60277,8 +60517,9 @@ export type CustomElements = {
60277
60517
  *
60278
60518
  * **Each item runs its own timer.** A timer held by the region would restart
60279
60519
  * with each new message, and the last of three messages would stay for nine
60280
- * seconds. It pauses while the pointer or focus is on the message, and while
60281
- * the page is hidden, so a message is not spent in a background tab.
60520
+ * seconds. It pauses while the pointer or focus is on the message or anywhere
60521
+ * in the region's stack, and while the page is hidden, so a message is not
60522
+ * spent in a background tab.
60282
60523
  *
60283
60524
  * **Each message is an `alertdialog` named by its words**, which is how a reader
60284
60525
  * who moves into the stack hears which message they are on. Give it a
@@ -60287,10 +60528,11 @@ export type CustomElements = {
60287
60528
  * says each message once as it arrives, a `danger` one assertively, so a
60288
60529
  * message is never a live region of its own.
60289
60530
  *
60290
- * A touch or a pen swipes a message toward the end of the line, and past
60291
- * halfway, or quickly, dismisses it through the same `helix-dismiss` as its
60292
- * control. While it moves, the distance is on the `item` part as
60293
- * `--toast-swipe-x`.
60531
+ * A touch or a pen swipes a message toward the end of the line, or toward the
60532
+ * edge the region's `swipe-direction` names, and past halfway, or quickly,
60533
+ * dismisses it through the same `helix-dismiss` as its control. While it
60534
+ * moves, the distance is on the `item` part as `--toast-swipe-x` or
60535
+ * `--toast-swipe-y`.
60294
60536
  *
60295
60537
  * **Escape dismisses the message holding focus**, through the same
60296
60538
  * `helix-dismiss`, and focus moves to the next message.
@@ -60392,6 +60634,7 @@ export type CustomElements = {
60392
60634
  *
60393
60635
  * - `--toast-duration`: How long this message stays, in milliseconds, for a progress hint.
60394
60636
  * - `--toast-swipe-x`: How far a swipe has moved the message across, in pixels, toward the right.
60637
+ * - `--toast-swipe-y`: How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`.
60395
60638
  *
60396
60639
  * ## CSS Parts
60397
60640
  *
@@ -60413,7 +60656,7 @@ export type CustomElements = {
60413
60656
  * These can be used to apply styling when a component is in a given state.
60414
60657
  *
60415
60658
  * - `closed`: The message has been dismissed and is hidden, or leaving.
60416
- * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
60659
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message or in the stack, or while the page is hidden.
60417
60660
  * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
60418
60661
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
60419
60662
  */
@@ -60452,7 +60695,12 @@ export type CustomElements = {
60452
60695
  * to render them from: it appends a message of the region's own tier and
60453
60696
  * removes it once it has been dismissed and has finished leaving. Messages
60454
60697
  * you render yourself stay yours, and the region never removes them. A touch
60455
- * or a pen swipes a message away toward the end of the line.
60698
+ * or a pen swipes a message away toward the end of the line, or toward the
60699
+ * edge `swipe-direction` names.
60700
+ *
60701
+ * **Every message's timer waits while a pointer or focus is in the stack**, as
60702
+ * React Aria's and Radix's regions do, so a reader moving from one message to
60703
+ * the next does not lose the one behind them.
60456
60704
  *
60457
60705
  * **The stack is in the top layer.** The `region` part is a `popover="manual"`
60458
60706
  * shown while a message is showing, and shown again above a modal dialog that
@@ -60517,6 +60765,8 @@ export type CustomElements = {
60517
60765
  * consumer's server markup does not have. A sheet carries the resting
60518
60766
  * arrangement in its own `:host` rule and the selectors describe only the
60519
60767
  * departures, which is what `orientation` does.
60768
+ * - `swipe-direction`/`swipeDirection`: The edge a touch or a pen swipes a message toward to dismiss it: `end`,
60769
+ * the end of the line, or `start`, `top` or `bottom`. Unset is `end`.
60520
60770
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
60521
60771
  *
60522
60772
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -61385,6 +61635,17 @@ export type CustomElements = {
61385
61635
  * least distance that brings it on screen, so the stop that points at it is
61386
61636
  * on screen too.
61387
61637
  *
61638
+ * **A stop's `effect` runs as the tour reaches it**, before it is shown, and
61639
+ * the stop waits for a promise it returns, with `:state(preparing)` on the
61640
+ * tour meanwhile. A function it returns runs when the tour leaves the stop.
61641
+ *
61642
+ * **A press outside the current stop and its target does nothing by
61643
+ * default**, so a reader can use the page the tour is describing. Set
61644
+ * `outside-press="close"` to end the tour on one, through `helix-before-close`
61645
+ * as Skip does, or `outside-press="block"` to refuse it, so the stop and its
61646
+ * target are all a pointer can reach while the tour runs, as Zag's
61647
+ * `preventInteraction` does.
61648
+ *
61388
61649
  * **Keyboard.** Focus is on the current stop's panel, which is not in the
61389
61650
  * `Tab` order itself.
61390
61651
  *
@@ -61422,6 +61683,9 @@ export type CustomElements = {
61422
61683
  * `undefined` until somebody sets one.
61423
61684
  * - `label`: The tour's name, read by screen readers, such as "Getting started".
61424
61685
  * - `next-label`/`nextLabel`: Label for the control that goes on.
61686
+ * - `outside-press`/`outsidePress`: What a press outside the current stop and its target does while the tour
61687
+ * runs. Unset, nothing: the page stays usable. `close` ends the tour, as
61688
+ * Skip does, and `block` refuses the press.
61425
61689
  * - `progress`: Draws each stop's place in the run in its panel, as well as saying it.
61426
61690
  * - `progress-label`/`progressLabel`: Each stop's place in the run, with `{index}` and `{count}` filled in and
61427
61691
  * written in the locale. Translate it with the rest of your text.
@@ -61525,6 +61789,7 @@ export type CustomElements = {
61525
61789
  * These can be used to apply styling when a component is in a given state.
61526
61790
  *
61527
61791
  * - `open`: While the tour is running.
61792
+ * - `preparing`: While the tour waits for the current stop's `effect` before showing the stop.
61528
61793
  * - `waiting`: While the tour waits at a `wait` stop for its target to be on the page.
61529
61794
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
61530
61795
  */
@@ -61558,6 +61823,13 @@ export type CustomElements = {
61558
61823
  * get Back, Next, and Skip, already wired. Slot your own `actions` and drive
61559
61824
  * them with `next()`, `back()`, and `skip()` on the root.
61560
61825
  *
61826
+ * **Set `effect` to prepare the page for a stop**, such as opening the menu
61827
+ * it points into or loading what it describes. It is a function, set from
61828
+ * script, that the tour runs as it reaches the stop. Return a promise and the
61829
+ * stop waits for it, and the tour has `:state(preparing)` meanwhile; return a
61830
+ * function, or resolve to one, and the tour runs it when it leaves the stop.
61831
+ * Zag's tour step has the same `effect`.
61832
+ *
61561
61833
  * **`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere
61562
61834
  * on the page from markup. It resolves against the stop's root node, so a stop
61563
61835
  * inside a shadow tree points at a target in that tree.
@@ -61599,6 +61871,8 @@ export type CustomElements = {
61599
61871
  *
61600
61872
  * Reflected, because the styled tier places a dialog and a floating panel by
61601
61873
  * it, and unset at rest, so no default is written onto the host.
61874
+ * - `effect`: Run as the tour reaches the stop, before it is shown: see the description
61875
+ * above. A function, so it is set from script and has no attribute. (property only)
61602
61876
  * - `target`: The element the stop points at, or `null` when no element has the `for` id. (property only) (readonly)
61603
61877
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
61604
61878
  *
@@ -61681,6 +61955,8 @@ export type CustomElements = {
61681
61955
  *
61682
61956
  * These can be used to apply styling when a component is in a given state.
61683
61957
  *
61958
+ * - `entering`: From the moment the stop is shown until its entrance has finished.
61959
+ * - `exiting`: From the moment the stop is left until its exit has finished.
61684
61960
  * - `placed-bottom`: The panel sits below its target.
61685
61961
  * - `placed-left`: The panel sits to the left of its target.
61686
61962
  * - `placed-right`: The panel sits to the right of its target.
@@ -63729,12 +64005,21 @@ export type CustomElementsSolidJs = {
63729
64005
  *
63730
64006
  * **Set `fold-below` to fold the middle region on a narrow screen.** Below that
63731
64007
  * many pixels of the bar's own width, the middle region is hidden behind a
63732
- * toggle at the end of the bar, named by `menu-label`. The toggle says whether
63733
- * the region is open with `aria-expanded`, and the region opens below the row.
63734
- * Escape closes it and puts focus back on the toggle. The custom state
63735
- * `folded` is on the host while the bar is that narrow, and `open` while the
63736
- * folded region is open. A server serves the bar unfolded, and the browser
63737
- * folds it once it has measured it.
64008
+ * toggle at the end of the bar, named by `menu-label`, or at its start with
64009
+ * `toggle-placement="start"`. The toggle says whether the region is open with
64010
+ * `aria-expanded`, and the region opens below the row. The region follows the
64011
+ * toggle's region in focus order, so Tab from the toggle at the end goes into
64012
+ * the open region. The custom state `folded` is on the host while the bar is
64013
+ * that narrow, and `open` while the folded region is open. A server serves the
64014
+ * bar unfolded, and the browser folds it once it has measured it.
64015
+ *
64016
+ * **`open` says whether the folded region is open, and setting it opens or
64017
+ * closes the region.** `requestOpen(true)` and `requestOpen(false)` do the same
64018
+ * and send `helix-before-open` or `helix-before-close` first, which you can
64019
+ * cancel, and `toggleOpen()` asks for the opposite. `toggle` follows every
64020
+ * change. The region closes on Escape, which puts focus back on the toggle,
64021
+ * when focus moves to something outside the header, and on a press outside
64022
+ * it. A bar that widens past `fold-below` closes its region.
63738
64023
  *
63739
64024
  * The host is the page's `banner` landmark. Placed inside `main`, `article`,
63740
64025
  * `aside`, `nav` or `section`, it is a plain box instead, as a native
@@ -63769,6 +64054,24 @@ export type CustomElementsSolidJs = {
63769
64054
  * - `menu-label`/`menuLabel`: The name of the toggle that opens a folded middle region.
63770
64055
  * - `scroller`: The id of the element whose scrolling lifts the bar, for an app shell that
63771
64056
  * scrolls a container instead of the window. Unset is the window.
64057
+ * - `toggle-placement`/`togglePlacement`: Where the toggle that opens a folded middle region sits: at the end of the
64058
+ * bar, after the trailing content, or with `start`, before the leading
64059
+ * content.
64060
+ *
64061
+ * Optional, so the resting bar writes no attribute onto the host.
64062
+ * - `default-open`/`defaultOpen`: Whether the element starts open. Ignored once `open` is written.
64063
+ * - `open`: Whether the element is open.
64064
+ *
64065
+ * One property, not two, so `dialog.open` answers the question anyone
64066
+ * asking it meant. Writing always applies; `<helix-dialog open>` is the
64067
+ * same statement in markup.
64068
+ *
64069
+ * **Not reflected, and that is required rather than tidy.** Reflection
64070
+ * writes the resolved state back as an attribute, so an element that opened
64071
+ * itself would put `open` on its own host: cloned, serialized for
64072
+ * hydration, or diffed by a framework, it comes back holding whatever the
64073
+ * last reader did rather than what the author wrote. `:state(open)` carries
64074
+ * the resolved state for stylesheets, which is what the mirror is for.
63772
64075
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
63773
64076
  *
63774
64077
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -63794,7 +64097,10 @@ export type CustomElementsSolidJs = {
63794
64097
  *
63795
64098
  * Events that will be emitted by the component.
63796
64099
  *
64100
+ * - `helix-before-close`: The folded region is about to close. Cancelable: cancel it to keep it open.
64101
+ * - `helix-before-open`: The folded region is about to open. Cancelable: cancel it to keep it closed.
63797
64102
  * - `helix-scrolled`: Fired when the page crosses the scroll threshold, with the new state. A custom state cannot be observed the way an attribute can, so listen for this event to follow it. The event uses the header's own threshold and hysteresis, so you do not need a second scroll listener.
64103
+ * - `toggle`: The folded region opened or closed. The event carries `newState` and `oldState`.
63798
64104
  *
63799
64105
  * ## Slots
63800
64106
  *
@@ -63805,6 +64111,20 @@ export type CustomElementsSolidJs = {
63805
64111
  * - `menu-icon`: Replaces the glyph inside the toggle that opens a folded middle region.
63806
64112
  * - `start`: Leading content, usually a wordmark.
63807
64113
  *
64114
+ * ## Methods
64115
+ *
64116
+ * Methods that can be called to access component functionality.
64117
+ *
64118
+ * - `requestOpen(next: boolean) => boolean`: Requests that the element open or close, and returns whether the change
64119
+ * was applied.
64120
+ *
64121
+ * Announces before it acts, so `preventDefault()` on the `helix-before-open` or
64122
+ * `helix-before-close` is a refusal and nothing moves. Nobody refusing means the
64123
+ * element opens or closes itself, whether or not a consumer declared
64124
+ * `open`: a declared property is a seed and a correction, and a consumer
64125
+ * who wants the decision for themselves refuses it and assigns their own.
64126
+ * - `toggleOpen() => boolean`: Requests the opposite of the current state.
64127
+ *
63808
64128
  * ## CSS Parts
63809
64129
  *
63810
64130
  * Custom selectors for styling elements within the component.
@@ -65208,11 +65528,15 @@ export type CustomElementsSolidJs = {
65208
65528
  * appearance and size.
65209
65529
  *
65210
65530
  * **Buttons that stay pressed.** With `selection-mode`, each button with a
65211
- * `value` is a toggle button: a press presses or releases it, and it says so
65212
- * with `aria-pressed`. `single` keeps one pressed at a time, and a press on the
65213
- * pressed one releases it. `multiple` lets any number be pressed. `value` is
65214
- * the pressed values, comma separated. A press sends a cancelable
65215
- * `helix-before-change` with the value it would leave, then `change`.
65531
+ * `value` is a toggle button: a press presses or releases it. `multiple` lets
65532
+ * any number be pressed, and each button says so with `aria-pressed`. `single`
65533
+ * keeps one pressed at a time: the group is a `radiogroup` and each button a
65534
+ * `radio` that says so with `aria-checked`, as React Aria's toggle button
65535
+ * group is. A press on the pressed one releases it, unless
65536
+ * `disallow-empty-selection` keeps one pressed. `value` is the pressed values,
65537
+ * comma separated. A press sends a cancelable `helix-before-change` with the
65538
+ * value it would leave, then `change`. A pressed Helix button has
65539
+ * `:state(pressed)` on its own element.
65216
65540
  *
65217
65541
  * The pressed state is written on the control inside each button's shadow
65218
65542
  * root, so the markup you rendered is never changed and a framework hydrating
@@ -65240,15 +65564,18 @@ export type CustomElementsSolidJs = {
65240
65564
  * | Space, Enter | Presses or releases the focused button. |
65241
65565
  *
65242
65566
  * Left and Right swap on a right-to-left page, and a disabled button is
65243
- * passed over. In a selection mode the group is a `toolbar`, with
65567
+ * passed over. Under `multiple` the group is a `toolbar`, with
65244
65568
  * `aria-orientation` under `orientation="vertical"`. Inside a toolbar it stays
65245
65569
  * a named `group`, and the toolbar's own arrow keys walk its buttons, so a
65246
- * reader meets one toolbar.
65570
+ * reader meets one toolbar. Under `single` it is a `radiogroup` either way.
65247
65571
  *
65248
65572
  * ## Attributes & Properties
65249
65573
  *
65250
65574
  * Component attributes and properties that can be applied to the element or by using JavaScript.
65251
65575
  *
65576
+ * - `disallow-empty-selection`/`disallowEmptySelection`: Keeps at least one button pressed once one is, as React Aria's
65577
+ * `disallowEmptySelection`: a press that would leave none pressed is
65578
+ * refused.
65252
65579
  * - `label`: The group's name, read by screen readers.
65253
65580
  *
65254
65581
  * On the host through internals, so an author's `aria-label` still overrides
@@ -65617,6 +65944,7 @@ export type CustomElementsSolidJs = {
65617
65944
  * These can be used to apply styling when a component is in a given state.
65618
65945
  *
65619
65946
  * - `pending`: The button is pending: `pending` is set.
65947
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
65620
65948
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
65621
65949
  */
65622
65950
  "helix-headless-button": Partial<
@@ -69838,6 +70166,7 @@ export type CustomElementsSolidJs = {
69838
70166
  * - `copied`: The moment after a successful copy, while `copied-label` names the button.
69839
70167
  * - `failed`: The moment after a press that put nothing on the clipboard, while `error-label` names the button.
69840
70168
  * - `pending`: The button is pending: `pending` is set.
70169
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
69841
70170
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
69842
70171
  */
69843
70172
  "helix-headless-copy-button": Partial<
@@ -74905,6 +75234,7 @@ export type CustomElementsSolidJs = {
74905
75234
  * These can be used to apply styling when a component is in a given state.
74906
75235
  *
74907
75236
  * - `pending`: The button is pending: `pending` is set.
75237
+ * - `pressed`: A Button Group in a selection mode has this button pressed.
74908
75238
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
74909
75239
  */
74910
75240
  "helix-headless-icon-button": Partial<
@@ -75807,7 +76137,8 @@ export type CustomElementsSolidJs = {
75807
76137
  * Each item is a `group` with the role description `slide`, named by its
75808
76138
  * `label` or, without one, by its place in the set, such as "2 of 5", as the
75809
76139
  * APG carousel pattern names a slide. The lightbox supplies both words, so they
75810
- * are translated on the lightbox.
76140
+ * are translated on the lightbox. A `description`, while there is one,
76141
+ * describes the group, so a screen reader says it with the name.
75811
76142
  *
75812
76143
  * An item that is not current is hidden and stays in the DOM, as a `TabPanel`
75813
76144
  * does. Crawlers can read it, it is in the server-rendered markup, and an
@@ -75892,9 +76223,10 @@ export type CustomElementsSolidJs = {
75892
76223
  * buttons that send `--previous`, `--next` and `--close`.
75893
76224
  *
75894
76225
  * **Set `max-zoom` to let a reader zoom into the shown item**, such as `3`.
75895
- * Two fingers pinch it, a double click or a double tap zooms all the way in
75896
- * about the point pressed and back out, and once zoomed one pointer drags it
75897
- * about. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
76226
+ * Two fingers pinch it, and so does a trackpad pinch or the wheel with Ctrl
76227
+ * held, about the point under the pointer. A double click or a double tap
76228
+ * zooms all the way in about the point pressed and back out, and once zoomed
76229
+ * one pointer drags it about and the wheel moves it. `+` and `-` zoom in and out from the keyboard, and `0` puts it back.
75898
76230
  * The scale and the offset are on the `viewport` part as `--lightbox-zoom`,
75899
76231
  * `--lightbox-pan-x` and `--lightbox-pan-y`, written only while zoomed, and a
75900
76232
  * swipe moves to the next item only while the item is at its own size. With
@@ -76115,6 +76447,8 @@ export type CustomElementsSolidJs = {
76115
76447
  *
76116
76448
  * These can be used to apply styling when a component is in a given state.
76117
76449
  *
76450
+ * - `entering`: From the moment the viewer opens until its entrance has finished.
76451
+ * - `exiting`: From the moment the viewer closes until its exit has finished.
76118
76452
  * - `fullscreen`: While the viewer fills the screen.
76119
76453
  * - `idle`: The user has been still long enough for the controls to hide.
76120
76454
  * - `open`: While the viewer is open.
@@ -85692,6 +86026,10 @@ export type CustomElementsSolidJs = {
85692
86026
  * region. The current stage's button carries `aria-current="step"`, and only
85693
86027
  * the button, so the state is said once, on the control.
85694
86028
  *
86029
+ * A stage's `content`, while it holds anything, is a group named by the
86030
+ * stage's name, so a screen reader moving into it hears which stage it
86031
+ * belongs to.
86032
+ *
85695
86033
  * ## Attributes & Properties
85696
86034
  *
85697
86035
  * Component attributes and properties that can be applied to the element or by using JavaScript.
@@ -86754,10 +87092,18 @@ export type CustomElementsSolidJs = {
86754
87092
  * the tab list lands on the panel's first link or control where there is one,
86755
87093
  * and on the panel itself where there is none.
86756
87094
  *
87095
+ * **Set `lazy` for a panel that is expensive to draw.** Its content waits in a
87096
+ * `<template>` inside it, and goes into the panel the first time the panel is
87097
+ * shown, so it costs nothing until a reader opens that tab. Once in, it stays.
87098
+ * The panel sends `helix-load` at the same moment, for content your code
87099
+ * renders itself.
87100
+ *
86757
87101
  * ## Attributes & Properties
86758
87102
  *
86759
87103
  * Component attributes and properties that can be applied to the element or by using JavaScript.
86760
87104
  *
87105
+ * - `lazy`: Whether the panel's content waits in a `<template>` until the panel is
87106
+ * first shown.
86761
87107
  * - `selected`: Whether this panel is the visible one.
86762
87108
  * - `value`: Pairs the panel with the tab of the same value.
86763
87109
  * - `label`: The name of the panel, which is the text of the tab that opens it.
@@ -86791,11 +87137,17 @@ export type CustomElementsSolidJs = {
86791
87137
  * browser harness's awaits it alone: a browser always runs the frame, and a
86792
87138
  * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
86793
87139
  *
87140
+ * ## Events
87141
+ *
87142
+ * Events that will be emitted by the component.
87143
+ *
87144
+ * - `helix-load`: Fired the first time a `lazy` panel is shown, once its template's content is in.
87145
+ *
86794
87146
  * ## Slots
86795
87147
  *
86796
87148
  * Areas where markup can be added to the component.
86797
87149
  *
86798
- * - `(default)`: The panel's content.
87150
+ * - `(default)`: The panel's content. Under `lazy`, a `<template>` holding it.
86799
87151
  *
86800
87152
  * ## CSS Parts
86801
87153
  *
@@ -86807,6 +87159,7 @@ export type CustomElementsSolidJs = {
86807
87159
  *
86808
87160
  * These can be used to apply styling when a component is in a given state.
86809
87161
  *
87162
+ * - `loaded`: Once a `lazy` panel has been shown and its content is in.
86810
87163
  * - `selected`: While its tab is the one selected.
86811
87164
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
86812
87165
  */
@@ -86859,9 +87212,9 @@ export type CustomElementsSolidJs = {
86859
87212
  * | Enter, Space | Selects the tab with focus, or follows its link. |
86860
87213
  * | Tab | Leaves the list for the selected panel. |
86861
87214
  *
86862
- * Removing the selected tab selects the first enabled tab that is left, and
86863
- * `active` says so, with `helix-activate`. Where the removed tab had focus,
86864
- * focus moves to the tab now selected.
87215
+ * Removing the selected tab selects the enabled tab beside it, the next one
87216
+ * or else the one before, and `active` says so, with `helix-activate`. Where
87217
+ * the removed tab had focus, focus moves to the tab now selected.
86865
87218
  *
86866
87219
  * **More tabs than fit.** With `scroll-controls`, a strip that scrolls shows a
86867
87220
  * button at each end it can scroll toward, as Web Awesome's tab group does,
@@ -86967,6 +87320,8 @@ export type CustomElementsSolidJs = {
86967
87320
  * - `(default)`: The tabs, as direct children of this element.
86968
87321
  * - `indicator`: A mark of your own, drawn inside the `indicator` part, where `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size` reach it.
86969
87322
  * - `panels`: The panels, as direct children of this element. Panels inside a wrapper are not paired with tabs, because pairing reads only the direct children.
87323
+ * - `scroll-end-icon`: Replaces the glyph on the button that scrolls the strip toward its end.
87324
+ * - `scroll-start-icon`: Replaces the glyph on the button that scrolls the strip toward its start.
86970
87325
  *
86971
87326
  * ## Methods
86972
87327
  *
@@ -86988,7 +87343,9 @@ export type CustomElementsSolidJs = {
86988
87343
  * - `indicator`: The marker that moves to the selected tab. It carries the selected tab's place and size as `--indicator-x`, `--indicator-y`, `--indicator-inline-size` and `--indicator-block-size`, and `data-placed` once it has been placed, for a mark you draw and animate yourself.
86989
87344
  * - `panels`: The panel container.
86990
87345
  * - `scroll-end`: The button that scrolls the strip toward its end, shown under `scroll-controls` while there is more that way.
87346
+ * - `scroll-end-mark`: The glyph on that button, where none is slotted.
86991
87347
  * - `scroll-start`: The button that scrolls the strip toward its start, shown under `scroll-controls` while there is more that way.
87348
+ * - `scroll-start-mark`: The glyph on that button, where none is slotted.
86992
87349
  * - `tabs`: The tab list.
86993
87350
  *
86994
87351
  * ## CSS States
@@ -87016,8 +87373,8 @@ export type CustomElementsSolidJs = {
87016
87373
  * can: a press on its `dismiss` mark, or Delete or Backspace while the tab
87017
87374
  * has focus, sends `helix-dismiss`. The tab does not remove itself, because
87018
87375
  * your code owns the set, so remove the tab and its panel in your handler.
87019
- * Focus moves to the tab beside it, and the tab set selects a tab that is
87020
- * left.
87376
+ * Focus moves to the tab beside it, and where the tab was selected, the tab
87377
+ * set selects that same tab.
87021
87378
  * The tab says the key through `aria-keyshortcuts`, and the mark is for the
87022
87379
  * pointer, hidden from screen readers.
87023
87380
  *
@@ -87074,6 +87431,7 @@ export type CustomElementsSolidJs = {
87074
87431
  * Areas where markup can be added to the component.
87075
87432
  *
87076
87433
  * - `(default)`: The tab's label.
87434
+ * - `dismiss-icon`: Replaces the glyph on the mark that closes a `dismissible` tab.
87077
87435
  *
87078
87436
  * ## Methods
87079
87437
  *
@@ -87098,6 +87456,7 @@ export type CustomElementsSolidJs = {
87098
87456
  * Custom selectors for styling elements within the component.
87099
87457
  *
87100
87458
  * - `dismiss`: The mark a pointer presses to close a `dismissible` tab.
87459
+ * - `dismiss-mark`: The glyph on that mark, where none is slotted.
87101
87460
  * - `tab`: The tab itself.
87102
87461
  *
87103
87462
  * ## CSS States
@@ -88737,8 +89096,9 @@ export type CustomElementsSolidJs = {
88737
89096
  *
88738
89097
  * **Each item runs its own timer.** A timer held by the region would restart
88739
89098
  * with each new message, and the last of three messages would stay for nine
88740
- * seconds. It pauses while the pointer or focus is on the message, and while
88741
- * the page is hidden, so a message is not spent in a background tab.
89099
+ * seconds. It pauses while the pointer or focus is on the message or anywhere
89100
+ * in the region's stack, and while the page is hidden, so a message is not
89101
+ * spent in a background tab.
88742
89102
  *
88743
89103
  * **Each message is an `alertdialog` named by its words**, which is how a reader
88744
89104
  * who moves into the stack hears which message they are on. Give it a
@@ -88747,10 +89107,11 @@ export type CustomElementsSolidJs = {
88747
89107
  * says each message once as it arrives, a `danger` one assertively, so a
88748
89108
  * message is never a live region of its own.
88749
89109
  *
88750
- * A touch or a pen swipes a message toward the end of the line, and past
88751
- * halfway, or quickly, dismisses it through the same `helix-dismiss` as its
88752
- * control. While it moves, the distance is on the `item` part as
88753
- * `--toast-swipe-x`.
89110
+ * A touch or a pen swipes a message toward the end of the line, or toward the
89111
+ * edge the region's `swipe-direction` names, and past halfway, or quickly,
89112
+ * dismisses it through the same `helix-dismiss` as its control. While it
89113
+ * moves, the distance is on the `item` part as `--toast-swipe-x` or
89114
+ * `--toast-swipe-y`.
88754
89115
  *
88755
89116
  * **Escape dismisses the message holding focus**, through the same
88756
89117
  * `helix-dismiss`, and focus moves to the next message.
@@ -88852,6 +89213,7 @@ export type CustomElementsSolidJs = {
88852
89213
  *
88853
89214
  * - `--toast-duration`: How long this message stays, in milliseconds, for a progress hint.
88854
89215
  * - `--toast-swipe-x`: How far a swipe has moved the message across, in pixels, toward the right.
89216
+ * - `--toast-swipe-y`: How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`.
88855
89217
  *
88856
89218
  * ## CSS Parts
88857
89219
  *
@@ -88873,7 +89235,7 @@ export type CustomElementsSolidJs = {
88873
89235
  * These can be used to apply styling when a component is in a given state.
88874
89236
  *
88875
89237
  * - `closed`: The message has been dismissed and is hidden, or leaving.
88876
- * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message, or while the page is hidden.
89238
+ * - `paused`: The dismiss timer is paused, while a pointer or focus is on the message or in the stack, or while the page is hidden.
88877
89239
  * - `waiting`: The region holds the message back, past its `max-visible`, until a message before it goes.
88878
89240
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
88879
89241
  */
@@ -88915,7 +89277,12 @@ export type CustomElementsSolidJs = {
88915
89277
  * to render them from: it appends a message of the region's own tier and
88916
89278
  * removes it once it has been dismissed and has finished leaving. Messages
88917
89279
  * you render yourself stay yours, and the region never removes them. A touch
88918
- * or a pen swipes a message away toward the end of the line.
89280
+ * or a pen swipes a message away toward the end of the line, or toward the
89281
+ * edge `swipe-direction` names.
89282
+ *
89283
+ * **Every message's timer waits while a pointer or focus is in the stack**, as
89284
+ * React Aria's and Radix's regions do, so a reader moving from one message to
89285
+ * the next does not lose the one behind them.
88919
89286
  *
88920
89287
  * **The stack is in the top layer.** The `region` part is a `popover="manual"`
88921
89288
  * shown while a message is showing, and shown again above a modal dialog that
@@ -88980,6 +89347,8 @@ export type CustomElementsSolidJs = {
88980
89347
  * consumer's server markup does not have. A sheet carries the resting
88981
89348
  * arrangement in its own `:host` rule and the selectors describe only the
88982
89349
  * departures, which is what `orientation` does.
89350
+ * - `swipe-direction`/`swipeDirection`: The edge a touch or a pen swipes a message toward to dismiss it: `end`,
89351
+ * the end of the line, or `start`, `top` or `bottom`. Unset is `end`.
88983
89352
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
88984
89353
  *
88985
89354
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -89861,6 +90230,17 @@ export type CustomElementsSolidJs = {
89861
90230
  * least distance that brings it on screen, so the stop that points at it is
89862
90231
  * on screen too.
89863
90232
  *
90233
+ * **A stop's `effect` runs as the tour reaches it**, before it is shown, and
90234
+ * the stop waits for a promise it returns, with `:state(preparing)` on the
90235
+ * tour meanwhile. A function it returns runs when the tour leaves the stop.
90236
+ *
90237
+ * **A press outside the current stop and its target does nothing by
90238
+ * default**, so a reader can use the page the tour is describing. Set
90239
+ * `outside-press="close"` to end the tour on one, through `helix-before-close`
90240
+ * as Skip does, or `outside-press="block"` to refuse it, so the stop and its
90241
+ * target are all a pointer can reach while the tour runs, as Zag's
90242
+ * `preventInteraction` does.
90243
+ *
89864
90244
  * **Keyboard.** Focus is on the current stop's panel, which is not in the
89865
90245
  * `Tab` order itself.
89866
90246
  *
@@ -89898,6 +90278,9 @@ export type CustomElementsSolidJs = {
89898
90278
  * `undefined` until somebody sets one.
89899
90279
  * - `label`: The tour's name, read by screen readers, such as "Getting started".
89900
90280
  * - `next-label`/`nextLabel`: Label for the control that goes on.
90281
+ * - `outside-press`/`outsidePress`: What a press outside the current stop and its target does while the tour
90282
+ * runs. Unset, nothing: the page stays usable. `close` ends the tour, as
90283
+ * Skip does, and `block` refuses the press.
89901
90284
  * - `progress`: Draws each stop's place in the run in its panel, as well as saying it.
89902
90285
  * - `progress-label`/`progressLabel`: Each stop's place in the run, with `{index}` and `{count}` filled in and
89903
90286
  * written in the locale. Translate it with the rest of your text.
@@ -90001,6 +90384,7 @@ export type CustomElementsSolidJs = {
90001
90384
  * These can be used to apply styling when a component is in a given state.
90002
90385
  *
90003
90386
  * - `open`: While the tour is running.
90387
+ * - `preparing`: While the tour waits for the current stop's `effect` before showing the stop.
90004
90388
  * - `waiting`: While the tour waits at a `wait` stop for its target to be on the page.
90005
90389
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
90006
90390
  */
@@ -90037,6 +90421,13 @@ export type CustomElementsSolidJs = {
90037
90421
  * get Back, Next, and Skip, already wired. Slot your own `actions` and drive
90038
90422
  * them with `next()`, `back()`, and `skip()` on the root.
90039
90423
  *
90424
+ * **Set `effect` to prepare the page for a stop**, such as opening the menu
90425
+ * it points into or loading what it describes. It is a function, set from
90426
+ * script, that the tour runs as it reaches the stop. Return a promise and the
90427
+ * stop waits for it, and the tour has `:state(preparing)` meanwhile; return a
90428
+ * function, or resolve to one, and the tour runs it when it leaves the stop.
90429
+ * Zag's tour step has the same `effect`.
90430
+ *
90040
90431
  * **`for` is an id, as with `Tooltip`**, so you can point at a target elsewhere
90041
90432
  * on the page from markup. It resolves against the stop's root node, so a stop
90042
90433
  * inside a shadow tree points at a target in that tree.
@@ -90078,6 +90469,8 @@ export type CustomElementsSolidJs = {
90078
90469
  *
90079
90470
  * Reflected, because the styled tier places a dialog and a floating panel by
90080
90471
  * it, and unset at rest, so no default is written onto the host.
90472
+ * - `effect`: Run as the tour reaches the stop, before it is shown: see the description
90473
+ * above. A function, so it is set from script and has no attribute. (property only)
90081
90474
  * - `target`: The element the stop points at, or `null` when no element has the `for` id. (property only) (readonly)
90082
90475
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
90083
90476
  *
@@ -90160,6 +90553,8 @@ export type CustomElementsSolidJs = {
90160
90553
  *
90161
90554
  * These can be used to apply styling when a component is in a given state.
90162
90555
  *
90556
+ * - `entering`: From the moment the stop is shown until its entrance has finished.
90557
+ * - `exiting`: From the moment the stop is left until its exit has finished.
90163
90558
  * - `placed-bottom`: The panel sits below its target.
90164
90559
  * - `placed-left`: The panel sits to the left of its target.
90165
90560
  * - `placed-right`: The panel sits to the right of its target.
@@ -91932,6 +92327,8 @@ export type CustomCssProperties = {
91932
92327
  "--toast-duration"?: (string) | undefined;
91933
92328
  /** How far a swipe has moved the message across, in pixels, toward the right. */
91934
92329
  "--toast-swipe-x"?: (string) | undefined;
92330
+ /** How far a swipe has moved the message down, in pixels, under a `swipe-direction` of `top` or `bottom`. */
92331
+ "--toast-swipe-y"?: (string) | undefined;
91935
92332
  /** The lit box's height, in pixels, padding included. Written on the spotlight while it lights a target. */
91936
92333
  "--tour-spotlight-height"?: (string) | undefined;
91937
92334
  /** The lit box's width, in pixels, padding included. Written on the spotlight while it lights a target. */