@smwb/ui-solid 0.11.2 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (740) hide show
  1. package/README.md +63 -22
  2. package/dist/assets/styles/less/components/accordion/accordion.entry.css +1 -1
  3. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  4. package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
  5. package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
  6. package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
  7. package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
  8. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
  9. package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
  10. package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
  11. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  12. package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
  13. package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
  14. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  15. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  16. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  17. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  18. package/dist/assets/styles/less/components/timeline/timeline.entry.css +1 -0
  19. package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
  20. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  21. package/dist/assets/styles/less/tokens.entry.css +1 -0
  22. package/dist/components/base/icon/icon.js +4 -3
  23. package/dist/components/base/icon/icon.js.map +1 -1
  24. package/dist/components/base/ripple/ripple.js +4 -3
  25. package/dist/components/base/ripple/ripple.js.map +1 -1
  26. package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
  27. package/dist/components/dataDisplay/accordion/accordion.js +91 -48
  28. package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
  29. package/dist/components/dataDisplay/assetGrid/assetGrid.js +14 -13
  30. package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
  31. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  32. package/dist/components/dataDisplay/avatar/avatar.js +56 -40
  33. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  34. package/dist/components/dataDisplay/badge/badge.js +24 -20
  35. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  36. package/dist/components/dataDisplay/card/card.js +24 -23
  37. package/dist/components/dataDisplay/card/card.js.map +1 -1
  38. package/dist/components/dataDisplay/carousel/carousel.js +4 -3
  39. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  40. package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
  41. package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
  42. package/dist/components/dataDisplay/chart/index.d.ts +4 -0
  43. package/dist/components/dataDisplay/chat/chat.js +52 -51
  44. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  45. package/dist/components/dataDisplay/chat/chatHeader.js +29 -29
  46. package/dist/components/dataDisplay/chat/chatHeader.js.map +1 -1
  47. package/dist/components/dataDisplay/chat/chatMessageBubble.js +28 -28
  48. package/dist/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
  49. package/dist/components/dataDisplay/chat/chatShell.js +54 -51
  50. package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
  51. package/dist/components/dataDisplay/chip/chip.js +79 -70
  52. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  53. package/dist/components/dataDisplay/chipGroup/chipGroup.js +9 -8
  54. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  55. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +32 -0
  56. package/dist/components/dataDisplay/descriptionList/descriptionList.js +60 -0
  57. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  58. package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
  59. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +4 -3
  60. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  61. package/dist/components/dataDisplay/imagesList/imagesList.js +8 -7
  62. package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
  63. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -24
  64. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  65. package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
  66. package/dist/components/dataDisplay/kanban/kanban.d.ts +42 -0
  67. package/dist/components/dataDisplay/kanban/kanban.js +133 -0
  68. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
  69. package/dist/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  70. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  71. package/dist/components/dataDisplay/list/list.js +17 -16
  72. package/dist/components/dataDisplay/list/list.js.map +1 -1
  73. package/dist/components/dataDisplay/meter/index.d.ts +2 -0
  74. package/dist/components/dataDisplay/meter/meter.d.ts +34 -0
  75. package/dist/components/dataDisplay/meter/meter.js +84 -0
  76. package/dist/components/dataDisplay/meter/meter.js.map +1 -0
  77. package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
  78. package/dist/components/dataDisplay/personChip/personChip.d.ts +32 -0
  79. package/dist/components/dataDisplay/personChip/personChip.js +104 -0
  80. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
  81. package/dist/components/dataDisplay/stat/index.d.ts +2 -0
  82. package/dist/components/dataDisplay/stat/stat.d.ts +33 -0
  83. package/dist/components/dataDisplay/stat/stat.js +101 -0
  84. package/dist/components/dataDisplay/stat/stat.js.map +1 -0
  85. package/dist/components/dataDisplay/table/table.d.ts +7 -0
  86. package/dist/components/dataDisplay/table/table.js +22 -21
  87. package/dist/components/dataDisplay/table/table.js.map +1 -1
  88. package/dist/components/dataDisplay/table/tableCell.d.ts +2 -0
  89. package/dist/components/dataDisplay/table/tableCell.js +9 -6
  90. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  91. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
  92. package/dist/components/dataDisplay/table/tableHeadCell.js +26 -23
  93. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  94. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +4 -3
  95. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
  96. package/dist/components/dataDisplay/thumbCard/thumbCard.js +54 -53
  97. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  98. package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
  99. package/dist/components/dataDisplay/timeline/timeline.d.ts +38 -0
  100. package/dist/components/dataDisplay/timeline/timeline.js +89 -0
  101. package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
  102. package/dist/components/dataDisplay/treeView/treeView.js +4 -3
  103. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  104. package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
  105. package/dist/components/dataDisplay/typography/typography.js +36 -22
  106. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  107. package/dist/components/feedBack/confirmDialog/confirmDialog.js +9 -8
  108. package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  109. package/dist/components/feedBack/emptyState/emptyState.d.ts +25 -0
  110. package/dist/components/feedBack/emptyState/emptyState.js +86 -0
  111. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
  112. package/dist/components/feedBack/emptyState/index.d.ts +2 -0
  113. package/dist/components/feedBack/message/message.js +4 -3
  114. package/dist/components/feedBack/message/message.js.map +1 -1
  115. package/dist/components/feedBack/modal/modal.js +4 -3
  116. package/dist/components/feedBack/modal/modal.js.map +1 -1
  117. package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +13 -0
  118. package/dist/components/feedBack/progressIndicator/progressIndicator.js +79 -46
  119. package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  120. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +18 -14
  121. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  122. package/dist/components/feedBack/skeleton/skeleton.js +4 -3
  123. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  124. package/dist/components/feedBack/snackbar/snackbar.js +18 -17
  125. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  126. package/dist/components/feedBack/tooltip/tooltip.js +41 -33
  127. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  128. package/dist/components/inputs/button/button.js +32 -30
  129. package/dist/components/inputs/button/button.js.map +1 -1
  130. package/dist/components/inputs/buttonGroups/buttonGroup.js +9 -8
  131. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  132. package/dist/components/inputs/checkbox/checkbox.js +4 -3
  133. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  134. package/dist/components/inputs/datePicker/dataPickerInput.js +23 -23
  135. package/dist/components/inputs/datePicker/dataPickerInput.js.map +1 -1
  136. package/dist/components/inputs/datePicker/datePicker.js +84 -83
  137. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  138. package/dist/components/inputs/fileDrop/fileDrop.js +4 -3
  139. package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
  140. package/dist/components/inputs/fileInput/fileInput.js +11 -10
  141. package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
  142. package/dist/components/inputs/floatingButton/floatingButton.js +9 -8
  143. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  144. package/dist/components/inputs/radioButton/radioButton.js +9 -8
  145. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  146. package/dist/components/inputs/rating/rating.js +41 -40
  147. package/dist/components/inputs/rating/rating.js.map +1 -1
  148. package/dist/components/inputs/selectField/selectField.d.ts +2 -0
  149. package/dist/components/inputs/selectField/selectField.js +55 -51
  150. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  151. package/dist/components/inputs/slider/slider.js +4 -3
  152. package/dist/components/inputs/slider/slider.js.map +1 -1
  153. package/dist/components/inputs/textField/textField.js +38 -37
  154. package/dist/components/inputs/textField/textField.js.map +1 -1
  155. package/dist/components/inputs/textField/textFieldAdornment.js +9 -9
  156. package/dist/components/inputs/textField/textFieldAdornment.js.map +1 -1
  157. package/dist/components/inputs/textField/textFieldWrapper.js +41 -41
  158. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  159. package/dist/components/inputs/timePicker/timePicker.js +12 -11
  160. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  161. package/dist/components/inputs/toggle/toggle.js +4 -3
  162. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  163. package/dist/components/inputs/valueSlider/valueSlider.js +26 -25
  164. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  165. package/dist/components/layout/appLayout/appLayout.js +39 -38
  166. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  167. package/dist/components/layout/divider/divider.js +26 -22
  168. package/dist/components/layout/divider/divider.js.map +1 -1
  169. package/dist/components/layout/floatingWindow/floatingWindow.js +74 -73
  170. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  171. package/dist/components/layout/grid/grid.js +10 -9
  172. package/dist/components/layout/grid/grid.js.map +1 -1
  173. package/dist/components/layout/page/page.js +4 -3
  174. package/dist/components/layout/page/page.js.map +1 -1
  175. package/dist/components/layout/pageHeader/pageHeader.js +36 -35
  176. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  177. package/dist/components/layout/screenDivider/screenDivider.js +9 -8
  178. package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
  179. package/dist/components/layout/sectionHeader/index.d.ts +2 -0
  180. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +30 -0
  181. package/dist/components/layout/sectionHeader/sectionHeader.js +100 -0
  182. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  183. package/dist/components/layout/sheet/sheet.js +4 -3
  184. package/dist/components/layout/sheet/sheet.js.map +1 -1
  185. package/dist/components/layout/stack/stack.js +31 -27
  186. package/dist/components/layout/stack/stack.js.map +1 -1
  187. package/dist/components/navigation/appBar/appBar.js +24 -23
  188. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  189. package/dist/components/navigation/bottomBar/bottomBar.js +57 -56
  190. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  191. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +4 -3
  192. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  193. package/dist/components/navigation/menu/menu.js +10 -9
  194. package/dist/components/navigation/menu/menu.js.map +1 -1
  195. package/dist/components/navigation/overflowMenu/overflowMenu.js +4 -3
  196. package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
  197. package/dist/components/navigation/pagination/pagination.js +14 -13
  198. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  199. package/dist/components/navigation/sidebar/sidebar.js +4 -3
  200. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  201. package/dist/components/navigation/stepper/stepper.d.ts +10 -2
  202. package/dist/components/navigation/stepper/stepper.js +63 -47
  203. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  204. package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
  205. package/dist/components/navigation/tabs/tab/tab.js +45 -44
  206. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  207. package/dist/components/navigation/tabs/tabs.d.ts +12 -0
  208. package/dist/components/navigation/tabs/tabs.js +142 -86
  209. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  210. package/dist/connects/rt/table/table.d.ts +2 -0
  211. package/dist/headless/components/dataDisplay/accordion/accordion.js +89 -47
  212. package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
  213. package/dist/headless/components/dataDisplay/avatar/avatar.js +54 -39
  214. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  215. package/dist/headless/components/dataDisplay/badge/badge.js +22 -19
  216. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  217. package/dist/headless/components/dataDisplay/card/card.js +22 -22
  218. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  219. package/dist/headless/components/dataDisplay/chat/chat.js +50 -50
  220. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  221. package/dist/headless/components/dataDisplay/chat/chatHeader.js +29 -29
  222. package/dist/headless/components/dataDisplay/chat/chatHeader.js.map +1 -1
  223. package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js +28 -28
  224. package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
  225. package/dist/headless/components/dataDisplay/chat/chatShell.js +54 -51
  226. package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
  227. package/dist/headless/components/dataDisplay/chip/chip.js +77 -69
  228. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  229. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +58 -0
  230. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  231. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +28 -24
  232. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  233. package/dist/headless/components/dataDisplay/kanban/kanban.js +131 -0
  234. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
  235. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +28 -28
  236. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  237. package/dist/headless/components/dataDisplay/list/list.js +15 -15
  238. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  239. package/dist/headless/components/dataDisplay/meter/meter.js +82 -0
  240. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
  241. package/dist/headless/components/dataDisplay/personChip/personChip.js +102 -0
  242. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
  243. package/dist/headless/components/dataDisplay/stat/stat.js +99 -0
  244. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
  245. package/dist/headless/components/dataDisplay/table/table.js +20 -20
  246. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  247. package/dist/headless/components/dataDisplay/table/tableCell.js +9 -6
  248. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  249. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +26 -23
  250. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  251. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +53 -53
  252. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  253. package/dist/headless/components/dataDisplay/timeline/timeline.js +87 -0
  254. package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
  255. package/dist/headless/components/dataDisplay/typography/typography.js +34 -21
  256. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  257. package/dist/headless/components/feedBack/emptyState/emptyState.js +84 -0
  258. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
  259. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +77 -45
  260. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  261. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +16 -13
  262. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  263. package/dist/headless/components/feedBack/tooltip/tooltip.js +33 -26
  264. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  265. package/dist/headless/components/inputs/button/button.js +33 -32
  266. package/dist/headless/components/inputs/button/button.js.map +1 -1
  267. package/dist/headless/components/inputs/datePicker/dataPickerInput.js +23 -23
  268. package/dist/headless/components/inputs/datePicker/dataPickerInput.js.map +1 -1
  269. package/dist/headless/components/inputs/datePicker/datePicker.js +79 -79
  270. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  271. package/dist/headless/components/inputs/rating/rating.js +39 -39
  272. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  273. package/dist/headless/components/inputs/selectField/selectField.js +61 -58
  274. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  275. package/dist/headless/components/inputs/textField/textField.js +36 -36
  276. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  277. package/dist/headless/components/inputs/textField/textFieldAdornment.js +9 -9
  278. package/dist/headless/components/inputs/textField/textFieldAdornment.js.map +1 -1
  279. package/dist/headless/components/inputs/textField/textFieldWrapper.js +41 -41
  280. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  281. package/dist/headless/components/inputs/valueSlider/valueSlider.js +24 -24
  282. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  283. package/dist/headless/components/layout/appLayout/appLayout.js +39 -39
  284. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  285. package/dist/headless/components/layout/divider/divider.js +24 -21
  286. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  287. package/dist/headless/components/layout/pageHeader/pageHeader.js +34 -34
  288. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  289. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +98 -0
  290. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  291. package/dist/headless/components/layout/stack/stack.js +29 -26
  292. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  293. package/dist/headless/components/navigation/appBar/appBar.js +22 -22
  294. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  295. package/dist/headless/components/navigation/bottomBar/bottomBar.js +51 -51
  296. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  297. package/dist/headless/components/navigation/stepper/stepper.js +61 -46
  298. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  299. package/dist/headless/components/navigation/tabs/tab/tab.js +44 -44
  300. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  301. package/dist/headless/components/navigation/tabs/tabs.js +140 -85
  302. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  303. package/dist/headless/icons/catalog.js +78 -1
  304. package/dist/headless/icons/catalog.js.map +1 -1
  305. package/dist/headless/icons/index.js +596 -574
  306. package/dist/headless/icons/index.js.map +1 -1
  307. package/dist/headless/icons/svg/accountTree.js +9 -0
  308. package/dist/headless/icons/svg/accountTree.js.map +1 -0
  309. package/dist/headless/icons/svg/callSplit.js +9 -0
  310. package/dist/headless/icons/svg/callSplit.js.map +1 -0
  311. package/dist/headless/icons/svg/deviceHub.js +8 -0
  312. package/dist/headless/icons/svg/deviceHub.js.map +1 -0
  313. package/dist/headless/icons/svg/editNote.js +9 -0
  314. package/dist/headless/icons/svg/editNote.js.map +1 -0
  315. package/dist/headless/icons/svg/filterList.js +9 -0
  316. package/dist/headless/icons/svg/filterList.js.map +1 -0
  317. package/dist/headless/icons/svg/forkRight.js +8 -0
  318. package/dist/headless/icons/svg/forkRight.js.map +1 -0
  319. package/dist/headless/icons/svg/groups.js +9 -0
  320. package/dist/headless/icons/svg/groups.js.map +1 -0
  321. package/dist/headless/icons/svg/hub.js +8 -0
  322. package/dist/headless/icons/svg/hub.js.map +1 -0
  323. package/dist/headless/icons/svg/index.js +598 -576
  324. package/dist/headless/icons/svg/index.js.map +1 -1
  325. package/dist/headless/icons/svg/lan.js +9 -0
  326. package/dist/headless/icons/svg/lan.js.map +1 -0
  327. package/dist/headless/icons/svg/personOff.js +9 -0
  328. package/dist/headless/icons/svg/personOff.js.map +1 -0
  329. package/dist/headless/icons/svg/schema.js +9 -0
  330. package/dist/headless/icons/svg/schema.js.map +1 -0
  331. package/dist/headless/index.js +281 -255
  332. package/dist/headless/index.js.map +1 -1
  333. package/dist/headless/primitives/createCssTransition.js +31 -28
  334. package/dist/headless/primitives/createCssTransition.js.map +1 -1
  335. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +60 -18
  336. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
  337. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +28 -3
  338. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  339. package/dist/headless/source/components/dataDisplay/badge/badge.jsx +8 -4
  340. package/dist/headless/source/components/dataDisplay/badge/badge.jsx.map +1 -1
  341. package/dist/headless/source/components/dataDisplay/card/card.jsx +4 -3
  342. package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
  343. package/dist/headless/source/components/dataDisplay/chart/chart.jsx +168 -0
  344. package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -0
  345. package/dist/headless/source/components/dataDisplay/chart/chartTheme.js +78 -0
  346. package/dist/headless/source/components/dataDisplay/chart/chartTheme.js.map +7 -0
  347. package/dist/headless/source/components/dataDisplay/chart/index.js +9 -0
  348. package/dist/headless/source/components/dataDisplay/chart/index.js.map +7 -0
  349. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +4 -3
  350. package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  351. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +7 -5
  352. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx.map +1 -1
  353. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +4 -3
  354. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx.map +1 -1
  355. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +30 -26
  356. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx.map +1 -1
  357. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +11 -6
  358. package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  359. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +42 -0
  360. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -0
  361. package/dist/headless/source/components/dataDisplay/descriptionList/index.js +7 -0
  362. package/dist/headless/source/components/dataDisplay/descriptionList/index.js.map +7 -0
  363. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +10 -4
  364. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
  365. package/dist/headless/source/components/dataDisplay/kanban/index.js +8 -0
  366. package/dist/headless/source/components/dataDisplay/kanban/index.js.map +7 -0
  367. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +99 -0
  368. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -0
  369. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +4 -3
  370. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  371. package/dist/headless/source/components/dataDisplay/list/list.jsx +4 -3
  372. package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
  373. package/dist/headless/source/components/dataDisplay/meter/index.js +8 -0
  374. package/dist/headless/source/components/dataDisplay/meter/index.js.map +7 -0
  375. package/dist/headless/source/components/dataDisplay/meter/meter.jsx +80 -0
  376. package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -0
  377. package/dist/headless/source/components/dataDisplay/personChip/index.js +8 -0
  378. package/dist/headless/source/components/dataDisplay/personChip/index.js.map +7 -0
  379. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +71 -0
  380. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -0
  381. package/dist/headless/source/components/dataDisplay/stat/index.js +7 -0
  382. package/dist/headless/source/components/dataDisplay/stat/index.js.map +7 -0
  383. package/dist/headless/source/components/dataDisplay/stat/stat.jsx +72 -0
  384. package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -0
  385. package/dist/headless/source/components/dataDisplay/table/table.jsx +11 -4
  386. package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
  387. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +8 -2
  388. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  389. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +37 -3
  390. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  391. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +10 -7
  392. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  393. package/dist/headless/source/components/dataDisplay/timeline/index.js +8 -0
  394. package/dist/headless/source/components/dataDisplay/timeline/index.js.map +7 -0
  395. package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx +64 -0
  396. package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx.map +1 -0
  397. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +17 -3
  398. package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  399. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +47 -0
  400. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -0
  401. package/dist/headless/source/components/feedBack/emptyState/index.js +6 -0
  402. package/dist/headless/source/components/feedBack/emptyState/index.js.map +7 -0
  403. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +52 -10
  404. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
  405. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +3 -2
  406. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -1
  407. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +4 -2
  408. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  409. package/dist/headless/source/components/inputs/button/button.jsx +7 -3
  410. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  411. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +4 -3
  412. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx.map +1 -1
  413. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +4 -6
  414. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  415. package/dist/headless/source/components/inputs/rating/rating.jsx +4 -3
  416. package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
  417. package/dist/headless/source/components/inputs/selectField/selectField.jsx +8 -2
  418. package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
  419. package/dist/headless/source/components/inputs/textField/textField.jsx +8 -6
  420. package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
  421. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +4 -3
  422. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx.map +1 -1
  423. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +9 -6
  424. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  425. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +4 -3
  426. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  427. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +3 -2
  428. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  429. package/dist/headless/source/components/layout/divider/divider.jsx +10 -6
  430. package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
  431. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +14 -10
  432. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  433. package/dist/headless/source/components/layout/sectionHeader/index.js +6 -0
  434. package/dist/headless/source/components/layout/sectionHeader/index.js.map +7 -0
  435. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +80 -0
  436. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -0
  437. package/dist/headless/source/components/layout/stack/stack.jsx +3 -2
  438. package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
  439. package/dist/headless/source/components/navigation/appBar/appBar.jsx +7 -5
  440. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  441. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +4 -3
  442. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  443. package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -7
  444. package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
  445. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +7 -5
  446. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  447. package/dist/headless/source/components/navigation/tabs/tabs.jsx +84 -4
  448. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  449. package/dist/headless/source/connects/rt/table/table.jsx +9 -1
  450. package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
  451. package/dist/headless/source/icons/catalog.js +78 -1
  452. package/dist/headless/source/icons/catalog.js.map +2 -2
  453. package/dist/headless/source/icons/svg/accountTree.js +11 -0
  454. package/dist/headless/source/icons/svg/accountTree.js.map +7 -0
  455. package/dist/headless/source/icons/svg/callSplit.js +11 -0
  456. package/dist/headless/source/icons/svg/callSplit.js.map +7 -0
  457. package/dist/headless/source/icons/svg/deviceHub.js +10 -0
  458. package/dist/headless/source/icons/svg/deviceHub.js.map +7 -0
  459. package/dist/headless/source/icons/svg/editNote.js +11 -0
  460. package/dist/headless/source/icons/svg/editNote.js.map +7 -0
  461. package/dist/headless/source/icons/svg/filterList.js +11 -0
  462. package/dist/headless/source/icons/svg/filterList.js.map +7 -0
  463. package/dist/headless/source/icons/svg/forkRight.js +10 -0
  464. package/dist/headless/source/icons/svg/forkRight.js.map +7 -0
  465. package/dist/headless/source/icons/svg/groups.js +11 -0
  466. package/dist/headless/source/icons/svg/groups.js.map +7 -0
  467. package/dist/headless/source/icons/svg/hub.js +10 -0
  468. package/dist/headless/source/icons/svg/hub.js.map +7 -0
  469. package/dist/headless/source/icons/svg/index.js +22 -0
  470. package/dist/headless/source/icons/svg/index.js.map +2 -2
  471. package/dist/headless/source/icons/svg/lan.js +11 -0
  472. package/dist/headless/source/icons/svg/lan.js.map +7 -0
  473. package/dist/headless/source/icons/svg/personOff.js +11 -0
  474. package/dist/headless/source/icons/svg/personOff.js.map +7 -0
  475. package/dist/headless/source/icons/svg/schema.js +11 -0
  476. package/dist/headless/source/icons/svg/schema.js.map +7 -0
  477. package/dist/headless/source/index.js +33 -1
  478. package/dist/headless/source/index.js.map +2 -2
  479. package/dist/headless/source/primitives/createCssTransition.js +10 -1
  480. package/dist/headless/source/primitives/createCssTransition.js.map +2 -2
  481. package/dist/icons/catalog.d.ts +1 -1
  482. package/dist/icons/catalog.js +78 -1
  483. package/dist/icons/catalog.js.map +1 -1
  484. package/dist/icons/index.js +596 -574
  485. package/dist/icons/index.js.map +1 -1
  486. package/dist/icons/svg/accountTree.d.ts +4 -0
  487. package/dist/icons/svg/accountTree.js +9 -0
  488. package/dist/icons/svg/accountTree.js.map +1 -0
  489. package/dist/icons/svg/callSplit.d.ts +4 -0
  490. package/dist/icons/svg/callSplit.js +9 -0
  491. package/dist/icons/svg/callSplit.js.map +1 -0
  492. package/dist/icons/svg/deviceHub.d.ts +4 -0
  493. package/dist/icons/svg/deviceHub.js +8 -0
  494. package/dist/icons/svg/deviceHub.js.map +1 -0
  495. package/dist/icons/svg/editNote.d.ts +4 -0
  496. package/dist/icons/svg/editNote.js +9 -0
  497. package/dist/icons/svg/editNote.js.map +1 -0
  498. package/dist/icons/svg/filterList.d.ts +4 -0
  499. package/dist/icons/svg/filterList.js +9 -0
  500. package/dist/icons/svg/filterList.js.map +1 -0
  501. package/dist/icons/svg/forkRight.d.ts +4 -0
  502. package/dist/icons/svg/forkRight.js +8 -0
  503. package/dist/icons/svg/forkRight.js.map +1 -0
  504. package/dist/icons/svg/groups.d.ts +4 -0
  505. package/dist/icons/svg/groups.js +9 -0
  506. package/dist/icons/svg/groups.js.map +1 -0
  507. package/dist/icons/svg/hub.d.ts +4 -0
  508. package/dist/icons/svg/hub.js +8 -0
  509. package/dist/icons/svg/hub.js.map +1 -0
  510. package/dist/icons/svg/index.d.ts +11 -0
  511. package/dist/icons/svg/index.js +598 -576
  512. package/dist/icons/svg/index.js.map +1 -1
  513. package/dist/icons/svg/lan.d.ts +4 -0
  514. package/dist/icons/svg/lan.js +9 -0
  515. package/dist/icons/svg/lan.js.map +1 -0
  516. package/dist/icons/svg/personOff.d.ts +4 -0
  517. package/dist/icons/svg/personOff.js +9 -0
  518. package/dist/icons/svg/personOff.js.map +1 -0
  519. package/dist/icons/svg/schema.d.ts +4 -0
  520. package/dist/icons/svg/schema.js +9 -0
  521. package/dist/icons/svg/schema.js.map +1 -0
  522. package/dist/index.d.ts +21 -5
  523. package/dist/index.js +281 -255
  524. package/dist/index.js.map +1 -1
  525. package/dist/primitives/createCssTransition.d.ts +6 -0
  526. package/dist/primitives/createCssTransition.js +31 -28
  527. package/dist/primitives/createCssTransition.js.map +1 -1
  528. package/dist/source/components/base/icon/icon.jsx +1 -0
  529. package/dist/source/components/base/icon/icon.jsx.map +1 -1
  530. package/dist/source/components/base/ripple/ripple.jsx +1 -0
  531. package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
  532. package/dist/source/components/dataDisplay/accordion/accordion.jsx +61 -18
  533. package/dist/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
  534. package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx +1 -0
  535. package/dist/source/components/dataDisplay/assetGrid/assetGrid.jsx.map +1 -1
  536. package/dist/source/components/dataDisplay/avatar/avatar.jsx +29 -3
  537. package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  538. package/dist/source/components/dataDisplay/badge/badge.jsx +9 -4
  539. package/dist/source/components/dataDisplay/badge/badge.jsx.map +1 -1
  540. package/dist/source/components/dataDisplay/card/card.jsx +5 -3
  541. package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
  542. package/dist/source/components/dataDisplay/carousel/carousel.jsx +1 -0
  543. package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  544. package/dist/source/components/dataDisplay/chart/chart.jsx +170 -0
  545. package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -0
  546. package/dist/source/components/dataDisplay/chart/chartTheme.js +78 -0
  547. package/dist/source/components/dataDisplay/chart/chartTheme.js.map +7 -0
  548. package/dist/source/components/dataDisplay/chart/index.js +9 -0
  549. package/dist/source/components/dataDisplay/chart/index.js.map +7 -0
  550. package/dist/source/components/dataDisplay/chat/chat.jsx +5 -3
  551. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  552. package/dist/source/components/dataDisplay/chat/chatHeader.jsx +7 -5
  553. package/dist/source/components/dataDisplay/chat/chatHeader.jsx.map +1 -1
  554. package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx +4 -3
  555. package/dist/source/components/dataDisplay/chat/chatMessageBubble.jsx.map +1 -1
  556. package/dist/source/components/dataDisplay/chat/chatShell.jsx +30 -26
  557. package/dist/source/components/dataDisplay/chat/chatShell.jsx.map +1 -1
  558. package/dist/source/components/dataDisplay/chip/chip.jsx +12 -6
  559. package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  560. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +1 -0
  561. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
  562. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +44 -0
  563. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -0
  564. package/dist/source/components/dataDisplay/descriptionList/index.js +7 -0
  565. package/dist/source/components/dataDisplay/descriptionList/index.js.map +7 -0
  566. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +1 -0
  567. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  568. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx +1 -0
  569. package/dist/source/components/dataDisplay/imagesList/imagesList.jsx.map +1 -1
  570. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +11 -4
  571. package/dist/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
  572. package/dist/source/components/dataDisplay/kanban/index.js +8 -0
  573. package/dist/source/components/dataDisplay/kanban/index.js.map +7 -0
  574. package/dist/source/components/dataDisplay/kanban/kanban.jsx +101 -0
  575. package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -0
  576. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +5 -3
  577. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  578. package/dist/source/components/dataDisplay/list/list.jsx +5 -3
  579. package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
  580. package/dist/source/components/dataDisplay/meter/index.js +8 -0
  581. package/dist/source/components/dataDisplay/meter/index.js.map +7 -0
  582. package/dist/source/components/dataDisplay/meter/meter.jsx +82 -0
  583. package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -0
  584. package/dist/source/components/dataDisplay/personChip/index.js +8 -0
  585. package/dist/source/components/dataDisplay/personChip/index.js.map +7 -0
  586. package/dist/source/components/dataDisplay/personChip/personChip.jsx +73 -0
  587. package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -0
  588. package/dist/source/components/dataDisplay/stat/index.js +7 -0
  589. package/dist/source/components/dataDisplay/stat/index.js.map +7 -0
  590. package/dist/source/components/dataDisplay/stat/stat.jsx +74 -0
  591. package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -0
  592. package/dist/source/components/dataDisplay/table/table.jsx +12 -4
  593. package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
  594. package/dist/source/components/dataDisplay/table/tableCell.jsx +8 -2
  595. package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  596. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +37 -3
  597. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  598. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx +1 -0
  599. package/dist/source/components/dataDisplay/table/tablePagination/tablePagination.jsx.map +1 -1
  600. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +11 -7
  601. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  602. package/dist/source/components/dataDisplay/timeline/index.js +8 -0
  603. package/dist/source/components/dataDisplay/timeline/index.js.map +7 -0
  604. package/dist/source/components/dataDisplay/timeline/timeline.jsx +66 -0
  605. package/dist/source/components/dataDisplay/timeline/timeline.jsx.map +1 -0
  606. package/dist/source/components/dataDisplay/treeView/treeView.jsx +1 -0
  607. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  608. package/dist/source/components/dataDisplay/typography/typography.jsx +18 -3
  609. package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  610. package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx +1 -0
  611. package/dist/source/components/feedBack/confirmDialog/confirmDialog.jsx.map +1 -1
  612. package/dist/source/components/feedBack/emptyState/emptyState.jsx +49 -0
  613. package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -0
  614. package/dist/source/components/feedBack/emptyState/index.js +6 -0
  615. package/dist/source/components/feedBack/emptyState/index.js.map +7 -0
  616. package/dist/source/components/feedBack/message/message.jsx +1 -0
  617. package/dist/source/components/feedBack/message/message.jsx.map +1 -1
  618. package/dist/source/components/feedBack/modal/modal.jsx +1 -0
  619. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  620. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx +53 -10
  621. package/dist/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
  622. package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +4 -2
  623. package/dist/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -1
  624. package/dist/source/components/feedBack/skeleton/skeleton.jsx +1 -0
  625. package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  626. package/dist/source/components/feedBack/snackbar/snackbar.jsx +1 -0
  627. package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  628. package/dist/source/components/feedBack/tooltip/tooltip.jsx +5 -2
  629. package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  630. package/dist/source/components/inputs/button/button.jsx +8 -3
  631. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  632. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +1 -0
  633. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  634. package/dist/source/components/inputs/checkbox/checkbox.jsx +1 -0
  635. package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  636. package/dist/source/components/inputs/datePicker/dataPickerInput.jsx +4 -3
  637. package/dist/source/components/inputs/datePicker/dataPickerInput.jsx.map +1 -1
  638. package/dist/source/components/inputs/datePicker/datePicker.jsx +5 -6
  639. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  640. package/dist/source/components/inputs/fileDrop/fileDrop.jsx +1 -0
  641. package/dist/source/components/inputs/fileDrop/fileDrop.jsx.map +1 -1
  642. package/dist/source/components/inputs/fileInput/fileInput.jsx +1 -0
  643. package/dist/source/components/inputs/fileInput/fileInput.jsx.map +1 -1
  644. package/dist/source/components/inputs/floatingButton/floatingButton.jsx +1 -0
  645. package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  646. package/dist/source/components/inputs/radioButton/radioButton.jsx +1 -0
  647. package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  648. package/dist/source/components/inputs/rating/rating.jsx +5 -3
  649. package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
  650. package/dist/source/components/inputs/selectField/selectField.jsx +9 -2
  651. package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
  652. package/dist/source/components/inputs/slider/slider.jsx +1 -0
  653. package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
  654. package/dist/source/components/inputs/textField/textField.jsx +9 -6
  655. package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
  656. package/dist/source/components/inputs/textField/textFieldAdornment.jsx +4 -3
  657. package/dist/source/components/inputs/textField/textFieldAdornment.jsx.map +1 -1
  658. package/dist/source/components/inputs/textField/textFieldWrapper.jsx +9 -6
  659. package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  660. package/dist/source/components/inputs/timePicker/timePicker.jsx +1 -0
  661. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  662. package/dist/source/components/inputs/toggle/toggle.jsx +1 -0
  663. package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
  664. package/dist/source/components/inputs/valueSlider/valueSlider.jsx +5 -3
  665. package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  666. package/dist/source/components/layout/appLayout/appLayout.jsx +4 -2
  667. package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  668. package/dist/source/components/layout/divider/divider.jsx +11 -6
  669. package/dist/source/components/layout/divider/divider.jsx.map +1 -1
  670. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +1 -0
  671. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
  672. package/dist/source/components/layout/grid/grid.jsx +1 -0
  673. package/dist/source/components/layout/grid/grid.jsx.map +1 -1
  674. package/dist/source/components/layout/page/page.jsx +1 -0
  675. package/dist/source/components/layout/page/page.jsx.map +1 -1
  676. package/dist/source/components/layout/pageHeader/pageHeader.jsx +15 -10
  677. package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  678. package/dist/source/components/layout/screenDivider/screenDivider.jsx +1 -0
  679. package/dist/source/components/layout/screenDivider/screenDivider.jsx.map +1 -1
  680. package/dist/source/components/layout/sectionHeader/index.js +6 -0
  681. package/dist/source/components/layout/sectionHeader/index.js.map +7 -0
  682. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +82 -0
  683. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -0
  684. package/dist/source/components/layout/sheet/sheet.jsx +1 -0
  685. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  686. package/dist/source/components/layout/stack/stack.jsx +4 -2
  687. package/dist/source/components/layout/stack/stack.jsx.map +1 -1
  688. package/dist/source/components/navigation/appBar/appBar.jsx +8 -5
  689. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  690. package/dist/source/components/navigation/bottomBar/bottomBar.jsx +5 -3
  691. package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  692. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +1 -0
  693. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  694. package/dist/source/components/navigation/menu/menu.jsx +1 -0
  695. package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
  696. package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx +1 -0
  697. package/dist/source/components/navigation/overflowMenu/overflowMenu.jsx.map +1 -1
  698. package/dist/source/components/navigation/pagination/pagination.jsx +1 -0
  699. package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
  700. package/dist/source/components/navigation/sidebar/sidebar.jsx +1 -0
  701. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  702. package/dist/source/components/navigation/stepper/stepper.jsx +15 -7
  703. package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
  704. package/dist/source/components/navigation/tabs/tab/tab.jsx +8 -5
  705. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  706. package/dist/source/components/navigation/tabs/tabs.jsx +85 -4
  707. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  708. package/dist/source/connects/rt/table/table.jsx +9 -1
  709. package/dist/source/connects/rt/table/table.jsx.map +1 -1
  710. package/dist/source/icons/catalog.js +78 -1
  711. package/dist/source/icons/catalog.js.map +2 -2
  712. package/dist/source/icons/svg/accountTree.js +11 -0
  713. package/dist/source/icons/svg/accountTree.js.map +7 -0
  714. package/dist/source/icons/svg/callSplit.js +11 -0
  715. package/dist/source/icons/svg/callSplit.js.map +7 -0
  716. package/dist/source/icons/svg/deviceHub.js +10 -0
  717. package/dist/source/icons/svg/deviceHub.js.map +7 -0
  718. package/dist/source/icons/svg/editNote.js +11 -0
  719. package/dist/source/icons/svg/editNote.js.map +7 -0
  720. package/dist/source/icons/svg/filterList.js +11 -0
  721. package/dist/source/icons/svg/filterList.js.map +7 -0
  722. package/dist/source/icons/svg/forkRight.js +10 -0
  723. package/dist/source/icons/svg/forkRight.js.map +7 -0
  724. package/dist/source/icons/svg/groups.js +11 -0
  725. package/dist/source/icons/svg/groups.js.map +7 -0
  726. package/dist/source/icons/svg/hub.js +10 -0
  727. package/dist/source/icons/svg/hub.js.map +7 -0
  728. package/dist/source/icons/svg/index.js +22 -0
  729. package/dist/source/icons/svg/index.js.map +2 -2
  730. package/dist/source/icons/svg/lan.js +11 -0
  731. package/dist/source/icons/svg/lan.js.map +7 -0
  732. package/dist/source/icons/svg/personOff.js +11 -0
  733. package/dist/source/icons/svg/personOff.js.map +7 -0
  734. package/dist/source/icons/svg/schema.js +11 -0
  735. package/dist/source/icons/svg/schema.js.map +7 -0
  736. package/dist/source/index.js +33 -1
  737. package/dist/source/index.js.map +2 -2
  738. package/dist/source/primitives/createCssTransition.js +10 -1
  739. package/dist/source/primitives/createCssTransition.js.map +2 -2
  740. package/package.json +79 -8
