@phillips/seldon 1.246.0 → 1.247.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 (53) hide show
  1. package/dist/_virtual/index12.js +2 -2
  2. package/dist/_virtual/index13.js +2 -2
  3. package/dist/assets/formatted/Search.js +8 -9
  4. package/dist/components/Input/utils.js +5 -3
  5. package/dist/components/Navigation/Navigation.js +51 -27
  6. package/dist/components/Navigation/Navigation.stories.d.ts +1 -2
  7. package/dist/components/Navigation/NavigationItem/NavigationItem.d.ts +8 -0
  8. package/dist/components/Navigation/NavigationItem/NavigationItem.js +43 -42
  9. package/dist/components/Navigation/NavigationItemWithSubmenu/NavigationDesktopSubmenu.d.ts +17 -0
  10. package/dist/components/Navigation/NavigationItemWithSubmenu/NavigationDesktopSubmenu.js +70 -0
  11. package/dist/components/Navigation/NavigationItemWithSubmenu/NavigationItemWithSubmenu.d.ts +31 -0
  12. package/dist/components/Navigation/NavigationItemWithSubmenu/NavigationItemWithSubmenu.js +68 -0
  13. package/dist/components/Navigation/NavigationItemWithSubmenu/index.d.ts +2 -0
  14. package/dist/components/Navigation/NavigationList/NavigationList.d.ts +11 -8
  15. package/dist/components/Navigation/NavigationList/NavigationList.js +21 -46
  16. package/dist/components/Navigation/NavigationSubmenu/NavigationSubmenu.d.ts +33 -0
  17. package/dist/components/Navigation/NavigationSubmenu/NavigationSubmenu.js +41 -0
  18. package/dist/components/Navigation/NavigationSubmenu/NavigationSubmenu.test.d.ts +1 -0
  19. package/dist/components/Search/Search.js +51 -47
  20. package/dist/components/Search/SearchButton.js +10 -10
  21. package/dist/components/Search/SearchResults/SearchResults.d.ts +2 -1
  22. package/dist/components/Search/SearchResults/SearchResults.js +22 -21
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.js +201 -197
  25. package/dist/node_modules/@radix-ui/react-navigation-menu/dist/index.js +597 -0
  26. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/primitive/dist/index.js +9 -0
  27. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-collection/dist/index.js +50 -0
  28. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +127 -0
  29. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-presence/dist/index.js +70 -0
  30. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-primitive/dist/index.js +36 -0
  31. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-slot/dist/index.js +49 -0
  32. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +52 -0
  33. package/dist/node_modules/@radix-ui/react-navigation-menu/node_modules/@radix-ui/react-visually-hidden/dist/index.js +32 -0
  34. package/dist/node_modules/ics/dist/schema/index.js +1 -1
  35. package/dist/node_modules/ics/dist/utils/index.js +1 -1
  36. package/dist/patterns/UserManagement/UserManagement.js +45 -27
  37. package/dist/scss/componentStyles.scss +1 -1
  38. package/dist/scss/components/Accordion/_accordion.scss +6 -0
  39. package/dist/scss/components/Navigation/NavigationItem/_navigationItem.scss +0 -12
  40. package/dist/scss/components/Navigation/NavigationItemWithSubmenu/_navigationItemWithSubmenu.scss +114 -0
  41. package/dist/scss/components/Navigation/NavigationList/_navigationList.scss +15 -3
  42. package/dist/scss/components/Navigation/_navigation.scss +109 -0
  43. package/dist/scss/components/Search/_search.scss +1 -0
  44. package/dist/scss/site-furniture/Header/_header.scss +24 -0
  45. package/dist/site-furniture/Header/Header.d.ts +8 -4
  46. package/dist/site-furniture/Header/Header.js +55 -50
  47. package/dist/site-furniture/Header/Header.stories.d.ts +278 -0
  48. package/dist/site-furniture/Header/utils.js +1 -2
  49. package/package.json +5 -1
  50. package/dist/components/Navigation/NavigationItemTrigger/NavigationItemTrigger.d.ts +0 -22
  51. package/dist/components/Navigation/NavigationItemTrigger/NavigationItemTrigger.js +0 -80
  52. package/dist/scss/components/Navigation/NavigationItemTrigger/_navigationItemTrigger.scss +0 -111
  53. /package/dist/components/Navigation/{NavigationItemTrigger/NavigationItemTrigger.test.d.ts → NavigationItemWithSubmenu/NavigationItemWithSubmenu.test.d.ts} +0 -0
@@ -32,7 +32,22 @@
32
32
 
33
33
  @include isHeaderDesktop {
34
34
  flex-direction: row;
35
+ overflow: visible; // allow nav list to slide up/down when search opens/closes
35
36
  padding-right: $search-size;
37
+
38
+ // When search is open, slide nav list up and fade out (transform so slide is visible; list keeps position relative)
39
+ &--search-expanded .#{$px}-nav__list {
40
+ opacity: 0;
41
+ pointer-events: none;
42
+ transform: translateY(-100%);
43
+ transition:
44
+ transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
45
+ opacity 0.2s cubic-bezier(0.65, 0, 0.35, 1);
46
+
47
+ @media (prefers-reduced-motion: reduce) {
48
+ transition: none;
49
+ }
50
+ }
36
51
  }
