@salt-ds/core 1.60.0 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/css/salt-core.css +492 -1
  3. package/dist-cjs/index.js +32 -0
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/navigation-item/NavigationItem.js +2 -0
  6. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  7. package/dist-cjs/rating/Rating.css.js +6 -0
  8. package/dist-cjs/rating/Rating.css.js.map +1 -0
  9. package/dist-cjs/rating/Rating.js +140 -0
  10. package/dist-cjs/rating/Rating.js.map +1 -0
  11. package/dist-cjs/rating/RatingItem.css.js +6 -0
  12. package/dist-cjs/rating/RatingItem.css.js.map +1 -0
  13. package/dist-cjs/rating/RatingItem.js +75 -0
  14. package/dist-cjs/rating/RatingItem.js.map +1 -0
  15. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js +22 -20
  16. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  17. package/dist-cjs/side-panel/SidePanel.css.js +6 -0
  18. package/dist-cjs/side-panel/SidePanel.css.js.map +1 -0
  19. package/dist-cjs/side-panel/SidePanel.js +205 -0
  20. package/dist-cjs/side-panel/SidePanel.js.map +1 -0
  21. package/dist-cjs/side-panel/SidePanelCloseButton.js +44 -0
  22. package/dist-cjs/side-panel/SidePanelCloseButton.js.map +1 -0
  23. package/dist-cjs/side-panel/SidePanelContent.css.js +6 -0
  24. package/dist-cjs/side-panel/SidePanelContent.css.js.map +1 -0
  25. package/dist-cjs/side-panel/SidePanelContent.js +70 -0
  26. package/dist-cjs/side-panel/SidePanelContent.js.map +1 -0
  27. package/dist-cjs/side-panel/SidePanelHeader.css.js +6 -0
  28. package/dist-cjs/side-panel/SidePanelHeader.css.js.map +1 -0
  29. package/dist-cjs/side-panel/SidePanelHeader.js +30 -0
  30. package/dist-cjs/side-panel/SidePanelHeader.js.map +1 -0
  31. package/dist-cjs/side-panel/SidePanelProvider.js +83 -0
  32. package/dist-cjs/side-panel/SidePanelProvider.js.map +1 -0
  33. package/dist-cjs/side-panel/SidePanelTitle.css.js +6 -0
  34. package/dist-cjs/side-panel/SidePanelTitle.css.js.map +1 -0
  35. package/dist-cjs/side-panel/SidePanelTitle.js +60 -0
  36. package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -0
  37. package/dist-cjs/side-panel/SidePanelTrigger.js +43 -0
  38. package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -0
  39. package/dist-cjs/side-panel/internal/SidePanelContext.js +38 -0
  40. package/dist-cjs/side-panel/internal/SidePanelContext.js.map +1 -0
  41. package/dist-cjs/side-panel/internal/useIsScrollable.js +50 -0
  42. package/dist-cjs/side-panel/internal/useIsScrollable.js.map +1 -0
  43. package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js +214 -0
  44. package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
  45. package/dist-cjs/side-panel/useSidePanel.js +49 -0
  46. package/dist-cjs/side-panel/useSidePanel.js.map +1 -0
  47. package/dist-cjs/tabs/Tab.css.js +6 -0
  48. package/dist-cjs/tabs/Tab.css.js.map +1 -0
  49. package/dist-cjs/tabs/Tab.js +211 -0
  50. package/dist-cjs/tabs/Tab.js.map +1 -0
  51. package/dist-cjs/tabs/TabAction.js +63 -0
  52. package/dist-cjs/tabs/TabAction.js.map +1 -0
  53. package/dist-cjs/tabs/TabBar.css.js +6 -0
  54. package/dist-cjs/tabs/TabBar.css.js.map +1 -0
  55. package/dist-cjs/tabs/TabBar.js +45 -0
  56. package/dist-cjs/tabs/TabBar.js.map +1 -0
  57. package/dist-cjs/tabs/TabList.css.js +6 -0
  58. package/dist-cjs/tabs/TabList.css.js.map +1 -0
  59. package/dist-cjs/tabs/TabList.js +281 -0
  60. package/dist-cjs/tabs/TabList.js.map +1 -0
  61. package/dist-cjs/tabs/TabPanel.css.js +6 -0
  62. package/dist-cjs/tabs/TabPanel.css.js.map +1 -0
  63. package/dist-cjs/tabs/TabPanel.js +98 -0
  64. package/dist-cjs/tabs/TabPanel.js.map +1 -0
  65. package/dist-cjs/tabs/TabTrigger.css.js +6 -0
  66. package/dist-cjs/tabs/TabTrigger.css.js.map +1 -0
  67. package/dist-cjs/tabs/TabTrigger.js +188 -0
  68. package/dist-cjs/tabs/TabTrigger.js.map +1 -0
  69. package/dist-cjs/tabs/Tabs.css.js +6 -0
  70. package/dist-cjs/tabs/Tabs.css.js.map +1 -0
  71. package/dist-cjs/tabs/Tabs.js +200 -0
  72. package/dist-cjs/tabs/Tabs.js.map +1 -0
  73. package/dist-cjs/tabs/internal/contexts/TabContext.js +26 -0
  74. package/dist-cjs/tabs/internal/contexts/TabContext.js.map +1 -0
  75. package/dist-cjs/tabs/internal/contexts/TabListLayoutContext.js +19 -0
  76. package/dist-cjs/tabs/internal/contexts/TabListLayoutContext.js.map +1 -0
  77. package/dist-cjs/tabs/internal/contexts/TabSlotRegistryContext.js +22 -0
  78. package/dist-cjs/tabs/internal/contexts/TabSlotRegistryContext.js.map +1 -0
  79. package/dist-cjs/tabs/internal/contexts/TabsContext.js +50 -0
  80. package/dist-cjs/tabs/internal/contexts/TabsContext.js.map +1 -0
  81. package/dist-cjs/tabs/internal/hooks/useFocusWithRetry.js +64 -0
  82. package/dist-cjs/tabs/internal/hooks/useFocusWithRetry.js.map +1 -0
  83. package/dist-cjs/tabs/internal/hooks/useTabListRecovery.js +76 -0
  84. package/dist-cjs/tabs/internal/hooks/useTabListRecovery.js.map +1 -0
  85. package/dist-cjs/tabs/internal/hooks/useTabRemovalHandler.js +165 -0
  86. package/dist-cjs/tabs/internal/hooks/useTabRemovalHandler.js.map +1 -0
  87. package/dist-cjs/tabs/internal/hooks/useTabSelectionFocus.js +87 -0
  88. package/dist-cjs/tabs/internal/hooks/useTabSelectionFocus.js.map +1 -0
  89. package/dist-cjs/tabs/internal/overflow/TabOverflowList.css.js +6 -0
  90. package/dist-cjs/tabs/internal/overflow/TabOverflowList.css.js.map +1 -0
  91. package/dist-cjs/tabs/internal/overflow/TabOverflowList.js +245 -0
  92. package/dist-cjs/tabs/internal/overflow/TabOverflowList.js.map +1 -0
  93. package/dist-cjs/tabs/internal/overflow/TabSlot.js +30 -0
  94. package/dist-cjs/tabs/internal/overflow/TabSlot.js.map +1 -0
  95. package/dist-cjs/tabs/internal/overflow/overflowMath.js +86 -0
  96. package/dist-cjs/tabs/internal/overflow/overflowMath.js.map +1 -0
  97. package/dist-cjs/tabs/internal/overflow/useOverflow.js +273 -0
  98. package/dist-cjs/tabs/internal/overflow/useOverflow.js.map +1 -0
  99. package/dist-cjs/tabs/internal/overflow/useOverflowLayoutState.js +99 -0
  100. package/dist-cjs/tabs/internal/overflow/useOverflowLayoutState.js.map +1 -0
  101. package/dist-cjs/tabs/internal/overflow/useOverflowSelectionState.js +68 -0
  102. package/dist-cjs/tabs/internal/overflow/useOverflowSelectionState.js.map +1 -0
  103. package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js +92 -0
  104. package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -0
  105. package/dist-cjs/tabs/internal/overflow/widthMeasurement.js +42 -0
  106. package/dist-cjs/tabs/internal/overflow/widthMeasurement.js.map +1 -0
  107. package/dist-cjs/tabs/internal/registry/useCollection.js +197 -0
  108. package/dist-cjs/tabs/internal/registry/useCollection.js.map +1 -0
  109. package/dist-cjs/tabs/internal/registry/useRenderedTabsRegistry.js +206 -0
  110. package/dist-cjs/tabs/internal/registry/useRenderedTabsRegistry.js.map +1 -0
  111. package/dist-cjs/tabs/internal/utils/domUtils.js +13 -0
  112. package/dist-cjs/tabs/internal/utils/domUtils.js.map +1 -0
  113. package/dist-es/index.js +16 -0
  114. package/dist-es/index.js.map +1 -1
  115. package/dist-es/navigation-item/NavigationItem.js +2 -0
  116. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  117. package/dist-es/rating/Rating.css.js +4 -0
  118. package/dist-es/rating/Rating.css.js.map +1 -0
  119. package/dist-es/rating/Rating.js +138 -0
  120. package/dist-es/rating/Rating.js.map +1 -0
  121. package/dist-es/rating/RatingItem.css.js +4 -0
  122. package/dist-es/rating/RatingItem.css.js.map +1 -0
  123. package/dist-es/rating/RatingItem.js +73 -0
  124. package/dist-es/rating/RatingItem.js.map +1 -0
  125. package/dist-es/semantic-icon-provider/SemanticIconProvider.js +23 -21
  126. package/dist-es/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  127. package/dist-es/side-panel/SidePanel.css.js +4 -0
  128. package/dist-es/side-panel/SidePanel.css.js.map +1 -0
  129. package/dist-es/side-panel/SidePanel.js +203 -0
  130. package/dist-es/side-panel/SidePanel.js.map +1 -0
  131. package/dist-es/side-panel/SidePanelCloseButton.js +42 -0
  132. package/dist-es/side-panel/SidePanelCloseButton.js.map +1 -0
  133. package/dist-es/side-panel/SidePanelContent.css.js +4 -0
  134. package/dist-es/side-panel/SidePanelContent.css.js.map +1 -0
  135. package/dist-es/side-panel/SidePanelContent.js +68 -0
  136. package/dist-es/side-panel/SidePanelContent.js.map +1 -0
  137. package/dist-es/side-panel/SidePanelHeader.css.js +4 -0
  138. package/dist-es/side-panel/SidePanelHeader.css.js.map +1 -0
  139. package/dist-es/side-panel/SidePanelHeader.js +28 -0
  140. package/dist-es/side-panel/SidePanelHeader.js.map +1 -0
  141. package/dist-es/side-panel/SidePanelProvider.js +81 -0
  142. package/dist-es/side-panel/SidePanelProvider.js.map +1 -0
  143. package/dist-es/side-panel/SidePanelTitle.css.js +4 -0
  144. package/dist-es/side-panel/SidePanelTitle.css.js.map +1 -0
  145. package/dist-es/side-panel/SidePanelTitle.js +58 -0
  146. package/dist-es/side-panel/SidePanelTitle.js.map +1 -0
  147. package/dist-es/side-panel/SidePanelTrigger.js +41 -0
  148. package/dist-es/side-panel/SidePanelTrigger.js.map +1 -0
  149. package/dist-es/side-panel/internal/SidePanelContext.js +35 -0
  150. package/dist-es/side-panel/internal/SidePanelContext.js.map +1 -0
  151. package/dist-es/side-panel/internal/useIsScrollable.js +48 -0
  152. package/dist-es/side-panel/internal/useIsScrollable.js.map +1 -0
  153. package/dist-es/side-panel/internal/useSidePanelTabOrder.js +212 -0
  154. package/dist-es/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
  155. package/dist-es/side-panel/useSidePanel.js +47 -0
  156. package/dist-es/side-panel/useSidePanel.js.map +1 -0
  157. package/dist-es/tabs/Tab.css.js +4 -0
  158. package/dist-es/tabs/Tab.css.js.map +1 -0
  159. package/dist-es/tabs/Tab.js +209 -0
  160. package/dist-es/tabs/Tab.js.map +1 -0
  161. package/dist-es/tabs/TabAction.js +61 -0
  162. package/dist-es/tabs/TabAction.js.map +1 -0
  163. package/dist-es/tabs/TabBar.css.js +4 -0
  164. package/dist-es/tabs/TabBar.css.js.map +1 -0
  165. package/dist-es/tabs/TabBar.js +43 -0
  166. package/dist-es/tabs/TabBar.js.map +1 -0
  167. package/dist-es/tabs/TabList.css.js +4 -0
  168. package/dist-es/tabs/TabList.css.js.map +1 -0
  169. package/dist-es/tabs/TabList.js +279 -0
  170. package/dist-es/tabs/TabList.js.map +1 -0
  171. package/dist-es/tabs/TabPanel.css.js +4 -0
  172. package/dist-es/tabs/TabPanel.css.js.map +1 -0
  173. package/dist-es/tabs/TabPanel.js +96 -0
  174. package/dist-es/tabs/TabPanel.js.map +1 -0
  175. package/dist-es/tabs/TabTrigger.css.js +4 -0
  176. package/dist-es/tabs/TabTrigger.css.js.map +1 -0
  177. package/dist-es/tabs/TabTrigger.js +186 -0
  178. package/dist-es/tabs/TabTrigger.js.map +1 -0
  179. package/dist-es/tabs/Tabs.css.js +4 -0
  180. package/dist-es/tabs/Tabs.css.js.map +1 -0
  181. package/dist-es/tabs/Tabs.js +198 -0
  182. package/dist-es/tabs/Tabs.js.map +1 -0
  183. package/dist-es/tabs/internal/contexts/TabContext.js +23 -0
  184. package/dist-es/tabs/internal/contexts/TabContext.js.map +1 -0
  185. package/dist-es/tabs/internal/contexts/TabListLayoutContext.js +16 -0
  186. package/dist-es/tabs/internal/contexts/TabListLayoutContext.js.map +1 -0
  187. package/dist-es/tabs/internal/contexts/TabSlotRegistryContext.js +19 -0
  188. package/dist-es/tabs/internal/contexts/TabSlotRegistryContext.js.map +1 -0
  189. package/dist-es/tabs/internal/contexts/TabsContext.js +47 -0
  190. package/dist-es/tabs/internal/contexts/TabsContext.js.map +1 -0
  191. package/dist-es/tabs/internal/hooks/useFocusWithRetry.js +62 -0
  192. package/dist-es/tabs/internal/hooks/useFocusWithRetry.js.map +1 -0
  193. package/dist-es/tabs/internal/hooks/useTabListRecovery.js +74 -0
  194. package/dist-es/tabs/internal/hooks/useTabListRecovery.js.map +1 -0
  195. package/dist-es/tabs/internal/hooks/useTabRemovalHandler.js +163 -0
  196. package/dist-es/tabs/internal/hooks/useTabRemovalHandler.js.map +1 -0
  197. package/dist-es/tabs/internal/hooks/useTabSelectionFocus.js +85 -0
  198. package/dist-es/tabs/internal/hooks/useTabSelectionFocus.js.map +1 -0
  199. package/dist-es/tabs/internal/overflow/TabOverflowList.css.js +4 -0
  200. package/dist-es/tabs/internal/overflow/TabOverflowList.css.js.map +1 -0
  201. package/dist-es/tabs/internal/overflow/TabOverflowList.js +243 -0
  202. package/dist-es/tabs/internal/overflow/TabOverflowList.js.map +1 -0
  203. package/dist-es/tabs/internal/overflow/TabSlot.js +28 -0
  204. package/dist-es/tabs/internal/overflow/TabSlot.js.map +1 -0
  205. package/dist-es/tabs/internal/overflow/overflowMath.js +82 -0
  206. package/dist-es/tabs/internal/overflow/overflowMath.js.map +1 -0
  207. package/dist-es/tabs/internal/overflow/useOverflow.js +271 -0
  208. package/dist-es/tabs/internal/overflow/useOverflow.js.map +1 -0
  209. package/dist-es/tabs/internal/overflow/useOverflowLayoutState.js +97 -0
  210. package/dist-es/tabs/internal/overflow/useOverflowLayoutState.js.map +1 -0
  211. package/dist-es/tabs/internal/overflow/useOverflowSelectionState.js +66 -0
  212. package/dist-es/tabs/internal/overflow/useOverflowSelectionState.js.map +1 -0
  213. package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js +90 -0
  214. package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -0
  215. package/dist-es/tabs/internal/overflow/widthMeasurement.js +36 -0
  216. package/dist-es/tabs/internal/overflow/widthMeasurement.js.map +1 -0
  217. package/dist-es/tabs/internal/registry/useCollection.js +195 -0
  218. package/dist-es/tabs/internal/registry/useCollection.js.map +1 -0
  219. package/dist-es/tabs/internal/registry/useRenderedTabsRegistry.js +204 -0
  220. package/dist-es/tabs/internal/registry/useRenderedTabsRegistry.js.map +1 -0
  221. package/dist-es/tabs/internal/utils/domUtils.js +11 -0
  222. package/dist-es/tabs/internal/utils/domUtils.js.map +1 -0
  223. package/dist-types/index.d.ts +3 -0
  224. package/dist-types/rating/Rating.d.ts +48 -0
  225. package/dist-types/rating/RatingItem.d.ts +47 -0
  226. package/dist-types/rating/index.d.ts +1 -0
  227. package/dist-types/semantic-icon-provider/SemanticIconProvider.d.ts +21 -19
  228. package/dist-types/side-panel/SidePanel.d.ts +26 -0
  229. package/dist-types/side-panel/SidePanelCloseButton.d.ts +2 -0
  230. package/dist-types/side-panel/SidePanelContent.d.ts +5 -0
  231. package/dist-types/side-panel/SidePanelHeader.d.ts +5 -0
  232. package/dist-types/side-panel/SidePanelProvider.d.ts +20 -0
  233. package/dist-types/side-panel/SidePanelTitle.d.ts +3 -0
  234. package/dist-types/side-panel/SidePanelTrigger.d.ts +3 -0
  235. package/dist-types/side-panel/index.d.ts +8 -0
  236. package/dist-types/side-panel/internal/SidePanelContext.d.ts +52 -0
  237. package/dist-types/side-panel/internal/index.d.ts +3 -0
  238. package/dist-types/side-panel/internal/useIsScrollable.d.ts +2 -0
  239. package/dist-types/side-panel/internal/useSidePanelTabOrder.d.ts +7 -0
  240. package/dist-types/side-panel/useSidePanel.d.ts +58 -0
  241. package/dist-types/tabs/Tab.d.ts +12 -0
  242. package/dist-types/tabs/TabAction.d.ts +4 -0
  243. package/dist-types/tabs/TabBar.d.ts +12 -0
  244. package/dist-types/tabs/TabList.d.ts +12 -0
  245. package/dist-types/tabs/TabPanel.d.ts +9 -0
  246. package/dist-types/tabs/TabTrigger.d.ts +4 -0
  247. package/dist-types/tabs/Tabs.d.ts +20 -0
  248. package/dist-types/tabs/index.d.ts +7 -0
  249. package/dist-types/tabs/internal/contexts/TabContext.d.ts +12 -0
  250. package/dist-types/tabs/internal/contexts/TabListLayoutContext.d.ts +9 -0
  251. package/dist-types/tabs/internal/contexts/TabSlotRegistryContext.d.ts +5 -0
  252. package/dist-types/tabs/internal/contexts/TabsContext.d.ts +43 -0
  253. package/dist-types/tabs/internal/hooks/useFocusWithRetry.d.ts +9 -0
  254. package/dist-types/tabs/internal/hooks/useTabListRecovery.d.ts +12 -0
  255. package/dist-types/tabs/internal/hooks/useTabRemovalHandler.d.ts +32 -0
  256. package/dist-types/tabs/internal/hooks/useTabSelectionFocus.d.ts +15 -0
  257. package/dist-types/tabs/internal/overflow/TabOverflowList.d.ts +10 -0
  258. package/dist-types/tabs/internal/overflow/TabSlot.d.ts +6 -0
  259. package/dist-types/tabs/internal/overflow/overflowMath.d.ts +18 -0
  260. package/dist-types/tabs/internal/overflow/useOverflow.d.ts +11 -0
  261. package/dist-types/tabs/internal/overflow/useOverflowLayoutState.d.ts +13 -0
  262. package/dist-types/tabs/internal/overflow/useOverflowSelectionState.d.ts +13 -0
  263. package/dist-types/tabs/internal/overflow/useRenderedTabWidth.d.ts +12 -0
  264. package/dist-types/tabs/internal/overflow/widthMeasurement.d.ts +5 -0
  265. package/dist-types/tabs/internal/registry/useCollection.d.ts +30 -0
  266. package/dist-types/tabs/internal/registry/useRenderedTabsRegistry.d.ts +12 -0
  267. package/dist-types/tabs/internal/utils/domUtils.d.ts +1 -0
  268. package/package.json +3 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,66 @@
