@salt-ds/lab 1.0.0-alpha.93 → 1.0.0-alpha.95

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 (226) hide show
  1. package/CHANGELOG.md +214 -0
  2. package/css/salt-lab.css +190 -143
  3. package/dist-cjs/index.js +12 -58
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/mega-menu/MegaMenuGroup.js +2 -5
  6. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -1
  7. package/dist-cjs/mega-menu/MegaMenuGroups.css.js +6 -0
  8. package/dist-cjs/mega-menu/MegaMenuGroups.css.js.map +1 -0
  9. package/dist-cjs/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +8 -8
  10. package/dist-cjs/mega-menu/MegaMenuGroups.js.map +1 -0
  11. package/dist-cjs/mega-menu/MegaMenuHeader.js +0 -1
  12. package/dist-cjs/mega-menu/MegaMenuHeader.js.map +1 -1
  13. package/dist-cjs/mega-menu/MegaMenuItem.css.js +1 -1
  14. package/dist-cjs/mega-menu/MegaMenuItem.js +6 -5
  15. package/dist-cjs/mega-menu/MegaMenuItem.js.map +1 -1
  16. package/dist-cjs/mega-menu/MegaMenuSupportingActions.css.js +6 -0
  17. package/dist-cjs/mega-menu/MegaMenuSupportingActions.css.js.map +1 -0
  18. package/dist-cjs/mega-menu/MegaMenuSupportingActions.js +31 -0
  19. package/dist-cjs/mega-menu/MegaMenuSupportingActions.js.map +1 -0
  20. package/dist-cjs/mega-menu/MegaMenuSupportingContent.css.js +6 -0
  21. package/dist-cjs/mega-menu/MegaMenuSupportingContent.css.js.map +1 -0
  22. package/dist-cjs/mega-menu/MegaMenuSupportingContent.js +31 -0
  23. package/dist-cjs/mega-menu/MegaMenuSupportingContent.js.map +1 -0
  24. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +2 -2
  25. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +1 -1
  26. package/dist-cjs/toolbar-next/ToolbarContentNext.css.js +6 -0
  27. package/dist-cjs/toolbar-next/ToolbarContentNext.css.js.map +1 -0
  28. package/dist-cjs/toolbar-next/ToolbarContentNext.js +32 -0
  29. package/dist-cjs/toolbar-next/ToolbarContentNext.js.map +1 -0
  30. package/dist-cjs/toolbar-next/ToolbarNext.css.js +6 -0
  31. package/dist-cjs/toolbar-next/ToolbarNext.css.js.map +1 -0
  32. package/dist-cjs/toolbar-next/ToolbarNext.js +394 -0
  33. package/dist-cjs/toolbar-next/ToolbarNext.js.map +1 -0
  34. package/dist-cjs/toolbar-next/ToolbarNextOverflow.css.js +6 -0
  35. package/dist-cjs/toolbar-next/ToolbarNextOverflow.css.js.map +1 -0
  36. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js +706 -0
  37. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js.map +1 -0
  38. package/dist-cjs/toolbar-next/ToolbarNextOverflowFloatingBoundary.js +165 -0
  39. package/dist-cjs/toolbar-next/ToolbarNextOverflowFloatingBoundary.js.map +1 -0
  40. package/dist-cjs/toolbar-next/TooltrayNext.css.js +6 -0
  41. package/dist-cjs/toolbar-next/TooltrayNext.css.js.map +1 -0
  42. package/dist-cjs/toolbar-next/TooltrayNext.js +55 -0
  43. package/dist-cjs/toolbar-next/TooltrayNext.js.map +1 -0
  44. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js +409 -0
  45. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -0
  46. package/dist-cjs/toolbar-next/toolbarNextUtils.js +215 -0
  47. package/dist-cjs/toolbar-next/toolbarNextUtils.js.map +1 -0
  48. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js +312 -0
  49. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -0
  50. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js +743 -0
  51. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js.map +1 -0
  52. package/dist-es/index.js +6 -12
  53. package/dist-es/index.js.map +1 -1
  54. package/dist-es/mega-menu/MegaMenuGroup.js +2 -5
  55. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -1
  56. package/dist-es/mega-menu/MegaMenuGroups.css.js +4 -0
  57. package/dist-es/mega-menu/MegaMenuGroups.css.js.map +1 -0
  58. package/dist-es/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +7 -7
  59. package/dist-es/mega-menu/MegaMenuGroups.js.map +1 -0
  60. package/dist-es/mega-menu/MegaMenuHeader.js +0 -1
  61. package/dist-es/mega-menu/MegaMenuHeader.js.map +1 -1
  62. package/dist-es/mega-menu/MegaMenuItem.css.js +1 -1
  63. package/dist-es/mega-menu/MegaMenuItem.js +7 -6
  64. package/dist-es/mega-menu/MegaMenuItem.js.map +1 -1
  65. package/dist-es/mega-menu/MegaMenuSupportingActions.css.js +4 -0
  66. package/dist-es/mega-menu/MegaMenuSupportingActions.css.js.map +1 -0
  67. package/dist-es/mega-menu/MegaMenuSupportingActions.js +29 -0
  68. package/dist-es/mega-menu/MegaMenuSupportingActions.js.map +1 -0
  69. package/dist-es/mega-menu/MegaMenuSupportingContent.css.js +4 -0
  70. package/dist-es/mega-menu/MegaMenuSupportingContent.css.js.map +1 -0
  71. package/dist-es/mega-menu/MegaMenuSupportingContent.js +29 -0
  72. package/dist-es/mega-menu/MegaMenuSupportingContent.js.map +1 -0
  73. package/dist-es/mega-menu/useMegaMenuKeyboard.js +2 -2
  74. package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +1 -1
  75. package/dist-es/toolbar-next/ToolbarContentNext.css.js +4 -0
  76. package/dist-es/toolbar-next/ToolbarContentNext.css.js.map +1 -0
  77. package/dist-es/toolbar-next/ToolbarContentNext.js +30 -0
  78. package/dist-es/toolbar-next/ToolbarContentNext.js.map +1 -0
  79. package/dist-es/toolbar-next/ToolbarNext.css.js +4 -0
  80. package/dist-es/toolbar-next/ToolbarNext.css.js.map +1 -0
  81. package/dist-es/toolbar-next/ToolbarNext.js +392 -0
  82. package/dist-es/toolbar-next/ToolbarNext.js.map +1 -0
  83. package/dist-es/toolbar-next/ToolbarNextOverflow.css.js +4 -0
  84. package/dist-es/toolbar-next/ToolbarNextOverflow.css.js.map +1 -0
  85. package/dist-es/toolbar-next/ToolbarNextOverflow.js +701 -0
  86. package/dist-es/toolbar-next/ToolbarNextOverflow.js.map +1 -0
  87. package/dist-es/toolbar-next/ToolbarNextOverflowFloatingBoundary.js +159 -0
  88. package/dist-es/toolbar-next/ToolbarNextOverflowFloatingBoundary.js.map +1 -0
  89. package/dist-es/toolbar-next/TooltrayNext.css.js +4 -0
  90. package/dist-es/toolbar-next/TooltrayNext.css.js.map +1 -0
  91. package/dist-es/toolbar-next/TooltrayNext.js +53 -0
  92. package/dist-es/toolbar-next/TooltrayNext.js.map +1 -0
  93. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js +390 -0
  94. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -0
  95. package/dist-es/toolbar-next/toolbarNextUtils.js +211 -0
  96. package/dist-es/toolbar-next/toolbarNextUtils.js.map +1 -0
  97. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js +310 -0
  98. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -0
  99. package/dist-es/toolbar-next/useToolbarNextOverflow.js +741 -0
  100. package/dist-es/toolbar-next/useToolbarNextOverflow.js.map +1 -0
  101. package/dist-types/index.d.ts +1 -5
  102. package/dist-types/mega-menu/MegaMenuGroups.d.ts +8 -0
  103. package/dist-types/mega-menu/MegaMenuItem.d.ts +3 -2
  104. package/dist-types/mega-menu/MegaMenuSupportingActions.d.ts +8 -0
  105. package/dist-types/mega-menu/MegaMenuSupportingContent.d.ts +8 -0
  106. package/dist-types/mega-menu/index.d.ts +3 -3
  107. package/dist-types/toolbar-next/ToolbarContentNext.d.ts +11 -0
  108. package/dist-types/toolbar-next/ToolbarNext.d.ts +12 -0
  109. package/dist-types/toolbar-next/ToolbarNextOverflow.d.ts +34 -0
  110. package/dist-types/toolbar-next/ToolbarNextOverflowFloatingBoundary.d.ts +16 -0
  111. package/dist-types/toolbar-next/TooltrayNext.d.ts +37 -0
  112. package/dist-types/toolbar-next/index.d.ts +3 -0
  113. package/dist-types/toolbar-next/toolbarNextKeyboardUtils.d.ts +39 -0
  114. package/dist-types/toolbar-next/toolbarNextUtils.d.ts +42 -0
  115. package/dist-types/toolbar-next/useToolbarNextKeyboardNavigation.d.ts +42 -0
  116. package/dist-types/toolbar-next/useToolbarNextOverflow.d.ts +37 -0
  117. package/package.json +2 -4
  118. package/dist-cjs/calendar/index.js +0 -61
  119. package/dist-cjs/calendar/index.js.map +0 -1
  120. package/dist-cjs/date-input/index.js +0 -23
  121. package/dist-cjs/date-input/index.js.map +0 -1
  122. package/dist-cjs/date-picker/index.js +0 -106
  123. package/dist-cjs/date-picker/index.js.map +0 -1
  124. package/dist-cjs/localization-provider/index.js +0 -26
  125. package/dist-cjs/localization-provider/index.js.map +0 -1
  126. package/dist-cjs/mega-menu/MegaMenuContent.css.js +0 -6
  127. package/dist-cjs/mega-menu/MegaMenuContent.css.js.map +0 -1
  128. package/dist-cjs/mega-menu/MegaMenuContent.js +0 -33
  129. package/dist-cjs/mega-menu/MegaMenuContent.js.map +0 -1
  130. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js +0 -6
  131. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  132. package/dist-cjs/mega-menu/MegaMenuItemContent.js +0 -23
  133. package/dist-cjs/mega-menu/MegaMenuItemContent.js.map +0 -1
  134. package/dist-cjs/mega-menu/MegaMenuSection.css.js +0 -6
  135. package/dist-cjs/mega-menu/MegaMenuSection.css.js.map +0 -1
  136. package/dist-cjs/mega-menu/MegaMenuSection.js.map +0 -1
  137. package/dist-cjs/tree/Tree.css.js +0 -6
  138. package/dist-cjs/tree/Tree.css.js.map +0 -1
  139. package/dist-cjs/tree/Tree.js +0 -303
  140. package/dist-cjs/tree/Tree.js.map +0 -1
  141. package/dist-cjs/tree/TreeContext.js +0 -31
  142. package/dist-cjs/tree/TreeContext.js.map +0 -1
  143. package/dist-cjs/tree/TreeNode.css.js +0 -6
  144. package/dist-cjs/tree/TreeNode.css.js.map +0 -1
  145. package/dist-cjs/tree/TreeNode.js +0 -103
  146. package/dist-cjs/tree/TreeNode.js.map +0 -1
  147. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js +0 -6
  148. package/dist-cjs/tree/TreeNodeExpansionIcon.css.js.map +0 -1
  149. package/dist-cjs/tree/TreeNodeExpansionIcon.js +0 -62
  150. package/dist-cjs/tree/TreeNodeExpansionIcon.js.map +0 -1
  151. package/dist-cjs/tree/TreeNodeLabel.css.js +0 -6
  152. package/dist-cjs/tree/TreeNodeLabel.css.js.map +0 -1
  153. package/dist-cjs/tree/TreeNodeLabel.js +0 -26
  154. package/dist-cjs/tree/TreeNodeLabel.js.map +0 -1
  155. package/dist-cjs/tree/TreeNodeTrigger.css.js +0 -6
  156. package/dist-cjs/tree/TreeNodeTrigger.css.js.map +0 -1
  157. package/dist-cjs/tree/TreeNodeTrigger.js +0 -153
  158. package/dist-cjs/tree/TreeNodeTrigger.js.map +0 -1
  159. package/dist-cjs/tree/treeModel.js +0 -61
  160. package/dist-cjs/tree/treeModel.js.map +0 -1
  161. package/dist-cjs/tree/useTree.js +0 -337
  162. package/dist-cjs/tree/useTree.js.map +0 -1
  163. package/dist-cjs/utils/deprecatedExport.js +0 -30
  164. package/dist-cjs/utils/deprecatedExport.js.map +0 -1
  165. package/dist-es/calendar/index.js +0 -50
  166. package/dist-es/calendar/index.js.map +0 -1
  167. package/dist-es/date-input/index.js +0 -20
  168. package/dist-es/date-input/index.js.map +0 -1
  169. package/dist-es/date-picker/index.js +0 -85
  170. package/dist-es/date-picker/index.js.map +0 -1
  171. package/dist-es/localization-provider/index.js +0 -20
  172. package/dist-es/localization-provider/index.js.map +0 -1
  173. package/dist-es/mega-menu/MegaMenuContent.css.js +0 -4
  174. package/dist-es/mega-menu/MegaMenuContent.css.js.map +0 -1
  175. package/dist-es/mega-menu/MegaMenuContent.js +0 -31
  176. package/dist-es/mega-menu/MegaMenuContent.js.map +0 -1
  177. package/dist-es/mega-menu/MegaMenuItemContent.css.js +0 -4
  178. package/dist-es/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  179. package/dist-es/mega-menu/MegaMenuItemContent.js +0 -21
  180. package/dist-es/mega-menu/MegaMenuItemContent.js.map +0 -1
  181. package/dist-es/mega-menu/MegaMenuSection.css.js +0 -4
  182. package/dist-es/mega-menu/MegaMenuSection.css.js.map +0 -1
  183. package/dist-es/mega-menu/MegaMenuSection.js.map +0 -1
  184. package/dist-es/tree/Tree.css.js +0 -4
  185. package/dist-es/tree/Tree.css.js.map +0 -1
  186. package/dist-es/tree/Tree.js +0 -301
  187. package/dist-es/tree/Tree.js.map +0 -1
  188. package/dist-es/tree/TreeContext.js +0 -26
  189. package/dist-es/tree/TreeContext.js.map +0 -1
  190. package/dist-es/tree/TreeNode.css.js +0 -4
  191. package/dist-es/tree/TreeNode.css.js.map +0 -1
  192. package/dist-es/tree/TreeNode.js +0 -101
  193. package/dist-es/tree/TreeNode.js.map +0 -1
  194. package/dist-es/tree/TreeNodeExpansionIcon.css.js +0 -4
  195. package/dist-es/tree/TreeNodeExpansionIcon.css.js.map +0 -1
  196. package/dist-es/tree/TreeNodeExpansionIcon.js +0 -60
  197. package/dist-es/tree/TreeNodeExpansionIcon.js.map +0 -1
  198. package/dist-es/tree/TreeNodeLabel.css.js +0 -4
  199. package/dist-es/tree/TreeNodeLabel.css.js.map +0 -1
  200. package/dist-es/tree/TreeNodeLabel.js +0 -24
  201. package/dist-es/tree/TreeNodeLabel.js.map +0 -1
  202. package/dist-es/tree/TreeNodeTrigger.css.js +0 -4
  203. package/dist-es/tree/TreeNodeTrigger.css.js.map +0 -1
  204. package/dist-es/tree/TreeNodeTrigger.js +0 -151
  205. package/dist-es/tree/TreeNodeTrigger.js.map +0 -1
  206. package/dist-es/tree/treeModel.js +0 -57
  207. package/dist-es/tree/treeModel.js.map +0 -1
  208. package/dist-es/tree/useTree.js +0 -335
  209. package/dist-es/tree/useTree.js.map +0 -1
  210. package/dist-es/utils/deprecatedExport.js +0 -27
  211. package/dist-es/utils/deprecatedExport.js.map +0 -1
  212. package/dist-types/calendar/index.d.ts +0 -13
  213. package/dist-types/date-input/index.d.ts +0 -3
  214. package/dist-types/localization-provider/index.d.ts +0 -9
  215. package/dist-types/mega-menu/MegaMenuContent.d.ts +0 -8
  216. package/dist-types/mega-menu/MegaMenuItemContent.d.ts +0 -8
  217. package/dist-types/mega-menu/MegaMenuSection.d.ts +0 -8
  218. package/dist-types/tree/Tree.d.ts +0 -36
  219. package/dist-types/tree/TreeContext.d.ts +0 -77
  220. package/dist-types/tree/TreeNode.d.ts +0 -25
  221. package/dist-types/tree/TreeNodeExpansionIcon.d.ts +0 -4
  222. package/dist-types/tree/TreeNodeLabel.d.ts +0 -4
  223. package/dist-types/tree/TreeNodeTrigger.d.ts +0 -8
  224. package/dist-types/tree/index.d.ts +0 -4
  225. package/dist-types/tree/treeModel.d.ts +0 -24
  226. package/dist-types/tree/useTree.d.ts +0 -68
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useToolbarNextOverflow.js","sources":["../src/toolbar-next/useToolbarNextOverflow.ts"],"sourcesContent":["import { ownerWindow, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { ToolbarContentNextPosition } from \"./ToolbarContentNext\";\nimport {\n buildContentOverflowRenderSlots,\n type ToolbarNextContentModel,\n type ToolbarNextOverflowItem,\n} from \"./toolbarNextUtils\";\n\ninterface OverflowGroupDefinition {\n id: string;\n key: string;\n label: string;\n named: boolean;\n order: number;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface CollapseUnit {\n groupKey: string;\n itemIds: string[];\n order: number;\n priority: number;\n}\n\nexport interface ToolbarNextOverflowGroup {\n id: string;\n items: ToolbarNextOverflowItem[];\n key: string;\n label: string;\n named: boolean;\n overflowGroup: string;\n contentKey?: string;\n}\n\ninterface OverflowState {\n overflowGroups: ToolbarNextOverflowGroup[];\n overflowedIds: Set<string>;\n}\n\ninterface UseToolbarNextOverflowProps {\n content: ToolbarNextContentModel[];\n}\n\ntype ObservedWidthTarget =\n | {\n kind: \"container\";\n }\n | {\n id: string;\n kind: \"item\";\n }\n | {\n id: string;\n kind: \"named-trigger\";\n }\n | {\n id: string;\n kind: \"named-trigger-measure\";\n }\n | {\n groupKey: string;\n kind: \"shared-trigger-measure\";\n };\n\nconst emptyOverflowState: OverflowState = {\n overflowGroups: [],\n overflowedIds: new Set<string>(),\n};\n\nconst bandPositions: ToolbarContentNextPosition[] = [\"start\", \"center\", \"end\"];\n\nfunction measureWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const { width } = element.getBoundingClientRect();\n return Math.ceil(width);\n}\n\nfunction isVisibleMeasurementElement(element: Element): element is HTMLElement {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n const { width, height } = element.getBoundingClientRect();\n const styles = ownerWindow(element).getComputedStyle(element);\n\n return (\n width > 0 &&\n height > 0 &&\n styles.display !== \"none\" &&\n styles.visibility !== \"hidden\"\n );\n}\n\nfunction measureOverflowItemWidth(element: HTMLElement | null) {\n if (!element) {\n return 0;\n }\n\n const rect = element.getBoundingClientRect();\n let left = rect.left;\n let right = rect.right;\n\n for (const descendant of element.querySelectorAll(\"*\")) {\n if (!isVisibleMeasurementElement(descendant)) {\n continue;\n }\n\n const descendantRect = descendant.getBoundingClientRect();\n left = Math.min(left, descendantRect.left);\n right = Math.max(right, descendantRect.right);\n }\n\n return Math.ceil(Math.max(rect.width, right - left));\n}\n\nfunction readGap(gapValue: string) {\n return Number.parseFloat(gapValue || \"0\") || 0;\n}\n\nfunction sumFlexWidths(widths: number[], gap: number) {\n if (widths.length === 0) {\n return 0;\n }\n\n return (\n widths.reduce((total, width) => total + width, 0) +\n gap * (widths.length - 1)\n );\n}\n\nfunction buildGroupDefinitions(items: ToolbarNextOverflowItem[]) {\n const groupMap = new Map<string, OverflowGroupDefinition>();\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n const existing = groupMap.get(item.overflowGroupKey);\n\n if (existing) {\n if (!existing.named && item.overflowGroup === \"shared\") {\n continue;\n }\n\n if (existing.label === item.overflowGroup && item.overflowLabel) {\n existing.label = item.overflowLabel;\n }\n\n continue;\n }\n\n groupMap.set(item.overflowGroupKey, {\n id: `${item.overflowGroupKey}-${sequence}`,\n key: item.overflowGroupKey,\n label:\n item.overflowGroup === \"shared\"\n ? \"More\"\n : (item.overflowLabel ?? item.overflowGroup),\n named: item.overflowGroup !== \"shared\",\n order: sequence,\n overflowGroup: item.overflowGroup,\n contentKey: item.overflowGroup === \"shared\" ? undefined : item.contentKey,\n });\n }\n\n return Array.from(groupMap.values()).sort(\n (left, right) => left.order - right.order,\n );\n}\n\nfunction buildCollapseUnits(items: ToolbarNextOverflowItem[]) {\n const groupedUnits = new Map<string, CollapseUnit>();\n const units: CollapseUnit[] = [];\n\n for (const [sequence, item] of items.entries()) {\n if (item.overflowMode === \"none\") {\n continue;\n }\n\n if (item.overflowMode === \"grouped\" && item.overflowGroup !== \"shared\") {\n const existing = groupedUnits.get(item.overflowGroupKey);\n\n if (existing) {\n existing.itemIds.push(item.id);\n existing.order = Math.max(existing.order, sequence);\n existing.priority = Math.max(existing.priority, item.overflowPriority);\n continue;\n }\n\n const unit: CollapseUnit = {\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n };\n\n groupedUnits.set(item.overflowGroupKey, unit);\n units.push(unit);\n continue;\n }\n\n units.push({\n groupKey: item.overflowGroupKey,\n itemIds: [item.id],\n order: sequence,\n priority: item.overflowPriority,\n });\n }\n\n return units.sort((left, right) => {\n if (left.priority !== right.priority) {\n return right.priority - left.priority;\n }\n\n return right.order - left.order;\n });\n}\n\nfunction areOverflowStatesEqual(previous: OverflowState, next: OverflowState) {\n if (previous.overflowedIds.size !== next.overflowedIds.size) {\n return false;\n }\n\n for (const itemId of previous.overflowedIds) {\n if (!next.overflowedIds.has(itemId)) {\n return false;\n }\n }\n\n if (previous.overflowGroups.length !== next.overflowGroups.length) {\n return false;\n }\n\n return previous.overflowGroups.every((group, index) => {\n const nextGroup = next.overflowGroups[index];\n\n if (\n nextGroup == null ||\n group.id !== nextGroup.id ||\n group.label !== nextGroup.label ||\n group.items.length !== nextGroup.items.length\n ) {\n return false;\n }\n\n return group.items.every((item, itemIndex) => {\n return item.id === nextGroup.items[itemIndex]?.id;\n });\n });\n}\n\ninterface ComputeToolbarNextOverflowStateArgs {\n collapseUnits: CollapseUnit[];\n containerWidth: number;\n groupDefinitions: OverflowGroupDefinition[];\n itemWidths: Map<string, number>;\n items: ToolbarNextOverflowItem[];\n namedTriggerWidths: Map<string, number>;\n content: ToolbarNextContentModel[];\n contentGaps: Map<string, number>;\n rootGap: number;\n triggerWidths: Map<string, number>;\n bandGaps: Map<ToolbarContentNextPosition, number>;\n}\n\nfunction computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n}: ComputeToolbarNextOverflowStateArgs): OverflowState {\n const hasCenteredLayout = content.some(\n (contentArea) => contentArea.position === \"center\",\n );\n const contentByPosition = bandPositions.reduce<\n Record<ToolbarContentNextPosition, ToolbarNextContentModel[]>\n >(\n (bands, position) => {\n bands[position] = content.filter(\n (contentArea) => contentArea.position === position,\n );\n return bands;\n },\n {\n start: [],\n center: [],\n end: [],\n },\n );\n const overflowedIds = new Set<string>();\n const activeGroups = new Set<string>();\n\n const getContentWidth = (contentArea: ToolbarNextContentModel) => {\n const renderSlots = buildContentOverflowRenderSlots(\n contentArea.items,\n overflowedIds,\n new Set(\n groupDefinitions\n .filter((group) => {\n return (\n group.named &&\n group.contentKey === contentArea.key &&\n activeGroups.has(group.key)\n );\n })\n .map((group) => group.key),\n ),\n );\n const slotWidths: number[] = [];\n\n for (const slot of renderSlots) {\n const width =\n slot.triggerGroupKey != null\n ? namedTriggerWidths.get(slot.item.id)\n : itemWidths.get(slot.item.id);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n slotWidths.push(width);\n }\n\n return sumFlexWidths(slotWidths, contentGaps.get(contentArea.key) ?? 0);\n };\n\n const getBandWidth = (position: ToolbarContentNextPosition) => {\n const bandChildWidths: number[] = [];\n\n for (const contentArea of contentByPosition[position]) {\n const contentWidth = getContentWidth(contentArea);\n\n if (contentWidth == null) {\n return null;\n }\n\n if (contentWidth > 0) {\n bandChildWidths.push(contentWidth);\n }\n }\n\n if (position === \"end\") {\n for (const group of groupDefinitions) {\n if (!group.named && activeGroups.has(group.key)) {\n const width = triggerWidths.get(group.key);\n\n if (width == null || width <= 0) {\n return null;\n }\n\n bandChildWidths.push(width);\n }\n }\n }\n\n return sumFlexWidths(bandChildWidths, bandGaps.get(position) ?? 0);\n };\n\n const getTotalWidth = () => {\n if (hasCenteredLayout) {\n const startBandWidth = getBandWidth(\"start\");\n const centerBandWidth = getBandWidth(\"center\");\n const endBandWidth = getBandWidth(\"end\");\n\n if (\n startBandWidth == null ||\n centerBandWidth == null ||\n endBandWidth == null\n ) {\n return null;\n }\n\n return centerBandWidth + Math.max(startBandWidth, endBandWidth) * 2;\n }\n\n const visibleBandWidths: number[] = [];\n\n for (const position of bandPositions) {\n const bandWidth = getBandWidth(position);\n\n if (bandWidth == null) {\n return null;\n }\n\n if (bandWidth > 0) {\n visibleBandWidths.push(bandWidth);\n }\n }\n\n return sumFlexWidths(visibleBandWidths, rootGap);\n };\n\n const initialWidth = getTotalWidth();\n\n if (initialWidth == null) {\n return emptyOverflowState;\n }\n\n if (initialWidth > containerWidth) {\n for (const unit of collapseUnits) {\n for (const itemId of unit.itemIds) {\n overflowedIds.add(itemId);\n }\n\n activeGroups.add(unit.groupKey);\n\n const nextWidth = getTotalWidth();\n\n if (nextWidth == null) {\n return emptyOverflowState;\n }\n\n if (nextWidth <= containerWidth) {\n break;\n }\n }\n }\n\n const overflowGroups = groupDefinitions.reduce<ToolbarNextOverflowGroup[]>(\n (groups, group) => {\n const hiddenItems = items.filter(\n (item) =>\n item.overflowGroupKey === group.key && overflowedIds.has(item.id),\n );\n\n if (hiddenItems.length > 0) {\n groups.push({\n id: group.id,\n items: hiddenItems,\n key: group.key,\n label: group.label,\n named: group.named,\n overflowGroup: group.overflowGroup,\n contentKey: group.contentKey,\n });\n }\n\n return groups;\n },\n [],\n );\n\n return {\n overflowGroups,\n overflowedIds,\n };\n}\n\nexport function useToolbarNextOverflow({\n content,\n}: UseToolbarNextOverflowProps) {\n const targetWindow = useWindow();\n const items = useMemo(\n () => content.flatMap((contentArea) => contentArea.items),\n [content],\n );\n const containerRef = useRef<HTMLDivElement>(null);\n\n const bandRefs = useRef<\n Record<ToolbarContentNextPosition, HTMLDivElement | null>\n >({\n start: null,\n center: null,\n end: null,\n });\n const bandRefCallbacks = useRef(\n new Map<\n ToolbarContentNextPosition,\n (node: HTMLDivElement | null) => void\n >(),\n );\n const contentRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const contentRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const itemRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const itemRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerRefs = useRef<Record<string, HTMLDivElement | null>>({});\n const namedTriggerRefCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const namedTriggerMeasureRefs = useRef<Record<string, HTMLDivElement | null>>(\n {},\n );\n const namedTriggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLDivElement | null) => void>(),\n );\n const triggerMeasureRefs = useRef<Record<string, HTMLButtonElement | null>>(\n {},\n );\n const triggerMeasureCallbacks = useRef(\n new Map<string, (node: HTMLButtonElement | null) => void>(),\n );\n const rafRef = useRef<number | null>(null);\n const clearComputingRafRef = useRef<number | null>(null);\n const isComputingRef = useRef(false);\n const pendingMeasureRef = useRef(false);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const observedWidthTargetsRef = useRef(\n new Map<Element, ObservedWidthTarget>(),\n );\n\n const cachedItemWidths = useRef<Record<string, number>>({});\n const cachedNamedTriggerWidths = useRef<Record<string, number>>({});\n const cachedSharedTriggerWidths = useRef<Record<string, number>>({});\n const [overflowState, setOverflowState] =\n useState<OverflowState>(emptyOverflowState);\n\n const namedTriggerItems = useMemo(\n () =>\n items.filter((item) => {\n return item.overflowMode !== \"none\" && item.overflowGroup !== \"shared\";\n }),\n [items],\n );\n\n const groupDefinitions = useMemo(() => buildGroupDefinitions(items), [items]);\n const collapseUnits = useMemo(() => buildCollapseUnits(items), [items]);\n\n const computeOverflow = useCallback((): OverflowState => {\n const container = containerRef.current;\n\n if (!container) {\n return emptyOverflowState;\n }\n\n const containerStyles = ownerWindow(container).getComputedStyle(container);\n const paddingLeft =\n Number.parseFloat(containerStyles.paddingLeft || \"0\") || 0;\n const paddingRight =\n Number.parseFloat(containerStyles.paddingRight || \"0\") || 0;\n const borderLeft =\n Number.parseFloat(containerStyles.borderLeftWidth || \"0\") || 0;\n const borderRight =\n Number.parseFloat(containerStyles.borderRightWidth || \"0\") || 0;\n const containerWidth = Math.floor(\n container.getBoundingClientRect().width -\n paddingLeft -\n paddingRight -\n borderLeft -\n borderRight,\n );\n\n if (containerWidth <= 0) {\n return emptyOverflowState;\n }\n\n const rootGap = readGap(\n containerStyles.columnGap || containerStyles.gap || \"0\",\n );\n const bandGaps = new Map<ToolbarContentNextPosition, number>();\n const contentGaps = new Map<string, number>();\n const itemWidths = new Map<string, number>();\n const namedTriggerWidths = new Map<string, number>();\n const triggerWidths = new Map<string, number>();\n\n for (const position of bandPositions) {\n const bandElement = bandRefs.current[position];\n\n if (!bandElement) {\n bandGaps.set(position, 0);\n continue;\n }\n\n const bandStyles = ownerWindow(bandElement).getComputedStyle(bandElement);\n bandGaps.set(\n position,\n readGap(bandStyles.columnGap || bandStyles.gap || \"0\"),\n );\n }\n\n for (const contentArea of content) {\n const contentElement = contentRefs.current[contentArea.key];\n\n if (!contentElement) {\n return emptyOverflowState;\n }\n\n const contentStyles =\n ownerWindow(contentElement).getComputedStyle(contentElement);\n\n contentGaps.set(\n contentArea.key,\n readGap(contentStyles.columnGap || contentStyles.gap || \"0\"),\n );\n }\n\n for (const item of items) {\n const element = itemRefs.current[item.id];\n\n if (element) {\n const width = measureOverflowItemWidth(element);\n\n if (width > 0) {\n itemWidths.set(item.id, width);\n cachedItemWidths.current[item.id] = width;\n continue;\n }\n }\n\n const cached = cachedItemWidths.current[item.id];\n if (cached != null && cached > 0) {\n itemWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const item of namedTriggerItems) {\n const liveWidth = measureWidth(namedTriggerRefs.current[item.id]);\n\n if (liveWidth > 0) {\n namedTriggerWidths.set(item.id, liveWidth);\n cachedNamedTriggerWidths.current[item.id] = liveWidth;\n continue;\n }\n\n const measureWidthForItem = measureWidth(\n namedTriggerMeasureRefs.current[item.id],\n );\n\n if (measureWidthForItem > 0) {\n namedTriggerWidths.set(item.id, measureWidthForItem);\n cachedNamedTriggerWidths.current[item.id] = measureWidthForItem;\n continue;\n }\n\n const cached = cachedNamedTriggerWidths.current[item.id];\n if (cached != null && cached > 0) {\n namedTriggerWidths.set(item.id, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n for (const group of groupDefinitions.filter((entry) => !entry.named)) {\n const width = measureWidth(triggerMeasureRefs.current[group.key]);\n\n if (width <= 0) {\n const cached = cachedSharedTriggerWidths.current[group.key];\n\n if (cached != null && cached > 0) {\n triggerWidths.set(group.key, cached);\n continue;\n }\n\n return emptyOverflowState;\n }\n\n triggerWidths.set(group.key, width);\n cachedSharedTriggerWidths.current[group.key] = width;\n }\n\n const nextOverflowState = computeToolbarNextOverflowState({\n bandGaps,\n collapseUnits,\n containerWidth,\n groupDefinitions,\n itemWidths,\n items,\n namedTriggerWidths,\n content,\n contentGaps,\n rootGap,\n triggerWidths,\n });\n\n return nextOverflowState;\n }, [collapseUnits, groupDefinitions, items, namedTriggerItems, content]);\n\n const scheduleMeasureRef = useRef<() => void>(() => {});\n\n const scheduleMeasure = useCallback(() => {\n if (!targetWindow) {\n return;\n }\n\n if (isComputingRef.current) {\n pendingMeasureRef.current = true;\n return;\n }\n\n if (rafRef.current != null) {\n targetWindow.cancelAnimationFrame(rafRef.current);\n }\n\n rafRef.current = targetWindow.requestAnimationFrame(() => {\n rafRef.current = null;\n isComputingRef.current = true;\n\n try {\n const nextState = computeOverflow();\n\n setOverflowState((previous) => {\n return areOverflowStatesEqual(previous, nextState)\n ? previous\n : nextState;\n });\n } finally {\n clearComputingRafRef.current = targetWindow.requestAnimationFrame(\n () => {\n clearComputingRafRef.current = null;\n isComputingRef.current = false;\n\n if (pendingMeasureRef.current) {\n pendingMeasureRef.current = false;\n scheduleMeasureRef.current();\n }\n },\n );\n }\n });\n }, [computeOverflow, targetWindow]);\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasureRef.current = scheduleMeasure;\n\n return () => {\n scheduleMeasureRef.current = () => {};\n };\n }, [scheduleMeasure]);\n\n const getCachedWidthForObservedTarget = useCallback(\n (target: Exclude<ObservedWidthTarget, { kind: \"container\" }>) => {\n switch (target.kind) {\n case \"item\":\n return cachedItemWidths.current[target.id];\n case \"named-trigger\":\n case \"named-trigger-measure\":\n return cachedNamedTriggerWidths.current[target.id];\n case \"shared-trigger-measure\":\n return cachedSharedTriggerWidths.current[target.groupKey];\n }\n },\n [],\n );\n\n const setCachedWidthForObservedTarget = useCallback(\n (\n target: Exclude<ObservedWidthTarget, { kind: \"container\" }>,\n width: number,\n ) => {\n switch (target.kind) {\n case \"item\":\n cachedItemWidths.current[target.id] = width;\n return;\n case \"named-trigger\":\n case \"named-trigger-measure\":\n cachedNamedTriggerWidths.current[target.id] = width;\n return;\n case \"shared-trigger-measure\":\n cachedSharedTriggerWidths.current[target.groupKey] = width;\n return;\n }\n },\n [],\n );\n\n const observeWidthTarget = useCallback(\n (node: Element | null, target: ObservedWidthTarget) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.set(node, target);\n resizeObserverRef.current?.observe(node);\n },\n [],\n );\n\n const unobserveWidthTarget = useCallback((node: Element | null) => {\n if (!node) {\n return;\n }\n\n observedWidthTargetsRef.current.delete(node);\n resizeObserverRef.current?.unobserve(node);\n }, []);\n\n const updateObservedNode = useCallback(\n <TElement extends Element>(\n nodes: Record<string, TElement | null>,\n key: string,\n node: TElement | null,\n target: ObservedWidthTarget,\n ) => {\n const previous = nodes[key];\n\n if (previous === node) {\n return;\n }\n\n if (previous) {\n unobserveWidthTarget(previous);\n }\n\n nodes[key] = node;\n\n if (node) {\n observeWidthTarget(node, target);\n }\n },\n [observeWidthTarget, unobserveWidthTarget],\n );\n\n useIsomorphicLayoutEffect(() => {\n scheduleMeasure();\n }, [scheduleMeasure]);\n\n useEffect(() => {\n const container = containerRef.current;\n\n if (!container) {\n return;\n }\n\n let cancelled = false;\n const win = ownerWindow(container);\n const resizeObserver = new win.ResizeObserver((entries) => {\n let shouldMeasure = false;\n\n for (const entry of entries) {\n const target = observedWidthTargetsRef.current.get(entry.target);\n\n if (!target) {\n continue;\n }\n\n if (target.kind === \"container\") {\n shouldMeasure = true;\n continue;\n }\n\n const nextWidth =\n target.kind === \"item\"\n ? measureOverflowItemWidth(entry.target as HTMLElement)\n : measureWidth(entry.target as HTMLElement);\n\n if (nextWidth <= 0) {\n continue;\n }\n\n const previousWidth = getCachedWidthForObservedTarget(target);\n\n if (previousWidth !== nextWidth) {\n setCachedWidthForObservedTarget(target, nextWidth);\n shouldMeasure = true;\n }\n }\n\n if (shouldMeasure) {\n scheduleMeasureRef.current();\n }\n });\n\n resizeObserverRef.current = resizeObserver;\n observeWidthTarget(container, { kind: \"container\" });\n\n for (const node of observedWidthTargetsRef.current.keys()) {\n resizeObserver.observe(node);\n }\n\n if (win.document.fonts) {\n void win.document.fonts.ready.then(() => {\n if (!cancelled) {\n scheduleMeasureRef.current();\n }\n });\n }\n\n return () => {\n cancelled = true;\n resizeObserverRef.current = null;\n resizeObserver.disconnect();\n\n if (rafRef.current != null) {\n win.cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n\n if (clearComputingRafRef.current != null) {\n win.cancelAnimationFrame(clearComputingRafRef.current);\n clearComputingRafRef.current = null;\n }\n\n isComputingRef.current = false;\n pendingMeasureRef.current = false;\n };\n }, [\n getCachedWidthForObservedTarget,\n observeWidthTarget,\n setCachedWidthForObservedTarget,\n ]);\n\n const getItemRef = useCallback(\n (id: string) => {\n const existing = itemRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(itemRefs.current, id, node, {\n id,\n kind: \"item\",\n });\n };\n\n itemRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerRef = useCallback(\n (id: string) => {\n const existing = namedTriggerRefCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerRefs.current, id, node, {\n id,\n kind: \"named-trigger\",\n });\n };\n\n namedTriggerRefCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getNamedTriggerMeasureRef = useCallback(\n (id: string) => {\n const existing = namedTriggerMeasureCallbacks.current.get(id);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n updateObservedNode(namedTriggerMeasureRefs.current, id, node, {\n id,\n kind: \"named-trigger-measure\",\n });\n };\n\n namedTriggerMeasureCallbacks.current.set(id, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n const getContentRef = useCallback((contentKey: string) => {\n const existing = contentRefCallbacks.current.get(contentKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n contentRefs.current[contentKey] = node;\n };\n\n contentRefCallbacks.current.set(contentKey, callback);\n return callback;\n }, []);\n const getBandRef = useCallback((position: ToolbarContentNextPosition) => {\n const existing = bandRefCallbacks.current.get(position);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLDivElement | null) => {\n bandRefs.current[position] = node;\n };\n\n bandRefCallbacks.current.set(position, callback);\n return callback;\n }, []);\n\n const getTriggerMeasureRef = useCallback(\n (groupKey: string) => {\n const existing = triggerMeasureCallbacks.current.get(groupKey);\n\n if (existing) {\n return existing;\n }\n\n const callback = (node: HTMLButtonElement | null) => {\n updateObservedNode(triggerMeasureRefs.current, groupKey, node, {\n groupKey,\n kind: \"shared-trigger-measure\",\n });\n };\n\n triggerMeasureCallbacks.current.set(groupKey, callback);\n return callback;\n },\n [updateObservedNode],\n );\n\n return {\n containerRef,\n getBandRef,\n getItemRef,\n getNamedTriggerMeasureRef,\n getNamedTriggerRef,\n getContentRef,\n getTriggerMeasureRef,\n isOverflowing: overflowState.overflowGroups.length > 0,\n overflowGroups: overflowState.overflowGroups,\n overflowedIds: overflowState.overflowedIds,\n overflowTriggerGroups: groupDefinitions,\n };\n}\n"],"names":["ownerWindow","buildContentOverflowRenderSlots","useWindow","useMemo","useRef","useState","useCallback","useIsomorphicLayoutEffect","useEffect"],"mappings":"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"}
package/dist-es/index.js CHANGED
@@ -3,7 +3,6 @@ export { Breadcrumb } from './breadcrumbs/Breadcrumb.js';
3
3
  export { Breadcrumbs } from './breadcrumbs/Breadcrumbs.js';
