@vectoriox/iox-ui 5.84.0 → 5.86.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 (47) hide show
  1. package/actions-core/index.d.ts +47 -3
  2. package/composite-core/index.d.ts +93 -15
  3. package/design-core/index.d.ts +2013 -187
  4. package/fesm2022/vectoriox-iox-ui-actions-core.mjs +153 -70
  5. package/fesm2022/vectoriox-iox-ui-actions-core.mjs.map +1 -1
  6. package/fesm2022/vectoriox-iox-ui-composite-core.mjs +307 -39
  7. package/fesm2022/vectoriox-iox-ui-composite-core.mjs.map +1 -1
  8. package/fesm2022/vectoriox-iox-ui-design-core.mjs +2222 -85
  9. package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
  10. package/fesm2022/vectoriox-iox-ui-forms-core.mjs +27 -4
  11. package/fesm2022/vectoriox-iox-ui-forms-core.mjs.map +1 -1
  12. package/fesm2022/vectoriox-iox-ui-generation-core.mjs +250 -12
  13. package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
  14. package/fesm2022/vectoriox-iox-ui-scene-core.mjs +101 -5
  15. package/fesm2022/vectoriox-iox-ui-scene-core.mjs.map +1 -1
  16. package/fesm2022/vectoriox-iox-ui.mjs +1545 -78
  17. package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
  18. package/forms-core/index.d.ts +23 -4
  19. package/generation-core/index.d.ts +13 -0
  20. package/index.d.ts +563 -62
  21. package/package.json +1 -1
  22. package/scene-core/index.d.ts +32 -4
  23. package/src/actions-core/action.model.ts +1 -1
  24. package/src/actions-core/dialog-motion.ts +25 -0
  25. package/src/actions-core/dialog-opener.ts +9 -3
  26. package/src/actions-core/element-actions.ts +25 -1
  27. package/src/actions-core/popover-opener.ts +50 -0
  28. package/src/actions-core/public-api.ts +1 -0
  29. package/src/composite-core/header.ts +25 -0
  30. package/src/composite-core/public-api.ts +1 -0
  31. package/src/composite-core/slider-runtime.ts +82 -0
  32. package/src/composite-core/slider.ts +194 -27
  33. package/src/composite-core/structure.ts +14 -9
  34. package/src/design-core/flavor-spec.generated.ts +2145 -85
  35. package/src/design-core/header-behaviour.ts +76 -0
  36. package/src/design-core/public-api.ts +1 -0
  37. package/src/design-core/theme-color.ts +21 -5
  38. package/src/forms-core/submit-lifecycle.ts +30 -3
  39. package/src/generation-core/baseline-roles.ts +1 -0
  40. package/src/generation-core/compose-site.ts +8 -0
  41. package/src/generation-core/node-baselines.generated.ts +231 -11
  42. package/src/generation-core/patterns.ts +2 -0
  43. package/src/generation-core/site-spec.generated.ts +8 -0
  44. package/src/scene-core/scene.ts +18 -0
  45. package/src/scene-core/scroll-driver.ts +83 -6
  46. package/styles/iox-design.css +431 -1
  47. package/styles/iox-forms.css +29 -4
package/index.d.ts CHANGED
@@ -719,7 +719,8 @@ declare function planResponsiveRules(styleProps: StyleMap | null | undefined, st
719
719
  * shared boot). The slides render into `.swiper-wrapper` (`childrenHost` — the `.swiper-slide` direct-child invariant,
720
720
  * slider.md); the control PARTS (CC3: Previous, Next, Pause, Pagination — `childHostFor`) render beside it, inside
721
721
  * `.swiper`: those before the first slide before the wrapper, the rest after it. A saved slider with no parts keeps
722
- * Swiper-drawn controls (the legacy switches). Swiper is booted by the ONE shared `bootSlider`.
722
+ * Swiper-drawn controls (the legacy switches). Swiper is booted by the ONE shared `bootSlider`. A slider the scroll plays
723
+ * (premium M4) sits in its runway — the string path writes the same `iox-slider-runway` wrapper.
723
724
  */
724
725
  declare class ClientSliderContainerComponent implements AfterViewInit, OnDestroy {
725
726
  private platformId;
@@ -764,6 +765,9 @@ declare class ClientSliderContainerComponent implements AfterViewInit, OnDestroy
764
765
  responsive: ResponsiveOverrides | null;
765
766
  /** The slider's controls are parts (set by the renderer from the node): Swiper draws none of its own. */
766
767
  controlParts: boolean;
768
+ /** Premium M4: the scroll plays it — a runway (a Scene root the ONE driver drives) holds it mid-screen; otherwise the
769
+ * wrapper is `display: contents` and the slider lays out exactly as before. */
770
+ scrollPlays: boolean;
767
771
  childrenHost: ViewContainerRef;
768
772
  leadHost: ViewContainerRef;
769
773
  trailHost: ViewContainerRef;
@@ -786,7 +790,7 @@ declare class ClientSliderContainerComponent implements AfterViewInit, OnDestroy
786
790
  private boot;
787
791
  private inputs;
788
792
  static ɵfac: i0.ɵɵFactoryDeclaration<ClientSliderContainerComponent, never>;
789
- static ɵcmp: i0.ɵɵComponentDeclaration<ClientSliderContainerComponent, "iox-slider-container", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "loop": { "alias": "loop"; "required": false; }; "slidesPerView": { "alias": "slidesPerView"; "required": false; }; "slidesPerGroup": { "alias": "slidesPerGroup"; "required": false; }; "spaceBetween": { "alias": "spaceBetween"; "required": false; }; "speed": { "alias": "speed"; "required": false; }; "effect": { "alias": "effect"; "required": false; }; "grabCursor": { "alias": "grabCursor"; "required": false; }; "centeredSlides": { "alias": "centeredSlides"; "required": false; }; "initialSlide": { "alias": "initialSlide"; "required": false; }; "autoHeight": { "alias": "autoHeight"; "required": false; }; "slideToClickedSlide": { "alias": "slideToClickedSlide"; "required": false; }; "freeMode": { "alias": "freeMode"; "required": false; }; "enableNavigation": { "alias": "enableNavigation"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "enableScrollbar": { "alias": "enableScrollbar"; "required": false; }; "enableAutoplay": { "alias": "enableAutoplay"; "required": false; }; "enableKeyboard": { "alias": "enableKeyboard"; "required": false; }; "enableMousewheel": { "alias": "enableMousewheel"; "required": false; }; "enableZoom": { "alias": "enableZoom"; "required": false; }; "enableGrid": { "alias": "enableGrid"; "required": false; }; "enableParallax": { "alias": "enableParallax"; "required": false; }; "autoplayDelay": { "alias": "autoplayDelay"; "required": false; }; "autoplayPauseOnMouseEnter": { "alias": "autoplayPauseOnMouseEnter"; "required": false; }; "autoplayDisableOnInteraction": { "alias": "autoplayDisableOnInteraction"; "required": false; }; "paginationType": { "alias": "paginationType"; "required": false; }; "paginationClickable": { "alias": "paginationClickable"; "required": false; }; "paginationDynamicBullets": { "alias": "paginationDynamicBullets"; "required": false; }; "navigationColor": { "alias": "navigationColor"; "required": false; }; "paginationColor": { "alias": "paginationColor"; "required": false; }; "gridRows": { "alias": "gridRows"; "required": false; }; "breakpoints": { "alias": "breakpoints"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "controlParts": { "alias": "controlParts"; "required": false; }; }, {}, never, never, false, never>;
793
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClientSliderContainerComponent, "iox-slider-container", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "loop": { "alias": "loop"; "required": false; }; "slidesPerView": { "alias": "slidesPerView"; "required": false; }; "slidesPerGroup": { "alias": "slidesPerGroup"; "required": false; }; "spaceBetween": { "alias": "spaceBetween"; "required": false; }; "speed": { "alias": "speed"; "required": false; }; "effect": { "alias": "effect"; "required": false; }; "grabCursor": { "alias": "grabCursor"; "required": false; }; "centeredSlides": { "alias": "centeredSlides"; "required": false; }; "initialSlide": { "alias": "initialSlide"; "required": false; }; "autoHeight": { "alias": "autoHeight"; "required": false; }; "slideToClickedSlide": { "alias": "slideToClickedSlide"; "required": false; }; "freeMode": { "alias": "freeMode"; "required": false; }; "enableNavigation": { "alias": "enableNavigation"; "required": false; }; "enablePagination": { "alias": "enablePagination"; "required": false; }; "enableScrollbar": { "alias": "enableScrollbar"; "required": false; }; "enableAutoplay": { "alias": "enableAutoplay"; "required": false; }; "enableKeyboard": { "alias": "enableKeyboard"; "required": false; }; "enableMousewheel": { "alias": "enableMousewheel"; "required": false; }; "enableZoom": { "alias": "enableZoom"; "required": false; }; "enableGrid": { "alias": "enableGrid"; "required": false; }; "enableParallax": { "alias": "enableParallax"; "required": false; }; "autoplayDelay": { "alias": "autoplayDelay"; "required": false; }; "autoplayPauseOnMouseEnter": { "alias": "autoplayPauseOnMouseEnter"; "required": false; }; "autoplayDisableOnInteraction": { "alias": "autoplayDisableOnInteraction"; "required": false; }; "paginationType": { "alias": "paginationType"; "required": false; }; "paginationClickable": { "alias": "paginationClickable"; "required": false; }; "paginationDynamicBullets": { "alias": "paginationDynamicBullets"; "required": false; }; "navigationColor": { "alias": "navigationColor"; "required": false; }; "paginationColor": { "alias": "paginationColor"; "required": false; }; "gridRows": { "alias": "gridRows"; "required": false; }; "breakpoints": { "alias": "breakpoints"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "controlParts": { "alias": "controlParts"; "required": false; }; "scrollPlays": { "alias": "scrollPlays"; "required": false; }; }, {}, never, never, false, never>;
790
794
  }
791
795
 
792
796
  /**
@@ -1172,6 +1176,16 @@ declare enum FormRenderState {
1172
1176
  Success = "success",
1173
1177
  Error = "error"
1174
1178
  }
1179
+ /**
1180
+ * What a form shows once it has sent (premium M5, N3) — the Form's "After sending" choice:
1181
+ * - `message`: the success in place (M3): the fields leave, the Success block shows, Send reads "Sent" and stays so;
1182
+ * - `toast`: the fields STAY, cleared for the next answer, and a toast says the form's Sent words — a newsletter in a
1183
+ * footer, a form someone may send again.
1184
+ */
1185
+ declare enum FormAfterSend {
1186
+ Message = "message",
1187
+ Toast = "toast"
1188
+ }
1175
1189
  /**
1176
1190
  * The fields a CLIENT needs to validate a form: never its actions (where submissions go — an email
1177
1191
  * address, a webhook) and never its anti-spam settings. A string-rendered form carries this on
@@ -1321,6 +1335,9 @@ declare class IoxFormComponent implements OnChanges, OnInit {
1321
1335
  get renderState(): FormRenderState | string;
1322
1336
  private _renderState;
1323
1337
  feedback: FeedbackTiming | string;
1338
+ /** After sending (premium M5): the success in place (`message`), or keep the fields and say it in a toast. */
1339
+ afterSend: FormAfterSend | string;
1340
+ get keepsFields(): boolean;
1324
1341
  /**
1325
1342
  * Move focus to the first field that failed, instead of leaving the visitor to hunt for red
1326
1343
  * text. On by default — the single most valuable thing a failed submit can do.
@@ -1384,7 +1401,7 @@ declare class IoxFormComponent implements OnChanges, OnInit {
1384
1401
  /** Focus the first field that failed and shake it once (premium N2 — Emil 134; none under reduced motion). */
1385
1402
  private focusFirstInvalid;
1386
1403
  static ɵfac: i0.ɵɵFactoryDeclaration<IoxFormComponent, [null, null, { optional: true; }, { optional: true; }]>;
1387
- static ɵcmp: i0.ɵɵComponentDeclaration<IoxFormComponent, "form[iox-form]", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "renderState": { "alias": "renderState"; "required": false; }; "feedback": { "alias": "feedback"; "required": false; }; "focusFirstProblem": { "alias": "focusFirstProblem"; "required": false; }; "announceFailure": { "alias": "announceFailure"; "required": false; }; }, { "formSubmit": "formSubmit"; "validationFailed": "validationFailed"; }, never, never, false, never>;
1404
+ static ɵcmp: i0.ɵɵComponentDeclaration<IoxFormComponent, "form[iox-form]", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "renderState": { "alias": "renderState"; "required": false; }; "feedback": { "alias": "feedback"; "required": false; }; "afterSend": { "alias": "afterSend"; "required": false; }; "focusFirstProblem": { "alias": "focusFirstProblem"; "required": false; }; "announceFailure": { "alias": "announceFailure"; "required": false; }; }, { "formSubmit": "formSubmit"; "validationFailed": "validationFailed"; }, never, never, false, never>;
1388
1405
  }