1
1
  # @salt-ds/core
2
2
 
3
+ ## 1.62.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8980f01: A side panel is a persistent, side-by-side workspace that keeps supporting information and controls available while users continue their main task. It’s intended for ongoing parallel work—such as referencing details, inspecting data, filtering results, or editing attributes—where maintaining visibility and context improves accuracy and efficiency.
8
+
9
+ ```tsx
10
+ <SidePanelProvider>
11
+ <SidePanelTrigger>
12
+ <Button />
13
+ </SidePanelTrigger>
14
+ <SidePanel>
15
+ <SidePanelHeader>
16
+ <SidePanelTitle>Section Title</SidePanelTitle>
17
+ <SidePanelCloseButton />
18
+ </SidePanelHeader>
19
+ <SidePanelContent>
20
+ <Text>Side panel content goes here.</Text>
21
+ </SidePanelContent>
22
+ </SidePanel>
23
+ </SidePanelProvider>
24
+ ```
25
+
26
+ ## 1.61.0
27
+
28
+ ### Minor Changes
29
+
30
+ - 2db14be: Added `Rating`.
31
+
32
+ `Rating` component allows users to submit feedback and view average scores on a defined scale, reflecting your product, service or experience.
33
+
34
+ ```tsx
35
+ <Rating aria-label="Rating" defaultValue={3} />
36
+ ```
37
+
38
+ - 7ffd0fd: Added `Tab`, `TabAction`, `TabBar`, `TabList`, `TabPanel`, `Tabs`, `TabTrigger`.
39
+
40
+ `Tabs` allow users to move between different views of related content without leave the current page.
41
+
42
+ ```tsx
43
+ <Tabs defaultValue="Home">
44
+ <TabBar>
45
+ <TabList aria-label="Example tablist">
46
+ <Tab value="Home">
47
+ <TabTrigger>Home</TabTrigger>
48
+ </Tab>
49
+ <Tab value="Transactions">
50
+ <TabTrigger>Transactions</TabTrigger>
51
+ </Tab>
52
+ <Tab value="Checks">
53
+ <TabTrigger>Checks</TabTrigger>
54
+ </Tab>
55
+ </TabList>
56
+ </TabBar>
57
+ </Tabs>
58
+ ```
59
+
60
+ ### Patch Changes
61
+
62
+ - e74d4d8: Fixed `aria-controls` on `NavigationItem` being applied to the outer wrapper element instead of the interactive trigger element.
63
+
3
64
  ## 1.60.0