4
4
  export { ButtonBar, DefaultButtonsOrderByVariant } from './button-bar/ButtonBar.js';
5
5
  export { OrderedButton } from './button-bar/OrderedButton.js';
6
- export { Calendar, CalendarGrid, CalendarNavigation, CalendarWeekHeader, isDateRangeSelection, useCalendar, useCalendarDay, useCalendarSelection, useCalendarSelectionDay, useDateSelectionAnnouncer } from './calendar/index.js';
7
6
  export { CascadingMenu } from './cascading-menu/CascadingMenu.js';
8
7
  export { Color } from './color-chooser/Color.js';
9
8
  export { ColorChooser } from './color-chooser/ColorChooser.js';
@@ -28,8 +27,6 @@ export { ContactSecondaryInfo } from './contact-details/ContactSecondaryInfo.js'
28
27
  export { ContactTertiaryInfo } from './contact-details/ContactTertiaryInfo.js';
29
28
  export { MailLinkComponent } from './contact-details/MailLinkComponent.js';
30
29
  export { ContentStatus } from './content-status/ContentStatus.js';
31
- export { DateInputRange, DateInputSingle } from './date-input/index.js';
32
- export { DatePicker, DatePickerActions, DatePickerHelperText, DatePickerOverlay, DatePickerOverlayProvider, DatePickerRangeGridPanel, DatePickerRangeInput, DatePickerRangePanel, DatePickerSingleGridPanel, DatePickerSingleInput, DatePickerTrigger, useDatePickerContext, useDatePickerOverlay } from './date-picker/index.js';
33
30
  export { DeckItem } from './deck-item/DeckItem.js';
