@smwb/ui-react 2.7.0 → 2.8.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 (414) hide show
  1. package/README.md +27 -0
  2. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  4. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  5. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  6. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  7. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  9. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  10. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  11. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  12. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  13. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  14. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  15. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
  16. package/dist/components/base/icon/icon.d.ts +6 -2
  17. package/dist/components/base/icon/icon.js +49 -37
  18. package/dist/components/base/icon/icon.js.map +1 -1
  19. package/dist/components/base/ripple/ripple.d.ts +3 -0
  20. package/dist/components/base/ripple/ripple.js +38 -23
  21. package/dist/components/base/ripple/ripple.js.map +1 -1
  22. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  23. package/dist/components/dataDisplay/avatar/avatar.js +50 -37
  24. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  25. package/dist/components/dataDisplay/badge/badge.js +37 -28
  26. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  27. package/dist/components/dataDisplay/card/card.d.ts +30 -2
  28. package/dist/components/dataDisplay/card/card.js +50 -23
  29. package/dist/components/dataDisplay/card/card.js.map +1 -1
  30. package/dist/components/dataDisplay/carousel/carousel.js +70 -70
  31. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  32. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  33. package/dist/components/dataDisplay/chart/chart.js +66 -53
  34. package/dist/components/dataDisplay/chart/chart.js.map +1 -1
  35. package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
  36. package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
  37. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  38. package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
  39. package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
  40. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  41. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
  42. package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
  43. package/dist/components/dataDisplay/chip/chip.js +110 -83
  44. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  45. package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
  46. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  47. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  48. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  49. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  50. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  51. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  52. package/dist/components/dataDisplay/kanban/kanban.js +46 -35
  53. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  54. package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
  55. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  56. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  57. package/dist/components/dataDisplay/list/list.js +15 -14
  58. package/dist/components/dataDisplay/list/list.js.map +1 -1
  59. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  60. package/dist/components/dataDisplay/meter/meter.js +24 -23
  61. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  62. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  63. package/dist/components/dataDisplay/personChip/personChip.js +39 -27
  64. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  65. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  66. package/dist/components/dataDisplay/stat/stat.js +25 -13
  67. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  68. package/dist/components/dataDisplay/table/table.d.ts +16 -1
  69. package/dist/components/dataDisplay/table/table.js +40 -36
  70. package/dist/components/dataDisplay/table/table.js.map +1 -1
  71. package/dist/components/dataDisplay/table/tableBody.js +10 -4
  72. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  73. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  74. package/dist/components/dataDisplay/table/tableCell.js +20 -13
  75. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  76. package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
  77. package/dist/components/dataDisplay/table/tableColumns.js +112 -0
  78. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  79. package/dist/components/dataDisplay/table/tableHead.js +9 -3
  80. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  81. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
  82. package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
  83. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  84. package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
  85. package/dist/components/dataDisplay/table/tableRow.js +28 -16
  86. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  87. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  88. package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
  89. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  90. package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
  91. package/dist/components/dataDisplay/treeView/treeView.js +24 -23
  92. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  93. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  94. package/dist/components/feedBack/emptyState/emptyState.js +22 -12
  95. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  96. package/dist/components/feedBack/message/message.d.ts +2 -0
  97. package/dist/components/feedBack/message/message.js +30 -19
  98. package/dist/components/feedBack/message/message.js.map +1 -1
  99. package/dist/components/feedBack/modal/modal.js +40 -40
  100. package/dist/components/feedBack/modal/modal.js.map +1 -1
  101. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  102. package/dist/components/feedBack/skeleton/skeleton.js +37 -34
  103. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  104. package/dist/components/feedBack/snackbar/snackbar.js +104 -103
  105. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  106. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  107. package/dist/components/feedBack/tooltip/tooltip.js +67 -47
  108. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  109. package/dist/components/inputs/button/button.d.ts +2 -0
  110. package/dist/components/inputs/button/button.js +62 -58
  111. package/dist/components/inputs/button/button.js.map +1 -1
  112. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  113. package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
  114. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  115. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  116. package/dist/components/inputs/checkbox/checkbox.js +84 -59
  117. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  118. package/dist/components/inputs/datePicker/datePicker.js +170 -164
  119. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  120. package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
  121. package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
  122. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  123. package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
  124. package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
  125. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  126. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  127. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  128. package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
  129. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  130. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  131. package/dist/components/inputs/radioButton/radioButton.js +77 -58
  132. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  133. package/dist/components/inputs/rating/rating.d.ts +8 -0
  134. package/dist/components/inputs/rating/rating.js +85 -70
  135. package/dist/components/inputs/rating/rating.js.map +1 -1
  136. package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
  137. package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
  138. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  139. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  140. package/dist/components/inputs/selectField/optionNavigation.js +38 -0
  141. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  142. package/dist/components/inputs/selectField/selectField.d.ts +31 -1
  143. package/dist/components/inputs/selectField/selectField.js +358 -218
  144. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  145. package/dist/components/inputs/slider/slider.d.ts +22 -1
  146. package/dist/components/inputs/slider/slider.js +330 -261
  147. package/dist/components/inputs/slider/slider.js.map +1 -1
  148. package/dist/components/inputs/textField/textField.d.ts +7 -0
  149. package/dist/components/inputs/textField/textField.js +118 -100
  150. package/dist/components/inputs/textField/textField.js.map +1 -1
  151. package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
  152. package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
  153. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  154. package/dist/components/inputs/timePicker/timePicker.js +91 -85
  155. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  156. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  157. package/dist/components/inputs/toggle/toggle.js +80 -61
  158. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  159. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  160. package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
  161. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  162. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  163. package/dist/components/layout/appLayout/appLayout.js +25 -24
  164. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  165. package/dist/components/layout/divider/divider.d.ts +2 -0
  166. package/dist/components/layout/divider/divider.js +23 -22
  167. package/dist/components/layout/divider/divider.js.map +1 -1
  168. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  169. package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
  170. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  171. package/dist/components/layout/grid/grid.d.ts +12 -1
  172. package/dist/components/layout/grid/grid.js +51 -36
  173. package/dist/components/layout/grid/grid.js.map +1 -1
  174. package/dist/components/layout/page/page.d.ts +2 -0
  175. package/dist/components/layout/page/page.js +16 -8
  176. package/dist/components/layout/page/page.js.map +1 -1
  177. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  178. package/dist/components/layout/pageHeader/pageHeader.js +22 -13
  179. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  180. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  181. package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
  182. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  183. package/dist/components/layout/sheet/sheet.d.ts +2 -0
  184. package/dist/components/layout/sheet/sheet.js +80 -79
  185. package/dist/components/layout/sheet/sheet.js.map +1 -1
  186. package/dist/components/layout/stack/stack.d.ts +2 -0
  187. package/dist/components/layout/stack/stack.js +29 -17
  188. package/dist/components/layout/stack/stack.js.map +1 -1
  189. package/dist/components/navigation/appBar/appBar.d.ts +2 -0
  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 +81 -77
  193. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  194. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  195. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
  196. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  197. package/dist/components/navigation/menu/menu.d.ts +12 -0
  198. package/dist/components/navigation/menu/menu.js.map +1 -1
  199. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  200. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  201. package/dist/components/navigation/menu/menuFloating.js +42 -30
  202. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  203. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  204. package/dist/components/navigation/menu/menuItem.js +60 -48
  205. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  206. package/dist/components/navigation/menu/menuList.d.ts +5 -1
  207. package/dist/components/navigation/menu/menuList.js +30 -19
  208. package/dist/components/navigation/menu/menuList.js.map +1 -1
  209. package/dist/components/navigation/menu/menuSubmenu.js +53 -40
  210. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  211. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  212. package/dist/components/navigation/pagination/pagination.js +51 -49
  213. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  214. package/dist/components/navigation/sidebar/sidebar.js +39 -38
  215. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  216. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  217. package/dist/components/navigation/stepper/stepper.js +37 -28
  218. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  219. package/dist/components/navigation/tabs/tab/tab.js +42 -40
  220. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  221. package/dist/components/navigation/tabs/tabs.d.ts +6 -0
  222. package/dist/components/navigation/tabs/tabs.js +83 -86
  223. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  224. package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
  225. package/dist/connects/rt/table/headerCellRenderer.js +45 -15
  226. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
  227. package/dist/connects/rt/table/table.d.ts +15 -1
  228. package/dist/connects/rt/table/table.js +125 -131
  229. package/dist/connects/rt/table/table.js.map +1 -1
  230. package/dist/headless/components/base/icon/icon.js +49 -37
  231. package/dist/headless/components/base/icon/icon.js.map +1 -1
  232. package/dist/headless/components/base/ripple/ripple.js +42 -27
  233. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  234. package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
  235. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  236. package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
  237. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  238. package/dist/headless/components/dataDisplay/card/card.js +50 -23
  239. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
  241. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  242. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
  243. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  244. package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
  245. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  246. package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
  247. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  248. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
  249. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  251. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  252. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  253. package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
  254. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  255. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  256. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  257. package/dist/headless/components/dataDisplay/list/list.js +15 -14
  258. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  259. package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
  260. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  261. package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
  262. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  263. package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
  264. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  265. package/dist/headless/components/dataDisplay/table/table.js +40 -36
  266. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  267. package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
  268. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  269. package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
  270. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  271. package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
  272. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  273. package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
  274. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  275. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
  276. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  277. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
  278. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  279. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
  280. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  281. package/dist/headless/components/dataDisplay/treeView/treeView.js +24 -23
  282. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  283. package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
  284. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  285. package/dist/headless/components/feedBack/message/message.js +31 -20
  286. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  287. package/dist/headless/components/feedBack/modal/modal.js +44 -44
  288. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  289. package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
  290. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  291. package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
  292. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  293. package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
  294. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  295. package/dist/headless/components/inputs/button/button.js +62 -58
  296. package/dist/headless/components/inputs/button/button.js.map +1 -1
  297. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
  298. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  299. package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
  300. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  301. package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
  302. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  303. package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
  304. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  305. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
  306. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  307. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  308. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  309. package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
  310. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  311. package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
  312. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  313. package/dist/headless/components/inputs/rating/rating.js +85 -70
  314. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  315. package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
  316. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  317. package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
  318. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  319. package/dist/headless/components/inputs/selectField/selectField.js +358 -218
  320. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  321. package/dist/headless/components/inputs/slider/slider.js +330 -261
  322. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  323. package/dist/headless/components/inputs/textField/textField.js +118 -100
  324. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  325. package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
  326. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  327. package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
  328. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  329. package/dist/headless/components/inputs/toggle/toggle.js +79 -60
  330. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  331. package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
  332. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  333. package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
  334. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  335. package/dist/headless/components/layout/divider/divider.js +18 -17
  336. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  337. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
  338. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  339. package/dist/headless/components/layout/grid/grid.js +48 -33
  340. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  341. package/dist/headless/components/layout/page/page.js +15 -7
  342. package/dist/headless/components/layout/page/page.js.map +1 -1
  343. package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
  344. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  345. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
  346. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  347. package/dist/headless/components/layout/sheet/sheet.js +80 -79
  348. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  349. package/dist/headless/components/layout/stack/stack.js +29 -17
  350. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  351. package/dist/headless/components/navigation/appBar/appBar.js +15 -14
  352. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  353. package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
  354. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  355. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
  356. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  357. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  358. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  359. package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
  360. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  361. package/dist/headless/components/navigation/menu/menuItem.js +60 -48
  362. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  363. package/dist/headless/components/navigation/menu/menuList.js +30 -19
  364. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  365. package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
  366. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  367. package/dist/headless/components/navigation/pagination/pagination.js +51 -49
  368. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  369. package/dist/headless/components/navigation/sidebar/sidebar.js +29 -28
  370. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  371. package/dist/headless/components/navigation/stepper/stepper.js +42 -33
  372. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  373. package/dist/headless/components/navigation/tabs/tab/tab.js +41 -39
  374. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  375. package/dist/headless/components/navigation/tabs/tabs.js +95 -98
  376. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  377. package/dist/headless/hooks/useDismissOnEscape.js +16 -0
  378. package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
  379. package/dist/headless/hooks/useFocusTrap.js +1 -0
  380. package/dist/headless/hooks/useFocusTrap.js.map +1 -1
  381. package/dist/headless/hooks/useHelperText.js +13 -0
  382. package/dist/headless/hooks/useHelperText.js.map +1 -0
  383. package/dist/headless/utils/controlProps.js +14 -0
  384. package/dist/headless/utils/controlProps.js.map +1 -0
  385. package/dist/headless/utils/overlayLayer.js +14 -7
  386. package/dist/headless/utils/overlayLayer.js.map +1 -1
  387. package/dist/headless/utils/ownClick.js +40 -0
  388. package/dist/headless/utils/ownClick.js.map +1 -0
  389. package/dist/headless/utils/readOnlyToggle.js +14 -0
  390. package/dist/headless/utils/readOnlyToggle.js.map +1 -0
  391. package/dist/hooks/useDismissOnEscape.d.ts +11 -0
  392. package/dist/hooks/useDismissOnEscape.js +16 -0
  393. package/dist/hooks/useDismissOnEscape.js.map +1 -0
  394. package/dist/hooks/useFocusTrap.d.ts +2 -0
  395. package/dist/hooks/useFocusTrap.js +1 -0
  396. package/dist/hooks/useFocusTrap.js.map +1 -1
  397. package/dist/hooks/useHelperText.d.ts +21 -0
  398. package/dist/hooks/useHelperText.js +13 -0
  399. package/dist/hooks/useHelperText.js.map +1 -0
  400. package/dist/index.cjs +2 -2
  401. package/dist/index.cjs.map +1 -1
  402. package/dist/utils/controlProps.d.ts +16 -0
  403. package/dist/utils/controlProps.js +14 -0
  404. package/dist/utils/controlProps.js.map +1 -0
  405. package/dist/utils/overlayLayer.d.ts +15 -3
  406. package/dist/utils/overlayLayer.js +14 -7
  407. package/dist/utils/overlayLayer.js.map +1 -1
  408. package/dist/utils/ownClick.d.ts +16 -0
  409. package/dist/utils/ownClick.js +40 -0
  410. package/dist/utils/ownClick.js.map +1 -0
  411. package/dist/utils/readOnlyToggle.d.ts +15 -0
  412. package/dist/utils/readOnlyToggle.js +14 -0
  413. package/dist/utils/readOnlyToggle.js.map +1 -0
  414. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.js","sources":["../../../../src/components/feedBack/tooltip/tooltip.tsx"],"sourcesContent":["import React, { forwardRef, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { autoUpdate, flip, offset as offsetMiddleware, shift, useFloating } from \"@floating-ui/react\";\nimport { Placement, resolvePlacement } from \"../../../utils/floating\";\n\nexport type TooltipTrigger = \"hover\" | \"click\" | \"manual\";\n\nexport interface TooltipProps {\n className?: string;\n offset?: {\n offsetX?: number;\n offsetY?: number;\n };\n message: React.ReactNode;\n placement?: Placement;\n /** Controls tooltip visibility when trigger is manual. */\n open?: boolean;\n /** hover (default): show on pointer enter; click: toggle; manual: use open only. */\n trigger?: TooltipTrigger;\n openDelay?: number;\n closeDelay?: number;\n}\n\ninterface TooltipPopupProps {\n reference: HTMLElement;\n placement: Placement;\n offset: TooltipProps[\"offset\"];\n className?: string;\n children: React.ReactNode;\n}\n\n// Floating UI's hooks run layout effects, so they live here and mount only while\n// the tooltip shows: a closed tooltip runs none, on the server included. (Floating\n// UI picks useLayoutEffect when its module loads in a DOM, so a server render in\n// a DOM test environment warned for every closed tooltip.)\nfunction TooltipPopup({ reference, placement, offset, className, children }: TooltipPopupProps) {\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n elements: { reference },\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMiddleware({ mainAxis: offset?.offsetY ?? 0, crossAxis: offset?.offsetX ?? 0 }),\n // A fixed placement turns to the other side, and slides along it, when the\n // viewport has no room for it.\n ...(resolved.autoMiddleware ? [resolved.autoMiddleware] : [flip(), shift({ padding: 8 })]),\n ],\n });\n return (\n <div ref={refs.setFloating} className={cn(\"smwb-tooltip\", className)} style={floatingStyles}>\n {children}\n </div>\n );\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, PropsWithChildren<TooltipProps>>(function Tooltip(\n {\n className,\n children,\n placement = \"top\",\n offset = { offsetX: 0, offsetY: 0 },\n message,\n open: openProp,\n trigger = \"hover\",\n openDelay = 0,\n closeDelay = 0,\n },\n ref\n) {\n const [reference, setReference] = useState<HTMLDivElement | null>(null);\n const [hoverOpen, setHoverOpen] = useState(false);\n const [clickOpen, setClickOpen] = useState(false);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current !== null) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n const scheduleOpen = useCallback(() => {\n clearTimers();\n if (openDelay <= 0) {\n setHoverOpen(true);\n return;\n }\n openTimerRef.current = setTimeout(() => setHoverOpen(true), openDelay);\n }, [clearTimers, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearTimers();\n if (closeDelay <= 0) {\n setHoverOpen(false);\n return;\n }\n closeTimerRef.current = setTimeout(() => setHoverOpen(false), closeDelay);\n }, [clearTimers, closeDelay]);\n\n const isVisible = trigger === \"manual\" ? openProp === true : trigger === \"click\" ? clickOpen : hoverOpen;\n\n const onPointerEnter = trigger === \"hover\" ? scheduleOpen : undefined;\n const onPointerLeave = trigger === \"hover\" ? scheduleClose : undefined;\n const onClick =\n trigger === \"click\"\n ? () => {\n setClickOpen((prev) => !prev);\n }\n : undefined;\n\n return (\n <div className=\"smwb-tooltip__wrapper\" role=\"tooltip\" ref={ref}>\n <div\n className=\"smwb-tooltip__ref\"\n ref={setReference}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n onClick={onClick}\n >\n {children}\n </div>\n {isVisible && reference ? (\n <TooltipPopup reference={reference} placement={placement} offset={offset} className={className}>\n {message}\n </TooltipPopup>\n ) : null}\n </div>\n );\n});\n\nexport default Tooltip;\n"],"names":["TooltipPopup","reference","placement","offset","className","children","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","offsetMiddleware","flip","shift","jsx","cn","Tooltip","forwardRef","message","openProp","trigger","openDelay","closeDelay","ref","setReference","useState","hoverOpen","setHoverOpen","clickOpen","setClickOpen","openTimerRef","useRef","closeTimerRef","clearTimers","useCallback","useEffect","scheduleOpen","scheduleClose","prev"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.js","sources":["../../../../src/components/feedBack/tooltip/tooltip.tsx"],"sourcesContent":["import React, { forwardRef, PropsWithChildren, useCallback, useEffect, useRef, useState } from \"react\";\nimport cn from \"clsx\";\nimport { autoUpdate, flip, offset as offsetMiddleware, shift, useFloating } from \"@floating-ui/react\";\nimport { Placement, resolvePlacement } from \"../../../utils/floating\";\nimport { useDismissOnEscape } from \"../../../hooks/useDismissOnEscape\";\n\nexport type TooltipTrigger = \"hover\" | \"click\" | \"manual\";\n\nexport interface TooltipProps {\n className?: string;\n offset?: {\n offsetX?: number;\n offsetY?: number;\n };\n /** What the tip says: text or markup. */\n message: React.ReactNode;\n placement?: Placement;\n /** Controls tooltip visibility when trigger is manual. */\n open?: boolean;\n /**\n * What shows the tooltip. `hover` (default): the pointer over the target or keyboard focus\n * in it, until both have left. Keyboard focus is focus with a focus ring (`:focus-visible`),\n * not the focus a mouse press gives a button. `click`: a click on the target shows or hides\n * it. `manual`: `open` alone. Escape hides a `hover` or `click` tooltip.\n */\n trigger?: TooltipTrigger;\n /** Milliseconds from the pointer entering the target, or keyboard focus moving into it, until a hover tooltip shows. */\n openDelay?: number;\n /** Milliseconds from the pointer and keyboard focus both leaving the target until a hover tooltip hides. */\n closeDelay?: number;\n}\n\ninterface TooltipPopupProps {\n reference: HTMLElement;\n placement: Placement;\n offset: TooltipProps[\"offset\"];\n className?: string;\n children: React.ReactNode;\n}\n\n// Floating UI's hooks run layout effects, so they live here and mount only while\n// the tooltip shows: a closed tooltip runs none, on the server included. (Floating\n// UI picks useLayoutEffect when its module loads in a DOM, so a server render in\n// a DOM test environment warned for every closed tooltip.)\nfunction TooltipPopup({ reference, placement, offset, className, children }: TooltipPopupProps) {\n const resolved = resolvePlacement(placement);\n const { refs, floatingStyles } = useFloating({\n elements: { reference },\n placement: resolved.placement,\n whileElementsMounted: autoUpdate,\n middleware: [\n offsetMiddleware({ mainAxis: offset?.offsetY ?? 0, crossAxis: offset?.offsetX ?? 0 }),\n // A fixed placement turns to the other side, and slides along it, when the\n // viewport has no room for it.\n ...(resolved.autoMiddleware ? [resolved.autoMiddleware] : [flip(), shift({ padding: 8 })]),\n ],\n });\n return (\n <div ref={refs.setFloating} className={cn(\"smwb-tooltip\", className)} style={floatingStyles}>\n {children}\n </div>\n );\n}\n\n/**\n * Whether focus on `element` draws a focus ring (`:focus-visible`): focus from the keyboard,\n * not the focus a mouse press gives a button. An engine without the selector counts any focus.\n */\nfunction hasFocusRing(element: Element): boolean {\n try {\n return element.matches(\":focus-visible\");\n } catch {\n return true;\n }\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, PropsWithChildren<TooltipProps>>(function Tooltip(\n {\n className,\n children,\n placement = \"top\",\n offset = { offsetX: 0, offsetY: 0 },\n message,\n open: openProp,\n trigger = \"hover\",\n openDelay = 0,\n closeDelay = 0,\n },\n ref\n) {\n const [reference, setReference] = useState<HTMLDivElement | null>(null);\n const [hoverOpen, setHoverOpen] = useState(false);\n const [clickOpen, setClickOpen] = useState(false);\n const openTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n // The pointer over the target and keyboard focus in it each keep a hover tooltip shown.\n const pointerInsideRef = useRef(false);\n const focusInsideRef = useRef(false);\n\n const clearTimers = useCallback(() => {\n if (openTimerRef.current !== null) {\n clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }\n if (closeTimerRef.current !== null) {\n clearTimeout(closeTimerRef.current);\n closeTimerRef.current = null;\n }\n }, []);\n\n useEffect(() => () => clearTimers(), [clearTimers]);\n\n const scheduleOpen = useCallback(() => {\n clearTimers();\n if (openDelay <= 0) {\n setHoverOpen(true);\n return;\n }\n openTimerRef.current = setTimeout(() => setHoverOpen(true), openDelay);\n }, [clearTimers, openDelay]);\n\n const scheduleClose = useCallback(() => {\n clearTimers();\n if (closeDelay <= 0) {\n setHoverOpen(false);\n return;\n }\n closeTimerRef.current = setTimeout(() => setHoverOpen(false), closeDelay);\n }, [clearTimers, closeDelay]);\n\n // Escape hides a tooltip shown on hover or focus wherever focus is (WCAG 1.4.13), and the\n // window, panel, Modal or Sheet around it stays open until the next press. Focus left in\n // the target no longer keeps it: the pointer alone shows and hides it until focus moves.\n useDismissOnEscape(trigger === \"hover\" && hoverOpen, () => {\n clearTimers();\n focusInsideRef.current = false;\n setHoverOpen(false);\n });\n // A click tooltip hides on Escape the same way.\n useDismissOnEscape(trigger === \"click\" && clickOpen, () => setClickOpen(false));\n\n const isVisible = trigger === \"manual\" ? openProp === true : trigger === \"click\" ? clickOpen : hoverOpen;\n\n const onPointerEnter = () => {\n pointerInsideRef.current = true;\n if (trigger === \"hover\") scheduleOpen();\n };\n const onPointerLeave = () => {\n pointerInsideRef.current = false;\n if (trigger === \"hover\" && !focusInsideRef.current) scheduleClose();\n };\n // Focus without a focus ring doesn't count: the focus a mouse press gives a button would\n // keep the tooltip shown after the pointer leaves.\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus in a portal the target renders (a menu, a picker panel) reaches here through the\n // React tree, but it is not in the target.\n if (!event.currentTarget.contains(event.target)) return;\n focusInsideRef.current = hasFocusRing(event.target);\n if (trigger === \"hover\" && focusInsideRef.current) scheduleOpen();\n };\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n // Focus moving to another control in the target keeps the tooltip.\n if (event.currentTarget.contains(event.relatedTarget)) return;\n focusInsideRef.current = false;\n if (trigger === \"hover\" && !pointerInsideRef.current) scheduleClose();\n };\n const onClick =\n trigger === \"click\"\n ? () => {\n setClickOpen((prev) => !prev);\n }\n : undefined;\n\n return (\n <div className=\"smwb-tooltip__wrapper\" role=\"tooltip\" ref={ref}>\n <div\n className=\"smwb-tooltip__ref\"\n ref={setReference}\n onPointerEnter={onPointerEnter}\n onPointerLeave={onPointerLeave}\n onFocus={onFocus}\n onBlur={onBlur}\n onClick={onClick}\n >\n {children}\n </div>\n {isVisible && reference ? (\n <TooltipPopup reference={reference} placement={placement} offset={offset} className={className}>\n {message}\n </TooltipPopup>\n ) : null}\n </div>\n );\n});\n\nexport default Tooltip;\n"],"names":["TooltipPopup","reference","placement","offset","className","children","resolved","resolvePlacement","refs","floatingStyles","useFloating","autoUpdate","offsetMiddleware","flip","shift","jsx","cn","hasFocusRing","element","Tooltip","forwardRef","message","openProp","trigger","openDelay","closeDelay","ref","setReference","useState","hoverOpen","setHoverOpen","clickOpen","setClickOpen","openTimerRef","useRef","closeTimerRef","pointerInsideRef","focusInsideRef","clearTimers","useCallback","useEffect","scheduleOpen","scheduleClose","useDismissOnEscape","event","prev"],"mappings":"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"}