4
65
 
5
66
  ### Minor Changes
package/css/salt-core.css CHANGED
@@ -3685,6 +3685,118 @@ a:focus .saltCard-interactable.saltCard-disabled {
3685
3685
  transform: scale(1.01);
3686
3686
  }
3687
3687
 
3688
+ /* src/rating/Rating.css */
3689
+ .saltRating {
3690
+ display: inline-flex;
3691
+ box-sizing: border-box;
3692
+ }
3693
+ .saltFormField .saltRating-container {
3694
+ height: var(--salt-size-base);
3695
+ padding-top: calc(var(--salt-spacing-100) + var(--salt-spacing-fixed-100));
3696
+ }
3697
+ .saltFormField .saltRating-label {
3698
+ min-height: var(--salt-size-base);
3699
+ padding-top: var(--salt-spacing-100);
3700
+ }
3701
+ .saltRating-labelBottom {
3702
+ flex-direction: column;
3703
+ align-items: flex-start;
3704
+ gap: var(--salt-spacing-75);
3705
+ }
3706
+ .saltRating-labelRight {
3707
+ flex-direction: row;
3708
+ gap: var(--salt-spacing-150);
3709
+ }
3710
+ .saltRating-container {
3711
+ display: flex;
3712
+ flex-direction: row;
3713
+ gap: var(--salt-spacing-150);
3714
+ flex-wrap: nowrap;
3715
+ justify-content: flex-start;
3716
+ padding-top: var(--salt-spacing-fixed-100);
3717
+ padding-bottom: var(--salt-spacing-fixed-100);
3718
+ box-sizing: border-box;
3719
+ }
3720
+ .saltRating-label {
3721
+ color: var(--salt-content-primary-foreground);
3722
+ font-family: var(--salt-text-fontFamily);
3723
+ font-size: var(--salt-text-fontSize);
3724
+ font-weight: var(--salt-text-fontWeight);
3725
+ line-height: var(--salt-text-lineHeight);
3726
+ box-sizing: border-box;
3727
+ }
3728
+
3729
+ /* src/rating/RatingItem.css */
3730
+ .saltRatingItem {
3731
+ height: var(--salt-size-icon);
3732
+ width: var(--salt-size-icon);
3733
+ display: flex;
3734
+ position: relative;
3735
+ align-items: center;
3736
+ justify-content: center;
3737
+ cursor: var(--salt-cursor-hover);
3738
+ }
3739
+ .saltRatingItem-disabled,
3740
+ .saltRatingItem-readOnly {
3741
+ cursor: default;
3742
+ }
3743
+ .saltRatingItem-input {
3744
+ position: absolute;
3745
+ opacity: 0;
3746
+ width: 100%;
3747
+ height: 100%;
3748
+ margin: 0;
3749
+ cursor: inherit;
3750
+ z-index: 1;
3751
+ }
3752
+ .saltRatingItem-input::before {
3753
+ content: "";
3754
+ position: absolute;
3755
+ width: 100%;
3756
+ height: 100%;
3757
+ padding: var(--salt-spacing-fixed-600);
3758
+ transform: translate(-50%, -50%);
3759
+ top: 50%;
3760
+ left: 50%;
3761
+ box-sizing: content-box;
3762
+ }
3763
+ .saltRatingItem-icon {
3764
+ pointer-events: none;
3765
+ display: flex;
3766
+ align-items: center;
3767
+ justify-content: center;
3768
+ color: var(--salt-sentiment-neutral-dataviz);
3769
+ }
3770
+ .saltRatingItem-icon .saltIcon {
3771
+ --saltIcon-size: var(--salt-size-icon);
3772
+ }
3773
+ .saltRatingItem-input:focus-visible ~ .saltRatingItem-icon::after {
3774
+ content: "";
3775
+ position: absolute;
3776
+ width: 100%;
3777
+ height: 100%;
3778
+ padding: var(--salt-spacing-fixed-600);
3779
+ transform: translate(-50%, -50%);
3780
+ top: 50%;
3781
+ left: 50%;
3782
+ box-sizing: content-box;
3783
+ border-radius: var(--salt-palette-corner-strongest);
3784
+ outline: var(--salt-focused-outline);
3785
+ outline-offset: calc(-1 * var(--salt-spacing-fixed-200));
3786
+ }
3787
+ .saltRatingItem-disabled {
3788
+ cursor: var(--salt-cursor-disabled);
3789
+ opacity: 0.4;
3790
+ }
3791
+ .saltRatingItem-disabled .saltRatingItem-input {
3792
+ cursor: var(--salt-cursor-disabled);
3793
+ }
3794
+ .saltRatingItem-selected .saltRatingItem-icon,
3795
+ .saltRatingItem-hovered .saltRatingItem-icon,
3796
+ .saltRatingItem-unselecting .saltRatingItem-icon {
3797
+ color: var(--salt-sentiment-accent-dataviz);
3798
+ }
3799
+
3688
3800
  /* src/salt-provider/SaltProvider.css */
