@smwb/ui-solid 0.12.1 → 0.14.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 (1137) hide show
  1. package/README.md +638 -0
  2. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  4. package/dist/assets/styles/less/components/button/button.entry.css +1 -1
  5. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  6. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  7. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
  9. package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
  10. package/dist/assets/styles/less/components/dagView/dagView.entry.css +1 -0
  11. package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
  12. package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
  13. package/dist/assets/styles/less/components/list/list.entry.css +1 -1
  14. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  15. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  16. package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
  17. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  18. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  19. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  20. package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
  21. package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
  22. package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
  23. package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
  24. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  25. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  26. package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
  27. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  28. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  29. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  30. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  31. package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
  32. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  33. package/dist/assets/styles/less/tokens.entry.css +1 -1
  34. package/dist/components/base/animateHeight/animateHeight.js +41 -42
  35. package/dist/components/base/animateHeight/animateHeight.js.map +1 -1
  36. package/dist/components/base/icon/icon.d.ts +6 -2
  37. package/dist/components/base/icon/icon.js +41 -41
  38. package/dist/components/base/icon/icon.js.map +1 -1
  39. package/dist/components/base/ripple/ripple.d.ts +3 -0
  40. package/dist/components/base/ripple/ripple.js +46 -34
  41. package/dist/components/base/ripple/ripple.js.map +1 -1
  42. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  43. package/dist/components/dataDisplay/avatar/avatar.js +37 -33
  44. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  45. package/dist/components/dataDisplay/card/card.d.ts +32 -1
  46. package/dist/components/dataDisplay/card/card.js +47 -34
  47. package/dist/components/dataDisplay/card/card.js.map +1 -1
  48. package/dist/components/dataDisplay/carousel/carousel.js +92 -88
  49. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  50. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  51. package/dist/components/dataDisplay/chat/chat.d.ts +42 -0
  52. package/dist/components/dataDisplay/chat/chat.js +116 -57
  53. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  54. package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
  55. package/dist/components/dataDisplay/chat/chatComposer.js +21 -19
  56. package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
  57. package/dist/components/dataDisplay/chat/chatIconButton.js +23 -13
  58. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  59. package/dist/components/dataDisplay/chat/chatLayout.d.ts +2 -0
  60. package/dist/components/dataDisplay/chat/chatLayout.js +33 -29
  61. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  62. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +2 -0
  63. package/dist/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
  64. package/dist/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
  65. package/dist/components/dataDisplay/chat/index.d.ts +1 -1
  66. package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
  67. package/dist/components/dataDisplay/chat/utils.js.map +1 -1
  68. package/dist/components/dataDisplay/chip/chip.d.ts +32 -0
  69. package/dist/components/dataDisplay/chip/chip.js +104 -63
  70. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  71. package/dist/components/dataDisplay/chipGroup/chipGroup.js +44 -39
  72. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  73. package/dist/components/dataDisplay/dagView/dagLayout.d.ts +74 -0
  74. package/dist/components/dataDisplay/dagView/dagLayout.js +284 -0
  75. package/dist/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  76. package/dist/components/dataDisplay/dagView/dagView.d.ts +151 -0
  77. package/dist/components/dataDisplay/dagView/dagView.js +503 -0
  78. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -0
  79. package/dist/components/dataDisplay/dagView/index.d.ts +4 -0
  80. package/dist/components/dataDisplay/dagView/panZoom.d.ts +75 -0
  81. package/dist/components/dataDisplay/dagView/panZoom.js +161 -0
  82. package/dist/components/dataDisplay/dagView/panZoom.js.map +1 -0
  83. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  84. package/dist/components/dataDisplay/descriptionList/descriptionList.js +20 -24
  85. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  86. package/dist/components/dataDisplay/diffStat/diffStat.d.ts +55 -0
  87. package/dist/components/dataDisplay/diffStat/diffStat.js +70 -0
  88. package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  89. package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
  90. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
  91. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  92. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  93. package/dist/components/dataDisplay/kanban/kanban.js +71 -61
  94. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  95. package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
  96. package/dist/components/dataDisplay/kbd/kbd.d.ts +41 -0
  97. package/dist/components/dataDisplay/kbd/kbd.js +47 -0
  98. package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
  99. package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
  100. package/dist/components/dataDisplay/kbd/kbdKeys.js +70 -0
  101. package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  102. package/dist/components/dataDisplay/lazyImage/lazyImage.js +14 -12
  103. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  104. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  105. package/dist/components/dataDisplay/list/list.js +16 -12
  106. package/dist/components/dataDisplay/list/list.js.map +1 -1
  107. package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
  108. package/dist/components/dataDisplay/list/listItem.js +58 -19
  109. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  110. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  111. package/dist/components/dataDisplay/meter/meter.js +15 -13
  112. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  113. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  114. package/dist/components/dataDisplay/personChip/personChip.js +12 -10
  115. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  116. package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
  117. package/dist/components/dataDisplay/qrCode/qrCode.d.ts +30 -0
  118. package/dist/components/dataDisplay/qrCode/qrCode.js +88 -0
  119. package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  120. package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
  121. package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  122. package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  123. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  124. package/dist/components/dataDisplay/stat/stat.js +41 -43
  125. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  126. package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
  127. package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
  128. package/dist/components/dataDisplay/statusDot/statusDot.js +31 -0
  129. package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  130. package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
  131. package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +75 -0
  132. package/dist/components/dataDisplay/swimlanes/swimlanes.js +361 -0
  133. package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  134. package/dist/components/dataDisplay/table/table.d.ts +10 -1
  135. package/dist/components/dataDisplay/table/table.js +46 -22
  136. package/dist/components/dataDisplay/table/table.js.map +1 -1
  137. package/dist/components/dataDisplay/table/tableBody.js +25 -12
  138. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  139. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  140. package/dist/components/dataDisplay/table/tableCell.js +15 -14
  141. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  142. package/dist/components/dataDisplay/table/tableColumns.d.ts +146 -0
  143. package/dist/components/dataDisplay/table/tableColumns.js +254 -0
  144. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  145. package/dist/components/dataDisplay/table/tableEntities.d.ts +4 -0
  146. package/dist/components/dataDisplay/table/tableEntities.js +6 -0
  147. package/dist/components/dataDisplay/table/tableEntities.js.map +1 -0
  148. package/dist/components/dataDisplay/table/tableHead.js +29 -11
  149. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  150. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +23 -1
  151. package/dist/components/dataDisplay/table/tableHeadCell.js +51 -26
  152. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  153. package/dist/components/dataDisplay/table/tableHtmlText.d.ts +8 -0
  154. package/dist/components/dataDisplay/table/tableHtmlText.js +121 -0
  155. package/dist/components/dataDisplay/table/tableHtmlText.js.map +1 -0
  156. package/dist/components/dataDisplay/table/tableRow.d.ts +2 -0
  157. package/dist/components/dataDisplay/table/tableRow.js +28 -13
  158. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  159. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  160. package/dist/components/dataDisplay/thumbCard/thumbCard.js +86 -58
  161. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  162. package/dist/components/dataDisplay/treeView/treeView.d.ts +22 -0
  163. package/dist/components/dataDisplay/treeView/treeView.js +164 -96
  164. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  165. package/dist/components/dataDisplay/typography/typography.js +22 -26
  166. package/dist/components/dataDisplay/typography/typography.js.map +1 -1
  167. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  168. package/dist/components/feedBack/emptyState/emptyState.js +20 -16
  169. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  170. package/dist/components/feedBack/message/message.d.ts +2 -0
  171. package/dist/components/feedBack/message/message.js +17 -13
  172. package/dist/components/feedBack/message/message.js.map +1 -1
  173. package/dist/components/feedBack/modal/modal.d.ts +9 -0
  174. package/dist/components/feedBack/modal/modal.js +71 -53
  175. package/dist/components/feedBack/modal/modal.js.map +1 -1
  176. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  177. package/dist/components/feedBack/skeleton/skeleton.js +43 -35
  178. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  179. package/dist/components/feedBack/snackbar/snackbar.js +24 -20
  180. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  181. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  182. package/dist/components/feedBack/tooltip/tooltip.js +65 -41
  183. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  184. package/dist/components/inputs/button/button.d.ts +14 -0
  185. package/dist/components/inputs/button/button.js +71 -36
  186. package/dist/components/inputs/button/button.js.map +1 -1
  187. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  188. package/dist/components/inputs/buttonGroups/buttonGroup.js +14 -10
  189. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  190. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  191. package/dist/components/inputs/checkbox/checkbox.js +59 -36
  192. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  193. package/dist/components/inputs/composer/composer.d.ts +148 -0
  194. package/dist/components/inputs/composer/composer.js +276 -0
  195. package/dist/components/inputs/composer/composer.js.map +1 -0
  196. package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
  197. package/dist/components/inputs/composer/composerFiles.js +18 -0
  198. package/dist/components/inputs/composer/composerFiles.js.map +1 -0
  199. package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
  200. package/dist/components/inputs/composer/composerKeys.js +7 -0
  201. package/dist/components/inputs/composer/composerKeys.js.map +1 -0
  202. package/dist/components/inputs/composer/index.d.ts +3 -0
  203. package/dist/components/inputs/datePicker/datePicker.js +108 -97
  204. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  205. package/dist/components/inputs/datePicker/datePickerActionLabel.js +19 -17
  206. package/dist/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
  207. package/dist/components/inputs/datePicker/datePickerDay.js +41 -25
  208. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  209. package/dist/components/inputs/datePicker/datePickerIconButton.js +24 -14
  210. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  211. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
  212. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  213. package/dist/components/inputs/floatingButton/floatingButton.js +26 -16
  214. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  215. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  216. package/dist/components/inputs/radioButton/radioButton.js +48 -34
  217. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  218. package/dist/components/inputs/rating/rating.d.ts +9 -0
  219. package/dist/components/inputs/rating/rating.js +74 -53
  220. package/dist/components/inputs/rating/rating.js.map +1 -1
  221. package/dist/components/inputs/selectField/dropdownMenu.d.ts +21 -1
  222. package/dist/components/inputs/selectField/dropdownMenu.js +268 -143
  223. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  224. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  225. package/dist/components/inputs/selectField/optionNavigation.js +37 -0
  226. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  227. package/dist/components/inputs/selectField/selectField.d.ts +32 -1
  228. package/dist/components/inputs/selectField/selectField.js +297 -126
  229. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  230. package/dist/components/inputs/slider/slider.d.ts +25 -3
  231. package/dist/components/inputs/slider/slider.js +320 -197
  232. package/dist/components/inputs/slider/slider.js.map +1 -1
  233. package/dist/components/inputs/textField/textField.d.ts +9 -1
  234. package/dist/components/inputs/textField/textField.js +104 -51
  235. package/dist/components/inputs/textField/textField.js.map +1 -1
  236. package/dist/components/inputs/textField/textFieldWrapper.d.ts +14 -0
  237. package/dist/components/inputs/textField/textFieldWrapper.js +52 -45
  238. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  239. package/dist/components/inputs/timePicker/timePicker.js +73 -62
  240. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  241. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  242. package/dist/components/inputs/toggle/toggle.js +43 -31
  243. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  244. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  245. package/dist/components/inputs/valueSlider/valueSlider.js +32 -27
  246. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  247. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  248. package/dist/components/layout/appLayout/appLayout.js +32 -30
  249. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  250. package/dist/components/layout/divider/divider.d.ts +2 -0
  251. package/dist/components/layout/divider/divider.js +22 -20
  252. package/dist/components/layout/divider/divider.js.map +1 -1
  253. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  254. package/dist/components/layout/floatingWindow/floatingWindow.js +171 -168
  255. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  256. package/dist/components/layout/grid/grid.d.ts +8 -0
  257. package/dist/components/layout/grid/grid.js +52 -44
  258. package/dist/components/layout/grid/grid.js.map +1 -1
  259. package/dist/components/layout/page/page.d.ts +2 -0
  260. package/dist/components/layout/page/page.js +14 -12
  261. package/dist/components/layout/page/page.js.map +1 -1
  262. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  263. package/dist/components/layout/pageHeader/pageHeader.js +23 -21
  264. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  265. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  266. package/dist/components/layout/sectionHeader/sectionHeader.js +38 -36
  267. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  268. package/dist/components/layout/sheet/sheet.d.ts +14 -0
  269. package/dist/components/layout/sheet/sheet.js +92 -76
  270. package/dist/components/layout/sheet/sheet.js.map +1 -1
  271. package/dist/components/layout/stack/stack.d.ts +2 -0
  272. package/dist/components/layout/stack/stack.js +26 -24
  273. package/dist/components/layout/stack/stack.js.map +1 -1
  274. package/dist/components/layout/tabGroups/index.d.ts +4 -0
  275. package/dist/components/layout/tabGroups/tabGroups.d.ts +102 -0
  276. package/dist/components/layout/tabGroups/tabGroups.js +895 -0
  277. package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
  278. package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
  279. package/dist/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  280. package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  281. package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
  282. package/dist/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  283. package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  284. package/dist/components/navigation/appBar/appBar.d.ts +24 -0
  285. package/dist/components/navigation/appBar/appBar.js +68 -28
  286. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  287. package/dist/components/navigation/bottomBar/bottomBar.js +125 -120
  288. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  289. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  290. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +18 -14
  291. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  292. package/dist/components/navigation/commandPalette/commandPalette.d.ts +126 -0
  293. package/dist/components/navigation/commandPalette/commandPalette.js +457 -0
  294. package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
  295. package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
  296. package/dist/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  297. package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  298. package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
  299. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  300. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  301. package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
  302. package/dist/components/navigation/commandPalette/index.d.ts +6 -0
  303. package/dist/components/navigation/menu/menu.d.ts +6 -0
  304. package/dist/components/navigation/menu/menu.js.map +1 -1
  305. package/dist/components/navigation/menu/menuComponent.js +12 -23
  306. package/dist/components/navigation/menu/menuComponent.js.map +1 -1
  307. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  308. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  309. package/dist/components/navigation/menu/menuFloating.js +54 -46
  310. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  311. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  312. package/dist/components/navigation/menu/menuItem.js +58 -33
  313. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  314. package/dist/components/navigation/menu/menuList.d.ts +4 -0
  315. package/dist/components/navigation/menu/menuList.js +34 -16
  316. package/dist/components/navigation/menu/menuList.js.map +1 -1
  317. package/dist/components/navigation/menu/menuSubmenu.d.ts +8 -1
  318. package/dist/components/navigation/menu/menuSubmenu.js +58 -38
  319. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  320. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  321. package/dist/components/navigation/pagination/pagination.js +28 -24
  322. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  323. package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
  324. package/dist/components/navigation/sidebar/sidebar.js +37 -33
  325. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  326. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  327. package/dist/components/navigation/stepper/stepper.js +46 -42
  328. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  329. package/dist/components/navigation/tabs/index.d.ts +3 -1
  330. package/dist/components/navigation/tabs/tab/tab.d.ts +89 -2
  331. package/dist/components/navigation/tabs/tab/tab.js +174 -43
  332. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  333. package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +20 -0
  334. package/dist/components/navigation/tabs/tabPanel/tabPanel.js +34 -0
  335. package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  336. package/dist/components/navigation/tabs/tabs.d.ts +79 -2
  337. package/dist/components/navigation/tabs/tabs.js +389 -147
  338. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  339. package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
  340. package/dist/components/navigation/tabs/tabs.utils.js +11 -0
  341. package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
  342. package/dist/components/navigation/tabs/tabsContext.d.ts +36 -4
  343. package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
  344. package/dist/connects/rt/table/table.d.ts +16 -1
  345. package/dist/headless/components/base/animateHeight/animateHeight.js +41 -42
  346. package/dist/headless/components/base/animateHeight/animateHeight.js.map +1 -1
  347. package/dist/headless/components/base/icon/icon.js +40 -40
  348. package/dist/headless/components/base/icon/icon.js.map +1 -1
  349. package/dist/headless/components/base/ripple/ripple.js +46 -34
  350. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  351. package/dist/headless/components/dataDisplay/avatar/avatar.js +37 -33
  352. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  353. package/dist/headless/components/dataDisplay/card/card.js +44 -31
  354. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  355. package/dist/headless/components/dataDisplay/carousel/carousel.js +102 -98
  356. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  357. package/dist/headless/components/dataDisplay/chat/chat.js +116 -57
  358. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  359. package/dist/headless/components/dataDisplay/chat/chatComposer.js +21 -19
  360. package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
  361. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +23 -13
  362. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  363. package/dist/headless/components/dataDisplay/chat/chatLayout.js +33 -29
  364. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  365. package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js +19 -17
  366. package/dist/headless/components/dataDisplay/chat/chatOverlayLayout.js.map +1 -1
  367. package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
  368. package/dist/headless/components/dataDisplay/chip/chip.js +104 -63
  369. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  370. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +44 -39
  371. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  372. package/dist/headless/components/dataDisplay/dagView/dagLayout.js +284 -0
  373. package/dist/headless/components/dataDisplay/dagView/dagLayout.js.map +1 -0
  374. package/dist/headless/components/dataDisplay/dagView/dagView.js +501 -0
  375. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -0
  376. package/dist/headless/components/dataDisplay/dagView/panZoom.js +161 -0
  377. package/dist/headless/components/dataDisplay/dagView/panZoom.js.map +1 -0
  378. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js +15 -19
  379. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  380. package/dist/headless/components/dataDisplay/diffStat/diffStat.js +68 -0
  381. package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  382. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +114 -81
  383. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  384. package/dist/headless/components/dataDisplay/kanban/kanban.js +71 -61
  385. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  386. package/dist/headless/components/dataDisplay/kbd/kbd.js +45 -0
  387. package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
  388. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +70 -0
  389. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  390. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +14 -12
  391. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  392. package/dist/headless/components/dataDisplay/list/list.js +16 -12
  393. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  394. package/dist/headless/components/dataDisplay/list/listItem.js +58 -19
  395. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  396. package/dist/headless/components/dataDisplay/meter/meter.js +14 -12
  397. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  398. package/dist/headless/components/dataDisplay/personChip/personChip.js +12 -10
  399. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  400. package/dist/headless/components/dataDisplay/qrCode/qrCode.js +86 -0
  401. package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  402. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  403. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  404. package/dist/headless/components/dataDisplay/stat/stat.js +43 -45
  405. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  406. package/dist/headless/components/dataDisplay/statusDot/statusDot.js +29 -0
  407. package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  408. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +359 -0
  409. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  410. package/dist/headless/components/dataDisplay/table/table.js +47 -23
  411. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  412. package/dist/headless/components/dataDisplay/table/tableBody.js +25 -12
  413. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  414. package/dist/headless/components/dataDisplay/table/tableCell.js +15 -14
  415. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  416. package/dist/headless/components/dataDisplay/table/tableColumns.js +254 -0
  417. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  418. package/dist/headless/components/dataDisplay/table/tableEntities.js +6 -0
  419. package/dist/headless/components/dataDisplay/table/tableEntities.js.map +1 -0
  420. package/dist/headless/components/dataDisplay/table/tableHead.js +29 -11
  421. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  422. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +51 -26
  423. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  424. package/dist/headless/components/dataDisplay/table/tableHtmlText.js +121 -0
  425. package/dist/headless/components/dataDisplay/table/tableHtmlText.js.map +1 -0
  426. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -13
  427. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  428. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +86 -58
  429. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  430. package/dist/headless/components/dataDisplay/treeView/treeView.js +164 -96
  431. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  432. package/dist/headless/components/dataDisplay/typography/typography.js +21 -25
  433. package/dist/headless/components/dataDisplay/typography/typography.js.map +1 -1
  434. package/dist/headless/components/feedBack/emptyState/emptyState.js +9 -5
  435. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  436. package/dist/headless/components/feedBack/message/message.js +17 -13
  437. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  438. package/dist/headless/components/feedBack/modal/modal.js +71 -53
  439. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  440. package/dist/headless/components/feedBack/skeleton/skeleton.js +43 -35
  441. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  442. package/dist/headless/components/feedBack/snackbar/snackbar.js +30 -26
  443. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  444. package/dist/headless/components/feedBack/tooltip/tooltip.js +63 -39
  445. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  446. package/dist/headless/components/inputs/button/button.js +71 -36
  447. package/dist/headless/components/inputs/button/button.js.map +1 -1
  448. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +22 -18
  449. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  450. package/dist/headless/components/inputs/checkbox/checkbox.js +59 -36
  451. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  452. package/dist/headless/components/inputs/composer/composer.js +274 -0
  453. package/dist/headless/components/inputs/composer/composer.js.map +1 -0
  454. package/dist/headless/components/inputs/composer/composerFiles.js +18 -0
  455. package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
  456. package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
  457. package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
  458. package/dist/headless/components/inputs/datePicker/datePicker.js +106 -95
  459. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  460. package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js +19 -17
  461. package/dist/headless/components/inputs/datePicker/datePickerActionLabel.js.map +1 -1
  462. package/dist/headless/components/inputs/datePicker/datePickerDay.js +41 -25
  463. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  464. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +24 -14
  465. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  466. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +90 -79
  467. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  468. package/dist/headless/components/inputs/floatingButton/floatingButton.js +25 -15
  469. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  470. package/dist/headless/components/inputs/radioButton/radioButton.js +48 -34
  471. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  472. package/dist/headless/components/inputs/rating/rating.js +74 -53
  473. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  474. package/dist/headless/components/inputs/selectField/dropdownMenu.js +268 -143
  475. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  476. package/dist/headless/components/inputs/selectField/optionNavigation.js +37 -0
  477. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  478. package/dist/headless/components/inputs/selectField/selectField.js +297 -126
  479. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  480. package/dist/headless/components/inputs/slider/slider.js +320 -197
  481. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  482. package/dist/headless/components/inputs/textField/textField.js +104 -51
  483. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  484. package/dist/headless/components/inputs/textField/textFieldWrapper.js +52 -45
  485. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  486. package/dist/headless/components/inputs/timePicker/timePicker.js +74 -63
  487. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  488. package/dist/headless/components/inputs/toggle/toggle.js +42 -30
  489. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  490. package/dist/headless/components/inputs/valueSlider/valueSlider.js +33 -28
  491. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  492. package/dist/headless/components/layout/appLayout/appLayout.js +29 -27
  493. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  494. package/dist/headless/components/layout/divider/divider.js +19 -17
  495. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  496. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +185 -182
  497. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  498. package/dist/headless/components/layout/grid/grid.js +54 -46
  499. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  500. package/dist/headless/components/layout/page/page.js +12 -10
  501. package/dist/headless/components/layout/page/page.js.map +1 -1
  502. package/dist/headless/components/layout/pageHeader/pageHeader.js +22 -20
  503. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  504. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +39 -37
  505. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  506. package/dist/headless/components/layout/sheet/sheet.js +101 -85
  507. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  508. package/dist/headless/components/layout/stack/stack.js +23 -21
  509. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  510. package/dist/headless/components/layout/tabGroups/tabGroups.js +893 -0
  511. package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
  512. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  513. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  514. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  515. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  516. package/dist/headless/components/navigation/appBar/appBar.js +68 -28
  517. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  518. package/dist/headless/components/navigation/bottomBar/bottomBar.js +125 -120
  519. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  520. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +13 -9
  521. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  522. package/dist/headless/components/navigation/commandPalette/commandPalette.js +455 -0
  523. package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
  524. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  525. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  526. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  527. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  528. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  529. package/dist/headless/components/navigation/menu/menuComponent.js +12 -23
  530. package/dist/headless/components/navigation/menu/menuComponent.js.map +1 -1
  531. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  532. package/dist/headless/components/navigation/menu/menuFloating.js +54 -46
  533. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  534. package/dist/headless/components/navigation/menu/menuItem.js +58 -33
  535. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  536. package/dist/headless/components/navigation/menu/menuList.js +34 -16
  537. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  538. package/dist/headless/components/navigation/menu/menuSubmenu.js +58 -38
  539. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  540. package/dist/headless/components/navigation/pagination/pagination.js +23 -19
  541. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  542. package/dist/headless/components/navigation/sidebar/sidebar.js +39 -35
  543. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  544. package/dist/headless/components/navigation/stepper/stepper.js +38 -34
  545. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  546. package/dist/headless/components/navigation/tabs/tab/tab.js +175 -44
  547. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  548. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +32 -0
  549. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  550. package/dist/headless/components/navigation/tabs/tabs.js +389 -147
  551. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  552. package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
  553. package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
  554. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
  555. package/dist/headless/index.js +405 -363
  556. package/dist/headless/index.js.map +1 -1
  557. package/dist/headless/primitives/createDismissOnEscape.js +14 -0
  558. package/dist/headless/primitives/createDismissOnEscape.js.map +1 -0
  559. package/dist/headless/primitives/createFocusTrap.js +17 -16
  560. package/dist/headless/primitives/createFocusTrap.js.map +1 -1
  561. package/dist/headless/primitives/createHelperText.js +14 -0
  562. package/dist/headless/primitives/createHelperText.js.map +1 -0
  563. package/dist/headless/primitives/createKeyboardShortcut.js +16 -0
  564. package/dist/headless/primitives/createKeyboardShortcut.js.map +1 -0
  565. package/dist/headless/primitives/mergeStyle.js +9 -0
  566. package/dist/headless/primitives/mergeStyle.js.map +1 -0
  567. package/dist/headless/primitives/overlayLayer.js +14 -7
  568. package/dist/headless/primitives/overlayLayer.js.map +1 -1
  569. package/dist/headless/primitives/restoreFocus.js +10 -0
  570. package/dist/headless/primitives/restoreFocus.js.map +1 -0
  571. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx +7 -11
  572. package/dist/headless/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
  573. package/dist/headless/source/components/base/icon/icon.jsx +10 -12
  574. package/dist/headless/source/components/base/icon/icon.jsx.map +1 -1
  575. package/dist/headless/source/components/base/ripple/ripple.jsx +16 -4
  576. package/dist/headless/source/components/base/ripple/ripple.jsx.map +1 -1
  577. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx +14 -7
  578. package/dist/headless/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  579. package/dist/headless/source/components/dataDisplay/card/card.jsx +31 -12
  580. package/dist/headless/source/components/dataDisplay/card/card.jsx.map +1 -1
  581. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx +9 -3
  582. package/dist/headless/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  583. package/dist/headless/source/components/dataDisplay/chart/chart.jsx +5 -4
  584. package/dist/headless/source/components/dataDisplay/chart/chart.jsx.map +1 -1
  585. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +38 -4
  586. package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  587. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  588. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  589. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
  590. package/dist/headless/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
  591. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
  592. package/dist/headless/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
  593. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
  594. package/dist/headless/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
  595. package/dist/headless/source/components/dataDisplay/chat/index.js.map +1 -1
  596. package/dist/headless/source/components/dataDisplay/chat/utils.js.map +2 -2
  597. package/dist/headless/source/components/dataDisplay/chip/chip.jsx +55 -19
  598. package/dist/headless/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  599. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
  600. package/dist/headless/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
  601. package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js +383 -0
  602. package/dist/headless/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
  603. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +648 -0
  604. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
  605. package/dist/headless/source/components/dataDisplay/dagView/index.js +10 -0
  606. package/dist/headless/source/components/dataDisplay/dagView/index.js.map +7 -0
  607. package/dist/headless/source/components/dataDisplay/dagView/panZoom.js +247 -0
  608. package/dist/headless/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
  609. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
  610. package/dist/headless/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
  611. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx +76 -0
  612. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  613. package/dist/headless/source/components/dataDisplay/diffStat/index.js +19 -0
  614. package/dist/headless/source/components/dataDisplay/diffStat/index.js.map +7 -0
  615. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
  616. package/dist/headless/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  617. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx +20 -10
  618. package/dist/headless/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
  619. package/dist/headless/source/components/dataDisplay/kbd/index.js +9 -0
  620. package/dist/headless/source/components/dataDisplay/kbd/index.js.map +7 -0
  621. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx +48 -0
  622. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  623. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  624. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  625. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
  626. package/dist/headless/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  627. package/dist/headless/source/components/dataDisplay/list/list.jsx +3 -3
  628. package/dist/headless/source/components/dataDisplay/list/list.jsx.map +1 -1
  629. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +47 -16
  630. package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  631. package/dist/headless/source/components/dataDisplay/meter/meter.jsx +3 -2
  632. package/dist/headless/source/components/dataDisplay/meter/meter.jsx.map +1 -1
  633. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx +3 -2
  634. package/dist/headless/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
  635. package/dist/headless/source/components/dataDisplay/qrCode/index.js +6 -0
  636. package/dist/headless/source/components/dataDisplay/qrCode/index.js.map +7 -0
  637. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx +94 -0
  638. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  639. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  640. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  641. package/dist/headless/source/components/dataDisplay/stat/stat.jsx +7 -8
  642. package/dist/headless/source/components/dataDisplay/stat/stat.jsx.map +1 -1
  643. package/dist/headless/source/components/dataDisplay/statusDot/index.js +6 -0
  644. package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +7 -0
  645. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +28 -0
  646. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  647. package/dist/headless/source/components/dataDisplay/swimlanes/index.js +15 -0
  648. package/dist/headless/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  649. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx +450 -0
  650. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  651. package/dist/headless/source/components/dataDisplay/table/table.jsx +18 -1
  652. package/dist/headless/source/components/dataDisplay/table/table.jsx.map +1 -1
  653. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx +6 -1
  654. package/dist/headless/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
  655. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx +13 -4
  656. package/dist/headless/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  657. package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx +311 -0
  658. package/dist/headless/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
  659. package/dist/headless/source/components/dataDisplay/table/tableEntities.js +7 -0
  660. package/dist/headless/source/components/dataDisplay/table/tableEntities.js.map +7 -0
  661. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx +14 -1
  662. package/dist/headless/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
  663. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
  664. package/dist/headless/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  665. package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js +140 -0
  666. package/dist/headless/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
  667. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx +11 -5
  668. package/dist/headless/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
  669. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
  670. package/dist/headless/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  671. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +127 -39
  672. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  673. package/dist/headless/source/components/dataDisplay/typography/typography.jsx +2 -6
  674. package/dist/headless/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  675. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx +12 -2
  676. package/dist/headless/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
  677. package/dist/headless/source/components/feedBack/message/message.jsx +5 -4
  678. package/dist/headless/source/components/feedBack/message/message.jsx.map +1 -1
  679. package/dist/headless/source/components/feedBack/modal/modal.jsx +39 -6
  680. package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
  681. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx +12 -5
  682. package/dist/headless/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  683. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx +3 -3
  684. package/dist/headless/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  685. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx +52 -5
  686. package/dist/headless/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  687. package/dist/headless/source/components/inputs/button/button.jsx +14 -5
  688. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  689. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
  690. package/dist/headless/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  691. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx +27 -4
  692. package/dist/headless/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  693. package/dist/headless/source/components/inputs/composer/composer.jsx +319 -0
  694. package/dist/headless/source/components/inputs/composer/composer.jsx.map +1 -0
  695. package/dist/headless/source/components/inputs/composer/composerFiles.js +27 -0
  696. package/dist/headless/source/components/inputs/composer/composerFiles.js.map +7 -0
  697. package/dist/headless/source/components/inputs/composer/composerKeys.js +11 -0
  698. package/dist/headless/source/components/inputs/composer/composerKeys.js.map +7 -0
  699. package/dist/headless/source/components/inputs/composer/index.js +5 -0
  700. package/dist/headless/source/components/inputs/composer/index.js.map +7 -0
  701. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx +13 -0
  702. package/dist/headless/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  703. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
  704. package/dist/headless/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
  705. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
  706. package/dist/headless/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
  707. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
  708. package/dist/headless/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
  709. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
  710. package/dist/headless/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  711. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
  712. package/dist/headless/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  713. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx +16 -4
  714. package/dist/headless/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  715. package/dist/headless/source/components/inputs/rating/rating.jsx +49 -20
  716. package/dist/headless/source/components/inputs/rating/rating.jsx.map +1 -1
  717. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
  718. package/dist/headless/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  719. package/dist/headless/source/components/inputs/selectField/optionNavigation.js +51 -0
  720. package/dist/headless/source/components/inputs/selectField/optionNavigation.js.map +7 -0
  721. package/dist/headless/source/components/inputs/selectField/selectField.jsx +318 -92
  722. package/dist/headless/source/components/inputs/selectField/selectField.jsx.map +1 -1
  723. package/dist/headless/source/components/inputs/slider/slider.jsx +89 -18
  724. package/dist/headless/source/components/inputs/slider/slider.jsx.map +1 -1
  725. package/dist/headless/source/components/inputs/textField/textField.jsx +47 -9
  726. package/dist/headless/source/components/inputs/textField/textField.jsx.map +1 -1
  727. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
  728. package/dist/headless/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  729. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx +13 -0
  730. package/dist/headless/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  731. package/dist/headless/source/components/inputs/toggle/toggle.jsx +14 -2
  732. package/dist/headless/source/components/inputs/toggle/toggle.jsx.map +1 -1
  733. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
  734. package/dist/headless/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  735. package/dist/headless/source/components/layout/appLayout/appLayout.jsx +8 -6
  736. package/dist/headless/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  737. package/dist/headless/source/components/layout/divider/divider.jsx +6 -5
  738. package/dist/headless/source/components/layout/divider/divider.jsx.map +1 -1
  739. package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
  740. package/dist/headless/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
  741. package/dist/headless/source/components/layout/grid/grid.jsx +20 -8
  742. package/dist/headless/source/components/layout/grid/grid.jsx.map +1 -1
  743. package/dist/headless/source/components/layout/page/page.jsx +10 -2
  744. package/dist/headless/source/components/layout/page/page.jsx.map +1 -1
  745. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx +3 -2
  746. package/dist/headless/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  747. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
  748. package/dist/headless/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
  749. package/dist/headless/source/components/layout/sheet/sheet.jsx +39 -19
  750. package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
  751. package/dist/headless/source/components/layout/stack/stack.jsx +15 -11
  752. package/dist/headless/source/components/layout/stack/stack.jsx.map +1 -1
  753. package/dist/headless/source/components/layout/tabGroups/index.js +8 -0
  754. package/dist/headless/source/components/layout/tabGroups/index.js.map +7 -0
  755. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +1117 -0
  756. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  757. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  758. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  759. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  760. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  761. package/dist/headless/source/components/navigation/appBar/appBar.jsx +30 -5
  762. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  763. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
  764. package/dist/headless/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  765. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
  766. package/dist/headless/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  767. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx +506 -0
  768. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  769. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  770. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  771. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  772. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  773. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  774. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  775. package/dist/headless/source/components/navigation/commandPalette/index.js +11 -0
  776. package/dist/headless/source/components/navigation/commandPalette/index.js.map +7 -0
  777. package/dist/headless/source/components/navigation/menu/menu.jsx.map +1 -1
  778. package/dist/headless/source/components/navigation/menu/menuComponent.jsx +3 -4
  779. package/dist/headless/source/components/navigation/menu/menuComponent.jsx.map +1 -1
  780. package/dist/headless/source/components/navigation/menu/menuContext.js.map +2 -2
  781. package/dist/headless/source/components/navigation/menu/menuFloating.jsx +26 -4
  782. package/dist/headless/source/components/navigation/menu/menuFloating.jsx.map +1 -1
  783. package/dist/headless/source/components/navigation/menu/menuItem.jsx +22 -2
  784. package/dist/headless/source/components/navigation/menu/menuItem.jsx.map +1 -1
  785. package/dist/headless/source/components/navigation/menu/menuList.jsx +19 -7
  786. package/dist/headless/source/components/navigation/menu/menuList.jsx.map +1 -1
  787. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx +36 -4
  788. package/dist/headless/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
  789. package/dist/headless/source/components/navigation/pagination/pagination.jsx +4 -3
  790. package/dist/headless/source/components/navigation/pagination/pagination.jsx.map +1 -1
  791. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +6 -3
  792. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  793. package/dist/headless/source/components/navigation/stepper/stepper.jsx +14 -9
  794. package/dist/headless/source/components/navigation/stepper/stepper.jsx.map +1 -1
  795. package/dist/headless/source/components/navigation/tabs/index.js +2 -0
  796. package/dist/headless/source/components/navigation/tabs/index.js.map +2 -2
  797. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +144 -21
  798. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  799. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx +28 -0
  800. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  801. package/dist/headless/source/components/navigation/tabs/tabs.jsx +392 -20
  802. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  803. package/dist/headless/source/components/navigation/tabs/tabs.utils.js +18 -0
  804. package/dist/headless/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  805. package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
  806. package/dist/headless/source/connects/rt/table/table.jsx +7 -2
  807. package/dist/headless/source/connects/rt/table/table.jsx.map +1 -1
  808. package/dist/headless/source/index.js +44 -1
  809. package/dist/headless/source/index.js.map +2 -2
  810. package/dist/headless/source/primitives/createDismissOnEscape.js +17 -0
  811. package/dist/headless/source/primitives/createDismissOnEscape.js.map +7 -0
  812. package/dist/headless/source/primitives/createFocusTrap.js +9 -3
  813. package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
  814. package/dist/headless/source/primitives/createHelperText.js +16 -0
  815. package/dist/headless/source/primitives/createHelperText.js.map +7 -0
  816. package/dist/headless/source/primitives/createKeyboardShortcut.js +23 -0
  817. package/dist/headless/source/primitives/createKeyboardShortcut.js.map +7 -0
  818. package/dist/headless/source/primitives/mergeStyle.js +15 -0
  819. package/dist/headless/source/primitives/mergeStyle.js.map +7 -0
  820. package/dist/headless/source/primitives/overlayLayer.js +10 -2
  821. package/dist/headless/source/primitives/overlayLayer.js.map +2 -2
  822. package/dist/headless/source/primitives/restoreFocus.js +14 -0
  823. package/dist/headless/source/primitives/restoreFocus.js.map +7 -0
  824. package/dist/headless/source/utils/controlProps.js +22 -0
  825. package/dist/headless/source/utils/controlProps.js.map +7 -0
  826. package/dist/headless/source/utils/keyboardShortcut.js +74 -0
  827. package/dist/headless/source/utils/keyboardShortcut.js.map +7 -0
  828. package/dist/headless/source/utils/linkAttrs.js +16 -0
  829. package/dist/headless/source/utils/linkAttrs.js.map +7 -0
  830. package/dist/headless/source/utils/ownClick.js +41 -0
  831. package/dist/headless/source/utils/ownClick.js.map +7 -0
  832. package/dist/headless/utils/controlProps.js +20 -0
  833. package/dist/headless/utils/controlProps.js.map +1 -0
  834. package/dist/headless/utils/keyboardShortcut.js +48 -0
  835. package/dist/headless/utils/keyboardShortcut.js.map +1 -0
  836. package/dist/headless/utils/linkAttrs.js +13 -0
  837. package/dist/headless/utils/linkAttrs.js.map +1 -0
  838. package/dist/headless/utils/ownClick.js +39 -0
  839. package/dist/headless/utils/ownClick.js.map +1 -0
  840. package/dist/index.d.ts +26 -3
  841. package/dist/index.js +405 -363
  842. package/dist/index.js.map +1 -1
  843. package/dist/primitives/createDismissOnEscape.d.ts +12 -0
  844. package/dist/primitives/createDismissOnEscape.js +14 -0
  845. package/dist/primitives/createDismissOnEscape.js.map +1 -0
  846. package/dist/primitives/createFocusTrap.d.ts +7 -0
  847. package/dist/primitives/createFocusTrap.js +17 -16
  848. package/dist/primitives/createFocusTrap.js.map +1 -1
  849. package/dist/primitives/createHelperText.d.ts +26 -0
  850. package/dist/primitives/createHelperText.js +14 -0
  851. package/dist/primitives/createHelperText.js.map +1 -0
  852. package/dist/primitives/createKeyboardShortcut.d.ts +23 -0
  853. package/dist/primitives/createKeyboardShortcut.js +16 -0
  854. package/dist/primitives/createKeyboardShortcut.js.map +1 -0
  855. package/dist/primitives/mergeStyle.d.ts +19 -0
  856. package/dist/primitives/mergeStyle.js +9 -0
  857. package/dist/primitives/mergeStyle.js.map +1 -0
  858. package/dist/primitives/overlayLayer.d.ts +15 -3
  859. package/dist/primitives/overlayLayer.js +14 -7
  860. package/dist/primitives/overlayLayer.js.map +1 -1
  861. package/dist/primitives/restoreFocus.d.ts +8 -0
  862. package/dist/primitives/restoreFocus.js +10 -0
  863. package/dist/primitives/restoreFocus.js.map +1 -0
  864. package/dist/source/components/base/animateHeight/animateHeight.jsx +7 -11
  865. package/dist/source/components/base/animateHeight/animateHeight.jsx.map +1 -1
  866. package/dist/source/components/base/icon/icon.jsx +10 -12
  867. package/dist/source/components/base/icon/icon.jsx.map +1 -1
  868. package/dist/source/components/base/ripple/ripple.jsx +16 -4
  869. package/dist/source/components/base/ripple/ripple.jsx.map +1 -1
  870. package/dist/source/components/dataDisplay/avatar/avatar.jsx +14 -7
  871. package/dist/source/components/dataDisplay/avatar/avatar.jsx.map +1 -1
  872. package/dist/source/components/dataDisplay/card/card.jsx +31 -12
  873. package/dist/source/components/dataDisplay/card/card.jsx.map +1 -1
  874. package/dist/source/components/dataDisplay/carousel/carousel.jsx +9 -3
  875. package/dist/source/components/dataDisplay/carousel/carousel.jsx.map +1 -1
  876. package/dist/source/components/dataDisplay/chart/chart.jsx +5 -4
  877. package/dist/source/components/dataDisplay/chart/chart.jsx.map +1 -1
  878. package/dist/source/components/dataDisplay/chat/chat.jsx +38 -4
  879. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  880. package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  881. package/dist/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  882. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx +13 -3
  883. package/dist/source/components/dataDisplay/chat/chatIconButton.jsx.map +1 -1
  884. package/dist/source/components/dataDisplay/chat/chatLayout.jsx +6 -7
  885. package/dist/source/components/dataDisplay/chat/chatLayout.jsx.map +1 -1
  886. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx +5 -6
  887. package/dist/source/components/dataDisplay/chat/chatOverlayLayout.jsx.map +1 -1
  888. package/dist/source/components/dataDisplay/chat/index.js.map +1 -1
  889. package/dist/source/components/dataDisplay/chat/utils.js.map +2 -2
  890. package/dist/source/components/dataDisplay/chip/chip.jsx +55 -19
  891. package/dist/source/components/dataDisplay/chip/chip.jsx.map +1 -1
  892. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx +14 -11
  893. package/dist/source/components/dataDisplay/chipGroup/chipGroup.jsx.map +1 -1
  894. package/dist/source/components/dataDisplay/dagView/dagLayout.js +383 -0
  895. package/dist/source/components/dataDisplay/dagView/dagLayout.js.map +7 -0
  896. package/dist/source/components/dataDisplay/dagView/dagView.jsx +650 -0
  897. package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -0
  898. package/dist/source/components/dataDisplay/dagView/index.js +10 -0
  899. package/dist/source/components/dataDisplay/dagView/index.js.map +7 -0
  900. package/dist/source/components/dataDisplay/dagView/panZoom.js +247 -0
  901. package/dist/source/components/dataDisplay/dagView/panZoom.js.map +7 -0
  902. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx +4 -6
  903. package/dist/source/components/dataDisplay/descriptionList/descriptionList.jsx.map +1 -1
  904. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx +78 -0
  905. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  906. package/dist/source/components/dataDisplay/diffStat/index.js +19 -0
  907. package/dist/source/components/dataDisplay/diffStat/index.js.map +7 -0
  908. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx +83 -9
  909. package/dist/source/components/dataDisplay/expansionPanel/expansionPanel.jsx.map +1 -1
  910. package/dist/source/components/dataDisplay/kanban/kanban.jsx +20 -10
  911. package/dist/source/components/dataDisplay/kanban/kanban.jsx.map +1 -1
  912. package/dist/source/components/dataDisplay/kbd/index.js +9 -0
  913. package/dist/source/components/dataDisplay/kbd/index.js.map +7 -0
  914. package/dist/source/components/dataDisplay/kbd/kbd.jsx +50 -0
  915. package/dist/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  916. package/dist/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  917. package/dist/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  918. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx +1 -1
  919. package/dist/source/components/dataDisplay/lazyImage/lazyImage.jsx.map +1 -1
  920. package/dist/source/components/dataDisplay/list/list.jsx +3 -3
  921. package/dist/source/components/dataDisplay/list/list.jsx.map +1 -1
  922. package/dist/source/components/dataDisplay/list/listItem.jsx +47 -16
  923. package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  924. package/dist/source/components/dataDisplay/meter/meter.jsx +3 -2
  925. package/dist/source/components/dataDisplay/meter/meter.jsx.map +1 -1
  926. package/dist/source/components/dataDisplay/personChip/personChip.jsx +3 -2
  927. package/dist/source/components/dataDisplay/personChip/personChip.jsx.map +1 -1
  928. package/dist/source/components/dataDisplay/qrCode/index.js +6 -0
  929. package/dist/source/components/dataDisplay/qrCode/index.js.map +7 -0
  930. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx +96 -0
  931. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  932. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  933. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  934. package/dist/source/components/dataDisplay/stat/stat.jsx +7 -8
  935. package/dist/source/components/dataDisplay/stat/stat.jsx.map +1 -1
  936. package/dist/source/components/dataDisplay/statusDot/index.js +6 -0
  937. package/dist/source/components/dataDisplay/statusDot/index.js.map +7 -0
  938. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +30 -0
  939. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  940. package/dist/source/components/dataDisplay/swimlanes/index.js +15 -0
  941. package/dist/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  942. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx +452 -0
  943. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  944. package/dist/source/components/dataDisplay/table/table.jsx +18 -1
  945. package/dist/source/components/dataDisplay/table/table.jsx.map +1 -1
  946. package/dist/source/components/dataDisplay/table/tableBody.jsx +6 -1
  947. package/dist/source/components/dataDisplay/table/tableBody.jsx.map +1 -1
  948. package/dist/source/components/dataDisplay/table/tableCell.jsx +13 -4
  949. package/dist/source/components/dataDisplay/table/tableCell.jsx.map +1 -1
  950. package/dist/source/components/dataDisplay/table/tableColumns.jsx +311 -0
  951. package/dist/source/components/dataDisplay/table/tableColumns.jsx.map +1 -0
  952. package/dist/source/components/dataDisplay/table/tableEntities.js +7 -0
  953. package/dist/source/components/dataDisplay/table/tableEntities.js.map +7 -0
  954. package/dist/source/components/dataDisplay/table/tableHead.jsx +14 -1
  955. package/dist/source/components/dataDisplay/table/tableHead.jsx.map +1 -1
  956. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx +51 -33
  957. package/dist/source/components/dataDisplay/table/tableHeadCell.jsx.map +1 -1
  958. package/dist/source/components/dataDisplay/table/tableHtmlText.js +140 -0
  959. package/dist/source/components/dataDisplay/table/tableHtmlText.js.map +7 -0
  960. package/dist/source/components/dataDisplay/table/tableRow.jsx +11 -5
  961. package/dist/source/components/dataDisplay/table/tableRow.jsx.map +1 -1
  962. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx +48 -19
  963. package/dist/source/components/dataDisplay/thumbCard/thumbCard.jsx.map +1 -1
  964. package/dist/source/components/dataDisplay/treeView/treeView.jsx +127 -39
  965. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  966. package/dist/source/components/dataDisplay/typography/typography.jsx +2 -6
  967. package/dist/source/components/dataDisplay/typography/typography.jsx.map +1 -1
  968. package/dist/source/components/feedBack/emptyState/emptyState.jsx +12 -2
  969. package/dist/source/components/feedBack/emptyState/emptyState.jsx.map +1 -1
  970. package/dist/source/components/feedBack/message/message.jsx +5 -4
  971. package/dist/source/components/feedBack/message/message.jsx.map +1 -1
  972. package/dist/source/components/feedBack/modal/modal.jsx +39 -6
  973. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  974. package/dist/source/components/feedBack/skeleton/skeleton.jsx +12 -5
  975. package/dist/source/components/feedBack/skeleton/skeleton.jsx.map +1 -1
  976. package/dist/source/components/feedBack/snackbar/snackbar.jsx +3 -3
  977. package/dist/source/components/feedBack/snackbar/snackbar.jsx.map +1 -1
  978. package/dist/source/components/feedBack/tooltip/tooltip.jsx +52 -5
  979. package/dist/source/components/feedBack/tooltip/tooltip.jsx.map +1 -1
  980. package/dist/source/components/inputs/button/button.jsx +14 -5
  981. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  982. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx +4 -3
  983. package/dist/source/components/inputs/buttonGroups/buttonGroup.jsx.map +1 -1
  984. package/dist/source/components/inputs/checkbox/checkbox.jsx +27 -4
  985. package/dist/source/components/inputs/checkbox/checkbox.jsx.map +1 -1
  986. package/dist/source/components/inputs/composer/composer.jsx +321 -0
  987. package/dist/source/components/inputs/composer/composer.jsx.map +1 -0
  988. package/dist/source/components/inputs/composer/composerFiles.js +27 -0
  989. package/dist/source/components/inputs/composer/composerFiles.js.map +7 -0
  990. package/dist/source/components/inputs/composer/composerKeys.js +11 -0
  991. package/dist/source/components/inputs/composer/composerKeys.js.map +7 -0
  992. package/dist/source/components/inputs/composer/index.js +5 -0
  993. package/dist/source/components/inputs/composer/index.js.map +7 -0
  994. package/dist/source/components/inputs/datePicker/datePicker.jsx +13 -0
  995. package/dist/source/components/inputs/datePicker/datePicker.jsx.map +1 -1
  996. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx +4 -1
  997. package/dist/source/components/inputs/datePicker/datePickerActionLabel.jsx.map +1 -1
  998. package/dist/source/components/inputs/datePicker/datePickerDay.jsx +12 -12
  999. package/dist/source/components/inputs/datePicker/datePickerDay.jsx.map +1 -1
  1000. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx +13 -3
  1001. package/dist/source/components/inputs/datePicker/datePickerIconButton.jsx.map +1 -1
  1002. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx +13 -0
  1003. package/dist/source/components/inputs/dateTimePicker/dateTimePicker.jsx.map +1 -1
  1004. package/dist/source/components/inputs/floatingButton/floatingButton.jsx +12 -1
  1005. package/dist/source/components/inputs/floatingButton/floatingButton.jsx.map +1 -1
  1006. package/dist/source/components/inputs/radioButton/radioButton.jsx +16 -4
  1007. package/dist/source/components/inputs/radioButton/radioButton.jsx.map +1 -1
  1008. package/dist/source/components/inputs/rating/rating.jsx +49 -20
  1009. package/dist/source/components/inputs/rating/rating.jsx.map +1 -1
  1010. package/dist/source/components/inputs/selectField/dropdownMenu.jsx +222 -61
  1011. package/dist/source/components/inputs/selectField/dropdownMenu.jsx.map +1 -1
  1012. package/dist/source/components/inputs/selectField/optionNavigation.js +51 -0
  1013. package/dist/source/components/inputs/selectField/optionNavigation.js.map +7 -0
  1014. package/dist/source/components/inputs/selectField/selectField.jsx +318 -92
  1015. package/dist/source/components/inputs/selectField/selectField.jsx.map +1 -1
  1016. package/dist/source/components/inputs/slider/slider.jsx +89 -18
  1017. package/dist/source/components/inputs/slider/slider.jsx.map +1 -1
  1018. package/dist/source/components/inputs/textField/textField.jsx +47 -9
  1019. package/dist/source/components/inputs/textField/textField.jsx.map +1 -1
  1020. package/dist/source/components/inputs/textField/textFieldWrapper.jsx +20 -6
  1021. package/dist/source/components/inputs/textField/textFieldWrapper.jsx.map +1 -1
  1022. package/dist/source/components/inputs/timePicker/timePicker.jsx +13 -0
  1023. package/dist/source/components/inputs/timePicker/timePicker.jsx.map +1 -1
  1024. package/dist/source/components/inputs/toggle/toggle.jsx +14 -2
  1025. package/dist/source/components/inputs/toggle/toggle.jsx.map +1 -1
  1026. package/dist/source/components/inputs/valueSlider/valueSlider.jsx +7 -2
  1027. package/dist/source/components/inputs/valueSlider/valueSlider.jsx.map +1 -1
  1028. package/dist/source/components/layout/appLayout/appLayout.jsx +8 -6
  1029. package/dist/source/components/layout/appLayout/appLayout.jsx.map +1 -1
  1030. package/dist/source/components/layout/divider/divider.jsx +6 -5
  1031. package/dist/source/components/layout/divider/divider.jsx.map +1 -1
  1032. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx +17 -11
  1033. package/dist/source/components/layout/floatingWindow/floatingWindow.jsx.map +1 -1
  1034. package/dist/source/components/layout/grid/grid.jsx +20 -8
  1035. package/dist/source/components/layout/grid/grid.jsx.map +1 -1
  1036. package/dist/source/components/layout/page/page.jsx +10 -2
  1037. package/dist/source/components/layout/page/page.jsx.map +1 -1
  1038. package/dist/source/components/layout/pageHeader/pageHeader.jsx +3 -2
  1039. package/dist/source/components/layout/pageHeader/pageHeader.jsx.map +1 -1
  1040. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx +5 -5
  1041. package/dist/source/components/layout/sectionHeader/sectionHeader.jsx.map +1 -1
  1042. package/dist/source/components/layout/sheet/sheet.jsx +39 -19
  1043. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  1044. package/dist/source/components/layout/stack/stack.jsx +15 -11
  1045. package/dist/source/components/layout/stack/stack.jsx.map +1 -1
  1046. package/dist/source/components/layout/tabGroups/index.js +8 -0
  1047. package/dist/source/components/layout/tabGroups/index.js.map +7 -0
  1048. package/dist/source/components/layout/tabGroups/tabGroups.jsx +1119 -0
  1049. package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  1050. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  1051. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  1052. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  1053. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  1054. package/dist/source/components/navigation/appBar/appBar.jsx +30 -5
  1055. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  1056. package/dist/source/components/navigation/bottomBar/bottomBar.jsx +48 -40
  1057. package/dist/source/components/navigation/bottomBar/bottomBar.jsx.map +1 -1
  1058. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx +9 -2
  1059. package/dist/source/components/navigation/breadcrumbs/breadcrumbs.jsx.map +1 -1
  1060. package/dist/source/components/navigation/commandPalette/commandPalette.jsx +508 -0
  1061. package/dist/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  1062. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  1063. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  1064. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  1065. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  1066. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  1067. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  1068. package/dist/source/components/navigation/commandPalette/index.js +11 -0
  1069. package/dist/source/components/navigation/commandPalette/index.js.map +7 -0
  1070. package/dist/source/components/navigation/menu/menu.jsx.map +1 -1
  1071. package/dist/source/components/navigation/menu/menuComponent.jsx +3 -4
  1072. package/dist/source/components/navigation/menu/menuComponent.jsx.map +1 -1
  1073. package/dist/source/components/navigation/menu/menuContext.js.map +2 -2
  1074. package/dist/source/components/navigation/menu/menuFloating.jsx +26 -4
  1075. package/dist/source/components/navigation/menu/menuFloating.jsx.map +1 -1
  1076. package/dist/source/components/navigation/menu/menuItem.jsx +22 -2
  1077. package/dist/source/components/navigation/menu/menuItem.jsx.map +1 -1
  1078. package/dist/source/components/navigation/menu/menuList.jsx +19 -7
  1079. package/dist/source/components/navigation/menu/menuList.jsx.map +1 -1
  1080. package/dist/source/components/navigation/menu/menuSubmenu.jsx +36 -4
  1081. package/dist/source/components/navigation/menu/menuSubmenu.jsx.map +1 -1
  1082. package/dist/source/components/navigation/pagination/pagination.jsx +4 -3
  1083. package/dist/source/components/navigation/pagination/pagination.jsx.map +1 -1
  1084. package/dist/source/components/navigation/sidebar/sidebar.jsx +6 -3
  1085. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  1086. package/dist/source/components/navigation/stepper/stepper.jsx +14 -9
  1087. package/dist/source/components/navigation/stepper/stepper.jsx.map +1 -1
  1088. package/dist/source/components/navigation/tabs/index.js +2 -0
  1089. package/dist/source/components/navigation/tabs/index.js.map +2 -2
  1090. package/dist/source/components/navigation/tabs/tab/tab.jsx +144 -21
  1091. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  1092. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx +30 -0
  1093. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  1094. package/dist/source/components/navigation/tabs/tabs.jsx +392 -20
  1095. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  1096. package/dist/source/components/navigation/tabs/tabs.utils.js +18 -0
  1097. package/dist/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  1098. package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
  1099. package/dist/source/connects/rt/table/table.jsx +7 -2
  1100. package/dist/source/connects/rt/table/table.jsx.map +1 -1
  1101. package/dist/source/index.js +44 -1
  1102. package/dist/source/index.js.map +2 -2
  1103. package/dist/source/primitives/createDismissOnEscape.js +17 -0
  1104. package/dist/source/primitives/createDismissOnEscape.js.map +7 -0
  1105. package/dist/source/primitives/createFocusTrap.js +9 -3
  1106. package/dist/source/primitives/createFocusTrap.js.map +2 -2
  1107. package/dist/source/primitives/createHelperText.js +16 -0
  1108. package/dist/source/primitives/createHelperText.js.map +7 -0
  1109. package/dist/source/primitives/createKeyboardShortcut.js +23 -0
  1110. package/dist/source/primitives/createKeyboardShortcut.js.map +7 -0
  1111. package/dist/source/primitives/mergeStyle.js +15 -0
  1112. package/dist/source/primitives/mergeStyle.js.map +7 -0
  1113. package/dist/source/primitives/overlayLayer.js +10 -2
  1114. package/dist/source/primitives/overlayLayer.js.map +2 -2
  1115. package/dist/source/primitives/restoreFocus.js +14 -0
  1116. package/dist/source/primitives/restoreFocus.js.map +7 -0
  1117. package/dist/source/utils/controlProps.js +22 -0
  1118. package/dist/source/utils/controlProps.js.map +7 -0
  1119. package/dist/source/utils/keyboardShortcut.js +74 -0
  1120. package/dist/source/utils/keyboardShortcut.js.map +7 -0
  1121. package/dist/source/utils/linkAttrs.js +16 -0
  1122. package/dist/source/utils/linkAttrs.js.map +7 -0
  1123. package/dist/source/utils/ownClick.js +41 -0
  1124. package/dist/source/utils/ownClick.js.map +7 -0
  1125. package/dist/utils/controlProps.d.ts +17 -0
  1126. package/dist/utils/controlProps.js +20 -0
  1127. package/dist/utils/controlProps.js.map +1 -0
  1128. package/dist/utils/keyboardShortcut.d.ts +12 -0
  1129. package/dist/utils/keyboardShortcut.js +48 -0
  1130. package/dist/utils/keyboardShortcut.js.map +1 -0
  1131. package/dist/utils/linkAttrs.d.ts +13 -0
  1132. package/dist/utils/linkAttrs.js +13 -0
  1133. package/dist/utils/linkAttrs.js.map +1 -0
  1134. package/dist/utils/ownClick.d.ts +16 -0
  1135. package/dist/utils/ownClick.js +39 -0
  1136. package/dist/utils/ownClick.js.map +1 -0
  1137. package/package.json +72 -3
