@salt-ds/core 1.65.1 → 1.67.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 (161) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/css/salt-core.css +145 -3
  3. package/dist-cjs/aria-announcer/AriaAnnouncerProvider.js +28 -11
  4. package/dist-cjs/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
  5. package/dist-cjs/border-layout/BorderLayout.js +28 -7
  6. package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
  7. package/dist-cjs/dialog/Dialog.js +3 -2
  8. package/dist-cjs/dialog/Dialog.js.map +1 -1
  9. package/dist-cjs/drawer/Drawer.js +2 -1
  10. package/dist-cjs/drawer/Drawer.js.map +1 -1
  11. package/dist-cjs/file-drop-zone/FileDropZone.js +19 -4
  12. package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -1
  13. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +3 -2
  14. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  15. package/dist-cjs/grid-layout/GridLayout.css.js +1 -1
  16. package/dist-cjs/index.js +22 -0
  17. package/dist-cjs/index.js.map +1 -1
  18. package/dist-cjs/mega-menu/MegaMenu.js +81 -0
  19. package/dist-cjs/mega-menu/MegaMenu.js.map +1 -0
  20. package/dist-cjs/mega-menu/MegaMenuActions.css.js +6 -0
  21. package/dist-cjs/mega-menu/MegaMenuActions.css.js.map +1 -0
  22. package/dist-cjs/mega-menu/MegaMenuActions.js +37 -0
  23. package/dist-cjs/mega-menu/MegaMenuActions.js.map +1 -0
  24. package/dist-cjs/mega-menu/MegaMenuAside.css.js +6 -0
  25. package/dist-cjs/mega-menu/MegaMenuAside.css.js.map +1 -0
  26. package/dist-cjs/mega-menu/MegaMenuAside.js +37 -0
  27. package/dist-cjs/mega-menu/MegaMenuAside.js.map +1 -0
  28. package/dist-cjs/mega-menu/MegaMenuContent.css.js +6 -0
  29. package/dist-cjs/mega-menu/MegaMenuContent.css.js.map +1 -0
  30. package/dist-cjs/mega-menu/MegaMenuContent.js +29 -0
  31. package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -0
  32. package/dist-cjs/mega-menu/MegaMenuContext.js +18 -0
  33. package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -0
  34. package/dist-cjs/mega-menu/MegaMenuGroup.css.js +6 -0
  35. package/dist-cjs/mega-menu/MegaMenuGroup.css.js.map +1 -0
  36. package/dist-cjs/mega-menu/MegaMenuGroup.js +44 -0
  37. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -0
  38. package/dist-cjs/mega-menu/MegaMenuGroupContext.js +23 -0
  39. package/dist-cjs/mega-menu/MegaMenuGroupContext.js.map +1 -0
  40. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +6 -0
  41. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  42. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js +44 -0
  43. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  44. package/dist-cjs/mega-menu/MegaMenuGroups.css.js +6 -0
  45. package/dist-cjs/mega-menu/MegaMenuGroups.css.js.map +1 -0
  46. package/dist-cjs/mega-menu/MegaMenuGroups.js +29 -0
  47. package/dist-cjs/mega-menu/MegaMenuGroups.js.map +1 -0
  48. package/dist-cjs/mega-menu/MegaMenuList.css.js +6 -0
  49. package/dist-cjs/mega-menu/MegaMenuList.css.js.map +1 -0
  50. package/dist-cjs/mega-menu/MegaMenuList.js +47 -0
  51. package/dist-cjs/mega-menu/MegaMenuList.js.map +1 -0
  52. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +6 -0
  53. package/dist-cjs/mega-menu/MegaMenuListItem.css.js.map +1 -0
  54. package/dist-cjs/mega-menu/MegaMenuListItem.js +50 -0
  55. package/dist-cjs/mega-menu/MegaMenuListItem.js.map +1 -0
  56. package/dist-cjs/mega-menu/MegaMenuPanel.css.js +6 -0
  57. package/dist-cjs/mega-menu/MegaMenuPanel.css.js.map +1 -0
  58. package/dist-cjs/mega-menu/MegaMenuPanel.js +94 -0
  59. package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -0
  60. package/dist-cjs/mega-menu/MegaMenuTrigger.js +97 -0
  61. package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -0
  62. package/dist-cjs/mega-menu/useMegaMenu.js +15 -0
  63. package/dist-cjs/mega-menu/useMegaMenu.js.map +1 -0
  64. package/dist-cjs/mega-menu/useMegaMenuNavigation.js +282 -0
  65. package/dist-cjs/mega-menu/useMegaMenuNavigation.js.map +1 -0
  66. package/dist-cjs/mega-menu/usePageMargin.js +28 -0
  67. package/dist-cjs/mega-menu/usePageMargin.js.map +1 -0
  68. package/dist-cjs/overlay/OverlayPanel.js +2 -1
  69. package/dist-cjs/overlay/OverlayPanel.js.map +1 -1
  70. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js +1 -0
  71. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  72. package/dist-es/aria-announcer/AriaAnnouncerProvider.js +29 -12
  73. package/dist-es/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
  74. package/dist-es/border-layout/BorderLayout.js +28 -7
  75. package/dist-es/border-layout/BorderLayout.js.map +1 -1
  76. package/dist-es/dialog/Dialog.js +3 -2
  77. package/dist-es/dialog/Dialog.js.map +1 -1
  78. package/dist-es/drawer/Drawer.js +2 -1
  79. package/dist-es/drawer/Drawer.js.map +1 -1
  80. package/dist-es/file-drop-zone/FileDropZone.js +20 -5
  81. package/dist-es/file-drop-zone/FileDropZone.js.map +1 -1
  82. package/dist-es/file-drop-zone/FileDropZoneTrigger.js +3 -2
  83. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  84. package/dist-es/grid-layout/GridLayout.css.js +1 -1
  85. package/dist-es/index.js +11 -0
  86. package/dist-es/index.js.map +1 -1
  87. package/dist-es/mega-menu/MegaMenu.js +79 -0
  88. package/dist-es/mega-menu/MegaMenu.js.map +1 -0
  89. package/dist-es/mega-menu/MegaMenuActions.css.js +4 -0
  90. package/dist-es/mega-menu/MegaMenuActions.css.js.map +1 -0
  91. package/dist-es/mega-menu/MegaMenuActions.js +35 -0
  92. package/dist-es/mega-menu/MegaMenuActions.js.map +1 -0
  93. package/dist-es/mega-menu/MegaMenuAside.css.js +4 -0
  94. package/dist-es/mega-menu/MegaMenuAside.css.js.map +1 -0
  95. package/dist-es/mega-menu/MegaMenuAside.js +35 -0
  96. package/dist-es/mega-menu/MegaMenuAside.js.map +1 -0
  97. package/dist-es/mega-menu/MegaMenuContent.css.js +4 -0
  98. package/dist-es/mega-menu/MegaMenuContent.css.js.map +1 -0
  99. package/dist-es/mega-menu/MegaMenuContent.js +27 -0
  100. package/dist-es/mega-menu/MegaMenuContent.js.map +1 -0
  101. package/dist-es/mega-menu/MegaMenuContext.js +16 -0
  102. package/dist-es/mega-menu/MegaMenuContext.js.map +1 -0
  103. package/dist-es/mega-menu/MegaMenuGroup.css.js +4 -0
  104. package/dist-es/mega-menu/MegaMenuGroup.css.js.map +1 -0
  105. package/dist-es/mega-menu/MegaMenuGroup.js +42 -0
  106. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -0
  107. package/dist-es/mega-menu/MegaMenuGroupContext.js +20 -0
  108. package/dist-es/mega-menu/MegaMenuGroupContext.js.map +1 -0
  109. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +4 -0
  110. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  111. package/dist-es/mega-menu/MegaMenuGroupHeading.js +42 -0
  112. package/dist-es/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  113. package/dist-es/mega-menu/MegaMenuGroups.css.js +4 -0
  114. package/dist-es/mega-menu/MegaMenuGroups.css.js.map +1 -0
  115. package/dist-es/mega-menu/MegaMenuGroups.js +27 -0
  116. package/dist-es/mega-menu/MegaMenuGroups.js.map +1 -0
  117. package/dist-es/mega-menu/MegaMenuList.css.js +4 -0
  118. package/dist-es/mega-menu/MegaMenuList.css.js.map +1 -0
  119. package/dist-es/mega-menu/MegaMenuList.js +45 -0
  120. package/dist-es/mega-menu/MegaMenuList.js.map +1 -0
  121. package/dist-es/mega-menu/MegaMenuListItem.css.js +4 -0
  122. package/dist-es/mega-menu/MegaMenuListItem.css.js.map +1 -0
  123. package/dist-es/mega-menu/MegaMenuListItem.js +48 -0
  124. package/dist-es/mega-menu/MegaMenuListItem.js.map +1 -0
  125. package/dist-es/mega-menu/MegaMenuPanel.css.js +4 -0
  126. package/dist-es/mega-menu/MegaMenuPanel.css.js.map +1 -0
  127. package/dist-es/mega-menu/MegaMenuPanel.js +92 -0
  128. package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -0
  129. package/dist-es/mega-menu/MegaMenuTrigger.js +95 -0
  130. package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -0
  131. package/dist-es/mega-menu/useMegaMenu.js +13 -0
  132. package/dist-es/mega-menu/useMegaMenu.js.map +1 -0
  133. package/dist-es/mega-menu/useMegaMenuNavigation.js +278 -0
  134. package/dist-es/mega-menu/useMegaMenuNavigation.js.map +1 -0
  135. package/dist-es/mega-menu/usePageMargin.js +26 -0
  136. package/dist-es/mega-menu/usePageMargin.js.map +1 -0
  137. package/dist-es/overlay/OverlayPanel.js +2 -1
  138. package/dist-es/overlay/OverlayPanel.js.map +1 -1
  139. package/dist-es/semantic-icon-provider/SemanticIconProvider.js +1 -0
  140. package/dist-es/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  141. package/dist-types/index.d.ts +1 -0
  142. package/dist-types/mega-menu/MegaMenu.d.ts +36 -0
  143. package/dist-types/mega-menu/MegaMenuActions.d.ts +10 -0
  144. package/dist-types/mega-menu/MegaMenuAside.d.ts +9 -0
  145. package/dist-types/mega-menu/MegaMenuContent.d.ts +9 -0
  146. package/dist-types/mega-menu/MegaMenuContext.d.ts +28 -0
  147. package/dist-types/mega-menu/MegaMenuGroup.d.ts +9 -0
  148. package/dist-types/mega-menu/MegaMenuGroupContext.d.ts +12 -0
  149. package/dist-types/mega-menu/MegaMenuGroupHeading.d.ts +13 -0
  150. package/dist-types/mega-menu/MegaMenuGroups.d.ts +8 -0
  151. package/dist-types/mega-menu/MegaMenuList.d.ts +16 -0
  152. package/dist-types/mega-menu/MegaMenuListItem.d.ts +25 -0
  153. package/dist-types/mega-menu/MegaMenuPanel.d.ts +8 -0
  154. package/dist-types/mega-menu/MegaMenuTrigger.d.ts +9 -0
  155. package/dist-types/mega-menu/index.d.ts +11 -0
  156. package/dist-types/mega-menu/useMegaMenu.d.ts +6 -0
  157. package/dist-types/mega-menu/useMegaMenuNavigation.d.ts +16 -0
  158. package/dist-types/mega-menu/usePageMargin.d.ts +6 -0
  159. package/dist-types/semantic-icon-provider/SemanticIconProvider.d.ts +1 -0
  160. package/dist-types/tooltip/useTooltip.d.ts +1 -1
  161. package/package.json +2 -2