3689
3801
  .salt-provider {
3690
3802
  display: contents;
@@ -3747,6 +3859,132 @@ a:focus .saltCard-interactable.saltCard-disabled {
3747
3859
  border-top-right-radius: 0;
3748
3860
  }
3749
3861
 
3862
+ /* src/side-panel/SidePanel.css */
3863
+ .saltSidePanel {
3864
+ --saltSidePanel-width: 300px;
3865
+ --sidePanel-border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--sidePanel-borderColor, var(--salt-container-primary-borderColor));
3866
+ --saltSidePanel-padding: var(--salt-spacing-300);
3867
+ position: relative;
3868
+ display: flex;
3869
+ flex-direction: column;
3870
+ flex: none;
3871
+ width: var(--saltSidePanel-width);
3872
+ height: 100%;
3873
+ min-height: 0;
3874
+ align-self: stretch;
3875
+ }
3876
+ .saltSidePanel-primary {
3877
+ --sidePanel-background: var(--salt-container-primary-background);
3878
+ --sidePanel-borderColor: var(--salt-container-primary-borderColor);
3879
+ }
3880
+ .saltSidePanel-secondary {
3881
+ --sidePanel-background: var(--salt-container-secondary-background);
3882
+ --sidePanel-borderColor: var(--salt-container-secondary-borderColor);
3883
+ }
3884
+ .saltSidePanel-tertiary {
3885
+ --sidePanel-background: var(--salt-container-tertiary-background);
3886
+ --sidePanel-borderColor: var(--salt-container-tertiary-borderColor);
3887
+ }
3888
+ .saltSidePanel-none {
3889
+ --sidePanel-background: none;
3890
+ --saltSidePanel-padding: var(--salt-spacing-200);
3891
+ }
3892
+ .saltSidePanel-inner {
3893
+ box-sizing: border-box;
3894
+ display: flex;
3895
+ flex-direction: column;
3896
+ flex: 1;
3897
+ min-height: 0;
3898
+ padding: var(--saltSidePanel-padding);
3899
+ width: 100%;
3900
+ background-color: var(--sidePanel-background, var(--salt-container-primary-background));
3901
+ }
3902
+ .saltSidePanel-left .saltSidePanel-inner {
3903
+ border-right: var(--sidePanel-border);
3904
+ }
3905
+ .saltSidePanel-right .saltSidePanel-inner {
3906
+ border-left: var(--sidePanel-border);
3907
+ }
3908
+ .saltSidePanel-none .saltSidePanel-inner {
3909
+ border: none;
3910
+ }
3911
+ .saltSidePanel-enterAnimation,
3912
+ .saltSidePanel-exitAnimation {
3913
+ contain: paint;
3914
+ }
3915
+ .saltSidePanel-enterAnimation .saltSidePanel-inner,
3916
+ .saltSidePanel-exitAnimation .saltSidePanel-inner {
3917
+ position: absolute;
3918
+ top: 0;
3919
+ bottom: 0;
3920
+ flex: none;
3921
+ width: var(--saltSidePanel-animation-width, var(--saltSidePanel-width));
3922
+ }
3923
+ .saltSidePanel-left.saltSidePanel-enterAnimation .saltSidePanel-inner,
3924
+ .saltSidePanel-left.saltSidePanel-exitAnimation .saltSidePanel-inner {
3925
+ right: 0;
3926
+ }
3927
+ .saltSidePanel-right.saltSidePanel-enterAnimation .saltSidePanel-inner,
3928
+ .saltSidePanel-right.saltSidePanel-exitAnimation .saltSidePanel-inner {
3929
+ left: 0;
3930
+ }
3931
+ .saltSidePanel-exitAnimation .saltSidePanel-inner {
3932
+ pointer-events: none;
3933
+ }
3934
+ .saltSidePanel-enterAnimation {
3935
+ animation: saltSidePanel-open var(--salt-duration-perceptible) var(--salt-animation-timing-function);
3936
+ }
3937
+ .saltSidePanel-exitAnimation {
3938
+ animation: saltSidePanel-close var(--salt-duration-perceptible) var(--salt-animation-timing-function) both;
3939
+ }
3940
+ @keyframes saltSidePanel-open {
3941
+ from {
3942
+ width: 0;
3943
+ }
3944
+ }
3945
+ @keyframes saltSidePanel-close {
3946
+ to {
3947
+ width: 0;
3948
+ }
3949
+ }
3950
+ @media (prefers-reduced-motion: reduce) {
3951
+ .saltSidePanel-enterAnimation,
3952
+ .saltSidePanel-exitAnimation {
3953
+ animation: none;
3954
+ }
3955
+ }
3956
+
3957
+ /* src/side-panel/SidePanelContent.css */
3958
+ .saltSidePanelContent {
3959
+ display: flex;
3960
+ flex-direction: column;
3961
+ flex: 1;
3962
+ min-height: 0;
3963
+ }
3964
+ .saltSidePanelContent-body {
3965
+ flex: 1;
3966
+ min-height: 0;
3967
+ overflow: auto;
3968
+ }
3969
+
3970
+ /* src/side-panel/SidePanelHeader.css */
3971
+ .saltSidePanelHeader {
3972
+ display: flex;
3973
+ align-items: flex-start;
3974
+ flex-shrink: 0;
3975
+ gap: var(--salt-spacing-100);
3976
+ padding: 0 0 var(--salt-spacing-300);
3977
+ }
3978
+
3979
+ /* src/side-panel/SidePanelTitle.css */
3980
+ .saltSidePanelTitle {
3981
+ flex: 1;
3982
+ min-width: 0;
3983
+ min-height: var(--salt-size-base);
3984
+ display: flex;
3985
+ align-items: center;
3986
+ }
3987
+
3750
3988
  /* src/skip-link/SkipLink.css */