34
31
  export { DeckLayout } from './deck-layout/DeckLayout.js';
35
32
  export { Dropdown } from './dropdown/Dropdown.js';
@@ -76,18 +73,17 @@ export { useOverflowDetection } from './utils/useOverflowDetection.js';
76
73
  export { useSlideSelection } from './utils/useSlideSelection.js';
77
74
  export { ListItemNext } from './list-next/ListItemNext.js';
78
75
  export { ListNext } from './list-next/ListNext.js';
79
- export { LocalizationProvider, useLocalization } from './localization-provider/index.js';
80
76
  export { Logo } from './logo/Logo.js';
81
77
  export { LogoImage } from './logo/LogoImage.js';
82
78
  export { LogoSeparator } from './logo/LogoSeparator.js';
83
79
  export { MegaMenu } from './mega-menu/MegaMenu.js';
84
- export { MegaMenuContent } from './mega-menu/MegaMenuContent.js';
85
80
  export { MegaMenuGroup } from './mega-menu/MegaMenuGroup.js';
81
+ export { MegaMenuGroups } from './mega-menu/MegaMenuGroups.js';
86
82
  export { MegaMenuHeader } from './mega-menu/MegaMenuHeader.js';
87
83
  export { MegaMenuItem } from './mega-menu/MegaMenuItem.js';