@@ -10,7 +10,7 @@ require('../utils/useId.js');
10
10
  require('../salt-provider/SaltProvider.js');
11
11
  require('../viewport/ViewportProvider.js');
12
12
 
13
- const FileDropZoneTrigger = React.forwardRef(function FileDropZoneTrigger2({ accept, children, disabled, multiple = false, onChange, ...rest }, ref) {
13
+ const FileDropZoneTrigger = React.forwardRef(function FileDropZoneTrigger2({ accept, children, disabled, multiple = false, onClick, onChange, ...rest }, ref) {
14
14
  const buttonRef = React.useRef(null);
15
15
  const fileInputRef = React.useRef(null);
16
16
  const triggerRef = useForkRef.useForkRef(ref, buttonRef);
@@ -21,13 +21,14 @@ const FileDropZoneTrigger = React.forwardRef(function FileDropZoneTrigger2({ acc
21
21
  };
22
22
  const handleClick = (event) => {
23
23
  var _a;
24
+ onClick == null ? void 0 : onClick(event);
24
25
  event.stopPropagation();
25
26
  (_a = fileInputRef.current) == null ? void 0 : _a.click();
26
27
  };
27
28
  const handleChange = (event) => {
28
29
  const files = Array.from(event.target.files ?? []);
29
- event.target.value = "";
30
30
  onChange == null ? void 0 : onChange(event, files);
31
+ event.target.value = "";
31
32
  };
32
33
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
33
34
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"FileDropZoneTrigger.js","sources":["../src/file-drop-zone/FileDropZoneTrigger.tsx"],"sourcesContent":["import {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type SyntheticEvent,\n useRef,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../button\";\nimport { useForkRef } from \"../utils\";\n\nexport interface FileDropZoneTriggerProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"onChange\"> {\n /**\n * `accept` attribute for HTML <input>.\n *\n * A comma separated list of file types the user can pick from the file input dialog box.\n */\n accept?: string;\n /**\n * Disable all trigger elements.\n */\n disabled?: boolean;\n /**\n * Allows multiple files to be uploaded.\n */\n multiple?: boolean;\n /**\n * Callback for input change event\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, files: File[]) => void;\n /**\n * The appearance of the button. Options are 'solid', 'bordered', and 'transparent'.\n * 'solid' is the default value.\n */\n appearance?: ButtonProps[\"appearance\"];\n /**\n * The sentiment of the button. Options are 'accented' and 'neutral'.\n * 'neutral' is the default value.\n *\n */\n sentiment?: Extract<ButtonProps[\"sentiment\"], \"accented\" | \"neutral\">;\n}\n\nexport const FileDropZoneTrigger = forwardRef<\n HTMLButtonElement,\n FileDropZoneTriggerProps\n>(function FileDropZoneTrigger(\n { accept, children, disabled, multiple = false, onChange, ...rest },\n ref,\n) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useForkRef(ref, buttonRef);\n\n // As an ADA requirement when dialog is closed and the focus is returned to the input, we need to\n // move focus back on the button element so that all labels can be announced correctly\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n event.stopPropagation();\n buttonRef.current?.focus();\n };\n\n const handleClick = (event: SyntheticEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n fileInputRef.current?.click();\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from((event.target as HTMLInputElement).files ?? []);\n // Allow selecting the same file multiple times - #3591\n // User would still be able to put back the value in onChange, if necessary\n event.target.value = \"\";\n onChange?.(event, files);\n };\n return (\n <>\n <Button\n onClick={handleClick}\n disabled={disabled}\n ref={triggerRef}\n {...rest}\n >\n {children ?? \"Browse files\"}\n </Button>\n <input\n accept={accept}\n style={{ display: \"none\" }}\n disabled={disabled}\n multiple={multiple}\n onChange={handleChange}\n onFocus={handleFocus}\n ref={fileInputRef}\n type=\"file\"\n />\n </>\n );\n});\n"],"names":["forwardRef","FileDropZoneTrigger","useRef","useForkRef","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;;;;;;;AA4CO,MAAM,mBAAA,GAAsBA,gBAAA,CAGjC,SAASC,oBAAAA,CACT,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,GAAW,KAAA,EAAO,QAAA,EAAU,GAAG,IAAA,IAC7D,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAYC,aAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,YAAA,GAAeA,aAAyB,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAaC,qBAAA,CAAW,GAAA,EAAK,SAAS,CAAA;AAI5C,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAwC;AAzD/D,IAAA,IAAA,EAAA;AA0DI,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,YAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,KAAA,EAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAA6C;AA9DpE,IAAA,IAAA,EAAA;AA+DI,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,CAAA,EAAA,GAAA,YAAA,CAAa,YAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,KAAA,EAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyC;AAC7D,IAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAM,MAAM,MAAA,CAA4B,KAAA,IAAS,EAAE,CAAA;AAGvE,IAAA,KAAA,CAAM,OAAO,KAAA,GAAQ,EAAA;AACrB,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,EAAO,KAAA,CAAA;AAAA,EACpB,CAAA;AACA,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAA;AAAA,QACT,QAAA;AAAA,QACA,GAAA,EAAK,UAAA;AAAA,QACJ,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,KACf;AAAA,oBACAD,cAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAO;AAAA,QACzB,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,GAAA,EAAK,YAAA;AAAA,QACL,IAAA,EAAK;AAAA;AAAA;AACP,GAAA,EACF,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"FileDropZoneTrigger.js","sources":["../src/file-drop-zone/FileDropZoneTrigger.tsx"],"sourcesContent":["import {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useRef,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../button\";\nimport { useForkRef } from \"../utils\";\n\nexport interface FileDropZoneTriggerProps\n extends Omit<ComponentPropsWithoutRef<\"button\">, \"onChange\"> {\n /**\n * `accept` attribute for HTML <input>.\n *\n * A comma separated list of file types the user can pick from the file input dialog box.\n */\n accept?: string;\n /**\n * Disable all trigger elements.\n */\n disabled?: boolean;\n /**\n * Allows multiple files to be uploaded.\n */\n multiple?: boolean;\n /**\n * Callback for input change event\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, files: File[]) => void;\n /**\n * The appearance of the button. Options are 'solid', 'bordered', and 'transparent'.\n * 'solid' is the default value.\n */\n appearance?: ButtonProps[\"appearance\"];\n /**\n * The sentiment of the button. Options are 'accented' and 'neutral'.\n * 'neutral' is the default value.\n *\n */\n sentiment?: Extract<ButtonProps[\"sentiment\"], \"accented\" | \"neutral\">;\n}\n\nexport const FileDropZoneTrigger = forwardRef<\n HTMLButtonElement,\n FileDropZoneTriggerProps\n>(function FileDropZoneTrigger(\n { accept, children, disabled, multiple = false, onClick, onChange, ...rest },\n ref,\n) {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const fileInputRef = useRef<HTMLInputElement>(null);\n const triggerRef = useForkRef(ref, buttonRef);\n\n // As an ADA requirement when dialog is closed and the focus is returned to the input, we need to\n // move focus back on the button element so that all labels can be announced correctly\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n event.stopPropagation();\n buttonRef.current?.focus();\n };\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n event.stopPropagation();\n fileInputRef.current?.click();\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from((event.target as HTMLInputElement).files ?? []);\n onChange?.(event, files);\n\n // Reset after onChange so consumers can read the selected files first.\n // Clearing the value allows selecting the same file again - #3591.\n event.target.value = \"\";\n };\n return (\n <>\n <Button\n onClick={handleClick}\n disabled={disabled}\n ref={triggerRef}\n {...rest}\n >\n {children ?? \"Browse files\"}\n </Button>\n <input\n accept={accept}\n style={{ display: \"none\" }}\n disabled={disabled}\n multiple={multiple}\n onChange={handleChange}\n onFocus={handleFocus}\n ref={fileInputRef}\n type=\"file\"\n />\n </>\n );\n});\n"],"names":["forwardRef","FileDropZoneTrigger","useRef","useForkRef","jsxs","Fragment","jsx","Button"],"mappings":";;;;;;;;;;;;AA4CO,MAAM,mBAAA,GAAsBA,gBAAA,CAGjC,SAASC,oBAAAA,CACT,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,QAAA,GAAW,OAAO,OAAA,EAAS,QAAA,EAAU,GAAG,IAAA,IACtE,GAAA,EACA;AACA,EAAA,MAAM,SAAA,GAAYC,aAA0B,IAAI,CAAA;AAChD,EAAA,MAAM,YAAA,GAAeA,aAAyB,IAAI,CAAA;AAClD,EAAA,MAAM,UAAA,GAAaC,qBAAA,CAAW,GAAA,EAAK,SAAS,CAAA;AAI5C,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAwC;AAzD/D,IAAA,IAAA,EAAA;AA0DI,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,CAAA,EAAA,GAAA,SAAA,CAAU,YAAV,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,KAAA,EAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AA9DhE,IAAA,IAAA,EAAA;AA+DI,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACV,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,CAAA,EAAA,GAAA,YAAA,CAAa,YAAb,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,KAAA,EAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyC;AAC7D,IAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAM,MAAM,MAAA,CAA4B,KAAA,IAAS,EAAE,CAAA;AACvE,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,EAAO,KAAA,CAAA;AAIlB,IAAA,KAAA,CAAM,OAAO,KAAA,GAAQ,EAAA;AAAA,EACvB,CAAA;AACA,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAC,cAAA;AAAA,MAACC,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAA;AAAA,QACT,QAAA;AAAA,QACA,GAAA,EAAK,UAAA;AAAA,QACJ,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,QAAA,IAAY;AAAA;AAAA,KACf;AAAA,oBACAD,cAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA,EAAO;AAAA,QACzB,QAAA;AAAA,QACA,QAAA;AAAA,QACA,QAAA,EAAU,YAAA;AAAA,QACV,OAAA,EAAS,WAAA;AAAA,QACT,GAAA,EAAK,YAAA;AAAA,QACL,IAAA,EAAK;AAAA;AAAA;AACP,GAAA,EACF,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Style applied to the root element */\n.saltGridLayout {\n display: grid;\n column-gap: var(--gridLayout-columnGap);\n row-gap: var(--gridLayout-rowGap);\n grid-template-columns: var(--gridLayout-columns);\n grid-template-rows: var(--gridLayout-rows);\n margin: var(--gridLayout-margin);\n padding: var(--gridLayout-padding);\n grid-auto-columns: auto;\n grid-auto-rows: auto;\n}\n\n.saltGridLayout-area {\n grid-template: var(--gridLayout-gridTemplate);\n grid-template-columns: min-content 1fr min-content;\n grid-template-rows: min-content 1fr min-content;\n}\n";
3
+ var css_248z = "/* Style applied to the root element */\n.saltGridLayout {\n display: grid;\n column-gap: var(--gridLayout-columnGap);\n row-gap: var(--gridLayout-rowGap);\n grid-template-columns: var(--gridLayout-columns);\n grid-template-rows: var(--gridLayout-rows);\n margin: var(--gridLayout-margin);\n padding: var(--gridLayout-padding);\n grid-auto-columns: auto;\n grid-auto-rows: auto;\n}\n\n.saltGridLayout-area {\n grid-template: var(--gridLayout-gridTemplate);\n grid-template-columns: var(--gridLayout-areaColumns, min-content 1fr min-content);\n grid-template-rows: var(--gridLayout-areaRows, min-content 1fr min-content);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=GridLayout.css.js.map
package/dist-cjs/index.js CHANGED
@@ -60,6 +60,17 @@ var Link = require('./link/Link.js');
60
60
  var LinkCard = require('./link-card/LinkCard.js');
61
61
  var ListBox = require('./list-box/ListBox.js');
62
62
  var ListControlContext = require('./list-control/ListControlContext.js');
63
+ var MegaMenu = require('./mega-menu/MegaMenu.js');
64
+ var MegaMenuActions = require('./mega-menu/MegaMenuActions.js');
65
+ var MegaMenuAside = require('./mega-menu/MegaMenuAside.js');
66
+ var MegaMenuContent = require('./mega-menu/MegaMenuContent.js');
67
+ var MegaMenuGroup = require('./mega-menu/MegaMenuGroup.js');
68
+ var MegaMenuGroupHeading = require('./mega-menu/MegaMenuGroupHeading.js');
69
+ var MegaMenuGroups = require('./mega-menu/MegaMenuGroups.js');
70
+ var MegaMenuList = require('./mega-menu/MegaMenuList.js');
71
+ var MegaMenuListItem = require('./mega-menu/MegaMenuListItem.js');
72
+ var MegaMenuPanel = require('./mega-menu/MegaMenuPanel.js');
73
+ var MegaMenuTrigger = require('./mega-menu/MegaMenuTrigger.js');
63
74
  var Menu = require('./menu/Menu.js');
64
75
  var MenuGroup = require('./menu/MenuGroup.js');
65
76
  var MenuItem = require('./menu/MenuItem.js');
@@ -268,6 +279,17 @@ exports.Link = Link.Link;
268
279
  exports.LinkCard = LinkCard.LinkCard;
269
280
  exports.ListBox = ListBox.ListBox;
270
281
  exports.useListControlContext = ListControlContext.useListControlContext;
282
+ exports.MegaMenu = MegaMenu.MegaMenu;
283
+ exports.MegaMenuActions = MegaMenuActions.MegaMenuActions;
284
+ exports.MegaMenuAside = MegaMenuAside.MegaMenuAside;
285
+ exports.MegaMenuContent = MegaMenuContent.MegaMenuContent;
286
+ exports.MegaMenuGroup = MegaMenuGroup.MegaMenuGroup;
287
+ exports.MegaMenuGroupHeading = MegaMenuGroupHeading.MegaMenuGroupHeading;
288
+ exports.MegaMenuGroups = MegaMenuGroups.MegaMenuGroups;
289
+ exports.MegaMenuList = MegaMenuList.MegaMenuList;
290
+ exports.MegaMenuListItem = MegaMenuListItem.MegaMenuListItem;
291
+ exports.MegaMenuPanel = MegaMenuPanel.MegaMenuPanel;
292
+ exports.MegaMenuTrigger = MegaMenuTrigger.MegaMenuTrigger;
271
293
  exports.Menu = Menu.Menu;
272
294
  exports.MenuGroup = MenuGroup.MenuGroup;
273
295
  exports.MenuItem = MenuItem.MenuItem;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('@floating-ui/react');
5
+ var React = require('react');
6
+ require('clsx');
7
+ var useControlled = require('../utils/useControlled.js');
8
+ require('../utils/useFloatingUI/useFloatingUI.js');
9
+ require('../utils/useId.js');
10
+ require('../salt-provider/SaltProvider.js');
11
+ require('../viewport/ViewportProvider.js');
12
+ var MegaMenuContext = require('./MegaMenuContext.js');
13
+ var useMegaMenuNavigation = require('./useMegaMenuNavigation.js');
14
+
15
+ function MegaMenu({
16
+ children,
17
+ open,
18
+ defaultOpen = false,
19
+ onOpenChange,
20
+ placement = "bottom"
21
+ }) {
22
+ const [openState, setOpenState] = useControlled.useControlled({
23
+ controlled: open,
24
+ default: defaultOpen,
25
+ name: "MegaMenu",
26
+ state: "open"
27
+ });
28
+ const [reference, setReference] = React.useState(null);
29
+ const [floating, setFloating] = React.useState(null);
30
+ const focusFirstItemOnOpenRef = React.useRef(false);
31
+ const [panelId, setPanelId] = React.useState();
32
+ const setOpen = React.useCallback(
33
+ (newOpen) => {
34
+ if (!newOpen) {
35
+ focusFirstItemOnOpenRef.current = false;
36
+ }
37
+ setOpenState(newOpen);
38
+ onOpenChange == null ? void 0 : onOpenChange(newOpen);
39
+ },
40
+ [onOpenChange]
41
+ );
42
+ const floatingRootContext = react.useFloatingRootContext({
43
+ open: openState,
44
+ onOpenChange: setOpen,
45
+ elements: { reference, floating }
46
+ });
47
+ const megaMenuNavigation = useMegaMenuNavigation.useMegaMenuNavigation(floatingRootContext);
48
+ const { getReferenceProps, getFloatingProps } = react.useInteractions([
49
+ react.useClick(floatingRootContext),
50
+ react.useDismiss(floatingRootContext),
51
+ megaMenuNavigation
52
+ ]);
53
+ const contextValue = React.useMemo(
54
+ () => ({
55
+ openState,
56
+ floatingRootContext,
57
+ placement,
58
+ getFloatingProps,
59
+ getReferenceProps,
60
+ setFloating,
61
+ setReference,
62
+ setOpen,
63
+ focusFirstItemOnOpenRef,
64
+ panelId,
65
+ setPanelId
66
+ }),
67
+ [
68
+ openState,
69
+ floatingRootContext,
70
+ placement,
71
+ getFloatingProps,
72
+ getReferenceProps,
73
+ setOpen,
74
+ panelId
75
+ ]
76
+ );
77
+ return /* @__PURE__ */ jsxRuntime.jsx(MegaMenuContext.MegaMenuContext.Provider, { value: contextValue, children });
78
+ }
79
+
80
+ exports.MegaMenu = MegaMenu;
81
+ //# sourceMappingURL=MegaMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenu.js","sources":["../src/mega-menu/MegaMenu.tsx"],"sourcesContent":["import {\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { type ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\nimport { useControlled } from \"../utils\";\nimport { MegaMenuContext } from \"./MegaMenuContext\";\nimport { useMegaMenuNavigation } from \"./useMegaMenuNavigation\";\n\n/**\n * Supported placements for the mega menu panel.\n */\nexport type MegaMenuPlacement = \"bottom\" | \"bottom-start\" | \"bottom-end\";\n\nexport interface MegaMenuProps {\n /**\n * The content of the mega menu, typically `MegaMenuTrigger` and `MegaMenuPanel`.\n */\n children?: ReactNode;\n /**\n * Whether the mega menu is open. Use for controlled mode.\n */\n open?: boolean;\n /**\n * Whether the mega menu is initially open. Use for uncontrolled mode.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Callback fired when the open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The placement of the mega menu panel relative to the trigger.\n * @default \"bottom\"\n */\n placement?: MegaMenuPlacement;\n}\n\n/**\n * Root of a mega menu, coordinating its trigger and panel.\n *\n * Not intended to be nested inside another floating overlay (e.g. a dialog or\n * popover): the mega menu does not participate in floating-ui's `FloatingTree`\n */\nexport function MegaMenu({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n placement = \"bottom\",\n}: MegaMenuProps) {\n const [openState, setOpenState] = useControlled({\n controlled: open,\n default: defaultOpen,\n name: \"MegaMenu\",\n state: \"open\",\n });\n\n const [reference, setReference] = useState<HTMLElement | null>(null);\n const [floating, setFloating] = useState<HTMLElement | null>(null);\n const focusFirstItemOnOpenRef = useRef(false);\n const [panelId, setPanelId] = useState<string>();\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (!newOpen) {\n focusFirstItemOnOpenRef.current = false;\n }\n setOpenState(newOpen);\n onOpenChange?.(newOpen);\n },\n [onOpenChange],\n );\n\n const floatingRootContext = useFloatingRootContext({\n open: openState,\n onOpenChange: setOpen,\n elements: { reference, floating },\n });\n\n const megaMenuNavigation = useMegaMenuNavigation(floatingRootContext);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useClick(floatingRootContext),\n useDismiss(floatingRootContext),\n megaMenuNavigation,\n ]);\n\n const contextValue = useMemo(\n () => ({\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setFloating,\n setReference,\n setOpen,\n focusFirstItemOnOpenRef,\n panelId,\n setPanelId,\n }),\n [\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setOpen,\n panelId,\n ],\n );\n\n return (\n <MegaMenuContext.Provider value={contextValue}>\n {children}\n </MegaMenuContext.Provider>\n );\n}\n"],"names":["useControlled","useState","useRef","useCallback","useFloatingRootContext","useMegaMenuNavigation","useInteractions","useClick","useDismiss","useMemo","MegaMenuContext"],"mappings":";;;;;;;;;;;;;;AA+CO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,2BAAA,CAAc;AAAA,IAC9C,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,WAAA;AAAA,IACT,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAA6B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAA6B,IAAI,CAAA;AACjE,EAAA,MAAM,uBAAA,GAA0BC,aAAO,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,cAAA,EAAiB;AAE/C,EAAA,MAAM,OAAA,GAAUE,iBAAA;AAAA,IACd,CAAC,OAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,uBAAA,CAAwB,OAAA,GAAU,KAAA;AAAA,MACpC;AACA,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,OAAA,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,sBAAsBC,4BAAA,CAAuB;AAAA,IACjD,IAAA,EAAM,SAAA;AAAA,IACN,YAAA,EAAc,OAAA;AAAA,IACd,QAAA,EAAU,EAAE,SAAA,EAAW,QAAA;AAAS,GACjC,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqBC,4CAAsB,mBAAmB,CAAA;AAEpE,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAIC,qBAAA,CAAgB;AAAA,IAC9DC,eAAS,mBAAmB,CAAA;AAAA,IAC5BC,iBAAW,mBAAmB,CAAA;AAAA,IAC9B;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,uBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,sCACGC,+BAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,cAC9B,QAAA,EACH,CAAA;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuActions {\n display: flex;\n flex-wrap: wrap;\n margin-block-start: auto;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuActions.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuActions.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var MegaMenuActions$1 = require('./MegaMenuActions.css.js');
14
+
15
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuActions");
16
+ const MegaMenuActions = React.forwardRef(
17
+ function MegaMenuActions2({ className, ...rest }, ref) {
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-mega-menu-actions",
21
+ css: MegaMenuActions$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx(
25
+ "div",
26
+ {
27
+ "data-mega-menu-actions": "",
28
+ className: clsx.clsx(withBaseName(), className),
29
+ ref,
30
+ ...rest
31
+ }
32
+ );
33
+ }
34
+ );
35
+
36
+ exports.MegaMenuActions = MegaMenuActions;
37
+ //# sourceMappingURL=MegaMenuActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuActions.js","sources":["../src/mega-menu/MegaMenuActions.tsx"],"sourcesContent":["import { 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 { makePrefixer } from \"../utils\";\nimport megaMenuActionsCss from \"./MegaMenuActions.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuActions\");\n\nexport interface MegaMenuActionsProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the actions. Place `MegaMenuActions` inside\n * `MegaMenuContent`, after `MegaMenuGroups`; it renders as a band beneath the\n * groups, spanning their width.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuActions = forwardRef<HTMLDivElement, MegaMenuActionsProps>(\n function MegaMenuActions({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-actions\",\n css: megaMenuActionsCss,\n window: targetWindow,\n });\n\n return (\n <div\n data-mega-menu-actions=\"\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuActions","useWindow","useComponentCssInjection","megaMenuActionsCss","jsx","clsx"],"mappings":";;;;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,0BAAa,qBAAqB,CAAA;AAWhD,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,wBAAA,EAAuB,EAAA;AAAA,QACvB,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuAside {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n padding: var(--salt-spacing-300);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuAside.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuAside.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var MegaMenuAside$1 = require('./MegaMenuAside.css.js');
14
+
15
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuAside");
16
+ const MegaMenuAside = React.forwardRef(
17
+ function MegaMenuAside2({ className, ...rest }, ref) {
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-mega-menu-aside",
21
+ css: MegaMenuAside$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx(
25
+ "aside",
26
+ {
27
+ "data-mega-menu-column": "",
28
+ className: clsx.clsx(withBaseName(), className),
29
+ ref,
30
+ ...rest
31
+ }
32
+ );
33
+ }
34
+ );
35
+
36
+ exports.MegaMenuAside = MegaMenuAside;
37
+ //# sourceMappingURL=MegaMenuAside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuAside.js","sources":["../src/mega-menu/MegaMenuAside.tsx"],"sourcesContent":["import { 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 { makePrefixer } from \"../utils\";\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,0BAAa,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;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
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
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuContent.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuContent.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var MegaMenuContent$1 = require('./MegaMenuContent.css.js');
14
+
15
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuContent");
16
+ const MegaMenuContent = React.forwardRef(
17
+ function MegaMenuContent2({ children, className, ...rest }, ref) {
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-mega-menu-content",
21
+ css: MegaMenuContent$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children });
25
+ }
26
+ );
27
+
28
+ exports.MegaMenuContent = MegaMenuContent;
29
+ //# sourceMappingURL=MegaMenuContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuContent.js","sources":["../src/mega-menu/MegaMenuContent.tsx"],"sourcesContent":["import { 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 { makePrefixer } from \"../utils\";\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,0BAAa,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;;;;"}
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var createContext = require('../utils/createContext.js');
4
+ require('react');
5
+ require('clsx');
6
+ require('react/jsx-runtime');
7
+ require('../utils/useFloatingUI/useFloatingUI.js');
8
+ require('../utils/useId.js');
9
+ require('../salt-provider/SaltProvider.js');
10
+ require('../viewport/ViewportProvider.js');
11
+
12
+ const MegaMenuContext = createContext.createContext(
13
+ "MegaMenuContext",
14
+ void 0
15
+ );
16
+
17
+ exports.MegaMenuContext = MegaMenuContext;
18
+ //# sourceMappingURL=MegaMenuContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuContext.js","sources":["../src/mega-menu/MegaMenuContext.ts"],"sourcesContent":["import type { FloatingRootContext } from \"@floating-ui/react\";\nimport type {\n Dispatch,\n HTMLProps,\n MutableRefObject,\n SetStateAction,\n} from \"react\";\nimport { createContext } from \"../utils\";\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,2BAAA;AAAA,EAC7B,iBAAA;AAAA,EACA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuGroup {\n display: flex;\n flex-direction: column;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuGroup.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroup.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var MegaMenuGroup$1 = require('./MegaMenuGroup.css.js');
14
+ var MegaMenuGroupContext = require('./MegaMenuGroupContext.js');
15
+
16
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuGroup");
17
+ const MegaMenuGroup = React.forwardRef(
18
+ function MegaMenuGroup2({ children, className, ...rest }, ref) {
19
+ const targetWindow = window.useWindow();
20
+ styles.useComponentCssInjection({
21
+ testId: "salt-mega-menu-group",
22
+ css: MegaMenuGroup$1,
23
+ window: targetWindow
24
+ });
25
+ const [headingId, setHeadingId] = React.useState(void 0);
26
+ const contextValue = React.useMemo(
27
+ () => ({ headingId, setHeadingId }),
28
+ [headingId]
29
+ );
30
+ return /* @__PURE__ */ jsxRuntime.jsx(MegaMenuGroupContext.MegaMenuGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
31
+ "div",
32
+ {
33
+ "data-mega-menu-column": "",
34
+ className: clsx.clsx(withBaseName(), className),
35
+ ref,
36
+ ...rest,
37
+ children
38
+ }
39
+ ) });
40
+ }
41
+ );
42
+
43
+ exports.MegaMenuGroup = MegaMenuGroup;
44
+ //# sourceMappingURL=MegaMenuGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroup.js","sources":["../src/mega-menu/MegaMenuGroup.tsx"],"sourcesContent":["import { 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 { makePrefixer } from \"../utils\";\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,0BAAa,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,23 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var createContext = require('../utils/createContext.js');
5
+ require('clsx');
6
+ require('react/jsx-runtime');
7
+ require('../utils/useFloatingUI/useFloatingUI.js');
8
+ require('../utils/useId.js');
9
+ require('../salt-provider/SaltProvider.js');
10
+ require('../viewport/ViewportProvider.js');
11
+
12
+ const MegaMenuGroupContext = createContext.createContext(
13
+ "MegaMenuGroupContext",
14
+ { headingId: void 0, setHeadingId: () => {
15
+ } }
16
+ );
17
+ function useMegaMenuGroup() {
18
+ return React.useContext(MegaMenuGroupContext);
19
+ }
20
+
21
+ exports.MegaMenuGroupContext = MegaMenuGroupContext;
22
+ exports.useMegaMenuGroup = useMegaMenuGroup;
23
+ //# sourceMappingURL=MegaMenuGroupContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroupContext.js","sources":["../src/mega-menu/MegaMenuGroupContext.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport { createContext } from \"../utils\";\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,2BAAA;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,44 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ var useIsomorphicLayoutEffect = require('../utils/useIsomorphicLayoutEffect.js');
10
+ require('../utils/useFloatingUI/useFloatingUI.js');
11
+ var useId = require('../utils/useId.js');
12
+ require('../salt-provider/SaltProvider.js');
13
+ require('../viewport/ViewportProvider.js');
14
+ var MegaMenuGroupContext = require('./MegaMenuGroupContext.js');
15
+ var MegaMenuGroupHeading$1 = require('./MegaMenuGroupHeading.css.js');
16
+
17
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuGroupHeading");
18
+ const MegaMenuGroupHeading = React.forwardRef(function MegaMenuGroupHeading2({ children, className, id: idProp, as: Heading = "h3", ...rest }, ref) {
19
+ const targetWindow = window.useWindow();
20
+ styles.useComponentCssInjection({
21
+ testId: "salt-mega-menu-group-heading",
22
+ css: MegaMenuGroupHeading$1,
23
+ window: targetWindow
24
+ });
25
+ const id = useId.useId(idProp);
26
+ const { setHeadingId } = MegaMenuGroupContext.useMegaMenuGroup();
27
+ useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
28
+ setHeadingId(id);
29
+ return () => setHeadingId(void 0);
30
+ }, [id, setHeadingId]);
31
+ return /* @__PURE__ */ jsxRuntime.jsx(
32
+ Heading,
33
+ {
34
+ className: clsx.clsx(withBaseName(), className),
35
+ ref,
36
+ ...rest,
37
+ id,
38
+ children
39
+ }
40
+ );
41
+ });
42
+
43
+ exports.MegaMenuGroupHeading = MegaMenuGroupHeading;
44
+ //# sourceMappingURL=MegaMenuGroupHeading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroupHeading.js","sources":["../src/mega-menu/MegaMenuGroupHeading.tsx"],"sourcesContent":["import { 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 { makePrefixer, useId, useIsomorphicLayoutEffect } from \"../utils\";\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,0BAAa,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,YAAM,MAAM,CAAA;AACvB,EAAA,MAAM,EAAE,YAAA,EAAa,GAAIC,qCAAA,EAAiB;AAC1C,EAAAC,mDAAA,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":";;;;;;"}
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var makePrefixer = require('../utils/makePrefixer.js');
9
+ require('../utils/useFloatingUI/useFloatingUI.js');
10
+ require('../utils/useId.js');
11
+ require('../salt-provider/SaltProvider.js');
12
+ require('../viewport/ViewportProvider.js');
13
+ var MegaMenuGroups$1 = require('./MegaMenuGroups.css.js');
14
+
15
+ const withBaseName = makePrefixer.makePrefixer("saltMegaMenuGroups");
16
+ const MegaMenuGroups = React.forwardRef(
17
+ function MegaMenuGroups2({ children, className, ...rest }, ref) {
18
+ const targetWindow = window.useWindow();
19
+ styles.useComponentCssInjection({
20
+ testId: "salt-mega-menu-groups",
21
+ css: MegaMenuGroups$1,
22
+ window: targetWindow
23
+ });
24
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: clsx.clsx(withBaseName(), className), ref, ...rest, children });
25
+ }
26
+ );
27
+
28
+ exports.MegaMenuGroups = MegaMenuGroups;
29
+ //# sourceMappingURL=MegaMenuGroups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroups.js","sources":["../src/mega-menu/MegaMenuGroups.tsx"],"sourcesContent":["import { 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 { makePrefixer } from \"../utils\";\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,0BAAa,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":";;;;;;"}