3751
3989
  .saltSkipLink {
3752
3990
  top: 0;
@@ -4308,6 +4546,188 @@ table.saltTable td.saltTable-td-align-right {
4308
4546
  overflow: auto;
4309
4547
  }
4310
4548
 
4549
+ /* src/tabs/Tab.css */
4550
+ .saltTab {
4551
+ display: inline-flex;
4552
+ align-items: center;
4553
+ justify-content: center;
4554
+ appearance: none;
4555
+ -webkit-appearance: none;
4556
+ gap: var(--salt-spacing-100);
4557
+ border: none;
4558
+ border-left: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
4559
+ border-right: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) transparent;
4560
+ white-space: pre;
4561
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
4562
+ min-width: 4em;
4563
+ padding: var(--salt-spacing-50) var(--salt-spacing-100);
4564
+ position: relative;
4565
+ flex-shrink: 0;
4566
+ box-sizing: border-box;
4567
+ overflow: hidden;
4568
+ cursor: var(--salt-cursor-hover);
4569
+ color: var(--salt-content-primary-foreground);
4570
+ font-weight: var(--salt-text-fontWeight);
4571
+ font-family: var(--salt-text-fontFamily);
4572
+ text-align: var(--salt-text-textAlign);
4573
+ letter-spacing: var(--salt-text-letterSpacing);
4574
+ line-height: var(--salt-text-lineHeight);
4575
+ font-size: var(--salt-text-fontSize);
4576
+ max-width: 100%;
4577
+ }
4578
+ @supports selector(:has(*)) {
4579
+ .saltTabList:has([data-overflowbutton]) .saltTab {
4580
+ max-width: calc(100% - var(--salt-spacing-100) - var(--salt-size-base));
4581
+ }
4582
+ }
4583
+ .saltTab::after {
4584
+ content: "";
4585
+ position: absolute;
4586
+ left: calc(var(--salt-size-fixed-100) * -1);
4587
+ right: calc(var(--salt-size-fixed-100) * -1);
4588
+ height: var(--salt-size-indicator);
4589
+ }
4590
+ .saltTabList-bordered .saltTab::after {
4591
+ top: 0;
4592
+ }
4593
+ .saltTabList-transparent .saltTab::after {
4594
+ bottom: 0;
4595
+ }
4596
+ .saltTab:hover::after,
4597
+ .saltTab-focusVisible::after {
4598
+ background: var(--salt-navigable-indicator-hover);
4599
+ }
4600
+ .saltTab-disabled:hover::after,
4601
+ .saltTab-disabled.saltTab-focusVisible::after {
4602
+ background: none;
4603
+ }
4604
+ .saltTab-focusVisible {
4605
+ outline: var(--salt-focused-outline);
4606
+ }
4607
+ .saltTabList-bordered .saltTab.saltTab-selected {
4608
+ background: var(--saltTabList-activeColor);
4609
+ border-left: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-secondary-borderColor);
4610
+ border-right: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-secondary-borderColor);
4611
+ }
4612
+ .saltTab.saltTab-selected::after {
4613
+ background: var(--salt-navigable-accent-indicator-active);
4614
+ }
4615
+ .saltTab.saltTab-disabled {
4616
+ cursor: var(--salt-cursor-disabled);
4617
+ color: var(--salt-content-primary-foreground-disabled);
4618
+ }
4619
+
4620
+ /* src/tabs/TabBar.css */
4621
+ .saltTabBar {
4622
+ display: flex;
4623
+ align-items: center;
4624
+ flex-direction: row;
4625
+ position: relative;
4626
+ box-sizing: border-box;
4627
+ min-width: 0;
4628
+ max-width: 100%;
4629
+ }
4630
+ .saltTabBar-strip {
4631
+ display: flex;
4632
+ align-items: center;
4633
+ flex-direction: row;
4634
+ flex: 1 1 auto;
4635
+ gap: var(--salt-spacing-100);
4636
+ box-sizing: border-box;
4637
+ min-width: 0;
4638
+ max-width: 100%;
4639
+ }
4640
+ .saltTabBar-divider::before {
4641
+ content: "";
4642
+ position: absolute;
4643
+ inset: auto 0 0 0;
4644
+ height: var(--salt-size-fixed-100);
4645
+ border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-secondary-borderColor);
4646
+ }
4647
+ .saltTabBar-inset {
4648
+ padding-left: var(--salt-spacing-300);
4649
+ padding-right: var(--salt-spacing-300);
4650
+ }
4651
+
4652
+ /* src/tabs/TabList.css */
4653
+ .saltTabList {
4654
+ display: flex;
4655
+ flex-wrap: nowrap;
4656
+ justify-content: flex-start;
4657
+ align-items: center;
4658
+ position: relative;
4659
+ background: transparent;
4660
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
4661
+ gap: var(--salt-spacing-100);
4662
+ max-width: 100%;
4663
+ min-width: 0;
4664
+ flex: 0 1 auto;
4665
+ }
4666
+ .saltTabList-center {
4667
+ justify-content: center;
4668
+ }
4669
+ .saltTabList-right {
4670
+ justify-content: flex-end;
4671
+ }
4672
+ .saltTabList-activeColorPrimary {
4673
+ --saltTabList-activeColor: var(--salt-container-primary-background);
4674
+ }
4675
+ .saltTabList-activeColorSecondary {
4676
+ --saltTabList-activeColor: var(--salt-container-secondary-background);
4677
+ }
4678
+ .saltTabList-activeColorTertiary {
4679
+ --saltTabList-activeColor: var(--salt-container-tertiary-background);
4680
+ }
4681
+ .saltTabList-measureContainer {
4682
+ position: absolute;
4683
+ top: 0;
4684
+ left: 0;
4685
+ height: 0;
4686
+ overflow: hidden;
4687
+ pointer-events: none;
4688
+ visibility: hidden;
4689
+ white-space: nowrap;
4690
+ }
4691
+
4692
+ /* src/tabs/TabPanel.css */
4693
+ .saltTabPanel {
4694
+ height: 100%;
4695
+ width: 100%;
4696
+ }
4697
+ .saltTabPanel[hidden] {
4698
+ display: none;
4699
+ }
4700
+ .saltTabPanel:focus-visible {
4701
+ outline: var(--salt-focused-outline);
4702
+ }
4703
+
4704
+ /* src/tabs/TabTrigger.css */
4705
+ .saltTabTrigger {
4706
+ all: unset;
4707
+ display: flex;
4708
+ gap: var(--salt-spacing-100);
4709
+ align-items: center;
4710
+ justify-content: center;
4711
+ flex: 1;
4712
+ overflow: hidden;
4713
+ }
4714
+ .saltTabTrigger::before {
4715
+ content: "";
4716
+ position: absolute;
4717
+ width: 100%;
4718
+ height: 100%;
4719
+ left: 0;
4720
+ top: 0;
4721
+ }
4722
+ .saltTabTrigger:focus-visible {
4723
+ outline: none;
4724
+ }
4725
+
4726
+ /* src/tabs/Tabs.css */
4727
+ .saltTabs {
4728
+ min-width: 0;
4729
+ }
4730
+
4311
4731
  /* src/tag/Tag.css */
