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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/css/salt-lab.css +76 -49
  3. package/dist-cjs/index.js +12 -52
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/mega-menu/MegaMenu.js +8 -14
  6. package/dist-cjs/mega-menu/MegaMenu.js.map +1 -1
  7. package/dist-cjs/mega-menu/MegaMenuActions.css.js +6 -0
  8. package/dist-cjs/mega-menu/MegaMenuActions.css.js.map +1 -0
  9. package/dist-cjs/mega-menu/MegaMenuActions.js +33 -0
  10. package/dist-cjs/mega-menu/MegaMenuActions.js.map +1 -0
  11. package/dist-cjs/mega-menu/MegaMenuAside.css.js +6 -0
  12. package/dist-cjs/mega-menu/MegaMenuAside.css.js.map +1 -0
  13. package/dist-cjs/mega-menu/MegaMenuAside.js +33 -0
  14. package/dist-cjs/mega-menu/MegaMenuAside.js.map +1 -0
  15. package/dist-cjs/mega-menu/MegaMenuContent.css.js +1 -1
  16. package/dist-cjs/mega-menu/MegaMenuContent.js +2 -10
  17. package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -1
  18. package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -1
  19. package/dist-cjs/mega-menu/MegaMenuGroup.css.js +1 -1
  20. package/dist-cjs/mega-menu/MegaMenuGroup.js +10 -28
  21. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -1
  22. package/dist-cjs/mega-menu/MegaMenuGroupContext.js +17 -0
  23. package/dist-cjs/mega-menu/MegaMenuGroupContext.js.map +1 -0
  24. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +6 -0
  25. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  26. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js +39 -0
  27. package/dist-cjs/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  28. package/dist-cjs/mega-menu/MegaMenuGroups.css.js +6 -0
  29. package/dist-cjs/mega-menu/MegaMenuGroups.css.js.map +1 -0
  30. package/dist-cjs/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +8 -8
  31. package/dist-cjs/mega-menu/MegaMenuGroups.js.map +1 -0
  32. package/dist-cjs/mega-menu/MegaMenuList.css.js +6 -0
  33. package/dist-cjs/mega-menu/MegaMenuList.css.js.map +1 -0
  34. package/dist-cjs/mega-menu/MegaMenuList.js +43 -0
  35. package/dist-cjs/mega-menu/MegaMenuList.js.map +1 -0
  36. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +6 -0
  37. package/dist-cjs/mega-menu/MegaMenuListItem.css.js.map +1 -0
  38. package/dist-cjs/mega-menu/MegaMenuListItem.js +45 -0
  39. package/dist-cjs/mega-menu/MegaMenuListItem.js.map +1 -0
  40. package/dist-cjs/mega-menu/MegaMenuPanel.css.js +1 -1
  41. package/dist-cjs/mega-menu/MegaMenuPanel.js +27 -47
  42. package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -1
  43. package/dist-cjs/mega-menu/MegaMenuTrigger.js +16 -18
  44. package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -1
  45. package/dist-cjs/mega-menu/useMegaMenuNavigation.js +282 -0
  46. package/dist-cjs/mega-menu/useMegaMenuNavigation.js.map +1 -0
  47. package/dist-cjs/mega-menu/usePageMargin.js +22 -0
  48. package/dist-cjs/mega-menu/usePageMargin.js.map +1 -0
  49. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js +2 -1
  50. package/dist-cjs/toolbar-next/ToolbarNextOverflow.js.map +1 -1
  51. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js +21 -3
  52. package/dist-cjs/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -1
  53. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js +3 -25
  54. package/dist-cjs/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -1
  55. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js +9 -7
  56. package/dist-cjs/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  57. package/dist-es/index.js +6 -9
  58. package/dist-es/index.js.map +1 -1
  59. package/dist-es/mega-menu/MegaMenu.js +9 -15
  60. package/dist-es/mega-menu/MegaMenu.js.map +1 -1
  61. package/dist-es/mega-menu/MegaMenuActions.css.js +4 -0
  62. package/dist-es/mega-menu/MegaMenuActions.css.js.map +1 -0
  63. package/dist-es/mega-menu/MegaMenuActions.js +31 -0
  64. package/dist-es/mega-menu/MegaMenuActions.js.map +1 -0
  65. package/dist-es/mega-menu/MegaMenuAside.css.js +4 -0
  66. package/dist-es/mega-menu/MegaMenuAside.css.js.map +1 -0
  67. package/dist-es/mega-menu/MegaMenuAside.js +31 -0
  68. package/dist-es/mega-menu/MegaMenuAside.js.map +1 -0
  69. package/dist-es/mega-menu/MegaMenuContent.css.js +1 -1
  70. package/dist-es/mega-menu/MegaMenuContent.js +2 -10
  71. package/dist-es/mega-menu/MegaMenuContent.js.map +1 -1
  72. package/dist-es/mega-menu/MegaMenuContext.js.map +1 -1
  73. package/dist-es/mega-menu/MegaMenuGroup.css.js +1 -1
  74. package/dist-es/mega-menu/MegaMenuGroup.js +13 -31
  75. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -1
  76. package/dist-es/mega-menu/MegaMenuGroupContext.js +14 -0
  77. package/dist-es/mega-menu/MegaMenuGroupContext.js.map +1 -0
  78. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +4 -0
  79. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js.map +1 -0
  80. package/dist-es/mega-menu/MegaMenuGroupHeading.js +37 -0
  81. package/dist-es/mega-menu/MegaMenuGroupHeading.js.map +1 -0
  82. package/dist-es/mega-menu/MegaMenuGroups.css.js +4 -0
  83. package/dist-es/mega-menu/MegaMenuGroups.css.js.map +1 -0
  84. package/dist-es/mega-menu/{MegaMenuSection.js → MegaMenuGroups.js} +7 -7
  85. package/dist-es/mega-menu/MegaMenuGroups.js.map +1 -0
  86. package/dist-es/mega-menu/MegaMenuList.css.js +4 -0
  87. package/dist-es/mega-menu/MegaMenuList.css.js.map +1 -0
  88. package/dist-es/mega-menu/MegaMenuList.js +41 -0
  89. package/dist-es/mega-menu/MegaMenuList.js.map +1 -0
  90. package/dist-es/mega-menu/MegaMenuListItem.css.js +4 -0
  91. package/dist-es/mega-menu/MegaMenuListItem.css.js.map +1 -0
  92. package/dist-es/mega-menu/MegaMenuListItem.js +43 -0
  93. package/dist-es/mega-menu/MegaMenuListItem.js.map +1 -0
  94. package/dist-es/mega-menu/MegaMenuPanel.css.js +1 -1
  95. package/dist-es/mega-menu/MegaMenuPanel.js +30 -50
  96. package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -1
  97. package/dist-es/mega-menu/MegaMenuTrigger.js +14 -16
  98. package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -1
  99. package/dist-es/mega-menu/useMegaMenuNavigation.js +278 -0
  100. package/dist-es/mega-menu/useMegaMenuNavigation.js.map +1 -0
  101. package/dist-es/mega-menu/usePageMargin.js +20 -0
  102. package/dist-es/mega-menu/usePageMargin.js.map +1 -0
  103. package/dist-es/toolbar-next/ToolbarNextOverflow.js +2 -1
  104. package/dist-es/toolbar-next/ToolbarNextOverflow.js.map +1 -1
  105. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js +21 -3
  106. package/dist-es/toolbar-next/toolbarNextKeyboardUtils.js.map +1 -1
  107. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js +4 -26
  108. package/dist-es/toolbar-next/useToolbarNextKeyboardNavigation.js.map +1 -1
  109. package/dist-es/toolbar-next/useToolbarNextOverflow.js +9 -7
  110. package/dist-es/toolbar-next/useToolbarNextOverflow.js.map +1 -1
  111. package/dist-types/index.d.ts +0 -4
  112. package/dist-types/mega-menu/MegaMenu.d.ts +11 -2
  113. package/dist-types/mega-menu/MegaMenuActions.d.ts +10 -0
  114. package/dist-types/mega-menu/MegaMenuAside.d.ts +9 -0
  115. package/dist-types/mega-menu/MegaMenuContent.d.ts +2 -1
  116. package/dist-types/mega-menu/MegaMenuContext.d.ts +6 -7
  117. package/dist-types/mega-menu/MegaMenuGroup.d.ts +4 -3
  118. package/dist-types/mega-menu/MegaMenuGroupContext.d.ts +12 -0
  119. package/dist-types/mega-menu/MegaMenuGroupHeading.d.ts +13 -0
  120. package/dist-types/mega-menu/MegaMenuGroups.d.ts +8 -0
  121. package/dist-types/mega-menu/MegaMenuList.d.ts +16 -0
  122. package/dist-types/mega-menu/MegaMenuListItem.d.ts +25 -0
  123. package/dist-types/mega-menu/MegaMenuPanel.d.ts +2 -2
  124. package/dist-types/mega-menu/MegaMenuTrigger.d.ts +1 -0
  125. package/dist-types/mega-menu/index.d.ts +6 -4
  126. package/dist-types/mega-menu/useMegaMenuNavigation.d.ts +16 -0
  127. package/dist-types/mega-menu/usePageMargin.d.ts +6 -0
  128. package/dist-types/toolbar-next/useToolbarNextKeyboardNavigation.d.ts +1 -0
  129. package/package.json +2 -4
  130. package/dist-cjs/calendar/index.js +0 -61
  131. package/dist-cjs/calendar/index.js.map +0 -1
  132. package/dist-cjs/date-input/index.js +0 -23
  133. package/dist-cjs/date-input/index.js.map +0 -1
  134. package/dist-cjs/date-picker/index.js +0 -106
  135. package/dist-cjs/date-picker/index.js.map +0 -1
  136. package/dist-cjs/localization-provider/index.js +0 -26
  137. package/dist-cjs/localization-provider/index.js.map +0 -1
  138. package/dist-cjs/mega-menu/MegaMenuHeader.css.js +0 -6
  139. package/dist-cjs/mega-menu/MegaMenuHeader.css.js.map +0 -1
  140. package/dist-cjs/mega-menu/MegaMenuHeader.js +0 -26
  141. package/dist-cjs/mega-menu/MegaMenuHeader.js.map +0 -1
  142. package/dist-cjs/mega-menu/MegaMenuItem.css.js +0 -6
  143. package/dist-cjs/mega-menu/MegaMenuItem.css.js.map +0 -1
  144. package/dist-cjs/mega-menu/MegaMenuItem.js +0 -52
  145. package/dist-cjs/mega-menu/MegaMenuItem.js.map +0 -1
  146. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js +0 -6
  147. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  148. package/dist-cjs/mega-menu/MegaMenuItemContent.js +0 -23
  149. package/dist-cjs/mega-menu/MegaMenuItemContent.js.map +0 -1
  150. package/dist-cjs/mega-menu/MegaMenuSection.css.js +0 -6
  151. package/dist-cjs/mega-menu/MegaMenuSection.css.js.map +0 -1
  152. package/dist-cjs/mega-menu/MegaMenuSection.js.map +0 -1
  153. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +0 -209
  154. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  155. package/dist-cjs/utils/deprecatedExport.js +0 -30
  156. package/dist-cjs/utils/deprecatedExport.js.map +0 -1
  157. package/dist-es/calendar/index.js +0 -50
  158. package/dist-es/calendar/index.js.map +0 -1
  159. package/dist-es/date-input/index.js +0 -20
  160. package/dist-es/date-input/index.js.map +0 -1
  161. package/dist-es/date-picker/index.js +0 -85
  162. package/dist-es/date-picker/index.js.map +0 -1
  163. package/dist-es/localization-provider/index.js +0 -20
  164. package/dist-es/localization-provider/index.js.map +0 -1
  165. package/dist-es/mega-menu/MegaMenuHeader.css.js +0 -4
  166. package/dist-es/mega-menu/MegaMenuHeader.css.js.map +0 -1
  167. package/dist-es/mega-menu/MegaMenuHeader.js +0 -24
  168. package/dist-es/mega-menu/MegaMenuHeader.js.map +0 -1
  169. package/dist-es/mega-menu/MegaMenuItem.css.js +0 -4
  170. package/dist-es/mega-menu/MegaMenuItem.css.js.map +0 -1
  171. package/dist-es/mega-menu/MegaMenuItem.js +0 -50
  172. package/dist-es/mega-menu/MegaMenuItem.js.map +0 -1
  173. package/dist-es/mega-menu/MegaMenuItemContent.css.js +0 -4
  174. package/dist-es/mega-menu/MegaMenuItemContent.css.js.map +0 -1
  175. package/dist-es/mega-menu/MegaMenuItemContent.js +0 -21
  176. package/dist-es/mega-menu/MegaMenuItemContent.js.map +0 -1
  177. package/dist-es/mega-menu/MegaMenuSection.css.js +0 -4
  178. package/dist-es/mega-menu/MegaMenuSection.css.js.map +0 -1
  179. package/dist-es/mega-menu/MegaMenuSection.js.map +0 -1
  180. package/dist-es/mega-menu/useMegaMenuKeyboard.js +0 -205
  181. package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +0 -1
  182. package/dist-es/utils/deprecatedExport.js +0 -27
  183. package/dist-es/utils/deprecatedExport.js.map +0 -1
  184. package/dist-types/calendar/index.d.ts +0 -13
  185. package/dist-types/date-input/index.d.ts +0 -3
  186. package/dist-types/localization-provider/index.d.ts +0 -9
  187. package/dist-types/mega-menu/MegaMenuHeader.d.ts +0 -8
  188. package/dist-types/mega-menu/MegaMenuItem.d.ts +0 -12
  189. package/dist-types/mega-menu/MegaMenuItemContent.d.ts +0 -8
  190. package/dist-types/mega-menu/MegaMenuSection.d.ts +0 -8
  191. package/dist-types/mega-menu/useMegaMenuKeyboard.d.ts +0 -30
