@salt-ds/lab 1.0.0-alpha.94 → 1.0.0-alpha.96

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 (191) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/css/salt-lab.css +76 -49
  3. package/dist-cjs/index.js +12 -52
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/mega-menu/MegaMenu.js +8 -14
  6. package/dist-cjs/mega-menu/MegaMenu.js.map +1 -1
  7. package/dist-cjs/mega-menu/MegaMenuActions.css.js +6 -0
  8. package/dist-cjs/mega-menu/MegaMenuActions.css.js.map +1 -0
  9. package/dist-cjs/mega-menu/MegaMenuActions.js +33 -0
  10. package/dist-cjs/mega-menu/MegaMenuActions.js.map +1 -0
  11. package/dist-cjs/mega-menu/MegaMenuAside.css.js +6 -0
  12. package/dist-cjs/mega-menu/MegaMenuAside.css.js.map +1 -0
  13. package/dist-cjs/mega-menu/MegaMenuAside.js +33 -0
  14. package/dist-cjs/mega-menu/MegaMenuAside.js.map +1 -0
  15. package/dist-cjs/mega-menu/MegaMenuContent.css.js +1 -1
  16. package/dist-cjs/mega-menu/MegaMenuContent.js +2 -10
  17. package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -1
  18. package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -1
  19. package/dist-cjs/mega-menu/MegaMenuGroup.css.js +1 -1
  20. package/dist-cjs/mega-menu/MegaMenuGroup.js +10 -28
  21. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -1
  22. package/dist-cjs/mega-menu/MegaMenuGroupContext.js +17 -0
  23. package/dist-cjs/mega-menu/MegaMenuGroupContext.js.map +1 -0
  24. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +6 -0
  25. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  26. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js +39 -0
  27. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  28. package/dist-cjs/mega-menu/MegaMenuGroups.css.js +6 -0
  29. package/dist-cjs/mega-menu/MegaMenuGroups.css.js.map +1 -0
  30. package/dist-cjs/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +8 -8
  31. package/dist-cjs/mega-menu/MegaMenuGroups.js.map +1 -0
  32. package/dist-cjs/mega-menu/MegaMenuList.css.js +6 -0
  33. package/dist-cjs/mega-menu/MegaMenuList.css.js.map +1 -0
  34. package/dist-cjs/mega-menu/MegaMenuList.js +43 -0
  35. package/dist-cjs/mega-menu/MegaMenuList.js.map +1 -0
  36. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +6 -0
  37. package/dist-cjs/mega-menu/MegaMenuListItem.css.js.map +1 -0
  38. package/dist-cjs/mega-menu/MegaMenuListItem.js +45 -0
  39. package/dist-cjs/mega-menu/MegaMenuListItem.js.map +1 -0
  40. package/dist-cjs/mega-menu/MegaMenuPanel.css.js +1 -1
  41. package/dist-cjs/mega-menu/MegaMenuPanel.js +27 -47
  42. package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -1
  43. package/dist-cjs/mega-menu/MegaMenuTrigger.js +16 -18
  44. package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -1
  45. package/dist-cjs/mega-menu/useMegaMenuNavigation.js +282 -0
  46. package/dist-cjs/mega-menu/useMegaMenuNavigation.js.map +1 -0
  47. package/dist-cjs/mega-menu/usePageMargin.js +22 -0
  48. package/dist-cjs/mega-menu/usePageMargin.js.map +1 -0
  49. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js +2 -1
  50. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js.map +1 -1
  51. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js +21 -3
  52. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -1
  53. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js +3 -25
  54. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -1
  55. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js +9 -7
  56. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  57. package/dist-es/index.js +6 -9
  58. package/dist-es/index.js.map +1 -1
  59. package/dist-es/mega-menu/MegaMenu.js +9 -15
  60. package/dist-es/mega-menu/MegaMenu.js.map +1 -1
  61. package/dist-es/mega-menu/MegaMenuActions.css.js +4 -0
  62. package/dist-es/mega-menu/MegaMenuActions.css.js.map +1 -0
  63. package/dist-es/mega-menu/MegaMenuActions.js +31 -0
  64. package/dist-es/mega-menu/MegaMenuActions.js.map +1 -0
  65. package/dist-es/mega-menu/MegaMenuAside.css.js +4 -0
  66. package/dist-es/mega-menu/MegaMenuAside.css.js.map +1 -0
  67. package/dist-es/mega-menu/MegaMenuAside.js +31 -0
  68. package/dist-es/mega-menu/MegaMenuAside.js.map +1 -0
  69. package/dist-es/mega-menu/MegaMenuContent.css.js +1 -1
  70. package/dist-es/mega-menu/MegaMenuContent.js +2 -10
  71. package/dist-es/mega-menu/MegaMenuContent.js.map +1 -1
  72. package/dist-es/mega-menu/MegaMenuContext.js.map +1 -1
  73. package/dist-es/mega-menu/MegaMenuGroup.css.js +1 -1
  74. package/dist-es/mega-menu/MegaMenuGroup.js +13 -31
  75. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -1
  76. package/dist-es/mega-menu/MegaMenuGroupContext.js +14 -0
  77. package/dist-es/mega-menu/MegaMenuGroupContext.js.map +1 -0
  78. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +4 -0
  79. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  80. package/dist-es/mega-menu/MegaMenuGroupHeading.js +37 -0
  81. package/dist-es/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  82. package/dist-es/mega-menu/MegaMenuGroups.css.js +4 -0
  83. package/dist-es/mega-menu/MegaMenuGroups.css.js.map +1 -0
  84. package/dist-es/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +7 -7
  85. package/dist-es/mega-menu/MegaMenuGroups.js.map +1 -0
  86. package/dist-es/mega-menu/MegaMenuList.css.js +4 -0
  87. package/dist-es/mega-menu/MegaMenuList.css.js.map +1 -0
  88. package/dist-es/mega-menu/MegaMenuList.js +41 -0
  89. package/dist-es/mega-menu/MegaMenuList.js.map +1 -0
  90. package/dist-es/mega-menu/MegaMenuListItem.css.js +4 -0
  91. package/dist-es/mega-menu/MegaMenuListItem.css.js.map +1 -0
  92. package/dist-es/mega-menu/MegaMenuListItem.js +43 -0
  93. package/dist-es/mega-menu/MegaMenuListItem.js.map +1 -0
  94. package/dist-es/mega-menu/MegaMenuPanel.css.js +1 -1
  95. package/dist-es/mega-menu/MegaMenuPanel.js +30 -50
  96. package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -1
  97. package/dist-es/mega-menu/MegaMenuTrigger.js +14 -16
  98. package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -1
  99. package/dist-es/mega-menu/useMegaMenuNavigation.js +278 -0
  100. package/dist-es/mega-menu/useMegaMenuNavigation.js.map +1 -0
  101. package/dist-es/mega-menu/usePageMargin.js +20 -0
  102. package/dist-es/mega-menu/usePageMargin.js.map +1 -0
  103. package/dist-es/toolbar-next/ToolbarNextOverflow.js +2 -1
  104. package/dist-es/toolbar-next/ToolbarNextOverflow.js.map +1 -1
  105. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js +21 -3
  106. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -1
  107. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js +4 -26
  108. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -1
  109. package/dist-es/toolbar-next/useToolbarNextOverflow.js +9 -7
  110. package/dist-es/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  111. package/dist-types/index.d.ts +0 -4
  112. package/dist-types/mega-menu/MegaMenu.d.ts +11 -2
  113. package/dist-types/mega-menu/MegaMenuActions.d.ts +10 -0
  114. package/dist-types/mega-menu/MegaMenuAside.d.ts +9 -0
  115. package/dist-types/mega-menu/MegaMenuContent.d.ts +2 -1
  116. package/dist-types/mega-menu/MegaMenuContext.d.ts +6 -7
  117. package/dist-types/mega-menu/MegaMenuGroup.d.ts +4 -3
  118. package/dist-types/mega-menu/MegaMenuGroupContext.d.ts +12 -0
  119. package/dist-types/mega-menu/MegaMenuGroupHeading.d.ts +13 -0
  120. package/dist-types/mega-menu/MegaMenuGroups.d.ts +8 -0
  121. package/dist-types/mega-menu/MegaMenuList.d.ts +16 -0
  122. package/dist-types/mega-menu/MegaMenuListItem.d.ts +25 -0
  123. package/dist-types/mega-menu/MegaMenuPanel.d.ts +2 -2
  124. package/dist-types/mega-menu/MegaMenuTrigger.d.ts +1 -0
  125. package/dist-types/mega-menu/index.d.ts +6 -4
  126. package/dist-types/mega-menu/useMegaMenuNavigation.d.ts +16 -0
  127. package/dist-types/mega-menu/usePageMargin.d.ts +6 -0
  128. package/dist-types/toolbar-next/useToolbarNextKeyboardNavigation.d.ts +1 -0
  129. package/package.json +2 -4
  130. package/dist-cjs/calendar/index.js +0 -61
  131. package/dist-cjs/calendar/index.js.map +0 -1
  132. package/dist-cjs/date-input/index.js +0 -23
  133. package/dist-cjs/date-input/index.js.map +0 -1
  134. package/dist-cjs/date-picker/index.js +0 -106
  135. package/dist-cjs/date-picker/index.js.map +0 -1
  136. package/dist-cjs/localization-provider/index.js +0 -26
  137. package/dist-cjs/localization-provider/index.js.map +0 -1
  138. package/dist-cjs/mega-menu/MegaMenuHeader.css.js +0 -6
  139. package/dist-cjs/mega-menu/MegaMenuHeader.css.js.map +0 -1
  140. package/dist-cjs/mega-menu/MegaMenuHeader.js +0 -26
  141. package/dist-cjs/mega-menu/MegaMenuHeader.js.map +0 -1
  142. package/dist-cjs/mega-menu/MegaMenuItem.css.js +0 -6
  143. package/dist-cjs/mega-menu/MegaMenuItem.css.js.map +0 -1
  144. package/dist-cjs/mega-menu/MegaMenuItem.js +0 -52
  145. package/dist-cjs/mega-menu/MegaMenuItem.js.map +0 -1
  146. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js +0 -6
  147. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  148. package/dist-cjs/mega-menu/MegaMenuItemContent.js +0 -23
  149. package/dist-cjs/mega-menu/MegaMenuItemContent.js.map +0 -1
  150. package/dist-cjs/mega-menu/MegaMenuSection.css.js +0 -6
  151. package/dist-cjs/mega-menu/MegaMenuSection.css.js.map +0 -1
  152. package/dist-cjs/mega-menu/MegaMenuSection.js.map +0 -1
  153. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +0 -209
  154. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  155. package/dist-cjs/utils/deprecatedExport.js +0 -30
  156. package/dist-cjs/utils/deprecatedExport.js.map +0 -1
  157. package/dist-es/calendar/index.js +0 -50
  158. package/dist-es/calendar/index.js.map +0 -1
  159. package/dist-es/date-input/index.js +0 -20
  160. package/dist-es/date-input/index.js.map +0 -1
  161. package/dist-es/date-picker/index.js +0 -85
  162. package/dist-es/date-picker/index.js.map +0 -1
  163. package/dist-es/localization-provider/index.js +0 -20
  164. package/dist-es/localization-provider/index.js.map +0 -1
  165. package/dist-es/mega-menu/MegaMenuHeader.css.js +0 -4
  166. package/dist-es/mega-menu/MegaMenuHeader.css.js.map +0 -1
  167. package/dist-es/mega-menu/MegaMenuHeader.js +0 -24
  168. package/dist-es/mega-menu/MegaMenuHeader.js.map +0 -1
  169. package/dist-es/mega-menu/MegaMenuItem.css.js +0 -4
  170. package/dist-es/mega-menu/MegaMenuItem.css.js.map +0 -1
  171. package/dist-es/mega-menu/MegaMenuItem.js +0 -50
  172. package/dist-es/mega-menu/MegaMenuItem.js.map +0 -1
  173. package/dist-es/mega-menu/MegaMenuItemContent.css.js +0 -4
  174. package/dist-es/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  175. package/dist-es/mega-menu/MegaMenuItemContent.js +0 -21
  176. package/dist-es/mega-menu/MegaMenuItemContent.js.map +0 -1
  177. package/dist-es/mega-menu/MegaMenuSection.css.js +0 -4
  178. package/dist-es/mega-menu/MegaMenuSection.css.js.map +0 -1
  179. package/dist-es/mega-menu/MegaMenuSection.js.map +0 -1
  180. package/dist-es/mega-menu/useMegaMenuKeyboard.js +0 -205
  181. package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  182. package/dist-es/utils/deprecatedExport.js +0 -27
  183. package/dist-es/utils/deprecatedExport.js.map +0 -1
  184. package/dist-types/calendar/index.d.ts +0 -13
  185. package/dist-types/date-input/index.d.ts +0 -3
  186. package/dist-types/localization-provider/index.d.ts +0 -9
  187. package/dist-types/mega-menu/MegaMenuHeader.d.ts +0 -8
  188. package/dist-types/mega-menu/MegaMenuItem.d.ts +0 -12
  189. package/dist-types/mega-menu/MegaMenuItemContent.d.ts +0 -8
  190. package/dist-types/mega-menu/MegaMenuSection.d.ts +0 -8
  191. package/dist-types/mega-menu/useMegaMenuKeyboard.d.ts +0 -30
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var MegaMenuAside$1 = require('./MegaMenuAside.css.js');
10
+
11
+ const withBaseName = core.makePrefixer("saltMegaMenuAside");
12
+ const MegaMenuAside = react.forwardRef(
13
+ function MegaMenuAside2({ className, ...rest }, ref) {
14
+ const targetWindow = window.useWindow();
15
+ styles.useComponentCssInjection({
16
+ testId: "salt-mega-menu-aside",
17
+ css: MegaMenuAside$1,
18
+ window: targetWindow
19
+ });
20
+ return /* @__PURE__ */ jsxRuntime.jsx(
21
+ "aside",
22
+ {
23
+ "data-mega-menu-column": "",
24
+ className: clsx.clsx(withBaseName(), className),
25
+ ref,
26
+ ...rest
27
+ }
28
+ );
29
+ }
30
+ );
31
+
32
+ exports.MegaMenuAside = MegaMenuAside;
33
+ //# sourceMappingURL=MegaMenuAside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuAside.js","sources":["../src/mega-menu/MegaMenuAside.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport megaMenuAsideCss from \"./MegaMenuAside.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuAside\");\n\nexport interface MegaMenuAsideProps extends ComponentPropsWithoutRef<\"aside\"> {\n /**\n * The content. Renders to the left of `MegaMenuContent` when placed before\n * it, and to the right when placed after.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuAside = forwardRef<HTMLElement, MegaMenuAsideProps>(\n function MegaMenuAside({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-aside\",\n css: megaMenuAsideCss,\n window: targetWindow,\n });\n\n // Side content is also a navigation column (`data-mega-menu-column`).\n return (\n <aside\n data-mega-menu-column=\"\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuAside","useWindow","useComponentCssInjection","megaMenuAsideCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAU9C,MAAM,aAAA,GAAgBC,gBAAA;AAAA,EAC3B,SAASC,cAAAA,CAAc,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAClD,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,eAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAGD,IAAA,uBACEC,cAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,uBAAA,EAAsB,EAAA;AAAA,QACtB,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltMegaMenuContent {\n padding: var(--salt-spacing-300);\n}\n";
3
+ var css_248z = ".saltMegaMenuContent {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-300);\n padding: var(--salt-spacing-300);\n min-width: 0;\n flex: 0 1 auto;\n max-inline-size: var(--saltMegaMenuPanel-availableWidth);\n box-sizing: border-box;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=MegaMenuContent.css.js.map
@@ -10,22 +10,14 @@ var MegaMenuContent$1 = require('./MegaMenuContent.css.js');
10
10
 