4312
4732
  .saltTag {
4313
4733
  height: calc(var(--salt-size-base) - var(--salt-spacing-100));
@@ -5838,4 +6258,75 @@ label.saltText small,
5838
6258
  color: var(--salt-status-error-foreground-informative);
5839
6259
  }
5840
6260
 
5841
- /* src/efc56242-ef47-4712-a837-ef6de7fe6004.css */
6261
+ /* src/tabs/internal/overflow/TabOverflowList.css */
6262
+ .saltTabOverflowList {
6263
+ position: relative;
6264
+ }
6265
+ .saltTabOverflowList-list {
6266
+ background: var(--salt-container-primary-background);
6267
+ border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);
6268
+ overflow: hidden;
6269
+ overflow-y: auto;
6270
+ position: absolute;
6271
+ box-shadow: var(--salt-overlayable-shadow-popout);
6272
+ box-sizing: border-box;
6273
+ border-radius: var(--salt-palette-corner, 0);
6274
+ z-index: var(--salt-zIndex-flyover);
6275
+ }
6276
+ .saltTabOverflowList-listContainer {
6277
+ display: flex;
6278
+ flex-direction: column;
6279
+ gap: var(--salt-spacing-fixed-100);
6280
+ max-height: inherit;
6281
+ min-height: inherit;
6282
+ }
6283
+ .saltTabOverflowList-list .saltTab {
6284
+ color: var(--salt-content-primary-foreground);
6285
+ background: var(--salt-selectable-background);
6286
+ font-size: var(--salt-text-fontSize);
6287
+ font-weight: var(--salt-text-fontWeight);
6288
+ min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
6289
+ padding-left: var(--salt-spacing-100);
6290
+ padding-right: var(--salt-spacing-100);
6291
+ display: flex;
6292
+ gap: var(--salt-spacing-100);
6293
+ position: relative;
6294
+ align-items: center;
6295
+ cursor: var(--salt-cursor-hover);
6296
+ box-sizing: border-box;
6297
+ flex-shrink: 0;
6298
+ justify-content: flex-start;
6299
+ }
6300
+ @supports selector(:has(*)) {
6301
+ .saltTabList:has([data-overflowbutton]) .saltTabOverflowList-list .saltTab {
6302
+ max-width: unset;
6303
+ }
6304
+ }
6305
+ .saltTabOverflowList-list .saltTab .saltTabTrigger {
6306
+ justify-content: start;
6307
+ }
6308
+ .saltTabOverflowList-list .saltTab::after {
6309
+ display: none;
6310
+ }
6311
+ .saltTabOverflowList-list .saltTab-focusVisible {
6312
+ outline: var(--salt-focused-outline);
6313
+ outline-offset: calc(var(--salt-size-fixed-100) * -2);
6314
+ }
6315
+ .saltTabOverflowList-list .saltTab:hover {
6316
+ background: var(--salt-selectable-background-hover);
6317
+ }
6318
+ .saltTabOverflowList-list .saltTab-disabled {
6319
+ color: var(--salt-content-primary-foreground-disabled);
6320
+ cursor: var(--salt-cursor-disabled);
6321
+ }
6322
+ .saltTabOverflowList-list .saltTab-disabled:hover,
6323
+ .saltTabOverflowList-list .saltTab-disabled:active {
6324
+ background: var(--salt-selectable-background);
6325
+ box-shadow: none;
6326
+ }
6327
+ .saltTabOverflowList-list .saltTab:active {
6328
+ background: var(--salt-selectable-background-selected);
6329
+ box-shadow: 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected), 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);
6330
+ }
6331
+
6332
+ /* src/e5e7d410-cd0b-435a-a247-782117a31674.css */
package/dist-cjs/index.js CHANGED
@@ -90,10 +90,19 @@ var LinearProgress = require('./progress/LinearProgress/LinearProgress.js');
90
90
  var RadioButton = require('./radio-button/RadioButton.js');