37
52
  }
38
53
 
@@ -50,4 +65,98 @@
50
65
  &__close-btn:focus {
51
66
  background-color: $grey-50;
52
67
  }
68
+
69
+ // Mobile: list has horizontal padding (original behaviour). Use descendant selector so it
70
+ // still applies when list is wrapped by SSRMediaQuery. Links and accordion labels get vertical padding.
71
+ @include isHeaderMobile {
72
+ &__list-container .#{$px}-nav__list {
73
+ padding: 0 $spacing-md;
74
+ }
75
+
76
+ &__list-container .#{$px}-nav__list .#{$px}-link--linkStylised {
77
+ padding: $snowflake-menu-padding 0;
78
+ }
79
+
80
+ // linkMedium and linkLarge: same compact padding as linkLarge had (no snowflake padding)
81
+ &__list-container .#{$px}-nav__list .#{$px}-link--linkMedium,
82
+ &__list-container .#{$px}-nav__list .#{$px}-link--linkLarge {
83
+ padding: 0;
84
+ }
85
+
86
+ &__list-container .#{$px}-nav__list .#{$px}-accordion-item-label {
87
+ padding: $snowflake-menu-padding 0;
88
+ }
89
+ }
90
+
91
+ // Radix Navigation Menu (desktop only) – viewport hosts submenu content
92
+ @include isHeaderDesktop {
93
+ &__radix-root {
94
+ display: flex;
95
+ flex-direction: column;
96
+ overflow: visible; // allow nav list to slide up/down when search opens/closes
97
+ position: relative;
98
+
99
+ // Keep fit-content so search button stays next to nav list (position: absolute relative to list-container)
100
+ width: fit-content;
101
+ }
102
+
103
+ &__radix-viewport {
104
+ height: 0;
105
+ left: 0;
106
+ overflow: hidden;
107
+ pointer-events: none; // allow clicks to reach search when viewport is closed or when search is open
108
+ position: fixed;
109
+ right: 0;
110
+ top: calc(var(--banner-height, 0px) + var(--header-height));
111
+ transition: height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
112
+
113
+ @media (prefers-reduced-motion: reduce) {
114
+ transition: none;
115
+ }
116
+
117
+ &[data-state='open'] {
118
+ animation: nav-viewport-enter 0.3s cubic-bezier(0.33, 1, 0.68, 1);
119
+ height: var(--radix-navigation-menu-viewport-height, auto);
120
+ pointer-events: auto; // submenu content must receive clicks when open
121
+
122
+ @media (prefers-reduced-motion: reduce) {
123
+ animation: none;
124
+ }
125
+ }
126
+
127
+ &[data-state='closed'] {
128
+ animation: nav-viewport-exit 0.2s cubic-bezier(0.65, 0, 0.35, 1);
129
+
130
+ @media (prefers-reduced-motion: reduce) {
131
+ animation: none;
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ @include isHeaderDesktop {
139
+ @keyframes nav-viewport-enter {
140
+ from {
141
+ opacity: 0;
142
+ transform: translateY(-16px);
143
+ }
144
+
145
+ to {
146
+ opacity: 1;
147
+ transform: translateY(0);
148
+ }
149
+ }
150
+
151
+ @keyframes nav-viewport-exit {
152
+ from {
153
+ opacity: 1;
154
+ transform: translateY(0);
155
+ }
156
+
157
+ to {
158
+ opacity: 0;
159
+ transform: translateY(-16px);
160
+ }
161
+ }
53
162
  }
@@ -33,6 +33,7 @@
33
33
  &--active {
34
34
  left: 0;
35
35
  transition: left 0.25s ease-in 0.2s;
36
+ z-index: 11; // above nav (Radix viewport) and overlay when open so input receives clicks
36
37
 
37
38
  &::after {
38
39
  transition: width 0.25s ease-in 0.2s;
@@ -11,6 +11,23 @@
11
11
  width: 100%;
12
12
  z-index: 10;
13
13
 
14
+ // Skip link: visually hidden until focused so keyboard users can skip to main content
15
+ &__skip-link {
16
+ left: -9999px;
17
+ position: absolute;
18
+ z-index: 100;
19
+
20
+ &:focus {
21
+ @include focus-ring($border-radius: $radius-xs);
22
+
23
+ background-color: $white-100;
24
+ box-shadow: 0 0 0 4px $white-100; // fills outline-offset gap so content behind doesn’t show through
25
+ left: $spacing-sm;
26
+ padding: $spacing-micro $spacing-sm;
27
+ top: $spacing-sm;
28
+ }
29
+ }
30
+
14
31
  &__toggle-btn {
15
32
  align-items: center;
16
33
  background: none;
@@ -74,13 +91,19 @@
74
91
 
75
92
  &__logo {
76
93
  align-self: center;
94
+ display: inline-block; // so focus ring has a clear box to wrap
77
95
  margin: 0;
96
+ outline: none;
97
+ vertical-align: middle; // keep aligned with top-row flex items
78
98
 
99
+ &:focus,
79
100
  &:focus-visible {
80
101
  @include focus-ring($border-radius: $radius-xs);
81
102
  }
82
103
 
104
+ img,
83
105
  svg {
106
+ display: block; // avoid baseline gap so logo doesn’t slide up
84
107
  height: 20.58px; // 20.58px is the height of the logo's container to make logo 16px
85
108
  width: 100%;
86
109
  }
@@ -88,6 +111,7 @@
88
111
  @include isHeaderDesktop {
89
112
  padding-top: 0;
90
113
 
114
+ img,
91
115
  svg {
92
116
  height: 25.73px; // 25.73px is the height of the logo's container to make logo 20px
93
117
  width: 100%;
@@ -28,6 +28,14 @@ export interface HeaderProps extends ComponentProps<'header'> {
28
28
  * Reference to the notification banner
29
29
  */
30
30
  bannerRef?: React.MutableRefObject<HTMLDivElement | null>;
31
+ /**
32
+ * ID of the main content element for the skip link target (e.g. "main"). When set, a "Skip to main content" link is rendered for keyboard users.
33
+ */
34
+ skipToContentId?: string | null;
35
+ /**
36
+ * Accessible label for the skip link. Defaults to "Skip to main content".
37
+ */
38
+ skipLinkLabel?: string;
31
39
  }
32
40
  export type HeaderContextType = {
33
41
  /**
@@ -54,10 +62,6 @@ export type HeaderContextType = {
54
62
  * Set the active submenu ID
55
63
  */
56
64
  setActiveSubmenuId: (id: string | null) => void;
57
- /**
58
- * Reference to timeout for submenu closing
59
- */
60
- closeTimeoutRef: React.MutableRefObject<NodeJS.Timeout | null>;
61
65
  };
62
66
  export declare const HeaderContext: React.Context<HeaderContextType>;
63
67
  /**
@@ -1,74 +1,80 @@
1
1
  import { jsxs as l, jsx as r } from "react/jsx-runtime";
2
2
  import c from "../../_virtual/index.js";
3
- import t, { createContext as D, forwardRef as F, useState as u, useEffect as C } from "react";
4
- import G from "../../components/Icon/Icon.js";
5
- import H from "../../components/Navigation/Navigation.js";
3
+ import t, { createContext as F, forwardRef as G, useState as h, useEffect as $ } from "react";
4
+ import J from "../../components/Icon/Icon.js";
5
+ import C from "../../components/Navigation/Navigation.js";
6
6
  import M from "../../patterns/LanguageSelector/LanguageSelector.js";
7
- import $ from "../../patterns/UserManagement/UserManagement.js";
8
- import { SSRMediaQuery as J } from "../../providers/SeldonProvider/utils.js";
9
- import { findChildrenOfType as h, findChildrenExcludingTypes as K, px as n } from "../../utils/index.js";
10
- import { useMobileMenu as W } from "./hooks.js";
11
- import { defaultHeaderContext as X } from "./utils.js";
12
- const Y = D(X), Z = F(
7
+ import S from "../../patterns/UserManagement/UserManagement.js";
8
+ import { SSRMediaQuery as K } from "../../providers/SeldonProvider/utils.js";
9
+ import { findChildrenOfType as u, findChildrenExcludingTypes as W, px as n } from "../../utils/index.js";
10
+ import { useMobileMenu as X } from "./hooks.js";
11
+ import { defaultHeaderContext as Y } from "./utils.js";
12
+ const Z = F(Y), ee = G(
13
13
  ({
14
- logo: d = /* @__PURE__ */ r(G, { icon: "PhillipsLogo" }),
15
- logoHref: S = "/",
14
+ logo: d = /* @__PURE__ */ r(J, { icon: "PhillipsLogo" }),
15
+ logoHref: N = "/",
16
16
  className: w,
17
- children: s,
18
- toggleOpenText: N = "Open Menu",
19
- toggleCloseText: O = "Close Menu",
20
- logoText: R = "Home Page",
17
+ children: i,
18
+ toggleOpenText: O = "Open Menu",
19
+ toggleCloseText: k = "Close Menu",
20
+ logoText: P = "Home Page",
21
21
  disabled: g,
22
- bannerRef: i,
23
- ...T
22
+ bannerRef: s,
23
+ skipToContentId: p = "main",
24
+ skipLinkLabel: R = "Skip to main content",
25
+ ...z
24
26
  }, a) => {
25
- const p = h(s, $), P = t.isValidElement(p?.[0]) ? t.cloneElement(p[0], { disabled: g }) : "", f = h(s, M), v = t.isValidElement(f?.[0]) ? t.cloneElement(f[0], { disabled: g }) : "", [b, z] = u(!1), I = h(s, H), j = K(s, [H, $, M]), { closeMenu: V, handleMenuToggle: k, isMenuOpen: m, toggleText: A } = W({ toggleOpenText: N, toggleCloseText: O }), [L, q] = u(null), B = t.useRef(null), [_, E] = u(i?.current ? i.current.clientHeight : 0), x = t.useRef(null);
26
- C(() => {
27
- const e = i?.current;
27
+ const f = u(i, S), T = t.isValidElement(f?.[0]) ? t.cloneElement(f[0], { disabled: g }) : "", v = u(i, M), _ = t.isValidElement(v?.[0]) ? t.cloneElement(v[0], { disabled: g }) : "", [b, j] = h(!1), I = u(i, C), V = W(i, [C, S, M]), { closeMenu: A, handleMenuToggle: L, isMenuOpen: m, toggleText: q } = X({
28
+ toggleOpenText: O,
29
+ toggleCloseText: k
30
+ }), [B, Q] = h(null), [E, x] = h(s?.current ? s.current.clientHeight : 0), y = t.useRef(null);
31
+ $(() => {
32
+ const e = s?.current;
28
33
  if (!e) return;
29
- E(e.clientHeight);
34
+ x(e.clientHeight);
30
35
  const o = new window.ResizeObserver(() => {
31
- E(e.clientHeight);
36
+ x(e.clientHeight);
32
37
  });
33
38
  return o.observe(e), () => {
34
39
  o.disconnect();
35
40
  };
36
- }, [i, _]), C(() => {
37
- const e = x.current;
41
+ }, [s, E]), $(() => {
42
+ const e = y.current;
38
43
  if (!e) return;
39
44
  const o = () => {
40
- const U = e.offsetHeight;
41
- document.documentElement.style.setProperty("--header-height", `${U}px`);
45
+ const D = e.offsetHeight;
46
+ document.documentElement.style.setProperty("--header-height", `${D}px`);
42
47
  };
43
48
  o();
44
- const y = new window.ResizeObserver(o);
45
- return y.observe(e), () => {
46
- y.disconnect();
49
+ const H = new window.ResizeObserver(o);
50
+ return H.observe(e), () => {
51
+ H.disconnect();
47
52
  };
48
53
  }, []);
49
- const Q = t.useCallback(
54
+ const U = t.useCallback(
50
55
  (e) => {
51
- x.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
56
+ y.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
52
57
  },
53
58
  [a]
54
59
  );
55
60
  return /* @__PURE__ */ l(
56
61
  "header",
57
62
  {
58
- ...T,
63
+ ...z,
59
64
  className: c(`${n}-header`, w),
60
- ref: Q,
61
- style: { "--banner-height": `${_}px` },
65
+ ref: U,
66
+ style: { "--banner-height": `${E}px` },
62
67
  children: [
68
+ p && /* @__PURE__ */ r("a", { href: `#${p}`, className: `${n}-header__skip-link`, "data-testid": "skip-to-content", children: R }),
63
69
  /* @__PURE__ */ l("div", { className: `${n}-header__top-row`, children: [
64
- /* @__PURE__ */ r(J.Media, { greaterThanOrEqual: "md", children: v }),
70
+ /* @__PURE__ */ r(K.Media, { greaterThanOrEqual: "md", children: _ }),
65
71
  /* @__PURE__ */ l(
66
72
  "button",
67
73
  {
68
- "aria-label": A,
74
+ "aria-label": q,
69
75
  "data-testid": "mobile-menu-toggle",
70
76
  type: "button",
71
- onClick: k,
77
+ onClick: L,
72
78
  className: c(`${n}-header__toggle-btn`, {
73
79
  [`${n}-header__toggle-btn--open`]: m
74
80
  }),
@@ -78,20 +84,19 @@ const Y = D(X), Z = F(
78
84
  ]
79
85
  }
80
86
  ),
81
- /* @__PURE__ */ r("a", { href: S, "aria-label": R, "data-testid": "header-logo", className: `${n}-header__logo`, children: typeof d == "object" ? d : /* @__PURE__ */ r("img", { alt: "Phillips", "data-testid": "header-logo-img", src: d }) }),
82
- P
87
+ /* @__PURE__ */ r("a", { href: N, "aria-label": P, "data-testid": "header-logo", className: `${n}-header__logo`, children: typeof d == "object" ? d : /* @__PURE__ */ r("img", { alt: "Phillips", "data-testid": "header-logo-img", src: d }) }),
88
+ T
83
89
  ] }),
84
90
  /* @__PURE__ */ r("div", { className: c(`${n}-header__nav`, { [`${n}-header__nav--closed`]: !m }), children: /* @__PURE__ */ l(
85
- Y.Provider,
91
+ Z.Provider,
86
92
  {
87
93
  value: {
88
- activeSubmenuId: L,
89
- setActiveSubmenuId: q,
90
- closeTimeoutRef: B,
94
+ activeSubmenuId: B,
95
+ setActiveSubmenuId: Q,
91
96
  isMenuOpen: m,
92
97
  isSearchExpanded: b,
93
- setIsSearchExpanded: z,
94
- closeMenu: V
98
+ setIsSearchExpanded: j,
99
+ closeMenu: A
95
100
  },
96
101
  children: [
97
102
  t.Children.map(
@@ -99,11 +104,11 @@ const Y = D(X), Z = F(
99
104
  (e) => t.isValidElement(e) ? t.cloneElement(e, {
100
105
  children: [
101
106
  ...t.Children.toArray(e.props.children),
102
- v
107
+ _
103
108
  ]
104
109
  }) : e
105
110
  ),
106
- j
111
+ V
107
112
  ]
108
113
  }
109
114
  ) }),
@@ -120,8 +125,8 @@ const Y = D(X), Z = F(
120
125
  );
121
126
  }
122
127
  );
123
- Z.displayName = "Header";
128
+ ee.displayName = "Header";
124
129
  export {
125
- Y as HeaderContext,
126
- Z as default
130
+ Z as HeaderContext,
131
+ ee as default
127
132
  };
@@ -7,6 +7,284 @@ declare const meta: {
7
7
  subcomponents: {
8
8
  Search: React.ComponentType<unknown>;
9
9
  };
10
+ decorators: ((Story: import('storybook/internal/csf').PartialStoryFn<import('@storybook/react').ReactRenderer, {
11
+ id?: string | undefined;
12
+ disabled?: boolean | undefined;
13
+ slot?: string | undefined;
14
+ style?: React.CSSProperties | undefined;
15
+ title?: string | undefined;
16
+ children?: React.ReactNode | undefined;
17
+ className?: string | undefined;
18
+ key?: React.Key | null | undefined;
19
+ rel?: string | undefined;
20
+ defaultChecked?: boolean | undefined;
21
+ defaultValue?: string | number | readonly string[] | undefined;
22
+ suppressContentEditableWarning?: boolean | undefined;
23
+ suppressHydrationWarning?: boolean | undefined;
24
+ accessKey?: string | undefined;
25
+ autoFocus?: boolean | undefined;
26
+ contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
27
+ contextMenu?: string | undefined;
28
+ dir?: string | undefined;
29
+ draggable?: (boolean | "true" | "false") | undefined;
30
+ hidden?: boolean | undefined;
31
+ lang?: string | undefined;
32
+ nonce?: string | undefined;
33
+ spellCheck?: (boolean | "true" | "false") | undefined;
34
+ tabIndex?: number | undefined;
35
+ translate?: "yes" | "no" | undefined;
36
+ radioGroup?: string | undefined;
37
+ role?: React.AriaRole | undefined;
38
+ about?: string | undefined;
39
+ content?: string | undefined;
40
+ datatype?: string | undefined;
41
+ inlist?: any;
42
+ prefix?: string | undefined;
43
+ property?: string | undefined;
44
+ resource?: string | undefined;
45
+ rev?: string | undefined;
46
+ typeof?: string | undefined;
47
+ vocab?: string | undefined;
48
+ autoCapitalize?: string | undefined;
49
+ autoCorrect?: string | undefined;
50
+ autoSave?: string | undefined;
51
+ color?: string | undefined;
52
+ itemProp?: string | undefined;
53
+ itemScope?: boolean | undefined;
54
+ itemType?: string | undefined;
55
+ itemID?: string | undefined;
56
+ itemRef?: string | undefined;
57
+ results?: number | undefined;
58
+ security?: string | undefined;
59
+ unselectable?: "on" | "off" | undefined;
60
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
61
+ is?: string | undefined;
62
+ "aria-activedescendant"?: string | undefined;
63
+ "aria-atomic"?: (boolean | "true" | "false") | undefined;
64
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
65
+ "aria-braillelabel"?: string | undefined;
66
+ "aria-brailleroledescription"?: string | undefined;
67
+ "aria-busy"?: (boolean | "true" | "false") | undefined;
68
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
69
+ "aria-colcount"?: number | undefined;
70
+ "aria-colindex"?: number | undefined;
71
+ "aria-colindextext"?: string | undefined;
72
+ "aria-colspan"?: number | undefined;
73
+ "aria-controls"?: string | undefined;
74
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
75
+ "aria-describedby"?: string | undefined;
76
+ "aria-description"?: string | undefined;
77
+ "aria-details"?: string | undefined;
78
+ "aria-disabled"?: (boolean | "true" | "false") | undefined;
79
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
80
+ "aria-errormessage"?: string | undefined;
81
+ "aria-expanded"?: (boolean | "true" | "false") | undefined;
82
+ "aria-flowto"?: string | undefined;
83
+ "aria-grabbed"?: (boolean | "true" | "false") | undefined;
84
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
85
+ "aria-hidden"?: (boolean | "true" | "false") | undefined;
86
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
87
+ "aria-keyshortcuts"?: string | undefined;
88
+ "aria-label"?: string | undefined;
89
+ "aria-labelledby"?: string | undefined;
90
+ "aria-level"?: number | undefined;
91
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
92
+ "aria-modal"?: (boolean | "true" | "false") | undefined;
93
+ "aria-multiline"?: (boolean | "true" | "false") | undefined;
94
+ "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
95
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
96
+ "aria-owns"?: string | undefined;
97
+ "aria-placeholder"?: string | undefined;
98
+ "aria-posinset"?: number | undefined;
99
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
100
+ "aria-readonly"?: (boolean | "true" | "false") | undefined;
101
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
102
+ "aria-required"?: (boolean | "true" | "false") | undefined;
103
+ "aria-roledescription"?: string | undefined;
104
+ "aria-rowcount"?: number | undefined;
105
+ "aria-rowindex"?: number | undefined;
106
+ "aria-rowindextext"?: string | undefined;
107
+ "aria-rowspan"?: number | undefined;
108
+ "aria-selected"?: (boolean | "true" | "false") | undefined;
109
+ "aria-setsize"?: number | undefined;
110
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
111
+ "aria-valuemax"?: number | undefined;
112
+ "aria-valuemin"?: number | undefined;
113
+ "aria-valuenow"?: number | undefined;
114
+ "aria-valuetext"?: string | undefined;
115
+ dangerouslySetInnerHTML?: {
116
+ __html: string | TrustedHTML;
117
+ } | undefined;
118
+ onCopy?: React.ClipboardEventHandler<HTMLElement> | undefined;
119
+ onCopyCapture?: React.ClipboardEventHandler<HTMLElement> | undefined;
120
+ onCut?: React.ClipboardEventHandler<HTMLElement> | undefined;
121
+ onCutCapture?: React.ClipboardEventHandler<HTMLElement> | undefined;
122
+ onPaste?: React.ClipboardEventHandler<HTMLElement> | undefined;
123
+ onPasteCapture?: React.ClipboardEventHandler<HTMLElement> | undefined;
124
+ onCompositionEnd?: React.CompositionEventHandler<HTMLElement> | undefined;
125
+ onCompositionEndCapture?: React.CompositionEventHandler<HTMLElement> | undefined;
126
+ onCompositionStart?: React.CompositionEventHandler<HTMLElement> | undefined;
127
+ onCompositionStartCapture?: React.CompositionEventHandler<HTMLElement> | undefined;
128
+ onCompositionUpdate?: React.CompositionEventHandler<HTMLElement> | undefined;
129
+ onCompositionUpdateCapture?: React.CompositionEventHandler<HTMLElement> | undefined;
130
+ onFocus?: React.FocusEventHandler<HTMLElement> | undefined;
131
+ onFocusCapture?: React.FocusEventHandler<HTMLElement> | undefined;
132
+ onBlur?: React.FocusEventHandler<HTMLElement> | undefined;
133
+ onBlurCapture?: React.FocusEventHandler<HTMLElement> | undefined;
134
+ onChange?: React.FormEventHandler<HTMLElement> | undefined;
135
+ onChangeCapture?: React.FormEventHandler<HTMLElement> | undefined;
136
+ onBeforeInput?: React.FormEventHandler<HTMLElement> | undefined;
137
+ onBeforeInputCapture?: React.FormEventHandler<HTMLElement> | undefined;
138
+ onInput?: React.FormEventHandler<HTMLElement> | undefined;
139
+ onInputCapture?: React.FormEventHandler<HTMLElement> | undefined;
140
+ onReset?: React.FormEventHandler<HTMLElement> | undefined;
141
+ onResetCapture?: React.FormEventHandler<HTMLElement> | undefined;
142
+ onSubmit?: React.FormEventHandler<HTMLElement> | undefined;
143
+ onSubmitCapture?: React.FormEventHandler<HTMLElement> | undefined;
144
+ onInvalid?: React.FormEventHandler<HTMLElement> | undefined;
145
+ onInvalidCapture?: React.FormEventHandler<HTMLElement> | undefined;
146
+ onLoad?: React.ReactEventHandler<HTMLElement> | undefined;
147
+ onLoadCapture?: React.ReactEventHandler<HTMLElement> | undefined;
148
+ onError?: React.ReactEventHandler<HTMLElement> | undefined;
149
+ onErrorCapture?: React.ReactEventHandler<HTMLElement> | undefined;
150
+ onKeyDown?: React.KeyboardEventHandler<HTMLElement> | undefined;
151
+ onKeyDownCapture?: React.KeyboardEventHandler<HTMLElement> | undefined;
152
+ onKeyPress?: React.KeyboardEventHandler<HTMLElement> | undefined;
153
+ onKeyPressCapture?: React.KeyboardEventHandler<HTMLElement> | undefined;
154
+ onKeyUp?: React.KeyboardEventHandler<HTMLElement> | undefined;
155
+ onKeyUpCapture?: React.KeyboardEventHandler<HTMLElement> | undefined;
156
+ onAbort?: React.ReactEventHandler<HTMLElement> | undefined;
157
+ onAbortCapture?: React.ReactEventHandler<HTMLElement> | undefined;
158
+ onCanPlay?: React.ReactEventHandler<HTMLElement> | undefined;
159
+ onCanPlayCapture?: React.ReactEventHandler<HTMLElement> | undefined;
160
+ onCanPlayThrough?: React.ReactEventHandler<HTMLElement> | undefined;
161
+ onCanPlayThroughCapture?: React.ReactEventHandler<HTMLElement> | undefined;
162
+ onDurationChange?: React.ReactEventHandler<HTMLElement> | undefined;
163
+ onDurationChangeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
164
+ onEmptied?: React.ReactEventHandler<HTMLElement> | undefined;
165
+ onEmptiedCapture?: React.ReactEventHandler<HTMLElement> | undefined;
166
+ onEncrypted?: React.ReactEventHandler<HTMLElement> | undefined;
167
+ onEncryptedCapture?: React.ReactEventHandler<HTMLElement> | undefined;
168
+ onEnded?: React.ReactEventHandler<HTMLElement> | undefined;
169
+ onEndedCapture?: React.ReactEventHandler<HTMLElement> | undefined;
170
+ onLoadedData?: React.ReactEventHandler<HTMLElement> | undefined;
171
+ onLoadedDataCapture?: React.ReactEventHandler<HTMLElement> | undefined;
172
+ onLoadedMetadata?: React.ReactEventHandler<HTMLElement> | undefined;
173
+ onLoadedMetadataCapture?: React.ReactEventHandler<HTMLElement> | undefined;
174
+ onLoadStart?: React.ReactEventHandler<HTMLElement> | undefined;
175
+ onLoadStartCapture?: React.ReactEventHandler<HTMLElement> | undefined;
176
+ onPause?: React.ReactEventHandler<HTMLElement> | undefined;
177
+ onPauseCapture?: React.ReactEventHandler<HTMLElement> | undefined;
178
+ onPlay?: React.ReactEventHandler<HTMLElement> | undefined;
179
+ onPlayCapture?: React.ReactEventHandler<HTMLElement> | undefined;
180
+ onPlaying?: React.ReactEventHandler<HTMLElement> | undefined;
181
+ onPlayingCapture?: React.ReactEventHandler<HTMLElement> | undefined;
182
+ onProgress?: React.ReactEventHandler<HTMLElement> | undefined;
183
+ onProgressCapture?: React.ReactEventHandler<HTMLElement> | undefined;
184
+ onRateChange?: React.ReactEventHandler<HTMLElement> | undefined;
185
+ onRateChangeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
186
+ onResize?: React.ReactEventHandler<HTMLElement> | undefined;
187
+ onResizeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
188
+ onSeeked?: React.ReactEventHandler<HTMLElement> | undefined;
189
+ onSeekedCapture?: React.ReactEventHandler<HTMLElement> | undefined;
190
+ onSeeking?: React.ReactEventHandler<HTMLElement> | undefined;
191
+ onSeekingCapture?: React.ReactEventHandler<HTMLElement> | undefined;
192
+ onStalled?: React.ReactEventHandler<HTMLElement> | undefined;
193
+ onStalledCapture?: React.ReactEventHandler<HTMLElement> | undefined;
194
+ onSuspend?: React.ReactEventHandler<HTMLElement> | undefined;
195
+ onSuspendCapture?: React.ReactEventHandler<HTMLElement> | undefined;
196
+ onTimeUpdate?: React.ReactEventHandler<HTMLElement> | undefined;
197
+ onTimeUpdateCapture?: React.ReactEventHandler<HTMLElement> | undefined;
198
+ onVolumeChange?: React.ReactEventHandler<HTMLElement> | undefined;
199
+ onVolumeChangeCapture?: React.ReactEventHandler<HTMLElement> | undefined;
200
+ onWaiting?: React.ReactEventHandler<HTMLElement> | undefined;
201
+ onWaitingCapture?: React.ReactEventHandler<HTMLElement> | undefined;
202
+ onAuxClick?: React.MouseEventHandler<HTMLElement> | undefined;
203
+ onAuxClickCapture?: React.MouseEventHandler<HTMLElement> | undefined;
204
+ onClick?: React.MouseEventHandler<HTMLElement> | undefined;
205
+ onClickCapture?: React.MouseEventHandler<HTMLElement> | undefined;
206
+ onContextMenu?: React.MouseEventHandler<HTMLElement> | undefined;
207
+ onContextMenuCapture?: React.MouseEventHandler<HTMLElement> | undefined;
208
+ onDoubleClick?: React.MouseEventHandler<HTMLElement> | undefined;
209
+ onDoubleClickCapture?: React.MouseEventHandler<HTMLElement> | undefined;
210
+ onDrag?: React.DragEventHandler<HTMLElement> | undefined;
211
+ onDragCapture?: React.DragEventHandler<HTMLElement> | undefined;
212
+ onDragEnd?: React.DragEventHandler<HTMLElement> | undefined;
213
+ onDragEndCapture?: React.DragEventHandler<HTMLElement> | undefined;
214
+ onDragEnter?: React.DragEventHandler<HTMLElement> | undefined;
215
+ onDragEnterCapture?: React.DragEventHandler<HTMLElement> | undefined;
216
+ onDragExit?: React.DragEventHandler<HTMLElement> | undefined;
217
+ onDragExitCapture?: React.DragEventHandler<HTMLElement> | undefined;
218
+ onDragLeave?: React.DragEventHandler<HTMLElement> | undefined;
219
+ onDragLeaveCapture?: React.DragEventHandler<HTMLElement> | undefined;
220
+ onDragOver?: React.DragEventHandler<HTMLElement> | undefined;
221
+ onDragOverCapture?: React.DragEventHandler<HTMLElement> | undefined;
222
+ onDragStart?: React.DragEventHandler<HTMLElement> | undefined;
223
+ onDragStartCapture?: React.DragEventHandler<HTMLElement> | undefined;
224
+ onDrop?: React.DragEventHandler<HTMLElement> | undefined;
225
+ onDropCapture?: React.DragEventHandler<HTMLElement> | undefined;
226
+ onMouseDown?: React.MouseEventHandler<HTMLElement> | undefined;
227
+ onMouseDownCapture?: React.MouseEventHandler<HTMLElement> | undefined;
228
+ onMouseEnter?: React.MouseEventHandler<HTMLElement> | undefined;
229
+ onMouseLeave?: React.MouseEventHandler<HTMLElement> | undefined;
230
+ onMouseMove?: React.MouseEventHandler<HTMLElement> | undefined;
231
+ onMouseMoveCapture?: React.MouseEventHandler<HTMLElement> | undefined;
232
+ onMouseOut?: React.MouseEventHandler<HTMLElement> | undefined;
233
+ onMouseOutCapture?: React.MouseEventHandler<HTMLElement> | undefined;
234
+ onMouseOver?: React.MouseEventHandler<HTMLElement> | undefined;
235
+ onMouseOverCapture?: React.MouseEventHandler<HTMLElement> | undefined;
236
+ onMouseUp?: React.MouseEventHandler<HTMLElement> | undefined;
237
+ onMouseUpCapture?: React.MouseEventHandler<HTMLElement> | undefined;
238
+ onSelect?: React.ReactEventHandler<HTMLElement> | undefined;
239
+ onSelectCapture?: React.ReactEventHandler<HTMLElement> | undefined;
240
+ onTouchCancel?: React.TouchEventHandler<HTMLElement> | undefined;
241
+ onTouchCancelCapture?: React.TouchEventHandler<HTMLElement> | undefined;
242
+ onTouchEnd?: React.TouchEventHandler<HTMLElement> | undefined;
243
+ onTouchEndCapture?: React.TouchEventHandler<HTMLElement> | undefined;
244
+ onTouchMove?: React.TouchEventHandler<HTMLElement> | undefined;
245
+ onTouchMoveCapture?: React.TouchEventHandler<HTMLElement> | undefined;
246
+ onTouchStart?: React.TouchEventHandler<HTMLElement> | undefined;
247
+ onTouchStartCapture?: React.TouchEventHandler<HTMLElement> | undefined;
248
+ onPointerDown?: React.PointerEventHandler<HTMLElement> | undefined;
249
+ onPointerDownCapture?: React.PointerEventHandler<HTMLElement> | undefined;
250
+ onPointerMove?: React.PointerEventHandler<HTMLElement> | undefined;
251
+ onPointerMoveCapture?: React.PointerEventHandler<HTMLElement> | undefined;
252
+ onPointerUp?: React.PointerEventHandler<HTMLElement> | undefined;
253
+ onPointerUpCapture?: React.PointerEventHandler<HTMLElement> | undefined;
254
+ onPointerCancel?: React.PointerEventHandler<HTMLElement> | undefined;
255
+ onPointerCancelCapture?: React.PointerEventHandler<HTMLElement> | undefined;
256
+ onPointerEnter?: React.PointerEventHandler<HTMLElement> | undefined;
257
+ onPointerLeave?: React.PointerEventHandler<HTMLElement> | undefined;
258
+ onPointerOver?: React.PointerEventHandler<HTMLElement> | undefined;
259
+ onPointerOverCapture?: React.PointerEventHandler<HTMLElement> | undefined;
260
+ onPointerOut?: React.PointerEventHandler<HTMLElement> | undefined;
261
+ onPointerOutCapture?: React.PointerEventHandler<HTMLElement> | undefined;
262
+ onGotPointerCapture?: React.PointerEventHandler<HTMLElement> | undefined;
263
+ onGotPointerCaptureCapture?: React.PointerEventHandler<HTMLElement> | undefined;
264
+ onLostPointerCapture?: React.PointerEventHandler<HTMLElement> | undefined;
265
+ onLostPointerCaptureCapture?: React.PointerEventHandler<HTMLElement> | undefined;
266
+ onScroll?: React.UIEventHandler<HTMLElement> | undefined;
267
+ onScrollCapture?: React.UIEventHandler<HTMLElement> | undefined;
268
+ onWheel?: React.WheelEventHandler<HTMLElement> | undefined;
269
+ onWheelCapture?: React.WheelEventHandler<HTMLElement> | undefined;
270
+ onAnimationStart?: React.AnimationEventHandler<HTMLElement> | undefined;
271
+ onAnimationStartCapture?: React.AnimationEventHandler<HTMLElement> | undefined;
272
+ onAnimationEnd?: React.AnimationEventHandler<HTMLElement> | undefined;
273
+ onAnimationEndCapture?: React.AnimationEventHandler<HTMLElement> | undefined;
274
+ onAnimationIteration?: React.AnimationEventHandler<HTMLElement> | undefined;
275
+ onAnimationIterationCapture?: React.AnimationEventHandler<HTMLElement> | undefined;
276
+ onTransitionEnd?: React.TransitionEventHandler<HTMLElement> | undefined;
277
+ onTransitionEndCapture?: React.TransitionEventHandler<HTMLElement> | undefined;
278
+ toggleCloseText?: string | undefined;
279
+ toggleOpenText?: string | undefined;
280
+ logo?: (React.ReactElement<React.Component> | string) | undefined;
281
+ logoHref?: string | undefined;
282
+ logoText?: string | undefined;
283
+ bannerRef?: React.MutableRefObject<HTMLDivElement | null> | undefined;
284
+ skipToContentId?: (string | null) | undefined;
285
+ skipLinkLabel?: string | undefined;
286
+ ref?: React.LegacyRef<HTMLElement> | undefined;
287
+ }>) => import("react/jsx-runtime").JSX.Element)[];
10
288
  parameters: {
11
289
  docs: {
12
290
  story: {