@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
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,12 @@
1
+ import { type Accessor } from "solid-js";
2
+ /**
3
+ * While `active()`, Escape calls `onDismiss` wherever focus is and is marked as handled
4
+ * (`preventDefault()`), so a window, fullscreen panel, Modal or Sheet around stays open
5
+ * until the next press. For content shown on hover or focus, such as a tooltip, which
6
+ * Escape must hide without moving the pointer or focus (WCAG 1.4.13).
7
+ *
8
+ * The listener runs in the capture phase on `document`: those surfaces listen on
9
+ * `document` in the bubble phase, as do Solid's delegated `onKeyDown` handlers, and a
10
+ * surface opened before the content showed would otherwise see the key first.
11
+ */
12
+ export declare function createDismissOnEscape(active: Accessor<boolean>, onDismiss: () => void): void;
@@ -0,0 +1,14 @@
1
+ import { createEffect as o, onCleanup as c } from "solid-js";
2
+ function i(t, r) {
3
+ o(() => {
4
+ if (!t()) return;
5
+ const e = (n) => {
6
+ n.key === "Escape" && (n.preventDefault(), r());
7
+ };
8
+ document.addEventListener("keydown", e, !0), c(() => document.removeEventListener("keydown", e, !0));
9
+ });
10
+ }
11
+ export {
12
+ i as createDismissOnEscape
13
+ };
14
+ //# sourceMappingURL=createDismissOnEscape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDismissOnEscape.js","sources":["../../src/primitives/createDismissOnEscape.ts"],"sourcesContent":["import { type Accessor, createEffect, onCleanup } from \"solid-js\";\n\n/**\n * While `active()`, Escape calls `onDismiss` wherever focus is and is marked as handled\n * (`preventDefault()`), so a window, fullscreen panel, Modal or Sheet around stays open\n * until the next press. For content shown on hover or focus, such as a tooltip, which\n * Escape must hide without moving the pointer or focus (WCAG 1.4.13).\n *\n * The listener runs in the capture phase on `document`: those surfaces listen on\n * `document` in the bubble phase, as do Solid's delegated `onKeyDown` handlers, and a\n * surface opened before the content showed would otherwise see the key first.\n */\nexport function createDismissOnEscape(active: Accessor<boolean>, onDismiss: () => void): void {\n createEffect(() => {\n if (!active()) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Escape\") return;\n event.preventDefault();\n onDismiss();\n };\n document.addEventListener(\"keydown\", onKeyDown, true);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown, true));\n });\n}\n"],"names":["createDismissOnEscape","active","onDismiss","createEffect","onKeyDown","event","onCleanup"],"mappings":";AAYO,SAASA,EAAsBC,GAA2BC,GAA6B;AAC5F,EAAAC,EAAa,MAAM;AACjB,QAAI,CAACF,IAAU;AACf,UAAMG,IAAY,CAACC,MAA+B;AAChD,MAAIA,EAAM,QAAQ,aAClBA,EAAM,eAAA,GACNH,EAAA;AAAA,IACF;AACA,aAAS,iBAAiB,WAAWE,GAAW,EAAI,GACpDE,EAAU,MAAM,SAAS,oBAAoB,WAAWF,GAAW,EAAI,CAAC;AAAA,EAC1E,CAAC;AACH;"}
@@ -1,4 +1,6 @@
1
1
  import { type Accessor } from "solid-js";
2
+ /** Elements in the Tab order (hidden ones match too). */
3
+ export declare const FOCUSABLE = "a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex=\"-1\"])";
2
4
  export interface CreateFocusTrapOptions {
3
5
  /** Trap is active only while this returns true. */
4
6
  active: Accessor<boolean>;
@@ -8,6 +10,11 @@ export interface CreateFocusTrapOptions {
8
10
  restoreFocus?: boolean;
9
11
  /** Focus the first focusable element on activate. */
10
12
  autoFocus?: boolean;
13
+ /**
14
+ * Checked on every Tab. While it returns false the trap leaves the key alone, so a trap stacked above
15
+ * this one (a dialog opened from inside the container) handles it. Defaults to always true.
16
+ */
17
+ isTopmost?: () => boolean;
11
18
  }
12
19
  /**
13
20
  * Confines Tab/Shift+Tab focus within `container` while `active`. Restores
@@ -1,31 +1,32 @@
1
1
  import { createEffect as d, onCleanup as m } from "solid-js";
2
- const b = 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';
3
- function v(t) {
4
- const i = t.restoreFocus ?? !0, l = t.autoFocus ?? !0;
2
+ const p = 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])';
3
+ function b(o) {
4
+ const i = o.restoreFocus ?? !0, l = o.autoFocus ?? !0;
5
5
  d(() => {
6
- if (!t.active()) return;
7
- const n = t.container();
8
- if (!n) return;
9
- const u = document.activeElement, a = () => Array.from(n.querySelectorAll(b)).filter(
6
+ if (!o.active()) return;
7
+ const t = o.container();
8
+ if (!t) return;
9
+ const s = document.activeElement, a = () => Array.from(t.querySelectorAll(p)).filter(
10
10
  (e) => e.offsetParent !== null || e === document.activeElement
11
11
  );
12
- l && (a()[0] ?? n).focus({ preventScroll: !0 });
12
+ l && !t.contains(document.activeElement) && (a()[0] ?? t).focus({ preventScroll: !0 });
13
13
  const f = (e) => {
14
- if (e.key !== "Tab") return;
15
- const r = a(), o = r[0], c = r[r.length - 1];
16
- if (!o || !c) {
17
- e.preventDefault();
14
+ if (e.key !== "Tab" || o.isTopmost && !o.isTopmost()) return;
15
+ const u = a(), n = u[0], r = u[u.length - 1];
16
+ if (!n || !r) {
17
+ e.preventDefault(), t.focus({ preventScroll: !0 });
18
18
  return;
19
19
  }
20
- const s = document.activeElement;
21
- e.shiftKey && s === o ? (e.preventDefault(), c.focus()) : !e.shiftKey && s === c ? (e.preventDefault(), o.focus()) : n.contains(s) || (e.preventDefault(), o.focus());
20
+ const c = document.activeElement;
21
+ c === t ? (e.preventDefault(), (e.shiftKey ? r : n).focus()) : e.shiftKey && c === n ? (e.preventDefault(), r.focus()) : !e.shiftKey && c === r ? (e.preventDefault(), n.focus()) : t.contains(c) || (e.preventDefault(), n.focus());
22
22
  };
23
23
  document.addEventListener("keydown", f, !0), m(() => {
24
- document.removeEventListener("keydown", f, !0), i && u && u.focus({ preventScroll: !0 });
24
+ document.removeEventListener("keydown", f, !0), i && s && !t.contains(s) && s.focus({ preventScroll: !0 });
25
25
  });
26
26
  });
27
27
  }
28
28
  export {
29
- v as createFocusTrap
29
+ p as FOCUSABLE,
30
+ b as createFocusTrap
30
31
  };
31
32
  //# sourceMappingURL=createFocusTrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFocusTrap.js","sources":["../../src/primitives/createFocusTrap.ts"],"sourcesContent":["import { type Accessor, createEffect, onCleanup } from \"solid-js\";\n\nconst FOCUSABLE =\n 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n\nexport interface CreateFocusTrapOptions {\n /** Trap is active only while this returns true. */\n active: Accessor<boolean>;\n /** The element whose focusable descendants are trapped. */\n container: Accessor<HTMLElement | undefined>;\n /** Restore focus to the previously focused element on deactivate. */\n restoreFocus?: boolean;\n /** Focus the first focusable element on activate. */\n autoFocus?: boolean;\n}\n\n/**\n * Confines Tab/Shift+Tab focus within `container` while `active`. Restores\n * focus to the previously focused element on teardown. Solid port of\n * summer-ui's useFocusTrap.\n */\nexport function createFocusTrap(options: CreateFocusTrapOptions): void {\n const restoreFocus = options.restoreFocus ?? true;\n const autoFocus = options.autoFocus ?? true;\n\n createEffect(() => {\n if (!options.active()) return;\n const container = options.container();\n if (!container) return;\n\n const prevFocused = document.activeElement as HTMLElement | null;\n\n const focusables = (): HTMLElement[] =>\n Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.offsetParent !== null || el === document.activeElement\n );\n\n if (autoFocus) {\n (focusables()[0] ?? container).focus({ preventScroll: true });\n }\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\") return;\n const items = focusables();\n const first = items[0];\n const last = items[items.length - 1];\n if (!first || !last) {\n event.preventDefault();\n return;\n }\n const activeEl = document.activeElement;\n if (event.shiftKey && activeEl === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && activeEl === last) {\n event.preventDefault();\n first.focus();\n } else if (!container.contains(activeEl)) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown, true);\n onCleanup(() => {\n document.removeEventListener(\"keydown\", onKeyDown, true);\n if (restoreFocus && prevFocused) {\n prevFocused.focus({ preventScroll: true });\n }\n });\n });\n}\n"],"names":["FOCUSABLE","createFocusTrap","options","restoreFocus","autoFocus","createEffect","container","prevFocused","focusables","el","onKeyDown","event","items","first","last","activeEl","onCleanup"],"mappings":";AAEA,MAAMA,IACJ;AAkBK,SAASC,EAAgBC,GAAuC;AACrE,QAAMC,IAAeD,EAAQ,gBAAgB,IACvCE,IAAYF,EAAQ,aAAa;AAEvC,EAAAG,EAAa,MAAM;AACjB,QAAI,CAACH,EAAQ,SAAU;AACvB,UAAMI,IAAYJ,EAAQ,UAAA;AAC1B,QAAI,CAACI,EAAW;AAEhB,UAAMC,IAAc,SAAS,eAEvBC,IAAa,MACjB,MAAM,KAAKF,EAAU,iBAA8BN,CAAS,CAAC,EAAE;AAAA,MAC7D,CAACS,MAAOA,EAAG,iBAAiB,QAAQA,MAAO,SAAS;AAAA,IAAA;AAGxD,IAAIL,MACDI,EAAA,EAAa,CAAC,KAAKF,GAAW,MAAM,EAAE,eAAe,IAAM;AAG9D,UAAMI,IAAY,CAACC,MAA+B;AAChD,UAAIA,EAAM,QAAQ,MAAO;AACzB,YAAMC,IAAQJ,EAAA,GACRK,IAAQD,EAAM,CAAC,GACfE,IAAOF,EAAMA,EAAM,SAAS,CAAC;AACnC,UAAI,CAACC,KAAS,CAACC,GAAM;AACnB,QAAAH,EAAM,eAAA;AACN;AAAA,MACF;AACA,YAAMI,IAAW,SAAS;AAC1B,MAAIJ,EAAM,YAAYI,MAAaF,KACjCF,EAAM,eAAA,GACNG,EAAK,MAAA,KACI,CAACH,EAAM,YAAYI,MAAaD,KACzCH,EAAM,eAAA,GACNE,EAAM,MAAA,KACIP,EAAU,SAASS,CAAQ,MACrCJ,EAAM,eAAA,GACNE,EAAM,MAAA;AAAA,IAEV;AAEA,aAAS,iBAAiB,WAAWH,GAAW,EAAI,GACpDM,EAAU,MAAM;AACd,eAAS,oBAAoB,WAAWN,GAAW,EAAI,GACnDP,KAAgBI,KAClBA,EAAY,MAAM,EAAE,eAAe,GAAA,CAAM;AAAA,IAE7C,CAAC;AAAA,EACH,CAAC;AACH;"}