91
91
  var RadioButtonGroup = require('./radio-button/RadioButtonGroup.js');
92
92
  var RadioButtonIcon = require('./radio-button/RadioButtonIcon.js');
93
+ var Rating = require('./rating/Rating.js');
93
94
  var SaltProvider = require('./salt-provider/SaltProvider.js');
94
95
  var Scrim = require('./scrim/Scrim.js');
95
96
  var SegmentedButtonGroup = require('./segmented-button-group/SegmentedButtonGroup.js');
96
97
  var SemanticIconProvider = require('./semantic-icon-provider/SemanticIconProvider.js');
98
+ var SidePanel = require('./side-panel/SidePanel.js');
99
+ var SidePanelCloseButton = require('./side-panel/SidePanelCloseButton.js');
100
+ var SidePanelContent = require('./side-panel/SidePanelContent.js');
101
+ var SidePanelHeader = require('./side-panel/SidePanelHeader.js');
102
+ var SidePanelProvider = require('./side-panel/SidePanelProvider.js');
103
+ var SidePanelTitle = require('./side-panel/SidePanelTitle.js');
104
+ var SidePanelTrigger = require('./side-panel/SidePanelTrigger.js');
105
+ var useSidePanel = require('./side-panel/useSidePanel.js');
97
106
  var SkipLink = require('./skip-link/SkipLink.js');
98
107
  var RangeSlider = require('./slider/RangeSlider.js');
99
108
  var Slider = require('./slider/Slider.js');
@@ -114,6 +123,13 @@ var TFoot = require('./table/TFoot.js');
114
123
  var TH = require('./table/TH.js');
115
124
  var THead = require('./table/THead.js');
116
125
  var TR = require('./table/TR.js');
126
+ var Tab = require('./tabs/Tab.js');
127
+ var TabAction = require('./tabs/TabAction.js');
128
+ var TabBar = require('./tabs/TabBar.js');
129
+ var TabList = require('./tabs/TabList.js');
130
+ var TabPanel = require('./tabs/TabPanel.js');
131
+ var Tabs = require('./tabs/Tabs.js');
132
+ var TabTrigger = require('./tabs/TabTrigger.js');
117
133
  var Tag = require('./tag/Tag.js');
118
134
  var Code = require('./text/Code.js');
119
135
  var Display = require('./text/Display.js');
@@ -276,6 +292,7 @@ exports.LinearProgress = LinearProgress.LinearProgress;
276
292
  exports.RadioButton = RadioButton.RadioButton;
277
293
  exports.RadioButtonGroup = RadioButtonGroup.RadioButtonGroup;
278
294
  exports.RadioButtonIcon = RadioButtonIcon.RadioButtonIcon;
295
+ exports.Rating = Rating.Rating;
279
296
  exports.BreakpointContext = SaltProvider.BreakpointContext;
280
297
  exports.DEFAULT_DENSITY = SaltProvider.DEFAULT_DENSITY;
281
298
  exports.DensityContext = SaltProvider.DensityContext;
@@ -290,6 +307,14 @@ exports.Scrim = Scrim.Scrim;
290
307
  exports.SegmentedButtonGroup = SegmentedButtonGroup.SegmentedButtonGroup;
291
308
  exports.SemanticIconProvider = SemanticIconProvider.SemanticIconProvider;
292
309
  exports.useIcon = SemanticIconProvider.useIcon;
310
+ exports.SidePanel = SidePanel.SidePanel;
311
+ exports.SidePanelCloseButton = SidePanelCloseButton.SidePanelCloseButton;
312
+ exports.SidePanelContent = SidePanelContent.SidePanelContent;
313
+ exports.SidePanelHeader = SidePanelHeader.SidePanelHeader;
314
+ exports.SidePanelProvider = SidePanelProvider.SidePanelProvider;
315
+ exports.SidePanelTitle = SidePanelTitle.SidePanelTitle;
316
+ exports.SidePanelTrigger = SidePanelTrigger.SidePanelTrigger;
317
+ exports.useSidePanel = useSidePanel.useSidePanel;
293
318
  exports.SkipLink = SkipLink.SkipLink;
294
319
  exports.RangeSlider = RangeSlider.RangeSlider;
295
320
  exports.Slider = Slider.Slider;
@@ -312,6 +337,13 @@ exports.TFoot = TFoot.TFoot;
312
337
  exports.TH = TH.TH;
313
338
  exports.THead = THead.THead;
314
339
  exports.TR = TR.TR;
340
+ exports.Tab = Tab.Tab;
341
+ exports.TabAction = TabAction.TabAction;
342
+ exports.TabBar = TabBar.TabBar;
343
+ exports.TabList = TabList.TabList;
344
+ exports.TabPanel = TabPanel.TabPanel;
345
+ exports.Tabs = Tabs.Tabs;
346
+ exports.TabTrigger = TabTrigger.TabTrigger;
315
347
  exports.Tag = Tag.Tag;
316
348
  exports.Code = Code.Code;
317
349
  exports.Display1 = Display.Display1;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -30,6 +30,7 @@ const NavigationItem = React.forwardRef(
30
30
  level = 0,
31
31
  onExpand,
32
32
  style: styleProp,
33
+ "aria-controls": ariaControls,
33
34
  ...rest
34
35
  } = props;
35
36
  const targetWindow = window.useWindow();
@@ -67,6 +68,7 @@ const NavigationItem = React.forwardRef(
67
68
  ),