package/CHANGELOG.md CHANGED
@@ -1,5 +1,162 @@
1
1
  # @salt-ds/lab
2
2
 
3
+ ## 1.0.0-alpha.96
4
+
5
+ ### Minor Changes
6
+
7
+ - 248982a: Reworked `MegaMenu` for more semantic, accessible markup and more predictable
8
+ keyboard navigation.
9
+
10
+ - **Renamed `MegaMenuHeader` to `MegaMenuGroupHeading`.** It now renders a real heading (`<h3>` by default; set the level with `as`, e.g. `as="h2"`) instead of a `<div>`, so each group appears in the document outline for assistive technology.
11
+ - **Renamed `MegaMenuItem` to `MegaMenuListItem`.** It renders an `<a>` by default — pass a `render` element such as `react-router`'s `Link` — and accepts a `current` prop that sets `aria-current="page"` for the active page.
12
+ - **Added `MegaMenuList`.** Wrap a group's items in it so they are announced as a list; `MegaMenuListItem` can no longer be placed directly inside `MegaMenuGroup`.
13
+ - **Renamed `MegaMenuSupportingContent` to `MegaMenuAside`.** It now renders an `<aside>` landmark, making the supporting region discoverable to screen-reader users.
14
+ - **Renamed `MegaMenuSupportingActions` to `MegaMenuActions`.**
15
+ - **Added `MegaMenuContent`.** It is the center navigation region holding the groups and an optional `MegaMenuActions` band; `MegaMenuAside` sits beside it, positioned by source order.
16
+ - **Narrowed `MegaMenu`'s `placement` prop** to `"bottom" | "bottom-start" | "bottom-end"` (the new `MegaMenuPlacement` type).
17
+ - **Menu columns now adapt to the available width** instead of overflowing, keeping panels usable on narrower viewports.
18
+ - **Keyboard navigation is more predictable** between the columns, the actions row, and the trigger;
19
+
20
+ ```diff
21
+ <MegaMenuPanel aria-label="Solutions menu">
22
+ + <MegaMenuContent>
23
+ <MegaMenuGroups>
24
+ <MegaMenuGroup>
25
+ - <MegaMenuHeader>Financial services</MegaMenuHeader>
26
+ - <MegaMenuItem render={<Link to="/digital-banking" />}>Digital banking</MegaMenuItem>
27
+ + <MegaMenuGroupHeading>Financial services</MegaMenuGroupHeading>
28
+ + <MegaMenuList>
29
+ + <MegaMenuListItem render={<Link to="/digital-banking" />}>Digital banking</MegaMenuListItem>
30
+ + </MegaMenuList>
31
+ </MegaMenuGroup>
32
+ </MegaMenuGroups>
33
+ - <MegaMenuSupportingActions>
34
+ + <MegaMenuActions>
35
+ <Link href="#demo">Book a demo</Link>
36
+ - </MegaMenuSupportingActions>
37
+ + </MegaMenuActions>
38
+ + </MegaMenuContent>
39
+ - <MegaMenuSupportingContent>...</MegaMenuSupportingContent>
40
+ + <MegaMenuAside>...</MegaMenuAside>
41
+ </MegaMenuPanel>
42
+ ```
43
+
44
+ ### Patch Changes
45
+
46
+ - bab3b6c: Fixed `ToolbarNext` overflow calculations to preserve fractional browser measurements and avoid false overflow caused by subpixel rounding.
47
+ - Updated dependencies [1a48c1a]
48
+ - @salt-ds/core@1.64.1
49
+
50
+ ## 1.0.0-alpha.95
51
+
52
+ ### Minor Changes
53
+
54
+ - 8043fee: Updated `MegaMenu` with several API improvements:
55
+
56
+ - **Renamed `MegaMenuSection` to `MegaMenuGroups`.** The associated CSS custom property `--saltMegaMenuSection-columnWidth` has been renamed to `--saltMegaMenuGroups-columnWidth`.
57
+ - **Renamed `MegaMenuContent` to `MegaMenuSupportingContent`** to better convey its purpose as a region for supporting content alongside the menu groups.
58
+ - **Removed `MegaMenuItemContent`.** Pass the label directly to `MegaMenuItem`.
59
+ - **Added `MegaMenuSupportingActions`.** Use it to group one or more supporting action links beneath the menu groups in a `MegaMenuPanel`.
60
+ - **Added a `render` prop to `MegaMenuItem`** for integration with custom link or routing components (such as `react-router`'s `Link`).
61
+
62
+ ```diff
63
+ - <MegaMenuSection>
64
+ + <MegaMenuGroups>
65
+ <MegaMenuGroup>
66
+ <MegaMenuHeader>Financial services</MegaMenuHeader>
67
+ - <MegaMenuItem>
68
+ - <Icon aria-hidden />
69
+ - <MegaMenuItemContent>Digital banking</MegaMenuItemContent>
70
+ - </MegaMenuItem>
71
+ + <MegaMenuItem render={<Link to="/digital-banking" />}>
72
+ + <Icon aria-hidden />
73
+ + Digital banking
74
+ + </MegaMenuItem>
75
+ </MegaMenuGroup>
76
+ - </MegaMenuSection>
77
+ + </MegaMenuGroups>
78
+ - <MegaMenuContent>...</MegaMenuContent>
79
+ + <MegaMenuSupportingContent>...</MegaMenuSupportingContent>
80
+ + <MegaMenuSupportingActions>
81
+ + <Link href="#demo" IconComponent={ChevronRightIcon}>Book a demo</Link>
82
+ + </MegaMenuSupportingActions>
83
+ ```
84
+
85
+ - 8687aa7: Date-related components and utilities are no longer re-exported from `@salt-ds/lab`. Update the import source to `@salt-ds/date-components`.
86
+
87
+ The exact set of components depends on the selection variant you're using.
88
+
89
+ **Single-date selection** (`DateInputSingle`, single `DatePicker`, `DatePickerSingleInput`, `DatePickerSingleGridPanel`, single `Calendar`):
90
+
91
+ ```diff
92
+ import {
93
+ type DateInputSingleDetails,
94
+ DateInputSingle,
95
+ DatePicker,
96
+ DatePickerOverlay,
97
+ DatePickerSingleGridPanel,
98
+ DatePickerSingleInput,
99
+ DatePickerTrigger,
100
+ type SingleDateSelection,
101
+ Calendar,
102
+ CalendarGrid,
103
+ CalendarNavigation,
104
+ LocalizationProvider,
105
+ useLocalization,
106
+ - } from "@salt-ds/lab";
107
+ + } from "@salt-ds/date-components";
108
+ ```
109
+
110
+ **Range selection** (`DateInputRange`, range `DatePicker`, `DatePickerRangeInput`, `DatePickerRangePanel`, `DatePickerRangeGridPanel`, range `Calendar`):
111
+
112
+ ```diff
113
+ import {
114
+ type DateInputRangeDetails,
115
+ DateInputRange,
116
+ DatePicker,
117
+ DatePickerOverlay,
118
+ DatePickerRangeGridPanel,
119
+ DatePickerRangeInput,
120
+ DatePickerRangePanel,
121
+ DatePickerTrigger,
122
+ type DateRangeSelection,
123
+ Calendar,
124
+ CalendarGrid,
125
+ CalendarNavigation,
126
+ LocalizationProvider,
127
+ useLocalization,
128
+ - } from "@salt-ds/lab";
129
+ + } from "@salt-ds/date-components";
130
+ ```
131
+
132
+ **Offset selection** (offset `Calendar`; offset `DatePicker` built from the range input + range panel with `selectionVariant="offset"`):
133
+
134
+ ```diff
135
+ import {
136
+ type DateRangeSelection,
137
+ Calendar,
138
+ CalendarGrid,
139
+ CalendarNavigation,
140
+ DatePicker,
141
+ DatePickerOverlay,
142
+ DatePickerRangeInput,
143
+ DatePickerRangePanel,
144
+ DatePickerTrigger,
145
+ LocalizationProvider,
146
+ useLocalization,
147
+ - } from "@salt-ds/lab";
148
+ + } from "@salt-ds/date-components";
149
+ ```
150
+
151
+ ### Patch Changes
152
+
153
+ - 4314ca5: Fixed `ToolbarNext` focus handling when composing multiselect `ComboBox` controls, preserving pill keyboard navigation and preventing focus flashes when restoring toolbar focus.
154
+ - Updated dependencies [9729a10]
155
+ - Updated dependencies [52daa64]
156
+ - Updated dependencies [ed2779c]
157
+ - Updated dependencies [07e4d5d]
158
+ - @salt-ds/core@1.64.0
159
+
3
160
  ## 1.0.0-alpha.94
4
161
 
5
162
  ### Minor Changes
package/css/salt-lab.css CHANGED
@@ -1893,9 +1893,31 @@
1893
1893
  border-right: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-primary-borderColor);