1
+ {"version":3,"file":"createFocusTrap.js","sources":["../../src/primitives/createFocusTrap.ts"],"sourcesContent":["import { type Accessor, createEffect, onCleanup } from \"solid-js\";\n\n/** Elements in the Tab order (hidden ones match too). */\nexport const FOCUSABLE =\n 'a[href],button:not([disabled]),textarea:not([disabled]),input:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n\nexport interface CreateFocusTrapOptions {\n /** Trap is active only while this returns true. */\n active: Accessor<boolean>;\n /** The element whose focusable descendants are trapped. */\n container: Accessor<HTMLElement | undefined>;\n /** Restore focus to the previously focused element on deactivate. */\n restoreFocus?: boolean;\n /** Focus the first focusable element on activate. */\n autoFocus?: boolean;\n /**\n * Checked on every Tab. While it returns false the trap leaves the key alone, so a trap stacked above\n * this one (a dialog opened from inside the container) handles it. Defaults to always true.\n */\n isTopmost?: () => boolean;\n}\n\n/**\n * Confines Tab/Shift+Tab focus within `container` while `active`. Restores\n * focus to the previously focused element on teardown. Solid port of\n * summer-ui's useFocusTrap.\n */\nexport function createFocusTrap(options: CreateFocusTrapOptions): void {\n const restoreFocus = options.restoreFocus ?? true;\n const autoFocus = options.autoFocus ?? true;\n\n createEffect(() => {\n if (!options.active()) return;\n const container = options.container();\n if (!container) return;\n\n const prevFocused = document.activeElement as HTMLElement | null;\n\n const focusables = (): HTMLElement[] =>\n Array.from(container.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => el.offsetParent !== null || el === document.activeElement\n );\n\n // A child that has already taken the focus (one focusing itself on mount) keeps it; the trap\n // only brings in a focus that is still outside.\n if (autoFocus && !container.contains(document.activeElement)) {\n (focusables()[0] ?? container).focus({ preventScroll: true });\n }\n\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.key !== \"Tab\") return;\n // Read at key time, not tracked: it is a plain callback, and a new identity per render must not\n // re-arm the trap.\n if (options.isTopmost && !options.isTopmost()) return;\n const items = focusables();\n const first = items[0];\n const last = items[items.length - 1];\n if (!first || !last) {\n event.preventDefault();\n // Nothing left to tab through (e.g. every control disabled) and Chromium has dropped the\n // focus to <body>: pull it back into the container instead of leaving it behind the dialog.\n container.focus({ preventScroll: true });\n return;\n }\n const activeEl = document.activeElement;\n if (activeEl === container) {\n // The container itself holds the focus (a press on its empty area, or the `autoFocus`\n // fallback): it is not a tab stop, so the browser would step to the page behind it.\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n } else if (event.shiftKey && activeEl === first) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && activeEl === last) {\n event.preventDefault();\n first.focus();\n } else if (!container.contains(activeEl)) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener(\"keydown\", onKeyDown, true);\n onCleanup(() => {\n document.removeEventListener(\"keydown\", onKeyDown, true);\n // Restoring a node from inside the container is meaningless: that node is being torn down\n // with it, and focusing a detached element drops the focus to <body>, undoing whatever the\n // opener restored first. The element to go back to is the one focused before the trap armed,\n // which can be the container's own field when a caller focuses it before the trap gets here.\n if (restoreFocus && prevFocused && !container.contains(prevFocused)) {\n prevFocused.focus({ preventScroll: true });\n }\n });\n });\n}\n"],"names":["FOCUSABLE","createFocusTrap","options","restoreFocus","autoFocus","createEffect","container","prevFocused","focusables","el","onKeyDown","event","items","first","last","activeEl","onCleanup"],"mappings":";AAGO,MAAMA,IACX;AAuBK,SAASC,EAAgBC,GAAuC;AACrE,QAAMC,IAAeD,EAAQ,gBAAgB,IACvCE,IAAYF,EAAQ,aAAa;AAEvC,EAAAG,EAAa,MAAM;AACjB,QAAI,CAACH,EAAQ,SAAU;AACvB,UAAMI,IAAYJ,EAAQ,UAAA;AAC1B,QAAI,CAACI,EAAW;AAEhB,UAAMC,IAAc,SAAS,eAEvBC,IAAa,MACjB,MAAM,KAAKF,EAAU,iBAA8BN,CAAS,CAAC,EAAE;AAAA,MAC7D,CAACS,MAAOA,EAAG,iBAAiB,QAAQA,MAAO,SAAS;AAAA,IAAA;AAKxD,IAAIL,KAAa,CAACE,EAAU,SAAS,SAAS,aAAa,MACxDE,EAAA,EAAa,CAAC,KAAKF,GAAW,MAAM,EAAE,eAAe,IAAM;AAG9D,UAAMI,IAAY,CAACC,MAA+B;AAIhD,UAHIA,EAAM,QAAQ,SAGdT,EAAQ,aAAa,CAACA,EAAQ,YAAa;AAC/C,YAAMU,IAAQJ,EAAA,GACRK,IAAQD,EAAM,CAAC,GACfE,IAAOF,EAAMA,EAAM,SAAS,CAAC;AACnC,UAAI,CAACC,KAAS,CAACC,GAAM;AACnB,QAAAH,EAAM,eAAA,GAGNL,EAAU,MAAM,EAAE,eAAe,GAAA,CAAM;AACvC;AAAA,MACF;AACA,YAAMS,IAAW,SAAS;AAC1B,MAAIA,MAAaT,KAGfK,EAAM,eAAA,IACLA,EAAM,WAAWG,IAAOD,GAAO,MAAA,KACvBF,EAAM,YAAYI,MAAaF,KACxCF,EAAM,eAAA,GACNG,EAAK,MAAA,KACI,CAACH,EAAM,YAAYI,MAAaD,KACzCH,EAAM,eAAA,GACNE,EAAM,MAAA,KACIP,EAAU,SAASS,CAAQ,MACrCJ,EAAM,eAAA,GACNE,EAAM,MAAA;AAAA,IAEV;AAEA,aAAS,iBAAiB,WAAWH,GAAW,EAAI,GACpDM,EAAU,MAAM;AACd,eAAS,oBAAoB,WAAWN,GAAW,EAAI,GAKnDP,KAAgBI,KAAe,CAACD,EAAU,SAASC,CAAW,KAChEA,EAAY,MAAM,EAAE,eAAe,GAAA,CAAM;AAAA,IAE7C,CAAC;AAAA,EACH,CAAC;AACH;"}
@@ -0,0 +1,26 @@
1
+ import { type Accessor, type JSX, type ResolvedChildren } from "solid-js";
2
+ /**
3
+ * Whether `helperText` is shown under its control, so that it describes the control. TextFieldWrapper shows none for
4
+ * an inline field, and without helper text it draws a blank line in its place, which describes nothing.
5
+ */
6
+ export declare function hasHelperText(helperText: JSX.Element, inline?: boolean): boolean;
7
+ export interface HelperTextOptions {
8
+ /** The field is inline: TextFieldWrapper draws no helper text for it. */
9
+ inline?: () => boolean | undefined;
10
+ /** The caller's own `aria-describedby`, kept after the helper text. */
11
+ describedBy?: () => string | undefined;
12
+ }
13
+ export interface HelperText {
14
+ /** The helper text, read once: draw this one (TextFieldWrapper takes it as `helperText`). */
15
+ text: Accessor<ResolvedChildren>;
16
+ /** The helper text's id (TextFieldWrapper takes it as `helperTextId`). */
17
+ id: string;
18
+ /** The control's `aria-describedby`: the helper text's id while it is shown, then the caller's own ids. */
19
+ describedBy: () => string | undefined;
20
+ }
21
+ /**
22
+ * Links a control to the helper text drawn under it, by TextFieldWrapper or by the component itself (Rating). The
23
+ * helper text is read here, once, and not for an inline field, which does not draw it: markup passed as a prop is
24
+ * created anew on every read, and during hydration a copy the server never rendered has no DOM node.
25
+ */
26
+ export declare function createHelperText(helperText: () => JSX.Element, options?: HelperTextOptions): HelperText;
@@ -0,0 +1,14 @@
1
+ import { children as n } from "solid-js";
2
+ import { createId as o } from "./createId.js";
3
+ function d(r, e) {
4
+ return !e && !!r;
5
+ }
6
+ function a(r, e = {}) {
7
+ const i = o(void 0, "smwb-helper-text"), t = n(() => e.inline?.() ? void 0 : r());
8
+ return { text: t, id: i, describedBy: () => [d(t(), e.inline?.()) ? i : void 0, e.describedBy?.()].filter(Boolean).join(" ") || void 0 };
9
+ }
10
+ export {
11
+ a as createHelperText,
12
+ d as hasHelperText
13
+ };
14
+ //# sourceMappingURL=createHelperText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createHelperText.js","sources":["../../src/primitives/createHelperText.ts"],"sourcesContent":["import { type Accessor, type JSX, type ResolvedChildren, children } from \"solid-js\";\nimport { createId } from \"./createId\";\n\n/**\n * Whether `helperText` is shown under its control, so that it describes the control. TextFieldWrapper shows none for\n * an inline field, and without helper text it draws a blank line in its place, which describes nothing.\n */\nexport function hasHelperText(helperText: JSX.Element, inline?: boolean): boolean {\n return !inline && Boolean(helperText);\n}\n\nexport interface HelperTextOptions {\n /** The field is inline: TextFieldWrapper draws no helper text for it. */\n inline?: () => boolean | undefined;\n /** The caller's own `aria-describedby`, kept after the helper text. */\n describedBy?: () => string | undefined;\n}\n\nexport interface HelperText {\n /** The helper text, read once: draw this one (TextFieldWrapper takes it as `helperText`). */\n text: Accessor<ResolvedChildren>;\n /** The helper text's id (TextFieldWrapper takes it as `helperTextId`). */\n id: string;\n /** The control's `aria-describedby`: the helper text's id while it is shown, then the caller's own ids. */\n describedBy: () => string | undefined;\n}\n\n/**\n * Links a control to the helper text drawn under it, by TextFieldWrapper or by the component itself (Rating). The\n * helper text is read here, once, and not for an inline field, which does not draw it: markup passed as a prop is\n * created anew on every read, and during hydration a copy the server never rendered has no DOM node.\n */\nexport function createHelperText(helperText: () => JSX.Element, options: HelperTextOptions = {}): HelperText {\n const id = createId(undefined, \"smwb-helper-text\");\n const text = children(() => (options.inline?.() ? undefined : helperText()));\n const describedBy = (): string | undefined =>\n [hasHelperText(text(), options.inline?.()) ? id : undefined, options.describedBy?.()].filter(Boolean).join(\" \") ||\n undefined;\n return { text, id, describedBy };\n}\n"],"names":["hasHelperText","helperText","inline","createHelperText","options","id","createId","text","children"],"mappings":";;AAOO,SAASA,EAAcC,GAAyBC,GAA2B;AAChF,SAAO,CAACA,KAAU,EAAQD;AAC5B;AAuBO,SAASE,EAAiBF,GAA+BG,IAA6B,IAAgB;AAC3G,QAAMC,IAAKC,EAAS,QAAW,kBAAkB,GAC3CC,IAAOC,EAAS,MAAOJ,EAAQ,aAAa,SAAYH,GAAa;AAI3E,SAAO,EAAE,MAAAM,GAAM,IAAAF,GAAI,aAHC,MAClB,CAACL,EAAcO,KAAQH,EAAQ,UAAU,IAAIC,IAAK,QAAWD,EAAQ,eAAe,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,KAC9G,OACiB;AACrB;"}
@@ -0,0 +1,23 @@
1
+ import { type Accessor } from "solid-js";
2
+ export interface CreateKeyboardShortcutOptions {
3
+ /** The shortcut in `Kbd` key names, e.g. `["Mod", "K"]` (Command on macOS, Ctrl elsewhere). */
4
+ keys: string[];
5
+ /** Runs on a matching keydown anywhere in the document; the event's default action is prevented. */
6
+ onTrigger: (event: KeyboardEvent) => void;
7
+ /** Listen only while this returns true; listening is on by default. */
8
+ enabled?: Accessor<boolean> | undefined;
9
+ }
10
+ /**
11
+ * Binds a global keyboard shortcut while the calling component is alive, e.g. the Mod+K that opens a
12
+ * `CommandPalette`. The component that reacts to the shortcut binds it, not the one it opens, so two
13
+ * palettes never bind the same keys and any other opener can use them too. The same `keys` array draws
14
+ * the hint: `<Kbd keys={["Mod", "K"]} />`.
15
+ *
16
+ * One `keydown` listener sits on the document while `enabled` is on. A press an editor already handled
17
+ * (`defaultPrevented`), a key repeat and an IME composition are ignored. On a match the default action is
18
+ * prevented — Chrome and Firefox otherwise move the focus to their own search box on Ctrl+K — and
19
+ * `onTrigger` runs. `keys` and `onTrigger` are read when the key is pressed, so a getter on the options
20
+ * object stays live. Nothing runs on the server.
21
+ */
22
+ export declare function createKeyboardShortcut(options: CreateKeyboardShortcutOptions): void;
23
+ export default createKeyboardShortcut;
@@ -0,0 +1,16 @@
1
+ import { createEffect as n, onCleanup as d } from "solid-js";
2
+ import { matchesKeyboardShortcut as u } from "../utils/keyboardShortcut.js";
3
+ function f(r) {
4
+ const o = r.enabled ?? (() => !0);
5
+ n(() => {
6
+ if (!o()) return;
7
+ const t = (e) => {
8
+ e.defaultPrevented || e.repeat || e.isComposing || e.keyCode === 229 || u(e, r.keys) && (e.preventDefault(), r.onTrigger(e));
9
+ };
10
+ document.addEventListener("keydown", t), d(() => document.removeEventListener("keydown", t));
11
+ });
12
+ }
13
+ export {
14
+ f as createKeyboardShortcut
15
+ };
16
+ //# sourceMappingURL=createKeyboardShortcut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createKeyboardShortcut.js","sources":["../../src/primitives/createKeyboardShortcut.ts"],"sourcesContent":["import { type Accessor, createEffect, onCleanup } from \"solid-js\";\nimport { matchesKeyboardShortcut } from \"../utils/keyboardShortcut\";\n\nexport interface CreateKeyboardShortcutOptions {\n /** The shortcut in `Kbd` key names, e.g. `[\"Mod\", \"K\"]` (Command on macOS, Ctrl elsewhere). */\n keys: string[];\n /** Runs on a matching keydown anywhere in the document; the event's default action is prevented. */\n onTrigger: (event: KeyboardEvent) => void;\n /** Listen only while this returns true; listening is on by default. */\n enabled?: Accessor<boolean> | undefined;\n}\n\n/**\n * Binds a global keyboard shortcut while the calling component is alive, e.g. the Mod+K that opens a\n * `CommandPalette`. The component that reacts to the shortcut binds it, not the one it opens, so two\n * palettes never bind the same keys and any other opener can use them too. The same `keys` array draws\n * the hint: `<Kbd keys={[\"Mod\", \"K\"]} />`.\n *\n * One `keydown` listener sits on the document while `enabled` is on. A press an editor already handled\n * (`defaultPrevented`), a key repeat and an IME composition are ignored. On a match the default action is\n * prevented — Chrome and Firefox otherwise move the focus to their own search box on Ctrl+K — and\n * `onTrigger` runs. `keys` and `onTrigger` are read when the key is pressed, so a getter on the options\n * object stays live. Nothing runs on the server.\n */\nexport function createKeyboardShortcut(options: CreateKeyboardShortcutOptions): void {\n const enabled = options.enabled ?? ((): boolean => true);\n\n createEffect(() => {\n if (!enabled()) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n if (event.defaultPrevented || event.repeat) return;\n if (event.isComposing || event.keyCode === 229) return;\n if (!matchesKeyboardShortcut(event, options.keys)) return;\n event.preventDefault();\n options.onTrigger(event);\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n}\n\nexport default createKeyboardShortcut;\n"],"names":["createKeyboardShortcut","options","enabled","createEffect","onKeyDown","event","matchesKeyboardShortcut","onCleanup"],"mappings":";;AAwBO,SAASA,EAAuBC,GAA8C;AACnF,QAAMC,IAAUD,EAAQ,YAAY,MAAe;AAEnD,EAAAE,EAAa,MAAM;AACjB,QAAI,CAACD,IAAW;AAChB,UAAME,IAAY,CAACC,MAA+B;AAChD,MAAIA,EAAM,oBAAoBA,EAAM,UAChCA,EAAM,eAAeA,EAAM,YAAY,OACtCC,EAAwBD,GAAOJ,EAAQ,IAAI,MAChDI,EAAM,eAAA,GACNJ,EAAQ,UAAUI,CAAK;AAAA,IACzB;AACA,aAAS,iBAAiB,WAAWD,CAAS,GAC9CG,EAAU,MAAM,SAAS,oBAAoB,WAAWH,CAAS,CAAC;AAAA,EACpE,CAAC;AACH;"}
@@ -0,0 +1,19 @@
1
+ import type { JSX } from "solid-js";
2
+ type Style = JSX.CSSProperties | string | undefined;
3
+ /**
4
+ * Inline styles merged in order, each winning over the ones before it: a
5
+ * caller's `style` prop — an object or a CSS string — and the component's own
6
+ * properties. Properties set to `undefined` are left out, so an unset prop does
7
+ * not clobber a value the caller set. If one of the styles is a string, so is
8
+ * the result, with the objects written out as declarations in their place (a
9
+ * string style must stay a string: spreading it as an object drops it). A
10
+ * style that is the only one with anything set comes back as it is.
11
+ *
12
+ * The component's properties over the caller's:
13
+ * `<div style={mergeStyle(local.style, { "--smwb-x": local.x })} />`
14
+ *
15
+ * The caller's style over the component's defaults:
16
+ * `<div style={mergeStyle({ display: "flex", gap: gap() }, local.style)} />`
17
+ */
18
+ export declare function mergeStyle(...styles: Style[]): Style;
19
+ export {};
@@ -0,0 +1,9 @@
1
+ const r = (t) => Object.entries(t).filter((n) => n[1] != null), i = (t) => r(t).map(([n, e]) => `${n}:${e}`).join(";"), o = (t) => typeof t == "string" ? t !== "" : t != null && r(t).length > 0;
2
+ function f(...t) {
3
+ const n = t.filter(o);
4
+ return n.length < 2 ? n[0] : n.some((e) => typeof e == "string") ? n.map((e) => typeof e == "string" ? e : i(e)).join(";") : Object.fromEntries(n.flatMap((e) => r(e)));
5
+ }
6
+ export {
7
+ f as mergeStyle
8
+ };
9
+ //# sourceMappingURL=mergeStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeStyle.js","sources":["../../src/primitives/mergeStyle.ts"],"sourcesContent":["import type { JSX } from \"solid-js\";\n\ntype Style = JSX.CSSProperties | string | undefined;\n\n// The properties of an object style that have a value.\nconst declared = (style: JSX.CSSProperties): Array<[string, string | number]> =>\n Object.entries(style).filter((entry): entry is [string, string | number] => entry[1] != null);\n\n// An object style written out as CSS declarations.\nconst cssText = (style: JSX.CSSProperties): string =>\n declared(style)\n .map(([name, value]) => `${name}:${value}`)\n .join(\";\");\n\nconst isSet = (style: Style): style is JSX.CSSProperties | string =>\n typeof style === \"string\" ? style !== \"\" : style != null && declared(style).length > 0;\n\n/**\n * Inline styles merged in order, each winning over the ones before it: a\n * caller's `style` prop — an object or a CSS string — and the component's own\n * properties. Properties set to `undefined` are left out, so an unset prop does\n * not clobber a value the caller set. If one of the styles is a string, so is\n * the result, with the objects written out as declarations in their place (a\n * string style must stay a string: spreading it as an object drops it). A\n * style that is the only one with anything set comes back as it is.\n *\n * The component's properties over the caller's:\n * `<div style={mergeStyle(local.style, { \"--smwb-x\": local.x })} />`\n *\n * The caller's style over the component's defaults:\n * `<div style={mergeStyle({ display: \"flex\", gap: gap() }, local.style)} />`\n */\nexport function mergeStyle(...styles: Style[]): Style {\n const given = styles.filter(isSet);\n if (given.length < 2) return given[0];\n if (given.some((style) => typeof style === \"string\")) {\n return given.map((style) => (typeof style === \"string\" ? style : cssText(style))).join(\";\");\n }\n return Object.fromEntries(given.flatMap((style) => declared(style as JSX.CSSProperties))) as JSX.CSSProperties;\n}\n"],"names":["declared","style","entry","cssText","name","value","isSet","mergeStyle","styles","given"],"mappings":"AAKA,MAAMA,IAAW,CAACC,MAChB,OAAO,QAAQA,CAAK,EAAE,OAAO,CAACC,MAA8CA,EAAM,CAAC,KAAK,IAAI,GAGxFC,IAAU,CAACF,MACfD,EAASC,CAAK,EACX,IAAI,CAAC,CAACG,GAAMC,CAAK,MAAM,GAAGD,CAAI,IAAIC,CAAK,EAAE,EACzC,KAAK,GAAG,GAEPC,IAAQ,CAACL,MACb,OAAOA,KAAU,WAAWA,MAAU,KAAKA,KAAS,QAAQD,EAASC,CAAK,EAAE,SAAS;AAiBhF,SAASM,KAAcC,GAAwB;AACpD,QAAMC,IAAQD,EAAO,OAAOF,CAAK;AACjC,SAAIG,EAAM,SAAS,IAAUA,EAAM,CAAC,IAChCA,EAAM,KAAK,CAACR,MAAU,OAAOA,KAAU,QAAQ,IAC1CQ,EAAM,IAAI,CAACR,MAAW,OAAOA,KAAU,WAAWA,IAAQE,EAAQF,CAAK,CAAE,EAAE,KAAK,GAAG,IAErF,OAAO,YAAYQ,EAAM,QAAQ,CAACR,MAAUD,EAASC,CAA0B,CAAC,CAAC;AAC1F;"}
@@ -1,13 +1,25 @@
1
1
  /** Attribute marking the root of a portaled overlay layer (modal, sheet wrapper, dropdown, …). */