11
11
  const withBaseName = core.makePrefixer("saltMegaMenuContent");
12
12
  const MegaMenuContent = react.forwardRef(
13
- function MegaMenuContent2({ className, ...rest }, ref) {
13
+ function MegaMenuContent2({ children, className, ...rest }, ref) {
14
14
  const targetWindow = window.useWindow();
15
15
  styles.useComponentCssInjection({
16
16
  testId: "salt-mega-menu-content",
17
17
  css: MegaMenuContent$1,
18
18
  window: targetWindow
19
19
  });
20
- return /* @__PURE__ */ jsxRuntime.jsx(
21
- "div",
22
- {
23
- className: clsx.clsx(withBaseName(), className),
24
- "data-mega-menu-column": "",
25
- ref,
26
- ...rest
27
- }
28
- );
20
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children });
29
21
  }
30
22
  );
31
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenuContent.js","sources":["../src/mega-menu/MegaMenuContent.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport megaMenuContentCss from \"./MegaMenuContent.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuContent\");\n\nexport interface MegaMenuContentProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the region.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuContent = forwardRef<HTMLDivElement, MegaMenuContentProps>(\n function MegaMenuContent({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-content\",\n css: megaMenuContentCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n data-mega-menu-column=\"\"\n ref={ref}\n {...rest}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuContent","useWindow","useComponentCssInjection","megaMenuContentCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAShD,MAAM,eAAA,GAAkBC,gBAAA;AAAA,EAC7B,SAASC,gBAAAA,CAAgB,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AACpD,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,wBAAA;AAAA,MACR,GAAA,EAAKC,iBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,uBAAA,EAAsB,EAAA;AAAA,QACtB,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"MegaMenuContent.js","sources":["../src/mega-menu/MegaMenuContent.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport megaMenuContentCss from \"./MegaMenuContent.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuContent\");\n\nexport interface MegaMenuContentProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the mega menu navigation area, typically a `MegaMenuGroups`\n * and an optional `MegaMenuActions`.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuContent = forwardRef<HTMLDivElement, MegaMenuContentProps>(\n function MegaMenuContent({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-content\",\n css: megaMenuContentCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n {children}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuContent","useWindow","useComponentCssInjection","megaMenuContentCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAUhD,MAAM,eAAA,GAAkBC,gBAAA;AAAA,EAC7B,SAASC,iBAAgB,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC9D,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,wBAAA;AAAA,MACR,GAAA,EAAKC,iBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA,EAAG,GAAA,EAAW,GAAG,IAAA,EAC5D,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenuContext.js","sources":["../src/mega-menu/MegaMenuContext.ts"],"sourcesContent":["import type { FloatingRootContext, Placement } from \"@floating-ui/react\";\nimport { createContext } from \"@salt-ds/core\";\nimport type { Dispatch, HTMLProps, SetStateAction } from \"react\";\n\nexport interface MegaMenuContextValue {\n /** Whether the mega menu is currently open. */\n openState: boolean;\n /** Toggle or set the open state of the mega menu. */\n setOpen: (open: boolean) => void;\n /** The floating-ui root context for coordinating interactions. */\n floatingRootContext: FloatingRootContext;\n /** The placement of the mega menu panel relative to the trigger. */\n placement: Placement;\n /** Props getter for the trigger (reference) element. Merges floating-ui interaction props with user props. */\n getReferenceProps: (\n userProps?: HTMLProps<Element> | undefined,\n ) => Record<string, unknown>;\n /** Props getter for the floating panel element. Merges floating-ui interaction props with user props. */\n getFloatingProps: (\n userProps?: HTMLProps<HTMLElement> | undefined,\n ) => Record<string, unknown>;\n /** Ref setter for the floating panel element. */\n setFloating: Dispatch<SetStateAction<HTMLElement | null>>;\n /** Ref setter for the trigger (reference) element. */\n setReference: Dispatch<SetStateAction<HTMLElement | null>>;\n /** Whether the first item should receive focus when the panel opens. */\n focusFirstItemOnOpen: boolean;\n /** Toggle the focus-first-item-on-open flag. */\n setFocusFirstItemOnOpen: Dispatch<SetStateAction<boolean>>;\n /** The id of the mega menu panel, used for aria-controls on the trigger. */\n panelId: string | undefined;\n /** Set the panel id when the panel mounts. */\n setPanelId: Dispatch<SetStateAction<string | undefined>>;\n}\n\nexport const MegaMenuContext = createContext<MegaMenuContextValue | undefined>(\n \"MegaMenuContext\",\n undefined,\n);\n"],"names":["createContext"],"mappings":";;;;AAmCO,MAAM,eAAA,GAAkBA,kBAAA;AAAA,EAC7B,iBAAA;AAAA,EACA;AACF;;;;"}
1
+ {"version":3,"file":"MegaMenuContext.js","sources":["../src/mega-menu/MegaMenuContext.ts"],"sourcesContent":["import type { FloatingRootContext } from \"@floating-ui/react\";\nimport { createContext } from \"@salt-ds/core\";\nimport type {\n Dispatch,\n HTMLProps,\n MutableRefObject,\n SetStateAction,\n} from \"react\";\nimport type { MegaMenuPlacement } from \"./MegaMenu\";\n\nexport interface MegaMenuContextValue {\n /** Whether the mega menu is currently open. */\n openState: boolean;\n /** Toggle or set the open state of the mega menu. */\n setOpen: (open: boolean) => void;\n /** The floating-ui root context for coordinating interactions. */\n floatingRootContext: FloatingRootContext;\n /** The placement of the mega menu panel relative to the trigger. */\n placement: MegaMenuPlacement;\n /** Props getter for the trigger (reference) element. Merges floating-ui interaction props with user props. */\n getReferenceProps: (\n userProps?: HTMLProps<Element> | undefined,\n ) => Record<string, unknown>;\n /** Props getter for the floating panel element. Merges floating-ui interaction props with user props. */\n getFloatingProps: (\n userProps?: HTMLProps<HTMLElement> | undefined,\n ) => Record<string, unknown>;\n /** Ref setter for the floating panel element. */\n setFloating: Dispatch<SetStateAction<HTMLElement | null>>;\n /** Ref setter for the trigger (reference) element. */\n setReference: Dispatch<SetStateAction<HTMLElement | null>>;\n /** Whether the first item should receive focus when the panel opens. */\n focusFirstItemOnOpenRef: MutableRefObject<boolean>;\n /** The id of the mega menu panel, used for aria-controls on the trigger. */\n panelId: string | undefined;\n /** Registers the panel's id so the trigger's aria-controls stays in sync. */\n setPanelId: Dispatch<SetStateAction<string | undefined>>;\n}\n\nexport const MegaMenuContext = createContext<MegaMenuContextValue | undefined>(\n \"MegaMenuContext\",\n undefined,\n);\n"],"names":["createContext"],"mappings":";;;;AAuCO,MAAM,eAAA,GAAkBA,kBAAA;AAAA,EAC7B,iBAAA;AAAA,EACA;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltMegaMenuGroup {\n display: flex;\n flex-direction: column;\n}\n\n.saltMegaMenuGroup-list {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n gap: var(--salt-spacing-fixed-100);\n flex-direction: column;\n}\n";
3
+ var css_248z = ".saltMegaMenuGroup {\n display: flex;\n flex-direction: column;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=MegaMenuGroup.css.js.map
@@ -7,12 +7,9 @@ var window = require('@salt-ds/window');
7
7
  var clsx = require('clsx');
8
8
  var react = require('react');
9
9
  var MegaMenuGroup$1 = require('./MegaMenuGroup.css.js');
10
+ var MegaMenuGroupContext = require('./MegaMenuGroupContext.js');
10
11
 
11
12
  const withBaseName = core.makePrefixer("saltMegaMenuGroup");
12
- function isMegaMenuHeader(child) {
13
- var _a;
14
- return !!((_a = child.type) == null ? void 0 : _a.__isMegaMenuHeader);
15
- }
16
13
  const MegaMenuGroup = react.forwardRef(
17
14
  function MegaMenuGroup2({ children, className, ...rest }, ref) {
18
15
  const targetWindow = window.useWindow();
@@ -21,36 +18,21 @@ const MegaMenuGroup = react.forwardRef(
21
18
  css: MegaMenuGroup$1,
22
19
  window: targetWindow
23
20
  });
24
- const headerId = core.useId();
25
- let header = null;
26
- const items = [];
27
- react.Children.forEach(children, (child) => {
28
- if (react.isValidElement(child) && isMegaMenuHeader(child) && !header) {
29
- header = react.cloneElement(child, { id: headerId });
30
- } else {
31
- items.push(child);
32
- }
33
- });
34
- return /* @__PURE__ */ jsxRuntime.jsxs(
21
+ const [headingId, setHeadingId] = react.useState(void 0);
22
+ const contextValue = react.useMemo(
23
+ () => ({ headingId, setHeadingId }),
24
+ [headingId]
25
+ );
26
+ return /* @__PURE__ */ jsxRuntime.jsx(MegaMenuGroupContext.MegaMenuGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
35
27
  "div",
36
28
  {
37
- className: clsx.clsx(withBaseName(), className),
38
29
  "data-mega-menu-column": "",
30
+ className: clsx.clsx(withBaseName(), className),
39
31
  ref,
40
32
  ...rest,
41
- children: [
42
- header,
43
- /* @__PURE__ */ jsxRuntime.jsx(
44
- "ol",
45
- {
46
- className: withBaseName("list"),
47
- "aria-labelledby": header ? headerId : void 0,
48
- children: items
49
- }
50
- )
51
- ]
33
+ children
52
34
  }
53
- );
35
+ ) });
54
36
  }
