@smwb/ui-react 2.6.2 → 2.7.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 (421) hide show
  1. package/AI_LESS_OVERRIDES.md +4 -2
  2. package/AI_THEMING.md +17 -1
  3. package/README.md +84 -35
  4. package/dist/assets/styles/less/components/accordion/accordion.entry.css +1 -1
  5. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  6. package/dist/assets/styles/less/components/chart/chart.entry.css +1 -0
  7. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/descriptionList/descriptionList.entry.css +1 -0
  9. package/dist/assets/styles/less/components/emptyState/emptyState.entry.css +1 -0
  10. package/dist/assets/styles/less/components/kanban/kanban.entry.css +1 -0
  11. package/dist/assets/styles/less/components/meter/meter.entry.css +1 -0
  12. package/dist/assets/styles/less/components/modal/modal.entry.css +1 -1
  13. package/dist/assets/styles/less/components/overflowMenu/overflowMenu.entry.css +1 -1
  14. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -0
  15. package/dist/assets/styles/less/components/progressIndicator/progressIndicator.entry.css +1 -1
  16. package/dist/assets/styles/less/components/sectionHeader/sectionHeader.entry.css +1 -0
  17. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  18. package/dist/assets/styles/less/components/stat/stat.entry.css +1 -0
  19. package/dist/assets/styles/less/components/stepper/stepper.entry.css +1 -1
  20. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  21. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  22. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  23. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  24. package/dist/assets/styles/less/components/timeline/timeline.entry.css +1 -0
  25. package/dist/assets/styles/less/components/tooltip/tooltip.entry.css +1 -1
  26. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  27. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -0
  28. package/dist/assets/styles/less/tokens.entry.css +1 -0
  29. package/dist/chart.d.ts +2 -0
  30. package/dist/chart.js +8 -0
  31. package/dist/chart.js.map +1 -0
  32. package/dist/components/base/icon/icon.js +8 -7
  33. package/dist/components/base/icon/icon.js.map +1 -1
  34. package/dist/components/base/ripple/ripple.js +11 -10
  35. package/dist/components/base/ripple/ripple.js.map +1 -1
  36. package/dist/components/dataDisplay/accordion/accordion.d.ts +18 -1
  37. package/dist/components/dataDisplay/accordion/accordion.js +77 -54
  38. package/dist/components/dataDisplay/accordion/accordion.js.map +1 -1
  39. package/dist/components/dataDisplay/assetGrid/assetGrid.js +15 -14
  40. package/dist/components/dataDisplay/assetGrid/assetGrid.js.map +1 -1
  41. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  42. package/dist/components/dataDisplay/avatar/avatar.js +45 -30
  43. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  44. package/dist/components/dataDisplay/badge/badge.js +11 -10
  45. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  46. package/dist/components/dataDisplay/card/card.js +16 -15
  47. package/dist/components/dataDisplay/card/card.js.map +1 -1
  48. package/dist/components/dataDisplay/carousel/carousel.js +23 -22
  49. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  50. package/dist/components/dataDisplay/chart/chart.d.ts +65 -0
  51. package/dist/components/dataDisplay/chart/chart.js +133 -0
  52. package/dist/components/dataDisplay/chart/chart.js.map +1 -0
  53. package/dist/components/dataDisplay/chart/chartTheme.d.ts +35 -0
  54. package/dist/components/dataDisplay/chart/chartTheme.js +74 -0
  55. package/dist/components/dataDisplay/chart/chartTheme.js.map +1 -0
  56. package/dist/components/dataDisplay/chart/index.d.ts +4 -0
  57. package/dist/components/dataDisplay/chat/chat.js +5 -4
  58. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  59. package/dist/components/dataDisplay/chip/chip.js +5 -4
  60. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  61. package/dist/components/dataDisplay/chipGroup/chipGroup.js +10 -9
  62. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  63. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +37 -0
  64. package/dist/components/dataDisplay/descriptionList/descriptionList.js +43 -0
  65. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  66. package/dist/components/dataDisplay/descriptionList/index.d.ts +2 -0
  67. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +5 -4
  68. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  69. package/dist/components/dataDisplay/imagesList/imagesList.js +11 -10
  70. package/dist/components/dataDisplay/imagesList/imagesList.js.map +1 -1
  71. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +31 -24
  72. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  73. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.d.ts +1 -1
  74. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
  75. package/dist/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  76. package/dist/components/dataDisplay/kanban/index.d.ts +2 -0
  77. package/dist/components/dataDisplay/kanban/kanban.d.ts +47 -0
  78. package/dist/components/dataDisplay/kanban/kanban.js +63 -0
  79. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -0
  80. package/dist/components/dataDisplay/lazyImage/lazyImage.js +9 -8
  81. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  82. package/dist/components/dataDisplay/list/list.js +11 -10
  83. package/dist/components/dataDisplay/list/list.js.map +1 -1
  84. package/dist/components/dataDisplay/meter/index.d.ts +2 -0
  85. package/dist/components/dataDisplay/meter/meter.d.ts +33 -0
  86. package/dist/components/dataDisplay/meter/meter.js +62 -0
  87. package/dist/components/dataDisplay/meter/meter.js.map +1 -0
  88. package/dist/components/dataDisplay/personChip/index.d.ts +2 -0
  89. package/dist/components/dataDisplay/personChip/personChip.d.ts +31 -0
  90. package/dist/components/dataDisplay/personChip/personChip.js +61 -0
  91. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -0
  92. package/dist/components/dataDisplay/stat/index.d.ts +2 -0
  93. package/dist/components/dataDisplay/stat/stat.d.ts +36 -0
  94. package/dist/components/dataDisplay/stat/stat.js +48 -0
  95. package/dist/components/dataDisplay/stat/stat.js.map +1 -0
  96. package/dist/components/dataDisplay/table/table.d.ts +7 -0
  97. package/dist/components/dataDisplay/table/table.js +21 -15
  98. package/dist/components/dataDisplay/table/table.js.map +1 -1
  99. package/dist/components/dataDisplay/table/tableCell.d.ts +3 -1
  100. package/dist/components/dataDisplay/table/tableCell.js +11 -2
  101. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  102. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +11 -1
  103. package/dist/components/dataDisplay/table/tableHeadCell.js +54 -24
  104. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  105. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js +10 -9
  106. package/dist/components/dataDisplay/table/tablePagination/tablePagination.js.map +1 -1
  107. package/dist/components/dataDisplay/thumbCard/thumbCard.js +10 -9
  108. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  109. package/dist/components/dataDisplay/timeline/index.d.ts +2 -0
  110. package/dist/components/dataDisplay/timeline/timeline.d.ts +43 -0
  111. package/dist/components/dataDisplay/timeline/timeline.js +44 -0
  112. package/dist/components/dataDisplay/timeline/timeline.js.map +1 -0
  113. package/dist/components/dataDisplay/treeView/treeView.js +5 -4
  114. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  115. package/dist/components/dataDisplay/typography/typography.d.ts +4 -0
  116. package/dist/components/dataDisplay/typography/typography.js +41 -23
  117. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  118. package/dist/components/feedBack/confirmDialog/confirmDialog.js +14 -13
  119. package/dist/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  120. package/dist/components/feedBack/emptyState/emptyState.d.ts +26 -0
  121. package/dist/components/feedBack/emptyState/emptyState.js +27 -0
  122. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -0
  123. package/dist/components/feedBack/emptyState/index.d.ts +2 -0
  124. package/dist/components/feedBack/message/message.js +8 -7
  125. package/dist/components/feedBack/message/message.js.map +1 -1
  126. package/dist/components/feedBack/modal/modal.js +5 -4
  127. package/dist/components/feedBack/modal/modal.js.map +1 -1
  128. package/dist/components/feedBack/progressIndicator/progressIndicator.d.ts +14 -1
  129. package/dist/components/feedBack/progressIndicator/progressIndicator.js +72 -40
  130. package/dist/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  131. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js +31 -29
  132. package/dist/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  133. package/dist/components/feedBack/skeleton/skeleton.js +17 -16
  134. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  135. package/dist/components/feedBack/snackbar/snackbar.js +6 -5
  136. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  137. package/dist/components/feedBack/tooltip/tooltip.js +57 -49
  138. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  139. package/dist/components/inputs/button/button.js +16 -15
  140. package/dist/components/inputs/button/button.js.map +1 -1
  141. package/dist/components/inputs/buttonGroups/buttonGroup.js +5 -4
  142. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  143. package/dist/components/inputs/checkbox/checkbox.js +10 -9
  144. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  145. package/dist/components/inputs/datePicker/datePicker.js +123 -120
  146. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  147. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
  148. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  149. package/dist/components/inputs/fileDrop/fileDrop.js +13 -12
  150. package/dist/components/inputs/fileDrop/fileDrop.js.map +1 -1
  151. package/dist/components/inputs/fileInput/fileInput.js +4 -3
  152. package/dist/components/inputs/fileInput/fileInput.js.map +1 -1
  153. package/dist/components/inputs/floatingButton/floatingButton.js +17 -16
  154. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  155. package/dist/components/inputs/radioButton/radioButton.js +11 -10
  156. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  157. package/dist/components/inputs/rating/rating.js +18 -17
  158. package/dist/components/inputs/rating/rating.js.map +1 -1
  159. package/dist/components/inputs/selectField/dropdownMenu.d.ts +1 -1
  160. package/dist/components/inputs/selectField/dropdownMenu.js +72 -69
  161. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  162. package/dist/components/inputs/selectField/selectField.d.ts +2 -0
  163. package/dist/components/inputs/selectField/selectField.js +128 -117
  164. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  165. package/dist/components/inputs/slider/slider.js +4 -3
  166. package/dist/components/inputs/slider/slider.js.map +1 -1
  167. package/dist/components/inputs/textField/textField.js +16 -15
  168. package/dist/components/inputs/textField/textField.js.map +1 -1
  169. package/dist/components/inputs/textField/utils.d.ts +1 -1
  170. package/dist/components/inputs/timePicker/timePicker.js +66 -63
  171. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  172. package/dist/components/inputs/toggle/toggle.js +14 -13
  173. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  174. package/dist/components/inputs/valueSlider/valueSlider.js +9 -8
  175. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  176. package/dist/components/layout/appLayout/appLayout.js +20 -19
  177. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  178. package/dist/components/layout/divider/divider.js +9 -8
  179. package/dist/components/layout/divider/divider.js.map +1 -1
  180. package/dist/components/layout/floatingWindow/floatingWindow.js +4 -3
  181. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  182. package/dist/components/layout/grid/grid.js +17 -16
  183. package/dist/components/layout/grid/grid.js.map +1 -1
  184. package/dist/components/layout/page/page.js +9 -8
  185. package/dist/components/layout/page/page.js.map +1 -1
  186. package/dist/components/layout/pageHeader/pageHeader.js +10 -9
  187. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  188. package/dist/components/layout/screenDivider/screenDivider.js +19 -18
  189. package/dist/components/layout/screenDivider/screenDivider.js.map +1 -1
  190. package/dist/components/layout/sectionHeader/index.d.ts +2 -0
  191. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +31 -0
  192. package/dist/components/layout/sectionHeader/sectionHeader.js +67 -0
  193. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  194. package/dist/components/layout/sheet/sheet.js +5 -4
  195. package/dist/components/layout/sheet/sheet.js.map +1 -1
  196. package/dist/components/layout/stack/stack.js +10 -9
  197. package/dist/components/layout/stack/stack.js.map +1 -1
  198. package/dist/components/navigation/appBar/appBar.js +18 -17
  199. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  200. package/dist/components/navigation/bottomBar/bottomBar.js +5 -4
  201. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  202. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +5 -4
  203. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  204. package/dist/components/navigation/menu/menu.js +6 -5
  205. package/dist/components/navigation/menu/menu.js.map +1 -1
  206. package/dist/components/navigation/overflowMenu/overflowMenu.js +16 -15
  207. package/dist/components/navigation/overflowMenu/overflowMenu.js.map +1 -1
  208. package/dist/components/navigation/pagination/pagination.js +5 -4
  209. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  210. package/dist/components/navigation/sidebar/sidebar.js +13 -12
  211. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  212. package/dist/components/navigation/stepper/stepper.d.ts +10 -2
  213. package/dist/components/navigation/stepper/stepper.js +33 -30
  214. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  215. package/dist/components/navigation/tabs/tab/tab.d.ts +2 -0
  216. package/dist/components/navigation/tabs/tab/tab.js +14 -13
  217. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  218. package/dist/components/navigation/tabs/tabs.d.ts +12 -0
  219. package/dist/components/navigation/tabs/tabs.js +138 -83
  220. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  221. package/dist/connects/rt/table/draggableHeader.d.ts +1 -1
  222. package/dist/connects/rt/table/draggableHeader.js.map +1 -0
  223. package/dist/connects/rt/table/headerCellRenderer.d.ts +6 -0
  224. package/dist/connects/rt/table/headerCellRenderer.js +21 -0
  225. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -0
  226. package/dist/connects/rt/table/table.d.ts +2 -0
  227. package/dist/connects/rt/table/table.js +200 -0
  228. package/dist/connects/rt/table/table.js.map +1 -0
  229. package/dist/connects/rt/table/utils.js.map +1 -0
  230. package/dist/headless/components/dataDisplay/accordion/accordion.js +76 -54
  231. package/dist/headless/components/dataDisplay/accordion/accordion.js.map +1 -1
  232. package/dist/headless/components/dataDisplay/avatar/avatar.js +45 -31
  233. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  234. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +41 -0
  235. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -0
  236. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js +29 -23
  237. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItem.js.map +1 -1
  238. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js +16 -13
  239. package/dist/headless/components/dataDisplay/imagesList/imagesListItem/imagesListItemModal.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/kanban/kanban.js +61 -0
  241. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -0
  242. package/dist/headless/components/dataDisplay/meter/meter.js +60 -0
  243. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -0
  244. package/dist/headless/components/dataDisplay/personChip/personChip.js +59 -0
  245. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -0
  246. package/dist/headless/components/dataDisplay/stat/stat.js +46 -0
  247. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -0
  248. package/dist/headless/components/dataDisplay/table/table.js +16 -11
  249. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/table/tableCell.js +11 -2
  251. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  252. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +54 -24
  253. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  254. package/dist/headless/components/dataDisplay/timeline/timeline.js +42 -0
  255. package/dist/headless/components/dataDisplay/timeline/timeline.js.map +1 -0
  256. package/dist/headless/components/dataDisplay/typography/typography.js +39 -22
  257. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  258. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js +9 -9
  259. package/dist/headless/components/feedBack/confirmDialog/confirmDialog.js.map +1 -1
  260. package/dist/headless/components/feedBack/emptyState/emptyState.js +25 -0
  261. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -0
  262. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js +70 -39
  263. package/dist/headless/components/feedBack/progressIndicator/progressIndicator.js.map +1 -1
  264. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js +27 -26
  265. package/dist/headless/components/feedBack/saveAssetDialog/saveAssetDialog.js.map +1 -1
  266. package/dist/headless/components/feedBack/tooltip/tooltip.js +53 -46
  267. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  268. package/dist/headless/components/inputs/datePicker/datePicker.js +112 -110
  269. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  270. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +121 -119
  271. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  272. package/dist/headless/components/inputs/selectField/dropdownMenu.js +72 -69
  273. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  274. package/dist/headless/components/inputs/selectField/selectField.js +109 -99
  275. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  276. package/dist/headless/components/inputs/timePicker/timePicker.js +65 -63
  277. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  278. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +65 -0
  279. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -0
  280. package/dist/headless/components/navigation/stepper/stepper.js +31 -29
  281. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  282. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  283. package/dist/headless/components/navigation/tabs/tabs.js +129 -75
  284. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  285. package/dist/headless/hooks/useSafeLayoutEffect.js +4 -2
  286. package/dist/headless/hooks/useSafeLayoutEffect.js.map +1 -1
  287. package/dist/headless/icons/catalog.js +78 -1
  288. package/dist/headless/icons/catalog.js.map +1 -1
  289. package/dist/headless/icons/index.js +596 -574
  290. package/dist/headless/icons/index.js.map +1 -1
  291. package/dist/headless/icons/svg/accountTree.js +9 -0
  292. package/dist/headless/icons/svg/accountTree.js.map +1 -0
  293. package/dist/headless/icons/svg/callSplit.js +9 -0
  294. package/dist/headless/icons/svg/callSplit.js.map +1 -0
  295. package/dist/headless/icons/svg/deviceHub.js +8 -0
  296. package/dist/headless/icons/svg/deviceHub.js.map +1 -0
  297. package/dist/headless/icons/svg/editNote.js +9 -0
  298. package/dist/headless/icons/svg/editNote.js.map +1 -0
  299. package/dist/headless/icons/svg/filterList.js +9 -0
  300. package/dist/headless/icons/svg/filterList.js.map +1 -0
  301. package/dist/headless/icons/svg/forkRight.js +8 -0
  302. package/dist/headless/icons/svg/forkRight.js.map +1 -0
  303. package/dist/headless/icons/svg/groups.js +9 -0
  304. package/dist/headless/icons/svg/groups.js.map +1 -0
  305. package/dist/headless/icons/svg/hub.js +8 -0
  306. package/dist/headless/icons/svg/hub.js.map +1 -0
  307. package/dist/headless/icons/svg/index.js +598 -576
  308. package/dist/headless/icons/svg/index.js.map +1 -1
  309. package/dist/headless/icons/svg/lan.js +9 -0
  310. package/dist/headless/icons/svg/lan.js.map +1 -0
  311. package/dist/headless/icons/svg/personOff.js +9 -0
  312. package/dist/headless/icons/svg/personOff.js.map +1 -0
  313. package/dist/headless/icons/svg/schema.js +9 -0
  314. package/dist/headless/icons/svg/schema.js.map +1 -0
  315. package/dist/headless/index.js +209 -183
  316. package/dist/headless/index.js.map +1 -1
  317. package/dist/hooks/useSafeLayoutEffect.d.ts +7 -1
  318. package/dist/hooks/useSafeLayoutEffect.js +4 -2
  319. package/dist/hooks/useSafeLayoutEffect.js.map +1 -1
  320. package/dist/icons/catalog.d.ts +1 -1
  321. package/dist/icons/catalog.js +78 -1
  322. package/dist/icons/catalog.js.map +1 -1
  323. package/dist/icons/index.js +596 -574
  324. package/dist/icons/index.js.map +1 -1
  325. package/dist/icons/svg/accountTree.d.ts +4 -0
  326. package/dist/icons/svg/accountTree.js +9 -0
  327. package/dist/icons/svg/accountTree.js.map +1 -0
  328. package/dist/icons/svg/callSplit.d.ts +4 -0
  329. package/dist/icons/svg/callSplit.js +9 -0
  330. package/dist/icons/svg/callSplit.js.map +1 -0
  331. package/dist/icons/svg/deviceHub.d.ts +4 -0
  332. package/dist/icons/svg/deviceHub.js +8 -0
  333. package/dist/icons/svg/deviceHub.js.map +1 -0
  334. package/dist/icons/svg/editNote.d.ts +4 -0
  335. package/dist/icons/svg/editNote.js +9 -0
  336. package/dist/icons/svg/editNote.js.map +1 -0
  337. package/dist/icons/svg/filterList.d.ts +4 -0
  338. package/dist/icons/svg/filterList.js +9 -0
  339. package/dist/icons/svg/filterList.js.map +1 -0
  340. package/dist/icons/svg/forkRight.d.ts +4 -0
  341. package/dist/icons/svg/forkRight.js +8 -0
  342. package/dist/icons/svg/forkRight.js.map +1 -0
  343. package/dist/icons/svg/groups.d.ts +4 -0
  344. package/dist/icons/svg/groups.js +9 -0
  345. package/dist/icons/svg/groups.js.map +1 -0
  346. package/dist/icons/svg/hub.d.ts +4 -0
  347. package/dist/icons/svg/hub.js +8 -0
  348. package/dist/icons/svg/hub.js.map +1 -0
  349. package/dist/icons/svg/index.d.ts +11 -0
  350. package/dist/icons/svg/index.js +598 -576
  351. package/dist/icons/svg/index.js.map +1 -1
  352. package/dist/icons/svg/lan.d.ts +4 -0
  353. package/dist/icons/svg/lan.js +9 -0
  354. package/dist/icons/svg/lan.js.map +1 -0
  355. package/dist/icons/svg/personOff.d.ts +4 -0
  356. package/dist/icons/svg/personOff.js +9 -0
  357. package/dist/icons/svg/personOff.js.map +1 -0
  358. package/dist/icons/svg/schema.d.ts +4 -0
  359. package/dist/icons/svg/schema.js +9 -0
  360. package/dist/icons/svg/schema.js.map +1 -0
  361. package/dist/icons.cjs +1 -1
  362. package/dist/icons.cjs.map +1 -1
  363. package/dist/index.cjs +2 -2
  364. package/dist/index.cjs.map +1 -1
  365. package/dist/index.d.ts +16 -0
  366. package/dist/index.js +209 -183
  367. package/dist/index.js.map +1 -1
  368. package/package.json +18 -7
  369. package/dist/react-table/components/base/icon/icon.js +0 -60
  370. package/dist/react-table/components/base/icon/icon.js.map +0 -1
  371. package/dist/react-table/components/base/icon/iconProvider.js +0 -15
  372. package/dist/react-table/components/base/icon/iconProvider.js.map +0 -1
  373. package/dist/react-table/components/dataDisplay/table/table.js +0 -37
  374. package/dist/react-table/components/dataDisplay/table/table.js.map +0 -1
  375. package/dist/react-table/components/dataDisplay/table/tableBody.js +0 -7
  376. package/dist/react-table/components/dataDisplay/table/tableBody.js.map +0 -1
  377. package/dist/react-table/components/dataDisplay/table/tableCell.js +0 -7
  378. package/dist/react-table/components/dataDisplay/table/tableCell.js.map +0 -1
  379. package/dist/react-table/components/dataDisplay/table/tableHead.js +0 -7
  380. package/dist/react-table/components/dataDisplay/table/tableHead.js.map +0 -1
  381. package/dist/react-table/components/dataDisplay/table/tableHeadCell.js +0 -48
  382. package/dist/react-table/components/dataDisplay/table/tableHeadCell.js.map +0 -1
  383. package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js +0 -40
  384. package/dist/react-table/components/dataDisplay/table/tablePagination/tablePagination.js.map +0 -1
  385. package/dist/react-table/components/dataDisplay/table/tableRow.js +0 -20
  386. package/dist/react-table/components/dataDisplay/table/tableRow.js.map +0 -1
  387. package/dist/react-table/components/feedBack/message/message.js +0 -31
  388. package/dist/react-table/components/feedBack/message/message.js.map +0 -1
  389. package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js +0 -51
  390. package/dist/react-table/components/feedBack/progressIndicator/progressIndicator.js.map +0 -1
  391. package/dist/react-table/components/inputs/textField/textField.js +0 -125
  392. package/dist/react-table/components/inputs/textField/textField.js.map +0 -1
  393. package/dist/react-table/components/inputs/textField/textFieldAdornment.js +0 -25
  394. package/dist/react-table/components/inputs/textField/textFieldAdornment.js.map +0 -1
  395. package/dist/react-table/components/inputs/textField/textFieldWrapper.js +0 -50
  396. package/dist/react-table/components/inputs/textField/textFieldWrapper.js.map +0 -1
  397. package/dist/react-table/components/inputs/textField/utils.js +0 -11
  398. package/dist/react-table/components/inputs/textField/utils.js.map +0 -1
  399. package/dist/react-table/connects/rt/table/draggableHeader.js.map +0 -1
  400. package/dist/react-table/connects/rt/table/headerCellRenderer.js +0 -14
  401. package/dist/react-table/connects/rt/table/headerCellRenderer.js.map +0 -1
  402. package/dist/react-table/connects/rt/table/table.js +0 -180
  403. package/dist/react-table/connects/rt/table/table.js.map +0 -1
  404. package/dist/react-table/connects/rt/table/utils.js.map +0 -1
  405. package/dist/react-table/hooks/useForkRef.js +0 -13
  406. package/dist/react-table/hooks/useForkRef.js.map +0 -1
  407. package/dist/react-table/hooks/useSafeLayoutEffect.js +0 -6
  408. package/dist/react-table/hooks/useSafeLayoutEffect.js.map +0 -1
  409. package/dist/react-table/icons/config.js +0 -9
  410. package/dist/react-table/icons/config.js.map +0 -1
  411. package/dist/react-table/icons/registry.js +0 -12
  412. package/dist/react-table/icons/registry.js.map +0 -1
  413. package/dist/react-table/icons/store.js +0 -10
  414. package/dist/react-table/icons/store.js.map +0 -1
  415. package/dist/react-table/utils/setRef.js +0 -7
  416. package/dist/react-table/utils/setRef.js.map +0 -1
  417. package/dist/storybook/storyPlay.d.ts +0 -19
  418. /package/dist/{react-table/connects → connects}/rt/table/draggableHeader.js +0 -0
  419. /package/dist/{react-table/connects → connects}/rt/table/utils.js +0 -0
  420. /package/dist/{react-table/react-table.js → react-table.js} +0 -0
  421. /package/dist/{react-table/react-table.js.map → react-table.js.map} +0 -0