1894
1894
  }
1895
1895
 
1896
+ /* src/mega-menu/MegaMenuActions.css */
1897
+ .saltMegaMenuActions {
1898
+ display: flex;
1899
+ flex-wrap: wrap;
1900
+ margin-block-start: auto;
1901
+ }
1902
+
1903
+ /* src/mega-menu/MegaMenuAside.css */
1904
+ .saltMegaMenuAside {
1905
+ flex: 0 0 auto;
1906
+ display: flex;
1907
+ flex-direction: column;
1908
+ padding: var(--salt-spacing-300);
1909
+ }
1910
+
1896
1911
  /* src/mega-menu/MegaMenuContent.css */
1897
1912
  .saltMegaMenuContent {
1913
+ display: flex;
1914
+ flex-direction: column;
1915
+ gap: var(--salt-spacing-300);
1898
1916
  padding: var(--salt-spacing-300);
1917
+ min-width: 0;
1918
+ flex: 0 1 auto;
1919
+ max-inline-size: var(--saltMegaMenuPanel-availableWidth);
1920
+ box-sizing: border-box;
1899
1921
  }
1900
1922
 
1901
1923
  /* src/mega-menu/MegaMenuGroup.css */
@@ -1903,37 +1925,49 @@
1903
1925
  display: flex;