@@ -6,6 +6,7 @@ import { FloatingButton } from "../../inputs/floatingButton";
6
6
  import { Icon } from "../../base/icon";
7
7
  import { createControllableState } from "../../../primitives/createControllableState";
8
8
  import { createId } from "../../../primitives/createId";
9
+ import { Composer } from "../../inputs/composer/composer";
9
10
  import { ChatComposer } from "./chatComposer";
10
11
  import { ChatHeader } from "./chatHeader";
11
12
  import { ChatMessages } from "./chatMessages";
@@ -68,12 +69,19 @@ function Chat(props) {
68
69
  });
69
70
  const attachInputId = createId();
70
71
  const showComposer = () => Boolean(p.onSendMessage) || fileUpload.enabled();
72
+ const useLegacyComposer = () => Boolean(p.legacyComposer) || fileUpload.enabled() && !p.onSendMessage;
71
73
  const fileInput = () => <Show when={fileUpload.enabled()}>
72
74
  <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid="chat-file-input" />
73
75
  </Show>;
74
- const resolvedFooter = () => p.footer ?? p.children ?? (showComposer() ? <>
75
- {fileInput()}
76
- <ChatComposer
76
+ const sendText = (text) => {
77
+ void p.onSendMessage?.(text);
78
+ };
79
+ const uploadFiles = (files) => {
80
+ void p.onUploadFiles?.(files);
81
+ };
82
+ const legacyFooter = () => <>
83
+ {fileInput()}
84
+ <ChatComposer
77
85
  onSendMessage={p.onSendMessage}
78
86
  placeholder={p.composerPlaceholder}
79
87
  disabled={p.composerDisabled}
@@ -83,7 +91,33 @@ function Chat(props) {
83
91
  attachInputId={fileUpload.enabled() ? attachInputId : void 0}
84
92
  attachAriaLabel={p.attachAriaLabel}
85
93
  />
86
- </> : void 0);
94
+ </>;
95
+ const composerOnSend = createMemo(() => p.onSendMessage ? sendText : void 0);
96
+ const composerOnAttach = createMemo(() => fileUpload.enabled() ? uploadFiles : void 0);
97
+ const composerAccept = createMemo(() => fileUpload.enabled() ? p.fileUploadAccept : void 0);
98
+ const composerMaxFiles = createMemo(() => fileUpload.enabled() ? fileUpload.maxFiles : void 0);
99
+ const composerMultiple = createMemo(() => fileUpload.enabled() ? fileUpload.maxFiles > 1 : void 0);
100
+ const composerFooter = () => <Composer
101
+ {...p.composerProps}
102
+ class={cn("smwb-chat__composer", p.composerProps?.class)}
103
+ sendKey={p.composerProps?.sendKey ?? "enter"}
104
+ aria-label={p.composerProps?.["aria-label"] ?? (p.composerProps?.["aria-labelledby"] ? void 0 : "Message")}
105
+ sendLabel={p.composerProps?.sendLabel ?? "Send message"}
106
+ attachLabel={p.attachAriaLabel ?? p.composerProps?.attachLabel}
107
+ placeholder={p.composerPlaceholder}
108
+ disabled={p.composerDisabled}
109
+ busy={p.busy}
110
+ onStop={p.onStop}
111
+ onSend={composerOnSend()}
112
+ onAttach={composerOnAttach()}
113
+ accept={composerAccept()}
114
+ maxFiles={composerMaxFiles()}
115
+ multiple={composerMultiple()}
116
+ dropTarget={false}
117
+ />;
118
+ const resolvedFooter = () => p.footer ?? p.children ?? (showComposer() ? <Show when={useLegacyComposer()} fallback={composerFooter()}>
119
+ {legacyFooter()}
120
+ </Show> : void 0);
87
121
  const closeButtonVisible = () => shouldShowChatCloseButton({
88
122
  floatingTrigger: p.floatingTrigger,
89
123
  embedded: p.embedded,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n composerShiftEnterNewline?: boolean | undefined;\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n // The trigger icon is read once, and only while the trigger is drawn: markup\n // passed as a prop is created anew on every read, and during hydration a copy\n // the server never rendered has no DOM node.\n const triggerIcon = children(() => (p.floatingTrigger && !p.embedded && !open() ? p.triggerIcon : undefined));\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={triggerIcon()} fallback={<Icon name=\"chat\" size={24} />}>\n {triggerIcon()}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"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","names":[],"file":"chat.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chat.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/chat/chat.entry.less\";\nimport { type JSX, type ParentProps, Show, children, createMemo, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { FloatingButton } from \"../../inputs/floatingButton\";\nimport { Icon } from \"../../base/icon\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { createId } from \"../../../primitives/createId\";\nimport { Composer } from \"../../inputs/composer/composer\";\nimport type { ComposerProps } from \"../../inputs/composer/composer\";\nimport { ChatComposer } from \"./chatComposer\";\nimport { ChatHeader } from \"./chatHeader\";\nimport { ChatMessages } from \"./chatMessages\";\nimport { ChatShell } from \"./chatShell\";\nimport { createChatFileUpload } from \"./useChatFileUpload\";\nimport {\n type ChatAnchor,\n type ChatLayoutMode,\n type ChatMessage,\n type ChatMessageRenderContext,\n type ChatThemeMode,\n CHAT_EXPAND_LAYOUTS,\n} from \"./types\";\nimport { pickInitialLayout, resolveAllowedLayouts, shouldShowChatCloseButton } from \"./utils\";\n\n/**\n * Props for the `Composer` Chat draws as its footer. The props Chat owns itself — `onSendMessage` (the composer's\n * `onSend`), `busy`, `onStop`, `composerPlaceholder` (`placeholder`), `composerDisabled` (`disabled`), the file upload\n * props (`onAttach`, `accept`, `multiple`, `maxFiles`) and `dropTarget` (always `false`: the Chat shell is the drop\n * target) — are left out, Chat passes them and does not let a caller override them.\n */\nexport type ChatFooterComposerProps = Omit<\n ComposerProps,\n | \"onSend\"\n | \"busy\"\n | \"onStop\"\n | \"disabled\"\n | \"placeholder\"\n | \"onAttach\"\n | \"accept\"\n | \"multiple\"\n | \"maxFiles\"\n | \"dropTarget\"\n>;\n\nexport interface ChatProps extends ParentProps, Omit<ChatMessageRenderContext, \"showAvatars\" | \"showAttachments\"> {\n class?: string | undefined;\n messages: ChatMessage[];\n showAvatars?: boolean | undefined;\n showAttachments?: boolean | undefined;\n headerTitle?: JSX.Element;\n headerSubtitle?: JSX.Element;\n headerActions?: JSX.Element;\n footer?: JSX.Element;\n anchor?: ChatAnchor | undefined;\n themeMode?: ChatThemeMode | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n layout?: ChatLayoutMode | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n onLayoutChange?: ((layout: ChatLayoutMode) => void) | undefined;\n open?: boolean | undefined;\n defaultOpen?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n floatingTrigger?: boolean | undefined;\n triggerIcon?: JSX.Element;\n triggerLabel?: string | undefined;\n onLoadMore?: (() => void | Promise<void>) | undefined;\n hasMore?: boolean | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n /**\n * The agent is replying: the composer's send button turns into Stop and calls `onStop`, the keys do not send, the\n * text stays editable. Not the same as `loading` (the message list skeleton). The default composer only.\n */\n busy?: boolean | undefined;\n /** Called when Stop is pressed while `busy` (and not `composerDisabled`). The default composer only. */\n onStop?: (() => void) | undefined;\n /**\n * More props for the built-in `Composer`: `toolbar`, `attachments`, `maxLength`, `counter`, `minRows`, `maxRows`,\n * `layout`, `sendKey` (default here `\"enter\"`), `value`/`defaultValue`/`onValueChange`, `clearOnSend`, `autofocus`,\n * `inputRef`, `aria-*`, `sendLabel`, `stopLabel`, `attachLabel`, `class`, `data-*`, … Chat's own props\n * (`onSendMessage`, `busy`, `onStop`, `composerPlaceholder`, `composerDisabled`, the file upload props) win.\n */\n composerProps?: ChatFooterComposerProps | undefined;\n /**\n * Deprecated: draws the old `ChatComposer` (Enter sends, TextField DOM, `chat-composer*` test ids) instead of the\n * built-in `Composer`. Kept for the migration and removed with `ChatComposer` in the next major; `busy`, `onStop`\n * and `composerProps` are ignored in this mode.\n *\n * @deprecated Migrate to the default `Composer`; see the README section \"Migrating from ChatComposer\".\n */\n legacyComposer?: boolean | undefined;\n composerPlaceholder?: string | undefined;\n composerDisabled?: boolean | undefined;\n /**\n * Deprecated: works with `legacyComposer` only — the built-in `Composer` always inserts a newline on Shift+Enter.\n * Pass it together with `legacyComposer` until that is removed.\n *\n * @deprecated Use `legacyComposer`; the default `Composer` has no equivalent flag.\n */\n composerShiftEnterNewline?: boolean | undefined;\n /**\n * Deprecated: works with `legacyComposer` only — with the built-in `Composer` Ctrl/⌘+Enter sends. Pass it together\n * with `legacyComposer` until that is removed.\n *\n * @deprecated Use `legacyComposer`; the default `Composer` has no equivalent flag.\n */\n composerCtrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n onUploadFiles?: ((files: File[]) => void | Promise<void>) | undefined;\n fileUploadAccept?: Record<string, string[]> | string | undefined;\n fileUploadMaxFiles?: number | undefined;\n attachAriaLabel?: string | undefined;\n loading?: boolean | undefined;\n loadingMore?: boolean | undefined;\n loadingSkeletonCount?: number | undefined;\n renderMessage?: ((message: ChatMessage, ctx: ChatMessageRenderContext) => JSX.Element) | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n showCloseButton?: boolean | undefined;\n}\n\nexport function Chat(props: ChatProps): JSX.Element {\n const p = mergeProps(\n {\n showAvatars: false,\n showAttachments: false,\n anchor: \"bottom-right\" as const,\n themeMode: \"inherit\" as const,\n defaultOpen: false,\n floatingTrigger: false,\n composerPlaceholder: \"message\",\n composerShiftEnterNewline: true,\n composerCtrlEnterNewline: true,\n fileUpload: false,\n embedded: false,\n overlayContext: false,\n showStatus: false,\n },\n props\n );\n\n const allowedLayouts = createMemo(() => resolveAllowedLayouts(p.allowedLayouts ?? CHAT_EXPAND_LAYOUTS));\n\n const [open, setOpen] = createControllableState<boolean>({\n value: () => p.open,\n defaultValue: p.defaultOpen,\n onChange: p.onOpenChange,\n });\n\n const [layout, setLayout] = createControllableState<ChatLayoutMode>({\n value: () => p.layout,\n defaultValue: pickInitialLayout(allowedLayouts(), p.defaultLayout),\n onChange: p.onLayoutChange,\n });\n\n const effectiveLayout = (): ChatLayoutMode =>\n p.embedded ? \"fullHeight\" : p.floatingTrigger ? (open() ? layout() : \"closed\") : layout();\n\n const handleOpen = (): void => {\n setOpen(true);\n if (layout() === \"closed\") {\n setLayout(pickInitialLayout(allowedLayouts(), p.defaultLayout));\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLayoutChange = (next: ChatLayoutMode): void => {\n setOpen(true);\n setLayout(next);\n };\n\n const fileUpload = createChatFileUpload({\n enabled: () => p.fileUpload,\n accept: p.fileUploadAccept,\n maxFiles: p.fileUploadMaxFiles,\n onUploadFiles: p.onUploadFiles,\n disabled: () => Boolean(p.composerDisabled),\n });\n\n const attachInputId = createId();\n\n const showComposer = (): boolean => Boolean(p.onSendMessage) || fileUpload.enabled();\n // Composer has no text-less mode, so an upload without a send handler keeps the old attach-only ChatComposer.\n const useLegacyComposer = (): boolean => Boolean(p.legacyComposer) || (fileUpload.enabled() && !p.onSendMessage);\n\n const fileInput = (): JSX.Element => (\n <Show when={fileUpload.enabled()}>\n <input {...fileUpload.getInputProps({ id: attachInputId })} data-testid=\"chat-file-input\" />\n </Show>\n );\n\n // The handlers are attached always and read the props when called: a handler that appears later still works.\n const sendText = (text: string): void => {\n void p.onSendMessage?.(text);\n };\n\n const uploadFiles = (files: File[]): void => {\n void p.onUploadFiles?.(files);\n };\n\n const legacyFooter = (): JSX.Element => (\n <>\n {fileInput()}\n <ChatComposer\n onSendMessage={p.onSendMessage}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n shiftEnterNewline={p.composerShiftEnterNewline}\n ctrlEnterNewline={p.composerCtrlEnterNewline}\n fileUpload={fileUpload.enabled()}\n attachInputId={fileUpload.enabled() ? attachInputId : undefined}\n attachAriaLabel={p.attachAriaLabel}\n />\n </>\n );\n\n // Chat's own props are plain attributes after the spread, so they win; `dropTarget` is off because the shell\n // already takes the drops. Every prop Chat owns is omitted from `ChatFooterComposerProps`, so none of them can\n // leak back from the spread when its value is `undefined`.\n // The upload gate is resolved in memos rather than inline: a conditional prop compiles to a `memo` created\n // inside the prop getter, and Composer reads `onAttach`/`accept`/`maxFiles`/`multiple` from its pick and drop\n // handlers — outside any owner, where such a computation is never disposed.\n const composerOnSend = createMemo(() => (p.onSendMessage ? sendText : undefined));\n const composerOnAttach = createMemo(() => (fileUpload.enabled() ? uploadFiles : undefined));\n const composerAccept = createMemo(() => (fileUpload.enabled() ? p.fileUploadAccept : undefined));\n const composerMaxFiles = createMemo(() => (fileUpload.enabled() ? fileUpload.maxFiles : undefined));\n const composerMultiple = createMemo(() => (fileUpload.enabled() ? fileUpload.maxFiles > 1 : undefined));\n\n const composerFooter = (): JSX.Element => (\n <Composer\n {...p.composerProps}\n class={cn(\"smwb-chat__composer\", p.composerProps?.class)}\n sendKey={p.composerProps?.sendKey ?? \"enter\"}\n aria-label={p.composerProps?.[\"aria-label\"] ?? (p.composerProps?.[\"aria-labelledby\"] ? undefined : \"Message\")}\n sendLabel={p.composerProps?.sendLabel ?? \"Send message\"}\n attachLabel={p.attachAriaLabel ?? p.composerProps?.attachLabel}\n placeholder={p.composerPlaceholder}\n disabled={p.composerDisabled}\n busy={p.busy}\n onStop={p.onStop}\n onSend={composerOnSend()}\n onAttach={composerOnAttach()}\n accept={composerAccept()}\n maxFiles={composerMaxFiles()}\n multiple={composerMultiple()}\n dropTarget={false}\n />\n );\n\n const resolvedFooter = (): JSX.Element =>\n p.footer ??\n p.children ??\n (showComposer() ? (\n <Show when={useLegacyComposer()} fallback={composerFooter()}>\n {legacyFooter()}\n </Show>\n ) : undefined);\n\n const closeButtonVisible = (): boolean =>\n shouldShowChatCloseButton({\n floatingTrigger: p.floatingTrigger,\n embedded: p.embedded,\n overlayContext: p.overlayContext,\n effectiveLayout: effectiveLayout(),\n showCloseButton: p.showCloseButton,\n });\n\n // The trigger icon is read once, and only while the trigger is drawn: markup\n // passed as a prop is created anew on every read, and during hydration a copy\n // the server never rendered has no DOM node.\n const triggerIcon = children(() => (p.floatingTrigger && !p.embedded && !open() ? p.triggerIcon : undefined));\n\n return (\n <div\n class={cn(\n \"smwb-chat\",\n !p.embedded && `smwb-chat_${p.anchor}`,\n p.embedded && \"smwb-chat_embedded\",\n p.overlayContext && \"smwb-chat_overlay-context\",\n p.class\n )}\n data-testid=\"chat\"\n >\n <Show when={p.floatingTrigger && !p.embedded && !open()}>\n <FloatingButton\n class=\"smwb-chat__trigger\"\n aria-label={p.triggerLabel ?? \"Open chat\"}\n data-testid=\"chat-trigger\"\n onClick={handleOpen}\n >\n <Show when={triggerIcon()} fallback={<Icon name=\"chat\" size={24} />}>\n {triggerIcon()}\n </Show>\n </FloatingButton>\n </Show>\n <ChatShell\n layout={effectiveLayout()}\n anchor={p.anchor}\n themeMode={p.themeMode}\n embedded={p.embedded}\n overlayContext={p.overlayContext}\n fileDropzoneRootProps={fileUpload.enabled() ? fileUpload.getRootProps() : undefined}\n fileDropzoneActive={fileUpload.enabled() && fileUpload.isDragActive()}\n header={\n <ChatHeader\n title={p.headerTitle}\n subtitle={p.headerSubtitle}\n actions={p.headerActions}\n layout={effectiveLayout() === \"closed\" ? layout() : effectiveLayout()}\n allowedLayouts={allowedLayouts()}\n onLayoutChange={handleLayoutChange}\n onClose={closeButtonVisible() ? handleClose : undefined}\n />\n }\n footer={resolvedFooter()}\n >\n <ChatMessages\n messages={p.messages}\n showAvatars={p.showAvatars}\n showAttachments={p.showAttachments}\n showStatus={p.showStatus}\n statusIcons={p.statusIcons}\n renderStatus={p.renderStatus}\n onLoadMore={p.onLoadMore}\n hasMore={p.hasMore}\n loading={p.loading}\n loadingMore={p.loadingMore}\n loadingSkeletonCount={p.loadingSkeletonCount}\n renderMessage={p.renderMessage}\n />\n </ChatShell>\n </div>\n );\n}\n\nexport default Chat;\n"],"mappings":"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","names":[],"file":"chat.jsx"}
@@ -48,6 +48,7 @@ function ChatComposer(props) {
48
48
  setValue("");
49
49
  };
50
50
  const handleKeyDown = (event) => {
51
+ if (event.isComposing || event.keyCode === 229) return;
51
52
  if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {
52
53
  if (event.currentTarget instanceof HTMLTextAreaElement) {
53
54
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatComposer.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { TextField } from \"../../inputs/textField\";\nimport { TextFieldWrapper } from \"../../inputs/textField/textFieldWrapper\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createId } from \"../../../primitives/createId\";\nimport { shouldComposerNewlineOnEnter } from \"./utils\";\n\nexport interface ChatComposerProps {\n class?: string | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n placeholder?: string | undefined;\n disabled?: boolean | undefined;\n sendAriaLabel?: string | undefined;\n shiftEnterNewline?: boolean | undefined;\n ctrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n attachInputId?: string | undefined;\n onAttachClick?: (() => void) | undefined;\n attachAriaLabel?: string | undefined;\n}\n\nfunction stopPropagation(event: Event): void {\n event.stopPropagation();\n}\n\nfunction insertNewlineAtCursor(element: HTMLTextAreaElement, value: string, setValue: (next: string) => void): void {\n const start = element.selectionStart ?? value.length;\n const end = element.selectionEnd ?? value.length;\n const nextValue = `${value.slice(0, start)}\\n${value.slice(end)}`;\n\n setValue(nextValue);\n\n requestAnimationFrame(() => {\n element.selectionStart = start + 1;\n element.selectionEnd = start + 1;\n });\n}\n\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const merged = mergeProps(\n {\n placeholder: \"message\",\n disabled: false,\n sendAriaLabel: \"Send message\",\n shiftEnterNewline: true,\n ctrlEnterNewline: true,\n fileUpload: false,\n attachAriaLabel: \"Attach file\",\n },\n props\n );\n\n const [value, setValue] = createSignal(\"\");\n const [isFocused, setIsFocused] = createSignal(false);\n const inputId = createId();\n let textareaRef: HTMLTextAreaElement | undefined;\n\n const multiline = (): boolean => merged.shiftEnterNewline || merged.ctrlEnterNewline;\n const canSend = (): boolean => Boolean(merged.onSendMessage) && value().trim().length > 0 && !merged.disabled;\n const showAttach = (): boolean => merged.fileUpload && Boolean(merged.attachInputId || merged.onAttachClick);\n\n const handleSend = (): void => {\n if (!merged.onSendMessage) return;\n const text = value().trim();\n if (!text || merged.disabled) return;\n void merged.onSendMessage(text);\n setValue(\"\");\n };\n\n const handleKeyDown = (event: KeyboardEvent & { currentTarget: HTMLElement }): void => {\n if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {\n if (event.currentTarget instanceof HTMLTextAreaElement) {\n event.preventDefault();\n insertNewlineAtCursor(event.currentTarget, value(), setValue);\n }\n return;\n }\n\n if (event.key !== \"Enter\") return;\n\n event.preventDefault();\n handleSend();\n };\n\n const attachClass = (): string =>\n cn(\"smwb-chat-icon-button\", \"smwb-chat-icon-button_edge-start\", merged.disabled && \"smwb-chat-icon-button_disabled\");\n\n const attachButton = (): JSX.Element => (\n <Show when={showAttach()}>\n <Show\n when={merged.attachInputId}\n fallback={\n <ChatIconButton\n edge=\"start\"\n aria-label={merged.attachAriaLabel}\n data-testid=\"chat-composer-attach\"\n disabled={merged.disabled}\n onClick={() => merged.onAttachClick?.()}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </ChatIconButton>\n }\n >\n {(id) => (\n <label\n for={merged.disabled ? undefined : id()}\n class={attachClass()}\n aria-label={merged.attachAriaLabel}\n aria-disabled={merged.disabled || undefined}\n data-testid=\"chat-composer-attach\"\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </label>\n )}\n </Show>\n </Show>\n );\n\n const sendButton = (): JSX.Element => (\n <Show when={merged.onSendMessage}>\n <ChatIconButton\n edge=\"end\"\n color=\"primary\"\n aria-label={merged.sendAriaLabel}\n data-testid=\"chat-composer-send\"\n disabled={!canSend()}\n onClick={handleSend}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"send\" size={24} />\n </ChatIconButton>\n </Show>\n );\n\n const onHolderMouseDown: JSX.EventHandler<HTMLDivElement, MouseEvent> = (event) => {\n if (textareaRef && event.currentTarget === event.target) {\n event.preventDefault();\n textareaRef.focus();\n }\n };\n\n return (\n <Show\n when={!(showAttach() && !merged.onSendMessage)}\n fallback={\n <div class={cn(\"smwb-chat-composer\", \"smwb-chat-composer_attach-only\", merged.class)} data-testid=\"chat-composer\">\n {attachButton()}\n </div>\n }\n >\n <Show\n when={multiline()}\n fallback={\n <TextField\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n onChange={(event) => setValue(event.currentTarget.value)}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n onKeyDown={handleKeyDown}\n />\n }\n >\n <TextFieldWrapper\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n disabled={merged.disabled}\n isFilledState={value().length > 0}\n isFocused={isFocused()}\n for={inputId}\n shrink={Boolean(merged.attachInputId || merged.onAttachClick) && showAttach()}\n onHolderMouseDown={onHolderMouseDown}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n >\n <textarea\n id={inputId}\n ref={(el) => (textareaRef = el)}\n class={cn(\n \"smwb-text-field__input\",\n \"smwb-chat-composer__input\",\n \"smwb-text-field__input--show-placeholder\",\n showAttach() && \"smwb-text-field__input--adornment-start\",\n merged.onSendMessage && \"smwb-text-field__input--adornment-end\"\n )}\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n rows={1}\n onInput={(event) => setValue(event.currentTarget.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n />\n </TextFieldWrapper>\n </Show>\n </Show>\n );\n}\n\nexport default ChatComposer;\n"],"mappings":"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","names":[],"file":"chatComposer.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatComposer.tsx"],"sourcesContent":["import { type JSX, Show, createSignal, mergeProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { TextField } from \"../../inputs/textField\";\nimport { TextFieldWrapper } from \"../../inputs/textField/textFieldWrapper\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createId } from \"../../../primitives/createId\";\nimport { shouldComposerNewlineOnEnter } from \"./utils\";\n\n/**\n * Deprecated: the props of the old chat input. Use `ComposerProps` — `Chat` now draws a `Composer` as its footer,\n * and the standalone `Composer` replaces these props (`onSendMessage` → `onSend`, `sendAriaLabel` → `sendLabel`,\n * `attachAriaLabel` → `attachLabel`, `fileUpload` + `attachInputId`/`onAttachClick` → `onAttach`,\n * `shiftEnterNewline` → `sendKey=\"enter\"`; `ctrlEnterNewline` has no equivalent — Ctrl/⌘+Enter always sends).\n * Removed in the next major.\n *\n * @deprecated Use `Composer` (`ComposerProps`); see the README section \"Migrating from ChatComposer\".\n */\nexport interface ChatComposerProps {\n class?: string | undefined;\n onSendMessage?: ((text: string) => void | Promise<void>) | undefined;\n placeholder?: string | undefined;\n disabled?: boolean | undefined;\n sendAriaLabel?: string | undefined;\n shiftEnterNewline?: boolean | undefined;\n ctrlEnterNewline?: boolean | undefined;\n fileUpload?: boolean | undefined;\n attachInputId?: string | undefined;\n onAttachClick?: (() => void) | undefined;\n attachAriaLabel?: string | undefined;\n}\n\nfunction stopPropagation(event: Event): void {\n event.stopPropagation();\n}\n\nfunction insertNewlineAtCursor(element: HTMLTextAreaElement, value: string, setValue: (next: string) => void): void {\n const start = element.selectionStart ?? value.length;\n const end = element.selectionEnd ?? value.length;\n const nextValue = `${value.slice(0, start)}\\n${value.slice(end)}`;\n\n setValue(nextValue);\n\n requestAnimationFrame(() => {\n element.selectionStart = start + 1;\n element.selectionEnd = start + 1;\n });\n}\n\n/**\n * Deprecated: the old chat input — Enter sends, a TextField-based DOM and the `chat-composer*` test ids.\n * `Chat` draws a `Composer` as its footer now, and the standalone `Composer` replaces this component\n * (`onSendMessage` → `onSend`, Enter-to-send → `sendKey=\"enter\"`). Kept for the migration and removed in the\n * next major; to keep this markup inside a Chat while migrating, pass `legacyComposer` to `Chat`.\n *\n * @deprecated Use `Composer`; see the README section \"Migrating from ChatComposer\".\n */\nexport function ChatComposer(props: ChatComposerProps): JSX.Element {\n const merged = mergeProps(\n {\n placeholder: \"message\",\n disabled: false,\n sendAriaLabel: \"Send message\",\n shiftEnterNewline: true,\n ctrlEnterNewline: true,\n fileUpload: false,\n attachAriaLabel: \"Attach file\",\n },\n props\n );\n\n const [value, setValue] = createSignal(\"\");\n const [isFocused, setIsFocused] = createSignal(false);\n const inputId = createId();\n let textareaRef: HTMLTextAreaElement | undefined;\n\n const multiline = (): boolean => merged.shiftEnterNewline || merged.ctrlEnterNewline;\n const canSend = (): boolean => Boolean(merged.onSendMessage) && value().trim().length > 0 && !merged.disabled;\n const showAttach = (): boolean => merged.fileUpload && Boolean(merged.attachInputId || merged.onAttachClick);\n\n const handleSend = (): void => {\n if (!merged.onSendMessage) return;\n const text = value().trim();\n if (!text || merged.disabled) return;\n void merged.onSendMessage(text);\n setValue(\"\");\n };\n\n const handleKeyDown = (event: KeyboardEvent & { currentTarget: HTMLElement }): void => {\n // Enter that commits or cancels an IME composition belongs to the IME, not to the composer.\n if (event.isComposing || event.keyCode === 229) return;\n\n if (shouldComposerNewlineOnEnter(event, { shiftEnterNewline: merged.shiftEnterNewline, ctrlEnterNewline: merged.ctrlEnterNewline })) {\n if (event.currentTarget instanceof HTMLTextAreaElement) {\n event.preventDefault();\n insertNewlineAtCursor(event.currentTarget, value(), setValue);\n }\n return;\n }\n\n if (event.key !== \"Enter\") return;\n\n event.preventDefault();\n handleSend();\n };\n\n const attachClass = (): string =>\n cn(\"smwb-chat-icon-button\", \"smwb-chat-icon-button_edge-start\", merged.disabled && \"smwb-chat-icon-button_disabled\");\n\n const attachButton = (): JSX.Element => (\n <Show when={showAttach()}>\n <Show\n when={merged.attachInputId}\n fallback={\n <ChatIconButton\n edge=\"start\"\n aria-label={merged.attachAriaLabel}\n data-testid=\"chat-composer-attach\"\n disabled={merged.disabled}\n onClick={() => merged.onAttachClick?.()}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </ChatIconButton>\n }\n >\n {(id) => (\n <label\n for={merged.disabled ? undefined : id()}\n class={attachClass()}\n aria-label={merged.attachAriaLabel}\n aria-disabled={merged.disabled || undefined}\n data-testid=\"chat-composer-attach\"\n onMouseDown={stopPropagation}\n >\n <Icon name=\"attach_file\" size={24} />\n </label>\n )}\n </Show>\n </Show>\n );\n\n const sendButton = (): JSX.Element => (\n <Show when={merged.onSendMessage}>\n <ChatIconButton\n edge=\"end\"\n color=\"primary\"\n aria-label={merged.sendAriaLabel}\n data-testid=\"chat-composer-send\"\n disabled={!canSend()}\n onClick={handleSend}\n onMouseDown={stopPropagation}\n >\n <Icon name=\"send\" size={24} />\n </ChatIconButton>\n </Show>\n );\n\n const onHolderMouseDown: JSX.EventHandler<HTMLDivElement, MouseEvent> = (event) => {\n if (textareaRef && event.currentTarget === event.target) {\n event.preventDefault();\n textareaRef.focus();\n }\n };\n\n return (\n <Show\n when={!(showAttach() && !merged.onSendMessage)}\n fallback={\n <div class={cn(\"smwb-chat-composer\", \"smwb-chat-composer_attach-only\", merged.class)} data-testid=\"chat-composer\">\n {attachButton()}\n </div>\n }\n >\n <Show\n when={multiline()}\n fallback={\n <TextField\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n onChange={(event) => setValue(event.currentTarget.value)}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n onKeyDown={handleKeyDown}\n />\n }\n >\n <TextFieldWrapper\n class={cn(\"smwb-chat-composer\", merged.class)}\n data-testid=\"chat-composer\"\n fullWidth\n disabled={merged.disabled}\n isFilledState={value().length > 0}\n isFocused={isFocused()}\n for={inputId}\n shrink={Boolean(merged.attachInputId || merged.onAttachClick) && showAttach()}\n onHolderMouseDown={onHolderMouseDown}\n startAdornment={attachButton()}\n endAdornment={sendButton()}\n >\n <textarea\n id={inputId}\n ref={(el) => (textareaRef = el)}\n class={cn(\n \"smwb-text-field__input\",\n \"smwb-chat-composer__input\",\n \"smwb-text-field__input--show-placeholder\",\n showAttach() && \"smwb-text-field__input--adornment-start\",\n merged.onSendMessage && \"smwb-text-field__input--adornment-end\"\n )}\n value={value()}\n disabled={merged.disabled}\n placeholder={merged.placeholder}\n rows={1}\n onInput={(event) => setValue(event.currentTarget.value)}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n onKeyDown={handleKeyDown}\n />\n </TextFieldWrapper>\n </Show>\n </Show>\n );\n}\n\nexport default ChatComposer;\n"],"mappings":"AAAA,SAAmB,MAAM,cAAc,kBAAkB;AACzD,OAAO,QAAQ;AACf,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB;AACzB,SAAS,oCAAoC;AAyB7C,SAAS,gBAAgB,OAAoB;AAC3C,QAAM,gBAAgB;AACxB;AAEA,SAAS,sBAAsB,SAA8B,OAAe,UAAwC;AAClH,QAAM,QAAQ,QAAQ,kBAAkB,MAAM;AAC9C,QAAM,MAAM,QAAQ,gBAAgB,MAAM;AAC1C,QAAM,YAAY,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC;AAAA,EAAK,MAAM,MAAM,GAAG,CAAC;AAE/D,WAAS,SAAS;AAElB,wBAAsB,MAAM;AAC1B,YAAQ,iBAAiB,QAAQ;AACjC,YAAQ,eAAe,QAAQ;AAAA,EACjC,CAAC;AACH;AAUO,SAAS,aAAa,OAAuC;AAClE,QAAM,SAAS;AAAA,IACb;AAAA,MACE,aAAa;AAAA,MACb,UAAU;AAAA,MACV,eAAe;AAAA,MACf,mBAAmB;AAAA,MACnB,kBAAkB;AAAA,MAClB,YAAY;AAAA,MACZ,iBAAiB;AAAA,IACnB;AAAA,IACA;AAAA,EACF;AAEA,QAAM,CAAC,OAAO,QAAQ,IAAI,aAAa,EAAE;AACzC,QAAM,CAAC,WAAW,YAAY,IAAI,aAAa,KAAK;AACpD,QAAM,UAAU,SAAS;AACzB,MAAI;AAEJ,QAAM,YAAY,MAAe,OAAO,qBAAqB,OAAO;AACpE,QAAM,UAAU,MAAe,QAAQ,OAAO,aAAa,KAAK,MAAM,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,OAAO;AACrG,QAAM,aAAa,MAAe,OAAO,cAAc,QAAQ,OAAO,iBAAiB,OAAO,aAAa;AAE3G,QAAM,aAAa,MAAY;AAC7B,QAAI,CAAC,OAAO,cAAe;AAC3B,UAAM,OAAO,MAAM,EAAE,KAAK;AAC1B,QAAI,CAAC,QAAQ,OAAO,SAAU;AAC9B,SAAK,OAAO,cAAc,IAAI;AAC9B,aAAS,EAAE;AAAA,EACb;AAEA,QAAM,gBAAgB,CAAC,UAAgE;AAErF,QAAI,MAAM,eAAe,MAAM,YAAY,IAAK;AAEhD,QAAI,6BAA6B,OAAO,EAAE,mBAAmB,OAAO,mBAAmB,kBAAkB,OAAO,iBAAiB,CAAC,GAAG;AACnI,UAAI,MAAM,yBAAyB,qBAAqB;AACtD,cAAM,eAAe;AACrB,8BAAsB,MAAM,eAAe,MAAM,GAAG,QAAQ;AAAA,MAC9D;AACA;AAAA,IACF;AAEA,QAAI,MAAM,QAAQ,QAAS;AAE3B,UAAM,eAAe;AACrB,eAAW;AAAA,EACb;AAEA,QAAM,cAAc,MAClB,GAAG,yBAAyB,oCAAoC,OAAO,YAAY,gCAAgC;AAErH,QAAM,eAAe,MACnB,CAAC,KAAK,MAAM,WAAW,GAAG;AAAA,MACxB,CAAC;AAAA,IACC,MAAM,OAAO;AAAA,IACb,UACE,CAAC;AAAA,MACC,KAAK;AAAA,MACL,YAAY,OAAO;AAAA,MACnB,YAAY;AAAA,MACZ,UAAU,OAAO;AAAA,MACjB,SAAS,MAAM,OAAO,gBAAgB;AAAA,MACtC,aAAa;AAAA,KACd;AAAA,YACC,CAAC,KAAK,KAAK,cAAc,MAAM,IAAI,EAAE;AAAA,UACvC,EATC;AAAA,GAWJ;AAAA,SACE,CAAC,OACA,CAAC;AAAA,IACC,KAAK,OAAO,WAAW,SAAY,GAAG;AAAA,IACtC,OAAO,YAAY;AAAA,IACnB,YAAY,OAAO;AAAA,IACnB,eAAe,OAAO,YAAY;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,GACd;AAAA,YACC,CAAC,KAAK,KAAK,cAAc,MAAM,IAAI,EAAE;AAAA,UACvC,EATC,OAUD;AAAA,MACJ,EA3BC,KA2BM;AAAA,IACT,EA7BC;AAgCH,QAAM,aAAa,MACjB,CAAC,KAAK,MAAM,OAAO,eAAe;AAAA,MAChC,CAAC;AAAA,IACC,KAAK;AAAA,IACL,MAAM;AAAA,IACN,YAAY,OAAO;AAAA,IACnB,YAAY;AAAA,IACZ,UAAU,CAAC,QAAQ;AAAA,IACnB,SAAS;AAAA,IACT,aAAa;AAAA,GACd;AAAA,QACC,CAAC,KAAK,KAAK,OAAO,MAAM,IAAI,EAAE;AAAA,MAChC,EAVC,eAUgB;AAAA,IACnB,EAZC;AAeH,QAAM,oBAAkE,CAAC,UAAU;AACjF,QAAI,eAAe,MAAM,kBAAkB,MAAM,QAAQ;AACvD,YAAM,eAAe;AACrB,kBAAY,MAAM;AAAA,IACpB;AAAA,EACF;AAEA,SACE,CAAC;AAAA,IACC,MAAM,EAAE,WAAW,KAAK,CAAC,OAAO;AAAA,IAChC,UACE,CAAC,IAAI,OAAO,GAAG,sBAAsB,kCAAkC,OAAO,KAAK,GAAG,YAAY,gBAAgB;AAAA,WAC/G,aAAa,EAAE;AAAA,QAClB,EAFC;AAAA,GAIJ;AAAA,MACC,CAAC;AAAA,IACC,MAAM,UAAU;AAAA,IAChB,UACE,CAAC;AAAA,MACC,OAAO,GAAG,sBAAsB,OAAO,KAAK;AAAA,MAC5C,YAAY;AAAA,MACZ;AAAA,MACA,OAAO,MAAM;AAAA,MACb,UAAU,OAAO;AAAA,MACjB,aAAa,OAAO;AAAA,MACpB,UAAU,CAAC,UAAU,SAAS,MAAM,cAAc,KAAK;AAAA,MACvD,gBAAgB,aAAa;AAAA,MAC7B,cAAc,WAAW;AAAA,MACzB,WAAW;AAAA,IACb;AAAA,GAEH;AAAA,QACC,CAAC;AAAA,IACC,OAAO,GAAG,sBAAsB,OAAO,KAAK;AAAA,IAC5C,YAAY;AAAA,IACZ;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,eAAe,MAAM,EAAE,SAAS;AAAA,IAChC,WAAW,UAAU;AAAA,IACrB,KAAK;AAAA,IACL,QAAQ,QAAQ,OAAO,iBAAiB,OAAO,aAAa,KAAK,WAAW;AAAA,IAC5E,mBAAmB;AAAA,IACnB,gBAAgB,aAAa;AAAA,IAC7B,cAAc,WAAW;AAAA,GAC1B;AAAA,UACC,CAAC;AAAA,IACC,IAAI;AAAA,IACJ,KAAK,CAAC,OAAQ,cAAc;AAAA,IAC5B,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,KAAK;AAAA,MAChB,OAAO,iBAAiB;AAAA,IAC1B;AAAA,IACA,OAAO,MAAM;AAAA,IACb,UAAU,OAAO;AAAA,IACjB,aAAa,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,SAAS,CAAC,UAAU,SAAS,MAAM,cAAc,KAAK;AAAA,IACtD,SAAS,MAAM,aAAa,IAAI;AAAA,IAChC,QAAQ,MAAM,aAAa,KAAK;AAAA,IAChC,WAAW;AAAA,EACb,EAAE;AAAA,QACJ,EAhCC,iBAgCkB;AAAA,MACrB,EAlDC,KAkDM;AAAA,IACT,EA3DC;AA6DL;AAEA,IAAO,uBAAQ;","names":[],"file":"chatComposer.jsx"}
@@ -2,17 +2,27 @@ import { Show, mergeProps, splitProps } from "solid-js";
2
2
  import cn from "clsx";
3
3
  import { Ripple } from "../../base/ripple";
4
4
  import { mergeRefs } from "../../../primitives/mergeRefs";
5
+ import { callHandler } from "../../../primitives/callHandler";
5
6
  function ChatIconButton(props) {
6
- const merged = mergeProps({ color: "default" }, props);
7
- const [local, rest] = splitProps(merged, ["class", "children", "disabled", "edge", "color", "ref"]);
7
+ const merged = mergeProps({ color: "default", type: "button" }, props);
8
+ const [local, rest] = splitProps(merged, [
9
+ "class",
10
+ "children",
11
+ "disabled",
12
+ "edge",
13
+ "color",
14
+ "ref",
15
+ // The button sets this on its root too; its own handler calls the caller's first.
16
+ "onPointerDown"
17
+ ]);
8
18
  let rippleActions;
9
19
  const onPointerDown = (event) => {
20
+ callHandler(local.onPointerDown, event);
10
21
  if (!local.disabled) rippleActions?.onRipple(event);
11
22
  };
12
23
  return <button
13
24
  {...rest}
14
25
  ref={mergeRefs(local.ref)}
15
- type="button"
16
26
  class={cn(
17
27
  "smwb-chat-icon-button",
18
28
  local.edge === "start" && "smwb-chat-icon-button_edge-start",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport interface ChatIconButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n edge?: \"start\" | \"end\" | undefined;\n color?: \"default\" | \"primary\" | undefined;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function ChatIconButton(props: ParentProps<ChatIconButtonProps>): JSX.Element {\n const merged = mergeProps({ color: \"default\" as const }, props);\n const [local, rest] = splitProps(merged, [\"class\", \"children\", \"disabled\", \"edge\", \"color\", \"ref\"]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown = (event: PointerEvent): void => {\n if (!local.disabled) rippleActions?.onRipple(event);\n };\n\n return (\n <button\n {...rest}\n ref={mergeRefs(local.ref)}\n type=\"button\"\n class={cn(\n \"smwb-chat-icon-button\",\n local.edge === \"start\" && \"smwb-chat-icon-button_edge-start\",\n local.edge === \"end\" && \"smwb-chat-icon-button_edge-end\",\n local.color === \"primary\" && \"smwb-chat-icon-button_primary\",\n local.disabled && \"smwb-chat-icon-button_disabled\",\n local.class\n )}\n disabled={local.disabled}\n onPointerDown={onPointerDown}\n >\n {local.children}\n <Show when={!local.disabled}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center />\n </Show>\n </button>\n );\n}\n\nexport default ChatIconButton;\n"],"mappings":"AAAA,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,iBAA2B;AAQ7B,SAAS,eAAe,OAAsD;AACnF,QAAM,SAAS,WAAW,EAAE,OAAO,UAAmB,GAAG,KAAK;AAC9D,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ,CAAC,SAAS,YAAY,YAAY,QAAQ,SAAS,KAAK,CAAC;AAElG,MAAI;AAEJ,QAAM,gBAAgB,CAAC,UAA8B;AACnD,QAAI,CAAC,MAAM,SAAU,gBAAe,SAAS,KAAK;AAAA,EACpD;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,KAAK;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,SAAS,SAAS;AAAA,MACxB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,YAAY;AAAA,MAClB,MAAM;AAAA,IACR;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,eAAe;AAAA,GAChB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU;AAAA,QAC3B,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,OAAO,EAAE;AAAA,MACtE,EAFC,KAEM;AAAA,IACT,EAnBC;AAqBL;AAEA,IAAO,yBAAQ;","names":[],"file":"chatIconButton.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatIconButton.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Ripple, type RippleActionsRef } from \"../../base/ripple\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { callHandler } from \"../../../primitives/callHandler\";\n\nexport interface ChatIconButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n edge?: \"start\" | \"end\" | undefined;\n color?: \"default\" | \"primary\" | undefined;\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport function ChatIconButton(props: ParentProps<ChatIconButtonProps>): JSX.Element {\n // `type` is a default: the caller's wins.\n const merged = mergeProps({ color: \"default\" as const, type: \"button\" as const }, props);\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"children\",\n \"disabled\",\n \"edge\",\n \"color\",\n \"ref\",\n // The button sets this on its root too; its own handler calls the caller's first.\n \"onPointerDown\",\n ]);\n\n let rippleActions: RippleActionsRef | undefined;\n\n const onPointerDown: JSX.EventHandler<HTMLButtonElement, PointerEvent> = (event) => {\n callHandler(local.onPointerDown, event);\n if (!local.disabled) rippleActions?.onRipple(event);\n };\n\n return (\n <button\n {...rest}\n ref={mergeRefs(local.ref)}\n class={cn(\n \"smwb-chat-icon-button\",\n local.edge === \"start\" && \"smwb-chat-icon-button_edge-start\",\n local.edge === \"end\" && \"smwb-chat-icon-button_edge-end\",\n local.color === \"primary\" && \"smwb-chat-icon-button_primary\",\n local.disabled && \"smwb-chat-icon-button_disabled\",\n local.class\n )}\n disabled={local.disabled}\n onPointerDown={onPointerDown}\n >\n {local.children}\n <Show when={!local.disabled}>\n <Ripple actionRef={(actions) => (rippleActions = actions)} center />\n </Show>\n </button>\n );\n}\n\nexport default ChatIconButton;\n"],"mappings":"AAAA,SAAqC,MAAM,YAAY,kBAAkB;AACzE,OAAO,QAAQ;AACf,SAAS,cAAqC;AAC9C,SAAS,iBAA2B;AACpC,SAAS,mBAAmB;AAQrB,SAAS,eAAe,OAAsD;AAEnF,QAAM,SAAS,WAAW,EAAE,OAAO,WAAoB,MAAM,SAAkB,GAAG,KAAK;AACvF,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,EACF,CAAC;AAED,MAAI;AAEJ,QAAM,gBAAmE,CAAC,UAAU;AAClF,gBAAY,MAAM,eAAe,KAAK;AACtC,QAAI,CAAC,MAAM,SAAU,gBAAe,SAAS,KAAK;AAAA,EACpD;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,KAAK,UAAU,MAAM,GAAG;AAAA,IACxB,OAAO;AAAA,MACL;AAAA,MACA,MAAM,SAAS,WAAW;AAAA,MAC1B,MAAM,SAAS,SAAS;AAAA,MACxB,MAAM,UAAU,aAAa;AAAA,MAC7B,MAAM,YAAY;AAAA,MAClB,MAAM;AAAA,IACR;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,eAAe;AAAA,GAChB;AAAA,OACE,MAAM,SAAS;AAAA,MAChB,CAAC,KAAK,MAAM,CAAC,MAAM,UAAU;AAAA,QAC3B,CAAC,OAAO,WAAW,CAAC,YAAa,gBAAgB,SAAU,OAAO,EAAE;AAAA,MACtE,EAFC,KAEM;AAAA,IACT,EAlBC;AAoBL;AAEA,IAAO,yBAAQ;","names":[],"file":"chatIconButton.jsx"}
@@ -3,6 +3,7 @@ import cn from "clsx";
3
3
  import { Icon } from "../../base/icon";
4
4
  import { ChatIconButton } from "./chatIconButton";
5
5
  import { createControllableState } from "../../../primitives/createControllableState";
6
+ import { mergeStyle } from "../../../primitives/mergeStyle";
6
7
  import { Chat } from "./chat";
7
8
  const len = (value) => typeof value === "number" ? `${value}px` : value;
8
9
  const floatingAnchorForSide = (side) => side === "left" ? "bottom-left" : "bottom-right";
@@ -31,7 +32,8 @@ function ChatLayout(props) {
31
32
  "floatingAnchor",
32
33
  "chat",
33
34
  "children",
34
- "style"
35
+ "style",
36
+ "data-testid"
35
37
  ]);
36
38
  const [collapsed, setCollapsed] = createControllableState({
37
39
  value: () => local.collapsed,
@@ -61,17 +63,14 @@ function ChatLayout(props) {
61
63
  {local.chat.headerActions}
62
64
  {expandButton()}
63
65
  </>;
64
- const rootStyle = () => ({
65
- "--smwb-chat-layout-w": len(local.chatWidth),
66
- ...typeof local.style === "object" && local.style ? local.style : {}
67
- });
66
+ const rootStyle = () => mergeStyle({ "--smwb-chat-layout-w": len(local.chatWidth) }, local.style);
68
67
  return <Show
69
68
  when={collapsed()}
70
69
  fallback={<div
71
70
  {...rest}
72
71
  class={cn("smwb-chat-layout", `smwb-chat-layout_${local.side}`, local.class)}
73
72
  style={rootStyle()}
74
- data-testid="chat-layout"
73
+ data-testid={local["data-testid"] ?? "chat-layout"}
75
74
  data-collapsed="false"
76
75
  >
77
76
  <Show when={local.side === "left"}>
@@ -93,7 +92,7 @@ function ChatLayout(props) {
93
92
  {...rest}
94
93
  class={cn("smwb-chat-layout", "smwb-chat-layout_collapsed", local.class)}
95
94
  style={rootStyle()}
96
- data-testid="chat-layout"
95
+ data-testid={local["data-testid"] ?? "chat-layout"}
97
96
  data-collapsed="true"
98
97
  >
99
98
  <div class={cn("smwb-chat-layout__content", local.contentClass)} data-testid="chat-layout-content">
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst floatingAnchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n | \"onLayoutChange\"\n>;\n\nexport interface ChatLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n collapsed?: boolean | undefined;\n defaultCollapsed?: boolean | undefined;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n collapseAriaLabel?: string | undefined;\n expandAriaLabel?: string | undefined;\n floatingAnchor?: ChatAnchor | undefined;\n chat: ChatLayoutChatProps;\n}\n\nexport function ChatLayout(props: ChatLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n defaultCollapsed: false,\n collapseAriaLabel: \"Collapse chat panel\",\n expandAriaLabel: \"Expand chat panel\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"floatingAnchor\",\n \"chat\",\n \"children\",\n \"style\",\n ]);\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: local.onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = createControllableState<boolean>({ defaultValue: false });\n\n createEffect(() => {\n if (!collapsed()) {\n setFloatingOpen(false);\n }\n });\n\n const anchor = (): ChatAnchor => local.floatingAnchor ?? floatingAnchorForSide(local.side);\n const dockIcon = (): string => (local.side === \"left\" ? \"dock_to_left\" : \"dock_to_right\");\n const collapseIcon = (): string => (local.side === \"left\" ? \"left_panel_close\" : \"right_panel_close\");\n\n const collapseButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.collapseAriaLabel} data-testid=\"chat-layout-collapse\" onClick={() => setCollapsed(true)}>\n <Icon name={collapseIcon()} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon()} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {collapseButton()}\n </>\n );\n\n const floatingHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {expandButton()}\n </>\n );\n\n const rootStyle = (): JSX.CSSProperties => ({\n \"--smwb-chat-layout-w\": len(local.chatWidth),\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n });\n\n return (\n <Show\n when={collapsed()}\n fallback={\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", `smwb-chat-layout_${local.side}`, local.class)}\n style={rootStyle()}\n data-testid=\"chat-layout\"\n data-collapsed=\"false\"\n >\n <Show when={local.side === \"left\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Show when={local.side === \"right\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n </div>\n }\n >\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", \"smwb-chat-layout_collapsed\", local.class)}\n style={rootStyle()}\n data-testid=\"chat-layout\"\n data-collapsed=\"true\"\n >\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n floatingTrigger\n anchor={anchor()}\n allowedLayouts={[\"floating\"]}\n layout=\"floating\"\n open={floatingOpen()}\n onOpenChange={setFloatingOpen}\n headerActions={floatingHeaderActions()}\n />\n </div>\n </Show>\n );\n}\n\nexport default ChatLayout;\n"],"mappings":"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","names":[],"file":"chatLayout.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Icon } from \"../../base/icon\";\nimport { ChatIconButton } from \"./chatIconButton\";\nimport { createControllableState } from \"../../../primitives/createControllableState\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst floatingAnchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n | \"onLayoutChange\"\n>;\n\nexport interface ChatLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n collapsed?: boolean | undefined;\n defaultCollapsed?: boolean | undefined;\n onCollapsedChange?: ((collapsed: boolean) => void) | undefined;\n collapseAriaLabel?: string | undefined;\n expandAriaLabel?: string | undefined;\n floatingAnchor?: ChatAnchor | undefined;\n chat: ChatLayoutChatProps;\n /** Test id of the root `<div>`; `chat-layout` unless given. */\n \"data-testid\"?: string | undefined;\n}\n\nexport function ChatLayout(props: ChatLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n defaultCollapsed: false,\n collapseAriaLabel: \"Collapse chat panel\",\n expandAriaLabel: \"Expand chat panel\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"collapsed\",\n \"defaultCollapsed\",\n \"onCollapsedChange\",\n \"collapseAriaLabel\",\n \"expandAriaLabel\",\n \"floatingAnchor\",\n \"chat\",\n \"children\",\n \"style\",\n \"data-testid\",\n ]);\n\n const [collapsed, setCollapsed] = createControllableState<boolean>({\n value: () => local.collapsed,\n defaultValue: local.defaultCollapsed,\n onChange: local.onCollapsedChange,\n });\n\n const [floatingOpen, setFloatingOpen] = createControllableState<boolean>({ defaultValue: false });\n\n createEffect(() => {\n if (!collapsed()) {\n setFloatingOpen(false);\n }\n });\n\n const anchor = (): ChatAnchor => local.floatingAnchor ?? floatingAnchorForSide(local.side);\n const dockIcon = (): string => (local.side === \"left\" ? \"dock_to_left\" : \"dock_to_right\");\n const collapseIcon = (): string => (local.side === \"left\" ? \"left_panel_close\" : \"right_panel_close\");\n\n const collapseButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.collapseAriaLabel} data-testid=\"chat-layout-collapse\" onClick={() => setCollapsed(true)}>\n <Icon name={collapseIcon()} size={18} />\n </ChatIconButton>\n );\n\n const expandButton = (): JSX.Element => (\n <ChatIconButton aria-label={local.expandAriaLabel} data-testid=\"chat-layout-expand\" onClick={() => setCollapsed(false)}>\n <Icon name={dockIcon()} size={18} />\n </ChatIconButton>\n );\n\n const dockedHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {collapseButton()}\n </>\n );\n\n const floatingHeaderActions = (): JSX.Element => (\n <>\n {local.chat.headerActions}\n {expandButton()}\n </>\n );\n\n // The caller's style goes last: its own --smwb-chat-layout-w wins over chatWidth.\n const rootStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle({ \"--smwb-chat-layout-w\": len(local.chatWidth) }, local.style);\n\n return (\n <Show\n when={collapsed()}\n fallback={\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", `smwb-chat-layout_${local.side}`, local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-layout\"}\n data-collapsed=\"false\"\n >\n <Show when={local.side === \"left\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Show when={local.side === \"right\"}>\n <aside class=\"smwb-chat-layout__panel\" data-testid=\"chat-layout-panel\">\n <Chat {...local.chat} class={local.chatClass} embedded allowedLayouts={[]} headerActions={dockedHeaderActions()} />\n </aside>\n </Show>\n </div>\n }\n >\n <div\n {...rest}\n class={cn(\"smwb-chat-layout\", \"smwb-chat-layout_collapsed\", local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-layout\"}\n data-collapsed=\"true\"\n >\n <div class={cn(\"smwb-chat-layout__content\", local.contentClass)} data-testid=\"chat-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n floatingTrigger\n anchor={anchor()}\n allowedLayouts={[\"floating\"]}\n layout=\"floating\"\n open={floatingOpen()}\n onOpenChange={setFloatingOpen}\n headerActions={floatingHeaderActions()}\n />\n </div>\n </Show>\n );\n}\n\nexport default ChatLayout;\n"],"mappings":"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","names":[],"file":"chatLayout.jsx"}
@@ -1,5 +1,6 @@
1
1
  import { mergeProps, splitProps } from "solid-js";
2
2
  import cn from "clsx";
3
+ import { mergeStyle } from "../../../primitives/mergeStyle";
3
4
  import { Chat } from "./chat";
4
5
  const len = (value) => typeof value === "number" ? `${value}px` : value;
5
6
  const anchorForSide = (side) => side === "left" ? "bottom-left" : "bottom-right";
@@ -25,17 +26,15 @@ function ChatOverlayLayout(props) {
25
26
  "defaultOpen",
26
27
  "chat",
27
28
  "children",
28
- "style"
29
+ "style",
30
+ "data-testid"
29
31
  ]);
30
- const rootStyle = () => ({
31
- "--smwb-chat-overlay-w": len(local.chatWidth),
32
- ...typeof local.style === "object" && local.style ? local.style : {}
33
- });
32
+ const rootStyle = () => mergeStyle({ "--smwb-chat-overlay-w": len(local.chatWidth) }, local.style);
34
33
  return <div
35
34
  {...rest}
36
35
  class={cn("smwb-chat-overlay-layout", local.class)}
37
36
  style={rootStyle()}
38
- data-testid="chat-overlay-layout"
37
+ data-testid={local["data-testid"] ?? "chat-overlay-layout"}
39
38
  >
40
39
  <div class={cn("smwb-chat-overlay-layout__content", local.contentClass)} data-testid="chat-overlay-layout-content">
41
40
  {local.children}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatOverlayLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutMode, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst anchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatOverlayLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"overlayContext\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"onLayoutChange\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n>;\n\nexport interface ChatOverlayLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n defaultOpen?: boolean | undefined;\n chat: ChatOverlayLayoutChatProps;\n}\n\nexport function ChatOverlayLayout(props: ChatOverlayLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n allowedLayouts: [\"fullHeight\", \"floating\"] as ChatLayoutMode[],\n defaultLayout: \"fullHeight\" as ChatLayoutMode,\n defaultOpen: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"allowedLayouts\",\n \"defaultLayout\",\n \"defaultOpen\",\n \"chat\",\n \"children\",\n \"style\",\n ]);\n\n const rootStyle = (): JSX.CSSProperties => ({\n \"--smwb-chat-overlay-w\": len(local.chatWidth),\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n });\n\n return (\n <div\n {...rest}\n class={cn(\"smwb-chat-overlay-layout\", local.class)}\n style={rootStyle()}\n data-testid=\"chat-overlay-layout\"\n >\n <div class={cn(\"smwb-chat-overlay-layout__content\", local.contentClass)} data-testid=\"chat-overlay-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n overlayContext\n floatingTrigger\n anchor={anchorForSide(local.side)}\n allowedLayouts={local.allowedLayouts}\n defaultLayout={local.defaultLayout}\n defaultOpen={local.defaultOpen}\n />\n </div>\n );\n}\n\nexport default ChatOverlayLayout;\n"],"mappings":"AAAA,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,YAA4B;AAGrC,MAAM,MAAM,CAAC,UAAoC,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AAE5F,MAAM,gBAAgB,CAAC,SAAsC,SAAS,SAAS,gBAAgB;AA6BxF,SAAS,kBAAkB,OAA4C;AAC5E,QAAM,SAAS;AAAA,IACb;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,MACX,gBAAgB,CAAC,cAAc,UAAU;AAAA,MACzC,eAAe;AAAA,MACf,aAAa;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,YAAY,OAA0B;AAAA,IAC1C,yBAAyB,IAAI,MAAM,SAAS;AAAA,IAC5C,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,EACtE;AAEA,SACE,CAAC;AAAA,QACK;AAAA,IACJ,OAAO,GAAG,4BAA4B,MAAM,KAAK;AAAA,IACjD,OAAO,UAAU;AAAA,IACjB,YAAY;AAAA,GACb;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,qCAAqC,MAAM,YAAY,GAAG,YAAY,8BAA8B;AAAA,SAChH,MAAM,SAAS;AAAA,MAClB,EAFC,IAEK;AAAA,MACN,CAAC;AAAA,QACK,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA,QAAQ,cAAc,MAAM,IAAI;AAAA,IAChC,gBAAgB,MAAM;AAAA,IACtB,eAAe,MAAM;AAAA,IACrB,aAAa,MAAM;AAAA,EACrB,EAAE;AAAA,IACJ,EAnBC;AAqBL;AAEA,IAAO,4BAAQ;","names":[],"file":"chatOverlayLayout.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/dataDisplay/chat/chatOverlayLayout.tsx"],"sourcesContent":["import { type JSX, type ParentProps, mergeProps, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { Chat, type ChatProps } from \"./chat\";\nimport type { ChatAnchor, ChatLayoutMode, ChatLayoutSide } from \"./types\";\n\nconst len = (value: number | string): string => (typeof value === \"number\" ? `${value}px` : value);\n\nconst anchorForSide = (side: ChatLayoutSide): ChatAnchor => (side === \"left\" ? \"bottom-left\" : \"bottom-right\");\n\nexport type ChatOverlayLayoutChatProps = Omit<\n ChatProps,\n | \"class\"\n | \"overlayContext\"\n | \"embedded\"\n | \"floatingTrigger\"\n | \"anchor\"\n | \"allowedLayouts\"\n | \"layout\"\n | \"defaultLayout\"\n | \"onLayoutChange\"\n | \"open\"\n | \"defaultOpen\"\n | \"onOpenChange\"\n>;\n\nexport interface ChatOverlayLayoutProps extends ParentProps, JSX.HTMLAttributes<HTMLDivElement> {\n contentClass?: string | undefined;\n chatClass?: string | undefined;\n side?: ChatLayoutSide | undefined;\n chatWidth?: number | string | undefined;\n allowedLayouts?: ChatLayoutMode[] | undefined;\n defaultLayout?: ChatLayoutMode | undefined;\n defaultOpen?: boolean | undefined;\n chat: ChatOverlayLayoutChatProps;\n /** Test id of the root `<div>`; `chat-overlay-layout` unless given. */\n \"data-testid\"?: string | undefined;\n}\n\nexport function ChatOverlayLayout(props: ChatOverlayLayoutProps): JSX.Element {\n const merged = mergeProps(\n {\n side: \"right\" as const,\n chatWidth: 400 as number | string,\n allowedLayouts: [\"fullHeight\", \"floating\"] as ChatLayoutMode[],\n defaultLayout: \"fullHeight\" as ChatLayoutMode,\n defaultOpen: true,\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"contentClass\",\n \"chatClass\",\n \"side\",\n \"chatWidth\",\n \"allowedLayouts\",\n \"defaultLayout\",\n \"defaultOpen\",\n \"chat\",\n \"children\",\n \"style\",\n \"data-testid\",\n ]);\n\n // The caller's style goes last: its own --smwb-chat-overlay-w wins over chatWidth.\n const rootStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle({ \"--smwb-chat-overlay-w\": len(local.chatWidth) }, local.style);\n\n return (\n <div\n {...rest}\n class={cn(\"smwb-chat-overlay-layout\", local.class)}\n style={rootStyle()}\n data-testid={local[\"data-testid\"] ?? \"chat-overlay-layout\"}\n >\n <div class={cn(\"smwb-chat-overlay-layout__content\", local.contentClass)} data-testid=\"chat-overlay-layout-content\">\n {local.children}\n </div>\n <Chat\n {...local.chat}\n class={local.chatClass}\n overlayContext\n floatingTrigger\n anchor={anchorForSide(local.side)}\n allowedLayouts={local.allowedLayouts}\n defaultLayout={local.defaultLayout}\n defaultOpen={local.defaultOpen}\n />\n </div>\n );\n}\n\nexport default ChatOverlayLayout;\n"],"mappings":"AAAA,SAAqC,YAAY,kBAAkB;AACnE,OAAO,QAAQ;AACf,SAAS,kBAAkB;AAC3B,SAAS,YAA4B;AAGrC,MAAM,MAAM,CAAC,UAAoC,OAAO,UAAU,WAAW,GAAG,KAAK,OAAO;AAE5F,MAAM,gBAAgB,CAAC,SAAsC,SAAS,SAAS,gBAAgB;AA+BxF,SAAS,kBAAkB,OAA4C;AAC5E,QAAM,SAAS;AAAA,IACb;AAAA,MACE,MAAM;AAAA,MACN,WAAW;AAAA,MACX,gBAAgB,CAAC,cAAc,UAAU;AAAA,MACzC,eAAe;AAAA,MACf,aAAa;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACA,QAAM,CAAC,OAAO,IAAI,IAAI,WAAW,QAAQ;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,YAAY,MAChB,WAAW,EAAE,yBAAyB,IAAI,MAAM,SAAS,EAAE,GAAG,MAAM,KAAK;AAE3E,SACE,CAAC;AAAA,QACK;AAAA,IACJ,OAAO,GAAG,4BAA4B,MAAM,KAAK;AAAA,IACjD,OAAO,UAAU;AAAA,IACjB,aAAa,MAAM,aAAa,KAAK;AAAA,GACtC;AAAA,MACC,CAAC,IAAI,OAAO,GAAG,qCAAqC,MAAM,YAAY,GAAG,YAAY,8BAA8B;AAAA,SAChH,MAAM,SAAS;AAAA,MAClB,EAFC,IAEK;AAAA,MACN,CAAC;AAAA,QACK,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb;AAAA,IACA;AAAA,IACA,QAAQ,cAAc,MAAM,IAAI;AAAA,IAChC,gBAAgB,MAAM;AAAA,IACtB,eAAe,MAAM;AAAA,IACrB,aAAa,MAAM;AAAA,EACrB,EAAE;AAAA,IACJ,EAnBC;AAqBL;AAEA,IAAO,4BAAQ;","names":[],"file":"chatOverlayLayout.jsx"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dataDisplay/chat/index.ts"],