package/dist/chart.js ADDED
@@ -0,0 +1,8 @@
1
+ import { Chart as t } from "./components/dataDisplay/chart/chart.js";
2
+ import { chartTheme as h, readChartPalette as o } from "./components/dataDisplay/chart/chartTheme.js";
3
+ export {
4
+ t as Chart,
5
+ h as chartTheme,
6
+ o as readChartPalette
7
+ };
8
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as l } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/icon/icon.entry.css';/* empty css */
2
+ import '../../../assets/styles/less/components/icon/icon.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import { forwardRef as L, useSyncExternalStore as C } from "react";
4
5
  import N from "clsx";
5
6
  import { getIcon as O } from "../../../icons/registry.js";
@@ -12,12 +13,12 @@ function T(r) {
12
13
  `[smwb] Icon "${r}" is not registered. Register it (import { ${r} } from "@smwb/ui-react/icons") or use source="auto" to fall back to Material Symbols.`
13
14
  ));
14
15
  }
15
- const W = L(function({ className: S, weight: a = 400, fill: v = 0, size: n = 20, grade: I = 100, name: o, color: e = "inherit", title: i, source: _, ...u }, x) {
16
+ const q = L(function({ className: S, weight: a = 400, fill: v = 0, size: n = 20, grade: I = 100, name: o, color: e = "inherit", title: i, source: _, ...u }, x) {
16
17
  var w, b;
17
- const d = B(_), g = typeof o == "string" ? o : null, m = () => {
18
+ const m = B(_), d = typeof o == "string" ? o : null, g = () => {
18
19
  var h;
19
- return g === null ? null : (h = O(g)) != null ? h : null;
20
- }, M = C(j, m, m), s = typeof o == "object" ? o : M, p = typeof o == "string" ? o : o.name, t = d === "google" ? "google" : s ? "smwb" : d === "smwb" ? "missing" : "google";
20
+ return d === null ? null : (h = O(d)) != null ? h : null;
21
+ }, M = C(j, g, g), s = typeof o == "object" ? o : M, p = typeof o == "string" ? o : o.name, t = m === "google" ? "google" : s ? "smwb" : m === "smwb" ? "missing" : "google";
21
22
  t === "missing" && T(p);
22
23
  const f = i === void 0, $ = e && E.includes(e) ? `smwb-icon_color-${e}` : null, c = typeof n == "number" ? `${n}px` : n, k = Math.round(Math.min(3, Math.max(1, a / 200)) * 100) / 100;
23
24
  return /* @__PURE__ */ l(
@@ -55,7 +56,7 @@ const W = L(function({ className: S, weight: a = 400, fill: v = 0, size: n = 20,
55
56
  );
56
57
  });
57
58
  export {
58
- W as Icon,
59
- W as default
59
+ q as Icon,
60
+ q as default
60
61
  };
61
62
  //# sourceMappingURL=icon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sources":["../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, useSyncExternalStore } from \"react\";\nimport cn from \"clsx\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport { subscribeIcons } from \"../../../icons/store\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { useIconSource } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS = [\"primary\", \"secondary\", \"error\", \"success\", \"warning\", \"info\", \"disabled\"];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n // eslint-disable-next-line no-console -- a missing icon is silent otherwise\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-react/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-react/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n className?: string;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color.\n * Any string is accepted for backward compatibility, but only known\n * {@link IconColor} tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as\n * `role=\"img\"`; otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n}\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(function Icon(\n { className, weight = 400, fill = 0, size = 20, grade = 100, name, color = \"inherit\", title, source, ...props },\n ref\n) {\n const resolvedSource = useIconSource(source);\n const lookup = typeof name === \"string\" ? name : null;\n // Subscribing keeps late registrations (lazy chunks, Storybook HMR) from\n // leaving a mounted icon blank. getIcon returns the same object for the same\n // registration, so the snapshot is stable.\n const getSnapshot = () => (lookup === null ? null : (getIcon(lookup) ?? null));\n const registered = useSyncExternalStore(subscribeIcons, getSnapshot, getSnapshot);\n const definition = typeof name === \"object\" ? name : registered;\n const glyph = typeof name === \"string\" ? name : name.name;\n\n const mode =\n resolvedSource === \"google\" ? \"google\" : definition ? \"smwb\" : resolvedSource === \"smwb\" ? \"missing\" : \"google\";\n if (mode === \"missing\") warnMissing(glyph);\n\n const decorative = title === undefined;\n const colorClass = color && COLOR_TOKENS.includes(color) ? `smwb-icon_color-${color}` : null;\n const cssSize = typeof size === \"number\" ? `${size}px` : size;\n const strokeWidth = Math.round(Math.min(3, Math.max(1, weight / 200)) * 100) / 100;\n\n return (\n <span\n {...props}\n ref={ref}\n data-testid=\"icon\"\n data-icon-source={mode}\n role={decorative ? undefined : \"img\"}\n aria-hidden={decorative ? true : undefined}\n aria-label={title}\n title={title}\n style={{\n ...props.style,\n ...(mode === \"google\"\n ? { fontVariationSettings: `'FILL' ${fill}, 'wght' ${weight}, 'GRAD' ${grade}, 'opsz' 48` }\n : null),\n }}\n className={cn(\"smwb-icon__wrapper\", colorClass, className)}\n >\n {mode === \"google\" ? (\n <span className=\"material-symbols-outlined\" style={{ fontSize: cssSize }}>\n {glyph}\n </span>\n ) : (\n <svg\n className=\"smwb-icon__svg\"\n viewBox={definition?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize, height: cssSize }}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n dangerouslySetInnerHTML={{ __html: definition?.body ?? \"\" }}\n />\n )}\n </span>\n );\n});\n\nexport default Icon;\n"],"names":["COLOR_TOKENS","warned","warnMissing","name","getIconConfig","Icon","forwardRef","className","weight","fill","size","grade","color","title","source","props","ref","resolvedSource","useIconSource","lookup","getSnapshot","_a","getIcon","registered","useSyncExternalStore","subscribeIcons","definition","glyph","mode","decorative","colorClass","cssSize","strokeWidth","jsx","cn","_b"],"mappings":";;;;;;;;AAWA,MAAMA,IAAe,CAAC,WAAW,aAAa,SAAS,WAAW,WAAW,QAAQ,UAAU,GAEzFC,wBAAa,IAAA;AAEnB,SAASC,EAAYC,GAAoB;AACvC,EAAI,CAACC,EAAA,EAAgB,iBAAiBH,EAAO,IAAIE,CAAI,MACrDF,EAAO,IAAIE,CAAI,GAEf,QAAQ;AAAA,IACN,gBAAgBA,CAAI,8CAA8CA,CAAI;AAAA,EAAA;AAG1E;AA4CO,MAAME,IAAOC,EAAuC,SACzD,EAAE,WAAAC,GAAW,QAAAC,IAAS,KAAK,MAAAC,IAAO,GAAG,MAAAC,IAAO,IAAI,OAAAC,IAAQ,KAAK,MAAAR,GAAM,OAAAS,IAAQ,WAAW,OAAAC,GAAO,QAAAC,GAAQ,GAAGC,EAAA,GACxGC,GACA;;AACA,QAAMC,IAAiBC,EAAcJ,CAAM,GACrCK,IAAS,OAAOhB,KAAS,WAAWA,IAAO,MAI3CiB,IAAc,MAAA;;AAAO,WAAAD,MAAW,OAAO,QAAQE,IAAAC,EAAQH,CAAM,MAAd,OAAAE,IAAmB;AAAA,KAClEE,IAAaC,EAAqBC,GAAgBL,GAAaA,CAAW,GAC1EM,IAAa,OAAOvB,KAAS,WAAWA,IAAOoB,GAC/CI,IAAQ,OAAOxB,KAAS,WAAWA,IAAOA,EAAK,MAE/CyB,IACJX,MAAmB,WAAW,WAAWS,IAAa,SAAST,MAAmB,SAAS,YAAY;AACzG,EAAIW,MAAS,aAAW1B,EAAYyB,CAAK;AAEzC,QAAME,IAAahB,MAAU,QACvBiB,IAAalB,KAASZ,EAAa,SAASY,CAAK,IAAI,mBAAmBA,CAAK,KAAK,MAClFmB,IAAU,OAAOrB,KAAS,WAAW,GAAGA,CAAI,OAAOA,GACnDsB,IAAc,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGxB,IAAS,GAAG,CAAC,IAAI,GAAG,IAAI;AAE/E,SACE,gBAAAyB;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGlB;AAAA,MACJ,KAAAC;AAAA,MACA,eAAY;AAAA,MACZ,oBAAkBY;AAAA,MAClB,MAAMC,IAAa,SAAY;AAAA,MAC/B,eAAaA,IAAa,KAAO;AAAA,MACjC,cAAYhB;AAAA,MACZ,OAAAA;AAAA,MACA,OAAO;AAAA,QACL,GAAGE,EAAM;AAAA,QACT,GAAIa,MAAS,WACT,EAAE,uBAAuB,UAAUnB,CAAI,YAAYD,CAAM,YAAYG,CAAK,cAAA,IAC1E;AAAA,MAAA;AAAA,MAEN,WAAWuB,EAAG,sBAAsBJ,GAAYvB,CAAS;AAAA,MAExD,UAAAqB,MAAS,WACR,gBAAAK,EAAC,QAAA,EAAK,WAAU,6BAA4B,OAAO,EAAE,UAAUF,EAAA,GAC5D,UAAAJ,EAAA,CACH,IAEA,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,UAASZ,IAAAK,KAAA,gBAAAA,EAAY,YAAZ,OAAAL,IAAuB;AAAA,UAChC,OAAO,EAAE,OAAOU,GAAS,QAAQA,EAAA;AAAA,UACjC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAAC;AAAA,UACA,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,eAAY;AAAA,UACZ,yBAAyB,EAAE,SAAQG,IAAAT,KAAA,gBAAAA,EAAY,SAAZ,OAAAS,IAAoB,GAAA;AAAA,QAAG;AAAA,MAAA;AAAA,IAC5D;AAAA,EAAA;AAIR,CAAC;"}
1
+ {"version":3,"file":"icon.js","sources":["../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import { forwardRef, HTMLAttributes, useSyncExternalStore } from \"react\";\nimport cn from \"clsx\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport { subscribeIcons } from \"../../../icons/store\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { useIconSource } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS = [\"primary\", \"secondary\", \"error\", \"success\", \"warning\", \"info\", \"disabled\"];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n // eslint-disable-next-line no-console -- a missing icon is silent otherwise\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-react/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-react/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n className?: string;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color.\n * Any string is accepted for backward compatibility, but only known\n * {@link IconColor} tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as\n * `role=\"img\"`; otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n}\n\nexport const Icon = forwardRef<HTMLSpanElement, IconProps>(function Icon(\n { className, weight = 400, fill = 0, size = 20, grade = 100, name, color = \"inherit\", title, source, ...props },\n ref\n) {\n const resolvedSource = useIconSource(source);\n const lookup = typeof name === \"string\" ? name : null;\n // Subscribing keeps late registrations (lazy chunks, Storybook HMR) from\n // leaving a mounted icon blank. getIcon returns the same object for the same\n // registration, so the snapshot is stable.\n const getSnapshot = () => (lookup === null ? null : (getIcon(lookup) ?? null));\n const registered = useSyncExternalStore(subscribeIcons, getSnapshot, getSnapshot);\n const definition = typeof name === \"object\" ? name : registered;\n const glyph = typeof name === \"string\" ? name : name.name;\n\n const mode =\n resolvedSource === \"google\" ? \"google\" : definition ? \"smwb\" : resolvedSource === \"smwb\" ? \"missing\" : \"google\";\n if (mode === \"missing\") warnMissing(glyph);\n\n const decorative = title === undefined;\n const colorClass = color && COLOR_TOKENS.includes(color) ? `smwb-icon_color-${color}` : null;\n const cssSize = typeof size === \"number\" ? `${size}px` : size;\n const strokeWidth = Math.round(Math.min(3, Math.max(1, weight / 200)) * 100) / 100;\n\n return (\n <span\n {...props}\n ref={ref}\n data-testid=\"icon\"\n data-icon-source={mode}\n role={decorative ? undefined : \"img\"}\n aria-hidden={decorative ? true : undefined}\n aria-label={title}\n title={title}\n style={{\n ...props.style,\n ...(mode === \"google\"\n ? { fontVariationSettings: `'FILL' ${fill}, 'wght' ${weight}, 'GRAD' ${grade}, 'opsz' 48` }\n : null),\n }}\n className={cn(\"smwb-icon__wrapper\", colorClass, className)}\n >\n {mode === \"google\" ? (\n <span className=\"material-symbols-outlined\" style={{ fontSize: cssSize }}>\n {glyph}\n </span>\n ) : (\n <svg\n className=\"smwb-icon__svg\"\n viewBox={definition?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize, height: cssSize }}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n dangerouslySetInnerHTML={{ __html: definition?.body ?? \"\" }}\n />\n )}\n </span>\n );\n});\n\nexport default Icon;\n"],"names":["COLOR_TOKENS","warned","warnMissing","name","getIconConfig","Icon","forwardRef","className","weight","fill","size","grade","color","title","source","props","ref","resolvedSource","useIconSource","lookup","getSnapshot","_a","getIcon","registered","useSyncExternalStore","subscribeIcons","definition","glyph","mode","decorative","colorClass","cssSize","strokeWidth","jsx","cn","_b"],"mappings":";;;;;;;;;AAYA,MAAMA,IAAe,CAAC,WAAW,aAAa,SAAS,WAAW,WAAW,QAAQ,UAAU,GAEzFC,wBAAa,IAAA;AAEnB,SAASC,EAAYC,GAAoB;AACvC,EAAI,CAACC,EAAA,EAAgB,iBAAiBH,EAAO,IAAIE,CAAI,MACrDF,EAAO,IAAIE,CAAI,GAEf,QAAQ;AAAA,IACN,gBAAgBA,CAAI,8CAA8CA,CAAI;AAAA,EAAA;AAG1E;AA4CO,MAAME,IAAOC,EAAuC,SACzD,EAAE,WAAAC,GAAW,QAAAC,IAAS,KAAK,MAAAC,IAAO,GAAG,MAAAC,IAAO,IAAI,OAAAC,IAAQ,KAAK,MAAAR,GAAM,OAAAS,IAAQ,WAAW,OAAAC,GAAO,QAAAC,GAAQ,GAAGC,EAAA,GACxGC,GACA;;AACA,QAAMC,IAAiBC,EAAcJ,CAAM,GACrCK,IAAS,OAAOhB,KAAS,WAAWA,IAAO,MAI3CiB,IAAc,MAAA;;AAAO,WAAAD,MAAW,OAAO,QAAQE,IAAAC,EAAQH,CAAM,MAAd,OAAAE,IAAmB;AAAA,KAClEE,IAAaC,EAAqBC,GAAgBL,GAAaA,CAAW,GAC1EM,IAAa,OAAOvB,KAAS,WAAWA,IAAOoB,GAC/CI,IAAQ,OAAOxB,KAAS,WAAWA,IAAOA,EAAK,MAE/CyB,IACJX,MAAmB,WAAW,WAAWS,IAAa,SAAST,MAAmB,SAAS,YAAY;AACzG,EAAIW,MAAS,aAAW1B,EAAYyB,CAAK;AAEzC,QAAME,IAAahB,MAAU,QACvBiB,IAAalB,KAASZ,EAAa,SAASY,CAAK,IAAI,mBAAmBA,CAAK,KAAK,MAClFmB,IAAU,OAAOrB,KAAS,WAAW,GAAGA,CAAI,OAAOA,GACnDsB,IAAc,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAGxB,IAAS,GAAG,CAAC,IAAI,GAAG,IAAI;AAE/E,SACE,gBAAAyB;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGlB;AAAA,MACJ,KAAAC;AAAA,MACA,eAAY;AAAA,MACZ,oBAAkBY;AAAA,MAClB,MAAMC,IAAa,SAAY;AAAA,MAC/B,eAAaA,IAAa,KAAO;AAAA,MACjC,cAAYhB;AAAA,MACZ,OAAAA;AAAA,MACA,OAAO;AAAA,QACL,GAAGE,EAAM;AAAA,QACT,GAAIa,MAAS,WACT,EAAE,uBAAuB,UAAUnB,CAAI,YAAYD,CAAM,YAAYG,CAAK,cAAA,IAC1E;AAAA,MAAA;AAAA,MAEN,WAAWuB,EAAG,sBAAsBJ,GAAYvB,CAAS;AAAA,MAExD,UAAAqB,MAAS,WACR,gBAAAK,EAAC,QAAA,EAAK,WAAU,6BAA4B,OAAO,EAAE,UAAUF,EAAA,GAC5D,UAAAJ,EAAA,CACH,IAEA,gBAAAM;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,UAASZ,IAAAK,KAAA,gBAAAA,EAAY,YAAZ,OAAAL,IAAuB;AAAA,UAChC,OAAO,EAAE,OAAOU,GAAS,QAAQA,EAAA;AAAA,UACjC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,aAAAC;AAAA,UACA,eAAc;AAAA,UACd,gBAAe;AAAA,UACf,eAAY;AAAA,UACZ,yBAAyB,EAAE,SAAQG,IAAAT,KAAA,gBAAAA,EAAY,SAAZ,OAAAS,IAAoB,GAAA;AAAA,QAAG;AAAA,MAAA;AAAA,IAC5D;AAAA,EAAA;AAIR,CAAC;"}
@@ -1,16 +1,17 @@
1
1
  import { jsx as R } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/ripple/ripple.entry.css';/* empty css */
2
+ import '../../../assets/styles/less/components/ripple/ripple.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import u, { forwardRef as N } from "react";
4
5
  import b from "clsx";
5
- const H = N(function({ actionRef: x, className: l, classes: i, center: g, style: e, duration: f = 600, color: r, ...a }, C) {
6
+ const I = N(function({ actionRef: x, className: l, classes: i, center: g, style: e, duration: f = 600, color: r, ...a }, C) {
6
7
  const [n, c] = u.useState([]), w = u.useRef(0);
7
8
  return u.useImperativeHandle(
8
9
  x,
9
10
  () => ({
10
- onRipple(d) {
11
- const t = d.currentTarget.getBoundingClientRect(), h = Math.max(t.width, t.height), p = h / 2;
12
- let o, m;
13
- g ? (o = t.width > t.height ? 0 : t.width / 2 - p, m = t.height > t.width ? 0 : t.height / 2 - p) : (o = d.clientX - t.left - p, m = d.clientY - t.top - p), c([
11
+ onRipple(o) {
12
+ const t = o.currentTarget.getBoundingClientRect(), d = Math.max(t.width, t.height), p = d / 2;
13
+ let h, m;
14
+ g ? (h = t.width > t.height ? 0 : t.width / 2 - p, m = t.height > t.width ? 0 : t.height / 2 - p) : (h = o.clientX - t.left - p, m = o.clientY - t.top - p), c([
14
15
  ...n,
15
16
  /* @__PURE__ */ R(
16
17
  "span",
@@ -18,10 +19,10 @@ const H = N(function({ actionRef: x, className: l, classes: i, center: g, style:
18
19
  className: b("smwb-ripple__child", i == null ? void 0 : i.child),
19
20
  style: {
20
21
  ...e,
21
- left: o,
22
+ left: h,
22
23
  top: m,
23
- width: h,
24
- height: h,
24
+ width: d,
25
+ height: d,
25
26
  backgroundColor: r != null ? r : e == null ? void 0 : e.backgroundColor
26
27
  },
27
28
  ...a
@@ -37,6 +38,6 @@ const H = N(function({ actionRef: x, className: l, classes: i, center: g, style:
37
38
  ), /* @__PURE__ */ R("span", { ref: C, className: b("smwb-ripple", l, i == null ? void 0 : i.ripple), "data-testid": "ripple", "aria-hidden": "true", children: n });
38
39
  });
39
40
  export {
40
- H as Ripple
41
+ I as Ripple
41
42
  };
42
43
  //# sourceMappingURL=ripple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ripple.js","sources":["../../../../src/components/base/ripple/ripple.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport cn from \"clsx\";\n\nexport interface RippleActionsRef {\n onRipple: (event: React.MouseEvent) => void;\n}\n\nexport interface RippleClasses {\n ripple?: string;\n child?: string;\n}\n\nexport interface RippleProps extends React.HTMLAttributes<HTMLSpanElement> {\n actionRef: React.Ref<RippleActionsRef>;\n classes?: RippleClasses;\n center?: boolean;\n /** Ripple lifetime in ms. */\n duration?: number;\n /** Ripple color (any CSS color). Defaults to inherited currentColor. */\n color?: string;\n}\n\n/**\n * ⚠️ Для правильной работы этого эффекта, установите у компонента родителя CSS: **position: relative;**\n */\n\nexport const Ripple = forwardRef<HTMLSpanElement, RippleProps>(function Ripple(\n { actionRef, className, classes, center, style, duration = 600, color, ...rest },\n ref\n) {\n const [ripples, setRipples] = React.useState<React.ReactNode[]>([]);\n const nextKey = React.useRef<number>(0);\n\n React.useImperativeHandle(\n actionRef,\n () => ({\n onRipple(event: React.MouseEvent) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n let coordX;\n let coordY;\n\n if (center) {\n coordX = rect.width > rect.height ? 0 : rect.width / 2 - radius;\n coordY = rect.height > rect.width ? 0 : rect.height / 2 - radius;\n } else {\n coordX = event.clientX - rect.left - radius;\n coordY = event.clientY - rect.top - radius;\n }\n\n setRipples([\n ...ripples,\n <span\n key={nextKey.current}\n className={cn(\"smwb-ripple__child\", classes?.child)}\n style={{\n ...style,\n left: coordX,\n top: coordY,\n width: diameter,\n height: diameter,\n backgroundColor: color ?? style?.backgroundColor,\n }}\n {...rest}\n />,\n ]);\n\n nextKey.current += 1;\n\n setTimeout(() => {\n setRipples((prevRipples) => prevRipples.slice(1));\n }, duration);\n },\n }),\n [rest, center, ripples, classes?.child, style, duration, color]\n );\n\n return (\n <span ref={ref} className={cn(\"smwb-ripple\", className, classes?.ripple)} data-testid=\"ripple\" aria-hidden=\"true\">\n {ripples}\n </span>\n );\n});\n"],"names":["Ripple","forwardRef","actionRef","className","classes","center","style","duration","color","rest","ref","ripples","setRipples","React","nextKey","event","rect","diameter","radius","coordX","coordY","jsx","cn","prevRipples"],"mappings":";;;;AA2BO,MAAMA,IAASC,EAAyC,SAC7D,EAAE,WAAAC,GAAW,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,IAAW,KAAK,OAAAC,GAAO,GAAGC,EAAA,GAC1EC,GACA;AACA,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAM,SAA4B,CAAA,CAAE,GAC5DC,IAAUD,EAAM,OAAe,CAAC;AAEtC,SAAAA,EAAM;AAAA,IACJX;AAAA,IACA,OAAO;AAAA,MACL,SAASa,GAAyB;AAEhC,cAAMC,IADSD,EAAM,cACD,sBAAA,GACdE,IAAW,KAAK,IAAID,EAAK,OAAOA,EAAK,MAAM,GAC3CE,IAASD,IAAW;AAE1B,YAAIE,GACAC;AAEJ,QAAIf,KACFc,IAASH,EAAK,QAAQA,EAAK,SAAS,IAAIA,EAAK,QAAQ,IAAIE,GACzDE,IAASJ,EAAK,SAASA,EAAK,QAAQ,IAAIA,EAAK,SAAS,IAAIE,MAE1DC,IAASJ,EAAM,UAAUC,EAAK,OAAOE,GACrCE,IAASL,EAAM,UAAUC,EAAK,MAAME,IAGtCN,EAAW;AAAA,UACT,GAAGD;AAAA,UACH,gBAAAU;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWC,EAAG,sBAAsBlB,KAAA,gBAAAA,EAAS,KAAK;AAAA,cAClD,OAAO;AAAA,gBACL,GAAGE;AAAA,gBACH,MAAMa;AAAA,gBACN,KAAKC;AAAA,gBACL,OAAOH;AAAA,gBACP,QAAQA;AAAA,gBACR,iBAAiBT,KAAA,OAAAA,IAASF,KAAA,gBAAAA,EAAO;AAAA,cAAA;AAAA,cAElC,GAAGG;AAAA,YAAA;AAAA,YAVCK,EAAQ;AAAA,UAAA;AAAA,QAWf,CACD,GAEDA,EAAQ,WAAW,GAEnB,WAAW,MAAM;AACf,UAAAF,EAAW,CAACW,MAAgBA,EAAY,MAAM,CAAC,CAAC;AAAA,QAClD,GAAGhB,CAAQ;AAAA,MACb;AAAA,IAAA;AAAA,IAEF,CAACE,GAAMJ,GAAQM,GAASP,KAAA,gBAAAA,EAAS,OAAOE,GAAOC,GAAUC,CAAK;AAAA,EAAA,GAI9D,gBAAAa,EAAC,QAAA,EAAK,KAAAX,GAAU,WAAWY,EAAG,eAAenB,GAAWC,KAAA,gBAAAA,EAAS,MAAM,GAAG,eAAY,UAAS,eAAY,QACxG,UAAAO,GACH;AAEJ,CAAC;"}
1
+ {"version":3,"file":"ripple.js","sources":["../../../../src/components/base/ripple/ripple.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport cn from \"clsx\";\n\nexport interface RippleActionsRef {\n onRipple: (event: React.MouseEvent) => void;\n}\n\nexport interface RippleClasses {\n ripple?: string;\n child?: string;\n}\n\nexport interface RippleProps extends React.HTMLAttributes<HTMLSpanElement> {\n actionRef: React.Ref<RippleActionsRef>;\n classes?: RippleClasses;\n center?: boolean;\n /** Ripple lifetime in ms. */\n duration?: number;\n /** Ripple color (any CSS color). Defaults to inherited currentColor. */\n color?: string;\n}\n\n/**\n * ⚠️ Для правильной работы этого эффекта, установите у компонента родителя CSS: **position: relative;**\n */\n\nexport const Ripple = forwardRef<HTMLSpanElement, RippleProps>(function Ripple(\n { actionRef, className, classes, center, style, duration = 600, color, ...rest },\n ref\n) {\n const [ripples, setRipples] = React.useState<React.ReactNode[]>([]);\n const nextKey = React.useRef<number>(0);\n\n React.useImperativeHandle(\n actionRef,\n () => ({\n onRipple(event: React.MouseEvent) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n\n let coordX;\n let coordY;\n\n if (center) {\n coordX = rect.width > rect.height ? 0 : rect.width / 2 - radius;\n coordY = rect.height > rect.width ? 0 : rect.height / 2 - radius;\n } else {\n coordX = event.clientX - rect.left - radius;\n coordY = event.clientY - rect.top - radius;\n }\n\n setRipples([\n ...ripples,\n <span\n key={nextKey.current}\n className={cn(\"smwb-ripple__child\", classes?.child)}\n style={{\n ...style,\n left: coordX,\n top: coordY,\n width: diameter,\n height: diameter,\n backgroundColor: color ?? style?.backgroundColor,\n }}\n {...rest}\n />,\n ]);\n\n nextKey.current += 1;\n\n setTimeout(() => {\n setRipples((prevRipples) => prevRipples.slice(1));\n }, duration);\n },\n }),\n [rest, center, ripples, classes?.child, style, duration, color]\n );\n\n return (\n <span ref={ref} className={cn(\"smwb-ripple\", className, classes?.ripple)} data-testid=\"ripple\" aria-hidden=\"true\">\n {ripples}\n </span>\n );\n});\n"],"names":["Ripple","forwardRef","actionRef","className","classes","center","style","duration","color","rest","ref","ripples","setRipples","React","nextKey","event","rect","diameter","radius","coordX","coordY","jsx","cn","prevRipples"],"mappings":";;;;;AA4BO,MAAMA,IAASC,EAAyC,SAC7D,EAAE,WAAAC,GAAW,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,OAAAC,GAAO,UAAAC,IAAW,KAAK,OAAAC,GAAO,GAAGC,EAAA,GAC1EC,GACA;AACA,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAM,SAA4B,CAAA,CAAE,GAC5DC,IAAUD,EAAM,OAAe,CAAC;AAEtC,SAAAA,EAAM;AAAA,IACJX;AAAA,IACA,OAAO;AAAA,MACL,SAASa,GAAyB;AAEhC,cAAMC,IADSD,EAAM,cACD,sBAAA,GACdE,IAAW,KAAK,IAAID,EAAK,OAAOA,EAAK,MAAM,GAC3CE,IAASD,IAAW;AAE1B,YAAIE,GACAC;AAEJ,QAAIf,KACFc,IAASH,EAAK,QAAQA,EAAK,SAAS,IAAIA,EAAK,QAAQ,IAAIE,GACzDE,IAASJ,EAAK,SAASA,EAAK,QAAQ,IAAIA,EAAK,SAAS,IAAIE,MAE1DC,IAASJ,EAAM,UAAUC,EAAK,OAAOE,GACrCE,IAASL,EAAM,UAAUC,EAAK,MAAME,IAGtCN,EAAW;AAAA,UACT,GAAGD;AAAA,UACH,gBAAAU;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWC,EAAG,sBAAsBlB,KAAA,gBAAAA,EAAS,KAAK;AAAA,cAClD,OAAO;AAAA,gBACL,GAAGE;AAAA,gBACH,MAAMa;AAAA,gBACN,KAAKC;AAAA,gBACL,OAAOH;AAAA,gBACP,QAAQA;AAAA,gBACR,iBAAiBT,KAAA,OAAAA,IAASF,KAAA,gBAAAA,EAAO;AAAA,cAAA;AAAA,cAElC,GAAGG;AAAA,YAAA;AAAA,YAVCK,EAAQ;AAAA,UAAA;AAAA,QAWf,CACD,GAEDA,EAAQ,WAAW,GAEnB,WAAW,MAAM;AACf,UAAAF,EAAW,CAACW,MAAgBA,EAAY,MAAM,CAAC,CAAC;AAAA,QAClD,GAAGhB,CAAQ;AAAA,MACb;AAAA,IAAA;AAAA,IAEF,CAACE,GAAMJ,GAAQM,GAASP,KAAA,gBAAAA,EAAS,OAAOE,GAAOC,GAAUC,CAAK;AAAA,EAAA,GAI9D,gBAAAa,EAAC,QAAA,EAAK,KAAAX,GAAU,WAAWY,EAAG,eAAenB,GAAWC,KAAA,gBAAAA,EAAS,MAAM,GAAG,eAAY,UAAS,eAAY,QACxG,UAAAO,GACH;AAEJ,CAAC;"}
@@ -1,7 +1,18 @@
1
1
  import React, { ReactNode } from "react";
2
+ /**
3
+ * `filled` — the header is an app-bar strip on a raised panel (the original look).
4
+ * `outlined` — a bordered card with a flat header: for feeds of records.
5
+ * `plain` — no frame, a divider under each panel: for FAQ-style lists.
6
+ * The flat variants stretch to the container and wrap long titles.
7
+ */
8
+ export type AccordionVariant = "filled" | "outlined" | "plain";
2
9
  export interface AccordionProps {
3
10
  className?: string;
4
- title?: string;
11
+ /** Header text or markup (a date, an author, a badge…). */
12
+ title?: ReactNode;
13
+ /** Secondary line under the title. */
14
+ subtitle?: ReactNode;
15
+ variant?: AccordionVariant;
5
16
  isOpenByDefault?: boolean;
6
17
  /** Controlled open state. When set, the component is controlled. */
7
18
  open?: boolean;
@@ -12,7 +23,13 @@ export interface AccordionProps {
12
23
  id?: string;
13
24
  children?: React.ReactNode;
14
25
  startAdornment?: (isOpen: boolean) => React.ReactNode;
26
+ /** Rendered after the title, before the expand icon. */
27
+ endAdornment?: (isOpen: boolean) => React.ReactNode;
15
28
  noIcon?: boolean;
29
+ /** Create the content on first open instead of up front. */
30
+ lazy?: boolean;
31
+ /** Remove the content once the panel has collapsed (created again on open). */
32
+ unmountOnExit?: boolean;
16
33
  onToggleClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
17
34
  /** Fired with the next open state on toggle. */
18
35
  onChange?: (open: boolean) => void;
@@ -1,62 +1,85 @@
1
- import { jsxs as _, jsx as r } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/accordion/accordion.entry.css';/* empty css */
3
- import { forwardRef as z, useState as H } from "react";
4
- import b from "clsx";
5
- import R from "../../base/animateHeight/animateHeight.js";
6
- import { Icon as S } from "../../base/icon/icon.js";
7
- import { useId as q } from "../../../hooks/useId.js";
8
- const M = z(function({
9
- className: u,
10
- title: w,
11
- isOpenByDefault: I = !1,
12
- open: n,
13
- disabled: t,
1
+ import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
+ import '../../../assets/styles/less/components/accordion/accordion.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
4
+ import { forwardRef as J, useState as y } from "react";
5
+ import O from "clsx";
6
+ import K from "../../base/animateHeight/animateHeight.js";
7
+ import { Icon as L } from "../../base/icon/icon.js";
8
+ import { useId as M } from "../../../hooks/useId.js";
9
+ const C = J(function({
10
+ className: $,
11
+ title: j,
12
+ subtitle: l,
13
+ variant: B = "filled",
14
+ isOpenByDefault: H = !1,
15
+ open: m,
16
+ disabled: s,
14
17
  icon: a,
15
- id: x,
16
- children: e,
17
- startAdornment: s,
18
- noIcon: N,
19
- onToggleClick: c,
18
+ id: z,
19
+ children: c,
20
+ startAdornment: n,
21
+ endAdornment: p,
22
+ noIcon: P,
23
+ lazy: R,
24
+ unmountOnExit: _,
25
+ onToggleClick: r,
20
26
  onChange: i
21
- }, h) {
22
- const d = n !== void 0, [v, O] = H(I), o = d ? !!n : v, m = q(x), p = `${m}-content`, f = `${m}-header`, y = b("smwb-accordion__arrow-icon", { "smwb-accordion__arrow-icon_opened": o }), j = ($) => {
23
- if (t)
27
+ }, S) {
28
+ const f = m !== void 0, [q, D] = y(H), o = f ? !!m : q, b = M(z), w = `${b}-content`, u = `${b}-header`, h = !!(R || _), [N, I] = y(o);
29
+ o && !N && I(!0);
30
+ const E = (t) => {
31
+ t === 0 && _ && !o && I(!1);
32
+ }, v = h ? c !== void 0 : !!c, F = O("smwb-accordion__arrow-icon", { "smwb-accordion__arrow-icon_opened": o }), G = (t) => {
33
+ if (s)
24
34
  return;
25
- const l = !o;
26
- d || O(l), i == null || i(l), c == null || c($);
35
+ const x = !o;
36
+ f || D(x), i == null || i(x), r == null || r(t);
27
37
  };
28
- return /* @__PURE__ */ _("div", { ref: h, className: b("smwb-accordion", { "smwb-disabled": t }, u), "data-testid": "accordion", children: [
29
- /* @__PURE__ */ _(
30
- "button",
31
- {
32
- id: f,
33
- className: "smwb-accordion__header",
34
- onClick: j,
35
- type: "button",
36
- disabled: t,
37
- "aria-expanded": o,
38
- "aria-controls": e ? p : void 0,
39
- children: [
40
- s == null ? void 0 : s(o),
41
- /* @__PURE__ */ r("span", { className: "smwb-accordion__title", children: w }),
42
- !N && (a != null ? a : /* @__PURE__ */ r(S, { className: y, name: "expand_more", size: 24 }))
43
- ]
44
- }
45
- ),
46
- e && /* @__PURE__ */ r("div", { id: p, role: "region", "aria-labelledby": f, children: /* @__PURE__ */ r(
47
- R,
48
- {
49
- height: o ? "auto" : 0,
50
- animateOpacity: !0,
51
- duration: 300,
52
- className: "smwb-accordion__content",
53
- children: e
54
- }
55
- ) })
56
- ] });
38
+ return /* @__PURE__ */ d(
39
+ "div",
40
+ {
41
+ ref: S,
42
+ className: O("smwb-accordion", `smwb-accordion_${B}`, { "smwb-disabled": s }, $),
43
+ "data-testid": "accordion",
44
+ children: [
45
+ /* @__PURE__ */ d(
46
+ "button",
47
+ {
48
+ id: u,
49
+ className: "smwb-accordion__header",
50
+ onClick: G,
51
+ type: "button",
52
+ disabled: s,
53
+ "aria-expanded": o,
54
+ "aria-controls": v ? w : void 0,
55
+ children: [
56
+ n == null ? void 0 : n(o),
57
+ /* @__PURE__ */ d("span", { className: "smwb-accordion__heading", children: [
58
+ /* @__PURE__ */ e("span", { className: "smwb-accordion__title", children: j }),
59
+ l ? /* @__PURE__ */ e("span", { className: "smwb-accordion__subtitle", children: l }) : null
60
+ ] }),
61
+ p ? /* @__PURE__ */ e("span", { className: "smwb-accordion__end", children: p(o) }) : null,
62
+ !P && (a != null ? a : /* @__PURE__ */ e(L, { className: F, name: "expand_more", size: 24 }))
63
+ ]
64
+ }
65
+ ),
66
+ v && /* @__PURE__ */ e("div", { id: w, role: "region", "aria-labelledby": u, children: /* @__PURE__ */ e(
67
+ K,
68
+ {
69
+ height: o ? "auto" : 0,
70
+ animateOpacity: !0,
71
+ duration: 300,
72
+ className: "smwb-accordion__content",
73
+ onHeightAnimationEnd: E,
74
+ children: !h || N ? c : null
75
+ }
76
+ ) })
77
+ ]
78
+ }
79
+ );
57
80
  });
58
81
  export {
59
- M as Accordion,
60
- M as default
82
+ C as Accordion,
83
+ C as default
61
84
  };
62
85
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","sources":["../../../../src/components/dataDisplay/accordion/accordion.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport AnimateHeight from \"../../base/animateHeight/animateHeight\";\nimport Icon from \"../../base/icon/icon\";\nimport { useId } from \"../../../hooks/useId\";\n\nexport interface AccordionProps {\n className?: string;\n title?: string;\n isOpenByDefault?: boolean;\n /** Controlled open state. When set, the component is controlled. */\n open?: boolean;\n /** Disable toggling. */\n disabled?: boolean;\n /** Custom expand icon (replaces the default chevron). */\n icon?: ReactNode;\n id?: string;\n children?: React.ReactNode;\n startAdornment?: (isOpen: boolean) => React.ReactNode;\n noIcon?: boolean;\n onToggleClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n /** Fired with the next open state on toggle. */\n onChange?: (open: boolean) => void;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n {\n className,\n title,\n isOpenByDefault = false,\n open,\n disabled,\n icon,\n id: idProp,\n children,\n startAdornment,\n noIcon,\n onToggleClick,\n onChange,\n },\n ref\n) {\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(isOpenByDefault);\n const isOpen = isControlled ? !!open : internalOpen;\n const baseId = useId(idProp);\n const contentId = `${baseId}-content`;\n const headerId = `${baseId}-header`;\n\n const arrowIconClasses = cn(\"smwb-accordion__arrow-icon\", { \"smwb-accordion__arrow-icon_opened\": isOpen });\n\n const toggle = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled) {\n return;\n }\n const next = !isOpen;\n if (!isControlled) {\n setInternalOpen(next);\n }\n onChange?.(next);\n onToggleClick?.(e);\n };\n\n return (\n <div ref={ref} className={cn(\"smwb-accordion\", { \"smwb-disabled\": disabled }, className)} data-testid=\"accordion\">\n <button\n id={headerId}\n className=\"smwb-accordion__header\"\n onClick={toggle}\n type=\"button\"\n disabled={disabled}\n aria-expanded={isOpen}\n aria-controls={children ? contentId : undefined}\n >\n {startAdornment?.(isOpen)}\n <span className=\"smwb-accordion__title\">{title}</span>\n {!noIcon && (icon ?? <Icon className={arrowIconClasses} name=\"expand_more\" size={24} />)}\n </button>\n\n {children && (\n <div id={contentId} role=\"region\" aria-labelledby={headerId}>\n <AnimateHeight\n height={isOpen ? \"auto\" : 0}\n animateOpacity={true}\n duration={300}\n className=\"smwb-accordion__content\"\n >\n {children}\n </AnimateHeight>\n </div>\n )}\n </div>\n );\n});\n\nexport default Accordion;\n"],"names":["Accordion","forwardRef","className","title","isOpenByDefault","open","disabled","icon","idProp","children","startAdornment","noIcon","onToggleClick","onChange","ref","isControlled","internalOpen","setInternalOpen","useState","isOpen","baseId","useId","contentId","headerId","arrowIconClasses","cn","toggle","e","next","jsxs","jsx","Icon","AnimateHeight"],"mappings":";;;;;;;AA0BO,MAAMA,IAAYC,EAA2C,SAClE;AAAA,EACE,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,eAAAC;AAAA,EACA,UAAAC;AACF,GACAC,GACA;AACA,QAAMC,IAAeV,MAAS,QACxB,CAACW,GAAcC,CAAe,IAAIC,EAAkBd,CAAe,GACnEe,IAASJ,IAAe,CAAC,CAACV,IAAOW,GACjCI,IAASC,EAAMb,CAAM,GACrBc,IAAY,GAAGF,CAAM,YACrBG,IAAW,GAAGH,CAAM,WAEpBI,IAAmBC,EAAG,8BAA8B,EAAE,qCAAqCN,GAAQ,GAEnGO,IAAS,CAACC,MAAuD;AACrE,QAAIrB;AACF;AAEF,UAAMsB,IAAO,CAACT;AACd,IAAKJ,KACHE,EAAgBW,CAAI,GAEtBf,KAAA,QAAAA,EAAWe,IACXhB,KAAA,QAAAA,EAAgBe;AAAA,EAClB;AAEA,SACE,gBAAAE,EAAC,OAAA,EAAI,KAAAf,GAAU,WAAWW,EAAG,kBAAkB,EAAE,iBAAiBnB,EAAA,GAAYJ,CAAS,GAAG,eAAY,aACpG,UAAA;AAAA,IAAA,gBAAA2B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAIN;AAAA,QACJ,WAAU;AAAA,QACV,SAASG;AAAA,QACT,MAAK;AAAA,QACL,UAAApB;AAAA,QACA,iBAAea;AAAA,QACf,iBAAeV,IAAWa,IAAY;AAAA,QAErC,UAAA;AAAA,UAAAZ,KAAA,gBAAAA,EAAiBS;AAAA,UAClB,gBAAAW,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA3B,GAAM;AAAA,UAC9C,CAACQ,MAAWJ,KAAA,OAAAA,IAAQ,gBAAAuB,EAACC,GAAA,EAAK,WAAWP,GAAkB,MAAK,eAAc,MAAM,GAAA,CAAI;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGtFf,uBACE,OAAA,EAAI,IAAIa,GAAW,MAAK,UAAS,mBAAiBC,GACjD,UAAA,gBAAAO;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,QAAQb,IAAS,SAAS;AAAA,QAC1B,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,WAAU;AAAA,QAET,UAAAV;AAAA,MAAA;AAAA,IAAA,EACH,CACF;AAAA,EAAA,GAEJ;AAEJ,CAAC;"}
1
+ {"version":3,"file":"accordion.js","sources":["../../../../src/components/dataDisplay/accordion/accordion.tsx"],"sourcesContent":["import React, { forwardRef, ReactNode, useState } from \"react\";\nimport cn from \"clsx\";\nimport AnimateHeight, { type Height } from \"../../base/animateHeight/animateHeight\";\nimport Icon from \"../../base/icon/icon\";\nimport { useId } from \"../../../hooks/useId\";\n\n/**\n * `filled` — the header is an app-bar strip on a raised panel (the original look).\n * `outlined` — a bordered card with a flat header: for feeds of records.\n * `plain` — no frame, a divider under each panel: for FAQ-style lists.\n * The flat variants stretch to the container and wrap long titles.\n */\nexport type AccordionVariant = \"filled\" | \"outlined\" | \"plain\";\n\nexport interface AccordionProps {\n className?: string;\n /** Header text or markup (a date, an author, a badge…). */\n title?: ReactNode;\n /** Secondary line under the title. */\n subtitle?: ReactNode;\n variant?: AccordionVariant;\n isOpenByDefault?: boolean;\n /** Controlled open state. When set, the component is controlled. */\n open?: boolean;\n /** Disable toggling. */\n disabled?: boolean;\n /** Custom expand icon (replaces the default chevron). */\n icon?: ReactNode;\n id?: string;\n children?: React.ReactNode;\n startAdornment?: (isOpen: boolean) => React.ReactNode;\n /** Rendered after the title, before the expand icon. */\n endAdornment?: (isOpen: boolean) => React.ReactNode;\n noIcon?: boolean;\n /** Create the content on first open instead of up front. */\n lazy?: boolean;\n /** Remove the content once the panel has collapsed (created again on open). */\n unmountOnExit?: boolean;\n onToggleClick?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n /** Fired with the next open state on toggle. */\n onChange?: (open: boolean) => void;\n}\n\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n {\n className,\n title,\n subtitle,\n variant = \"filled\",\n isOpenByDefault = false,\n open,\n disabled,\n icon,\n id: idProp,\n children,\n startAdornment,\n endAdornment,\n noIcon,\n lazy,\n unmountOnExit,\n onToggleClick,\n onChange,\n },\n ref\n) {\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(isOpenByDefault);\n const isOpen = isControlled ? !!open : internalOpen;\n const baseId = useId(idProp);\n const contentId = `${baseId}-content`;\n const headerId = `${baseId}-header`;\n\n // Deferred content (lazy / unmountOnExit) exists only once the panel has been\n // opened; unmountOnExit drops it again when the collapse animation ends.\n const deferred = Boolean(lazy || unmountOnExit);\n const [present, setPresent] = useState<boolean>(isOpen);\n if (isOpen && !present) {\n setPresent(true);\n }\n const onCollapsed = (height: Height) => {\n if (height === 0 && unmountOnExit && !isOpen) {\n setPresent(false);\n }\n };\n // A deferred panel keeps its region (it has nothing to test yet); otherwise\n // the region is there when there is content.\n const hasContent = deferred ? children !== undefined : Boolean(children);\n\n const arrowIconClasses = cn(\"smwb-accordion__arrow-icon\", { \"smwb-accordion__arrow-icon_opened\": isOpen });\n\n const toggle = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (disabled) {\n return;\n }\n const next = !isOpen;\n if (!isControlled) {\n setInternalOpen(next);\n }\n onChange?.(next);\n onToggleClick?.(e);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"smwb-accordion\", `smwb-accordion_${variant}`, { \"smwb-disabled\": disabled }, className)}\n data-testid=\"accordion\"\n >\n <button\n id={headerId}\n className=\"smwb-accordion__header\"\n onClick={toggle}\n type=\"button\"\n disabled={disabled}\n aria-expanded={isOpen}\n aria-controls={hasContent ? contentId : undefined}\n >\n {startAdornment?.(isOpen)}\n <span className=\"smwb-accordion__heading\">\n <span className=\"smwb-accordion__title\">{title}</span>\n {subtitle ? <span className=\"smwb-accordion__subtitle\">{subtitle}</span> : null}\n </span>\n {endAdornment ? <span className=\"smwb-accordion__end\">{endAdornment(isOpen)}</span> : null}\n {!noIcon && (icon ?? <Icon className={arrowIconClasses} name=\"expand_more\" size={24} />)}\n </button>\n\n {hasContent && (\n <div id={contentId} role=\"region\" aria-labelledby={headerId}>\n <AnimateHeight\n height={isOpen ? \"auto\" : 0}\n animateOpacity={true}\n duration={300}\n className=\"smwb-accordion__content\"\n onHeightAnimationEnd={onCollapsed}\n >\n {!deferred || present ? children : null}\n </AnimateHeight>\n </div>\n )}\n </div>\n );\n});\n\nexport default Accordion;\n"],"names":["Accordion","forwardRef","className","title","subtitle","variant","isOpenByDefault","open","disabled","icon","idProp","children","startAdornment","endAdornment","noIcon","lazy","unmountOnExit","onToggleClick","onChange","ref","isControlled","internalOpen","setInternalOpen","useState","isOpen","baseId","useId","contentId","headerId","deferred","present","setPresent","onCollapsed","height","hasContent","arrowIconClasses","cn","toggle","e","next","jsxs","jsx","Icon","AnimateHeight"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/assetGrid/assetGrid.entry.css';/* empty css */
2
+ import '../../../assets/styles/less/components/assetGrid/assetGrid.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
3
4
  import _, { useRef as H, useState as h, useEffect as I, useMemo as O } from "react";
4
5
  import T from "clsx";
5
6
  import { useVirtualList as W } from "../../../hooks/useVirtualList.js";
6
- function L({
7
+ function V({
7
8
  items: l,
8
9
  renderItem: f,
9
10
  minColumn: d = 160,
@@ -16,7 +17,7 @@ function L({
16
17
  className: N,
17
18
  style: R
18
19
  }) {
19
- const g = H(null), [c, A] = h(0), [M, S] = h(0), [z, $] = h(!1);
20
+ const g = H(null), [m, A] = h(0), [M, S] = h(0), [z, $] = h(!1);
20
21
  I(() => {
21
22
  const s = g.current;
22
23
  if (!s || typeof ResizeObserver == "undefined") return;
@@ -26,14 +27,14 @@ function L({
26
27
  return t.observe(s), () => t.disconnect();
27
28
  }, []);
28
29
  const o = O(
29
- () => c <= 0 ? 1 : Math.max(1, Math.floor((c + r) / (d + r))),
30
- [c, r, d]
30
+ () => m <= 0 ? 1 : Math.max(1, Math.floor((m + r) / (d + r))),
31
+ [m, r, d]
31
32
  ), C = Math.ceil(l.length / o), i = W({
32
33
  itemCount: C,
33
34
  itemHeight: a + r,
34
35
  viewportHeight: M || 1,
35
36
  overscan: v
36
- }), u = {
37
+ }), p = {
37
38
  display: "grid",
38
39
  gridTemplateColumns: `repeat(auto-fill, minmax(${d}px, 1fr))`,
39
40
  gap: r,
@@ -46,23 +47,23 @@ function L({
46
47
  marginBottom: r
47
48
  };
48
49
  let n;
49
- return b ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__plain", style: u, children: Array.from({ length: w }).map((s, t) => /* @__PURE__ */ e("div", { className: "smwb-asset-grid__skeleton", style: { height: a } }, t)) }) : l.length === 0 ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__empty", children: x }) : z ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__sizer", style: { height: i.totalHeight, position: "relative" }, children: /* @__PURE__ */ e(
50
+ return b ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__plain", style: p, children: Array.from({ length: w }).map((s, t) => /* @__PURE__ */ e("div", { className: "smwb-asset-grid__skeleton", style: { height: a } }, t)) }) : l.length === 0 ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__empty", children: x }) : z ? n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__sizer", style: { height: i.totalHeight, position: "relative" }, children: /* @__PURE__ */ e(
50
51
  "div",
51
52
  {
52
53
  className: "smwb-asset-grid__band",
53
54
  style: { position: "absolute", top: 0, left: 0, right: 0, transform: `translateY(${i.offsetY}px)` },
54
55
  children: Array.from({ length: Math.max(0, i.endIndex - i.startIndex) }).map((s, t) => {
55
- const p = i.startIndex + t;
56
+ const u = i.startIndex + t;
56
57
  return /* @__PURE__ */ e("div", { className: "smwb-asset-grid__row", style: F, children: Array.from({ length: o }).map((Y, y) => {
57
- const m = p * o + y;
58
- return m < l.length ? /* @__PURE__ */ e(_.Fragment, { children: f(l[m], m) }, y) : null;
59
- }) }, p);
58
+ const c = u * o + y;
59
+ return c < l.length ? /* @__PURE__ */ e(_.Fragment, { children: f(l[c], c) }, y) : null;
60
+ }) }, u);
60
61
  })
61
62
  }
62
- ) }) : n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__plain", style: u, children: l.map((s, t) => /* @__PURE__ */ e(_.Fragment, { children: f(s, t) }, t)) }), /* @__PURE__ */ e("div", { ref: g, className: T("smwb-asset-grid", N), style: R, onScroll: i.onScroll, children: n });
63
+ ) }) : n = /* @__PURE__ */ e("div", { className: "smwb-asset-grid__plain", style: p, children: l.map((s, t) => /* @__PURE__ */ e(_.Fragment, { children: f(s, t) }, t)) }), /* @__PURE__ */ e("div", { ref: g, className: T("smwb-asset-grid", N), style: R, onScroll: i.onScroll, children: n });
63
64
  }
64
65
  export {
65
- L as AssetGrid,
66
- L as default
66
+ V as AssetGrid,
67
+ V as default
67
68
  };
68
69
  //# sourceMappingURL=assetGrid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assetGrid.js","sources":["../../../../src/components/dataDisplay/assetGrid/assetGrid.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { useVirtualList } from \"../../../hooks/useVirtualList\";\n\nexport interface AssetGridProps<T> {\n items: T[];\n /** Render one cell. `index` is the absolute index into `items`. */\n renderItem: (item: T, index: number) => React.ReactNode;\n /** Minimum column width (px); drives the column count from the measured width. Default 160. */\n minColumn?: number;\n /** Fixed cell height (px). */\n rowHeight: number;\n /** Gap (px) between cells on both axes. Default 8. */\n gap?: number;\n /** Extra rows rendered above/below the viewport. Default 2. */\n overscan?: number;\n loading?: boolean;\n /** Skeleton tile count while loading. Default 12. */\n loadingCount?: number;\n emptyLabel?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * A virtualized, data-shape-agnostic asset grid: measures its own width to pick a\n * column count, windows rows via `useVirtualList`, and renders only the visible\n * cells through a `renderItem` slot — with loading skeletons + an empty state. The\n * windowing math every catalog app reimplements, upstreamed. SSR-safe: before it\n * can measure (server + first paint) it renders a plain auto-fill grid of all\n * items, then virtualizes after mount.\n */\nexport function AssetGrid<T>({\n items,\n renderItem,\n minColumn = 160,\n rowHeight,\n gap = 8,\n overscan = 2,\n loading,\n loadingCount = 12,\n emptyLabel,\n className,\n style,\n}: AssetGridProps<T>): React.ReactElement {\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n const el = viewportRef.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => {\n setWidth(el.clientWidth);\n setHeight(el.clientHeight);\n setReady(true);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const cols = useMemo(\n () => (width <= 0 ? 1 : Math.max(1, Math.floor((width + gap) / (minColumn + gap)))),\n [width, gap, minColumn]\n );\n const rowCount = Math.ceil(items.length / cols);\n const vl = useVirtualList({\n itemCount: rowCount,\n itemHeight: rowHeight + gap,\n viewportHeight: height || 1,\n overscan,\n });\n\n const plainStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fill, minmax(${minColumn}px, 1fr))`,\n gap,\n gridAutoRows: rowHeight,\n };\n const rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,\n gap,\n height: rowHeight,\n marginBottom: gap,\n };\n\n let body: React.ReactNode;\n if (loading) {\n body = (\n <div className=\"smwb-asset-grid__plain\" style={plainStyle}>\n {Array.from({ length: loadingCount }).map((_, i) => (\n <div key={i} className=\"smwb-asset-grid__skeleton\" style={{ height: rowHeight }} />\n ))}\n </div>\n );\n } else if (items.length === 0) {\n body = <div className=\"smwb-asset-grid__empty\">{emptyLabel}</div>;\n } else if (!ready) {\n body = (\n <div className=\"smwb-asset-grid__plain\" style={plainStyle}>\n {items.map((item, index) => (\n <React.Fragment key={index}>{renderItem(item, index)}</React.Fragment>\n ))}\n </div>\n );\n } else {\n body = (\n <div className=\"smwb-asset-grid__sizer\" style={{ height: vl.totalHeight, position: \"relative\" }}>\n <div\n className=\"smwb-asset-grid__band\"\n style={{ position: \"absolute\", top: 0, left: 0, right: 0, transform: `translateY(${vl.offsetY}px)` }}\n >\n {Array.from({ length: Math.max(0, vl.endIndex - vl.startIndex) }).map((_, r) => {\n const row = vl.startIndex + r;\n return (\n <div key={row} className=\"smwb-asset-grid__row\" style={rowStyle}>\n {Array.from({ length: cols }).map((_, c) => {\n const index = row * cols + c;\n return index < items.length ? (\n <React.Fragment key={c}>{renderItem(items[index], index)}</React.Fragment>\n ) : null;\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={viewportRef} className={cn(\"smwb-asset-grid\", className)} style={style} onScroll={vl.onScroll}>\n {body}\n </div>\n );\n}\n\nexport default AssetGrid;\n"],"names":["AssetGrid","items","renderItem","minColumn","rowHeight","gap","overscan","loading","loadingCount","emptyLabel","className","style","viewportRef","useRef","width","setWidth","useState","height","setHeight","ready","setReady","useEffect","el","ro","cols","useMemo","rowCount","vl","useVirtualList","plainStyle","rowStyle","body","jsx","_","i","r","row","c","index","React","item","cn"],"mappings":"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"}
1
+ {"version":3,"file":"assetGrid.js","sources":["../../../../src/components/dataDisplay/assetGrid/assetGrid.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { useVirtualList } from \"../../../hooks/useVirtualList\";\n\nexport interface AssetGridProps<T> {\n items: T[];\n /** Render one cell. `index` is the absolute index into `items`. */\n renderItem: (item: T, index: number) => React.ReactNode;\n /** Minimum column width (px); drives the column count from the measured width. Default 160. */\n minColumn?: number;\n /** Fixed cell height (px). */\n rowHeight: number;\n /** Gap (px) between cells on both axes. Default 8. */\n gap?: number;\n /** Extra rows rendered above/below the viewport. Default 2. */\n overscan?: number;\n loading?: boolean;\n /** Skeleton tile count while loading. Default 12. */\n loadingCount?: number;\n emptyLabel?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\n/**\n * A virtualized, data-shape-agnostic asset grid: measures its own width to pick a\n * column count, windows rows via `useVirtualList`, and renders only the visible\n * cells through a `renderItem` slot — with loading skeletons + an empty state. The\n * windowing math every catalog app reimplements, upstreamed. SSR-safe: before it\n * can measure (server + first paint) it renders a plain auto-fill grid of all\n * items, then virtualizes after mount.\n */\nexport function AssetGrid<T>({\n items,\n renderItem,\n minColumn = 160,\n rowHeight,\n gap = 8,\n overscan = 2,\n loading,\n loadingCount = 12,\n emptyLabel,\n className,\n style,\n}: AssetGridProps<T>): React.ReactElement {\n const viewportRef = useRef<HTMLDivElement | null>(null);\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n const el = viewportRef.current;\n if (!el || typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => {\n setWidth(el.clientWidth);\n setHeight(el.clientHeight);\n setReady(true);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, []);\n\n const cols = useMemo(\n () => (width <= 0 ? 1 : Math.max(1, Math.floor((width + gap) / (minColumn + gap)))),\n [width, gap, minColumn]\n );\n const rowCount = Math.ceil(items.length / cols);\n const vl = useVirtualList({\n itemCount: rowCount,\n itemHeight: rowHeight + gap,\n viewportHeight: height || 1,\n overscan,\n });\n\n const plainStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fill, minmax(${minColumn}px, 1fr))`,\n gap,\n gridAutoRows: rowHeight,\n };\n const rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,\n gap,\n height: rowHeight,\n marginBottom: gap,\n };\n\n let body: React.ReactNode;\n if (loading) {\n body = (\n <div className=\"smwb-asset-grid__plain\" style={plainStyle}>\n {Array.from({ length: loadingCount }).map((_, i) => (\n <div key={i} className=\"smwb-asset-grid__skeleton\" style={{ height: rowHeight }} />\n ))}\n </div>\n );\n } else if (items.length === 0) {\n body = <div className=\"smwb-asset-grid__empty\">{emptyLabel}</div>;\n } else if (!ready) {\n body = (\n <div className=\"smwb-asset-grid__plain\" style={plainStyle}>\n {items.map((item, index) => (\n <React.Fragment key={index}>{renderItem(item, index)}</React.Fragment>\n ))}\n </div>\n );\n } else {\n body = (\n <div className=\"smwb-asset-grid__sizer\" style={{ height: vl.totalHeight, position: \"relative\" }}>\n <div\n className=\"smwb-asset-grid__band\"\n style={{ position: \"absolute\", top: 0, left: 0, right: 0, transform: `translateY(${vl.offsetY}px)` }}\n >\n {Array.from({ length: Math.max(0, vl.endIndex - vl.startIndex) }).map((_, r) => {\n const row = vl.startIndex + r;\n return (\n <div key={row} className=\"smwb-asset-grid__row\" style={rowStyle}>\n {Array.from({ length: cols }).map((_, c) => {\n const index = row * cols + c;\n return index < items.length ? (\n <React.Fragment key={c}>{renderItem(items[index], index)}</React.Fragment>\n ) : null;\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n return (\n <div ref={viewportRef} className={cn(\"smwb-asset-grid\", className)} style={style} onScroll={vl.onScroll}>\n {body}\n </div>\n );\n}\n\nexport default AssetGrid;\n"],"names":["AssetGrid","items","renderItem","minColumn","rowHeight","gap","overscan","loading","loadingCount","emptyLabel","className","style","viewportRef","useRef","width","setWidth","useState","height","setHeight","ready","setReady","useEffect","el","ro","cols","useMemo","rowCount","vl","useVirtualList","plainStyle","rowStyle","body","jsx","_","i","r","row","c","index","React","item","cn"],"mappings":"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"}
@@ -24,6 +24,10 @@ export interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
24
24
  total?: number;
25
25
  /** Click handler for the "+N" surplus chip. */
26
26
  onSurplusClick?: () => void;
27
+ /** Accessible name of the "+N" surplus chip. */
28
+ surplusAriaLabel?: (count: number) => string;
29
+ /** Size of the "+N" surplus chip: match the avatars in the group. */
30
+ size?: AvatarSize | number;
27
31
  }
28
32
  export declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & {
29
33
  children?: ReactNode | undefined;
@@ -1,45 +1,60 @@
1
- import { jsx as c, jsxs as C } from "react/jsx-runtime";
2
- import '../../../assets/styles/less/components/avatar/avatar.entry.css';/* empty css */
3
- import { forwardRef as _, useState as E, Children as S, isValidElement as $ } from "react";
4
- import f from "clsx";
5
- const w = (o) => typeof o == "string", j = _(function({ className: i, src: r, alt: e, size: t = "medium", variant: u = "circular", color: n, style: d, imgProps: a, children: m, ...v }, s) {
6
- const [l, N] = E(!1), b = !!r && !l, x = f(
1
+ import { jsx as o, jsxs as C } from "react/jsx-runtime";
2
+ import '../../../assets/styles/less/components/avatar/avatar.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
+ /* empty css */
4
+ import { forwardRef as N, useState as $, Children as E, isValidElement as S } from "react";
5
+ import h from "clsx";
6
+ const _ = (i) => typeof i == "string", j = N(function({ className: m, src: s, alt: e, size: t = "medium", variant: u = "circular", color: l, style: d, imgProps: a, children: v, ...r }, f) {
7
+ const [b, c] = $(!1), n = !!s && !b, x = h(
7
8
  "smwb-avatar",
8
9
  `smwb-avatar_${u}`,
9
- w(t) ? `smwb-avatar_${t}` : null,
10
- i
10
+ _(t) ? `smwb-avatar_${t}` : null,
11
+ m
11
12
  ), y = {
12
13
  ...d,
13
- ...w(t) ? {} : { width: t, height: t, fontSize: t / 2.5 },
14
- ...n && !b ? { backgroundColor: n } : {}
14
+ ..._(t) ? {} : { width: t, height: t, fontSize: t / 2.5 },
15
+ ...l && !n ? { backgroundColor: l } : {}
15
16
  };
16
- return /* @__PURE__ */ c("div", { ref: s, ...v, "data-testid": "avatar", className: x, style: y, children: b ? /* @__PURE__ */ c(
17
+ return /* @__PURE__ */ o("div", { ref: f, ...r, "data-testid": "avatar", className: x, style: y, children: n ? /* @__PURE__ */ o(
17
18
  "img",
18
19
  {
19
20
  ...a,
20
- className: f("smwb-avatar__img", a == null ? void 0 : a.className),
21
- src: r,
21
+ className: h("smwb-avatar__img", a == null ? void 0 : a.className),
22
+ src: s,
22
23
  alt: e,
23
24
  onError: (A) => {
24
- var h;
25
- N(!0), (h = a == null ? void 0 : a.onError) == null || h.call(a, A);
25
+ var w;
26
+ c(!0), (w = a == null ? void 0 : a.onError) == null || w.call(a, A);
26
27
  }
27
28
  }
28
- ) : /* @__PURE__ */ c("span", { className: "smwb-avatar__fallback", role: "img", "aria-label": e, children: m }) });
29
- }), M = _(function({ className: i, max: r = 5, total: e, onSurplusClick: t, children: u, ...n }, d) {
30
- const a = S.toArray(u).filter($), m = e != null ? e : a.length, v = Math.max(r, 1), s = a.slice(0, v), l = m - s.length;
31
- return /* @__PURE__ */ C("div", { ref: d, ...n, "data-testid": "avatar-group", className: f("smwb-avatar-group", i), children: [
32
- l > 0 ? /* @__PURE__ */ c(
33
- j,
34
- {
35
- className: "smwb-avatar-group__surplus",
36
- onClick: t,
37
- style: t ? { cursor: "pointer" } : void 0,
38
- children: `+${l}`
39
- }
40
- ) : null,
41
- s
42
- ] });
29
+ ) : /* @__PURE__ */ o("span", { className: "smwb-avatar__fallback", role: "img", "aria-label": e, children: v }) });
30
+ }), M = N(function({
31
+ className: m,
32
+ max: s = 5,
33
+ total: e,
34
+ onSurplusClick: t,
35
+ surplusAriaLabel: u = (r) => `${r} more`,
36
+ size: l,
37
+ children: d,
38
+ ...a
39
+ }, v) {
40
+ const r = E.toArray(d).filter(S), f = e != null ? e : r.length, b = Math.max(s, 1), c = r.slice(0, b), n = f - c.length;
41
+ return (
42
+ // In order, the first avatar first; the "+N" chip ends the row.
43
+ /* @__PURE__ */ C("div", { ref: v, ...a, "data-testid": "avatar-group", className: h("smwb-avatar-group", m), children: [
44
+ c,
45
+ n > 0 ? /* @__PURE__ */ o(
46
+ j,
47
+ {
48
+ className: "smwb-avatar-group__surplus",
49
+ size: l,
50
+ alt: u(n),
51
+ onClick: t,
52
+ style: t ? { cursor: "pointer" } : void 0,
53
+ children: `+${n}`
54
+ }
55
+ ) : null
56
+ ] })
57
+ );
43
58
  });
44
59
  export {
45
60
  j as Avatar,