@salt-ds/lab 1.0.0-alpha.90 → 1.0.0-alpha.91

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 (356) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/css/salt-lab.css +125 -366
  3. package/dist-cjs/index.js +20 -16
  4. package/dist-cjs/index.js.map +1 -1
  5. package/dist-cjs/mega-menu/MegaMenu.js +82 -0
  6. package/dist-cjs/mega-menu/MegaMenu.js.map +1 -0
  7. package/dist-cjs/mega-menu/MegaMenuContent.css.js +6 -0
  8. package/dist-cjs/mega-menu/MegaMenuContent.css.js.map +1 -0
  9. package/dist-cjs/mega-menu/MegaMenuContent.js +33 -0
  10. package/dist-cjs/mega-menu/MegaMenuContent.js.map +1 -0
  11. package/dist-cjs/mega-menu/MegaMenuContext.js +11 -0
  12. package/dist-cjs/mega-menu/MegaMenuContext.js.map +1 -0
  13. package/dist-cjs/mega-menu/MegaMenuGroup.css.js +6 -0
  14. package/dist-cjs/mega-menu/MegaMenuGroup.css.js.map +1 -0
  15. package/dist-cjs/mega-menu/MegaMenuGroup.js +58 -0
  16. package/dist-cjs/mega-menu/MegaMenuGroup.js.map +1 -0
  17. package/dist-cjs/mega-menu/MegaMenuHeader.css.js +6 -0
  18. package/dist-cjs/mega-menu/MegaMenuHeader.css.js.map +1 -0
  19. package/dist-cjs/mega-menu/MegaMenuHeader.js +26 -0
  20. package/dist-cjs/mega-menu/MegaMenuHeader.js.map +1 -0
  21. package/dist-cjs/mega-menu/MegaMenuItem.css.js +6 -0
  22. package/dist-cjs/mega-menu/MegaMenuItem.css.js.map +1 -0
  23. package/dist-cjs/mega-menu/MegaMenuItem.js +52 -0
  24. package/dist-cjs/mega-menu/MegaMenuItem.js.map +1 -0
  25. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js +6 -0
  26. package/dist-cjs/mega-menu/MegaMenuItemContent.css.js.map +1 -0
  27. package/dist-cjs/mega-menu/MegaMenuItemContent.js +23 -0
  28. package/dist-cjs/mega-menu/MegaMenuItemContent.js.map +1 -0
  29. package/dist-cjs/mega-menu/MegaMenuPanel.css.js +6 -0
  30. package/dist-cjs/mega-menu/MegaMenuPanel.css.js.map +1 -0
  31. package/dist-cjs/mega-menu/MegaMenuPanel.js +108 -0
  32. package/dist-cjs/mega-menu/MegaMenuPanel.js.map +1 -0
  33. package/dist-cjs/mega-menu/MegaMenuSection.css.js +6 -0
  34. package/dist-cjs/mega-menu/MegaMenuSection.css.js.map +1 -0
  35. package/dist-cjs/mega-menu/MegaMenuSection.js +25 -0
  36. package/dist-cjs/mega-menu/MegaMenuSection.js.map +1 -0
  37. package/dist-cjs/mega-menu/MegaMenuTrigger.js +92 -0
  38. package/dist-cjs/mega-menu/MegaMenuTrigger.js.map +1 -0
  39. package/dist-cjs/mega-menu/useMegaMenu.js +15 -0
  40. package/dist-cjs/mega-menu/useMegaMenu.js.map +1 -0
  41. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js +209 -0
  42. package/dist-cjs/mega-menu/useMegaMenuKeyboard.js.map +1 -0
  43. package/dist-cjs/side-panel/SidePanel.css.js +1 -1
  44. package/dist-cjs/side-panel/SidePanel.js +25 -30
  45. package/dist-cjs/side-panel/SidePanel.js.map +1 -1
  46. package/dist-cjs/side-panel/SidePanelCloseButton.js +38 -0
  47. package/dist-cjs/side-panel/SidePanelCloseButton.js.map +1 -0
  48. package/dist-cjs/side-panel/SidePanelContent.css.js +1 -1
  49. package/dist-cjs/side-panel/SidePanelContent.js +3 -23
  50. package/dist-cjs/side-panel/SidePanelContent.js.map +1 -1
  51. package/dist-cjs/side-panel/SidePanelHeader.css.js +1 -1
  52. package/dist-cjs/side-panel/SidePanelProvider.js +20 -2
  53. package/dist-cjs/side-panel/SidePanelProvider.js.map +1 -1
  54. package/dist-cjs/side-panel/SidePanelTitle.css.js +1 -1
  55. package/dist-cjs/side-panel/SidePanelTitle.js +1 -0
  56. package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -1
  57. package/dist-cjs/side-panel/SidePanelTrigger.js +4 -4
  58. package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -1
  59. package/dist-cjs/side-panel/internal/SidePanelContext.js +3 -0
  60. package/dist-cjs/side-panel/internal/SidePanelContext.js.map +1 -1
  61. package/dist-cjs/side-panel/internal/useIsScrollable.js +50 -0
  62. package/dist-cjs/side-panel/internal/useIsScrollable.js.map +1 -0
  63. package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js +121 -0
  64. package/dist-cjs/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
  65. package/dist-cjs/side-panel/useSidePanel.js +3 -1
  66. package/dist-cjs/side-panel/useSidePanel.js.map +1 -1
  67. package/dist-cjs/tree/Tree.js +8 -5
  68. package/dist-cjs/tree/Tree.js.map +1 -1
  69. package/dist-cjs/tree/TreeContext.js.map +1 -1
  70. package/dist-cjs/tree/TreeNode.js +18 -14
  71. package/dist-cjs/tree/TreeNode.js.map +1 -1
  72. package/dist-cjs/tree/TreeNodeTrigger.js +4 -3
  73. package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
  74. package/dist-cjs/tree/treeModel.js +61 -0
  75. package/dist-cjs/tree/treeModel.js.map +1 -0
  76. package/dist-cjs/tree/useTree.js +71 -65
  77. package/dist-cjs/tree/useTree.js.map +1 -1
  78. package/dist-es/index.js +10 -8
  79. package/dist-es/index.js.map +1 -1
  80. package/dist-es/mega-menu/MegaMenu.js +80 -0
  81. package/dist-es/mega-menu/MegaMenu.js.map +1 -0
  82. package/dist-es/mega-menu/MegaMenuContent.css.js +4 -0
  83. package/dist-es/mega-menu/MegaMenuContent.css.js.map +1 -0
  84. package/dist-es/mega-menu/MegaMenuContent.js +31 -0
  85. package/dist-es/mega-menu/MegaMenuContent.js.map +1 -0
  86. package/dist-es/mega-menu/MegaMenuContext.js +9 -0
  87. package/dist-es/mega-menu/MegaMenuContext.js.map +1 -0
  88. package/dist-es/mega-menu/MegaMenuGroup.css.js +4 -0
  89. package/dist-es/mega-menu/MegaMenuGroup.css.js.map +1 -0
  90. package/dist-es/mega-menu/MegaMenuGroup.js +56 -0
  91. package/dist-es/mega-menu/MegaMenuGroup.js.map +1 -0
  92. package/dist-es/mega-menu/MegaMenuHeader.css.js +4 -0
  93. package/dist-es/mega-menu/MegaMenuHeader.css.js.map +1 -0
  94. package/dist-es/mega-menu/MegaMenuHeader.js +24 -0
  95. package/dist-es/mega-menu/MegaMenuHeader.js.map +1 -0
  96. package/dist-es/mega-menu/MegaMenuItem.css.js +4 -0
  97. package/dist-es/mega-menu/MegaMenuItem.css.js.map +1 -0
  98. package/dist-es/mega-menu/MegaMenuItem.js +50 -0
  99. package/dist-es/mega-menu/MegaMenuItem.js.map +1 -0
  100. package/dist-es/mega-menu/MegaMenuItemContent.css.js +4 -0
  101. package/dist-es/mega-menu/MegaMenuItemContent.css.js.map +1 -0
  102. package/dist-es/mega-menu/MegaMenuItemContent.js +21 -0
  103. package/dist-es/mega-menu/MegaMenuItemContent.js.map +1 -0
  104. package/dist-es/mega-menu/MegaMenuPanel.css.js +4 -0
  105. package/dist-es/mega-menu/MegaMenuPanel.css.js.map +1 -0
  106. package/dist-es/mega-menu/MegaMenuPanel.js +106 -0
  107. package/dist-es/mega-menu/MegaMenuPanel.js.map +1 -0
  108. package/dist-es/mega-menu/MegaMenuSection.css.js +4 -0
  109. package/dist-es/mega-menu/MegaMenuSection.css.js.map +1 -0
  110. package/dist-es/mega-menu/MegaMenuSection.js +23 -0
  111. package/dist-es/mega-menu/MegaMenuSection.js.map +1 -0
  112. package/dist-es/mega-menu/MegaMenuTrigger.js +90 -0
  113. package/dist-es/mega-menu/MegaMenuTrigger.js.map +1 -0
  114. package/dist-es/mega-menu/useMegaMenu.js +13 -0
  115. package/dist-es/mega-menu/useMegaMenu.js.map +1 -0
  116. package/dist-es/mega-menu/useMegaMenuKeyboard.js +205 -0
  117. package/dist-es/mega-menu/useMegaMenuKeyboard.js.map +1 -0
  118. package/dist-es/side-panel/SidePanel.css.js +1 -1
  119. package/dist-es/side-panel/SidePanel.js +28 -33
  120. package/dist-es/side-panel/SidePanel.js.map +1 -1
  121. package/dist-es/side-panel/SidePanelCloseButton.js +36 -0
  122. package/dist-es/side-panel/SidePanelCloseButton.js.map +1 -0
  123. package/dist-es/side-panel/SidePanelContent.css.js +1 -1
  124. package/dist-es/side-panel/SidePanelContent.js +4 -24
  125. package/dist-es/side-panel/SidePanelContent.js.map +1 -1
  126. package/dist-es/side-panel/SidePanelHeader.css.js +1 -1
  127. package/dist-es/side-panel/SidePanelProvider.js +20 -2
  128. package/dist-es/side-panel/SidePanelProvider.js.map +1 -1
  129. package/dist-es/side-panel/SidePanelTitle.css.js +1 -1
  130. package/dist-es/side-panel/SidePanelTitle.js +1 -0
  131. package/dist-es/side-panel/SidePanelTitle.js.map +1 -1
  132. package/dist-es/side-panel/SidePanelTrigger.js +5 -5
  133. package/dist-es/side-panel/SidePanelTrigger.js.map +1 -1
  134. package/dist-es/side-panel/internal/SidePanelContext.js +3 -0
  135. package/dist-es/side-panel/internal/SidePanelContext.js.map +1 -1
  136. package/dist-es/side-panel/internal/useIsScrollable.js +48 -0
  137. package/dist-es/side-panel/internal/useIsScrollable.js.map +1 -0
  138. package/dist-es/side-panel/internal/useSidePanelTabOrder.js +119 -0
  139. package/dist-es/side-panel/internal/useSidePanelTabOrder.js.map +1 -0
  140. package/dist-es/side-panel/useSidePanel.js +3 -1
  141. package/dist-es/side-panel/useSidePanel.js.map +1 -1
  142. package/dist-es/tree/Tree.js +8 -5
  143. package/dist-es/tree/Tree.js.map +1 -1
  144. package/dist-es/tree/TreeContext.js.map +1 -1
  145. package/dist-es/tree/TreeNode.js +20 -16
  146. package/dist-es/tree/TreeNode.js.map +1 -1
  147. package/dist-es/tree/TreeNodeTrigger.js +4 -3
  148. package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
  149. package/dist-es/tree/treeModel.js +57 -0
  150. package/dist-es/tree/treeModel.js.map +1 -0
  151. package/dist-es/tree/useTree.js +49 -43
  152. package/dist-es/tree/useTree.js.map +1 -1
  153. package/dist-types/index.d.ts +1 -2
  154. package/dist-types/mega-menu/MegaMenu.d.ts +27 -0
  155. package/dist-types/mega-menu/MegaMenuContent.d.ts +8 -0
  156. package/dist-types/mega-menu/MegaMenuContext.d.ts +29 -0
  157. package/dist-types/mega-menu/MegaMenuGroup.d.ts +8 -0
  158. package/dist-types/mega-menu/MegaMenuHeader.d.ts +8 -0
  159. package/dist-types/mega-menu/MegaMenuItem.d.ts +12 -0
  160. package/dist-types/mega-menu/MegaMenuItemContent.d.ts +8 -0
  161. package/dist-types/mega-menu/MegaMenuPanel.d.ts +8 -0
  162. package/dist-types/mega-menu/MegaMenuSection.d.ts +8 -0
  163. package/dist-types/mega-menu/MegaMenuTrigger.d.ts +8 -0
  164. package/dist-types/mega-menu/index.d.ts +9 -0
  165. package/dist-types/mega-menu/useMegaMenu.d.ts +6 -0
  166. package/dist-types/mega-menu/useMegaMenuKeyboard.d.ts +30 -0
  167. package/dist-types/side-panel/SidePanelCloseButton.d.ts +2 -0
  168. package/dist-types/side-panel/SidePanelTrigger.d.ts +1 -2
  169. package/dist-types/side-panel/index.d.ts +1 -0
  170. package/dist-types/side-panel/internal/SidePanelContext.d.ts +8 -0
  171. package/dist-types/side-panel/internal/index.d.ts +2 -0
  172. package/dist-types/side-panel/internal/useIsScrollable.d.ts +2 -0
  173. package/dist-types/side-panel/internal/useSidePanelTabOrder.d.ts +7 -0
  174. package/dist-types/side-panel/useSidePanel.d.ts +11 -4
  175. package/dist-types/tree/TreeContext.d.ts +7 -1
  176. package/dist-types/tree/treeModel.d.ts +24 -0
  177. package/dist-types/tree/useTree.d.ts +3 -14
  178. package/package.json +2 -4
  179. package/dist-cjs/rating/Rating.css.js +0 -6
  180. package/dist-cjs/rating/Rating.css.js.map +0 -1
  181. package/dist-cjs/rating/Rating.js +0 -132
  182. package/dist-cjs/rating/Rating.js.map +0 -1
  183. package/dist-cjs/rating/RatingItem.css.js +0 -6
  184. package/dist-cjs/rating/RatingItem.css.js.map +0 -1
  185. package/dist-cjs/rating/RatingItem.js +0 -70
  186. package/dist-cjs/rating/RatingItem.js.map +0 -1
  187. package/dist-cjs/tabs-next/TabBar.css.js +0 -6
  188. package/dist-cjs/tabs-next/TabBar.css.js.map +0 -1
  189. package/dist-cjs/tabs-next/TabBar.js +0 -41
  190. package/dist-cjs/tabs-next/TabBar.js.map +0 -1
  191. package/dist-cjs/tabs-next/TabListLayoutContext.js +0 -13
  192. package/dist-cjs/tabs-next/TabListLayoutContext.js.map +0 -1
  193. package/dist-cjs/tabs-next/TabListNext.css.js +0 -6
  194. package/dist-cjs/tabs-next/TabListNext.css.js.map +0 -1
  195. package/dist-cjs/tabs-next/TabListNext.js +0 -271
  196. package/dist-cjs/tabs-next/TabListNext.js.map +0 -1
  197. package/dist-cjs/tabs-next/TabNext.css.js +0 -6
  198. package/dist-cjs/tabs-next/TabNext.css.js.map +0 -1
  199. package/dist-cjs/tabs-next/TabNext.js +0 -213
  200. package/dist-cjs/tabs-next/TabNext.js.map +0 -1
  201. package/dist-cjs/tabs-next/TabNextAction.js +0 -58
  202. package/dist-cjs/tabs-next/TabNextAction.js.map +0 -1
  203. package/dist-cjs/tabs-next/TabNextContext.js +0 -23
  204. package/dist-cjs/tabs-next/TabNextContext.js.map +0 -1
  205. package/dist-cjs/tabs-next/TabNextPanel.css.js +0 -6
  206. package/dist-cjs/tabs-next/TabNextPanel.css.js.map +0 -1
  207. package/dist-cjs/tabs-next/TabNextPanel.js +0 -92
  208. package/dist-cjs/tabs-next/TabNextPanel.js.map +0 -1
  209. package/dist-cjs/tabs-next/TabNextTrigger.css.js +0 -6
  210. package/dist-cjs/tabs-next/TabNextTrigger.css.js.map +0 -1
  211. package/dist-cjs/tabs-next/TabNextTrigger.js +0 -180
  212. package/dist-cjs/tabs-next/TabNextTrigger.js.map +0 -1
  213. package/dist-cjs/tabs-next/TabOverflowList.css.js +0 -6
  214. package/dist-cjs/tabs-next/TabOverflowList.css.js.map +0 -1
  215. package/dist-cjs/tabs-next/TabOverflowList.js +0 -237
  216. package/dist-cjs/tabs-next/TabOverflowList.js.map +0 -1
  217. package/dist-cjs/tabs-next/TabSlot.js +0 -30
  218. package/dist-cjs/tabs-next/TabSlot.js.map +0 -1
  219. package/dist-cjs/tabs-next/TabSlotRegistryContext.js +0 -16
  220. package/dist-cjs/tabs-next/TabSlotRegistryContext.js.map +0 -1
  221. package/dist-cjs/tabs-next/TabsNext.css.js +0 -6
  222. package/dist-cjs/tabs-next/TabsNext.css.js.map +0 -1
  223. package/dist-cjs/tabs-next/TabsNext.js +0 -195
  224. package/dist-cjs/tabs-next/TabsNext.js.map +0 -1
  225. package/dist-cjs/tabs-next/TabsNextContext.js +0 -47
  226. package/dist-cjs/tabs-next/TabsNextContext.js.map +0 -1
  227. package/dist-cjs/tabs-next/domUtils.js +0 -13
  228. package/dist-cjs/tabs-next/domUtils.js.map +0 -1
  229. package/dist-cjs/tabs-next/hooks/overflowMath.js +0 -86
  230. package/dist-cjs/tabs-next/hooks/overflowMath.js.map +0 -1
  231. package/dist-cjs/tabs-next/hooks/useCollection.js +0 -197
  232. package/dist-cjs/tabs-next/hooks/useCollection.js.map +0 -1
  233. package/dist-cjs/tabs-next/hooks/useFocusWithRetry.js +0 -64
  234. package/dist-cjs/tabs-next/hooks/useFocusWithRetry.js.map +0 -1
  235. package/dist-cjs/tabs-next/hooks/useOverflow.js +0 -266
  236. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +0 -1
  237. package/dist-cjs/tabs-next/hooks/useOverflowLayoutState.js +0 -99
  238. package/dist-cjs/tabs-next/hooks/useOverflowLayoutState.js.map +0 -1
  239. package/dist-cjs/tabs-next/hooks/useOverflowSelectionState.js +0 -60
  240. package/dist-cjs/tabs-next/hooks/useOverflowSelectionState.js.map +0 -1
  241. package/dist-cjs/tabs-next/hooks/useRenderedTabWidth.js +0 -92
  242. package/dist-cjs/tabs-next/hooks/useRenderedTabWidth.js.map +0 -1
  243. package/dist-cjs/tabs-next/hooks/useRenderedTabsRegistry.js +0 -200
  244. package/dist-cjs/tabs-next/hooks/useRenderedTabsRegistry.js.map +0 -1
  245. package/dist-cjs/tabs-next/hooks/useTabListRecovery.js +0 -76
  246. package/dist-cjs/tabs-next/hooks/useTabListRecovery.js.map +0 -1
  247. package/dist-cjs/tabs-next/hooks/useTabRemovalHandler.js +0 -165
  248. package/dist-cjs/tabs-next/hooks/useTabRemovalHandler.js.map +0 -1
  249. package/dist-cjs/tabs-next/hooks/useTabSelectionFocus.js +0 -80
  250. package/dist-cjs/tabs-next/hooks/useTabSelectionFocus.js.map +0 -1
  251. package/dist-cjs/tabs-next/widthMeasurement.js +0 -42
  252. package/dist-cjs/tabs-next/widthMeasurement.js.map +0 -1
  253. package/dist-es/rating/Rating.css.js +0 -4
  254. package/dist-es/rating/Rating.css.js.map +0 -1
  255. package/dist-es/rating/Rating.js +0 -130
  256. package/dist-es/rating/Rating.js.map +0 -1
  257. package/dist-es/rating/RatingItem.css.js +0 -4
  258. package/dist-es/rating/RatingItem.css.js.map +0 -1
  259. package/dist-es/rating/RatingItem.js +0 -68
  260. package/dist-es/rating/RatingItem.js.map +0 -1
  261. package/dist-es/tabs-next/TabBar.css.js +0 -4
  262. package/dist-es/tabs-next/TabBar.css.js.map +0 -1
  263. package/dist-es/tabs-next/TabBar.js +0 -39
  264. package/dist-es/tabs-next/TabBar.js.map +0 -1
  265. package/dist-es/tabs-next/TabListLayoutContext.js +0 -10
  266. package/dist-es/tabs-next/TabListLayoutContext.js.map +0 -1
  267. package/dist-es/tabs-next/TabListNext.css.js +0 -4
  268. package/dist-es/tabs-next/TabListNext.css.js.map +0 -1
  269. package/dist-es/tabs-next/TabListNext.js +0 -269
  270. package/dist-es/tabs-next/TabListNext.js.map +0 -1
  271. package/dist-es/tabs-next/TabNext.css.js +0 -4
  272. package/dist-es/tabs-next/TabNext.css.js.map +0 -1
  273. package/dist-es/tabs-next/TabNext.js +0 -211
  274. package/dist-es/tabs-next/TabNext.js.map +0 -1
  275. package/dist-es/tabs-next/TabNextAction.js +0 -56
  276. package/dist-es/tabs-next/TabNextAction.js.map +0 -1
  277. package/dist-es/tabs-next/TabNextContext.js +0 -20
  278. package/dist-es/tabs-next/TabNextContext.js.map +0 -1
  279. package/dist-es/tabs-next/TabNextPanel.css.js +0 -4
  280. package/dist-es/tabs-next/TabNextPanel.css.js.map +0 -1
  281. package/dist-es/tabs-next/TabNextPanel.js +0 -90
  282. package/dist-es/tabs-next/TabNextPanel.js.map +0 -1
  283. package/dist-es/tabs-next/TabNextTrigger.css.js +0 -4
  284. package/dist-es/tabs-next/TabNextTrigger.css.js.map +0 -1
  285. package/dist-es/tabs-next/TabNextTrigger.js +0 -178
  286. package/dist-es/tabs-next/TabNextTrigger.js.map +0 -1
  287. package/dist-es/tabs-next/TabOverflowList.css.js +0 -4
  288. package/dist-es/tabs-next/TabOverflowList.css.js.map +0 -1
  289. package/dist-es/tabs-next/TabOverflowList.js +0 -235
  290. package/dist-es/tabs-next/TabOverflowList.js.map +0 -1
  291. package/dist-es/tabs-next/TabSlot.js +0 -28
  292. package/dist-es/tabs-next/TabSlot.js.map +0 -1
  293. package/dist-es/tabs-next/TabSlotRegistryContext.js +0 -13
  294. package/dist-es/tabs-next/TabSlotRegistryContext.js.map +0 -1
  295. package/dist-es/tabs-next/TabsNext.css.js +0 -4
  296. package/dist-es/tabs-next/TabsNext.css.js.map +0 -1
  297. package/dist-es/tabs-next/TabsNext.js +0 -193
  298. package/dist-es/tabs-next/TabsNext.js.map +0 -1
  299. package/dist-es/tabs-next/TabsNextContext.js +0 -44
  300. package/dist-es/tabs-next/TabsNextContext.js.map +0 -1
  301. package/dist-es/tabs-next/domUtils.js +0 -11
  302. package/dist-es/tabs-next/domUtils.js.map +0 -1
  303. package/dist-es/tabs-next/hooks/overflowMath.js +0 -82
  304. package/dist-es/tabs-next/hooks/overflowMath.js.map +0 -1
  305. package/dist-es/tabs-next/hooks/useCollection.js +0 -195
  306. package/dist-es/tabs-next/hooks/useCollection.js.map +0 -1
  307. package/dist-es/tabs-next/hooks/useFocusWithRetry.js +0 -62
  308. package/dist-es/tabs-next/hooks/useFocusWithRetry.js.map +0 -1
  309. package/dist-es/tabs-next/hooks/useOverflow.js +0 -264
  310. package/dist-es/tabs-next/hooks/useOverflow.js.map +0 -1
  311. package/dist-es/tabs-next/hooks/useOverflowLayoutState.js +0 -97
  312. package/dist-es/tabs-next/hooks/useOverflowLayoutState.js.map +0 -1
  313. package/dist-es/tabs-next/hooks/useOverflowSelectionState.js +0 -58
  314. package/dist-es/tabs-next/hooks/useOverflowSelectionState.js.map +0 -1
  315. package/dist-es/tabs-next/hooks/useRenderedTabWidth.js +0 -90
  316. package/dist-es/tabs-next/hooks/useRenderedTabWidth.js.map +0 -1
  317. package/dist-es/tabs-next/hooks/useRenderedTabsRegistry.js +0 -198
  318. package/dist-es/tabs-next/hooks/useRenderedTabsRegistry.js.map +0 -1
  319. package/dist-es/tabs-next/hooks/useTabListRecovery.js +0 -74
  320. package/dist-es/tabs-next/hooks/useTabListRecovery.js.map +0 -1
  321. package/dist-es/tabs-next/hooks/useTabRemovalHandler.js +0 -163
  322. package/dist-es/tabs-next/hooks/useTabRemovalHandler.js.map +0 -1
  323. package/dist-es/tabs-next/hooks/useTabSelectionFocus.js +0 -78
  324. package/dist-es/tabs-next/hooks/useTabSelectionFocus.js.map +0 -1
  325. package/dist-es/tabs-next/widthMeasurement.js +0 -36
  326. package/dist-es/tabs-next/widthMeasurement.js.map +0 -1
  327. package/dist-types/rating/Rating.d.ts +0 -48
  328. package/dist-types/rating/RatingItem.d.ts +0 -47
  329. package/dist-types/rating/index.d.ts +0 -1
  330. package/dist-types/tabs-next/TabBar.d.ts +0 -12
  331. package/dist-types/tabs-next/TabListLayoutContext.d.ts +0 -9
  332. package/dist-types/tabs-next/TabListNext.d.ts +0 -12
  333. package/dist-types/tabs-next/TabNext.d.ts +0 -12
  334. package/dist-types/tabs-next/TabNextAction.d.ts +0 -4
  335. package/dist-types/tabs-next/TabNextContext.d.ts +0 -12
  336. package/dist-types/tabs-next/TabNextPanel.d.ts +0 -9
  337. package/dist-types/tabs-next/TabNextTrigger.d.ts +0 -4
  338. package/dist-types/tabs-next/TabOverflowList.d.ts +0 -10
  339. package/dist-types/tabs-next/TabSlot.d.ts +0 -6
  340. package/dist-types/tabs-next/TabSlotRegistryContext.d.ts +0 -5
  341. package/dist-types/tabs-next/TabsNext.d.ts +0 -18
  342. package/dist-types/tabs-next/TabsNextContext.d.ts +0 -43
  343. package/dist-types/tabs-next/domUtils.d.ts +0 -1
  344. package/dist-types/tabs-next/hooks/overflowMath.d.ts +0 -18
  345. package/dist-types/tabs-next/hooks/useCollection.d.ts +0 -30
  346. package/dist-types/tabs-next/hooks/useFocusWithRetry.d.ts +0 -9
  347. package/dist-types/tabs-next/hooks/useOverflow.d.ts +0 -11
  348. package/dist-types/tabs-next/hooks/useOverflowLayoutState.d.ts +0 -13
  349. package/dist-types/tabs-next/hooks/useOverflowSelectionState.d.ts +0 -13
  350. package/dist-types/tabs-next/hooks/useRenderedTabWidth.d.ts +0 -12
  351. package/dist-types/tabs-next/hooks/useRenderedTabsRegistry.d.ts +0 -12
  352. package/dist-types/tabs-next/hooks/useTabListRecovery.d.ts +0 -12
  353. package/dist-types/tabs-next/hooks/useTabRemovalHandler.d.ts +0 -32
  354. package/dist-types/tabs-next/hooks/useTabSelectionFocus.d.ts +0 -15
  355. package/dist-types/tabs-next/index.d.ts +0 -7
  356. package/dist-types/tabs-next/widthMeasurement.d.ts +0 -5