88
- export { MegaMenuItemContent } from './mega-menu/MegaMenuItemContent.js';
89
84
  export { MegaMenuPanel } from './mega-menu/MegaMenuPanel.js';
90
- export { MegaMenuSection } from './mega-menu/MegaMenuSection.js';
85
+ export { MegaMenuSupportingActions } from './mega-menu/MegaMenuSupportingActions.js';
86
+ export { MegaMenuSupportingContent } from './mega-menu/MegaMenuSupportingContent.js';
91
87
  export { MegaMenuTrigger } from './mega-menu/MegaMenuTrigger.js';
92
88
  export { MenuButton } from './menu-button/MenuButton.js';
93
89
  export { Metric } from './metric/Metric.js';
@@ -128,11 +124,9 @@ export { Toolbar } from './toolbar/Toolbar.js';
128
124
  export { ToolbarButton } from './toolbar/ToolbarButton.js';
129
125
  export { Tooltray } from './toolbar/Tooltray.js';
130
126
  export { ToolbarField } from './toolbar/toolbar-field/ToolbarField.js';
131
- export { Tree } from './tree/Tree.js';
132
- export { TreeNode } from './tree/TreeNode.js';
133
- export { TreeNodeLabel } from './tree/TreeNodeLabel.js';
134
- export { TreeNodeTrigger } from './tree/TreeNodeTrigger.js';
127
+ export { ToolbarContentNext } from './toolbar-next/ToolbarContentNext.js';
128
+ export { ToolbarNext } from './toolbar-next/ToolbarNext.js';
129
+ export { TooltrayNext } from './toolbar-next/TooltrayNext.js';
135
130
  export { ElectronWindow } from './window/ElectronWindow.js';