68
69
  render: render ?? (isLink ? void 0 : /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button" })),
69
70
  "aria-expanded": isLink ? void 0 : expanded,
71
+ "aria-controls": ariaControls,
70
72
  onClick: handleClick,
71
73
  "aria-current": isLink && active ? "page" : void 0,
72
74
  href,
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationItem.js","sources":["../src/navigation-item/NavigationItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n type MouseEventHandler,\n} from \"react\";\nimport type { RenderPropsType } from \"../utils\";\nimport { makePrefixer } from \"../utils\";\nimport { ExpansionIcon } from \"./ExpansionIcon\";\nimport navigationItemCss from \"./NavigationItem.css\";\nimport { NavigationItemAction } from \"./NavigationItemAction\";\n\nexport interface NavigationItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the navigation item is active.\n */\n active?: boolean;\n /**\n * Whether the nested group is collapsed and there is an active nested item within it.\n */\n blurActive?: boolean;\n /**\n * Whether the navigation item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the navigation item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the navigation item is a parent with nested items.\n */\n parent?: boolean;\n /**\n * Render prop to enable customisation of navigation item element.\n */\n render?: RenderPropsType[\"render\"];\n /**\n * Action to be triggered when the navigation item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltNavigationItem\");\n\nexport const NavigationItem = forwardRef<HTMLDivElement, NavigationItemProps>(\n function NavigationItem(props, ref) {\n const {\n active,\n blurActive,\n render,\n children,\n className,\n expanded = false,\n href,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n style: styleProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-navigation-item\",\n css: navigationItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavigationItem-level\": `${level}`,\n };\n\n const isLink = href !== undefined;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onExpand?.(event);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n style={style}\n {...rest}\n >\n <NavigationItemAction\n className={clsx(\n withBaseName(\"wrapper\"),\n {\n [withBaseName(\"active\")]: active || blurActive,\n [withBaseName(\"blurActive\")]: blurActive,\n [withBaseName(\"rootItem\")]: level === 0,\n },\n withBaseName(orientation),\n )}\n render={render ?? (isLink ? undefined : <button type=\"button\" />)}\n aria-expanded={isLink ? undefined : expanded}\n onClick={handleClick}\n aria-current={isLink && active ? \"page\" : undefined}\n href={href}\n >\n <span className={withBaseName(\"label\")}>{children}</span>\n {parent ? (\n <ExpansionIcon expanded={expanded} orientation={orientation} />\n ) : null}\n </NavigationItemAction>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","NavigationItem","useWindow","useComponentCssInjection","navigationItemCss","jsx","clsx","jsxs","NavigationItemAction","ExpansionIcon"],"mappings":";;;;;;;;;;;;;;;;AAsDA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA;AAE/C,MAAM,cAAA,GAAiBC,gBAAA;AAAA,EAC5B,SAASC,eAAAA,CAAe,KAAA,EAAO,GAAA,EAAK;AAClC,IAAA,MAAM;AAAA,MACJ,MAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,IAAA;AAAA,MACA,WAAA,GAAc,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAA,GAAQ,CAAA;AAAA,MACR,QAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,gBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,4BAAA,EAA8B,GAAG,KAAK,CAAA;AAAA,KACxC;AAEA,IAAA,MAAM,SAAS,IAAA,KAAS,MAAA;AAExB,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,KAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAC,eAAA;AAAA,UAACC,yCAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,SAAA;AAAA,cACT,aAAa,SAAS,CAAA;AAAA,cACtB;AAAA,gBACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG,MAAA,IAAU,UAAA;AAAA,gBACpC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG,UAAA;AAAA,gBAC9B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,KAAA,KAAU;AAAA,eACxC;AAAA,cACA,aAAa,WAAW;AAAA,aAC1B;AAAA,YACA,QAAQ,MAAA,KAAW,MAAA,GAAS,yBAAYD,cAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,CAAA,CAAA;AAAA,YAC9D,eAAA,EAAe,SAAS,MAAA,GAAY,QAAA;AAAA,YACpC,OAAA,EAAS,WAAA;AAAA,YACT,cAAA,EAAc,MAAA,IAAU,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,YAC1C,IAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,YAAA,CAAa,OAAO,GAAI,QAAA,EAAS,CAAA;AAAA,cACjD,MAAA,mBACCA,cAAA,CAACI,2BAAA,EAAA,EAAc,QAAA,EAAoB,aAA0B,CAAA,GAC3D;AAAA;AAAA;AAAA;AACN;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
1
+ {"version":3,"file":"NavigationItem.js","sources":["../src/navigation-item/NavigationItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n type MouseEventHandler,\n} from \"react\";\nimport type { RenderPropsType } from \"../utils\";\nimport { makePrefixer } from \"../utils\";\nimport { ExpansionIcon } from \"./ExpansionIcon\";\nimport navigationItemCss from \"./NavigationItem.css\";\nimport { NavigationItemAction } from \"./NavigationItemAction\";\n\nexport interface NavigationItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the navigation item is active.\n */\n active?: boolean;\n /**\n * Whether the nested group is collapsed and there is an active nested item within it.\n */\n blurActive?: boolean;\n /**\n * Whether the navigation item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the navigation item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the navigation item is a parent with nested items.\n */\n parent?: boolean;\n /**\n * Render prop to enable customisation of navigation item element.\n */\n render?: RenderPropsType[\"render\"];\n /**\n * Action to be triggered when the navigation item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltNavigationItem\");\n\nexport const NavigationItem = forwardRef<HTMLDivElement, NavigationItemProps>(\n function NavigationItem(props, ref) {\n const {\n active,\n blurActive,\n render,\n children,\n className,\n expanded = false,\n href,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n style: styleProp,\n \"aria-controls\": ariaControls,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-navigation-item\",\n css: navigationItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavigationItem-level\": `${level}`,\n };\n\n const isLink = href !== undefined;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onExpand?.(event);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n style={style}\n {...rest}\n >\n <NavigationItemAction\n className={clsx(\n withBaseName(\"wrapper\"),\n {\n [withBaseName(\"active\")]: active || blurActive,\n [withBaseName(\"blurActive\")]: blurActive,\n [withBaseName(\"rootItem\")]: level === 0,\n },\n withBaseName(orientation),\n )}\n render={render ?? (isLink ? undefined : <button type=\"button\" />)}\n aria-expanded={isLink ? undefined : expanded}\n aria-controls={ariaControls}\n onClick={handleClick}\n aria-current={isLink && active ? \"page\" : undefined}\n href={href}\n >\n <span className={withBaseName(\"label\")}>{children}</span>\n {parent ? (\n <ExpansionIcon expanded={expanded} orientation={orientation} />\n ) : null}\n </NavigationItemAction>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","NavigationItem","useWindow","useComponentCssInjection","navigationItemCss","jsx","clsx","jsxs","NavigationItemAction","ExpansionIcon"],"mappings":";;;;;;;;;;;;;;;;AAsDA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA;AAE/C,MAAM,cAAA,GAAiBC,gBAAA;AAAA,EAC5B,SAASC,eAAAA,CAAe,KAAA,EAAO,GAAA,EAAK;AAClC,IAAA,MAAM;AAAA,MACJ,MAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,IAAA;AAAA,MACA,WAAA,GAAc,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAA,GAAQ,CAAA;AAAA,MACR,QAAA;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,eAAA,EAAiB,YAAA;AAAA,MACjB,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAA,EAAU;AAC/B,IAAAC,+BAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,sBAAA;AAAA,MACR,GAAA,EAAKC,gBAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,4BAAA,EAA8B,GAAG,KAAK,CAAA;AAAA,KACxC;AAEA,IAAA,MAAM,SAAS,IAAA,KAAS,MAAA;AAExB,IAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAyC;AAC5D,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAW,KAAA,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWC,SAAA,CAAK,YAAA,EAAa,EAAG,SAAS,CAAA;AAAA,QACzC,KAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAC,eAAA;AAAA,UAACC,yCAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWF,SAAA;AAAA,cACT,aAAa,SAAS,CAAA;AAAA,cACtB;AAAA,gBACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG,MAAA,IAAU,UAAA;AAAA,gBACpC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG,UAAA;AAAA,gBAC9B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,KAAA,KAAU;AAAA,eACxC;AAAA,cACA,aAAa,WAAW;AAAA,aAC1B;AAAA,YACA,QAAQ,MAAA,KAAW,MAAA,GAAS,yBAAYD,cAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,CAAA,CAAA;AAAA,YAC9D,eAAA,EAAe,SAAS,MAAA,GAAY,QAAA;AAAA,YACpC,eAAA,EAAe,YAAA;AAAA,YACf,OAAA,EAAS,WAAA;AAAA,YACT,cAAA,EAAc,MAAA,IAAU,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,YAC1C,IAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,YAAA,CAAa,OAAO,GAAI,QAAA,EAAS,CAAA;AAAA,cACjD,MAAA,mBACCA,cAAA,CAACI,2BAAA,EAAA,EAAc,QAAA,EAAoB,aAA0B,CAAA,GAC3D;AAAA;AAAA;AAAA;AACN;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}