@@ -1,5 +1,6 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/divider/divider.entry.less";
2
- import { Show, mergeProps, splitProps } from "solid-js";
3
+ import { Show, children, mergeProps, splitProps } from "solid-js";
3
4
  import cn from "clsx";
4
5
  import { mergeRefs } from "../../../primitives/mergeRefs";
5
6
  const colorVar = {
@@ -33,7 +34,11 @@ function Divider(props) {
33
34
  "children",
34
35
  "ref"
35
36
  ]);
36
- const hasText = () => local.children !== void 0 && local.children !== null && local.children !== false;
37
+ const text = children(() => local.orientation === "horizontal" ? local.children : void 0);
38
+ const hasText = () => {
39
+ const resolved = text();
40
+ return resolved !== void 0 && resolved !== null && resolved !== false;
41
+ };
37
42
  const dividerStyle = () => {
38
43
  const c = colorVar[local.color];
39
44
  const t = typeof local.thickness === "number" ? `${local.thickness}px` : local.thickness;
@@ -50,14 +55,14 @@ function Divider(props) {
50
55
  role="separator"
51
56
  aria-orientation={local.orientation}
52
57
  class={cn("smwb-divider", `smwb-divider_${local.orientation}`, `smwb-divider_${local.variant}`, {
53
- "smwb-divider_with-text": hasText() && local.orientation === "horizontal",
54
- [`smwb-divider_align-${local.textAlign}`]: hasText() && local.orientation === "horizontal",
58
+ "smwb-divider_with-text": hasText(),
59
+ [`smwb-divider_align-${local.textAlign}`]: hasText(),
55
60
  "smwb-divider_flex-item": local.flexItem
56
61
  }, local.class)}
57
62
  style={dividerStyle()}
58
63
  >
59
- <Show when={hasText() && local.orientation === "horizontal"}>
60
- <span class="smwb-divider__text">{local.children}</span>
64
+ <Show when={hasText()}>
65
+ <span class="smwb-divider__text">{text()}</span>
61
66
  </Show>
62
67
  </div>;
63
68
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/divider/divider.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/divider/divider.entry.less\";\nimport { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type DividerColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface DividerProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Direction of the divider line. */\n orientation?: \"horizontal\" | \"vertical\";\n /** Inset behaviour of the line relative to its container. */\n variant?: \"fullWidth\" | \"inset\" | \"middle\";\n /** Horizontal alignment of the optional text content. */\n textAlign?: \"left\" | \"center\" | \"right\";\n /** Line color (semantic token). */\n color?: DividerColor;\n /** Line thickness (number = px, or any CSS length). */\n thickness?: number | string;\n /** Stretch to fill a flex container along the cross axis. */\n flexItem?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst colorVar: Record<DividerColor, string | undefined> = {\n default: undefined,\n primary: \"var(--smui-primaryColor)\",\n secondary: \"var(--smui-secondaryColor)\",\n error: \"var(--smui-errorColor)\",\n success: \"var(--smui-successColor)\",\n warning: \"var(--smui-warningColor)\",\n info: \"var(--smui-infoColor)\",\n};\n\nexport function Divider(props: ParentProps<DividerProps>): JSX.Element {\n const merged = mergeProps(\n {\n orientation: \"horizontal\" as const,\n variant: \"fullWidth\" as const,\n textAlign: \"center\" as const,\n color: \"default\" as DividerColor,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"orientation\",\n \"variant\",\n \"textAlign\",\n \"color\",\n \"thickness\",\n \"flexItem\",\n \"style\",\n \"children\",\n \"ref\",\n ]);\n\n const hasText = (): boolean =>\n local.children !== undefined && local.children !== null && (local.children as unknown) !== false;\n\n const dividerStyle = (): JSX.CSSProperties => {\n const c = colorVar[local.color];\n const t = typeof local.thickness === \"number\" ? `${local.thickness}px` : local.thickness;\n return {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n ...(c ? { \"border-color\": c } : {}),\n ...(t ? (local.orientation === \"vertical\" ? { \"border-left-width\": t } : { \"border-bottom-width\": t }) : {}),\n };\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"divider\"\n role=\"separator\"\n aria-orientation={local.orientation}\n class={cn(\"smwb-divider\", `smwb-divider_${local.orientation}`, `smwb-divider_${local.variant}`, {\n \"smwb-divider_with-text\": hasText() && local.orientation === \"horizontal\",\n [`smwb-divider_align-${local.textAlign}`]: hasText() && local.orientation === \"horizontal\",\n \"smwb-divider_flex-item\": local.flexItem,\n }, local.class)}\n style={dividerStyle()}\n >\n <Show when={hasText() && local.orientation === \"horizontal\"}>\n <span class=\"smwb-divider__text\">{local.children}</span>\n </Show>\n </div>\n );\n}\n\nexport default Divider;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAoBpC,MAAM,WAAqD;AAAA,EACzD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,QAAQ,OAA+C;AACrE,QAAM,SAAS;AAAA,IACb;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,UAAU,MACd,MAAM,aAAa,UAAa,MAAM,aAAa,QAAS,MAAM,aAAyB;AAE7F,QAAM,eAAe,MAAyB;AAC5C,UAAM,IAAI,SAAS,MAAM,KAAK;AAC9B,UAAM,IAAI,OAAO,MAAM,cAAc,WAAW,GAAG,MAAM,SAAS,OAAO,MAAM;AAC/E,WAAO;AAAA,MACL,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,MACpE,GAAI,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAAA,MACjC,GAAI,IAAK,MAAM,gBAAgB,aAAa,EAAE,qBAAqB,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAK,CAAC;AAAA,IAC5G;AAAA,EACF;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,kBAAkB,MAAM;AAAA,IACxB,OAAO,GAAG,gBAAgB,gBAAgB,MAAM,WAAW,IAAI,gBAAgB,MAAM,OAAO,IAAI;AAAA,MAC9F,0BAA0B,QAAQ,KAAK,MAAM,gBAAgB;AAAA,MAC7D,CAAC,sBAAsB,MAAM,SAAS,EAAE,GAAG,QAAQ,KAAK,MAAM,gBAAgB;AAAA,MAC9E,0BAA0B,MAAM;AAAA,IAClC,GAAG,MAAM,KAAK;AAAA,IACd,OAAO,aAAa;AAAA,GACrB;AAAA,MACC,CAAC,KAAK,MAAM,QAAQ,KAAK,MAAM,gBAAgB,cAAc;AAAA,QAC3D,CAAC,KAAK,MAAM,sBAAsB,MAAM,SAAS,EAAhD,KAAuD;AAAA,MAC1D,EAFC,KAEM;AAAA,IACT,EAhBC;AAkBL;AAEA,IAAO,kBAAQ;","names":[],"file":"divider.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/divider/divider.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/divider/divider.entry.less\";\nimport { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type DividerColor = \"default\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface DividerProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Direction of the divider line. */\n orientation?: \"horizontal\" | \"vertical\";\n /** Inset behaviour of the line relative to its container. */\n variant?: \"fullWidth\" | \"inset\" | \"middle\";\n /** Horizontal alignment of the optional text content. */\n textAlign?: \"left\" | \"center\" | \"right\";\n /** Line color (semantic token). */\n color?: DividerColor;\n /** Line thickness (number = px, or any CSS length). */\n thickness?: number | string;\n /** Stretch to fill a flex container along the cross axis. */\n flexItem?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst colorVar: Record<DividerColor, string | undefined> = {\n default: undefined,\n primary: \"var(--smui-primaryColor)\",\n secondary: \"var(--smui-secondaryColor)\",\n error: \"var(--smui-errorColor)\",\n success: \"var(--smui-successColor)\",\n warning: \"var(--smui-warningColor)\",\n info: \"var(--smui-infoColor)\",\n};\n\nexport function Divider(props: ParentProps<DividerProps>): JSX.Element {\n const merged = mergeProps(\n {\n orientation: \"horizontal\" as const,\n variant: \"fullWidth\" as const,\n textAlign: \"center\" as const,\n color: \"default\" as DividerColor,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"orientation\",\n \"variant\",\n \"textAlign\",\n \"color\",\n \"thickness\",\n \"flexItem\",\n \"style\",\n \"children\",\n \"ref\",\n ]);\n\n // Read the text once, and only where it is drawn (a horizontal divider):\n // markup passed as children is created anew on every read, and during\n // hydration a copy the server never rendered has no DOM node.\n const text = children(() => (local.orientation === \"horizontal\" ? local.children : undefined));\n const hasText = (): boolean => {\n const resolved = text();\n return resolved !== undefined && resolved !== null && (resolved as unknown) !== false;\n };\n\n const dividerStyle = (): JSX.CSSProperties => {\n const c = colorVar[local.color];\n const t = typeof local.thickness === \"number\" ? `${local.thickness}px` : local.thickness;\n return {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n ...(c ? { \"border-color\": c } : {}),\n ...(t ? (local.orientation === \"vertical\" ? { \"border-left-width\": t } : { \"border-bottom-width\": t }) : {}),\n };\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"divider\"\n role=\"separator\"\n aria-orientation={local.orientation}\n class={cn(\"smwb-divider\", `smwb-divider_${local.orientation}`, `smwb-divider_${local.variant}`, {\n \"smwb-divider_with-text\": hasText(),\n [`smwb-divider_align-${local.textAlign}`]: hasText(),\n \"smwb-divider_flex-item\": local.flexItem,\n }, local.class)}\n style={dividerStyle()}\n >\n <Show when={hasText()}>\n <span class=\"smwb-divider__text\">{text()}</span>\n </Show>\n </div>\n );\n}\n\nexport default Divider;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAoBpC,MAAM,WAAqD;AAAA,EACzD,SAAS;AAAA,EACT,SAAS;AAAA,EACT,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AACR;AAEO,SAAS,QAAQ,OAA+C;AACrE,QAAM,SAAS;AAAA,IACb;AAAA,MACE,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAW;AAAA,MACX,OAAO;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAKD,QAAM,OAAO,SAAS,MAAO,MAAM,gBAAgB,eAAe,MAAM,WAAW,MAAU;AAC7F,QAAM,UAAU,MAAe;AAC7B,UAAM,WAAW,KAAK;AACtB,WAAO,aAAa,UAAa,aAAa,QAAS,aAAyB;AAAA,EAClF;AAEA,QAAM,eAAe,MAAyB;AAC5C,UAAM,IAAI,SAAS,MAAM,KAAK;AAC9B,UAAM,IAAI,OAAO,MAAM,cAAc,WAAW,GAAG,MAAM,SAAS,OAAO,MAAM;AAC/E,WAAO;AAAA,MACL,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,MACpE,GAAI,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC;AAAA,MACjC,GAAI,IAAK,MAAM,gBAAgB,aAAa,EAAE,qBAAqB,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAK,CAAC;AAAA,IAC5G;AAAA,EACF;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,KAAK;AAAA,IACL,kBAAkB,MAAM;AAAA,IACxB,OAAO,GAAG,gBAAgB,gBAAgB,MAAM,WAAW,IAAI,gBAAgB,MAAM,OAAO,IAAI;AAAA,MAC9F,0BAA0B,QAAQ;AAAA,MAClC,CAAC,sBAAsB,MAAM,SAAS,EAAE,GAAG,QAAQ;AAAA,MACnD,0BAA0B,MAAM;AAAA,IAClC,GAAG,MAAM,KAAK;AAAA,IACd,OAAO,aAAa;AAAA,GACrB;AAAA,MACC,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,QACrB,CAAC,KAAK,MAAM,sBAAsB,KAAK,EAAE,EAAxC,KAA+C;AAAA,MAClD,EAFC,KAEM;AAAA,IACT,EAhBC;AAkBL;AAEA,IAAO,kBAAQ;","names":[],"file":"divider.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/floatingWindow/floatingWindow.entry.less";
2
3
  import {
3
4
  For,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/floatingWindow/floatingWindow.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/floatingWindow/floatingWindow.entry.less\";\nimport {\n type Accessor,\n For,\n type JSX,\n type ParentProps,\n Show,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface FloatingWindowPosition {\n x: number;\n y: number;\n}\n\nexport interface FloatingWindowSize {\n width: number;\n height: number;\n}\n\n/** The eight edge/corner resize directions. */\nexport type FloatingWindowResizeDir = \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"nw\" | \"se\" | \"sw\";\n\nexport interface FloatingWindowProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\" | \"title\"> {\n /** Controlled open state of the window. */\n open: boolean;\n /** Title bar content. When given, the window is labelled by it. */\n title?: JSX.Element;\n /** Extra header controls, rendered before the built-in collapse/close buttons. */\n headerActions?: JSX.Element;\n\n /** Controlled top-left position in viewport px. */\n position?: FloatingWindowPosition;\n /** Initial position when uncontrolled. */\n defaultPosition?: FloatingWindowPosition;\n /** Called on every move frame and on viewport re-clamp, with the clamped position. */\n onPositionChange?: ((position: FloatingWindowPosition) => void) | undefined;\n /** Called once when a move gesture ends — the point at which to persist. */\n onMoveEnd?: ((position: FloatingWindowPosition) => void) | undefined;\n\n /** Controlled size in px. */\n size?: FloatingWindowSize;\n /** Initial size when uncontrolled. */\n defaultSize?: FloatingWindowSize;\n /** Called on every resize frame and on viewport re-clamp, with the clamped size. */\n onResize?: ((size: FloatingWindowSize) => void) | undefined;\n /** Called once when a resize gesture ends — the point at which to persist. */\n onResizeEnd?: ((size: FloatingWindowSize) => void) | undefined;\n\n /** Minimum width in px (default 200). */\n minWidth?: number;\n /** Minimum height in px (default 120). */\n minHeight?: number;\n /** Maximum width in px (default: viewport width). */\n maxWidth?: number;\n /** Maximum height in px (default: viewport height). */\n maxHeight?: number;\n /** Px of the window that must stay inside the viewport (default 56). */\n keepVisible?: number;\n /** Step in px for keyboard moving (default 24). */\n moveStep?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n\n /** Inline stacking order. The host owns z-order across several windows. */\n zIndex?: number;\n /** Called on pointerdown anywhere in the window, so the host can raise it. */\n onActivate?: (() => void) | undefined;\n\n /** Shade the window down to its title bar. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n /** Render the built-in collapse toggle (default true). */\n collapsible?: boolean;\n\n /** Allow drag-to-move by the title bar (default true). */\n movable?: boolean;\n /** Allow drag-to-resize from the edges and corners (default true). */\n resizable?: boolean;\n /** Close on Escape while focus is inside the window (default false). */\n closeOnEsc?: boolean;\n onClose?: (() => void) | undefined;\n\n /** Accessible label for the move handle. */\n moveHandleAriaLabel?: string;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n /** Accessible label for the collapse toggle while expanded. */\n collapseAriaLabel?: string;\n /** Accessible label for the collapse toggle while collapsed. */\n expandAriaLabel?: string;\n\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface Viewport {\n width: number;\n height: number;\n}\n\n/** Sign vector per resize direction: how the pointer delta maps onto x/y/width/height. */\nconst RESIZE_DIRS: Record<FloatingWindowResizeDir, { dx: 0 | 1; dy: 0 | 1; dw: -1 | 0 | 1; dh: -1 | 0 | 1 }> = {\n n: { dx: 0, dy: 1, dw: 0, dh: -1 },\n s: { dx: 0, dy: 0, dw: 0, dh: 1 },\n e: { dx: 0, dy: 0, dw: 1, dh: 0 },\n w: { dx: 1, dy: 0, dw: -1, dh: 0 },\n ne: { dx: 0, dy: 1, dw: 1, dh: -1 },\n nw: { dx: 1, dy: 1, dw: -1, dh: -1 },\n se: { dx: 0, dy: 0, dw: 1, dh: 1 },\n sw: { dx: 1, dy: 0, dw: -1, dh: 1 },\n};\n\nconst RESIZE_ORDER: FloatingWindowResizeDir[] = [\"n\", \"s\", \"e\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nconst viewportOf = (): Viewport =>\n typeof window === \"undefined\" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight };\n\n/**\n * Free-floating, non-modal window: draggable by its title bar, resizable from every\n * edge and corner, clamped so a grabbable strip always stays on screen.\n *\n * Unlike Sheet/Modal it is deliberately NOT an overlay layer: no backdrop, no focus\n * trap, no `data-smwb-overlay-layer`. Several windows are meant to be open and usable\n * at once alongside the page behind them, so it must not trap focus, swallow clicks,\n * or steal Escape from a Modal stacked above it. Stacking order is the host's job —\n * pass `zIndex` and raise the window from `onActivate`.\n */\nexport function FloatingWindow(props: ParentProps<FloatingWindowProps>): JSX.Element {\n const merged = mergeProps(\n {\n minWidth: 200,\n minHeight: 120,\n keepVisible: 56,\n moveStep: 24,\n resizeStep: 24,\n collapsible: true,\n movable: true,\n resizable: true,\n closeOnEsc: false,\n defaultPosition: { x: 24, y: 24 },\n defaultSize: { width: 360, height: 420 },\n defaultCollapsed: false,\n moveHandleAriaLabel: \"Move window\",\n resizeHandleAriaLabel: \"Resize window\",\n closeAriaLabel: \"Close window\",\n collapseAriaLabel: \"Collapse window\",\n expandAriaLabel: \"Expand window\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"open\",\n \"title\",\n \"headerActions\",\n \"position\",\n \"defaultPosition\",\n \"onPositionChange\",\n \"onMoveEnd\",\n \"size\",\n \"defaultSize\",\n \"onResize\",\n \"onResizeEnd\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"keepVisible\",\n \"moveStep\",\n \"resizeStep\",\n \"zIndex\",\n \"onActivate\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapsible\",\n \"movable\",\n \"resizable\",\n \"closeOnEsc\",\n \"onClose\",\n \"moveHandleAriaLabel\",\n \"resizeHandleAriaLabel\",\n \"closeAriaLabel\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"class\",\n \"style\",\n \"children\",\n \"ref\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const titleId = createId(undefined, \"smwb-floating-window-title\");\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-floating-window_entered\" },\n appear: true,\n });\n\n const [position, setPosition] = createControllableState<FloatingWindowPosition>({\n value: () => local.position,\n defaultValue: local.defaultPosition,\n onChange: (next) => local.onPositionChange?.(next),\n });\n const [size, setSize] = createControllableState<FloatingWindowSize>({\n value: () => local.size,\n defaultValue: local.defaultSize,\n onChange: (next) => local.onResize?.(next),\n });\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: (next) => local.onCollapsedChange?.(next),\n });\n\n /**\n * Size first, then position against the clamped size. `y` is never negative, so the\n * title bar can never be dragged above the top edge and become ungrabbable — the gap\n * that makes an off-screen Sheet unrecoverable.\n */\n const clampRect = (rect: Rect, vp: Viewport): Rect => {\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.max(local.minWidth, Math.min(maxW, rect.width));\n const height = Math.max(local.minHeight, Math.min(maxH, rect.height));\n const keep = Math.min(local.keepVisible, width);\n const x = Math.max(keep - width, Math.min(vp.width - keep, rect.x));\n const y = Math.max(0, Math.min(Math.max(0, vp.height - keep), rect.y));\n return { x, y, width, height };\n };\n\n /**\n * Where a window is placed before anyone touches it: fully inside the viewport when\n * it fits at all. `clampRect` alone only keeps `keepVisible` px reachable, which is\n * right for a window the user parked at an edge but wrong on opening — a 760px\n * default on a 375px phone opened a quarter of a screen off to the right.\n */\n const fitRect = (rect: Rect, vp: Viewport): Rect => {\n const clamped = clampRect(rect, vp);\n return {\n ...clamped,\n x: Math.max(0, Math.min(clamped.x, vp.width - clamped.width)),\n y: Math.max(0, Math.min(clamped.y, vp.height - clamped.height)),\n };\n };\n\n // Set by the first move/resize: from then on the user's placement wins and only the\n // reachability clamp applies, so a window can still be parked half off-screen.\n const [placed, setPlaced] = createSignal(false);\n\n /** The geometry actually rendered. Clamping the CONTROLLED value (not just drag\n * frames) means a rect restored from a larger monitor lands on screen immediately. */\n const rect: Accessor<Rect> = createMemo(() => {\n const current = { x: position().x, y: position().y, width: size().width, height: size().height };\n return placed() ? clampRect(current, viewportOf()) : fitRect(current, viewportOf());\n });\n\n const commitRect = (next: Rect, gesture = true): void => {\n if (gesture) setPlaced(true);\n const clamped = clampRect(next, viewportOf());\n const pos = position();\n const dim = size();\n if (clamped.x !== pos.x || clamped.y !== pos.y) setPosition({ x: clamped.x, y: clamped.y });\n if (clamped.width !== dim.width || clamped.height !== dim.height) {\n setSize({ width: clamped.width, height: clamped.height });\n }\n };\n\n // A closed window forgets that it was moved: opening it again should land on screen\n // like the first time, whatever the viewport is now.\n createEffect(() => {\n if (!local.open) setPlaced(false);\n });\n\n // Re-clamp when the viewport shrinks, so a window parked near an edge on a large\n // screen stays reachable on a small one. Sheet has no such listener, which is why a\n // dragged sheet survives a viewport shrink oversized.\n createEffect(() => {\n if (isServer || !local.open) return;\n const onViewportResize = (): void => commitRect(rect(), false);\n window.addEventListener(\"resize\", onViewportResize);\n onCleanup(() => window.removeEventListener(\"resize\", onViewportResize));\n });\n\n // Escape only while focus is inside this window. FloatingWindow is not an overlay\n // layer, so `isTopOverlayLayer` (document order, not z-index) would be the wrong\n // arbiter with several windows open.\n createEffect(() => {\n if (isServer || !local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Escape\") return;\n if (!rootEl || !rootEl.contains(document.activeElement)) return;\n local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const activate = (): void => {\n local.onActivate?.();\n // Only when focus is elsewhere — an unconditional focus() would steal the caret\n // from an input inside the window on every raise.\n if (rootEl && !rootEl.contains(document.activeElement)) rootEl.focus({ preventScroll: true });\n };\n\n // Pointer capture keeps `pointermove` flowing to the handle even outside it, so there\n // are no document-level listeners to leak (Sheet's pattern, not screenDivider's).\n let move: { px: number; py: number; x: number; y: number } | null = null;\n\n const onMoveHandlePointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (!local.movable) return;\n // Header buttons stay clickable.\n if ((event.target as Element | null)?.closest(\"button,[data-no-drag]\")) return;\n event.preventDefault();\n const current = rect();\n move = { px: event.clientX, py: event.clientY, x: current.x, y: current.y };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onMoveHandlePointerMove = (event: PointerEvent): void => {\n if (!move) return;\n const current = rect();\n commitRect({\n ...current,\n x: move.x + event.clientX - move.px,\n y: move.y + event.clientY - move.py,\n });\n };\n\n const endMove = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (move) {\n move = null;\n const current = rect();\n local.onMoveEnd?.({ x: current.x, y: current.y });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n let resize: { dir: FloatingWindowResizeDir; px: number; py: number; rect: Rect } | null = null;\n\n const onResizePointerDown = (\n dir: FloatingWindowResizeDir,\n event: PointerEvent & { currentTarget: HTMLDivElement }\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n resize = { dir, px: event.clientX, py: event.clientY, rect: rect() };\n // Grabbing a resize grip is an interaction with the window, so raise it too. (The root\n // listener cannot be relied on here — see the `on:pointerdown` note on the root.)\n activate();\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onResizePointerMove = (event: PointerEvent): void => {\n if (!resize) return;\n const sign = RESIZE_DIRS[resize.dir];\n const dx = event.clientX - resize.px;\n const dy = event.clientY - resize.py;\n const start = resize.rect;\n // A west/north drag moves the origin AND changes the size, so width is recomputed from\n // the moved edge rather than from the delta alone — otherwise dragging past minWidth\n // would keep sliding the window instead of stopping at the minimum.\n //\n // The size must be clamped to BOTH bounds here, before the origin is derived from it.\n // Clamping only the minimum and leaving the maximum to commitRect's own clamp would\n // compute the origin from a width that then gets shrunk, so the edge the user is NOT\n // dragging would drift away under the cursor.\n const vp = viewportOf();\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.min(maxW, Math.max(local.minWidth, start.width + sign.dw * dx));\n const height = Math.min(maxH, Math.max(local.minHeight, start.height + sign.dh * dy));\n commitRect({\n x: sign.dx ? start.x + start.width - width : start.x,\n y: sign.dy ? start.y + start.height - height : start.y,\n width,\n height,\n });\n };\n\n const endResize = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (resize) {\n resize = null;\n const current = rect();\n local.onResizeEnd?.({ width: current.width, height: current.height });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n /** A keypress is a COMPLETE gesture, so it reports move/resize end as well as the\n * per-frame change — otherwise a consumer that persists only on `*End` (the documented\n * way to avoid thrashing storage during a drag) would silently never save\n * keyboard-driven geometry. */\n const endKeyboardGesture = (resized: boolean): void => {\n const current = rect();\n if (resized) local.onResizeEnd?.({ width: current.width, height: current.height });\n else local.onMoveEnd?.({ x: current.x, y: current.y });\n };\n\n /** Arrows move; Shift+Arrows resize. */\n const onMoveHandleKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n const current = rect();\n const step = event.shiftKey ? local.resizeStep : local.moveStep;\n const delta: Record<string, [number, number]> = {\n ArrowLeft: [-step, 0],\n ArrowRight: [step, 0],\n ArrowUp: [0, -step],\n ArrowDown: [0, step],\n };\n const d = delta[event.key];\n if (!d) return;\n event.preventDefault();\n if (event.shiftKey) {\n commitRect({ ...current, width: current.width + d[0], height: current.height + d[1] });\n } else {\n commitRect({ ...current, x: current.x + d[0], y: current.y + d[1] });\n }\n endKeyboardGesture(event.shiftKey);\n };\n\n const onResizeHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const current = rect();\n const vp = viewportOf();\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n const dir = event.key === \"ArrowRight\" ? 1 : -1;\n commitRect({ ...current, width: current.width + dir * local.resizeStep });\n } else if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const dir = event.key === \"ArrowDown\" ? 1 : -1;\n commitRect({ ...current, height: current.height + dir * local.resizeStep });\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commitRect({ ...current, width: local.minWidth, height: local.minHeight });\n } else if (event.key === \"End\") {\n event.preventDefault();\n commitRect({ ...current, width: local.maxWidth ?? vp.width, height: local.maxHeight ?? vp.height });\n } else {\n return;\n }\n endKeyboardGesture(true);\n };\n\n const toggleCollapsed = (): void => setCollapsed((prev) => !prev);\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid=\"floating-window\"\n role=\"dialog\"\n tabindex={-1}\n aria-labelledby={local.title ? titleId : undefined}\n class={cn(\"smwb-floating-window\", local.class, transition.classes(), {\n \"smwb-collapsed\": collapsed(),\n })}\n style={{\n left: `${rect().x}px`,\n top: `${rect().y}px`,\n width: `${rect().width}px`,\n ...(collapsed() ? {} : { height: `${rect().height}px` }),\n ...(local.zIndex === undefined ? {} : { \"z-index\": local.zIndex }),\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n }}\n // `on:pointerdown` (native listener), NOT `onPointerDown` (delegated). Solid's\n // delegated dispatcher walks `_$host`, the LOGICAL owner chain, and Portal sets\n // `_$host` to its marker's parent — so an event raised inside content a consumer\n // portals into this window never reaches this handler, and clicking such a panel\n // would silently fail to raise the window. A native listener follows the real DOM\n // tree, where the portaled container genuinely is a descendant.\n on:pointerdown={activate}\n >\n <div\n class=\"smwb-floating-window__header\"\n data-testid=\"floating-window-header\"\n onPointerDown={onMoveHandlePointerDown}\n onPointerMove={onMoveHandlePointerMove}\n onPointerUp={endMove}\n onPointerCancel={endMove}\n >\n {/* The move affordance is the grip, not the header: the header also hosts the\n collapse/close buttons and any consumer `headerActions`, and nesting those\n inside a role=\"button\" is an a11y violation. Pointer drag still works\n anywhere on the header; only the keyboard affordance lives here. */}\n <span\n class=\"smwb-floating-window__grip\"\n data-testid=\"floating-window-move\"\n role=\"button\"\n tabindex={0}\n aria-label={local.moveHandleAriaLabel}\n onKeyDown={onMoveHandleKeyDown}\n >\n <Icon name=\"drag_indicator\" />\n </span>\n <Show when={local.title}>\n <span class=\"smwb-floating-window__title\" id={titleId}>\n {local.title}\n </span>\n </Show>\n <div class=\"smwb-floating-window__actions\" data-no-drag>\n {local.headerActions}\n <Show when={local.collapsible}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-collapse\"\n aria-label={collapsed() ? local.expandAriaLabel : local.collapseAriaLabel}\n aria-expanded={!collapsed()}\n onClick={toggleCollapsed}\n >\n <Icon name={collapsed() ? \"open_in_full\" : \"close_fullscreen\"} />\n </button>\n </Show>\n <Show when={local.onClose}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-close\"\n aria-label={local.closeAriaLabel}\n onClick={() => local.onClose?.()}\n >\n <Icon name=\"close\" />\n </button>\n </Show>\n </div>\n </div>\n\n <Show when={!collapsed()}>\n <div class=\"smwb-floating-window__body\" data-testid=\"floating-window-body\">\n {local.children}\n </div>\n </Show>\n\n <Show when={local.resizable && !collapsed()}>\n <For each={RESIZE_ORDER}>\n {(dir) => (\n <div\n class={cn(\"smwb-floating-window__resize\", `smwb-floating-window__resize_${dir}`)}\n data-testid={`floating-window-resize-${dir}`}\n // Only the south-east grip is reachable by keyboard: eight tab stops per\n // window would make Tab unusable once a few windows are open.\n {...(dir === \"se\"\n ? {\n role: \"separator\",\n tabindex: 0,\n \"aria-label\": local.resizeHandleAriaLabel,\n \"aria-valuemin\": local.minWidth,\n \"aria-valuemax\": Math.round(local.maxWidth ?? viewportOf().width),\n \"aria-valuenow\": Math.round(rect().width),\n onKeyDown: onResizeHandleKeyDown,\n }\n : { \"aria-hidden\": true, tabindex: -1 })}\n onPointerDown={(event) => onResizePointerDown(dir, event)}\n onPointerMove={onResizePointerMove}\n onPointerUp={endResize}\n onPointerCancel={endResize}\n />\n )}\n </For>\n </Show>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport default FloatingWindow;\n"],"mappings":"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","names":["rect"],"file":"floatingWindow.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/floatingWindow/floatingWindow.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/floatingWindow/floatingWindow.entry.less\";\nimport {\n type Accessor,\n For,\n type JSX,\n type ParentProps,\n Show,\n createEffect,\n createMemo,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface FloatingWindowPosition {\n x: number;\n y: number;\n}\n\nexport interface FloatingWindowSize {\n width: number;\n height: number;\n}\n\n/** The eight edge/corner resize directions. */\nexport type FloatingWindowResizeDir = \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"nw\" | \"se\" | \"sw\";\n\nexport interface FloatingWindowProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\" | \"title\"> {\n /** Controlled open state of the window. */\n open: boolean;\n /** Title bar content. When given, the window is labelled by it. */\n title?: JSX.Element;\n /** Extra header controls, rendered before the built-in collapse/close buttons. */\n headerActions?: JSX.Element;\n\n /** Controlled top-left position in viewport px. */\n position?: FloatingWindowPosition;\n /** Initial position when uncontrolled. */\n defaultPosition?: FloatingWindowPosition;\n /** Called on every move frame and on viewport re-clamp, with the clamped position. */\n onPositionChange?: ((position: FloatingWindowPosition) => void) | undefined;\n /** Called once when a move gesture ends — the point at which to persist. */\n onMoveEnd?: ((position: FloatingWindowPosition) => void) | undefined;\n\n /** Controlled size in px. */\n size?: FloatingWindowSize;\n /** Initial size when uncontrolled. */\n defaultSize?: FloatingWindowSize;\n /** Called on every resize frame and on viewport re-clamp, with the clamped size. */\n onResize?: ((size: FloatingWindowSize) => void) | undefined;\n /** Called once when a resize gesture ends — the point at which to persist. */\n onResizeEnd?: ((size: FloatingWindowSize) => void) | undefined;\n\n /** Minimum width in px (default 200). */\n minWidth?: number;\n /** Minimum height in px (default 120). */\n minHeight?: number;\n /** Maximum width in px (default: viewport width). */\n maxWidth?: number;\n /** Maximum height in px (default: viewport height). */\n maxHeight?: number;\n /** Px of the window that must stay inside the viewport (default 56). */\n keepVisible?: number;\n /** Step in px for keyboard moving (default 24). */\n moveStep?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n\n /** Inline stacking order. The host owns z-order across several windows. */\n zIndex?: number;\n /** Called on pointerdown anywhere in the window, so the host can raise it. */\n onActivate?: (() => void) | undefined;\n\n /** Shade the window down to its title bar. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n /** Render the built-in collapse toggle (default true). */\n collapsible?: boolean;\n\n /** Allow drag-to-move by the title bar (default true). */\n movable?: boolean;\n /** Allow drag-to-resize from the edges and corners (default true). */\n resizable?: boolean;\n /** Close on Escape while focus is inside the window (default false). */\n closeOnEsc?: boolean;\n onClose?: (() => void) | undefined;\n\n /** Accessible label for the move handle. */\n moveHandleAriaLabel?: string;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n /** Accessible label for the collapse toggle while expanded. */\n collapseAriaLabel?: string;\n /** Accessible label for the collapse toggle while collapsed. */\n expandAriaLabel?: string;\n\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface Viewport {\n width: number;\n height: number;\n}\n\n/** Sign vector per resize direction: how the pointer delta maps onto x/y/width/height. */\nconst RESIZE_DIRS: Record<FloatingWindowResizeDir, { dx: 0 | 1; dy: 0 | 1; dw: -1 | 0 | 1; dh: -1 | 0 | 1 }> = {\n n: { dx: 0, dy: 1, dw: 0, dh: -1 },\n s: { dx: 0, dy: 0, dw: 0, dh: 1 },\n e: { dx: 0, dy: 0, dw: 1, dh: 0 },\n w: { dx: 1, dy: 0, dw: -1, dh: 0 },\n ne: { dx: 0, dy: 1, dw: 1, dh: -1 },\n nw: { dx: 1, dy: 1, dw: -1, dh: -1 },\n se: { dx: 0, dy: 0, dw: 1, dh: 1 },\n sw: { dx: 1, dy: 0, dw: -1, dh: 1 },\n};\n\nconst RESIZE_ORDER: FloatingWindowResizeDir[] = [\"n\", \"s\", \"e\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nconst viewportOf = (): Viewport =>\n typeof window === \"undefined\" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight };\n\n/**\n * Free-floating, non-modal window: draggable by its title bar, resizable from every\n * edge and corner, clamped so a grabbable strip always stays on screen.\n *\n * Unlike Sheet/Modal it is deliberately NOT an overlay layer: no backdrop, no focus\n * trap, no `data-smwb-overlay-layer`. Several windows are meant to be open and usable\n * at once alongside the page behind them, so it must not trap focus, swallow clicks,\n * or steal Escape from a Modal stacked above it. Stacking order is the host's job —\n * pass `zIndex` and raise the window from `onActivate`.\n */\nexport function FloatingWindow(props: ParentProps<FloatingWindowProps>): JSX.Element {\n const merged = mergeProps(\n {\n minWidth: 200,\n minHeight: 120,\n keepVisible: 56,\n moveStep: 24,\n resizeStep: 24,\n collapsible: true,\n movable: true,\n resizable: true,\n closeOnEsc: false,\n defaultPosition: { x: 24, y: 24 },\n defaultSize: { width: 360, height: 420 },\n defaultCollapsed: false,\n moveHandleAriaLabel: \"Move window\",\n resizeHandleAriaLabel: \"Resize window\",\n closeAriaLabel: \"Close window\",\n collapseAriaLabel: \"Collapse window\",\n expandAriaLabel: \"Expand window\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"open\",\n \"title\",\n \"headerActions\",\n \"position\",\n \"defaultPosition\",\n \"onPositionChange\",\n \"onMoveEnd\",\n \"size\",\n \"defaultSize\",\n \"onResize\",\n \"onResizeEnd\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\",\n \"keepVisible\",\n \"moveStep\",\n \"resizeStep\",\n \"zIndex\",\n \"onActivate\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapsible\",\n \"movable\",\n \"resizable\",\n \"closeOnEsc\",\n \"onClose\",\n \"moveHandleAriaLabel\",\n \"resizeHandleAriaLabel\",\n \"closeAriaLabel\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"class\",\n \"style\",\n \"children\",\n \"ref\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const titleId = createId(undefined, \"smwb-floating-window-title\");\n\n const transition = createCssTransition({\n in: () => local.open,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-floating-window_entered\" },\n appear: true,\n });\n\n const [position, setPosition] = createControllableState<FloatingWindowPosition>({\n value: () => local.position,\n defaultValue: local.defaultPosition,\n onChange: (next) => local.onPositionChange?.(next),\n });\n const [size, setSize] = createControllableState<FloatingWindowSize>({\n value: () => local.size,\n defaultValue: local.defaultSize,\n onChange: (next) => local.onResize?.(next),\n });\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: (next) => local.onCollapsedChange?.(next),\n });\n\n /**\n * Size first, then position against the clamped size. `y` is never negative, so the\n * title bar can never be dragged above the top edge and become ungrabbable — the gap\n * that makes an off-screen Sheet unrecoverable.\n */\n const clampRect = (rect: Rect, vp: Viewport): Rect => {\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.max(local.minWidth, Math.min(maxW, rect.width));\n const height = Math.max(local.minHeight, Math.min(maxH, rect.height));\n const keep = Math.min(local.keepVisible, width);\n const x = Math.max(keep - width, Math.min(vp.width - keep, rect.x));\n const y = Math.max(0, Math.min(Math.max(0, vp.height - keep), rect.y));\n return { x, y, width, height };\n };\n\n /**\n * Where a window is placed before anyone touches it: fully inside the viewport when\n * it fits at all. `clampRect` alone only keeps `keepVisible` px reachable, which is\n * right for a window the user parked at an edge but wrong on opening — a 760px\n * default on a 375px phone opened a quarter of a screen off to the right.\n */\n const fitRect = (rect: Rect, vp: Viewport): Rect => {\n const clamped = clampRect(rect, vp);\n return {\n ...clamped,\n x: Math.max(0, Math.min(clamped.x, vp.width - clamped.width)),\n y: Math.max(0, Math.min(clamped.y, vp.height - clamped.height)),\n };\n };\n\n // Set by the first move/resize: from then on the user's placement wins and only the\n // reachability clamp applies, so a window can still be parked half off-screen.\n const [placed, setPlaced] = createSignal(false);\n\n /** The geometry actually rendered. Clamping the CONTROLLED value (not just drag\n * frames) means a rect restored from a larger monitor lands on screen immediately. */\n const rect: Accessor<Rect> = createMemo(() => {\n const current = { x: position().x, y: position().y, width: size().width, height: size().height };\n return placed() ? clampRect(current, viewportOf()) : fitRect(current, viewportOf());\n });\n\n const commitRect = (next: Rect, gesture = true): void => {\n if (gesture) setPlaced(true);\n const clamped = clampRect(next, viewportOf());\n const pos = position();\n const dim = size();\n if (clamped.x !== pos.x || clamped.y !== pos.y) setPosition({ x: clamped.x, y: clamped.y });\n if (clamped.width !== dim.width || clamped.height !== dim.height) {\n setSize({ width: clamped.width, height: clamped.height });\n }\n };\n\n // A closed window forgets that it was moved: opening it again should land on screen\n // like the first time, whatever the viewport is now.\n createEffect(() => {\n if (!local.open) setPlaced(false);\n });\n\n // Re-clamp when the viewport shrinks, so a window parked near an edge on a large\n // screen stays reachable on a small one. Sheet has no such listener, which is why a\n // dragged sheet survives a viewport shrink oversized.\n createEffect(() => {\n if (isServer || !local.open) return;\n const onViewportResize = (): void => commitRect(rect(), false);\n window.addEventListener(\"resize\", onViewportResize);\n onCleanup(() => window.removeEventListener(\"resize\", onViewportResize));\n });\n\n // Escape only while focus is inside this window. FloatingWindow is not an overlay\n // layer, so `isTopOverlayLayer` (document order, not z-index) would be the wrong\n // arbiter with several windows open.\n createEffect(() => {\n if (isServer || !local.open || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Escape\") return;\n if (!rootEl || !rootEl.contains(document.activeElement)) return;\n local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const activate = (): void => {\n local.onActivate?.();\n // Only when focus is elsewhere — an unconditional focus() would steal the caret\n // from an input inside the window on every raise.\n if (rootEl && !rootEl.contains(document.activeElement)) rootEl.focus({ preventScroll: true });\n };\n\n // Pointer capture keeps `pointermove` flowing to the handle even outside it, so there\n // are no document-level listeners to leak (Sheet's pattern, not screenDivider's).\n let move: { px: number; py: number; x: number; y: number } | null = null;\n\n const onMoveHandlePointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (!local.movable) return;\n // Header buttons stay clickable.\n if ((event.target as Element | null)?.closest(\"button,[data-no-drag]\")) return;\n event.preventDefault();\n const current = rect();\n move = { px: event.clientX, py: event.clientY, x: current.x, y: current.y };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onMoveHandlePointerMove = (event: PointerEvent): void => {\n if (!move) return;\n const current = rect();\n commitRect({\n ...current,\n x: move.x + event.clientX - move.px,\n y: move.y + event.clientY - move.py,\n });\n };\n\n const endMove = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (move) {\n move = null;\n const current = rect();\n local.onMoveEnd?.({ x: current.x, y: current.y });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n let resize: { dir: FloatingWindowResizeDir; px: number; py: number; rect: Rect } | null = null;\n\n const onResizePointerDown = (\n dir: FloatingWindowResizeDir,\n event: PointerEvent & { currentTarget: HTMLDivElement }\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n resize = { dir, px: event.clientX, py: event.clientY, rect: rect() };\n // Grabbing a resize grip is an interaction with the window, so raise it too. (The root\n // listener cannot be relied on here — see the `on:pointerdown` note on the root.)\n activate();\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onResizePointerMove = (event: PointerEvent): void => {\n if (!resize) return;\n const sign = RESIZE_DIRS[resize.dir];\n const dx = event.clientX - resize.px;\n const dy = event.clientY - resize.py;\n const start = resize.rect;\n // A west/north drag moves the origin AND changes the size, so width is recomputed from\n // the moved edge rather than from the delta alone — otherwise dragging past minWidth\n // would keep sliding the window instead of stopping at the minimum.\n //\n // The size must be clamped to BOTH bounds here, before the origin is derived from it.\n // Clamping only the minimum and leaving the maximum to commitRect's own clamp would\n // compute the origin from a width that then gets shrunk, so the edge the user is NOT\n // dragging would drift away under the cursor.\n const vp = viewportOf();\n const maxW = local.maxWidth ?? vp.width;\n const maxH = local.maxHeight ?? vp.height;\n const width = Math.min(maxW, Math.max(local.minWidth, start.width + sign.dw * dx));\n const height = Math.min(maxH, Math.max(local.minHeight, start.height + sign.dh * dy));\n commitRect({\n x: sign.dx ? start.x + start.width - width : start.x,\n y: sign.dy ? start.y + start.height - height : start.y,\n width,\n height,\n });\n };\n\n const endResize = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n if (resize) {\n resize = null;\n const current = rect();\n local.onResizeEnd?.({ width: current.width, height: current.height });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n /** A keypress is a COMPLETE gesture, so it reports move/resize end as well as the\n * per-frame change — otherwise a consumer that persists only on `*End` (the documented\n * way to avoid thrashing storage during a drag) would silently never save\n * keyboard-driven geometry. */\n const endKeyboardGesture = (resized: boolean): void => {\n const current = rect();\n if (resized) local.onResizeEnd?.({ width: current.width, height: current.height });\n else local.onMoveEnd?.({ x: current.x, y: current.y });\n };\n\n /** Arrows move; Shift+Arrows resize. */\n const onMoveHandleKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n const current = rect();\n const step = event.shiftKey ? local.resizeStep : local.moveStep;\n const delta: Record<string, [number, number]> = {\n ArrowLeft: [-step, 0],\n ArrowRight: [step, 0],\n ArrowUp: [0, -step],\n ArrowDown: [0, step],\n };\n const d = delta[event.key];\n if (!d) return;\n event.preventDefault();\n if (event.shiftKey) {\n commitRect({ ...current, width: current.width + d[0], height: current.height + d[1] });\n } else {\n commitRect({ ...current, x: current.x + d[0], y: current.y + d[1] });\n }\n endKeyboardGesture(event.shiftKey);\n };\n\n const onResizeHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const current = rect();\n const vp = viewportOf();\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n const dir = event.key === \"ArrowRight\" ? 1 : -1;\n commitRect({ ...current, width: current.width + dir * local.resizeStep });\n } else if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const dir = event.key === \"ArrowDown\" ? 1 : -1;\n commitRect({ ...current, height: current.height + dir * local.resizeStep });\n } else if (event.key === \"Home\") {\n event.preventDefault();\n commitRect({ ...current, width: local.minWidth, height: local.minHeight });\n } else if (event.key === \"End\") {\n event.preventDefault();\n commitRect({ ...current, width: local.maxWidth ?? vp.width, height: local.maxHeight ?? vp.height });\n } else {\n return;\n }\n endKeyboardGesture(true);\n };\n\n const toggleCollapsed = (): void => setCollapsed((prev) => !prev);\n\n return (\n <Show when={transition.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid=\"floating-window\"\n role=\"dialog\"\n tabindex={-1}\n aria-labelledby={local.title ? titleId : undefined}\n class={cn(\"smwb-floating-window\", local.class, transition.classes(), {\n \"smwb-collapsed\": collapsed(),\n })}\n style={{\n left: `${rect().x}px`,\n top: `${rect().y}px`,\n width: `${rect().width}px`,\n ...(collapsed() ? {} : { height: `${rect().height}px` }),\n ...(local.zIndex === undefined ? {} : { \"z-index\": local.zIndex }),\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n }}\n // `on:pointerdown` (native listener), NOT `onPointerDown` (delegated). Solid's\n // delegated dispatcher walks `_$host`, the LOGICAL owner chain, and Portal sets\n // `_$host` to its marker's parent — so an event raised inside content a consumer\n // portals into this window never reaches this handler, and clicking such a panel\n // would silently fail to raise the window. A native listener follows the real DOM\n // tree, where the portaled container genuinely is a descendant.\n on:pointerdown={activate}\n >\n <div\n class=\"smwb-floating-window__header\"\n data-testid=\"floating-window-header\"\n onPointerDown={onMoveHandlePointerDown}\n onPointerMove={onMoveHandlePointerMove}\n onPointerUp={endMove}\n onPointerCancel={endMove}\n >\n {/* The move affordance is the grip, not the header: the header also hosts the\n collapse/close buttons and any consumer `headerActions`, and nesting those\n inside a role=\"button\" is an a11y violation. Pointer drag still works\n anywhere on the header; only the keyboard affordance lives here. */}\n <span\n class=\"smwb-floating-window__grip\"\n data-testid=\"floating-window-move\"\n role=\"button\"\n tabindex={0}\n aria-label={local.moveHandleAriaLabel}\n onKeyDown={onMoveHandleKeyDown}\n >\n <Icon name=\"drag_indicator\" />\n </span>\n <Show when={local.title}>\n <span class=\"smwb-floating-window__title\" id={titleId}>\n {local.title}\n </span>\n </Show>\n <div class=\"smwb-floating-window__actions\" data-no-drag>\n {local.headerActions}\n <Show when={local.collapsible}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-collapse\"\n aria-label={collapsed() ? local.expandAriaLabel : local.collapseAriaLabel}\n aria-expanded={!collapsed()}\n onClick={toggleCollapsed}\n >\n <Icon name={collapsed() ? \"open_in_full\" : \"close_fullscreen\"} />\n </button>\n </Show>\n <Show when={local.onClose}>\n <button\n type=\"button\"\n class=\"smwb-floating-window__action\"\n data-testid=\"floating-window-close\"\n aria-label={local.closeAriaLabel}\n onClick={() => local.onClose?.()}\n >\n <Icon name=\"close\" />\n </button>\n </Show>\n </div>\n </div>\n\n <Show when={!collapsed()}>\n <div class=\"smwb-floating-window__body\" data-testid=\"floating-window-body\">\n {local.children}\n </div>\n </Show>\n\n <Show when={local.resizable && !collapsed()}>\n <For each={RESIZE_ORDER}>\n {(dir) => (\n <div\n class={cn(\"smwb-floating-window__resize\", `smwb-floating-window__resize_${dir}`)}\n data-testid={`floating-window-resize-${dir}`}\n // Only the south-east grip is reachable by keyboard: eight tab stops per\n // window would make Tab unusable once a few windows are open.\n {...(dir === \"se\"\n ? {\n role: \"separator\",\n tabindex: 0,\n \"aria-label\": local.resizeHandleAriaLabel,\n \"aria-valuemin\": local.minWidth,\n \"aria-valuemax\": Math.round(local.maxWidth ?? viewportOf().width),\n \"aria-valuenow\": Math.round(rect().width),\n onKeyDown: onResizeHandleKeyDown,\n }\n : { \"aria-hidden\": true, tabindex: -1 })}\n onPointerDown={(event) => onResizePointerDown(dir, event)}\n onPointerMove={onResizePointerMove}\n onPointerUp={endResize}\n onPointerCancel={endResize}\n />\n )}\n </For>\n </Show>\n </div>\n </Portal>\n </Show>\n );\n}\n\nexport default FloatingWindow;\n"],"mappings":"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","names":["rect"],"file":"floatingWindow.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/grid/grid.entry.less";
2
3
  import { splitProps } from "solid-js";
3
4
  import cn from "clsx";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/grid/grid.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/grid/grid.entry.less\";\nimport { type JSX, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\ntype DivProps = JSX.HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> };\n\nexport function Grid(props: DivProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"ref\"]);\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid\" class={cn(\"smwb-grid\", local.class)} />;\n}\n\nexport type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n/** Column width per breakpoint: 1–12 grid units, `\"auto\"` (fit content) or `true` (fill remaining). */\nexport type BreakpointType = ColumnSpan | \"auto\" | true;\n/** Column offset (empty leading columns) per breakpoint: 0–11. */\nexport type OffsetType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ResponsiveBool = boolean | Partial<Record<Breakpoint, boolean>>;\n\nexport const wrapOptions = [\"wrap\", \"nowrap\", \"wrap-reverse\"] as const;\nexport const justifyContentOptions = [\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\nexport const alignItemsOptions = [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"] as const;\nexport const directionOptions = [\"row\", \"row-reverse\", \"column\", \"column-reverse\"] as const;\n\nexport interface RowProps extends JSX.HTMLAttributes<HTMLDivElement> {\n wrap?: (typeof wrapOptions)[number];\n justifyContent?: (typeof justifyContentOptions)[number];\n alignItems?: (typeof alignItemsOptions)[number];\n direction?: (typeof directionOptions)[number];\n spacing?: number;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Row(props: RowProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"justifyContent\",\n \"alignItems\",\n \"direction\",\n \"wrap\",\n \"spacing\",\n \"ref\",\n ]);\n\n const classes = (): string => {\n const isJustifyContent =\n local.justifyContent && justifyContentOptions.includes(local.justifyContent) && local.justifyContent !== \"flex-start\";\n const isAlignItems = local.alignItems && alignItemsOptions.includes(local.alignItems) && local.alignItems !== \"flex-start\";\n const isDirection = local.direction && directionOptions.includes(local.direction) && local.direction !== \"row\";\n const isFlexWrap = local.wrap && wrapOptions.includes(local.wrap) && local.wrap !== \"wrap\";\n return cn(\"smwb-grid__row\", local.class, {\n [`smwb-grid__row--spacing-${local.spacing}`]: local.spacing,\n [`smwb-grid__row--justifyContent-${local.justifyContent}`]: isJustifyContent,\n [`smwb-grid__row--alignItems-${local.alignItems}`]: isAlignItems,\n [`smwb-grid__row--direction-${local.direction}`]: isDirection,\n [`smwb-grid__row--${local.wrap}`]: isFlexWrap,\n });\n };\n\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid-row\" class={classes()} />;\n}\n\nexport interface ColumnProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"hidden\"> {\n xs?: BreakpointType;\n sm?: BreakpointType;\n md?: BreakpointType;\n lg?: BreakpointType;\n xl?: BreakpointType;\n xsOffset?: OffsetType;\n smOffset?: OffsetType;\n mdOffset?: OffsetType;\n lgOffset?: OffsetType;\n xlOffset?: OffsetType;\n /** Hide column: boolean (always) or per breakpoint `{ xs:true, md:false }`. */\n hidden?: ResponsiveBool;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst hiddenClasses = (hidden?: ResponsiveBool): Record<string, boolean> => {\n if (hidden === undefined) {\n return {};\n }\n if (typeof hidden === \"boolean\") {\n return { \"smwb-grid__column--hidden\": hidden };\n }\n return (Object.keys(hidden) as Breakpoint[]).reduce<Record<string, boolean>>((acc, bp) => {\n acc[`smwb-grid__column--hidden-${bp}`] = hidden[bp] === true;\n acc[`smwb-grid__column--visible-${bp}`] = hidden[bp] === false;\n return acc;\n }, {});\n};\n\nexport function Column(props: ColumnProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"xsOffset\",\n \"smOffset\",\n \"mdOffset\",\n \"lgOffset\",\n \"xlOffset\",\n \"hidden\",\n \"ref\",\n ]);\n\n const classes = (): string =>\n cn(\"smwb-grid__column\", local.class, {\n [`smwb-grid__column--xs-${local.xs}`]: local.xs,\n [`smwb-grid__column--sm-${local.sm}`]: local.sm,\n [`smwb-grid__column--md-${local.md}`]: local.md,\n [`smwb-grid__column--lg-${local.lg}`]: local.lg,\n [`smwb-grid__column--xl-${local.xl}`]: local.xl,\n [`smwb-grid__column--xs-offset-${local.xsOffset}`]: local.xsOffset,\n [`smwb-grid__column--sm-offset-${local.smOffset}`]: local.smOffset,\n [`smwb-grid__column--md-offset-${local.mdOffset}`]: local.mdOffset,\n [`smwb-grid__column--lg-offset-${local.lgOffset}`]: local.lgOffset,\n [`smwb-grid__column--xl-offset-${local.xlOffset}`]: local.xlOffset,\n ...hiddenClasses(local.hidden),\n });\n\n return <div {...rest} ref={mergeRefs(local.ref)} class={classes()} data-testid=\"grid-col\" />;\n}\n\nexport type ContainerMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | false;\nexport interface ContainerProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Max-width breakpoint cap; `false` = fluid full width. */\n maxWidth?: ContainerMaxWidth;\n /** Remove horizontal gutters. */\n disableGutters?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Container(props: ContainerProps): JSX.Element {\n const merged = props;\n const [local, rest] = splitProps(merged, [\"class\", \"maxWidth\", \"disableGutters\", \"ref\"]);\n const maxWidth = (): ContainerMaxWidth => local.maxWidth ?? \"lg\";\n const classes = (): string =>\n cn(\n \"smwb-container\",\n {\n [`smwb-container--${maxWidth()}`]: maxWidth() !== false,\n \"smwb-container--gutterless\": local.disableGutters,\n },\n local.class\n );\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid-container\" class={classes()} />;\n}\n"],"mappings":"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","names":[],"file":"grid.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/grid/grid.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/grid/grid.entry.less\";\nimport { type JSX, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\ntype DivProps = JSX.HTMLAttributes<HTMLDivElement> & { ref?: Ref<HTMLDivElement> };\n\nexport function Grid(props: DivProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"class\", \"ref\"]);\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid\" class={cn(\"smwb-grid\", local.class)} />;\n}\n\nexport type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n/** Column width per breakpoint: 1–12 grid units, `\"auto\"` (fit content) or `true` (fill remaining). */\nexport type BreakpointType = ColumnSpan | \"auto\" | true;\n/** Column offset (empty leading columns) per breakpoint: 0–11. */\nexport type OffsetType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ResponsiveBool = boolean | Partial<Record<Breakpoint, boolean>>;\n\nexport const wrapOptions = [\"wrap\", \"nowrap\", \"wrap-reverse\"] as const;\nexport const justifyContentOptions = [\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\nexport const alignItemsOptions = [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"] as const;\nexport const directionOptions = [\"row\", \"row-reverse\", \"column\", \"column-reverse\"] as const;\n\nexport interface RowProps extends JSX.HTMLAttributes<HTMLDivElement> {\n wrap?: (typeof wrapOptions)[number];\n justifyContent?: (typeof justifyContentOptions)[number];\n alignItems?: (typeof alignItemsOptions)[number];\n direction?: (typeof directionOptions)[number];\n spacing?: number;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Row(props: RowProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"justifyContent\",\n \"alignItems\",\n \"direction\",\n \"wrap\",\n \"spacing\",\n \"ref\",\n ]);\n\n const classes = (): string => {\n const isJustifyContent =\n local.justifyContent && justifyContentOptions.includes(local.justifyContent) && local.justifyContent !== \"flex-start\";\n const isAlignItems = local.alignItems && alignItemsOptions.includes(local.alignItems) && local.alignItems !== \"flex-start\";\n const isDirection = local.direction && directionOptions.includes(local.direction) && local.direction !== \"row\";\n const isFlexWrap = local.wrap && wrapOptions.includes(local.wrap) && local.wrap !== \"wrap\";\n return cn(\"smwb-grid__row\", local.class, {\n [`smwb-grid__row--spacing-${local.spacing}`]: local.spacing,\n [`smwb-grid__row--justifyContent-${local.justifyContent}`]: isJustifyContent,\n [`smwb-grid__row--alignItems-${local.alignItems}`]: isAlignItems,\n [`smwb-grid__row--direction-${local.direction}`]: isDirection,\n [`smwb-grid__row--${local.wrap}`]: isFlexWrap,\n });\n };\n\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid-row\" class={classes()} />;\n}\n\nexport interface ColumnProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"hidden\"> {\n xs?: BreakpointType;\n sm?: BreakpointType;\n md?: BreakpointType;\n lg?: BreakpointType;\n xl?: BreakpointType;\n xsOffset?: OffsetType;\n smOffset?: OffsetType;\n mdOffset?: OffsetType;\n lgOffset?: OffsetType;\n xlOffset?: OffsetType;\n /** Hide column: boolean (always) or per breakpoint `{ xs:true, md:false }`. */\n hidden?: ResponsiveBool;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst hiddenClasses = (hidden?: ResponsiveBool): Record<string, boolean> => {\n if (hidden === undefined) {\n return {};\n }\n if (typeof hidden === \"boolean\") {\n return { \"smwb-grid__column--hidden\": hidden };\n }\n return (Object.keys(hidden) as Breakpoint[]).reduce<Record<string, boolean>>((acc, bp) => {\n acc[`smwb-grid__column--hidden-${bp}`] = hidden[bp] === true;\n acc[`smwb-grid__column--visible-${bp}`] = hidden[bp] === false;\n return acc;\n }, {});\n};\n\nexport function Column(props: ColumnProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"class\",\n \"xs\",\n \"sm\",\n \"md\",\n \"lg\",\n \"xl\",\n \"xsOffset\",\n \"smOffset\",\n \"mdOffset\",\n \"lgOffset\",\n \"xlOffset\",\n \"hidden\",\n \"ref\",\n ]);\n\n const classes = (): string =>\n cn(\"smwb-grid__column\", local.class, {\n [`smwb-grid__column--xs-${local.xs}`]: local.xs,\n [`smwb-grid__column--sm-${local.sm}`]: local.sm,\n [`smwb-grid__column--md-${local.md}`]: local.md,\n [`smwb-grid__column--lg-${local.lg}`]: local.lg,\n [`smwb-grid__column--xl-${local.xl}`]: local.xl,\n [`smwb-grid__column--xs-offset-${local.xsOffset}`]: local.xsOffset,\n [`smwb-grid__column--sm-offset-${local.smOffset}`]: local.smOffset,\n [`smwb-grid__column--md-offset-${local.mdOffset}`]: local.mdOffset,\n [`smwb-grid__column--lg-offset-${local.lgOffset}`]: local.lgOffset,\n [`smwb-grid__column--xl-offset-${local.xlOffset}`]: local.xlOffset,\n ...hiddenClasses(local.hidden),\n });\n\n return <div {...rest} ref={mergeRefs(local.ref)} class={classes()} data-testid=\"grid-col\" />;\n}\n\nexport type ContainerMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | false;\nexport interface ContainerProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /** Max-width breakpoint cap; `false` = fluid full width. */\n maxWidth?: ContainerMaxWidth;\n /** Remove horizontal gutters. */\n disableGutters?: boolean;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Container(props: ContainerProps): JSX.Element {\n const merged = props;\n const [local, rest] = splitProps(merged, [\"class\", \"maxWidth\", \"disableGutters\", \"ref\"]);\n const maxWidth = (): ContainerMaxWidth => local.maxWidth ?? \"lg\";\n const classes = (): string =>\n cn(\n \"smwb-container\",\n {\n [`smwb-container--${maxWidth()}`]: maxWidth() !== false,\n \"smwb-container--gutterless\": local.disableGutters,\n },\n local.class\n );\n return <div {...rest} ref={mergeRefs(local.ref)} data-testid=\"grid-container\" class={classes()} />;\n}\n"],"mappings":"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","names":[],"file":"grid.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/page/page.entry.less";