2
2
  export declare const OVERLAY_LAYER_ATTR = "data-smwb-overlay-layer";
3
3
  /**
4
- * True when `event` happened inside an overlay layer that does NOT contain
5
- * `node` — i.e. `node` sits underneath that layer, so the interaction is not
6
- * a "click away" from `node`.
4
+ * True when `event` happened inside an overlay layer above `node`, so the
5
+ * interaction is not a "click away" from `node`. A layer is above `node` when it
6
+ * comes later in document order (portaled after it, as everything opened from
7
+ * inside `node` is) or sits inside it. A layer that holds `node` or comes before
8
+ * it is below: a click in the Modal a select menu was opened from is a click away
9
+ * from the menu.
7
10
  */
8
11
  export declare const isEventInForeignOverlay: (event: Event, node: Element) => boolean;
9
12
  /**
10
13
  * True when `el` belongs to the topmost open overlay layer (or no layers are
11
14
  * open). Used to make Escape close only the top layer instead of every layer.
15
+ * A layer inside `el`, such as a select menu rendered into a Modal through
16
+ * `menuContainer`, is above `el` rather than part of it.
12
17
  */
13
18
  export declare const isTopOverlayLayer: (el: Element | undefined) => boolean;
19
+ /**
20
+ * True when an open overlay layer other than `el` sits above it: inside it, or
21
+ * later in document order (portaled after it). FloatingWindow and the fullscreen
22
+ * ExpansionPanel leave Escape to such a layer, e.g. a select menu opened from
23
+ * inside them. Layers earlier in document order are below `el`.
24
+ */
25
+ export declare const hasOverlayLayerAbove: (el: Element | undefined) => boolean;
@@ -1,11 +1,18 @@
1
- const e = "data-smwb-overlay-layer", r = () => typeof document > "u" ? [] : Array.from(document.querySelectorAll(`[${e}]`)), a = (n, o) => typeof n.composedPath != "function" ? !1 : n.composedPath().some((t) => t instanceof Element && t.hasAttribute(e) && !t.contains(o)), s = (n) => {
2
- if (!n) return !0;
3
- const o = r(), t = o[o.length - 1];
4
- return !t || t === n || t.contains(n) || n.contains(t);
5
- };
1
+ const r = "data-smwb-overlay-layer", s = () => typeof document > "u" ? [] : Array.from(document.querySelectorAll(`[${r}]`)), a = (o, e) => {
2
+ if (typeof o.composedPath != "function") return !1;
3
+ const t = Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_DISCONNECTED;
4
+ return o.composedPath().some(
5
+ (n) => n instanceof Element && n.hasAttribute(r) && (e.compareDocumentPosition(n) & t) !== 0
6
+ );
7
+ }, c = (o) => {
8
+ if (!o) return !0;
9
+ const e = s(), t = e[e.length - 1];
10
+ return !t || t === o || t.contains(o);
11
+ }, O = (o) => !o || !o.isConnected ? !1 : s().some((e) => (o.compareDocumentPosition(e) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0);
6
12
  export {
7
- e as OVERLAY_LAYER_ATTR,
13
+ r as OVERLAY_LAYER_ATTR,
14
+ O as hasOverlayLayerAbove,
8
15
  a as isEventInForeignOverlay,
9
- s as isTopOverlayLayer
16
+ c as isTopOverlayLayer
10
17
  };
11
18
  //# sourceMappingURL=overlayLayer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlayLayer.js","sources":["../../src/primitives/overlayLayer.ts"],"sourcesContent":["/** Attribute marking the root of a portaled overlay layer (modal, sheet wrapper, dropdown, …). */\nexport const OVERLAY_LAYER_ATTR = \"data-smwb-overlay-layer\";\n\n/** All open overlay layers in document order (last = topmost). */\nconst overlayLayers = (): Element[] =>\n typeof document === \"undefined\" ? [] : Array.from(document.querySelectorAll(`[${OVERLAY_LAYER_ATTR}]`));\n\n/**\n * True when `event` happened inside an overlay layer that does NOT contain\n * `node` — i.e. `node` sits underneath that layer, so the interaction is not\n * a \"click away\" from `node`.\n */\nexport const isEventInForeignOverlay = (event: Event, node: Element): boolean => {\n if (typeof event.composedPath !== \"function\") return false;\n return event\n .composedPath()\n .some((el) => el instanceof Element && el.hasAttribute(OVERLAY_LAYER_ATTR) && !el.contains(node));\n};\n\n/**\n * True when `el` belongs to the topmost open overlay layer (or no layers are\n * open). Used to make Escape close only the top layer instead of every layer.\n */\nexport const isTopOverlayLayer = (el: Element | undefined): boolean => {\n if (!el) return true;\n const all = overlayLayers();\n const top = all[all.length - 1];\n return !top || top === el || top.contains(el) || el.contains(top);\n};\n"],"names":["OVERLAY_LAYER_ATTR","overlayLayers","isEventInForeignOverlay","event","node","el","isTopOverlayLayer","all","top"],"mappings":"AACO,MAAMA,IAAqB,2BAG5BC,IAAgB,MACpB,OAAO,WAAa,MAAc,CAAA,IAAK,MAAM,KAAK,SAAS,iBAAiB,IAAID,CAAkB,GAAG,CAAC,GAO3FE,IAA0B,CAACC,GAAcC,MAChD,OAAOD,EAAM,gBAAiB,aAAmB,KAC9CA,EACJ,aAAA,EACA,KAAK,CAACE,MAAOA,aAAc,WAAWA,EAAG,aAAaL,CAAkB,KAAK,CAACK,EAAG,SAASD,CAAI,CAAC,GAOvFE,IAAoB,CAACD,MAAqC;AACrE,MAAI,CAACA,EAAI,QAAO;AAChB,QAAME,IAAMN,EAAA,GACNO,IAAMD,EAAIA,EAAI,SAAS,CAAC;AAC9B,SAAO,CAACC,KAAOA,MAAQH,KAAMG,EAAI,SAASH,CAAE,KAAKA,EAAG,SAASG,CAAG;AAClE;"}
1
+ {"version":3,"file":"overlayLayer.js","sources":["../../src/primitives/overlayLayer.ts"],"sourcesContent":["/** Attribute marking the root of a portaled overlay layer (modal, sheet wrapper, dropdown, …). */\nexport const OVERLAY_LAYER_ATTR = \"data-smwb-overlay-layer\";\n\n/** All open overlay layers in document order (last = topmost). */\nconst overlayLayers = (): Element[] =>\n typeof document === \"undefined\" ? [] : Array.from(document.querySelectorAll(`[${OVERLAY_LAYER_ATTR}]`));\n\n/**\n * True when `event` happened inside an overlay layer above `node`, so the\n * interaction is not a \"click away\" from `node`. A layer is above `node` when it\n * comes later in document order (portaled after it, as everything opened from\n * inside `node` is) or sits inside it. A layer that holds `node` or comes before\n * it is below: a click in the Modal a select menu was opened from is a click away\n * from the menu.\n */\nexport const isEventInForeignOverlay = (event: Event, node: Element): boolean => {\n if (typeof event.composedPath !== \"function\") return false;\n // A layer detached during the dispatch can't be ranked; it counts as above.\n const above = Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_DISCONNECTED;\n return event\n .composedPath()\n .some(\n (el) =>\n el instanceof Element && el.hasAttribute(OVERLAY_LAYER_ATTR) && (node.compareDocumentPosition(el) & above) !== 0\n );\n};\n\n/**\n * True when `el` belongs to the topmost open overlay layer (or no layers are\n * open). Used to make Escape close only the top layer instead of every layer.\n * A layer inside `el`, such as a select menu rendered into a Modal through\n * `menuContainer`, is above `el` rather than part of it.\n */\nexport const isTopOverlayLayer = (el: Element | undefined): boolean => {\n if (!el) return true;\n const all = overlayLayers();\n const top = all[all.length - 1];\n return !top || top === el || top.contains(el);\n};\n\n/**\n * True when an open overlay layer other than `el` sits above it: inside it, or\n * later in document order (portaled after it). FloatingWindow and the fullscreen\n * ExpansionPanel leave Escape to such a layer, e.g. a select menu opened from\n * inside them. Layers earlier in document order are below `el`.\n */\nexport const hasOverlayLayerAbove = (el: Element | undefined): boolean => {\n if (!el || !el.isConnected) return false;\n return overlayLayers().some((layer) => (el.compareDocumentPosition(layer) & Node.DOCUMENT_POSITION_FOLLOWING) !== 0);\n};\n"],"names":["OVERLAY_LAYER_ATTR","overlayLayers","isEventInForeignOverlay","event","node","above","el","isTopOverlayLayer","all","top","hasOverlayLayerAbove","layer"],"mappings":"AACO,MAAMA,IAAqB,2BAG5BC,IAAgB,MACpB,OAAO,WAAa,MAAc,CAAA,IAAK,MAAM,KAAK,SAAS,iBAAiB,IAAID,CAAkB,GAAG,CAAC,GAU3FE,IAA0B,CAACC,GAAcC,MAA2B;AAC/E,MAAI,OAAOD,EAAM,gBAAiB,WAAY,QAAO;AAErD,QAAME,IAAQ,KAAK,8BAA8B,KAAK;AACtD,SAAOF,EACJ,eACA;AAAA,IACC,CAACG,MACCA,aAAc,WAAWA,EAAG,aAAaN,CAAkB,MAAMI,EAAK,wBAAwBE,CAAE,IAAID,OAAW;AAAA,EAAA;AAEvH,GAQaE,IAAoB,CAACD,MAAqC;AACrE,MAAI,CAACA,EAAI,QAAO;AAChB,QAAME,IAAMP,EAAA,GACNQ,IAAMD,EAAIA,EAAI,SAAS,CAAC;AAC9B,SAAO,CAACC,KAAOA,MAAQH,KAAMG,EAAI,SAASH,CAAE;AAC9C,GAQaI,IAAuB,CAACJ,MAC/B,CAACA,KAAM,CAACA,EAAG,cAAoB,KAC5BL,EAAA,EAAgB,KAAK,CAACU,OAAWL,EAAG,wBAAwBK,CAAK,IAAI,KAAK,iCAAiC,CAAC;"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hands focus back to `opener`, the element that had it when an overlay opened, once the
3
+ * overlay `root` closes. Focus the app moved elsewhere on purpose stays where it is: it
4
+ * is restored only while it is still inside `root` or has been dropped on the body (the
5
+ * root is gone, or the element that had it was removed). An opener that left the document
6
+ * is skipped, and one that cannot take focus (disabled, hidden) simply ignores the call.
7
+ */
8
+ export declare function restoreFocus(opener: Element | null, root: Element | null | undefined): void;
@@ -0,0 +1,10 @@
1
+ function c(t, n) {
2
+ if (!(t instanceof HTMLElement) || t === document.body || !t.isConnected)
3
+ return;
4
+ const e = document.activeElement;
5
+ e && e !== document.body && !n?.contains(e) || t.focus({ preventScroll: !0 });
6
+ }
7
+ export {
8
+ c as restoreFocus
9
+ };
10
+ //# sourceMappingURL=restoreFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restoreFocus.js","sources":["../../src/primitives/restoreFocus.ts"],"sourcesContent":["/**\n * Hands focus back to `opener`, the element that had it when an overlay opened, once the\n * overlay `root` closes. Focus the app moved elsewhere on purpose stays where it is: it\n * is restored only while it is still inside `root` or has been dropped on the body (the\n * root is gone, or the element that had it was removed). An opener that left the document\n * is skipped, and one that cannot take focus (disabled, hidden) simply ignores the call.\n */\nexport function restoreFocus(opener: Element | null, root: Element | null | undefined): void {\n if (!(opener instanceof HTMLElement) || opener === document.body || !opener.isConnected) {\n return;\n }\n const active = document.activeElement;\n if (active && active !== document.body && !root?.contains(active)) {\n return;\n }\n opener.focus({ preventScroll: true });\n}\n"],"names":["restoreFocus","opener","root","active"],"mappings":"AAOO,SAASA,EAAaC,GAAwBC,GAAwC;AAC3F,MAAI,EAAED,aAAkB,gBAAgBA,MAAW,SAAS,QAAQ,CAACA,EAAO;AAC1E;AAEF,QAAME,IAAS,SAAS;AACxB,EAAIA,KAAUA,MAAW,SAAS,QAAQ,CAACD,GAAM,SAASC,CAAM,KAGhEF,EAAO,MAAM,EAAE,eAAe,GAAA,CAAM;AACtC;"}
@@ -1,6 +1,7 @@
1
1
  import { createEffect, createSignal, mergeProps, onCleanup, onMount, splitProps } from "solid-js";
2
2
  import cn from "clsx";
3
3
  import { mergeRefs } from "../../../primitives/mergeRefs";
4
+ import { mergeStyle } from "../../../primitives/mergeStyle";
4
5
  const isNumberString = (n) => {
5
6
  const number = parseFloat(n);
6
7
  return !isNaN(number) && isFinite(number);
@@ -144,17 +145,12 @@ function AnimateHeight(props) {
144
145
  clearTimeout(timeoutId);
145
146
  clearTimeout(classesTimeoutId);
146
147
  });
147
- const componentStyle = () => {
148
- const base = {
149
- ...typeof local.style === "object" && local.style ? local.style : {},
150
- height: toCssHeight(currentHeight()),
151
- overflow: overflow() ?? "visible"
152
- };
153
- if (useTransitions() && local.applyInlineTransitions) {
154
- base.transition = `height ${local.duration}ms ${local.easing} ${local.delay}ms`;
155
- }
156
- return base;
157
- };
148
+ const componentStyle = () => mergeStyle(local.style, {
149
+ height: toCssHeight(currentHeight()),
150
+ overflow: overflow() ?? "visible",
151
+ // Unset while not animating, so a transition the caller set stays.
152
+ transition: useTransitions() && local.applyInlineTransitions ? `height ${local.duration}ms ${local.easing} ${local.delay}ms` : void 0
153
+ });
158
154
  const contentStyle = () => {
159
155
  if (!local.animateOpacity) return {};
160
156
  return {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/base/animateHeight/animateHeight.tsx"],"sourcesContent":["// Solid port of react-animate-height (MIT, © Stanko Tadić)\n// https://github.com/Stanko/react-animate-height\nimport { type JSX, type ParentProps, createEffect, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\n\nexport type Height = \"auto\" | number | `${number}%`;\ntype Overflow = \"auto\" | \"visible\" | \"hidden\" | undefined;\n\ninterface AnimationStateClasses {\n animating: string;\n animatingUp: string;\n animatingDown: string;\n animatingToHeightZero: string;\n animatingToHeightAuto: string;\n animatingToHeightSpecific: string;\n static: string;\n staticHeightZero: string;\n staticHeightAuto: string;\n staticHeightSpecific: string;\n}\n\nconst isNumberString = (n: string): boolean => {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n};\n\nconst isPercentage = (height: Height): height is `${number}%` =>\n typeof height === \"string\" && height[height.length - 1] === \"%\" && isNumberString(height.substring(0, height.length - 1));\n\nconst hideContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"none\";\n};\nconst showContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"\";\n};\n\nconst ANIMATION_STATE_CLASSES: AnimationStateClasses = {\n animating: \"rah-animating\",\n animatingUp: \"rah-animating--up\",\n animatingDown: \"rah-animating--down\",\n animatingToHeightZero: \"rah-animating--to-height-zero\",\n animatingToHeightAuto: \"rah-animating--to-height-auto\",\n animatingToHeightSpecific: \"rah-animating--to-height-specific\",\n static: \"rah-static\",\n staticHeightZero: \"rah-static--height-zero\",\n staticHeightAuto: \"rah-static--height-auto\",\n staticHeightSpecific: \"rah-static--height-specific\",\n};\n\nconst getStaticStateClasses = (s: AnimationStateClasses, height: Height): string =>\n cn({\n [s.static]: true,\n [s.staticHeightZero]: height === 0,\n [s.staticHeightSpecific]: typeof height === \"number\" && height > 0,\n [s.staticHeightAuto]: height === \"auto\",\n });\n\nconst toCssHeight = (height: Height): string => (typeof height === \"number\" ? `${height}px` : height);\n\nexport interface AnimateHeightProps extends JSX.HTMLAttributes<HTMLDivElement> {\n animateOpacity?: boolean;\n animationStateClasses?: Partial<AnimationStateClasses>;\n applyInlineTransitions?: boolean;\n contentClassName?: string;\n delay?: number;\n duration?: number;\n easing?: string;\n height: Height;\n onHeightAnimationEnd?: (newHeight: Height) => void;\n onHeightAnimationStart?: (newHeight: Height) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AnimateHeight(props: ParentProps<AnimateHeightProps>): JSX.Element {\n const merged = mergeProps(\n { animateOpacity: false, applyInlineTransitions: true, delay: 0, duration: 300, easing: \"ease\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"animateOpacity\",\n \"animationStateClasses\",\n \"applyInlineTransitions\",\n \"children\",\n \"class\",\n \"contentClassName\",\n \"delay\",\n \"duration\",\n \"easing\",\n \"height\",\n \"onHeightAnimationEnd\",\n \"onHeightAnimationStart\",\n \"style\",\n \"ref\",\n ]);\n\n const stateClasses: AnimationStateClasses = { ...ANIMATION_STATE_CLASSES, ...local.animationStateClasses };\n\n let contentEl: HTMLDivElement | undefined;\n let prevHeight: Height = local.height;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let classesTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n let initHeight: Height = local.height;\n let initOverflow: Overflow = \"visible\";\n if (typeof initHeight === \"number\") {\n initHeight = initHeight < 0 ? 0 : initHeight;\n initOverflow = \"hidden\";\n } else if (isPercentage(initHeight)) {\n initHeight = initHeight === \"0%\" ? 0 : initHeight;\n initOverflow = \"hidden\";\n }\n\n const [currentHeight, setCurrentHeight] = createSignal<Height>(initHeight);\n const [overflow, setOverflow] = createSignal<Overflow>(initOverflow);\n const [useTransitions, setUseTransitions] = createSignal(false);\n const [stateClassNames, setStateClassNames] = createSignal(getStaticStateClasses(stateClasses, local.height));\n\n onMount(() => hideContent(contentEl, currentHeight()));\n\n createEffect(() => {\n const height = local.height;\n if (height !== prevHeight && contentEl) {\n showContent(contentEl, prevHeight);\n contentEl.style.overflow = \"hidden\";\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.overflow = \"\";\n\n const totalDuration = local.duration + local.delay;\n let newHeight: Height;\n let timeoutHeight: Height;\n let timeoutOverflow: Overflow = \"hidden\";\n const isCurrentHeightAuto = prevHeight === \"auto\";\n\n if (typeof height === \"number\") {\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n } else if (isPercentage(height)) {\n newHeight = height === \"0%\" ? 0 : height;\n timeoutHeight = newHeight;\n } else {\n newHeight = contentHeight;\n timeoutHeight = \"auto\";\n timeoutOverflow = undefined;\n }\n\n if (isCurrentHeightAuto) {\n timeoutHeight = newHeight;\n newHeight = contentHeight;\n }\n\n const animatingClassNames = cn({\n [stateClasses.animating]: true,\n [stateClasses.animatingUp]:\n prevHeight === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height < prevHeight),\n [stateClasses.animatingDown]:\n height === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height > prevHeight),\n [stateClasses.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.animatingToHeightAuto]: timeoutHeight === \"auto\",\n [stateClasses.animatingToHeightSpecific]: typeof timeoutHeight === \"number\" && timeoutHeight > 0,\n });\n const finalClassNames = getStaticStateClasses(stateClasses, timeoutHeight);\n\n setCurrentHeight(newHeight);\n setOverflow(\"hidden\");\n setUseTransitions(!isCurrentHeightAuto);\n setStateClassNames(animatingClassNames);\n\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n\n if (isCurrentHeightAuto) {\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(true);\n local.onHeightAnimationStart?.(timeoutHeight);\n }, 50);\n classesTimeoutId = setTimeout(() => {\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n hideContent(contentEl, timeoutHeight);\n local.onHeightAnimationEnd?.(timeoutHeight);\n }, totalDuration);\n } else {\n local.onHeightAnimationStart?.(newHeight);\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n if (height !== \"auto\") hideContent(contentEl, newHeight);\n local.onHeightAnimationEnd?.(newHeight);\n }, totalDuration);\n }\n }\n prevHeight = height;\n });\n\n onCleanup(() => {\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n });\n\n const componentStyle = (): JSX.CSSProperties => {\n const base: JSX.CSSProperties = {\n ...(typeof local.style === \"object\" && local.style ? local.style : {}),\n height: toCssHeight(currentHeight()),\n overflow: overflow() ?? \"visible\",\n };\n if (useTransitions() && local.applyInlineTransitions) {\n base.transition = `height ${local.duration}ms ${local.easing} ${local.delay}ms`;\n }\n return base;\n };\n\n const contentStyle = (): JSX.CSSProperties => {\n if (!local.animateOpacity) return {};\n return {\n transition: `opacity ${local.duration}ms ${local.easing} ${local.delay}ms`,\n ...(currentHeight() === 0 ? { opacity: 0 } : {}),\n };\n };\n\n const ariaHidden = (): boolean | undefined =>\n rest[\"aria-hidden\"] !== undefined ? (rest[\"aria-hidden\"] as boolean) : local.height === 0;\n\n return (\n <div {...rest} ref={mergeRefs(local.ref)} aria-hidden={ariaHidden()} class={cn(stateClassNames(), local.class)} style={componentStyle()}>\n <div class={local.contentClassName} style={contentStyle()} ref={contentEl}>\n {local.children}\n </div>\n </div>\n );\n}\n\nexport default AnimateHeight;\n"],"mappings":"AAEA,SAAqC,cAAc,cAAc,YAAY,WAAW,SAAS,kBAAkB;AACnH,OAAO,QAAQ;AACf,SAAS,iBAA2B;AAkBpC,MAAM,iBAAiB,CAAC,MAAuB;AAC7C,QAAM,SAAS,WAAW,CAAC;AAC3B,SAAO,CAAC,MAAM,MAAM,KAAK,SAAS,MAAM;AAC1C;AAEA,MAAM,eAAe,CAAC,WACpB,OAAO,WAAW,YAAY,OAAO,OAAO,SAAS,CAAC,MAAM,OAAO,eAAe,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC,CAAC;AAE1H,MAAM,cAAc,CAAC,SAAqC,WAAyB;AACjF,MAAI,WAAW,KAAK,SAAS,MAAO,SAAQ,MAAM,UAAU;AAC9D;AACA,MAAM,cAAc,CAAC,SAAqC,WAAyB;AACjF,MAAI,WAAW,KAAK,SAAS,MAAO,SAAQ,MAAM,UAAU;AAC9D;AAEA,MAAM,0BAAiD;AAAA,EACrD,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,sBAAsB;AACxB;AAEA,MAAM,wBAAwB,CAAC,GAA0B,WACvD,GAAG;AAAA,EACD,CAAC,EAAE,MAAM,GAAG;AAAA,EACZ,CAAC,EAAE,gBAAgB,GAAG,WAAW;AAAA,EACjC,CAAC,EAAE,oBAAoB,GAAG,OAAO,WAAW,YAAY,SAAS;AAAA,EACjE,CAAC,EAAE,gBAAgB,GAAG,WAAW;AACnC,CAAC;AAEH,MAAM,cAAc,CAAC,WAA4B,OAAO,WAAW,WAAW,GAAG,MAAM,OAAO;AAgBvF,SAAS,cAAc,OAAqD;AACjF,QAAM,SAAS;AAAA,IACb,EAAE,gBAAgB,OAAO,wBAAwB,MAAM,OAAO,GAAG,UAAU,KAAK,QAAQ,OAAO;AAAA,IAC/F;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,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,QAAM,eAAsC,EAAE,GAAG,yBAAyB,GAAG,MAAM,sBAAsB;AAEzG,MAAI;AACJ,MAAI,aAAqB,MAAM;AAC/B,MAAI;AACJ,MAAI;AAEJ,MAAI,aAAqB,MAAM;AAC/B,MAAI,eAAyB;AAC7B,MAAI,OAAO,eAAe,UAAU;AAClC,iBAAa,aAAa,IAAI,IAAI;AAClC,mBAAe;AAAA,EACjB,WAAW,aAAa,UAAU,GAAG;AACnC,iBAAa,eAAe,OAAO,IAAI;AACvC,mBAAe;AAAA,EACjB;AAEA,QAAM,CAAC,eAAe,gBAAgB,IAAI,aAAqB,UAAU;AACzE,QAAM,CAAC,UAAU,WAAW,IAAI,aAAuB,YAAY;AACnE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,aAAa,KAAK;AAC9D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,aAAa,sBAAsB,cAAc,MAAM,MAAM,CAAC;AAE5G,UAAQ,MAAM,YAAY,WAAW,cAAc,CAAC,CAAC;AAErD,eAAa,MAAM;AACjB,UAAM,SAAS,MAAM;AACrB,QAAI,WAAW,cAAc,WAAW;AACtC,kBAAY,WAAW,UAAU;AACjC,gBAAU,MAAM,WAAW;AAC3B,YAAM,gBAAgB,UAAU;AAChC,gBAAU,MAAM,WAAW;AAE3B,YAAM,gBAAgB,MAAM,WAAW,MAAM;AAC7C,UAAI;AACJ,UAAI;AACJ,UAAI,kBAA4B;AAChC,YAAM,sBAAsB,eAAe;AAE3C,UAAI,OAAO,WAAW,UAAU;AAC9B,oBAAY,SAAS,IAAI,IAAI;AAC7B,wBAAgB;AAAA,MAClB,WAAW,aAAa,MAAM,GAAG;AAC/B,oBAAY,WAAW,OAAO,IAAI;AAClC,wBAAgB;AAAA,MAClB,OAAO;AACL,oBAAY;AACZ,wBAAgB;AAChB,0BAAkB;AAAA,MACpB;AAEA,UAAI,qBAAqB;AACvB,wBAAgB;AAChB,oBAAY;AAAA,MACd;AAEA,YAAM,sBAAsB,GAAG;AAAA,QAC7B,CAAC,aAAa,SAAS,GAAG;AAAA,QAC1B,CAAC,aAAa,WAAW,GACvB,eAAe,UAAW,OAAO,eAAe,YAAY,OAAO,WAAW,YAAY,SAAS;AAAA,QACrG,CAAC,aAAa,aAAa,GACzB,WAAW,UAAW,OAAO,eAAe,YAAY,OAAO,WAAW,YAAY,SAAS;AAAA,QACjG,CAAC,aAAa,qBAAqB,GAAG,kBAAkB;AAAA,QACxD,CAAC,aAAa,qBAAqB,GAAG,kBAAkB;AAAA,QACxD,CAAC,aAAa,yBAAyB,GAAG,OAAO,kBAAkB,YAAY,gBAAgB;AAAA,MACjG,CAAC;AACD,YAAM,kBAAkB,sBAAsB,cAAc,aAAa;AAEzE,uBAAiB,SAAS;AAC1B,kBAAY,QAAQ;AACpB,wBAAkB,CAAC,mBAAmB;AACtC,yBAAmB,mBAAmB;AAEtC,mBAAa,SAAS;AACtB,mBAAa,gBAAgB;AAE7B,UAAI,qBAAqB;AACvB,oBAAY,WAAW,MAAM;AAC3B,2BAAiB,aAAa;AAC9B,sBAAY,eAAe;AAC3B,4BAAkB,IAAI;AACtB,gBAAM,yBAAyB,aAAa;AAAA,QAC9C,GAAG,EAAE;AACL,2BAAmB,WAAW,MAAM;AAClC,4BAAkB,KAAK;AACvB,6BAAmB,eAAe;AAClC,sBAAY,WAAW,aAAa;AACpC,gBAAM,uBAAuB,aAAa;AAAA,QAC5C,GAAG,aAAa;AAAA,MAClB,OAAO;AACL,cAAM,yBAAyB,SAAS;AACxC,oBAAY,WAAW,MAAM;AAC3B,2BAAiB,aAAa;AAC9B,sBAAY,eAAe;AAC3B,4BAAkB,KAAK;AACvB,6BAAmB,eAAe;AAClC,cAAI,WAAW,OAAQ,aAAY,WAAW,SAAS;AACvD,gBAAM,uBAAuB,SAAS;AAAA,QACxC,GAAG,aAAa;AAAA,MAClB;AAAA,IACF;AACA,iBAAa;AAAA,EACf,CAAC;AAED,YAAU,MAAM;AACd,iBAAa,SAAS;AACtB,iBAAa,gBAAgB;AAAA,EAC/B,CAAC;AAED,QAAM,iBAAiB,MAAyB;AAC9C,UAAM,OAA0B;AAAA,MAC9B,GAAI,OAAO,MAAM,UAAU,YAAY,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAAA,MACpE,QAAQ,YAAY,cAAc,CAAC;AAAA,MACnC,UAAU,SAAS,KAAK;AAAA,IAC1B;AACA,QAAI,eAAe,KAAK,MAAM,wBAAwB;AACpD,WAAK,aAAa,UAAU,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,MAAyB;AAC5C,QAAI,CAAC,MAAM,eAAgB,QAAO,CAAC;AACnC,WAAO;AAAA,MACL,YAAY,WAAW,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,MACtE,GAAI,cAAc,MAAM,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,aAAa,MACjB,KAAK,aAAa,MAAM,SAAa,KAAK,aAAa,IAAgB,MAAM,WAAW;AAE1F,SACE,CAAC,QAAQ,MAAM,KAAK,UAAU,MAAM,GAAG,GAAG,aAAa,WAAW,GAAG,OAAO,GAAG,gBAAgB,GAAG,MAAM,KAAK,GAAG,OAAO,eAAe,GAAG;AAAA,MACvI,CAAC,IAAI,OAAO,MAAM,kBAAkB,OAAO,aAAa,GAAG,KAAK,WAAW;AAAA,SACxE,MAAM,SAAS;AAAA,MAClB,EAFC,IAEK;AAAA,IACR,EAJC;AAML;AAEA,IAAO,wBAAQ;","names":[],"file":"animateHeight.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/base/animateHeight/animateHeight.tsx"],"sourcesContent":["// Solid port of react-animate-height (MIT, © Stanko Tadić)\n// https://github.com/Stanko/react-animate-height\nimport { type JSX, type ParentProps, createEffect, createSignal, mergeProps, onCleanup, onMount, splitProps } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport type Height = \"auto\" | number | `${number}%`;\ntype Overflow = \"auto\" | \"visible\" | \"hidden\" | undefined;\n\ninterface AnimationStateClasses {\n animating: string;\n animatingUp: string;\n animatingDown: string;\n animatingToHeightZero: string;\n animatingToHeightAuto: string;\n animatingToHeightSpecific: string;\n static: string;\n staticHeightZero: string;\n staticHeightAuto: string;\n staticHeightSpecific: string;\n}\n\nconst isNumberString = (n: string): boolean => {\n const number = parseFloat(n);\n return !isNaN(number) && isFinite(number);\n};\n\nconst isPercentage = (height: Height): height is `${number}%` =>\n typeof height === \"string\" && height[height.length - 1] === \"%\" && isNumberString(height.substring(0, height.length - 1));\n\nconst hideContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"none\";\n};\nconst showContent = (element: HTMLDivElement | undefined, height: Height): void => {\n if (height === 0 && element?.style) element.style.display = \"\";\n};\n\nconst ANIMATION_STATE_CLASSES: AnimationStateClasses = {\n animating: \"rah-animating\",\n animatingUp: \"rah-animating--up\",\n animatingDown: \"rah-animating--down\",\n animatingToHeightZero: \"rah-animating--to-height-zero\",\n animatingToHeightAuto: \"rah-animating--to-height-auto\",\n animatingToHeightSpecific: \"rah-animating--to-height-specific\",\n static: \"rah-static\",\n staticHeightZero: \"rah-static--height-zero\",\n staticHeightAuto: \"rah-static--height-auto\",\n staticHeightSpecific: \"rah-static--height-specific\",\n};\n\nconst getStaticStateClasses = (s: AnimationStateClasses, height: Height): string =>\n cn({\n [s.static]: true,\n [s.staticHeightZero]: height === 0,\n [s.staticHeightSpecific]: typeof height === \"number\" && height > 0,\n [s.staticHeightAuto]: height === \"auto\",\n });\n\nconst toCssHeight = (height: Height): string => (typeof height === \"number\" ? `${height}px` : height);\n\nexport interface AnimateHeightProps extends JSX.HTMLAttributes<HTMLDivElement> {\n animateOpacity?: boolean;\n animationStateClasses?: Partial<AnimationStateClasses>;\n applyInlineTransitions?: boolean;\n contentClassName?: string;\n delay?: number;\n duration?: number;\n easing?: string;\n height: Height;\n onHeightAnimationEnd?: (newHeight: Height) => void;\n onHeightAnimationStart?: (newHeight: Height) => void;\n ref?: Ref<HTMLDivElement>;\n}\n\nexport function AnimateHeight(props: ParentProps<AnimateHeightProps>): JSX.Element {\n const merged = mergeProps(\n { animateOpacity: false, applyInlineTransitions: true, delay: 0, duration: 300, easing: \"ease\" },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"animateOpacity\",\n \"animationStateClasses\",\n \"applyInlineTransitions\",\n \"children\",\n \"class\",\n \"contentClassName\",\n \"delay\",\n \"duration\",\n \"easing\",\n \"height\",\n \"onHeightAnimationEnd\",\n \"onHeightAnimationStart\",\n \"style\",\n \"ref\",\n ]);\n\n const stateClasses: AnimationStateClasses = { ...ANIMATION_STATE_CLASSES, ...local.animationStateClasses };\n\n let contentEl: HTMLDivElement | undefined;\n let prevHeight: Height = local.height;\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n let classesTimeoutId: ReturnType<typeof setTimeout> | undefined;\n\n let initHeight: Height = local.height;\n let initOverflow: Overflow = \"visible\";\n if (typeof initHeight === \"number\") {\n initHeight = initHeight < 0 ? 0 : initHeight;\n initOverflow = \"hidden\";\n } else if (isPercentage(initHeight)) {\n initHeight = initHeight === \"0%\" ? 0 : initHeight;\n initOverflow = \"hidden\";\n }\n\n const [currentHeight, setCurrentHeight] = createSignal<Height>(initHeight);\n const [overflow, setOverflow] = createSignal<Overflow>(initOverflow);\n const [useTransitions, setUseTransitions] = createSignal(false);\n const [stateClassNames, setStateClassNames] = createSignal(getStaticStateClasses(stateClasses, local.height));\n\n onMount(() => hideContent(contentEl, currentHeight()));\n\n createEffect(() => {\n const height = local.height;\n if (height !== prevHeight && contentEl) {\n showContent(contentEl, prevHeight);\n contentEl.style.overflow = \"hidden\";\n const contentHeight = contentEl.offsetHeight;\n contentEl.style.overflow = \"\";\n\n const totalDuration = local.duration + local.delay;\n let newHeight: Height;\n let timeoutHeight: Height;\n let timeoutOverflow: Overflow = \"hidden\";\n const isCurrentHeightAuto = prevHeight === \"auto\";\n\n if (typeof height === \"number\") {\n newHeight = height < 0 ? 0 : height;\n timeoutHeight = newHeight;\n } else if (isPercentage(height)) {\n newHeight = height === \"0%\" ? 0 : height;\n timeoutHeight = newHeight;\n } else {\n newHeight = contentHeight;\n timeoutHeight = \"auto\";\n timeoutOverflow = undefined;\n }\n\n if (isCurrentHeightAuto) {\n timeoutHeight = newHeight;\n newHeight = contentHeight;\n }\n\n const animatingClassNames = cn({\n [stateClasses.animating]: true,\n [stateClasses.animatingUp]:\n prevHeight === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height < prevHeight),\n [stateClasses.animatingDown]:\n height === \"auto\" || (typeof prevHeight === \"number\" && typeof height === \"number\" && height > prevHeight),\n [stateClasses.animatingToHeightZero]: timeoutHeight === 0,\n [stateClasses.animatingToHeightAuto]: timeoutHeight === \"auto\",\n [stateClasses.animatingToHeightSpecific]: typeof timeoutHeight === \"number\" && timeoutHeight > 0,\n });\n const finalClassNames = getStaticStateClasses(stateClasses, timeoutHeight);\n\n setCurrentHeight(newHeight);\n setOverflow(\"hidden\");\n setUseTransitions(!isCurrentHeightAuto);\n setStateClassNames(animatingClassNames);\n\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n\n if (isCurrentHeightAuto) {\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(true);\n local.onHeightAnimationStart?.(timeoutHeight);\n }, 50);\n classesTimeoutId = setTimeout(() => {\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n hideContent(contentEl, timeoutHeight);\n local.onHeightAnimationEnd?.(timeoutHeight);\n }, totalDuration);\n } else {\n local.onHeightAnimationStart?.(newHeight);\n timeoutId = setTimeout(() => {\n setCurrentHeight(timeoutHeight);\n setOverflow(timeoutOverflow);\n setUseTransitions(false);\n setStateClassNames(finalClassNames);\n if (height !== \"auto\") hideContent(contentEl, newHeight);\n local.onHeightAnimationEnd?.(newHeight);\n }, totalDuration);\n }\n }\n prevHeight = height;\n });\n\n onCleanup(() => {\n clearTimeout(timeoutId);\n clearTimeout(classesTimeoutId);\n });\n\n const componentStyle = (): JSX.CSSProperties | string | undefined =>\n mergeStyle(local.style, {\n height: toCssHeight(currentHeight()),\n overflow: overflow() ?? \"visible\",\n // Unset while not animating, so a transition the caller set stays.\n transition:\n useTransitions() && local.applyInlineTransitions\n ? `height ${local.duration}ms ${local.easing} ${local.delay}ms`\n : undefined,\n });\n\n const contentStyle = (): JSX.CSSProperties => {\n if (!local.animateOpacity) return {};\n return {\n transition: `opacity ${local.duration}ms ${local.easing} ${local.delay}ms`,\n ...(currentHeight() === 0 ? { opacity: 0 } : {}),\n };\n };\n\n const ariaHidden = (): boolean | undefined =>\n rest[\"aria-hidden\"] !== undefined ? (rest[\"aria-hidden\"] as boolean) : local.height === 0;\n\n return (\n <div {...rest} ref={mergeRefs(local.ref)} aria-hidden={ariaHidden()} class={cn(stateClassNames(), local.class)} style={componentStyle()}>\n <div class={local.contentClassName} style={contentStyle()} ref={contentEl}>\n {local.children}\n </div>\n </div>\n );\n}\n\nexport default AnimateHeight;\n"],"mappings":"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","names":[],"file":"animateHeight.jsx"}
@@ -3,6 +3,7 @@ import "@smwb/ui-styles/less/components/icon/icon.entry.less";
3
3
  import { mergeProps, splitProps, useContext } from "solid-js";
4
4
  import cn from "clsx";
5
5
  import { mergeRefs } from "../../../primitives/mergeRefs";
6
+ import { mergeStyle } from "../../../primitives/mergeStyle";
6
7
  import { getIcon } from "../../../icons/registry";
7
8
  import { getIconConfig } from "../../../icons/config";
8
9
  import { createIconVersion, IconContext } from "./iconProvider";
@@ -39,7 +40,8 @@ function Icon(props) {
39
40
  "title",
40
41
  "style",
41
42
  "source",
42
- "ref"
43
+ "ref",
44
+ "data-testid"
43
45
  ]);
44
46
  const context = useContext(IconContext);
45
47
  const version = createIconVersion();
@@ -62,26 +64,22 @@ function Icon(props) {
62
64
  }
63
65
  return "google";
64
66
  };
65
- const decorative = () => local.title === void 0;
67
+ const decorative = () => !(local.title || rest["aria-label"] || rest["aria-labelledby"]);
66
68
  const colorClass = () => typeof local.color === "string" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : void 0;
67
- const styleObject = () => typeof local.style === "object" && local.style ? local.style : {};
68
69
  const cssSize = () => typeof local.size === "number" ? `${local.size}px` : local.size;
69
70
  const strokeWidth = () => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;
70
71
  return <span
71
72
  {...rest}
72
73
  ref={mergeRefs(local.ref)}
73
- data-testid="icon"
74
+ data-testid={local["data-testid"] ?? "icon"}
74
75
  data-icon-source={mode()}
75
- role={decorative() ? void 0 : "img"}
76
+ role={rest.role ?? (decorative() ? void 0 : "img")}
76
77
  aria-hidden={decorative() ? true : void 0}
77
- aria-label={local.title}
78
+ aria-label={local.title || rest["aria-label"]}
78
79
  title={local.title}
79
- style={{
80
- ...styleObject(),
81
- ...mode() === "google" ? {
82
- "font-variation-settings": `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`
83
- } : null
84
- }}
80
+ style={mergeStyle(local.style, {
81
+ "font-variation-settings": mode() === "google" ? `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48` : void 0
82
+ })}
85
83
  class={cn("smwb-icon__wrapper", colorClass(), local.class)}
86
84
  >
87
85
  {mode() === "google" ? <span class="material-symbols-outlined" style={{ "font-size": cssSize() }}>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/icon/icon.entry.less\";\n/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name. When provided the icon is exposed as `role=\"img\"`;\n * otherwise it is `aria-hidden` (decorative).\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => local.title === undefined;\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const styleObject = (): JSX.CSSProperties => (typeof local.style === \"object\" && local.style ? local.style : {});\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid=\"icon\"\n data-icon-source={mode()}\n role={decorative() ? undefined : \"img\"}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title}\n title={local.title}\n style={{\n ...styleObject(),\n ...(mode() === \"google\"\n ? {\n \"font-variation-settings\": `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`,\n }\n : null),\n }}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"mappings":"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","names":[],"file":"icon.jsx"}
1
+ {"version":3,"sources":["../../../../../src/components/base/icon/icon.tsx"],"sourcesContent":["import \"@smwb/ui-styles/less/tokens.entry.less\";\nimport \"@smwb/ui-styles/less/components/icon/icon.entry.less\";\n/* eslint-disable solid/no-innerhtml -- icon bodies are static SVG geometry\n generated from icons/data into src/icons/svg; nothing user-supplied reaches\n this attribute, and an <svg> assembled from JSX children cannot be handed to\n a consumer as plain data. */\nimport { type JSX, mergeProps, splitProps, useContext } from \"solid-js\";\nimport cn from \"clsx\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\nimport { getIcon } from \"../../../icons/registry\";\nimport { getIconConfig } from \"../../../icons/config\";\nimport type { IconDefinition, IconSource } from \"../../../icons/types\";\nimport { createIconVersion, IconContext } from \"./iconProvider\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"error\" | \"success\" | \"warning\" | \"info\" | \"disabled\";\n\nconst COLOR_TOKENS: ReadonlyArray<string> = [\n \"primary\",\n \"secondary\",\n \"error\",\n \"success\",\n \"warning\",\n \"info\",\n \"disabled\",\n];\n\nconst warned = new Set<string>();\n\nfunction warnMissing(name: string): void {\n if (!getIconConfig().warnOnMissing || warned.has(name)) return;\n warned.add(name);\n console.warn(\n `[smwb] Icon \"${name}\" is not registered. Register it (import { ${name} } from \"@smwb/ui-solid/icons\") ` +\n `or use source=\"auto\" to fall back to Material Symbols.`\n );\n}\n\nexport interface IconProps extends JSX.HTMLAttributes<HTMLSpanElement> {\n /**\n * Icon name — the Google Material Symbols name, e.g. `\"arrow_right_alt\"`.\n * Lookup is forgiving: `arrowRightAlt` and `arrow-right-alt` resolve too, as\n * do an icon's aliases.\n *\n * An {@link IconDefinition} may be passed instead, which skips the registry\n * entirely and is the most bundle-friendly form:\n *\n * ```tsx\n * import { arrowRightAlt } from \"@smwb/ui-solid/icons\";\n * <Icon name={arrowRightAlt} />\n * ```\n */\n name: string | IconDefinition;\n /**\n * Material Symbols weight axis (100-700). For the smwb SVG set it maps to the\n * stroke width: 400 → 2px, 700 → 3px, 100 → 1px.\n */\n weight?: number;\n /** Material Symbols FILL axis. Not used by the smwb SVG set (it is a contour set). */\n fill?: 0 | 1;\n /** Pixel number or any CSS length (e.g. \"1.5rem\"). */\n size?: number | string;\n /** Material Symbols GRAD axis. Not used by the smwb SVG set. */\n grade?: number;\n /**\n * Semantic color token; `inherit` (default) keeps the text color. Any string\n * is accepted for backward compatibility, but only known {@link IconColor}\n * tokens emit a color class.\n */\n color?: IconColor | (string & {});\n /**\n * Accessible name, also shown as a tooltip. A non-empty `title`,\n * `aria-label` or `aria-labelledby` names the icon: it is exposed as\n * `role=\"img\"`, or with the `role` you pass. Without any of them the icon is\n * decorative and `aria-hidden`.\n */\n title?: string;\n /** Overrides the icon source for this icon only. See {@link IconSource}. */\n source?: IconSource;\n /** Test id of the root `<span>`; `icon` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLSpanElement>;\n}\n\nexport function Icon(props: IconProps): JSX.Element {\n const merged = mergeProps(\n { weight: 400, fill: 0 as 0 | 1, size: 20 as number | string, grade: 100, color: \"inherit\" as IconProps[\"color\"] },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"class\",\n \"weight\",\n \"fill\",\n \"size\",\n \"grade\",\n \"name\",\n \"color\",\n \"title\",\n \"style\",\n \"source\",\n \"ref\",\n \"data-testid\",\n ]);\n\n const context = useContext(IconContext);\n // Re-reads the registry when icons are registered late (lazy chunks, HMR).\n const version = createIconVersion();\n\n const source = (): IconSource => {\n version();\n return local.source ?? context?.source ?? getIconConfig().source;\n };\n const definition = (): IconDefinition | undefined => {\n version();\n return typeof local.name === \"object\" ? local.name : getIcon(local.name);\n };\n const glyph = (): string => (typeof local.name === \"string\" ? local.name : local.name.name);\n\n const mode = (): \"google\" | \"smwb\" | \"missing\" => {\n const resolved = source();\n if (resolved === \"google\") return \"google\";\n if (definition()) return \"smwb\";\n if (resolved === \"smwb\") {\n warnMissing(glyph());\n return \"missing\";\n }\n return \"google\";\n };\n\n const decorative = (): boolean => !(local.title || rest[\"aria-label\"] || rest[\"aria-labelledby\"]);\n const colorClass = (): string | undefined =>\n typeof local.color === \"string\" && COLOR_TOKENS.includes(local.color) ? `smwb-icon_color-${local.color}` : undefined;\n const cssSize = (): string => (typeof local.size === \"number\" ? `${local.size}px` : local.size);\n const strokeWidth = (): number => Math.round(Math.min(3, Math.max(1, local.weight / 200)) * 100) / 100;\n\n return (\n <span\n {...rest}\n ref={mergeRefs(local.ref)}\n data-testid={local[\"data-testid\"] ?? \"icon\"}\n data-icon-source={mode()}\n // An unnamed icon is hidden over the caller's aria-hidden. A named one is\n // an image unless the caller gives it a role, and a title names it over\n // the caller's aria-label.\n role={rest.role ?? (decorative() ? undefined : \"img\")}\n aria-hidden={decorative() ? true : undefined}\n aria-label={local.title || rest[\"aria-label\"]}\n title={local.title}\n style={mergeStyle(local.style, {\n \"font-variation-settings\":\n mode() === \"google\"\n ? `'FILL' ${local.fill}, 'wght' ${local.weight}, 'GRAD' ${local.grade}, 'opsz' 48`\n : undefined,\n })}\n class={cn(\"smwb-icon__wrapper\", colorClass(), local.class)}\n >\n {mode() === \"google\" ? (\n <span class=\"material-symbols-outlined\" style={{ \"font-size\": cssSize() }}>\n {glyph()}\n </span>\n ) : (\n <svg\n class=\"smwb-icon__svg\"\n viewBox={definition()?.viewBox ?? \"0 0 24 24\"}\n style={{ width: cssSize(), height: cssSize() }}\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width={strokeWidth()}\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n innerHTML={definition()?.body ?? \"\"}\n />\n )}\n </span>\n );\n}\n\nexport default Icon;\n"],"mappings":"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","names":[],"file":"icon.jsx"}