@smwb/ui-react 2.7.0 → 2.9.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 (602) hide show
  1. package/AI_LESS_OVERRIDES.md +84 -21
  2. package/AI_THEMING.md +72 -28
  3. package/README.md +681 -0
  4. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  5. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  6. package/dist/assets/styles/less/components/button/button.entry.css +1 -1
  7. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  8. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  9. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  10. package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
  11. package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
  12. package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
  13. package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
  14. package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
  15. package/dist/assets/styles/less/components/list/list.entry.css +1 -1
  16. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  17. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  18. package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
  19. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  20. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  21. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  22. package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
  23. package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
  24. package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
  25. package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
  26. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  27. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  28. package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
  29. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  30. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  31. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  32. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  33. package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
  34. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  35. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
  36. package/dist/assets/styles/less/tokens.entry.css +1 -1
  37. package/dist/components/base/icon/icon.d.ts +6 -2
  38. package/dist/components/base/icon/icon.js +49 -37
  39. package/dist/components/base/icon/icon.js.map +1 -1
  40. package/dist/components/base/ripple/ripple.d.ts +3 -0
  41. package/dist/components/base/ripple/ripple.js +38 -23
  42. package/dist/components/base/ripple/ripple.js.map +1 -1
  43. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  44. package/dist/components/dataDisplay/avatar/avatar.js +50 -37
  45. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  46. package/dist/components/dataDisplay/badge/badge.js +37 -28
  47. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  48. package/dist/components/dataDisplay/card/card.d.ts +30 -2
  49. package/dist/components/dataDisplay/card/card.js +50 -23
  50. package/dist/components/dataDisplay/card/card.js.map +1 -1
  51. package/dist/components/dataDisplay/carousel/carousel.js +70 -70
  52. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  53. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  54. package/dist/components/dataDisplay/chart/chart.js +66 -53
  55. package/dist/components/dataDisplay/chart/chart.js.map +1 -1
  56. package/dist/components/dataDisplay/chat/chat.d.ts +43 -1
  57. package/dist/components/dataDisplay/chat/chat.js +179 -150
  58. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  59. package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
  60. package/dist/components/dataDisplay/chat/chatComposer.js +31 -29
  61. package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
  62. package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
  63. package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
  64. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  65. package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
  66. package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
  67. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  68. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
  69. package/dist/components/dataDisplay/chat/index.d.ts +1 -1
  70. package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
  71. package/dist/components/dataDisplay/chat/utils.js.map +1 -1
  72. package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
  73. package/dist/components/dataDisplay/chip/chip.js +110 -83
  74. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  75. package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
  76. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  77. package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
  78. package/dist/components/dataDisplay/dagView/dagLayout.js +289 -0
  79. package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  80. package/dist/components/dataDisplay/dagView/dagView.d.ts +157 -0
  81. package/dist/components/dataDisplay/dagView/dagView.js +543 -0
  82. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
  83. package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
  84. package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
  85. package/dist/components/dataDisplay/dagView/panZoom.js +171 -0
  86. package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
  87. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  88. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  89. package/dist/components/dataDisplay/diffStat/diffStat.d.ts +54 -0
  90. package/dist/components/dataDisplay/diffStat/diffStat.js +63 -0
  91. package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  92. package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
  93. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  94. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  95. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  96. package/dist/components/dataDisplay/kanban/kanban.js +46 -35
  97. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  98. package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
  99. package/dist/components/dataDisplay/kbd/kbd.d.ts +40 -0
  100. package/dist/components/dataDisplay/kbd/kbd.js +27 -0
  101. package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
  102. package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
  103. package/dist/components/dataDisplay/kbd/kbdKeys.js +72 -0
  104. package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  105. package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
  106. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  107. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  108. package/dist/components/dataDisplay/list/list.js +15 -14
  109. package/dist/components/dataDisplay/list/list.js.map +1 -1
  110. package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
  111. package/dist/components/dataDisplay/list/listItem.js +47 -24
  112. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  113. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  114. package/dist/components/dataDisplay/meter/meter.js +24 -23
  115. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  116. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  117. package/dist/components/dataDisplay/personChip/personChip.js +39 -27
  118. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  119. package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
  120. package/dist/components/dataDisplay/qrCode/qrCode.d.ts +28 -0
  121. package/dist/components/dataDisplay/qrCode/qrCode.js +78 -0
  122. package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  123. package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
  124. package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  125. package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  126. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  127. package/dist/components/dataDisplay/stat/stat.js +25 -13
  128. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  129. package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
  130. package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
  131. package/dist/components/dataDisplay/statusDot/statusDot.js +30 -0
  132. package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  133. package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
  134. package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +53 -0
  135. package/dist/components/dataDisplay/swimlanes/swimlanes.js +357 -0
  136. package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  137. package/dist/components/dataDisplay/table/table.d.ts +16 -1
  138. package/dist/components/dataDisplay/table/table.js +40 -36
  139. package/dist/components/dataDisplay/table/table.js.map +1 -1
  140. package/dist/components/dataDisplay/table/tableBody.js +10 -4
  141. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  142. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  143. package/dist/components/dataDisplay/table/tableCell.js +20 -13
  144. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  145. package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
  146. package/dist/components/dataDisplay/table/tableColumns.js +112 -0
  147. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  148. package/dist/components/dataDisplay/table/tableHead.js +9 -3
  149. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  150. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
  151. package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
  152. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  153. package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
  154. package/dist/components/dataDisplay/table/tableRow.js +28 -16
  155. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  156. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  157. package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
  158. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  159. package/dist/components/dataDisplay/treeView/treeView.d.ts +19 -1
  160. package/dist/components/dataDisplay/treeView/treeView.js +113 -91
  161. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  162. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  163. package/dist/components/feedBack/emptyState/emptyState.js +22 -12
  164. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  165. package/dist/components/feedBack/message/message.d.ts +2 -0
  166. package/dist/components/feedBack/message/message.js +30 -19
  167. package/dist/components/feedBack/message/message.js.map +1 -1
  168. package/dist/components/feedBack/modal/modal.js +84 -63
  169. package/dist/components/feedBack/modal/modal.js.map +1 -1
  170. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  171. package/dist/components/feedBack/skeleton/skeleton.js +37 -34
  172. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  173. package/dist/components/feedBack/snackbar/snackbar.js +104 -103
  174. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  175. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  176. package/dist/components/feedBack/tooltip/tooltip.js +67 -47
  177. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  178. package/dist/components/inputs/button/button.d.ts +15 -1
  179. package/dist/components/inputs/button/button.js +73 -63
  180. package/dist/components/inputs/button/button.js.map +1 -1
  181. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  182. package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
  183. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  184. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  185. package/dist/components/inputs/checkbox/checkbox.js +84 -59
  186. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  187. package/dist/components/inputs/composer/composer.d.ts +149 -0
  188. package/dist/components/inputs/composer/composer.js +219 -0
  189. package/dist/components/inputs/composer/composer.js.map +1 -0
  190. package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
  191. package/dist/components/inputs/composer/composerFiles.js +19 -0
  192. package/dist/components/inputs/composer/composerFiles.js.map +1 -0
  193. package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
  194. package/dist/components/inputs/composer/composerKeys.js +7 -0
  195. package/dist/components/inputs/composer/composerKeys.js.map +1 -0
  196. package/dist/components/inputs/composer/index.d.ts +3 -0
  197. package/dist/components/inputs/datePicker/datePicker.js +170 -164
  198. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  199. package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
  200. package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
  201. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  202. package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
  203. package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
  204. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  205. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  206. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  207. package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
  208. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  209. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  210. package/dist/components/inputs/radioButton/radioButton.js +77 -58
  211. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  212. package/dist/components/inputs/rating/rating.d.ts +8 -0
  213. package/dist/components/inputs/rating/rating.js +85 -70
  214. package/dist/components/inputs/rating/rating.js.map +1 -1
  215. package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
  216. package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
  217. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  218. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  219. package/dist/components/inputs/selectField/optionNavigation.js +38 -0
  220. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  221. package/dist/components/inputs/selectField/selectField.d.ts +31 -1
  222. package/dist/components/inputs/selectField/selectField.js +358 -218
  223. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  224. package/dist/components/inputs/slider/slider.d.ts +22 -1
  225. package/dist/components/inputs/slider/slider.js +330 -261
  226. package/dist/components/inputs/slider/slider.js.map +1 -1
  227. package/dist/components/inputs/textField/textField.d.ts +7 -0
  228. package/dist/components/inputs/textField/textField.js +118 -100
  229. package/dist/components/inputs/textField/textField.js.map +1 -1
  230. package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
  231. package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
  232. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  233. package/dist/components/inputs/timePicker/timePicker.js +91 -85
  234. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  235. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  236. package/dist/components/inputs/toggle/toggle.js +80 -61
  237. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  238. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  239. package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
  240. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  241. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  242. package/dist/components/layout/appLayout/appLayout.js +25 -24
  243. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  244. package/dist/components/layout/divider/divider.d.ts +2 -0
  245. package/dist/components/layout/divider/divider.js +23 -22
  246. package/dist/components/layout/divider/divider.js.map +1 -1
  247. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  248. package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
  249. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  250. package/dist/components/layout/grid/grid.d.ts +12 -1
  251. package/dist/components/layout/grid/grid.js +51 -36
  252. package/dist/components/layout/grid/grid.js.map +1 -1
  253. package/dist/components/layout/page/page.d.ts +2 -0
  254. package/dist/components/layout/page/page.js +16 -8
  255. package/dist/components/layout/page/page.js.map +1 -1
  256. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  257. package/dist/components/layout/pageHeader/pageHeader.js +22 -13
  258. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  259. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  260. package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
  261. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  262. package/dist/components/layout/sheet/sheet.d.ts +14 -0
  263. package/dist/components/layout/sheet/sheet.js +148 -132
  264. package/dist/components/layout/sheet/sheet.js.map +1 -1
  265. package/dist/components/layout/stack/stack.d.ts +2 -0
  266. package/dist/components/layout/stack/stack.js +29 -17
  267. package/dist/components/layout/stack/stack.js.map +1 -1
  268. package/dist/components/layout/tabGroups/index.d.ts +4 -0
  269. package/dist/components/layout/tabGroups/tabGroups.d.ts +94 -0
  270. package/dist/components/layout/tabGroups/tabGroups.js +783 -0
  271. package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
  272. package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
  273. package/dist/components/layout/tabGroups/tabGroupsFocus.js +199 -0
  274. package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  275. package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
  276. package/dist/components/layout/tabGroups/tabGroupsLayout.js +497 -0
  277. package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  278. package/dist/components/navigation/appBar/appBar.d.ts +24 -0
  279. package/dist/components/navigation/appBar/appBar.js +39 -33
  280. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  281. package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
  282. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  283. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  284. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
  285. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  286. package/dist/components/navigation/commandPalette/commandPalette.d.ts +111 -0
  287. package/dist/components/navigation/commandPalette/commandPalette.js +337 -0
  288. package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
  289. package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
  290. package/dist/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  291. package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  292. package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
  293. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  294. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  295. package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
  296. package/dist/components/navigation/commandPalette/index.d.ts +4 -0
  297. package/dist/components/navigation/menu/menu.d.ts +12 -0
  298. package/dist/components/navigation/menu/menu.js.map +1 -1
  299. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  300. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  301. package/dist/components/navigation/menu/menuFloating.js +42 -30
  302. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  303. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  304. package/dist/components/navigation/menu/menuItem.js +60 -48
  305. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  306. package/dist/components/navigation/menu/menuList.d.ts +5 -1
  307. package/dist/components/navigation/menu/menuList.js +30 -19
  308. package/dist/components/navigation/menu/menuList.js.map +1 -1
  309. package/dist/components/navigation/menu/menuSubmenu.js +53 -40
  310. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  311. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  312. package/dist/components/navigation/pagination/pagination.js +51 -49
  313. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  314. package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
  315. package/dist/components/navigation/sidebar/sidebar.js +65 -62
  316. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  317. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  318. package/dist/components/navigation/stepper/stepper.js +37 -28
  319. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  320. package/dist/components/navigation/tabs/index.d.ts +3 -1
  321. package/dist/components/navigation/tabs/tab/tab.d.ts +88 -1
  322. package/dist/components/navigation/tabs/tab/tab.js +116 -35
  323. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  324. package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +19 -0
  325. package/dist/components/navigation/tabs/tabPanel/tabPanel.js +27 -0
  326. package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  327. package/dist/components/navigation/tabs/tabs.d.ts +80 -4
  328. package/dist/components/navigation/tabs/tabs.js +369 -148
  329. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  330. package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
  331. package/dist/components/navigation/tabs/tabs.utils.js +11 -0
  332. package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
  333. package/dist/components/navigation/tabs/tabsContext.d.ts +11 -0
  334. package/dist/components/navigation/tabs/tabsContext.js +6 -0
  335. package/dist/components/navigation/tabs/tabsContext.js.map +1 -0
  336. package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
  337. package/dist/connects/rt/table/headerCellRenderer.js +45 -15
  338. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
  339. package/dist/connects/rt/table/table.d.ts +15 -1
  340. package/dist/connects/rt/table/table.js +125 -131
  341. package/dist/connects/rt/table/table.js.map +1 -1
  342. package/dist/headless/components/base/icon/icon.js +49 -37
  343. package/dist/headless/components/base/icon/icon.js.map +1 -1
  344. package/dist/headless/components/base/ripple/ripple.js +42 -27
  345. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  346. package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
  347. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  348. package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
  349. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  350. package/dist/headless/components/dataDisplay/card/card.js +50 -23
  351. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  352. package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
  353. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  354. package/dist/headless/components/dataDisplay/chat/chat.js +179 -150
  355. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  356. package/dist/headless/components/dataDisplay/chat/chatComposer.js +31 -29
  357. package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
  358. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
  359. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  360. package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
  361. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  362. package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
  363. package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
  364. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  365. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
  366. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  367. package/dist/headless/components/dataDisplay/dagView/dagLayout.js +289 -0
  368. package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  369. package/dist/headless/components/dataDisplay/dagView/dagView.js +541 -0
  370. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
  371. package/dist/headless/components/dataDisplay/dagView/panZoom.js +171 -0
  372. package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
  373. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  374. package/dist/headless/components/dataDisplay/diffStat/diffStat.js +61 -0
  375. package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  376. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  377. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  378. package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
  379. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  380. package/dist/headless/components/dataDisplay/kbd/kbd.js +25 -0
  381. package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
  382. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +72 -0
  383. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  384. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  385. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  386. package/dist/headless/components/dataDisplay/list/list.js +15 -14
  387. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  388. package/dist/headless/components/dataDisplay/list/listItem.js +47 -24
  389. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  390. package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
  391. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  392. package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
  393. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  394. package/dist/headless/components/dataDisplay/qrCode/qrCode.js +76 -0
  395. package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  396. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  397. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  398. package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
  399. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  400. package/dist/headless/components/dataDisplay/statusDot/statusDot.js +28 -0
  401. package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  402. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +355 -0
  403. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  404. package/dist/headless/components/dataDisplay/table/table.js +40 -36
  405. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  406. package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
  407. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  408. package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
  409. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  410. package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
  411. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  412. package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
  413. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  414. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
  415. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  416. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
  417. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  418. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
  419. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  420. package/dist/headless/components/dataDisplay/treeView/treeView.js +113 -91
  421. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  422. package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
  423. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  424. package/dist/headless/components/feedBack/message/message.js +31 -20
  425. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  426. package/dist/headless/components/feedBack/modal/modal.js +84 -63
  427. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  428. package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
  429. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  430. package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
  431. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  432. package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
  433. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  434. package/dist/headless/components/inputs/button/button.js +73 -63
  435. package/dist/headless/components/inputs/button/button.js.map +1 -1
  436. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
  437. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  438. package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
  439. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  440. package/dist/headless/components/inputs/composer/composer.js +217 -0
  441. package/dist/headless/components/inputs/composer/composer.js.map +1 -0
  442. package/dist/headless/components/inputs/composer/composerFiles.js +19 -0
  443. package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
  444. package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
  445. package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
  446. package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
  447. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  448. package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
  449. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  450. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
  451. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  452. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  453. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  454. package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
  455. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  456. package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
  457. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  458. package/dist/headless/components/inputs/rating/rating.js +85 -70
  459. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  460. package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
  461. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  462. package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
  463. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  464. package/dist/headless/components/inputs/selectField/selectField.js +358 -218
  465. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  466. package/dist/headless/components/inputs/slider/slider.js +330 -261
  467. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  468. package/dist/headless/components/inputs/textField/textField.js +118 -100
  469. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  470. package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
  471. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  472. package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
  473. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  474. package/dist/headless/components/inputs/toggle/toggle.js +79 -60
  475. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  476. package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
  477. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  478. package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
  479. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  480. package/dist/headless/components/layout/divider/divider.js +18 -17
  481. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  482. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
  483. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  484. package/dist/headless/components/layout/grid/grid.js +48 -33
  485. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  486. package/dist/headless/components/layout/page/page.js +15 -7
  487. package/dist/headless/components/layout/page/page.js.map +1 -1
  488. package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
  489. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  490. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
  491. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  492. package/dist/headless/components/layout/sheet/sheet.js +156 -140
  493. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  494. package/dist/headless/components/layout/stack/stack.js +29 -17
  495. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  496. package/dist/headless/components/layout/tabGroups/tabGroups.js +781 -0
  497. package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
  498. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +199 -0
  499. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  500. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +497 -0
  501. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  502. package/dist/headless/components/navigation/appBar/appBar.js +35 -29
  503. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  504. package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
  505. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  506. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
  507. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  508. package/dist/headless/components/navigation/commandPalette/commandPalette.js +335 -0
  509. package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
  510. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  511. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  512. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  513. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  514. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  515. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  516. package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
  517. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  518. package/dist/headless/components/navigation/menu/menuItem.js +60 -48
  519. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  520. package/dist/headless/components/navigation/menu/menuList.js +30 -19
  521. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  522. package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
  523. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  524. package/dist/headless/components/navigation/pagination/pagination.js +51 -49
  525. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  526. package/dist/headless/components/navigation/sidebar/sidebar.js +55 -52
  527. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  528. package/dist/headless/components/navigation/stepper/stepper.js +42 -33
  529. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  530. package/dist/headless/components/navigation/tabs/tab/tab.js +117 -36
  531. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  532. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +25 -0
  533. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  534. package/dist/headless/components/navigation/tabs/tabs.js +362 -141
  535. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  536. package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
  537. package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
  538. package/dist/headless/components/navigation/tabs/tabsContext.js +6 -0
  539. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -0
  540. package/dist/headless/hooks/useDismissOnEscape.js +16 -0
  541. package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
  542. package/dist/headless/hooks/useFocusTrap.js +24 -20
  543. package/dist/headless/hooks/useFocusTrap.js.map +1 -1
  544. package/dist/headless/hooks/useHelperText.js +13 -0
  545. package/dist/headless/hooks/useHelperText.js.map +1 -0
  546. package/dist/headless/hooks/useKeyboardShortcut.js +19 -0
  547. package/dist/headless/hooks/useKeyboardShortcut.js.map +1 -0
  548. package/dist/headless/index.js +360 -316
  549. package/dist/headless/index.js.map +1 -1
  550. package/dist/headless/utils/controlProps.js +14 -0
  551. package/dist/headless/utils/controlProps.js.map +1 -0
  552. package/dist/headless/utils/keyboardShortcut.js +49 -0
  553. package/dist/headless/utils/keyboardShortcut.js.map +1 -0
  554. package/dist/headless/utils/linkAttrs.js +13 -0
  555. package/dist/headless/utils/linkAttrs.js.map +1 -0
  556. package/dist/headless/utils/overlayLayer.js +14 -7
  557. package/dist/headless/utils/overlayLayer.js.map +1 -1
  558. package/dist/headless/utils/ownClick.js +40 -0
  559. package/dist/headless/utils/ownClick.js.map +1 -0
  560. package/dist/headless/utils/readOnlyToggle.js +14 -0
  561. package/dist/headless/utils/readOnlyToggle.js.map +1 -0
  562. package/dist/headless/utils/restoreFocus.js +10 -0
  563. package/dist/headless/utils/restoreFocus.js.map +1 -0
  564. package/dist/hooks/useDismissOnEscape.d.ts +11 -0
  565. package/dist/hooks/useDismissOnEscape.js +16 -0
  566. package/dist/hooks/useDismissOnEscape.js.map +1 -0
  567. package/dist/hooks/useFocusTrap.d.ts +8 -1
  568. package/dist/hooks/useFocusTrap.js +24 -20
  569. package/dist/hooks/useFocusTrap.js.map +1 -1
  570. package/dist/hooks/useHelperText.d.ts +21 -0
  571. package/dist/hooks/useHelperText.js +13 -0
  572. package/dist/hooks/useHelperText.js.map +1 -0
  573. package/dist/hooks/useKeyboardShortcut.d.ts +30 -0
  574. package/dist/hooks/useKeyboardShortcut.js +19 -0
  575. package/dist/hooks/useKeyboardShortcut.js.map +1 -0
  576. package/dist/index.cjs +3 -2
  577. package/dist/index.cjs.map +1 -1
  578. package/dist/index.d.ts +24 -3
  579. package/dist/index.js +360 -316
  580. package/dist/index.js.map +1 -1
  581. package/dist/utils/controlProps.d.ts +16 -0
  582. package/dist/utils/controlProps.js +14 -0
  583. package/dist/utils/controlProps.js.map +1 -0
  584. package/dist/utils/keyboardShortcut.d.ts +12 -0
  585. package/dist/utils/keyboardShortcut.js +49 -0
  586. package/dist/utils/keyboardShortcut.js.map +1 -0
  587. package/dist/utils/linkAttrs.d.ts +13 -0
  588. package/dist/utils/linkAttrs.js +13 -0
  589. package/dist/utils/linkAttrs.js.map +1 -0
  590. package/dist/utils/overlayLayer.d.ts +15 -3
  591. package/dist/utils/overlayLayer.js +14 -7
  592. package/dist/utils/overlayLayer.js.map +1 -1
  593. package/dist/utils/ownClick.d.ts +16 -0
  594. package/dist/utils/ownClick.js +40 -0
  595. package/dist/utils/ownClick.js.map +1 -0
  596. package/dist/utils/readOnlyToggle.d.ts +15 -0
  597. package/dist/utils/readOnlyToggle.js +14 -0
  598. package/dist/utils/readOnlyToggle.js.map +1 -0
  599. package/dist/utils/restoreFocus.d.ts +8 -0
  600. package/dist/utils/restoreFocus.js +10 -0
  601. package/dist/utils/restoreFocus.js.map +1 -0
  602. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"floatingWindow.js","sources":["../../../../src/components/layout/floatingWindow/floatingWindow.tsx"],"sourcesContent":["import React, {\n type CSSProperties,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { CSSTransition } from \"react-transition-group\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\n\nexport interface FloatingWindowPosition {\n x: number;\n y: number;\n}\n\nexport interface FloatingWindowSize {\n width: number;\n height: number;\n}\n\n/** The eight edge/corner resize directions. */\nexport type FloatingWindowResizeDir = \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"nw\" | \"se\" | \"sw\";\n\nexport interface FloatingWindowProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onResize\" | \"title\" | \"children\"\n> {\n /** Controlled open state of the window. */\n open: boolean;\n /** Title bar content. When given, the window is labelled by it. */\n title?: ReactNode;\n /** Extra header controls, rendered before the built-in collapse/close buttons. */\n headerActions?: ReactNode;\n\n /** Controlled top-left position in viewport px. */\n position?: FloatingWindowPosition;\n /** Initial position when uncontrolled. */\n defaultPosition?: FloatingWindowPosition;\n /** Called on every move frame and on viewport re-clamp, with the clamped position. */\n onPositionChange?: (position: FloatingWindowPosition) => void;\n /** Called once when a move gesture ends — the point at which to persist. */\n onMoveEnd?: (position: FloatingWindowPosition) => void;\n\n /** Controlled size in px. */\n size?: FloatingWindowSize;\n /** Initial size when uncontrolled. */\n defaultSize?: FloatingWindowSize;\n /** Called on every resize frame and on viewport re-clamp, with the clamped size. */\n onResize?: (size: FloatingWindowSize) => void;\n /** Called once when a resize gesture ends — the point at which to persist. */\n onResizeEnd?: (size: FloatingWindowSize) => void;\n\n /** Minimum width in px (default 200). */\n minWidth?: number;\n /** Minimum height in px (default 120). */\n minHeight?: number;\n /** Maximum width in px (default: viewport width). */\n maxWidth?: number;\n /** Maximum height in px (default: viewport height). */\n maxHeight?: number;\n /** Px of the window that must stay inside the viewport (default 56). */\n keepVisible?: number;\n /** Step in px for keyboard moving (default 24). */\n moveStep?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n\n /** Inline stacking order. The host owns z-order across several windows. */\n zIndex?: number;\n /** Called on pointerdown anywhere in the window, so the host can raise it. */\n onActivate?: () => void;\n\n /** Shade the window down to its title bar. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Render the built-in collapse toggle (default true). */\n collapsible?: boolean;\n\n /** Allow drag-to-move by the title bar (default true). */\n movable?: boolean;\n /** Allow drag-to-resize from the edges and corners (default true). */\n resizable?: boolean;\n /** Close on Escape while focus is inside the window (default false). */\n closeOnEsc?: boolean;\n onClose?: () => void;\n\n /** Accessible label for the move handle. */\n moveHandleAriaLabel?: string;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n /** Accessible label for the collapse toggle while expanded. */\n collapseAriaLabel?: string;\n /** Accessible label for the collapse toggle while collapsed. */\n expandAriaLabel?: string;\n\n \"aria-label\"?: string;\n}\n\ninterface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface Viewport {\n width: number;\n height: number;\n}\n\n/** Sign vector per resize direction: how the pointer delta maps onto x/y/width/height. */\nconst RESIZE_DIRS: Record<FloatingWindowResizeDir, { dx: 0 | 1; dy: 0 | 1; dw: -1 | 0 | 1; dh: -1 | 0 | 1 }> = {\n n: { dx: 0, dy: 1, dw: 0, dh: -1 },\n s: { dx: 0, dy: 0, dw: 0, dh: 1 },\n e: { dx: 0, dy: 0, dw: 1, dh: 0 },\n w: { dx: 1, dy: 0, dw: -1, dh: 0 },\n ne: { dx: 0, dy: 1, dw: 1, dh: -1 },\n nw: { dx: 1, dy: 1, dw: -1, dh: -1 },\n se: { dx: 0, dy: 0, dw: 1, dh: 1 },\n sw: { dx: 1, dy: 0, dw: -1, dh: 1 },\n};\n\nconst RESIZE_ORDER: FloatingWindowResizeDir[] = [\"n\", \"s\", \"e\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nconst viewportOf = (): Viewport =>\n typeof window === \"undefined\" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight };\n\nconst DEFAULT_POSITION: FloatingWindowPosition = { x: 24, y: 24 };\nconst DEFAULT_SIZE: FloatingWindowSize = { width: 360, height: 420 };\n\n/**\n * Free-floating, non-modal window: draggable by its title bar, resizable from every\n * edge and corner, clamped so a grabbable strip always stays on screen.\n *\n * Unlike Sheet/Modal it is deliberately NOT an overlay layer: no backdrop, no focus\n * trap, no `data-smwb-overlay-layer`. Several windows are meant to be open and usable\n * at once alongside the page behind them, so it must not trap focus, swallow clicks,\n * or steal Escape from a Modal stacked above it. Stacking order is the host's job —\n * pass `zIndex` and raise the window from `onActivate`.\n */\nexport const FloatingWindow = forwardRef<HTMLDivElement, PropsWithChildren<FloatingWindowProps>>(\n function FloatingWindow(props, ref) {\n const {\n open,\n title,\n headerActions,\n position: positionProp,\n defaultPosition = DEFAULT_POSITION,\n onPositionChange,\n onMoveEnd,\n size: sizeProp,\n defaultSize = DEFAULT_SIZE,\n onResize,\n onResizeEnd,\n minWidth = 200,\n minHeight = 120,\n maxWidth,\n maxHeight,\n keepVisible = 56,\n moveStep = 24,\n resizeStep = 24,\n zIndex,\n onActivate,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n collapsible = true,\n movable = true,\n resizable = true,\n closeOnEsc = false,\n onClose,\n moveHandleAriaLabel = \"Move window\",\n resizeHandleAriaLabel = \"Resize window\",\n closeAriaLabel = \"Close window\",\n collapseAriaLabel = \"Collapse window\",\n expandAriaLabel = \"Expand window\",\n className,\n style,\n children,\n ...rest\n } = props;\n\n const [domRoot, setDomRoot] = useState<HTMLElement>();\n const rootRef = useRef<HTMLDivElement>(null);\n const forkedRootRef = useForkRef<HTMLDivElement>(ref, rootRef);\n const titleId = useId();\n\n useSafeLayoutEffect(() => {\n setDomRoot(document.body);\n }, []);\n\n const [position, setPosition] = useControllableState<FloatingWindowPosition>({\n value: positionProp,\n defaultValue: defaultPosition,\n onChange: onPositionChange,\n });\n const [size, setSize] = useControllableState<FloatingWindowSize>({\n value: sizeProp,\n defaultValue: defaultSize,\n onChange: onResize,\n });\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: collapsedProp,\n defaultValue: defaultCollapsed,\n onChange: onCollapsedChange,\n });\n\n /**\n * Size first, then position against the clamped size. `y` is never negative, so the\n * title bar can never be dragged above the top edge and become ungrabbable — the gap\n * that makes an off-screen Sheet unrecoverable.\n */\n const clampRect = useCallback(\n (rectIn: Rect, vp: Viewport): Rect => {\n const maxW = maxWidth ?? vp.width;\n const maxH = maxHeight ?? vp.height;\n const width = Math.max(minWidth, Math.min(maxW, rectIn.width));\n const height = Math.max(minHeight, Math.min(maxH, rectIn.height));\n const keep = Math.min(keepVisible, width);\n const x = Math.max(keep - width, Math.min(vp.width - keep, rectIn.x));\n const y = Math.max(0, Math.min(Math.max(0, vp.height - keep), rectIn.y));\n return { x, y, width, height };\n },\n [keepVisible, maxHeight, maxWidth, minHeight, minWidth]\n );\n\n /**\n * Where a window is placed before anyone touches it: fully inside the viewport when\n * it fits at all. `clampRect` alone only keeps `keepVisible` px reachable, which is\n * right for a window the user parked at an edge but wrong on opening — a 760px\n * default on a 375px phone opened a quarter of a screen off to the right.\n */\n const fitRect = useCallback(\n (rectIn: Rect, vp: Viewport): Rect => {\n const clamped = clampRect(rectIn, vp);\n return {\n ...clamped,\n x: Math.max(0, Math.min(clamped.x, vp.width - clamped.width)),\n y: Math.max(0, Math.min(clamped.y, vp.height - clamped.height)),\n };\n },\n [clampRect]\n );\n\n // Set by the first move/resize: from then on the user's placement wins and only the\n // reachability clamp applies, so a window can still be parked half off-screen.\n const [placed, setPlaced] = useState(false);\n useEffect(() => {\n // A closed window forgets that it was moved: opening it again should land on\n // screen like the first time, whatever the viewport is now.\n if (!open) setPlaced(false);\n }, [open]);\n\n /** The geometry actually rendered. Clamping the CONTROLLED value (not just drag\n * frames) means a rect restored from a larger monitor lands on screen immediately. */\n const current = { x: position.x, y: position.y, width: size.width, height: size.height };\n const rect = placed ? clampRect(current, viewportOf()) : fitRect(current, viewportOf());\n\n // The gesture handlers are attached once (pointer capture), so they must not close over a\n // stale rect. A ref mirroring the rendered rect keeps them reading the current geometry.\n const rectRef = useRef(rect);\n rectRef.current = rect;\n\n const commitRect = useCallback(\n (next: Rect, gesture = true): void => {\n if (gesture) setPlaced(true);\n const clamped = clampRect(next, viewportOf());\n if (clamped.x !== position.x || clamped.y !== position.y) setPosition({ x: clamped.x, y: clamped.y });\n if (clamped.width !== size.width || clamped.height !== size.height) {\n setSize({ width: clamped.width, height: clamped.height });\n }\n },\n [clampRect, position.x, position.y, setPosition, setSize, size.height, size.width]\n );\n\n const commitRectRef = useRef(commitRect);\n commitRectRef.current = commitRect;\n\n // Re-clamp when the viewport shrinks, so a window parked near an edge on a large\n // screen stays reachable on a small one. Sheet has no such listener, which is why a\n // dragged sheet survives a viewport shrink oversized.\n useEffect(() => {\n if (!open) return undefined;\n const onViewportResize = (): void => commitRectRef.current(rectRef.current, false);\n window.addEventListener(\"resize\", onViewportResize);\n return () => window.removeEventListener(\"resize\", onViewportResize);\n }, [open]);\n\n // Escape only while focus is inside this window. FloatingWindow is not an overlay\n // layer, so `isTopOverlayLayer` (document order, not z-index) would be the wrong\n // arbiter with several windows open.\n useEffect(() => {\n if (!open || !closeOnEsc || !onClose) return undefined;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Escape\") return;\n const root = rootRef.current;\n if (!root || !root.contains(document.activeElement)) return;\n onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [closeOnEsc, onClose, open]);\n\n const activate = useCallback((): void => {\n onActivate?.();\n // Only when focus is elsewhere — an unconditional focus() would steal the caret\n // from an input inside the window on every raise.\n const root = rootRef.current;\n if (root && !root.contains(document.activeElement)) root.focus({ preventScroll: true });\n }, [onActivate]);\n\n // Pointer capture keeps `pointermove` flowing to the handle even outside it, so there\n // are no document-level listeners to leak (Sheet's pattern, not screenDivider's).\n const move = useRef<{ px: number; py: number; x: number; y: number } | null>(null);\n\n const onMoveHandlePointerDown = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (!movable) return;\n // Header buttons stay clickable.\n if ((event.target as Element | null)?.closest(\"button,[data-no-drag]\")) return;\n event.preventDefault();\n const current = rectRef.current;\n move.current = { px: event.clientX, py: event.clientY, x: current.x, y: current.y };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onMoveHandlePointerMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n const start = move.current;\n if (!start) return;\n commitRect({\n ...rectRef.current,\n x: start.x + event.clientX - start.px,\n y: start.y + event.clientY - start.py,\n });\n };\n\n const endMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (move.current) {\n move.current = null;\n const current = rectRef.current;\n onMoveEnd?.({ x: current.x, y: current.y });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const resize = useRef<{ dir: FloatingWindowResizeDir; px: number; py: number; rect: Rect } | null>(null);\n\n const onResizePointerDown = (dir: FloatingWindowResizeDir, event: React.PointerEvent<HTMLDivElement>): void => {\n event.preventDefault();\n event.stopPropagation();\n resize.current = { dir, px: event.clientX, py: event.clientY, rect: rectRef.current };\n // Grabbing a resize grip is an interaction with the window, so raise it too — the\n // root handler does not see it because this handler stops propagation.\n activate();\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onResizePointerMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n const gesture = resize.current;\n if (!gesture) return;\n const sign = RESIZE_DIRS[gesture.dir];\n const dx = event.clientX - gesture.px;\n const dy = event.clientY - gesture.py;\n const start = gesture.rect;\n // A west/north drag moves the origin AND changes the size, so width is recomputed from\n // the moved edge rather than from the delta alone — otherwise dragging past minWidth\n // would keep sliding the window instead of stopping at the minimum.\n //\n // The size must be clamped to BOTH bounds here, before the origin is derived from it.\n // Clamping only the minimum and leaving the maximum to commitRect's own clamp would\n // compute the origin from a width that then gets shrunk, so the edge the user is NOT\n // dragging would drift away under the cursor.\n const vp = viewportOf();\n const maxW = maxWidth ?? vp.width;\n const maxH = maxHeight ?? vp.height;\n const width = Math.min(maxW, Math.max(minWidth, start.width + sign.dw * dx));\n const height = Math.min(maxH, Math.max(minHeight, start.height + sign.dh * dy));\n commitRect({\n x: sign.dx ? start.x + start.width - width : start.x,\n y: sign.dy ? start.y + start.height - height : start.y,\n width,\n height,\n });\n };\n\n const endResize = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (resize.current) {\n resize.current = null;\n const current = rectRef.current;\n onResizeEnd?.({ width: current.width, height: current.height });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n /** A keypress is a COMPLETE gesture, so it reports move/resize end as well as the\n * per-frame change — otherwise a consumer that persists only on `*End` (the documented\n * way to avoid thrashing storage during a drag) would silently never save\n * keyboard-driven geometry. */\n const endKeyboardGesture = (resized: boolean, next: Rect): void => {\n const current = clampRect(next, viewportOf());\n if (resized) onResizeEnd?.({ width: current.width, height: current.height });\n else onMoveEnd?.({ x: current.x, y: current.y });\n };\n\n /** Arrows move; Shift+Arrows resize. */\n const onMoveHandleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>): void => {\n const current = rectRef.current;\n const step = event.shiftKey ? resizeStep : moveStep;\n const delta: Record<string, [number, number]> = {\n ArrowLeft: [-step, 0],\n ArrowRight: [step, 0],\n ArrowUp: [0, -step],\n ArrowDown: [0, step],\n };\n const d = delta[event.key];\n if (!d) return;\n event.preventDefault();\n const next = event.shiftKey\n ? { ...current, width: current.width + d[0], height: current.height + d[1] }\n : { ...current, x: current.x + d[0], y: current.y + d[1] };\n commitRect(next);\n endKeyboardGesture(event.shiftKey, next);\n };\n\n const onResizeHandleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n const current = rectRef.current;\n const vp = viewportOf();\n let next: Rect;\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n const dir = event.key === \"ArrowRight\" ? 1 : -1;\n next = { ...current, width: current.width + dir * resizeStep };\n } else if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const dir = event.key === \"ArrowDown\" ? 1 : -1;\n next = { ...current, height: current.height + dir * resizeStep };\n } else if (event.key === \"Home\") {\n event.preventDefault();\n next = { ...current, width: minWidth, height: minHeight };\n } else if (event.key === \"End\") {\n event.preventDefault();\n next = { ...current, width: maxWidth ?? vp.width, height: maxHeight ?? vp.height };\n } else {\n return;\n }\n commitRect(next);\n endKeyboardGesture(true, next);\n };\n\n const toggleCollapsed = (): void => setCollapsed((prev) => !prev);\n\n if (!domRoot) {\n return <></>;\n }\n\n const windowStyle: CSSProperties = {\n left: `${rect.x}px`,\n top: `${rect.y}px`,\n width: `${rect.width}px`,\n ...(collapsed ? {} : { height: `${rect.height}px` }),\n ...(zIndex === undefined ? {} : { zIndex }),\n ...(style ?? {}),\n };\n\n return createPortal(\n <CSSTransition\n in={open}\n timeout={120}\n mountOnEnter\n unmountOnExit\n appear\n classNames={{ enterDone: \"smwb-floating-window_entered\" }}\n nodeRef={rootRef}\n >\n <div\n {...rest}\n ref={forkedRootRef}\n data-testid=\"floating-window\"\n role=\"dialog\"\n tabIndex={-1}\n aria-labelledby={title ? titleId : undefined}\n className={cn(\"smwb-floating-window\", className, { \"smwb-collapsed\": collapsed })}\n style={windowStyle}\n onPointerDown={activate}\n >\n <div\n className=\"smwb-floating-window__header\"\n data-testid=\"floating-window-header\"\n onPointerDown={onMoveHandlePointerDown}\n onPointerMove={onMoveHandlePointerMove}\n onPointerUp={endMove}\n onPointerCancel={endMove}\n >\n {/* The move affordance is the grip, not the header: the header also hosts the\n collapse/close buttons and any consumer `headerActions`, and nesting those\n inside a role=\"button\" is an a11y violation. Pointer drag still works\n anywhere on the header; only the keyboard affordance lives here. */}\n <span\n className=\"smwb-floating-window__grip\"\n data-testid=\"floating-window-move\"\n role=\"button\"\n tabIndex={0}\n aria-label={moveHandleAriaLabel}\n onKeyDown={onMoveHandleKeyDown}\n >\n <Icon name=\"drag_indicator\" />\n </span>\n {title ? (\n <span className=\"smwb-floating-window__title\" id={titleId}>\n {title}\n </span>\n ) : null}\n <div className=\"smwb-floating-window__actions\" data-no-drag>\n {headerActions}\n {collapsible ? (\n <button\n type=\"button\"\n className=\"smwb-floating-window__action\"\n data-testid=\"floating-window-collapse\"\n aria-label={collapsed ? expandAriaLabel : collapseAriaLabel}\n aria-expanded={!collapsed}\n onClick={toggleCollapsed}\n >\n <Icon name={collapsed ? \"open_in_full\" : \"close_fullscreen\"} />\n </button>\n ) : null}\n {onClose ? (\n <button\n type=\"button\"\n className=\"smwb-floating-window__action\"\n data-testid=\"floating-window-close\"\n aria-label={closeAriaLabel}\n onClick={onClose}\n >\n <Icon name=\"close\" />\n </button>\n ) : null}\n </div>\n </div>\n\n {!collapsed ? (\n <div className=\"smwb-floating-window__body\" data-testid=\"floating-window-body\">\n {children}\n </div>\n ) : null}\n\n {resizable && !collapsed\n ? RESIZE_ORDER.map((dir) => (\n <div\n key={dir}\n className={cn(\"smwb-floating-window__resize\", `smwb-floating-window__resize_${dir}`)}\n data-testid={`floating-window-resize-${dir}`}\n // Only the south-east grip is reachable by keyboard: eight tab stops per\n // window would make Tab unusable once a few windows are open.\n {...(dir === \"se\"\n ? {\n role: \"separator\" as const,\n tabIndex: 0,\n \"aria-label\": resizeHandleAriaLabel,\n \"aria-valuemin\": minWidth,\n \"aria-valuemax\": Math.round(maxWidth ?? viewportOf().width),\n \"aria-valuenow\": Math.round(rect.width),\n onKeyDown: onResizeHandleKeyDown,\n }\n : { \"aria-hidden\": true, tabIndex: -1 })}\n onPointerDown={(event) => onResizePointerDown(dir, event)}\n onPointerMove={onResizePointerMove}\n onPointerUp={endResize}\n onPointerCancel={endResize}\n />\n ))\n : null}\n </div>\n </CSSTransition>,\n domRoot\n );\n }\n);\n\nexport default FloatingWindow;\n"],"names":["RESIZE_DIRS","RESIZE_ORDER","viewportOf","DEFAULT_POSITION","DEFAULT_SIZE","FloatingWindow","forwardRef","props","ref","open","title","headerActions","positionProp","defaultPosition","onPositionChange","onMoveEnd","sizeProp","defaultSize","onResize","onResizeEnd","minWidth","minHeight","maxWidth","maxHeight","keepVisible","moveStep","resizeStep","zIndex","onActivate","collapsedProp","defaultCollapsed","onCollapsedChange","collapsible","movable","resizable","closeOnEsc","onClose","moveHandleAriaLabel","resizeHandleAriaLabel","closeAriaLabel","collapseAriaLabel","expandAriaLabel","className","style","children","rest","domRoot","setDomRoot","useState","rootRef","useRef","forkedRootRef","useForkRef","titleId","useId","useSafeLayoutEffect","position","setPosition","useControllableState","size","setSize","collapsed","setCollapsed","clampRect","useCallback","rectIn","vp","maxW","maxH","width","height","keep","x","y","fitRect","clamped","placed","setPlaced","useEffect","current","rect","rectRef","commitRect","next","gesture","commitRectRef","onViewportResize","onKeyDown","event","root","activate","move","onMoveHandlePointerDown","_a","_c","_b","onMoveHandlePointerMove","start","endMove","_d","resize","onResizePointerDown","dir","onResizePointerMove","sign","dx","dy","endResize","endKeyboardGesture","resized","onMoveHandleKeyDown","step","d","onResizeHandleKeyDown","toggleCollapsed","prev","jsx","Fragment","windowStyle","createPortal","CSSTransition","jsxs","cn","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"floatingWindow.js","sources":["../../../../src/components/layout/floatingWindow/floatingWindow.tsx"],"sourcesContent":["import React, {\n type CSSProperties,\n type PropsWithChildren,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { CSSTransition } from \"react-transition-group\";\nimport cn from \"clsx\";\nimport Icon from \"../../base/icon/icon\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { hasOverlayLayerAbove } from \"../../../utils/overlayLayer\";\n\nexport interface FloatingWindowPosition {\n x: number;\n y: number;\n}\n\nexport interface FloatingWindowSize {\n width: number;\n height: number;\n}\n\n/** The eight edge/corner resize directions. */\nexport type FloatingWindowResizeDir = \"n\" | \"s\" | \"e\" | \"w\" | \"ne\" | \"nw\" | \"se\" | \"sw\";\n\nexport interface FloatingWindowProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onResize\" | \"title\" | \"children\"\n> {\n /** Controlled open state of the window. */\n open: boolean;\n /** Title bar content. When given, the window is labelled by it. */\n title?: ReactNode;\n /** Extra header controls, rendered before the built-in collapse/close buttons. */\n headerActions?: ReactNode;\n\n /** Controlled top-left position in viewport px. */\n position?: FloatingWindowPosition;\n /** Initial position when uncontrolled. */\n defaultPosition?: FloatingWindowPosition;\n /** Called on every move frame and on viewport re-clamp, with the clamped position. */\n onPositionChange?: (position: FloatingWindowPosition) => void;\n /** Called once when a move gesture ends — the point at which to persist. */\n onMoveEnd?: (position: FloatingWindowPosition) => void;\n\n /** Controlled size in px. */\n size?: FloatingWindowSize;\n /** Initial size when uncontrolled. */\n defaultSize?: FloatingWindowSize;\n /** Called on every resize frame and on viewport re-clamp, with the clamped size. */\n onResize?: (size: FloatingWindowSize) => void;\n /** Called once when a resize gesture ends — the point at which to persist. */\n onResizeEnd?: (size: FloatingWindowSize) => void;\n\n /** Minimum width in px (default 200). */\n minWidth?: number;\n /** Minimum height in px (default 120). */\n minHeight?: number;\n /** Maximum width in px (default: viewport width). */\n maxWidth?: number;\n /** Maximum height in px (default: viewport height). */\n maxHeight?: number;\n /** Px of the window that must stay inside the viewport (default 56). */\n keepVisible?: number;\n /** Step in px for keyboard moving (default 24). */\n moveStep?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n\n /** Inline stacking order. The host owns z-order across several windows. */\n zIndex?: number;\n /** Called on pointerdown anywhere in the window, so the host can raise it. */\n onActivate?: () => void;\n\n /** Shade the window down to its title bar. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Render the built-in collapse toggle (default true). */\n collapsible?: boolean;\n\n /** Allow drag-to-move by the title bar (default true). */\n movable?: boolean;\n /** Allow drag-to-resize from the edges and corners (default true). */\n resizable?: boolean;\n /** Close on Escape while focus is inside the window (default false). */\n closeOnEsc?: boolean;\n onClose?: () => void;\n\n /** Accessible label for the move handle. */\n moveHandleAriaLabel?: string;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Accessible label for the close button. */\n closeAriaLabel?: string;\n /** Accessible label for the collapse toggle while expanded. */\n collapseAriaLabel?: string;\n /** Accessible label for the collapse toggle while collapsed. */\n expandAriaLabel?: string;\n\n \"aria-label\"?: string;\n /** Test id of the window's root `<div>`; `floating-window` unless given. */\n \"data-testid\"?: string;\n}\n\ninterface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\ninterface Viewport {\n width: number;\n height: number;\n}\n\n/** Sign vector per resize direction: how the pointer delta maps onto x/y/width/height. */\nconst RESIZE_DIRS: Record<FloatingWindowResizeDir, { dx: 0 | 1; dy: 0 | 1; dw: -1 | 0 | 1; dh: -1 | 0 | 1 }> = {\n n: { dx: 0, dy: 1, dw: 0, dh: -1 },\n s: { dx: 0, dy: 0, dw: 0, dh: 1 },\n e: { dx: 0, dy: 0, dw: 1, dh: 0 },\n w: { dx: 1, dy: 0, dw: -1, dh: 0 },\n ne: { dx: 0, dy: 1, dw: 1, dh: -1 },\n nw: { dx: 1, dy: 1, dw: -1, dh: -1 },\n se: { dx: 0, dy: 0, dw: 1, dh: 1 },\n sw: { dx: 1, dy: 0, dw: -1, dh: 1 },\n};\n\nconst RESIZE_ORDER: FloatingWindowResizeDir[] = [\"n\", \"s\", \"e\", \"w\", \"ne\", \"nw\", \"se\", \"sw\"];\n\nconst viewportOf = (): Viewport =>\n typeof window === \"undefined\" ? { width: 0, height: 0 } : { width: window.innerWidth, height: window.innerHeight };\n\nconst DEFAULT_POSITION: FloatingWindowPosition = { x: 24, y: 24 };\nconst DEFAULT_SIZE: FloatingWindowSize = { width: 360, height: 420 };\n\n/**\n * Free-floating, non-modal window: draggable by its title bar, resizable from every\n * edge and corner, clamped so a grabbable strip always stays on screen.\n *\n * Unlike Sheet/Modal it is deliberately NOT an overlay layer: no backdrop, no focus\n * trap, no `data-smwb-overlay-layer`. Several windows are meant to be open and usable\n * at once alongside the page behind them, so it must not trap focus, swallow clicks,\n * or steal Escape from a Modal stacked above it. Stacking order is the host's job —\n * pass `zIndex` and raise the window from `onActivate`.\n */\nexport const FloatingWindow = forwardRef<HTMLDivElement, PropsWithChildren<FloatingWindowProps>>(\n function FloatingWindow(props, ref) {\n const {\n open,\n title,\n headerActions,\n position: positionProp,\n defaultPosition = DEFAULT_POSITION,\n onPositionChange,\n onMoveEnd,\n size: sizeProp,\n defaultSize = DEFAULT_SIZE,\n onResize,\n onResizeEnd,\n minWidth = 200,\n minHeight = 120,\n maxWidth,\n maxHeight,\n keepVisible = 56,\n moveStep = 24,\n resizeStep = 24,\n zIndex,\n onActivate,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n collapsible = true,\n movable = true,\n resizable = true,\n closeOnEsc = false,\n onClose,\n moveHandleAriaLabel = \"Move window\",\n resizeHandleAriaLabel = \"Resize window\",\n closeAriaLabel = \"Close window\",\n collapseAriaLabel = \"Collapse window\",\n expandAriaLabel = \"Expand window\",\n // The window sets this on its root too; its own handler calls the caller's first.\n onPointerDown: onPointerDownProp,\n className,\n style,\n children,\n \"data-testid\": dataTestId = \"floating-window\",\n ...rest\n } = props;\n\n const [domRoot, setDomRoot] = useState<HTMLElement>();\n const rootRef = useRef<HTMLDivElement>(null);\n const forkedRootRef = useForkRef<HTMLDivElement>(ref, rootRef);\n const titleId = useId();\n\n useSafeLayoutEffect(() => {\n setDomRoot(document.body);\n }, []);\n\n const [position, setPosition] = useControllableState<FloatingWindowPosition>({\n value: positionProp,\n defaultValue: defaultPosition,\n onChange: onPositionChange,\n });\n const [size, setSize] = useControllableState<FloatingWindowSize>({\n value: sizeProp,\n defaultValue: defaultSize,\n onChange: onResize,\n });\n const [collapsed, setCollapsed] = useControllableState<boolean>({\n value: collapsedProp,\n defaultValue: defaultCollapsed,\n onChange: onCollapsedChange,\n });\n\n /**\n * Size first, then position against the clamped size. `y` is never negative, so the\n * title bar can never be dragged above the top edge and become ungrabbable — the gap\n * that makes an off-screen Sheet unrecoverable.\n */\n const clampRect = useCallback(\n (rectIn: Rect, vp: Viewport): Rect => {\n const maxW = maxWidth ?? vp.width;\n const maxH = maxHeight ?? vp.height;\n const width = Math.max(minWidth, Math.min(maxW, rectIn.width));\n const height = Math.max(minHeight, Math.min(maxH, rectIn.height));\n const keep = Math.min(keepVisible, width);\n const x = Math.max(keep - width, Math.min(vp.width - keep, rectIn.x));\n const y = Math.max(0, Math.min(Math.max(0, vp.height - keep), rectIn.y));\n return { x, y, width, height };\n },\n [keepVisible, maxHeight, maxWidth, minHeight, minWidth]\n );\n\n /**\n * Where a window is placed before anyone touches it: fully inside the viewport when\n * it fits at all. `clampRect` alone only keeps `keepVisible` px reachable, which is\n * right for a window the user parked at an edge but wrong on opening — a 760px\n * default on a 375px phone opened a quarter of a screen off to the right.\n */\n const fitRect = useCallback(\n (rectIn: Rect, vp: Viewport): Rect => {\n const clamped = clampRect(rectIn, vp);\n return {\n ...clamped,\n x: Math.max(0, Math.min(clamped.x, vp.width - clamped.width)),\n y: Math.max(0, Math.min(clamped.y, vp.height - clamped.height)),\n };\n },\n [clampRect]\n );\n\n // Set by the first move/resize: from then on the user's placement wins and only the\n // reachability clamp applies, so a window can still be parked half off-screen.\n const [placed, setPlaced] = useState(false);\n useEffect(() => {\n // A closed window forgets that it was moved: opening it again should land on\n // screen like the first time, whatever the viewport is now.\n if (!open) setPlaced(false);\n }, [open]);\n\n /** The geometry actually rendered. Clamping the CONTROLLED value (not just drag\n * frames) means a rect restored from a larger monitor lands on screen immediately. */\n const current = { x: position.x, y: position.y, width: size.width, height: size.height };\n const rect = placed ? clampRect(current, viewportOf()) : fitRect(current, viewportOf());\n\n // The gesture handlers are attached once (pointer capture), so they must not close over a\n // stale rect. A ref mirroring the rendered rect keeps them reading the current geometry.\n const rectRef = useRef(rect);\n rectRef.current = rect;\n\n const commitRect = useCallback(\n (next: Rect, gesture = true): void => {\n if (gesture) setPlaced(true);\n const clamped = clampRect(next, viewportOf());\n if (clamped.x !== position.x || clamped.y !== position.y) setPosition({ x: clamped.x, y: clamped.y });\n if (clamped.width !== size.width || clamped.height !== size.height) {\n setSize({ width: clamped.width, height: clamped.height });\n }\n },\n [clampRect, position.x, position.y, setPosition, setSize, size.height, size.width]\n );\n\n const commitRectRef = useRef(commitRect);\n commitRectRef.current = commitRect;\n\n // Re-clamp when the viewport shrinks, so a window parked near an edge on a large\n // screen stays reachable on a small one. Sheet has no such listener, which is why a\n // dragged sheet survives a viewport shrink oversized.\n useEffect(() => {\n if (!open) return undefined;\n const onViewportResize = (): void => commitRectRef.current(rectRef.current, false);\n window.addEventListener(\"resize\", onViewportResize);\n return () => window.removeEventListener(\"resize\", onViewportResize);\n }, [open]);\n\n // Escape only while focus is inside this window. FloatingWindow is not an overlay\n // layer, so `isTopOverlayLayer` (document order, not z-index) would be the wrong\n // arbiter with several windows open. An open layer above it, such as a select menu\n // opened from inside it, takes the Escape first; other windows never do.\n useEffect(() => {\n if (!open || !closeOnEsc || !onClose) return undefined;\n const onKeyDown = (event: KeyboardEvent): void => {\n // An Escape handled inside the window, e.g. by a menu closing on it, is not the window's.\n if (event.defaultPrevented) return;\n if (event.key !== \"Escape\") return;\n const root = rootRef.current;\n if (!root || !root.contains(document.activeElement) || hasOverlayLayerAbove(root)) return;\n onClose();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n return () => document.removeEventListener(\"keydown\", onKeyDown);\n }, [closeOnEsc, onClose, open]);\n\n const activate = useCallback((): void => {\n onActivate?.();\n // Only when focus is elsewhere — an unconditional focus() would steal the caret\n // from an input inside the window on every raise.\n const root = rootRef.current;\n if (root && !root.contains(document.activeElement)) root.focus({ preventScroll: true });\n }, [onActivate]);\n\n const onRootPointerDown = (event: React.PointerEvent<HTMLDivElement>): void => {\n onPointerDownProp?.(event);\n activate();\n };\n\n // Pointer capture keeps `pointermove` flowing to the handle even outside it, so there\n // are no document-level listeners to leak (Sheet's pattern, not screenDivider's).\n const move = useRef<{ px: number; py: number; x: number; y: number } | null>(null);\n\n const onMoveHandlePointerDown = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (!movable) return;\n // Header buttons stay clickable.\n if ((event.target as Element | null)?.closest(\"button,[data-no-drag]\")) return;\n event.preventDefault();\n const current = rectRef.current;\n move.current = { px: event.clientX, py: event.clientY, x: current.x, y: current.y };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onMoveHandlePointerMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n const start = move.current;\n if (!start) return;\n commitRect({\n ...rectRef.current,\n x: start.x + event.clientX - start.px,\n y: start.y + event.clientY - start.py,\n });\n };\n\n const endMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (move.current) {\n move.current = null;\n const current = rectRef.current;\n onMoveEnd?.({ x: current.x, y: current.y });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const resize = useRef<{ dir: FloatingWindowResizeDir; px: number; py: number; rect: Rect } | null>(null);\n\n const onResizePointerDown = (dir: FloatingWindowResizeDir, event: React.PointerEvent<HTMLDivElement>): void => {\n event.preventDefault();\n event.stopPropagation();\n resize.current = { dir, px: event.clientX, py: event.clientY, rect: rectRef.current };\n // Grabbing a resize grip is an interaction with the window, so raise it too — the\n // root handler does not see it because this handler stops propagation.\n activate();\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onResizePointerMove = (event: React.PointerEvent<HTMLDivElement>): void => {\n const gesture = resize.current;\n if (!gesture) return;\n const sign = RESIZE_DIRS[gesture.dir];\n const dx = event.clientX - gesture.px;\n const dy = event.clientY - gesture.py;\n const start = gesture.rect;\n // A west/north drag moves the origin AND changes the size, so width is recomputed from\n // the moved edge rather than from the delta alone — otherwise dragging past minWidth\n // would keep sliding the window instead of stopping at the minimum.\n //\n // The size must be clamped to BOTH bounds here, before the origin is derived from it.\n // Clamping only the minimum and leaving the maximum to commitRect's own clamp would\n // compute the origin from a width that then gets shrunk, so the edge the user is NOT\n // dragging would drift away under the cursor.\n const vp = viewportOf();\n const maxW = maxWidth ?? vp.width;\n const maxH = maxHeight ?? vp.height;\n const width = Math.min(maxW, Math.max(minWidth, start.width + sign.dw * dx));\n const height = Math.min(maxH, Math.max(minHeight, start.height + sign.dh * dy));\n commitRect({\n x: sign.dx ? start.x + start.width - width : start.x,\n y: sign.dy ? start.y + start.height - height : start.y,\n width,\n height,\n });\n };\n\n const endResize = (event: React.PointerEvent<HTMLDivElement>): void => {\n if (resize.current) {\n resize.current = null;\n const current = rectRef.current;\n onResizeEnd?.({ width: current.width, height: current.height });\n }\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n /** A keypress is a COMPLETE gesture, so it reports move/resize end as well as the\n * per-frame change — otherwise a consumer that persists only on `*End` (the documented\n * way to avoid thrashing storage during a drag) would silently never save\n * keyboard-driven geometry. */\n const endKeyboardGesture = (resized: boolean, next: Rect): void => {\n const current = clampRect(next, viewportOf());\n if (resized) onResizeEnd?.({ width: current.width, height: current.height });\n else onMoveEnd?.({ x: current.x, y: current.y });\n };\n\n /** Arrows move; Shift+Arrows resize. */\n const onMoveHandleKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>): void => {\n const current = rectRef.current;\n const step = event.shiftKey ? resizeStep : moveStep;\n const delta: Record<string, [number, number]> = {\n ArrowLeft: [-step, 0],\n ArrowRight: [step, 0],\n ArrowUp: [0, -step],\n ArrowDown: [0, step],\n };\n const d = delta[event.key];\n if (!d) return;\n event.preventDefault();\n const next = event.shiftKey\n ? { ...current, width: current.width + d[0], height: current.height + d[1] }\n : { ...current, x: current.x + d[0], y: current.y + d[1] };\n commitRect(next);\n endKeyboardGesture(event.shiftKey, next);\n };\n\n const onResizeHandleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n const current = rectRef.current;\n const vp = viewportOf();\n let next: Rect;\n if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\") {\n event.preventDefault();\n const dir = event.key === \"ArrowRight\" ? 1 : -1;\n next = { ...current, width: current.width + dir * resizeStep };\n } else if (event.key === \"ArrowUp\" || event.key === \"ArrowDown\") {\n event.preventDefault();\n const dir = event.key === \"ArrowDown\" ? 1 : -1;\n next = { ...current, height: current.height + dir * resizeStep };\n } else if (event.key === \"Home\") {\n event.preventDefault();\n next = { ...current, width: minWidth, height: minHeight };\n } else if (event.key === \"End\") {\n event.preventDefault();\n next = { ...current, width: maxWidth ?? vp.width, height: maxHeight ?? vp.height };\n } else {\n return;\n }\n commitRect(next);\n endKeyboardGesture(true, next);\n };\n\n const toggleCollapsed = (): void => setCollapsed((prev) => !prev);\n\n if (!domRoot) {\n return <></>;\n }\n\n const windowStyle: CSSProperties = {\n left: `${rect.x}px`,\n top: `${rect.y}px`,\n width: `${rect.width}px`,\n ...(collapsed ? {} : { height: `${rect.height}px` }),\n ...(zIndex === undefined ? {} : { zIndex }),\n ...(style ?? {}),\n };\n\n return createPortal(\n <CSSTransition\n in={open}\n timeout={120}\n mountOnEnter\n unmountOnExit\n appear\n classNames={{ enterDone: \"smwb-floating-window_entered\" }}\n nodeRef={rootRef}\n >\n <div\n {...rest}\n ref={forkedRootRef}\n data-testid={dataTestId}\n role=\"dialog\"\n tabIndex={-1}\n // Labelled by its title when it has one; without, the caller's own stays.\n aria-labelledby={title ? titleId : rest[\"aria-labelledby\"]}\n className={cn(\"smwb-floating-window\", className, { \"smwb-collapsed\": collapsed })}\n style={windowStyle}\n onPointerDown={onRootPointerDown}\n >\n <div\n className=\"smwb-floating-window__header\"\n data-testid=\"floating-window-header\"\n onPointerDown={onMoveHandlePointerDown}\n onPointerMove={onMoveHandlePointerMove}\n onPointerUp={endMove}\n onPointerCancel={endMove}\n >\n {/* The move affordance is the grip, not the header: the header also hosts the\n collapse/close buttons and any consumer `headerActions`, and nesting those\n inside a role=\"button\" is an a11y violation. Pointer drag still works\n anywhere on the header; only the keyboard affordance lives here. */}\n <span\n className=\"smwb-floating-window__grip\"\n data-testid=\"floating-window-move\"\n role=\"button\"\n tabIndex={0}\n aria-label={moveHandleAriaLabel}\n onKeyDown={onMoveHandleKeyDown}\n >\n <Icon name=\"drag_indicator\" />\n </span>\n {title ? (\n <span className=\"smwb-floating-window__title\" id={titleId}>\n {title}\n </span>\n ) : null}\n <div className=\"smwb-floating-window__actions\" data-no-drag>\n {headerActions}\n {collapsible ? (\n <button\n type=\"button\"\n className=\"smwb-floating-window__action\"\n data-testid=\"floating-window-collapse\"\n aria-label={collapsed ? expandAriaLabel : collapseAriaLabel}\n aria-expanded={!collapsed}\n onClick={toggleCollapsed}\n >\n <Icon name={collapsed ? \"open_in_full\" : \"close_fullscreen\"} />\n </button>\n ) : null}\n {onClose ? (\n <button\n type=\"button\"\n className=\"smwb-floating-window__action\"\n data-testid=\"floating-window-close\"\n aria-label={closeAriaLabel}\n onClick={onClose}\n >\n <Icon name=\"close\" />\n </button>\n ) : null}\n </div>\n </div>\n\n {!collapsed ? (\n <div className=\"smwb-floating-window__body\" data-testid=\"floating-window-body\">\n {children}\n </div>\n ) : null}\n\n {resizable && !collapsed\n ? RESIZE_ORDER.map((dir) => (\n <div\n key={dir}\n className={cn(\"smwb-floating-window__resize\", `smwb-floating-window__resize_${dir}`)}\n data-testid={`floating-window-resize-${dir}`}\n // Only the south-east grip is reachable by keyboard: eight tab stops per\n // window would make Tab unusable once a few windows are open.\n {...(dir === \"se\"\n ? {\n role: \"separator\" as const,\n tabIndex: 0,\n \"aria-label\": resizeHandleAriaLabel,\n \"aria-valuemin\": minWidth,\n \"aria-valuemax\": Math.round(maxWidth ?? viewportOf().width),\n \"aria-valuenow\": Math.round(rect.width),\n onKeyDown: onResizeHandleKeyDown,\n }\n : { \"aria-hidden\": true, tabIndex: -1 })}\n onPointerDown={(event) => onResizePointerDown(dir, event)}\n onPointerMove={onResizePointerMove}\n onPointerUp={endResize}\n onPointerCancel={endResize}\n />\n ))\n : null}\n </div>\n </CSSTransition>,\n domRoot\n );\n }\n);\n\nexport default FloatingWindow;\n"],"names":["RESIZE_DIRS","RESIZE_ORDER","viewportOf","DEFAULT_POSITION","DEFAULT_SIZE","FloatingWindow","forwardRef","props","ref","open","title","headerActions","positionProp","defaultPosition","onPositionChange","onMoveEnd","sizeProp","defaultSize","onResize","onResizeEnd","minWidth","minHeight","maxWidth","maxHeight","keepVisible","moveStep","resizeStep","zIndex","onActivate","collapsedProp","defaultCollapsed","onCollapsedChange","collapsible","movable","resizable","closeOnEsc","onClose","moveHandleAriaLabel","resizeHandleAriaLabel","closeAriaLabel","collapseAriaLabel","expandAriaLabel","onPointerDownProp","className","style","children","dataTestId","rest","domRoot","setDomRoot","useState","rootRef","useRef","forkedRootRef","useForkRef","titleId","useId","useSafeLayoutEffect","position","setPosition","useControllableState","size","setSize","collapsed","setCollapsed","clampRect","useCallback","rectIn","vp","maxW","maxH","width","height","keep","x","y","fitRect","clamped","placed","setPlaced","useEffect","current","rect","rectRef","commitRect","next","gesture","commitRectRef","onViewportResize","onKeyDown","event","root","hasOverlayLayerAbove","activate","onRootPointerDown","move","onMoveHandlePointerDown","_a","_c","_b","onMoveHandlePointerMove","start","endMove","_d","resize","onResizePointerDown","dir","onResizePointerMove","sign","dx","dy","endResize","endKeyboardGesture","resized","onMoveHandleKeyDown","step","d","onResizeHandleKeyDown","toggleCollapsed","prev","jsx","Fragment","windowStyle","createPortal","CSSTransition","jsxs","cn","Icon"],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import React from "react";
2
- export declare const Grid: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
2
+ export declare const Grid: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
3
+ /** Test id of the root `<div>`; `grid` unless given. */
4
+ "data-testid"?: string;
5
+ } & React.RefAttributes<HTMLDivElement>>;
3
6
  export type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