@@ -53,6 +53,8 @@ export interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HT
53
53
  * Отключить риппл-эффект.
54
54
  */
55
55
  disableRipple?: boolean;
56
+ /** Test id of the root; `button`, or `button-link` for a link, unless given. */
57
+ "data-testid"?: string;
56
58
  }
57
59
  export declare const Button: React.ForwardRefExoticComponent<ButtonProps & {
58
60
  children?: React.ReactNode | undefined;
@@ -1,84 +1,88 @@
1
- import { jsx as h, jsxs as y } from "react/jsx-runtime";
1
+ import { jsx as N, jsxs as $ } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/button/button.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import x from "react";
5
- import v from "clsx";
6
- import { Ripple as z } from "../../base/ripple/ripple.js";
7
- import { Icon as C } from "../../base/icon/icon.js";
8
- const H = x.forwardRef(
9
- function(N, s) {
4
+ import g from "react";
5
+ import W from "clsx";
6
+ import { Ripple as q } from "../../base/ripple/ripple.js";
7
+ import { Icon as v } from "../../base/icon/icon.js";
8
+ const Q = g.forwardRef(
9
+ function(j, c) {
10
+ var y;
10
11
  const {
11
- label: e,
12
- variant: $ = "contained",
13
- icon: t,
14
- iconProps: g = {},
15
- href: l,
16
- className: j,
17
- disabled: o,
18
- children: a,
19
- onMouseDown: n,
20
- fullWidth: k,
21
- rippleCenter: B,
22
- disableRipple: D,
23
- size: E = "medium",
24
- colorTheme: _ = "primary",
25
- color: r,
12
+ label: o,
13
+ variant: k = "contained",
14
+ icon: e,
15
+ iconProps: B = {},
16
+ href: a,
17
+ className: D,
18
+ disabled: r,
19
+ children: p,
20
+ onMouseDown: i,
21
+ // The button sets this on its root too; its own handler calls the caller's first.
22
+ onPointerDown: s,
23
+ fullWidth: E,
24
+ rippleCenter: _,
25
+ disableRipple: z,
26
+ size: C = "medium",
27
+ colorTheme: M = "primary",
28
+ color: l,
29
+ "data-testid": t,
26
30
  ...m
27
- } = N, c = r != null ? r : _, p = x.useRef(null), d = (i) => {
28
- n == null || n(i);
29
- }, b = (i) => {
30
- var R;
31
- o || (R = p.current) == null || R.onRipple(i);
32
- }, f = v(
31
+ } = j, b = l != null ? l : M, f = g.useRef(null), u = (n) => {
32
+ i == null || i(n);
33
+ }, d = (n) => {
34
+ var x;
35
+ s == null || s(n), r || (x = f.current) == null || x.onRipple(n);
36
+ }, w = W(
33
37
  "smwb-button",
34
- `smwb-${$}`,
35
- `smwb-${E}`,
36
- c === "primary" ? "smwb-primary" : `smwb-button_color-${c}`,
37
- j,
38
+ `smwb-${k}`,
39
+ `smwb-${C}`,
40
+ b === "primary" ? "smwb-primary" : `smwb-button_color-${b}`,
41
+ D,
38
42
  {
39
- "smwb-disabled": o,
40
- "smwb-full-width": k
43
+ "smwb-disabled": r,
44
+ "smwb-full-width": E
41
45
  }
42
- ), u = !D && /* @__PURE__ */ h(z, { actionRef: p, center: B }), w = typeof t == "string" ? /* @__PURE__ */ h(C, { ...g, name: t }) : t;
43
- return l ? /* @__PURE__ */ y(
46
+ ), R = !z && /* @__PURE__ */ N(q, { actionRef: f, center: _ }), h = typeof e == "string" ? /* @__PURE__ */ N(v, { ...B, name: e }) : e;
47
+ return a ? /* @__PURE__ */ $(
44
48
  "a",
45
49
  {
46
- "data-testid": "button-link",
47
- ref: s,
48
- className: f,
49
- href: l,
50
+ "data-testid": t != null ? t : "button-link",
51
+ ref: c,
52
+ className: w,
53
+ href: a,
50
54
  target: "_blank",
51
- rel: "noreferrer",
52
- onMouseDown: d,
53
- onPointerDown: b,
55
+ onMouseDown: u,
56
+ onPointerDown: d,
54
57
  ...m,
58
+ rel: (y = m.rel) != null ? y : "noreferrer",
55
59
  children: [
56
- t && w,
57
- e || a,
58
- u
60
+ e && h,
61
+ o || p,
62
+ R
59
63
  ]
60
64
  }
61
- ) : /* @__PURE__ */ y(
65
+ ) : /* @__PURE__ */ $(
62
66
  "button",
63
67
  {
64
- "data-testid": "button",
65
- ref: s,
66
- className: f,
67
- onMouseDown: d,
68
- onPointerDown: b,
69
- disabled: !!o,
68
+ "data-testid": t != null ? t : "button",
69
+ ref: c,
70
+ className: w,
71
+ onMouseDown: u,
72
+ onPointerDown: d,
73
+ disabled: !!r,
70
74
  ...m,
71
75
  children: [
72
- t && w,
73
- e || a,
74
- u
76
+ e && h,
77
+ o || p,
78
+ R
75
79
  ]
76
80
  }
77
81
  );
78
82
  }
79
83
  );
80
84
  export {
81
- H as Button,
82
- H as default
85
+ Q as Button,
86
+ Q as default
83
87
  };
84
88
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../../../src/components/inputs/button/button.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\nimport { Icon, IconProps } from \"../../base/icon\";\n\nexport interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n /**\n * Текст на кнопке.\n */\n label?: string;\n\n /**\n * Вариант стилизации кнопки.\n */\n variant?: \"contained\" | \"text\" | \"outlined\";\n\n /**\n * Размер кнопки.\n */\n size?: \"small\" | \"medium\" | \"large\";\n\n /**\n * Иконка, которая может быть ReactNode (например, <Icon/>) или строкой (url, base64, и т.д.).\n */\n icon?: React.ReactNode | string;\n\n /**\n * Пропсы для иконки (исключая 'name', если в IconProps оно обязательно).\n */\n iconProps?: Omit<IconProps, \"name\">;\n\n /**\n * @deprecated используйте `color`. Оставлено для обратной совместимости.\n */\n colorTheme?: \"primary\";\n\n /**\n * Семантический цвет кнопки. Резолвится через токены `--smui-*Color*`.\n */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\n /**\n * Ссылка. Если задана, компонент может рендериться как <a>.\n */\n href?: string;\n\n /**\n * Отключённое состояние.\n */\n disabled?: boolean;\n\n /**\n * Тип кнопки.\n */\n type?: \"button\" | \"submit\" | \"reset\";\n\n /**\n * Растягивать кнопку по всей ширине контейнера.\n */\n fullWidth?: boolean;\n\n /**\n * Позиция риппл-эффекта по центру.\n */\n rippleCenter?: boolean;\n\n /**\n * Отключить риппл-эффект.\n */\n disableRipple?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement | HTMLAnchorElement, PropsWithChildren<ButtonProps>>(\n function Button(props, ref) {\n const {\n label,\n variant = \"contained\",\n icon,\n iconProps = {},\n href,\n className,\n disabled,\n children,\n onMouseDown: onMouseDownProp,\n fullWidth,\n rippleCenter,\n disableRipple,\n\n size = \"medium\",\n colorTheme = \"primary\",\n color: colorProp,\n ...rest\n } = props;\n const color = colorProp ?? colorTheme;\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n const classes = cn(\n \"smwb-button\",\n `smwb-${variant}`,\n `smwb-${size}`,\n color === \"primary\" ? \"smwb-primary\" : `smwb-button_color-${color}`,\n className,\n {\n \"smwb-disabled\": disabled,\n \"smwb-full-width\": fullWidth,\n }\n );\n\n const rippleElement = !disableRipple && <Ripple actionRef={rippleRef} center={rippleCenter} />;\n const iconElement = typeof icon === \"string\" ? <Icon {...iconProps} name={icon} /> : icon;\n\n if (href) {\n return (\n <a\n data-testid=\"button-link\"\n ref={ref as React.LegacyRef<HTMLAnchorElement>}\n className={classes}\n href={href}\n target=\"_blank\"\n rel=\"noreferrer\"\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n >\n {icon && iconElement}\n {label ? label : children}\n {rippleElement}\n </a>\n );\n }\n\n return (\n <button\n data-testid=\"button\"\n ref={ref as React.LegacyRef<HTMLButtonElement>}\n className={classes}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n disabled={!!disabled}\n {...rest}\n >\n {icon && iconElement}\n {label ? label : children}\n {rippleElement}\n </button>\n );\n }\n);\nexport default Button;\n"],"names":["Button","React","props","ref","label","variant","icon","iconProps","href","className","disabled","children","onMouseDownProp","fullWidth","rippleCenter","disableRipple","size","colorTheme","colorProp","rest","color","rippleRef","onMouseDown","event","onPointerDown","_a","classes","cn","rippleElement","jsx","Ripple","iconElement","Icon","jsxs"],"mappings":";;;;;;;AA0EO,MAAMA,IAASC,EAAM;AAAA,EAC1B,SAAgBC,GAAOC,GAAK;AAC1B,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA,SAAAC,IAAU;AAAA,MACV,MAAAC;AAAA,MACA,WAAAC,IAAY,CAAA;AAAA,MACZ,MAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,aAAaC;AAAA,MACb,WAAAC;AAAA,MACA,cAAAC;AAAA,MACA,eAAAC;AAAA,MAEA,MAAAC,IAAO;AAAA,MACP,YAAAC,IAAa;AAAA,MACb,OAAOC;AAAA,MACP,GAAGC;AAAA,IAAA,IACDjB,GACEkB,IAAQF,KAAA,OAAAA,IAAaD,GACrBI,IAAYpB,EAAM,OAAyB,IAAI,GAE/CqB,IAAc,CAACC,MAAmE;AACtF,MAAAX,KAAA,QAAAA,EAAkBW;AAAA,IACpB,GAGMC,IAAgB,CAACD,MAAqE;;AAC1F,MAAKb,MACHe,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,IAEhC,GAEMG,IAAUC;AAAA,MACd;AAAA,MACA,QAAQtB,CAAO;AAAA,MACf,QAAQW,CAAI;AAAA,MACZI,MAAU,YAAY,iBAAiB,qBAAqBA,CAAK;AAAA,MACjEX;AAAA,MACA;AAAA,QACE,iBAAiBC;AAAA,QACjB,mBAAmBG;AAAA,MAAA;AAAA,IACrB,GAGIe,IAAgB,CAACb,KAAiB,gBAAAc,EAACC,KAAO,WAAWT,GAAW,QAAQP,GAAc,GACtFiB,IAAc,OAAOzB,KAAS,WAAW,gBAAAuB,EAACG,KAAM,GAAGzB,GAAW,MAAMD,EAAA,CAAM,IAAKA;AAErF,WAAIE,IAEA,gBAAAyB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,KAAA9B;AAAA,QACA,WAAWuB;AAAA,QACX,MAAAlB;AAAA,QACA,QAAO;AAAA,QACP,KAAI;AAAA,QACJ,aAAAc;AAAA,QACA,eAAAE;AAAA,QACC,GAAGL;AAAA,QAEH,UAAA;AAAA,UAAAb,KAAQyB;AAAA,UACR3B,KAAgBO;AAAA,UAChBiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAML,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAY;AAAA,QACZ,KAAA9B;AAAA,QACA,WAAWuB;AAAA,QACX,aAAAJ;AAAA,QACA,eAAAE;AAAA,QACA,UAAU,CAAC,CAACd;AAAA,QACX,GAAGS;AAAA,QAEH,UAAA;AAAA,UAAAb,KAAQyB;AAAA,UACR3B,KAAgBO;AAAA,UAChBiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}
1
+ {"version":3,"file":"button.js","sources":["../../../../src/components/inputs/button/button.tsx"],"sourcesContent":["import React, { PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\nimport { Ripple, RippleActionsRef } from \"../../base/ripple/ripple\";\nimport { Icon, IconProps } from \"../../base/icon\";\n\nexport interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement> {\n /**\n * Текст на кнопке.\n */\n label?: string;\n\n /**\n * Вариант стилизации кнопки.\n */\n variant?: \"contained\" | \"text\" | \"outlined\";\n\n /**\n * Размер кнопки.\n */\n size?: \"small\" | \"medium\" | \"large\";\n\n /**\n * Иконка, которая может быть ReactNode (например, <Icon/>) или строкой (url, base64, и т.д.).\n */\n icon?: React.ReactNode | string;\n\n /**\n * Пропсы для иконки (исключая 'name', если в IconProps оно обязательно).\n */\n iconProps?: Omit<IconProps, \"name\">;\n\n /**\n * @deprecated используйте `color`. Оставлено для обратной совместимости.\n */\n colorTheme?: \"primary\";\n\n /**\n * Семантический цвет кнопки. Резолвится через токены `--smui-*Color*`.\n */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\n /**\n * Ссылка. Если задана, компонент может рендериться как <a>.\n */\n href?: string;\n\n /**\n * Отключённое состояние.\n */\n disabled?: boolean;\n\n /**\n * Тип кнопки.\n */\n type?: \"button\" | \"submit\" | \"reset\";\n\n /**\n * Растягивать кнопку по всей ширине контейнера.\n */\n fullWidth?: boolean;\n\n /**\n * Позиция риппл-эффекта по центру.\n */\n rippleCenter?: boolean;\n\n /**\n * Отключить риппл-эффект.\n */\n disableRipple?: boolean;\n\n /** Test id of the root; `button`, or `button-link` for a link, unless given. */\n \"data-testid\"?: string;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement | HTMLAnchorElement, PropsWithChildren<ButtonProps>>(\n function Button(props, ref) {\n const {\n label,\n variant = \"contained\",\n icon,\n iconProps = {},\n href,\n className,\n disabled,\n children,\n onMouseDown: onMouseDownProp,\n // The button sets this on its root too; its own handler calls the caller's first.\n onPointerDown: onPointerDownProp,\n fullWidth,\n rippleCenter,\n disableRipple,\n\n size = \"medium\",\n colorTheme = \"primary\",\n color: colorProp,\n \"data-testid\": dataTestId,\n ...rest\n } = props;\n const color = colorProp ?? colorTheme;\n const rippleRef = React.useRef<RippleActionsRef>(null);\n\n const onMouseDown = (event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n onMouseDownProp?.(event);\n };\n\n // Ripple on pointerdown so it fires for touch and pen, not just mouse.\n const onPointerDown = (event: React.PointerEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n onPointerDownProp?.(event);\n if (!disabled) {\n rippleRef.current?.onRipple(event);\n }\n };\n\n const classes = cn(\n \"smwb-button\",\n `smwb-${variant}`,\n `smwb-${size}`,\n color === \"primary\" ? \"smwb-primary\" : `smwb-button_color-${color}`,\n className,\n {\n \"smwb-disabled\": disabled,\n \"smwb-full-width\": fullWidth,\n }\n );\n\n const rippleElement = !disableRipple && <Ripple actionRef={rippleRef} center={rippleCenter} />;\n const iconElement = typeof icon === \"string\" ? <Icon {...iconProps} name={icon} /> : icon;\n\n if (href) {\n return (\n <a\n data-testid={dataTestId ?? \"button-link\"}\n ref={ref as React.LegacyRef<HTMLAnchorElement>}\n className={classes}\n href={href}\n target=\"_blank\"\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n {...rest}\n // A default: the caller's rel wins, and an explicit undefined keeps it.\n rel={rest.rel ?? \"noreferrer\"}\n >\n {icon && iconElement}\n {label ? label : children}\n {rippleElement}\n </a>\n );\n }\n\n return (\n <button\n data-testid={dataTestId ?? \"button\"}\n ref={ref as React.LegacyRef<HTMLButtonElement>}\n className={classes}\n onMouseDown={onMouseDown}\n onPointerDown={onPointerDown}\n disabled={!!disabled}\n {...rest}\n >\n {icon && iconElement}\n {label ? label : children}\n {rippleElement}\n </button>\n );\n }\n);\nexport default Button;\n"],"names":["Button","React","props","ref","label","variant","icon","iconProps","href","className","disabled","children","onMouseDownProp","onPointerDownProp","fullWidth","rippleCenter","disableRipple","size","colorTheme","colorProp","dataTestId","rest","color","rippleRef","onMouseDown","event","onPointerDown","_a","classes","cn","rippleElement","jsx","Ripple","iconElement","Icon","jsxs"],"mappings":";;;;;;;AA6EO,MAAMA,IAASC,EAAM;AAAA,EAC1B,SAAgBC,GAAOC,GAAK;;AAC1B,UAAM;AAAA,MACJ,OAAAC;AAAA,MACA,SAAAC,IAAU;AAAA,MACV,MAAAC;AAAA,MACA,WAAAC,IAAY,CAAA;AAAA,MACZ,MAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,UAAAC;AAAA,MACA,aAAaC;AAAA;AAAA,MAEb,eAAeC;AAAA,MACf,WAAAC;AAAA,MACA,cAAAC;AAAA,MACA,eAAAC;AAAA,MAEA,MAAAC,IAAO;AAAA,MACP,YAAAC,IAAa;AAAA,MACb,OAAOC;AAAA,MACP,eAAeC;AAAA,MACf,GAAGC;AAAA,IAAA,IACDnB,GACEoB,IAAQH,KAAA,OAAAA,IAAaD,GACrBK,IAAYtB,EAAM,OAAyB,IAAI,GAE/CuB,IAAc,CAACC,MAAmE;AACtF,MAAAb,KAAA,QAAAA,EAAkBa;AAAA,IACpB,GAGMC,IAAgB,CAACD,MAAqE;;AAC1F,MAAAZ,KAAA,QAAAA,EAAoBY,IACff,MACHiB,IAAAJ,EAAU,YAAV,QAAAI,EAAmB,SAASF;AAAA,IAEhC,GAEMG,IAAUC;AAAA,MACd;AAAA,MACA,QAAQxB,CAAO;AAAA,MACf,QAAQY,CAAI;AAAA,MACZK,MAAU,YAAY,iBAAiB,qBAAqBA,CAAK;AAAA,MACjEb;AAAA,MACA;AAAA,QACE,iBAAiBC;AAAA,QACjB,mBAAmBI;AAAA,MAAA;AAAA,IACrB,GAGIgB,IAAgB,CAACd,KAAiB,gBAAAe,EAACC,KAAO,WAAWT,GAAW,QAAQR,GAAc,GACtFkB,IAAc,OAAO3B,KAAS,WAAW,gBAAAyB,EAACG,KAAM,GAAG3B,GAAW,MAAMD,EAAA,CAAM,IAAKA;AAErF,WAAIE,IAEA,gBAAA2B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAaf,KAAA,OAAAA,IAAc;AAAA,QAC3B,KAAAjB;AAAA,QACA,WAAWyB;AAAA,QACX,MAAApB;AAAA,QACA,QAAO;AAAA,QACP,aAAAgB;AAAA,QACA,eAAAE;AAAA,QACC,GAAGL;AAAA,QAEJ,MAAKM,IAAAN,EAAK,QAAL,OAAAM,IAAY;AAAA,QAEhB,UAAA;AAAA,UAAArB,KAAQ2B;AAAA,UACR7B,KAAgBO;AAAA,UAChBmB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,IAML,gBAAAK;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,eAAaf,KAAA,OAAAA,IAAc;AAAA,QAC3B,KAAAjB;AAAA,QACA,WAAWyB;AAAA,QACX,aAAAJ;AAAA,QACA,eAAAE;AAAA,QACA,UAAU,CAAC,CAAChB;AAAA,QACX,GAAGW;AAAA,QAEH,UAAA;AAAA,UAAAf,KAAQ2B;AAAA,UACR7B,KAAgBO;AAAA,UAChBmB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGP;AACF;"}
@@ -9,6 +9,8 @@ export interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {
9
9
  colorTheme?: "primary";
10
10
  /** Semantic color propagated to child buttons. */
11
11
  color?: "primary" | "secondary" | "error" | "success" | "warning" | "info";
12
+ /** Test id of the root `<div>`; `button-group` unless given. */
13
+ "data-testid"?: string;
12
14
  }
13
15
  export declare const ButtonGroup: React.ForwardRefExoticComponent<ButtonGroupProps & React.RefAttributes<HTMLDivElement>>;
14
16
  export default ButtonGroup;
@@ -1,54 +1,58 @@
1
- import { jsx as N } from "react/jsx-runtime";
1
+ import { jsx as x } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/buttonGroup/buttonGroup.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
4
  import r from "react";
5
- import T from "clsx";
6
- const $ = r.forwardRef(function(u, c) {
5
+ import b from "clsx";
6
+ const j = r.forwardRef(function(h, w) {
7
+ var n;
7
8
  const {
8
- className: f,
9
- children: b,
10
- variant: t = "contained",
11
- size: h = "medium",
12
- orientation: e = "horizontal",
13
- colorTheme: w = "primary",
14
- color: g,
15
- fullWidth: l = !1,
16
- disabled: s = !1,
17
- ...v
18
- } = u;
19
- return /* @__PURE__ */ N(
9
+ className: g,
10
+ children: v,
11
+ variant: e = "contained",
12
+ size: z = "medium",
13
+ orientation: s = "horizontal",
14
+ colorTheme: N = "primary",
15
+ color: T,
16
+ fullWidth: a = !1,
17
+ disabled: l = !1,
18
+ "data-testid": W = "button-group",
19
+ ...i
20
+ } = h;
21
+ return /* @__PURE__ */ x(
20
22
  "div",
21
23
  {
22
- ref: c,
23
- className: T(
24
+ ref: w,
25
+ className: b(
24
26
  "smwb-button-group",
25
- f,
27
+ g,
28
+ `smwb-${s}`,
26
29
  `smwb-${e}`,
27
- `smwb-${t}`,
28
- l && "smwb-full-width",
29
- s
30
+ a && "smwb-full-width",
31
+ l
30
32
  ),
31
- role: "group",
32
- "data-testid": "button-group",
33
- ...v,
34
- children: r.Children.map(b, (z) => {
35
- var i, a, n, p, m, d;
36
- const o = z;
33
+ "data-testid": W,
34
+ ...i,
35
+ role: (n = i.role) != null ? n : "group",
36
+ children: r.Children.map(v, (t) => {
37
+ var p, m, d, u, c, f;
38
+ if (!r.isValidElement(t))
39
+ return t;
40
+ const o = t;
37
41
  return r.cloneElement(o, {
38
- className: "smwb-button-group__grouped",
39
- fullWidth: e === "vertical" || ((i = o.props.fullWidth) != null ? i : l),
40
- variant: (a = o.props.variant) != null ? a : t,
41
- size: (n = o.props.size) != null ? n : h,
42
- disabled: (p = o.props.disabled) != null ? p : s,
43
- colorTheme: (m = o.props.colorTheme) != null ? m : w,
44
- color: (d = o.props.color) != null ? d : g
42
+ className: b("smwb-button-group__grouped", o.props.className),
43
+ fullWidth: (p = o.props.fullWidth) != null ? p : s === "vertical" || a,
44
+ variant: (m = o.props.variant) != null ? m : e,
45
+ size: (d = o.props.size) != null ? d : z,
46
+ disabled: (u = o.props.disabled) != null ? u : l,
47
+ colorTheme: (c = o.props.colorTheme) != null ? c : N,
48
+ color: (f = o.props.color) != null ? f : T
45
49
  });
46
50
  })
47
51
  }
48
52
  );
49
53
  });
50
54
  export {
51
- $ as ButtonGroup,
52
- $ as default
55
+ j as ButtonGroup,
56
+ j as default
53
57
  };
54
58
  //# sourceMappingURL=buttonGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttonGroup.js","sources":["../../../../src/components/inputs/buttonGroups/buttonGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { ButtonProps } from \"../button\";\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"contained\" | \"text\" | \"outlined\";\n size?: \"small\" | \"medium\" | \"large\";\n fullWidth?: boolean;\n disabled?: boolean;\n /** @deprecated use `color`. */\n colorTheme?: \"primary\";\n /** Semantic color propagated to child buttons. */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n}\n\nexport const ButtonGroup = React.forwardRef(function ButtonGroup(\n props: ButtonGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n className,\n children,\n variant = \"contained\",\n size = \"medium\",\n orientation = \"horizontal\",\n colorTheme = \"primary\",\n color,\n fullWidth = false,\n disabled = false,\n ...rest\n } = props;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"smwb-button-group\",\n className,\n `smwb-${orientation}`,\n `smwb-${variant}`,\n fullWidth && \"smwb-full-width\",\n disabled\n )}\n role=\"group\"\n data-testid=\"button-group\"\n {...rest}\n >\n {React.Children.map(children, (child) => {\n const element = child as React.ReactElement<ButtonProps>;\n\n return React.cloneElement(element, {\n className: \"smwb-button-group__grouped\",\n fullWidth: orientation === \"vertical\" || (element.props.fullWidth ?? fullWidth),\n variant: element.props.variant ?? variant,\n size: element.props.size ?? size,\n disabled: element.props.disabled ?? disabled,\n colorTheme: element.props.colorTheme ?? colorTheme,\n color: element.props.color ?? color,\n });\n })}\n </div>\n );\n});\n\nexport default ButtonGroup;\n"],"names":["ButtonGroup","React","props","ref","className","children","variant","size","orientation","colorTheme","color","fullWidth","disabled","rest","jsx","cn","child","element","_a","_b","_c","_d","_e","_f"],"mappings":";;;;;AAkBO,MAAMA,IAAcC,EAAM,WAAW,SAC1CC,GACAC,GACA;AACA,QAAM;AAAA,IACJ,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,aAAAC,IAAc;AAAA,IACd,YAAAC,IAAa;AAAA,IACb,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC,IAAW;AAAA,IACX,GAAGC;AAAA,EAAA,IACDX;AAEJ,SACE,gBAAAY;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAX;AAAA,MACA,WAAWY;AAAA,QACT;AAAA,QACAX;AAAA,QACA,QAAQI,CAAW;AAAA,QACnB,QAAQF,CAAO;AAAA,QACfK,KAAa;AAAA,QACbC;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MACL,eAAY;AAAA,MACX,GAAGC;AAAA,MAEH,UAAAZ,EAAM,SAAS,IAAII,GAAU,CAACW,MAAU;;AACvC,cAAMC,IAAUD;AAEhB,eAAOf,EAAM,aAAagB,GAAS;AAAA,UACjC,WAAW;AAAA,UACX,WAAWT,MAAgB,gBAAeU,IAAAD,EAAQ,MAAM,cAAd,OAAAC,IAA2BP;AAAA,UACrE,UAASQ,IAAAF,EAAQ,MAAM,YAAd,OAAAE,IAAyBb;AAAA,UAClC,OAAMc,IAAAH,EAAQ,MAAM,SAAd,OAAAG,IAAsBb;AAAA,UAC5B,WAAUc,IAAAJ,EAAQ,MAAM,aAAd,OAAAI,IAA0BT;AAAA,UACpC,aAAYU,IAAAL,EAAQ,MAAM,eAAd,OAAAK,IAA4Bb;AAAA,UACxC,QAAOc,IAAAN,EAAQ,MAAM,UAAd,OAAAM,IAAuBb;AAAA,QAAA,CAC/B;AAAA,MACH,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
1
+ {"version":3,"file":"buttonGroup.js","sources":["../../../../src/components/inputs/buttonGroups/buttonGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\nimport { ButtonProps } from \"../button\";\n\nexport interface ButtonGroupProps extends React.HTMLAttributes<HTMLDivElement> {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"contained\" | \"text\" | \"outlined\";\n size?: \"small\" | \"medium\" | \"large\";\n fullWidth?: boolean;\n disabled?: boolean;\n /** @deprecated use `color`. */\n colorTheme?: \"primary\";\n /** Semantic color propagated to child buttons. */\n color?: \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n /** Test id of the root `<div>`; `button-group` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const ButtonGroup = React.forwardRef(function ButtonGroup(\n props: ButtonGroupProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const {\n className,\n children,\n variant = \"contained\",\n size = \"medium\",\n orientation = \"horizontal\",\n colorTheme = \"primary\",\n color,\n fullWidth = false,\n disabled = false,\n \"data-testid\": dataTestId = \"button-group\",\n ...rest\n } = props;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"smwb-button-group\",\n className,\n `smwb-${orientation}`,\n `smwb-${variant}`,\n fullWidth && \"smwb-full-width\",\n disabled\n )}\n data-testid={dataTestId}\n {...rest}\n // A default: the caller's own wins, and an explicit undefined keeps it.\n role={rest.role ?? \"group\"}\n >\n {React.Children.map(children, (child) => {\n // A child left out, such as `{show && <Button />}`, is null here: nothing to group.\n if (!React.isValidElement(child)) {\n return child;\n }\n const element = child as React.ReactElement<ButtonProps>;\n\n // The group's props are defaults: a button's own win, and its own class\n // adds to the group's.\n return React.cloneElement(element, {\n className: cn(\"smwb-button-group__grouped\", element.props.className),\n fullWidth: element.props.fullWidth ?? (orientation === \"vertical\" || fullWidth),\n variant: element.props.variant ?? variant,\n size: element.props.size ?? size,\n disabled: element.props.disabled ?? disabled,\n colorTheme: element.props.colorTheme ?? colorTheme,\n color: element.props.color ?? color,\n });\n })}\n </div>\n );\n});\n\nexport default ButtonGroup;\n"],"names":["ButtonGroup","React","props","ref","className","children","variant","size","orientation","colorTheme","color","fullWidth","disabled","dataTestId","rest","jsx","cn","_a","child","element","_b","_c","_d","_e","_f"],"mappings":";;;;;AAoBO,MAAMA,IAAcC,EAAM,WAAW,SAC1CC,GACAC,GACA;;AACA,QAAM;AAAA,IACJ,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,aAAAC,IAAc;AAAA,IACd,YAAAC,IAAa;AAAA,IACb,OAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,UAAAC,IAAW;AAAA,IACX,eAAeC,IAAa;AAAA,IAC5B,GAAGC;AAAA,EAAA,IACDZ;AAEJ,SACE,gBAAAa;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAZ;AAAA,MACA,WAAWa;AAAA,QACT;AAAA,QACAZ;AAAA,QACA,QAAQI,CAAW;AAAA,QACnB,QAAQF,CAAO;AAAA,QACfK,KAAa;AAAA,QACbC;AAAA,MAAA;AAAA,MAEF,eAAaC;AAAA,MACZ,GAAGC;AAAA,MAEJ,OAAMG,IAAAH,EAAK,SAAL,OAAAG,IAAa;AAAA,MAElB,UAAAhB,EAAM,SAAS,IAAII,GAAU,CAACa,MAAU;;AAEvC,YAAI,CAACjB,EAAM,eAAeiB,CAAK;AAC7B,iBAAOA;AAET,cAAMC,IAAUD;AAIhB,eAAOjB,EAAM,aAAakB,GAAS;AAAA,UACjC,WAAWH,EAAG,8BAA8BG,EAAQ,MAAM,SAAS;AAAA,UACnE,YAAWF,IAAAE,EAAQ,MAAM,cAAd,OAAAF,IAA4BT,MAAgB,cAAcG;AAAA,UACrE,UAASS,IAAAD,EAAQ,MAAM,YAAd,OAAAC,IAAyBd;AAAA,UAClC,OAAMe,IAAAF,EAAQ,MAAM,SAAd,OAAAE,IAAsBd;AAAA,UAC5B,WAAUe,IAAAH,EAAQ,MAAM,aAAd,OAAAG,IAA0BV;AAAA,UACpC,aAAYW,IAAAJ,EAAQ,MAAM,eAAd,OAAAI,IAA4Bd;AAAA,UACxC,QAAOe,IAAAL,EAAQ,MAAM,UAAd,OAAAK,IAAuBd;AAAA,QAAA,CAC/B;AAAA,MACH,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -4,10 +4,20 @@ export type SelectionControlColor = "primary" | "secondary" | "error" | "success
4
4
  export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "onChange" | "size"> {
5
5
  label?: string;
6
6
  disabled?: boolean;
7
+ /**
8
+ * Keeps the checkbox as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.
9
+ * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).
10
+ */
7
11
  readOnly?: boolean;
8
12
  required?: boolean;
9
13
  name?: string;
10
14
  id?: string;
15
+ /**
16
+ * Shows the checkbox as partly checked, as for a "select all" over a partial selection: drawn with a dash and
17
+ * announced as "mixed" by screen readers, whatever `checked` is. A click does not clear it: the click toggles
18
+ * `checked` as usual and `onChange` reports the new `checked`, while the checkbox stays mixed until this prop turns
19
+ * false.
20
+ */
11
21
  indeterminate?: boolean;
12
22
  className?: string;
13
23
  size?: SelectionControlSize;
@@ -1,75 +1,100 @@
1
- import { jsx as e, jsxs as g } from "react/jsx-runtime";
1
+ import { jsx as c, jsxs as z } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/checkbox/checkbox.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import v from "react";
5
- import b from "clsx";
6
- import { Icon as d } from "../../base/icon/icon.js";
7
- import { useId as y } from "../../../hooks/useId.js";
8
- import { TextFieldWrapper as z } from "../textField/textFieldWrapper.js";
9
- const O = v.forwardRef(function(o, h) {
4
+ import x from "react";
5
+ import u from "clsx";
6
+ import { Icon as w } from "../../base/icon/icon.js";
7
+ import { cancelToggle as F, forgetCancelledToggle as I } from "../../../utils/readOnlyToggle.js";
8
+ import { useHelperText as j } from "../../../hooks/useHelperText.js";
9
+ import { useId as q } from "../../../hooks/useId.js";
10
+ import { useForkRef as $ } from "../../../hooks/useForkRef.js";
11
+ import { useSafeLayoutEffect as D } from "../../../hooks/useSafeLayoutEffect.js";
12
+ import { TextFieldWrapper as E } from "../textField/textFieldWrapper.js";
13
+ const V = x.forwardRef(function(e, _) {
10
14
  const {
11
- label: s,
12
- disabled: r,
13
- readOnly: c,
14
- required: t,
15
+ label: n,
16
+ disabled: o,
17
+ readOnly: i,
18
+ required: s,
15
19
  name: p,
16
- id: x,
20
+ id: y,
17
21
  indeterminate: a,
18
- className: w,
19
- size: k = "medium",
20
- color: _ = "primary",
21
- onChange: i,
22
- helperText: f,
23
- error: n,
24
- ...u
25
- } = o, l = y(x), N = (m) => {
26
- if (c) {
27
- m.preventDefault();
22
+ className: g,
23
+ size: N = "medium",
24
+ color: C = "primary",
25
+ onChange: t,
26
+ helperText: l,
27
+ error: d,
28
+ "aria-describedby": T,
29
+ ...b
30
+ } = e, h = q(y), f = j(l, { describedBy: T }), m = x.useRef(null), B = $(_, m);
31
+ D(() => {
32
+ m.current && (m.current.indeterminate = !!a);
33
+ });
34
+ const R = (r) => {
35
+ if (r.target.indeterminate = !!a, i) {
36
+ I(r, e.checked);
28
37
  return;
29
38
  }
30
- i == null || i(m, m.target.checked, o);
39
+ t == null || t(r, r.target.checked, e);
40
+ }, v = (r) => {
41
+ var k;
42
+ (k = e.onClick) == null || k.call(e, r), i && F(r, e.checked);
31
43
  };
32
- return /* @__PURE__ */ e(z, { helperText: f, disabled: r, error: n, className: "smwb-text-field-checkbox", children: /* @__PURE__ */ g(
33
- "label",
44
+ return /* @__PURE__ */ c(
45
+ E,
34
46
  {
35
- htmlFor: l,
36
- className: b(
37
- "smwb-checkbox__wrapper",
38
- `smwb-checkbox_size-${k}`,
39
- `smwb-checkbox_color-${_}`,
40
- w,
47
+ helperText: l,
48
+ helperTextId: f.id,
49
+ disabled: o,
50
+ error: d,
51
+ className: "smwb-text-field-checkbox",
52
+ children: /* @__PURE__ */ z(
53
+ "label",
41
54
  {
42
- "smwb-disabled": r,
43
- "smwb-readonly": c,
44
- "smwb-indeterminate": a
55
+ htmlFor: h,
56
+ className: u(
57
+ "smwb-checkbox__wrapper",
58
+ `smwb-checkbox_size-${N}`,
59
+ `smwb-checkbox_color-${C}`,
60
+ g,
61
+ {
62
+ "smwb-disabled": o,
63
+ "smwb-readonly": i,
64
+ "smwb-indeterminate": a
65
+ }
66
+ ),
67
+ children: [
68
+ /* @__PURE__ */ c(
69
+ "input",
70
+ {
71
+ type: "checkbox",
72
+ id: h,
73
+ name: p,
74
+ className: "smwb-checkbox__input",
75
+ disabled: o,
76
+ readOnly: i,
77
+ required: s,
78
+ "aria-invalid": d || void 0,
79
+ "aria-required": s || void 0,
80
+ "aria-describedby": f.describedBy,
81
+ ref: B,
82
+ ...b,
83
+ "aria-readonly": i || b["aria-readonly"],
84
+ onChange: R,
85
+ onClick: v
86
+ }
87
+ ),
88
+ /* @__PURE__ */ c("span", { className: u("smwb-checkbox__btn", { "smwb-indeterminate": a }), children: a ? /* @__PURE__ */ c(w, { name: "remove", size: 18, className: "smwb-checkbox__icon", weight: 700 }) : /* @__PURE__ */ c(w, { name: "check", size: 17, className: "smwb-checkbox__icon", weight: 700 }) }),
89
+ n && /* @__PURE__ */ c("span", { className: "smwb-checkbox__label", children: n })
90
+ ]
45
91
  }
46
- ),
47
- children: [
48
- /* @__PURE__ */ e(
49
- "input",
50
- {
51
- type: "checkbox",
52
- id: l,
53
- name: p,
54
- className: "smwb-checkbox__input",
55
- disabled: r,
56
- readOnly: c,
57
- required: t,
58
- "aria-invalid": n || void 0,
59
- "aria-required": t || void 0,
60
- ref: h,
61
- ...u,
62
- onChange: N
63
- }
64
- ),
65
- /* @__PURE__ */ e("span", { className: b("smwb-checkbox__btn", { "smwb-indeterminate": a }), children: a ? /* @__PURE__ */ e(d, { name: "remove", size: 18, className: "smwb-checkbox__icon", weight: 700 }) : /* @__PURE__ */ e(d, { name: "check", size: 17, className: "smwb-checkbox__icon", weight: 700 }) }),
66
- s && /* @__PURE__ */ e("span", { className: "smwb-checkbox__label", children: s })
67
- ]
92
+ )
68
93
  }
69
- ) });
94
+ );
70
95
  });
71
96
  export {
72
- O as Checkbox,
73
- O as default
97
+ V as Checkbox,
98
+ V as default
74
99
  };
75
100
  //# sourceMappingURL=checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sources":["../../../../src/components/inputs/checkbox/checkbox.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useId } from \"../../../hooks/useId\";\n\nexport type SelectionControlSize = \"small\" | \"medium\" | \"large\";\nexport type SelectionControlColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n indeterminate?: boolean;\n className?: string;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean, data: CheckboxProps) => void;\n helperText?: React.ReactNode;\n error?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(props, ref) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n indeterminate,\n className,\n size = \"medium\",\n color = \"primary\",\n onChange,\n helperText,\n error,\n ...args\n } = props;\n const id = useId(idProp);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n onChange?.(e, e.target.checked, props);\n };\n\n return (\n <TextFieldWrapper helperText={helperText} disabled={disabled} error={error} className=\"smwb-text-field-checkbox\">\n <label\n htmlFor={id}\n className={cn(\n \"smwb-checkbox__wrapper\",\n `smwb-checkbox_size-${size}`,\n `smwb-checkbox_color-${color}`,\n className,\n {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n \"smwb-indeterminate\": indeterminate,\n }\n )}\n >\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n className=\"smwb-checkbox__input\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n ref={ref}\n {...args}\n onChange={handleChange}\n />\n <span className={cn(\"smwb-checkbox__btn\", { \"smwb-indeterminate\": indeterminate })}>\n {indeterminate ? (\n <Icon name=\"remove\" size={18} className=\"smwb-checkbox__icon\" weight={700} />\n ) : (\n <Icon name=\"check\" size={17} className=\"smwb-checkbox__icon\" weight={700} />\n )}\n </span>\n {label && <span className=\"smwb-checkbox__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default Checkbox;\n"],"names":["Checkbox","React","props","ref","label","disabled","readOnly","required","name","idProp","indeterminate","className","size","color","onChange","helperText","error","args","id","useId","handleChange","e","TextFieldWrapper","jsxs","cn","jsx","Icon"],"mappings":";;;;;;;;AA4BO,MAAMA,IAAWC,EAAM,WAA4C,SAAkBC,GAAOC,GAAK;AACtG,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDf,GACEgB,IAAKC,EAAMV,CAAM,GAEjBW,IAAe,CAACC,MAA2C;AAC/D,QAAIf,GAAU;AACZ,MAAAe,EAAE,eAAA;AACF;AAAA,IACF;AACA,IAAAP,KAAA,QAAAA,EAAWO,GAAGA,EAAE,OAAO,SAASnB;AAAA,EAClC;AAEA,2BACGoB,GAAA,EAAiB,YAAAP,GAAwB,UAAAV,GAAoB,OAAAW,GAAc,WAAU,4BACpF,UAAA,gBAAAO;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAASL;AAAA,MACT,WAAWM;AAAA,QACT;AAAA,QACA,sBAAsBZ,CAAI;AAAA,QAC1B,uBAAuBC,CAAK;AAAA,QAC5BF;AAAA,QACA;AAAA,UACE,iBAAiBN;AAAA,UACjB,iBAAiBC;AAAA,UACjB,sBAAsBI;AAAA,QAAA;AAAA,MACxB;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAe;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAAP;AAAA,YACA,MAAAV;AAAA,YACA,WAAU;AAAA,YACV,UAAAH;AAAA,YACA,UAAAC;AAAA,YACA,UAAAC;AAAA,YACA,gBAAcS,KAAS;AAAA,YACvB,iBAAeT,KAAY;AAAA,YAC3B,KAAAJ;AAAA,YACC,GAAGc;AAAA,YACJ,UAAUG;AAAA,UAAA;AAAA,QAAA;AAAA,QAEZ,gBAAAK,EAAC,QAAA,EAAK,WAAWD,EAAG,sBAAsB,EAAE,sBAAsBd,EAAA,CAAe,GAC9E,UAAAA,IACC,gBAAAe,EAACC,GAAA,EAAK,MAAK,UAAS,MAAM,IAAI,WAAU,uBAAsB,QAAQ,IAAA,CAAK,sBAE1EA,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI,WAAU,uBAAsB,QAAQ,KAAK,GAE9E;AAAA,QACCtB,KAAS,gBAAAqB,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAArB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE5D;AAEJ,CAAC;"}
1
+ {"version":3,"file":"checkbox.js","sources":["../../../../src/components/inputs/checkbox/checkbox.tsx"],"sourcesContent":["import React, { InputHTMLAttributes } from \"react\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport { cancelToggle, forgetCancelledToggle } from \"../../../utils/readOnlyToggle\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useHelperText } from \"../../../hooks/useHelperText\";\nimport { useId } from \"../../../hooks/useId\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\n\nexport type SelectionControlSize = \"small\" | \"medium\" | \"large\";\nexport type SelectionControlColor = \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\";\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"size\"> {\n label?: string;\n disabled?: boolean;\n /**\n * Keeps the checkbox as it is: clicks on it or its label and Space change nothing, and `onChange` is not called.\n * It stays focusable, and its input tells assistive technology it is read-only (`aria-readonly`).\n */\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n /**\n * Shows the checkbox as partly checked, as for a \"select all\" over a partial selection: drawn with a dash and\n * announced as \"mixed\" by screen readers, whatever `checked` is. A click does not clear it: the click toggles\n * `checked` as usual and `onChange` reports the new `checked`, while the checkbox stays mixed until this prop turns\n * false.\n */\n indeterminate?: boolean;\n className?: string;\n size?: SelectionControlSize;\n color?: SelectionControlColor;\n /** Unified handler: `(event, checked, data)`. */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>, checked: boolean, data: CheckboxProps) => void;\n helperText?: React.ReactNode;\n error?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(props, forwardedRef) {\n const {\n label,\n disabled,\n readOnly,\n required,\n name,\n id: idProp,\n indeterminate,\n className,\n size = \"medium\",\n color = \"primary\",\n onChange,\n helperText,\n error,\n \"aria-describedby\": ariaDescribedBy,\n ...args\n } = props;\n const id = useId(idProp);\n const helper = useHelperText(helperText, { describedBy: ariaDescribedBy });\n\n const inputRef = React.useRef<HTMLInputElement>(null);\n const ref = useForkRef(forwardedRef, inputRef);\n // `indeterminate` is a DOM property with no attribute, so no markup carries it:\n // set it on the input after every render.\n useSafeLayoutEffect(() => {\n if (inputRef.current) inputRef.current.indeterminate = Boolean(indeterminate);\n });\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n // A click clears the input's indeterminate property; the prop still decides it.\n e.target.indeterminate = Boolean(indeterminate);\n if (readOnly) {\n forgetCancelledToggle(e, props.checked);\n return;\n }\n onChange?.(e, e.target.checked, props);\n };\n\n const handleClick = (e: React.MouseEvent<HTMLInputElement>) => {\n props.onClick?.(e);\n if (readOnly) cancelToggle(e, props.checked);\n };\n\n return (\n <TextFieldWrapper\n helperText={helperText}\n helperTextId={helper.id}\n disabled={disabled}\n error={error}\n className=\"smwb-text-field-checkbox\"\n >\n <label\n htmlFor={id}\n className={cn(\n \"smwb-checkbox__wrapper\",\n `smwb-checkbox_size-${size}`,\n `smwb-checkbox_color-${color}`,\n className,\n {\n \"smwb-disabled\": disabled,\n \"smwb-readonly\": readOnly,\n \"smwb-indeterminate\": indeterminate,\n }\n )}\n >\n <input\n type=\"checkbox\"\n id={id}\n name={name}\n className=\"smwb-checkbox__input\"\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n aria-invalid={error || undefined}\n aria-required={required || undefined}\n aria-describedby={helper.describedBy}\n ref={ref}\n {...args}\n aria-readonly={readOnly || args[\"aria-readonly\"]}\n onChange={handleChange}\n onClick={handleClick}\n />\n <span className={cn(\"smwb-checkbox__btn\", { \"smwb-indeterminate\": indeterminate })}>\n {indeterminate ? (\n <Icon name=\"remove\" size={18} className=\"smwb-checkbox__icon\" weight={700} />\n ) : (\n <Icon name=\"check\" size={17} className=\"smwb-checkbox__icon\" weight={700} />\n )}\n </span>\n {label && <span className=\"smwb-checkbox__label\">{label}</span>}\n </label>\n </TextFieldWrapper>\n );\n});\n\nexport default Checkbox;\n"],"names":["Checkbox","React","props","forwardedRef","label","disabled","readOnly","required","name","idProp","indeterminate","className","size","color","onChange","helperText","error","ariaDescribedBy","args","id","useId","helper","useHelperText","inputRef","ref","useForkRef","useSafeLayoutEffect","handleChange","e","forgetCancelledToggle","handleClick","_a","cancelToggle","jsx","TextFieldWrapper","jsxs","cn","Icon"],"mappings":";;;;;;;;;;;;AA0CO,MAAMA,IAAWC,EAAM,WAA4C,SAAkBC,GAAOC,GAAc;AAC/G,QAAM;AAAA,IACJ,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAAC;AAAA,IACA,IAAIC;AAAA,IACJ,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,OAAAC;AAAA,IACA,oBAAoBC;AAAA,IACpB,GAAGC;AAAA,EAAA,IACDhB,GACEiB,IAAKC,EAAMX,CAAM,GACjBY,IAASC,EAAcP,GAAY,EAAE,aAAaE,GAAiB,GAEnEM,IAAWtB,EAAM,OAAyB,IAAI,GAC9CuB,IAAMC,EAAWtB,GAAcoB,CAAQ;AAG7C,EAAAG,EAAoB,MAAM;AACxB,IAAIH,EAAS,YAASA,EAAS,QAAQ,gBAAgB,EAAQb;AAAA,EACjE,CAAC;AAED,QAAMiB,IAAe,CAACC,MAA2C;AAG/D,QADAA,EAAE,OAAO,gBAAgB,EAAQlB,GAC7BJ,GAAU;AACZ,MAAAuB,EAAsBD,GAAG1B,EAAM,OAAO;AACtC;AAAA,IACF;AACA,IAAAY,KAAA,QAAAA,EAAWc,GAAGA,EAAE,OAAO,SAAS1B;AAAA,EAClC,GAEM4B,IAAc,CAACF,MAA0C;;AAC7D,KAAAG,IAAA7B,EAAM,YAAN,QAAA6B,EAAA,KAAA7B,GAAgB0B,IACZtB,KAAU0B,EAAaJ,GAAG1B,EAAM,OAAO;AAAA,EAC7C;AAEA,SACE,gBAAA+B;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,YAAAnB;AAAA,MACA,cAAcM,EAAO;AAAA,MACrB,UAAAhB;AAAA,MACA,OAAAW;AAAA,MACA,WAAU;AAAA,MAEV,UAAA,gBAAAmB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAShB;AAAA,UACT,WAAWiB;AAAA,YACT;AAAA,YACA,sBAAsBxB,CAAI;AAAA,YAC1B,uBAAuBC,CAAK;AAAA,YAC5BF;AAAA,YACA;AAAA,cACE,iBAAiBN;AAAA,cACjB,iBAAiBC;AAAA,cACjB,sBAAsBI;AAAA,YAAA;AAAA,UACxB;AAAA,UAGF,UAAA;AAAA,YAAA,gBAAAuB;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,IAAAd;AAAA,gBACA,MAAAX;AAAA,gBACA,WAAU;AAAA,gBACV,UAAAH;AAAA,gBACA,UAAAC;AAAA,gBACA,UAAAC;AAAA,gBACA,gBAAcS,KAAS;AAAA,gBACvB,iBAAeT,KAAY;AAAA,gBAC3B,oBAAkBc,EAAO;AAAA,gBACzB,KAAAG;AAAA,gBACC,GAAGN;AAAA,gBACJ,iBAAeZ,KAAYY,EAAK,eAAe;AAAA,gBAC/C,UAAUS;AAAA,gBACV,SAASG;AAAA,cAAA;AAAA,YAAA;AAAA,YAEX,gBAAAG,EAAC,QAAA,EAAK,WAAWG,EAAG,sBAAsB,EAAE,sBAAsB1B,EAAA,CAAe,GAC9E,UAAAA,IACC,gBAAAuB,EAACI,GAAA,EAAK,MAAK,UAAS,MAAM,IAAI,WAAU,uBAAsB,QAAQ,IAAA,CAAK,sBAE1EA,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI,WAAU,uBAAsB,QAAQ,KAAK,GAE9E;AAAA,YACCjC,KAAS,gBAAA6B,EAAC,QAAA,EAAK,WAAU,wBAAwB,UAAA7B,EAAA,CAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1D;AAAA,EAAA;AAGN,CAAC;"}