1904
1926
  flex-direction: column;
1905
1927
  }
1906
- .saltMegaMenuGroup-list {
1907
- list-style: none;
1908
- margin: 0;
1909
- padding: 0;
1910
- display: flex;
1911
- gap: var(--salt-spacing-fixed-100);
1912
- flex-direction: column;
1913
- }
1914
1928
 
1915
- /* src/mega-menu/MegaMenuHeader.css */
1916
- .saltMegaMenuHeader-content {
1929
+ /* src/mega-menu/MegaMenuGroupHeading.css */
1930
+ .saltMegaMenuGroupHeading {
1917
1931
  display: flex;
1918
1932
  align-items: center;
1933
+ margin: 0 0 var(--salt-spacing-50);
1919
1934
  padding: var(--salt-spacing-50) var(--salt-spacing-100);
1935
+ border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);
1936
+ min-height: var(--salt-size-base);
1920
1937
  font-family: var(--salt-text-label-fontFamily);
1921
1938
  font-size: var(--salt-text-label-fontSize);
1922
1939
  font-weight: var(--salt-text-fontWeight-strong);
1923
1940
  line-height: var(--salt-text-label-lineHeight);
1924
- min-height: var(--salt-size-base);
1925
1941
  color: var(--salt-content-secondary-foreground);
1926
1942
  }
1927
- .saltMegaMenuHeader {
1928
- margin-bottom: var(--salt-spacing-50);
1929
- border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);
1943
+
1944
+ /* src/mega-menu/MegaMenuGroups.css */
1945
+ .saltMegaMenuGroups {
1946
+ align-self: start;
1947
+ display: grid;
1948
+ grid-template-columns: repeat(auto-fit, minmax(0, var(--saltMegaMenuGroups-columnWidth, 12rem)));
1949
+ gap: var(--salt-spacing-300);
1950
+ min-width: 0;
1951
+ max-inline-size: var(--saltMegaMenuPanel-availableWidth);
1952
+ }
1953
+
1954
+ /* src/mega-menu/MegaMenuList.css */
1955
+ .saltMegaMenuList {
1956
+ list-style: none;
1957
+ margin: 0;
1958
+ padding: 0;
1959
+ display: flex;
1960
+ gap: var(--salt-spacing-fixed-100);
1961
+ flex-direction: column;
1930
1962
  }
1931
1963
 