1389
1406
 
1390
1407
  /**
@@ -1617,9 +1634,28 @@ declare class IoxDialogComponent {
1617
1634
  static ɵcmp: i0.ɵɵComponentDeclaration<IoxDialogComponent, "dialog[iox-dialog]", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; }; "showCloseButton": { "alias": "showCloseButton"; "required": false; }; "consentRole": { "alias": "consentRole"; "required": false; }; }, {}, never, never, false, never>;
1618
1635
  }
1619
1636
 
1637
+ /**
1638
+ * The Popover's LIVE twin on the engine's component path (premium components M5, N4). Directive-host: the panel IS the
1639
+ * host, carrying exactly the markup the string renderer writes — `data-iox-popover`, `popover="manual"` (closed in the
1640
+ * raw SSR with no script: the browser hides a popover until it is shown), `role="dialog"`, `tabindex="-1"` (focus moves
1641
+ * to the panel on open) and the side the author picked — so ONE runtime (`openPopover` / `closePopover`) treats both
1642
+ * paths alike. Its id and accessible name are the shared `nodeA11yAttributes`, applied by the engine.
1643
+ */
1644
+ declare class IoxPopoverComponent {
1645
+ nodeId: string;
1646
+ placement: string;
1647
+ childrenHost: ViewContainerRef;
1648
+ get side(): string;
1649
+ static ɵfac: i0.ɵɵFactoryDeclaration<IoxPopoverComponent, never>;
1650
+ static ɵcmp: i0.ɵɵComponentDeclaration<IoxPopoverComponent, "div[iox-popover]", never, { "nodeId": { "alias": "nodeId"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; }, {}, never, never, false, never>;
1651
+ }
1652
+ /** The attributes the string renderer writes on a Popover panel (beside its class, id and name) — the component's host
1653
+ * bindings, as data, so the two paths cannot drift. */
1654
+ declare function popoverPanelAttributes(placement: unknown): Record<string, string>;
1655
+
1620
1656
  declare class IoxBuilderComponentsModule {
1621
1657
  static ɵfac: i0.ɵɵFactoryDeclaration<IoxBuilderComponentsModule, never>;
1622
- static ɵmod: i0.ɵɵNgModuleDeclaration<IoxBuilderComponentsModule, [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent, typeof ButtonBlockComponent, typeof ClientSliderContainerComponent, typeof ClientSliderSlideComponent, typeof ClientListComponent, typeof ClientListItemComponent, typeof ClientGalleryComponent, typeof IoxVideoComponent, typeof IoxFormComponent, typeof IoxFieldComponent, typeof IoxSubmitButtonComponent, typeof IoxFormSuccessComponent, typeof IoxFormErrorComponent, typeof IoxDialogComponent], [typeof i2.CommonModule], [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent, typeof ButtonBlockComponent, typeof ClientSliderContainerComponent, typeof ClientSliderSlideComponent, typeof ClientListComponent, typeof ClientListItemComponent, typeof ClientGalleryComponent, typeof IoxVideoComponent, typeof IoxFormComponent, typeof IoxFieldComponent, typeof IoxSubmitButtonComponent, typeof IoxFormSuccessComponent, typeof IoxFormErrorComponent, typeof IoxDialogComponent]>;
1658
+ static ɵmod: i0.ɵɵNgModuleDeclaration<IoxBuilderComponentsModule, [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent, typeof ButtonBlockComponent, typeof ClientSliderContainerComponent, typeof ClientSliderSlideComponent, typeof ClientListComponent, typeof ClientListItemComponent, typeof ClientGalleryComponent, typeof IoxVideoComponent, typeof IoxFormComponent, typeof IoxFieldComponent, typeof IoxSubmitButtonComponent, typeof IoxFormSuccessComponent, typeof IoxFormErrorComponent, typeof IoxDialogComponent, typeof IoxPopoverComponent], [typeof i2.CommonModule], [typeof BuilderImageComponent, typeof BuilderSpacerComponent, typeof CardComponent, typeof BuilderDividerComponent, typeof BuilderIconComponent, typeof BuilderLinkComponent, typeof BuilderButtonComponent, typeof BuilderHeadingComponent, typeof TextBlockComponent, typeof SectionComponent, typeof ContainerComponent, typeof LinkedContainerComponent, typeof ClientRepeaterComponent, typeof ButtonBlockComponent, typeof ClientSliderContainerComponent, typeof ClientSliderSlideComponent, typeof ClientListComponent, typeof ClientListItemComponent, typeof ClientGalleryComponent, typeof IoxVideoComponent, typeof IoxFormComponent, typeof IoxFieldComponent, typeof IoxSubmitButtonComponent, typeof IoxFormSuccessComponent, typeof IoxFormErrorComponent, typeof IoxDialogComponent, typeof IoxPopoverComponent]>;
1623
1659
  static ɵinj: i0.ɵɵInjectorDeclaration<IoxBuilderComponentsModule>;
1624
1660
  }
1625
1661
 
@@ -1728,6 +1764,8 @@ interface SliderInputs {
1728
1764
  gridRows?: number | string;
1729
1765
  breakpoints?: string;
1730
1766
  responsive?: ResponsiveOverrides | null;
1767
+ /** Premium M4: the scroll plays it — held mid-screen, resting on each picture; no swipe, no loop, no autoplay. */
1768
+ scrollPlays?: boolean;
1731
1769
  }
1732
1770
  /** The slider's controls, when they are PARTS (CC3) — the elements Swiper is handed. */
1733
1771
  interface SliderControlElements {
@@ -1759,6 +1797,17 @@ declare const LEGACY_SWIPER_CONTROLS: {
1759
1797
  readonly pagination: ".swiper-pagination";
1760
1798
  readonly scrollbar: ".swiper-scrollbar";
1761
1799
  };
1800
+ /**
1801
+ * The feel every live slider gets (premium M4, T3 — Emil 114/121): past either end a drag meets friction, not a wall
1802
+ * (resistance), and a swipe commits only after a few px of travel, so a vertical scroll that drifts never moves a slide.
1803
+ * The easing of the slides is the look's (`slider-ease`, iox-design.css).
1804
+ */
1805
+ declare const SLIDER_FEEL: {
1806
+ readonly resistanceRatio: 0.65;
1807
+ readonly threshold: 6;
1808
+ };
1809
+ /** At or under this width one picture takes the full width (M1.3) unless the author said otherwise there. */
1810
+ declare const SLIDER_PHONE_BREAKPOINT = "mobile";
1762
1811
  /** The pagination part's classes — Swiper's own position CSS (`.swiper-pagination-bullets.swiper-pagination-horizontal`)
1763
1812
  * must not pin a PART: its place is its own styles'. The dots keep Swiper's bullet class. */
1764
1813
  declare const PART_PAGINATION_MODIFIER = "iox-slider-pagination-";
@@ -1767,6 +1816,12 @@ declare function swiperLoopOptions(loop: unknown): {
1767
1816
  loop: boolean;
1768
1817
  rewind: boolean;
1769
1818
  };
1819
+ /**
1820
+ * One picture the full width on a phone (M1.3) — the default the M1 prototype proved: a 1.15 "peek" left an empty strip
1821
+ * beside the picture. Added as a phone layer only where the author set no slides-per-view at a phone width; an effect
1822
+ * that shows one slide anyway keeps its own (a "cards" stack stays a centred card, iox-design.css).
1823
+ */
1824
+ declare function withPhoneDefaults(inputs: SliderInputs): ResponsiveOverrides | null;
1770
1825
  declare function planSwiperOptions(inputs: SliderInputs, ctx: SwiperPlanContext): SwiperPlan;
1771
1826
 
1772
1827
  /**
@@ -1795,6 +1850,19 @@ declare function sliderControlElements(el: Element): {
1795
1850
  /** True when the rendered slider holds any control part (the model's `hasSliderParts`, read off the DOM). */
1796
1851
  declare function domHasSliderParts(el: Element): boolean;
1797
1852
  declare function bootSlider(el: HTMLElement, inputs: SliderInputs, options?: SliderBootOptions): Promise<any>;
1853
+ /** The element a slider the scroll plays is held in: its runway, the Scene root the ONE driver drives (premium M4). */
1854
+ declare const SLIDER_RUNWAY_CLASS = "iox-slider-runway";
1855
+ /** The runway's steps (slides − 1): how many half-screens of scroll it reserves (iox-design.css). */
1856
+ declare const SLIDER_STEPS_PROPERTY = "--slider-steps";
1857
+ /**
1858
+ * The runway a slider the scroll plays sits in — ONE answer for the string path (it writes this wrapper, steps known at
1859
+ * render, so the page never shifts) and the component path (the same class and Scene root; its boot writes the steps).
1860
+ * Null when the scroll does not play it.
1861
+ */
1862
+ declare function sliderRunwayHtml(inputs: SliderInputs | null | undefined, slideCount: number): {
1863
+ open: string;
1864
+ close: string;
1865
+ } | null;
1798
1866
  /** The inputs a string-path slider carries (`data-iox-slider`), or null. */
1799
1867
  declare function sliderInputsOf(el: Element): SliderInputs | null;
1800
1868
  /** The Swiper inputs of a saved SliderContainer node — what the string path serialises into `data-iox-slider`. */
@@ -1822,12 +1890,6 @@ declare function sliderInputsFromProps(props: Record<string, unknown>, responsiv
1822
1890
  * `1vh` / `1vw` fallbacks restore native browser behaviour.
1823
1891
  */
1824
1892
  declare function rewriteViewportUnits(value: string): string;
1825
- /**
1826
- * Style props a type's render-default fully REPLACES. Emitting them would produce a dead
1827
- * declaration that is immediately overridden in the same rule (e.g. an Icon's serialised
1828
- * `lineHeight: 1.5` followed by the forced `line-height: 1`), so callers strip them first via
1829
- * {@link stripSuppressedProps} and let renderDefaultDeclarations supply the real value.
1830
- */
1831
1893
  declare const SUPPRESSED_STYLE_PROPS_BY_TYPE: Readonly<Record<string, readonly string[]>>;
1832
1894
  /** Remove the style props whose value a type's render-default always overrides. Returns the map
1833
1895
  * unchanged (same reference) when the type suppresses nothing. */
@@ -1958,10 +2020,17 @@ type StateMaps = Record<string, Record<string, any> | undefined> | null | undefi
1958
2020
  declare function stateTransitionProperties(stateStyles: StateMaps, responsive?: Record<string, {
1959
2021
  stateStyles?: StateMaps;
1960
2022
  } | undefined> | null, type?: string | null): string[];
2023
+ /**
2024
+ * What an element style animates beyond the properties its states change (premium M4): a link's underline is DRAWN by
2025
+ * the shared CSS (`iox-design.css`) as a background line that grows from the reading start on hover — its growth is a
2026
+ * `background-size` the node's own transition must name, or it would jump.
2027
+ */
2028
+ declare const ELEMENT_STYLE_TRANSITION_EXTRAS: Readonly<Record<string, ReadonlyArray<string>>>;
1961
2029
  /**
1962
2030
  * `styleProps` as a renderer compiles them: a hovering node with no timing of its own takes the default hover timing,
1963
- * and a node whose transition names no properties gets the ones its states change. An author's own `transitionProperty`
1964
- * (or a raw `transition`) always wins. Pure: the node's stored styles are never touched.
2031
+ * and a node whose transition names no properties gets the ones its states change (and what its element style draws,
2032
+ * `ELEMENT_STYLE_TRANSITION_EXTRAS`). An author's own `transitionProperty` (or a raw `transition`) always wins. Pure:
2033
+ * the node's stored styles are never touched.
1965
2034
  */
1966
2035
  declare function withStateTransitions(styleProps: Record<string, any>, stateStyles: StateMaps, elementStyle?: string | null, responsive?: Record<string, {
1967
2036
  stateStyles?: StateMaps;
@@ -2301,6 +2370,98 @@ declare function normalizeAppPath(path: string | null | undefined, baseHref?: st
2301
2370
  /** Whether `href` points at the page at `currentPath` (both app-relative, or absolute under `baseHref`). */
2302
2371
  declare function isCurrentLink(href: string | null | undefined, currentPath: string | null | undefined, options?: CurrentLinkOptions): boolean;
2303
2372
 
2373
+ /**
2374
+ * Reduced motion (CC1, R1 — complex-components plan §2d). The token sheet already collapses the
2375
+ * motion tokens under `prefers-reduced-motion`; everything that moves through SCRIPT must ask the
2376
+ * same question, and ask it HERE: the interaction engines (builder canvas + live site), the Slider's
2377
+ * autoplay and the Gallery's crossfade loop. Publishable gate #6: reduced motion = motion dial 0.
2378
+ */
2379
+ declare const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
2380
+ /** Anything with `matchMedia` — a window, or a stub in a spec. */
2381
+ interface MatchMediaHost {
2382
+ matchMedia?: (query: string) => {
2383
+ matches: boolean;
2384
+ };
2385
+ }
2386
+ /** True when the visitor asked their system for reduced motion. No `matchMedia` (SSR) → false. */
2387
+ declare function prefersReducedMotion(host?: MatchMediaHost | null | undefined): boolean;
2388
+ /** True when script may animate. The ONE question every runtime asks before moving anything. */
2389
+ declare function motionAllowed(host?: MatchMediaHost | null | undefined): boolean;
2390
+
2391
+ /** How far the page has to move before it counts as scrolled — past a trackpad's rest jitter. */
2392
+ declare const SCROLLED_THRESHOLD_PX = 8;
2393
+ /** True once `offset` has passed the threshold. */
2394
+ declare function isScrolled(offset: number, threshold?: number): boolean;
2395
+ /** Anything that scrolls: a window (`scrollY`) or an element (`scrollTop`). */
2396
+ interface ScrollSource {
2397
+ addEventListener(type: 'scroll', fn: () => void, options?: AddEventListenerOptions): void;
2398
+ removeEventListener(type: 'scroll', fn: () => void): void;
2399
+ scrollY?: number;
2400
+ scrollTop?: number;
2401
+ }
2402
+ /**
2403
+ * Keep `SCROLLED_ATTRIBUTE` on `target` while `source` has scrolled past the threshold — what the Scrolled state (G4)
2404
+ * compiles against, on the live site (the window → the document element) and on the canvas (its scroller → the page).
2405
+ * One passive listener, read once per frame, written only when it changes. Returns the stop.
2406
+ */
2407
+ declare function watchScrolled(source: ScrollSource, target: Element, threshold?: number): () => void;
2408
+
2409
+ /**
2410
+ * A header that HIDES (premium components T2, M4): it steps aside while the page scrolls down and comes back the moment
2411
+ * it scrolls up — ONE runtime for the live site (the window's scroll) and the builder canvas (its Lenis scroll, handed in
2412
+ * through `update`). It never moves while the visitor is inside it: keyboard focus in the header, or its own drawer
2413
+ * open, keeps it in place, and it is always there at the top of the page.
2414
+ *
2415
+ * Motion (Emil 30/41/52/59/192): `translate` only, from the live value (a run interrupted by a change of direction turns
2416
+ * back from where it is — never stacked); the exit is faster than the return (dur-fast out, dur-ui back, on the look's
2417
+ * standard easing — the tokens collapse with the look's motion); under reduced motion it fades in place (opacity, no
2418
+ * movement — gentler, not zero), and is not clickable while faded. The return RELEASES (no inline frame is left), the
2419
+ * hidden frame is held, as every exit in the product (M2's settle rule).
2420
+ *
2421
+ * A header that only STAYS needs no runtime: the shared CSS keeps it at the top (`iox-design.css`).
2422
+ */
2423
+ /** Page px the scroll must travel in one direction before the header answers — past a trackpad's jitter. */
2424
+ declare const HEADER_SCROLL_HYSTERESIS_PX = 6;
2425
+ interface HeaderRuntimeOptions {
2426
+ /** Where reduced motion is asked (the window; a stub in a spec). */
2427
+ host?: MatchMediaHost | null;
2428
+ }
2429
+ /** `120ms` / `0.2s` → milliseconds; anything else → null. */
2430
+ declare function durationMs(value: string | null | undefined): number | null;
2431
+ /**
2432
+ * Whether a hiding header should step aside now: the page moved DOWN past the header's own height, the header is not
2433
+ * held (focus inside, its drawer open). Pure: the direction and the offsets come from the caller.
2434
+ */
2435
+ declare function headerShouldHide(offset: number, delta: number, headerHeight: number, held: boolean): boolean;
2436
+ declare class HeaderRuntime {
2437
+ private readonly header;
2438
+ private readonly options;
2439
+ private lastOffset;
2440
+ private hidden;
2441
+ private height;
2442
+ private anim;
2443
+ private readonly resize;
2444
+ private readonly onFocusIn;
2445
+ constructor(header: HTMLElement, options?: HeaderRuntimeOptions);
2446
+ /** True while the header has stepped aside. */
2447
+ get isHidden(): boolean;
2448
+ /** The page now stands at `offset` page px (layout px — the canvas divides out its zoom). */
2449
+ update(offset: number): void;
2450
+ /** Back in place now, with no motion (a page change, the runtime going away). */
2451
+ reset(): void;
2452
+ destroy(): void;
2453
+ private held;
2454
+ private setHidden;
2455
+ }
2456
+ /** The headers that hide while the page scrolls down: in `root`, or among `elements` (each, and what it holds — what a
2457
+ * runtime instance owns: the page's nodes or the globals'). */
2458
+ declare function hidingHeadersIn(root: ParentNode | Iterable<Element>): HTMLElement[];
2459
+ /**
2460
+ * The live site's door: every hiding header in `root` (or among `elements`) follows `source` (the window), through ONE
2461
+ * passive listener read once per frame. Returns the stop.
2462
+ */
2463
+ declare function watchHeaders(source: ScrollSource, root: ParentNode | Iterable<Element>, options?: HeaderRuntimeOptions): () => void;
2464
+
2304
2465
  /**
2305
2466
  * The content traits the accessibility attributes are read from (CC1). Import-free on purpose: the
2306
2467
  * builder's component configs declare these traits, and the node-baseline generator bundles those
@@ -2310,10 +2471,21 @@ declare enum A11yTrait {
2310
2471
  /** "Accessibility ▸ Accessible name" — the name of an icon-only control (and of a Dialog). */
2311
2472
  AccessibleName = "ariaLabel",
2312
2473
  /** A Dialog's "Close when wider than": a breakpoint id, or empty = never. */
2313
- CloseAbove = "closeAbove"
2474
+ CloseAbove = "closeAbove",
2475
+ /** "Tooltip ▸ Words" (premium M5): words for a control that has none of its own. */
2476
+ Tooltip = "tooltip",
2477
+ /** "Tooltip ▸ Side": above (default) · below · start · end. */
2478
+ TooltipPlacement = "tooltipPlacement"
2314
2479
  }
2315
2480
  /** The types that carry an Accessible name trait. */
2316
2481
  declare const ACCESSIBLE_NAME_TYPES: ReadonlyArray<string>;
2482
+ /** The types that carry a Tooltip (premium M5): the controls — a button, a linked box, a link (a gallery's arrows are
2483
+ * ButtonBlocks). Not a Text or an Image: a tooltip on something that takes no focus is invisible to a keyboard. */
2484
+ declare const TOOLTIP_TYPES: ReadonlyArray<string>;
2485
+ /** The attribute a tooltip's words travel on (the raw SSR carries it; the tooltip runtime reads it). */
2486
+ declare const TOOLTIP_ATTRIBUTE = "data-iox-tooltip";
2487
+ /** The side it asks for, when not the default (above). */
2488
+ declare const TOOLTIP_PLACEMENT_ATTRIBUTE = "data-iox-tooltip-placement";
2317
2489
  /** The types that link to a page and can therefore be the current page's link. */
2318
2490
  declare const CURRENT_LINK_TYPES: ReadonlyArray<string>;
2319
2491
 
@@ -2332,6 +2504,8 @@ declare const DIALOG_NODE_TYPE = "Dialog";
2332
2504
  declare const NAMED_GROUP_ROLES: ReadonlyArray<string>;
2333
2505
  /** Carries the min-width (px) at which an open dialog closes itself; the engine listens on it. */
2334
2506
  declare const DIALOG_CLOSE_ABOVE_ATTRIBUTE = "data-iox-dialog-close-above";
2507
+ /** A slide's caption (premium M4, T3): the Slider's Caption part shows the caption of the slide in view. */
2508
+ declare const SLIDE_CAPTION_ATTRIBUTE = "data-iox-caption";
2335
2509
  declare enum A11yAttribute {
2336
2510
  Label = "aria-label",
2337
2511
  Hidden = "aria-hidden",
@@ -2369,6 +2543,8 @@ interface NodeA11yContext {
2369
2543
  }
2370
2544
  /** The attributes a node renders. */
2371
2545
  declare function nodeA11yAttributes(node: A11yNodeSource | null | undefined, ctx?: NodeA11yContext): Record<string, string>;
2546
+ /** The node's tooltip words (premium M5), trimmed, or '' — only on the types that carry one. */
2547
+ declare function tooltipWords(node: A11yNodeSource | null | undefined): string;
2372
2548
  /** The attributes as an HTML string fragment (` name="value"`…) for a string renderer. */
2373
2549
  declare function serializeA11yAttributes(attrs: Readonly<Record<string, string>>, escape: (v: string) => string): string;
2374
2550
  /**
@@ -2395,24 +2571,6 @@ declare function needsGroupName(node: (A11yNodeSource & {
2395
2571
  role?: string | null;
2396
2572
  }) | null | undefined): boolean;
2397
2573
 
2398
- /**
2399
- * Reduced motion (CC1, R1 — complex-components plan §2d). The token sheet already collapses the
2400
- * motion tokens under `prefers-reduced-motion`; everything that moves through SCRIPT must ask the
2401
- * same question, and ask it HERE: the interaction engines (builder canvas + live site), the Slider's
2402
- * autoplay and the Gallery's crossfade loop. Publishable gate #6: reduced motion = motion dial 0.
2403
- */
2404
- declare const REDUCED_MOTION_QUERY = "(prefers-reduced-motion: reduce)";
2405
- /** Anything with `matchMedia` — a window, or a stub in a spec. */
2406
- interface MatchMediaHost {
2407
- matchMedia?: (query: string) => {
2408
- matches: boolean;
2409
- };
2410
- }
2411
- /** True when the visitor asked their system for reduced motion. No `matchMedia` (SSR) → false. */
2412
- declare function prefersReducedMotion(host?: MatchMediaHost | null | undefined): boolean;
2413
- /** True when script may animate. The ONE question every runtime asks before moving anything. */
2414
- declare function motionAllowed(host?: MatchMediaHost | null | undefined): boolean;
2415
-
2416
2574
  /**
2417
2575
  * Scrolling (AI plan rev 3.1 §3p, MO-D1/MO-D7): the look's `scroll` choice → the options the ONE page
2418
2576
  * scroller starts Lenis with, or `null` for the browser's own scrolling. The table is the contract's
@@ -2644,24 +2802,6 @@ declare function splitPressFeedback<T extends PressAction>(actions: ReadonlyArra
2644
2802
  onClick: T[];
2645
2803
  };
2646
2804
 
2647
- /** How far the page has to move before it counts as scrolled — past a trackpad's rest jitter. */
2648
- declare const SCROLLED_THRESHOLD_PX = 8;
2649
- /** True once `offset` has passed the threshold. */
2650
- declare function isScrolled(offset: number, threshold?: number): boolean;
2651
- /** Anything that scrolls: a window (`scrollY`) or an element (`scrollTop`). */
2652
- interface ScrollSource {
2653
- addEventListener(type: 'scroll', fn: () => void, options?: AddEventListenerOptions): void;
2654
- removeEventListener(type: 'scroll', fn: () => void): void;
2655
- scrollY?: number;
2656
- scrollTop?: number;
2657
- }
2658
- /**
2659
- * Keep `SCROLLED_ATTRIBUTE` on `target` while `source` has scrolled past the threshold — what the Scrolled state (G4)
2660
- * compiles against, on the live site (the window → the document element) and on the canvas (its scroller → the page).
2661
- * One passive listener, read once per frame, written only when it changes. Returns the stop.
2662
- */
2663
- declare function watchScrolled(source: ScrollSource, target: Element, threshold?: number): () => void;
2664
-
2665
2805
  /**
2666
2806
  * page-style — the ONE compiler that turns a page's style settings into CSS.
2667
2807
  *
@@ -3718,7 +3858,7 @@ declare const CALENDAR_CLOSING_ATTRIBUTE = "data-iox-closing";
3718
3858
  declare const CALENDAR_INSTANT_ATTRIBUTE = "data-iox-instant";
3719
3859
  /** On the panel the builder canvas draws for its design-time Open state (in the flow, inert). */
3720
3860
  declare const CALENDAR_DESIGN_ATTRIBUTE = "data-iox-cal-design";
3721
- /** A phone gets the sheet (the drawer curve, the scrim) — the same width the shared CSS keys on. */
3861
+ /** A phone gets the sheet (the drawer curve, the scrim) — the floating family's ONE decision (a popover too). */
3722
3862
  declare const CALENDAR_SHEET_QUERY = "(max-width: 767px)";
3723
3863
  /** The language the field speaks: the host's, the nearest `[lang]`, the document's. */
3724
3864
  declare function fieldLanguage(field: Element, lang?: string | null): string;
@@ -3792,15 +3932,16 @@ declare const SHAKE_EASING = "cubic-bezier(0.23, 1, 0.32, 1)";
3792
3932
  declare function shakeElement(el: Element | null | undefined, reducedMotion?: boolean): Animation | null;
3793
3933
 
3794
3934
  /**
3795
- * placeFloating — where a panel anchored to a control goes (premium components N8, reused by M5's tooltip and popover).
3935
+ * placeFloating — where a panel anchored to a control goes (premium components N8; M5's tooltip and popover).
3796
3936
  *
3797
- * ONE pure decision for every floating panel: under its anchor, aligned to the anchor's reading start (the left edge in
3798
- * LTR, the right in RTL); above it when there is no room below and more above; held inside the viewport with a margin;
3799
- * and the transform-origin AT the anchor, so the panel grows from the control that opened it (Emil 47) — even when the
3800
- * clamp moved it sideways.
3937
+ * ONE pure decision for every floating panel: on the side the caller prefers (under its anchor by default; a tooltip
3938
+ * above), flipped to the opposite side when the preferred one has no room and the other has more; lined up with the
3939
+ * anchor's reading start (the left edge in LTR, the right in RTL) or centred on it; held inside the viewport with a
3940
+ * margin; and the transform-origin AT the anchor, so the panel grows from the control that opened it (Emil 47) — even
3941
+ * when the clamp moved it sideways.
3801
3942
  *
3802
- * Lives in the main entry: nothing server-side places a panel, and the date picker (now) and the floating family (M5)
3803
- * are DOM runtimes of the main entry. Pure — no DOM read here: the caller measures, this decides, the caller writes.
3943
+ * Lives in the main entry: nothing server-side places a panel; the date picker, the tooltip and the popover are DOM
3944
+ * runtimes of the main entry. Pure — no DOM read here: the caller measures, this decides, the caller writes.
3804
3945
  */
3805
3946
  interface FloatingRect {
3806
3947
  top: number;
@@ -3816,31 +3957,391 @@ interface FloatingViewport {
3816
3957
  width: number;
3817
3958
  height: number;
3818
3959
  }
3960
+ /** The side of the anchor the panel sits on. Start / End follow the reading direction (Start is the left in LTR). */
3819
3961
  declare enum FloatingSide {
3820
3962
  Below = "below",
3821
- Above = "above"
3963
+ Above = "above",
3964
+ Start = "start",
3965
+ End = "end"
3966
+ }
3967
+ /** How the panel lines up with its anchor across the side: at the anchor's reading start (top, for a Start / End
3968
+ * panel), or centred on it (a tooltip). */
3969
+ declare enum FloatingAlign {
3970
+ Start = "start",
3971
+ Center = "center"
3822
3972
  }
3823
3973
  interface FloatingOptions {
3824
3974
  /** Space between the anchor and the panel. */
3825
3975
  gap?: number;
3826
3976
  /** Space the panel always keeps from the viewport's edges. */
3827
3977
  margin?: number;
3828
- /** Right-to-left: the panel lines up with the anchor's right edge. */
3978
+ /** Right-to-left: Start is the right side, and a start-aligned panel lines up with the anchor's right edge. */
3829
3979
  rtl?: boolean;
3980
+ /** The side the panel prefers (Below when absent). */
3981
+ side?: FloatingSide;
3982
+ /** Start (default) or Center. */
3983
+ align?: FloatingAlign;
3830
3984
  }
3831
3985
  interface FloatingPlacement {
3832
3986
  top: number;
3833
3987
  left: number;
3988
+ /** The side it ended on (the preferred one, or its opposite after a flip). */
3834
3989
  side: FloatingSide;
3835
- /** A CSS transform-origin in the panel's own box, pointing at the anchor's reading-start corner. */
3990
+ /** A CSS transform-origin in the panel's own box, pointing at the anchor. */
3836
3991
  origin: string;
3837
3992
  }
3838
3993
  /** Emil's popover spacing: close enough to read as the control's, clear of its focus ring. */
3839
3994
  declare const FLOATING_GAP = 8;
3840
3995
  /** The viewport margin — a panel never touches the screen's edge. */
3841
3996
  declare const FLOATING_MARGIN = 12;
3997
+ /**
3998
+ * Where a floating panel stops being a panel and becomes a bottom sheet (the date picker's calendar, a popover): a
3999
+ * phone. ONE decision, the width the shared CSS keys its sheets on.
4000
+ */
4001
+ declare const FLOATING_SHEET_QUERY = "(max-width: 767px)";
3842
4002
  /** Where `panel` goes beside `anchor` inside `viewport`. */
3843
4003
  declare function placeFloating(anchor: FloatingRect, panel: FloatingSize, viewport: FloatingViewport, options?: FloatingOptions): FloatingPlacement;
4004
+ /**
4005
+ * A screen rect in the coordinates of a LAYER — a box that fills the viewport on the live site (scale 1, at 0,0) and
4006
+ * the page frame on the builder canvas (offset, zoomed). The floating runtimes place inside a layer, so one placement
4007
+ * serves both; `layerRect` is the layer's screen rect and `scale` its zoom (its screen width over its layout width).
4008
+ */
4009
+ declare function toLayerRect(rect: FloatingRect, layerRect: Pick<FloatingRect, 'top' | 'left'>, scale?: number): FloatingRect;
4010
+
4011
+ /**
4012
+ * THE FLOATING LAYER (premium components M5) — the one box tooltips and toasts are placed in.
4013
+ *
4014
+ * On the live site it is a `popover="manual"` element in the TOP LAYER, filling the viewport: above a fixed header, a
4015
+ * slider's `overflow: hidden`, a nav's `backdrop-filter` (which would otherwise contain anything fixed inside it).
4016
+ * Each SCOPE has its own layer — the document's body, or an open modal `<dialog>` (a tooltip on a lightbox's arrow, a
4017
+ * toast raised from a drawer's form): a layer inside the dialog is shown after it, so it sits above it in the top
4018
+ * layer, it is not inert behind it, and it inherits the dialog's tokens and scheme through the DOM.
4019
+ * On the builder canvas it is a plain `position: fixed` box inside the transformed page frame, which CONTAINS it — so
4020
+ * it fills the frame and zooms with it; nothing is drawn over the builder's own panels.
4021
+ *
4022
+ * Every placement is made in the layer's own px (`layerFrame` + `toLayerRect`), so the site and the canvas share it.
4023
+ */
4024
+ declare const FLOATING_LAYER_CLASS = "iox-float-layer";
4025
+ interface FloatingLayerOptions {
4026
+ /** Where the layer lives when the trigger is in no open dialog: the body on the site; on the canvas the token scope
4027
+ * the element sits in (the page frame, or the globals' overlay) — a function of the element it was raised from. */
4028
+ container?: Element | null | ((from: Element | null) => Element | null);
4029
+ /** True on the live site (a top-layer popover); false on the canvas (contained by the zoomed frame). */
4030
+ topLayer?: boolean;
4031
+ }
4032
+ /** The layer's frame: where it is on screen, its zoom, and its own size — the viewport a placement keeps inside. */
4033
+ interface LayerFrame {
4034
+ rect: {
4035
+ top: number;
4036
+ left: number;
4037
+ };
4038
+ scale: number;
4039
+ viewport: FloatingViewport;
4040
+ }
4041
+ /** True when the browser has the Popover API (jsdom and old engines do not — they open by `hidden`). */
4042
+ declare function canPopover(el: Element): boolean;
4043
+ /** True while a `popover` element is shown in the top layer. */
4044
+ declare function isOpenPopover(el: Element): boolean;
4045
+ /** Show a `popover` element in the top layer; an element without the API is un-hidden instead. */
4046
+ declare function showInTopLayer(el: HTMLElement): void;
4047
+ /** Take a `popover` element out of the top layer (or hide it). */
4048
+ declare function hideFromTopLayer(el: HTMLElement): void;
4049
+ /** The scope a floating element raised from `from` belongs to: its closest open modal dialog, else the container. */
4050
+ declare function floatingScope(from: Element | null | undefined, options?: FloatingLayerOptions): Element | null;
4051
+ /** The layer of a scope — created on first use, raised into the top layer when the site asks for it. */
4052
+ declare function floatingLayer(scope: Element, options?: FloatingLayerOptions): HTMLElement;
4053
+ /** Show a top-layer layer (again): a layer closed by a scope change, or one a later modal dialog now covers. */
4054
+ declare function raiseFloatingLayer(layer: HTMLElement): void;
4055
+ /** The layer's frame. On the site: (0, 0), scale 1, the viewport. On the canvas: the frame's corner, its zoom, its px. */
4056
+ declare function layerFrame(layer: HTMLElement): LayerFrame;
4057
+ /** An element's screen rect in the layer's px. */
4058
+ declare function rectInLayer(el: Element, frame: LayerFrame): FloatingRect;
4059
+
4060
+ /**
4061
+ * THE TOOLTIP (premium components M5, N4) — words for a control that has none of its own (an icon button, a gallery
4062
+ * arrow). ONE DOM runtime for the live site (both engine paths) and the builder canvas; the trigger carries what the
4063
+ * shared `nodeA11yAttributes` rendered (`data-iox-tooltip`, `data-iox-tooltip-placement`), so the raw SSR already says it.
4064
+ *
4065
+ * - Shows on HOVER for a mouse or a pen (never a finger — a tap is not a hover) and on KEYBOARD focus
4066
+ * (`:focus-visible`), never on a tap. A press, Esc, a scroll or leaving hides it.
4067
+ * - The first waits (`TOOLTIP_FIRST_DELAY_MS`); while one is open, or within `TOOLTIP_WARM_MS` of one closing, the next
4068
+ * opens AT ONCE with no motion (Emil 125). Keyboard focus opens at once, with no motion (Emil 2).
4069
+ * - Grows from its trigger (the origin `placeFloating` gives, Emil 47/124); leaves faster than it came (Emil 30).
4070
+ * - Hoverable and dismissible (WCAG 1.4.13): the pointer may move onto it; Esc hides it until the pointer or focus
4071
+ * leaves the trigger.
4072
+ * - `aria-describedby` points at it while it is shown — unless the tooltip IS the control's name (an icon-only control:
4073
+ * `nodeA11yAttributes` already made the words its `aria-label`; describing it twice would read it twice).
4074
+ */
4075
+ /** On the drawn tooltip while it appears or moves with no motion (a neighbour, keyboard focus). */
4076
+ declare const TOOLTIP_INSTANT_ATTRIBUTE = "data-iox-instant";
4077
+ /** On a trigger whose tooltip the builder canvas holds open (the design-time "Showing on canvas" state). */
4078
+ declare const TOOLTIP_PINNED_ATTRIBUTE = "data-iox-tooltip-pinned";
4079
+ /** The side the drawn tooltip ended on (after a flip) — the shared CSS reads it for nothing but the e2e reads it. */
4080
+ declare const TOOLTIP_SIDE_ATTRIBUTE = "data-iox-side";
4081
+ declare enum TooltipClass {
4082
+ Tip = "iox-tooltip",
4083
+ /** The element style's marker — set when the trigger wears the design system (a legacy page keeps the literals). */
4084
+ Marker = "iox-es-tooltip"
4085
+ }
4086
+ /** The FIRST tooltip waits this long under a resting pointer (Emil 125: the first waits, the next does not). */
4087
+ declare const TOOLTIP_FIRST_DELAY_MS = 500;
4088
+ /** A tooltip opened within this window of another closing opens at once — moving along a row of icons. */
4089
+ declare const TOOLTIP_WARM_MS = 300;
4090
+ /** Leaving the trigger hides after this grace, so the pointer can cross onto the tooltip (WCAG 1.4.13 hoverable). */
4091
+ declare const TOOLTIP_HIDE_GRACE_MS = 100;
4092
+ interface TooltipTimingState {
4093
+ /** A tooltip is shown right now. */
4094
+ open: boolean;
4095
+ /** When the last one closed (ms, the runtime's clock), or null. */
4096
+ lastClosedAt: number | null;
4097
+ }
4098
+ /** How long before a tooltip shows, and whether it shows with no motion. Pure — the runtime asks it on every hover. */
4099
+ declare function tooltipTiming(state: TooltipTimingState, now: number, firstDelayMs?: number, warmMs?: number): {
4100
+ delayMs: number;
4101
+ instant: boolean;
4102
+ };
4103
+ /** The side a trigger asks for (Above when it names none, or names something else). */
4104
+ declare function tooltipSide(value: string | null | undefined): FloatingSide;
4105
+ interface TooltipRuntimeOptions {
4106
+ /** Where the floating layer lives outside an open dialog: the body on the site, the canvas's token scope. */
4107
+ container?: Element | null | ((from: Element | null) => Element | null);
4108
+ /** True on the live site (the top layer); false on the canvas (contained by the zoomed frame). */
4109
+ topLayer?: boolean;
4110
+ /** The clock (a spec's fake). */
4111
+ now?: () => number;
4112
+ }
4113
+ /** The runtime over one root (the document on the site, the page's frame on the canvas). Built by `attachTooltips`. */
4114
+ declare class TooltipRuntime {
4115
+ private readonly root;
4116
+ private readonly options;
4117
+ private tip;
4118
+ private trigger;
4119
+ private pinned;
4120
+ private pinWatch;
4121
+ private suppressed;
4122
+ private showTimer;
4123
+ private hideTimer;
4124
+ private lastClosedAt;
4125
+ private exiting;
4126
+ private readonly listeners;
4127
+ constructor(root: Document | Element, options?: TooltipRuntimeOptions);
4128
+ /** The trigger whose tooltip is shown, or null. */
4129
+ get shownFor(): HTMLElement | null;
4130
+ /** The drawn tooltip (created on first show). */
4131
+ get element(): HTMLElement | null;
4132
+ /** Show the trigger's tooltip now. `instant` skips the entrance (a neighbour, keyboard focus, the canvas pin). */
4133
+ show(trigger: HTMLElement, instant?: boolean): void;
4134
+ /** Hide it — with its exit, or `immediate`ly (a press, Esc, a scroll, keyboard focus leaving). */
4135
+ hide(immediate?: boolean): void;
4136
+ /** The builder canvas's design-time state: hold the trigger's tooltip open (true) or let it go (false). */
4137
+ pin(trigger: HTMLElement, on: boolean): void;
4138
+ /** Place the shown tooltip again (the trigger moved — the canvas re-laid out). */
4139
+ reposition(): void;
4140
+ destroy(): void;
4141
+ private get doc();
4142
+ private now;
4143
+ private triggerOf;
4144
+ private onPointerOver;
4145
+ private onPointerOut;
4146
+ private onFocusIn;
4147
+ private onFocusOut;
4148
+ private escape;
4149
+ /** A scroll hides a hover / focus tooltip (it would float away from its trigger); a pinned one follows it. */
4150
+ private onScroll;
4151
+ /** A press, a scroll: gone at once (and a pending one never shows). */
4152
+ private dismiss;
4153
+ private cancelHide;
4154
+ private clearTimers;
4155
+ /** The drawn tooltip, in the layer of the trigger's scope (a lightbox's arrow → the lightbox's own layer). */
4156
+ private ensureTip;
4157
+ /** Where it goes: the side the trigger asks for (flipped when there is no room), centred on it, inside the layer. */
4158
+ private place;
4159
+ /** Point the trigger's description at the tooltip — unless the tooltip is already its name. */
4160
+ private describe;
4161
+ private listen;
4162
+ }
4163
+ /** The runtime already running over `root`, if any. */
4164
+ declare function tooltipsOf(root: Document | Element | null | undefined): TooltipRuntime | null;
4165
+ /** Run tooltips over `root` — once: a root already running is returned as is. */
4166
+ declare function attachTooltips(root: Document | Element | null | undefined, options?: TooltipRuntimeOptions): TooltipRuntime | null;
4167
+
4168
+ /**
4169
+ * THE POPOVER on the live site (premium components M5, N4) — an anchored, NON-modal panel of ordinary nodes, opened by
4170
+ * its opener's `openPopover` / `togglePopover` action and closed by `closePopover`, Esc or a press outside it. ONE DOM
4171
+ * runtime for both engine paths (the component path and the string path render the same element: `[data-iox-popover]`,
4172
+ * `popover="manual"`, `role="dialog"`, `tabindex="-1"`, the node's own id); the builder canvas has its own twin that
4173
+ * places itself with the same `placeFloating`.
4174
+ *
4175
+ * - In the TOP LAYER (`showPopover`): above a fixed header and a slider's clipping; it still inherits the section's tokens
4176
+ * and scheme through the DOM, where the node sits.
4177
+ * - Placed beside its opener on the side the author picked (flipped at the viewport's edge, shifted inside it), lined up
4178
+ * with the opener's reading start, growing from it (Emil 47/123); placed again while the page scrolls or resizes.
4179
+ * - On a phone (`FLOATING_SHEET_QUERY`, the date picker's decision) it is a bottom sheet over the look's scrim, and the
4180
+ * page holds still under it.
4181
+ * - Focus moves INTO it on open (the panel itself: no ring after a tap), and back to the opener when Esc closes it, or
4182
+ * when a press outside closes it and focus had nowhere else to go. Focus leaving it (Tab) closes it.
4183
+ * - A keyboard open (Enter / Space on the opener) and Esc have no motion (Emil 2); the exit is faster than the entrance
4184
+ * (the shared CSS, on the popover tokens).
4185
+ */
4186
+ declare enum PopoverAttribute {
4187
+ Root = "data-iox-popover",
4188
+ Placement = "data-iox-popover-placement",
4189
+ /** On the panel while it is a phone's bottom sheet. */
4190
+ Sheet = "data-iox-sheet",
4191
+ /** The side it ended on (after a flip). */
4192
+ Side = "data-iox-side",
4193
+ /** Opened from the keyboard: it appears and goes with no motion. */
4194
+ Instant = "data-iox-instant",
4195
+ /** On the panel while it is open (the canvas twin reads the same name). */
4196
+ Open = "data-iox-open"
4197
+ }
4198
+ declare const POPOVER_SELECTOR = "[data-iox-popover]";
4199
+ interface PopoverOpenOptions {
4200
+ /** The element whose action opened it — what it is anchored to and where focus goes back. */
4201
+ opener?: HTMLElement | null;
4202
+ /** Opened from the keyboard: no motion in, none out. */
4203
+ instant?: boolean;
4204
+ /** The page holds still under a phone's sheet (Lenis would scroll it). */
4205
+ lockScroll?: () => void;
4206
+ unlockScroll?: () => void;
4207
+ }
4208
+ interface PopoverCloseOptions {
4209
+ /** No motion (Esc, a keyboard action). */
4210
+ instant?: boolean;
4211
+ /** Focus back on the opener: always (Esc), or only when focus was inside the panel or nowhere (`'if-lost'`). */
4212
+ returnFocus?: boolean | 'if-lost';
4213
+ }
4214
+ /** True while the popover is open (an exit that is playing counts as closed). */
4215
+ declare function isPopoverOpen(el: Element | null | undefined): boolean;
4216
+ /** The side a panel asks for (Below unless it names another). */
4217
+ declare function popoverSide(value: string | null | undefined): FloatingSide;
4218
+ /** Beside its opener, inside the viewport, growing from it — the ONE `placeFloating`. A sheet is the shared CSS's. */
4219
+ declare function placePopover(el: HTMLElement, opener: HTMLElement | null): void;
4220
+ /** Open the popover beside `options.opener`. Opening one that is leaving keeps it open. */
4221
+ declare function openPopover(el: HTMLElement | null | undefined, options?: PopoverOpenOptions): void;
4222
+ /** Close the popover with its exit (the shared CSS), then hand focus back as asked. */
4223
+ declare function closePopover(el: HTMLElement | null | undefined, options?: PopoverCloseOptions): Promise<void>;
4224
+ /** Toggle: close an open one, open a closed (or leaving) one. */
4225
+ declare function togglePopover(el: HTMLElement | null | undefined, options?: PopoverOpenOptions): void;
4226
+ /** Close every open popover under `root` at once (a page leaving, a route change). */
4227
+ declare function closeAllPopovers(root: ParentNode | null | undefined): void;
4228
+
4229
+ /**
4230
+ * THE TOAST (premium components M5, N3) — a non-modal notice at an edge of the screen. ONE DOM runtime for the live site
4231
+ * (the `showToast` action on both engine paths, and a form that keeps its fields after sending) and the builder canvas
4232
+ * (the same action RUNS there; the design-time "Showing on canvas" state holds one up to style it).
4233
+ *
4234
+ * - Speaks through a polite live region that exists BEFORE the first notice lands (a region inserted with its words is
4235
+ * not announced); never takes focus.
4236
+ * - Enters from its edge and leaves to the SAME edge (Emil 129–130), on the look's toast tokens (400ms `ease` in, a
4237
+ * faster exit); reduced motion keeps the fade and drops the slide (the shared CSS).
4238
+ * - Its timer pauses while the tab is hidden, the pointer is on the stack or focus is inside it (Emil 132; WCAG 2.2.1),
4239
+ * and it has a close control.
4240
+ * - At most `TOAST_MAX_VISIBLE` at once — the oldest leaves for a new one; the rest slide to their new places (FLIP on
4241
+ * `translate`, which composes with the entrance's `transform`), so nothing jumps.
4242
+ * - Above the home indicator (`env(safe-area-inset-*)`) and above a bottom tab bar (the shared CSS).
4243
+ */
4244
+ declare enum ToastEdge {
4245
+ Bottom = "bottom",
4246
+ Top = "top"
4247
+ }
4248
+ declare enum ToastClass {
4249
+ Stack = "iox-toasts",
4250
+ Toast = "iox-toast",
4251
+ Text = "iox-toast__text",
4252
+ Close = "iox-toast__close",
4253
+ /** The element style's marker — set when the element it was raised from wears the design system. */
4254
+ Marker = "iox-es-toast"
4255
+ }
4256
+ declare const TOAST_EDGE_ATTRIBUTE = "data-iox-edge";
4257
+ /** On the toast the builder canvas holds up for styling (no timer, never leaves on its own). */
4258
+ declare const TOAST_DESIGN_ATTRIBUTE = "data-iox-toast-design";
4259
+ /** A stack created for a toast waits this long before the words land: a live region must exist before it changes. */
4260
+ declare const TOAST_FIRST_LANDS_MS = 80;
4261
+ /** The most toasts on screen at once (Emil 131: a short stack, never a wall). */
4262
+ declare const TOAST_MAX_VISIBLE = 3;
4263
+ /** A toast stays at least this long … */
4264
+ declare const TOAST_MIN_MS = 4000;
4265
+ /** … at most this long … */
4266
+ declare const TOAST_MAX_MS = 10000;
4267
+ /** … and this much longer per character it says (a reader's pace). */
4268
+ declare const TOAST_MS_PER_CHAR = 60;
4269
+ /** The close control's words in the page's language. */
4270
+ declare const TOAST_CLOSE_WORDS: Readonly<Record<string, string>>;
4271
+ /** "Close" in `lang` (its base language), else English. */
4272
+ declare function toastCloseWord(lang: string | null | undefined): string;
4273
+ /** How long a toast stays: long enough to read, within bounds. Pure. */
4274
+ declare function toastDuration(text: string, override?: number | null): number;
4275
+ /** Which toasts leave so a new one fits: the oldest first, keeping `max - 1` beside the newcomer. Pure. */
4276
+ declare function toastsToEvict<T>(shown: ReadonlyArray<T>, max?: number): T[];
4277
+ /** The edge a value names (Bottom unless it says Top). */
4278
+ declare function toastEdge(value: unknown): ToastEdge;
4279
+ declare enum PauseReason {
4280
+ Hidden = "hidden",
4281
+ Hover = "hover",
4282
+ Focus = "focus"
4283
+ }
4284
+ /**
4285
+ * A countdown that stops while any reason holds it (the tab hidden, the pointer on the stack, focus inside) and runs
4286
+ * on from what was left. Its clock and scheduler are injectable for a spec.
4287
+ */
4288
+ declare class PausableTimer {
4289
+ private readonly onDone;
4290
+ private readonly now;
4291
+ private remaining;
4292
+ private startedAt;
4293
+ private handle;
4294
+ private readonly reasons;
4295
+ private done;
4296
+ constructor(ms: number, onDone: () => void, now?: () => number);
4297
+ get paused(): boolean;
4298
+ /** What is left (ms), counting the time run since the last start. */
4299
+ left(): number;
4300
+ pause(reason: PauseReason): void;
4301
+ resume(reason: PauseReason): void;
4302
+ clear(): void;
4303
+ private run;
4304
+ }
4305
+ interface ToastOptions extends FloatingLayerOptions {
4306
+ /** The edge it enters from and leaves to (Bottom by default). */
4307
+ edge?: ToastEdge | string | null;
4308
+ /** How long it stays (else `toastDuration(text)`). */
4309
+ durationMs?: number | null;
4310
+ /** The element that raised it — its scope (an open dialog) and whether the look applies. */
4311
+ from?: Element | null;
4312
+ /** The page's language for the close control's name. */
4313
+ lang?: string | null;
4314
+ }
4315
+ interface ToastHandle {
4316
+ readonly element: HTMLElement;
4317
+ /** Leave now (the close control, a newer toast, the canvas switching it off). */
4318
+ close(): void;
4319
+ }
4320
+ /** Take down every toast stack under `root` (a page torn down, a spec). */
4321
+ declare function clearToasts(root: ParentNode | null | undefined): void;
4322
+ /**
4323
+ * Raise a toast. Null when there is nothing to say or nowhere to say it (no document).
4324
+ * A first toast creates its live region and lands a frame later, so assistive technology hears it.
4325
+ */
4326
+ declare function showToast(doc: Document | null | undefined, text: string | null | undefined, options?: ToastOptions): ToastHandle | null;
4327
+ /**
4328
+ * The builder canvas's design-time state: hold a toast up (no timer) so the author styles it, or take it down. One per
4329
+ * layer; showing it again only changes its words.
4330
+ */
4331
+ declare function showToastDesign(doc: Document | null | undefined, text: string, show: boolean, options?: ToastOptions): void;
4332
+
4333
+ /**
4334
+ * A form that KEEPS its fields after sending says so in a toast (premium M5, N3 — the Form's After sending ▸ "Keep the
4335
+ * fields and show a toast"). Its words are the form's own Sent words — the ones its submit button shows once it has sent
4336
+ * (the author's "Once sent", else "Sent" in the page's language) — so the toast and the button never disagree. ONE
4337
+ * helper for the component path and the string path.
4338
+ */
4339
+ /** The Sent words a form says: its submit button's Sent label, else "Sent" in its language. */
4340
+ declare function formSentWords(form: Element): string;
4341
+ /** True when the rendered form keeps its fields and toasts (the attribute every renderer writes). */
4342
+ declare function formToastsOnSend(form: Element | null | undefined): boolean;
4343
+ /** Raise the form's Sent toast (from the form — its scope and its look). */
4344
+ declare function raiseFormToast(form: Element): ToastHandle | null;
3844
4345
 
3845
- export { A11yAttribute, A11yTrait, ACCESSIBLE_NAME_TYPES, AOSService, ARIA_CURRENT_PAGE, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CALENDAR_CLOSING_ATTRIBUTE, CALENDAR_DESIGN_ATTRIBUTE, CALENDAR_INSTANT_ATTRIBUTE, CALENDAR_SHEET_QUERY, COMPONENT_STATE_SELECTOR, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CURRENT_LINK_TYPES, CalendarClass, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ComponentState, ContainerComponent, ContextStore, DECORATIVE_TYPES, DEFAULT_GALLERY_SCHEDULER, DEFAULT_INTERACTION_EASING, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DIALOG_CLOSE_ABOVE_ATTRIBUTE, DIALOG_NODE_TYPE, DatePickerRuntime, DeclarationContext, EASING_KEYWORDS, EASING_TOKENS, ENTRANCE_ACTION_TYPES, ENTRANCE_FALLBACK_CSS, ENTRANCE_NOSCRIPT_CSS, ENTRANCE_PRESTATE_ATTRIBUTE, EXIT_ACTION_TYPES, EasingKeyword, EasingToken, FLOATING_GAP, FLOATING_MARGIN, FloatingSide, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HOVER_DEFAULT_TRANSITION_TRAITS, HOVER_MEDIA_QUERY, HOVER_STATES, INTERACTION_ANIMATION_ID, INTERACTION_HIDDEN_ATTRIBUTE, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, IoxVideoComponent, LAST_EMITTED_STATES, LEGACY_DIRECTION_KEY, LEGACY_HOVER_TRANSITION_TRAITS, LEGACY_SWIPER_CONTROLS, LinkedContainerComponent, MANAGED_A11Y_ATTRIBUTES, MAX_LINES_KEY, NAMED_GROUP_ROLES, NO_PAGE_TRANSITION, ON_STATE_ROLES, OUTER_STYLE_PROPS, PAGE_STYLE_TOKENS, PAGE_TOKEN_FALLBACKS, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PART_PAGINATION_MODIFIER, PHONE_TRANSITION_QUERY, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, PageStyleField, PageStyleSource, PointerKind, REDUCED_MOTION_QUERY, RELATIONAL_STATE_PSEUDO, RevealActionType, SCROLLED_ATTRIBUTE, SCROLLED_STATE_ROLE, SCROLLED_THRESHOLD_PX, SCROLL_EASINGS, SELF_PLAYING_TRIGGERS, SHAKE_DURATION_MS, SHAKE_EASING, SHAKE_KEYFRAMES, SLIDER_INPUTS_ATTRIBUTE, SLIDER_INPUT_NAMES, STATE_PSEUDO_CLASS, STRUCTURAL_STATES, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_A11Y_OPTIONS, SWIPER_RESPONSIVE_TRAITS, SWIPER_TRIGGER_EVENTS, ScrollEasing, SectionComponent, SettleMode, StringFormRuntime, SwiperModuleName, TARGETED_STATE_SUFFIX, TEXT_ALIGN_KEY, TEXT_DIRECTION_KEY, TRANSITION_FEELS, TRANSITION_PROPERTY_KEY, TextAlign, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, VisibilityActionType, activeActions, animateAction, applyBindingPipes, applyFeel, attachDatePicker, attachDatePickers, attachStringForm, bootSlider, breakpointDef, breakpointForWidth, breakpointQueryFor, buildInteractionKeyframes, buildPartSelector, buildSwiperBreakpoints, buildTargetedStateSelector, buildTargetedSuffixSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, closeAboveMediaQuery, collectContextSlotKeys, compileDeclarations, compilePageStyle, componentStatesFor, composeVirtualTraits, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, datePickerOf, declaredInputNames, decomposeBackdropFilter, defaultHoverTransitionTraits, defaultMessageResolver, deriveSeoFromContent, describePageStyle, describeSeoFields, dialogCloseAboveMinWidth, domHasSliderParts, effectiveActionType, effectiveTransitionId, entrancePreStateStyle, entranceStartsHidden, feelFor, fieldLanguage, finalKeyframe, framesFromLiveValue, gateHoverRule, getSeoValue, hasHoverState, hasOwnPageTransition, hasOwnTransition, initialSlotValues, isActionEnabled, isContextAction, isCubicBezier, isCurrentLink, isEasingToken, isExternalOrFragment, isGradientPaint, isHoverPointer, isHoverState, isInputOverriddenAt, isInteractionEasing, isLastEmittedStateKey, isOverriddenAt, isPressFeedback, isScrolled, isStructuralState, isValidSlotKey, isWholeBackdropSet, keyframePropertyName, keyframeStyleEntries, legacyEnterToTransition, mediaQueryFor, mergeSwiperBreakpoints, migrateLegacyDirection, migrateLegacyTextAlign, motionAllowed, nearestCommonAncestorId, needsAccessibleName, needsGroupName, nodeA11yAttributes, nodeCssId, nodeTraitValue, nodeUsesContext, normalizeAppPath, normalizeGalleryImage, normalizeIconClass, orderStatesForEmit, pageTransitionOf, parentBreakpoint, parseUrlList, partClassName, placeFloating, planPartRule, planResponsiveRules, planScroll, planStateRule, planSwiperOptions, playDualLayerTransition, playInteraction, prefersReducedMotion, renderDefaultDeclarations, resetPageStyleField, resetSeoField, resolveBoundValue, resolveContextValue, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolveInteractionEasing, resolvePageTransition, resolvePath, resolveSeo, resolveStateStyles, resolveStyleProps, resolveToggleVisibility, resolveValueChain, rewriteViewportUnits, safeSetInput, serializeA11yAttributes, setDateFieldValue, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, settleInteraction, settleModeFor, shakeElement, showCalendarDesign, sliderControlElements, sliderInputsFromProps, sliderInputsOf, splitOuterProps, splitPressFeedback, stateNamesIn, statePseudoClass, stateSelectorSuffix, stateTransitionProperties, stringFormRuntimeOf, stripSuppressedProps, swiperAutoplayAllowed, swiperLoopOptions, swiperModuleNames, syncNodeA11yAttributes, syncSubmitButtons, targetedStateSelector, transitionPropertyList, viewportTransitionContext, watchScrolled, withContextSlots, withStateTransitions, wrapInBreakpointQuery, wrapInMediaQuery };
3846
- export type { A11yNodeSource, AnimateActionOptions, BoundValueSpec, BreakpointDef, ContextActionEffect, ContextActionLike, ContextItemRef, ContextSlotDefault, ContextValueSpec, ContextWriteScope, CurrentLinkOptions, DatePickerOptions, FloatingOptions, FloatingPlacement, FloatingRect, FloatingSize, FloatingViewport, FormMessageResolver, GalleryBoundSource, GalleryDurations, GalleryEffect, GalleryEffectDescriptor, GalleryImage, GalleryLoopOptions, GalleryLoopScheduler, GalleryLoopState, GallerySlideState, IBuilderEventEmitter, InputMap, InteractionKeyframe, IoxContextSlot, IoxPipe, MatchMediaHost, NodeA11yContext, OverrideBreakpoint, PageScrollStart, PageStyleFieldState, PageStyleOptions, PageStyleSettings, PageTransitionCategory, PageTransitionCategoryMeta, PageTransitionContext, PageTransitionOptions, PageTransitionPreset, PipeArgSpec, PipeContext, PipeDescriptor, PlannedPageTransition, PressAction, RegisteredField, ResolvedPageTransition, ResponsiveLayer, ResponsiveOverrides, ResponsiveRuleSet, RouteAnimationLike, ScrollPlanContext, ScrollSource, SeoDerivedContent, SeoFieldSource, SeoFieldState, SeoResolveContext, SetContextParams, SettleOptions, SliderBootOptions, SliderControlElements, SliderInputs, StateRulePlan, StateScope, StateStyleMap, StringFormOptions, StyleMap, StyleTreeNode, SwiperBreakpointMap, SwiperModuleFlags, SwiperPlan, SwiperPlanContext, ToggleableAction, TransitionFeel, TransitionPhase, TransitionPreviewLayers, TransitionTimelineInput, TransitionViewport, ValueSource, VirtualTraitGroup };
4346
+ export { A11yAttribute, A11yTrait, ACCESSIBLE_NAME_TYPES, AOSService, ARIA_CURRENT_PAGE, BACKDROP_TWIN_KEY, BACKDROP_WHOLE_KEY, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CALENDAR_CLOSING_ATTRIBUTE, CALENDAR_DESIGN_ATTRIBUTE, CALENDAR_INSTANT_ATTRIBUTE, CALENDAR_SHEET_QUERY, COMPONENT_STATE_SELECTOR, CONTAINER_HTML_TAGS, CONTEXT_ACTION_TYPES, CURRENT_LINK_TYPES, CalendarClass, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ComponentState, ContainerComponent, ContextStore, DECORATIVE_TYPES, DEFAULT_GALLERY_SCHEDULER, DEFAULT_INTERACTION_EASING, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DIALOG_CLOSE_ABOVE_ATTRIBUTE, DIALOG_NODE_TYPE, DatePickerRuntime, DeclarationContext, EASING_KEYWORDS, EASING_TOKENS, ELEMENT_STYLE_TRANSITION_EXTRAS, ENTRANCE_ACTION_TYPES, ENTRANCE_FALLBACK_CSS, ENTRANCE_NOSCRIPT_CSS, ENTRANCE_PRESTATE_ATTRIBUTE, EXIT_ACTION_TYPES, EasingKeyword, EasingToken, FLOATING_GAP, FLOATING_LAYER_CLASS, FLOATING_MARGIN, FLOATING_SHEET_QUERY, FloatingAlign, FloatingSide, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, HEADER_SCROLL_HYSTERESIS_PX, HOVER_DEFAULT_TRANSITION_TRAITS, HOVER_MEDIA_QUERY, HOVER_STATES, HeaderRuntime, INTERACTION_ANIMATION_ID, INTERACTION_HIDDEN_ATTRIBUTE, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxDialogComponent, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxPopoverComponent, IoxSubmitButtonComponent, IoxUiModule, IoxVideoComponent, LAST_EMITTED_STATES, LEGACY_DIRECTION_KEY, LEGACY_HOVER_TRANSITION_TRAITS, LEGACY_SWIPER_CONTROLS, LinkedContainerComponent, MANAGED_A11Y_ATTRIBUTES, MAX_LINES_KEY, NAMED_GROUP_ROLES, NO_PAGE_TRANSITION, ON_STATE_ROLES, OUTER_STYLE_PROPS, PAGE_STYLE_TOKENS, PAGE_TOKEN_FALLBACKS, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PART_PAGINATION_MODIFIER, PHONE_TRANSITION_QUERY, PIPE_DESCRIPTORS, PIPE_REGISTRY, POPOVER_SELECTOR, PageScrollProvider, PageStyleField, PageStyleSource, PausableTimer, PauseReason, PointerKind, PopoverAttribute, REDUCED_MOTION_QUERY, RELATIONAL_STATE_PSEUDO, RevealActionType, SCROLLED_ATTRIBUTE, SCROLLED_STATE_ROLE, SCROLLED_THRESHOLD_PX, SCROLL_EASINGS, SELF_PLAYING_TRIGGERS, SHAKE_DURATION_MS, SHAKE_EASING, SHAKE_KEYFRAMES, SLIDER_FEEL, SLIDER_INPUTS_ATTRIBUTE, SLIDER_INPUT_NAMES, SLIDER_PHONE_BREAKPOINT, SLIDER_RUNWAY_CLASS, SLIDER_STEPS_PROPERTY, SLIDE_CAPTION_ATTRIBUTE, STATE_PSEUDO_CLASS, STRUCTURAL_STATES, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_A11Y_OPTIONS, SWIPER_RESPONSIVE_TRAITS, SWIPER_TRIGGER_EVENTS, ScrollEasing, SectionComponent, SettleMode, StringFormRuntime, SwiperModuleName, TARGETED_STATE_SUFFIX, TEXT_ALIGN_KEY, TEXT_DIRECTION_KEY, TOAST_CLOSE_WORDS, TOAST_DESIGN_ATTRIBUTE, TOAST_EDGE_ATTRIBUTE, TOAST_FIRST_LANDS_MS, TOAST_MAX_MS, TOAST_MAX_VISIBLE, TOAST_MIN_MS, TOAST_MS_PER_CHAR, TOOLTIP_ATTRIBUTE, TOOLTIP_FIRST_DELAY_MS, TOOLTIP_HIDE_GRACE_MS, TOOLTIP_INSTANT_ATTRIBUTE, TOOLTIP_PINNED_ATTRIBUTE, TOOLTIP_PLACEMENT_ATTRIBUTE, TOOLTIP_SIDE_ATTRIBUTE, TOOLTIP_TYPES, TOOLTIP_WARM_MS, TRANSITION_FEELS, TRANSITION_PROPERTY_KEY, TextAlign, TextBlockComponent, ToastClass, ToastEdge, TooltipClass, TooltipRuntime, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, VisibilityActionType, activeActions, animateAction, applyBindingPipes, applyFeel, attachDatePicker, attachDatePickers, attachStringForm, attachTooltips, bootSlider, breakpointDef, breakpointForWidth, breakpointQueryFor, buildInteractionKeyframes, buildPartSelector, buildSwiperBreakpoints, buildTargetedStateSelector, buildTargetedSuffixSelector, buildTransitionTimeline, canPopover, cascadeChain, clearInputOverride, clearOverride, clearToasts, closeAboveMediaQuery, closeAllPopovers, closePopover, collectContextSlotKeys, compileDeclarations, compilePageStyle, componentStatesFor, composeVirtualTraits, containerHtmlTag, contextActionEffect, contextSlotKeys, countOverrides, datePickerOf, declaredInputNames, decomposeBackdropFilter, defaultHoverTransitionTraits, defaultMessageResolver, deriveSeoFromContent, describePageStyle, describeSeoFields, dialogCloseAboveMinWidth, domHasSliderParts, durationMs, effectiveActionType, effectiveTransitionId, entrancePreStateStyle, entranceStartsHidden, feelFor, fieldLanguage, finalKeyframe, floatingLayer, floatingScope, formSentWords, formToastsOnSend, framesFromLiveValue, gateHoverRule, getSeoValue, hasHoverState, hasOwnPageTransition, hasOwnTransition, headerShouldHide, hideFromTopLayer, hidingHeadersIn, initialSlotValues, isActionEnabled, isContextAction, isCubicBezier, isCurrentLink, isEasingToken, isExternalOrFragment, isGradientPaint, isHoverPointer, isHoverState, isInputOverriddenAt, isInteractionEasing, isLastEmittedStateKey, isOpenPopover, isOverriddenAt, isPopoverOpen, isPressFeedback, isScrolled, isStructuralState, isValidSlotKey, isWholeBackdropSet, keyframePropertyName, keyframeStyleEntries, layerFrame, legacyEnterToTransition, mediaQueryFor, mergeSwiperBreakpoints, migrateLegacyDirection, migrateLegacyTextAlign, motionAllowed, nearestCommonAncestorId, needsAccessibleName, needsGroupName, nodeA11yAttributes, nodeCssId, nodeTraitValue, nodeUsesContext, normalizeAppPath, normalizeGalleryImage, normalizeIconClass, openPopover, orderStatesForEmit, pageTransitionOf, parentBreakpoint, parseUrlList, partClassName, placeFloating, placePopover, planPartRule, planResponsiveRules, planScroll, planStateRule, planSwiperOptions, playDualLayerTransition, playInteraction, popoverPanelAttributes, popoverSide, prefersReducedMotion, raiseFloatingLayer, raiseFormToast, rectInLayer, renderDefaultDeclarations, resetPageStyleField, resetSeoField, resolveBoundValue, resolveContextValue, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolveInteractionEasing, resolvePageTransition, resolvePath, resolveSeo, resolveStateStyles, resolveStyleProps, resolveToggleVisibility, resolveValueChain, rewriteViewportUnits, safeSetInput, serializeA11yAttributes, setDateFieldValue, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, settleInteraction, settleModeFor, shakeElement, showCalendarDesign, showInTopLayer, showToast, showToastDesign, sliderControlElements, sliderInputsFromProps, sliderInputsOf, sliderRunwayHtml, splitOuterProps, splitPressFeedback, stateNamesIn, statePseudoClass, stateSelectorSuffix, stateTransitionProperties, stringFormRuntimeOf, stripSuppressedProps, swiperAutoplayAllowed, swiperLoopOptions, swiperModuleNames, syncNodeA11yAttributes, syncSubmitButtons, targetedStateSelector, toLayerRect, toastCloseWord, toastDuration, toastEdge, toastsToEvict, togglePopover, tooltipSide, tooltipTiming, tooltipWords, tooltipsOf, transitionPropertyList, viewportTransitionContext, watchHeaders, watchScrolled, withContextSlots, withPhoneDefaults, withStateTransitions, wrapInBreakpointQuery, wrapInMediaQuery };
4347
+ export type { A11yNodeSource, AnimateActionOptions, BoundValueSpec, BreakpointDef, ContextActionEffect, ContextActionLike, ContextItemRef, ContextSlotDefault, ContextValueSpec, ContextWriteScope, CurrentLinkOptions, DatePickerOptions, FloatingLayerOptions, FloatingOptions, FloatingPlacement, FloatingRect, FloatingSize, FloatingViewport, FormMessageResolver, GalleryBoundSource, GalleryDurations, GalleryEffect, GalleryEffectDescriptor, GalleryImage, GalleryLoopOptions, GalleryLoopScheduler, GalleryLoopState, GallerySlideState, HeaderRuntimeOptions, IBuilderEventEmitter, InputMap, InteractionKeyframe, IoxContextSlot, IoxPipe, LayerFrame, MatchMediaHost, NodeA11yContext, OverrideBreakpoint, PageScrollStart, PageStyleFieldState, PageStyleOptions, PageStyleSettings, PageTransitionCategory, PageTransitionCategoryMeta, PageTransitionContext, PageTransitionOptions, PageTransitionPreset, PipeArgSpec, PipeContext, PipeDescriptor, PlannedPageTransition, PopoverCloseOptions, PopoverOpenOptions, PressAction, RegisteredField, ResolvedPageTransition, ResponsiveLayer, ResponsiveOverrides, ResponsiveRuleSet, RouteAnimationLike, ScrollPlanContext, ScrollSource, SeoDerivedContent, SeoFieldSource, SeoFieldState, SeoResolveContext, SetContextParams, SettleOptions, SliderBootOptions, SliderControlElements, SliderInputs, StateRulePlan, StateScope, StateStyleMap, StringFormOptions, StyleMap, StyleTreeNode, SwiperBreakpointMap, SwiperModuleFlags, SwiperPlan, SwiperPlanContext, ToastHandle, ToastOptions, ToggleableAction, TooltipRuntimeOptions, TooltipTimingState, TransitionFeel, TransitionPhase, TransitionPreviewLayers, TransitionTimelineInput, TransitionViewport, ValueSource, VirtualTraitGroup };