@smwb/ui-solid 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (738) 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/chip/chip.entry.css +1 -1
  5. package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
  6. package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
  7. package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
  8. package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
  9. package/dist/assets/styles/less/components/modal/modal.entry.css +1 -1
  10. package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -1
  11. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
  12. package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
  13. package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
  14. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  15. package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
  16. package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
  17. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  18. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  19. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  20. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  21. package/dist/assets/styles/less/components/timeline/timeline.entry.css +1 -0
  22. package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
  23. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  24. package/dist/assets/styles/less/tokens.entry.css +1 -0
  25. package/dist/components/base/icon/icon.js +4 -3
  26. package/dist/components/base/icon/icon.js.map +1 -1
  27. package/dist/components/base/ripple/ripple.js +4 -3
  28. package/dist/components/base/ripple/ripple.js.map +1 -1
  29. package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
  30. package/dist/components/dataDisplay/accordion/accordion.js +91 -48
  31. package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
  32. package/dist/components/dataDisplay/assetGrid/assetGrid.js +14 -13
  33. package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
  34. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  35. package/dist/components/dataDisplay/avatar/avatar.js +56 -40
  36. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  37. package/dist/components/dataDisplay/badge/badge.js +24 -20
  38. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  39. package/dist/components/dataDisplay/card/card.js +24 -23
  40. package/dist/components/dataDisplay/card/card.js.map +1 -1
  41. package/dist/components/dataDisplay/carousel/carousel.js +4 -3
  42. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  43. package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
  44. package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
  45. package/dist/components/dataDisplay/chart/index.d.ts +4 -0
  46. package/dist/components/dataDisplay/chat/chat.js +52 -51
  47. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  48. package/dist/components/dataDisplay/chat/chatHeader.js +29 -29
  49. package/dist/components/dataDisplay/chat/chatHeader.js.map +1 -1
  50. package/dist/components/dataDisplay/chat/chatMessageBubble.js +28 -28
  51. package/dist/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
  52. package/dist/components/dataDisplay/chat/chatShell.js +54 -51
  53. package/dist/components/dataDisplay/chat/chatShell.js.map +1 -1
  54. package/dist/components/dataDisplay/chip/chip.js +79 -70
  55. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  56. package/dist/components/dataDisplay/chipGroup/chipGroup.js +9 -8
  57. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  58. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +32 -0
  59. package/dist/components/dataDisplay/descriptionList/descriptionList.js +60 -0
  60. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  61. package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
  62. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +4 -3
  63. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  64. package/dist/components/dataDisplay/imagesList/imagesList.js +8 -7
  65. package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
  66. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -24
  67. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  68. package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
  69. package/dist/components/dataDisplay/kanban/kanban.d.ts +42 -0
  70. package/dist/components/dataDisplay/kanban/kanban.js +133 -0
  71. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
  72. package/dist/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  73. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  74. package/dist/components/dataDisplay/list/list.js +17 -16
  75. package/dist/components/dataDisplay/list/list.js.map +1 -1
  76. package/dist/components/dataDisplay/meter/index.d.ts +2 -0
  77. package/dist/components/dataDisplay/meter/meter.d.ts +34 -0
  78. package/dist/components/dataDisplay/meter/meter.js +84 -0
  79. package/dist/components/dataDisplay/meter/meter.js.map +1 -0
  80. package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
  81. package/dist/components/dataDisplay/personChip/personChip.d.ts +32 -0
  82. package/dist/components/dataDisplay/personChip/personChip.js +104 -0
  83. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
  84. package/dist/components/dataDisplay/stat/index.d.ts +2 -0
  85. package/dist/components/dataDisplay/stat/stat.d.ts +33 -0
  86. package/dist/components/dataDisplay/stat/stat.js +101 -0
  87. package/dist/components/dataDisplay/stat/stat.js.map +1 -0
  88. package/dist/components/dataDisplay/table/table.d.ts +7 -0
  89. package/dist/components/dataDisplay/table/table.js +22 -21
  90. package/dist/components/dataDisplay/table/table.js.map +1 -1
  91. package/dist/components/dataDisplay/table/tableCell.d.ts +2 -0
  92. package/dist/components/dataDisplay/table/tableCell.js +9 -6
  93. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  94. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
  95. package/dist/components/dataDisplay/table/tableHeadCell.js +26 -23
  96. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  97. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +4 -3
  98. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
  99. package/dist/components/dataDisplay/thumbCard/thumbCard.js +54 -53
  100. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  101. package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
  102. package/dist/components/dataDisplay/timeline/timeline.d.ts +38 -0
  103. package/dist/components/dataDisplay/timeline/timeline.js +89 -0
  104. package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
  105. package/dist/components/dataDisplay/treeView/treeView.js +4 -3
  106. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  107. package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
  108. package/dist/components/dataDisplay/typography/typography.js +36 -22
  109. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  110. package/dist/components/feedBack/confirmDialog/confirmDialog.js +10 -9
  111. package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  112. package/dist/components/feedBack/emptyState/emptyState.d.ts +25 -0
  113. package/dist/components/feedBack/emptyState/emptyState.js +86 -0
  114. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
  115. package/dist/components/feedBack/emptyState/index.d.ts +2 -0
  116. package/dist/components/feedBack/message/message.js +4 -3
  117. package/dist/components/feedBack/message/message.js.map +1 -1
  118. package/dist/components/feedBack/modal/modal.js +4 -3
  119. package/dist/components/feedBack/modal/modal.js.map +1 -1
  120. package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +13 -0
  121. package/dist/components/feedBack/progressIndicator/progressIndicator.js +79 -46
  122. package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  123. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +20 -15
  124. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  125. package/dist/components/feedBack/skeleton/skeleton.js +4 -3
  126. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  127. package/dist/components/feedBack/snackbar/snackbar.js +18 -17
  128. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  129. package/dist/components/feedBack/tooltip/tooltip.js +41 -33
  130. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  131. package/dist/components/inputs/button/button.js +32 -30
  132. package/dist/components/inputs/button/button.js.map +1 -1
  133. package/dist/components/inputs/buttonGroups/buttonGroup.js +9 -8
  134. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  135. package/dist/components/inputs/checkbox/checkbox.js +4 -3
  136. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  137. package/dist/components/inputs/datePicker/dataPickerInput.js +23 -23
  138. package/dist/components/inputs/datePicker/dataPickerInput.js.map +1 -1
  139. package/dist/components/inputs/datePicker/datePicker.js +84 -83
  140. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  141. package/dist/components/inputs/fileDrop/fileDrop.js +4 -3
  142. package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
  143. package/dist/components/inputs/fileInput/fileInput.js +11 -10
  144. package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
  145. package/dist/components/inputs/floatingButton/floatingButton.js +9 -8
  146. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  147. package/dist/components/inputs/radioButton/radioButton.js +9 -8
  148. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  149. package/dist/components/inputs/rating/rating.js +41 -40
  150. package/dist/components/inputs/rating/rating.js.map +1 -1
  151. package/dist/components/inputs/selectField/selectField.d.ts +2 -0
  152. package/dist/components/inputs/selectField/selectField.js +55 -51
  153. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  154. package/dist/components/inputs/slider/slider.js +4 -3
  155. package/dist/components/inputs/slider/slider.js.map +1 -1
  156. package/dist/components/inputs/textField/textField.js +38 -37
  157. package/dist/components/inputs/textField/textField.js.map +1 -1
  158. package/dist/components/inputs/textField/textFieldAdornment.js +9 -9
  159. package/dist/components/inputs/textField/textFieldAdornment.js.map +1 -1
  160. package/dist/components/inputs/textField/textFieldWrapper.js +41 -41
  161. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  162. package/dist/components/inputs/timePicker/timePicker.js +12 -11
  163. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  164. package/dist/components/inputs/toggle/toggle.js +4 -3
  165. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  166. package/dist/components/inputs/valueSlider/valueSlider.js +26 -25
  167. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  168. package/dist/components/layout/appLayout/appLayout.js +39 -38
  169. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  170. package/dist/components/layout/divider/divider.js +26 -22
  171. package/dist/components/layout/divider/divider.js.map +1 -1
  172. package/dist/components/layout/floatingWindow/floatingWindow.js +74 -73
  173. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  174. package/dist/components/layout/grid/grid.js +10 -9
  175. package/dist/components/layout/grid/grid.js.map +1 -1
  176. package/dist/components/layout/page/page.js +4 -3
  177. package/dist/components/layout/page/page.js.map +1 -1
  178. package/dist/components/layout/pageHeader/pageHeader.js +36 -35
  179. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  180. package/dist/components/layout/screenDivider/screenDivider.js +9 -8
  181. package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
  182. package/dist/components/layout/sectionHeader/index.d.ts +2 -0
  183. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +30 -0
  184. package/dist/components/layout/sectionHeader/sectionHeader.js +100 -0
  185. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  186. package/dist/components/layout/sheet/sheet.js +4 -3
  187. package/dist/components/layout/sheet/sheet.js.map +1 -1
  188. package/dist/components/layout/stack/stack.js +31 -27
  189. package/dist/components/layout/stack/stack.js.map +1 -1
  190. package/dist/components/navigation/appBar/appBar.js +24 -23
  191. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  192. package/dist/components/navigation/bottomBar/bottomBar.js +57 -56
  193. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  194. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +4 -3
  195. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  196. package/dist/components/navigation/menu/menu.js +10 -9
  197. package/dist/components/navigation/menu/menu.js.map +1 -1
  198. package/dist/components/navigation/overflowMenu/overflowMenu.js +4 -3
  199. package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
  200. package/dist/components/navigation/pagination/pagination.js +14 -13
  201. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  202. package/dist/components/navigation/sidebar/sidebar.js +4 -3
  203. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  204. package/dist/components/navigation/stepper/stepper.d.ts +10 -2
  205. package/dist/components/navigation/stepper/stepper.js +63 -47
  206. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  207. package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
  208. package/dist/components/navigation/tabs/tab/tab.js +45 -44
  209. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  210. package/dist/components/navigation/tabs/tabs.d.ts +12 -0
  211. package/dist/components/navigation/tabs/tabs.js +142 -86
  212. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  213. package/dist/connects/rt/table/table.d.ts +2 -0
  214. package/dist/headless/components/dataDisplay/accordion/accordion.js +89 -47
  215. package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
  216. package/dist/headless/components/dataDisplay/avatar/avatar.js +54 -39
  217. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  218. package/dist/headless/components/dataDisplay/badge/badge.js +22 -19
  219. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  220. package/dist/headless/components/dataDisplay/card/card.js +22 -22
  221. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  222. package/dist/headless/components/dataDisplay/chat/chat.js +50 -50
  223. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  224. package/dist/headless/components/dataDisplay/chat/chatHeader.js +29 -29
  225. package/dist/headless/components/dataDisplay/chat/chatHeader.js.map +1 -1
  226. package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js +28 -28
  227. package/dist/headless/components/dataDisplay/chat/chatMessageBubble.js.map +1 -1
  228. package/dist/headless/components/dataDisplay/chat/chatShell.js +54 -51
  229. package/dist/headless/components/dataDisplay/chat/chatShell.js.map +1 -1
  230. package/dist/headless/components/dataDisplay/chip/chip.js +77 -69
  231. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  232. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +58 -0
  233. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  234. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +28 -24
  235. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  236. package/dist/headless/components/dataDisplay/kanban/kanban.js +131 -0
  237. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
  238. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +28 -28
  239. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/list/list.js +15 -15
  241. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  242. package/dist/headless/components/dataDisplay/meter/meter.js +82 -0
  243. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
  244. package/dist/headless/components/dataDisplay/personChip/personChip.js +102 -0
  245. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
  246. package/dist/headless/components/dataDisplay/stat/stat.js +99 -0
  247. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
  248. package/dist/headless/components/dataDisplay/table/table.js +20 -20
  249. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/table/tableCell.js +9 -6
  251. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  252. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +26 -23
  253. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  254. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +53 -53
  255. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  256. package/dist/headless/components/dataDisplay/timeline/timeline.js +87 -0
  257. package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
  258. package/dist/headless/components/dataDisplay/typography/typography.js +34 -21
  259. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  260. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js +1 -1
  261. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  262. package/dist/headless/components/feedBack/emptyState/emptyState.js +84 -0
  263. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
  264. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +77 -45
  265. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  266. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +18 -14
  267. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  268. package/dist/headless/components/feedBack/tooltip/tooltip.js +33 -26
  269. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  270. package/dist/headless/components/inputs/button/button.js +33 -32
  271. package/dist/headless/components/inputs/button/button.js.map +1 -1
  272. package/dist/headless/components/inputs/datePicker/dataPickerInput.js +23 -23
  273. package/dist/headless/components/inputs/datePicker/dataPickerInput.js.map +1 -1
  274. package/dist/headless/components/inputs/datePicker/datePicker.js +79 -79
  275. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  276. package/dist/headless/components/inputs/rating/rating.js +39 -39
  277. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  278. package/dist/headless/components/inputs/selectField/selectField.js +61 -58
  279. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  280. package/dist/headless/components/inputs/textField/textField.js +36 -36
  281. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  282. package/dist/headless/components/inputs/textField/textFieldAdornment.js +9 -9
  283. package/dist/headless/components/inputs/textField/textFieldAdornment.js.map +1 -1
  284. package/dist/headless/components/inputs/textField/textFieldWrapper.js +41 -41
  285. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  286. package/dist/headless/components/inputs/valueSlider/valueSlider.js +24 -24
  287. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  288. package/dist/headless/components/layout/appLayout/appLayout.js +39 -39
  289. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  290. package/dist/headless/components/layout/divider/divider.js +24 -21
  291. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  292. package/dist/headless/components/layout/pageHeader/pageHeader.js +34 -34
  293. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  294. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +98 -0
  295. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  296. package/dist/headless/components/layout/stack/stack.js +29 -26
  297. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  298. package/dist/headless/components/navigation/appBar/appBar.js +22 -22
  299. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  300. package/dist/headless/components/navigation/bottomBar/bottomBar.js +51 -51
  301. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  302. package/dist/headless/components/navigation/stepper/stepper.js +61 -46
  303. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  304. package/dist/headless/components/navigation/tabs/tab/tab.js +44 -44
  305. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  306. package/dist/headless/components/navigation/tabs/tabs.js +140 -85
  307. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  308. package/dist/headless/icons/catalog.js +78 -1
  309. package/dist/headless/icons/catalog.js.map +1 -1
  310. package/dist/headless/icons/index.js +596 -574
  311. package/dist/headless/icons/index.js.map +1 -1
  312. package/dist/headless/icons/svg/accountTree.js +9 -0
  313. package/dist/headless/icons/svg/accountTree.js.map +1 -0
  314. package/dist/headless/icons/svg/callSplit.js +9 -0
  315. package/dist/headless/icons/svg/callSplit.js.map +1 -0
  316. package/dist/headless/icons/svg/deviceHub.js +8 -0
  317. package/dist/headless/icons/svg/deviceHub.js.map +1 -0
  318. package/dist/headless/icons/svg/editNote.js +9 -0
  319. package/dist/headless/icons/svg/editNote.js.map +1 -0
  320. package/dist/headless/icons/svg/filterList.js +9 -0
  321. package/dist/headless/icons/svg/filterList.js.map +1 -0
  322. package/dist/headless/icons/svg/forkRight.js +8 -0
  323. package/dist/headless/icons/svg/forkRight.js.map +1 -0
  324. package/dist/headless/icons/svg/groups.js +9 -0
  325. package/dist/headless/icons/svg/groups.js.map +1 -0
  326. package/dist/headless/icons/svg/hub.js +8 -0
  327. package/dist/headless/icons/svg/hub.js.map +1 -0
  328. package/dist/headless/icons/svg/index.js +598 -576
  329. package/dist/headless/icons/svg/index.js.map +1 -1
  330. package/dist/headless/icons/svg/lan.js +9 -0
  331. package/dist/headless/icons/svg/lan.js.map +1 -0
  332. package/dist/headless/icons/svg/personOff.js +9 -0
  333. package/dist/headless/icons/svg/personOff.js.map +1 -0
  334. package/dist/headless/icons/svg/schema.js +9 -0
  335. package/dist/headless/icons/svg/schema.js.map +1 -0
  336. package/dist/headless/index.js +281 -255
  337. package/dist/headless/index.js.map +1 -1
  338. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx +60 -18
  339. package/dist/headless/source/components/dataDisplay/accordion/accordion.jsx.map +1 -1
  340. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +28 -3
  341. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  342. package/dist/headless/source/components/dataDisplay/badge/badge.jsx +8 -4
  343. package/dist/headless/source/components/dataDisplay/badge/badge.jsx.map +1 -1
  344. package/dist/headless/source/components/dataDisplay/card/card.jsx +4 -3
  345. package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
  346. package/dist/headless/source/components/dataDisplay/chart/chart.jsx +168 -0
  347. package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -0
  348. package/dist/headless/source/components/dataDisplay/chart/chartTheme.js +78 -0
  349. package/dist/headless/source/components/dataDisplay/chart/chartTheme.js.map +7 -0
  350. package/dist/headless/source/components/dataDisplay/chart/index.js +9 -0
  351. package/dist/headless/source/components/dataDisplay/chart/index.js.map +7 -0
  352. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +4 -3
  353. package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  354. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx +7 -5
  355. package/dist/headless/source/components/dataDisplay/chat/chatHeader.jsx.map +1 -1
  356. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx +4 -3
  357. package/dist/headless/source/components/dataDisplay/chat/chatMessageBubble.jsx.map +1 -1
  358. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx +30 -26
  359. package/dist/headless/source/components/dataDisplay/chat/chatShell.jsx.map +1 -1
  360. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +11 -6
  361. package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  362. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +42 -0
  363. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -0
  364. package/dist/headless/source/components/dataDisplay/descriptionList/index.js +7 -0
  365. package/dist/headless/source/components/dataDisplay/descriptionList/index.js.map +7 -0
  366. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx +10 -4
  367. package/dist/headless/source/components/dataDisplay/imagesList/imagesListItem/imagesListItem.jsx.map +1 -1
  368. package/dist/headless/source/components/dataDisplay/kanban/index.js +8 -0
  369. package/dist/headless/source/components/dataDisplay/kanban/index.js.map +7 -0
  370. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +99 -0
  371. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -0
  372. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +4 -3
  373. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  374. package/dist/headless/source/components/dataDisplay/list/list.jsx +4 -3
  375. package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
  376. package/dist/headless/source/components/dataDisplay/meter/index.js +8 -0
  377. package/dist/headless/source/components/dataDisplay/meter/index.js.map +7 -0
  378. package/dist/headless/source/components/dataDisplay/meter/meter.jsx +80 -0
  379. package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -0
  380. package/dist/headless/source/components/dataDisplay/personChip/index.js +8 -0
  381. package/dist/headless/source/components/dataDisplay/personChip/index.js.map +7 -0
  382. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +71 -0
  383. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -0
  384. package/dist/headless/source/components/dataDisplay/stat/index.js +7 -0
  385. package/dist/headless/source/components/dataDisplay/stat/index.js.map +7 -0
  386. package/dist/headless/source/components/dataDisplay/stat/stat.jsx +72 -0
  387. package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -0
  388. package/dist/headless/source/components/dataDisplay/table/table.jsx +11 -4
  389. package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
  390. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +8 -2
  391. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  392. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +37 -3
  393. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  394. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +10 -7
  395. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  396. package/dist/headless/source/components/dataDisplay/timeline/index.js +8 -0
  397. package/dist/headless/source/components/dataDisplay/timeline/index.js.map +7 -0
  398. package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx +64 -0
  399. package/dist/headless/source/components/dataDisplay/timeline/timeline.jsx.map +1 -0
  400. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +17 -3
  401. package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  402. package/dist/headless/source/components/feedBack/confirmDialog/confirmDialog.jsx +1 -1
  403. package/dist/headless/source/components/feedBack/confirmDialog/confirmDialog.jsx.map +1 -1
  404. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +47 -0
  405. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -0
  406. package/dist/headless/source/components/feedBack/emptyState/index.js +6 -0
  407. package/dist/headless/source/components/feedBack/emptyState/index.js.map +7 -0
  408. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx +52 -10
  409. package/dist/headless/source/components/feedBack/progressIndicator/progressIndicator.jsx.map +1 -1
  410. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx +4 -2
  411. package/dist/headless/source/components/feedBack/saveAssetDialog/saveAssetDialog.jsx.map +1 -1
  412. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +4 -2
  413. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  414. package/dist/headless/source/components/inputs/button/button.jsx +7 -3
  415. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  416. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx +4 -3
  417. package/dist/headless/source/components/inputs/datePicker/dataPickerInput.jsx.map +1 -1
  418. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +4 -6
  419. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  420. package/dist/headless/source/components/inputs/rating/rating.jsx +4 -3
  421. package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
  422. package/dist/headless/source/components/inputs/selectField/selectField.jsx +8 -2
  423. package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
  424. package/dist/headless/source/components/inputs/textField/textField.jsx +8 -6
  425. package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
  426. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx +4 -3
  427. package/dist/headless/source/components/inputs/textField/textFieldAdornment.jsx.map +1 -1
  428. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +9 -6
  429. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  430. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +4 -3
  431. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  432. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +3 -2
  433. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  434. package/dist/headless/source/components/layout/divider/divider.jsx +10 -6
  435. package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
  436. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +14 -10
  437. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  438. package/dist/headless/source/components/layout/sectionHeader/index.js +6 -0
  439. package/dist/headless/source/components/layout/sectionHeader/index.js.map +7 -0
  440. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +80 -0
  441. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -0
  442. package/dist/headless/source/components/layout/stack/stack.jsx +3 -2
  443. package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
  444. package/dist/headless/source/components/navigation/appBar/appBar.jsx +7 -5
  445. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  446. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +4 -3
  447. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  448. package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -7
  449. package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
  450. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +7 -5
  451. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  452. package/dist/headless/source/components/navigation/tabs/tabs.jsx +84 -4
  453. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  454. package/dist/headless/source/connects/rt/table/table.jsx +9 -1
  455. package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
  456. package/dist/headless/source/icons/catalog.js +78 -1
  457. package/dist/headless/source/icons/catalog.js.map +2 -2
  458. package/dist/headless/source/icons/svg/accountTree.js +11 -0
  459. package/dist/headless/source/icons/svg/accountTree.js.map +7 -0
  460. package/dist/headless/source/icons/svg/callSplit.js +11 -0
  461. package/dist/headless/source/icons/svg/callSplit.js.map +7 -0
  462. package/dist/headless/source/icons/svg/deviceHub.js +10 -0
  463. package/dist/headless/source/icons/svg/deviceHub.js.map +7 -0
  464. package/dist/headless/source/icons/svg/editNote.js +11 -0
  465. package/dist/headless/source/icons/svg/editNote.js.map +7 -0
  466. package/dist/headless/source/icons/svg/filterList.js +11 -0
  467. package/dist/headless/source/icons/svg/filterList.js.map +7 -0
  468. package/dist/headless/source/icons/svg/forkRight.js +10 -0
  469. package/dist/headless/source/icons/svg/forkRight.js.map +7 -0
  470. package/dist/headless/source/icons/svg/groups.js +11 -0
  471. package/dist/headless/source/icons/svg/groups.js.map +7 -0
  472. package/dist/headless/source/icons/svg/hub.js +10 -0
  473. package/dist/headless/source/icons/svg/hub.js.map +7 -0
  474. package/dist/headless/source/icons/svg/index.js +22 -0
  475. package/dist/headless/source/icons/svg/index.js.map +2 -2
  476. package/dist/headless/source/icons/svg/lan.js +11 -0
  477. package/dist/headless/source/icons/svg/lan.js.map +7 -0
  478. package/dist/headless/source/icons/svg/personOff.js +11 -0
  479. package/dist/headless/source/icons/svg/personOff.js.map +7 -0
  480. package/dist/headless/source/icons/svg/schema.js +11 -0
  481. package/dist/headless/source/icons/svg/schema.js.map +7 -0
  482. package/dist/headless/source/index.js +33 -1
  483. package/dist/headless/source/index.js.map +2 -2
  484. package/dist/icons/catalog.d.ts +1 -1
  485. package/dist/icons/catalog.js +78 -1
  486. package/dist/icons/catalog.js.map +1 -1
  487. package/dist/icons/index.js +596 -574
  488. package/dist/icons/index.js.map +1 -1
  489. package/dist/icons/svg/accountTree.d.ts +4 -0
  490. package/dist/icons/svg/accountTree.js +9 -0
  491. package/dist/icons/svg/accountTree.js.map +1 -0
  492. package/dist/icons/svg/callSplit.d.ts +4 -0
  493. package/dist/icons/svg/callSplit.js +9 -0
  494. package/dist/icons/svg/callSplit.js.map +1 -0
  495. package/dist/icons/svg/deviceHub.d.ts +4 -0
  496. package/dist/icons/svg/deviceHub.js +8 -0
  497. package/dist/icons/svg/deviceHub.js.map +1 -0
  498. package/dist/icons/svg/editNote.d.ts +4 -0
  499. package/dist/icons/svg/editNote.js +9 -0
  500. package/dist/icons/svg/editNote.js.map +1 -0
  501. package/dist/icons/svg/filterList.d.ts +4 -0
  502. package/dist/icons/svg/filterList.js +9 -0
  503. package/dist/icons/svg/filterList.js.map +1 -0
  504. package/dist/icons/svg/forkRight.d.ts +4 -0
  505. package/dist/icons/svg/forkRight.js +8 -0
  506. package/dist/icons/svg/forkRight.js.map +1 -0
  507. package/dist/icons/svg/groups.d.ts +4 -0
  508. package/dist/icons/svg/groups.js +9 -0
  509. package/dist/icons/svg/groups.js.map +1 -0
  510. package/dist/icons/svg/hub.d.ts +4 -0
  511. package/dist/icons/svg/hub.js +8 -0
  512. package/dist/icons/svg/hub.js.map +1 -0
  513. package/dist/icons/svg/index.d.ts +11 -0
  514. package/dist/icons/svg/index.js +598 -576
  515. package/dist/icons/svg/index.js.map +1 -1
  516. package/dist/icons/svg/lan.d.ts +4 -0
  517. package/dist/icons/svg/lan.js +9 -0
  518. package/dist/icons/svg/lan.js.map +1 -0
  519. package/dist/icons/svg/personOff.d.ts +4 -0
  520. package/dist/icons/svg/personOff.js +9 -0
  521. package/dist/icons/svg/personOff.js.map +1 -0
  522. package/dist/icons/svg/schema.d.ts +4 -0
  523. package/dist/icons/svg/schema.js +9 -0
  524. package/dist/icons/svg/schema.js.map +1 -0
  525. package/dist/index.d.ts +21 -5
  526. package/dist/index.js +281 -255
  527. package/dist/index.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 +2 -1
  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 +5 -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/package.json +79 -8
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/stepper/stepper.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/stepper/stepper.entry.less\";\nimport { type JSX, For, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface StepItem {\n label: JSX.Element;\n description?: JSX.Element;\n optional?: JSX.Element;\n /** Marks the step as errored. */\n error?: boolean;\n /** Disables interaction with the step. */\n disabled?: boolean;\n /** Custom icon overriding the default number/check. */\n icon?: JSX.Element;\n}\n\nexport interface StepperProps extends JSX.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n /** Index of the active (current) step. */\n activeStep: number;\n orientation?: \"horizontal\" | \"vertical\";\n /** Place the label under the icon (horizontal only). */\n alternativeLabel?: boolean;\n /** Makes steps clickable; receives the clicked step index. */\n onStepClick?: (index: number) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function Stepper(props: StepperProps): JSX.Element {\n const merged = mergeProps({ orientation: \"horizontal\" as const, alternativeLabel: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"steps\",\n \"activeStep\",\n \"orientation\",\n \"alternativeLabel\",\n \"onStepClick\",\n \"ref\",\n ]);\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"stepper\"\n class={cn(\n \"smwb-stepper\",\n `smwb-stepper_${local.orientation}`,\n { \"smwb-stepper_alt-label\": local.alternativeLabel && local.orientation === \"horizontal\" },\n local.class\n )}\n >\n <For each={local.steps}>\n {(step, index) => {\n const completed = (): boolean => index() < local.activeStep;\n const active = (): boolean => index() === local.activeStep;\n const isLast = (): boolean => index() === local.steps.length - 1;\n const clickable = (): boolean => Boolean(local.onStepClick) && !step.disabled;\n\n return (\n <>\n <div\n class={cn(\"smwb-stepper__step\", {\n \"smwb-stepper__step_active\": active(),\n \"smwb-stepper__step_completed\": completed(),\n \"smwb-stepper__step_error\": step.error,\n \"smwb-stepper__step_disabled\": step.disabled,\n \"smwb-stepper__step_clickable\": clickable(),\n })}\n aria-current={active() ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n onClick={clickable() ? () => local.onStepClick?.(index()) : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onStepClick?.(index());\n }\n }\n : undefined\n }\n >\n <div class=\"smwb-stepper__icon\" aria-hidden=\"true\">\n <Show when={step.icon} fallback={completed() ? <Icon name=\"check\" size={16} /> : <span>{index() + 1}</span>}>\n {step.icon}\n </Show>\n </div>\n <div class=\"smwb-stepper__text\">\n <span class=\"smwb-stepper__label\">{step.label}</span>\n <Show when={step.optional}>\n <span class=\"smwb-stepper__optional\">{step.optional}</span>\n </Show>\n <Show when={step.description && local.orientation === \"vertical\"}>\n <span class=\"smwb-stepper__description\">{step.description}</span>\n </Show>\n </div>\n </div>\n <Show when={!isLast()}>\n <div class=\"smwb-stepper__connector\" aria-hidden=\"true\" />\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n}\n\nexport default Stepper;\n"],"mappings":"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","names":[],"file":"stepper.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/stepper/stepper.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/stepper/stepper.entry.less\";\nimport { type JSX, For, Show, createMemo, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface StepItem {\n label: JSX.Element;\n /** Longer text under the label, in every orientation. */\n description?: JSX.Element;\n optional?: JSX.Element;\n /** Marks the step as errored. */\n error?: boolean;\n /** Disables interaction with the step. */\n disabled?: boolean;\n /** Custom icon overriding the default number/check. */\n icon?: JSX.Element;\n}\n\n/**\n * `auto` lays the steps out in a row while the stepper's container is wide\n * enough for them — about 8rem per step, a theme variable — and in a column when\n * it is not. It is a CSS container query, so the server renders the same markup\n * and nothing changes on hydration.\n */\nexport type StepperOrientation = \"horizontal\" | \"vertical\" | \"auto\";\n\nexport interface StepperProps extends JSX.HTMLAttributes<HTMLDivElement> {\n steps: StepItem[];\n /** Index of the active (current) step. */\n activeStep: number;\n orientation?: StepperOrientation;\n /** Place the label under the icon (in a row: horizontal, or auto while wide). */\n alternativeLabel?: boolean;\n /** Makes steps clickable; receives the clicked step index. */\n onStepClick?: (index: number) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\n/** Step counts with their own `auto` breakpoint; longer steppers use the last one. */\nconst AUTO_MAX_STEPS = 12;\n\nexport function Stepper(props: StepperProps): JSX.Element {\n const merged = mergeProps({ orientation: \"horizontal\" as StepperOrientation, alternativeLabel: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"steps\",\n \"activeStep\",\n \"orientation\",\n \"alternativeLabel\",\n \"onStepClick\",\n \"ref\",\n ]);\n\n // Read the steps once. An inline array is re-evaluated on every read, creating\n // the markup in it (icons, labels, descriptions) again; during hydration a copy\n // that is not the rendered one has no server DOM node to adopt.\n const steps = createMemo(() => local.steps);\n const auto = (): boolean => local.orientation === \"auto\";\n\n const stepper = (): JSX.Element => (\n <div\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"stepper\"\n data-steps={auto() ? String(Math.min(steps().length, AUTO_MAX_STEPS)) : undefined}\n class={cn(\n \"smwb-stepper\",\n auto() ? \"smwb-stepper_horizontal smwb-stepper_auto\" : `smwb-stepper_${local.orientation}`,\n { \"smwb-stepper_alt-label\": local.alternativeLabel && local.orientation !== \"vertical\" },\n local.class\n )}\n >\n <For each={steps()}>\n {(step, index) => {\n const completed = (): boolean => index() < local.activeStep;\n const active = (): boolean => index() === local.activeStep;\n const isLast = (): boolean => index() === steps().length - 1;\n const clickable = (): boolean => Boolean(local.onStepClick) && !step.disabled;\n\n return (\n <>\n <div\n class={cn(\"smwb-stepper__step\", {\n \"smwb-stepper__step_active\": active(),\n \"smwb-stepper__step_completed\": completed(),\n \"smwb-stepper__step_error\": step.error,\n \"smwb-stepper__step_disabled\": step.disabled,\n \"smwb-stepper__step_clickable\": clickable(),\n })}\n aria-current={active() ? \"step\" : undefined}\n aria-disabled={step.disabled || undefined}\n role={clickable() ? \"button\" : undefined}\n tabindex={clickable() ? 0 : undefined}\n onClick={clickable() ? () => local.onStepClick?.(index()) : undefined}\n onKeyDown={\n clickable()\n ? (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n local.onStepClick?.(index());\n }\n }\n : undefined\n }\n >\n <div class=\"smwb-stepper__icon\" aria-hidden=\"true\">\n <Show when={step.icon} fallback={completed() ? <Icon name=\"check\" size={16} /> : <span>{index() + 1}</span>}>\n {step.icon}\n </Show>\n </div>\n <div class=\"smwb-stepper__text\">\n <span class=\"smwb-stepper__label\">{step.label}</span>\n <Show when={step.optional}>\n <span class=\"smwb-stepper__optional\">{step.optional}</span>\n </Show>\n <Show when={step.description}>\n <span class=\"smwb-stepper__description\">{step.description}</span>\n </Show>\n </div>\n </div>\n <Show when={!isLast()}>\n <div class=\"smwb-stepper__connector\" aria-hidden=\"true\" />\n </Show>\n </>\n );\n }}\n </For>\n </div>\n );\n\n // `auto` needs a query container around the stepper: its own flex direction is\n // what the container query switches.\n return (\n <Show when={auto()} fallback={stepper()}>\n <div class=\"smwb-stepper-auto\">{stepper()}</div>\n </Show>\n );\n}\n\nexport default Stepper;\n"],"mappings":"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","names":[],"file":"stepper.jsx"}
@@ -1,5 +1,6 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/tabs/tab/tab.entry.less";
2
- import { Show, mergeProps, splitProps } from "solid-js";
3
+ import { Show, children, mergeProps, splitProps } from "solid-js";
3
4
  import { Dynamic } from "solid-js/web";