@@ -1,80 +0,0 @@
1
- 'use strict';
2
-
3
- var core = require('@salt-ds/core');
4
- var domAccessibilityApi = require('dom-accessibility-api');
5
- var react = require('react');
6
-
7
- function hasLostDocumentFocus(doc) {
8
- const activeElement = doc.activeElement;
9
- return !activeElement || activeElement === doc.body || activeElement === doc.documentElement || !activeElement.isConnected;
10
- }
11
- function getTabAccessibleName(element) {
12
- return domAccessibilityApi.computeAccessibleName(element).trim();
13
- }
14
- function useTabSelectionFocus({
15
- announce,
16
- focusElementWithRetry,
17
- getRenderedTab,
18
- getSelectedTabElement,
19
- menuOpen,
20
- resolvedOverflowActiveValue,
21
- selected,
22
- selectionFromOverflowValueRef,
23
- targetWindow
24
- }) {
25
- const previousSelected = core.usePrevious(selected, [selected]);
26
- const focusSelectedTab = react.useCallback(() => {
27
- focusElementWithRetry(getSelectedTabElement);
28
- }, [focusElementWithRetry, getSelectedTabElement]);
29
- core.useIsomorphicLayoutEffect(() => {
30
- if (!menuOpen || !resolvedOverflowActiveValue) {
31
- return;
32
- }
33
- focusElementWithRetry(
34
- () => {
35
- var _a;
36
- return (_a = getRenderedTab(resolvedOverflowActiveValue)) == null ? void 0 : _a.trigger;
37
- }
38
- );
39
- }, [
40
- focusElementWithRetry,
41
- getRenderedTab,
42
- menuOpen,
43
- resolvedOverflowActiveValue
44
- ]);
45
- core.useIsomorphicLayoutEffect(() => {
46
- const doc = targetWindow == null ? void 0 : targetWindow.document;
47
- if (!doc || selected === void 0 || previousSelected === void 0 || selected === previousSelected) {
48
- return;
49
- }
50
- if (!hasLostDocumentFocus(doc)) {
51
- return;
52
- }
53
- focusSelectedTab();
54
- }, [focusSelectedTab, previousSelected, selected, targetWindow]);
55
- core.useIsomorphicLayoutEffect(() => {
56
- const selectedFromOverflow = selectionFromOverflowValueRef.current;
57
- if (selectedFromOverflow == null || selected === void 0 || selected === previousSelected) {
58
- return;
59
- }
60
- if (selected !== selectedFromOverflow) {
61
- selectionFromOverflowValueRef.current = null;
62
- return;
63
- }
64
- focusSelectedTab();
65
- const selectedTab = getSelectedTabElement();
66
- const selectedTabName = selectedTab ? getTabAccessibleName(selectedTab) || selected : selected;
67
- announce(`${selectedTabName} moved to main tab list`, 100);
68
- selectionFromOverflowValueRef.current = null;
69
- }, [
70
- announce,
71
- getSelectedTabElement,
72
- previousSelected,
73
- focusSelectedTab,
74
- selected,
75
- selectionFromOverflowValueRef
76
- ]);
77
- }
78
-
79
- exports.useTabSelectionFocus = useTabSelectionFocus;
80
- //# sourceMappingURL=useTabSelectionFocus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTabSelectionFocus.js","sources":["../src/tabs-next/hooks/useTabSelectionFocus.ts"],"sourcesContent":["import { useIsomorphicLayoutEffect, usePrevious } from \"@salt-ds/core\";\nimport { computeAccessibleName } from \"dom-accessibility-api\";\nimport type { MutableRefObject } from \"react\";\nimport { useCallback } from \"react\";\nimport type { TabsNextContextValue } from \"../TabsNextContext\";\n\nfunction hasLostDocumentFocus(doc: Document) {\n const activeElement = doc.activeElement;\n return (\n !activeElement ||\n activeElement === doc.body ||\n activeElement === doc.documentElement ||\n !activeElement.isConnected\n );\n}\n\nfunction getTabAccessibleName(element: HTMLElement) {\n return computeAccessibleName(element).trim();\n}\n\ninterface UseTabSelectionFocusArgs {\n announce: (message: string, timeout?: number) => void;\n focusElementWithRetry: (\n getElement: () => HTMLElement | null | undefined,\n ) => void;\n getRenderedTab: TabsNextContextValue[\"getRenderedTab\"];\n getSelectedTabElement: () => HTMLElement | null | undefined;\n menuOpen: boolean;\n resolvedOverflowActiveValue: string | null;\n selected?: string;\n selectionFromOverflowValueRef: MutableRefObject<string | null>;\n targetWindow: Window | null | undefined;\n}\n\nexport function useTabSelectionFocus({\n announce,\n focusElementWithRetry,\n getRenderedTab,\n getSelectedTabElement,\n menuOpen,\n resolvedOverflowActiveValue,\n selected,\n selectionFromOverflowValueRef,\n targetWindow,\n}: UseTabSelectionFocusArgs) {\n const previousSelected = usePrevious(selected, [selected]);\n\n const focusSelectedTab = useCallback(() => {\n focusElementWithRetry(getSelectedTabElement);\n }, [focusElementWithRetry, getSelectedTabElement]);\n\n useIsomorphicLayoutEffect(() => {\n if (!menuOpen || !resolvedOverflowActiveValue) {\n return;\n }\n\n focusElementWithRetry(\n () => getRenderedTab(resolvedOverflowActiveValue)?.trigger,\n );\n }, [\n focusElementWithRetry,\n getRenderedTab,\n menuOpen,\n resolvedOverflowActiveValue,\n ]);\n\n useIsomorphicLayoutEffect(() => {\n const doc = targetWindow?.document;\n if (\n !doc ||\n selected === undefined ||\n previousSelected === undefined ||\n selected === previousSelected\n ) {\n return;\n }\n\n if (!hasLostDocumentFocus(doc)) {\n return;\n }\n\n focusSelectedTab();\n }, [focusSelectedTab, previousSelected, selected, targetWindow]);\n\n useIsomorphicLayoutEffect(() => {\n const selectedFromOverflow = selectionFromOverflowValueRef.current;\n if (\n selectedFromOverflow == null ||\n selected === undefined ||\n selected === previousSelected\n ) {\n return;\n }\n\n if (selected !== selectedFromOverflow) {\n selectionFromOverflowValueRef.current = null;\n return;\n }\n\n focusSelectedTab();\n\n const selectedTab = getSelectedTabElement();\n const selectedTabName = selectedTab\n ? getTabAccessibleName(selectedTab) || selected\n : selected;\n\n announce(`${selectedTabName} moved to main tab list`, 100);\n selectionFromOverflowValueRef.current = null;\n }, [\n announce,\n getSelectedTabElement,\n previousSelected,\n focusSelectedTab,\n selected,\n selectionFromOverflowValueRef,\n ]);\n}\n"],"names":["computeAccessibleName","usePrevious","useCallback","useIsomorphicLayoutEffect"],"mappings":";;;;;;AAMA,SAAS,qBAAqB,GAAA,EAAe;AAC3C,EAAA,MAAM,gBAAgB,GAAA,CAAI,aAAA;AAC1B,EAAA,OACE,CAAC,iBACD,aAAA,KAAkB,GAAA,CAAI,QACtB,aAAA,KAAkB,GAAA,CAAI,eAAA,IACtB,CAAC,aAAA,CAAc,WAAA;AAEnB;AAEA,SAAS,qBAAqB,OAAA,EAAsB;AAClD,EAAA,OAAOA,yCAAA,CAAsB,OAAO,CAAA,CAAE,IAAA,EAAK;AAC7C;AAgBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,QAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAA;AAAA,EACA,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,2BAAA;AAAA,EACA,QAAA;AAAA,EACA,6BAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,gBAAA,GAAmBC,gBAAA,CAAY,QAAA,EAAU,CAAC,QAAQ,CAAC,CAAA;AAEzD,EAAA,MAAM,gBAAA,GAAmBC,kBAAY,MAAM;AACzC,IAAA,qBAAA,CAAsB,qBAAqB,CAAA;AAAA,EAC7C,CAAA,EAAG,CAAC,qBAAA,EAAuB,qBAAqB,CAAC,CAAA;AAEjD,EAAAC,8BAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,2BAAA,EAA6B;AAC7C,MAAA;AAAA,IACF;AAEA,IAAA,qBAAA;AAAA,MACE,MAAG;AAzDT,QAAA,IAAA,EAAA;AAyDY,QAAA,OAAA,CAAA,EAAA,GAAA,cAAA,CAAe,2BAA2B,MAA1C,IAAA,GAAA,MAAA,GAAA,EAAA,CAA6C,OAAA;AAAA,MAAA;AAAA,KACrD;AAAA,EACF,CAAA,EAAG;AAAA,IACD,qBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAAA,8BAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,MAAM,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,QAAA;AAC1B,IAAA,IACE,CAAC,GAAA,IACD,QAAA,KAAa,UACb,gBAAA,KAAqB,MAAA,IACrB,aAAa,gBAAA,EACb;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,gBAAA,EAAiB;AAAA,EACnB,GAAG,CAAC,gBAAA,EAAkB,gBAAA,EAAkB,QAAA,EAAU,YAAY,CAAC,CAAA;AAE/D,EAAAA,8BAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,uBAAuB,6BAAA,CAA8B,OAAA;AAC3D,IAAA,IACE,oBAAA,IAAwB,IAAA,IACxB,QAAA,KAAa,MAAA,IACb,aAAa,gBAAA,EACb;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,aAAa,oBAAA,EAAsB;AACrC,MAAA,6BAAA,CAA8B,OAAA,GAAU,IAAA;AACxC,MAAA;AAAA,IACF;AAEA,IAAA,gBAAA,EAAiB;AAEjB,IAAA,MAAM,cAAc,qBAAA,EAAsB;AAC1C,IAAA,MAAM,eAAA,GAAkB,WAAA,GACpB,oBAAA,CAAqB,WAAW,KAAK,QAAA,GACrC,QAAA;AAEJ,IAAA,QAAA,CAAS,CAAA,EAAG,eAAe,CAAA,uBAAA,CAAA,EAA2B,GAAG,CAAA;AACzD,IAAA,6BAAA,CAA8B,OAAA,GAAU,IAAA;AAAA,EAC1C,CAAA,EAAG;AAAA,IACD,QAAA;AAAA,IACA,qBAAA;AAAA,IACA,gBAAA;AAAA,IACA,gBAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACD,CAAA;AACH;;;;"}
@@ -1,42 +0,0 @@
1
- 'use strict';
2
-
3
- const WIDTH_EPSILON = 0.5;
4
- function getMeasuredWidth(element) {
5
- if (!element) {
6
- return 0;
7
- }
8
- const width = element.getBoundingClientRect().width;
9
- return width || element.clientWidth || 0;
10
- }
11
- function getIntrinsicMeasuredWidth(element) {
12
- if (!element) {
13
- return 0;
14
- }
15
- const borderWidth = element.offsetWidth - element.clientWidth;
16
- return Math.max(getMeasuredWidth(element), element.scrollWidth + borderWidth);
17
- }
18
- function getGapValue(styles) {
19
- return Number.parseFloat(styles.columnGap || styles.gap || "0") || 0;
20
- }
21
- function seedWidthMap(elements) {
22
- const widths = /* @__PURE__ */ new Map();
23
- for (const element of elements) {
24
- widths.set(element, getMeasuredWidth(element));
25
- }
26
- return widths;
27
- }
28
- function updateWidthMap(widths, element, nextWidth, epsilon = WIDTH_EPSILON) {
29
- const previousWidth = widths.get(element);
30
- widths.set(element, nextWidth);
31
- if (previousWidth === void 0) {
32
- return false;
33
- }
34
- return Math.abs(previousWidth - nextWidth) > epsilon;
35
- }
36
-
37
- exports.getGapValue = getGapValue;
38
- exports.getIntrinsicMeasuredWidth = getIntrinsicMeasuredWidth;
39
- exports.getMeasuredWidth = getMeasuredWidth;
40
- exports.seedWidthMap = seedWidthMap;
41
- exports.updateWidthMap = updateWidthMap;
42
- //# sourceMappingURL=widthMeasurement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"widthMeasurement.js","sources":["../src/tabs-next/widthMeasurement.ts"],"sourcesContent":["const WIDTH_EPSILON = 0.5;\n\nexport function getMeasuredWidth(element: HTMLElement | null | undefined) {\n if (!element) {\n return 0;\n }\n\n const width = element.getBoundingClientRect().width;\n return width || element.clientWidth || 0;\n}\n\nexport function getIntrinsicMeasuredWidth(\n element: HTMLElement | null | undefined,\n) {\n if (!element) {\n return 0;\n }\n\n const borderWidth = element.offsetWidth - element.clientWidth;\n return Math.max(getMeasuredWidth(element), element.scrollWidth + borderWidth);\n}\n\nexport function getGapValue(styles: CSSStyleDeclaration) {\n return Number.parseFloat(styles.columnGap || styles.gap || \"0\") || 0;\n}\n\nexport function seedWidthMap(elements: HTMLElement[]) {\n const widths = new Map<HTMLElement, number>();\n for (const element of elements) {\n widths.set(element, getMeasuredWidth(element));\n }\n return widths;\n}\n\nexport function updateWidthMap(\n widths: Map<HTMLElement, number>,\n element: HTMLElement,\n nextWidth: number,\n epsilon = WIDTH_EPSILON,\n) {\n const previousWidth = widths.get(element);\n widths.set(element, nextWidth);\n\n if (previousWidth === undefined) {\n return false;\n }\n\n return Math.abs(previousWidth - nextWidth) > epsilon;\n}\n"],"names":[],"mappings":";;AAAA,MAAM,aAAA,GAAgB,GAAA;AAEf,SAAS,iBAAiB,OAAA,EAAyC;AACxE,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,qBAAA,EAAsB,CAAE,KAAA;AAC9C,EAAA,OAAO,KAAA,IAAS,QAAQ,WAAA,IAAe,CAAA;AACzC;AAEO,SAAS,0BACd,OAAA,EACA;AACA,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,WAAA,GAAc,OAAA,CAAQ,WAAA;AAClD,EAAA,OAAO,KAAK,GAAA,CAAI,gBAAA,CAAiB,OAAO,CAAA,EAAG,OAAA,CAAQ,cAAc,WAAW,CAAA;AAC9E;AAEO,SAAS,YAAY,MAAA,EAA6B;AACvD,EAAA,OAAO,OAAO,UAAA,CAAW,MAAA,CAAO,aAAa,MAAA,CAAO,GAAA,IAAO,GAAG,CAAA,IAAK,CAAA;AACrE;AAEO,SAAS,aAAa,QAAA,EAAyB;AACpD,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAyB;AAC5C,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAA,CAAO,GAAA,CAAI,OAAA,EAAS,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAAA,EAC/C;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,cAAA,CACd,MAAA,EACA,OAAA,EACA,SAAA,EACA,UAAU,aAAA,EACV;AACA,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,GAAA,CAAI,OAAO,CAAA;AACxC,EAAA,MAAA,CAAO,GAAA,CAAI,SAAS,SAAS,CAAA;AAE7B,EAAA,IAAI,kBAAkB,MAAA,EAAW;AAC/B,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,GAAgB,SAAS,CAAA,GAAI,OAAA;AAC/C;;;;;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltRating {\n display: inline-flex;\n box-sizing: border-box;\n}\n\n.saltFormField .saltRating-container {\n height: var(--salt-size-base);\n padding-top: calc(var(--salt-spacing-100) + var(--salt-spacing-fixed-100));\n}\n\n.saltFormField .saltRating-label {\n min-height: var(--salt-size-base);\n padding-top: var(--salt-spacing-100);\n}\n\n.saltRating-labelBottom {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--salt-spacing-75);\n}\n\n.saltRating-labelRight {\n flex-direction: row;\n gap: var(--salt-spacing-150);\n}\n\n.saltRating-container {\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-150);\n flex-wrap: nowrap;\n justify-content: flex-start;\n padding-top: var(--salt-spacing-fixed-100);\n padding-bottom: var(--salt-spacing-fixed-100);\n box-sizing: border-box;\n}\n\n.saltRating-label {\n color: var(--salt-content-primary-foreground);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n box-sizing: border-box;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=Rating.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Rating.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,130 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { makePrefixer, useFormFieldProps, useControlled, useId, capitalize } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef, useState } from 'react';
7
- import css_248z from './Rating.css.js';
8
- import { RatingItem } from './RatingItem.js';
9
-
10
- const withBaseName = makePrefixer("saltRating");
11
- const defaultGetLabel = (value) => `${value} Star${value > 1 ? "s" : ""}`;
12
- const Rating = forwardRef(function Rating2({
13
- value: valueProp,
14
- defaultValue = 0,
15
- name: nameProp,
16
- onChange,
17
- className,
18
- readOnly: readOnlyProp,
19
- disabled: disabledProp,
20
- max = 5,
21
- getLabel = defaultGetLabel,
22
- getVisibleLabel,
23
- labelPlacement = "right",
24
- "aria-label": ariaLabel,
25
- "aria-labelledby": ariaLabelledBy,
26
- "aria-describedby": ariaDescribedBy,
27
- ...restProps
28
- }, ref) {
29
- const targetWindow = useWindow();
30
- useComponentCssInjection({
31
- testId: "salt-rating",
32
- css: css_248z,
33
- window: targetWindow
34
- });
35
- const {
36
- disabled: formFieldDisabled,
37
- readOnly: formFieldReadOnly,
38
- a11yProps: {
39
- "aria-describedby": formFieldDescribedBy,
40
- "aria-labelledby": formFieldLabelledBy
41
- } = {}
42
- } = useFormFieldProps();
43
- const disabled = formFieldDisabled || disabledProp;
44
- const readOnly = formFieldReadOnly || readOnlyProp;
45
- const [hoveredValue, setHoveredValue] = useState(0);
46
- const [selected, setSelected] = useControlled({
47
- controlled: valueProp,
48
- default: defaultValue,
49
- name: "Rating",
50
- state: "value"
51
- });
52
- const name = useId(nameProp);
53
- const handleMouseEnter = (event) => {
54
- if (readOnly || disabled) return;
55
- const itemValue = Number.parseInt(event.currentTarget.value, 10);
56
- setHoveredValue(itemValue);
57
- };
58
- const handleChange = (event) => {
59
- if (readOnly) {
60
- event.preventDefault();
61
- return;
62
- }
63
- const itemValue = Number.parseInt(event.currentTarget.value, 10);
64
- setSelected(itemValue);
65
- onChange == null ? void 0 : onChange(event, itemValue);
66
- };
67
- return /* @__PURE__ */ jsxs(
68
- "div",
69
- {
70
- ref,
71
- className: clsx(
72
- withBaseName(),
73
- withBaseName(`label${capitalize(labelPlacement)}`),
74
- className
75
- ),
76
- ...restProps,
77
- children: [
78
- /* @__PURE__ */ jsx(
79
- "div",
80
- {
81
- role: "radiogroup",
82
- className: withBaseName("container"),
83
- "aria-readonly": readOnly || void 0,
84
- "aria-label": ariaLabel,
85
- "aria-labelledby": clsx(formFieldLabelledBy, ariaLabelledBy) || void 0,
86
- "aria-describedby": clsx(formFieldDescribedBy, ariaDescribedBy) || void 0,
87
- onMouseLeave: () => setHoveredValue(0),
88
- children: Array.from({ length: max }, (_, index) => {
89
- const itemValue = index + 1;
90
- const isHovered = hoveredValue > 0 && itemValue <= hoveredValue;
91
- const isSelected = hoveredValue === 0 && itemValue <= selected;
92
- const isUnselecting = hoveredValue > 0 && itemValue > hoveredValue && itemValue <= selected;
93
- return /* @__PURE__ */ jsx(
94
- RatingItem,
95
- {
96
- currentRating: selected,
97
- isHovered,
98
- isSelected,
99
- isUnselecting,
100
- onMouseEnter: handleMouseEnter,
101
- onChange: handleChange,
102
- value: itemValue,
103
- readOnly,
104
- disabled,
105
- name,
106
- "aria-label": getLabel == null ? void 0 : getLabel(itemValue)
107
- },
108
- itemValue
109
- );
110
- })
111
- }
112
- ),
113
- getVisibleLabel && /* @__PURE__ */ jsx(
114
- "div",
115
- {
116
- className: clsx(
117
- withBaseName("label"),
118
- withBaseName(`label-${labelPlacement}`)
119
- ),
120
- "aria-hidden": true,
121
- children: getVisibleLabel(hoveredValue || selected, max)
122
- }
123
- )
124
- ]
125
- }
126
- );
127
- });
128
-
129
- export { Rating };
130
- //# sourceMappingURL=Rating.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Rating.js","sources":["../src/rating/Rating.tsx"],"sourcesContent":["import {\n capitalize,\n makePrefixer,\n useControlled,\n useFormFieldProps,\n useId,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n useState,\n} from \"react\";\nimport ratingCss from \"./Rating.css\";\nimport { RatingItem } from \"./RatingItem\";\n\nconst withBaseName = makePrefixer(\"saltRating\");\n\nexport interface RatingProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * When provided, the component is controlled.\n */\n value?: number;\n /**\n * Default rating value for uncontrolled mode.\n * @default 0\n */\n defaultValue?: number;\n /**\n * Callback function for rating change.\n * The first parameter is the event, and the second is the selected rating value.\n */\n onChange?: (event: ChangeEvent<HTMLInputElement>, value: number) => void;\n /**\n * If true, the rating component will be in a read-only state.\n */\n readOnly?: boolean;\n /**\n * If true, the rating component will be in a disabled state.\n */\n disabled?: boolean;\n /**\n * Total number of icons displayed.\n * @default 5\n */\n max?: number;\n /**\n * Function used to provide a user-friendly name for the current value of the rating. Primarily used by screen readers.\n */\n getLabel?: (value: number) => string;\n /**\n * Function used to provide a visible label for the rating.\n */\n getVisibleLabel?: (value: number, max: number) => string;\n /**\n * Position of the label relative to the rating component.\n * @default \"right\"\n */\n labelPlacement?: \"right\" | \"bottom\";\n /**\n * The name to be set on each radio button within the group. If not set, then one will be generated for you.\n */\n name?: string;\n}\n\nconst defaultGetLabel = (value: number) =>\n `${value} Star${value > 1 ? \"s\" : \"\"}`;\n\nexport const Rating = forwardRef<HTMLDivElement, RatingProps>(function Rating(\n {\n value: valueProp,\n defaultValue = 0,\n name: nameProp,\n onChange,\n className,\n readOnly: readOnlyProp,\n disabled: disabledProp,\n max = 5,\n getLabel = defaultGetLabel,\n getVisibleLabel,\n labelPlacement = \"right\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": ariaDescribedBy,\n ...restProps\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-rating\",\n css: ratingCss,\n window: targetWindow,\n });\n const {\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n } = useFormFieldProps();\n\n const disabled = formFieldDisabled || disabledProp;\n const readOnly = formFieldReadOnly || readOnlyProp;\n\n const [hoveredValue, setHoveredValue] = useState(0);\n const [selected, setSelected] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"Rating\",\n state: \"value\",\n });\n const name = useId(nameProp);\n\n const handleMouseEnter = (event: MouseEvent<HTMLInputElement>) => {\n if (readOnly || disabled) return;\n const itemValue = Number.parseInt(event.currentTarget.value, 10);\n setHoveredValue(itemValue);\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n\n const itemValue = Number.parseInt(event.currentTarget.value, 10);\n setSelected(itemValue);\n onChange?.(event, itemValue);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n withBaseName(`label${capitalize(labelPlacement)}`),\n className,\n )}\n {...restProps}\n >\n <div\n role=\"radiogroup\"\n className={withBaseName(\"container\")}\n aria-readonly={readOnly || undefined}\n aria-label={ariaLabel}\n aria-labelledby={clsx(formFieldLabelledBy, ariaLabelledBy) || undefined}\n aria-describedby={\n clsx(formFieldDescribedBy, ariaDescribedBy) || undefined\n }\n onMouseLeave={() => setHoveredValue(0)}\n >\n {Array.from({ length: max }, (_, index) => {\n const itemValue = index + 1;\n const isHovered = hoveredValue > 0 && itemValue <= hoveredValue;\n const isSelected = hoveredValue === 0 && itemValue <= selected;\n const isUnselecting =\n hoveredValue > 0 &&\n itemValue > hoveredValue &&\n itemValue <= selected;\n return (\n <RatingItem\n key={itemValue}\n currentRating={selected}\n isHovered={isHovered}\n isSelected={isSelected}\n isUnselecting={isUnselecting}\n onMouseEnter={handleMouseEnter}\n onChange={handleChange}\n value={itemValue}\n readOnly={readOnly}\n disabled={disabled}\n name={name}\n aria-label={getLabel?.(itemValue)}\n />\n );\n })}\n </div>\n {getVisibleLabel && (\n <div\n className={clsx(\n withBaseName(\"label\"),\n withBaseName(`label-${labelPlacement}`),\n )}\n aria-hidden\n >\n {getVisibleLabel(hoveredValue || selected, max)}\n </div>\n )}\n </div>\n );\n});\n"],"names":["Rating","ratingCss"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltRatingItem {\n height: var(--salt-size-icon);\n width: var(--salt-size-icon);\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n cursor: var(--salt-cursor-hover);\n}\n\n.saltRatingItem-disabled,\n.saltRatingItem-readOnly {\n cursor: default;\n}\n\n.saltRatingItem-input {\n position: absolute;\n opacity: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n cursor: inherit;\n z-index: 1;\n}\n\n.saltRatingItem-input::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n padding: var(--salt-spacing-fixed-600);\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n box-sizing: content-box;\n}\n\n.saltRatingItem-icon {\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--salt-sentiment-neutral-dataviz);\n}\n\n.saltRatingItem-icon .saltIcon {\n --saltIcon-size: var(--salt-size-icon);\n}\n\n.saltRatingItem-input:focus-visible ~ .saltRatingItem-icon::after {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n padding: var(--salt-spacing-fixed-600);\n transform: translate(-50%, -50%);\n top: 50%;\n left: 50%;\n box-sizing: content-box;\n\n border-radius: var(--salt-palette-corner-strongest);\n outline: var(--salt-focused-outline);\n outline-offset: calc(-1 * var(--salt-spacing-fixed-200));\n}\n\n.saltRatingItem-disabled {\n cursor: var(--salt-cursor-disabled);\n opacity: var(--salt-palette-opacity-disabled);\n}\n\n.saltRatingItem-disabled .saltRatingItem-input {\n cursor: var(--salt-cursor-disabled);\n}\n\n.saltRatingItem-selected .saltRatingItem-icon,\n.saltRatingItem-hovered .saltRatingItem-icon,\n.saltRatingItem-unselecting .saltRatingItem-icon {\n color: var(--salt-sentiment-accent-dataviz);\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=RatingItem.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RatingItem.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,68 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { makePrefixer, useIcon } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef } from 'react';
7
- import css_248z from './RatingItem.css.js';
8
-
9
- const withBaseName = makePrefixer("saltRatingItem");
10
- const RatingItem = forwardRef(
11
- function RatingItem2(props, ref) {
12
- const {
13
- "aria-label": ariaLabel,
14
- value,
15
- currentRating,
16
- isHovered,
17
- isSelected,
18
- isUnselecting,
19
- onMouseEnter,
20
- onChange,
21
- readOnly = false,
22
- disabled = false,
23
- name
24
- } = props;
25
- const { RatingIcon, RatingSelectedIcon, RatingUnselectingIcon } = useIcon();
26
- const targetWindow = useWindow();
27
- useComponentCssInjection({
28
- testId: "salt-rating-item",
29
- css: css_248z,
30
- window: targetWindow
31
- });
32
- const icon = isHovered || isSelected ? /* @__PURE__ */ jsx(RatingSelectedIcon, { "aria-hidden": true }) : isUnselecting ? /* @__PURE__ */ jsx(RatingUnselectingIcon, { "aria-hidden": true }) : /* @__PURE__ */ jsx(RatingIcon, { "aria-hidden": true });
33
- return /* @__PURE__ */ jsxs(
34
- "div",
35
- {
36
- className: clsx(withBaseName(), {
37
- [withBaseName("hovered")]: isHovered,
38
- [withBaseName("selected")]: isSelected,
39
- [withBaseName("unselecting")]: isUnselecting,
40
- [withBaseName("disabled")]: disabled,
41
- [withBaseName("readOnly")]: readOnly
42
- }),
43
- children: [
44
- /* @__PURE__ */ jsx(
45
- "input",
46
- {
47
- ref,
48
- type: "radio",
49
- name,
50
- value,
51
- checked: currentRating === value,
52
- onChange,
53
- onMouseEnter,
54
- disabled,
55
- readOnly,
56
- className: withBaseName("input"),
57
- "aria-label": ariaLabel
58
- }
59
- ),
60
- /* @__PURE__ */ jsx("span", { className: withBaseName("icon"), "aria-hidden": true, children: icon })
61
- ]
62
- }
63
- );
64
- }
65
- );
66
-
67
- export { RatingItem };
68
- //# sourceMappingURL=RatingItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RatingItem.js","sources":["../src/rating/RatingItem.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n} from \"react\";\nimport ratingItemCss from \"./RatingItem.css\";\n\nconst withBaseName = makePrefixer(\"saltRatingItem\");\n\nexport interface RatingItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * specifies the value of the feedback item.\n */\n value: number;\n /**\n * To define if the current star is being hovered.\n */\n isHovered?: boolean;\n /**\n * To specify if the item is selected.\n */\n isSelected?: boolean;\n /**\n * defines the current selected rating.\n */\n currentRating?: number;\n /**\n * callback function when feedback item is hovered.\n */\n onMouseEnter: (event: MouseEvent<HTMLInputElement>) => void;\n /**\n * callback function when feedback item is clicked.\n */\n onChange: (event: ChangeEvent<HTMLInputElement>) => void;\n /**\n * If true, the rating item will be in a read-only state.\n */\n readOnly?: boolean;\n /**\n * If true, the rating item will be in a disabled state.\n */\n disabled?: boolean;\n /**\n * Indicates whether the current rating item is in an active state.\n * An active state typically means that the item is visually highlighted\n * or styled differently to indicate that it is part of the current selection\n * or interaction (e.g., hover or focus).\n */\n isUnselecting?: boolean;\n /**\n * Name of the radio group\n */\n name?: string;\n}\n\nexport const RatingItem = forwardRef<HTMLInputElement, RatingItemProps>(\n function RatingItem(props, ref) {\n const {\n \"aria-label\": ariaLabel,\n value,\n currentRating,\n isHovered,\n isSelected,\n isUnselecting,\n onMouseEnter,\n onChange,\n readOnly = false,\n disabled = false,\n name,\n } = props;\n\n const { RatingIcon, RatingSelectedIcon, RatingUnselectingIcon } = useIcon();\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-rating-item\",\n css: ratingItemCss,\n window: targetWindow,\n });\n\n const icon =\n isHovered || isSelected ? (\n <RatingSelectedIcon aria-hidden />\n ) : isUnselecting ? (\n <RatingUnselectingIcon aria-hidden />\n ) : (\n <RatingIcon aria-hidden />\n );\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"hovered\")]: isHovered,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"unselecting\")]: isUnselecting,\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"readOnly\")]: readOnly,\n })}\n >\n <input\n ref={ref}\n type=\"radio\"\n name={name}\n value={value}\n checked={currentRating === value}\n onChange={onChange}\n onMouseEnter={onMouseEnter}\n disabled={disabled}\n readOnly={readOnly}\n className={withBaseName(\"input\")}\n aria-label={ariaLabel}\n />\n <span className={withBaseName(\"icon\")} aria-hidden>\n {icon}\n </span>\n </div>\n );\n },\n);\n"],"names":["RatingItem","ratingItemCss"],"mappings":";;;;;;;;AAYA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA;AAgD3C,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,SAASA,WAAAA,CAAW,KAAA,EAAO,GAAA,EAAK;AAC9B,IAAA,MAAM;AAAA,MACJ,YAAA,EAAc,SAAA;AAAA,MACd,KAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA,GAAW,KAAA;AAAA,MACX,QAAA,GAAW,KAAA;AAAA,MACX;AAAA,KACF,GAAI,KAAA;AAEJ,IAAA,MAAM,EAAE,UAAA,EAAY,kBAAA,EAAoB,qBAAA,KAA0B,OAAA,EAAQ;AAE1E,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,kBAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,MAAM,OACJ,SAAA,IAAa,UAAA,mBACX,GAAA,CAAC,kBAAA,EAAA,EAAmB,eAAW,IAAA,EAAC,CAAA,GAC9B,aAAA,mBACF,GAAA,CAAC,yBAAsB,aAAA,EAAW,IAAA,EAAC,oBAEnC,GAAA,CAAC,UAAA,EAAA,EAAW,eAAW,IAAA,EAAC,CAAA;AAG5B,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,CAAK,YAAA,EAAa,EAAG;AAAA,UAC9B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG,SAAA;AAAA,UAC3B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,UAAA;AAAA,UAC5B,CAAC,YAAA,CAAa,aAAa,CAAC,GAAG,aAAA;AAAA,UAC/B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,QAAA;AAAA,UAC5B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG;AAAA,SAC7B,CAAA;AAAA,QAED,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,IAAA,EAAK,OAAA;AAAA,cACL,IAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAS,aAAA,KAAkB,KAAA;AAAA,cAC3B,QAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,cAC/B,YAAA,EAAY;AAAA;AAAA,WACd;AAAA,0BACA,GAAA,CAAC,UAAK,SAAA,EAAW,YAAA,CAAa,MAAM,CAAA,EAAG,aAAA,EAAW,MAC/C,QAAA,EAAA,IAAA,EACH;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = ".saltTabBar {\n display: flex;\n align-items: center;\n flex-direction: row;\n position: relative;\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n\n.saltTabBar-strip {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex: 1 1 auto;\n gap: var(--salt-spacing-100);\n box-sizing: border-box;\n min-width: 0;\n max-width: 100%;\n}\n\n.saltTabBar-divider::before {\n content: \"\";\n position: absolute;\n inset: auto 0 0 0;\n height: var(--salt-size-fixed-100);\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-secondary-borderColor);\n}\n\n.saltTabBar-inset {\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=TabBar.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,39 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { makePrefixer } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import { clsx } from 'clsx';
6
- import { forwardRef } from 'react';
7
- import css_248z from './TabBar.css.js';
8
-
9
- const withBaseName = makePrefixer("saltTabBar");
10
- const TabBar = forwardRef(
11
- function TabBar2(props, ref) {
12
- const { className, children, divider, inset, ...rest } = props;
13
- const targetWindow = useWindow();
14
- useComponentCssInjection({
15
- testId: "salt-tab-bar",
16
- css: css_248z,
17
- window: targetWindow
18
- });
19
- return /* @__PURE__ */ jsx(
20
- "div",
21
- {
22
- className: clsx(
23
- withBaseName(),
24
- {
25
- [withBaseName("divider")]: divider,
26
- [withBaseName("inset")]: inset
27
- },
28
- className
29
- ),
30
- ...rest,
31
- ref,
32
- children: /* @__PURE__ */ jsx("div", { className: withBaseName("strip"), children })
33
- }
34
- );
35
- }
36
- );
37
-
38
- export { TabBar };
39
- //# sourceMappingURL=TabBar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabBar.js","sources":["../src/tabs-next/TabBar.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 { type ComponentPropsWithRef, forwardRef } from \"react\";\nimport tabBarCss from \"./TabBar.css\";\n\nexport interface TabBarProps extends ComponentPropsWithRef<\"div\"> {\n /**\n * Styling variant with a bottom separator. Defaults to false\n */\n divider?: boolean;\n /**\n * Styling variant with left and right padding. Defaults to false\n */\n inset?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltTabBar\");\n\nexport const TabBar = forwardRef<HTMLDivElement, TabBarProps>(\n function TabBar(props, ref) {\n const { className, children, divider, inset, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tab-bar\",\n css: tabBarCss,\n window: targetWindow,\n });\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"divider\")]: divider,\n [withBaseName(\"inset\")]: inset,\n },\n className,\n )}\n {...rest}\n ref={ref}\n >\n <div className={withBaseName(\"strip\")}>{children}</div>\n </div>\n );\n },\n);\n"],"names":["TabBar","tabBarCss"],"mappings":";;;;;;;;AAkBA,MAAM,YAAA,GAAe,aAAa,YAAY,CAAA;AAEvC,MAAM,MAAA,GAAS,UAAA;AAAA,EACpB,SAASA,OAAAA,CAAO,KAAA,EAAO,GAAA,EAAK;AAC1B,IAAA,MAAM,EAAE,SAAA,EAAW,QAAA,EAAU,SAAS,KAAA,EAAO,GAAG,MAAK,GAAI,KAAA;AAEzD,IAAA,MAAM,eAAe,SAAA,EAAU;AAC/B,IAAA,wBAAA,CAAyB;AAAA,MACvB,MAAA,EAAQ,cAAA;AAAA,MACR,GAAA,EAAKC,QAAA;AAAA,MACL,MAAA,EAAQ;AAAA,KACT,CAAA;AAED,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA;AAAA,UACT,YAAA,EAAa;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG,OAAA;AAAA,YAC3B,CAAC,YAAA,CAAa,OAAO,CAAC,GAAG;AAAA,WAC3B;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QAEA,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,OAAO,GAAI,QAAA,EAAS;AAAA;AAAA,KACnD;AAAA,EAEJ;AACF;;;;"}
@@ -1,10 +0,0 @@
1
- import { createContext } from '@salt-ds/core';
2
- import { useContext } from 'react';
3
-
4
- const TabListLayoutContext = createContext("TabListLayoutContext", null);
5
- function useTabListLayout() {
6
- return useContext(TabListLayoutContext);
7
- }
8
-
9
- export { TabListLayoutContext, useTabListLayout };
10
- //# sourceMappingURL=TabListLayoutContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabListLayoutContext.js","sources":["../src/tabs-next/TabListLayoutContext.tsx"],"sourcesContent":["import { createContext } from \"@salt-ds/core\";\nimport { useContext } from \"react\";\n\nexport type TabSlotLocation = \"hidden\" | \"main\" | \"overflow\";\n\nexport interface TabListLayoutContextValue {\n getLocation: (value: string) => TabSlotLocation;\n overflowActiveValue: string | null;\n setOverflowActiveValue: (value: string | null) => void;\n moveOverflowFocus: (\n key: \"ArrowDown\" | \"ArrowUp\" | \"Home\" | \"End\",\n value: string,\n ) => boolean;\n}\n\nexport const TabListLayoutContext =\n createContext<TabListLayoutContextValue | null>(\"TabListLayoutContext\", null);\n\nexport function useTabListLayout() {\n return useContext(TabListLayoutContext);\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,oBAAA,GACX,aAAA,CAAgD,sBAAA,EAAwB,IAAI;AAEvE,SAAS,gBAAA,GAAmB;AACjC,EAAA,OAAO,WAAW,oBAAoB,CAAA;AACxC;;;;"}
@@ -1,4 +0,0 @@
1
- var css_248z = "/* Component class applied to the root element */\n.saltTabListNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n background: transparent;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n gap: var(--salt-spacing-100);\n max-width: 100%;\n min-width: 0;\n flex: 0 1 auto;\n}\n\n.saltTabListNext-center {\n justify-content: center;\n}\n\n.saltTabListNext-right {\n justify-content: flex-end;\n}\n\n.saltTabListNext-activeColorPrimary {\n --saltTabListNext-activeColor: var(--salt-container-primary-background);\n}\n\n.saltTabListNext-activeColorSecondary {\n --saltTabListNext-activeColor: var(--salt-container-secondary-background);\n}\n\n.saltTabListNext-activeColorTertiary {\n --saltTabListNext-activeColor: var(--salt-container-tertiary-background);\n}\n\n.saltTabListNext-measureContainer {\n position: absolute;\n top: 0;\n left: 0;\n height: 0;\n overflow: hidden;\n pointer-events: none;\n visibility: hidden;\n white-space: nowrap;\n}\n";
2
-
3
- export { css_248z as default };
4
- //# sourceMappingURL=TabListNext.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TabListNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}