4
7
  /** Column width per breakpoint: 1–12 grid units, `"auto"` (fit content) or `true` (fill remaining). */
5
8
  export type BreakpointType = ColumnSpan | "auto" | true;
@@ -17,6 +20,8 @@ export interface RowProps extends React.HTMLAttributes<HTMLDivElement> {
17
20
  alignItems?: (typeof alignItemsOptions)[number];
18
21
  direction?: (typeof directionOptions)[number];
19
22
  spacing?: number;
23
+ /** Test id of the root `<div>`; `grid-row` unless given. */
24
+ "data-testid"?: string;
20
25
  }
21
26
  export declare const Row: React.ForwardRefExoticComponent<RowProps & React.RefAttributes<HTMLDivElement>>;
22
27
  export type ColumnProps = React.HTMLAttributes<HTMLDivElement> & {
@@ -34,6 +39,8 @@ export type ColumnProps = React.HTMLAttributes<HTMLDivElement> & {
34
39
  xlOffset?: OffsetType;
35
40
  /** Скрыть колонку: булево (всегда) или по точкам остановы `{ xs:true, md:false }`. */
36
41
  hidden?: ResponsiveBool;
42
+ /** Test id of the root `<div>`; `grid-col` unless given. */
43
+ "data-testid"?: string;
37
44
  };
38
45
  export declare const Column: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
39
46
  /** Ширина на точке остановы: 1–12 из 12, `"auto"` (по контенту) или `true` (заполнить). */
@@ -50,6 +57,8 @@ export declare const Column: React.ForwardRefExoticComponent<React.HTMLAttribute
50
57
  xlOffset?: OffsetType;
51
58
  /** Скрыть колонку: булево (всегда) или по точкам остановы `{ xs:true, md:false }`. */
52
59
  hidden?: ResponsiveBool;
60
+ /** Test id of the root `<div>`; `grid-col` unless given. */
61
+ "data-testid"?: string;
53
62
  } & React.RefAttributes<HTMLDivElement>>;
