@smwb/ui-solid 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  2. package/dist/assets/styles/less/components/assetGrid/assetGrid.entry.css +1 -0
  3. package/dist/assets/styles/less/components/chipGroup/chipGroup.entry.css +1 -0
  4. package/dist/assets/styles/less/components/lazyImage/lazyImage.entry.css +1 -0
  5. package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -0
  6. package/dist/assets/styles/less/components/saveAssetDialog/saveAssetDialog.entry.css +1 -0
  7. package/dist/assets/styles/less/components/sheet/sheet.entry.css +1 -1
  8. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -0
  9. package/dist/assets/styles/less/components/valueSlider/valueSlider.entry.css +1 -0
  10. package/dist/components/dataDisplay/assetGrid/assetGrid.d.ts +30 -0
  11. package/dist/components/dataDisplay/assetGrid/assetGrid.js +144 -0
  12. package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -0
  13. package/dist/components/dataDisplay/assetGrid/index.d.ts +2 -0
  14. package/dist/components/dataDisplay/chipGroup/chipGroup.d.ts +27 -0
  15. package/dist/components/dataDisplay/chipGroup/chipGroup.js +58 -0
  16. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -0
  17. package/dist/components/dataDisplay/chipGroup/index.d.ts +2 -0
  18. package/dist/components/dataDisplay/lazyImage/index.d.ts +2 -0
  19. package/dist/components/dataDisplay/lazyImage/lazyImage.d.ts +24 -0
  20. package/dist/components/dataDisplay/lazyImage/lazyImage.js +73 -0
  21. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -0
  22. package/dist/components/dataDisplay/thumbCard/index.d.ts +2 -0
  23. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +31 -0
  24. package/dist/components/dataDisplay/thumbCard/thumbCard.js +114 -0
  25. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -0
  26. package/dist/components/feedBack/saveAssetDialog/index.d.ts +2 -0
  27. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.d.ts +30 -0
  28. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +101 -0
  29. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -0
  30. package/dist/components/inputs/valueSlider/index.d.ts +2 -0
  31. package/dist/components/inputs/valueSlider/valueSlider.d.ts +23 -0
  32. package/dist/components/inputs/valueSlider/valueSlider.js +57 -0
  33. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -0
  34. package/dist/components/layout/appLayout/appLayout.js +43 -43
  35. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  36. package/dist/components/navigation/bottomBar/bottomBar.js +31 -30
  37. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  38. package/dist/components/navigation/overflowMenu/index.d.ts +2 -0
  39. package/dist/components/navigation/overflowMenu/overflowMenu.d.ts +27 -0
  40. package/dist/components/navigation/overflowMenu/overflowMenu.js +88 -0
  41. package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -0
  42. package/dist/components/navigation/sidebar/sidebar.js +48 -47
  43. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  44. package/dist/headless/components/dataDisplay/assetGrid/assetGrid.js +143 -0
  45. package/dist/headless/components/dataDisplay/assetGrid/assetGrid.js.map +1 -0
  46. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +57 -0
  47. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -0
  48. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +72 -0
  49. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -0
  50. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +113 -0
  51. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -0
  52. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +100 -0
  53. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -0
  54. package/dist/headless/components/inputs/valueSlider/valueSlider.js +56 -0
  55. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -0
  56. package/dist/headless/components/layout/appLayout/appLayout.js +43 -43
  57. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  58. package/dist/headless/components/navigation/bottomBar/bottomBar.js +31 -30
  59. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  60. package/dist/headless/components/navigation/overflowMenu/overflowMenu.js +87 -0
  61. package/dist/headless/components/navigation/overflowMenu/overflowMenu.js.map +1 -0
  62. package/dist/headless/components/navigation/sidebar/sidebar.js +48 -47
  63. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  64. package/dist/headless/index.js +278 -264
  65. package/dist/headless/index.js.map +1 -1
  66. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +1 -1
  67. package/dist/headless/source/components/base/icon/icon.jsx +1 -1
  68. package/dist/headless/source/components/base/ripple/ripple.jsx +1 -1
  69. package/dist/headless/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
  70. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +1 -1
  71. package/dist/headless/source/components/dataDisplay/assetGrid/assetGrid.jsx +115 -0
  72. package/dist/headless/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -0
  73. package/dist/headless/source/components/dataDisplay/assetGrid/index.js +5 -0
  74. package/dist/headless/source/components/dataDisplay/assetGrid/index.js.map +7 -0
  75. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +1 -1
  76. package/dist/headless/source/components/dataDisplay/badge/badge.jsx +1 -1
  77. package/dist/headless/source/components/dataDisplay/card/card.jsx +1 -1
  78. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +1 -1
  79. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +1 -1
  80. package/dist/headless/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
  81. package/dist/headless/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
  82. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
  83. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
  84. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
  85. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
  86. package/dist/headless/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
  87. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
  88. package/dist/headless/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
  89. package/dist/headless/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
  90. package/dist/headless/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
  91. package/dist/headless/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
  92. package/dist/headless/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
  93. package/dist/headless/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
  94. package/dist/headless/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
  95. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
  96. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +1 -1
  97. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +1 -1
  98. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +50 -0
  99. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -0
  100. package/dist/headless/source/components/dataDisplay/chipGroup/index.js +5 -0
  101. package/dist/headless/source/components/dataDisplay/chipGroup/index.js.map +7 -0
  102. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +1 -1
  103. package/dist/headless/source/components/dataDisplay/imagesList/imagesList.jsx +1 -1
  104. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +1 -1
  105. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
  106. package/dist/headless/source/components/dataDisplay/lazyImage/index.js +5 -0
  107. package/dist/headless/source/components/dataDisplay/lazyImage/index.js.map +7 -0
  108. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +64 -0
  109. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -0
  110. package/dist/headless/source/components/dataDisplay/list/list.jsx +1 -1
  111. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +1 -1
  112. package/dist/headless/source/components/dataDisplay/table/table.jsx +1 -1
  113. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +1 -1
  114. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +1 -1
  115. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +1 -1
  116. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
  117. package/dist/headless/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +1 -1
  118. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +1 -1
  119. package/dist/headless/source/components/dataDisplay/thumbCard/index.js +5 -0
  120. package/dist/headless/source/components/dataDisplay/thumbCard/index.js.map +7 -0
  121. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +93 -0
  122. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -0
  123. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +1 -1
  124. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +1 -1
  125. package/dist/headless/source/components/feedBack/message/message.jsx +1 -1
  126. package/dist/headless/source/components/feedBack/modal/modal.jsx +1 -1
  127. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +1 -1
  128. package/dist/headless/source/components/feedBack/saveAssetDialog/index.js +5 -0
  129. package/dist/headless/source/components/feedBack/saveAssetDialog/index.js.map +7 -0
  130. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +65 -0
  131. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -0
  132. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +1 -1
  133. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +1 -1
  134. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +1 -1
  135. package/dist/headless/source/components/inputs/button/button.jsx +1 -1
  136. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +1 -1
  137. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +1 -1
  138. package/dist/headless/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
  139. package/dist/headless/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
  140. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
  141. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +1 -1
  142. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
  143. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
  144. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
  145. package/dist/headless/source/components/inputs/datePicker/datePickerList.jsx +1 -1
  146. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
  147. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
  148. package/dist/headless/source/components/inputs/fileDrop/countPreview.jsx +1 -1
  149. package/dist/headless/source/components/inputs/fileDrop/fileDrop.jsx +1 -1
  150. package/dist/headless/source/components/inputs/fileDrop/preview.jsx +1 -1
  151. package/dist/headless/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
  152. package/dist/headless/source/components/inputs/fileInput/fileInput.jsx +1 -1
  153. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +1 -1
  154. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +1 -1
  155. package/dist/headless/source/components/inputs/rating/rating.jsx +1 -1
  156. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
  157. package/dist/headless/source/components/inputs/selectField/selectField.jsx +1 -1
  158. package/dist/headless/source/components/inputs/slider/slider.jsx +1 -1
  159. package/dist/headless/source/components/inputs/textField/textField.jsx +1 -1
  160. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
  161. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
  162. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +1 -1
  163. package/dist/headless/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
  164. package/dist/headless/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
  165. package/dist/headless/source/components/inputs/timePicker/timePickerList.jsx +1 -1
  166. package/dist/headless/source/components/inputs/toggle/toggle.jsx +1 -1
  167. package/dist/headless/source/components/inputs/valueSlider/index.js +5 -0
  168. package/dist/headless/source/components/inputs/valueSlider/index.js.map +7 -0
  169. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +54 -0
  170. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -0
  171. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +11 -8
  172. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  173. package/dist/headless/source/components/layout/divider/divider.jsx +1 -1
  174. package/dist/headless/source/components/layout/grid/grid.jsx +1 -1
  175. package/dist/headless/source/components/layout/page/page.jsx +1 -1
  176. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +1 -1
  177. package/dist/headless/source/components/layout/screenDivider/screenDivider.jsx +1 -1
  178. package/dist/headless/source/components/layout/sheet/sheet.jsx +1 -1
  179. package/dist/headless/source/components/layout/stack/stack.jsx +1 -1
  180. package/dist/headless/source/components/navigation/appBar/appBar.jsx +1 -1
  181. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +5 -4
  182. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  183. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +1 -1
  184. package/dist/headless/source/components/navigation/menu/menu.jsx +1 -1
  185. package/dist/headless/source/components/navigation/menu/menuComponent.jsx +1 -1
  186. package/dist/headless/source/components/navigation/menu/menuDivider.jsx +1 -1
  187. package/dist/headless/source/components/navigation/menu/menuFloating.jsx +1 -1
  188. package/dist/headless/source/components/navigation/menu/menuItem.jsx +1 -1
  189. package/dist/headless/source/components/navigation/menu/menuItemIcon.jsx +1 -1
  190. package/dist/headless/source/components/navigation/menu/menuItemText.jsx +1 -1
  191. package/dist/headless/source/components/navigation/menu/menuList.jsx +1 -1
  192. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +1 -1
  193. package/dist/headless/source/components/navigation/overflowMenu/index.js +5 -0
  194. package/dist/headless/source/components/navigation/overflowMenu/index.js.map +7 -0
  195. package/dist/headless/source/components/navigation/overflowMenu/overflowMenu.jsx +60 -0
  196. package/dist/headless/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -0
  197. package/dist/headless/source/components/navigation/pagination/pagination.jsx +1 -1
  198. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -4
  199. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  200. package/dist/headless/source/components/navigation/stepper/stepper.jsx +1 -1
  201. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +1 -1
  202. package/dist/headless/source/components/navigation/tabs/tabs.jsx +1 -1
  203. package/dist/headless/source/index.js +14 -0
  204. package/dist/headless/source/index.js.map +2 -2
  205. package/dist/index.d.ts +14 -0
  206. package/dist/index.js +278 -264
  207. package/dist/index.js.map +1 -1
  208. package/dist/source/components/base/animateHeight/animateHeight.jsx +1 -1
  209. package/dist/source/components/base/icon/icon.jsx +2 -2
  210. package/dist/source/components/base/icon/icon.jsx.map +1 -1
  211. package/dist/source/components/base/ripple/ripple.jsx +2 -2
  212. package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
  213. package/dist/source/components/clickAwayListener/clickAwayListener.jsx +1 -1
  214. package/dist/source/components/dataDisplay/accordion/accordion.jsx +2 -2
  215. package/dist/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
  216. package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx +116 -0
  217. package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -0
  218. package/dist/source/components/dataDisplay/assetGrid/index.js +5 -0
  219. package/dist/source/components/dataDisplay/assetGrid/index.js.map +7 -0
  220. package/dist/source/components/dataDisplay/avatar/avatar.jsx +2 -2
  221. package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  222. package/dist/source/components/dataDisplay/badge/badge.jsx +2 -2
  223. package/dist/source/components/dataDisplay/badge/badge.jsx.map +1 -1
  224. package/dist/source/components/dataDisplay/card/card.jsx +2 -2
  225. package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
  226. package/dist/source/components/dataDisplay/carousel/carousel.jsx +2 -2
  227. package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  228. package/dist/source/components/dataDisplay/chat/chat.jsx +2 -2
  229. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  230. package/dist/source/components/dataDisplay/chat/chatAttachmentImage.jsx +1 -1
  231. package/dist/source/components/dataDisplay/chat/chatAttachments.jsx +1 -1
  232. package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -1
  233. package/dist/source/components/dataDisplay/chat/chatHeader.jsx +1 -1
  234. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +1 -1
  235. package/dist/source/components/dataDisplay/chat/chatLayout.jsx +1 -1
  236. package/dist/source/components/dataDisplay/chat/chatMessageAvatar.jsx +1 -1
  237. package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx +1 -1
  238. package/dist/source/components/dataDisplay/chat/chatMessageIncoming.jsx +1 -1
  239. package/dist/source/components/dataDisplay/chat/chatMessageItem.jsx +1 -1
  240. package/dist/source/components/dataDisplay/chat/chatMessageOutgoing.jsx +1 -1
  241. package/dist/source/components/dataDisplay/chat/chatMessageSkeleton.jsx +1 -1
  242. package/dist/source/components/dataDisplay/chat/chatMessageStatus.jsx +1 -1
  243. package/dist/source/components/dataDisplay/chat/chatMessageSystem.jsx +1 -1
  244. package/dist/source/components/dataDisplay/chat/chatMessages.jsx +1 -1
  245. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +1 -1
  246. package/dist/source/components/dataDisplay/chat/chatShell.jsx +1 -1
  247. package/dist/source/components/dataDisplay/chip/chip.jsx +2 -2
  248. package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  249. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +51 -0
  250. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -0
  251. package/dist/source/components/dataDisplay/chipGroup/index.js +5 -0
  252. package/dist/source/components/dataDisplay/chipGroup/index.js.map +7 -0
  253. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +2 -2
  254. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  255. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx +2 -2
  256. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx.map +1 -1
  257. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +2 -2
  258. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
  259. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.jsx +1 -1
  260. package/dist/source/components/dataDisplay/lazyImage/index.js +5 -0
  261. package/dist/source/components/dataDisplay/lazyImage/index.js.map +7 -0
  262. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +65 -0
  263. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -0
  264. package/dist/source/components/dataDisplay/list/list.jsx +2 -2
  265. package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
  266. package/dist/source/components/dataDisplay/list/listItem.jsx +1 -1
  267. package/dist/source/components/dataDisplay/table/table.jsx +2 -2
  268. package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
  269. package/dist/source/components/dataDisplay/table/tableBody.jsx +1 -1
  270. package/dist/source/components/dataDisplay/table/tableCell.jsx +1 -1
  271. package/dist/source/components/dataDisplay/table/tableHead.jsx +1 -1
  272. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +1 -1
  273. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +2 -2
  274. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx.map +1 -1
  275. package/dist/source/components/dataDisplay/table/tableRow.jsx +1 -1
  276. package/dist/source/components/dataDisplay/thumbCard/index.js +5 -0
  277. package/dist/source/components/dataDisplay/thumbCard/index.js.map +7 -0
  278. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +94 -0
  279. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -0
  280. package/dist/source/components/dataDisplay/treeView/treeView.jsx +2 -2
  281. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  282. package/dist/source/components/dataDisplay/typography/typography.jsx +2 -2
  283. package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  284. package/dist/source/components/feedBack/message/message.jsx +2 -2
  285. package/dist/source/components/feedBack/message/message.jsx.map +1 -1
  286. package/dist/source/components/feedBack/modal/modal.jsx +2 -2
  287. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  288. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx +2 -2
  289. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
  290. package/dist/source/components/feedBack/saveAssetDialog/index.js +5 -0
  291. package/dist/source/components/feedBack/saveAssetDialog/index.js.map +7 -0
  292. package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +66 -0
  293. package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -0
  294. package/dist/source/components/feedBack/skeleton/skeleton.jsx +2 -2
  295. package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  296. package/dist/source/components/feedBack/snackbar/snackbar.jsx +2 -2
  297. package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  298. package/dist/source/components/feedBack/tooltip/tooltip.jsx +2 -2
  299. package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  300. package/dist/source/components/inputs/button/button.jsx +2 -2
  301. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  302. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +2 -2
  303. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  304. package/dist/source/components/inputs/checkbox/checkbox.jsx +2 -2
  305. package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  306. package/dist/source/components/inputs/datePicker/dataPickerDays.jsx +1 -1
  307. package/dist/source/components/inputs/datePicker/dataPickerHeader.jsx +1 -1
  308. package/dist/source/components/inputs/datePicker/dataPickerInput.jsx +1 -1
  309. package/dist/source/components/inputs/datePicker/datePicker.jsx +2 -2
  310. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  311. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +1 -1
  312. package/dist/source/components/inputs/datePicker/datePickerDay.jsx +1 -1
  313. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +1 -1
  314. package/dist/source/components/inputs/datePicker/datePickerList.jsx +1 -1
  315. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +1 -1
  316. package/dist/source/components/inputs/dateTimePicker/dateTimePickerInput.jsx +1 -1
  317. package/dist/source/components/inputs/fileDrop/countPreview.jsx +1 -1
  318. package/dist/source/components/inputs/fileDrop/fileDrop.jsx +2 -2
  319. package/dist/source/components/inputs/fileDrop/fileDrop.jsx.map +1 -1
  320. package/dist/source/components/inputs/fileDrop/preview.jsx +1 -1
  321. package/dist/source/components/inputs/fileDrop/previewWrapper.jsx +1 -1
  322. package/dist/source/components/inputs/fileInput/fileInput.jsx +2 -2
  323. package/dist/source/components/inputs/fileInput/fileInput.jsx.map +1 -1
  324. package/dist/source/components/inputs/floatingButton/floatingButton.jsx +2 -2
  325. package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  326. package/dist/source/components/inputs/radioButton/radioButton.jsx +2 -2
  327. package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  328. package/dist/source/components/inputs/rating/rating.jsx +2 -2
  329. package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
  330. package/dist/source/components/inputs/selectField/dropdownMenu.jsx +1 -1
  331. package/dist/source/components/inputs/selectField/selectField.jsx +2 -2
  332. package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
  333. package/dist/source/components/inputs/slider/slider.jsx +2 -2
  334. package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
  335. package/dist/source/components/inputs/textField/textField.jsx +2 -2
  336. package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
  337. package/dist/source/components/inputs/textField/textFieldAdornment.jsx +1 -1
  338. package/dist/source/components/inputs/textField/textFieldWrapper.jsx +1 -1
  339. package/dist/source/components/inputs/timePicker/timePicker.jsx +2 -2
  340. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  341. package/dist/source/components/inputs/timePicker/timePickerColumns.jsx +1 -1
  342. package/dist/source/components/inputs/timePicker/timePickerInput.jsx +1 -1
  343. package/dist/source/components/inputs/timePicker/timePickerList.jsx +1 -1
  344. package/dist/source/components/inputs/toggle/toggle.jsx +2 -2
  345. package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
  346. package/dist/source/components/inputs/valueSlider/index.js +5 -0
  347. package/dist/source/components/inputs/valueSlider/index.js.map +7 -0
  348. package/dist/source/components/inputs/valueSlider/valueSlider.jsx +55 -0
  349. package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -0
  350. package/dist/source/components/layout/appLayout/appLayout.jsx +12 -9
  351. package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  352. package/dist/source/components/layout/divider/divider.jsx +2 -2
  353. package/dist/source/components/layout/divider/divider.jsx.map +1 -1
  354. package/dist/source/components/layout/grid/grid.jsx +2 -2
  355. package/dist/source/components/layout/grid/grid.jsx.map +1 -1
  356. package/dist/source/components/layout/page/page.jsx +2 -2
  357. package/dist/source/components/layout/page/page.jsx.map +1 -1
  358. package/dist/source/components/layout/pageHeader/pageHeader.jsx +2 -2
  359. package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  360. package/dist/source/components/layout/screenDivider/screenDivider.jsx +2 -2
  361. package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
  362. package/dist/source/components/layout/sheet/sheet.jsx +2 -2
  363. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  364. package/dist/source/components/layout/stack/stack.jsx +2 -2
  365. package/dist/source/components/layout/stack/stack.jsx.map +1 -1
  366. package/dist/source/components/navigation/appBar/appBar.jsx +2 -2
  367. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  368. package/dist/source/components/navigation/bottomBar/bottomBar.jsx +6 -5
  369. package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  370. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +2 -2
  371. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  372. package/dist/source/components/navigation/menu/menu.jsx +2 -2
  373. package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
  374. package/dist/source/components/navigation/menu/menuComponent.jsx +1 -1
  375. package/dist/source/components/navigation/menu/menuDivider.jsx +1 -1
  376. package/dist/source/components/navigation/menu/menuFloating.jsx +1 -1
  377. package/dist/source/components/navigation/menu/menuItem.jsx +1 -1
  378. package/dist/source/components/navigation/menu/menuItemIcon.jsx +1 -1
  379. package/dist/source/components/navigation/menu/menuItemText.jsx +1 -1
  380. package/dist/source/components/navigation/menu/menuList.jsx +1 -1
  381. package/dist/source/components/navigation/menu/menuSubmenu.jsx +1 -1
  382. package/dist/source/components/navigation/overflowMenu/index.js +5 -0
  383. package/dist/source/components/navigation/overflowMenu/index.js.map +7 -0
  384. package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx +61 -0
  385. package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -0
  386. package/dist/source/components/navigation/pagination/pagination.jsx +2 -2
  387. package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
  388. package/dist/source/components/navigation/sidebar/sidebar.jsx +6 -5
  389. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  390. package/dist/source/components/navigation/stepper/stepper.jsx +2 -2
  391. package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
  392. package/dist/source/components/navigation/tabs/tab/tab.jsx +2 -2
  393. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  394. package/dist/source/components/navigation/tabs/tabs.jsx +2 -2
  395. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  396. package/dist/source/index.js +14 -0
  397. package/dist/source/index.js.map +2 -2
  398. package/package.json +9 -5
  399. package/dist/headless/source/ssr-published.ssr-spec.jsx +0 -35
  400. package/dist/headless/source/ssr-published.ssr-spec.jsx.map +0 -1
  401. package/dist/headless/source/ssr.ssr-spec.jsx +0 -113
  402. package/dist/headless/source/ssr.ssr-spec.jsx.map +0 -1
  403. package/dist/source/ssr-published.ssr-spec.jsx +0 -35
  404. package/dist/source/ssr-published.ssr-spec.jsx.map +0 -1
  405. package/dist/source/ssr.ssr-spec.jsx +0 -113
  406. package/dist/source/ssr.ssr-spec.jsx.map +0 -1
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/table/table.entry.less";
1
+ import "@smwb/ui-styles/less/components/table/table.entry.less";
2
2
  import { Show, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { TablePagination } from "./tablePagination/tablePagination";
@@ -44,4 +44,4 @@ export {
44
44
  Table,
45
45
  table_default as default
46
46
  };
47
- //# sourceMappingURL=table.js.map
47
+ //# sourceMappingURL=table.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/table/table.entry.less\";\nimport { type JSX, type ParentProps, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TablePagination, type TablePaginationProps } from \"./tablePagination/tablePagination\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TableProps extends JSX.HTMLAttributes<HTMLDivElement> {\n dense?: boolean;\n isLoading?: boolean;\n hovered?: boolean;\n /** Pins the table header while the body scrolls. */\n stickyHeader?: boolean;\n /** Optional accessible caption rendered for screen readers. */\n caption?: JSX.Element;\n paginationSettings?: TablePaginationProps;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Table(props: ParentProps<TableProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"dense\",\n \"hovered\",\n \"children\",\n \"paginationSettings\",\n \"isLoading\",\n \"stickyHeader\",\n \"caption\",\n \"ref\",\n ]);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-table__wrapper\", local.class, { \"smwb-table__wrapper_loading\": local.isLoading })}\n >\n <div class={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!local.paginationSettings })}>\n <table\n class={cn(\"smwb-table\", {\n \"smwb-dense\": local.dense,\n \"smwb-hovered\": local.hovered,\n \"smwb-table_sticky-header\": local.stickyHeader,\n })}\n >\n <Show when={local.caption != null}>\n <caption class=\"smwb-table__caption\">{local.caption}</caption>\n </Show>\n {local.children}\n </table>\n </div>\n <Show when={local.paginationSettings}>\n {(settings) => <TablePagination {...settings()} />}\n </Show>\n </div>\n );\n}\n\nexport default Table;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,kBAAkB;AAC7D,OAAO,QAAQ;AACf,SAAS,uBAAkD;AAC3D,SAAS,iBAA2B;AAc7B,SAAS,MAAM,OAA6C;AACjE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,uBAAuB,MAAM,OAAO,EAAE,+BAA+B,MAAM,UAAU,CAAC;AAAA,GACjG;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAAC,MAAM,mBAAmB,CAAC,GAAG;AAAA,QAC9F,CAAC;AAAA,IACC,OAAO,GAAG,cAAc;AAAA,MACtB,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,4BAA4B,MAAM;AAAA,IACpC,CAAC;AAAA,GACF;AAAA,UACC,CAAC,KAAK,MAAM,MAAM,WAAW,MAAM;AAAA,YACjC,CAAC,QAAQ,MAAM,uBAAuB,MAAM,QAAQ,EAAnD,QAA6D;AAAA,UAChE,EAFC,KAEM;AAAA,WACN,MAAM,SAAS;AAAA,QAClB,EAXC,MAWO;AAAA,MACV,EAbC,IAaK;AAAA,MACN,CAAC,KAAK,MAAM,MAAM,oBAAoB;AAAA,SACnC,CAAC,aAAa,CAAC,oBAAoB,SAAS,GAAG,GAAG;AAAA,MACrD,EAFC,KAEM;AAAA,IACT,EAtBC;AAwBL;AAEA,IAAO,gBAAQ;","names":[],"file":"table.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/table/table.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/table/table.entry.less\";\nimport { type JSX, type ParentProps, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { TablePagination, type TablePaginationProps } from \"./tablePagination/tablePagination\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TableProps extends JSX.HTMLAttributes<HTMLDivElement> {\n dense?: boolean;\n isLoading?: boolean;\n hovered?: boolean;\n /** Pins the table header while the body scrolls. */\n stickyHeader?: boolean;\n /** Optional accessible caption rendered for screen readers. */\n caption?: JSX.Element;\n paginationSettings?: TablePaginationProps;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Table(props: ParentProps<TableProps>): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"dense\",\n \"hovered\",\n \"children\",\n \"paginationSettings\",\n \"isLoading\",\n \"stickyHeader\",\n \"caption\",\n \"ref\",\n ]);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-table__wrapper\", local.class, { \"smwb-table__wrapper_loading\": local.isLoading })}\n >\n <div class={cn(\"smwb-table__container\", { \"smwb-withPagination\": !!local.paginationSettings })}>\n <table\n class={cn(\"smwb-table\", {\n \"smwb-dense\": local.dense,\n \"smwb-hovered\": local.hovered,\n \"smwb-table_sticky-header\": local.stickyHeader,\n })}\n >\n <Show when={local.caption != null}>\n <caption class=\"smwb-table__caption\">{local.caption}</caption>\n </Show>\n {local.children}\n </table>\n </div>\n <Show when={local.paginationSettings}>\n {(settings) => <TablePagination {...settings()} />}\n </Show>\n </div>\n );\n}\n\nexport default Table;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,kBAAkB;AAC7D,OAAO,QAAQ;AACf,SAAS,uBAAkD;AAC3D,SAAS,iBAA2B;AAc7B,SAAS,MAAM,OAA6C;AACjE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,OAAO;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,uBAAuB,MAAM,OAAO,EAAE,+BAA+B,MAAM,UAAU,CAAC;AAAA,GACjG;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,yBAAyB,EAAE,uBAAuB,CAAC,CAAC,MAAM,mBAAmB,CAAC,GAAG;AAAA,QAC9F,CAAC;AAAA,IACC,OAAO,GAAG,cAAc;AAAA,MACtB,cAAc,MAAM;AAAA,MACpB,gBAAgB,MAAM;AAAA,MACtB,4BAA4B,MAAM;AAAA,IACpC,CAAC;AAAA,GACF;AAAA,UACC,CAAC,KAAK,MAAM,MAAM,WAAW,MAAM;AAAA,YACjC,CAAC,QAAQ,MAAM,uBAAuB,MAAM,QAAQ,EAAnD,QAA6D;AAAA,UAChE,EAFC,KAEM;AAAA,WACN,MAAM,SAAS;AAAA,QAClB,EAXC,MAWO;AAAA,MACV,EAbC,IAaK;AAAA,MACN,CAAC,KAAK,MAAM,MAAM,oBAAoB;AAAA,SACnC,CAAC,aAAa,CAAC,oBAAoB,SAAS,GAAG,GAAG;AAAA,MACrD,EAFC,KAEM;AAAA,IACT,EAtBC;AAwBL;AAEA,IAAO,gBAAQ;","names":[],"file":"table.jsx"}
@@ -12,4 +12,4 @@ export {
12
12
  TableBody,
13
13
  tableBody_default as default
14
14
  };
15
- //# sourceMappingURL=tableBody.js.map
15
+ //# sourceMappingURL=tableBody.jsx.map
@@ -13,4 +13,4 @@ export {
13
13
  TableCell,
14
14
  tableCell_default as default
15
15
  };
16
- //# sourceMappingURL=tableCell.js.map
16
+ //# sourceMappingURL=tableCell.jsx.map
@@ -12,4 +12,4 @@ export {
12
12
  TableHead,
13
13
  tableHead_default as default
14
14
  };
15
- //# sourceMappingURL=tableHead.js.map
15
+ //# sourceMappingURL=tableHead.jsx.map
@@ -50,4 +50,4 @@ export {
50
50
  TableHeadCell,
51
51
  tableHeadCell_default as default
52
52
  };
53
- //# sourceMappingURL=tableHeadCell.js.map
53
+ //# sourceMappingURL=tableHeadCell.jsx.map
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/table/tablePagination/tablePagination.entry.less";
1
+ import "@smwb/ui-styles/less/components/table/tablePagination/tablePagination.entry.less";
2
2
  import { For, Show } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { Icon } from "../../../base/icon";
@@ -45,4 +45,4 @@ export {
45
45
  TablePagination,
46
46
  tablePagination_default as default
47
47
  };
48
- //# sourceMappingURL=tablePagination.js.map
48
+ //# sourceMappingURL=tablePagination.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/dataDisplay/table/tablePagination/tablePagination.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/table/tablePagination/tablePagination.entry.less\";\nimport { type JSX, For, Show } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../../base/icon\";\n\nexport interface BaseTablePaginationProps {\n page: number;\n limit: number;\n onPrev?: () => void;\n onNext?: () => void;\n limitOptions?: number[];\n onLimitChange?: (limit: number) => void;\n}\n\ninterface WithTotalCount extends BaseTablePaginationProps {\n totalCount: number;\n hasNextPage?: never;\n}\n\ninterface WithHasNextPage extends BaseTablePaginationProps {\n totalCount?: never;\n hasNextPage: boolean;\n}\n\nexport type TablePaginationProps = WithTotalCount | WithHasNextPage;\n\nexport function TablePagination(props: TablePaginationProps): JSX.Element {\n const isInfiniteMode = (): boolean => typeof props.totalCount === \"undefined\";\n const isDisabledNext = (): boolean =>\n isInfiniteMode() ? !props.hasNextPage : props.page === Math.ceil((props.totalCount as number) / props.limit);\n\n const countText = (): string => {\n const from = props.page * props.limit - props.limit;\n const to = props.page * props.limit;\n return `${from}–${to}` + (isInfiniteMode() ? \"\" : ` of ${props.totalCount}`);\n };\n\n const onLimitChange: JSX.EventHandler<HTMLSelectElement, Event> = (event) => {\n props.onLimitChange?.(+event.currentTarget.value);\n };\n\n return (\n <div class=\"smwb-table__pagination\">\n <div class=\"smwb-table__pagination__controls\">\n <Show when={props.limitOptions && props.limitOptions.length > 1}>\n <div class=\"smwb-table__pagination__rows\">\n <span>Rows per page</span>\n <select id=\"rows\" class=\"smwb-table__pagination__select\" onChange={onLimitChange} value={props.limit}>\n <For each={props.limitOptions}>\n {(opt) => (\n <option value={opt} class={cn(\"smwb-select-option\", { selected: opt === props.limit })}>\n {opt}\n </option>\n )}\n </For>\n </select>\n </div>\n </Show>\n <div class=\"smwb-table__pagination__current-count\">{countText()}</div>\n <div class=\"smwb-table__pagination__buttons\">\n <button class=\"smwb-table__pagination__control\" onClick={() => props.onPrev?.()} disabled={props.page === 1}>\n <Icon name=\"chevron_left\" size={24} weight={600} />\n </button>\n <span class=\"smwb-table__pagination__page\">{props.page}</span>\n <button class=\"smwb-table__pagination__control\" onClick={() => props.onNext?.()} disabled={isDisabledNext()}>\n <Icon name=\"chevron_right\" size={24} weight={600} />\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default TablePagination;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,KAAK,YAAY;AACpC,OAAO,QAAQ;AACf,SAAS,YAAY;AAuBd,SAAS,gBAAgB,OAA0C;AACxE,QAAM,iBAAiB,MAAe,OAAO,MAAM,eAAe;AAClE,QAAM,iBAAiB,MACrB,eAAe,IAAI,CAAC,MAAM,cAAc,MAAM,SAAS,KAAK,KAAM,MAAM,aAAwB,MAAM,KAAK;AAE7G,QAAM,YAAY,MAAc;AAC9B,UAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,MAAM;AAC9C,UAAM,KAAK,MAAM,OAAO,MAAM;AAC9B,WAAO,GAAG,IAAI,SAAI,EAAE,MAAM,eAAe,IAAI,KAAK,OAAO,MAAM,UAAU;AAAA,EAC3E;AAEA,QAAM,gBAA4D,CAAC,UAAU;AAC3E,UAAM,gBAAgB,CAAC,MAAM,cAAc,KAAK;AAAA,EAClD;AAEA,SACE,CAAC,IAAI,MAAM,yBAAyB;AAAA,MAClC,CAAC,IAAI,MAAM,mCAAmC;AAAA,QAC5C,CAAC,KAAK,MAAM,MAAM,gBAAgB,MAAM,aAAa,SAAS,GAAG;AAAA,UAC/D,CAAC,IAAI,MAAM,+BAA+B;AAAA,YACxC,CAAC,KAAK,aAAa,EAAlB,KAAyB;AAAA,YAC1B,CAAC,OAAO,GAAG,OAAO,MAAM,iCAAiC,UAAU,eAAe,OAAO,MAAM,OAAO;AAAA,cACpG,CAAC,IAAI,MAAM,MAAM,cAAc;AAAA,iBAC5B,CAAC,QACA,CAAC,OAAO,OAAO,KAAK,OAAO,GAAG,sBAAsB,EAAE,UAAU,QAAQ,MAAM,MAAM,CAAC,GAAG;AAAA,qBACrF,IAAI;AAAA,kBACP,EAFC,QAGD;AAAA,cACJ,EANC,IAMK;AAAA,YACR,EARC,OAQQ;AAAA,UACX,EAXC,IAWK;AAAA,QACR,EAbC,KAaM;AAAA,QACP,CAAC,IAAI,MAAM,yCAAyC,UAAU,EAAE,EAA/D,IAAqE;AAAA,QACtE,CAAC,IAAI,MAAM,kCAAkC;AAAA,UAC3C,CAAC,OAAO,MAAM,kCAAkC,SAAS,MAAM,MAAM,SAAS,GAAG,UAAU,MAAM,SAAS,GAAG;AAAA,YAC3G,CAAC,KAAK,KAAK,eAAe,MAAM,IAAI,QAAQ,KAAK,EAAE;AAAA,UACrD,EAFC,OAEQ;AAAA,UACT,CAAC,KAAK,MAAM,gCAAgC,MAAM,KAAK,EAAtD,KAA6D;AAAA,UAC9D,CAAC,OAAO,MAAM,kCAAkC,SAAS,MAAM,MAAM,SAAS,GAAG,UAAU,eAAe,GAAG;AAAA,YAC3G,CAAC,KAAK,KAAK,gBAAgB,MAAM,IAAI,QAAQ,KAAK,EAAE;AAAA,UACtD,EAFC,OAEQ;AAAA,QACX,EARC,IAQK;AAAA,MACR,EAzBC,IAyBK;AAAA,IACR,EA3BC;AA6BL;AAEA,IAAO,0BAAQ;","names":[],"file":"tablePagination.jsx"}
1
+ {"version":3,"sources":["../../../../../../src/components/dataDisplay/table/tablePagination/tablePagination.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/table/tablePagination/tablePagination.entry.less\";\nimport { type JSX, For, Show } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../../base/icon\";\n\nexport interface BaseTablePaginationProps {\n page: number;\n limit: number;\n onPrev?: () => void;\n onNext?: () => void;\n limitOptions?: number[];\n onLimitChange?: (limit: number) => void;\n}\n\ninterface WithTotalCount extends BaseTablePaginationProps {\n totalCount: number;\n hasNextPage?: never;\n}\n\ninterface WithHasNextPage extends BaseTablePaginationProps {\n totalCount?: never;\n hasNextPage: boolean;\n}\n\nexport type TablePaginationProps = WithTotalCount | WithHasNextPage;\n\nexport function TablePagination(props: TablePaginationProps): JSX.Element {\n const isInfiniteMode = (): boolean => typeof props.totalCount === \"undefined\";\n const isDisabledNext = (): boolean =>\n isInfiniteMode() ? !props.hasNextPage : props.page === Math.ceil((props.totalCount as number) / props.limit);\n\n const countText = (): string => {\n const from = props.page * props.limit - props.limit;\n const to = props.page * props.limit;\n return `${from}–${to}` + (isInfiniteMode() ? \"\" : ` of ${props.totalCount}`);\n };\n\n const onLimitChange: JSX.EventHandler<HTMLSelectElement, Event> = (event) => {\n props.onLimitChange?.(+event.currentTarget.value);\n };\n\n return (\n <div class=\"smwb-table__pagination\">\n <div class=\"smwb-table__pagination__controls\">\n <Show when={props.limitOptions && props.limitOptions.length > 1}>\n <div class=\"smwb-table__pagination__rows\">\n <span>Rows per page</span>\n <select id=\"rows\" class=\"smwb-table__pagination__select\" onChange={onLimitChange} value={props.limit}>\n <For each={props.limitOptions}>\n {(opt) => (\n <option value={opt} class={cn(\"smwb-select-option\", { selected: opt === props.limit })}>\n {opt}\n </option>\n )}\n </For>\n </select>\n </div>\n </Show>\n <div class=\"smwb-table__pagination__current-count\">{countText()}</div>\n <div class=\"smwb-table__pagination__buttons\">\n <button class=\"smwb-table__pagination__control\" onClick={() => props.onPrev?.()} disabled={props.page === 1}>\n <Icon name=\"chevron_left\" size={24} weight={600} />\n </button>\n <span class=\"smwb-table__pagination__page\">{props.page}</span>\n <button class=\"smwb-table__pagination__control\" onClick={() => props.onNext?.()} disabled={isDisabledNext()}>\n <Icon name=\"chevron_right\" size={24} weight={600} />\n </button>\n </div>\n </div>\n </div>\n );\n}\n\nexport default TablePagination;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,KAAK,YAAY;AACpC,OAAO,QAAQ;AACf,SAAS,YAAY;AAuBd,SAAS,gBAAgB,OAA0C;AACxE,QAAM,iBAAiB,MAAe,OAAO,MAAM,eAAe;AAClE,QAAM,iBAAiB,MACrB,eAAe,IAAI,CAAC,MAAM,cAAc,MAAM,SAAS,KAAK,KAAM,MAAM,aAAwB,MAAM,KAAK;AAE7G,QAAM,YAAY,MAAc;AAC9B,UAAM,OAAO,MAAM,OAAO,MAAM,QAAQ,MAAM;AAC9C,UAAM,KAAK,MAAM,OAAO,MAAM;AAC9B,WAAO,GAAG,IAAI,SAAI,EAAE,MAAM,eAAe,IAAI,KAAK,OAAO,MAAM,UAAU;AAAA,EAC3E;AAEA,QAAM,gBAA4D,CAAC,UAAU;AAC3E,UAAM,gBAAgB,CAAC,MAAM,cAAc,KAAK;AAAA,EAClD;AAEA,SACE,CAAC,IAAI,MAAM,yBAAyB;AAAA,MAClC,CAAC,IAAI,MAAM,mCAAmC;AAAA,QAC5C,CAAC,KAAK,MAAM,MAAM,gBAAgB,MAAM,aAAa,SAAS,GAAG;AAAA,UAC/D,CAAC,IAAI,MAAM,+BAA+B;AAAA,YACxC,CAAC,KAAK,aAAa,EAAlB,KAAyB;AAAA,YAC1B,CAAC,OAAO,GAAG,OAAO,MAAM,iCAAiC,UAAU,eAAe,OAAO,MAAM,OAAO;AAAA,cACpG,CAAC,IAAI,MAAM,MAAM,cAAc;AAAA,iBAC5B,CAAC,QACA,CAAC,OAAO,OAAO,KAAK,OAAO,GAAG,sBAAsB,EAAE,UAAU,QAAQ,MAAM,MAAM,CAAC,GAAG;AAAA,qBACrF,IAAI;AAAA,kBACP,EAFC,QAGD;AAAA,cACJ,EANC,IAMK;AAAA,YACR,EARC,OAQQ;AAAA,UACX,EAXC,IAWK;AAAA,QACR,EAbC,KAaM;AAAA,QACP,CAAC,IAAI,MAAM,yCAAyC,UAAU,EAAE,EAA/D,IAAqE;AAAA,QACtE,CAAC,IAAI,MAAM,kCAAkC;AAAA,UAC3C,CAAC,OAAO,MAAM,kCAAkC,SAAS,MAAM,MAAM,SAAS,GAAG,UAAU,MAAM,SAAS,GAAG;AAAA,YAC3G,CAAC,KAAK,KAAK,eAAe,MAAM,IAAI,QAAQ,KAAK,EAAE;AAAA,UACrD,EAFC,OAEQ;AAAA,UACT,CAAC,KAAK,MAAM,gCAAgC,MAAM,KAAK,EAAtD,KAA6D;AAAA,UAC9D,CAAC,OAAO,MAAM,kCAAkC,SAAS,MAAM,MAAM,SAAS,GAAG,UAAU,eAAe,GAAG;AAAA,YAC3G,CAAC,KAAK,KAAK,gBAAgB,MAAM,IAAI,QAAQ,KAAK,EAAE;AAAA,UACtD,EAFC,OAEQ;AAAA,QACX,EARC,IAQK;AAAA,MACR,EAzBC,IAyBK;AAAA,IACR,EA3BC;AA6BL;AAEA,IAAO,0BAAQ;","names":[],"file":"tablePagination.jsx"}
@@ -22,4 +22,4 @@ export {
22
22
  TableRow,
23
23
  tableRow_default as default
24
24
  };
25
- //# sourceMappingURL=tableRow.js.map
25
+ //# sourceMappingURL=tableRow.jsx.map
@@ -0,0 +1,5 @@
1
+ import { ThumbCard } from "./thumbCard";
2
+ export {
3
+ ThumbCard
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/dataDisplay/thumbCard/index.ts"],
4
+ "sourcesContent": ["export { ThumbCard } from \"./thumbCard\";\nexport type { ThumbCardProps } from \"./thumbCard\";\n"],
5
+ "mappings": "AAAA,SAAS,iBAAiB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,94 @@
1
+ import "@smwb/ui-styles/less/components/thumbCard/thumbCard.entry.less";
2
+ import { Show, createSignal, mergeProps, onCleanup, splitProps } from "solid-js";
3
+ import { Portal, isServer } from "solid-js/web";
4
+ import cn from "clsx";
5
+ import { createFloating } from "../../../primitives/createFloating";
6
+ import { LazyImage } from "../lazyImage";
7
+ import { mergeRefs } from "../../../primitives/mergeRefs";
8
+ function ThumbCard(props) {
9
+ const merged = mergeProps({ lazy: true, hoverDelay: 350 }, props);
10
+ const [local, rest] = splitProps(merged, [
11
+ "src",
12
+ "caption",
13
+ "selected",
14
+ "onSelect",
15
+ "fallback",
16
+ "hoverPreview",
17
+ "topStart",
18
+ "topEnd",
19
+ "lazy",
20
+ "disabled",
21
+ "hoverDelay",
22
+ "class",
23
+ "ref"
24
+ ]);
25
+ const floating = createFloating({ placement: () => "right" });
26
+ const [previewOpen, setPreviewOpen] = createSignal(false);
27
+ let hoverTimer;
28
+ const clearTimer = () => {
29
+ if (hoverTimer) {
30
+ clearTimeout(hoverTimer);
31
+ hoverTimer = void 0;
32
+ }
33
+ };
34
+ const onEnter = () => {
35
+ if (local.hoverPreview == null || local.disabled) return;
36
+ clearTimer();
37
+ hoverTimer = setTimeout(() => setPreviewOpen(true), local.hoverDelay);
38
+ };
39
+ const onLeave = () => {
40
+ clearTimer();
41
+ setPreviewOpen(false);
42
+ };
43
+ onCleanup(clearTimer);
44
+ const interactive = () => !!local.onSelect && !local.disabled;
45
+ const onKeyDown = (event) => {
46
+ if (interactive() && (event.key === "Enter" || event.key === " ")) {
47
+ event.preventDefault();
48
+ local.onSelect?.();
49
+ }
50
+ };
51
+ return <div
52
+ {...rest}
53
+ ref={mergeRefs(local.ref, (el) => floating.setReference(el))}
54
+ class={cn("smwb-thumb-card", local.class, {
55
+ "smwb-thumb-card--selected": local.selected,
56
+ "smwb-thumb-card--disabled": local.disabled,
57
+ "smwb-thumb-card--interactive": interactive()
58
+ })}
59
+ role={interactive() ? "button" : void 0}
60
+ tabindex={interactive() ? 0 : void 0}
61
+ aria-pressed={local.onSelect ? local.selected ?? false : void 0}
62
+ aria-disabled={local.disabled || void 0}
63
+ onClick={interactive() ? () => local.onSelect?.() : void 0}
64
+ onKeyDown={onKeyDown}
65
+ onMouseEnter={onEnter}
66
+ onMouseLeave={onLeave}
67
+ >
68
+ <div class="smwb-thumb-card__media">
69
+ <LazyImage src={local.src} lazy={local.lazy} fallback={local.fallback} />
70
+ <Show when={local.topStart}>
71
+ <div class="smwb-thumb-card__slot smwb-thumb-card__slot--start">{local.topStart}</div>
72
+ </Show>
73
+ <Show when={local.topEnd}>
74
+ <div class="smwb-thumb-card__slot smwb-thumb-card__slot--end">{local.topEnd}</div>
75
+ </Show>
76
+ </div>
77
+ <Show when={local.caption}>
78
+ <div class="smwb-thumb-card__caption">{local.caption}</div>
79
+ </Show>
80
+ <Show when={previewOpen() && !isServer}>
81
+ <Portal>
82
+ <div class="smwb-thumb-card__preview" ref={(el) => floating.setFloating(el)} style={floating.floatingStyles()}>
83
+ {typeof local.hoverPreview === "string" ? <img src={local.hoverPreview} alt="" /> : local.hoverPreview}
84
+ </div>
85
+ </Portal>
86
+ </Show>
87
+ </div>;
88
+ }
89
+ var thumbCard_default = ThumbCard;
90
+ export {
91
+ ThumbCard,
92
+ thumbCard_default as default
93
+ };
94
+ //# sourceMappingURL=thumbCard.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/thumbCard/thumbCard.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/thumbCard/thumbCard.entry.less\";\nimport { type JSX, Show, createSignal, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createFloating } from \"../../../primitives/createFloating\";\nimport { LazyImage } from \"../lazyImage\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ThumbCardProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n /** Thumbnail URL; falls back to `fallback` when missing / failed. */\n src?: string;\n caption?: JSX.Element;\n selected?: boolean;\n /** Makes the card a selectable button (keyboard + `aria-pressed`). */\n onSelect?: () => void;\n /** Shown in place of the image when `src` is missing / fails. */\n fallback?: JSX.Element;\n /** A larger preview shown in a floating popup after a hover delay. */\n hoverPreview?: JSX.Element | string;\n /** Top-left overlay slot (e.g. a favourite star). */\n topStart?: JSX.Element;\n /** Top-right overlay slot (e.g. a kebab menu). */\n topEnd?: JSX.Element;\n lazy?: boolean;\n disabled?: boolean;\n /** Delay (ms) before the hover preview appears. Default 350. */\n hoverDelay?: number;\n ref?: Ref<HTMLDivElement>;\n}\n\n/**\n * A selectable gallery card: image with an `onError` fallback + optional lazy\n * load, keyboard/`aria-pressed` selection, corner action slots, and a delayed\n * floating hover-preview. The generic gallery-card behaviour every app rebuilds\n * on top of the primitives. SSR-safe — the hover preview is client-only.\n */\nexport function ThumbCard(props: ThumbCardProps): JSX.Element {\n const merged = mergeProps({ lazy: true, hoverDelay: 350 }, props);\n const [local, rest] = splitProps(merged, [\n \"src\",\n \"caption\",\n \"selected\",\n \"onSelect\",\n \"fallback\",\n \"hoverPreview\",\n \"topStart\",\n \"topEnd\",\n \"lazy\",\n \"disabled\",\n \"hoverDelay\",\n \"class\",\n \"ref\",\n ]);\n\n const floating = createFloating({ placement: () => \"right\" });\n const [previewOpen, setPreviewOpen] = createSignal(false);\n let hoverTimer: ReturnType<typeof setTimeout> | undefined;\n\n const clearTimer = (): void => {\n if (hoverTimer) {\n clearTimeout(hoverTimer);\n hoverTimer = undefined;\n }\n };\n const onEnter = (): void => {\n if (local.hoverPreview == null || local.disabled) return;\n clearTimer();\n hoverTimer = setTimeout(() => setPreviewOpen(true), local.hoverDelay);\n };\n const onLeave = (): void => {\n clearTimer();\n setPreviewOpen(false);\n };\n onCleanup(clearTimer);\n\n const interactive = (): boolean => !!local.onSelect && !local.disabled;\n const onKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n if (interactive() && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n local.onSelect?.();\n }\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => floating.setReference(el))}\n class={cn(\"smwb-thumb-card\", local.class, {\n \"smwb-thumb-card--selected\": local.selected,\n \"smwb-thumb-card--disabled\": local.disabled,\n \"smwb-thumb-card--interactive\": interactive(),\n })}\n role={interactive() ? \"button\" : undefined}\n tabindex={interactive() ? 0 : undefined}\n aria-pressed={local.onSelect ? (local.selected ?? false) : undefined}\n aria-disabled={local.disabled || undefined}\n onClick={interactive() ? () => local.onSelect?.() : undefined}\n onKeyDown={onKeyDown}\n onMouseEnter={onEnter}\n onMouseLeave={onLeave}\n >\n <div class=\"smwb-thumb-card__media\">\n <LazyImage src={local.src} lazy={local.lazy} fallback={local.fallback} />\n <Show when={local.topStart}>\n <div class=\"smwb-thumb-card__slot smwb-thumb-card__slot--start\">{local.topStart}</div>\n </Show>\n <Show when={local.topEnd}>\n <div class=\"smwb-thumb-card__slot smwb-thumb-card__slot--end\">{local.topEnd}</div>\n </Show>\n </div>\n <Show when={local.caption}>\n <div class=\"smwb-thumb-card__caption\">{local.caption}</div>\n </Show>\n <Show when={previewOpen() && !isServer}>\n <Portal>\n <div class=\"smwb-thumb-card__preview\" ref={(el) => floating.setFloating(el)} style={floating.floatingStyles()}>\n {typeof local.hoverPreview === \"string\" ? (\n <img src={local.hoverPreview} alt=\"\" />\n ) : (\n (local.hoverPreview as JSX.Element)\n )}\n </div>\n </Portal>\n </Show>\n </div>\n );\n}\n\nexport default ThumbCard;\n"],"mappings":"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","names":[],"file":"thumbCard.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/treeView/treeView.entry.less";
1
+ import "@smwb/ui-styles/less/components/treeView/treeView.entry.less";
2
2
  import { For, Show, createContext, createSignal, mergeProps, splitProps, useContext } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { Icon } from "../../base/icon";
@@ -170,4 +170,4 @@ export {
170
170
  TreeView,
171
171
  treeView_default as default
172
172
  };
173
- //# sourceMappingURL=treeView.js.map
173
+ //# sourceMappingURL=treeView.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/treeView/treeView.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/treeView/treeView.entry.less\";\nimport { type Accessor, type JSX, For, Show, createContext, createSignal, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ITreeNodeItem {\n /** Stable identifier. Falls back to the positional path when omitted. */\n id?: string;\n label: string;\n children?: ITreeNodeItem[];\n /** Hint that the node is expandable even before its children are loaded. */\n hasChildren?: boolean;\n}\n\nexport interface TreeViewProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n nodeIcon?: { opened?: string; closed?: string };\n listIcon?: string;\n data: ITreeNodeItem[];\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n selected?: string[];\n defaultSelected?: string[];\n onSelectedChange?: (selected: string[]) => void;\n selectable?: boolean;\n checkboxes?: boolean;\n renderLabel?: (item: ITreeNodeItem, nodeId: string) => JSX.Element;\n loadChildren?: (item: ITreeNodeItem, nodeId: string) => Promise<ITreeNodeItem[]>;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface TreeContextValue {\n expandedIds: Accessor<string[]>;\n selectedIds: Accessor<string[]>;\n loadedChildren: Accessor<Record<string, ITreeNodeItem[]>>;\n loadingIds: Accessor<string[]>;\n toggleExpanded: (id: string) => void;\n setOpen: (id: string, open: boolean) => void;\n toggleSelected: (id: string) => void;\n ensureLoaded: (item: ITreeNodeItem, nodeId: string) => void;\n selectable: boolean;\n checkboxes: boolean;\n nodeIcon: { opened?: string; closed?: string };\n listIcon: string;\n renderLabel: ((item: ITreeNodeItem, nodeId: string) => JSX.Element) | undefined;\n hasLoader: boolean;\n}\n\nconst TreeContext = createContext<TreeContextValue>();\n\nfunction TreeNode(props: { item: ITreeNodeItem; path: string }): JSX.Element {\n const ctx = useContext(TreeContext)!;\n const nodeId = (): string => props.item.id ?? props.path;\n const resolvedChildren = (): ITreeNodeItem[] | undefined => props.item.children ?? ctx.loadedChildren()[nodeId()];\n const isLazy = (): boolean => ctx.hasLoader && (!!props.item.hasChildren || !!ctx.loadedChildren()[nodeId()]);\n const hasChildNodes = (): boolean => (!!resolvedChildren() && (resolvedChildren()?.length ?? 0) > 0) || isLazy();\n const isOpen = (): boolean => ctx.expandedIds().includes(nodeId());\n const isSelected = (): boolean => ctx.selectedIds().includes(nodeId());\n const isLoading = (): boolean => ctx.loadingIds().includes(nodeId());\n\n const onLabelClick = (): void => {\n if (hasChildNodes()) {\n if (!isOpen()) ctx.ensureLoaded(props.item, nodeId());\n ctx.toggleExpanded(nodeId());\n }\n if (ctx.selectable) ctx.toggleSelected(nodeId());\n };\n\n const onKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onLabelClick();\n } else if (event.key === \"ArrowRight\" && hasChildNodes()) {\n ctx.ensureLoaded(props.item, nodeId());\n ctx.setOpen(nodeId(), true);\n } else if (event.key === \"ArrowLeft\" && hasChildNodes()) {\n ctx.setOpen(nodeId(), false);\n }\n };\n\n return (\n <div\n class={cn(\"smwb-tree__node\", { \"smwb-tree__node_selected\": isSelected() })}\n role=\"treeitem\"\n aria-expanded={hasChildNodes() ? isOpen() : undefined}\n aria-selected={ctx.selectable || ctx.checkboxes ? isSelected() : undefined}\n >\n <span class=\"smwb-tree__node__content\" onClick={onLabelClick} onKeyDown={onKeyDown} tabindex={0} role=\"button\">\n <Show when={ctx.checkboxes}>\n <input\n type=\"checkbox\"\n class=\"smwb-tree__node__checkbox\"\n checked={isSelected()}\n onClick={(e) => e.stopPropagation()}\n onChange={() => ctx.toggleSelected(nodeId())}\n aria-label={props.item.label}\n />\n </Show>\n <span class=\"smwb-tree__node__label\">\n <Show when={hasChildNodes()} fallback={<Icon name={ctx.listIcon} size={20} />}>\n <Icon name={isOpen() ? ctx.nodeIcon.opened ?? \"folder_open\" : ctx.nodeIcon.closed ?? \"folder\"} fill={1} size={20} />\n </Show>\n {ctx.renderLabel ? ctx.renderLabel(props.item, nodeId()) : props.item.label}\n </span>\n </span>\n <Show when={hasChildNodes() && isOpen()}>\n <div role=\"group\">\n <Show\n when={!(isLoading() && !resolvedChildren())}\n fallback={\n <div class=\"smwb-tree__node__loading\" role=\"status\">\n Загрузка…\n </div>\n }\n >\n <For each={resolvedChildren() ?? []}>\n {(child, idx) => <TreeNode item={child} path={`${props.path}.${idx()}`} />}\n </For>\n </Show>\n </div>\n </Show>\n </div>\n );\n}\n\nexport function TreeView(props: TreeViewProps): JSX.Element {\n const merged = mergeProps(\n {\n listIcon: \"draft\",\n nodeIcon: { closed: \"folder\", opened: \"folder_open\" } as { opened?: string; closed?: string },\n data: [] as ITreeNodeItem[],\n defaultExpanded: [] as string[],\n defaultSelected: [] as string[],\n selectable: false,\n checkboxes: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"listIcon\",\n \"nodeIcon\",\n \"data\",\n \"expanded\",\n \"defaultExpanded\",\n \"onExpandedChange\",\n \"selected\",\n \"defaultSelected\",\n \"onSelectedChange\",\n \"selectable\",\n \"checkboxes\",\n \"renderLabel\",\n \"loadChildren\",\n \"ref\",\n ]);\n\n const [loadedChildren, setLoadedChildren] = createSignal<Record<string, ITreeNodeItem[]>>({});\n const [loadingIds, setLoadingIds] = createSignal<string[]>([]);\n const [expandedIds, setExpandedIds] = createControllableState<string[]>({\n value: () => local.expanded,\n defaultValue: local.defaultExpanded,\n onChange: (next) => local.onExpandedChange?.(next),\n });\n const [selectedIds, setSelectedIds] = createControllableState<string[]>({\n value: () => local.selected,\n defaultValue: local.defaultSelected,\n onChange: (next) => local.onSelectedChange?.(next),\n });\n\n const toggleExpanded = (id: string): void =>\n setExpandedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const setOpen = (id: string, open: boolean): void =>\n setExpandedIds((prev) => {\n const has = prev.includes(id);\n if (open && !has) return [...prev, id];\n if (!open && has) return prev.filter((x) => x !== id);\n return prev;\n });\n\n const toggleSelected = (id: string): void =>\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const ensureLoaded = (item: ITreeNodeItem, nodeId: string): void => {\n if (!local.loadChildren || loadedChildren()[nodeId] || (item.children && item.children.length > 0)) return;\n setLoadingIds((prev) => (prev.includes(nodeId) ? prev : [...prev, nodeId]));\n void local\n .loadChildren(item, nodeId)\n .then((children) => setLoadedChildren((prev) => ({ ...prev, [nodeId]: children })))\n .finally(() => setLoadingIds((prev) => prev.filter((x) => x !== nodeId)));\n };\n\n const contextValue: TreeContextValue = {\n expandedIds,\n selectedIds,\n loadedChildren,\n loadingIds,\n toggleExpanded,\n setOpen,\n toggleSelected,\n ensureLoaded,\n get selectable() {\n return local.selectable;\n },\n get checkboxes() {\n return local.checkboxes;\n },\n get nodeIcon() {\n return local.nodeIcon;\n },\n get listIcon() {\n return local.listIcon;\n },\n get renderLabel() {\n return local.renderLabel;\n },\n get hasLoader() {\n return !!local.loadChildren;\n },\n };\n\n return (\n <TreeContext.Provider value={contextValue}>\n <div {...rest} data-testid=\"tree-view\" ref={mergeRefs(local.ref)} role=\"tree\" class={cn(\"smwb-tree\", local.class)}>\n <For each={local.data}>\n {(node, idx) => (\n <div class=\"smwb-tree__wrapper\" role=\"presentation\">\n <TreeNode item={node} path={`${idx()}`} />\n </div>\n )}\n </For>\n </div>\n </TreeContext.Provider>\n );\n}\n\nexport default TreeView;\n"],"mappings":"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","names":[],"file":"treeView.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/treeView/treeView.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/treeView/treeView.entry.less\";\nimport { type Accessor, type JSX, For, Show, createContext, createSignal, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ITreeNodeItem {\n /** Stable identifier. Falls back to the positional path when omitted. */\n id?: string;\n label: string;\n children?: ITreeNodeItem[];\n /** Hint that the node is expandable even before its children are loaded. */\n hasChildren?: boolean;\n}\n\nexport interface TreeViewProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n nodeIcon?: { opened?: string; closed?: string };\n listIcon?: string;\n data: ITreeNodeItem[];\n expanded?: string[];\n defaultExpanded?: string[];\n onExpandedChange?: (expanded: string[]) => void;\n selected?: string[];\n defaultSelected?: string[];\n onSelectedChange?: (selected: string[]) => void;\n selectable?: boolean;\n checkboxes?: boolean;\n renderLabel?: (item: ITreeNodeItem, nodeId: string) => JSX.Element;\n loadChildren?: (item: ITreeNodeItem, nodeId: string) => Promise<ITreeNodeItem[]>;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface TreeContextValue {\n expandedIds: Accessor<string[]>;\n selectedIds: Accessor<string[]>;\n loadedChildren: Accessor<Record<string, ITreeNodeItem[]>>;\n loadingIds: Accessor<string[]>;\n toggleExpanded: (id: string) => void;\n setOpen: (id: string, open: boolean) => void;\n toggleSelected: (id: string) => void;\n ensureLoaded: (item: ITreeNodeItem, nodeId: string) => void;\n selectable: boolean;\n checkboxes: boolean;\n nodeIcon: { opened?: string; closed?: string };\n listIcon: string;\n renderLabel: ((item: ITreeNodeItem, nodeId: string) => JSX.Element) | undefined;\n hasLoader: boolean;\n}\n\nconst TreeContext = createContext<TreeContextValue>();\n\nfunction TreeNode(props: { item: ITreeNodeItem; path: string }): JSX.Element {\n const ctx = useContext(TreeContext)!;\n const nodeId = (): string => props.item.id ?? props.path;\n const resolvedChildren = (): ITreeNodeItem[] | undefined => props.item.children ?? ctx.loadedChildren()[nodeId()];\n const isLazy = (): boolean => ctx.hasLoader && (!!props.item.hasChildren || !!ctx.loadedChildren()[nodeId()]);\n const hasChildNodes = (): boolean => (!!resolvedChildren() && (resolvedChildren()?.length ?? 0) > 0) || isLazy();\n const isOpen = (): boolean => ctx.expandedIds().includes(nodeId());\n const isSelected = (): boolean => ctx.selectedIds().includes(nodeId());\n const isLoading = (): boolean => ctx.loadingIds().includes(nodeId());\n\n const onLabelClick = (): void => {\n if (hasChildNodes()) {\n if (!isOpen()) ctx.ensureLoaded(props.item, nodeId());\n ctx.toggleExpanded(nodeId());\n }\n if (ctx.selectable) ctx.toggleSelected(nodeId());\n };\n\n const onKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onLabelClick();\n } else if (event.key === \"ArrowRight\" && hasChildNodes()) {\n ctx.ensureLoaded(props.item, nodeId());\n ctx.setOpen(nodeId(), true);\n } else if (event.key === \"ArrowLeft\" && hasChildNodes()) {\n ctx.setOpen(nodeId(), false);\n }\n };\n\n return (\n <div\n class={cn(\"smwb-tree__node\", { \"smwb-tree__node_selected\": isSelected() })}\n role=\"treeitem\"\n aria-expanded={hasChildNodes() ? isOpen() : undefined}\n aria-selected={ctx.selectable || ctx.checkboxes ? isSelected() : undefined}\n >\n <span class=\"smwb-tree__node__content\" onClick={onLabelClick} onKeyDown={onKeyDown} tabindex={0} role=\"button\">\n <Show when={ctx.checkboxes}>\n <input\n type=\"checkbox\"\n class=\"smwb-tree__node__checkbox\"\n checked={isSelected()}\n onClick={(e) => e.stopPropagation()}\n onChange={() => ctx.toggleSelected(nodeId())}\n aria-label={props.item.label}\n />\n </Show>\n <span class=\"smwb-tree__node__label\">\n <Show when={hasChildNodes()} fallback={<Icon name={ctx.listIcon} size={20} />}>\n <Icon name={isOpen() ? ctx.nodeIcon.opened ?? \"folder_open\" : ctx.nodeIcon.closed ?? \"folder\"} fill={1} size={20} />\n </Show>\n {ctx.renderLabel ? ctx.renderLabel(props.item, nodeId()) : props.item.label}\n </span>\n </span>\n <Show when={hasChildNodes() && isOpen()}>\n <div role=\"group\">\n <Show\n when={!(isLoading() && !resolvedChildren())}\n fallback={\n <div class=\"smwb-tree__node__loading\" role=\"status\">\n Загрузка…\n </div>\n }\n >\n <For each={resolvedChildren() ?? []}>\n {(child, idx) => <TreeNode item={child} path={`${props.path}.${idx()}`} />}\n </For>\n </Show>\n </div>\n </Show>\n </div>\n );\n}\n\nexport function TreeView(props: TreeViewProps): JSX.Element {\n const merged = mergeProps(\n {\n listIcon: \"draft\",\n nodeIcon: { closed: \"folder\", opened: \"folder_open\" } as { opened?: string; closed?: string },\n data: [] as ITreeNodeItem[],\n defaultExpanded: [] as string[],\n defaultSelected: [] as string[],\n selectable: false,\n checkboxes: false,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"listIcon\",\n \"nodeIcon\",\n \"data\",\n \"expanded\",\n \"defaultExpanded\",\n \"onExpandedChange\",\n \"selected\",\n \"defaultSelected\",\n \"onSelectedChange\",\n \"selectable\",\n \"checkboxes\",\n \"renderLabel\",\n \"loadChildren\",\n \"ref\",\n ]);\n\n const [loadedChildren, setLoadedChildren] = createSignal<Record<string, ITreeNodeItem[]>>({});\n const [loadingIds, setLoadingIds] = createSignal<string[]>([]);\n const [expandedIds, setExpandedIds] = createControllableState<string[]>({\n value: () => local.expanded,\n defaultValue: local.defaultExpanded,\n onChange: (next) => local.onExpandedChange?.(next),\n });\n const [selectedIds, setSelectedIds] = createControllableState<string[]>({\n value: () => local.selected,\n defaultValue: local.defaultSelected,\n onChange: (next) => local.onSelectedChange?.(next),\n });\n\n const toggleExpanded = (id: string): void =>\n setExpandedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const setOpen = (id: string, open: boolean): void =>\n setExpandedIds((prev) => {\n const has = prev.includes(id);\n if (open && !has) return [...prev, id];\n if (!open && has) return prev.filter((x) => x !== id);\n return prev;\n });\n\n const toggleSelected = (id: string): void =>\n setSelectedIds((prev) => (prev.includes(id) ? prev.filter((x) => x !== id) : [...prev, id]));\n\n const ensureLoaded = (item: ITreeNodeItem, nodeId: string): void => {\n if (!local.loadChildren || loadedChildren()[nodeId] || (item.children && item.children.length > 0)) return;\n setLoadingIds((prev) => (prev.includes(nodeId) ? prev : [...prev, nodeId]));\n void local\n .loadChildren(item, nodeId)\n .then((children) => setLoadedChildren((prev) => ({ ...prev, [nodeId]: children })))\n .finally(() => setLoadingIds((prev) => prev.filter((x) => x !== nodeId)));\n };\n\n const contextValue: TreeContextValue = {\n expandedIds,\n selectedIds,\n loadedChildren,\n loadingIds,\n toggleExpanded,\n setOpen,\n toggleSelected,\n ensureLoaded,\n get selectable() {\n return local.selectable;\n },\n get checkboxes() {\n return local.checkboxes;\n },\n get nodeIcon() {\n return local.nodeIcon;\n },\n get listIcon() {\n return local.listIcon;\n },\n get renderLabel() {\n return local.renderLabel;\n },\n get hasLoader() {\n return !!local.loadChildren;\n },\n };\n\n return (\n <TreeContext.Provider value={contextValue}>\n <div {...rest} data-testid=\"tree-view\" ref={mergeRefs(local.ref)} role=\"tree\" class={cn(\"smwb-tree\", local.class)}>\n <For each={local.data}>\n {(node, idx) => (\n <div class=\"smwb-tree__wrapper\" role=\"presentation\">\n <TreeNode item={node} path={`${idx()}`} />\n </div>\n )}\n </For>\n </div>\n </TreeContext.Provider>\n );\n}\n\nexport default TreeView;\n"],"mappings":"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","names":[],"file":"treeView.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/typography/typography.entry.less";
1
+ import "@smwb/ui-styles/less/components/typography/typography.entry.less";
2
2
  import { mergeProps, splitProps } from "solid-js";
3
3
  import { Dynamic } from "solid-js/web";
4
4
  import cn from "clsx";
@@ -55,4 +55,4 @@ export {
55
55
  Typography,
56
56
  typography_default as default
57
57
  };
58
- //# sourceMappingURL=typography.js.map
58
+ //# sourceMappingURL=typography.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/typography/typography.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/typography/typography.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type TypographyVariant =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"overline\"\n | \"button\";\n\nexport type TypographyColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"textPrimary\"\n | \"textSecondary\"\n | \"disabled\";\n\nconst defaultTag: Record<TypographyVariant, string> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n subtitle1: \"h6\",\n subtitle2: \"h6\",\n body1: \"p\",\n body2: \"p\",\n caption: \"span\",\n overline: \"span\",\n button: \"span\",\n};\n\nexport interface TypographyProps extends JSX.HTMLAttributes<HTMLElement> {\n variant?: TypographyVariant;\n color?: TypographyColor;\n align?: \"left\" | \"center\" | \"right\" | \"justify\";\n /** Add a bottom margin (block rhythm). */\n gutterBottom?: boolean;\n /** Truncate with an ellipsis on a single line. */\n noWrap?: boolean;\n /** Render as a different element. */\n component?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Typography(props: ParentProps<TypographyProps>): JSX.Element {\n const merged = mergeProps({ variant: \"body1\" as TypographyVariant, color: \"inherit\" as TypographyColor }, props);\n const [local, rest] = splitProps(merged, [\n \"variant\",\n \"color\",\n \"align\",\n \"gutterBottom\",\n \"noWrap\",\n \"component\",\n \"class\",\n \"children\",\n \"ref\",\n ]);\n\n return (\n <Dynamic\n component={local.component ?? defaultTag[local.variant]}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-typography\",\n `smwb-typography_${local.variant}`,\n local.color !== \"inherit\" && `smwb-typography_color-${local.color}`,\n local.align && `smwb-typography_align-${local.align}`,\n {\n \"smwb-typography_gutter\": local.gutterBottom,\n \"smwb-typography_nowrap\": local.noWrap,\n },\n local.class\n )}\n {...rest}\n >\n {local.children}\n </Dynamic>\n );\n}\n\nexport default Typography;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,iBAA2B;AA6BpC,MAAM,aAAgD;AAAA,EACpD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AACV;AAeO,SAAS,WAAW,OAAkD;AAC3E,QAAM,SAAS,WAAW,EAAE,SAAS,SAA8B,OAAO,UAA6B,GAAG,KAAK;AAC/G,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,EACF,CAAC;AAED,SACE,CAAC;AAAA,IACC,WAAW,MAAM,aAAa,WAAW,MAAM,OAAO;AAAA,IACtD,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,mBAAmB,MAAM,OAAO;AAAA,MAChC,MAAM,UAAU,aAAa,yBAAyB,MAAM,KAAK;AAAA,MACjE,MAAM,SAAS,yBAAyB,MAAM,KAAK;AAAA,MACnD;AAAA,QACE,0BAA0B,MAAM;AAAA,QAChC,0BAA0B,MAAM;AAAA,MAClC;AAAA,MACA,MAAM;AAAA,IACR;AAAA,QACI;AAAA,GACL;AAAA,OACE,MAAM,SAAS;AAAA,IAClB,EAjBC;AAmBL;AAEA,IAAO,qBAAQ;","names":[],"file":"typography.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/typography/typography.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/typography/typography.entry.less\";\nimport { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type TypographyVariant =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"subtitle1\"\n | \"subtitle2\"\n | \"body1\"\n | \"body2\"\n | \"caption\"\n | \"overline\"\n | \"button\";\n\nexport type TypographyColor =\n | \"inherit\"\n | \"primary\"\n | \"secondary\"\n | \"error\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"textPrimary\"\n | \"textSecondary\"\n | \"disabled\";\n\nconst defaultTag: Record<TypographyVariant, string> = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n subtitle1: \"h6\",\n subtitle2: \"h6\",\n body1: \"p\",\n body2: \"p\",\n caption: \"span\",\n overline: \"span\",\n button: \"span\",\n};\n\nexport interface TypographyProps extends JSX.HTMLAttributes<HTMLElement> {\n variant?: TypographyVariant;\n color?: TypographyColor;\n align?: \"left\" | \"center\" | \"right\" | \"justify\";\n /** Add a bottom margin (block rhythm). */\n gutterBottom?: boolean;\n /** Truncate with an ellipsis on a single line. */\n noWrap?: boolean;\n /** Render as a different element. */\n component?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Typography(props: ParentProps<TypographyProps>): JSX.Element {\n const merged = mergeProps({ variant: \"body1\" as TypographyVariant, color: \"inherit\" as TypographyColor }, props);\n const [local, rest] = splitProps(merged, [\n \"variant\",\n \"color\",\n \"align\",\n \"gutterBottom\",\n \"noWrap\",\n \"component\",\n \"class\",\n \"children\",\n \"ref\",\n ]);\n\n return (\n <Dynamic\n component={local.component ?? defaultTag[local.variant]}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-typography\",\n `smwb-typography_${local.variant}`,\n local.color !== \"inherit\" && `smwb-typography_color-${local.color}`,\n local.align && `smwb-typography_align-${local.align}`,\n {\n \"smwb-typography_gutter\": local.gutterBottom,\n \"smwb-typography_nowrap\": local.noWrap,\n },\n local.class\n )}\n {...rest}\n >\n {local.children}\n </Dynamic>\n );\n}\n\nexport default Typography;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,iBAA2B;AA6BpC,MAAM,aAAgD;AAAA,EACpD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AACV;AAeO,SAAS,WAAW,OAAkD;AAC3E,QAAM,SAAS,WAAW,EAAE,SAAS,SAA8B,OAAO,UAA6B,GAAG,KAAK;AAC/G,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,EACF,CAAC;AAED,SACE,CAAC;AAAA,IACC,WAAW,MAAM,aAAa,WAAW,MAAM,OAAO;AAAA,IACtD,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,mBAAmB,MAAM,OAAO;AAAA,MAChC,MAAM,UAAU,aAAa,yBAAyB,MAAM,KAAK;AAAA,MACjE,MAAM,SAAS,yBAAyB,MAAM,KAAK;AAAA,MACnD;AAAA,QACE,0BAA0B,MAAM;AAAA,QAChC,0BAA0B,MAAM;AAAA,MAClC;AAAA,MACA,MAAM;AAAA,IACR;AAAA,QACI;AAAA,GACL;AAAA,OACE,MAAM,SAAS;AAAA,IAClB,EAjBC;AAmBL;AAEA,IAAO,qBAAQ;","names":[],"file":"typography.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/message/message.entry.less";
1
+ import "@smwb/ui-styles/less/components/message/message.entry.less";
2
2
  import { Show, mergeProps, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  import { Icon } from "../../base/icon";
@@ -49,4 +49,4 @@ export {
49
49
  MessageContainer,
50
50
  message_default as default
51
51
  };
52
- //# sourceMappingURL=message.js.map
52
+ //# sourceMappingURL=message.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/feedBack/message/message.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/message/message.entry.less\";\nimport { type JSX, type ParentProps, 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 MessageSeverity = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface MessageProps extends JSX.HTMLAttributes<HTMLDivElement> {\n variant?: \"outlined\" | \"filled\" | \"left-accent\";\n onClose?: () => void;\n /** @deprecated use `severity`. */\n type?: MessageSeverity;\n /** Semantic severity of the message. */\n severity?: MessageSeverity;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function MessageContainer(props: ParentProps<MessageProps>): JSX.Element {\n const merged = mergeProps({ variant: \"filled\" as const, closeAriaLabel: \"Close\" }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"type\",\n \"severity\",\n \"variant\",\n \"onClose\",\n \"closeAriaLabel\",\n \"ref\",\n ]);\n\n const resolvedSeverity = (): MessageSeverity | undefined => local.severity ?? local.type;\n\n return (\n <div\n {...rest}\n data-testid=\"message\"\n role=\"alert\"\n aria-live={resolvedSeverity() === \"error\" ? \"assertive\" : \"polite\"}\n class={cn(\"smwb-message\", `smwb-message_${local.variant}`, local.class, {\n [`smwb-message_${resolvedSeverity()}`]: Boolean(resolvedSeverity()),\n })}\n ref={mergeRefs(local.ref)}\n >\n {local.children}\n <Show when={local.onClose}>\n <button\n class=\"smwb-message__close-btn\"\n onClick={() => local.onClose?.()}\n aria-label={local.closeAriaLabel}\n type=\"button\"\n >\n <Icon name=\"close\" weight={1000} />\n </button>\n </Show>\n </div>\n );\n}\n\nfunction Header(props: ParentProps): JSX.Element {\n return <div class=\"smwb-message__header\">{props.children}</div>;\n}\n\nexport const Message = Object.assign(MessageContainer, { Header });\n\nexport default Message;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,iBAA2B;AAgB7B,SAAS,iBAAiB,OAA+C;AAC9E,QAAM,SAAS,WAAW,EAAE,SAAS,UAAmB,gBAAgB,QAAQ,GAAG,KAAK;AACxF,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,mBAAmB,MAAmC,MAAM,YAAY,MAAM;AAEpF,SACE,CAAC;AAAA,QACK;AAAA,IACJ,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,WAAW,iBAAiB,MAAM,UAAU,cAAc;AAAA,IAC1D,OAAO,GAAG,gBAAgB,gBAAgB,MAAM,OAAO,IAAI,MAAM,OAAO;AAAA,MACtE,CAAC,gBAAgB,iBAAiB,CAAC,EAAE,GAAG,QAAQ,iBAAiB,CAAC;AAAA,IACpE,CAAC;AAAA,IACD,KAAK,UAAU,MAAM,GAAG;AAAA,GACzB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,MAAM,SAAS;AAAA,QACzB,CAAC;AAAA,IACC,MAAM;AAAA,IACN,SAAS,MAAM,MAAM,UAAU;AAAA,IAC/B,YAAY,MAAM;AAAA,IAClB,KAAK;AAAA,GACN;AAAA,UACC,CAAC,KAAK,KAAK,QAAQ,QAAQ,KAAM,EAAE;AAAA,QACrC,EAPC,OAOQ;AAAA,MACX,EATC,KASM;AAAA,IACT,EArBC;AAuBL;AAEA,SAAS,OAAO,OAAiC;AAC/C,SAAO,CAAC,IAAI,MAAM,wBAAwB,MAAM,SAAS,EAAjD;AACV;AAEO,MAAM,UAAU,OAAO,OAAO,kBAAkB,EAAE,OAAO,CAAC;AAEjE,IAAO,kBAAQ;","names":[],"file":"message.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/feedBack/message/message.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/message/message.entry.less\";\nimport { type JSX, type ParentProps, 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 MessageSeverity = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface MessageProps extends JSX.HTMLAttributes<HTMLDivElement> {\n variant?: \"outlined\" | \"filled\" | \"left-accent\";\n onClose?: () => void;\n /** @deprecated use `severity`. */\n type?: MessageSeverity;\n /** Semantic severity of the message. */\n severity?: MessageSeverity;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function MessageContainer(props: ParentProps<MessageProps>): JSX.Element {\n const merged = mergeProps({ variant: \"filled\" as const, closeAriaLabel: \"Close\" }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"type\",\n \"severity\",\n \"variant\",\n \"onClose\",\n \"closeAriaLabel\",\n \"ref\",\n ]);\n\n const resolvedSeverity = (): MessageSeverity | undefined => local.severity ?? local.type;\n\n return (\n <div\n {...rest}\n data-testid=\"message\"\n role=\"alert\"\n aria-live={resolvedSeverity() === \"error\" ? \"assertive\" : \"polite\"}\n class={cn(\"smwb-message\", `smwb-message_${local.variant}`, local.class, {\n [`smwb-message_${resolvedSeverity()}`]: Boolean(resolvedSeverity()),\n })}\n ref={mergeRefs(local.ref)}\n >\n {local.children}\n <Show when={local.onClose}>\n <button\n class=\"smwb-message__close-btn\"\n onClick={() => local.onClose?.()}\n aria-label={local.closeAriaLabel}\n type=\"button\"\n >\n <Icon name=\"close\" weight={1000} />\n </button>\n </Show>\n </div>\n );\n}\n\nfunction Header(props: ParentProps): JSX.Element {\n return <div class=\"smwb-message__header\">{props.children}</div>;\n}\n\nexport const Message = Object.assign(MessageContainer, { Header });\n\nexport default Message;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,iBAA2B;AAgB7B,SAAS,iBAAiB,OAA+C;AAC9E,QAAM,SAAS,WAAW,EAAE,SAAS,UAAmB,gBAAgB,QAAQ,GAAG,KAAK;AACxF,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,mBAAmB,MAAmC,MAAM,YAAY,MAAM;AAEpF,SACE,CAAC;AAAA,QACK;AAAA,IACJ,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,WAAW,iBAAiB,MAAM,UAAU,cAAc;AAAA,IAC1D,OAAO,GAAG,gBAAgB,gBAAgB,MAAM,OAAO,IAAI,MAAM,OAAO;AAAA,MACtE,CAAC,gBAAgB,iBAAiB,CAAC,EAAE,GAAG,QAAQ,iBAAiB,CAAC;AAAA,IACpE,CAAC;AAAA,IACD,KAAK,UAAU,MAAM,GAAG;AAAA,GACzB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,MAAM,SAAS;AAAA,QACzB,CAAC;AAAA,IACC,MAAM;AAAA,IACN,SAAS,MAAM,MAAM,UAAU;AAAA,IAC/B,YAAY,MAAM;AAAA,IAClB,KAAK;AAAA,GACN;AAAA,UACC,CAAC,KAAK,KAAK,QAAQ,QAAQ,KAAM,EAAE;AAAA,QACrC,EAPC,OAOQ;AAAA,MACX,EATC,KASM;AAAA,IACT,EArBC;AAuBL;AAEA,SAAS,OAAO,OAAiC;AAC/C,SAAO,CAAC,IAAI,MAAM,wBAAwB,MAAM,SAAS,EAAjD;AACV;AAEO,MAAM,UAAU,OAAO,OAAO,kBAAkB,EAAE,OAAO,CAAC;AAEjE,IAAO,kBAAQ;","names":[],"file":"message.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/modal/modal.entry.less";
1
+ import "@smwb/ui-styles/less/components/modal/modal.entry.less";
2
2
  import { Show, createEffect, mergeProps, onCleanup, splitProps } from "solid-js";
3
3
  import { Dynamic, Portal, isServer } from "solid-js/web";
4
4
  import cn from "clsx";
@@ -99,4 +99,4 @@ export {
99
99
  Modal,
100
100
  modal_default as default
101
101
  };
102
- //# sourceMappingURL=modal.js.map
102
+ //# sourceMappingURL=modal.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/modal/modal.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"mappings":"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","names":[],"file":"modal.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/feedBack/modal/modal.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/modal/modal.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Dynamic, Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createFocusTrap } from \"../../../primitives/createFocusTrap\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ModalProps {\n size?: \"small\" | \"medium\" | \"large\" | \"fullscreen\";\n closeOnOutsideClick?: boolean;\n onClose?: () => void;\n open: boolean;\n animation?: \"fade\" | \"scale\" | \"drop\";\n class?: string;\n backdrop?: \"blured\" | \"dark\" | \"transparent\" | \"darkBlured\";\n asForm?: boolean;\n disableAppearAnimation?: boolean;\n /** ARIA role of the dialog. */\n role?: \"dialog\" | \"alertdialog\";\n /** Close the modal when Escape is pressed. */\n closeOnEsc?: boolean;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst OVERLAY_CLASSNAMES = {\n appear: \"smwb-modal__overlay-appear\",\n appearActive: \"smwb-modal__overlay-appear-active\",\n appearDone: \"smwb-modal__overlay-appear-done\",\n enter: \"smwb-modal__overlay-enter\",\n enterActive: \"smwb-modal__overlay-enter-active\",\n enterDone: \"smwb-modal__overlay-enter-done\",\n exit: \"smwb-modal__overlay-exit\",\n exitActive: \"smwb-modal__overlay-exit-active\",\n};\n\nfunction ModalBase(props: ParentProps<ModalProps>): JSX.Element {\n const merged = mergeProps(\n {\n animation: \"fade\" as const,\n backdrop: \"dark\" as const,\n size: \"large\" as const,\n closeOnOutsideClick: true,\n asForm: false,\n disableAppearAnimation: false,\n role: \"dialog\" as const,\n closeOnEsc: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"children\",\n \"onClose\",\n \"open\",\n \"class\",\n \"animation\",\n \"backdrop\",\n \"size\",\n \"closeOnOutsideClick\",\n \"asForm\",\n \"disableAppearAnimation\",\n \"role\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n let contentEl: HTMLDivElement | undefined;\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { appear: 225, enter: 225, exit: 150 },\n classNames: OVERLAY_CLASSNAMES,\n appear: !local.disableAppearAnimation,\n });\n\n createFocusTrap({ active: () => local.open && transition.mounted(), container: () => contentEl });\n\n createEffect(() => {\n if (!local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === \"Escape\") local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n class={cn(\"smwb-modal__overlay\", `smwb-${local.backdrop}`, `smwb-${local.size}`, transition.classes())}\n onClick={local.closeOnOutsideClick && local.onClose ? () => local.onClose?.() : undefined}\n >\n <Dynamic\n component={local.asForm ? \"form\" : \"div\"}\n {...rest}\n ref={mergeRefs(local.ref, (el) => (contentEl = el as HTMLDivElement))}\n class={cn(\"smwb-modal\", `smwb-${local.size}`, `smwb-${local.animation}`, local.class)}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n role={local.role}\n aria-modal=\"true\"\n >\n {local.children}\n </Dynamic>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport interface ModalSlotProps {\n class?: string;\n}\n\nexport function Header(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__header\", props.class)}>{props.children}</div>;\n}\n\nexport function Content(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__content\", props.class)}>{props.children}</div>;\n}\n\nexport function Footer(props: ParentProps<ModalSlotProps>): JSX.Element {\n return <div class={cn(\"smwb-modal__footer\", props.class)}>{props.children}</div>;\n}\n\nexport const Modal = Object.assign(ModalBase, { Footer, Header, Content });\n\nexport default Modal;\n"],"mappings":"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","names":[],"file":"modal.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/progressIndicator/progressIndicator.entry.less";
1
+ import "@smwb/ui-styles/less/components/progressIndicator/progressIndicator.entry.less";
2
2
  import { Show, createEffect, mergeProps, splitProps } from "solid-js";
3
3
  import cn from "clsx";
4
4
  function CircularProgress(props) {
@@ -66,4 +66,4 @@ export {
66
66
  ProgressIndicator,
67
67
  progressIndicator_default as default
68
68
  };
69
- //# sourceMappingURL=progressIndicator.js.map
69
+ //# sourceMappingURL=progressIndicator.jsx.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/feedBack/progressIndicator/progressIndicator.tsx"],"sourcesContent":["import \"/sourcecraft/workspace/packages/styles/less/components/progressIndicator/progressIndicator.entry.less\";\nimport { type JSX, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\n\nexport type ProgressColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ProgressIndicatorProps {\n class?: string;\n variant: \"circular\" | \"linear\";\n type: \"determinate\" | \"indeterminate\";\n progressValue?: number;\n /** Semantic color. */\n color?: ProgressColor;\n /** Circular size preset. */\n size?: \"small\" | \"medium\" | \"large\";\n /** Accessible name for the progress bar. */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport interface CircularProgressProps {\n progressValue?: number;\n}\n\nexport function CircularProgress(props: CircularProgressProps): JSX.Element {\n let circle: SVGCircleElement | undefined;\n\n createEffect(() => {\n const value = props.progressValue ?? 0;\n if (!circle || !circle.r) return;\n const radius = circle.r.baseVal.value;\n if (radius) {\n const length = 2 * Math.PI * radius;\n circle.style.strokeDasharray = `${length} ${length}`;\n circle.style.strokeDashoffset = `${length - (value / 100) * length}`;\n }\n });\n\n return (\n <svg class=\"smwb-indicator_circular__svg\">\n <circle class=\"smwb-indicator_circular__circle\" cx=\"24\" cy=\"24\" r=\"22\" ref={circle} />\n </svg>\n );\n}\n\nexport function ProgressIndicator(props: ProgressIndicatorProps): JSX.Element {\n const merged = mergeProps({ progressValue: 0, color: \"primary\" as ProgressColor, size: \"medium\" as const }, props);\n const [local] = splitProps(merged, [\"type\", \"variant\", \"class\", \"progressValue\", \"color\", \"size\", \"aria-label\", \"id\"]);\n\n const colorClass = (): string | undefined =>\n local.color !== \"primary\" ? `smwb-indicator_color-${local.color}` : undefined;\n\n const ariaProps = (): JSX.HTMLAttributes<HTMLDivElement> => ({\n role: \"progressbar\",\n \"aria-label\": local[\"aria-label\"],\n id: local.id,\n ...(local.type === \"determinate\"\n ? { \"aria-valuenow\": local.progressValue, \"aria-valuemin\": 0, \"aria-valuemax\": 100 }\n : {}),\n });\n\n return (\n <Show\n when={local.variant === \"circular\"}\n fallback={\n <div {...ariaProps()} class={cn(\"smwb-indicator_linear\", `smwb-${local.type}`, colorClass(), local.class)}>\n <div\n class=\"smwb-indicator_linear__thumb\"\n style={local.type === \"determinate\" ? { width: `${local.progressValue}%` } : {}}\n />\n </div>\n }\n >\n <div\n {...ariaProps()}\n class={cn(\n \"smwb-indicator_circular\",\n `smwb-${local.type}`,\n colorClass(),\n `smwb-indicator_size-${local.size}`,\n local.class\n )}\n >\n <Show\n when={local.type === \"determinate\"}\n fallback={\n <>\n <div class=\"smwb-indicator_circular__thumb\" />\n <div />\n <div />\n <div />\n </>\n }\n >\n <CircularProgress progressValue={local.progressValue} />\n </Show>\n </div>\n </Show>\n );\n}\n\nexport default ProgressIndicator;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,cAAc,YAAY,kBAAkB;AACrE,OAAO,QAAQ;AAsBR,SAAS,iBAAiB,OAA2C;AAC1E,MAAI;AAEJ,eAAa,MAAM;AACjB,UAAM,QAAQ,MAAM,iBAAiB;AACrC,QAAI,CAAC,UAAU,CAAC,OAAO,EAAG;AAC1B,UAAM,SAAS,OAAO,EAAE,QAAQ;AAChC,QAAI,QAAQ;AACV,YAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,aAAO,MAAM,kBAAkB,GAAG,MAAM,IAAI,MAAM;AAClD,aAAO,MAAM,mBAAmB,GAAG,SAAU,QAAQ,MAAO,MAAM;AAAA,IACpE;AAAA,EACF,CAAC;AAED,SACE,CAAC,IAAI,MAAM,+BAA+B;AAAA,MACxC,CAAC,OAAO,MAAM,kCAAkC,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,KAAK,QAAQ,EAAE;AAAA,IACxF,EAFC;AAIL;AAEO,SAAS,kBAAkB,OAA4C;AAC5E,QAAM,SAAS,WAAW,EAAE,eAAe,GAAG,OAAO,WAA4B,MAAM,SAAkB,GAAG,KAAK;AACjH,QAAM,CAAC,KAAK,IAAI,WAAW,QAAQ,CAAC,QAAQ,WAAW,SAAS,iBAAiB,SAAS,QAAQ,cAAc,IAAI,CAAC;AAErH,QAAM,aAAa,MACjB,MAAM,UAAU,YAAY,wBAAwB,MAAM,KAAK,KAAK;AAEtE,QAAM,YAAY,OAA2C;AAAA,IAC3D,MAAM;AAAA,IACN,cAAc,MAAM,YAAY;AAAA,IAChC,IAAI,MAAM;AAAA,IACV,GAAI,MAAM,SAAS,gBACf,EAAE,iBAAiB,MAAM,eAAe,iBAAiB,GAAG,iBAAiB,IAAI,IACjF,CAAC;AAAA,EACP;AAEA,SACE,CAAC;AAAA,IACC,MAAM,MAAM,YAAY;AAAA,IACxB,UACE,CAAC,QAAQ,UAAU,GAAG,OAAO,GAAG,yBAAyB,QAAQ,MAAM,IAAI,IAAI,WAAW,GAAG,MAAM,KAAK,GAAG;AAAA,UACzG,CAAC;AAAA,MACC,MAAM;AAAA,MACN,OAAO,MAAM,SAAS,gBAAgB,EAAE,OAAO,GAAG,MAAM,aAAa,IAAI,IAAI,CAAC;AAAA,IAChF,EAAE;AAAA,QACJ,EALC;AAAA,GAOJ;AAAA,MACC,CAAC;AAAA,QACK,UAAU;AAAA,IACd,OAAO;AAAA,MACL;AAAA,MACA,QAAQ,MAAM,IAAI;AAAA,MAClB,WAAW;AAAA,MACX,uBAAuB,MAAM,IAAI;AAAA,MACjC,MAAM;AAAA,IACR;AAAA,GACD;AAAA,QACC,CAAC;AAAA,IACC,MAAM,MAAM,SAAS;AAAA,IACrB,UACE,EAAE;AAAA,cACA,CAAC,IAAI,MAAM,iCAAiC,EAAE;AAAA,cAC9C,CAAC,IAAI,EAAE;AAAA,cACP,CAAC,IAAI,EAAE;AAAA,cACP,CAAC,IAAI,EAAE;AAAA,YACT;AAAA,GAEH;AAAA,UACC,CAAC,iBAAiB,eAAe,MAAM,eAAe,EAAE;AAAA,QAC1D,EAZC,KAYM;AAAA,MACT,EAvBC,IAuBK;AAAA,IACR,EAnCC;AAqCL;AAEA,IAAO,4BAAQ;","names":[],"file":"progressIndicator.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/feedBack/progressIndicator/progressIndicator.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/progressIndicator/progressIndicator.entry.less\";\nimport { type JSX, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\n\nexport type ProgressColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface ProgressIndicatorProps {\n class?: string;\n variant: \"circular\" | \"linear\";\n type: \"determinate\" | \"indeterminate\";\n progressValue?: number;\n /** Semantic color. */\n color?: ProgressColor;\n /** Circular size preset. */\n size?: \"small\" | \"medium\" | \"large\";\n /** Accessible name for the progress bar. */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport interface CircularProgressProps {\n progressValue?: number;\n}\n\nexport function CircularProgress(props: CircularProgressProps): JSX.Element {\n let circle: SVGCircleElement | undefined;\n\n createEffect(() => {\n const value = props.progressValue ?? 0;\n if (!circle || !circle.r) return;\n const radius = circle.r.baseVal.value;\n if (radius) {\n const length = 2 * Math.PI * radius;\n circle.style.strokeDasharray = `${length} ${length}`;\n circle.style.strokeDashoffset = `${length - (value / 100) * length}`;\n }\n });\n\n return (\n <svg class=\"smwb-indicator_circular__svg\">\n <circle class=\"smwb-indicator_circular__circle\" cx=\"24\" cy=\"24\" r=\"22\" ref={circle} />\n </svg>\n );\n}\n\nexport function ProgressIndicator(props: ProgressIndicatorProps): JSX.Element {\n const merged = mergeProps({ progressValue: 0, color: \"primary\" as ProgressColor, size: \"medium\" as const }, props);\n const [local] = splitProps(merged, [\"type\", \"variant\", \"class\", \"progressValue\", \"color\", \"size\", \"aria-label\", \"id\"]);\n\n const colorClass = (): string | undefined =>\n local.color !== \"primary\" ? `smwb-indicator_color-${local.color}` : undefined;\n\n const ariaProps = (): JSX.HTMLAttributes<HTMLDivElement> => ({\n role: \"progressbar\",\n \"aria-label\": local[\"aria-label\"],\n id: local.id,\n ...(local.type === \"determinate\"\n ? { \"aria-valuenow\": local.progressValue, \"aria-valuemin\": 0, \"aria-valuemax\": 100 }\n : {}),\n });\n\n return (\n <Show\n when={local.variant === \"circular\"}\n fallback={\n <div {...ariaProps()} class={cn(\"smwb-indicator_linear\", `smwb-${local.type}`, colorClass(), local.class)}>\n <div\n class=\"smwb-indicator_linear__thumb\"\n style={local.type === \"determinate\" ? { width: `${local.progressValue}%` } : {}}\n />\n </div>\n }\n >\n <div\n {...ariaProps()}\n class={cn(\n \"smwb-indicator_circular\",\n `smwb-${local.type}`,\n colorClass(),\n `smwb-indicator_size-${local.size}`,\n local.class\n )}\n >\n <Show\n when={local.type === \"determinate\"}\n fallback={\n <>\n <div class=\"smwb-indicator_circular__thumb\" />\n <div />\n <div />\n <div />\n </>\n }\n >\n <CircularProgress progressValue={local.progressValue} />\n </Show>\n </div>\n </Show>\n );\n}\n\nexport default ProgressIndicator;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,cAAc,YAAY,kBAAkB;AACrE,OAAO,QAAQ;AAsBR,SAAS,iBAAiB,OAA2C;AAC1E,MAAI;AAEJ,eAAa,MAAM;AACjB,UAAM,QAAQ,MAAM,iBAAiB;AACrC,QAAI,CAAC,UAAU,CAAC,OAAO,EAAG;AAC1B,UAAM,SAAS,OAAO,EAAE,QAAQ;AAChC,QAAI,QAAQ;AACV,YAAM,SAAS,IAAI,KAAK,KAAK;AAC7B,aAAO,MAAM,kBAAkB,GAAG,MAAM,IAAI,MAAM;AAClD,aAAO,MAAM,mBAAmB,GAAG,SAAU,QAAQ,MAAO,MAAM;AAAA,IACpE;AAAA,EACF,CAAC;AAED,SACE,CAAC,IAAI,MAAM,+BAA+B;AAAA,MACxC,CAAC,OAAO,MAAM,kCAAkC,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,KAAK,QAAQ,EAAE;AAAA,IACxF,EAFC;AAIL;AAEO,SAAS,kBAAkB,OAA4C;AAC5E,QAAM,SAAS,WAAW,EAAE,eAAe,GAAG,OAAO,WAA4B,MAAM,SAAkB,GAAG,KAAK;AACjH,QAAM,CAAC,KAAK,IAAI,WAAW,QAAQ,CAAC,QAAQ,WAAW,SAAS,iBAAiB,SAAS,QAAQ,cAAc,IAAI,CAAC;AAErH,QAAM,aAAa,MACjB,MAAM,UAAU,YAAY,wBAAwB,MAAM,KAAK,KAAK;AAEtE,QAAM,YAAY,OAA2C;AAAA,IAC3D,MAAM;AAAA,IACN,cAAc,MAAM,YAAY;AAAA,IAChC,IAAI,MAAM;AAAA,IACV,GAAI,MAAM,SAAS,gBACf,EAAE,iBAAiB,MAAM,eAAe,iBAAiB,GAAG,iBAAiB,IAAI,IACjF,CAAC;AAAA,EACP;AAEA,SACE,CAAC;AAAA,IACC,MAAM,MAAM,YAAY;AAAA,IACxB,UACE,CAAC,QAAQ,UAAU,GAAG,OAAO,GAAG,yBAAyB,QAAQ,MAAM,IAAI,IAAI,WAAW,GAAG,MAAM,KAAK,GAAG;AAAA,UACzG,CAAC;AAAA,MACC,MAAM;AAAA,MACN,OAAO,MAAM,SAAS,gBAAgB,EAAE,OAAO,GAAG,MAAM,aAAa,IAAI,IAAI,CAAC;AAAA,IAChF,EAAE;AAAA,QACJ,EALC;AAAA,GAOJ;AAAA,MACC,CAAC;AAAA,QACK,UAAU;AAAA,IACd,OAAO;AAAA,MACL;AAAA,MACA,QAAQ,MAAM,IAAI;AAAA,MAClB,WAAW;AAAA,MACX,uBAAuB,MAAM,IAAI;AAAA,MACjC,MAAM;AAAA,IACR;AAAA,GACD;AAAA,QACC,CAAC;AAAA,IACC,MAAM,MAAM,SAAS;AAAA,IACrB,UACE,EAAE;AAAA,cACA,CAAC,IAAI,MAAM,iCAAiC,EAAE;AAAA,cAC9C,CAAC,IAAI,EAAE;AAAA,cACP,CAAC,IAAI,EAAE;AAAA,cACP,CAAC,IAAI,EAAE;AAAA,YACT;AAAA,GAEH;AAAA,UACC,CAAC,iBAAiB,eAAe,MAAM,eAAe,EAAE;AAAA,QAC1D,EAZC,KAYM;AAAA,MACT,EAvBC,IAuBK;AAAA,IACR,EAnCC;AAqCL;AAEA,IAAO,4BAAQ;","names":[],"file":"progressIndicator.jsx"}
@@ -0,0 +1,5 @@
1
+ import { SaveAssetDialog } from "./saveAssetDialog";
2
+ export {
3
+ SaveAssetDialog
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/feedBack/saveAssetDialog/index.ts"],
4
+ "sourcesContent": ["export { SaveAssetDialog } from \"./saveAssetDialog\";\nexport type { SaveAssetDialogProps } from \"./saveAssetDialog\";\n"],
5
+ "mappings": "AAAA,SAAS,uBAAuB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,66 @@
1
+ import "@smwb/ui-styles/less/components/saveAssetDialog/saveAssetDialog.entry.less";
2
+ import { Show, splitProps } from "solid-js";
3
+ import cn from "clsx";
4
+ import { Modal } from "../modal";
5
+ import { Button } from "../../inputs/button";
6
+ import { TextField } from "../../inputs/textField";
7
+ function SaveAssetDialog(props) {
8
+ const [local] = splitProps(props, [
9
+ "open",
10
+ "title",
11
+ "nameLabel",
12
+ "name",
13
+ "onNameChange",
14
+ "previewSrc",
15
+ "onCapture",
16
+ "captureLabel",
17
+ "busy",
18
+ "confirmLabel",
19
+ "cancelLabel",
20
+ "onConfirm",
21
+ "onClose",
22
+ "children",
23
+ "class"
24
+ ]);
25
+ const showNameField = () => local.onNameChange !== void 0 || local.name !== void 0;
26
+ return <Modal open={local.open} onClose={local.onClose} size="small">
27
+ <Modal.Header>{local.title ?? "Save"}</Modal.Header>
28
+ <Modal.Content>
29
+ <div class={cn("smwb-save-asset-dialog__body", local.class)}>
30
+ <Show when={showNameField()}>
31
+ <TextField
32
+ label={local.nameLabel ?? "Name"}
33
+ value={local.name ?? ""}
34
+ disabled={!!local.busy}
35
+ onChange={(event) => local.onNameChange?.(event.currentTarget.value)}
36
+ />
37
+ </Show>
38
+ <Show when={local.previewSrc}>
39
+ <div class="smwb-save-asset-dialog__preview">
40
+ <img src={local.previewSrc} alt="" />
41
+ </div>
42
+ </Show>
43
+ <Show when={local.onCapture}>
44
+ <Button
45
+ variant="outlined"
46
+ size="small"
47
+ disabled={!!local.busy}
48
+ onClick={() => local.onCapture?.()}
49
+ label={local.captureLabel ?? "Capture preview"}
50
+ />
51
+ </Show>
52
+ {local.children}
53
+ </div>
54
+ </Modal.Content>
55
+ <Modal.Footer>
56
+ <Button variant="text" disabled={!!local.busy} onClick={() => local.onClose()} label={local.cancelLabel ?? "Cancel"} />
57
+ <Button variant="contained" disabled={!!local.busy} onClick={() => local.onConfirm()} label={local.confirmLabel ?? "Save"} />
58
+ </Modal.Footer>
59
+ </Modal>;
60
+ }
61
+ var saveAssetDialog_default = SaveAssetDialog;
62
+ export {
63
+ SaveAssetDialog,
64
+ saveAssetDialog_default as default
65
+ };
66
+ //# sourceMappingURL=saveAssetDialog.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/feedBack/saveAssetDialog/saveAssetDialog.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/saveAssetDialog/saveAssetDialog.entry.less\";\nimport { type JSX, Show, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Modal } from \"../modal\";\nimport { Button } from \"../../inputs/button\";\nimport { TextField } from \"../../inputs/textField\";\n\nexport interface SaveAssetDialogProps {\n open: boolean;\n title?: string;\n /** Label for the name field. Omit `onNameChange` AND `name` to hide the field. */\n nameLabel?: string;\n name?: string;\n onNameChange?: (name: string) => void;\n /** Preview image URL (e.g. a freshly captured thumbnail). */\n previewSrc?: string;\n /** Shows a Capture button when provided. */\n onCapture?: () => void;\n captureLabel?: string;\n /** Disables the actions + name field while a save/capture is in flight. */\n busy?: boolean;\n confirmLabel?: string;\n cancelLabel?: string;\n onConfirm: () => void;\n onClose: () => void;\n /** Extra content between the name field/preview and the actions. */\n children?: JSX.Element;\n class?: string;\n}\n\n/**\n * A \"name it / preview a thumbnail / confirm-cancel\" dialog on `Modal` — the\n * save/capture flow apps hand-build for every asset. Pairs with srv-solid's\n * asset store: `onConfirm` uploads the captured `previewSrc`.\n */\nexport function SaveAssetDialog(props: SaveAssetDialogProps): JSX.Element {\n const [local] = splitProps(props, [\n \"open\",\n \"title\",\n \"nameLabel\",\n \"name\",\n \"onNameChange\",\n \"previewSrc\",\n \"onCapture\",\n \"captureLabel\",\n \"busy\",\n \"confirmLabel\",\n \"cancelLabel\",\n \"onConfirm\",\n \"onClose\",\n \"children\",\n \"class\",\n ]);\n\n const showNameField = (): boolean => local.onNameChange !== undefined || local.name !== undefined;\n\n return (\n <Modal open={local.open} onClose={local.onClose} size=\"small\">\n <Modal.Header>{local.title ?? \"Save\"}</Modal.Header>\n <Modal.Content>\n <div class={cn(\"smwb-save-asset-dialog__body\", local.class)}>\n <Show when={showNameField()}>\n <TextField\n label={local.nameLabel ?? \"Name\"}\n value={local.name ?? \"\"}\n disabled={!!local.busy}\n onChange={(event) => local.onNameChange?.((event.currentTarget as HTMLInputElement).value)}\n />\n </Show>\n <Show when={local.previewSrc}>\n <div class=\"smwb-save-asset-dialog__preview\">\n <img src={local.previewSrc} alt=\"\" />\n </div>\n </Show>\n <Show when={local.onCapture}>\n <Button\n variant=\"outlined\"\n size=\"small\"\n disabled={!!local.busy}\n onClick={() => local.onCapture?.()}\n label={local.captureLabel ?? \"Capture preview\"}\n />\n </Show>\n {local.children}\n </div>\n </Modal.Content>\n <Modal.Footer>\n <Button variant=\"text\" disabled={!!local.busy} onClick={() => local.onClose()} label={local.cancelLabel ?? \"Cancel\"} />\n <Button variant=\"contained\" disabled={!!local.busy} onClick={() => local.onConfirm()} label={local.confirmLabel ?? \"Save\"} />\n </Modal.Footer>\n </Modal>\n );\n}\n\nexport default SaveAssetDialog;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,kBAAkB;AAC3C,OAAO,QAAQ;AACf,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AA8BnB,SAAS,gBAAgB,OAA0C;AACxE,QAAM,CAAC,KAAK,IAAI,WAAW,OAAO;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA;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,gBAAgB,MAAe,MAAM,iBAAiB,UAAa,MAAM,SAAS;AAExF,SACE,CAAC,MAAM,MAAM,MAAM,MAAM,SAAS,MAAM,SAAS,KAAK,QAAQ;AAAA,MAC5D,CAAC,MAAM,QAAQ,MAAM,SAAS,OAAO,EAApC,MAAM,OAA6C;AAAA,MACpD,CAAC,MAAM,QAAQ;AAAA,QACb,CAAC,IAAI,OAAO,GAAG,gCAAgC,MAAM,KAAK,GAAG;AAAA,UAC3D,CAAC,KAAK,MAAM,cAAc,GAAG;AAAA,YAC3B,CAAC;AAAA,IACC,OAAO,MAAM,aAAa;AAAA,IAC1B,OAAO,MAAM,QAAQ;AAAA,IACrB,UAAU,CAAC,CAAC,MAAM;AAAA,IAClB,UAAU,CAAC,UAAU,MAAM,eAAgB,MAAM,cAAmC,KAAK;AAAA,EAC3F,EAAE;AAAA,UACJ,EAPC,KAOM;AAAA,UACP,CAAC,KAAK,MAAM,MAAM,YAAY;AAAA,YAC5B,CAAC,IAAI,MAAM,kCAAkC;AAAA,cAC3C,CAAC,IAAI,KAAK,MAAM,YAAY,IAAI,GAAG,EAAE;AAAA,YACvC,EAFC,IAEK;AAAA,UACR,EAJC,KAIM;AAAA,UACP,CAAC,KAAK,MAAM,MAAM,WAAW;AAAA,YAC3B,CAAC;AAAA,IACC,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,UAAU,CAAC,CAAC,MAAM;AAAA,IAClB,SAAS,MAAM,MAAM,YAAY;AAAA,IACjC,OAAO,MAAM,gBAAgB;AAAA,EAC/B,EAAE;AAAA,UACJ,EARC,KAQM;AAAA,WACN,MAAM,SAAS;AAAA,QAClB,EAxBC,IAwBK;AAAA,MACR,EA1BC,MAAM,QA0BS;AAAA,MAChB,CAAC,MAAM,OAAO;AAAA,QACZ,CAAC,OAAO,QAAQ,OAAO,UAAU,CAAC,CAAC,MAAM,MAAM,SAAS,MAAM,MAAM,QAAQ,GAAG,OAAO,MAAM,eAAe,UAAU,EAAE;AAAA,QACvH,CAAC,OAAO,QAAQ,YAAY,UAAU,CAAC,CAAC,MAAM,MAAM,SAAS,MAAM,MAAM,UAAU,GAAG,OAAO,MAAM,gBAAgB,QAAQ,EAAE;AAAA,MAC/H,EAHC,MAAM,OAGQ;AAAA,IACjB,EAjCC;AAmCL;AAEA,IAAO,0BAAQ;","names":[],"file":"saveAssetDialog.jsx"}
@@ -1,4 +1,4 @@
1
- import "/sourcecraft/workspace/packages/styles/less/components/skeleton/skeleton.entry.less";
1
+ import "@smwb/ui-styles/less/components/skeleton/skeleton.entry.less";
2
2
  import { For, Show, mergeProps, splitProps } from "solid-js";
3
3
  import { Dynamic } from "solid-js/web";
4
4
  import cn from "clsx";
@@ -63,4 +63,4 @@ export {
63
63
  Skeleton,
64
64
  skeleton_default as default
65
65
  };
66
- //# sourceMappingURL=skeleton.js.map
66
+ //# sourceMappingURL=skeleton.jsx.map