136
131
  export { Window, WindowContext, isDesktop, useWindow } from './window/WindowContext.js';
137
- export { DateRangeSelectionContext, LocalizationProviderContext, SingleDateSelectionContext } from '@salt-ds/date-components';
138
132
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,12 +5,9 @@ import { useWindow } from '@salt-ds/window';
5
5
  import { clsx } from 'clsx';
6
6
  import { forwardRef, Children, isValidElement, cloneElement } from 'react';
7
7
  import css_248z from './MegaMenuGroup.css.js';
8
+ import { MegaMenuHeader } from './MegaMenuHeader.js';
8
9
 
9
10
  const withBaseName = makePrefixer("saltMegaMenuGroup");
10
- function isMegaMenuHeader(child) {
11
- var _a;
12
- return !!((_a = child.type) == null ? void 0 : _a.__isMegaMenuHeader);
13
- }
14
11
  const MegaMenuGroup = forwardRef(
15
12
  function MegaMenuGroup2({ children, className, ...rest }, ref) {
16
13
  const targetWindow = useWindow();
@@ -23,7 +20,7 @@ const MegaMenuGroup = forwardRef(
23
20
  let header = null;
24
21
  const items = [];
25
22
  Children.forEach(children, (child) => {
26
- if (isValidElement(child) && isMegaMenuHeader(child) && !header) {
23
+ if (isValidElement(child) && child.type === MegaMenuHeader && !header) {
27
24
  header = cloneElement(child, { id: headerId });
28
25
  } else {
29
26
  items.push(child);
@@ -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":["MegaMenuGroup","megaMenuGroupCss"],"mappings":";;;;;;;;AAeA,MAAM,YAAA,GAAe,aAAa,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,GAAgB,UAAA;AAAA,EAC3B,SAASA,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC5D,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,IAAI,MAAA,GAAoB,IAAA;AACxB,IAAA,MAAM,QAAqB,EAAC;AAE5B,IAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,eAAe,KAAK,CAAA,IAAK,iBAAiB,KAAK,CAAA,IAAK,CAAC,MAAA,EAAQ;AAC/D,QAAA,MAAA,GAAS,YAAA,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,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,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,0BACD,GAAA;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, 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 ReactNode,\n} from \"react\";\nimport megaMenuGroupCss from \"./MegaMenuGroup.css\";\nimport { MegaMenuHeader } from \"./MegaMenuHeader\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroup\");\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) && child.type === MegaMenuHeader && !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":["MegaMenuGroup","megaMenuGroupCss"],"mappings":";;;;;;;;;AAeA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAS9C,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,SAASA,eAAc,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC5D,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,WAAW,KAAA,EAAM;AACvB,IAAA,IAAI,MAAA,GAAoB,IAAA;AACxB,IAAA,MAAM,QAAqB,EAAC;AAE5B,IAAA,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAC,KAAA,KAAU;AACpC,MAAA,IAAI,eAAe,KAAK,CAAA,IAAK,MAAM,IAAA,KAAS,cAAA,IAAkB,CAAC,MAAA,EAAQ;AACrE,QAAA,MAAA,GAAS,YAAA,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,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,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,0BACD,GAAA;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;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltMegaMenuGroups {\n display: grid;\n grid-template-columns: repeat(auto-fit, var(--saltMegaMenuGroups-columnWidth, 12rem));\n gap: var(--salt-spacing-300);\n padding: var(--salt-spacing-300);\n max-inline-size: var(--saltMegaMenuPanel-availableWidth, calc(100vw - var(--salt-spacing-600)));\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=MegaMenuGroups.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuGroups.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -4,14 +4,14 @@ import { useComponentCssInjection } from '@salt-ds/styles';
4
4
  import { useWindow } from '@salt-ds/window';
5
5
  import { clsx } from 'clsx';
6
6
  import { forwardRef } from 'react';
7
- import css_248z from './MegaMenuSection.css.js';
7
+ import css_248z from './MegaMenuGroups.css.js';
8
8
 
9
- const withBaseName = makePrefixer("saltMegaMenuSection");
10
- const MegaMenuSection = forwardRef(
11
- function MegaMenuSection2({ children, className, ...rest }, ref) {
9
+ const withBaseName = makePrefixer("saltMegaMenuGroups");
10
+ const MegaMenuGroups = forwardRef(
11
+ function MegaMenuGroups2({ children, className, ...rest }, ref) {
12
12
  const targetWindow = useWindow();
13
13
  useComponentCssInjection({
14
- testId: "salt-mega-menu-section",
14
+ testId: "salt-mega-menu-groups",
15
15
  css: css_248z,
16
16
  window: targetWindow
17
17
  });
@@ -19,5 +19,5 @@ const MegaMenuSection = forwardRef(
19
19
  }
20
20
  );
21
21
 
22
- export { MegaMenuSection };
23
- //# sourceMappingURL=MegaMenuSection.js.map
22
+ export { MegaMenuGroups };
23
+ //# 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 { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport megaMenuGroupsCss from \"./MegaMenuGroups.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuGroups\");\n\nexport interface MegaMenuGroupsProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The content of the mega menu section.\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":["MegaMenuGroups","megaMenuGroupsCss"],"mappings":";;;;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA;AAS/C,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,SAASA,gBAAe,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7D,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA,EAAG,GAAA,EAAW,GAAG,IAAA,EAC5D,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -18,7 +18,6 @@ const MegaMenuHeader = forwardRef(
18
18
  return /* @__PURE__ */ jsx("div", { className: clsx(withBaseName(), className), ref, ...rest, children: /* @__PURE__ */ jsx("div", { className: clsx(withBaseName("content")), children }) });
19
19
  }
20
20
  );
21
- MegaMenuHeader.__isMegaMenuHeader = true;
22
21
 
23
22
  export { MegaMenuHeader };
24
23
  //# sourceMappingURL=MegaMenuHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenuHeader.js","sources":["../src/mega-menu/MegaMenuHeader.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 megaMenuHeaderCss from \"./MegaMenuHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuHeader\");\n\nexport interface MegaMenuHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the mega menu header.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuHeader = forwardRef<HTMLDivElement, MegaMenuHeaderProps>(\n function MegaMenuHeader({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-header\",\n css: megaMenuHeaderCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n <div className={clsx(withBaseName(\"content\"))}>{children}</div>\n </div>\n );\n },\n);\n\n/** @internal Marker used by MegaMenuGroup to identify header children. */\n(MegaMenuHeader as any).__isMegaMenuHeader = true;\n"],"names":["MegaMenuHeader","megaMenuHeaderCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA;AAS/C,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,SAASA,gBAAe,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7D,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,IAAA,CAAK,cAAa,EAAG,SAAS,GAAG,GAAA,EAAW,GAAG,MAC7D,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,IAAA,CAAK,YAAA,CAAa,SAAS,CAAC,CAAA,EAAI,UAAS,CAAA,EAC3D,CAAA;AAAA,EAEJ;AACF;AAGC,cAAA,CAAuB,kBAAA,GAAqB,IAAA;;;;"}
1
+ {"version":3,"file":"MegaMenuHeader.js","sources":["../src/mega-menu/MegaMenuHeader.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 megaMenuHeaderCss from \"./MegaMenuHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuHeader\");\n\nexport interface MegaMenuHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the mega menu header.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuHeader = forwardRef<HTMLDivElement, MegaMenuHeaderProps>(\n function MegaMenuHeader({ children, className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-header\",\n css: megaMenuHeaderCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n <div className={clsx(withBaseName(\"content\"))}>{children}</div>\n </div>\n );\n },\n);\n"],"names":["MegaMenuHeader","megaMenuHeaderCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA;AAS/C,MAAM,cAAA,GAAiB,UAAA;AAAA,EAC5B,SAASA,gBAAe,EAAE,QAAA,EAAU,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AAC7D,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,uBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACE,GAAA,CAAC,SAAI,SAAA,EAAW,IAAA,CAAK,cAAa,EAAG,SAAS,GAAG,GAAA,EAAW,GAAG,MAC7D,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,IAAA,CAAK,YAAA,CAAa,SAAS,CAAC,CAAA,EAAI,UAAS,CAAA,EAC3D,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".saltMegaMenuItem {\n list-style: none;\n}\n\n.saltMegaMenuItem > a {\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);\n text-decoration: none;\n}\n\n.saltMegaMenuItem > a > .saltIcon {\n display: flex;\n height: var(--salt-size-base);\n align-items: center;\n}\n\n.saltMegaMenuItem > a:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltMegaMenuItem > a:hover {\n outline: none;\n background: var(--salt-navigable-background-hover);\n}\n\n.saltMegaMenuItem > a:active {\n background: var(--salt-navigable-accent-background-active);\n}\n\n.saltMegaMenuItem > a: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";
1
+ var css_248z = ".saltMegaMenuItem {\n list-style: none;\n}\n\n.saltMegaMenuItem > a {\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);\n text-decoration: none;\n}\n\n.saltMegaMenuItem > a > .saltIcon {\n display: flex;\n height: var(--salt-size-base);\n align-items: center;\n}\n\n.saltMegaMenuItem-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.saltMegaMenuItem > a:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltMegaMenuItem > a:hover {\n outline: none;\n background: var(--salt-navigable-background-hover);\n}\n\n.saltMegaMenuItem > a:active {\n background: var(--salt-navigable-accent-background-active);\n}\n\n.saltMegaMenuItem > a: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";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=MegaMenuItem.css.js.map
@@ -3,7 +3,7 @@ import { makePrefixer, renderProps } from '@salt-ds/core';
3
3
  import { useComponentCssInjection } from '@salt-ds/styles';
4
4
  import { useWindow } from '@salt-ds/window';
5
5
  import { clsx } from 'clsx';
6
- import { forwardRef } from 'react';
6
+ import { forwardRef, Children } from 'react';
7
7
  import css_248z from './MegaMenuItem.css.js';
8
8
  import { useMegaMenu } from './useMegaMenu.js';
9
9
 
@@ -12,7 +12,7 @@ function ItemAction(props) {
12
12
  return renderProps("a", props);
13
13
  }
14
14
  const MegaMenuItem = forwardRef(
15
- function MegaMenuItem2({ children, className, href = "#", onClick, onKeyDown, ...rest }, ref) {
15
+ function MegaMenuItem2({ children, className, onClick, onKeyDown, ...rest }, ref) {
16
16
  const targetWindow = useWindow();
17
17
  const megaMenu = useMegaMenu();
18
18
  useComponentCssInjection({
@@ -31,16 +31,17 @@ const MegaMenuItem = forwardRef(
31
31
  event.currentTarget.click();
32
32
  }
33
33
  };
34
- return /* @__PURE__ */ jsx("li", { className: withBaseName(), ref, children: /* @__PURE__ */ jsx(
34
+ return /* @__PURE__ */ jsx("li", { className: clsx(withBaseName(), className), ref, children: /* @__PURE__ */ jsx(
35
35
  ItemAction,
36
36
  {
37
- className: clsx(withBaseName(), className),
38
37
  "data-mega-menu-item": "",
39
- href,
40
38
  onClick: handleClick,
41
39
  onKeyDown: handleKeyDown,
42
40
  ...rest,
43
- children
41
+ children: Children.map(
42
+ children,
43
+ (child) => typeof child === "string" || typeof child === "number" ? /* @__PURE__ */ jsx("span", { className: withBaseName("content"), children: child }) : child
44
+ )
44
45
  }
45
46
  ) });
46
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenuItem.js","sources":["../src/mega-menu/MegaMenuItem.tsx"],"sourcesContent":["import { makePrefixer, renderProps } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type AnchorHTMLAttributes,\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport megaMenuItemCss from \"./MegaMenuItem.css\";\nimport { useMegaMenu } from \"./useMegaMenu\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuItem\");\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know the exact type here\nfunction ItemAction(props: ComponentPropsWithoutRef<any>) {\n return renderProps(\"a\", props);\n}\n\nexport interface MegaMenuItemProps\n extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * The content of the mega menu item.\n */\n children?: ReactNode;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n}\n\nexport const MegaMenuItem = forwardRef<HTMLLIElement, MegaMenuItemProps>(\n function MegaMenuItem(\n { children, className, href = \"#\", onClick, onKeyDown, ...rest },\n ref,\n ) {\n const targetWindow = useWindow();\n const megaMenu = useMegaMenu();\n\n useComponentCssInjection({\n testId: \"salt-mega-menu-item\",\n css: megaMenuItemCss,\n window: targetWindow,\n });\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event);\n megaMenu.setOpen(false);\n };\n\n // Native `<a>` activates on Enter but not Space — handle Space here for parity.\n const handleKeyDown = (event: KeyboardEvent<HTMLAnchorElement>) => {\n onKeyDown?.(event);\n if (!event.defaultPrevented && event.key === \" \") {\n event.preventDefault();\n event.currentTarget.click();\n }\n };\n\n return (\n <li className={withBaseName()} ref={ref}>\n <ItemAction\n className={clsx(withBaseName(), className)}\n data-mega-menu-item=\"\"\n href={href}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </ItemAction>\n </li>\n );\n },\n);\n"],"names":["MegaMenuItem","megaMenuItemCss"],"mappings":";;;;;;;;;AAeA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA;AAGpD,SAAS,WAAW,KAAA,EAAsC;AACxD,EAAA,OAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAC/B;AAcO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,SAASA,aAAAA,CACP,EAAE,QAAA,EAAU,SAAA,EAAW,IAAA,GAAO,GAAA,EAAK,OAAA,EAAS,SAAA,EAAW,GAAG,IAAA,EAAK,EAC/D,GAAA,EACA;AACA,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACV,MAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,MAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAY,KAAA,CAAA;AACZ,MAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,IAAoB,KAAA,CAAM,QAAQ,GAAA,EAAK;AAChD,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,CAAM,cAAc,KAAA,EAAM;AAAA,MAC5B;AAAA,IACF,CAAA;AAEA,IAAA,uBACE,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,YAAA,IAAgB,GAAA,EAC7B,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,qBAAA,EAAoB,EAAA;AAAA,QACpB,IAAA;AAAA,QACA,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH,EACF,CAAA;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"MegaMenuItem.js","sources":["../src/mega-menu/MegaMenuItem.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 type AnchorHTMLAttributes,\n Children,\n type ComponentPropsWithoutRef,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport megaMenuItemCss from \"./MegaMenuItem.css\";\nimport { useMegaMenu } from \"./useMegaMenu\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuItem\");\n\n// biome-ignore lint/suspicious/noExplicitAny: We don't know the exact type here\nfunction ItemAction(props: ComponentPropsWithoutRef<any>) {\n return renderProps(\"a\", props);\n}\n\nexport interface MegaMenuItemProps\n extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * The content of the mega menu item.\n */\n children?: ReactNode;\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 MegaMenuItem = forwardRef<HTMLLIElement, MegaMenuItemProps>(\n function MegaMenuItem(\n { children, className, onClick, onKeyDown, ...rest },\n ref,\n ) {\n const targetWindow = useWindow();\n const megaMenu = useMegaMenu();\n\n useComponentCssInjection({\n testId: \"salt-mega-menu-item\",\n css: megaMenuItemCss,\n window: targetWindow,\n });\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n onClick?.(event);\n megaMenu.setOpen(false);\n };\n\n // Native `<a>` activates on Enter but not Space — handle Space here for parity.\n const handleKeyDown = (event: KeyboardEvent<HTMLAnchorElement>) => {\n onKeyDown?.(event);\n if (!event.defaultPrevented && event.key === \" \") {\n event.preventDefault();\n event.currentTarget.click();\n }\n };\n\n return (\n <li className={clsx(withBaseName(), className)} ref={ref}>\n <ItemAction\n data-mega-menu-item=\"\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\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 </ItemAction>\n </li>\n );\n },\n);\n"],"names":["MegaMenuItem","megaMenuItemCss"],"mappings":";;;;;;;;;AAgBA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA;AAGpD,SAAS,WAAW,KAAA,EAAsC;AACxD,EAAA,OAAO,WAAA,CAAY,KAAK,KAAK,CAAA;AAC/B;AAcO,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,SAASA,aAAAA,CACP,EAAE,QAAA,EAAU,SAAA,EAAW,SAAS,SAAA,EAAW,GAAG,IAAA,EAAK,EACnD,GAAA,EACA;AACA,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,MAAM,WAAW,WAAA,EAAY;AAE7B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,qBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACV,MAAA,QAAA,CAAS,QAAQ,KAAK,CAAA;AAAA,IACxB,CAAA;AAGA,IAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4C;AACjE,MAAA,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAY,KAAA,CAAA;AACZ,MAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,IAAoB,KAAA,CAAM,QAAQ,GAAA,EAAK;AAChD,QAAA,KAAA,CAAM,cAAA,EAAe;AACrB,QAAA,KAAA,CAAM,cAAc,KAAA,EAAM;AAAA,MAC5B;AAAA,IACF,CAAA;AAEA,IAAA,uBACE,GAAA,CAAC,QAAG,SAAA,EAAW,IAAA,CAAK,cAAa,EAAG,SAAS,GAAG,GAAA,EAC9C,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,qBAAA,EAAoB,EAAA;AAAA,QACpB,OAAA,EAAS,WAAA;AAAA,QACT,SAAA,EAAW,aAAA;AAAA,QACV,GAAG,IAAA;AAAA,QAEH,QAAA,EAAA,QAAA,CAAS,GAAA;AAAA,UAAI,QAAA;AAAA,UAAU,CAAC,KAAA,KACvB,OAAO,KAAA,KAAU,YAAY,OAAO,KAAA,KAAU,QAAA,mBAC5C,GAAA,CAAC,UAAK,SAAA,EAAW,YAAA,CAAa,SAAS,CAAA,EAAI,iBAAM,CAAA,GAEjD;AAAA;AAEJ;AAAA,KACF,EACF,CAAA;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltMegaMenuSupportingActions {\n display: flex;\n flex-wrap: wrap;\n width: fit-content;\n padding-bottom: var(--salt-spacing-300);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=MegaMenuSupportingActions.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuSupportingActions.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,29 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
+ import css_248z from './MegaMenuSupportingActions.css.js';
8
+
9
+ const withBaseName = makePrefixer("saltMegaMenuSupportingActions");
10
+ const MegaMenuSupportingActions = forwardRef(function MegaMenuSupportingActions2({ className, ...rest }, ref) {
11
+ const targetWindow = useWindow();
12
+ useComponentCssInjection({
13
+ testId: "salt-mega-menu-supporting-actions",
14
+ css: css_248z,
15
+ window: targetWindow
16
+ });
17
+ return /* @__PURE__ */ jsx(
18
+ "div",
19
+ {
20
+ className: clsx(withBaseName(), className),
21
+ "data-mega-menu-column": "",
22
+ ref,
23
+ ...rest
24
+ }
25
+ );
26
+ });
27
+
28
+ export { MegaMenuSupportingActions };
29
+ //# sourceMappingURL=MegaMenuSupportingActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuSupportingActions.js","sources":["../src/mega-menu/MegaMenuSupportingActions.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 megaMenuSupportingActionsCss from \"./MegaMenuSupportingActions.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuSupportingActions\");\n\nexport interface MegaMenuSupportingActionsProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Supporting action links displayed below the menu sections.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuSupportingActions = forwardRef<\n HTMLDivElement,\n MegaMenuSupportingActionsProps\n>(function MegaMenuSupportingActions({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-supporting-actions\",\n css: megaMenuSupportingActionsCss,\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"],"names":["MegaMenuSupportingActions","megaMenuSupportingActionsCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,+BAA+B,CAAA;AAU1D,MAAM,yBAAA,GAA4B,WAGvC,SAASA,0BAAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAChE,EAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,EAAA,wBAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,mCAAA;AAAA,IACR,GAAA,EAAKC,QAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACzC,uBAAA,EAAsB,EAAA;AAAA,MACtB,GAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltMegaMenuSupportingContent {\n padding: var(--salt-spacing-300);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=MegaMenuSupportingContent.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuSupportingContent.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,29 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer } from '@salt-ds/core';
3
+ import { useComponentCssInjection } from '@salt-ds/styles';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
+ import css_248z from './MegaMenuSupportingContent.css.js';
8
+
9
+ const withBaseName = makePrefixer("saltMegaMenuSupportingContent");
10
+ const MegaMenuSupportingContent = forwardRef(function MegaMenuSupportingContent2({ className, ...rest }, ref) {
11
+ const targetWindow = useWindow();
12
+ useComponentCssInjection({
13
+ testId: "salt-mega-menu-supporting-content",
14
+ css: css_248z,
15
+ window: targetWindow
16
+ });
17
+ return /* @__PURE__ */ jsx(
18
+ "div",
19
+ {
20
+ className: clsx(withBaseName(), className),
21
+ "data-mega-menu-column": "",
22
+ ref,
23
+ ...rest
24
+ }
25
+ );
26
+ });
27
+
28
+ export { MegaMenuSupportingContent };
29
+ //# sourceMappingURL=MegaMenuSupportingContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuSupportingContent.js","sources":["../src/mega-menu/MegaMenuSupportingContent.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 megaMenuSupportingContentCss from \"./MegaMenuSupportingContent.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuSupportingContent\");\n\nexport interface MegaMenuSupportingContentProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the region.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuSupportingContent = forwardRef<\n HTMLDivElement,\n MegaMenuSupportingContentProps\n>(function MegaMenuSupportingContent({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-supporting-content\",\n css: megaMenuSupportingContentCss,\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"],"names":["MegaMenuSupportingContent","megaMenuSupportingContentCss"],"mappings":";;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,+BAA+B,CAAA;AAU1D,MAAM,yBAAA,GAA4B,WAGvC,SAASA,0BAAAA,CAA0B,EAAE,SAAA,EAAW,GAAG,IAAA,EAAK,EAAG,GAAA,EAAK;AAChE,EAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,EAAA,wBAAA,CAAyB;AAAA,IACvB,MAAA,EAAQ,mCAAA;AAAA,IACR,GAAA,EAAKC,QAAA;AAAA,IACL,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,MACzC,uBAAA,EAAsB,EAAA;AAAA,MACtB,GAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;;;;"}
@@ -6,7 +6,7 @@ const FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tab
6
6
  function getColumnItems(column) {
7
7
  const marked = Array.from(
8
8
  column.querySelectorAll(ITEM_SELECTOR)
9
- );
9
+ ).filter((el) => el.matches(FOCUSABLE_SELECTOR));
10
10
  if (marked.length > 0) return marked;
11
11
  return Array.from(column.querySelectorAll(FOCUSABLE_SELECTOR));
12
12
  }
@@ -24,7 +24,7 @@ function buildGrid(panel) {
24
24
  if (items.length > 0) grid.push(items);
25
25
  } else if (el.matches(ITEM_SELECTOR)) {
26
26
  const parentCol = el.closest(COLUMN_SELECTOR);
27
- if (!parentCol || !columns.has(parentCol)) {
27
+ if ((!parentCol || !columns.has(parentCol)) && el.matches(FOCUSABLE_SELECTOR)) {
28
28
  grid.push([el]);
29
29
  }
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useMegaMenuKeyboard.js","sources":["../src/mega-menu/useMegaMenuKeyboard.ts"],"sourcesContent":["import type { ElementProps, FloatingRootContext } from \"@floating-ui/react\";\nimport { useMemo } from \"react\";\n\nconst COLUMN_SELECTOR = \"[data-mega-menu-column]\";\nconst ITEM_SELECTOR = \"[data-mega-menu-item]\";\nexport const FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Get navigable items within a column.\n * Prefers explicitly marked items (`data-mega-menu-item`), falling back\n * to all focusable elements when no marked items are found.\n */\nfunction getColumnItems(column: HTMLElement): HTMLElement[] {\n const marked = Array.from(\n column.querySelectorAll<HTMLElement>(ITEM_SELECTOR),\n );\n if (marked.length > 0) return marked;\n return Array.from(column.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n}\n\n/**\n * Build a 2D grid of navigable items from the panel DOM.\n * Each column is a `[data-mega-menu-column]` wrapper; items within each\n * column are discovered via `getColumnItems`.\n * Items not inside any column (orphans) are inserted at their DOM position\n * as single-item columns so keyboard navigation follows visual order.\n */\nfunction buildGrid(panel: HTMLElement): HTMLElement[][] {\n const columns = new Set(panel.querySelectorAll<HTMLElement>(COLUMN_SELECTOR));\n const grid: HTMLElement[][] = [];\n const processedColumns = new Set<HTMLElement>();\n\n // Walk columns and items in DOM order so orphans are interleaved correctly.\n const all = panel.querySelectorAll<HTMLElement>(\n `${COLUMN_SELECTOR}, ${ITEM_SELECTOR}`,\n );\n\n for (const el of all) {\n if (columns.has(el) && !processedColumns.has(el)) {\n processedColumns.add(el);\n const items = getColumnItems(el);\n if (items.length > 0) grid.push(items);\n } else if (el.matches(ITEM_SELECTOR)) {\n const parentCol = el.closest(COLUMN_SELECTOR);\n if (!parentCol || !columns.has(parentCol as HTMLElement)) {\n grid.push([el]);\n }\n }\n }\n\n return grid;\n}\n\nfunction findPosition(\n grid: HTMLElement[][],\n el: HTMLElement,\n): { col: number; row: number } | null {\n for (let col = 0; col < grid.length; col++) {\n const row = grid[col].indexOf(el);\n if (row !== -1) return { col, row };\n }\n return null;\n}\n\nfunction focusTrigger(context: FloatingRootContext) {\n const reference = context.elements.reference as HTMLElement | null;\n const focusable =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? reference;\n focusable?.focus();\n}\n\nfunction focusNextAfterPanel(context: FloatingRootContext, panel: HTMLElement) {\n const reference = context.elements.reference as HTMLElement | null;\n const refFocusable =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? reference;\n\n const nextSibling = refFocusable\n ?.closest(\"li\")\n ?.nextElementSibling?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n\n const nextOutside =\n nextSibling ||\n (() => {\n const allFocusable = Array.from(\n panel.ownerDocument.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => !panel.contains(el));\n const idx = refFocusable ? allFocusable.indexOf(refFocusable) : -1;\n return idx >= 0 ? allFocusable[idx + 1] : undefined;\n })();\n\n if (nextOutside) {\n const view = panel.ownerDocument.defaultView;\n view?.requestAnimationFrame(() => {\n view?.requestAnimationFrame(() => {\n nextOutside.focus();\n });\n });\n }\n}\n\nexport interface UseMegaMenuKeyboardProps {\n /**\n * Whether the interaction is enabled.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * Floating-ui custom interaction hook for mega menu grid keyboard navigation.\n *\n * Returns `ElementProps` that get merged via `useInteractions`, handling\n * keyboard events on both the reference (trigger) and floating (panel) elements.\n *\n * - **↑ / ↓** move within the current column.\n * - **← / →** jump to the top of the previous / next column.\n * - **Tab / Shift+Tab** move linearly through every item.\n * - **Home / End** jump to the first / last item in the column.\n * - **↑ from the first item** or **← from the first column** returns\n * focus to the trigger.\n * - **→ from the last column** closes the panel and moves focus to the\n * next sibling trigger.\n */\nexport function useMegaMenuKeyboard(\n context: FloatingRootContext,\n props: UseMegaMenuKeyboardProps = {},\n): ElementProps {\n const { enabled = true } = props;\n const { open, onOpenChange } = context;\n\n return useMemo(() => {\n if (!enabled) {\n return {};\n }\n\n return {\n reference: {\n onKeyDown(event: React.KeyboardEvent) {\n if (event.key === \"ArrowDown\" && open) {\n event.preventDefault();\n const floating = context.elements.floating;\n if (floating instanceof HTMLElement) {\n focusFirstItem(floating);\n }\n }\n },\n },\n floating: {\n onKeyDown(event: React.KeyboardEvent) {\n if (!open) return;\n\n const panel = event.currentTarget as HTMLElement;\n const target = event.target as HTMLElement;\n\n const focusedItem =\n target.closest<HTMLElement>(ITEM_SELECTOR) ??\n target.closest<HTMLElement>(FOCUSABLE_SELECTOR);\n if (!focusedItem) return;\n\n const grid = buildGrid(panel);\n const pos = findPosition(grid, focusedItem);\n if (!pos) return;\n\n const allItems = grid.flat();\n const linearIndex = allItems.indexOf(focusedItem);\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = pos.row + 1;\n if (next < grid[pos.col].length) {\n grid[pos.col][next].focus();\n } else {\n const nextCol = pos.col + 1;\n if (nextCol < grid.length) {\n grid[nextCol][0].focus();\n }\n }\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n if (pos.row > 0) {\n grid[pos.col][pos.row - 1].focus();\n } else {\n const prevCol = pos.col - 1;\n if (prevCol >= 0) {\n grid[prevCol][grid[prevCol].length - 1].focus();\n } else {\n focusTrigger(context);\n }\n }\n break;\n }\n\n case \"ArrowRight\": {\n event.preventDefault();\n const nextCol = pos.col + 1;\n if (nextCol < grid.length) {\n grid[nextCol][0].focus();\n } else {\n // On the last column — close panel and move to next trigger\n const reference = context.elements\n .reference as HTMLElement | null;\n const trigger =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ??\n reference;\n const li = trigger?.closest(\"li\");\n const nextSibling =\n li?.nextElementSibling instanceof HTMLElement\n ? li.nextElementSibling.querySelector<HTMLElement>(\n FOCUSABLE_SELECTOR,\n )\n : null;\n if (nextSibling) {\n onOpenChange(false);\n nextSibling.focus();\n }\n }\n break;\n }\n\n case \"ArrowLeft\": {\n event.preventDefault();\n const prevCol = pos.col - 1;\n if (prevCol >= 0) {\n grid[prevCol][0].focus();\n } else {\n focusTrigger(context);\n }\n break;\n }\n\n case \"Tab\": {\n event.preventDefault();\n if (event.shiftKey) {\n if (linearIndex === 0) {\n focusTrigger(context);\n } else {\n allItems[linearIndex - 1]?.focus();\n }\n } else {\n if (linearIndex === allItems.length - 1) {\n onOpenChange(false);\n focusNextAfterPanel(context, panel);\n } else {\n allItems[linearIndex + 1]?.focus();\n }\n }\n break;\n }\n\n case \"Home\": {\n event.preventDefault();\n grid[pos.col][0]?.focus();\n break;\n }\n\n case \"End\": {\n event.preventDefault();\n grid[pos.col][grid[pos.col].length - 1]?.focus();\n break;\n }\n\n default:\n break;\n }\n },\n },\n };\n }, [enabled, open, context, onOpenChange]);\n}\n\n/**\n * Focus the first navigable item inside a mega menu panel.\n * Retries with `requestAnimationFrame` if content has not yet rendered.\n */\nexport function focusFirstItem(panel: HTMLElement, attempt = 0): void {\n const grid = buildGrid(panel);\n const firstItem = grid[0]?.[0];\n\n if (firstItem) {\n firstItem.focus();\n return;\n }\n\n const view = panel.ownerDocument.defaultView;\n if (attempt < 3 && view) {\n view.requestAnimationFrame(() => focusFirstItem(panel, attempt + 1));\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMegaMenuKeyboard.js","sources":["../src/mega-menu/useMegaMenuKeyboard.ts"],"sourcesContent":["import type { ElementProps, FloatingRootContext } from \"@floating-ui/react\";\nimport { useMemo } from \"react\";\n\nconst COLUMN_SELECTOR = \"[data-mega-menu-column]\";\nconst ITEM_SELECTOR = \"[data-mega-menu-item]\";\nexport const FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/**\n * Get navigable items within a column.\n * Prefers explicitly marked items (`data-mega-menu-item`) that are focusable,\n * falling back to all focusable elements when no usable marked items are found.\n */\nfunction getColumnItems(column: HTMLElement): HTMLElement[] {\n const marked = Array.from(\n column.querySelectorAll<HTMLElement>(ITEM_SELECTOR),\n ).filter((el) => el.matches(FOCUSABLE_SELECTOR));\n if (marked.length > 0) return marked;\n return Array.from(column.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR));\n}\n\n/**\n * Build a 2D grid of navigable items from the panel DOM.\n * Each column is a `[data-mega-menu-column]` wrapper; items within each\n * column are discovered via `getColumnItems`.\n * Items not inside any column (orphans) are inserted at their DOM position\n * as single-item columns so keyboard navigation follows visual order.\n */\nfunction buildGrid(panel: HTMLElement): HTMLElement[][] {\n const columns = new Set(panel.querySelectorAll<HTMLElement>(COLUMN_SELECTOR));\n const grid: HTMLElement[][] = [];\n const processedColumns = new Set<HTMLElement>();\n\n // Walk columns and items in DOM order so orphans are interleaved correctly.\n const all = panel.querySelectorAll<HTMLElement>(\n `${COLUMN_SELECTOR}, ${ITEM_SELECTOR}`,\n );\n\n for (const el of all) {\n if (columns.has(el) && !processedColumns.has(el)) {\n processedColumns.add(el);\n const items = getColumnItems(el);\n if (items.length > 0) grid.push(items);\n } else if (el.matches(ITEM_SELECTOR)) {\n const parentCol = el.closest(COLUMN_SELECTOR);\n if (\n (!parentCol || !columns.has(parentCol as HTMLElement)) &&\n el.matches(FOCUSABLE_SELECTOR)\n ) {\n grid.push([el]);\n }\n }\n }\n\n return grid;\n}\n\nfunction findPosition(\n grid: HTMLElement[][],\n el: HTMLElement,\n): { col: number; row: number } | null {\n for (let col = 0; col < grid.length; col++) {\n const row = grid[col].indexOf(el);\n if (row !== -1) return { col, row };\n }\n return null;\n}\n\nfunction focusTrigger(context: FloatingRootContext) {\n const reference = context.elements.reference as HTMLElement | null;\n const focusable =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? reference;\n focusable?.focus();\n}\n\nfunction focusNextAfterPanel(context: FloatingRootContext, panel: HTMLElement) {\n const reference = context.elements.reference as HTMLElement | null;\n const refFocusable =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ?? reference;\n\n const nextSibling = refFocusable\n ?.closest(\"li\")\n ?.nextElementSibling?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n\n const nextOutside =\n nextSibling ||\n (() => {\n const allFocusable = Array.from(\n panel.ownerDocument.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR),\n ).filter((el) => !panel.contains(el));\n const idx = refFocusable ? allFocusable.indexOf(refFocusable) : -1;\n return idx >= 0 ? allFocusable[idx + 1] : undefined;\n })();\n\n if (nextOutside) {\n const view = panel.ownerDocument.defaultView;\n view?.requestAnimationFrame(() => {\n view?.requestAnimationFrame(() => {\n nextOutside.focus();\n });\n });\n }\n}\n\nexport interface UseMegaMenuKeyboardProps {\n /**\n * Whether the interaction is enabled.\n * @default true\n */\n enabled?: boolean;\n}\n\n/**\n * Floating-ui custom interaction hook for mega menu grid keyboard navigation.\n *\n * Returns `ElementProps` that get merged via `useInteractions`, handling\n * keyboard events on both the reference (trigger) and floating (panel) elements.\n *\n * - **↑ / ↓** move within the current column.\n * - **← / →** jump to the top of the previous / next column.\n * - **Tab / Shift+Tab** move linearly through every item.\n * - **Home / End** jump to the first / last item in the column.\n * - **↑ from the first item** or **← from the first column** returns\n * focus to the trigger.\n * - **→ from the last column** closes the panel and moves focus to the\n * next sibling trigger.\n */\nexport function useMegaMenuKeyboard(\n context: FloatingRootContext,\n props: UseMegaMenuKeyboardProps = {},\n): ElementProps {\n const { enabled = true } = props;\n const { open, onOpenChange } = context;\n\n return useMemo(() => {\n if (!enabled) {\n return {};\n }\n\n return {\n reference: {\n onKeyDown(event: React.KeyboardEvent) {\n if (event.key === \"ArrowDown\" && open) {\n event.preventDefault();\n const floating = context.elements.floating;\n if (floating instanceof HTMLElement) {\n focusFirstItem(floating);\n }\n }\n },\n },\n floating: {\n onKeyDown(event: React.KeyboardEvent) {\n if (!open) return;\n\n const panel = event.currentTarget as HTMLElement;\n const target = event.target as HTMLElement;\n\n const focusedItem =\n target.closest<HTMLElement>(ITEM_SELECTOR) ??\n target.closest<HTMLElement>(FOCUSABLE_SELECTOR);\n if (!focusedItem) return;\n\n const grid = buildGrid(panel);\n const pos = findPosition(grid, focusedItem);\n if (!pos) return;\n\n const allItems = grid.flat();\n const linearIndex = allItems.indexOf(focusedItem);\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n const next = pos.row + 1;\n if (next < grid[pos.col].length) {\n grid[pos.col][next].focus();\n } else {\n const nextCol = pos.col + 1;\n if (nextCol < grid.length) {\n grid[nextCol][0].focus();\n }\n }\n break;\n }\n\n case \"ArrowUp\": {\n event.preventDefault();\n if (pos.row > 0) {\n grid[pos.col][pos.row - 1].focus();\n } else {\n const prevCol = pos.col - 1;\n if (prevCol >= 0) {\n grid[prevCol][grid[prevCol].length - 1].focus();\n } else {\n focusTrigger(context);\n }\n }\n break;\n }\n\n case \"ArrowRight\": {\n event.preventDefault();\n const nextCol = pos.col + 1;\n if (nextCol < grid.length) {\n grid[nextCol][0].focus();\n } else {\n // On the last column — close panel and move to next trigger\n const reference = context.elements\n .reference as HTMLElement | null;\n const trigger =\n reference?.querySelector<HTMLElement>(FOCUSABLE_SELECTOR) ??\n reference;\n const li = trigger?.closest(\"li\");\n const nextSibling =\n li?.nextElementSibling instanceof HTMLElement\n ? li.nextElementSibling.querySelector<HTMLElement>(\n FOCUSABLE_SELECTOR,\n )\n : null;\n if (nextSibling) {\n onOpenChange(false);\n nextSibling.focus();\n }\n }\n break;\n }\n\n case \"ArrowLeft\": {\n event.preventDefault();\n const prevCol = pos.col - 1;\n if (prevCol >= 0) {\n grid[prevCol][0].focus();\n } else {\n focusTrigger(context);\n }\n break;\n }\n\n case \"Tab\": {\n event.preventDefault();\n if (event.shiftKey) {\n if (linearIndex === 0) {\n focusTrigger(context);\n } else {\n allItems[linearIndex - 1]?.focus();\n }\n } else {\n if (linearIndex === allItems.length - 1) {\n onOpenChange(false);\n focusNextAfterPanel(context, panel);\n } else {\n allItems[linearIndex + 1]?.focus();\n }\n }\n break;\n }\n\n case \"Home\": {\n event.preventDefault();\n grid[pos.col][0]?.focus();\n break;\n }\n\n case \"End\": {\n event.preventDefault();\n grid[pos.col][grid[pos.col].length - 1]?.focus();\n break;\n }\n\n default:\n break;\n }\n },\n },\n };\n }, [enabled, open, context, onOpenChange]);\n}\n\n/**\n * Focus the first navigable item inside a mega menu panel.\n * Retries with `requestAnimationFrame` if content has not yet rendered.\n */\nexport function focusFirstItem(panel: HTMLElement, attempt = 0): void {\n const grid = buildGrid(panel);\n const firstItem = grid[0]?.[0];\n\n if (firstItem) {\n firstItem.focus();\n return;\n }\n\n const view = panel.ownerDocument.defaultView;\n if (attempt < 3 && view) {\n view.requestAnimationFrame(() => focusFirstItem(panel, attempt + 1));\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltToolbarContentNext {\n display: flex;\n align-items: center;\n gap: var(--salt-spacing-100);\n min-width: 0;\n flex-shrink: 0;\n}\n\n.saltToolbarContentNext[data-position=\"start\"] {\n justify-content: flex-start;\n}\n\n.saltToolbarContentNext[data-position=\"center\"] {\n justify-content: center;\n}\n\n.saltToolbarContentNext[data-position=\"end\"] {\n justify-content: flex-end;\n}\n\n.saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=\"center\"],\n.saltToolbarContentNext[data-implicit] > .saltTooltrayNext[data-align=\"end\"] {\n margin-inline-start: 0;\n margin-inline-end: 0;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=ToolbarContentNext.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolbarContentNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}