1932
- /* src/mega-menu/MegaMenuItem.css */
1933
- .saltMegaMenuItem {
1964
+ /* src/mega-menu/MegaMenuListItem.css */
1965
+ .saltMegaMenuListItem {
1934
1966
  list-style: none;
1967
+ display: flex;
1968
+ flex-direction: column;
1935
1969
  }
1936
- .saltMegaMenuItem > a {
1970
+ .saltMegaMenuListItem-wrapper {
1937
1971
  display: flex;
1938
1972
  padding: var(--salt-spacing-50) var(--salt-spacing-100);
1939
1973
  align-items: flex-start;
@@ -1944,26 +1978,37 @@
1944
1978
  box-sizing: border-box;
1945
1979
  gap: var(--salt-spacing-100);
1946
1980
  position: relative;
1947
- border-radius: var(--salt-palette-corner-weak);
1981
+ border-radius: var(--salt-palette-corner-weak, 0);
1948
1982
  text-decoration: none;
1983
+ border: none;
1984
+ font: inherit;
1985
+ text-align: start;
1949
1986
  }
1950
- .saltMegaMenuItem > a > .saltIcon {
1987
+ .saltMegaMenuListItem-wrapper > .saltIcon {
1951
1988
  display: flex;
1952
1989
  height: var(--salt-size-base);
1953
1990
  align-items: center;
1954
1991
  }
1955
- .saltMegaMenuItem > a:focus-visible {
1992
+ .saltMegaMenuListItem-content {
1993
+ flex: 1 0;
1994
+ margin: var(--salt-spacing-75) 0;
1995
+ font-family: var(--salt-text-fontFamily);
1996
+ font-size: var(--salt-text-fontSize);
1997
+ font-weight: var(--salt-text-fontWeight);
1998
+ line-height: var(--salt-text-lineHeight);
1999
+ }
2000
+ .saltMegaMenuListItem-wrapper:focus-visible {
1956
2001
  outline: var(--salt-focused-outline);
1957
2002
  outline-offset: calc(var(--salt-size-fixed-100) * -2);
1958
2003
  }
1959
- .saltMegaMenuItem > a:hover {
2004
+ .saltMegaMenuListItem-wrapper:hover:not(:focus-visible) {
1960
2005
  outline: none;
1961
- background: var(--salt-navigable-background-hover);
2006
+ background: var(--salt-overlayable-background-hover);
1962
2007
  }
1963
- .saltMegaMenuItem > a:active {
2008
+ .saltMegaMenuListItem-wrapper:active {
1964
2009
  background: var(--salt-navigable-accent-background-active);
1965
2010
  }
1966
- .saltMegaMenuItem > a:active::before {
2011
+ .saltMegaMenuListItem-wrapper:active::before {
1967
2012
  content: "";
1968
2013
  position: absolute;
1969
2014
  inset: 0;
@@ -1973,39 +2018,21 @@
1973
2018
  pointer-events: none;
1974
2019
  }
1975
2020
 
1976
- /* src/mega-menu/MegaMenuItemContent.css */
1977
- .saltMegaMenuItemContent {
1978
- flex: 1 0;
1979
- margin: var(--salt-spacing-75) 0;
1980
- font-family: var(--salt-text-fontFamily);
1981
- font-size: var(--salt-text-fontSize);
1982
- font-weight: var(--salt-text-fontWeight);
1983
- line-height: var(--salt-text-lineHeight);
1984
- }
1985
-
1986
2021
  /* src/mega-menu/MegaMenuPanel.css */
1987
2022
  .saltMegaMenuPanel {
2023
+ --saltMegaMenuPanel-availableWidth: calc(100vw - var(--salt-spacing-600));
1988
2024
  display: flex;
1989
- flex-wrap: wrap;
2025
+ align-items: stretch;
1990
2026
  inline-size: var(--saltMegaMenuPanel-inlineSize, fit-content);
1991
- max-inline-size: var(--saltMegaMenuPanel-maxInlineSize, var(--saltMegaMenuPanel-availableWidth, calc(100vw - var(--salt-spacing-600))));
1992
- max-height: 90%;
2027
+ max-inline-size: var(--saltMegaMenuPanel-maxInlineSize, var(--saltMegaMenuPanel-availableWidth));
2028
+ max-block-size: 90vh;
1993
2029
  overflow-x: hidden;
1994
2030
  overflow-y: auto;
1995
2031
  box-sizing: border-box;
1996
- border-radius: var(--salt-palette-corner);
2032
+ border-radius: var(--salt-palette-corner, 0);
1997
2033
  border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-container-primary-borderColor);
1998
2034
  background: var(--salt-container-primary-background);
1999
- box-shadow: var(--salt-overlayable-shadow-popout);
2000
- }
2001
-
2002
- /* src/mega-menu/MegaMenuSection.css */
2003
- .saltMegaMenuSection {
2004
- display: grid;
2005
- grid-template-columns: repeat(auto-fit, var(--saltMegaMenuSection-columnWidth, 12rem));
2006
- gap: var(--salt-spacing-300);
2007
- padding: var(--salt-spacing-300);
2008
- max-inline-size: var(--saltMegaMenuPanel-availableWidth, calc(100vw - var(--salt-spacing-600)));
2035
+ box-shadow: var(--salt-overlayable-shadow-modal);
2009
2036
  }
2010
2037
 
2011
2038
  /* src/menu-button/MenuButton.css */
@@ -3431,4 +3458,4 @@
3431
3458
  margin: calc(var(--salt-size-unit) / 2) 0;
3432
3459
  }
3433
3460
 
3434
- /* src/90f79509-9c05-4f28-ba07-621519e16301.css */
3461
+ /* src/e4ab0e63-880d-4ad2-9759-4acceca8a38d.css */
package/dist-cjs/index.js CHANGED
@@ -5,7 +5,6 @@ var Breadcrumb = require('./breadcrumbs/Breadcrumb.js');
5
5
  var Breadcrumbs = require('./breadcrumbs/Breadcrumbs.js');
6
6
  var ButtonBar = require('./button-bar/ButtonBar.js');
7
7
  var OrderedButton = require('./button-bar/OrderedButton.js');
8
- var index = require('./calendar/index.js');
9
8
  var CascadingMenu = require('./cascading-menu/CascadingMenu.js');
10
9
  var Color = require('./color-chooser/Color.js');
11
10
  var ColorChooser = require('./color-chooser/ColorChooser.js');
@@ -30,8 +29,6 @@ var ContactSecondaryInfo = require('./contact-details/ContactSecondaryInfo.js');
30
29
  var ContactTertiaryInfo = require('./contact-details/ContactTertiaryInfo.js');
31
30
  var MailLinkComponent = require('./contact-details/MailLinkComponent.js');
32
31
  var ContentStatus = require('./content-status/ContentStatus.js');
33
- var index$1 = require('./date-input/index.js');
34
- var index$2 = require('./date-picker/index.js');
35
32
  var DeckItem = require('./deck-item/DeckItem.js');
36
33
  var DeckLayout = require('./deck-layout/DeckLayout.js');
37
34
  var Dropdown = require('./dropdown/Dropdown.js');
@@ -78,18 +75,19 @@ var useOverflowDetection = require('./utils/useOverflowDetection.js');
78
75
  var useSlideSelection = require('./utils/useSlideSelection.js');
79
76
  var ListItemNext = require('./list-next/ListItemNext.js');
80
77
  var ListNext = require('./list-next/ListNext.js');
81
- var index$3 = require('./localization-provider/index.js');
82
78
  var Logo = require('./logo/Logo.js');
83
79
  var LogoImage = require('./logo/LogoImage.js');
84
80
  var LogoSeparator = require('./logo/LogoSeparator.js');
85
81
  var MegaMenu = require('./mega-menu/MegaMenu.js');
82
+ var MegaMenuActions = require('./mega-menu/MegaMenuActions.js');
83
+ var MegaMenuAside = require('./mega-menu/MegaMenuAside.js');
86
84
  var MegaMenuContent = require('./mega-menu/MegaMenuContent.js');
87
85
  var MegaMenuGroup = require('./mega-menu/MegaMenuGroup.js');
88
- var MegaMenuHeader = require('./mega-menu/MegaMenuHeader.js');
89
- var MegaMenuItem = require('./mega-menu/MegaMenuItem.js');
90
- var MegaMenuItemContent = require('./mega-menu/MegaMenuItemContent.js');
86
+ var MegaMenuGroupHeading = require('./mega-menu/MegaMenuGroupHeading.js');
87
+ var MegaMenuGroups = require('./mega-menu/MegaMenuGroups.js');
88
+ var MegaMenuList = require('./mega-menu/MegaMenuList.js');
89
+ var MegaMenuListItem = require('./mega-menu/MegaMenuListItem.js');
91
90
  var MegaMenuPanel = require('./mega-menu/MegaMenuPanel.js');
92
- var MegaMenuSection = require('./mega-menu/MegaMenuSection.js');
93
91
  var MegaMenuTrigger = require('./mega-menu/MegaMenuTrigger.js');
94
92
  var MenuButton = require('./menu-button/MenuButton.js');
95
93
  var Metric = require('./metric/Metric.js');
@@ -135,7 +133,6 @@ var ToolbarNext = require('./toolbar-next/ToolbarNext.js');
135
133
  var TooltrayNext = require('./toolbar-next/TooltrayNext.js');
136
134
  var ElectronWindow = require('./window/ElectronWindow.js');
137
135
  var WindowContext = require('./window/WindowContext.js');
138
- var dateComponents = require('@salt-ds/date-components');
139
136
 
140
137
 
141
138
 
@@ -145,16 +142,6 @@ exports.Breadcrumbs = Breadcrumbs.Breadcrumbs;
145
142
  exports.ButtonBar = ButtonBar.ButtonBar;
146
143
  exports.DefaultButtonsOrderByVariant = ButtonBar.DefaultButtonsOrderByVariant;
147
144
  exports.OrderedButton = OrderedButton.OrderedButton;
148
- exports.Calendar = index.Calendar;
149
- exports.CalendarGrid = index.CalendarGrid;
150
- exports.CalendarNavigation = index.CalendarNavigation;
151
- exports.CalendarWeekHeader = index.CalendarWeekHeader;
152
- exports.isDateRangeSelection = index.isDateRangeSelection;
153
- exports.useCalendar = index.useCalendar;
154
- exports.useCalendarDay = index.useCalendarDay;
155
- exports.useCalendarSelection = index.useCalendarSelection;
156
- exports.useCalendarSelectionDay = index.useCalendarSelectionDay;
157
- exports.useDateSelectionAnnouncer = index.useDateSelectionAnnouncer;
158
145
  exports.CascadingMenu = CascadingMenu.CascadingMenu;
159
146
  exports.Color = Color.Color;
160
147
  exports.ColorChooser = ColorChooser.ColorChooser;
@@ -186,21 +173,6 @@ exports.ContactSecondaryInfo = ContactSecondaryInfo.ContactSecondaryInfo;
186
173
  exports.ContactTertiaryInfo = ContactTertiaryInfo.ContactTertiaryInfo;
187
174
  exports.MailLinkComponent = MailLinkComponent.MailLinkComponent;
188
175
  exports.ContentStatus = ContentStatus.ContentStatus;
189
- exports.DateInputRange = index$1.DateInputRange;
190
- exports.DateInputSingle = index$1.DateInputSingle;
191
- exports.DatePicker = index$2.DatePicker;
192
- exports.DatePickerActions = index$2.DatePickerActions;
193
- exports.DatePickerHelperText = index$2.DatePickerHelperText;
194
- exports.DatePickerOverlay = index$2.DatePickerOverlay;
195
- exports.DatePickerOverlayProvider = index$2.DatePickerOverlayProvider;
196
- exports.DatePickerRangeGridPanel = index$2.DatePickerRangeGridPanel;
197
- exports.DatePickerRangeInput = index$2.DatePickerRangeInput;
198
- exports.DatePickerRangePanel = index$2.DatePickerRangePanel;
199
- exports.DatePickerSingleGridPanel = index$2.DatePickerSingleGridPanel;
200
- exports.DatePickerSingleInput = index$2.DatePickerSingleInput;
201
- exports.DatePickerTrigger = index$2.DatePickerTrigger;
202
- exports.useDatePickerContext = index$2.useDatePickerContext;
203
- exports.useDatePickerOverlay = index$2.useDatePickerOverlay;
204
176
  exports.DeckItem = DeckItem.DeckItem;
205
177
  exports.DeckLayout = DeckLayout.DeckLayout;
206
178
  exports.Dropdown = Dropdown.Dropdown;
@@ -242,19 +214,19 @@ exports.useOverflowDetection = useOverflowDetection.useOverflowDetection;
242
214
  exports.useSlideSelection = useSlideSelection.useSlideSelection;
243
215
  exports.ListItemNext = ListItemNext.ListItemNext;
244
216
  exports.ListNext = ListNext.ListNext;
245
- exports.LocalizationProvider = index$3.LocalizationProvider;
246
- exports.useLocalization = index$3.useLocalization;
247
217
  exports.Logo = Logo.Logo;
248
218
  exports.LogoImage = LogoImage.LogoImage;
249
219
  exports.LogoSeparator = LogoSeparator.LogoSeparator;
250
220
  exports.MegaMenu = MegaMenu.MegaMenu;
221
+ exports.MegaMenuActions = MegaMenuActions.MegaMenuActions;
222
+ exports.MegaMenuAside = MegaMenuAside.MegaMenuAside;
251
223
  exports.MegaMenuContent = MegaMenuContent.MegaMenuContent;
252
224
  exports.MegaMenuGroup = MegaMenuGroup.MegaMenuGroup;
253
- exports.MegaMenuHeader = MegaMenuHeader.MegaMenuHeader;
254
- exports.MegaMenuItem = MegaMenuItem.MegaMenuItem;
255
- exports.MegaMenuItemContent = MegaMenuItemContent.MegaMenuItemContent;
225
+ exports.MegaMenuGroupHeading = MegaMenuGroupHeading.MegaMenuGroupHeading;
226
+ exports.MegaMenuGroups = MegaMenuGroups.MegaMenuGroups;
227
+ exports.MegaMenuList = MegaMenuList.MegaMenuList;
228
+ exports.MegaMenuListItem = MegaMenuListItem.MegaMenuListItem;
256
229
  exports.MegaMenuPanel = MegaMenuPanel.MegaMenuPanel;
257
- exports.MegaMenuSection = MegaMenuSection.MegaMenuSection;
258
230
  exports.MegaMenuTrigger = MegaMenuTrigger.MegaMenuTrigger;
259
231
  exports.MenuButton = MenuButton.MenuButton;
260
232
  exports.Metric = Metric.Metric;
@@ -328,16 +300,4 @@ exports.Window = WindowContext.Window;
328
300
  exports.WindowContext = WindowContext.WindowContext;
329
301
  exports.isDesktop = WindowContext.isDesktop;
330
302
  exports.useWindow = WindowContext.useWindow;
331
- Object.defineProperty(exports, "DateRangeSelectionContext", {
332
- enumerable: true,
333
- get: function () { return dateComponents.DateRangeSelectionContext; }
334
- });
335
- Object.defineProperty(exports, "LocalizationProviderContext", {
336
- enumerable: true,
337
- get: function () { return dateComponents.LocalizationProviderContext; }
338
- });
339
- Object.defineProperty(exports, "SingleDateSelectionContext", {
340
- enumerable: true,
341
- get: function () { return dateComponents.SingleDateSelectionContext; }
342
- });
343
303
  //# 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,7 +5,7 @@ var react$1 = require('@floating-ui/react');
5
5
  var core = require('@salt-ds/core');
6
6
  var react = require('react');
7
7
  var MegaMenuContext = require('./MegaMenuContext.js');
8
- var useMegaMenuKeyboard = require('./useMegaMenuKeyboard.js');
8
+ var useMegaMenuNavigation = require('./useMegaMenuNavigation.js');
9
9
 
10
10
  function MegaMenu({
11
11
  children,
@@ -22,12 +22,12 @@ function MegaMenu({
22
22
  });
23
23
  const [reference, setReference] = react.useState(null);
24
24
  const [floating, setFloating] = react.useState(null);
25
- const [focusFirstItemOnOpen, setFocusFirstItemOnOpen] = react.useState(false);
26
- const [panelId, setPanelId] = react.useState(void 0);
25
+ const focusFirstItemOnOpenRef = react.useRef(false);
26
+ const [panelId, setPanelId] = react.useState();
27
27
  const setOpen = react.useCallback(
28
28
  (newOpen) => {
29
29
  if (!newOpen) {
30
- setFocusFirstItemOnOpen(false);
30
+ focusFirstItemOnOpenRef.current = false;
31
31
  }
32
32
  setOpenState(newOpen);
33
33
  onOpenChange == null ? void 0 : onOpenChange(newOpen);
@@ -39,11 +39,11 @@ function MegaMenu({
39
39
  onOpenChange: setOpen,
40
40
  elements: { reference, floating }
41
41
  });
42
- const megaMenuKeyboard = useMegaMenuKeyboard.useMegaMenuKeyboard(floatingRootContext);
42
+ const megaMenuNavigation = useMegaMenuNavigation.useMegaMenuNavigation(floatingRootContext);
43
43
  const { getReferenceProps, getFloatingProps } = react$1.useInteractions([
44
44
  react$1.useClick(floatingRootContext),
45
45
  react$1.useDismiss(floatingRootContext),
46
- megaMenuKeyboard
46
+ megaMenuNavigation
47
47
  ]);
48
48
  const contextValue = react.useMemo(
49
49
  () => ({
@@ -55,8 +55,7 @@ function MegaMenu({
55
55
  setFloating,
56
56
  setReference,
57
57
  setOpen,
58
- focusFirstItemOnOpen,
59
- setFocusFirstItemOnOpen,
58
+ focusFirstItemOnOpenRef,
60
59
  panelId,
61
60
  setPanelId
62
61
  }),
@@ -66,13 +65,8 @@ function MegaMenu({
66
65
  placement,
67
66
  getFloatingProps,
68
67
  getReferenceProps,
69
- setFloating,
70
- setReference,
71
68
  setOpen,
72
- focusFirstItemOnOpen,
73
- setFocusFirstItemOnOpen,
74
- panelId,
75
- setPanelId
69
+ panelId
76
70
  ]
77
71
  );
78
72
  return /* @__PURE__ */ jsxRuntime.jsx(MegaMenuContext.MegaMenuContext.Provider, { value: contextValue, children });
@@ -1 +1 @@
1
- {"version":3,"file":"MegaMenu.js","sources":["../src/mega-menu/MegaMenu.tsx"],"sourcesContent":["import {\n type Placement,\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useCallback, useMemo, useState } from \"react\";\nimport { MegaMenuContext } from \"./MegaMenuContext\";\nimport { useMegaMenuKeyboard } from \"./useMegaMenuKeyboard\";\n\nexport interface MegaMenuProps {\n /**\n * The content of the mega menu, typically `MegaMenuTrigger` and `MegaMenuPanel`.\n */\n children?: ReactNode;\n /**\n * Whether the mega menu is open. Use for controlled mode.\n */\n open?: boolean;\n /**\n * Whether the mega menu is initially open. Use for uncontrolled mode.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Callback fired when the open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The placement of the mega menu panel relative to the trigger.\n * @default \"bottom\"\n */\n placement?: Placement;\n}\n\nexport function MegaMenu({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n placement = \"bottom\",\n}: MegaMenuProps) {\n const [openState, setOpenState] = useControlled({\n controlled: open,\n default: defaultOpen,\n name: \"MegaMenu\",\n state: \"open\",\n });\n\n const [reference, setReference] = useState<HTMLElement | null>(null);\n const [floating, setFloating] = useState<HTMLElement | null>(null);\n const [focusFirstItemOnOpen, setFocusFirstItemOnOpen] = useState(false);\n const [panelId, setPanelId] = useState<string | undefined>(undefined);\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (!newOpen) {\n setFocusFirstItemOnOpen(false);\n }\n setOpenState(newOpen);\n onOpenChange?.(newOpen);\n },\n [onOpenChange],\n );\n\n const floatingRootContext = useFloatingRootContext({\n open: openState,\n onOpenChange: setOpen,\n elements: { reference, floating },\n });\n\n const megaMenuKeyboard = useMegaMenuKeyboard(floatingRootContext);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useClick(floatingRootContext),\n useDismiss(floatingRootContext),\n megaMenuKeyboard,\n ]);\n\n const contextValue = useMemo(\n () => ({\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setFloating,\n setReference,\n setOpen,\n focusFirstItemOnOpen,\n setFocusFirstItemOnOpen,\n panelId,\n setPanelId,\n }),\n [\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setFloating,\n setReference,\n setOpen,\n focusFirstItemOnOpen,\n setFocusFirstItemOnOpen,\n panelId,\n setPanelId,\n ],\n );\n\n return (\n <MegaMenuContext.Provider value={contextValue}>\n {children}\n </MegaMenuContext.Provider>\n );\n}\n"],"names":["useControlled","useState","useCallback","useFloatingRootContext","useMegaMenuKeyboard","useInteractions","useClick","useDismiss","useMemo","MegaMenuContext"],"mappings":";;;;;;;;;AAqCO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,kBAAA,CAAc;AAAA,IAC9C,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,WAAA;AAAA,IACT,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAA6B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAA6B,IAAI,CAAA;AACjE,EAAA,MAAM,CAAC,oBAAA,EAAsB,uBAAuB,CAAA,GAAIA,eAAS,KAAK,CAAA;AACtE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAA6B,MAAS,CAAA;AAEpE,EAAA,MAAM,OAAA,GAAUC,iBAAA;AAAA,IACd,CAAC,OAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,uBAAA,CAAwB,KAAK,CAAA;AAAA,MAC/B;AACA,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,OAAA,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,sBAAsBC,8BAAA,CAAuB;AAAA,IACjD,IAAA,EAAM,SAAA;AAAA,IACN,YAAA,EAAc,OAAA;AAAA,IACd,QAAA,EAAU,EAAE,SAAA,EAAW,QAAA;AAAS,GACjC,CAAA;AAED,EAAA,MAAM,gBAAA,GAAmBC,wCAAoB,mBAAmB,CAAA;AAEhE,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAIC,uBAAA,CAAgB;AAAA,IAC9DC,iBAAS,mBAAmB,CAAA;AAAA,IAC5BC,mBAAW,mBAAmB,CAAA;AAAA,IAC9B;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,oBAAA;AAAA,MACA,uBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,oBAAA;AAAA,MACA,uBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,sCACGC,+BAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,cAC9B,QAAA,EACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"MegaMenu.js","sources":["../src/mega-menu/MegaMenu.tsx"],"sourcesContent":["import {\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n} from \"@floating-ui/react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { type ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\nimport { MegaMenuContext } from \"./MegaMenuContext\";\nimport { useMegaMenuNavigation } from \"./useMegaMenuNavigation\";\n\n/**\n * Supported placements for the mega menu panel.\n */\nexport type MegaMenuPlacement = \"bottom\" | \"bottom-start\" | \"bottom-end\";\n\nexport interface MegaMenuProps {\n /**\n * The content of the mega menu, typically `MegaMenuTrigger` and `MegaMenuPanel`.\n */\n children?: ReactNode;\n /**\n * Whether the mega menu is open. Use for controlled mode.\n */\n open?: boolean;\n /**\n * Whether the mega menu is initially open. Use for uncontrolled mode.\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Callback fired when the open state changes.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * The placement of the mega menu panel relative to the trigger.\n * @default \"bottom\"\n */\n placement?: MegaMenuPlacement;\n}\n\n/**\n * Root of a mega menu, coordinating its trigger and panel.\n *\n * Not intended to be nested inside another floating overlay (e.g. a dialog or\n * popover): the mega menu does not participate in floating-ui's `FloatingTree`\n */\nexport function MegaMenu({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n placement = \"bottom\",\n}: MegaMenuProps) {\n const [openState, setOpenState] = useControlled({\n controlled: open,\n default: defaultOpen,\n name: \"MegaMenu\",\n state: \"open\",\n });\n\n const [reference, setReference] = useState<HTMLElement | null>(null);\n const [floating, setFloating] = useState<HTMLElement | null>(null);\n const focusFirstItemOnOpenRef = useRef(false);\n const [panelId, setPanelId] = useState<string>();\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (!newOpen) {\n focusFirstItemOnOpenRef.current = false;\n }\n setOpenState(newOpen);\n onOpenChange?.(newOpen);\n },\n [onOpenChange],\n );\n\n const floatingRootContext = useFloatingRootContext({\n open: openState,\n onOpenChange: setOpen,\n elements: { reference, floating },\n });\n\n const megaMenuNavigation = useMegaMenuNavigation(floatingRootContext);\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useClick(floatingRootContext),\n useDismiss(floatingRootContext),\n megaMenuNavigation,\n ]);\n\n const contextValue = useMemo(\n () => ({\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setFloating,\n setReference,\n setOpen,\n focusFirstItemOnOpenRef,\n panelId,\n setPanelId,\n }),\n [\n openState,\n floatingRootContext,\n placement,\n getFloatingProps,\n getReferenceProps,\n setOpen,\n panelId,\n ],\n );\n\n return (\n <MegaMenuContext.Provider value={contextValue}>\n {children}\n </MegaMenuContext.Provider>\n );\n}\n"],"names":["useControlled","useState","useRef","useCallback","useFloatingRootContext","useMegaMenuNavigation","useInteractions","useClick","useDismiss","useMemo","MegaMenuContext"],"mappings":";;;;;;;;;AA+CO,SAAS,QAAA,CAAS;AAAA,EACvB,QAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,YAAA;AAAA,EACA,SAAA,GAAY;AACd,CAAA,EAAkB;AAChB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,kBAAA,CAAc;AAAA,IAC9C,UAAA,EAAY,IAAA;AAAA,IACZ,OAAA,EAAS,WAAA;AAAA,IACT,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AAED,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,eAA6B,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAA6B,IAAI,CAAA;AACjE,EAAA,MAAM,uBAAA,GAA0BC,aAAO,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,cAAA,EAAiB;AAE/C,EAAA,MAAM,OAAA,GAAUE,iBAAA;AAAA,IACd,CAAC,OAAA,KAAqB;AACpB,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,uBAAA,CAAwB,OAAA,GAAU,KAAA;AAAA,MACpC;AACA,MAAA,YAAA,CAAa,OAAO,CAAA;AACpB,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAe,OAAA,CAAA;AAAA,IACjB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAEA,EAAA,MAAM,sBAAsBC,8BAAA,CAAuB;AAAA,IACjD,IAAA,EAAM,SAAA;AAAA,IACN,YAAA,EAAc,OAAA;AAAA,IACd,QAAA,EAAU,EAAE,SAAA,EAAW,QAAA;AAAS,GACjC,CAAA;AAED,EAAA,MAAM,kBAAA,GAAqBC,4CAAsB,mBAAmB,CAAA;AAEpE,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAIC,uBAAA,CAAgB;AAAA,IAC9DC,iBAAS,mBAAmB,CAAA;AAAA,IAC5BC,mBAAW,mBAAmB,CAAA;AAAA,IAC9B;AAAA,GACD,CAAA;AAED,EAAA,MAAM,YAAA,GAAeC,aAAA;AAAA,IACnB,OAAO;AAAA,MACL,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,uBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,SAAA;AAAA,MACA,mBAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,sCACGC,+BAAA,CAAgB,QAAA,EAAhB,EAAyB,KAAA,EAAO,cAC9B,QAAA,EACH,CAAA;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuActions {\n display: flex;\n flex-wrap: wrap;\n margin-block-start: auto;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuActions.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuActions.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var core = require('@salt-ds/core');
5
+ var styles = require('@salt-ds/styles');
6
+ var window = require('@salt-ds/window');
7
+ var clsx = require('clsx');
8
+ var react = require('react');
9
+ var MegaMenuActions$1 = require('./MegaMenuActions.css.js');
10
+
11
+ const withBaseName = core.makePrefixer("saltMegaMenuActions");
12
+ const MegaMenuActions = react.forwardRef(
13
+ function MegaMenuActions2({ className, ...rest }, ref) {
14
+ const targetWindow = window.useWindow();
15
+ styles.useComponentCssInjection({
16
+ testId: "salt-mega-menu-actions",
17
+ css: MegaMenuActions$1,
18
+ window: targetWindow
19
+ });
20
+ return /* @__PURE__ */ jsxRuntime.jsx(
21
+ "div",
22
+ {
23
+ "data-mega-menu-actions": "",
24
+ className: clsx.clsx(withBaseName(), className),
25
+ ref,
26
+ ...rest
27
+ }
28
+ );
29
+ }
30
+ );
31
+
32
+ exports.MegaMenuActions = MegaMenuActions;
33
+ //# sourceMappingURL=MegaMenuActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuActions.js","sources":["../src/mega-menu/MegaMenuActions.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 megaMenuActionsCss from \"./MegaMenuActions.css\";\n\nconst withBaseName = makePrefixer(\"saltMegaMenuActions\");\n\nexport interface MegaMenuActionsProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the actions. Place `MegaMenuActions` inside\n * `MegaMenuContent`, after `MegaMenuGroups`; it renders as a band beneath the\n * groups, spanning their width.\n */\n children?: ReactNode;\n}\n\nexport const MegaMenuActions = forwardRef<HTMLDivElement, MegaMenuActionsProps>(\n function MegaMenuActions({ className, ...rest }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-mega-menu-actions\",\n css: megaMenuActionsCss,\n window: targetWindow,\n });\n\n return (\n <div\n data-mega-menu-actions=\"\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MegaMenuActions","useWindow","useComponentCssInjection","megaMenuActionsCss","jsx","clsx"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA;AAWhD,MAAM,eAAA,GAAkBC,gBAAA;AAAA,EAC7B,SAASC,gBAAAA,CAAgB,EAAE,WAAW,GAAG,IAAA,IAAQ,GAAA,EAAK;AACpD,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,wBAAA;AAAA,MACR,GAAA,EAAKC,iBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,wBAAA,EAAuB,EAAA;AAAA,QACvB,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltMegaMenuAside {\n flex: 0 0 auto;\n display: flex;\n flex-direction: column;\n padding: var(--salt-spacing-300);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=MegaMenuAside.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MegaMenuAside.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}