4
- "sourcesContent": ["export { ChatLayout, default as ChatLayoutDefault } from \"./chatLayout\";\nexport type { ChatLayoutProps, ChatLayoutChatProps } from \"./chatLayout\";\nexport { ChatOverlayLayout } from \"./chatOverlayLayout\";\nexport type { ChatOverlayLayoutProps, ChatOverlayLayoutChatProps } from \"./chatOverlayLayout\";\nexport { Chat, default } from \"./chat\";\nexport type { ChatProps } from \"./chat\";\nexport { ChatShell } from \"./chatShell\";\nexport type { ChatShellProps } from \"./chatShell\";\nexport { ChatHeader } from \"./chatHeader\";\nexport type { ChatHeaderProps } from \"./chatHeader\";\nexport { ChatMessages } from \"./chatMessages\";\nexport type { ChatMessagesProps } from \"./chatMessages\";\nexport { ChatMessageItem } from \"./chatMessageItem\";\nexport type { ChatMessageItemProps } from \"./chatMessageItem\";\nexport { ChatMessageIncoming } from \"./chatMessageIncoming\";\nexport type { ChatMessageIncomingProps } from \"./chatMessageIncoming\";\nexport { ChatMessageOutgoing } from \"./chatMessageOutgoing\";\nexport type { ChatMessageOutgoingProps } from \"./chatMessageOutgoing\";\nexport { ChatMessageSystem } from \"./chatMessageSystem\";\nexport type { ChatMessageSystemProps } from \"./chatMessageSystem\";\nexport { ChatMessageBubble } from \"./chatMessageBubble\";\nexport type { ChatMessageBubbleProps } from \"./chatMessageBubble\";\nexport { ChatMessageSkeleton } from \"./chatMessageSkeleton\";\nexport type { ChatMessageSkeletonProps } from \"./chatMessageSkeleton\";\nexport { ChatMessageStatus } from \"./chatMessageStatus\";\nexport type { ChatMessageStatusProps } from \"./chatMessageStatus\";\nexport { ChatMessageAvatar } from \"./chatMessageAvatar\";\nexport type { ChatMessageAvatarProps } from \"./chatMessageAvatar\";\nexport { ChatAttachments } from \"./chatAttachments\";\nexport type { ChatAttachmentsProps } from \"./chatAttachments\";\nexport { ChatAttachmentImage } from \"./chatAttachmentImage\";\nexport type { ChatAttachmentImageProps } from \"./chatAttachmentImage\";\nexport { ChatIconButton } from \"./chatIconButton\";\nexport type { ChatIconButtonProps } from \"./chatIconButton\";\nexport { ChatComposer } from \"./chatComposer\";\nexport type { ChatComposerProps } from \"./chatComposer\";\nexport { createChatInfiniteScroll } from \"./useChatInfiniteScroll\";\nexport type { CreateChatInfiniteScrollParams } from \"./useChatInfiniteScroll\";\nexport { createChatFileUpload, resolveChatFileUploadMaxFiles } from \"./useChatFileUpload\";\nexport type { CreateChatFileUploadOptions, ChatFileUploadState } from \"./useChatFileUpload\";\nexport { createChatStickToBottom, isScrolledToBottom, scrollChatToBottom } from \"./useChatStickToBottom\";\nexport type { CreateChatStickToBottomParams } from \"./useChatStickToBottom\";\nexport type {\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatus as ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n} from \"./types\";\nexport {\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n} from \"./types\";\nexport {\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./utils\";\nexport type { ChatComposerNewlineOptions } from \"./utils\";\n"],
4
+ "sourcesContent": ["export { ChatLayout, default as ChatLayoutDefault } from \"./chatLayout\";\nexport type { ChatLayoutProps, ChatLayoutChatProps } from \"./chatLayout\";\nexport { ChatOverlayLayout } from \"./chatOverlayLayout\";\nexport type { ChatOverlayLayoutProps, ChatOverlayLayoutChatProps } from \"./chatOverlayLayout\";\nexport { Chat, default } from \"./chat\";\nexport type { ChatProps, ChatFooterComposerProps } from \"./chat\";\nexport { ChatShell } from \"./chatShell\";\nexport type { ChatShellProps } from \"./chatShell\";\nexport { ChatHeader } from \"./chatHeader\";\nexport type { ChatHeaderProps } from \"./chatHeader\";\nexport { ChatMessages } from \"./chatMessages\";\nexport type { ChatMessagesProps } from \"./chatMessages\";\nexport { ChatMessageItem } from \"./chatMessageItem\";\nexport type { ChatMessageItemProps } from \"./chatMessageItem\";\nexport { ChatMessageIncoming } from \"./chatMessageIncoming\";\nexport type { ChatMessageIncomingProps } from \"./chatMessageIncoming\";\nexport { ChatMessageOutgoing } from \"./chatMessageOutgoing\";\nexport type { ChatMessageOutgoingProps } from \"./chatMessageOutgoing\";\nexport { ChatMessageSystem } from \"./chatMessageSystem\";\nexport type { ChatMessageSystemProps } from \"./chatMessageSystem\";\nexport { ChatMessageBubble } from \"./chatMessageBubble\";\nexport type { ChatMessageBubbleProps } from \"./chatMessageBubble\";\nexport { ChatMessageSkeleton } from \"./chatMessageSkeleton\";\nexport type { ChatMessageSkeletonProps } from \"./chatMessageSkeleton\";\nexport { ChatMessageStatus } from \"./chatMessageStatus\";\nexport type { ChatMessageStatusProps } from \"./chatMessageStatus\";\nexport { ChatMessageAvatar } from \"./chatMessageAvatar\";\nexport type { ChatMessageAvatarProps } from \"./chatMessageAvatar\";\nexport { ChatAttachments } from \"./chatAttachments\";\nexport type { ChatAttachmentsProps } from \"./chatAttachments\";\nexport { ChatAttachmentImage } from \"./chatAttachmentImage\";\nexport type { ChatAttachmentImageProps } from \"./chatAttachmentImage\";\nexport { ChatIconButton } from \"./chatIconButton\";\nexport type { ChatIconButtonProps } from \"./chatIconButton\";\nexport { ChatComposer } from \"./chatComposer\";\nexport type { ChatComposerProps } from \"./chatComposer\";\nexport { createChatInfiniteScroll } from \"./useChatInfiniteScroll\";\nexport type { CreateChatInfiniteScrollParams } from \"./useChatInfiniteScroll\";\nexport { createChatFileUpload, resolveChatFileUploadMaxFiles } from \"./useChatFileUpload\";\nexport type { CreateChatFileUploadOptions, ChatFileUploadState } from \"./useChatFileUpload\";\nexport { createChatStickToBottom, isScrolledToBottom, scrollChatToBottom } from \"./useChatStickToBottom\";\nexport type { CreateChatStickToBottomParams } from \"./useChatStickToBottom\";\nexport type {\n ChatMessage,\n ChatAttachment,\n ChatAuthor,\n ChatMessageVariant,\n ChatLayoutMode,\n ChatAnchor,\n ChatThemeMode,\n ChatMessageRenderContext,\n ChatLayoutSide,\n ChatMessageDeliveryStatus,\n ChatMessageStatus as ChatMessageStatusValue,\n ChatMessageStatusIcons,\n ChatMessageStatusRenderContext,\n} from \"./types\";\nexport {\n CHAT_EXPAND_LAYOUTS,\n CHAT_DEFAULT_FILE_UPLOAD_MAX_FILES,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n} from \"./types\";\nexport {\n isImageAttachment,\n formatChatTimestamp,\n resolveAllowedLayouts,\n isChatMessageDeliveryStatus,\n resolveChatMessageStatusIcon,\n resolveChatMessageStatusLabel,\n shouldComposerNewlineOnEnter,\n getChatLayoutActions,\n shouldShowChatCloseButton,\n} from \"./utils\";\nexport type { ChatComposerNewlineOptions } from \"./utils\";\n"],
5
5
  "mappings": "AAAA,SAAS,YAAuB,WAAXA,gBAAoC;AAEzD,SAAS,yBAAyB;AAElC,SAAS,MAAM,WAAAA,gBAAe;AAE9B,SAAS,iBAAiB;AAE1B,SAAS,kBAAkB;AAE3B,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,2BAA2B;AAEpC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAElC,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAEpC,SAAS,sBAAsB;AAE/B,SAAS,oBAAoB;AAE7B,SAAS,gCAAgC;AAEzC,SAAS,sBAAsB,qCAAqC;AAEpE,SAAS,yBAAyB,oBAAoB,0BAA0B;AAiBhF;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;",