55
37
  );
56
38
 
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenuGroup.js","sources":["../src/mega-menu/MegaMenuGroup.tsx"],"sourcesContent":["import { makePrefixer, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n cloneElement,\n forwardRef,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport megaMenuGroupCss from \"./MegaMenuGroup.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroup\");\n\nfunction isMegaMenuHeader(child: ReactElement): boolean {\n return !!(child.type as { __isMegaMenuHeader?: boolean })?.__isMegaMenuHeader;\n}\n\nexport interface MegaMenuGroupProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The content of the mega menu group, typically MegaMenuHeader and MegaMenuItem components.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuGroup = forwardRef<HTMLDivElement, MegaMenuGroupProps>(\n function MegaMenuGroup({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-group\",\n css: megaMenuGroupCss,\n window: targetWindow,\n });\n\n const headerId = useId();\n let header: ReactNode = null;\n const items: ReactNode[] = [];\n\n Children.forEach(children, (child) => {\n if (isValidElement(child) && isMegaMenuHeader(child) && !header) {\n header = cloneElement(child, { id: headerId });\n } else {\n items.push(child);\n }\n });\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n data-mega-menu-column=\"\"\n ref={ref}\n {...rest}\n >\n {header}\n <ol\n className={withBaseName(\"list\")}\n aria-labelledby={header ? headerId : undefined}\n >\n {items}\n </ol>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuGroup","useWindow","useComponentCssInjection","megaMenuGroupCss","useId","Children","isValidElement","cloneElement","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;AAeA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAErD,SAAS,iBAAiB,KAAA,EAA8B;AAjBxD,EAAA,IAAA,EAAA;AAkBE,EAAA,OAAO,CAAC,EAAA,CAAE,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiD,kBAAA,CAAA;AAC7D;AASO,MAAM,aAAA,GAAgBC,gBAAA;AAAA,EAC3B,SAASC,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC5D,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,eAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,WAAWC,UAAA,EAAM;AACvB,IAAA,IAAI,MAAA,GAAoB,IAAA;AACxB,IAAA,MAAM,QAAqB,EAAC;AAE5B,IAAAC,cAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,MAAA,IAAIC,qBAAe,KAAK,CAAA,IAAK,iBAAiB,KAAK,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC/D,QAAA,MAAA,GAASC,kBAAA,CAAa,KAAA,EAAO,EAAE,EAAA,EAAI,UAAU,CAAA;AAAA,MAC/C,CAAA,MAAO;AACL,QAAA,KAAA,CAAM,KAAK,KAAK,CAAA;AAAA,MAClB;AAAA,IACF,CAAC,CAAA;AAED,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,uBAAA,EAAsB,EAAA;AAAA,QACtB,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,MAAA;AAAA,0BACDC,cAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,cAC9B,iBAAA,EAAiB,SAAS,QAAA,GAAW,MAAA;AAAA,cAEpC,QAAA,EAAA;AAAA;AAAA;AACH;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"MegaMenuGroup.js","sources":["../src/mega-menu/MegaMenuGroup.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useMemo,\n useState,\n} from \"react\";\nimport megaMenuGroupCss from \"./MegaMenuGroup.css\";\nimport { MegaMenuGroupContext } from \"./MegaMenuGroupContext\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroup\");\n\nexport interface MegaMenuGroupProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the mega menu group: a `MegaMenuGroupHeading` and a\n * `MegaMenuList` of `MegaMenuListItem`s.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuGroup = forwardRef<HTMLDivElement, MegaMenuGroupProps>(\n function MegaMenuGroup({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-group\",\n css: megaMenuGroupCss,\n window: targetWindow,\n });\n\n // The heading registers its id so the list can label itself; `undefined`\n // with no heading. The group is also a navigation column.\n const [headingId, setHeadingId] = useState<string | undefined>(undefined);\n const contextValue = useMemo(\n () => ({ headingId, setHeadingId }),\n [headingId],\n );\n\n return (\n <MegaMenuGroupContext.Provider value={contextValue}>\n <div\n data-mega-menu-column=\"\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n >\n {children}\n </div>\n </MegaMenuGroupContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuGroup","useWindow","useComponentCssInjection","megaMenuGroupCss","useState","useMemo","jsx","MegaMenuGroupContext","clsx"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA;AAU9C,MAAM,aAAA,GAAgBC,gBAAA;AAAA,EAC3B,SAASC,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC5D,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,eAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAID,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAA6B,MAAS,CAAA;AACxE,IAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,MACnB,OAAO,EAAE,SAAA,EAAW,YAAA,EAAa,CAAA;AAAA,MACjC,CAAC,SAAS;AAAA,KACZ;AAEA,IAAA,uBACEC,cAAA,CAACC,yCAAA,CAAqB,QAAA,EAArB,EAA8B,OAAO,YAAA,EACpC,QAAA,kBAAAD,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,uBAAA,EAAsB,EAAA;AAAA,QACtB,SAAA,EAAWE,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var core = require('@salt-ds/core');
4
+ var react = require('react');
5
+
6
+ const MegaMenuGroupContext = core.createContext(
7
+ "MegaMenuGroupContext",
8
+ { headingId: void 0, setHeadingId: () => {
9
+ } }
10
+ );
11
+ function useMegaMenuGroup() {
12
+ return react.useContext(MegaMenuGroupContext);
13
+ }
14
+
15
+ exports.MegaMenuGroupContext = MegaMenuGroupContext;
16
+ exports.useMegaMenuGroup = useMegaMenuGroup;
17
+ //# sourceMappingURL=MegaMenuGroupContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroupContext.js","sources":["../src/mega-menu/MegaMenuGroupContext.ts"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { useContext } from \"react\";\n\nexport interface MegaMenuGroupContextValue {\n /**\n * The rendered heading's id, used to label the item list via `aria-labelledby`.\n * `undefined` when the group has no `MegaMenuGroupHeading`.\n */\n headingId: string | undefined;\n /** Register (or clear, with `undefined`) the heading's id. */\n setHeadingId: (id: string | undefined) => void;\n}\n\nexport const MegaMenuGroupContext = createContext<MegaMenuGroupContextValue>(\n \"MegaMenuGroupContext\",\n { headingId: undefined, setHeadingId: () => {} },\n);\n\n/** Access the nearest `MegaMenuGroup` context. */\nexport function useMegaMenuGroup(): MegaMenuGroupContextValue {\n return useContext(MegaMenuGroupContext);\n}\n"],"names":["createContext","useContext"],"mappings":";;;;;AAaO,MAAM,oBAAA,GAAuBA,kBAAA;AAAA,EAClC,sBAAA;AAAA,EACA,EAAE,SAAA,EAAW,MAAA,EAAW,YAAA,EAAc,MAAM;AAAA,EAAC,CAAA;AAC/C;AAGO,SAAS,gBAAA,GAA8C;AAC5D,EAAA,OAAOC,iBAAW,oBAAoB,CAAA;AACxC;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuGroupHeading {\n display: flex;\n align-items: center;\n margin: 0 0 var(--salt-spacing-50);\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);\n min-height: var(--salt-size-base);\n font-family: var(--salt-text-label-fontFamily);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-fontWeight-strong);\n line-height: var(--salt-text-label-lineHeight);\n color: var(--salt-content-secondary-foreground);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuGroupHeading.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroupHeading.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var MegaMenuGroupContext = require('./MegaMenuGroupContext.js');
10
+ var MegaMenuGroupHeading$1 = require('./MegaMenuGroupHeading.css.js');
11
+
12
+ const withBaseName = core.makePrefixer("saltMegaMenuGroupHeading");
13
+ const MegaMenuGroupHeading = react.forwardRef(function MegaMenuGroupHeading2({ children, className, id: idProp, as: Heading = "h3", ...rest }, ref) {
14
+ const targetWindow = window.useWindow();
15
+ styles.useComponentCssInjection({
16
+ testId: "salt-mega-menu-group-heading",
17
+ css: MegaMenuGroupHeading$1,
18
+ window: targetWindow
19
+ });
20
+ const id = core.useId(idProp);
21
+ const { setHeadingId } = MegaMenuGroupContext.useMegaMenuGroup();
22
+ core.useIsomorphicLayoutEffect(() => {
23
+ setHeadingId(id);
24
+ return () => setHeadingId(void 0);
25
+ }, [id, setHeadingId]);
26
+ return /* @__PURE__ */ jsxRuntime.jsx(
27
+ Heading,
28
+ {
29
+ className: clsx.clsx(withBaseName(), className),
30
+ ref,
31
+ ...rest,
32
+ id,
33
+ children
34
+ }
35
+ );
36
+ });
37
+
38
+ exports.MegaMenuGroupHeading = MegaMenuGroupHeading;
39
+ //# sourceMappingURL=MegaMenuGroupHeading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroupHeading.js","sources":["../src/mega-menu/MegaMenuGroupHeading.tsx"],"sourcesContent":["import { makePrefixer, useId, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { useMegaMenuGroup } from \"./MegaMenuGroupContext\";\nimport megaMenuGroupHeadingCss from \"./MegaMenuGroupHeading.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroupHeading\");\n\nexport interface MegaMenuGroupHeadingProps\n extends ComponentPropsWithoutRef<\"h2\"> {\n /**\n * The content of the mega menu group heading.\n */\n children?: ReactNode;\n /**\n * The heading element to render.\n * @default \"h3\"\n */\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n}\n\nexport const MegaMenuGroupHeading = forwardRef<\n HTMLHeadingElement,\n MegaMenuGroupHeadingProps\n>(function MegaMenuGroupHeading(\n { children, className, id: idProp, as: Heading = \"h3\", ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-group-heading\",\n css: megaMenuGroupHeadingCss,\n window: targetWindow,\n });\n\n const id = useId(idProp);\n const { setHeadingId } = useMegaMenuGroup();\n useIsomorphicLayoutEffect(() => {\n setHeadingId(id);\n return () => setHeadingId(undefined);\n }, [id, setHeadingId]);\n\n return (\n <Heading\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n id={id}\n >\n {children}\n </Heading>\n );\n});\n"],"names":["makePrefixer","forwardRef","MegaMenuGroupHeading","useWindow","useComponentCssInjection","megaMenuGroupHeadingCss","useId","useMegaMenuGroup","useIsomorphicLayoutEffect","jsx","clsx"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA;AAerD,MAAM,oBAAA,GAAuBC,gBAAA,CAGlC,SAASC,qBAAAA,CACT,EAAE,QAAA,EAAU,SAAA,EAAW,EAAA,EAAI,MAAA,EAAQ,IAAI,OAAA,GAAU,IAAA,EAAM,GAAG,IAAA,IAC1D,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,8BAAA;AAAA,IACR,GAAA,EAAKC,sBAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,EAAA,GAAKC,WAAM,MAAM,CAAA;AACvB,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIC,qCAAA,EAAiB;AAC1C,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAA,YAAA,CAAa,EAAE,CAAA;AACf,IAAA,OAAO,MAAM,aAAa,MAAS,CAAA;AAAA,EACrC,CAAA,EAAG,CAAC,EAAA,EAAI,YAAY,CAAC,CAAA;AAErB,EAAA,uBACEC,cAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,MACC,GAAG,IAAA;AAAA,MACJ,EAAA;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ,CAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuGroups {\n align-self: start;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(0, var(--saltMegaMenuGroups-columnWidth, 12rem)));\n gap: var(--salt-spacing-300);\n min-width: 0;\n max-inline-size: var(--saltMegaMenuPanel-availableWidth);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuGroups.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroups.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -6,20 +6,20 @@ var styles = require('@salt-ds/styles');
6
6
  var window = require('@salt-ds/window');