4
5
  import cn from "clsx";
5
6
  import { Ripple } from "../../../base/ripple";
@@ -22,6 +23,8 @@ function Tab(props) {
22
23
  "onClick",
23
24
  "ref"
24
25
  ]);
26
+ const icon = children(() => local.icon);
27
+ const label = children(() => local.label);
25
28
  let rippleActions;
26
29
  const active = () => ctx ? ctx.value() === index : local.isActive;
27
30
  const onClick = (event) => {
@@ -58,11 +61,11 @@ function Tab(props) {
58
61
  if (ctx?.indicatorContent) ctx.setContentRef(index, el);
59
62
  })}
60
63
  >
61
- <Show when={local.icon}>
62
- <span class="smwb-tab__icon">{local.icon}</span>
64
+ <Show when={icon()}>
65
+ <span class="smwb-tab__icon">{icon()}</span>
63
66
  </Show>
64
- <Show when={local.label}>
65
- <span class="smwb-tab__text-label">{local.label}</span>
67
+ <Show when={label()}>
68
+ <span class="smwb-tab__text-label">{label()}</span>
66
69
  </Show>
67
70
  </span>
68
71
  <Ripple actionRef={(actions) => rippleActions = actions} classes={{ child: "tab__ripple-child" }} />
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/components/navigation/tabs/tab/tab.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/tabs/tab/tab.entry.less\";\nimport { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../../base/ripple\";\nimport { useTabsContext } from \"../tabsContext\";\nimport { mergeRefs, type Ref } from \"../../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../../primitives/callHandler\";\n\nexport interface TabProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n label?: JSX.Element;\n isActive?: boolean;\n contentRef?: Ref<HTMLSpanElement>;\n icon?: JSX.Element;\n stacked?: boolean;\n tag?: string;\n disabled?: boolean;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport function Tab(props: ParentProps<TabProps>): JSX.Element {\n const ctx = useTabsContext();\n const index = ctx ? ctx.registerTab() : -1;\n const merged = mergeProps({ isActive: false, stacked: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"isActive\",\n \"contentRef\",\n \"icon\",\n \"stacked\",\n \"tag\",\n \"disabled\",\n \"onClick\",\n \"ref\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const active = (): boolean => (ctx ? ctx.value() === index : local.isActive);\n\n const onClick: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, MouseEvent> = (event) => {\n if (ctx) {\n ctx.onChange(event, index);\n } else {\n callHandler(local.onClick, event);\n }\n };\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n const tag = (): string => local.tag ?? \"button\";\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-tab\", local.class, {\n \"smwb-tab--active\": active(),\n \"smwb-tab--stacked\": local.stacked,\n \"smwb-tab--disabled\": local.disabled,\n })}\n onClick={onClick}\n onPointerDown={onPointerDown}\n role=\"tab\"\n aria-selected={active()}\n aria-disabled={local.disabled || undefined}\n tabindex={active() ? 0 : -1}\n disabled={tag() === \"button\" ? local.disabled : undefined}\n >\n <span\n class=\"smwb-tab__content\"\n ref={mergeRefs(local.contentRef, (el) => {\n if (ctx?.indicatorContent) ctx.setContentRef(index, el as HTMLSpanElement);\n })}\n >\n <Show when={local.icon}>\n <span class=\"smwb-tab__icon\">{local.icon}</span>\n </Show>\n <Show when={local.label}>\n <span class=\"smwb-tab__text-label\">{local.label}</span>\n </Show>\n </span>\n <Ripple actionRef={(actions) => (rippleActions = actions)} classes={{ child: \"tab__ripple-child\" }} />\n </Dynamic>\n );\n}\n\nexport default Tab;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,YAAY,kBAAkB;AACzE,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,sBAAsB;AAC/B,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAarB,SAAS,IAAI,OAA2C;AAC7D,QAAM,MAAM,eAAe;AAC3B,QAAM,QAAQ,MAAM,IAAI,YAAY,IAAI;AACxC,QAAM,SAAS,WAAW,EAAE,UAAU,OAAO,SAAS,MAAM,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,SAAS,MAAgB,MAAM,IAAI,MAAM,MAAM,QAAQ,MAAM;AAEnE,QAAM,UAA+E,CAAC,UAAU;AAC9F,QAAI,KAAK;AACP,UAAI,SAAS,OAAO,KAAK;AAAA,IAC3B,OAAO;AACL,kBAAY,MAAM,SAAS,KAAK;AAAA,IAClC;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,UAA8B;AACnD,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,QAAM,MAAM,MAAc,MAAM,OAAO;AAEvC,SACE,CAAC;AAAA,IACC,WAAW,IAAI;AAAA,QACX;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,YAAY,MAAM,OAAO;AAAA,MACjC,oBAAoB,OAAO;AAAA,MAC3B,qBAAqB,MAAM;AAAA,MAC3B,sBAAsB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,IACL,eAAe,OAAO;AAAA,IACtB,eAAe,MAAM,YAAY;AAAA,IACjC,UAAU,OAAO,IAAI,IAAI;AAAA,IACzB,UAAU,IAAI,MAAM,WAAW,MAAM,WAAW;AAAA,GACjD;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK,UAAU,MAAM,YAAY,CAAC,OAAO;AACvC,UAAI,KAAK,iBAAkB,KAAI,cAAc,OAAO,EAAqB;AAAA,IAC3E,CAAC;AAAA,GACF;AAAA,QACC,CAAC,KAAK,MAAM,MAAM,MAAM;AAAA,UACtB,CAAC,KAAK,MAAM,kBAAkB,MAAM,KAAK,EAAxC,KAA+C;AAAA,QAClD,EAFC,KAEM;AAAA,QACP,CAAC,KAAK,MAAM,MAAM,OAAO;AAAA,UACvB,CAAC,KAAK,MAAM,wBAAwB,MAAM,MAAM,EAA/C,KAAsD;AAAA,QACzD,EAFC,KAEM;AAAA,MACT,EAZC,KAYM;AAAA,MACP,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,SAAS,EAAE,OAAO,oBAAoB,GAAG,EAAE;AAAA,IACxG,EA/BC;AAiCL;AAEA,IAAO,cAAQ;","names":[],"file":"tab.jsx"}
1
+ {"version":3,"sources":["../../../../../../src/components/navigation/tabs/tab/tab.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/tabs/tab/tab.entry.less\";\nimport { type JSX, type ParentProps, Show, children, mergeProps, splitProps } from \"solid-js\";\nimport { Dynamic } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../../base/ripple\";\nimport { useTabsContext } from \"../tabsContext\";\nimport { mergeRefs, type Ref } from \"../../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../../primitives/callHandler\";\n\nexport interface TabProps extends JSX.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n label?: JSX.Element;\n isActive?: boolean;\n contentRef?: Ref<HTMLSpanElement>;\n icon?: JSX.Element;\n stacked?: boolean;\n tag?: string;\n /** With `tag=\"a\"`: where the link goes, so the tab stays a real link. */\n href?: string;\n disabled?: boolean;\n ref?: Ref<HTMLButtonElement | HTMLAnchorElement>;\n}\n\nexport function Tab(props: ParentProps<TabProps>): JSX.Element {\n const ctx = useTabsContext();\n const index = ctx ? ctx.registerTab() : -1;\n const merged = mergeProps({ isActive: false, stacked: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"label\",\n \"isActive\",\n \"contentRef\",\n \"icon\",\n \"stacked\",\n \"tag\",\n \"disabled\",\n \"onClick\",\n \"ref\",\n ]);\n\n // Read the icon and the label once: markup passed as a prop is created anew on\n // every read, and during hydration the copy made for the <Show> test has no\n // server DOM node to adopt (\"Unable to find DOM nodes for hydration key\").\n const icon = children(() => local.icon);\n const label = children(() => local.label);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const active = (): boolean => (ctx ? ctx.value() === index : local.isActive);\n\n const onClick: JSX.EventHandler<HTMLButtonElement | HTMLAnchorElement, MouseEvent> = (event) => {\n if (ctx) {\n ctx.onChange(event, index);\n } else {\n callHandler(local.onClick, event);\n }\n };\n\n const onPointerDown = (event: PointerEvent): void => {\n rippleActions?.onRipple(event);\n };\n\n const tag = (): string => local.tag ?? \"button\";\n\n return (\n <Dynamic\n component={tag()}\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\"smwb-tab\", local.class, {\n \"smwb-tab--active\": active(),\n \"smwb-tab--stacked\": local.stacked,\n \"smwb-tab--disabled\": local.disabled,\n })}\n onClick={onClick}\n onPointerDown={onPointerDown}\n role=\"tab\"\n aria-selected={active()}\n aria-disabled={local.disabled || undefined}\n tabindex={active() ? 0 : -1}\n disabled={tag() === \"button\" ? local.disabled : undefined}\n >\n <span\n class=\"smwb-tab__content\"\n ref={mergeRefs(local.contentRef, (el) => {\n if (ctx?.indicatorContent) ctx.setContentRef(index, el as HTMLSpanElement);\n })}\n >\n <Show when={icon()}>\n <span class=\"smwb-tab__icon\">{icon()}</span>\n </Show>\n <Show when={label()}>\n <span class=\"smwb-tab__text-label\">{label()}</span>\n </Show>\n </span>\n <Ripple actionRef={(actions) => (rippleActions = actions)} classes={{ child: \"tab__ripple-child\" }} />\n </Dynamic>\n );\n}\n\nexport default Tab;\n"],"mappings":"AAAA,OAAO;AACP,OAAO;AACP,SAAqC,MAAM,UAAU,YAAY,kBAAkB;AACnF,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,sBAAsB;AAC/B,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAerB,SAAS,IAAI,OAA2C;AAC7D,QAAM,MAAM,eAAe;AAC3B,QAAM,QAAQ,MAAM,IAAI,YAAY,IAAI;AACxC,QAAM,SAAS,WAAW,EAAE,UAAU,OAAO,SAAS,MAAM,GAAG,KAAK;AACpE,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAKD,QAAM,OAAO,SAAS,MAAM,MAAM,IAAI;AACtC,QAAM,QAAQ,SAAS,MAAM,MAAM,KAAK;AAExC,MAAI;AAEJ,QAAM,SAAS,MAAgB,MAAM,IAAI,MAAM,MAAM,QAAQ,MAAM;AAEnE,QAAM,UAA+E,CAAC,UAAU;AAC9F,QAAI,KAAK;AACP,UAAI,SAAS,OAAO,KAAK;AAAA,IAC3B,OAAO;AACL,kBAAY,MAAM,SAAS,KAAK;AAAA,IAClC;AAAA,EACF;AAEA,QAAM,gBAAgB,CAAC,UAA8B;AACnD,mBAAe,SAAS,KAAK;AAAA,EAC/B;AAEA,QAAM,MAAM,MAAc,MAAM,OAAO;AAEvC,SACE,CAAC;AAAA,IACC,WAAW,IAAI;AAAA,QACX;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO,GAAG,YAAY,MAAM,OAAO;AAAA,MACjC,oBAAoB,OAAO;AAAA,MAC3B,qBAAqB,MAAM;AAAA,MAC3B,sBAAsB,MAAM;AAAA,IAC9B,CAAC;AAAA,IACD,SAAS;AAAA,IACT,eAAe;AAAA,IACf,KAAK;AAAA,IACL,eAAe,OAAO;AAAA,IACtB,eAAe,MAAM,YAAY;AAAA,IACjC,UAAU,OAAO,IAAI,IAAI;AAAA,IACzB,UAAU,IAAI,MAAM,WAAW,MAAM,WAAW;AAAA,GACjD;AAAA,MACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,KAAK,UAAU,MAAM,YAAY,CAAC,OAAO;AACvC,UAAI,KAAK,iBAAkB,KAAI,cAAc,OAAO,EAAqB;AAAA,IAC3E,CAAC;AAAA,GACF;AAAA,QACC,CAAC,KAAK,MAAM,KAAK,GAAG;AAAA,UAClB,CAAC,KAAK,MAAM,kBAAkB,KAAK,EAAE,EAApC,KAA2C;AAAA,QAC9C,EAFC,KAEM;AAAA,QACP,CAAC,KAAK,MAAM,MAAM,GAAG;AAAA,UACnB,CAAC,KAAK,MAAM,wBAAwB,MAAM,EAAE,EAA3C,KAAkD;AAAA,QACrD,EAFC,KAEM;AAAA,MACT,EAZC,KAYM;AAAA,MACP,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,SAAS,EAAE,OAAO,oBAAoB,GAAG,EAAE;AAAA,IACxG,EA/BC;AAiCL;AAEA,IAAO,cAAQ;","names":[],"file":"tab.jsx"}
@@ -1,3 +1,4 @@
1
+ import "@smwb/ui-styles/less/tokens.entry.less";
1
2
  import "@smwb/ui-styles/less/components/tabs/tabs.entry.less";