54
63
  export type ContainerMaxWidth = "sm" | "md" | "lg" | "xl" | false;
55
64
  export interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -57,5 +66,7 @@ export interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {
57
66
  maxWidth?: ContainerMaxWidth;
58
67
  /** Remove horizontal gutters. */
59
68
  disableGutters?: boolean;
69
+ /** Test id of the root `<div>`; `grid-container` unless given. */
70
+ "data-testid"?: string;
60
71
  }
61
72
  export declare const Container: React.ForwardRefExoticComponent<ContainerProps & React.RefAttributes<HTMLDivElement>>;
@@ -3,58 +3,73 @@ import '../../../assets/styles/less/components/grid/grid.entry.css';import '../.
3
3
  /* empty css */
4
4
  import _ from "react";
5
5
  import u from "clsx";
6
- const A = _.forwardRef(function({ className: s, ...r }, o) {
7
- return /* @__PURE__ */ w("div", { ref: o, "data-testid": "grid", className: u("smwb-grid", s), ...r });
8
- }), p = ["wrap", "nowrap", "wrap-reverse"], v = [
6
+ const D = _.forwardRef(function({ className: r, "data-testid": s = "grid", ...t }, o) {
7
+ return /* @__PURE__ */ w("div", { ref: o, "data-testid": s, className: u("smwb-grid", r), ...t });
8
+ }), v = ["wrap", "nowrap", "wrap-reverse"], x = [
9
9
  "flex-start",
10
10
  "center",
11
11
  "flex-end",
12
12
  "space-between",
13
13
  "space-around",
14
14
  "space-evenly"
15
- ], x = ["flex-start", "center", "flex-end", "stretch", "baseline"], R = ["row", "row-reverse", "column", "column-reverse"], D = _.forwardRef(function({ className: s, justifyContent: r, alignItems: o, direction: n, wrap: t, spacing: i, ...c }, m) {
16
- const l = r && v.includes(r) && r !== "flex-start", d = o && x.includes(o) && o !== "flex-start", a = n && R.includes(n) && n !== "row", f = t && p.includes(t) && t !== "wrap", g = u("smwb-grid__row", s, {
15
+ ], R = ["flex-start", "center", "flex-end", "stretch", "baseline"], C = ["row", "row-reverse", "column", "column-reverse"], F = _.forwardRef(function({ className: r, justifyContent: s, alignItems: t, direction: o, wrap: n, spacing: i, "data-testid": c = "grid-row", ...d }, m) {
16
+ const a = s && x.includes(s) && s !== "flex-start", l = t && R.includes(t) && t !== "flex-start", f = o && C.includes(o) && o !== "row", g = n && v.includes(n) && n !== "wrap", b = u("smwb-grid__row", r, {
17
17
  [`smwb-grid__row--spacing-${i}`]: i,
18
- [`smwb-grid__row--justifyContent-${r}`]: l,
19
- [`smwb-grid__row--alignItems-${o}`]: d,
20
- [`smwb-grid__row--direction-${n}`]: a,
21
- [`smwb-grid__row--${t}`]: f
18
+ [`smwb-grid__row--justifyContent-${s}`]: a,
19
+ [`smwb-grid__row--alignItems-${t}`]: l,
20
+ [`smwb-grid__row--direction-${o}`]: f,
21
+ [`smwb-grid__row--${n}`]: g
22
22
  });
23
- return /* @__PURE__ */ w("div", { ref: m, "data-testid": "grid-row", className: g, ...c });
24
- }), C = (e) => e === void 0 ? {} : typeof e == "boolean" ? { "smwb-grid__column--hidden": e } : Object.keys(e).reduce((s, r) => (s[`smwb-grid__column--hidden-${r}`] = e[r] === !0, s[`smwb-grid__column--visible-${r}`] = e[r] === !1, s), {}), F = _.forwardRef(function({ className: s, xs: r, sm: o, md: n, lg: t, xl: i, xsOffset: c, smOffset: m, mdOffset: l, lgOffset: d, xlOffset: a, hidden: f, ...g }, b) {
25
- const $ = u("smwb-grid__column", s, {
26
- [`smwb-grid__column--xs-${r}`]: r,
27
- [`smwb-grid__column--sm-${o}`]: o,
28
- [`smwb-grid__column--md-${n}`]: n,
29
- [`smwb-grid__column--lg-${t}`]: t,
23
+ return /* @__PURE__ */ w("div", { ref: m, "data-testid": c, className: b, ...d });
24
+ }), N = (e) => e === void 0 ? {} : typeof e == "boolean" ? { "smwb-grid__column--hidden": e } : Object.keys(e).reduce((r, s) => (r[`smwb-grid__column--hidden-${s}`] = e[s] === !0, r[`smwb-grid__column--visible-${s}`] = e[s] === !1, r), {}), J = _.forwardRef(function({
25
+ className: r,
26
+ xs: s,
27
+ sm: t,
28
+ md: o,
29
+ lg: n,
30
+ xl: i,
31
+ xsOffset: c,
32
+ smOffset: d,
33
+ mdOffset: m,
34
+ lgOffset: a,
35
+ xlOffset: l,
36
+ hidden: f,
37
+ "data-testid": g = "grid-col",
38
+ ...b
39
+ }, $) {
40
+ const p = u("smwb-grid__column", r, {
41
+ [`smwb-grid__column--xs-${s}`]: s,
42
+ [`smwb-grid__column--sm-${t}`]: t,
43
+ [`smwb-grid__column--md-${o}`]: o,
44
+ [`smwb-grid__column--lg-${n}`]: n,
30
45
  [`smwb-grid__column--xl-${i}`]: i,
31
46
  [`smwb-grid__column--xs-offset-${c}`]: c,
32
- [`smwb-grid__column--sm-offset-${m}`]: m,
33
- [`smwb-grid__column--md-offset-${l}`]: l,
34
- [`smwb-grid__column--lg-offset-${d}`]: d,
35
- [`smwb-grid__column--xl-offset-${a}`]: a,
36
- ...C(f)
47
+ [`smwb-grid__column--sm-offset-${d}`]: d,
48
+ [`smwb-grid__column--md-offset-${m}`]: m,
49
+ [`smwb-grid__column--lg-offset-${a}`]: a,
50
+ [`smwb-grid__column--xl-offset-${l}`]: l,
51
+ ...N(f)
37
52
  });
38
- return /* @__PURE__ */ w("div", { ref: b, className: $, "data-testid": "grid-col", ...g });
39
- }), J = _.forwardRef(function({ className: s, maxWidth: r = "lg", disableGutters: o = !1, ...n }, t) {
40
- const i = u(
53
+ return /* @__PURE__ */ w("div", { ref: $, className: p, "data-testid": g, ...b });
54
+ }), q = _.forwardRef(function({ className: r, maxWidth: s = "lg", disableGutters: t = !1, "data-testid": o = "grid-container", ...n }, i) {
55
+ const c = u(
41
56
  "smwb-container",
42
57
  {
43
- [`smwb-container--${r}`]: r !== !1,
44
- "smwb-container--gutterless": o
58
+ [`smwb-container--${s}`]: s !== !1,
59
+ "smwb-container--gutterless": t
45
60
  },
46
- s
61
+ r
47
62
  );
48
- return /* @__PURE__ */ w("div", { ref: t, "data-testid": "grid-container", className: i, ...n });
63
+ return /* @__PURE__ */ w("div", { ref: i, "data-testid": o, className: c, ...n });
49
64
  });
50
65
  export {
51
- F as Column,
52
- J as Container,
53
- A as Grid,
54
- D as Row,
55
- x as alignItemsOptions,
56
- R as directionOptions,
57
- v as justifyContentOptions,
58
- p as wrapOptions
66
+ J as Column,
67
+ q as Container,
68
+ D as Grid,
69
+ F as Row,
70
+ R as alignItemsOptions,
71
+ C as directionOptions,
72
+ x as justifyContentOptions,
73
+ v as wrapOptions
59
74
  };
60
75
  //# sourceMappingURL=grid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grid.js","sources":["../../../../src/components/layout/grid/grid.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\n\nexport const Grid = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(function Grid(\n { className, ...rest },\n ref\n) {\n return <div ref={ref} data-testid=\"grid\" className={cn(\"smwb-grid\", className)} {...rest} />;\n});\n\nexport type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n/** Column width per breakpoint: 1–12 grid units, `\"auto\"` (fit content) or `true` (fill remaining). */\nexport type BreakpointType = ColumnSpan | \"auto\" | true;\n/** Column offset (empty leading columns) per breakpoint: 0–11. */\nexport type OffsetType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ResponsiveBool = boolean | Partial<Record<Breakpoint, boolean>>;\n\nexport const wrapOptions = [\"wrap\", \"nowrap\", \"wrap-reverse\"] as const;\nexport const justifyContentOptions = [\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\nexport const alignItemsOptions = [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"] as const;\nexport const directionOptions = [\"row\", \"row-reverse\", \"column\", \"column-reverse\"] as const;\n\nexport interface RowProps extends React.HTMLAttributes<HTMLDivElement> {\n wrap?: (typeof wrapOptions)[number];\n justifyContent?: (typeof justifyContentOptions)[number];\n alignItems?: (typeof alignItemsOptions)[number];\n direction?: (typeof directionOptions)[number];\n spacing?: number;\n}\n\nexport const Row = React.forwardRef<HTMLDivElement, RowProps>(function Row(\n { className, justifyContent, alignItems, direction, wrap, spacing, ...rest },\n ref\n) {\n const isJustifyContent =\n justifyContent && justifyContentOptions.includes(justifyContent) && justifyContent !== \"flex-start\";\n const isAlignItems = alignItems && alignItemsOptions.includes(alignItems) && alignItems !== \"flex-start\";\n const isDirection = direction && directionOptions.includes(direction) && direction !== \"row\";\n const isFlexWrap = wrap && wrapOptions.includes(wrap) && wrap !== \"wrap\";\n\n const classes = cn(\"smwb-grid__row\", className, {\n [`smwb-grid__row--spacing-${spacing}`]: spacing,\n [`smwb-grid__row--justifyContent-${justifyContent}`]: isJustifyContent,\n [`smwb-grid__row--alignItems-${alignItems}`]: isAlignItems,\n [`smwb-grid__row--direction-${direction}`]: isDirection,\n [`smwb-grid__row--${wrap}`]: isFlexWrap,\n });\n\n return <div ref={ref} data-testid=\"grid-row\" className={classes} {...rest} />;\n});\n\nexport type ColumnProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Ширина на точке остановы: 1–12 из 12, `\"auto\"` (по контенту) или `true` (заполнить). */\n xs?: BreakpointType;\n sm?: BreakpointType;\n md?: BreakpointType;\n lg?: BreakpointType;\n xl?: BreakpointType;\n /** Сдвиг (пустые ведущие колонки) на точке остановы, 0–11. */\n xsOffset?: OffsetType;\n smOffset?: OffsetType;\n mdOffset?: OffsetType;\n lgOffset?: OffsetType;\n xlOffset?: OffsetType;\n /** Скрыть колонку: булево (всегда) или по точкам остановы `{ xs:true, md:false }`. */\n hidden?: ResponsiveBool;\n};\n\nconst hiddenClasses = (hidden?: ResponsiveBool) => {\n if (hidden === undefined) {\n return {};\n }\n if (typeof hidden === \"boolean\") {\n return { \"smwb-grid__column--hidden\": hidden };\n }\n return (Object.keys(hidden) as Breakpoint[]).reduce<Record<string, boolean>>((acc, bp) => {\n acc[`smwb-grid__column--hidden-${bp}`] = hidden[bp] === true;\n acc[`smwb-grid__column--visible-${bp}`] = hidden[bp] === false;\n return acc;\n }, {});\n};\n\nexport const Column = React.forwardRef<HTMLDivElement, ColumnProps>(function Column(\n { className, xs, sm, md, lg, xl, xsOffset, smOffset, mdOffset, lgOffset, xlOffset, hidden, ...rest },\n ref\n) {\n const classes = cn(\"smwb-grid__column\", className, {\n [`smwb-grid__column--xs-${xs}`]: xs,\n [`smwb-grid__column--sm-${sm}`]: sm,\n [`smwb-grid__column--md-${md}`]: md,\n [`smwb-grid__column--lg-${lg}`]: lg,\n [`smwb-grid__column--xl-${xl}`]: xl,\n [`smwb-grid__column--xs-offset-${xsOffset}`]: xsOffset,\n [`smwb-grid__column--sm-offset-${smOffset}`]: smOffset,\n [`smwb-grid__column--md-offset-${mdOffset}`]: mdOffset,\n [`smwb-grid__column--lg-offset-${lgOffset}`]: lgOffset,\n [`smwb-grid__column--xl-offset-${xlOffset}`]: xlOffset,\n ...hiddenClasses(hidden),\n });\n\n return <div ref={ref} className={classes} data-testid=\"grid-col\" {...rest} />;\n});\n\nexport type ContainerMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | false;\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Max-width breakpoint cap; `false` = fluid full width. */\n maxWidth?: ContainerMaxWidth;\n /** Remove horizontal gutters. */\n disableGutters?: boolean;\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(function Container(\n { className, maxWidth = \"lg\", disableGutters = false, ...rest },\n ref\n) {\n const classes = cn(\n \"smwb-container\",\n {\n [`smwb-container--${maxWidth}`]: maxWidth !== false,\n \"smwb-container--gutterless\": disableGutters,\n },\n className\n );\n return <div ref={ref} data-testid=\"grid-container\" className={classes} {...rest} />;\n});\n"],"names":["Grid","React","className","rest","ref","jsx","cn","wrapOptions","justifyContentOptions","alignItemsOptions","directionOptions","Row","justifyContent","alignItems","direction","wrap","spacing","isJustifyContent","isAlignItems","isDirection","isFlexWrap","classes","hiddenClasses","hidden","acc","bp","Column","xs","sm","md","lg","xl","xsOffset","smOffset","mdOffset","lgOffset","xlOffset","Container","maxWidth","disableGutters"],"mappings":"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"}
1
+ {"version":3,"file":"grid.js","sources":["../../../../src/components/layout/grid/grid.tsx"],"sourcesContent":["import React from \"react\";\nimport cn from \"clsx\";\n\ntype DivProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Test id of the root `<div>`; `grid` unless given. */\n \"data-testid\"?: string;\n};\n\nexport const Grid = React.forwardRef<HTMLDivElement, DivProps>(function Grid(\n { className, \"data-testid\": dataTestId = \"grid\", ...rest },\n ref\n) {\n return <div ref={ref} data-testid={dataTestId} className={cn(\"smwb-grid\", className)} {...rest} />;\n});\n\nexport type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n/** Column width per breakpoint: 1–12 grid units, `\"auto\"` (fit content) or `true` (fill remaining). */\nexport type BreakpointType = ColumnSpan | \"auto\" | true;\n/** Column offset (empty leading columns) per breakpoint: 0–11. */\nexport type OffsetType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type ResponsiveBool = boolean | Partial<Record<Breakpoint, boolean>>;\n\nexport const wrapOptions = [\"wrap\", \"nowrap\", \"wrap-reverse\"] as const;\nexport const justifyContentOptions = [\n \"flex-start\",\n \"center\",\n \"flex-end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n] as const;\nexport const alignItemsOptions = [\"flex-start\", \"center\", \"flex-end\", \"stretch\", \"baseline\"] as const;\nexport const directionOptions = [\"row\", \"row-reverse\", \"column\", \"column-reverse\"] as const;\n\nexport interface RowProps extends React.HTMLAttributes<HTMLDivElement> {\n wrap?: (typeof wrapOptions)[number];\n justifyContent?: (typeof justifyContentOptions)[number];\n alignItems?: (typeof alignItemsOptions)[number];\n direction?: (typeof directionOptions)[number];\n spacing?: number;\n /** Test id of the root `<div>`; `grid-row` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const Row = React.forwardRef<HTMLDivElement, RowProps>(function Row(\n { className, justifyContent, alignItems, direction, wrap, spacing, \"data-testid\": dataTestId = \"grid-row\", ...rest },\n ref\n) {\n const isJustifyContent =\n justifyContent && justifyContentOptions.includes(justifyContent) && justifyContent !== \"flex-start\";\n const isAlignItems = alignItems && alignItemsOptions.includes(alignItems) && alignItems !== \"flex-start\";\n const isDirection = direction && directionOptions.includes(direction) && direction !== \"row\";\n const isFlexWrap = wrap && wrapOptions.includes(wrap) && wrap !== \"wrap\";\n\n const classes = cn(\"smwb-grid__row\", className, {\n [`smwb-grid__row--spacing-${spacing}`]: spacing,\n [`smwb-grid__row--justifyContent-${justifyContent}`]: isJustifyContent,\n [`smwb-grid__row--alignItems-${alignItems}`]: isAlignItems,\n [`smwb-grid__row--direction-${direction}`]: isDirection,\n [`smwb-grid__row--${wrap}`]: isFlexWrap,\n });\n\n return <div ref={ref} data-testid={dataTestId} className={classes} {...rest} />;\n});\n\nexport type ColumnProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Ширина на точке остановы: 1–12 из 12, `\"auto\"` (по контенту) или `true` (заполнить). */\n xs?: BreakpointType;\n sm?: BreakpointType;\n md?: BreakpointType;\n lg?: BreakpointType;\n xl?: BreakpointType;\n /** Сдвиг (пустые ведущие колонки) на точке остановы, 0–11. */\n xsOffset?: OffsetType;\n smOffset?: OffsetType;\n mdOffset?: OffsetType;\n lgOffset?: OffsetType;\n xlOffset?: OffsetType;\n /** Скрыть колонку: булево (всегда) или по точкам остановы `{ xs:true, md:false }`. */\n hidden?: ResponsiveBool;\n /** Test id of the root `<div>`; `grid-col` unless given. */\n \"data-testid\"?: string;\n};\n\nconst hiddenClasses = (hidden?: ResponsiveBool) => {\n if (hidden === undefined) {\n return {};\n }\n if (typeof hidden === \"boolean\") {\n return { \"smwb-grid__column--hidden\": hidden };\n }\n return (Object.keys(hidden) as Breakpoint[]).reduce<Record<string, boolean>>((acc, bp) => {\n acc[`smwb-grid__column--hidden-${bp}`] = hidden[bp] === true;\n acc[`smwb-grid__column--visible-${bp}`] = hidden[bp] === false;\n return acc;\n }, {});\n};\n\nexport const Column = React.forwardRef<HTMLDivElement, ColumnProps>(function Column(\n {\n className,\n xs,\n sm,\n md,\n lg,\n xl,\n xsOffset,\n smOffset,\n mdOffset,\n lgOffset,\n xlOffset,\n hidden,\n \"data-testid\": dataTestId = \"grid-col\",\n ...rest\n },\n ref\n) {\n const classes = cn(\"smwb-grid__column\", className, {\n [`smwb-grid__column--xs-${xs}`]: xs,\n [`smwb-grid__column--sm-${sm}`]: sm,\n [`smwb-grid__column--md-${md}`]: md,\n [`smwb-grid__column--lg-${lg}`]: lg,\n [`smwb-grid__column--xl-${xl}`]: xl,\n [`smwb-grid__column--xs-offset-${xsOffset}`]: xsOffset,\n [`smwb-grid__column--sm-offset-${smOffset}`]: smOffset,\n [`smwb-grid__column--md-offset-${mdOffset}`]: mdOffset,\n [`smwb-grid__column--lg-offset-${lgOffset}`]: lgOffset,\n [`smwb-grid__column--xl-offset-${xlOffset}`]: xlOffset,\n ...hiddenClasses(hidden),\n });\n\n return <div ref={ref} className={classes} data-testid={dataTestId} {...rest} />;\n});\n\nexport type ContainerMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | false;\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Max-width breakpoint cap; `false` = fluid full width. */\n maxWidth?: ContainerMaxWidth;\n /** Remove horizontal gutters. */\n disableGutters?: boolean;\n /** Test id of the root `<div>`; `grid-container` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const Container = React.forwardRef<HTMLDivElement, ContainerProps>(function Container(\n { className, maxWidth = \"lg\", disableGutters = false, \"data-testid\": dataTestId = \"grid-container\", ...rest },\n ref\n) {\n const classes = cn(\n \"smwb-container\",\n {\n [`smwb-container--${maxWidth}`]: maxWidth !== false,\n \"smwb-container--gutterless\": disableGutters,\n },\n className\n );\n return <div ref={ref} data-testid={dataTestId} className={classes} {...rest} />;\n});\n"],"names":["Grid","React","className","dataTestId","rest","ref","jsx","cn","wrapOptions","justifyContentOptions","alignItemsOptions","directionOptions","Row","justifyContent","alignItems","direction","wrap","spacing","isJustifyContent","isAlignItems","isDirection","isFlexWrap","classes","hiddenClasses","hidden","acc","bp","Column","xs","sm","md","lg","xl","xsOffset","smOffset","mdOffset","lgOffset","xlOffset","Container","maxWidth","disableGutters"],"mappings":"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"}
@@ -8,6 +8,8 @@ export interface PageProps extends HTMLAttributes<HTMLElement> {
8
8
  /** Render as a different element (default `main`). */
9
9
  component?: keyof JSX.IntrinsicElements;
10
10
  className?: string;
11
+ /** Test id of the root element; `page` unless given. */
12
+ "data-testid"?: string;
11
13
  }
12
14
  export declare const Page: React.ForwardRefExoticComponent<PageProps & {
13
15
  children?: React.ReactNode | undefined;
@@ -3,21 +3,29 @@ import '../../../assets/styles/less/components/page/page.entry.css';import '../.
3
3
  /* empty css */
4
4
  import l from "react";
5
5
  import p from "clsx";
6
- const _ = l.forwardRef(function({ maxWidth: r = "lg", disableGutters: s = !1, component: a, className: t, children: m, ...i }, g) {
6
+ const x = l.forwardRef(function({
7
+ maxWidth: s = "lg",
8
+ disableGutters: r = !1,
9
+ component: a,
10
+ className: t,
11
+ children: i,
12
+ "data-testid": m = "page",
13
+ ...g
14
+ }, d) {
7
15
  const f = a != null ? a : "main";
8
16
  return /* @__PURE__ */ e(
9
17
  f,
10
18
  {
11
- ref: g,
12
- "data-testid": "page",
13
- className: p("smwb-page", `smwb-page_max-${r}`, { "smwb-page_gutterless": s }, t),
14
- ...i,
15
- children: /* @__PURE__ */ e("div", { className: "smwb-page__inner", children: m })
19
+ ref: d,
20
+ "data-testid": m,
21
+ className: p("smwb-page", `smwb-page_max-${s}`, { "smwb-page_gutterless": r }, t),
22
+ ...g,
23
+ children: /* @__PURE__ */ e("div", { className: "smwb-page__inner", children: i })
16
24
  }
17
25
  );
18
26
  });
19
27
  export {
20
- _ as Page,
21
- _ as default
28
+ x as Page,
29
+ x as default
22
30
  };
23
31
  //# sourceMappingURL=page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sources":["../../../../src/components/layout/page/page.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport type PageMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface PageProps extends HTMLAttributes<HTMLElement> {\n /** Content max-width cap; `full` = fluid. */\n maxWidth?: PageMaxWidth;\n /** Remove the page padding. */\n disableGutters?: boolean;\n /** Render as a different element (default `main`). */\n component?: keyof JSX.IntrinsicElements;\n className?: string;\n}\n\nexport const Page = React.forwardRef<HTMLElement, PropsWithChildren<PageProps>>(function Page(\n { maxWidth = \"lg\", disableGutters = false, component, className, children, ...rest },\n ref\n) {\n const Tag = (component ?? \"main\") as \"main\";\n return (\n <Tag\n ref={ref}\n data-testid=\"page\"\n className={cn(\"smwb-page\", `smwb-page_max-${maxWidth}`, { \"smwb-page_gutterless\": disableGutters }, className)}\n {...rest}\n >\n <div className=\"smwb-page__inner\">{children}</div>\n </Tag>\n );\n});\n\nexport default Page;\n"],"names":["Page","React","maxWidth","disableGutters","component","className","children","rest","ref","Tag","jsx","cn"],"mappings":";;;;;AAiBO,MAAMA,IAAOC,EAAM,WAAsD,SAC9E,EAAE,UAAAC,IAAW,MAAM,gBAAAC,IAAiB,IAAO,WAAAC,GAAW,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAC9EC,GACA;AACA,QAAMC,IAAOL,KAAA,OAAAA,IAAa;AAC1B,SACE,gBAAAM;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,eAAY;AAAA,MACZ,WAAWG,EAAG,aAAa,iBAAiBT,CAAQ,IAAI,EAAE,wBAAwBC,EAAA,GAAkBE,CAAS;AAAA,MAC5G,GAAGE;AAAA,MAEJ,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,oBAAoB,UAAAJ,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGlD,CAAC;"}
1
+ {"version":3,"file":"page.js","sources":["../../../../src/components/layout/page/page.tsx"],"sourcesContent":["import React, { HTMLAttributes, PropsWithChildren } from \"react\";\nimport cn from \"clsx\";\n\nexport type PageMaxWidth = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface PageProps extends HTMLAttributes<HTMLElement> {\n /** Content max-width cap; `full` = fluid. */\n maxWidth?: PageMaxWidth;\n /** Remove the page padding. */\n disableGutters?: boolean;\n /** Render as a different element (default `main`). */\n component?: keyof JSX.IntrinsicElements;\n className?: string;\n /** Test id of the root element; `page` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const Page = React.forwardRef<HTMLElement, PropsWithChildren<PageProps>>(function Page(\n {\n maxWidth = \"lg\",\n disableGutters = false,\n component,\n className,\n children,\n \"data-testid\": dataTestId = \"page\",\n ...rest\n },\n ref\n) {\n const Tag = (component ?? \"main\") as \"main\";\n return (\n <Tag\n ref={ref}\n data-testid={dataTestId}\n className={cn(\"smwb-page\", `smwb-page_max-${maxWidth}`, { \"smwb-page_gutterless\": disableGutters }, className)}\n {...rest}\n >\n <div className=\"smwb-page__inner\">{children}</div>\n </Tag>\n );\n});\n\nexport default Page;\n"],"names":["Page","React","maxWidth","disableGutters","component","className","children","dataTestId","rest","ref","Tag","jsx","cn"],"mappings":";;;;;AAmBO,MAAMA,IAAOC,EAAM,WAAsD,SAC9E;AAAA,EACE,UAAAC,IAAW;AAAA,EACX,gBAAAC,IAAiB;AAAA,EACjB,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,GACAC,GACA;AACA,QAAMC,IAAON,KAAA,OAAAA,IAAa;AAC1B,SACE,gBAAAO;AAAA,IAACD;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,eAAaF;AAAA,MACb,WAAWK,EAAG,aAAa,iBAAiBV,CAAQ,IAAI,EAAE,wBAAwBC,EAAA,GAAkBE,CAAS;AAAA,MAC5G,GAAGG;AAAA,MAEJ,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,oBAAoB,UAAAL,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGlD,CAAC;"}
@@ -9,6 +9,8 @@ export interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "titl
9
9
  /** Render a divider below the header. */
10
10
  divider?: boolean;
11
11
  className?: string;
12
+ /** Test id of the root `<header>`; `page-header` unless given. */
13
+ "data-testid"?: string;
12
14
  }
13
15
  export declare const PageHeader: React.ForwardRefExoticComponent<PageHeaderProps & React.RefAttributes<HTMLElement>>;
14
16
  export default PageHeader;
@@ -1,32 +1,41 @@
1
1
  import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
2
  import '../../../assets/styles/less/components/pageHeader/pageHeader.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import h from "react";
5
- import n from "clsx";
6
- import { Typography as i } from "../../dataDisplay/typography/typography.js";
7
- const N = h.forwardRef(function({ title: a, subtitle: d, breadcrumbs: s, actions: m, divider: l = !1, className: t, ...c }, o) {
4
+ import n from "react";
5
+ import p from "clsx";
6
+ import { Typography as m } from "../../dataDisplay/typography/typography.js";
7
+ const u = n.forwardRef(function({
8
+ title: a,
9
+ subtitle: d,
10
+ breadcrumbs: s,
11
+ actions: i,
12
+ divider: t = !1,
13
+ className: l,
14
+ "data-testid": c = "page-header",
15
+ ...o
16
+ }, h) {
8
17
  return /* @__PURE__ */ r(
9
18
  "header",
10
19
  {
11
- ref: o,
12
- "data-testid": "page-header",
13
- className: n("smwb-page-header", { "smwb-page-header_divider": l }, t),
14
- ...c,
20
+ ref: h,
21
+ "data-testid": c,
22
+ className: p("smwb-page-header", { "smwb-page-header_divider": t }, l),
23
+ ...o,
15
24
  children: [
16
25
  s ? /* @__PURE__ */ e("div", { className: "smwb-page-header__breadcrumbs", children: s }) : null,
17
26
  /* @__PURE__ */ r("div", { className: "smwb-page-header__row", children: [
18
27
  /* @__PURE__ */ r("div", { className: "smwb-page-header__titles", children: [
19
- typeof a == "string" ? /* @__PURE__ */ e(i, { variant: "h4", component: "h1", className: "smwb-page-header__title", children: a }) : /* @__PURE__ */ e("div", { className: "smwb-page-header__title", children: a }),
20
- d ? /* @__PURE__ */ e(i, { variant: "body2", color: "textSecondary", className: "smwb-page-header__subtitle", children: d }) : null
28
+ typeof a == "string" ? /* @__PURE__ */ e(m, { variant: "h4", component: "h1", className: "smwb-page-header__title", children: a }) : /* @__PURE__ */ e("div", { className: "smwb-page-header__title", children: a }),
29
+ d ? /* @__PURE__ */ e(m, { variant: "body2", color: "textSecondary", className: "smwb-page-header__subtitle", children: d }) : null
21
30
  ] }),
22
- m ? /* @__PURE__ */ e("div", { className: "smwb-page-header__actions", children: m }) : null
31
+ i ? /* @__PURE__ */ e("div", { className: "smwb-page-header__actions", children: i }) : null
23
32
  ] })
24
33
  ]
25
34
  }
26
35
  );
27
36
  });
28
37
  export {
29
- N as PageHeader,
30
- N as default
38
+ u as PageHeader,
39
+ u as default
31
40
  };
32
41
  //# sourceMappingURL=pageHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageHeader.js","sources":["../../../../src/components/layout/pageHeader/pageHeader.tsx"],"sourcesContent":["import React, { HTMLAttributes, ReactNode } from \"react\";\nimport cn from \"clsx\";\nimport Typography from \"../../dataDisplay/typography/typography\";\n\nexport interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n title: ReactNode;\n subtitle?: ReactNode;\n /** Slot above the title (e.g. <Breadcrumbs />). */\n breadcrumbs?: ReactNode;\n /** Slot on the trailing side (e.g. action buttons). */\n actions?: ReactNode;\n /** Render a divider below the header. */\n divider?: boolean;\n className?: string;\n}\n\nexport const PageHeader = React.forwardRef<HTMLElement, PageHeaderProps>(function PageHeader(\n { title, subtitle, breadcrumbs, actions, divider = false, className, ...rest },\n ref\n) {\n return (\n <header\n ref={ref}\n data-testid=\"page-header\"\n className={cn(\"smwb-page-header\", { \"smwb-page-header_divider\": divider }, className)}\n {...rest}\n >\n {breadcrumbs ? <div className=\"smwb-page-header__breadcrumbs\">{breadcrumbs}</div> : null}\n <div className=\"smwb-page-header__row\">\n <div className=\"smwb-page-header__titles\">\n {typeof title === \"string\" ? (\n <Typography variant=\"h4\" component=\"h1\" className=\"smwb-page-header__title\">\n {title}\n </Typography>\n ) : (\n <div className=\"smwb-page-header__title\">{title}</div>\n )}\n {subtitle ? (\n <Typography variant=\"body2\" color=\"textSecondary\" className=\"smwb-page-header__subtitle\">\n {subtitle}\n </Typography>\n ) : null}\n </div>\n {actions ? <div className=\"smwb-page-header__actions\">{actions}</div> : null}\n </div>\n </header>\n );\n});\n\nexport default PageHeader;\n"],"names":["PageHeader","React","title","subtitle","breadcrumbs","actions","divider","className","rest","ref","jsxs","cn","jsx","Typography"],"mappings":";;;;;;AAkBO,MAAMA,IAAaC,EAAM,WAAyC,SACvE,EAAE,OAAAC,GAAO,UAAAC,GAAU,aAAAC,GAAa,SAAAC,GAAS,SAAAC,IAAU,IAAO,WAAAC,GAAW,GAAGC,EAAA,GACxEC,GACA;AACA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,eAAY;AAAA,MACZ,WAAWE,EAAG,oBAAoB,EAAE,4BAA4BL,EAAA,GAAWC,CAAS;AAAA,MACnF,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAJ,IAAc,gBAAAQ,EAAC,OAAA,EAAI,WAAU,iCAAiC,aAAY,IAAS;AAAA,QACpF,gBAAAF,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,4BACZ,UAAA;AAAA,YAAA,OAAOR,KAAU,WAChB,gBAAAU,EAACC,GAAA,EAAW,SAAQ,MAAK,WAAU,MAAK,WAAU,2BAC/C,aACH,IAEA,gBAAAD,EAAC,OAAA,EAAI,WAAU,2BAA2B,UAAAV,GAAM;AAAA,YAEjDC,IACC,gBAAAS,EAACC,GAAA,EAAW,SAAQ,SAAQ,OAAM,iBAAgB,WAAU,8BACzD,UAAAV,EAAA,CACH,IACE;AAAA,UAAA,GACN;AAAA,UACCE,IAAU,gBAAAO,EAAC,OAAA,EAAI,WAAU,6BAA6B,aAAQ,IAAS;AAAA,QAAA,EAAA,CAC1E;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
1
+ {"version":3,"file":"pageHeader.js","sources":["../../../../src/components/layout/pageHeader/pageHeader.tsx"],"sourcesContent":["import React, { HTMLAttributes, ReactNode } from \"react\";\nimport cn from \"clsx\";\nimport Typography from \"../../dataDisplay/typography/typography\";\n\nexport interface PageHeaderProps extends Omit<HTMLAttributes<HTMLElement>, \"title\"> {\n title: ReactNode;\n subtitle?: ReactNode;\n /** Slot above the title (e.g. <Breadcrumbs />). */\n breadcrumbs?: ReactNode;\n /** Slot on the trailing side (e.g. action buttons). */\n actions?: ReactNode;\n /** Render a divider below the header. */\n divider?: boolean;\n className?: string;\n /** Test id of the root `<header>`; `page-header` unless given. */\n \"data-testid\"?: string;\n}\n\nexport const PageHeader = React.forwardRef<HTMLElement, PageHeaderProps>(function PageHeader(\n {\n title,\n subtitle,\n breadcrumbs,\n actions,\n divider = false,\n className,\n \"data-testid\": dataTestId = \"page-header\",\n ...rest\n },\n ref\n) {\n return (\n <header\n ref={ref}\n data-testid={dataTestId}\n className={cn(\"smwb-page-header\", { \"smwb-page-header_divider\": divider }, className)}\n {...rest}\n >\n {breadcrumbs ? <div className=\"smwb-page-header__breadcrumbs\">{breadcrumbs}</div> : null}\n <div className=\"smwb-page-header__row\">\n <div className=\"smwb-page-header__titles\">\n {typeof title === \"string\" ? (\n <Typography variant=\"h4\" component=\"h1\" className=\"smwb-page-header__title\">\n {title}\n </Typography>\n ) : (\n <div className=\"smwb-page-header__title\">{title}</div>\n )}\n {subtitle ? (\n <Typography variant=\"body2\" color=\"textSecondary\" className=\"smwb-page-header__subtitle\">\n {subtitle}\n </Typography>\n ) : null}\n </div>\n {actions ? <div className=\"smwb-page-header__actions\">{actions}</div> : null}\n </div>\n </header>\n );\n});\n\nexport default PageHeader;\n"],"names":["PageHeader","React","title","subtitle","breadcrumbs","actions","divider","className","dataTestId","rest","ref","jsxs","cn","jsx","Typography"],"mappings":";;;;;;AAoBO,MAAMA,IAAaC,EAAM,WAAyC,SACvE;AAAA,EACE,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,WAAAC;AAAA,EACA,eAAeC,IAAa;AAAA,EAC5B,GAAGC;AACL,GACAC,GACA;AACA,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,eAAaF;AAAA,MACb,WAAWI,EAAG,oBAAoB,EAAE,4BAA4BN,EAAA,GAAWC,CAAS;AAAA,MACnF,GAAGE;AAAA,MAEH,UAAA;AAAA,QAAAL,IAAc,gBAAAS,EAAC,OAAA,EAAI,WAAU,iCAAiC,aAAY,IAAS;AAAA,QACpF,gBAAAF,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,4BACZ,UAAA;AAAA,YAAA,OAAOT,KAAU,WAChB,gBAAAW,EAACC,GAAA,EAAW,SAAQ,MAAK,WAAU,MAAK,WAAU,2BAC/C,aACH,IAEA,gBAAAD,EAAC,OAAA,EAAI,WAAU,2BAA2B,UAAAX,GAAM;AAAA,YAEjDC,IACC,gBAAAU,EAACC,GAAA,EAAW,SAAQ,SAAQ,OAAM,iBAAgB,WAAU,8BACzD,UAAAX,EAAA,CACH,IACE;AAAA,UAAA,GACN;AAAA,UACCE,IAAU,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BAA6B,aAAQ,IAAS;AAAA,QAAA,EAAA,CAC1E;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -19,6 +19,8 @@ export interface SectionHeaderProps extends Omit<HTMLAttributes<HTMLElement>, "t
19
19
  titleId?: string;
20
20
  /** A line under the title. */
21
21
  subtitle?: ReactNode;
22
+ /** Test id of the root `<header>`; `section-header` unless given. */
23
+ "data-testid"?: string;
22
24
  }
23
25
  /**
24
26
  * A section's heading row: the title with a count and a help hint, a subtitle