7
7
  var clsx = require('clsx');
8
8
  var react = require('react');
9
- var MegaMenuSection$1 = require('./MegaMenuSection.css.js');
9
+ var MegaMenuGroups$1 = require('./MegaMenuGroups.css.js');
10
10
 
11
- const withBaseName = core.makePrefixer("saltMegaMenuSection");
12
- const MegaMenuSection = react.forwardRef(
13
- function MegaMenuSection2({ children, className, ...rest }, ref) {
11
+ const withBaseName = core.makePrefixer("saltMegaMenuGroups");
12
+ const MegaMenuGroups = react.forwardRef(
13
+ function MegaMenuGroups2({ children, className, ...rest }, ref) {
14
14
  const targetWindow = window.useWindow();
15
15
  styles.useComponentCssInjection({
16
- testId: "salt-mega-menu-section",
17
- css: MegaMenuSection$1,
16
+ testId: "salt-mega-menu-groups",
17
+ css: MegaMenuGroups$1,
18
18
  window: targetWindow
19
19
  });
20
20
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children });
21
21
  }
22
22
  );
23
23
 
24
- exports.MegaMenuSection = MegaMenuSection;
25
- //# sourceMappingURL=MegaMenuSection.js.map
24
+ exports.MegaMenuGroups = MegaMenuGroups;
25
+ //# sourceMappingURL=MegaMenuGroups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroups.js","sources":["../src/mega-menu/MegaMenuGroups.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport megaMenuGroupsCss from \"./MegaMenuGroups.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroups\");\n\nexport interface MegaMenuGroupsProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The `MegaMenuGroup` columns of the mega menu.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuGroups = forwardRef<HTMLDivElement, MegaMenuGroupsProps>(\n function MegaMenuGroups({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-groups\",\n css: megaMenuGroupsCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n {children}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuGroups","useWindow","useComponentCssInjection","megaMenuGroupsCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,oBAAoB,CAAA;AAS/C,MAAM,cAAA,GAAiBC,gBAAA;AAAA,EAC5B,SAASC,gBAAe,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7D,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAKC,gBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA,EAAG,GAAA,EAAW,GAAG,IAAA,EAC5D,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuList {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n gap: var(--salt-spacing-fixed-100);\n flex-direction: column;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuList.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuList.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var MegaMenuGroupContext = require('./MegaMenuGroupContext.js');
10
+ var MegaMenuList$1 = require('./MegaMenuList.css.js');
11
+
12
+ const withBaseName = core.makePrefixer("saltMegaMenuList");
13
+ const MegaMenuList = react.forwardRef(
14
+ function MegaMenuList2({
15
+ as,
16
+ children,
17
+ className,
18
+ "aria-labelledby": ariaLabelledBy,
19
+ ...rest
20
+ }, ref) {
21
+ const targetWindow = window.useWindow();
22
+ styles.useComponentCssInjection({
23
+ testId: "salt-mega-menu-list",
24
+ css: MegaMenuList$1,
25
+ window: targetWindow
26
+ });
27
+ const { headingId } = MegaMenuGroupContext.useMegaMenuGroup();
28
+ const Component = as || "ul";
29
+ return /* @__PURE__ */ jsxRuntime.jsx(
30
+ Component,
31
+ {
32
+ ref,
33
+ className: clsx.clsx(withBaseName(), className),
34
+ "aria-labelledby": clsx.clsx(headingId, ariaLabelledBy) || void 0,
35
+ ...rest,
36
+ children
37
+ }
38
+ );
39
+ }
40
+ );
41
+
42
+ exports.MegaMenuList = MegaMenuList;
43
+ //# sourceMappingURL=MegaMenuList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuList.js","sources":["../src/mega-menu/MegaMenuList.tsx"],"sourcesContent":["import {\n makePrefixer,\n type PolymorphicComponentPropWithRef,\n type PolymorphicRef,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ElementType,\n type ForwardedRef,\n type FunctionComponent,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { useMegaMenuGroup } from \"./MegaMenuGroupContext\";\nimport megaMenuListCss from \"./MegaMenuList.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuList\");\n\nexport type MegaMenuListProps<T extends ElementType = \"ul\"> =\n PolymorphicComponentPropWithRef<\n T,\n {\n /**\n * The items of the group, typically `MegaMenuListItem` components. Each\n * `MegaMenuListItem` renders its own `<li>`.\n */\n children?: ReactNode;\n }\n >;\n\ntype MegaMenuListComponent = <T extends ElementType = \"ul\">(\n props: MegaMenuListProps<T>,\n) => ReturnType<FunctionComponent>;\n\n/**\n * The list of a group's `MegaMenuListItem`s. Renders a `<ul>` by default; pass\n * `as=\"ol\"` for an ordered list.\n */\nexport const MegaMenuList: MegaMenuListComponent = forwardRef(\n function MegaMenuList<T extends ElementType = \"ul\">(\n {\n as,\n children,\n className,\n \"aria-labelledby\": ariaLabelledBy,\n ...rest\n }: MegaMenuListProps<T>,\n ref?: ForwardedRef<unknown>,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-list\",\n css: megaMenuListCss,\n window: targetWindow,\n });\n\n const { headingId } = useMegaMenuGroup();\n\n const Component = as || \"ul\";\n\n return (\n <Component\n ref={ref as PolymorphicRef<T>}\n className={clsx(withBaseName(), className)}\n aria-labelledby={clsx(headingId, ariaLabelledBy) || undefined}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuList","useWindow","useComponentCssInjection","megaMenuListCss","useMegaMenuGroup","jsx","clsx"],"mappings":";;;;;;;;;;;AAkBA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA;AAsB7C,MAAM,YAAA,GAAsCC,gBAAA;AAAA,EACjD,SAASC,aAAAA,CACP;AAAA,IACE,EAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA,EAAmB,cAAA;AAAA,IACnB,GAAG;AAAA,KAEL,GAAA,EACA;AACA,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAKC,cAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,EAAE,SAAA,EAAU,GAAIC,qCAAA,EAAiB;AAEvC,IAAA,MAAM,YAAY,EAAA,IAAM,IAAA;AAExB,IAAA,uBACEC,cAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,iBAAA,EAAiBA,SAAA,CAAK,SAAA,EAAW,cAAc,CAAA,IAAK,MAAA;AAAA,QACnD,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuListItem {\n list-style: none;\n display: flex;\n flex-direction: column;\n}\n\n.saltMegaMenuListItem-wrapper {\n display: flex;\n padding: var(--salt-spacing-50) var(--salt-spacing-100);\n align-items: flex-start;\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n cursor: var(--salt-cursor-hover);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n box-sizing: border-box;\n gap: var(--salt-spacing-100);\n position: relative;\n border-radius: var(--salt-palette-corner-weak, 0);\n text-decoration: none;\n border: none;\n font: inherit;\n text-align: start;\n}\n\n.saltMegaMenuListItem-wrapper > .saltIcon {\n display: flex;\n height: var(--salt-size-base);\n align-items: center;\n}\n\n.saltMegaMenuListItem-content {\n flex: 1 0;\n margin: var(--salt-spacing-75) 0;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n\n.saltMegaMenuListItem-wrapper:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltMegaMenuListItem-wrapper:hover:not(:focus-visible) {\n outline: none;\n background: var(--salt-overlayable-background-hover);\n}\n\n.saltMegaMenuListItem-wrapper:active {\n background: var(--salt-navigable-accent-background-active);\n}\n\n.saltMegaMenuListItem-wrapper:active::before {\n content: \"\";\n position: absolute;\n inset: 0;\n box-sizing: border-box;\n border-radius: inherit;\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-navigable-accent-borderColor-active);\n pointer-events: none;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuListItem.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuListItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var MegaMenuListItem$1 = require('./MegaMenuListItem.css.js');
10
+ var useMegaMenu = require('./useMegaMenu.js');
11
+
12
+ const withBaseName = core.makePrefixer("saltMegaMenuListItem");
13
+ function MegaMenuListItemAction(props) {
14
+ return core.renderProps("a", props);
15
+ }
16
+ const MegaMenuListItem = react.forwardRef(function MegaMenuListItem2({ children, className, onClick, render, href, current, ...rest }, ref) {
17
+ const targetWindow = window.useWindow();
18
+ const megaMenu = useMegaMenu.useMegaMenu();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-mega-menu-list-item",
21
+ css: MegaMenuListItem$1,
22
+ window: targetWindow
23
+ });
24
+ const handleClick = (event) => {
25
+ onClick == null ? void 0 : onClick(event);
26
+ megaMenu.setOpen(false);
27
+ };
28
+ return /* @__PURE__ */ jsxRuntime.jsx("li", { ref, className: clsx.clsx(withBaseName(), className), ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
29
+ MegaMenuListItemAction,
30
+ {
31
+ className: withBaseName("wrapper"),
32
+ href,
33
+ onClick: handleClick,
34
+ "aria-current": current ? "page" : void 0,
35
+ render,
36
+ children: react.Children.map(
37
+ children,
38
+ (child) => typeof child === "string" || typeof child === "number" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: withBaseName("content"), children: child }) : child
39
+ )
40
+ }
41
+ ) });
42
+ });
43
+
44
+ exports.MegaMenuListItem = MegaMenuListItem;
45
+ //# sourceMappingURL=MegaMenuListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuListItem.js","sources":["../src/mega-menu/MegaMenuListItem.tsx"],"sourcesContent":["import { makePrefixer, type RenderPropsType, renderProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n Children,\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEventHandler,\n type ReactNode,\n} from \"react\";\nimport megaMenuListItemCss from \"./MegaMenuListItem.css\";\nimport { useMegaMenu } from \"./useMegaMenu\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuListItem\");\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know the exact type here\nfunction MegaMenuListItemAction(props: ComponentPropsWithoutRef<any>) {\n return renderProps(\"a\", props);\n}\n\nexport interface MegaMenuListItemProps\n extends Omit<ComponentPropsWithoutRef<\"li\">, \"onClick\"> {\n /**\n * The content of the mega menu item.\n */\n children?: ReactNode;\n /**\n * Whether the item is the current page. Sets `aria-current=\"page\"`\n */\n current?: boolean;\n /**\n * Href passed to the link action element.\n */\n href?: string;\n /**\n * Called when the item's action is activated, before the menu closes.\n */\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n /**\n * Render prop to enable customization of the underlying action element (e.g. a router `Link`).\n */\n render?: RenderPropsType[\"render\"];\n}\n\nexport const MegaMenuListItem = forwardRef<\n HTMLLIElement,\n MegaMenuListItemProps\n>(function MegaMenuListItem(\n { children, className, onClick, render, href, current, ...rest },\n ref,\n) {\n const targetWindow = useWindow();\n const megaMenu = useMegaMenu();\n\n useComponentCssInjection({\n testId: \"salt-mega-menu-list-item\",\n css: megaMenuListItemCss,\n window: targetWindow,\n });\n\n const handleClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n onClick?.(event);\n megaMenu.setOpen(false);\n };\n\n return (\n <li ref={ref} className={clsx(withBaseName(), className)} {...rest}>\n <MegaMenuListItemAction\n className={withBaseName(\"wrapper\")}\n href={href}\n onClick={handleClick}\n aria-current={current ? \"page\" : undefined}\n render={render}\n >\n {Children.map(children, (child) =>\n typeof child === \"string\" || typeof child === \"number\" ? (\n <span className={withBaseName(\"content\")}>{child}</span>\n ) : (\n child\n ),\n )}\n </MegaMenuListItemAction>\n </li>\n );\n});\n"],"names":["makePrefixer","renderProps","forwardRef","MegaMenuListItem","useWindow","useMegaMenu","useComponentCssInjection","megaMenuListItemCss","jsx","clsx","Children"],"mappings":";;;;;;;;;;;AAcA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA;AAGxD,SAAS,uBAAuB,KAAA,EAAsC;AACpE,EAAA,OAAOC,gBAAA,CAAY,KAAK,KAAK,CAAA;AAC/B;AA0BO,MAAM,gBAAA,GAAmBC,gBAAA,CAG9B,SAASC,iBAAAA,CACT,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,GAAG,IAAA,IAC1D,GAAA,EACA;AACA,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,EAAA,MAAM,WAAWC,uBAAA,EAAY;AAE7B,EAAAC,+BAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,0BAAA;AAAA,IACR,GAAA,EAAKC,kBAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,MAAM,WAAA,GAAoD,CAAC,KAAA,KAAU;AACnE,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACV,IAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACEC,cAAA,CAAC,IAAA,EAAA,EAAG,GAAA,EAAU,SAAA,EAAWC,SAAA,CAAK,cAAa,EAAG,SAAS,CAAA,EAAI,GAAG,IAAA,EAC5D,QAAA,kBAAAD,cAAA;AAAA,IAAC,sBAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,aAAa,SAAS,CAAA;AAAA,MACjC,IAAA;AAAA,MACA,OAAA,EAAS,WAAA;AAAA,MACT,cAAA,EAAc,UAAU,MAAA,GAAS,MAAA;AAAA,MACjC,MAAA;AAAA,MAEC,QAAA,EAAAE,cAAA,CAAS,GAAA;AAAA,QAAI,QAAA;AAAA,QAAU,CAAC,KAAA,KACvB,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,QAAA,mBAC5CF,cAAA,CAAC,UAAK,SAAA,EAAW,YAAA,CAAa,SAAS,CAAA,EAAI,iBAAM,CAAA,GAEjD;AAAA;AAEJ;AAAA,GACF,EACF,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltMegaMenuPanel {\n display: flex;\n flex-wrap: wrap;\n inline-size: var(--saltMegaMenuPanel-inlineSize, fit-content);\n max-inline-size: var(--saltMegaMenuPanel-maxInlineSize, var(--saltMegaMenuPanel-availableWidth, calc(100vw - var(--salt-spacing-600))));\n max-height: 90%;\n overflow-x: hidden;\n overflow-y: auto;\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-container-primary-borderColor);\n background: var(--salt-container-primary-background);\n box-shadow: var(--salt-overlayable-shadow-popout);\n}\n";
3
+ var css_248z = ".saltMegaMenuPanel {\n /* Single horizontal row: optional side content, the center navigation area,\n optional side content. Position is derived from source order alone, so\n authors need no wrapper scaffolding. */\n --saltMegaMenuPanel-availableWidth: calc(100vw - var(--salt-spacing-600));\n display: flex;\n align-items: stretch;\n inline-size: var(--saltMegaMenuPanel-inlineSize, fit-content);\n max-inline-size: var(--saltMegaMenuPanel-maxInlineSize, var(--saltMegaMenuPanel-availableWidth));\n max-block-size: 90vh;\n overflow-x: hidden;\n overflow-y: auto;\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner, 0);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-container-primary-borderColor);\n background: var(--salt-container-primary-background);\n box-shadow: var(--salt-overlayable-shadow-modal);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=MegaMenuPanel.css.js.map
@@ -9,6 +9,8 @@ var clsx = require('clsx');
9
9
  var react = require('react');