2
3
  import { Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from "solid-js";
3
4
  import cn from "clsx";
@@ -5,10 +6,22 @@ import { debounce } from "../../../utils/debounce";
5
6
  import { animate } from "../../../utils/animate";
6
7
  import { TabsContext } from "./tabsContext";
7
8
  import { Tab } from "./tab/tab";
9
+ import { Icon } from "../../base/icon";
8
10
  import { mergeRefs } from "../../../primitives/mergeRefs";
9
11
  const VIEW_NEXT_TAB_PX = 40;
12
+ const SCROLL_PAGE = 0.8;
10
13
  function Tabs(props) {
11
- const merged = mergeProps({ indicatorContent: false, scrollable: false }, props);
14
+ const merged = mergeProps(
15
+ {
16
+ indicatorContent: false,
17
+ scrollable: false,
18
+ scrollButtons: false,
19
+ dense: false,
20
+ scrollBackAriaLabel: "Scroll tabs back",
21
+ scrollForwardAriaLabel: "Scroll tabs forward"
22
+ },
23
+ props
24
+ );
12
25
  const [local, rest] = splitProps(merged, [
13
26
  "class",
14
27
  "children",
@@ -16,11 +29,17 @@ function Tabs(props) {
16
29
  "value",
17
30
  "indicatorContent",
18
31
  "scrollable",
32
+ "scrollButtons",
33
+ "dense",
34
+ "scrollBackAriaLabel",
35
+ "scrollForwardAriaLabel",
19
36
  "aria-label",
20
37
  "ref"
21
38
  ]);
22
39
  const [mounted, setMounted] = createSignal(false);
23
40
  const [indicatorStyle, setIndicatorStyle] = createSignal({ root: {} });
41
+ const [overflowStart, setOverflowStart] = createSignal(false);
42
+ const [overflowEnd, setOverflowEnd] = createSignal(false);
24
43
  let tabsEl;
25
44
  let tabListEl;
26
45
  let tabCounter = 0;
@@ -63,10 +82,24 @@ function Tabs(props) {
63
82
  setIndicatorStyle(next);
64
83
  }
65
84
  };
85
+ const updateOverflow = () => {
86
+ if (!tabsEl || !local.scrollable) {
87
+ setOverflowStart(false);
88
+ setOverflowEnd(false);
89
+ return;
90
+ }
91
+ const max = tabsEl.scrollWidth - tabsEl.clientWidth;
92
+ setOverflowStart(tabsEl.scrollLeft > 1);
93
+ setOverflowEnd(tabsEl.scrollLeft < max - 1);
94
+ };
66
95
  const scroll = (scrollValue) => {
67
96
  if (!tabsEl) return;
68
97
  animate(tabsEl, "scrollLeft", scrollValue, { duration: 300 });
69
98
  };
99
+ const scrollByPage = (direction) => {
100
+ if (!tabsEl) return;
101
+ scroll(tabsEl.scrollLeft + direction * tabsEl.clientWidth * SCROLL_PAGE);
102
+ };
70
103
  const scrollSelectedIntoView = () => {
71
104
  const { tabsMeta, tabMeta } = getTabsMeta();
72
105
  if (!tabMeta || !tabsMeta) return;
@@ -79,17 +112,24 @@ function Tabs(props) {
79
112
  onMount(() => setMounted(true));
80
113
  createEffect(on(() => local.value, () => updateIndicatorState()));
81
114
  onMount(() => {
82
- const onResize = debounce(() => updateIndicatorState(), 166);
115
+ const onResize = debounce(() => {
116
+ updateIndicatorState();
117
+ updateOverflow();
118
+ }, 166);
83
119
  const view = tabsEl?.ownerDocument.defaultView;
84
120
  view?.addEventListener("resize", onResize);
121
+ tabsEl?.addEventListener("scroll", updateOverflow, { passive: true });
85
122
  let resizeObserver;
86
123
  if (typeof ResizeObserver !== "undefined" && tabListEl) {
87
124
  resizeObserver = new ResizeObserver(onResize);
125
+ if (tabsEl) resizeObserver.observe(tabsEl);
88
126
  Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));
89
127
  }
128
+ updateOverflow();
90
129
  onCleanup(() => {
91
130
  onResize.cancel();
92
131
  view?.removeEventListener("resize", onResize);
132
+ tabsEl?.removeEventListener("scroll", updateOverflow);
93
133
  resizeObserver?.disconnect();
94
134
  });
95
135
  });
@@ -106,10 +146,40 @@ function Tabs(props) {
106
146
  contentRefs[index] = el;
107
147
  }
108
148
  };
149
+ const showScrollButtons = () => local.scrollable && local.scrollButtons && (overflowStart() || overflowEnd());
109
150
  return <TabsContext.Provider value={contextValue}>
110
- <div {...rest} class={cn("smwb-tabs", local.class)} role="tabpanel" ref={mergeRefs(local.ref)}>
151
+ <div
152
+ {...rest}
153
+ class={cn(
154
+ "smwb-tabs",
155
+ {
156
+ "smwb-tabs--dense": local.dense,
157
+ "smwb-tabs--overflow-start": overflowStart(),
158
+ "smwb-tabs--overflow-end": overflowEnd()
159
+ },
160
+ local.class
161
+ )}
162
+ role="tabpanel"
163
+ ref={mergeRefs(local.ref)}
164
+ >
165
+ <Show when={showScrollButtons()}>
166
+ <button
167
+ type="button"
168
+ class="smwb-tabs__scroll-button smwb-tabs__scroll-button--start"
169
+ aria-label={local.scrollBackAriaLabel}
170
+ disabled={!overflowStart()}
171
+ onClick={() => scrollByPage(-1)}
172
+ >
173
+ <Icon name="chevron_left" size={20} />
174
+ </button>
175
+ </Show>
176
+ {
177
+ /* The scroller's class is static so it is on the element from the start:
178
+ a ref on Tabs can find the row by class right away. */
179
+ }
111
180
  <div
112
- class={cn("smwb-tabs__scroller", { "smwb-tabs__scroller--scrollable": local.scrollable })}
181
+ class="smwb-tabs__scroller"
182
+ classList={{ "smwb-tabs__scroller--scrollable": local.scrollable }}
113
183
  ref={(el) => tabsEl = el}
114
184
  >
115
185
  <div class="smwb-tabs__scroll-area" ref={(el) => tabListEl = el} role="tablist" aria-label={local["aria-label"]}>
@@ -130,6 +200,17 @@ function Tabs(props) {
130
200
  </span>
131
201
  </Show>
132
202
  </div>
203
+ <Show when={showScrollButtons()}>
204
+ <button
205
+ type="button"
206
+ class="smwb-tabs__scroll-button smwb-tabs__scroll-button--end"
207
+ aria-label={local.scrollForwardAriaLabel}
208
+ disabled={!overflowEnd()}
209
+ onClick={() => scrollByPage(1)}
210
+ >
211
+ <Icon name="chevron_right" size={20} />
212
+ </button>
213
+ </Show>
133
214
  </div>
134
215
  </TabsContext.Provider>;
135
216
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/components/tabs/tabs.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n value: number;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n indicatorContent?: boolean;\n scrollable?: boolean;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps({ indicatorContent: false, scrollable: false }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n let tabCounter = 0;\n const contentRefs: HTMLSpanElement[] = [];\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = contentRefs[local.value]?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value changes (and on mount).\n createEffect(on(() => local.value, () => updateIndicatorState()));\n\n // Keep the indicator in sync with resize.\n onMount(() => {\n const onResize = debounce(() => updateIndicatorState(), 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n indicatorContent: local.indicatorContent,\n registerTab: () => tabCounter++,\n setContentRef: (index, el) => {\n contentRefs[index] = el;\n },\n };\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div {...rest} class={cn(\"smwb-tabs\", local.class)} role=\"tabpanel\" ref={mergeRefs(local.ref)}>\n <div\n class={cn(\"smwb-tabs__scroller\", { \"smwb-tabs__scroller--scrollable\": local.scrollable })}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n {local.children}\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"mappings":"AAAA,OAAO;AACP,SAAqC,MAAM,cAAc,cAAc,YAAY,IAAI,WAAW,SAAS,kBAAkB;AAC7H,OAAO,QAAQ;AACf,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,mBAA0C;AACnD,SAAS,WAAW;AACpB,SAAS,iBAA2B;AAkBpC,MAAM,mBAAmB;AAElB,SAAS,KAAK,OAA4C;AAC/D,QAAM,SAAS,WAAW,EAAE,kBAAkB,OAAO,YAAY,MAAM,GAAG,KAAK;AAC/E,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,IAAI,aAAa,KAAK;AAChD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,aAA6B,EAAE,MAAM,CAAC,EAAE,CAAC;AAErF,MAAI;AACJ,MAAI;AACJ,MAAI,aAAa;AACjB,QAAM,cAAiC,CAAC;AAExC,QAAM,cAAc,MAAM;AACxB,QAAI;AACJ,QAAI,QAAQ;AACV,YAAM,OAAO,OAAO,sBAAsB;AAC1C,iBAAW,EAAE,aAAa,OAAO,aAAa,YAAY,OAAO,YAAY,MAAM,KAAK,MAAM,OAAO,KAAK,MAAM;AAAA,IAClH;AACA,QAAI,UAA0B;AAC9B,QAAI,iBAAiC;AACrC,QAAI,UAAU,aAAa,UAAU,SAAS,SAAS,GAAG;AACxD,YAAM,MAAM,UAAU,SAAS,MAAM,KAAK;AAC1C,gBAAU,MAAM,IAAI,sBAAsB,IAAI;AAC9C,UAAI,MAAM,kBAAkB;AAC1B,yBAAiB,YAAY,MAAM,KAAK,GAAG,sBAAsB,KAAK;AAAA,MACxE;AAAA,IACF;AACA,WAAO,EAAE,UAAU,SAAS,eAAe;AAAA,EAC7C;AAEA,QAAM,uBAAuB,MAAY;AACvC,UAAM,EAAE,UAAU,SAAS,eAAe,IAAI,YAAY;AAC1D,QAAI,aAAa;AACjB,QAAI,WAAW,UAAU;AACvB,mBAAa,QAAQ,OAAO,SAAS,OAAO,SAAS;AAAA,IACvD;AACA,UAAM,OAAuB,EAAE,MAAM,EAAE,MAAM,YAAY,OAAO,UAAU,QAAQ,QAAQ,EAAE,EAAE;AAC9F,QAAI,MAAM,oBAAoB,gBAAgB;AAC5C,WAAK,UAAU,EAAE,OAAO,eAAe,MAAM;AAAA,IAC/C;AACA,UAAM,OAAO,eAAe;AAC5B,QAAI,KAAK,KAAK,SAAS,UAAa,KAAK,KAAK,UAAU,QAAW;AACjE,wBAAkB,IAAI;AACtB;AAAA,IACF;AACA,UAAM,SAAS,KAAK,KAAK,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,EAAE;AACrE,UAAM,QAAQ,KAAK,KAAK,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,EAAE;AACtE,QAAI,UAAU,KAAK,SAAS,GAAG;AAC7B,wBAAkB,IAAI;AAAA,IACxB;AAAA,EACF;AAEA,QAAM,SAAS,CAAC,gBAA8B;AAC5C,QAAI,CAAC,OAAQ;AACb,YAAQ,QAAQ,cAAc,aAAa,EAAE,UAAU,IAAI,CAAC;AAAA,EAC9D;AAEA,QAAM,yBAAyB,MAAY;AACzC,UAAM,EAAE,UAAU,QAAQ,IAAI,YAAY;AAC1C,QAAI,CAAC,WAAW,CAAC,SAAU;AAC3B,QAAI,QAAQ,OAAO,SAAS,MAAM;AAChC,aAAO,SAAS,cAAc,QAAQ,OAAO,SAAS,QAAQ,gBAAgB;AAAA,IAChF,WAAW,QAAQ,QAAQ,SAAS,OAAO;AACzC,aAAO,SAAS,cAAc,QAAQ,QAAQ,SAAS,SAAS,gBAAgB;AAAA,IAClF;AAAA,EACF;AAEA,UAAQ,MAAM,WAAW,IAAI,CAAC;AAG9B,eAAa,GAAG,MAAM,MAAM,OAAO,MAAM,qBAAqB,CAAC,CAAC;AAGhE,UAAQ,MAAM;AACZ,UAAM,WAAW,SAAS,MAAM,qBAAqB,GAAG,GAAG;AAC3D,UAAM,OAAO,QAAQ,cAAc;AACnC,UAAM,iBAAiB,UAAU,QAAQ;AACzC,QAAI;AACJ,QAAI,OAAO,mBAAmB,eAAe,WAAW;AACtD,uBAAiB,IAAI,eAAe,QAAQ;AAC5C,YAAM,KAAK,UAAU,QAAQ,EAAE,QAAQ,CAAC,UAAU,gBAAgB,QAAQ,KAAK,CAAC;AAAA,IAClF;AACA,cAAU,MAAM;AACd,eAAS,OAAO;AAChB,YAAM,oBAAoB,UAAU,QAAQ;AAC5C,sBAAgB,WAAW;AAAA,IAC7B,CAAC;AAAA,EACH,CAAC;AAGD,eAAa,MAAM;AACjB,mBAAe;AACf,2BAAuB;AAAA,EACzB,CAAC;AAED,QAAM,eAAiC;AAAA,IACrC,OAAO,MAAM,MAAM;AAAA,IACnB,UAAU,MAAM;AAAA,IAChB,kBAAkB,MAAM;AAAA,IACxB,aAAa,MAAM;AAAA,IACnB,eAAe,CAAC,OAAO,OAAO;AAC5B,kBAAY,KAAK,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,SACE,CAAC,YAAY,SAAS,OAAO,cAAc;AAAA,MACzC,CAAC,QAAQ,MAAM,OAAO,GAAG,aAAa,MAAM,KAAK,GAAG,KAAK,WAAW,KAAK,UAAU,MAAM,GAAG,GAAG;AAAA,QAC7F,CAAC;AAAA,IACC,OAAO,GAAG,uBAAuB,EAAE,mCAAmC,MAAM,WAAW,CAAC;AAAA,IACxF,KAAK,CAAC,OAAQ,SAAS;AAAA,GACxB;AAAA,UACC,CAAC,IAAI,MAAM,yBAAyB,KAAK,CAAC,OAAQ,YAAY,IAAK,KAAK,UAAU,YAAY,MAAM,YAAY,GAAG;AAAA,aAChH,MAAM,SAAS;AAAA,UAClB,EAFC,IAEK;AAAA,UACN,CAAC,KAAK,MAAM,QAAQ,GAAG;AAAA,YACrB,CAAC;AAAA,IACC,MAAM;AAAA,IACN,OAAO;AAAA,MACL,MAAM,GAAG,eAAe,EAAE,KAAK,QAAQ,CAAC;AAAA,MACxC,OAAO,GAAG,eAAe,EAAE,KAAK,SAAS,CAAC;AAAA,IAC5C;AAAA,GACD;AAAA,cACC,CAAC;AAAA,IACC,MAAM;AAAA,IACN,OAAO,eAAe,EAAE,UAAU,EAAE,OAAO,GAAG,eAAe,EAAE,SAAS,SAAS,CAAC,KAAK,IAAI,CAAC;AAAA,EAC9F,EAAE;AAAA,YACJ,EAXC,KAWM;AAAA,UACT,EAbC,KAaM;AAAA,QACT,EArBC,IAqBK;AAAA,MACR,EAvBC,IAuBK;AAAA,IACR,EAzBC,YAAY;AA2BjB;AAIA,IAAO,eAAQ;","names":[],"file":"tabs.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/navigation/tabs/tabs.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/tabs/tabs.entry.less\";\nimport { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { debounce } from \"../../../utils/debounce\";\nimport { animate } from \"../../../utils/animate\";\nimport { TabsContext, type TabsContextValue } from \"./tabsContext\";\nimport { Tab } from \"./tab/tab\";\nimport { Icon } from \"../../base/icon\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface TabsProps {\n value: number;\n onChange: (event: MouseEvent & { currentTarget: HTMLElement; target: Element }, index: number) => void;\n indicatorContent?: boolean;\n /**\n * Let the tab row scroll sideways instead of clipping it. The edge beyond which\n * more tabs are hidden fades out.\n */\n scrollable?: boolean;\n /** With `scrollable`: buttons at both ends that scroll the row while it overflows. */\n scrollButtons?: boolean;\n /** Compact tabs: labels as written (no capitals, no letter spacing) and less padding. */\n dense?: boolean;\n /** Accessible label of the button that scrolls back. */\n scrollBackAriaLabel?: string;\n /** Accessible label of the button that scrolls forward. */\n scrollForwardAriaLabel?: string;\n class?: string;\n children?: JSX.Element;\n \"aria-label\"?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\ninterface IndicatorStyle {\n root: { left?: number; width?: number };\n content?: { width: number };\n}\n\nconst VIEW_NEXT_TAB_PX = 40;\n/** A scroll button moves the row by this share of its visible width. */\nconst SCROLL_PAGE = 0.8;\n\nexport function Tabs(props: ParentProps<TabsProps>): JSX.Element {\n const merged = mergeProps(\n {\n indicatorContent: false,\n scrollable: false,\n scrollButtons: false,\n dense: false,\n scrollBackAriaLabel: \"Scroll tabs back\",\n scrollForwardAriaLabel: \"Scroll tabs forward\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"onChange\",\n \"value\",\n \"indicatorContent\",\n \"scrollable\",\n \"scrollButtons\",\n \"dense\",\n \"scrollBackAriaLabel\",\n \"scrollForwardAriaLabel\",\n \"aria-label\",\n \"ref\",\n ]);\n\n const [mounted, setMounted] = createSignal(false);\n const [indicatorStyle, setIndicatorStyle] = createSignal<IndicatorStyle>({ root: {} });\n // Whether tabs are hidden past the start / the end of a scrollable row. Only\n // measured in the browser, so the server markup shows neither.\n const [overflowStart, setOverflowStart] = createSignal(false);\n const [overflowEnd, setOverflowEnd] = createSignal(false);\n\n let tabsEl: HTMLDivElement | undefined;\n let tabListEl: HTMLDivElement | undefined;\n let tabCounter = 0;\n const contentRefs: HTMLSpanElement[] = [];\n\n const getTabsMeta = () => {\n let tabsMeta: { clientWidth: number; scrollLeft: number; left: number; right: number } | undefined;\n if (tabsEl) {\n const rect = tabsEl.getBoundingClientRect();\n tabsMeta = { clientWidth: tabsEl.clientWidth, scrollLeft: tabsEl.scrollLeft, left: rect.left, right: rect.right };\n }\n let tabMeta: DOMRect | null = null;\n let tabContentMeta: DOMRect | null = null;\n if (tabsEl && tabListEl && tabListEl.children.length > 0) {\n const tab = tabListEl.children[local.value];\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (local.indicatorContent) {\n tabContentMeta = contentRefs[local.value]?.getBoundingClientRect() ?? null;\n }\n }\n return { tabsMeta, tabMeta, tabContentMeta };\n };\n\n const updateIndicatorState = (): void => {\n const { tabsMeta, tabMeta, tabContentMeta } = getTabsMeta();\n let startValue = 0;\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.left - tabsMeta.left + tabsMeta.scrollLeft;\n }\n const next: IndicatorStyle = { root: { left: startValue, width: tabMeta ? tabMeta.width : 0 } };\n if (local.indicatorContent && tabContentMeta) {\n next.content = { width: tabContentMeta.width };\n }\n const prev = indicatorStyle();\n if (prev.root.left === undefined || prev.root.width === undefined) {\n setIndicatorStyle(next);\n return;\n }\n const dStart = Math.abs((prev.root.left ?? 0) - (next.root.left ?? 0));\n const dSize = Math.abs((prev.root.width ?? 0) - (next.root.width ?? 0));\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(next);\n }\n };\n\n const updateOverflow = (): void => {\n if (!tabsEl || !local.scrollable) {\n setOverflowStart(false);\n setOverflowEnd(false);\n return;\n }\n const max = tabsEl.scrollWidth - tabsEl.clientWidth;\n setOverflowStart(tabsEl.scrollLeft > 1);\n setOverflowEnd(tabsEl.scrollLeft < max - 1);\n };\n\n const scroll = (scrollValue: number): void => {\n if (!tabsEl) return;\n animate(tabsEl, \"scrollLeft\", scrollValue, { duration: 300 });\n };\n\n const scrollByPage = (direction: -1 | 1): void => {\n if (!tabsEl) return;\n scroll(tabsEl.scrollLeft + direction * tabsEl.clientWidth * SCROLL_PAGE);\n };\n\n const scrollSelectedIntoView = (): void => {\n const { tabsMeta, tabMeta } = getTabsMeta();\n if (!tabMeta || !tabsMeta) return;\n if (tabMeta.left < tabsMeta.left) {\n scroll(tabsMeta.scrollLeft + (tabMeta.left - tabsMeta.left) - VIEW_NEXT_TAB_PX);\n } else if (tabMeta.right > tabsMeta.right) {\n scroll(tabsMeta.scrollLeft + (tabMeta.right - tabsMeta.right) + VIEW_NEXT_TAB_PX);\n }\n };\n\n onMount(() => setMounted(true));\n\n // Re-measure when the active value changes (and on mount).\n createEffect(on(() => local.value, () => updateIndicatorState()));\n\n // Keep the indicator and the overflow state in sync with resizes: of the\n // window, of the row, and of each tab (a label can grow with its data).\n onMount(() => {\n const onResize = debounce(() => {\n updateIndicatorState();\n updateOverflow();\n }, 166);\n const view = tabsEl?.ownerDocument.defaultView;\n view?.addEventListener(\"resize\", onResize);\n tabsEl?.addEventListener(\"scroll\", updateOverflow, { passive: true });\n let resizeObserver: ResizeObserver | undefined;\n if (typeof ResizeObserver !== \"undefined\" && tabListEl) {\n resizeObserver = new ResizeObserver(onResize);\n if (tabsEl) resizeObserver.observe(tabsEl);\n Array.from(tabListEl.children).forEach((child) => resizeObserver?.observe(child));\n }\n updateOverflow();\n onCleanup(() => {\n onResize.cancel();\n view?.removeEventListener(\"resize\", onResize);\n tabsEl?.removeEventListener(\"scroll\", updateOverflow);\n resizeObserver?.disconnect();\n });\n });\n\n // Scroll the selected tab into view when the indicator moves.\n createEffect(() => {\n indicatorStyle();\n scrollSelectedIntoView();\n });\n\n const contextValue: TabsContextValue = {\n value: () => local.value,\n onChange: local.onChange,\n indicatorContent: local.indicatorContent,\n registerTab: () => tabCounter++,\n setContentRef: (index, el) => {\n contentRefs[index] = el;\n },\n };\n\n const showScrollButtons = (): boolean => local.scrollable && local.scrollButtons && (overflowStart() || overflowEnd());\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n {...rest}\n class={cn(\n \"smwb-tabs\",\n {\n \"smwb-tabs--dense\": local.dense,\n \"smwb-tabs--overflow-start\": overflowStart(),\n \"smwb-tabs--overflow-end\": overflowEnd(),\n },\n local.class\n )}\n role=\"tabpanel\"\n ref={mergeRefs(local.ref)}\n >\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--start\"\n aria-label={local.scrollBackAriaLabel}\n disabled={!overflowStart()}\n onClick={() => scrollByPage(-1)}\n >\n <Icon name=\"chevron_left\" size={20} />\n </button>\n </Show>\n {/* The scroller's class is static so it is on the element from the start:\n a ref on Tabs can find the row by class right away. */}\n <div\n class=\"smwb-tabs__scroller\"\n classList={{ \"smwb-tabs__scroller--scrollable\": local.scrollable }}\n ref={(el) => (tabsEl = el)}\n >\n <div class=\"smwb-tabs__scroll-area\" ref={(el) => (tabListEl = el)} role=\"tablist\" aria-label={local[\"aria-label\"]}>\n {local.children}\n </div>\n <Show when={mounted()}>\n <span\n class=\"smwb-tabs__indicator\"\n style={{\n left: `${indicatorStyle().root.left ?? 0}px`,\n width: `${indicatorStyle().root.width ?? 0}px`,\n }}\n >\n <span\n class=\"smwb-tabs__indicator-content\"\n style={indicatorStyle().content ? { width: `${indicatorStyle().content?.width ?? 0}px` } : {}}\n />\n </span>\n </Show>\n </div>\n <Show when={showScrollButtons()}>\n <button\n type=\"button\"\n class=\"smwb-tabs__scroll-button smwb-tabs__scroll-button--end\"\n aria-label={local.scrollForwardAriaLabel}\n disabled={!overflowEnd()}\n onClick={() => scrollByPage(1)}\n >\n <Icon name=\"chevron_right\" size={20} />\n </button>\n </Show>\n </div>\n </TabsContext.Provider>\n );\n}\n\nexport { Tab };\nexport type { TabProps } from \"./tab/tab\";\nexport default Tabs;\n"],"mappings":"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","names":[],"file":"tabs.jsx"}
@@ -99,6 +99,10 @@ function Table(props) {
99
99
  return settings ? { paginationSettings: settings } : {};
100
100
  });
101
101
  const align = () => local.cellAlign ?? "left";
102
+ const cellLabel = (column) => {
103
+ const label = column.meta?.label ?? (typeof column.header === "string" ? column.header : void 0);
104
+ return label ? { label } : {};
105
+ };
102
106
  return <SmwbTable
103
107
  {...rest}
104
108
  {...paginationProp()}
@@ -156,7 +160,11 @@ function Table(props) {
156
160
  {(row) => <>
157
161
  <TableRow onClick={(event) => local.onBodyRowClick?.(row, event)}>
158
162
  <For each={row.getVisibleCells()}>
159
- {(cell) => <TableCell cellAlign={align()} {...cell.column.columnDef.meta?.cellProps}>
163
+ {(cell) => <TableCell
164
+ cellAlign={align()}
165
+ {...cellLabel(cell.column.columnDef)}
166
+ {...cell.column.columnDef.meta?.cellProps}
167
+ >
160
168
  {flexRender(cell.column.columnDef.cell, cell.getContext())}
161
169
  </TableCell>}
162
170
  </For>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/connects/rt/table/table.tsx"],"sourcesContent":["import { For, Show, createMemo, createSignal, splitProps, type JSX } from \"solid-js\";\nimport {\n createSolidTable,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type ColumnDef,\n type Row,\n type RowData,\n type SortingState,\n type TableOptions,\n} from \"@tanstack/solid-table\";\n\nimport {\n Table as SmwbTable,\n TableBody,\n TableCell,\n TableHead,\n TableHeadCell,\n TableRow,\n type SortDirection,\n type TableProps as SmwbTableProps,\n type TablePaginationProps,\n} from \"../../../components/dataDisplay/table\";\nimport { ProgressIndicator } from \"../../../components/feedBack/progressIndicator\";\nimport { Message } from \"../../../components/feedBack/message\";\n\ndeclare module \"@tanstack/table-core\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n /** Extra attributes for every body cell of the column. */\n cellProps?: JSX.ThHTMLAttributes<HTMLTableCellElement>;\n }\n}\n\nexport interface RtTableProps<TData extends RowData, TValue = unknown> extends SmwbTableProps {\n data: TData[];\n columns: ColumnDef<TData, TValue>[];\n /** Enables the sort affordance in head cells and the sorted row model. */\n sortable?: boolean;\n /** Initial sorting, e.g. `[{ id: \"name\", desc: false }]`. */\n defaultSorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n withPagination?: boolean;\n /** Rows come from the outside page by page; the total is unknown. */\n isInfinite?: boolean;\n limit?: number;\n limitOptions?: number[];\n onNextPage?: () => void;\n onPrevPage?: () => void;\n expandable?: boolean;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n renderSubComponent?: (props: { row: Row<TData> }) => JSX.Element;\n cellAlign?: \"left\" | \"right\" | \"center\";\n error?: string;\n onHeadCellClick?: (column: ColumnDef<TData, TValue>) => void;\n onBodyRowClick?: (row: Row<TData>, event: MouseEvent) => void;\n}\n\n/**\n * TanStack Table bound to the smwb table components.\n *\n * The connector owns only what the two sides must agree on — row models, the\n * sort affordance in the head cell, the pagination footer, and the loading /\n * error / empty rows. Everything else stays TanStack's: columns are plain\n * `ColumnDef`s and cells are rendered through `flexRender`, so any column\n * definition written against the React connector works here unchanged.\n *\n * `@tanstack/solid-table` is an optional peer: it ships with the connector's\n * subpath only, and a consumer that never imports the subpath never installs it.\n */\nexport function Table<TData extends RowData, TValue = unknown>(\n props: RtTableProps<TData, TValue>\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"data\",\n \"columns\",\n \"sortable\",\n \"defaultSorting\",\n \"onSortingChange\",\n \"withPagination\",\n \"isInfinite\",\n \"limit\",\n \"limitOptions\",\n \"onNextPage\",\n \"onPrevPage\",\n \"expandable\",\n \"getRowCanExpand\",\n \"renderSubComponent\",\n \"cellAlign\",\n \"error\",\n \"onHeadCellClick\",\n \"onBodyRowClick\",\n \"isLoading\",\n ]);\n\n const limit = (): number => local.limit ?? 5;\n const [sorting, setSorting] = createSignal<SortingState>(local.defaultSorting ?? []);\n\n // Options are a getter object: Solid has no render pass to rebuild them on,\n // so the table reads current data, columns and sorting on every access.\n const table = createSolidTable({\n get data() {\n return local.data;\n },\n get columns() {\n return local.columns;\n },\n state: {\n get sorting() {\n return sorting();\n },\n },\n initialState: { pagination: { pageIndex: 0, pageSize: limit() } },\n manualPagination: local.isInfinite,\n getCoreRowModel: getCoreRowModel(),\n onSortingChange: (updater) => {\n const next = typeof updater === \"function\" ? updater(sorting()) : updater;\n setSorting(next);\n local.onSortingChange?.(next);\n },\n get getSortedRowModel() {\n return local.sortable ? getSortedRowModel() : undefined;\n },\n get getPaginationRowModel() {\n return local.withPagination ? getPaginationRowModel() : undefined;\n },\n get getExpandedRowModel() {\n return local.expandable ? getExpandedRowModel() : undefined;\n },\n get getRowCanExpand() {\n return local.expandable ? local.getRowCanExpand : undefined;\n },\n } as TableOptions<TData>);\n\n const pagination = createMemo<TablePaginationProps | undefined>(() => {\n if (!local.withPagination) return undefined;\n const state = table.getState().pagination;\n const base = {\n limit: state.pageSize,\n page: state.pageIndex + 1,\n limitOptions: local.limitOptions ?? [5, 10, 15],\n onNext: () => {\n table.nextPage();\n local.onNextPage?.();\n },\n onPrev: () => {\n table.previousPage();\n local.onPrevPage?.();\n },\n onLimitChange: (value: number) => table.setPageSize(value),\n };\n return local.isInfinite\n ? { ...base, hasNextPage: local.data.length >= state.pageSize }\n : { ...base, totalCount: table.getFilteredRowModel().rows.length };\n });\n\n const columnCount = (): number => table.getVisibleFlatColumns().length || 1;\n\n // Spread instead of a prop: with exactOptionalPropertyTypes an explicit\n // `undefined` is not the same as an absent prop, and the footer is absent\n // whenever pagination is off.\n const paginationProp = createMemo(() => {\n const settings = pagination();\n return settings ? { paginationSettings: settings } : {};\n });\n\n const align = (): \"left\" | \"right\" | \"center\" => local.cellAlign ?? \"left\";\n\n return (\n <SmwbTable\n {...rest}\n {...paginationProp()}\n isLoading={local.isLoading ?? false}\n hovered={!!local.onBodyRowClick}\n >\n <TableHead>\n <For each={table.getHeaderGroups()}>\n {(headerGroup) => (\n <TableRow>\n <For each={headerGroup.headers}>\n {(header) => {\n const canSort = (): boolean => !!local.sortable && header.column.getCanSort();\n return (\n <TableHeadCell\n cellAlign={align()}\n sortable={canSort()}\n sortDirection={(header.column.getIsSorted() || false) as SortDirection}\n onSort={() => {\n if (canSort()) header.column.toggleSorting();\n }}\n onClick={() => {\n local.onHeadCellClick?.(header.column.columnDef);\n }}\n {...(header.getSize() ? { style: { width: `${header.getSize()}px` } } : {})}\n >\n <Show when={!header.isPlaceholder}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Show>\n </TableHeadCell>\n );\n }}\n </For>\n </TableRow>\n )}\n </For>\n </TableHead>\n\n <TableBody>\n <Show\n when={!local.isLoading}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <ProgressIndicator variant=\"circular\" type=\"indeterminate\" />\n </TableCell>\n </TableRow>\n }\n >\n <Show\n when={!local.error}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <Message variant=\"filled\" type=\"error\">\n {local.error}\n </Message>\n </TableCell>\n </TableRow>\n }\n >\n <For each={table.getRowModel().rows}>\n {(row) => (\n <>\n <TableRow onClick={(event: MouseEvent) => local.onBodyRowClick?.(row, event)}>\n <For each={row.getVisibleCells()}>\n {(cell) => (\n <TableCell cellAlign={align()} {...cell.column.columnDef.meta?.cellProps}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )}\n </For>\n </TableRow>\n <Show when={row.getIsExpanded() && local.renderSubComponent}>\n <TableRow>\n <TableCell colSpan={row.getVisibleCells().length}>\n {local.renderSubComponent?.({ row })}\n </TableCell>\n </TableRow>\n </Show>\n </>\n )}\n </For>\n </Show>\n </Show>\n </TableBody>\n </SmwbTable>\n );\n}\n\nexport default Table;\n"],"mappings":"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","names":[],"file":"table.jsx"}
1
+ {"version":3,"sources":["../../../../../src/connects/rt/table/table.tsx"],"sourcesContent":["import { For, Show, createMemo, createSignal, splitProps, type JSX } from \"solid-js\";\nimport {\n createSolidTable,\n flexRender,\n getCoreRowModel,\n getExpandedRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type ColumnDef,\n type Row,\n type RowData,\n type SortingState,\n type TableOptions,\n} from \"@tanstack/solid-table\";\n\nimport {\n Table as SmwbTable,\n TableBody,\n TableCell,\n TableHead,\n TableHeadCell,\n TableRow,\n type SortDirection,\n type TableProps as SmwbTableProps,\n type TablePaginationProps,\n} from \"../../../components/dataDisplay/table\";\nimport { ProgressIndicator } from \"../../../components/feedBack/progressIndicator\";\nimport { Message } from \"../../../components/feedBack/message\";\n\ndeclare module \"@tanstack/table-core\" {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ColumnMeta<TData extends RowData, TValue> {\n /** Extra attributes for every body cell of the column. */\n cellProps?: JSX.ThHTMLAttributes<HTMLTableCellElement>;\n /** The column's name on each cell when rows stack as cards (`stackBelow`); a string `header` is used by default. */\n label?: string;\n }\n}\n\nexport interface RtTableProps<TData extends RowData, TValue = unknown> extends SmwbTableProps {\n data: TData[];\n columns: ColumnDef<TData, TValue>[];\n /** Enables the sort affordance in head cells and the sorted row model. */\n sortable?: boolean;\n /** Initial sorting, e.g. `[{ id: \"name\", desc: false }]`. */\n defaultSorting?: SortingState;\n onSortingChange?: (sorting: SortingState) => void;\n withPagination?: boolean;\n /** Rows come from the outside page by page; the total is unknown. */\n isInfinite?: boolean;\n limit?: number;\n limitOptions?: number[];\n onNextPage?: () => void;\n onPrevPage?: () => void;\n expandable?: boolean;\n getRowCanExpand?: (row: Row<TData>) => boolean;\n renderSubComponent?: (props: { row: Row<TData> }) => JSX.Element;\n cellAlign?: \"left\" | \"right\" | \"center\";\n error?: string;\n onHeadCellClick?: (column: ColumnDef<TData, TValue>) => void;\n onBodyRowClick?: (row: Row<TData>, event: MouseEvent) => void;\n}\n\n/**\n * TanStack Table bound to the smwb table components.\n *\n * The connector owns only what the two sides must agree on — row models, the\n * sort affordance in the head cell, the pagination footer, and the loading /\n * error / empty rows. Everything else stays TanStack's: columns are plain\n * `ColumnDef`s and cells are rendered through `flexRender`, so any column\n * definition written against the React connector works here unchanged.\n *\n * `@tanstack/solid-table` is an optional peer: it ships with the connector's\n * subpath only, and a consumer that never imports the subpath never installs it.\n */\nexport function Table<TData extends RowData, TValue = unknown>(\n props: RtTableProps<TData, TValue>\n): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"data\",\n \"columns\",\n \"sortable\",\n \"defaultSorting\",\n \"onSortingChange\",\n \"withPagination\",\n \"isInfinite\",\n \"limit\",\n \"limitOptions\",\n \"onNextPage\",\n \"onPrevPage\",\n \"expandable\",\n \"getRowCanExpand\",\n \"renderSubComponent\",\n \"cellAlign\",\n \"error\",\n \"onHeadCellClick\",\n \"onBodyRowClick\",\n \"isLoading\",\n ]);\n\n const limit = (): number => local.limit ?? 5;\n const [sorting, setSorting] = createSignal<SortingState>(local.defaultSorting ?? []);\n\n // Options are a getter object: Solid has no render pass to rebuild them on,\n // so the table reads current data, columns and sorting on every access.\n const table = createSolidTable({\n get data() {\n return local.data;\n },\n get columns() {\n return local.columns;\n },\n state: {\n get sorting() {\n return sorting();\n },\n },\n initialState: { pagination: { pageIndex: 0, pageSize: limit() } },\n manualPagination: local.isInfinite,\n getCoreRowModel: getCoreRowModel(),\n onSortingChange: (updater) => {\n const next = typeof updater === \"function\" ? updater(sorting()) : updater;\n setSorting(next);\n local.onSortingChange?.(next);\n },\n get getSortedRowModel() {\n return local.sortable ? getSortedRowModel() : undefined;\n },\n get getPaginationRowModel() {\n return local.withPagination ? getPaginationRowModel() : undefined;\n },\n get getExpandedRowModel() {\n return local.expandable ? getExpandedRowModel() : undefined;\n },\n get getRowCanExpand() {\n return local.expandable ? local.getRowCanExpand : undefined;\n },\n } as TableOptions<TData>);\n\n const pagination = createMemo<TablePaginationProps | undefined>(() => {\n if (!local.withPagination) return undefined;\n const state = table.getState().pagination;\n const base = {\n limit: state.pageSize,\n page: state.pageIndex + 1,\n limitOptions: local.limitOptions ?? [5, 10, 15],\n onNext: () => {\n table.nextPage();\n local.onNextPage?.();\n },\n onPrev: () => {\n table.previousPage();\n local.onPrevPage?.();\n },\n onLimitChange: (value: number) => table.setPageSize(value),\n };\n return local.isInfinite\n ? { ...base, hasNextPage: local.data.length >= state.pageSize }\n : { ...base, totalCount: table.getFilteredRowModel().rows.length };\n });\n\n const columnCount = (): number => table.getVisibleFlatColumns().length || 1;\n\n // Spread instead of a prop: with exactOptionalPropertyTypes an explicit\n // `undefined` is not the same as an absent prop, and the footer is absent\n // whenever pagination is off.\n const paginationProp = createMemo(() => {\n const settings = pagination();\n return settings ? { paginationSettings: settings } : {};\n });\n\n const align = (): \"left\" | \"right\" | \"center\" => local.cellAlign ?? \"left\";\n // A body cell's label for the stacked layout: the column's meta.label, or its\n // header when that is plain text.\n const cellLabel = (column: ColumnDef<TData, TValue>): { label?: string } => {\n const label = column.meta?.label ?? (typeof column.header === \"string\" ? column.header : undefined);\n return label ? { label } : {};\n };\n\n return (\n <SmwbTable\n {...rest}\n {...paginationProp()}\n isLoading={local.isLoading ?? false}\n hovered={!!local.onBodyRowClick}\n >\n <TableHead>\n <For each={table.getHeaderGroups()}>\n {(headerGroup) => (\n <TableRow>\n <For each={headerGroup.headers}>\n {(header) => {\n const canSort = (): boolean => !!local.sortable && header.column.getCanSort();\n return (\n <TableHeadCell\n cellAlign={align()}\n sortable={canSort()}\n sortDirection={(header.column.getIsSorted() || false) as SortDirection}\n onSort={() => {\n if (canSort()) header.column.toggleSorting();\n }}\n onClick={() => {\n local.onHeadCellClick?.(header.column.columnDef);\n }}\n {...(header.getSize() ? { style: { width: `${header.getSize()}px` } } : {})}\n >\n <Show when={!header.isPlaceholder}>\n {flexRender(header.column.columnDef.header, header.getContext())}\n </Show>\n </TableHeadCell>\n );\n }}\n </For>\n </TableRow>\n )}\n </For>\n </TableHead>\n\n <TableBody>\n <Show\n when={!local.isLoading}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <ProgressIndicator variant=\"circular\" type=\"indeterminate\" />\n </TableCell>\n </TableRow>\n }\n >\n <Show\n when={!local.error}\n fallback={\n <TableRow class=\"smwb-table__loader__row\">\n <TableCell class=\"smwb-table__loader\" colSpan={columnCount()}>\n <Message variant=\"filled\" type=\"error\">\n {local.error}\n </Message>\n </TableCell>\n </TableRow>\n }\n >\n <For each={table.getRowModel().rows}>\n {(row) => (\n <>\n <TableRow onClick={(event: MouseEvent) => local.onBodyRowClick?.(row, event)}>\n <For each={row.getVisibleCells()}>\n {(cell) => (\n <TableCell\n cellAlign={align()}\n {...cellLabel(cell.column.columnDef as ColumnDef<TData, TValue>)}\n {...cell.column.columnDef.meta?.cellProps}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n )}\n </For>\n </TableRow>\n <Show when={row.getIsExpanded() && local.renderSubComponent}>\n <TableRow>\n <TableCell colSpan={row.getVisibleCells().length}>\n {local.renderSubComponent?.({ row })}\n </TableCell>\n </TableRow>\n </Show>\n </>\n )}\n </For>\n </Show>\n </Show>\n </TableBody>\n </SmwbTable>\n );\n}\n\nexport default Table;\n"],"mappings":"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","names":[],"file":"table.jsx"}
@@ -59,6 +59,13 @@ const iconCatalog = [
59
59
  aliases: ["user_circle"],
60
60
  keywords: ["account", "user", "profile", "avatar", "person"]
61
61
  },
62
+ {
63
+ name: "account_tree",
64
+ export: "accountTree",
65
+ category: "data",
66
+ aliases: ["hierarchy", "org_chart"],
67
+ keywords: ["tree", "hierarchy", "structure", "org chart", "nested", "parent", "child"]
68
+ },
62
69
  {
63
70
  name: "add",
64
71
  export: "add",
@@ -325,6 +332,13 @@ const iconCatalog = [
325
332
  aliases: ["hang_up"],
326
333
  keywords: ["call", "end", "hangup", "decline", "phone"]
327
334
  },
335
+ {
336
+ name: "call_split",
337
+ export: "callSplit",
338
+ category: "navigation",
339
+ aliases: ["split"],
340
+ keywords: ["split", "branch", "fork", "diverge", "divide"]
341
+ },
328
342
  {
329
343
  name: "campaign",
330
344
  export: "campaign",
@@ -535,6 +549,13 @@ const iconCatalog = [
535
549
  aliases: [],
536
550
  keywords: ["document", "file", "text", "page", "description"]
537
551
  },
552
+ {
553
+ name: "device_hub",
554
+ export: "deviceHub",
555
+ category: "device",
556
+ aliases: [],
557
+ keywords: ["hub", "device", "network", "connection", "nodes", "usb"]
558
+ },
538
559
  {
539
560
  name: "diversity_3",
540
561
  export: "diversity3",
@@ -605,6 +626,13 @@ const iconCatalog = [
605
626
  aliases: ["pencil"],
606
627
  keywords: ["edit", "pencil", "write", "modify", "compose"]
607
628
  },
629
+ {
630
+ name: "edit_note",
631
+ export: "editNote",
632
+ category: "editor",
633
+ aliases: ["note_edit"],
634
+ keywords: ["edit", "note", "notes", "write", "journal", "record", "pencil"]
635
+ },
608
636
  {
609
637
  name: "emoji_events",
610
638
  export: "emojiEvents",
@@ -717,6 +745,13 @@ const iconCatalog = [
717
745
  aliases: ["funnel"],
718
746
  keywords: ["filter", "funnel", "refine", "narrow", "sift"]
719
747
  },
748
+ {
749
+ name: "filter_list",
750
+ export: "filterList",
751
+ category: "action",
752
+ aliases: ["filter_lines"],
753
+ keywords: ["filter", "list", "refine", "narrow", "sort", "lines"]
754
+ },
720
755
  {
721
756
  name: "first_page",
722
757
  export: "firstPage",
@@ -752,6 +787,13 @@ const iconCatalog = [
752
787
  aliases: [],
753
788
  keywords: ["folder", "open", "directory", "browse", "files"]
754
789
  },
790
+ {
791
+ name: "fork_right",
792
+ export: "forkRight",
793
+ category: "navigation",
794
+ aliases: [],
795
+ keywords: ["fork", "branch", "right", "diverge", "road", "turn"]
796
+ },
755
797
  {
756
798
  name: "format_align_center",
757
799
  export: "formatAlignCenter",
@@ -857,6 +899,13 @@ const iconCatalog = [
857
899
  aliases: ["users_plus"],
858
900
  keywords: ["group", "users", "team", "add", "invite", "members"]
859
901
  },
902
+ {
903
+ name: "groups",
904
+ export: "groups",
905
+ category: "social",
906
+ aliases: ["team"],
907
+ keywords: ["groups", "team", "people", "community", "members", "staff"]
908
+ },
860
909
  {
861
910
  name: "headphones",
862
911
  export: "headphones",
@@ -899,6 +948,13 @@ const iconCatalog = [
899
948
  aliases: ["hourglass"],
900
949
  keywords: ["hourglass", "wait", "loading", "sand", "time"]
901
950
  },
951
+ {
952
+ name: "hub",
953
+ export: "hub",
954
+ category: "data",
955
+ aliases: [],
956
+ keywords: ["hub", "network", "center", "connections", "nodes", "graph"]
957
+ },
902
958
  {
903
959
  name: "image",
904
960
  export: "image",
@@ -983,6 +1039,13 @@ const iconCatalog = [
983
1039
  aliases: ["tag"],
984
1040
  keywords: ["label", "tag", "badge", "category", "marker"]
985
1041
  },
1042
+ {
1043
+ name: "lan",
1044
+ export: "lan",
1045
+ category: "device",
1046
+ aliases: ["network"],
1047
+ keywords: ["lan", "network", "local", "ethernet", "topology", "connection"]
1048
+ },
986
1049
  {
987
1050
  name: "language",
988
1051
  export: "language",
@@ -1326,6 +1389,13 @@ const iconCatalog = [
1326
1389
  aliases: ["user_plus"],
1327
1390
  keywords: ["person", "user", "add", "invite", "new", "signup"]
1328
1391
  },
1392
+ {
1393
+ name: "person_off",
1394
+ export: "personOff",
1395
+ category: "social",
1396
+ aliases: ["user_off"],
1397
+ keywords: ["person", "user", "off", "removed", "inactive", "unassigned", "nobody"]
1398
+ },
1329
1399
  {
1330
1400
  name: "pets",
1331
1401
  export: "pets",
@@ -1529,6 +1599,13 @@ const iconCatalog = [
1529
1599
  aliases: ["clock"],
1530
1600
  keywords: ["clock", "time", "schedule", "hour", "watch"]
1531
1601
  },
1602
+ {
1603
+ name: "schema",
1604
+ export: "schema",
1605
+ category: "data",
1606
+ aliases: ["diagram"],
1607
+ keywords: ["schema", "diagram", "flow", "structure", "model", "blocks"]
1608
+ },
1532
1609
  {
1533
1610
  name: "school",
1534
1611
  export: "school",
@@ -2076,7 +2153,7 @@ const iconCatalog = [
2076
2153
  keywords: ["zoom", "magnify", "shrink", "scale", "search"]
2077
2154
  }
2078
2155
  ];
2079
- const iconCount = 294;
2156
+ const iconCount = 305;
2080
2157
  export {
2081
2158
  iconCatalog,
2082
2159
  iconCategories,