6
6
  "names": ["default"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/components/dataDisplay/chat/utils.ts"],
4
- "sourcesContent": ["import {\n type ChatAttachment,\n type ChatLayoutMode,\n CHAT_EXPAND_LAYOUTS,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n type ChatMessageDeliveryStatus,\n type ChatMessageStatus,\n type ChatMessageStatusIcons,\n} from \"./types\";\n\nexport function isChatMessageDeliveryStatus(status: ChatMessageStatus): status is ChatMessageDeliveryStatus {\n return CHAT_MESSAGE_DELIVERY_STATUSES.includes(status as ChatMessageDeliveryStatus);\n}\n\nexport function resolveChatMessageStatusIcon(\n status: ChatMessageStatus,\n icons?: ChatMessageStatusIcons & Record<string, string | undefined>\n): string | undefined {\n const custom = icons?.[status];\n if (custom) {\n return custom;\n }\n\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_ICONS[status];\n }\n\n return undefined;\n}\n\nexport function resolveChatMessageStatusLabel(status: ChatMessageStatus): string {\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_LABELS[status];\n }\n\n return String(status);\n}\n\nexport function isImageAttachment(attachment: ChatAttachment): boolean {\n if (attachment.mimeType?.startsWith(\"image/\")) {\n return true;\n }\n\n return /\\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(attachment.name);\n}\n\nexport function formatChatTimestamp(value?: string | Date): string {\n if (!value) {\n return \"\";\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(date);\n}\n\nexport function resolveAllowedLayouts(input?: ChatLayoutMode[]): ChatLayoutMode[] {\n if (input == null) {\n return [\"floating\"];\n }\n\n if (input.length === 0) {\n return [];\n }\n\n return CHAT_EXPAND_LAYOUTS.filter((mode) => input.includes(mode));\n}\n\nexport function pickInitialLayout(allowed: ChatLayoutMode[], preferred?: ChatLayoutMode): ChatLayoutMode {\n if (preferred && preferred !== \"closed\" && allowed.includes(preferred)) {\n return preferred;\n }\n\n return allowed[0] ?? \"floating\";\n}\n\nexport function getChatLayoutActions(\n allowedLayouts: ChatLayoutMode[],\n currentLayout?: ChatLayoutMode\n): Exclude<ChatLayoutMode, \"closed\">[] {\n return resolveAllowedLayouts(allowedLayouts).filter(\n (mode): mode is Exclude<ChatLayoutMode, \"closed\"> => mode !== \"closed\" && mode !== currentLayout\n );\n}\n\nexport function shouldShowChatCloseButton(options: {\n floatingTrigger?: boolean | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n effectiveLayout?: ChatLayoutMode | undefined;\n showCloseButton?: boolean | undefined;\n}): boolean {\n if (options.showCloseButton === false) {\n return false;\n }\n\n if (options.showCloseButton === true) {\n return true;\n }\n\n if (\n options.overlayContext &&\n options.floatingTrigger &&\n !options.embedded &&\n (options.effectiveLayout === \"floating\" || options.effectiveLayout === \"fullHeight\")\n ) {\n return true;\n }\n\n return Boolean(options.floatingTrigger && !options.embedded && options.effectiveLayout === \"floating\");\n}\n\nexport interface ChatComposerNewlineOptions {\n shiftEnterNewline?: boolean;\n ctrlEnterNewline?: boolean;\n}\n\nexport function shouldComposerNewlineOnEnter(\n event: { key: string; shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n options: ChatComposerNewlineOptions = {}\n): boolean {\n if (event.key !== \"Enter\") {\n return false;\n }\n\n const { shiftEnterNewline = true, ctrlEnterNewline = true } = options;\n const isCtrl = event.ctrlKey || event.metaKey;\n\n if (shiftEnterNewline && event.shiftKey && !isCtrl) {\n return true;\n }\n\n if (ctrlEnterNewline && isCtrl && !event.shiftKey) {\n return true;\n }\n\n return false;\n}\n"],
5
- "mappings": "AAAA;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEA,SAAS,4BAA4B,QAAgE;AAC1G,SAAO,+BAA+B,SAAS,MAAmC;AACpF;AAEO,SAAS,6BACd,QACA,OACoB;AACpB,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,0BAA0B,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,8BAA8B,QAAmC;AAC/E,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,2BAA2B,MAAM;AAAA,EAC1C;AAEA,SAAO,OAAO,MAAM;AACtB;AAEO,SAAS,kBAAkB,YAAqC;AACrE,MAAI,WAAW,UAAU,WAAW,QAAQ,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO,mCAAmC,KAAK,WAAW,IAAI;AAChE;AAEO,SAAS,oBAAoB,OAA+B;AACjE,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI,KAAK,KAAK;AAE3D,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO,IAAI,KAAK,eAAe,QAAW;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC,EAAE,OAAO,IAAI;AAChB;AAEO,SAAS,sBAAsB,OAA4C;AAChF,MAAI,SAAS,MAAM;AACjB,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,oBAAoB,OAAO,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC;AAClE;AAEO,SAAS,kBAAkB,SAA2B,WAA4C;AACvG,MAAI,aAAa,cAAc,YAAY,QAAQ,SAAS,SAAS,GAAG;AACtE,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,CAAC,KAAK;AACvB;AAEO,SAAS,qBACd,gBACA,eACqC;AACrC,SAAO,sBAAsB,cAAc,EAAE;AAAA,IAC3C,CAAC,SAAoD,SAAS,YAAY,SAAS;AAAA,EACrF;AACF;AAEO,SAAS,0BAA0B,SAM9B;AACV,MAAI,QAAQ,oBAAoB,OAAO;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,oBAAoB,MAAM;AACpC,WAAO;AAAA,EACT;AAEA,MACE,QAAQ,kBACR,QAAQ,mBACR,CAAC,QAAQ,aACR,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,eACvE;AACA,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,mBAAmB,CAAC,QAAQ,YAAY,QAAQ,oBAAoB,UAAU;AACvG;AAOO,SAAS,6BACd,OACA,UAAsC,CAAC,GAC9B;AACT,MAAI,MAAM,QAAQ,SAAS;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,MAAM,mBAAmB,KAAK,IAAI;AAC9D,QAAM,SAAS,MAAM,WAAW,MAAM;AAEtC,MAAI,qBAAqB,MAAM,YAAY,CAAC,QAAQ;AAClD,WAAO;AAAA,EACT;AAEA,MAAI,oBAAoB,UAAU,CAAC,MAAM,UAAU;AACjD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;",
4
+ "sourcesContent": ["import {\n type ChatAttachment,\n type ChatLayoutMode,\n CHAT_EXPAND_LAYOUTS,\n CHAT_MESSAGE_DELIVERY_STATUSES,\n CHAT_MESSAGE_STATUS_ICONS,\n CHAT_MESSAGE_STATUS_LABELS,\n type ChatMessageDeliveryStatus,\n type ChatMessageStatus,\n type ChatMessageStatusIcons,\n} from \"./types\";\n\nexport function isChatMessageDeliveryStatus(status: ChatMessageStatus): status is ChatMessageDeliveryStatus {\n return CHAT_MESSAGE_DELIVERY_STATUSES.includes(status as ChatMessageDeliveryStatus);\n}\n\nexport function resolveChatMessageStatusIcon(\n status: ChatMessageStatus,\n icons?: ChatMessageStatusIcons & Record<string, string | undefined>\n): string | undefined {\n const custom = icons?.[status];\n if (custom) {\n return custom;\n }\n\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_ICONS[status];\n }\n\n return undefined;\n}\n\nexport function resolveChatMessageStatusLabel(status: ChatMessageStatus): string {\n if (isChatMessageDeliveryStatus(status)) {\n return CHAT_MESSAGE_STATUS_LABELS[status];\n }\n\n return String(status);\n}\n\nexport function isImageAttachment(attachment: ChatAttachment): boolean {\n if (attachment.mimeType?.startsWith(\"image/\")) {\n return true;\n }\n\n return /\\.(png|jpe?g|gif|webp|bmp|svg)$/i.test(attachment.name);\n}\n\nexport function formatChatTimestamp(value?: string | Date): string {\n if (!value) {\n return \"\";\n }\n\n const date = value instanceof Date ? value : new Date(value);\n\n if (Number.isNaN(date.getTime())) {\n return String(value);\n }\n\n return new Intl.DateTimeFormat(undefined, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n }).format(date);\n}\n\nexport function resolveAllowedLayouts(input?: ChatLayoutMode[]): ChatLayoutMode[] {\n if (input == null) {\n return [\"floating\"];\n }\n\n if (input.length === 0) {\n return [];\n }\n\n return CHAT_EXPAND_LAYOUTS.filter((mode) => input.includes(mode));\n}\n\nexport function pickInitialLayout(allowed: ChatLayoutMode[], preferred?: ChatLayoutMode): ChatLayoutMode {\n if (preferred && preferred !== \"closed\" && allowed.includes(preferred)) {\n return preferred;\n }\n\n return allowed[0] ?? \"floating\";\n}\n\nexport function getChatLayoutActions(\n allowedLayouts: ChatLayoutMode[],\n currentLayout?: ChatLayoutMode\n): Exclude<ChatLayoutMode, \"closed\">[] {\n return resolveAllowedLayouts(allowedLayouts).filter(\n (mode): mode is Exclude<ChatLayoutMode, \"closed\"> => mode !== \"closed\" && mode !== currentLayout\n );\n}\n\nexport function shouldShowChatCloseButton(options: {\n floatingTrigger?: boolean | undefined;\n embedded?: boolean | undefined;\n overlayContext?: boolean | undefined;\n effectiveLayout?: ChatLayoutMode | undefined;\n showCloseButton?: boolean | undefined;\n}): boolean {\n if (options.showCloseButton === false) {\n return false;\n }\n\n if (options.showCloseButton === true) {\n return true;\n }\n\n if (\n options.overlayContext &&\n options.floatingTrigger &&\n !options.embedded &&\n (options.effectiveLayout === \"floating\" || options.effectiveLayout === \"fullHeight\")\n ) {\n return true;\n }\n\n return Boolean(options.floatingTrigger && !options.embedded && options.effectiveLayout === \"floating\");\n}\n\n/**\n * Deprecated: the newline flags of the old `ChatComposer`. `Composer` picks the send key with `sendKey` instead\n * (`\"enter\"` = Enter sends, Shift+Enter makes a newline; `\"modEnter\"` = Ctrl/\u2318+Enter sends). Removed with\n * `ChatComposer` in the next major.\n *\n * @deprecated Use `Composer`'s `sendKey`; see the README section \"Migrating from ChatComposer\".\n */\nexport interface ChatComposerNewlineOptions {\n shiftEnterNewline?: boolean;\n ctrlEnterNewline?: boolean;\n}\n\n/**\n * Deprecated: the key rule of the old `ChatComposer` (which Enter sends, which makes a newline).\n * `Composer` resolves the same choice through `sendKey` in `resolveComposerKeyAction`, and `Chat` draws a `Composer`\n * by default. Kept for `ChatComposer` and `legacyComposer` only; removed in the next major.\n *\n * @deprecated Use `Composer`'s `sendKey`; see the README section \"Migrating from ChatComposer\".\n */\nexport function shouldComposerNewlineOnEnter(\n event: { key: string; shiftKey: boolean; ctrlKey: boolean; metaKey: boolean },\n options: ChatComposerNewlineOptions = {}\n): boolean {\n if (event.key !== \"Enter\") {\n return false;\n }\n\n const { shiftEnterNewline = true, ctrlEnterNewline = true } = options;\n const isCtrl = event.ctrlKey || event.metaKey;\n\n if (shiftEnterNewline && event.shiftKey && !isCtrl) {\n return true;\n }\n\n if (ctrlEnterNewline && isCtrl && !event.shiftKey) {\n return true;\n }\n\n return false;\n}\n"],
5
+ "mappings": "AAAA;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAEA,SAAS,4BAA4B,QAAgE;AAC1G,SAAO,+BAA+B,SAAS,MAAmC;AACpF;AAEO,SAAS,6BACd,QACA,OACoB;AACpB,QAAM,SAAS,QAAQ,MAAM;AAC7B,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AAEA,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,0BAA0B,MAAM;AAAA,EACzC;AAEA,SAAO;AACT;AAEO,SAAS,8BAA8B,QAAmC;AAC/E,MAAI,4BAA4B,MAAM,GAAG;AACvC,WAAO,2BAA2B,MAAM;AAAA,EAC1C;AAEA,SAAO,OAAO,MAAM;AACtB;AAEO,SAAS,kBAAkB,YAAqC;AACrE,MAAI,WAAW,UAAU,WAAW,QAAQ,GAAG;AAC7C,WAAO;AAAA,EACT;AAEA,SAAO,mCAAmC,KAAK,WAAW,IAAI;AAChE;AAEO,SAAS,oBAAoB,OAA+B;AACjE,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,iBAAiB,OAAO,QAAQ,IAAI,KAAK,KAAK;AAE3D,MAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,GAAG;AAChC,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,SAAO,IAAI,KAAK,eAAe,QAAW;AAAA,IACxC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC,EAAE,OAAO,IAAI;AAChB;AAEO,SAAS,sBAAsB,OAA4C;AAChF,MAAI,SAAS,MAAM;AACjB,WAAO,CAAC,UAAU;AAAA,EACpB;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,oBAAoB,OAAO,CAAC,SAAS,MAAM,SAAS,IAAI,CAAC;AAClE;AAEO,SAAS,kBAAkB,SAA2B,WAA4C;AACvG,MAAI,aAAa,cAAc,YAAY,QAAQ,SAAS,SAAS,GAAG;AACtE,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,CAAC,KAAK;AACvB;AAEO,SAAS,qBACd,gBACA,eACqC;AACrC,SAAO,sBAAsB,cAAc,EAAE;AAAA,IAC3C,CAAC,SAAoD,SAAS,YAAY,SAAS;AAAA,EACrF;AACF;AAEO,SAAS,0BAA0B,SAM9B;AACV,MAAI,QAAQ,oBAAoB,OAAO;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,oBAAoB,MAAM;AACpC,WAAO;AAAA,EACT;AAEA,MACE,QAAQ,kBACR,QAAQ,mBACR,CAAC,QAAQ,aACR,QAAQ,oBAAoB,cAAc,QAAQ,oBAAoB,eACvE;AACA,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,QAAQ,mBAAmB,CAAC,QAAQ,YAAY,QAAQ,oBAAoB,UAAU;AACvG;AAqBO,SAAS,6BACd,OACA,UAAsC,CAAC,GAC9B;AACT,MAAI,MAAM,QAAQ,SAAS;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,EAAE,oBAAoB,MAAM,mBAAmB,KAAK,IAAI;AAC9D,QAAM,SAAS,MAAM,WAAW,MAAM;AAEtC,MAAI,qBAAqB,MAAM,YAAY,CAAC,QAAQ;AAClD,WAAO;AAAA,EACT;AAEA,MAAI,oBAAoB,UAAU,CAAC,MAAM,UAAU;AACjD,WAAO;AAAA,EACT;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }