@smwb/ui-solid 0.4.0 → 0.4.1

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 (291) hide show
  1. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  2. package/dist/components/layout/appLayout/appLayout.js +43 -43
  3. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  4. package/dist/components/navigation/bottomBar/bottomBar.js +31 -30
  5. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  6. package/dist/components/navigation/sidebar/sidebar.js +48 -47
  7. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  8. package/dist/headless/components/layout/appLayout/appLayout.js +43 -43
  9. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  10. package/dist/headless/components/navigation/bottomBar/bottomBar.js +31 -30
  11. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  12. package/dist/headless/components/navigation/sidebar/sidebar.js +48 -47
  13. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  14. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +1 -1
  15. package/dist/headless/source/components/base/icon/icon.jsx +1 -1
  16. package/dist/headless/source/components/base/ripple/ripple.jsx +1 -1
  17. package/dist/headless/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
  18. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +1 -1
  19. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +1 -1
  20. package/dist/headless/source/components/dataDisplay/badge/badge.jsx +1 -1
  21. package/dist/headless/source/components/dataDisplay/card/card.jsx +1 -1
  22. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +1 -1
  23. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +1 -1
  24. package/dist/headless/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
  25. package/dist/headless/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
  26. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
  27. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
  28. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
  29. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
  30. package/dist/headless/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
  31. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
  32. package/dist/headless/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
  33. package/dist/headless/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
  34. package/dist/headless/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
  35. package/dist/headless/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
  36. package/dist/headless/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
  37. package/dist/headless/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
  38. package/dist/headless/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
  39. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
  40. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +1 -1
  41. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +1 -1
  42. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +1 -1
  43. package/dist/headless/source/components/dataDisplay/imagesList/imagesList.jsx +1 -1
  44. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +1 -1
  45. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
  46. package/dist/headless/source/components/dataDisplay/list/list.jsx +1 -1
  47. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +1 -1
  48. package/dist/headless/source/components/dataDisplay/table/table.jsx +1 -1
  49. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +1 -1
  50. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +1 -1
  51. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +1 -1
  52. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
  53. package/dist/headless/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +1 -1
  54. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +1 -1
  55. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +1 -1
  56. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +1 -1
  57. package/dist/headless/source/components/feedBack/message/message.jsx +1 -1
  58. package/dist/headless/source/components/feedBack/modal/modal.jsx +1 -1
  59. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +1 -1
  60. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +1 -1
  61. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +1 -1
  62. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +1 -1
  63. package/dist/headless/source/components/inputs/button/button.jsx +1 -1
  64. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +1 -1
  65. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +1 -1
  66. package/dist/headless/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
  67. package/dist/headless/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
  68. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
  69. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +1 -1
  70. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
  71. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
  72. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
  73. package/dist/headless/source/components/inputs/datePicker/datePickerList.jsx +1 -1
  74. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
  75. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
  76. package/dist/headless/source/components/inputs/fileDrop/countPreview.jsx +1 -1
  77. package/dist/headless/source/components/inputs/fileDrop/fileDrop.jsx +1 -1
  78. package/dist/headless/source/components/inputs/fileDrop/preview.jsx +1 -1
  79. package/dist/headless/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
  80. package/dist/headless/source/components/inputs/fileInput/fileInput.jsx +1 -1
  81. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +1 -1
  82. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +1 -1
  83. package/dist/headless/source/components/inputs/rating/rating.jsx +1 -1
  84. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
  85. package/dist/headless/source/components/inputs/selectField/selectField.jsx +1 -1
  86. package/dist/headless/source/components/inputs/slider/slider.jsx +1 -1
  87. package/dist/headless/source/components/inputs/textField/textField.jsx +1 -1
  88. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
  89. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
  90. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +1 -1
  91. package/dist/headless/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
  92. package/dist/headless/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
  93. package/dist/headless/source/components/inputs/timePicker/timePickerList.jsx +1 -1
  94. package/dist/headless/source/components/inputs/toggle/toggle.jsx +1 -1
  95. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +11 -8
  96. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  97. package/dist/headless/source/components/layout/divider/divider.jsx +1 -1
  98. package/dist/headless/source/components/layout/grid/grid.jsx +1 -1
  99. package/dist/headless/source/components/layout/page/page.jsx +1 -1
  100. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +1 -1
  101. package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx +1 -1
  102. package/dist/headless/source/components/layout/sheet/sheet.jsx +1 -1
  103. package/dist/headless/source/components/layout/stack/stack.jsx +1 -1
  104. package/dist/headless/source/components/navigation/appBar/appBar.jsx +1 -1
  105. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +5 -4
  106. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  107. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +1 -1
  108. package/dist/headless/source/components/navigation/menu/menu.jsx +1 -1
  109. package/dist/headless/source/components/navigation/menu/menuComponent.jsx +1 -1
  110. package/dist/headless/source/components/navigation/menu/menuDivider.jsx +1 -1
  111. package/dist/headless/source/components/navigation/menu/menuFloating.jsx +1 -1
  112. package/dist/headless/source/components/navigation/menu/menuItem.jsx +1 -1
  113. package/dist/headless/source/components/navigation/menu/menuItemIcon.jsx +1 -1
  114. package/dist/headless/source/components/navigation/menu/menuItemText.jsx +1 -1
  115. package/dist/headless/source/components/navigation/menu/menuList.jsx +1 -1
  116. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +1 -1
  117. package/dist/headless/source/components/navigation/pagination/pagination.jsx +1 -1
  118. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -4
  119. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  120. package/dist/headless/source/components/navigation/stepper/stepper.jsx +1 -1
  121. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +1 -1
  122. package/dist/headless/source/components/navigation/tabs/tabs.jsx +1 -1
  123. package/dist/source/components/base/animateHeight/animateHeight.jsx +1 -1
  124. package/dist/source/components/base/icon/icon.jsx +2 -2
  125. package/dist/source/components/base/icon/icon.jsx.map +1 -1
  126. package/dist/source/components/base/ripple/ripple.jsx +2 -2
  127. package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
  128. package/dist/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
  129. package/dist/source/components/dataDisplay/accordion/accordion.jsx +2 -2
  130. package/dist/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
  131. package/dist/source/components/dataDisplay/avatar/avatar.jsx +2 -2
  132. package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  133. package/dist/source/components/dataDisplay/badge/badge.jsx +2 -2
  134. package/dist/source/components/dataDisplay/badge/badge.jsx.map +1 -1
  135. package/dist/source/components/dataDisplay/card/card.jsx +2 -2
  136. package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
  137. package/dist/source/components/dataDisplay/carousel/carousel.jsx +2 -2
  138. package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  139. package/dist/source/components/dataDisplay/chat/chat.jsx +2 -2
  140. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  141. package/dist/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
  142. package/dist/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
  143. package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
  144. package/dist/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
  145. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
  146. package/dist/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
  147. package/dist/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
  148. package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
  149. package/dist/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
  150. package/dist/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
  151. package/dist/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
  152. package/dist/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
  153. package/dist/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
  154. package/dist/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
  155. package/dist/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
  156. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
  157. package/dist/source/components/dataDisplay/chat/chatShell.jsx +1 -1
  158. package/dist/source/components/dataDisplay/chip/chip.jsx +2 -2
  159. package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  160. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +2 -2
  161. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  162. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx +2 -2
  163. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx.map +1 -1
  164. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +2 -2
  165. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
  166. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
  167. package/dist/source/components/dataDisplay/list/list.jsx +2 -2
  168. package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
  169. package/dist/source/components/dataDisplay/list/listItem.jsx +1 -1
  170. package/dist/source/components/dataDisplay/table/table.jsx +2 -2
  171. package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
  172. package/dist/source/components/dataDisplay/table/tableBody.jsx +1 -1
  173. package/dist/source/components/dataDisplay/table/tableCell.jsx +1 -1
  174. package/dist/source/components/dataDisplay/table/tableHead.jsx +1 -1
  175. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
  176. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +2 -2
  177. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx.map +1 -1
  178. package/dist/source/components/dataDisplay/table/tableRow.jsx +1 -1
  179. package/dist/source/components/dataDisplay/treeView/treeView.jsx +2 -2
  180. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  181. package/dist/source/components/dataDisplay/typography/typography.jsx +2 -2
  182. package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  183. package/dist/source/components/feedBack/message/message.jsx +2 -2
  184. package/dist/source/components/feedBack/message/message.jsx.map +1 -1
  185. package/dist/source/components/feedBack/modal/modal.jsx +2 -2
  186. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  187. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx +2 -2
  188. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
  189. package/dist/source/components/feedBack/skeleton/skeleton.jsx +2 -2
  190. package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  191. package/dist/source/components/feedBack/snackbar/snackbar.jsx +2 -2
  192. package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  193. package/dist/source/components/feedBack/tooltip/tooltip.jsx +2 -2
  194. package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  195. package/dist/source/components/inputs/button/button.jsx +2 -2
  196. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  197. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +2 -2
  198. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  199. package/dist/source/components/inputs/checkbox/checkbox.jsx +2 -2
  200. package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  201. package/dist/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
  202. package/dist/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
  203. package/dist/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
  204. package/dist/source/components/inputs/datePicker/datePicker.jsx +2 -2
  205. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  206. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
  207. package/dist/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
  208. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
  209. package/dist/source/components/inputs/datePicker/datePickerList.jsx +1 -1
  210. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
  211. package/dist/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
  212. package/dist/source/components/inputs/fileDrop/countPreview.jsx +1 -1
  213. package/dist/source/components/inputs/fileDrop/fileDrop.jsx +2 -2
  214. package/dist/source/components/inputs/fileDrop/fileDrop.jsx.map +1 -1
  215. package/dist/source/components/inputs/fileDrop/preview.jsx +1 -1
  216. package/dist/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
  217. package/dist/source/components/inputs/fileInput/fileInput.jsx +2 -2
  218. package/dist/source/components/inputs/fileInput/fileInput.jsx.map +1 -1
  219. package/dist/source/components/inputs/floatingButton/floatingButton.jsx +2 -2
  220. package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  221. package/dist/source/components/inputs/radioButton/radioButton.jsx +2 -2
  222. package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  223. package/dist/source/components/inputs/rating/rating.jsx +2 -2
  224. package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
  225. package/dist/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
  226. package/dist/source/components/inputs/selectField/selectField.jsx +2 -2
  227. package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
  228. package/dist/source/components/inputs/slider/slider.jsx +2 -2
  229. package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
  230. package/dist/source/components/inputs/textField/textField.jsx +2 -2
  231. package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
  232. package/dist/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
  233. package/dist/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
  234. package/dist/source/components/inputs/timePicker/timePicker.jsx +2 -2
  235. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  236. package/dist/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
  237. package/dist/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
  238. package/dist/source/components/inputs/timePicker/timePickerList.jsx +1 -1
  239. package/dist/source/components/inputs/toggle/toggle.jsx +2 -2
  240. package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
  241. package/dist/source/components/layout/appLayout/appLayout.jsx +12 -9
  242. package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  243. package/dist/source/components/layout/divider/divider.jsx +2 -2
  244. package/dist/source/components/layout/divider/divider.jsx.map +1 -1
  245. package/dist/source/components/layout/grid/grid.jsx +2 -2
  246. package/dist/source/components/layout/grid/grid.jsx.map +1 -1
  247. package/dist/source/components/layout/page/page.jsx +2 -2
  248. package/dist/source/components/layout/page/page.jsx.map +1 -1
  249. package/dist/source/components/layout/pageHeader/pageHeader.jsx +2 -2
  250. package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  251. package/dist/source/components/layout/screenDivider/screenDivider.jsx +2 -2
  252. package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
  253. package/dist/source/components/layout/sheet/sheet.jsx +2 -2
  254. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  255. package/dist/source/components/layout/stack/stack.jsx +2 -2
  256. package/dist/source/components/layout/stack/stack.jsx.map +1 -1
  257. package/dist/source/components/navigation/appBar/appBar.jsx +2 -2
  258. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  259. package/dist/source/components/navigation/bottomBar/bottomBar.jsx +6 -5
  260. package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  261. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +2 -2
  262. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  263. package/dist/source/components/navigation/menu/menu.jsx +2 -2
  264. package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
  265. package/dist/source/components/navigation/menu/menuComponent.jsx +1 -1
  266. package/dist/source/components/navigation/menu/menuDivider.jsx +1 -1
  267. package/dist/source/components/navigation/menu/menuFloating.jsx +1 -1
  268. package/dist/source/components/navigation/menu/menuItem.jsx +1 -1
  269. package/dist/source/components/navigation/menu/menuItemIcon.jsx +1 -1
  270. package/dist/source/components/navigation/menu/menuItemText.jsx +1 -1
  271. package/dist/source/components/navigation/menu/menuList.jsx +1 -1
  272. package/dist/source/components/navigation/menu/menuSubmenu.jsx +1 -1
  273. package/dist/source/components/navigation/pagination/pagination.jsx +2 -2
  274. package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
  275. package/dist/source/components/navigation/sidebar/sidebar.jsx +6 -5
  276. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  277. package/dist/source/components/navigation/stepper/stepper.jsx +2 -2
  278. package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
  279. package/dist/source/components/navigation/tabs/tab/tab.jsx +2 -2
  280. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  281. package/dist/source/components/navigation/tabs/tabs.jsx +2 -2
  282. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  283. package/package.json +5 -3
  284. package/dist/headless/source/ssr-published.ssr-spec.jsx +0 -35
  285. package/dist/headless/source/ssr-published.ssr-spec.jsx.map +0 -1
  286. package/dist/headless/source/ssr.ssr-spec.jsx +0 -113
  287. package/dist/headless/source/ssr.ssr-spec.jsx.map +0 -1
  288. package/dist/source/ssr-published.ssr-spec.jsx +0 -35
  289. package/dist/source/ssr-published.ssr-spec.jsx.map +0 -1
  290. package/dist/source/ssr.ssr-spec.jsx +0 -113
  291. package/dist/source/ssr.ssr-spec.jsx.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/bottomBar/bottomBar.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/bottomBar/bottomBar.entry.less\";\nimport { type JSX, For, Show, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Menu, MenuItem, MenuItemIcon, MenuItemText } from \"../menu\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport type { SidebarMenuItemProps } from \"../sidebar/sidebar\";\n\nexport type BottomBarMenuItemProps = SidebarMenuItemProps;\n\nexport interface BottomBarProps extends JSX.HTMLAttributes<HTMLElement> {\n menuItems?: SidebarMenuItemProps[];\n visibleCount?: number;\n activeItem?: number | null;\n defaultActiveItem?: number | null;\n onActiveItemChange?: (index: number) => void;\n overflowMenuAriaLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\ninterface BarItemProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"title\"> {\n icon?: JSX.Element;\n title?: string;\n isActive?: boolean;\n as?: string | undefined;\n href?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nfunction BarItem(props: BarItemProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"isActive\", \"icon\", \"title\", \"as\", \"href\", \"ref\"]);\n let rippleActions: RippleActionsRef | undefined;\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n return (\n <Dynamic\n component={local.as ?? \"div\"}\n ref={mergeRefs(local.ref)}\n href={local.href}\n role=\"menuitem\"\n class={cn(\"smwb-bottom-bar__item\", { \"smwb-bottom-bar__item_active\": local.isActive })}\n onPointerDown={onPointerDown}\n {...rest}\n >\n <Show when={local.icon}>\n <span class=\"smwb-bottom-bar__item-icon\">{local.icon}</span>\n </Show>\n <Show when={local.title}>\n <span class=\"smwb-bottom-bar__item-title\">{local.title}</span>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </Dynamic>\n );\n}\n\nexport function BottomBar(props: BottomBarProps): JSX.Element {\n const merged = mergeProps(\n {\n menuItems: [] as SidebarMenuItemProps[],\n visibleCount: 4,\n defaultActiveItem: null as number | null,\n overflowMenuAriaLabel: \"More navigation\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"menuItems\",\n \"visibleCount\",\n \"activeItem\",\n \"defaultActiveItem\",\n \"onActiveItemChange\",\n \"overflowMenuAriaLabel\",\n \"ref\",\n ]);\n\n const [activeItem, setActiveItem] = createControllableState<number | null>({\n value: () => local.activeItem,\n defaultValue: local.defaultActiveItem,\n onChange: (next) => {\n if (next !== null) local.onActiveItemChange?.(next);\n },\n });\n const [overflowOpen, setOverflowOpen] = createSignal(false);\n const [overflowAnchor, setOverflowAnchor] = createSignal<HTMLElement | null>(null);\n\n const safeVisibleCount = (): number => Math.max(0, local.visibleCount);\n const visibleItems = (): SidebarMenuItemProps[] => local.menuItems.slice(0, safeVisibleCount());\n const overflowItems = (): SidebarMenuItemProps[] => local.menuItems.slice(safeVisibleCount());\n const hasOverflow = (): boolean => overflowItems().length > 0;\n const overflowActive = (): boolean =>\n hasOverflow() && activeItem() !== null && (activeItem() as number) >= safeVisibleCount();\n\n return (\n <nav {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-bottom-bar\", local.class)} role=\"navigation\">\n <div class=\"smwb-bottom-bar__nav\" role=\"menubar\">\n <For each={visibleItems()}>\n {(item, idx) => (\n <BarItem\n as={item.as}\n isActive={activeItem() === idx()}\n onClick={(event) => {\n setActiveItem(idx());\n callHandler(item.onClick, event);\n }}\n icon={item.icon}\n title={item.title}\n href={item.href}\n />\n )}\n </For>\n <Show when={hasOverflow()}>\n <BarItem\n ref={(el) => setOverflowAnchor(el as HTMLElement)}\n isActive={overflowActive()}\n onClick={() => setOverflowOpen((prev) => !prev)}\n icon={<Icon name=\"menu\" size={24} />}\n aria-label={local.overflowMenuAriaLabel}\n aria-haspopup=\"menu\"\n aria-expanded={overflowOpen()}\n />\n </Show>\n </div>\n <Show when={hasOverflow()}>\n <Menu\n isOpen={overflowOpen()}\n onClose={() => setOverflowOpen(false)}\n anchorElement={overflowAnchor()}\n placement=\"top\"\n dense\n >\n <For each={overflowItems()}>\n {(item, idx) => {\n const itemIndex = (): number => safeVisibleCount() + idx();\n return (\n <MenuItem\n selected={activeItem() === itemIndex()}\n href={item.href}\n onClick={(event) => {\n setActiveItem(itemIndex());\n callHandler(\n item.onClick,\n event as unknown as MouseEvent & { currentTarget: HTMLDivElement; target: Element }\n );\n setOverflowOpen(false);\n }}\n >\n <Show when={item.icon}>\n <MenuItemIcon>{item.icon}</MenuItemIcon>\n </Show>\n <MenuItemText inset={!item.icon}>{item.title}</MenuItemText>\n </MenuItem>\n );\n }}\n </For>\n </Menu>\n </Show>\n </nav>\n );\n}\n\nexport default BottomBar;\n"],"mappings":"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","names":[],"file":"bottomBar.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/bottomBar/bottomBar.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/bottomBar/bottomBar.entry.less\";\nimport { type JSX, For, Show, children, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Menu, MenuItem, MenuItemIcon, MenuItemText } from \"../menu\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\nimport type { SidebarMenuItemProps } from \"../sidebar/sidebar\";\n\nexport type BottomBarMenuItemProps = SidebarMenuItemProps;\n\nexport interface BottomBarProps extends JSX.HTMLAttributes<HTMLElement> {\n menuItems?: SidebarMenuItemProps[];\n visibleCount?: number;\n activeItem?: number | null;\n defaultActiveItem?: number | null;\n onActiveItemChange?: (index: number) => void;\n overflowMenuAriaLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\ninterface BarItemProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"title\"> {\n icon?: JSX.Element;\n title?: string;\n isActive?: boolean;\n as?: string | undefined;\n href?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\nfunction BarItem(props: BarItemProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"isActive\", \"icon\", \"title\", \"as\", \"href\", \"ref\"]);\n let rippleActions: RippleActionsRef | undefined;\n // Resolve the icon in this item's context so a pre-created element passed via\n // menuItems hydrates (see the same fix in Sidebar/AppLayout).\n const icon = children(() => local.icon);\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n return (\n <Dynamic\n component={local.as ?? \"div\"}\n ref={mergeRefs(local.ref)}\n href={local.href}\n role=\"menuitem\"\n class={cn(\"smwb-bottom-bar__item\", { \"smwb-bottom-bar__item_active\": local.isActive })}\n onPointerDown={onPointerDown}\n {...rest}\n >\n <Show when={icon()}>\n <span class=\"smwb-bottom-bar__item-icon\">{icon()}</span>\n </Show>\n <Show when={local.title}>\n <span class=\"smwb-bottom-bar__item-title\">{local.title}</span>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </Dynamic>\n );\n}\n\nexport function BottomBar(props: BottomBarProps): JSX.Element {\n const merged = mergeProps(\n {\n menuItems: [] as SidebarMenuItemProps[],\n visibleCount: 4,\n defaultActiveItem: null as number | null,\n overflowMenuAriaLabel: \"More navigation\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"menuItems\",\n \"visibleCount\",\n \"activeItem\",\n \"defaultActiveItem\",\n \"onActiveItemChange\",\n \"overflowMenuAriaLabel\",\n \"ref\",\n ]);\n\n const [activeItem, setActiveItem] = createControllableState<number | null>({\n value: () => local.activeItem,\n defaultValue: local.defaultActiveItem,\n onChange: (next) => {\n if (next !== null) local.onActiveItemChange?.(next);\n },\n });\n const [overflowOpen, setOverflowOpen] = createSignal(false);\n const [overflowAnchor, setOverflowAnchor] = createSignal<HTMLElement | null>(null);\n\n const safeVisibleCount = (): number => Math.max(0, local.visibleCount);\n const visibleItems = (): SidebarMenuItemProps[] => local.menuItems.slice(0, safeVisibleCount());\n const overflowItems = (): SidebarMenuItemProps[] => local.menuItems.slice(safeVisibleCount());\n const hasOverflow = (): boolean => overflowItems().length > 0;\n const overflowActive = (): boolean =>\n hasOverflow() && activeItem() !== null && (activeItem() as number) >= safeVisibleCount();\n\n return (\n <nav {...rest} ref={mergeRefs(local.ref)} class={cn(\"smwb-bottom-bar\", local.class)} role=\"navigation\">\n <div class=\"smwb-bottom-bar__nav\" role=\"menubar\">\n <For each={visibleItems()}>\n {(item, idx) => (\n <BarItem\n as={item.as}\n isActive={activeItem() === idx()}\n onClick={(event) => {\n setActiveItem(idx());\n callHandler(item.onClick, event);\n }}\n icon={item.icon}\n title={item.title}\n href={item.href}\n />\n )}\n </For>\n <Show when={hasOverflow()}>\n <BarItem\n ref={(el) => setOverflowAnchor(el as HTMLElement)}\n isActive={overflowActive()}\n onClick={() => setOverflowOpen((prev) => !prev)}\n icon={<Icon name=\"menu\" size={24} />}\n aria-label={local.overflowMenuAriaLabel}\n aria-haspopup=\"menu\"\n aria-expanded={overflowOpen()}\n />\n </Show>\n </div>\n <Show when={hasOverflow()}>\n <Menu\n isOpen={overflowOpen()}\n onClose={() => setOverflowOpen(false)}\n anchorElement={overflowAnchor()}\n placement=\"top\"\n dense\n >\n <For each={overflowItems()}>\n {(item, idx) => {\n const itemIndex = (): number => safeVisibleCount() + idx();\n return (\n <MenuItem\n selected={activeItem() === itemIndex()}\n href={item.href}\n onClick={(event) => {\n setActiveItem(itemIndex());\n callHandler(\n item.onClick,\n event as unknown as MouseEvent & { currentTarget: HTMLDivElement; target: Element }\n );\n setOverflowOpen(false);\n }}\n >\n <Show when={item.icon}>\n <MenuItemIcon>{item.icon}</MenuItemIcon>\n </Show>\n <MenuItemText inset={!item.icon}>{item.title}</MenuItemText>\n </MenuItem>\n );\n }}\n </For>\n </Menu>\n </Show>\n </nav>\n );\n}\n\nexport default BottomBar;\n"],"mappings":"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","names":[],"file":"bottomBar.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/breadcrumbs/breadcrumbs.entry.less";
1
+ import "@smwb/ui-styles/less/components/breadcrumbs/breadcrumbs.entry.less";
2
2
  import { For, Show, children as resolveChildren, mergeProps, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { createControllableState } from "../../../primitives/createControllableState";
@@ -60,4 +60,4 @@ export {
60
60
  Breadcrumbs,
61
61
  breadcrumbs_default as default
62
62
  };
63
- //# sourceMappingURL=breadcrumbs.js.map
63
+ //# sourceMappingURL=breadcrumbs.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/breadcrumbs/breadcrumbs.entry.less\";\nimport { type JSX, type ParentProps, For, Show, children as resolveChildren, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface BreadcrumbsProps extends JSX.HTMLAttributes<HTMLElement> {\n /** Node placed between every crumb. */\n separator?: JSX.Element;\n /** Collapse the middle of the trail when there are more than `maxItems` crumbs. */\n maxItems?: number;\n /** How many leading crumbs to keep when collapsed. */\n itemsBeforeCollapse?: number;\n /** How many trailing crumbs to keep when collapsed. */\n itemsAfterCollapse?: number;\n /** Controlled expanded state. */\n expanded?: boolean;\n /** Fired when the user activates the expand control. */\n onExpand?: () => void;\n /** Accessible label for the expand button. */\n expandLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Breadcrumbs(props: ParentProps<BreadcrumbsProps>): JSX.Element {\n const merged = mergeProps(\n { separator: \"/\" as JSX.Element, maxItems: 8, itemsBeforeCollapse: 1, itemsAfterCollapse: 1, expandLabel: \"Show path\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"separator\",\n \"maxItems\",\n \"itemsBeforeCollapse\",\n \"itemsAfterCollapse\",\n \"expanded\",\n \"onExpand\",\n \"expandLabel\",\n \"children\",\n \"ref\",\n ]);\n\n const [expanded, setExpanded] = createControllableState<boolean>({\n value: () => local.expanded,\n defaultValue: false,\n onChange: () => local.onExpand?.(),\n });\n\n const resolved = resolveChildren(() => local.children);\n const crumbs = (): unknown[] => resolved.toArray();\n\n const collapsed = (): boolean =>\n !expanded() &&\n crumbs().length > local.maxItems &&\n local.itemsBeforeCollapse + local.itemsAfterCollapse < crumbs().length;\n\n const handleExpand = (): void => setExpanded(true);\n\n const rendered = (): unknown[] => {\n const all = crumbs();\n if (!collapsed()) return all;\n return [\n ...all.slice(0, local.itemsBeforeCollapse),\n (\n <button type=\"button\" class=\"smwb-breadcrumbs__expand\" aria-label={local.expandLabel} onClick={handleExpand}>\n …\n </button>\n ),\n ...all.slice(all.length - local.itemsAfterCollapse),\n ];\n };\n\n return (\n <nav {...rest} ref={mergeRefs(local.ref)} data-testid=\"breadcrumbs\" aria-label=\"breadcrumb\" class={cn(\"smwb-breadcrumbs\", local.class)}>\n <ol class=\"smwb-breadcrumbs__list\">\n <For each={rendered()}>\n {(crumb, index) => (\n <>\n <li class=\"smwb-breadcrumbs__item\">{crumb as JSX.Element}</li>\n <Show when={index() < rendered().length - 1}>\n <li class=\"smwb-breadcrumbs__separator\" aria-hidden=\"true\">\n {local.separator}\n </li>\n </Show>\n </>\n )}\n </For>\n </ol>\n </nav>\n );\n}\n\nexport default Breadcrumbs;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,KAAK,MAAM,YAAY,iBAAiB,YAAY,kBAAkB;AAC3G,OAAO,QAAQ;AACf,SAAS,+BAA+B;AACxC,SAAS,iBAA2B;AAoB7B,SAAS,YAAY,OAAmD;AAC7E,QAAM,SAAS;AAAA,IACb,EAAE,WAAW,KAAoB,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,aAAa,YAAY;AAAA,IACtH;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,wBAAiC;AAAA,IAC/D,OAAO,MAAM,MAAM;AAAA,IACnB,cAAc;AAAA,IACd,UAAU,MAAM,MAAM,WAAW;AAAA,EACnC,CAAC;AAED,QAAM,WAAW,gBAAgB,MAAM,MAAM,QAAQ;AACrD,QAAM,SAAS,MAAiB,SAAS,QAAQ;AAEjD,QAAM,YAAY,MAChB,CAAC,SAAS,KACV,OAAO,EAAE,SAAS,MAAM,YACxB,MAAM,sBAAsB,MAAM,qBAAqB,OAAO,EAAE;AAElE,QAAM,eAAe,MAAY,YAAY,IAAI;AAEjD,QAAM,WAAW,MAAiB;AAChC,UAAM,MAAM,OAAO;AACnB,QAAI,CAAC,UAAU,EAAG,QAAO;AACzB,WAAO;AAAA,MACL,GAAG,IAAI,MAAM,GAAG,MAAM,mBAAmB;AAAA,MAEvC,CAAC,OAAO,KAAK,SAAS,MAAM,2BAA2B,YAAY,MAAM,aAAa,SAAS,cAAc;AAAA;AAAA,QAE7G,EAFC;AAAA,MAIH,GAAG,IAAI,MAAM,IAAI,SAAS,MAAM,kBAAkB;AAAA,IACpD;AAAA,EACF;AAEA,SACE,CAAC,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,YAAY,cAAc,WAAW,aAAa,OAAO,GAAG,oBAAoB,MAAM,KAAK,GAAG;AAAA,MACtI,CAAC,GAAG,MAAM,yBAAyB;AAAA,QACjC,CAAC,IAAI,MAAM,SAAS,GAAG;AAAA,WACpB,CAAC,OAAO,UACP,EAAE;AAAA,cACA,CAAC,GAAG,MAAM,0BAA0B,MAAqB,EAAxD,GAA6D;AAAA,cAC9D,CAAC,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,SAAS,GAAG;AAAA,gBAC3C,CAAC,GAAG,MAAM,8BAA8B,YAAY,OAAO;AAAA,mBACxD,MAAM,UAAU;AAAA,gBACnB,EAFC,GAEI;AAAA,cACP,EAJC,KAIM;AAAA,YACT,IACA;AAAA,QACJ,EAXC,IAWK;AAAA,MACR,EAbC,GAaI;AAAA,IACP,EAfC;AAiBL;AAEA,IAAO,sBAAQ;","names":[],"file":"breadcrumbs.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/breadcrumbs/breadcrumbs.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/breadcrumbs/breadcrumbs.entry.less\";\nimport { type JSX, type ParentProps, For, Show, children as resolveChildren, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface BreadcrumbsProps extends JSX.HTMLAttributes<HTMLElement> {\n /** Node placed between every crumb. */\n separator?: JSX.Element;\n /** Collapse the middle of the trail when there are more than `maxItems` crumbs. */\n maxItems?: number;\n /** How many leading crumbs to keep when collapsed. */\n itemsBeforeCollapse?: number;\n /** How many trailing crumbs to keep when collapsed. */\n itemsAfterCollapse?: number;\n /** Controlled expanded state. */\n expanded?: boolean;\n /** Fired when the user activates the expand control. */\n onExpand?: () => void;\n /** Accessible label for the expand button. */\n expandLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Breadcrumbs(props: ParentProps<BreadcrumbsProps>): JSX.Element {\n const merged = mergeProps(\n { separator: \"/\" as JSX.Element, maxItems: 8, itemsBeforeCollapse: 1, itemsAfterCollapse: 1, expandLabel: \"Show path\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"separator\",\n \"maxItems\",\n \"itemsBeforeCollapse\",\n \"itemsAfterCollapse\",\n \"expanded\",\n \"onExpand\",\n \"expandLabel\",\n \"children\",\n \"ref\",\n ]);\n\n const [expanded, setExpanded] = createControllableState<boolean>({\n value: () => local.expanded,\n defaultValue: false,\n onChange: () => local.onExpand?.(),\n });\n\n const resolved = resolveChildren(() => local.children);\n const crumbs = (): unknown[] => resolved.toArray();\n\n const collapsed = (): boolean =>\n !expanded() &&\n crumbs().length > local.maxItems &&\n local.itemsBeforeCollapse + local.itemsAfterCollapse < crumbs().length;\n\n const handleExpand = (): void => setExpanded(true);\n\n const rendered = (): unknown[] => {\n const all = crumbs();\n if (!collapsed()) return all;\n return [\n ...all.slice(0, local.itemsBeforeCollapse),\n (\n <button type=\"button\" class=\"smwb-breadcrumbs__expand\" aria-label={local.expandLabel} onClick={handleExpand}>\n …\n </button>\n ),\n ...all.slice(all.length - local.itemsAfterCollapse),\n ];\n };\n\n return (\n <nav {...rest} ref={mergeRefs(local.ref)} data-testid=\"breadcrumbs\" aria-label=\"breadcrumb\" class={cn(\"smwb-breadcrumbs\", local.class)}>\n <ol class=\"smwb-breadcrumbs__list\">\n <For each={rendered()}>\n {(crumb, index) => (\n <>\n <li class=\"smwb-breadcrumbs__item\">{crumb as JSX.Element}</li>\n <Show when={index() < rendered().length - 1}>\n <li class=\"smwb-breadcrumbs__separator\" aria-hidden=\"true\">\n {local.separator}\n </li>\n </Show>\n </>\n )}\n </For>\n </ol>\n </nav>\n );\n}\n\nexport default Breadcrumbs;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,KAAK,MAAM,YAAY,iBAAiB,YAAY,kBAAkB;AAC3G,OAAO,QAAQ;AACf,SAAS,+BAA+B;AACxC,SAAS,iBAA2B;AAoB7B,SAAS,YAAY,OAAmD;AAC7E,QAAM,SAAS;AAAA,IACb,EAAE,WAAW,KAAoB,UAAU,GAAG,qBAAqB,GAAG,oBAAoB,GAAG,aAAa,YAAY;AAAA,IACtH;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,wBAAiC;AAAA,IAC/D,OAAO,MAAM,MAAM;AAAA,IACnB,cAAc;AAAA,IACd,UAAU,MAAM,MAAM,WAAW;AAAA,EACnC,CAAC;AAED,QAAM,WAAW,gBAAgB,MAAM,MAAM,QAAQ;AACrD,QAAM,SAAS,MAAiB,SAAS,QAAQ;AAEjD,QAAM,YAAY,MAChB,CAAC,SAAS,KACV,OAAO,EAAE,SAAS,MAAM,YACxB,MAAM,sBAAsB,MAAM,qBAAqB,OAAO,EAAE;AAElE,QAAM,eAAe,MAAY,YAAY,IAAI;AAEjD,QAAM,WAAW,MAAiB;AAChC,UAAM,MAAM,OAAO;AACnB,QAAI,CAAC,UAAU,EAAG,QAAO;AACzB,WAAO;AAAA,MACL,GAAG,IAAI,MAAM,GAAG,MAAM,mBAAmB;AAAA,MAEvC,CAAC,OAAO,KAAK,SAAS,MAAM,2BAA2B,YAAY,MAAM,aAAa,SAAS,cAAc;AAAA;AAAA,QAE7G,EAFC;AAAA,MAIH,GAAG,IAAI,MAAM,IAAI,SAAS,MAAM,kBAAkB;AAAA,IACpD;AAAA,EACF;AAEA,SACE,CAAC,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,YAAY,cAAc,WAAW,aAAa,OAAO,GAAG,oBAAoB,MAAM,KAAK,GAAG;AAAA,MACtI,CAAC,GAAG,MAAM,yBAAyB;AAAA,QACjC,CAAC,IAAI,MAAM,SAAS,GAAG;AAAA,WACpB,CAAC,OAAO,UACP,EAAE;AAAA,cACA,CAAC,GAAG,MAAM,0BAA0B,MAAqB,EAAxD,GAA6D;AAAA,cAC9D,CAAC,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,SAAS,GAAG;AAAA,gBAC3C,CAAC,GAAG,MAAM,8BAA8B,YAAY,OAAO;AAAA,mBACxD,MAAM,UAAU;AAAA,gBACnB,EAFC,GAEI;AAAA,cACP,EAJC,KAIM;AAAA,YACT,IACA;AAAA,QACJ,EAXC,IAWK;AAAA,MACR,EAbC,GAaI;AAAA,IACP,EAfC;AAiBL;AAEA,IAAO,sBAAQ;","names":[],"file":"breadcrumbs.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/menu/menu.entry.less";
1
+ import "@smwb/ui-styles/less/components/menu/menu.entry.less";
2
2
  import { mergeProps, splitProps } from "solid-js";
3
3
  import { MenuContext } from "./menuContext";
4
4
  import { MenuComponent } from "./menuComponent";
@@ -25,4 +25,4 @@ export {
25
25
  Menu,
26
26
  menu_default as default
27
27
  };
28
- //# sourceMappingURL=menu.js.map
28
+ //# sourceMappingURL=menu.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/menu/menu.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/menu/menu.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport { MenuContext } from \"./menuContext\";\nimport { MenuComponent } from \"./menuComponent\";\nimport type { MenuFloatingProps } from \"./menuFloating\";\n\nexport type MenuProps = MenuFloatingProps & {\n variant?: \"static\" | \"floating\";\n dense?: boolean;\n};\n\nexport function Menu(props: ParentProps<MenuProps>): JSX.Element {\n const merged = mergeProps({ dense: false, variant: \"floating\" as const }, props);\n const [local, rest] = splitProps(merged, [\"dense\", \"variant\", \"children\", \"ref\"]);\n\n const value = {\n get dense() {\n return local.dense;\n },\n get variant() {\n return local.variant;\n },\n onClose: () => rest.onClose?.(),\n };\n\n return (\n <MenuContext.Provider value={value}>\n <MenuComponent ref={local.ref} {...rest}>\n {local.children}\n </MenuComponent>\n </MenuContext.Provider>\n );\n}\n\nexport default Menu;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAQvB,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,OAAO,OAAO,SAAS,WAAoB,GAAG,KAAK;AAC/E,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,SAAS,WAAW,YAAY,KAAK,CAAC;AAEhF,QAAM,QAAQ;AAAA,IACZ,IAAI,QAAQ;AACV,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,SAAS,MAAM,KAAK,UAAU;AAAA,EAChC;AAEA,SACE,CAAC,YAAY,SAAS,OAAO,OAAO;AAAA,MAClC,CAAC,cAAc,KAAK,MAAM,SAAS,MAAM;AAAA,SACtC,MAAM,SAAS;AAAA,MAClB,EAFC,cAEe;AAAA,IAClB,EAJC,YAAY;AAMjB;AAEA,IAAO,eAAQ;","names":[],"file":"menu.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/menu/menu.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/menu/menu.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport { MenuContext } from \"./menuContext\";\nimport { MenuComponent } from \"./menuComponent\";\nimport type { MenuFloatingProps } from \"./menuFloating\";\n\nexport type MenuProps = MenuFloatingProps & {\n variant?: \"static\" | \"floating\";\n dense?: boolean;\n};\n\nexport function Menu(props: ParentProps<MenuProps>): JSX.Element {\n const merged = mergeProps({ dense: false, variant: \"floating\" as const }, props);\n const [local, rest] = splitProps(merged, [\"dense\", \"variant\", \"children\", \"ref\"]);\n\n const value = {\n get dense() {\n return local.dense;\n },\n get variant() {\n return local.variant;\n },\n onClose: () => rest.onClose?.(),\n };\n\n return (\n <MenuContext.Provider value={value}>\n <MenuComponent ref={local.ref} {...rest}>\n {local.children}\n </MenuComponent>\n </MenuContext.Provider>\n );\n}\n\nexport default Menu;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAQvB,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,OAAO,OAAO,SAAS,WAAoB,GAAG,KAAK;AAC/E,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,SAAS,WAAW,YAAY,KAAK,CAAC;AAEhF,QAAM,QAAQ;AAAA,IACZ,IAAI,QAAQ;AACV,aAAO,MAAM;AAAA,IACf;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,MAAM;AAAA,IACf;AAAA,IACA,SAAS,MAAM,KAAK,UAAU;AAAA,EAChC;AAEA,SACE,CAAC,YAAY,SAAS,OAAO,OAAO;AAAA,MAClC,CAAC,cAAc,KAAK,MAAM,SAAS,MAAM;AAAA,SACtC,MAAM,SAAS;AAAA,MAClB,EAFC,cAEe;AAAA,IAClB,EAJC,YAAY;AAMjB;AAEA,IAAO,eAAQ;","names":[],"file":"menu.jsx"}
@@ -15,4 +15,4 @@ export {
15
15
  MenuComponent,
16
16
  menuComponent_default as default
17
17
  };
18
- //# sourceMappingURL=menuComponent.js.map
18
+ //# sourceMappingURL=menuComponent.jsx.map
@@ -16,4 +16,4 @@ export {
16
16
  MenuDivider,
17
17
  menuDivider_default as default
18
18
  };
19
- //# sourceMappingURL=menuDivider.js.map
19
+ //# sourceMappingURL=menuDivider.jsx.map
@@ -81,4 +81,4 @@ export {
81
81
  buildMenuFloatingMiddleware,
82
82
  menuFloating_default as default
83
83
  };
84
- //# sourceMappingURL=menuFloating.js.map
84
+ //# sourceMappingURL=menuFloating.jsx.map
@@ -65,4 +65,4 @@ export {
65
65
  MenuItem,
66
66
  menuItem_default as default
67
67
  };
68
- //# sourceMappingURL=menuItem.js.map
68
+ //# sourceMappingURL=menuItem.jsx.map
@@ -22,4 +22,4 @@ export {
22
22
  MenuItemIcon,
23
23
  menuItemIcon_default as default
24
24
  };
25
- //# sourceMappingURL=menuItemIcon.js.map
25
+ //# sourceMappingURL=menuItemIcon.jsx.map
@@ -22,4 +22,4 @@ export {
22
22
  MenuItemText,
23
23
  menuItemText_default as default
24
24
  };
25
- //# sourceMappingURL=menuItemText.js.map
25
+ //# sourceMappingURL=menuItemText.jsx.map
@@ -43,4 +43,4 @@ export {
43
43
  MenuList,
44
44
  menuList_default as default
45
45
  };
46
- //# sourceMappingURL=menuList.js.map
46
+ //# sourceMappingURL=menuList.jsx.map
@@ -83,4 +83,4 @@ export {
83
83
  MenuSubmenu,
84
84
  menuSubmenu_default as default
85
85
  };
86
- //# sourceMappingURL=menuSubmenu.js.map
86
+ //# sourceMappingURL=menuSubmenu.jsx.map
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/pagination/pagination.entry.less";
1
+ import "@smwb/ui-styles/less/components/pagination/pagination.entry.less";
2
2
  import { For, Show, mergeProps, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { Icon } from "../../base/icon";
@@ -140,4 +140,4 @@ export {
140
140
  Pagination,
141
141
  pagination_default as default
142
142
  };
143
- //# sourceMappingURL=pagination.js.map
143
+ //# sourceMappingURL=pagination.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/pagination/pagination.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/pagination/pagination.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type PaginationColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface PaginationProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Total number of pages. */\n count: number;\n /** Current page (1-based). */\n page: number;\n /** Pages shown on each side of the current page. */\n siblingCount?: number;\n /** Pages always shown at the start and end. */\n boundaryCount?: number;\n size?: \"small\" | \"medium\";\n /** Item style. */\n variant?: \"filled\" | \"outlined\";\n /** Item shape. */\n shape?: \"rounded\" | \"circular\";\n color?: PaginationColor;\n disabled?: boolean;\n showFirstButton?: boolean;\n showLastButton?: boolean;\n hidePrevButton?: boolean;\n hideNextButton?: boolean;\n onChange?: (page: number) => void;\n ref?: Ref<HTMLElement>;\n}\n\ntype PaginationItem = number | \"start-ellipsis\" | \"end-ellipsis\";\n\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i);\n\nconst buildItems = (count: number, page: number, siblingCount: number, boundaryCount: number): PaginationItem[] => {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2\n );\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0]! - 2 : count - 1\n );\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? ([\"start-ellipsis\"] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? ([\"end-ellipsis\"] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ];\n};\n\nexport function Pagination(props: PaginationProps): JSX.Element {\n const merged = mergeProps(\n {\n siblingCount: 1,\n boundaryCount: 1,\n size: \"medium\" as const,\n variant: \"filled\" as const,\n shape: \"circular\" as const,\n color: \"default\" as PaginationColor,\n disabled: false,\n showFirstButton: false,\n showLastButton: false,\n hidePrevButton: false,\n hideNextButton: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"count\",\n \"page\",\n \"siblingCount\",\n \"boundaryCount\",\n \"size\",\n \"variant\",\n \"shape\",\n \"color\",\n \"disabled\",\n \"showFirstButton\",\n \"showLastButton\",\n \"hidePrevButton\",\n \"hideNextButton\",\n \"onChange\",\n \"ref\",\n ]);\n\n let navEl: HTMLElement | undefined;\n\n const go = (target: number): void => {\n if (local.disabled || target === local.page || target < 1 || target > local.count) return;\n local.onChange?.(target);\n };\n\n const onKeyDown: JSX.EventHandler<HTMLUListElement, KeyboardEvent> = (event) => {\n if (![\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(event.key)) return;\n const buttons = Array.from(\n navEl?.querySelectorAll<HTMLButtonElement>(\"button.smwb-pagination__item:not(:disabled)\") ?? []\n );\n if (buttons.length === 0) return;\n const current = buttons.indexOf(document.activeElement as HTMLButtonElement);\n let next = current;\n if (event.key === \"ArrowRight\") next = Math.min(current + 1, buttons.length - 1);\n else if (event.key === \"ArrowLeft\") next = Math.max(current - 1, 0);\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = buttons.length - 1;\n event.preventDefault();\n buttons[next]?.focus();\n };\n\n const items = (): PaginationItem[] => buildItems(local.count, local.page, local.siblingCount, local.boundaryCount);\n\n const navButton = (label: string, target: number, iconName: string, hidden?: boolean): JSX.Element => (\n <Show when={!hidden}>\n <li>\n <button\n type=\"button\"\n class=\"smwb-pagination__item smwb-pagination__nav\"\n aria-label={label}\n disabled={local.disabled || target < 1 || target > local.count}\n onClick={() => go(target)}\n >\n <Icon name={iconName} size={local.size === \"small\" ? 16 : 18} />\n </button>\n </li>\n </Show>\n );\n\n return (\n <nav\n {...rest}\n ref={mergeRefs(local.ref, (el) => (navEl = el))}\n data-testid=\"pagination\"\n aria-label=\"pagination\"\n class={cn(\n \"smwb-pagination\",\n `smwb-pagination_${local.size}`,\n `smwb-pagination_${local.variant}`,\n `smwb-pagination_shape-${local.shape}`,\n local.color !== \"default\" && `smwb-pagination_color-${local.color}`,\n { \"smwb-pagination_disabled\": local.disabled },\n local.class\n )}\n >\n <ul class=\"smwb-pagination__list\" onKeyDown={onKeyDown}>\n {navButton(\"First page\", 1, \"first_page\", !local.showFirstButton)}\n {navButton(\"Previous page\", local.page - 1, \"chevron_left\", local.hidePrevButton)}\n <For each={items()}>\n {(item) => (\n <Show\n when={typeof item === \"number\"}\n fallback={\n <li class=\"smwb-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </li>\n }\n >\n <li>\n <button\n type=\"button\"\n class={cn(\"smwb-pagination__item\", { \"smwb-pagination__item_selected\": item === local.page })}\n aria-current={item === local.page ? \"page\" : undefined}\n disabled={local.disabled}\n onClick={() => go(item as number)}\n >\n {item}\n </button>\n </li>\n </Show>\n )}\n </For>\n {navButton(\"Next page\", local.page + 1, \"chevron_right\", local.hideNextButton)}\n {navButton(\"Last page\", local.count, \"last_page\", !local.showLastButton)}\n </ul>\n </nav>\n );\n}\n\nexport default Pagination;\n"],"mappings":"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","names":[],"file":"pagination.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/pagination/pagination.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/pagination/pagination.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type PaginationColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface PaginationProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"onChange\"> {\n /** Total number of pages. */\n count: number;\n /** Current page (1-based). */\n page: number;\n /** Pages shown on each side of the current page. */\n siblingCount?: number;\n /** Pages always shown at the start and end. */\n boundaryCount?: number;\n size?: \"small\" | \"medium\";\n /** Item style. */\n variant?: \"filled\" | \"outlined\";\n /** Item shape. */\n shape?: \"rounded\" | \"circular\";\n color?: PaginationColor;\n disabled?: boolean;\n showFirstButton?: boolean;\n showLastButton?: boolean;\n hidePrevButton?: boolean;\n hideNextButton?: boolean;\n onChange?: (page: number) => void;\n ref?: Ref<HTMLElement>;\n}\n\ntype PaginationItem = number | \"start-ellipsis\" | \"end-ellipsis\";\n\nconst range = (start: number, end: number): number[] =>\n Array.from({ length: Math.max(end - start + 1, 0) }, (_, i) => start + i);\n\nconst buildItems = (count: number, page: number, siblingCount: number, boundaryCount: number): PaginationItem[] => {\n const startPages = range(1, Math.min(boundaryCount, count));\n const endPages = range(Math.max(count - boundaryCount + 1, boundaryCount + 1), count);\n\n const siblingsStart = Math.max(\n Math.min(page - siblingCount, count - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2\n );\n const siblingsEnd = Math.min(\n Math.max(page + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0]! - 2 : count - 1\n );\n\n return [\n ...startPages,\n ...(siblingsStart > boundaryCount + 2\n ? ([\"start-ellipsis\"] as PaginationItem[])\n : boundaryCount + 1 < count - boundaryCount\n ? [boundaryCount + 1]\n : []),\n ...range(siblingsStart, siblingsEnd),\n ...(siblingsEnd < count - boundaryCount - 1\n ? ([\"end-ellipsis\"] as PaginationItem[])\n : count - boundaryCount > boundaryCount\n ? [count - boundaryCount]\n : []),\n ...endPages,\n ];\n};\n\nexport function Pagination(props: PaginationProps): JSX.Element {\n const merged = mergeProps(\n {\n siblingCount: 1,\n boundaryCount: 1,\n size: \"medium\" as const,\n variant: \"filled\" as const,\n shape: \"circular\" as const,\n color: \"default\" as PaginationColor,\n disabled: false,\n showFirstButton: false,\n showLastButton: false,\n hidePrevButton: false,\n hideNextButton: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"count\",\n \"page\",\n \"siblingCount\",\n \"boundaryCount\",\n \"size\",\n \"variant\",\n \"shape\",\n \"color\",\n \"disabled\",\n \"showFirstButton\",\n \"showLastButton\",\n \"hidePrevButton\",\n \"hideNextButton\",\n \"onChange\",\n \"ref\",\n ]);\n\n let navEl: HTMLElement | undefined;\n\n const go = (target: number): void => {\n if (local.disabled || target === local.page || target < 1 || target > local.count) return;\n local.onChange?.(target);\n };\n\n const onKeyDown: JSX.EventHandler<HTMLUListElement, KeyboardEvent> = (event) => {\n if (![\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(event.key)) return;\n const buttons = Array.from(\n navEl?.querySelectorAll<HTMLButtonElement>(\"button.smwb-pagination__item:not(:disabled)\") ?? []\n );\n if (buttons.length === 0) return;\n const current = buttons.indexOf(document.activeElement as HTMLButtonElement);\n let next = current;\n if (event.key === \"ArrowRight\") next = Math.min(current + 1, buttons.length - 1);\n else if (event.key === \"ArrowLeft\") next = Math.max(current - 1, 0);\n else if (event.key === \"Home\") next = 0;\n else if (event.key === \"End\") next = buttons.length - 1;\n event.preventDefault();\n buttons[next]?.focus();\n };\n\n const items = (): PaginationItem[] => buildItems(local.count, local.page, local.siblingCount, local.boundaryCount);\n\n const navButton = (label: string, target: number, iconName: string, hidden?: boolean): JSX.Element => (\n <Show when={!hidden}>\n <li>\n <button\n type=\"button\"\n class=\"smwb-pagination__item smwb-pagination__nav\"\n aria-label={label}\n disabled={local.disabled || target < 1 || target > local.count}\n onClick={() => go(target)}\n >\n <Icon name={iconName} size={local.size === \"small\" ? 16 : 18} />\n </button>\n </li>\n </Show>\n );\n\n return (\n <nav\n {...rest}\n ref={mergeRefs(local.ref, (el) => (navEl = el))}\n data-testid=\"pagination\"\n aria-label=\"pagination\"\n class={cn(\n \"smwb-pagination\",\n `smwb-pagination_${local.size}`,\n `smwb-pagination_${local.variant}`,\n `smwb-pagination_shape-${local.shape}`,\n local.color !== \"default\" && `smwb-pagination_color-${local.color}`,\n { \"smwb-pagination_disabled\": local.disabled },\n local.class\n )}\n >\n <ul class=\"smwb-pagination__list\" onKeyDown={onKeyDown}>\n {navButton(\"First page\", 1, \"first_page\", !local.showFirstButton)}\n {navButton(\"Previous page\", local.page - 1, \"chevron_left\", local.hidePrevButton)}\n <For each={items()}>\n {(item) => (\n <Show\n when={typeof item === \"number\"}\n fallback={\n <li class=\"smwb-pagination__ellipsis\" aria-hidden=\"true\">\n …\n </li>\n }\n >\n <li>\n <button\n type=\"button\"\n class={cn(\"smwb-pagination__item\", { \"smwb-pagination__item_selected\": item === local.page })}\n aria-current={item === local.page ? \"page\" : undefined}\n disabled={local.disabled}\n onClick={() => go(item as number)}\n >\n {item}\n </button>\n </li>\n </Show>\n )}\n </For>\n {navButton(\"Next page\", local.page + 1, \"chevron_right\", local.hideNextButton)}\n {navButton(\"Last page\", local.count, \"last_page\", !local.showLastButton)}\n </ul>\n </nav>\n );\n}\n\nexport default Pagination;\n"],"mappings":"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","names":[],"file":"pagination.jsx"}
@@ -1,5 +1,5 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/sidebar/sidebar.entry.less";
2
- import { For, Show, mergeProps, splitProps } from "solid-js";
1
+ import "@smwb/ui-styles/less/components/sidebar/sidebar.entry.less";
2
+ import { For, Show, children, mergeProps, splitProps } from "solid-js";
3
3
  import { Dynamic } from "solid-js/web";
4
4
  import cn from "clsx";
5
5
  import { Ripple } from "../../base/ripple";
@@ -9,6 +9,7 @@ import { mergeRefs } from "../../../primitives/mergeRefs";
9
9
  function NavItem(props) {
10
10
  const [local, rest] = splitProps(props, ["isActive", "icon", "title", "as", "href", "variant"]);
11
11
  let rippleActions;
12
+ const icon = children(() => local.icon);
12
13
  const onPointerDown = (event) => {
13
14
  rippleActions?.onRipple(event);
14
15
  };
@@ -20,8 +21,8 @@ function NavItem(props) {
20
21
  onPointerDown={onPointerDown}
21
22
  {...rest}
22
23
  >
23
- <Show when={local.icon}>
24
- <span class="smwb-nav-item__icon">{local.icon}</span>
24
+ <Show when={icon()}>
25
+ <span class="smwb-nav-item__icon">{icon()}</span>
25
26
  </Show>
26
27
  <Show when={local.title}>
27
28
  <span class="smwb-nav-item__title">{local.title}</span>
@@ -112,4 +113,4 @@ export {
112
113
  Sidebar,
113
114
  sidebar_default as default
114
115
  };
115
- //# sourceMappingURL=sidebar.js.map
116
+ //# sourceMappingURL=sidebar.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/sidebar/sidebar.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/sidebar/sidebar.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type SidebarVariant = \"compact\" | \"default\" | \"compactMini\";\n\nexport interface SidebarMenuItemProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"title\"> {\n icon?: JSX.Element;\n title: string;\n isActive?: boolean;\n onClick?: JSX.EventHandlerUnion<HTMLDivElement, MouseEvent>;\n as?: string | undefined;\n href?: string | undefined;\n variant?: SidebarVariant | undefined;\n}\n\nexport interface SidebarProps extends JSX.HTMLAttributes<HTMLElement> {\n variant?: SidebarVariant;\n menuItems?: SidebarMenuItemProps[];\n /** Controlled index of the active menu item. */\n activeItem?: number | null;\n /** Default active index (uncontrolled). */\n defaultActiveItem?: number | null;\n /** Called with the index of the activated item. */\n onActiveItemChange?: (index: number) => void;\n /** Render a built-in toggle that collapses the rail to an icon-only mini rail. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled). */\n defaultCollapsed?: boolean;\n /** Called whenever the collapsed state changes. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Accessible label for the built-in collapse toggle. */\n collapseToggleAriaLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\nfunction NavItem(props: SidebarMenuItemProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"isActive\", \"icon\", \"title\", \"as\", \"href\", \"variant\"]);\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n return (\n <Dynamic\n component={local.as ?? \"div\"}\n href={local.href}\n role=\"menuitem\"\n class={cn(\"sidebar__nav__item\", \"smwb-nav-item\", local.variant, { active: local.isActive })}\n onPointerDown={onPointerDown}\n {...rest}\n >\n <Show when={local.icon}>\n <span class=\"smwb-nav-item__icon\">{local.icon}</span>\n </Show>\n <Show when={local.title}>\n <span class=\"smwb-nav-item__title\">{local.title}</span>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </Dynamic>\n );\n}\n\nexport function Sidebar(props: SidebarProps): JSX.Element {\n const merged = mergeProps(\n {\n variant: \"default\" as SidebarVariant,\n defaultActiveItem: null as number | null,\n collapsible: false,\n defaultCollapsed: false,\n collapseToggleAriaLabel: \"Toggle navigation\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"variant\",\n \"menuItems\",\n \"activeItem\",\n \"defaultActiveItem\",\n \"onActiveItemChange\",\n \"collapsible\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseToggleAriaLabel\",\n \"ref\",\n ]);\n\n const [activeItem, setActiveItem] = createControllableState<number | null>({\n value: () => local.activeItem,\n defaultValue: local.defaultActiveItem,\n onChange: (next) => {\n if (next !== null) local.onActiveItemChange?.(next);\n },\n });\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: (next) => local.onCollapsedChange?.(next),\n });\n\n // When collapsed the rail always shows the icon-only mini variant.\n const effectiveVariant = (): SidebarVariant => (local.collapsible && collapsed() ? \"compactMini\" : local.variant);\n\n return (\n <aside\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-sidebar\", local.class, `smwb-${effectiveVariant()}`, {\n \"smwb-sidebar_collapsible\": local.collapsible,\n \"smwb-sidebar_collapsed\": local.collapsible && collapsed(),\n })}\n role=\"menubar\"\n >\n <Show when={local.collapsible}>\n <div class=\"smwb-sidebar__collapse\">\n <button\n type=\"button\"\n class=\"smwb-sidebar__collapse-btn\"\n aria-label={local.collapseToggleAriaLabel}\n aria-expanded={!collapsed()}\n onClick={() => setCollapsed(!collapsed())}\n >\n <Icon name={collapsed() ? \"chevron_right\" : \"chevron_left\"} size={20} />\n </button>\n </div>\n </Show>\n <nav class=\"smwb-sidebar__nav\">\n <For each={local.menuItems ?? []}>\n {(item, idx) => (\n <NavItem\n as={item.as}\n isActive={activeItem() === idx()}\n onClick={(event) => {\n setActiveItem(idx());\n if (typeof item.onClick === \"function\") item.onClick(event);\n }}\n icon={item.icon}\n title={item.title}\n href={item.href}\n variant={effectiveVariant()}\n />\n )}\n </For>\n </nav>\n </aside>\n );\n}\n\nexport default Sidebar;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,KAAK,MAAM,YAAY,kBAAkB;AAC5D,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,YAAY;AACrB,SAAS,+BAA+B;AACxC,SAAS,iBAA2B;AAoCpC,SAAS,QAAQ,OAA0C;AACzD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,YAAY,QAAQ,SAAS,MAAM,QAAQ,SAAS,CAAC;AAC9F,MAAI;AAEJ,QAAM,gBAAgB,CAAC,UAA8B;AACnD,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,SACE,CAAC;AAAA,IACC,WAAW,MAAM,MAAM;AAAA,IACvB,MAAM,MAAM;AAAA,IACZ,KAAK;AAAA,IACL,OAAO,GAAG,sBAAsB,iBAAiB,MAAM,SAAS,EAAE,QAAQ,MAAM,SAAS,CAAC;AAAA,IAC1F,eAAe;AAAA,QACX;AAAA,GACL;AAAA,MACC,CAAC,KAAK,MAAM,MAAM,MAAM;AAAA,QACtB,CAAC,KAAK,MAAM,uBAAuB,MAAM,KAAK,EAA7C,KAAoD;AAAA,MACvD,EAFC,KAEM;AAAA,MACP,CAAC,KAAK,MAAM,MAAM,OAAO;AAAA,QACvB,CAAC,KAAK,MAAM,wBAAwB,MAAM,MAAM,EAA/C,KAAsD;AAAA,MACzD,EAFC,KAEM;AAAA,MACP,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,EAAE;AAAA,IAC/D,EAfC;AAiBL;AAEO,SAAS,QAAQ,OAAkC;AACxD,QAAM,SAAS;AAAA,IACb;AAAA,MACE,SAAS;AAAA,MACT,mBAAmB;AAAA,MACnB,aAAa;AAAA,MACb,kBAAkB;AAAA,MAClB,yBAAyB;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,YAAY,aAAa,IAAI,wBAAuC;AAAA,IACzE,OAAO,MAAM,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,UAAU,CAAC,SAAS;AAClB,UAAI,SAAS,KAAM,OAAM,qBAAqB,IAAI;AAAA,IACpD;AAAA,EACF,CAAC;AAED,QAAM,CAAC,WAAW,YAAY,IAAI,wBAAiC;AAAA,IACjE,OAAO,MAAM,MAAM;AAAA,IACnB,cAAc,MAAM;AAAA,IACpB,UAAU,CAAC,SAAS,MAAM,oBAAoB,IAAI;AAAA,EACpD,CAAC;AAGD,QAAM,mBAAmB,MAAuB,MAAM,eAAe,UAAU,IAAI,gBAAgB,MAAM;AAEzG,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,gBAAgB,MAAM,OAAO,QAAQ,iBAAiB,CAAC,IAAI;AAAA,MACnE,4BAA4B,MAAM;AAAA,MAClC,0BAA0B,MAAM,eAAe,UAAU;AAAA,IAC3D,CAAC;AAAA,IACD,KAAK;AAAA,GACN;AAAA,MACC,CAAC,KAAK,MAAM,MAAM,aAAa;AAAA,QAC7B,CAAC,IAAI,MAAM,yBAAyB;AAAA,UAClC,CAAC;AAAA,IACC,KAAK;AAAA,IACL,MAAM;AAAA,IACN,YAAY,MAAM;AAAA,IAClB,eAAe,CAAC,UAAU;AAAA,IAC1B,SAAS,MAAM,aAAa,CAAC,UAAU,CAAC;AAAA,GACzC;AAAA,YACC,CAAC,KAAK,MAAM,UAAU,IAAI,kBAAkB,gBAAgB,MAAM,IAAI,EAAE;AAAA,UAC1E,EARC,OAQQ;AAAA,QACX,EAVC,IAUK;AAAA,MACR,EAZC,KAYM;AAAA,MACP,CAAC,IAAI,MAAM,oBAAoB;AAAA,QAC7B,CAAC,IAAI,MAAM,MAAM,aAAa,CAAC,GAAG;AAAA,WAC/B,CAAC,MAAM,QACN,CAAC;AAAA,IACC,IAAI,KAAK;AAAA,IACT,UAAU,WAAW,MAAM,IAAI;AAAA,IAC/B,SAAS,CAAC,UAAU;AAClB,oBAAc,IAAI,CAAC;AACnB,UAAI,OAAO,KAAK,YAAY,WAAY,MAAK,QAAQ,KAAK;AAAA,IAC5D;AAAA,IACA,MAAM,KAAK;AAAA,IACX,OAAO,KAAK;AAAA,IACZ,MAAM,KAAK;AAAA,IACX,SAAS,iBAAiB;AAAA,EAC5B,GACA;AAAA,QACJ,EAfC,IAeK;AAAA,MACR,EAjBC,IAiBK;AAAA,IACR,EAxCC;AA0CL;AAEA,IAAO,kBAAQ;","names":[],"file":"sidebar.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/sidebar/sidebar.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/sidebar/sidebar.entry.less\";\nimport { type JSX, For, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type SidebarVariant = \"compact\" | \"default\" | \"compactMini\";\n\nexport interface SidebarMenuItemProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"title\"> {\n icon?: JSX.Element;\n title: string;\n isActive?: boolean;\n onClick?: JSX.EventHandlerUnion<HTMLDivElement, MouseEvent>;\n as?: string | undefined;\n href?: string | undefined;\n variant?: SidebarVariant | undefined;\n}\n\nexport interface SidebarProps extends JSX.HTMLAttributes<HTMLElement> {\n variant?: SidebarVariant;\n menuItems?: SidebarMenuItemProps[];\n /** Controlled index of the active menu item. */\n activeItem?: number | null;\n /** Default active index (uncontrolled). */\n defaultActiveItem?: number | null;\n /** Called with the index of the activated item. */\n onActiveItemChange?: (index: number) => void;\n /** Render a built-in toggle that collapses the rail to an icon-only mini rail. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state (uncontrolled). */\n defaultCollapsed?: boolean;\n /** Called whenever the collapsed state changes. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Accessible label for the built-in collapse toggle. */\n collapseToggleAriaLabel?: string;\n ref?: Ref<HTMLElement>;\n}\n\nfunction NavItem(props: SidebarMenuItemProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"isActive\", \"icon\", \"title\", \"as\", \"href\", \"variant\"]);\n let rippleActions: RippleActionsRef | undefined;\n\n // Resolve the icon in THIS item's context. A pre-created element passed via\n // menuItems is keyed at the consumer's position but rendered here, so under\n // SSR the hydration walk can't find it; children() realigns the key sequence.\n const icon = children(() => local.icon);\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n return (\n <Dynamic\n component={local.as ?? \"div\"}\n href={local.href}\n role=\"menuitem\"\n class={cn(\"sidebar__nav__item\", \"smwb-nav-item\", local.variant, { active: local.isActive })}\n onPointerDown={onPointerDown}\n {...rest}\n >\n <Show when={icon()}>\n <span class=\"smwb-nav-item__icon\">{icon()}</span>\n </Show>\n <Show when={local.title}>\n <span class=\"smwb-nav-item__title\">{local.title}</span>\n </Show>\n <Ripple actionRef={(actions) => (rippleActions = actions)} />\n </Dynamic>\n );\n}\n\nexport function Sidebar(props: SidebarProps): JSX.Element {\n const merged = mergeProps(\n {\n variant: \"default\" as SidebarVariant,\n defaultActiveItem: null as number | null,\n collapsible: false,\n defaultCollapsed: false,\n collapseToggleAriaLabel: \"Toggle navigation\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"variant\",\n \"menuItems\",\n \"activeItem\",\n \"defaultActiveItem\",\n \"onActiveItemChange\",\n \"collapsible\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseToggleAriaLabel\",\n \"ref\",\n ]);\n\n const [activeItem, setActiveItem] = createControllableState<number | null>({\n value: () => local.activeItem,\n defaultValue: local.defaultActiveItem,\n onChange: (next) => {\n if (next !== null) local.onActiveItemChange?.(next);\n },\n });\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: (next) => local.onCollapsedChange?.(next),\n });\n\n // When collapsed the rail always shows the icon-only mini variant.\n const effectiveVariant = (): SidebarVariant => (local.collapsible && collapsed() ? \"compactMini\" : local.variant);\n\n return (\n <aside\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-sidebar\", local.class, `smwb-${effectiveVariant()}`, {\n \"smwb-sidebar_collapsible\": local.collapsible,\n \"smwb-sidebar_collapsed\": local.collapsible && collapsed(),\n })}\n role=\"menubar\"\n >\n <Show when={local.collapsible}>\n <div class=\"smwb-sidebar__collapse\">\n <button\n type=\"button\"\n class=\"smwb-sidebar__collapse-btn\"\n aria-label={local.collapseToggleAriaLabel}\n aria-expanded={!collapsed()}\n onClick={() => setCollapsed(!collapsed())}\n >\n <Icon name={collapsed() ? \"chevron_right\" : \"chevron_left\"} size={20} />\n </button>\n </div>\n </Show>\n <nav class=\"smwb-sidebar__nav\">\n <For each={local.menuItems ?? []}>\n {(item, idx) => (\n <NavItem\n as={item.as}\n isActive={activeItem() === idx()}\n onClick={(event) => {\n setActiveItem(idx());\n if (typeof item.onClick === \"function\") item.onClick(event);\n }}\n icon={item.icon}\n title={item.title}\n href={item.href}\n variant={effectiveVariant()}\n />\n )}\n </For>\n </nav>\n </aside>\n );\n}\n\nexport default Sidebar;\n"],"mappings":"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","names":[],"file":"sidebar.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/stepper/stepper.entry.less";
1
+ import "@smwb/ui-styles/less/components/stepper/stepper.entry.less";
2
2
  import { For, Show, mergeProps, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { Icon } from "../../base/icon";
@@ -80,4 +80,4 @@ export {
80
80
  Stepper,
81
81
  stepper_default as default
82
82
  };
83
- //# sourceMappingURL=stepper.js.map
83
+ //# sourceMappingURL=stepper.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/stepper/stepper.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/stepper/stepper.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface StepItem {\n label: JSX.Element;\n description?: JSX.Element;\n optional?: JSX.Element;\n /** Marks the step as errored. */\n error?: boolean;\n /** Disables interaction with the step. */\n disabled?: boolean;\n /** Custom icon overriding the default number/check. */\n icon?: JSX.Element;\n}\n\nexport interface StepperProps extends JSX.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n /** Index of the active (current) step. */\n activeStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n /** Place the label under the icon (horizontal only). */\n alternativeLabel?: boolean;\n /** Makes steps clickable; receives the clicked step index. */\n onStepClick?: (index: number) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Stepper(props: StepperProps): JSX.Element {\n const merged = mergeProps({ orientation: \"horizontal\" as const, alternativeLabel: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"steps\",\n \"activeStep\",\n \"orientation\",\n \"alternativeLabel\",\n \"onStepClick\",\n \"ref\",\n ]);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"stepper\"\n class={cn(\n \"smwb-stepper\",\n `smwb-stepper_${local.orientation}`,\n { \"smwb-stepper_alt-label\": local.alternativeLabel && local.orientation === \"horizontal\" },\n local.class\n )}\n >\n <For each={local.steps}>\n {(step, index) => {\n const completed = (): boolean => index() < local.activeStep;\n const active = (): boolean => index() === local.activeStep;\n const isLast = (): boolean => index() === local.steps.length - 1;\n const clickable = (): boolean => Boolean(local.onStepClick) && !step.disabled;\n\n return (\n <>\n <div\n class={cn(\"smwb-stepper__step\", {\n \"smwb-stepper__step_active\": active(),\n \"smwb-stepper__step_completed\": completed(),\n \"smwb-stepper__step_error\": step.error,\n \"smwb-stepper__step_disabled\": step.disabled,\n \"smwb-stepper__step_clickable\": clickable(),\n })}\n aria-current={active() ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n onClick={clickable() ? () => local.onStepClick?.(index()) : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onStepClick?.(index());\n }\n }\n : undefined\n }\n >\n <div class=\"smwb-stepper__icon\" aria-hidden=\"true\">\n <Show when={step.icon} fallback={completed() ? <Icon name=\"check\" size={16} /> : <span>{index() + 1}</span>}>\n {step.icon}\n </Show>\n </div>\n <div class=\"smwb-stepper__text\">\n <span class=\"smwb-stepper__label\">{step.label}</span>\n <Show when={step.optional}>\n <span class=\"smwb-stepper__optional\">{step.optional}</span>\n </Show>\n <Show when={step.description && local.orientation === \"vertical\"}>\n <span class=\"smwb-stepper__description\">{step.description}</span>\n </Show>\n </div>\n </div>\n <Show when={!isLast()}>\n <div class=\"smwb-stepper__connector\" aria-hidden=\"true\" />\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n}\n\nexport default Stepper;\n"],"mappings":"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","names":[],"file":"stepper.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/stepper/stepper.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/stepper/stepper.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface StepItem {\n label: JSX.Element;\n description?: JSX.Element;\n optional?: JSX.Element;\n /** Marks the step as errored. */\n error?: boolean;\n /** Disables interaction with the step. */\n disabled?: boolean;\n /** Custom icon overriding the default number/check. */\n icon?: JSX.Element;\n}\n\nexport interface StepperProps extends JSX.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n /** Index of the active (current) step. */\n activeStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n /** Place the label under the icon (horizontal only). */\n alternativeLabel?: boolean;\n /** Makes steps clickable; receives the clicked step index. */\n onStepClick?: (index: number) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Stepper(props: StepperProps): JSX.Element {\n const merged = mergeProps({ orientation: \"horizontal\" as const, alternativeLabel: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"steps\",\n \"activeStep\",\n \"orientation\",\n \"alternativeLabel\",\n \"onStepClick\",\n \"ref\",\n ]);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"stepper\"\n class={cn(\n \"smwb-stepper\",\n `smwb-stepper_${local.orientation}`,\n { \"smwb-stepper_alt-label\": local.alternativeLabel && local.orientation === \"horizontal\" },\n local.class\n )}\n >\n <For each={local.steps}>\n {(step, index) => {\n const completed = (): boolean => index() < local.activeStep;\n const active = (): boolean => index() === local.activeStep;\n const isLast = (): boolean => index() === local.steps.length - 1;\n const clickable = (): boolean => Boolean(local.onStepClick) && !step.disabled;\n\n return (\n <>\n <div\n class={cn(\"smwb-stepper__step\", {\n \"smwb-stepper__step_active\": active(),\n \"smwb-stepper__step_completed\": completed(),\n \"smwb-stepper__step_error\": step.error,\n \"smwb-stepper__step_disabled\": step.disabled,\n \"smwb-stepper__step_clickable\": clickable(),\n })}\n aria-current={active() ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n onClick={clickable() ? () => local.onStepClick?.(index()) : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onStepClick?.(index());\n }\n }\n : undefined\n }\n >\n <div class=\"smwb-stepper__icon\" aria-hidden=\"true\">\n <Show when={step.icon} fallback={completed() ? <Icon name=\"check\" size={16} /> : <span>{index() + 1}</span>}>\n {step.icon}\n </Show>\n </div>\n <div class=\"smwb-stepper__text\">\n <span class=\"smwb-stepper__label\">{step.label}</span>\n <Show when={step.optional}>\n <span class=\"smwb-stepper__optional\">{step.optional}</span>\n </Show>\n <Show when={step.description && local.orientation === \"vertical\"}>\n <span class=\"smwb-stepper__description\">{step.description}</span>\n </Show>\n </div>\n </div>\n <Show when={!isLast()}>\n <div class=\"smwb-stepper__connector\" aria-hidden=\"true\" />\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n}\n\nexport default Stepper;\n"],"mappings":"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","names":[],"file":"stepper.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/tabs/tab/tab.entry.less";
1
+ import "@smwb/ui-styles/less/components/tabs/tab/tab.entry.less";
2
2
  import { Show, mergeProps, splitProps } from "solid-js";
3
3
  import { Dynamic } from "solid-js/web";
4
4
  import cn from "clsx";
@@ -73,4 +73,4 @@ export {
73
73
  Tab,
74
74
  tab_default as default
75
75
  };
76
- //# sourceMappingURL=tab.js.map
76
+ //# sourceMappingURL=tab.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/navigation/tabs/tab/tab.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/tabs/tab/tab.entry.less\";\nimport { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../../base/ripple\";\nimport { useTabsContext } from \"../tabsContext\";\nimport { mergeRefs, type Ref } from \"../../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../../primitives/callHandler\";\n\nexport interface TabProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n label?: JSX.Element;\n isActive?: boolean;\n contentRef?: Ref<HTMLSpanElement>;\n icon?: JSX.Element;\n stacked?: boolean;\n tag?: string;\n disabled?: boolean;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport function Tab(props: ParentProps<TabProps>): JSX.Element {\n const ctx = useTabsContext();\n const index = ctx ? ctx.registerTab() : -1;\n const merged = mergeProps({ isActive: false, stacked: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"isActive\",\n \"contentRef\",\n \"icon\",\n \"stacked\",\n \"tag\",\n \"disabled\",\n \"onClick\",\n \"ref\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const active = (): boolean => (ctx ? ctx.value() === index : local.isActive);\n\n const onClick: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, MouseEvent> = (event) => {\n if (ctx) {\n ctx.onChange(event, index);\n } else {\n callHandler(local.onClick, event);\n }\n };\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n const tag = (): string => local.tag ?? \"button\";\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-tab\", local.class, {\n \"smwb-tab--active\": active(),\n \"smwb-tab--stacked\": local.stacked,\n \"smwb-tab--disabled\": local.disabled,\n })}\n onClick={onClick}\n onPointerDown={onPointerDown}\n role=\"tab\"\n aria-selected={active()}\n aria-disabled={local.disabled || undefined}\n tabindex={active() ? 0 : -1}\n disabled={tag() === \"button\" ? local.disabled : undefined}\n >\n <span\n class=\"smwb-tab__content\"\n ref={mergeRefs(local.contentRef, (el) => {\n if (ctx?.indicatorContent) ctx.setContentRef(index, el as HTMLSpanElement);\n })}\n >\n <Show when={local.icon}>\n <span class=\"smwb-tab__icon\">{local.icon}</span>\n </Show>\n <Show when={local.label}>\n <span class=\"smwb-tab__text-label\">{local.label}</span>\n </Show>\n </span>\n <Ripple actionRef={(actions) => (rippleActions = actions)} classes={{ child: \"tab__ripple-child\" }} />\n </Dynamic>\n );\n}\n\nexport default Tab;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,sBAAsB;AAC/B,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAarB,SAAS,IAAI,OAA2C;AAC7D,QAAM,MAAM,eAAe;AAC3B,QAAM,QAAQ,MAAM,IAAI,YAAY,IAAI;AACxC,QAAM,SAAS,WAAW,EAAE,UAAU,OAAO,SAAS,MAAM,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,SAAS,MAAgB,MAAM,IAAI,MAAM,MAAM,QAAQ,MAAM;AAEnE,QAAM,UAA+E,CAAC,UAAU;AAC9F,QAAI,KAAK;AACP,UAAI,SAAS,OAAO,KAAK;AAAA,IAC3B,OAAO;AACL,kBAAY,MAAM,SAAS,KAAK;AAAA,IAClC;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,UAA8B;AACnD,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,QAAM,MAAM,MAAc,MAAM,OAAO;AAEvC,SACE,CAAC;AAAA,IACC,WAAW,IAAI;AAAA,QACX;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,YAAY,MAAM,OAAO;AAAA,MACjC,oBAAoB,OAAO;AAAA,MAC3B,qBAAqB,MAAM;AAAA,MAC3B,sBAAsB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,IACL,eAAe,OAAO;AAAA,IACtB,eAAe,MAAM,YAAY;AAAA,IACjC,UAAU,OAAO,IAAI,IAAI;AAAA,IACzB,UAAU,IAAI,MAAM,WAAW,MAAM,WAAW;AAAA,GACjD;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK,UAAU,MAAM,YAAY,CAAC,OAAO;AACvC,UAAI,KAAK,iBAAkB,KAAI,cAAc,OAAO,EAAqB;AAAA,IAC3E,CAAC;AAAA,GACF;AAAA,QACC,CAAC,KAAK,MAAM,MAAM,MAAM;AAAA,UACtB,CAAC,KAAK,MAAM,kBAAkB,MAAM,KAAK,EAAxC,KAA+C;AAAA,QAClD,EAFC,KAEM;AAAA,QACP,CAAC,KAAK,MAAM,MAAM,OAAO;AAAA,UACvB,CAAC,KAAK,MAAM,wBAAwB,MAAM,MAAM,EAA/C,KAAsD;AAAA,QACzD,EAFC,KAEM;AAAA,MACT,EAZC,KAYM;AAAA,MACP,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,SAAS,EAAE,OAAO,oBAAoB,GAAG,EAAE;AAAA,IACxG,EA/BC;AAiCL;AAEA,IAAO,cAAQ;","names":[],"file":"tab.jsx"}
1
+ {"version":3,"sources":["../../../../../../src/components/navigation/tabs/tab/tab.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/tabs/tab/tab.entry.less\";\nimport { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../../base/ripple\";\nimport { useTabsContext } from \"../tabsContext\";\nimport { mergeRefs, type Ref } from \"../../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../../primitives/callHandler\";\n\nexport interface TabProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n label?: JSX.Element;\n isActive?: boolean;\n contentRef?: Ref<HTMLSpanElement>;\n icon?: JSX.Element;\n stacked?: boolean;\n tag?: string;\n disabled?: boolean;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport function Tab(props: ParentProps<TabProps>): JSX.Element {\n const ctx = useTabsContext();\n const index = ctx ? ctx.registerTab() : -1;\n const merged = mergeProps({ isActive: false, stacked: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"isActive\",\n \"contentRef\",\n \"icon\",\n \"stacked\",\n \"tag\",\n \"disabled\",\n \"onClick\",\n \"ref\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const active = (): boolean => (ctx ? ctx.value() === index : local.isActive);\n\n const onClick: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, MouseEvent> = (event) => {\n if (ctx) {\n ctx.onChange(event, index);\n } else {\n callHandler(local.onClick, event);\n }\n };\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n const tag = (): string => local.tag ?? \"button\";\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-tab\", local.class, {\n \"smwb-tab--active\": active(),\n \"smwb-tab--stacked\": local.stacked,\n \"smwb-tab--disabled\": local.disabled,\n })}\n onClick={onClick}\n onPointerDown={onPointerDown}\n role=\"tab\"\n aria-selected={active()}\n aria-disabled={local.disabled || undefined}\n tabindex={active() ? 0 : -1}\n disabled={tag() === \"button\" ? local.disabled : undefined}\n >\n <span\n class=\"smwb-tab__content\"\n ref={mergeRefs(local.contentRef, (el) => {\n if (ctx?.indicatorContent) ctx.setContentRef(index, el as HTMLSpanElement);\n })}\n >\n <Show when={local.icon}>\n <span class=\"smwb-tab__icon\">{local.icon}</span>\n </Show>\n <Show when={local.label}>\n <span class=\"smwb-tab__text-label\">{local.label}</span>\n </Show>\n </span>\n <Ripple actionRef={(actions) => (rippleActions = actions)} classes={{ child: \"tab__ripple-child\" }} />\n </Dynamic>\n );\n}\n\nexport default Tab;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,sBAAsB;AAC/B,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAarB,SAAS,IAAI,OAA2C;AAC7D,QAAM,MAAM,eAAe;AAC3B,QAAM,QAAQ,MAAM,IAAI,YAAY,IAAI;AACxC,QAAM,SAAS,WAAW,EAAE,UAAU,OAAO,SAAS,MAAM,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,SAAS,MAAgB,MAAM,IAAI,MAAM,MAAM,QAAQ,MAAM;AAEnE,QAAM,UAA+E,CAAC,UAAU;AAC9F,QAAI,KAAK;AACP,UAAI,SAAS,OAAO,KAAK;AAAA,IAC3B,OAAO;AACL,kBAAY,MAAM,SAAS,KAAK;AAAA,IAClC;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,UAA8B;AACnD,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,QAAM,MAAM,MAAc,MAAM,OAAO;AAEvC,SACE,CAAC;AAAA,IACC,WAAW,IAAI;AAAA,QACX;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,YAAY,MAAM,OAAO;AAAA,MACjC,oBAAoB,OAAO;AAAA,MAC3B,qBAAqB,MAAM;AAAA,MAC3B,sBAAsB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,IACL,eAAe,OAAO;AAAA,IACtB,eAAe,MAAM,YAAY;AAAA,IACjC,UAAU,OAAO,IAAI,IAAI;AAAA,IACzB,UAAU,IAAI,MAAM,WAAW,MAAM,WAAW;AAAA,GACjD;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK,UAAU,MAAM,YAAY,CAAC,OAAO;AACvC,UAAI,KAAK,iBAAkB,KAAI,cAAc,OAAO,EAAqB;AAAA,IAC3E,CAAC;AAAA,GACF;AAAA,QACC,CAAC,KAAK,MAAM,MAAM,MAAM;AAAA,UACtB,CAAC,KAAK,MAAM,kBAAkB,MAAM,KAAK,EAAxC,KAA+C;AAAA,QAClD,EAFC,KAEM;AAAA,QACP,CAAC,KAAK,MAAM,MAAM,OAAO;AAAA,UACvB,CAAC,KAAK,MAAM,wBAAwB,MAAM,MAAM,EAA/C,KAAsD;AAAA,QACzD,EAFC,KAEM;AAAA,MACT,EAZC,KAYM;AAAA,MACP,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,SAAS,EAAE,OAAO,oBAAoB,GAAG,EAAE;AAAA,IACxG,EA/BC;AAiCL;AAEA,IAAO,cAAQ;","names":[],"file":"tab.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/tabs/tabs.entry.less";
1
+ import "@smwb/ui-styles/less/components/tabs/tabs.entry.less";
2
2
  import { Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { debounce } from "../../../utils/debounce";
@@ -139,4 +139,4 @@ export {
139
139
  Tabs,
140
140
  tabs_default as default
141
141
  };
142
- //# sourceMappingURL=tabs.js.map
142
+ //# sourceMappingURL=tabs.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/tabs/tabs.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n value: number;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n indicatorContent?: boolean;\n scrollable?: boolean;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps({ indicatorContent: false, scrollable: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n let tabCounter = 0;\n const contentRefs: HTMLSpanElement[] = [];\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = contentRefs[local.value]?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value changes (and on mount).\n createEffect(on(() => local.value, () => updateIndicatorState()));\n\n // Keep the indicator in sync with resize.\n onMount(() => {\n const onResize = debounce(() => updateIndicatorState(), 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n indicatorContent: local.indicatorContent,\n registerTab: () => tabCounter++,\n setContentRef: (index, el) => {\n contentRefs[index] = el;\n },\n };\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div {...rest} class={cn(\"smwb-tabs\", local.class)} role=\"tabpanel\" ref={mergeRefs(local.ref)}>\n <div\n class={cn(\"smwb-tabs__scroller\", { \"smwb-tabs__scroller--scrollable\": local.scrollable })}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n {local.children}\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"mappings":"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","names":[],"file":"tabs.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/tabs/tabs.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n value: number;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n indicatorContent?: boolean;\n scrollable?: boolean;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps({ indicatorContent: false, scrollable: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n let tabCounter = 0;\n const contentRefs: HTMLSpanElement[] = [];\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = contentRefs[local.value]?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value changes (and on mount).\n createEffect(on(() => local.value, () => updateIndicatorState()));\n\n // Keep the indicator in sync with resize.\n onMount(() => {\n const onResize = debounce(() => updateIndicatorState(), 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n indicatorContent: local.indicatorContent,\n registerTab: () => tabCounter++,\n setContentRef: (index, el) => {\n contentRefs[index] = el;\n },\n };\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div {...rest} class={cn(\"smwb-tabs\", local.class)} role=\"tabpanel\" ref={mergeRefs(local.ref)}>\n <div\n class={cn(\"smwb-tabs__scroller\", { \"smwb-tabs__scroller--scrollable\": local.scrollable })}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n {local.children}\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,cAAc,cAAc,YAAY,IAAI,WAAW,SAAS,kBAAkB;AAC7H,OAAO,QAAQ;AACf,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,mBAA0C;AACnD,SAAS,WAAW;AACpB,SAAS,iBAA2B;AAkBpC,MAAM,mBAAmB;AAElB,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,kBAAkB,OAAO,YAAY,MAAM,GAAG,KAAK;AAC/E,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,aAAa,KAAK;AAChD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,aAA6B,EAAE,MAAM,CAAC,EAAE,CAAC;AAErF,MAAI;AACJ,MAAI;AACJ,MAAI,aAAa;AACjB,QAAM,cAAiC,CAAC;AAExC,QAAM,cAAc,MAAM;AACxB,QAAI;AACJ,QAAI,QAAQ;AACV,YAAM,OAAO,OAAO,sBAAsB;AAC1C,iBAAW,EAAE,aAAa,OAAO,aAAa,YAAY,OAAO,YAAY,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM;AAAA,IAClH;AACA,QAAI,UAA0B;AAC9B,QAAI,iBAAiC;AACrC,QAAI,UAAU,aAAa,UAAU,SAAS,SAAS,GAAG;AACxD,YAAM,MAAM,UAAU,SAAS,MAAM,KAAK;AAC1C,gBAAU,MAAM,IAAI,sBAAsB,IAAI;AAC9C,UAAI,MAAM,kBAAkB;AAC1B,yBAAiB,YAAY,MAAM,KAAK,GAAG,sBAAsB,KAAK;AAAA,MACxE;AAAA,IACF;AACA,WAAO,EAAE,UAAU,SAAS,eAAe;AAAA,EAC7C;AAEA,QAAM,uBAAuB,MAAY;AACvC,UAAM,EAAE,UAAU,SAAS,eAAe,IAAI,YAAY;AAC1D,QAAI,aAAa;AACjB,QAAI,WAAW,UAAU;AACvB,mBAAa,QAAQ,OAAO,SAAS,OAAO,SAAS;AAAA,IACvD;AACA,UAAM,OAAuB,EAAE,MAAM,EAAE,MAAM,YAAY,OAAO,UAAU,QAAQ,QAAQ,EAAE,EAAE;AAC9F,QAAI,MAAM,oBAAoB,gBAAgB;AAC5C,WAAK,UAAU,EAAE,OAAO,eAAe,MAAM;AAAA,IAC/C;AACA,UAAM,OAAO,eAAe;AAC5B,QAAI,KAAK,KAAK,SAAS,UAAa,KAAK,KAAK,UAAU,QAAW;AACjE,wBAAkB,IAAI;AACtB;AAAA,IACF;AACA,UAAM,SAAS,KAAK,KAAK,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,EAAE;AACrE,UAAM,QAAQ,KAAK,KAAK,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,EAAE;AACtE,QAAI,UAAU,KAAK,SAAS,GAAG;AAC7B,wBAAkB,IAAI;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,SAAS,CAAC,gBAA8B;AAC5C,QAAI,CAAC,OAAQ;AACb,YAAQ,QAAQ,cAAc,aAAa,EAAE,UAAU,IAAI,CAAC;AAAA,EAC9D;AAEA,QAAM,yBAAyB,MAAY;AACzC,UAAM,EAAE,UAAU,QAAQ,IAAI,YAAY;AAC1C,QAAI,CAAC,WAAW,CAAC,SAAU;AAC3B,QAAI,QAAQ,OAAO,SAAS,MAAM;AAChC,aAAO,SAAS,cAAc,QAAQ,OAAO,SAAS,QAAQ,gBAAgB;AAAA,IAChF,WAAW,QAAQ,QAAQ,SAAS,OAAO;AACzC,aAAO,SAAS,cAAc,QAAQ,QAAQ,SAAS,SAAS,gBAAgB;AAAA,IAClF;AAAA,EACF;AAEA,UAAQ,MAAM,WAAW,IAAI,CAAC;AAG9B,eAAa,GAAG,MAAM,MAAM,OAAO,MAAM,qBAAqB,CAAC,CAAC;AAGhE,UAAQ,MAAM;AACZ,UAAM,WAAW,SAAS,MAAM,qBAAqB,GAAG,GAAG;AAC3D,UAAM,OAAO,QAAQ,cAAc;AACnC,UAAM,iBAAiB,UAAU,QAAQ;AACzC,QAAI;AACJ,QAAI,OAAO,mBAAmB,eAAe,WAAW;AACtD,uBAAiB,IAAI,eAAe,QAAQ;AAC5C,YAAM,KAAK,UAAU,QAAQ,EAAE,QAAQ,CAAC,UAAU,gBAAgB,QAAQ,KAAK,CAAC;AAAA,IAClF;AACA,cAAU,MAAM;AACd,eAAS,OAAO;AAChB,YAAM,oBAAoB,UAAU,QAAQ;AAC5C,sBAAgB,WAAW;AAAA,IAC7B,CAAC;AAAA,EACH,CAAC;AAGD,eAAa,MAAM;AACjB,mBAAe;AACf,2BAAuB;AAAA,EACzB,CAAC;AAED,QAAM,eAAiC;AAAA,IACrC,OAAO,MAAM,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,kBAAkB,MAAM;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,eAAe,CAAC,OAAO,OAAO;AAC5B,kBAAY,KAAK,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,SACE,CAAC,YAAY,SAAS,OAAO,cAAc;AAAA,MACzC,CAAC,QAAQ,MAAM,OAAO,GAAG,aAAa,MAAM,KAAK,GAAG,KAAK,WAAW,KAAK,UAAU,MAAM,GAAG,GAAG;AAAA,QAC7F,CAAC;AAAA,IACC,OAAO,GAAG,uBAAuB,EAAE,mCAAmC,MAAM,WAAW,CAAC;AAAA,IACxF,KAAK,CAAC,OAAQ,SAAS;AAAA,GACxB;AAAA,UACC,CAAC,IAAI,MAAM,yBAAyB,KAAK,CAAC,OAAQ,YAAY,IAAK,KAAK,UAAU,YAAY,MAAM,YAAY,GAAG;AAAA,aAChH,MAAM,SAAS;AAAA,UAClB,EAFC,IAEK;AAAA,UACN,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,YACrB,CAAC;AAAA,IACC,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM,GAAG,eAAe,EAAE,KAAK,QAAQ,CAAC;AAAA,MACxC,OAAO,GAAG,eAAe,EAAE,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA,GACD;AAAA,cACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,GAAG,eAAe,EAAE,SAAS,SAAS,CAAC,KAAK,IAAI,CAAC;AAAA,EAC9F,EAAE;AAAA,YACJ,EAXC,KAWM;AAAA,UACT,EAbC,KAaM;AAAA,QACT,EArBC,IAqBK;AAAA,MACR,EAvBC,IAuBK;AAAA,IACR,EAzBC,YAAY;AA2BjB;AAIA,IAAO,eAAQ;","names":[],"file":"tabs.jsx"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smwb/ui-solid",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "SolidJS port of summer-ui: strict, tree-shakeable Material-style component library sharing the @smwb/ui-styles design system.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -37,9 +37,10 @@
37
37
  "build:source:headless": "node scripts/build-source.mjs --headless",
38
38
  "build:types": "tsc -p configs/ts/tsconfig.prod.json --emitDeclarationOnly --declaration --outDir dist",
39
39
  "typecheck": "tsc -p configs/ts/tsconfig.full.json --noEmit",
40
- "test": "npm run lint && npm run jest && npm run test:ssr",
40
+ "test": "npm run lint && npm run jest && npm run test:ssr && npm run test:hydration",
41
41
  "jest": "vitest run",
42
42
  "test:ssr": "npm run build:esm && npm run build:source && vitest run --config vitest.ssr.config.ts",
43
+ "test:hydration": "vitest run --config vitest.hydration.config.ts",
43
44
  "test:watch": "vitest",
44
45
  "test:storybook": "test-storybook --url http://127.0.0.1:6006",
45
46
  "lint": "eslint . --max-warnings=0",
@@ -50,6 +51,7 @@
50
51
  },
51
52
  "dependencies": {
52
53
  "@floating-ui/dom": "^1.7.0",
54
+ "@smwb/ui-styles": "^1.0.4",
53
55
  "clsx": "^2.1.1",
54
56
  "zod": "^4.4.3"
55
57
  },
@@ -58,7 +60,7 @@
58
60
  },
59
61
  "devDependencies": {
60
62
  "@eslint/js": "^9.39.0",
61
- "@smwb/ui-styles": "^1.0.3",
63
+ "@smwb/ui-styles": "^1.0.4",
62
64
  "@storybook/addon-docs": "^10.4.0",
63
65
  "@storybook/addon-links": "^10.4.0",
64
66
  "@storybook/test-runner": "^0.24.4",
@@ -1,35 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { isServer, renderToString } from "solid-js/web";
3
- import { readFileSync } from "node:fs";
4
- import { createRequire } from "node:module";
5
- import * as path from "node:path";
6
- const require2 = createRequire(import.meta.url);
7
- const pkg = JSON.parse(
8
- readFileSync(require2.resolve("@smwb/ui-solid/package.json"), "utf8")
9
- );
10
- describe("ui-solid published exports", () => {
11
- it("exposes a solid condition for the main entry", () => {
12
- expect(pkg.exports["."].solid).toBe("./dist/source/index.js");
13
- expect(pkg.exports["./headless"].solid).toBe("./dist/headless/source/index.js");
14
- });
15
- it("imports the DOM bundle animateHeight module on the server and throws", async () => {
16
- const root = path.dirname(require2.resolve("@smwb/ui-solid/package.json"));
17
- const domEntry = path.join(root, pkg.exports["."].import.replace(/^\.\//, ""));
18
- const domAnimateHeight = path.join(
19
- root,
20
- "dist/components/base/animateHeight/animateHeight.jsx"
21
- );
22
- expect(() => readFileSync(domEntry, "utf8")).not.toThrow();
23
- const domCode = readFileSync(domAnimateHeight, "utf8");
24
- expect(domCode).not.toMatch(/return\s*</);
25
- await expect(import(domAnimateHeight)).rejects.toThrow(/Client-only API called on the server side/);
26
- });
27
- it("renders AnimateHeight from the solid source entry on the server", async () => {
28
- expect(isServer).toBe(true);
29
- const { AnimateHeight } = await import("@smwb/ui-solid");
30
- expect(
31
- () => renderToString(() => <AnimateHeight height="auto">grow</AnimateHeight>)
32
- ).not.toThrow();
33
- });
34
- });
35
- //# sourceMappingURL=ssr-published.ssr-spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/ssr-published.ssr-spec.tsx"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { isServer, renderToString } from \"solid-js/web\";\nimport { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport * as path from \"node:path\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = JSON.parse(\n readFileSync(require.resolve(\"@smwb/ui-solid/package.json\"), \"utf8\"),\n) as {\n exports: {\n \".\": { solid: string; import: string };\n \"./headless\": { solid: string; import: string };\n };\n};\n\ndescribe(\"ui-solid published exports\", () => {\n it(\"exposes a solid condition for the main entry\", () => {\n expect(pkg.exports[\".\"].solid).toBe(\"./dist/source/index.js\");\n expect(pkg.exports[\"./headless\"].solid).toBe(\"./dist/headless/source/index.js\");\n });\n\n it(\"imports the DOM bundle animateHeight module on the server and throws\", async () => {\n const root = path.dirname(require.resolve(\"@smwb/ui-solid/package.json\"));\n const domEntry = path.join(root, pkg.exports[\".\"].import.replace(/^\\.\\//, \"\"));\n const domAnimateHeight = path.join(\n root,\n \"dist/components/base/animateHeight/animateHeight.js\",\n );\n expect(() => readFileSync(domEntry, \"utf8\")).not.toThrow();\n const domCode = readFileSync(domAnimateHeight, \"utf8\");\n expect(domCode).not.toMatch(/return\\s*</);\n await expect(import(domAnimateHeight)).rejects.toThrow(/Client-only API called on the server side/);\n });\n\n it(\"renders AnimateHeight from the solid source entry on the server\", async () => {\n expect(isServer).toBe(true);\n const { AnimateHeight } = await import(\"@smwb/ui-solid\");\n expect(() =>\n renderToString(() => <AnimateHeight height=\"auto\">grow</AnimateHeight>),\n ).not.toThrow();\n });\n});\n"],"mappings":"AAAA,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,UAAU,sBAAsB;AACzC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,YAAY,UAAU;AAEtB,MAAMA,WAAU,cAAc,YAAY,GAAG;AAC7C,MAAM,MAAM,KAAK;AAAA,EACf,aAAaA,SAAQ,QAAQ,6BAA6B,GAAG,MAAM;AACrE;AAOA,SAAS,8BAA8B,MAAM;AAC3C,KAAG,gDAAgD,MAAM;AACvD,WAAO,IAAI,QAAQ,GAAG,EAAE,KAAK,EAAE,KAAK,wBAAwB;AAC5D,WAAO,IAAI,QAAQ,YAAY,EAAE,KAAK,EAAE,KAAK,iCAAiC;AAAA,EAChF,CAAC;AAED,KAAG,wEAAwE,YAAY;AACrF,UAAM,OAAO,KAAK,QAAQA,SAAQ,QAAQ,6BAA6B,CAAC;AACxE,UAAM,WAAW,KAAK,KAAK,MAAM,IAAI,QAAQ,GAAG,EAAE,OAAO,QAAQ,SAAS,EAAE,CAAC;AAC7E,UAAM,mBAAmB,KAAK;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AACA,WAAO,MAAM,aAAa,UAAU,MAAM,CAAC,EAAE,IAAI,QAAQ;AACzD,UAAM,UAAU,aAAa,kBAAkB,MAAM;AACrD,WAAO,OAAO,EAAE,IAAI,QAAQ,YAAY;AACxC,UAAM,OAAO,OAAO,iBAAiB,EAAE,QAAQ,QAAQ,2CAA2C;AAAA,EACpG,CAAC;AAED,KAAG,mEAAmE,YAAY;AAChF,WAAO,QAAQ,EAAE,KAAK,IAAI;AAC1B,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,gBAAgB;AACvD;AAAA,MAAO,MACL,eAAe,MAAM,CAAC,cAAc,OAAO,OAAO,IAAI,EAAhC,cAAgD;AAAA,IACxE,EAAE,IAAI,QAAQ;AAAA,EAChB,CAAC;AACH,CAAC;","names":["require"],"file":"ssr-published.ssr-spec.jsx"}