2
3
  import { mergeProps, splitProps } from "solid-js";
3
4
  import { Dynamic } from "solid-js/web";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/page/page.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/page/page.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 PageMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface PageProps extends JSX.HTMLAttributes<HTMLElement> {\n /** Content max-width cap; `full` = fluid. */\n maxWidth?: PageMaxWidth;\n /** Remove the page padding. */\n disableGutters?: boolean;\n /** Render as a different element (default `main`). */\n component?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Page(props: ParentProps<PageProps>): JSX.Element {\n const merged = mergeProps({ maxWidth: \"lg\" as PageMaxWidth, disableGutters: false }, props);\n const [local, rest] = splitProps(merged, [\"maxWidth\", \"disableGutters\", \"component\", \"class\", \"children\", \"ref\"]);\n return (\n <Dynamic\n component={local.component ?? \"main\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"page\"\n class={cn(\n \"smwb-page\",\n `smwb-page_max-${local.maxWidth}`,\n { \"smwb-page_gutterless\": local.disableGutters },\n local.class\n )}\n >\n <div class=\"smwb-page__inner\">{local.children}</div>\n </Dynamic>\n );\n}\n\nexport default Page;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAc7B,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,UAAU,MAAsB,gBAAgB,MAAM,GAAG,KAAK;AAC1F,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,YAAY,kBAAkB,aAAa,SAAS,YAAY,KAAK,CAAC;AAChH,SACE,CAAC;AAAA,IACC,WAAW,MAAM,aAAa;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA,iBAAiB,MAAM,QAAQ;AAAA,MAC/B,EAAE,wBAAwB,MAAM,eAAe;AAAA,MAC/C,MAAM;AAAA,IACR;AAAA,GACD;AAAA,MACC,CAAC,IAAI,MAAM,oBAAoB,MAAM,SAAS,EAA7C,IAAmD;AAAA,IACtD,EAbC;AAeL;AAEA,IAAO,eAAQ;","names":[],"file":"page.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/page/page.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/page/page.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 PageMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface PageProps extends JSX.HTMLAttributes<HTMLElement> {\n /** Content max-width cap; `full` = fluid. */\n maxWidth?: PageMaxWidth;\n /** Remove the page padding. */\n disableGutters?: boolean;\n /** Render as a different element (default `main`). */\n component?: string;\n ref?: Ref<HTMLElement>;\n}\n\nexport function Page(props: ParentProps<PageProps>): JSX.Element {\n const merged = mergeProps({ maxWidth: \"lg\" as PageMaxWidth, disableGutters: false }, props);\n const [local, rest] = splitProps(merged, [\"maxWidth\", \"disableGutters\", \"component\", \"class\", \"children\", \"ref\"]);\n return (\n <Dynamic\n component={local.component ?? \"main\"}\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"page\"\n class={cn(\n \"smwb-page\",\n `smwb-page_max-${local.maxWidth}`,\n { \"smwb-page_gutterless\": local.disableGutters },\n local.class\n )}\n >\n <div class=\"smwb-page__inner\">{local.children}</div>\n </Dynamic>\n );\n}\n\nexport default Page;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,YAAY,kBAAkB;AACnE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAc7B,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,UAAU,MAAsB,gBAAgB,MAAM,GAAG,KAAK;AAC1F,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,YAAY,kBAAkB,aAAa,SAAS,YAAY,KAAK,CAAC;AAChH,SACE,CAAC;AAAA,IACC,WAAW,MAAM,aAAa;AAAA,QAC1B;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA,iBAAiB,MAAM,QAAQ;AAAA,MAC/B,EAAE,wBAAwB,MAAM,eAAe;AAAA,MAC/C,MAAM;AAAA,IACR;AAAA,GACD;AAAA,MACC,CAAC,IAAI,MAAM,oBAAoB,MAAM,SAAS,EAA7C,IAAmD;AAAA,IACtD,EAbC;AAeL;AAEA,IAAO,eAAQ;","names":[],"file":"page.jsx"}
@@ -1,5 +1,6 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/pageHeader/pageHeader.entry.less";
2
- import { Show, mergeProps, splitProps } from "solid-js";
3
+ import { Show, children, mergeProps, splitProps } from "solid-js";
3
4
  import cn from "clsx";
4
5
  import { Typography } from "../../dataDisplay/typography";
5
6
  import { mergeRefs } from "../../../primitives/mergeRefs";
@@ -14,33 +15,37 @@ function PageHeader(props) {
14
15
  "class",
15
16
  "ref"
16
17
  ]);
18
+ const title = children(() => local.title);
19
+ const subtitle = children(() => local.subtitle);
20
+ const breadcrumbs = children(() => local.breadcrumbs);
21
+ const actions = children(() => local.actions);
17
22
  return <header
18
23
  {...rest}
19
24
  ref={mergeRefs(local.ref)}
20
25
  data-testid="page-header"
21
26
  class={cn("smwb-page-header", { "smwb-page-header_divider": local.divider }, local.class)}
22
27
  >
23
- <Show when={local.breadcrumbs}>
24
- <div class="smwb-page-header__breadcrumbs">{local.breadcrumbs}</div>
28
+ <Show when={breadcrumbs()}>
29
+ <div class="smwb-page-header__breadcrumbs">{breadcrumbs()}</div>
25
30
  </Show>
26
31
  <div class="smwb-page-header__row">
27
32
  <div class="smwb-page-header__titles">
28
33
  <Show
29
- when={typeof local.title === "string"}
30
- fallback={<div class="smwb-page-header__title">{local.title}</div>}
34
+ when={typeof title() === "string"}
35
+ fallback={<div class="smwb-page-header__title">{title()}</div>}
31
36
  >
32
37
  <Typography variant="h4" component="h1" class="smwb-page-header__title">
33
- {local.title}
38
+ {title()}
34
39
  </Typography>
35
40
  </Show>
36
- <Show when={local.subtitle}>
41
+ <Show when={subtitle()}>
37
42
  <Typography variant="body2" color="textSecondary" class="smwb-page-header__subtitle">
38
- {local.subtitle}
43
+ {subtitle()}
39
44
  </Typography>
40
45
  </Show>
41
46
  </div>
42
- <Show when={local.actions}>
43
- <div class="smwb-page-header__actions">{local.actions}</div>
47
+ <Show when={actions()}>
48
+ <div class="smwb-page-header__actions">{actions()}</div>
44
49
  </Show>
45
50
  </div>
46
51
  </header>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/pageHeader/pageHeader.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/pageHeader/pageHeader.entry.less\";\nimport { type JSX, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Typography } from \"../../dataDisplay/typography\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface PageHeaderProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"title\"> {\n title: JSX.Element | string;\n subtitle?: JSX.Element | string;\n /** Slot above the title (e.g. <Breadcrumbs />). */\n breadcrumbs?: JSX.Element;\n /** Slot on the trailing side (e.g. action buttons). */\n actions?: JSX.Element;\n /** Render a divider below the header. */\n divider?: boolean;\n ref?: Ref<HTMLElement>;\n}\n\nexport function PageHeader(props: PageHeaderProps): JSX.Element {\n const merged = mergeProps({ divider: false }, props);\n const [local, rest] = splitProps(merged, [\n \"title\",\n \"subtitle\",\n \"breadcrumbs\",\n \"actions\",\n \"divider\",\n \"class\",\n \"ref\",\n ]);\n\n return (\n <header\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"page-header\"\n class={cn(\"smwb-page-header\", { \"smwb-page-header_divider\": local.divider }, local.class)}\n >\n <Show when={local.breadcrumbs}>\n <div class=\"smwb-page-header__breadcrumbs\">{local.breadcrumbs}</div>\n </Show>\n <div class=\"smwb-page-header__row\">\n <div class=\"smwb-page-header__titles\">\n <Show\n when={typeof local.title === \"string\"}\n fallback={<div class=\"smwb-page-header__title\">{local.title}</div>}\n >\n <Typography variant=\"h4\" component=\"h1\" class=\"smwb-page-header__title\">\n {local.title}\n </Typography>\n </Show>\n <Show when={local.subtitle}>\n <Typography variant=\"body2\" color=\"textSecondary\" class=\"smwb-page-header__subtitle\">\n {local.subtitle}\n </Typography>\n </Show>\n </div>\n <Show when={local.actions}>\n <div class=\"smwb-page-header__actions\">{local.actions}</div>\n </Show>\n </div>\n </header>\n );\n}\n\nexport default PageHeader;\n"],"mappings":"AAAA,OAAO;AACP,SAAmB,MAAM,YAAY,kBAAkB;AACvD,OAAO,QAAQ;AACf,SAAS,kBAAkB;AAC3B,SAAS,iBAA2B;AAc7B,SAAS,WAAW,OAAqC;AAC9D,QAAM,SAAS,WAAW,EAAE,SAAS,MAAM,GAAG,KAAK;AACnD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;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,YAAY;AAAA,IACZ,OAAO,GAAG,oBAAoB,EAAE,4BAA4B,MAAM,QAAQ,GAAG,MAAM,KAAK;AAAA,GACzF;AAAA,MACC,CAAC,KAAK,MAAM,MAAM,aAAa;AAAA,QAC7B,CAAC,IAAI,MAAM,iCAAiC,MAAM,YAAY,EAA7D,IAAmE;AAAA,MACtE,EAFC,KAEM;AAAA,MACP,CAAC,IAAI,MAAM,wBAAwB;AAAA,QACjC,CAAC,IAAI,MAAM,2BAA2B;AAAA,UACpC,CAAC;AAAA,IACC,MAAM,OAAO,MAAM,UAAU;AAAA,IAC7B,UAAU,CAAC,IAAI,MAAM,2BAA2B,MAAM,MAAM,EAAjD;AAAA,GACZ;AAAA,YACC,CAAC,WAAW,QAAQ,KAAK,UAAU,KAAK,MAAM,0BAA0B;AAAA,eACrE,MAAM,MAAM;AAAA,YACf,EAFC,WAEY;AAAA,UACf,EAPC,KAOM;AAAA,UACP,CAAC,KAAK,MAAM,MAAM,UAAU;AAAA,YAC1B,CAAC,WAAW,QAAQ,QAAQ,MAAM,gBAAgB,MAAM,6BAA6B;AAAA,eAClF,MAAM,SAAS;AAAA,YAClB,EAFC,WAEY;AAAA,UACf,EAJC,KAIM;AAAA,QACT,EAdC,IAcK;AAAA,QACN,CAAC,KAAK,MAAM,MAAM,SAAS;AAAA,UACzB,CAAC,IAAI,MAAM,6BAA6B,MAAM,QAAQ,EAArD,IAA2D;AAAA,QAC9D,EAFC,KAEM;AAAA,MACT,EAnBC,IAmBK;AAAA,IACR,EA7BC;AA+BL;AAEA,IAAO,qBAAQ;","names":[],"file":"pageHeader.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/pageHeader/pageHeader.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/pageHeader/pageHeader.entry.less\";\nimport { type JSX, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Typography } from \"../../dataDisplay/typography\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface PageHeaderProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"title\"> {\n title: JSX.Element | string;\n subtitle?: JSX.Element | string;\n /** Slot above the title (e.g. <Breadcrumbs />). */\n breadcrumbs?: JSX.Element;\n /** Slot on the trailing side (e.g. action buttons). */\n actions?: JSX.Element;\n /** Render a divider below the header. */\n divider?: boolean;\n ref?: Ref<HTMLElement>;\n}\n\nexport function PageHeader(props: PageHeaderProps): JSX.Element {\n const merged = mergeProps({ divider: false }, props);\n const [local, rest] = splitProps(merged, [\n \"title\",\n \"subtitle\",\n \"breadcrumbs\",\n \"actions\",\n \"divider\",\n \"class\",\n \"ref\",\n ]);\n\n // Read each slot once: markup passed as a prop is created anew on every read,\n // and during hydration a copy the server never rendered has no DOM node.\n const title = children(() => local.title);\n const subtitle = children(() => local.subtitle);\n const breadcrumbs = children(() => local.breadcrumbs);\n const actions = children(() => local.actions);\n\n return (\n <header\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"page-header\"\n class={cn(\"smwb-page-header\", { \"smwb-page-header_divider\": local.divider }, local.class)}\n >\n <Show when={breadcrumbs()}>\n <div class=\"smwb-page-header__breadcrumbs\">{breadcrumbs()}</div>\n </Show>\n <div class=\"smwb-page-header__row\">\n <div class=\"smwb-page-header__titles\">\n <Show\n when={typeof title() === \"string\"}\n fallback={<div class=\"smwb-page-header__title\">{title()}</div>}\n >\n <Typography variant=\"h4\" component=\"h1\" class=\"smwb-page-header__title\">\n {title()}\n </Typography>\n </Show>\n <Show when={subtitle()}>\n <Typography variant=\"body2\" color=\"textSecondary\" class=\"smwb-page-header__subtitle\">\n {subtitle()}\n </Typography>\n </Show>\n </div>\n <Show when={actions()}>\n <div class=\"smwb-page-header__actions\">{actions()}</div>\n </Show>\n </div>\n </header>\n );\n}\n\nexport default PageHeader;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAmB,MAAM,UAAU,YAAY,kBAAkB;AACjE,OAAO,QAAQ;AACf,SAAS,kBAAkB;AAC3B,SAAS,iBAA2B;AAc7B,SAAS,WAAW,OAAqC;AAC9D,QAAM,SAAS,WAAW,EAAE,SAAS,MAAM,GAAG,KAAK;AACnD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AACxC,QAAM,WAAW,SAAS,MAAM,MAAM,QAAQ;AAC9C,QAAM,cAAc,SAAS,MAAM,MAAM,WAAW;AACpD,QAAM,UAAU,SAAS,MAAM,MAAM,OAAO;AAE5C,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,OAAO,GAAG,oBAAoB,EAAE,4BAA4B,MAAM,QAAQ,GAAG,MAAM,KAAK;AAAA,GACzF;AAAA,MACC,CAAC,KAAK,MAAM,YAAY,GAAG;AAAA,QACzB,CAAC,IAAI,MAAM,iCAAiC,YAAY,EAAE,EAAzD,IAA+D;AAAA,MAClE,EAFC,KAEM;AAAA,MACP,CAAC,IAAI,MAAM,wBAAwB;AAAA,QACjC,CAAC,IAAI,MAAM,2BAA2B;AAAA,UACpC,CAAC;AAAA,IACC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,UAAU,CAAC,IAAI,MAAM,2BAA2B,MAAM,EAAE,EAA7C;AAAA,GACZ;AAAA,YACC,CAAC,WAAW,QAAQ,KAAK,UAAU,KAAK,MAAM,0BAA0B;AAAA,eACrE,MAAM,EAAE;AAAA,YACX,EAFC,WAEY;AAAA,UACf,EAPC,KAOM;AAAA,UACP,CAAC,KAAK,MAAM,SAAS,GAAG;AAAA,YACtB,CAAC,WAAW,QAAQ,QAAQ,MAAM,gBAAgB,MAAM,6BAA6B;AAAA,eAClF,SAAS,EAAE;AAAA,YACd,EAFC,WAEY;AAAA,UACf,EAJC,KAIM;AAAA,QACT,EAdC,IAcK;AAAA,QACN,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,UACrB,CAAC,IAAI,MAAM,6BAA6B,QAAQ,EAAE,EAAjD,IAAuD;AAAA,QAC1D,EAFC,KAEM;AAAA,MACT,EAnBC,IAmBK;AAAA,IACR,EA7BC;AA+BL;AAEA,IAAO,qBAAQ;","names":[],"file":"pageHeader.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/screenDivider/screenDivider.entry.less";
2
3
  import {
3
4
  children as resolveChildren,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/layout/screenDivider/screenDivider.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/screenDivider/screenDivider.entry.less\";\nimport {\n type JSX,\n type ParentProps,\n children as resolveChildren,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { throttle } from \"../../../utils/throttle\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ScreenDividerProps {\n sizeFirst?: number;\n sizeSecond?: number;\n class?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Called with the first pane size (percent) whenever it changes. */\n onSizeChange?: (sizeFirst: number) => void;\n /** Step (in percent) applied on arrow-key resize. */\n keyboardStep?: number;\n /** Accessible label for the resizer handle. */\n resizerAriaLabel?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst getInitialDivider = (sizeFirst?: number | null, sizeSecond?: number | null): number => {\n if (!sizeFirst && sizeSecond) {\n return 100 - sizeSecond;\n }\n if (sizeFirst) {\n return sizeFirst;\n }\n return 50;\n};\n\nexport function ScreenDivider(props: ParentProps<ScreenDividerProps>): JSX.Element {\n const merged = mergeProps(\n { orientation: \"horizontal\" as const, keyboardStep: 5, resizerAriaLabel: \"Resize panels\" },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"orientation\",\n \"sizeFirst\",\n \"sizeSecond\",\n \"children\",\n \"onSizeChange\",\n \"keyboardStep\",\n \"resizerAriaLabel\",\n \"ref\",\n ]);\n\n let wrapperEl: HTMLDivElement | undefined;\n const [divider, setDivider] = createSignal(getInitialDivider(local.sizeFirst, local.sizeSecond));\n const [isDragging, setIsDragging] = createSignal(false);\n\n // Sync with controlled size props.\n createEffect(() => {\n setDivider(getInitialDivider(local.sizeFirst, local.sizeSecond));\n });\n\n // Report size changes.\n createEffect(() => {\n local.onSizeChange?.(divider());\n });\n\n const resolved = resolveChildren(() => local.children);\n const child = (): unknown[] => resolved.toArray();\n\n const dragOver = throttle((event: PointerEvent) => {\n if (!isDragging()) return;\n const wrapper = wrapperEl;\n if (!wrapper) return;\n // Viewport-relative rect — using offsetLeft/offsetTop here is wrong\n // because they are relative to the nearest positioned ancestor, not\n // the viewport that clientX/clientY live in (this is what made the\n // divider drift away from the cursor when the wrapper was nested).\n const rect = wrapper.getBoundingClientRect();\n const total = local.orientation === \"vertical\" ? rect.height : rect.width;\n const cursor = local.orientation === \"vertical\" ? event.clientY - rect.top : event.clientX - rect.left;\n // 5px margin on each side so neither pane fully collapses.\n const clamped = Math.max(5, Math.min(total - 5, cursor));\n setDivider((clamped / total) * 100);\n }, 1000 / 60);\n\n const handleDragStart = (): void => {\n setIsDragging(true);\n };\n const handleDragEnd = (): void => {\n setIsDragging(false);\n };\n\n createEffect(() => {\n if (isServer) return;\n if (isDragging()) {\n document.body.addEventListener(\"pointerup\", handleDragEnd);\n document.body.addEventListener(\"pointermove\", dragOver);\n document.body.style.cursor = local.orientation === \"horizontal\" ? \"e-resize\" : \"n-resize\";\n } else {\n document.body.style.cursor = \"default\";\n }\n onCleanup(() => {\n document.body.removeEventListener(\"pointerup\", handleDragEnd);\n document.body.removeEventListener(\"pointermove\", dragOver);\n });\n });\n\n const onResizerKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n const decreaseKey = local.orientation === \"vertical\" ? \"ArrowUp\" : \"ArrowLeft\";\n const increaseKey = local.orientation === \"vertical\" ? \"ArrowDown\" : \"ArrowRight\";\n if (event.key === decreaseKey) {\n event.preventDefault();\n setDivider((prev) => Math.max(0, prev - local.keyboardStep));\n } else if (event.key === increaseKey) {\n event.preventDefault();\n setDivider((prev) => Math.min(100, prev + local.keyboardStep));\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setDivider(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setDivider(100);\n }\n };\n\n const firstChildStyle = (): JSX.CSSProperties =>\n local.orientation === \"vertical\" ? { height: `${divider()}%` } : { width: `${divider()}%` };\n const secondChildStyle = (): JSX.CSSProperties =>\n local.orientation === \"vertical\" ? { height: `${100 - divider()}%` } : { width: `${100 - divider()}%` };\n\n return (\n <div\n class={cn(\"smwb-screen-divider__wrapper\", `smwb-${local.orientation}`, local.class)}\n ref={mergeRefs(local.ref, (el) => (wrapperEl = el))}\n data-testid=\"screen-divider\"\n >\n <div class={cn(\"smwb-screen-divider__first\", `smwb-${local.orientation}`)} style={firstChildStyle()}>\n {(child()[0] ?? \"\") as JSX.Element}\n </div>\n <span\n class=\"smwb-screen-divider__resizer\"\n onPointerDown={handleDragStart}\n draggable={false}\n role=\"separator\"\n aria-orientation={local.orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n aria-valuenow={Math.round(divider())}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={local.resizerAriaLabel}\n tabindex={0}\n onKeyDown={onResizerKeyDown}\n />\n <div class={cn(\"smwb-screen-divider__second\", `smwb-${local.orientation}`)} style={secondChildStyle()}>\n {(child()[1] ?? \"\") as JSX.Element}\n </div>\n </div>\n );\n}\n\nexport default ScreenDivider;\n"],"mappings":"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","names":[],"file":"screenDivider.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/layout/screenDivider/screenDivider.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/screenDivider/screenDivider.entry.less\";\nimport {\n type JSX,\n type ParentProps,\n children as resolveChildren,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n splitProps,\n} from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { throttle } from \"../../../utils/throttle\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ScreenDividerProps {\n sizeFirst?: number;\n sizeSecond?: number;\n class?: string;\n orientation?: \"horizontal\" | \"vertical\";\n /** Called with the first pane size (percent) whenever it changes. */\n onSizeChange?: (sizeFirst: number) => void;\n /** Step (in percent) applied on arrow-key resize. */\n keyboardStep?: number;\n /** Accessible label for the resizer handle. */\n resizerAriaLabel?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst getInitialDivider = (sizeFirst?: number | null, sizeSecond?: number | null): number => {\n if (!sizeFirst && sizeSecond) {\n return 100 - sizeSecond;\n }\n if (sizeFirst) {\n return sizeFirst;\n }\n return 50;\n};\n\nexport function ScreenDivider(props: ParentProps<ScreenDividerProps>): JSX.Element {\n const merged = mergeProps(\n { orientation: \"horizontal\" as const, keyboardStep: 5, resizerAriaLabel: \"Resize panels\" },\n props\n );\n const [local] = splitProps(merged, [\n \"class\",\n \"orientation\",\n \"sizeFirst\",\n \"sizeSecond\",\n \"children\",\n \"onSizeChange\",\n \"keyboardStep\",\n \"resizerAriaLabel\",\n \"ref\",\n ]);\n\n let wrapperEl: HTMLDivElement | undefined;\n const [divider, setDivider] = createSignal(getInitialDivider(local.sizeFirst, local.sizeSecond));\n const [isDragging, setIsDragging] = createSignal(false);\n\n // Sync with controlled size props.\n createEffect(() => {\n setDivider(getInitialDivider(local.sizeFirst, local.sizeSecond));\n });\n\n // Report size changes.\n createEffect(() => {\n local.onSizeChange?.(divider());\n });\n\n const resolved = resolveChildren(() => local.children);\n const child = (): unknown[] => resolved.toArray();\n\n const dragOver = throttle((event: PointerEvent) => {\n if (!isDragging()) return;\n const wrapper = wrapperEl;\n if (!wrapper) return;\n // Viewport-relative rect — using offsetLeft/offsetTop here is wrong\n // because they are relative to the nearest positioned ancestor, not\n // the viewport that clientX/clientY live in (this is what made the\n // divider drift away from the cursor when the wrapper was nested).\n const rect = wrapper.getBoundingClientRect();\n const total = local.orientation === \"vertical\" ? rect.height : rect.width;\n const cursor = local.orientation === \"vertical\" ? event.clientY - rect.top : event.clientX - rect.left;\n // 5px margin on each side so neither pane fully collapses.\n const clamped = Math.max(5, Math.min(total - 5, cursor));\n setDivider((clamped / total) * 100);\n }, 1000 / 60);\n\n const handleDragStart = (): void => {\n setIsDragging(true);\n };\n const handleDragEnd = (): void => {\n setIsDragging(false);\n };\n\n createEffect(() => {\n if (isServer) return;\n if (isDragging()) {\n document.body.addEventListener(\"pointerup\", handleDragEnd);\n document.body.addEventListener(\"pointermove\", dragOver);\n document.body.style.cursor = local.orientation === \"horizontal\" ? \"e-resize\" : \"n-resize\";\n } else {\n document.body.style.cursor = \"default\";\n }\n onCleanup(() => {\n document.body.removeEventListener(\"pointerup\", handleDragEnd);\n document.body.removeEventListener(\"pointermove\", dragOver);\n });\n });\n\n const onResizerKeyDown: JSX.EventHandler<HTMLSpanElement, KeyboardEvent> = (event) => {\n const decreaseKey = local.orientation === \"vertical\" ? \"ArrowUp\" : \"ArrowLeft\";\n const increaseKey = local.orientation === \"vertical\" ? \"ArrowDown\" : \"ArrowRight\";\n if (event.key === decreaseKey) {\n event.preventDefault();\n setDivider((prev) => Math.max(0, prev - local.keyboardStep));\n } else if (event.key === increaseKey) {\n event.preventDefault();\n setDivider((prev) => Math.min(100, prev + local.keyboardStep));\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setDivider(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setDivider(100);\n }\n };\n\n const firstChildStyle = (): JSX.CSSProperties =>\n local.orientation === \"vertical\" ? { height: `${divider()}%` } : { width: `${divider()}%` };\n const secondChildStyle = (): JSX.CSSProperties =>\n local.orientation === \"vertical\" ? { height: `${100 - divider()}%` } : { width: `${100 - divider()}%` };\n\n return (\n <div\n class={cn(\"smwb-screen-divider__wrapper\", `smwb-${local.orientation}`, local.class)}\n ref={mergeRefs(local.ref, (el) => (wrapperEl = el))}\n data-testid=\"screen-divider\"\n >\n <div class={cn(\"smwb-screen-divider__first\", `smwb-${local.orientation}`)} style={firstChildStyle()}>\n {(child()[0] ?? \"\") as JSX.Element}\n </div>\n <span\n class=\"smwb-screen-divider__resizer\"\n onPointerDown={handleDragStart}\n draggable={false}\n role=\"separator\"\n aria-orientation={local.orientation === \"vertical\" ? \"horizontal\" : \"vertical\"}\n aria-valuenow={Math.round(divider())}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={local.resizerAriaLabel}\n tabindex={0}\n onKeyDown={onResizerKeyDown}\n />\n <div class={cn(\"smwb-screen-divider__second\", `smwb-${local.orientation}`)} style={secondChildStyle()}>\n {(child()[1] ?? \"\") as JSX.Element}\n </div>\n </div>\n );\n}\n\nexport default ScreenDivider;\n"],"mappings":"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","names":[],"file":"screenDivider.jsx"}