10
10
  var MegaMenuPanel$1 = require('./MegaMenuPanel.css.js');
11
11
  var useMegaMenu = require('./useMegaMenu.js');
12
+ var useMegaMenuNavigation = require('./useMegaMenuNavigation.js');
13
+ var usePageMargin = require('./usePageMargin.js');
12
14
 
13
15
  const withBaseName = core.makePrefixer("saltMegaMenuPanel");
14
16
  const MegaMenuPanel = react.forwardRef(
@@ -26,51 +28,36 @@ const MegaMenuPanel = react.forwardRef(
26
28
  placement,
27
29
  getFloatingProps,
28
30
  setFloating,
29
- focusFirstItemOnOpen,
31
+ focusFirstItemOnOpenRef,
30
32
  setPanelId
31
33
  } = useMegaMenu.useMegaMenu();
32
34
  const id = core.useId(idProp);
33
- react.useEffect(() => {
34
- setPanelId(id);
35
- return () => setPanelId(void 0);
35
+ core.useIsomorphicLayoutEffect(() => {
36
+ if (id) setPanelId(id);
36
37
  }, [id, setPanelId]);
37
- const [pageMargin, setPageMargin] = react.useState(0);
38
- react.useEffect(() => {
39
- if (!targetWindow) return;
40
- const referenceEl = floatingRootContext.elements.domReference;
41
- const host = referenceEl ?? targetWindow.document.body;
42
- const doc = targetWindow.document;
43
- const measure = () => {
44
- const probe = doc.createElement("div");
45
- probe.style.cssText = "position:absolute;visibility:hidden;pointer-events:none;width:var(--saltMegaMenuPanel-pageMargin, var(--salt-layout-page-margin));";
46
- host.appendChild(probe);
47
- const width = probe.getBoundingClientRect().width;
48
- probe.remove();
49
- setPageMargin((prev) => prev === width ? prev : width);
50
- };
51
- measure();
52
- targetWindow.addEventListener("resize", measure);
53
- return () => targetWindow.removeEventListener("resize", measure);
54
- }, [targetWindow, floatingRootContext]);
38
+ const { domReference } = floatingRootContext.elements;
39
+ const referenceEl = domReference instanceof HTMLElement ? domReference : null;
40
+ const pageMargin = usePageMargin.usePageMargin(referenceEl);
55
41
  const floatingUIResult = core.useFloatingUI({
56
42
  rootContext: floatingRootContext,
43
+ open: isOpen,
57
44
  placement,
58
45
  middleware: [
59
46
  react$1.offset(1),
60
47
  react$1.flip({ padding: pageMargin }),
61
- react$1.shift({ padding: pageMargin, limiter: react$1.limitShift() }),
62
- react$1.size({
63
- padding: pageMargin,
64
- apply({ availableWidth, elements }) {
65
- elements.floating.style.setProperty(
66
- "--saltMegaMenuPanel-availableWidth",
67
- `${availableWidth}px`
68
- );
69
- }
70
- })
48
+ react$1.shift({ padding: pageMargin, limiter: react$1.limitShift() })
71
49
  ]
72
50
  });
73
- const floatingProps = getFloatingProps();
51
+ const floatingEl = floatingRootContext.elements.floating;
52
+ const { isPositioned } = floatingUIResult;
53
+ react.useEffect(() => {
54
+ if (focusFirstItemOnOpenRef.current && isPositioned && floatingEl) {
55
+ useMegaMenuNavigation.focusFirstItem(floatingEl);
56
+ focusFirstItemOnOpenRef.current = false;
57
+ }
58
+ }, [focusFirstItemOnOpenRef, isPositioned, floatingEl]);
59
+ const floatingProps = getFloatingProps(rest);
60
+ const handleRef = core.useForkRef(setFloating, ref);
74
61
  return /* @__PURE__ */ jsxRuntime.jsx(
75
62
  FloatingComponent,
76
63
  {
@@ -81,24 +68,17 @@ const MegaMenuPanel = react.forwardRef(
81
68
  focusManagerProps: {
82
69
  context: floatingUIResult.context,
83
70
  modal: false,
84
- initialFocus: focusFirstItemOnOpen ? 0 : -1,
71
+ initialFocus: -1,
85
72
  returnFocus: true,
86
73
  closeOnFocusOut: false,
87
74
  guards: false
88
75
  },
89
- ref: setFloating,
90
- children: /* @__PURE__ */ jsxRuntime.jsx(
91
- "div",
92
- {
93
- className: clsx.clsx(withBaseName(), className),
94
- id,
95
- role: "region",
96
- ref,
97
- ...floatingProps,
98
- ...rest,
99
- children
100
- }
101
- )
76
+ className: clsx.clsx(withBaseName(), className),
77
+ id,
78
+ role: "region",
79
+ ...floatingProps,
80
+ ref: handleRef,
81
+ children
102
82
  }
103
83
  );
104
84
  }