@@ -0,0 +1,6 @@
1
+ import { SectionHeader, default as default2 } from "./sectionHeader";
2
+ export {
3
+ SectionHeader,
4
+ default2 as default
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/components/layout/sectionHeader/index.ts"],
4
+ "sourcesContent": ["export { SectionHeader, default } from \"./sectionHeader\";\nexport type { SectionHeaderProps } from \"./sectionHeader\";\n"],
5
+ "mappings": "AAAA,SAAS,eAAe,WAAAA,gBAAe;",
6
+ "names": ["default"]
7
+ }
@@ -0,0 +1,82 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
2
+ import "@smwb/ui-styles/less/components/sectionHeader/sectionHeader.entry.less";
3
+ import { Show, children, createSignal, mergeProps, splitProps } from "solid-js";
4
+ import { Dynamic } from "solid-js/web";
5
+ import cn from "clsx";
6
+ import { Icon } from "../../base/icon";
7
+ import { Tooltip } from "../../feedBack/tooltip";
8
+ import { mergeRefs } from "../../../primitives/mergeRefs";
9
+ function HelpHint(props) {
10
+ const [open, setOpen] = createSignal(false);
11
+ return <Tooltip
12
+ class="smwb-section-header__tooltip"
13
+ message={props.text}
14
+ trigger="manual"
15
+ open={open()}
16
+ placement="top"
17
+ offset={{ offsetY: 6 }}
18
+ >
19
+ <span
20
+ class="smwb-section-header__help"
21
+ role="img"
22
+ aria-label={props.label ?? props.text}
23
+ tabindex="0"
24
+ onPointerEnter={() => setOpen(true)}
25
+ onPointerLeave={() => setOpen(false)}
26
+ onFocus={() => setOpen(true)}
27
+ onBlur={() => setOpen(false)}
28
+ onKeyDown={(event) => {
29
+ if (event.key === "Escape") setOpen(false);
30
+ }}
31
+ >
32
+ <Icon name="help" size={16} />
33
+ </span>
34
+ </Tooltip>;
35
+ }
36
+ function SectionHeader(props) {
37
+ const merged = mergeProps({ level: 2 }, props);
38
+ const [local, rest] = splitProps(merged, [
39
+ "class",
40
+ "title",
41
+ "level",
42
+ "count",
43
+ "help",
44
+ "helpLabel",
45
+ "titleId",
46
+ "subtitle",
47
+ "children",
48
+ "ref"
49
+ ]);
50
+ const subtitle = children(() => local.subtitle);
51
+ const actions = children(() => local.children);
52
+ return <header
53
+ data-testid="section-header"
54
+ {...rest}
55
+ ref={mergeRefs(local.ref)}
56
+ class={cn("smwb-section-header", `smwb-section-header_level-${local.level}`, local.class)}
57
+ >
58
+ <div class="smwb-section-header__titles">
59
+ <div class="smwb-section-header__title-line">
60
+ <Dynamic component={`h${local.level}`} id={local.titleId} class="smwb-section-header__title">
61
+ {local.title}
62
+ </Dynamic>
63
+ <Show when={local.count !== void 0 && local.count !== null}>
64
+ <span class="smwb-section-header__count">{local.count}</span>
65
+ </Show>
66
+ <Show when={local.help}>{(text) => <HelpHint text={text()} label={local.helpLabel} />}</Show>
67
+ </div>
68
+ <Show when={subtitle()}>
69
+ <div class="smwb-section-header__subtitle">{subtitle()}</div>
70
+ </Show>
71
+ </div>
72
+ <Show when={actions()}>
73
+ <div class="smwb-section-header__actions">{actions()}</div>
74
+ </Show>
75
+ </header>;
76
+ }
77
+ var sectionHeader_default = SectionHeader;
78
+ export {
79
+ SectionHeader,
80
+ sectionHeader_default as default
81
+ };
82
+ //# sourceMappingURL=sectionHeader.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/components/layout/sectionHeader/sectionHeader.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/sectionHeader/sectionHeader.entry.less\";\nimport { type JSX, type ParentProps, Show, children, createSignal, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { Tooltip } from \"../../feedBack/tooltip\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface SectionHeaderProps extends Omit<JSX.HTMLAttributes<HTMLElement>, \"title\"> {\n /** The section's name. */\n title: JSX.Element;\n /** Heading level of the title: 2 by default. */\n level?: 2 | 3 | 4 | 5 | 6;\n /** How many items the section holds, beside the title. Nothing is shown for null. */\n count?: number | string | null;\n /**\n * How to read the section, behind a \"?\" icon: shown on hover and on keyboard\n * focus, and the icon's accessible name. Text only — the tooltip renders in\n * the browser.\n */\n help?: string;\n /** The \"?\" icon's accessible name, e.g. \"Explanation: …\"; the help text by default. */\n helpLabel?: string;\n /** Id of the heading, for anchors and aria-labelledby. */\n titleId?: string;\n /** A line under the title. */\n subtitle?: JSX.Element;\n ref?: Ref<HTMLElement>;\n}\n\n/** The \"?\" icon with its tooltip, open on hover and on keyboard focus. */\nfunction HelpHint(props: { text: string; label?: string | undefined }): JSX.Element {\n const [open, setOpen] = createSignal(false);\n return (\n <Tooltip\n class=\"smwb-section-header__tooltip\"\n message={props.text}\n trigger=\"manual\"\n open={open()}\n placement=\"top\"\n offset={{ offsetY: 6 }}\n >\n <span\n class=\"smwb-section-header__help\"\n role=\"img\"\n aria-label={props.label ?? props.text}\n tabindex=\"0\"\n onPointerEnter={() => setOpen(true)}\n onPointerLeave={() => setOpen(false)}\n onFocus={() => setOpen(true)}\n onBlur={() => setOpen(false)}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") setOpen(false);\n }}\n >\n <Icon name=\"help\" size={16} />\n </span>\n </Tooltip>\n );\n}\n\n/**\n * A section's heading row: the title with a count and a help hint, a subtitle\n * under them, and the section's actions (the children) at the end. On a narrow\n * screen the actions wrap under the title.\n */\nexport function SectionHeader(props: ParentProps<SectionHeaderProps>): JSX.Element {\n const merged = mergeProps({ level: 2 as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"title\",\n \"level\",\n \"count\",\n \"help\",\n \"helpLabel\",\n \"titleId\",\n \"subtitle\",\n \"children\",\n \"ref\",\n ]);\n\n // Read the slots once: markup passed as a prop is created anew on every read,\n // and during hydration the copy made for a <Show> test has no server DOM node.\n const subtitle = children(() => local.subtitle);\n const actions = children(() => local.children);\n\n return (\n <header\n data-testid=\"section-header\"\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-section-header\", `smwb-section-header_level-${local.level}`, local.class)}\n >\n <div class=\"smwb-section-header__titles\">\n <div class=\"smwb-section-header__title-line\">\n <Dynamic component={`h${local.level}`} id={local.titleId} class=\"smwb-section-header__title\">\n {local.title}\n </Dynamic>\n <Show when={local.count !== undefined && local.count !== null}>\n <span class=\"smwb-section-header__count\">{local.count}</span>\n </Show>\n <Show when={local.help}>{(text) => <HelpHint text={text()} label={local.helpLabel} />}</Show>\n </div>\n <Show when={subtitle()}>\n <div class=\"smwb-section-header__subtitle\">{subtitle()}</div>\n </Show>\n </div>\n <Show when={actions()}>\n <div class=\"smwb-section-header__actions\">{actions()}</div>\n </Show>\n </header>\n );\n}\n\nexport default SectionHeader;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,cAAc,YAAY,kBAAkB;AACjG,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,SAAS,iBAA2B;AAyBpC,SAAS,SAAS,OAAkE;AAClF,QAAM,CAAC,MAAM,OAAO,IAAI,aAAa,KAAK;AAC1C,SACE,CAAC;AAAA,IACC,MAAM;AAAA,IACN,SAAS,MAAM;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,KAAK;AAAA,IACX,UAAU;AAAA,IACV,QAAQ,EAAE,SAAS,EAAE;AAAA,GACtB;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK;AAAA,IACL,YAAY,MAAM,SAAS,MAAM;AAAA,IACjC,SAAS;AAAA,IACT,gBAAgB,MAAM,QAAQ,IAAI;AAAA,IAClC,gBAAgB,MAAM,QAAQ,KAAK;AAAA,IACnC,SAAS,MAAM,QAAQ,IAAI;AAAA,IAC3B,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAC3B,WAAW,CAAC,UAAU;AACpB,UAAI,MAAM,QAAQ,SAAU,SAAQ,KAAK;AAAA,IAC3C;AAAA,GACD;AAAA,QACC,CAAC,KAAK,KAAK,OAAO,MAAM,IAAI,EAAE;AAAA,MAChC,EAdC,KAcM;AAAA,IACT,EAvBC;AAyBL;AAOO,SAAS,cAAc,OAAqD;AACjF,QAAM,SAAS,WAAW,EAAE,OAAO,EAAW,GAAG,KAAK;AACtD,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAID,QAAM,WAAW,SAAS,MAAM,MAAM,QAAQ;AAC9C,QAAM,UAAU,SAAS,MAAM,MAAM,QAAQ;AAE7C,SACE,CAAC;AAAA,IACC,YAAY;AAAA,QACR;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,uBAAuB,6BAA6B,MAAM,KAAK,IAAI,MAAM,KAAK;AAAA,GACzF;AAAA,MACC,CAAC,IAAI,MAAM,8BAA8B;AAAA,QACvC,CAAC,IAAI,MAAM,kCAAkC;AAAA,UAC3C,CAAC,QAAQ,WAAW,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,SAAS,MAAM,6BAA6B;AAAA,aAC1F,MAAM,MAAM;AAAA,UACf,EAFC,QAES;AAAA,UACV,CAAC,KAAK,MAAM,MAAM,UAAU,UAAa,MAAM,UAAU,MAAM;AAAA,YAC7D,CAAC,KAAK,MAAM,8BAA8B,MAAM,MAAM,EAArD,KAA4D;AAAA,UAC/D,EAFC,KAEM;AAAA,UACP,CAAC,KAAK,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,MAAM,KAAK,GAAG,OAAO,MAAM,WAAW,GAAG,EAArF,KAA4F;AAAA,QAC/F,EARC,IAQK;AAAA,QACN,CAAC,KAAK,MAAM,SAAS,GAAG;AAAA,UACtB,CAAC,IAAI,MAAM,iCAAiC,SAAS,EAAE,EAAtD,IAA4D;AAAA,QAC/D,EAFC,KAEM;AAAA,MACT,EAbC,IAaK;AAAA,MACN,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,QACrB,CAAC,IAAI,MAAM,gCAAgC,QAAQ,EAAE,EAApD,IAA0D;AAAA,MAC7D,EAFC,KAEM;AAAA,IACT,EAvBC;AAyBL;AAEA,IAAO,wBAAQ;","names":[],"file":"sectionHeader.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/sheet/sheet.entry.less";
2
3
  import { Show, createEffect, createSignal, mergeProps, onCleanup, splitProps } from "solid-js";
3
4
  import { Portal, isServer } from "solid-js/web";