@smwb/ui-solid 0.13.0 → 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 (411) hide show
  1. package/README.md +564 -0
  2. package/dist/assets/styles/less/components/appBar/appBar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/button/button.entry.css +1 -1
  4. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  5. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  6. package/dist/assets/styles/less/components/commandPalette/commandPalette.entry.css +1 -0
  7. package/dist/assets/styles/less/components/composer/composer.entry.css +1 -0
  8. package/dist/assets/styles/less/components/diffStat/diffStat.entry.css +1 -0
  9. package/dist/assets/styles/less/components/kbd/kbd.entry.css +1 -0
  10. package/dist/assets/styles/less/components/list/list.entry.css +1 -1
  11. package/dist/assets/styles/less/components/qrCode/qrCode.entry.css +1 -0
  12. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  13. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  14. package/dist/assets/styles/less/components/sidebar/sidebar.entry.css +1 -1
  15. package/dist/assets/styles/less/components/statusDot/statusDot.entry.css +1 -0
  16. package/dist/assets/styles/less/components/swimlanes/swimlanes.entry.css +1 -0
  17. package/dist/assets/styles/less/components/tabGroups/tabGroups.entry.css +1 -0
  18. package/dist/assets/styles/less/components/tabs/tab/tab.entry.css +1 -1
  19. package/dist/assets/styles/less/components/tabs/tabPanel/tabPanel.entry.css +1 -0
  20. package/dist/assets/styles/less/components/tabs/tabs.entry.css +1 -1
  21. package/dist/assets/styles/less/components/textField/textField.entry.css +1 -1
  22. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  23. package/dist/assets/styles/less/components/treeView/treeView.entry.css +1 -1
  24. package/dist/assets/styles/less/tokens.entry.css +1 -1
  25. package/dist/components/dataDisplay/chat/chat.d.ts +42 -0
  26. package/dist/components/dataDisplay/chat/chat.js +116 -57
  27. package/dist/components/dataDisplay/chat/chat.js.map +1 -1
  28. package/dist/components/dataDisplay/chat/chatComposer.d.ts +17 -0
  29. package/dist/components/dataDisplay/chat/chatComposer.js +21 -19
  30. package/dist/components/dataDisplay/chat/chatComposer.js.map +1 -1
  31. package/dist/components/dataDisplay/chat/index.d.ts +1 -1
  32. package/dist/components/dataDisplay/chat/utils.d.ts +14 -0
  33. package/dist/components/dataDisplay/chat/utils.js.map +1 -1
  34. package/dist/components/dataDisplay/dagView/dagView.js +238 -223
  35. package/dist/components/dataDisplay/dagView/dagView.js.map +1 -1
  36. package/dist/components/dataDisplay/diffStat/diffStat.d.ts +55 -0
  37. package/dist/components/dataDisplay/diffStat/diffStat.js +70 -0
  38. package/dist/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  39. package/dist/components/dataDisplay/diffStat/index.d.ts +2 -0
  40. package/dist/components/dataDisplay/kbd/index.d.ts +4 -0
  41. package/dist/components/dataDisplay/kbd/kbd.d.ts +41 -0
  42. package/dist/components/dataDisplay/kbd/kbd.js +47 -0
  43. package/dist/components/dataDisplay/kbd/kbd.js.map +1 -0
  44. package/dist/components/dataDisplay/kbd/kbdKeys.d.ts +18 -0
  45. package/dist/components/dataDisplay/kbd/kbdKeys.js +70 -0
  46. package/dist/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  47. package/dist/components/dataDisplay/list/listItem.d.ts +34 -0
  48. package/dist/components/dataDisplay/list/listItem.js +57 -20
  49. package/dist/components/dataDisplay/list/listItem.js.map +1 -1
  50. package/dist/components/dataDisplay/qrCode/index.d.ts +2 -0
  51. package/dist/components/dataDisplay/qrCode/qrCode.d.ts +30 -0
  52. package/dist/components/dataDisplay/qrCode/qrCode.js +88 -0
  53. package/dist/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  54. package/dist/components/dataDisplay/qrCode/qrCodePath.d.ts +7 -0
  55. package/dist/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  56. package/dist/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  57. package/dist/components/dataDisplay/statusDot/index.d.ts +2 -0
  58. package/dist/components/dataDisplay/statusDot/statusDot.d.ts +35 -0
  59. package/dist/components/dataDisplay/statusDot/statusDot.js +31 -0
  60. package/dist/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  61. package/dist/components/dataDisplay/swimlanes/index.d.ts +2 -0
  62. package/dist/components/dataDisplay/swimlanes/swimlanes.d.ts +75 -0
  63. package/dist/components/dataDisplay/swimlanes/swimlanes.js +361 -0
  64. package/dist/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  65. package/dist/components/dataDisplay/treeView/treeView.d.ts +20 -0
  66. package/dist/components/dataDisplay/treeView/treeView.js +161 -95
  67. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  68. package/dist/components/feedBack/modal/modal.d.ts +9 -0
  69. package/dist/components/feedBack/modal/modal.js +68 -54
  70. package/dist/components/feedBack/modal/modal.js.map +1 -1
  71. package/dist/components/inputs/button/button.d.ts +12 -0
  72. package/dist/components/inputs/button/button.js +44 -37
  73. package/dist/components/inputs/button/button.js.map +1 -1
  74. package/dist/components/inputs/composer/composer.d.ts +148 -0
  75. package/dist/components/inputs/composer/composer.js +276 -0
  76. package/dist/components/inputs/composer/composer.js.map +1 -0
  77. package/dist/components/inputs/composer/composerFiles.d.ts +26 -0
  78. package/dist/components/inputs/composer/composerFiles.js +18 -0
  79. package/dist/components/inputs/composer/composerFiles.js.map +1 -0
  80. package/dist/components/inputs/composer/composerKeys.d.ts +29 -0
  81. package/dist/components/inputs/composer/composerKeys.js +7 -0
  82. package/dist/components/inputs/composer/composerKeys.js.map +1 -0
  83. package/dist/components/inputs/composer/index.d.ts +3 -0
  84. package/dist/components/layout/sheet/sheet.d.ts +12 -0
  85. package/dist/components/layout/sheet/sheet.js +100 -86
  86. package/dist/components/layout/sheet/sheet.js.map +1 -1
  87. package/dist/components/layout/tabGroups/index.d.ts +4 -0
  88. package/dist/components/layout/tabGroups/tabGroups.d.ts +102 -0
  89. package/dist/components/layout/tabGroups/tabGroups.js +895 -0
  90. package/dist/components/layout/tabGroups/tabGroups.js.map +1 -0
  91. package/dist/components/layout/tabGroups/tabGroupsFocus.d.ts +55 -0
  92. package/dist/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  93. package/dist/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  94. package/dist/components/layout/tabGroups/tabGroupsLayout.d.ts +250 -0
  95. package/dist/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  96. package/dist/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  97. package/dist/components/navigation/appBar/appBar.d.ts +22 -0
  98. package/dist/components/navigation/appBar/appBar.js +60 -22
  99. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  100. package/dist/components/navigation/commandPalette/commandPalette.d.ts +126 -0
  101. package/dist/components/navigation/commandPalette/commandPalette.js +457 -0
  102. package/dist/components/navigation/commandPalette/commandPalette.js.map +1 -0
  103. package/dist/components/navigation/commandPalette/commandPaletteFilter.d.ts +11 -0
  104. package/dist/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  105. package/dist/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  106. package/dist/components/navigation/commandPalette/commandPaletteNavigation.d.ts +13 -0
  107. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  108. package/dist/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  109. package/dist/components/navigation/commandPalette/commandPaletteTypes.d.ts +39 -0
  110. package/dist/components/navigation/commandPalette/index.d.ts +6 -0
  111. package/dist/components/navigation/sidebar/sidebar.d.ts +10 -0
  112. package/dist/components/navigation/sidebar/sidebar.js +12 -10
  113. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  114. package/dist/components/navigation/tabs/index.d.ts +3 -1
  115. package/dist/components/navigation/tabs/tab/tab.d.ts +89 -2
  116. package/dist/components/navigation/tabs/tab/tab.js +164 -44
  117. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  118. package/dist/components/navigation/tabs/tabPanel/tabPanel.d.ts +20 -0
  119. package/dist/components/navigation/tabs/tabPanel/tabPanel.js +34 -0
  120. package/dist/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  121. package/dist/components/navigation/tabs/tabs.d.ts +73 -3
  122. package/dist/components/navigation/tabs/tabs.js +387 -160
  123. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  124. package/dist/components/navigation/tabs/tabs.utils.d.ts +20 -0
  125. package/dist/components/navigation/tabs/tabs.utils.js +11 -0
  126. package/dist/components/navigation/tabs/tabs.utils.js.map +1 -0
  127. package/dist/components/navigation/tabs/tabsContext.d.ts +31 -1
  128. package/dist/components/navigation/tabs/tabsContext.js.map +1 -1
  129. package/dist/headless/components/dataDisplay/chat/chat.js +116 -57
  130. package/dist/headless/components/dataDisplay/chat/chat.js.map +1 -1
  131. package/dist/headless/components/dataDisplay/chat/chatComposer.js +21 -19
  132. package/dist/headless/components/dataDisplay/chat/chatComposer.js.map +1 -1
  133. package/dist/headless/components/dataDisplay/chat/utils.js.map +1 -1
  134. package/dist/headless/components/dataDisplay/dagView/dagView.js +238 -223
  135. package/dist/headless/components/dataDisplay/dagView/dagView.js.map +1 -1
  136. package/dist/headless/components/dataDisplay/diffStat/diffStat.js +68 -0
  137. package/dist/headless/components/dataDisplay/diffStat/diffStat.js.map +1 -0
  138. package/dist/headless/components/dataDisplay/kbd/kbd.js +45 -0
  139. package/dist/headless/components/dataDisplay/kbd/kbd.js.map +1 -0
  140. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js +70 -0
  141. package/dist/headless/components/dataDisplay/kbd/kbdKeys.js.map +1 -0
  142. package/dist/headless/components/dataDisplay/list/listItem.js +57 -20
  143. package/dist/headless/components/dataDisplay/list/listItem.js.map +1 -1
  144. package/dist/headless/components/dataDisplay/qrCode/qrCode.js +86 -0
  145. package/dist/headless/components/dataDisplay/qrCode/qrCode.js.map +1 -0
  146. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js +20 -0
  147. package/dist/headless/components/dataDisplay/qrCode/qrCodePath.js.map +1 -0
  148. package/dist/headless/components/dataDisplay/statusDot/statusDot.js +29 -0
  149. package/dist/headless/components/dataDisplay/statusDot/statusDot.js.map +1 -0
  150. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js +359 -0
  151. package/dist/headless/components/dataDisplay/swimlanes/swimlanes.js.map +1 -0
  152. package/dist/headless/components/dataDisplay/treeView/treeView.js +161 -95
  153. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  154. package/dist/headless/components/feedBack/modal/modal.js +68 -54
  155. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  156. package/dist/headless/components/inputs/button/button.js +42 -35
  157. package/dist/headless/components/inputs/button/button.js.map +1 -1
  158. package/dist/headless/components/inputs/composer/composer.js +274 -0
  159. package/dist/headless/components/inputs/composer/composer.js.map +1 -0
  160. package/dist/headless/components/inputs/composer/composerFiles.js +18 -0
  161. package/dist/headless/components/inputs/composer/composerFiles.js.map +1 -0
  162. package/dist/headless/components/inputs/composer/composerKeys.js +7 -0
  163. package/dist/headless/components/inputs/composer/composerKeys.js.map +1 -0
  164. package/dist/headless/components/layout/sheet/sheet.js +100 -86
  165. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  166. package/dist/headless/components/layout/tabGroups/tabGroups.js +893 -0
  167. package/dist/headless/components/layout/tabGroups/tabGroups.js.map +1 -0
  168. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js +192 -0
  169. package/dist/headless/components/layout/tabGroups/tabGroupsFocus.js.map +1 -0
  170. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js +480 -0
  171. package/dist/headless/components/layout/tabGroups/tabGroupsLayout.js.map +1 -0
  172. package/dist/headless/components/navigation/appBar/appBar.js +64 -26
  173. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  174. package/dist/headless/components/navigation/commandPalette/commandPalette.js +455 -0
  175. package/dist/headless/components/navigation/commandPalette/commandPalette.js.map +1 -0
  176. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js +15 -0
  177. package/dist/headless/components/navigation/commandPalette/commandPaletteFilter.js.map +1 -0
  178. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js +38 -0
  179. package/dist/headless/components/navigation/commandPalette/commandPaletteNavigation.js.map +1 -0
  180. package/dist/headless/components/navigation/sidebar/sidebar.js +28 -26
  181. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  182. package/dist/headless/components/navigation/tabs/tab/tab.js +164 -44
  183. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  184. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js +32 -0
  185. package/dist/headless/components/navigation/tabs/tabPanel/tabPanel.js.map +1 -0
  186. package/dist/headless/components/navigation/tabs/tabs.js +387 -160
  187. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  188. package/dist/headless/components/navigation/tabs/tabs.utils.js +11 -0
  189. package/dist/headless/components/navigation/tabs/tabs.utils.js.map +1 -0
  190. package/dist/headless/components/navigation/tabs/tabsContext.js.map +1 -1
  191. package/dist/headless/index.js +405 -367
  192. package/dist/headless/index.js.map +1 -1
  193. package/dist/headless/primitives/createFocusTrap.js +17 -17
  194. package/dist/headless/primitives/createFocusTrap.js.map +1 -1
  195. package/dist/headless/primitives/createKeyboardShortcut.js +16 -0
  196. package/dist/headless/primitives/createKeyboardShortcut.js.map +1 -0
  197. package/dist/headless/primitives/restoreFocus.js +10 -0
  198. package/dist/headless/primitives/restoreFocus.js.map +1 -0
  199. package/dist/headless/source/components/dataDisplay/chat/chat.jsx +38 -4
  200. package/dist/headless/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  201. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  202. package/dist/headless/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  203. package/dist/headless/source/components/dataDisplay/chat/index.js.map +1 -1
  204. package/dist/headless/source/components/dataDisplay/chat/utils.js.map +2 -2
  205. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx +30 -21
  206. package/dist/headless/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
  207. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx +76 -0
  208. package/dist/headless/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  209. package/dist/headless/source/components/dataDisplay/diffStat/index.js +19 -0
  210. package/dist/headless/source/components/dataDisplay/diffStat/index.js.map +7 -0
  211. package/dist/headless/source/components/dataDisplay/kbd/index.js +9 -0
  212. package/dist/headless/source/components/dataDisplay/kbd/index.js.map +7 -0
  213. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx +48 -0
  214. package/dist/headless/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  215. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  216. package/dist/headless/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  217. package/dist/headless/source/components/dataDisplay/list/listItem.jsx +37 -7
  218. package/dist/headless/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  219. package/dist/headless/source/components/dataDisplay/qrCode/index.js +6 -0
  220. package/dist/headless/source/components/dataDisplay/qrCode/index.js.map +7 -0
  221. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx +94 -0
  222. package/dist/headless/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  223. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  224. package/dist/headless/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  225. package/dist/headless/source/components/dataDisplay/statusDot/index.js +6 -0
  226. package/dist/headless/source/components/dataDisplay/statusDot/index.js.map +7 -0
  227. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx +28 -0
  228. package/dist/headless/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  229. package/dist/headless/source/components/dataDisplay/swimlanes/index.js +15 -0
  230. package/dist/headless/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  231. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx +450 -0
  232. package/dist/headless/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  233. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx +118 -37
  234. package/dist/headless/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  235. package/dist/headless/source/components/feedBack/modal/modal.jsx +34 -4
  236. package/dist/headless/source/components/feedBack/modal/modal.jsx.map +1 -1
  237. package/dist/headless/source/components/inputs/button/button.jsx +6 -2
  238. package/dist/headless/source/components/inputs/button/button.jsx.map +1 -1
  239. package/dist/headless/source/components/inputs/composer/composer.jsx +319 -0
  240. package/dist/headless/source/components/inputs/composer/composer.jsx.map +1 -0
  241. package/dist/headless/source/components/inputs/composer/composerFiles.js +27 -0
  242. package/dist/headless/source/components/inputs/composer/composerFiles.js.map +7 -0
  243. package/dist/headless/source/components/inputs/composer/composerKeys.js +11 -0
  244. package/dist/headless/source/components/inputs/composer/composerKeys.js.map +7 -0
  245. package/dist/headless/source/components/inputs/composer/index.js +5 -0
  246. package/dist/headless/source/components/inputs/composer/index.js.map +7 -0
  247. package/dist/headless/source/components/layout/sheet/sheet.jsx +33 -11
  248. package/dist/headless/source/components/layout/sheet/sheet.jsx.map +1 -1
  249. package/dist/headless/source/components/layout/tabGroups/index.js +8 -0
  250. package/dist/headless/source/components/layout/tabGroups/index.js.map +7 -0
  251. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx +1117 -0
  252. package/dist/headless/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  253. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  254. package/dist/headless/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  255. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  256. package/dist/headless/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  257. package/dist/headless/source/components/navigation/appBar/appBar.jsx +27 -3
  258. package/dist/headless/source/components/navigation/appBar/appBar.jsx.map +1 -1
  259. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx +506 -0
  260. package/dist/headless/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  261. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  262. package/dist/headless/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  263. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  264. package/dist/headless/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  265. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  266. package/dist/headless/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  267. package/dist/headless/source/components/navigation/commandPalette/index.js +11 -0
  268. package/dist/headless/source/components/navigation/commandPalette/index.js.map +7 -0
  269. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx +5 -2
  270. package/dist/headless/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  271. package/dist/headless/source/components/navigation/tabs/index.js +2 -0
  272. package/dist/headless/source/components/navigation/tabs/index.js.map +2 -2
  273. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx +135 -8
  274. package/dist/headless/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  275. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx +28 -0
  276. package/dist/headless/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  277. package/dist/headless/source/components/navigation/tabs/tabs.jsx +361 -13
  278. package/dist/headless/source/components/navigation/tabs/tabs.jsx.map +1 -1
  279. package/dist/headless/source/components/navigation/tabs/tabs.utils.js +18 -0
  280. package/dist/headless/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  281. package/dist/headless/source/components/navigation/tabs/tabsContext.js.map +2 -2
  282. package/dist/headless/source/index.js +41 -1
  283. package/dist/headless/source/index.js.map +2 -2
  284. package/dist/headless/source/primitives/createFocusTrap.js +8 -3
  285. package/dist/headless/source/primitives/createFocusTrap.js.map +2 -2
  286. package/dist/headless/source/primitives/createKeyboardShortcut.js +23 -0
  287. package/dist/headless/source/primitives/createKeyboardShortcut.js.map +7 -0
  288. package/dist/headless/source/primitives/restoreFocus.js +14 -0
  289. package/dist/headless/source/primitives/restoreFocus.js.map +7 -0
  290. package/dist/headless/source/utils/keyboardShortcut.js +74 -0
  291. package/dist/headless/source/utils/keyboardShortcut.js.map +7 -0
  292. package/dist/headless/source/utils/linkAttrs.js +16 -0
  293. package/dist/headless/source/utils/linkAttrs.js.map +7 -0
  294. package/dist/headless/utils/keyboardShortcut.js +48 -0
  295. package/dist/headless/utils/keyboardShortcut.js.map +1 -0
  296. package/dist/headless/utils/linkAttrs.js +13 -0
  297. package/dist/headless/utils/linkAttrs.js.map +1 -0
  298. package/dist/index.d.ts +24 -3
  299. package/dist/index.js +405 -367
  300. package/dist/index.js.map +1 -1
  301. package/dist/primitives/createFocusTrap.d.ts +5 -0
  302. package/dist/primitives/createFocusTrap.js +17 -17
  303. package/dist/primitives/createFocusTrap.js.map +1 -1
  304. package/dist/primitives/createKeyboardShortcut.d.ts +23 -0
  305. package/dist/primitives/createKeyboardShortcut.js +16 -0
  306. package/dist/primitives/createKeyboardShortcut.js.map +1 -0
  307. package/dist/primitives/restoreFocus.d.ts +8 -0
  308. package/dist/primitives/restoreFocus.js +10 -0
  309. package/dist/primitives/restoreFocus.js.map +1 -0
  310. package/dist/source/components/dataDisplay/chat/chat.jsx +38 -4
  311. package/dist/source/components/dataDisplay/chat/chat.jsx.map +1 -1
  312. package/dist/source/components/dataDisplay/chat/chatComposer.jsx +1 -0
  313. package/dist/source/components/dataDisplay/chat/chatComposer.jsx.map +1 -1
  314. package/dist/source/components/dataDisplay/chat/index.js.map +1 -1
  315. package/dist/source/components/dataDisplay/chat/utils.js.map +2 -2
  316. package/dist/source/components/dataDisplay/dagView/dagView.jsx +30 -21
  317. package/dist/source/components/dataDisplay/dagView/dagView.jsx.map +1 -1
  318. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx +78 -0
  319. package/dist/source/components/dataDisplay/diffStat/diffStat.jsx.map +1 -0
  320. package/dist/source/components/dataDisplay/diffStat/index.js +19 -0
  321. package/dist/source/components/dataDisplay/diffStat/index.js.map +7 -0
  322. package/dist/source/components/dataDisplay/kbd/index.js +9 -0
  323. package/dist/source/components/dataDisplay/kbd/index.js.map +7 -0
  324. package/dist/source/components/dataDisplay/kbd/kbd.jsx +50 -0
  325. package/dist/source/components/dataDisplay/kbd/kbd.jsx.map +1 -0
  326. package/dist/source/components/dataDisplay/kbd/kbdKeys.js +79 -0
  327. package/dist/source/components/dataDisplay/kbd/kbdKeys.js.map +7 -0
  328. package/dist/source/components/dataDisplay/list/listItem.jsx +37 -7
  329. package/dist/source/components/dataDisplay/list/listItem.jsx.map +1 -1
  330. package/dist/source/components/dataDisplay/qrCode/index.js +6 -0
  331. package/dist/source/components/dataDisplay/qrCode/index.js.map +7 -0
  332. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx +96 -0
  333. package/dist/source/components/dataDisplay/qrCode/qrCode.jsx.map +1 -0
  334. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js +24 -0
  335. package/dist/source/components/dataDisplay/qrCode/qrCodePath.js.map +7 -0
  336. package/dist/source/components/dataDisplay/statusDot/index.js +6 -0
  337. package/dist/source/components/dataDisplay/statusDot/index.js.map +7 -0
  338. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx +30 -0
  339. package/dist/source/components/dataDisplay/statusDot/statusDot.jsx.map +1 -0
  340. package/dist/source/components/dataDisplay/swimlanes/index.js +15 -0
  341. package/dist/source/components/dataDisplay/swimlanes/index.js.map +7 -0
  342. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx +452 -0
  343. package/dist/source/components/dataDisplay/swimlanes/swimlanes.jsx.map +1 -0
  344. package/dist/source/components/dataDisplay/treeView/treeView.jsx +118 -37
  345. package/dist/source/components/dataDisplay/treeView/treeView.jsx.map +1 -1
  346. package/dist/source/components/feedBack/modal/modal.jsx +34 -4
  347. package/dist/source/components/feedBack/modal/modal.jsx.map +1 -1
  348. package/dist/source/components/inputs/button/button.jsx +6 -2
  349. package/dist/source/components/inputs/button/button.jsx.map +1 -1
  350. package/dist/source/components/inputs/composer/composer.jsx +321 -0
  351. package/dist/source/components/inputs/composer/composer.jsx.map +1 -0
  352. package/dist/source/components/inputs/composer/composerFiles.js +27 -0
  353. package/dist/source/components/inputs/composer/composerFiles.js.map +7 -0
  354. package/dist/source/components/inputs/composer/composerKeys.js +11 -0
  355. package/dist/source/components/inputs/composer/composerKeys.js.map +7 -0
  356. package/dist/source/components/inputs/composer/index.js +5 -0
  357. package/dist/source/components/inputs/composer/index.js.map +7 -0
  358. package/dist/source/components/layout/sheet/sheet.jsx +33 -11
  359. package/dist/source/components/layout/sheet/sheet.jsx.map +1 -1
  360. package/dist/source/components/layout/tabGroups/index.js +8 -0
  361. package/dist/source/components/layout/tabGroups/index.js.map +7 -0
  362. package/dist/source/components/layout/tabGroups/tabGroups.jsx +1119 -0
  363. package/dist/source/components/layout/tabGroups/tabGroups.jsx.map +1 -0
  364. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js +222 -0
  365. package/dist/source/components/layout/tabGroups/tabGroupsFocus.js.map +7 -0
  366. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js +629 -0
  367. package/dist/source/components/layout/tabGroups/tabGroupsLayout.js.map +7 -0
  368. package/dist/source/components/navigation/appBar/appBar.jsx +27 -3
  369. package/dist/source/components/navigation/appBar/appBar.jsx.map +1 -1
  370. package/dist/source/components/navigation/commandPalette/commandPalette.jsx +508 -0
  371. package/dist/source/components/navigation/commandPalette/commandPalette.jsx.map +1 -0
  372. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js +16 -0
  373. package/dist/source/components/navigation/commandPalette/commandPaletteFilter.js.map +7 -0
  374. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js +54 -0
  375. package/dist/source/components/navigation/commandPalette/commandPaletteNavigation.js.map +7 -0
  376. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js +1 -0
  377. package/dist/source/components/navigation/commandPalette/commandPaletteTypes.js.map +7 -0
  378. package/dist/source/components/navigation/commandPalette/index.js +11 -0
  379. package/dist/source/components/navigation/commandPalette/index.js.map +7 -0
  380. package/dist/source/components/navigation/sidebar/sidebar.jsx +5 -2
  381. package/dist/source/components/navigation/sidebar/sidebar.jsx.map +1 -1
  382. package/dist/source/components/navigation/tabs/index.js +2 -0
  383. package/dist/source/components/navigation/tabs/index.js.map +2 -2
  384. package/dist/source/components/navigation/tabs/tab/tab.jsx +135 -8
  385. package/dist/source/components/navigation/tabs/tab/tab.jsx.map +1 -1
  386. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx +30 -0
  387. package/dist/source/components/navigation/tabs/tabPanel/tabPanel.jsx.map +1 -0
  388. package/dist/source/components/navigation/tabs/tabs.jsx +361 -13
  389. package/dist/source/components/navigation/tabs/tabs.jsx.map +1 -1
  390. package/dist/source/components/navigation/tabs/tabs.utils.js +18 -0
  391. package/dist/source/components/navigation/tabs/tabs.utils.js.map +7 -0
  392. package/dist/source/components/navigation/tabs/tabsContext.js.map +2 -2
  393. package/dist/source/index.js +41 -1
  394. package/dist/source/index.js.map +2 -2
  395. package/dist/source/primitives/createFocusTrap.js +8 -3
  396. package/dist/source/primitives/createFocusTrap.js.map +2 -2
  397. package/dist/source/primitives/createKeyboardShortcut.js +23 -0
  398. package/dist/source/primitives/createKeyboardShortcut.js.map +7 -0
  399. package/dist/source/primitives/restoreFocus.js +14 -0
  400. package/dist/source/primitives/restoreFocus.js.map +7 -0
  401. package/dist/source/utils/keyboardShortcut.js +74 -0
  402. package/dist/source/utils/keyboardShortcut.js.map +7 -0
  403. package/dist/source/utils/linkAttrs.js +16 -0
  404. package/dist/source/utils/linkAttrs.js.map +7 -0
  405. package/dist/utils/keyboardShortcut.d.ts +12 -0
  406. package/dist/utils/keyboardShortcut.js +48 -0
  407. package/dist/utils/keyboardShortcut.js.map +1 -0
  408. package/dist/utils/linkAttrs.d.ts +13 -0
  409. package/dist/utils/linkAttrs.js +13 -0
  410. package/dist/utils/linkAttrs.js.map +1 -0
  411. package/package.json +66 -3
@@ -1,30 +1,35 @@
1
- import { createComponent as a, Portal as j, use as _, insert as d, effect as C, className as H, isServer as q, template as f, mergeProps as T, spread as F, setAttribute as w, memo as G, delegateEvents as J } from "solid-js/web";
1
+ import { createComponent as l, Portal as q, use as _, insert as d, effect as x, className as D, isServer as G, template as f, mergeProps as R, spread as J, setAttribute as g, memo as y, delegateEvents as Q } from "solid-js/web";
2
2
  import '../../../assets/styles/less/components/sheet/sheet.entry.css';import '../../../assets/styles/less/tokens.entry.css';/* empty css */
3
3
  /* empty css */
4
- import { mergeProps as R, splitProps as B, createSignal as M, createEffect as I, onCleanup as Q, Show as g } from "solid-js";
5
- import x from "clsx";
6
- import { createCssTransition as K } from "../../../primitives/createCssTransition.js";
7
- import { isTopOverlayLayer as Z } from "../../../primitives/overlayLayer.js";
8
- import { mergeRefs as ee } from "../../../primitives/mergeRefs.js";
9
- import { mergeStyle as te } from "../../../primitives/mergeStyle.js";
10
- import { ClickAwayListener as re } from "../../clickAwayListener/clickAwayListener.js";
11
- import { Button as P } from "../../inputs/button/button.js";
12
- import { Icon as E } from "../../base/icon/icon.js";
13
- var ne = /* @__PURE__ */ f("<div class=smwb-sheet__drag-handle data-testid=sheet-drag-handle role=separator tabindex=0><span class=smwb-sheet__drag-handle-bar>"), ie = /* @__PURE__ */ f("<div class=smwb-sheet__header>"), oe = /* @__PURE__ */ f("<div class=smwb-sheet__inner>"), se = /* @__PURE__ */ f("<div>"), L = /* @__PURE__ */ f("<div data-smwb-overlay-layer>");
14
- const ae = (m) => m === "bottom" || m === "top";
15
- function le(m) {
16
- const b = R({
4
+ import { mergeProps as B, splitProps as M, createSignal as I, createEffect as K, onCleanup as N, Show as w, on as Z } from "solid-js";
5
+ import C from "clsx";
6
+ import { createCssTransition as W } from "../../../primitives/createCssTransition.js";
7
+ import { isTopOverlayLayer as ee } from "../../../primitives/overlayLayer.js";
8
+ import { restoreFocus as te } from "../../../primitives/restoreFocus.js";
9
+ import { mergeRefs as re } from "../../../primitives/mergeRefs.js";
10
+ import { mergeStyle as ne } from "../../../primitives/mergeStyle.js";
11
+ import { ClickAwayListener as oe } from "../../clickAwayListener/clickAwayListener.js";
12
+ import { Button as H } from "../../inputs/button/button.js";
13
+ import { Icon as P } from "../../base/icon/icon.js";
14
+ var ae = /* @__PURE__ */ f("<div class=smwb-sheet__drag-handle data-testid=sheet-drag-handle role=separator tabindex=0><span class=smwb-sheet__drag-handle-bar>"), ie = /* @__PURE__ */ f("<div class=smwb-sheet__header>"), se = /* @__PURE__ */ f("<div class=smwb-sheet__inner>"), le = /* @__PURE__ */ f("<div>"), T = /* @__PURE__ */ f("<div data-smwb-overlay-layer>");
15
+ const ce = (m) => m === "bottom" || m === "top";
16
+ function de(m) {
17
+ const z = B({
17
18
  size: "60%",
18
19
  withSizeToggle: !0,
19
20
  hideHeaderActions: !1,
20
21
  reverseHeaderActions: !1,
22
+ closeAriaLabel: "Close sheet",
23
+ expandAriaLabel: "Expand sheet",
24
+ collapseAriaLabel: "Collapse sheet",
25
+ restoreAriaLabel: "Restore sheet size",
21
26
  resizable: !1,
22
27
  minSize: 80,
23
28
  resizeStep: 24,
24
29
  resizeHandleAriaLabel: "Resize sheet"
25
- }, m), [e, S] = B(b, ["isOpen", "placement", "class", "mode", "size", "variant", "onClose", "withSizeToggle", "hideHeaderActions", "reverseHeaderActions", "resizable", "minSize", "maxSize", "resizeStep", "resizeHandleAriaLabel", "onResize", "style", "handleClose", "handleSizeButton", "children", "ref", "data-testid"]);
30
+ }, m), [e, A] = M(z, ["isOpen", "placement", "class", "mode", "size", "variant", "onClose", "withSizeToggle", "hideHeaderActions", "reverseHeaderActions", "closeAriaLabel", "expandAriaLabel", "collapseAriaLabel", "restoreAriaLabel", "resizable", "minSize", "maxSize", "resizeStep", "resizeHandleAriaLabel", "onResize", "style", "handleClose", "handleSizeButton", "children", "ref", "data-testid"]);
26
31
  let h;
27
- const [c, u] = M(null), s = () => ae(e.placement), y = K({
32
+ const [c, u] = I(null), s = () => ce(e.placement), S = W({
28
33
  in: () => e.isOpen,
29
34
  timeout: {
30
35
  enter: 120,
@@ -34,19 +39,19 @@ function le(m) {
34
39
  enterDone: "smwb-sheet_entered"
35
40
  },
36
41
  appear: !0
37
- }), v = (t) => {
38
- const l = s() ? window.innerHeight : window.innerWidth, r = e.maxSize ?? l;
42
+ }), b = (t) => {
43
+ const a = s() ? window.innerHeight : window.innerWidth, r = e.maxSize ?? a;
39
44
  return Math.max(e.minSize, Math.min(r, t));
40
45
  }, p = () => {
41
46
  const t = h?.getBoundingClientRect();
42
47
  return t ? s() ? t.height : t.width : e.minSize;
43
48
  }, n = (t) => {
44
- const l = v(t);
45
- u(l), e.onResize?.(l);
49
+ const a = b(t);
50
+ u(a), e.onResize?.(a);
46
51
  };
47
- let i = null;
48
- const N = (t) => {
49
- t.preventDefault(), i = {
52
+ let o = null;
53
+ const U = (t) => {
54
+ t.preventDefault(), o = {
50
55
  start: s() ? t.clientY : t.clientX,
51
56
  size: p()
52
57
  };
@@ -54,49 +59,58 @@ function le(m) {
54
59
  t.currentTarget.setPointerCapture?.(t.pointerId);
55
60
  } catch {
56
61
  }
57
- }, W = (t) => {
58
- if (!i) return;
59
- const r = (s() ? t.clientY : t.clientX) - i.start, o = e.placement === "bottom" || e.placement === "right" ? -r : r;
60
- n(i.size + o);
61
- }, A = (t) => {
62
- i = null, t.currentTarget.hasPointerCapture?.(t.pointerId) && t.currentTarget.releasePointerCapture?.(t.pointerId);
63
- }, U = (t) => {
64
- const l = c() ?? p(), r = e.maxSize ?? (s() ? window.innerHeight : window.innerWidth), o = e.placement === "bottom" ? "ArrowUp" : e.placement === "top" ? "ArrowDown" : e.placement === "left" ? "ArrowRight" : "ArrowLeft", z = e.placement === "bottom" ? "ArrowDown" : e.placement === "top" ? "ArrowUp" : e.placement === "left" ? "ArrowLeft" : "ArrowRight";
65
- t.key === o ? (t.preventDefault(), n(l + e.resizeStep)) : t.key === z ? (t.preventDefault(), n(l - e.resizeStep)) : t.key === "Home" ? (t.preventDefault(), n(e.minSize)) : t.key === "End" && (t.preventDefault(), n(r));
62
+ }, X = (t) => {
63
+ if (!o) return;
64
+ const r = (s() ? t.clientY : t.clientX) - o.start, i = e.placement === "bottom" || e.placement === "right" ? -r : r;
65
+ n(o.size + i);
66
+ }, L = (t) => {
67
+ o = null, t.currentTarget.hasPointerCapture?.(t.pointerId) && t.currentTarget.releasePointerCapture?.(t.pointerId);
68
+ }, Y = (t) => {
69
+ const a = c() ?? p(), r = e.maxSize ?? (s() ? window.innerHeight : window.innerWidth), i = e.placement === "bottom" ? "ArrowUp" : e.placement === "top" ? "ArrowDown" : e.placement === "left" ? "ArrowRight" : "ArrowLeft", v = e.placement === "bottom" ? "ArrowDown" : e.placement === "top" ? "ArrowUp" : e.placement === "left" ? "ArrowLeft" : "ArrowRight";
70
+ t.key === i ? (t.preventDefault(), n(a + e.resizeStep)) : t.key === v ? (t.preventDefault(), n(a - e.resizeStep)) : t.key === "Home" ? (t.preventDefault(), n(e.minSize)) : t.key === "End" && (t.preventDefault(), n(r));
66
71
  };
67
- I(() => {
68
- if (!e.isOpen) {
72
+ K(Z(() => e.isOpen, (t) => {
73
+ if (!t) {
69
74
  u(null);
70
75
  return;
71
76
  }
72
- h?.focus();
73
- });
74
- const X = () => !e.hideHeaderActions && (!!e.onClose || e.withSizeToggle), Y = () => {
77
+ const a = h, r = a?.contains(document.activeElement) ? null : document.activeElement;
78
+ a?.focus(), N(() => te(r, a));
79
+ }));
80
+ const F = () => !e.hideHeaderActions && (!!e.onClose || e.withSizeToggle), V = () => {
75
81
  const t = [];
76
- return e.withSizeToggle && t.push(a(P, {
82
+ return e.withSizeToggle && t.push(l(H, {
77
83
  variant: "outlined",
78
84
  size: "small",
79
85
  get onClick() {
80
86
  return e.handleSizeButton;
81
87
  },
88
+ get "aria-label"() {
89
+ return y(() => e.mode === "expanded")() ? e.collapseAriaLabel : y(() => e.mode === "small")() ? e.restoreAriaLabel : e.expandAriaLabel;
90
+ },
82
91
  get children() {
83
- return a(E, {
84
- name: "open_in_full"
92
+ return l(P, {
93
+ get name() {
94
+ return e.mode === "expanded" ? "close_fullscreen" : "open_in_full";
95
+ }
85
96
  });
86
97
  }
87
- })), e.onClose && t.push(a(P, {
98
+ })), e.onClose && t.push(l(H, {
88
99
  variant: "outlined",
89
100
  size: "small",
90
101
  get onClick() {
91
102
  return e.handleClose;
92
103
  },
104
+ get "aria-label"() {
105
+ return e.closeAriaLabel;
106
+ },
93
107
  get children() {
94
- return a(E, {
108
+ return l(P, {
95
109
  name: "close"
96
110
  });
97
111
  }
98
112
  })), e.reverseHeaderActions && t.reverse(), t;
99
- }, V = () => {
113
+ }, j = () => {
100
114
  if (e.resizable && c() !== null) {
101
115
  const t = `${c()}px`;
102
116
  return {
@@ -111,8 +125,8 @@ function le(m) {
111
125
  return {};
112
126
  };
113
127
  return (() => {
114
- var t = se(), l = ee(e.ref, (r) => h = r);
115
- return typeof l == "function" && _(l, t), F(t, T(S, {
128
+ var t = le(), a = re(e.ref, (r) => h = r);
129
+ return typeof a == "function" && _(a, t), J(t, R(A, {
116
130
  get "data-testid"() {
117
131
  return e["data-testid"] ?? "sheet";
118
132
  },
@@ -122,27 +136,27 @@ function le(m) {
122
136
  return e.variant === "modal" || void 0;
123
137
  },
124
138
  get class() {
125
- return x("smwb-sheet", e.class, `smwb-sheet_${e.variant}`, `smwb-${e.placement}`, y.classes(), {
139
+ return C("smwb-sheet", e.class, `smwb-sheet_${e.variant}`, `smwb-${e.placement}`, S.classes(), {
126
140
  "smwb-expanded": e.mode === "expanded",
127
141
  "smwb-small": e.mode === "small",
128
142
  "smwb-sheet_resizable": e.resizable
129
143
  });
130
144
  },
131
145
  get style() {
132
- return te({
146
+ return ne({
133
147
  "--sizeProp": e.size,
134
- ...V()
148
+ ...j()
135
149
  }, e.style);
136
150
  }
137
- }), !1, !0), d(t, a(g, {
151
+ }), !1, !0), d(t, l(w, {
138
152
  get when() {
139
153
  return e.resizable;
140
154
  },
141
155
  get children() {
142
- var r = ne();
143
- return r.$$keydown = U, r.addEventListener("pointercancel", A), r.$$pointerup = A, r.$$pointermove = W, r.$$pointerdown = N, C((o) => {
144
- var z = s() ? "horizontal" : "vertical", $ = e.resizeHandleAriaLabel, k = e.minSize, O = Math.round(e.maxSize ?? (s() ? window.innerHeight : window.innerWidth)), D = Math.round(c() ?? p());
145
- return z !== o.e && w(r, "aria-orientation", o.e = z), $ !== o.t && w(r, "aria-label", o.t = $), k !== o.a && w(r, "aria-valuemin", o.a = k), O !== o.o && w(r, "aria-valuemax", o.o = O), D !== o.i && w(r, "aria-valuenow", o.i = D), o;
156
+ var r = ae();
157
+ return r.$$keydown = Y, r.addEventListener("pointercancel", L), r.$$pointerup = L, r.$$pointermove = X, r.$$pointerdown = U, x((i) => {
158
+ var v = s() ? "horizontal" : "vertical", $ = e.resizeHandleAriaLabel, k = e.minSize, O = Math.round(e.maxSize ?? (s() ? window.innerHeight : window.innerWidth)), E = Math.round(c() ?? p());
159
+ return v !== i.e && g(r, "aria-orientation", i.e = v), $ !== i.t && g(r, "aria-label", i.t = $), k !== i.a && g(r, "aria-valuemin", i.a = k), O !== i.o && g(r, "aria-valuemax", i.o = O), E !== i.i && g(r, "aria-valuenow", i.i = E), i;
146
160
  }, {
147
161
  e: void 0,
148
162
  t: void 0,
@@ -151,33 +165,33 @@ function le(m) {
151
165
  i: void 0
152
166
  }), r;
153
167
  }
154
- }), null), d(t, a(g, {
168
+ }), null), d(t, l(w, {
155
169
  get when() {
156
- return X();
170
+ return F();
157
171
  },
158
172
  get children() {
159
173
  var r = ie();
160
- return d(r, Y), r;
174
+ return d(r, V), r;
161
175
  }
162
- }), null), d(t, a(g, {
176
+ }), null), d(t, l(w, {
163
177
  get when() {
164
- return G(() => !!e.isOpen)() && e.mode !== "small";
178
+ return y(() => !!e.isOpen)() && e.mode !== "small";
165
179
  },
166
180
  get children() {
167
- var r = oe();
181
+ var r = se();
168
182
  return d(r, () => e.children), r;
169
183
  }
170
184
  }), null), t;
171
185
  })();
172
186
  }
173
- function Se(m) {
174
- const b = R({
187
+ function _e(m) {
188
+ const z = B({
175
189
  variant: "default",
176
190
  placement: "bottom",
177
191
  closeOnEsc: !0
178
- }, m), [e, S] = B(b, ["isOpen", "onClose", "variant", "children", "placement", "disableOutsideClick", "closeOnEsc", "ref"]), [h, c] = M(null);
192
+ }, m), [e, A] = M(z, ["isOpen", "onClose", "variant", "children", "placement", "disableOutsideClick", "closeOnEsc", "ref"]), [h, c] = I(null);
179
193
  let u;
180
- const s = K({
194
+ const s = W({
181
195
  in: () => e.isOpen,
182
196
  timeout: {
183
197
  enter: 70,
@@ -188,21 +202,21 @@ function Se(m) {
188
202
  },
189
203
  appear: !0
190
204
  });
191
- I(() => {
205
+ K(() => {
192
206
  if (!e.isOpen || !e.closeOnEsc || !e.onClose) return;
193
- const n = (i) => {
194
- i.key === "Escape" && !i.defaultPrevented && Z(u) && e.onClose?.();
207
+ const n = (o) => {
208
+ o.key === "Escape" && !o.defaultPrevented && ee(u) && e.onClose?.();
195
209
  };
196
- document.addEventListener("keydown", n), Q(() => document.removeEventListener("keydown", n));
210
+ document.addEventListener("keydown", n), N(() => document.removeEventListener("keydown", n));
197
211
  });
198
- const y = () => {
212
+ const S = () => {
199
213
  c((n) => n === "expanded" ? "small" : n === null ? "expanded" : null);
200
- }, v = () => {
214
+ }, b = () => {
201
215
  e.onClose?.(), c(null);
202
- }, p = () => a(le, T(S, {
216
+ }, p = () => l(de, R(A, {
203
217
  ref(n) {
204
- var i = e.ref;
205
- typeof i == "function" ? i(n) : e.ref = n;
218
+ var o = e.ref;
219
+ typeof o == "function" ? o(n) : e.ref = n;
206
220
  },
207
221
  get isOpen() {
208
222
  return e.isOpen;
@@ -210,8 +224,8 @@ function Se(m) {
210
224
  get onClose() {
211
225
  return e.onClose;
212
226
  },
213
- handleSizeButton: y,
214
- handleClose: v,
227
+ handleSizeButton: S,
228
+ handleClose: b,
215
229
  get mode() {
216
230
  return h();
217
231
  },
@@ -225,34 +239,34 @@ function Se(m) {
225
239
  return e.children;
226
240
  }
227
241
  }));
228
- return a(g, {
242
+ return l(w, {
229
243
  get when() {
230
244
  return s.mounted();
231
245
  },
232
246
  get children() {
233
- return a(j, {
247
+ return l(q, {
234
248
  get mount() {
235
- return q ? void 0 : document.body;
249
+ return G ? void 0 : document.body;
236
250
  },
237
251
  get children() {
238
- return a(g, {
252
+ return l(w, {
239
253
  get when() {
240
254
  return e.variant === "default";
241
255
  },
242
256
  get fallback() {
243
257
  return (() => {
244
- var n = L();
245
- return _((i) => u = i, n), d(n, a(re, {
246
- onClickAway: () => !e.disableOutsideClick && v(),
258
+ var n = T();
259
+ return _((o) => u = o, n), d(n, l(oe, {
260
+ onClickAway: () => !e.disableOutsideClick && b(),
247
261
  get children() {
248
262
  return p();
249
263
  }
250
- })), C(() => H(n, x("smwb-sheet__overlay", "smwb-dark", `smwb-${e.placement}`, `smwb-sheet_${e.variant}`, s.classes()))), n;
264
+ })), x(() => D(n, C("smwb-sheet__overlay", "smwb-dark", `smwb-${e.placement}`, `smwb-sheet_${e.variant}`, s.classes()))), n;
251
265
  })();
252
266
  },
253
267
  get children() {
254
- var n = L();
255
- return _((i) => u = i, n), d(n, p), C(() => H(n, x(e.disableOutsideClick ? "smwb-sheet__overlay" : "smwb-sheet__default", s.classes()))), n;
268
+ var n = T();
269
+ return _((o) => u = o, n), d(n, p), x(() => D(n, C(e.disableOutsideClick ? "smwb-sheet__overlay" : "smwb-sheet__default", s.classes()))), n;
256
270
  }
257
271
  });
258
272
  }
@@ -260,8 +274,8 @@ function Se(m) {
260
274
  }
261
275
  });
262
276
  }
263
- J(["pointerdown", "pointermove", "pointerup", "keydown"]);
277
+ Q(["pointerdown", "pointermove", "pointerup", "keydown"]);
264
278
  export {
265
- Se as Sheet
279
+ _e as Sheet
266
280
  };
267
281
  //# sourceMappingURL=sheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sources":["../../../../src/components/layout/sheet/sheet.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport interface SheetProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n placement?: \"top\" | \"bottom\" | \"right\" | \"left\";\n isOpen: boolean;\n onClose?: (() => void) | undefined;\n variant?: \"default\" | \"modal\";\n withSizeToggle?: boolean;\n /** Hide built-in header actions; onClose still handles Esc and backdrop. */\n hideHeaderActions?: boolean;\n reverseHeaderActions?: boolean;\n size?: string;\n disableOutsideClick?: boolean;\n /** Close the sheet when Escape is pressed. */\n closeOnEsc?: boolean;\n /** Allow drag-to-resize (mobile bottom-sheet style). Off by default. */\n resizable?: boolean;\n /** Minimum size in px while resizing (default 80). */\n minSize?: number;\n /** Maximum size in px while resizing (default: viewport dimension). */\n maxSize?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Called with the new size in px while/after resizing. */\n onResize?: (size: number) => void;\n \"aria-label\"?: string;\n /** Test id of the sheet panel (the dialog); `sheet` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Mode = \"small\" | \"expanded\" | null;\n\nconst isVerticalAxis = (placement: SheetProps[\"placement\"]): boolean => placement === \"bottom\" || placement === \"top\";\n\ninterface SheetBlockProps extends ParentProps<SheetProps> {\n mode: Mode;\n handleSizeButton: () => void;\n handleClose: () => void;\n}\n\nfunction SheetBlock(props: SheetBlockProps): JSX.Element {\n const merged = mergeProps(\n {\n size: \"60%\",\n withSizeToggle: true,\n hideHeaderActions: false,\n reverseHeaderActions: false,\n resizable: false,\n minSize: 80,\n resizeStep: 24,\n resizeHandleAriaLabel: \"Resize sheet\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"placement\",\n \"class\",\n \"mode\",\n \"size\",\n \"variant\",\n \"onClose\",\n \"withSizeToggle\",\n \"hideHeaderActions\",\n \"reverseHeaderActions\",\n \"resizable\",\n \"minSize\",\n \"maxSize\",\n \"resizeStep\",\n \"resizeHandleAriaLabel\",\n \"onResize\",\n \"style\",\n \"handleClose\",\n \"handleSizeButton\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const [dragSize, setDragSize] = createSignal<number | null>(null);\n const vertical = (): boolean => isVerticalAxis(local.placement);\n\n const inner = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-sheet_entered\" },\n appear: true,\n });\n\n const clamp = (px: number): number => {\n const viewport = vertical() ? window.innerHeight : window.innerWidth;\n const max = local.maxSize ?? viewport;\n return Math.max(local.minSize, Math.min(max, px));\n };\n\n const currentSizePx = (): number => {\n const rect = rootEl?.getBoundingClientRect();\n if (!rect) return local.minSize;\n return vertical() ? rect.height : rect.width;\n };\n\n const applySize = (px: number): void => {\n const next = clamp(px);\n setDragSize(next);\n local.onResize?.(next);\n };\n\n let drag: { start: number; size: number } | null = null;\n\n const onPointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n event.preventDefault();\n drag = { start: vertical() ? event.clientY : event.clientX, size: currentSizePx() };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const pos = vertical() ? event.clientY : event.clientX;\n const delta = pos - drag.start;\n const grow = local.placement === \"bottom\" || local.placement === \"right\" ? -delta : delta;\n applySize(drag.size + grow);\n };\n\n const endDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n drag = null;\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const onHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const base = dragSize() ?? currentSizePx();\n const max = local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth);\n const incKey =\n local.placement === \"bottom\" ? \"ArrowUp\" : local.placement === \"top\" ? \"ArrowDown\" : local.placement === \"left\" ? \"ArrowRight\" : \"ArrowLeft\";\n const decKey =\n local.placement === \"bottom\" ? \"ArrowDown\" : local.placement === \"top\" ? \"ArrowUp\" : local.placement === \"left\" ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === incKey) {\n event.preventDefault();\n applySize(base + local.resizeStep);\n } else if (event.key === decKey) {\n event.preventDefault();\n applySize(base - local.resizeStep);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n applySize(local.minSize);\n } else if (event.key === \"End\") {\n event.preventDefault();\n applySize(max);\n }\n };\n\n createEffect(() => {\n if (!local.isOpen) {\n setDragSize(null);\n return;\n }\n rootEl?.focus();\n });\n\n const showActions = (): boolean => !local.hideHeaderActions && (!!local.onClose || local.withSizeToggle);\n const actionNodes = (): JSX.Element[] => {\n const nodes: JSX.Element[] = [];\n if (local.withSizeToggle) {\n nodes.push(\n <Button variant=\"outlined\" size=\"small\" onClick={local.handleSizeButton}>\n <Icon name=\"open_in_full\" />\n </Button>\n );\n }\n if (local.onClose) {\n nodes.push(\n <Button variant=\"outlined\" size=\"small\" onClick={local.handleClose}>\n <Icon name=\"close\" />\n </Button>\n );\n }\n if (local.reverseHeaderActions) nodes.reverse();\n return nodes;\n };\n\n const sizeStyle = (): JSX.CSSProperties => {\n if (local.resizable && dragSize() !== null) {\n const px = `${dragSize()}px`;\n return { ...(vertical() ? { height: px } : { width: px }), transition: \"none\" };\n }\n return {};\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid={local[\"data-testid\"] ?? \"sheet\"}\n tabindex={-1}\n role=\"dialog\"\n aria-modal={local.variant === \"modal\" || undefined}\n class={cn(\"smwb-sheet\", local.class, `smwb-sheet_${local.variant}`, `smwb-${local.placement}`, inner.classes(), {\n \"smwb-expanded\": local.mode === \"expanded\",\n \"smwb-small\": local.mode === \"small\",\n \"smwb-sheet_resizable\": local.resizable,\n })}\n style={mergeStyle({ \"--sizeProp\": local.size, ...sizeStyle() }, local.style)}\n >\n <Show when={local.resizable}>\n <div\n class=\"smwb-sheet__drag-handle\"\n data-testid=\"sheet-drag-handle\"\n role=\"separator\"\n tabindex={0}\n aria-orientation={vertical() ? \"horizontal\" : \"vertical\"}\n aria-label={local.resizeHandleAriaLabel}\n aria-valuemin={local.minSize}\n aria-valuemax={Math.round(local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth))}\n aria-valuenow={Math.round(dragSize() ?? currentSizePx())}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={onHandleKeyDown}\n >\n <span class=\"smwb-sheet__drag-handle-bar\" />\n </div>\n </Show>\n <Show when={showActions()}>\n <div class=\"smwb-sheet__header\">{actionNodes()}</div>\n </Show>\n <Show when={local.isOpen && local.mode !== \"small\"}>\n <div class=\"smwb-sheet__inner\">{local.children}</div>\n </Show>\n </div>\n );\n}\n\nexport function Sheet(props: ParentProps<SheetProps>): JSX.Element {\n const merged = mergeProps({ variant: \"default\" as const, placement: \"bottom\" as const, closeOnEsc: true }, props);\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"onClose\",\n \"variant\",\n \"children\",\n \"placement\",\n \"disableOutsideClick\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createSignal<Mode>(null);\n let wrapperEl: HTMLDivElement | undefined;\n\n const outer = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 70, exit: 70 },\n classNames: { enterDone: \"smwb-entered\" },\n appear: true,\n });\n\n createEffect(() => {\n if (!local.isOpen || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n // Only the topmost overlay layer reacts to Escape, and not to one handled inside\n // it, e.g. by a menu closing on it.\n if (event.key === \"Escape\" && !event.defaultPrevented && isTopOverlayLayer(wrapperEl)) local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const handleSizeButton = (): void => {\n setMode((prev) => (prev === \"expanded\" ? \"small\" : prev === null ? \"expanded\" : null));\n };\n const handleClose = (): void => {\n local.onClose?.();\n setMode(null);\n };\n\n const block = (): JSX.Element => (\n <SheetBlock\n {...rest}\n ref={local.ref}\n isOpen={local.isOpen}\n onClose={local.onClose}\n handleSizeButton={handleSizeButton}\n handleClose={handleClose}\n mode={mode()}\n placement={local.placement}\n variant={local.variant}\n >\n {local.children}\n </SheetBlock>\n );\n\n return (\n <Show when={outer.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <Show\n when={local.variant === \"default\"}\n fallback={\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(\"smwb-sheet__overlay\", \"smwb-dark\", `smwb-${local.placement}`, `smwb-sheet_${local.variant}`, outer.classes())}\n >\n <ClickAwayListener onClickAway={() => !local.disableOutsideClick && handleClose()}>\n {block()}\n </ClickAwayListener>\n </div>\n }\n >\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(local.disableOutsideClick ? \"smwb-sheet__overlay\" : \"smwb-sheet__default\", outer.classes())}\n >\n {block()}\n </div>\n </Show>\n </Portal>\n </Show>\n );\n}\n\nexport default Sheet;\n"],"names":["isVerticalAxis","placement","SheetBlock","props","merged","mergeProps","size","withSizeToggle","hideHeaderActions","reverseHeaderActions","resizable","minSize","resizeStep","resizeHandleAriaLabel","local","rest","splitProps","rootEl","dragSize","setDragSize","createSignal","vertical","inner","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterDone","appear","clamp","px","viewport","window","innerHeight","innerWidth","max","maxSize","Math","min","currentSizePx","rect","getBoundingClientRect","height","width","applySize","next","onResize","drag","onPointerDown","event","preventDefault","start","clientY","clientX","currentTarget","setPointerCapture","pointerId","onPointerMove","delta","grow","endDrag","hasPointerCapture","releasePointerCapture","onHandleKeyDown","base","incKey","decKey","key","createEffect","focus","showActions","onClose","actionNodes","nodes","push","_$createComponent","Button","variant","onClick","handleSizeButton","children","Icon","name","handleClose","reverse","sizeStyle","transition","_el$","_tmpl$4","_ref$","mergeRefs","ref","el","_$use","_$spread","_$mergeProps","undefined","cn","class","classes","mode","style","mergeStyle","_$insert","Show","when","_el$2","_tmpl$","$$keydown","addEventListener","$$pointerup","$$pointermove","$$pointerdown","_$effect","_p$","_v$","_v$2","_v$3","_v$4","round","_v$5","e","_$setAttribute","t","a","o","i","_el$3","_tmpl$2","_$memo","_el$4","_tmpl$3","Sheet","closeOnEsc","setMode","wrapperEl","outer","onKeyDown","defaultPrevented","isTopOverlayLayer","document","onCleanup","removeEventListener","prev","block","r$","_ref$2","mounted","Portal","mount","isServer","body","fallback","_el$6","_tmpl$5","ClickAwayListener","onClickAway","disableOutsideClick","_$className","_el$5","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sources":["../../../../src/components/layout/sheet/sheet.tsx"],"sourcesContent":["import { type JSX, type ParentProps, Show, createEffect, createSignal, mergeProps, on, onCleanup, splitProps } from \"solid-js\";\nimport { Portal, isServer } from \"solid-js/web\";\nimport cn from \"clsx\";\nimport { Button } from \"../../inputs/button\";\nimport { Icon } from \"../../base/icon\";\nimport { ClickAwayListener } from \"../../clickAwayListener\";\nimport { createCssTransition } from \"../../../primitives/createCssTransition\";\nimport { isTopOverlayLayer } from \"../../../primitives/overlayLayer\";\nimport { restoreFocus } from \"../../../primitives/restoreFocus\";\nimport { mergeRefs, type Ref } from \"../../../primitives/mergeRefs\";\nimport { mergeStyle } from \"../../../primitives/mergeStyle\";\n\nexport interface SheetProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, \"onResize\"> {\n placement?: \"top\" | \"bottom\" | \"right\" | \"left\";\n isOpen: boolean;\n onClose?: (() => void) | undefined;\n variant?: \"default\" | \"modal\";\n withSizeToggle?: boolean;\n /** Hide built-in header actions; onClose still handles Esc and backdrop. */\n hideHeaderActions?: boolean;\n reverseHeaderActions?: boolean;\n /** Accessible name of the header close button (default \"Close sheet\"). */\n closeAriaLabel?: string;\n /**\n * Accessible name of the size toggle while the sheet is at its normal size (default \"Expand sheet\"). The toggle\n * cycles normal, expanded, collapsed and back, and its name always says what the next press does; the\n * name changing is how it exposes its state. It shows the `open_in_full` icon, and `close_fullscreen` while expanded.\n */\n expandAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is expanded (default \"Collapse sheet\"). */\n collapseAriaLabel?: string;\n /** Accessible name of the size toggle while the sheet is collapsed to its header (default \"Restore sheet size\"). */\n restoreAriaLabel?: string;\n size?: string;\n disableOutsideClick?: boolean;\n /** Close the sheet when Escape is pressed. */\n closeOnEsc?: boolean;\n /** Allow drag-to-resize (mobile bottom-sheet style). Off by default. */\n resizable?: boolean;\n /** Minimum size in px while resizing (default 80). */\n minSize?: number;\n /** Maximum size in px while resizing (default: viewport dimension). */\n maxSize?: number;\n /** Step in px for keyboard resizing (default 24). */\n resizeStep?: number;\n /** Accessible label for the resize handle. */\n resizeHandleAriaLabel?: string;\n /** Called with the new size in px while/after resizing. */\n onResize?: (size: number) => void;\n \"aria-label\"?: string;\n /** Test id of the sheet panel (the dialog); `sheet` unless given. */\n \"data-testid\"?: string | undefined;\n ref?: Ref<HTMLDivElement>;\n}\n\ntype Mode = \"small\" | \"expanded\" | null;\n\nconst isVerticalAxis = (placement: SheetProps[\"placement\"]): boolean => placement === \"bottom\" || placement === \"top\";\n\ninterface SheetBlockProps extends ParentProps<SheetProps> {\n mode: Mode;\n handleSizeButton: () => void;\n handleClose: () => void;\n}\n\nfunction SheetBlock(props: SheetBlockProps): JSX.Element {\n const merged = mergeProps(\n {\n size: \"60%\",\n withSizeToggle: true,\n hideHeaderActions: false,\n reverseHeaderActions: false,\n closeAriaLabel: \"Close sheet\",\n expandAriaLabel: \"Expand sheet\",\n collapseAriaLabel: \"Collapse sheet\",\n restoreAriaLabel: \"Restore sheet size\",\n resizable: false,\n minSize: 80,\n resizeStep: 24,\n resizeHandleAriaLabel: \"Resize sheet\",\n },\n props\n );\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"placement\",\n \"class\",\n \"mode\",\n \"size\",\n \"variant\",\n \"onClose\",\n \"withSizeToggle\",\n \"hideHeaderActions\",\n \"reverseHeaderActions\",\n \"closeAriaLabel\",\n \"expandAriaLabel\",\n \"collapseAriaLabel\",\n \"restoreAriaLabel\",\n \"resizable\",\n \"minSize\",\n \"maxSize\",\n \"resizeStep\",\n \"resizeHandleAriaLabel\",\n \"onResize\",\n \"style\",\n \"handleClose\",\n \"handleSizeButton\",\n \"children\",\n \"ref\",\n \"data-testid\",\n ]);\n\n let rootEl: HTMLDivElement | undefined;\n const [dragSize, setDragSize] = createSignal<number | null>(null);\n const vertical = (): boolean => isVerticalAxis(local.placement);\n\n const inner = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 120, exit: 120 },\n classNames: { enterDone: \"smwb-sheet_entered\" },\n appear: true,\n });\n\n const clamp = (px: number): number => {\n const viewport = vertical() ? window.innerHeight : window.innerWidth;\n const max = local.maxSize ?? viewport;\n return Math.max(local.minSize, Math.min(max, px));\n };\n\n const currentSizePx = (): number => {\n const rect = rootEl?.getBoundingClientRect();\n if (!rect) return local.minSize;\n return vertical() ? rect.height : rect.width;\n };\n\n const applySize = (px: number): void => {\n const next = clamp(px);\n setDragSize(next);\n local.onResize?.(next);\n };\n\n let drag: { start: number; size: number } | null = null;\n\n const onPointerDown = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n event.preventDefault();\n drag = { start: vertical() ? event.clientY : event.clientX, size: currentSizePx() };\n try {\n event.currentTarget.setPointerCapture?.(event.pointerId);\n } catch {\n /* best-effort */\n }\n };\n\n const onPointerMove = (event: PointerEvent): void => {\n if (!drag) return;\n const pos = vertical() ? event.clientY : event.clientX;\n const delta = pos - drag.start;\n const grow = local.placement === \"bottom\" || local.placement === \"right\" ? -delta : delta;\n applySize(drag.size + grow);\n };\n\n const endDrag = (event: PointerEvent & { currentTarget: HTMLDivElement }): void => {\n drag = null;\n if (event.currentTarget.hasPointerCapture?.(event.pointerId)) {\n event.currentTarget.releasePointerCapture?.(event.pointerId);\n }\n };\n\n const onHandleKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (event) => {\n const base = dragSize() ?? currentSizePx();\n const max = local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth);\n const incKey =\n local.placement === \"bottom\" ? \"ArrowUp\" : local.placement === \"top\" ? \"ArrowDown\" : local.placement === \"left\" ? \"ArrowRight\" : \"ArrowLeft\";\n const decKey =\n local.placement === \"bottom\" ? \"ArrowDown\" : local.placement === \"top\" ? \"ArrowUp\" : local.placement === \"left\" ? \"ArrowLeft\" : \"ArrowRight\";\n if (event.key === incKey) {\n event.preventDefault();\n applySize(base + local.resizeStep);\n } else if (event.key === decKey) {\n event.preventDefault();\n applySize(base - local.resizeStep);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n applySize(local.minSize);\n } else if (event.key === \"End\") {\n event.preventDefault();\n applySize(max);\n }\n };\n\n // Keyed on `isOpen` alone: root.focus() fires focus handlers synchronously, and Solid runs those\n // without untrack, so any signal they read would otherwise re-run this effect and steal focus.\n createEffect(\n on(\n () => local.isOpen,\n (open) => {\n if (!open) {\n setDragSize(null);\n return;\n }\n const root = rootEl;\n // The element that had focus when the sheet opened gets it back when it closes (or unmounts\n // while open), unless the app has put focus somewhere else by then.\n const opener = root?.contains(document.activeElement) ? null : document.activeElement;\n root?.focus();\n onCleanup(() => restoreFocus(opener, root));\n },\n ),\n );\n\n const showActions = (): boolean => !local.hideHeaderActions && (!!local.onClose || local.withSizeToggle);\n const actionNodes = (): JSX.Element[] => {\n const nodes: JSX.Element[] = [];\n if (local.withSizeToggle) {\n nodes.push(\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={local.handleSizeButton}\n aria-label={\n local.mode === \"expanded\" ? local.collapseAriaLabel : local.mode === \"small\" ? local.restoreAriaLabel : local.expandAriaLabel\n }\n >\n <Icon name={local.mode === \"expanded\" ? \"close_fullscreen\" : \"open_in_full\"} />\n </Button>\n );\n }\n if (local.onClose) {\n nodes.push(\n <Button variant=\"outlined\" size=\"small\" onClick={local.handleClose} aria-label={local.closeAriaLabel}>\n <Icon name=\"close\" />\n </Button>\n );\n }\n if (local.reverseHeaderActions) nodes.reverse();\n return nodes;\n };\n\n const sizeStyle = (): JSX.CSSProperties => {\n if (local.resizable && dragSize() !== null) {\n const px = `${dragSize()}px`;\n return { ...(vertical() ? { height: px } : { width: px }), transition: \"none\" };\n }\n return {};\n };\n\n return (\n <div\n {...rest}\n ref={mergeRefs(local.ref, (el) => (rootEl = el as HTMLDivElement))}\n data-testid={local[\"data-testid\"] ?? \"sheet\"}\n tabindex={-1}\n role=\"dialog\"\n aria-modal={local.variant === \"modal\" || undefined}\n class={cn(\"smwb-sheet\", local.class, `smwb-sheet_${local.variant}`, `smwb-${local.placement}`, inner.classes(), {\n \"smwb-expanded\": local.mode === \"expanded\",\n \"smwb-small\": local.mode === \"small\",\n \"smwb-sheet_resizable\": local.resizable,\n })}\n style={mergeStyle({ \"--sizeProp\": local.size, ...sizeStyle() }, local.style)}\n >\n <Show when={local.resizable}>\n <div\n class=\"smwb-sheet__drag-handle\"\n data-testid=\"sheet-drag-handle\"\n role=\"separator\"\n tabindex={0}\n aria-orientation={vertical() ? \"horizontal\" : \"vertical\"}\n aria-label={local.resizeHandleAriaLabel}\n aria-valuemin={local.minSize}\n aria-valuemax={Math.round(local.maxSize ?? (vertical() ? window.innerHeight : window.innerWidth))}\n aria-valuenow={Math.round(dragSize() ?? currentSizePx())}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n onKeyDown={onHandleKeyDown}\n >\n <span class=\"smwb-sheet__drag-handle-bar\" />\n </div>\n </Show>\n <Show when={showActions()}>\n <div class=\"smwb-sheet__header\">{actionNodes()}</div>\n </Show>\n <Show when={local.isOpen && local.mode !== \"small\"}>\n <div class=\"smwb-sheet__inner\">{local.children}</div>\n </Show>\n </div>\n );\n}\n\nexport function Sheet(props: ParentProps<SheetProps>): JSX.Element {\n const merged = mergeProps({ variant: \"default\" as const, placement: \"bottom\" as const, closeOnEsc: true }, props);\n const [local, rest] = splitProps(merged, [\n \"isOpen\",\n \"onClose\",\n \"variant\",\n \"children\",\n \"placement\",\n \"disableOutsideClick\",\n \"closeOnEsc\",\n \"ref\",\n ]);\n\n const [mode, setMode] = createSignal<Mode>(null);\n let wrapperEl: HTMLDivElement | undefined;\n\n const outer = createCssTransition({\n in: () => local.isOpen,\n timeout: { enter: 70, exit: 70 },\n classNames: { enterDone: \"smwb-entered\" },\n appear: true,\n });\n\n createEffect(() => {\n if (!local.isOpen || !local.closeOnEsc || !local.onClose) return;\n const onKeyDown = (event: KeyboardEvent): void => {\n // Only the topmost overlay layer reacts to Escape, and not to one handled inside\n // it, e.g. by a menu closing on it.\n if (event.key === \"Escape\" && !event.defaultPrevented && isTopOverlayLayer(wrapperEl)) local.onClose?.();\n };\n document.addEventListener(\"keydown\", onKeyDown);\n onCleanup(() => document.removeEventListener(\"keydown\", onKeyDown));\n });\n\n const handleSizeButton = (): void => {\n setMode((prev) => (prev === \"expanded\" ? \"small\" : prev === null ? \"expanded\" : null));\n };\n const handleClose = (): void => {\n local.onClose?.();\n setMode(null);\n };\n\n const block = (): JSX.Element => (\n <SheetBlock\n {...rest}\n ref={local.ref}\n isOpen={local.isOpen}\n onClose={local.onClose}\n handleSizeButton={handleSizeButton}\n handleClose={handleClose}\n mode={mode()}\n placement={local.placement}\n variant={local.variant}\n >\n {local.children}\n </SheetBlock>\n );\n\n return (\n <Show when={outer.mounted()}>\n <Portal mount={(isServer ? undefined : document.body) as Node}>\n <Show\n when={local.variant === \"default\"}\n fallback={\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(\"smwb-sheet__overlay\", \"smwb-dark\", `smwb-${local.placement}`, `smwb-sheet_${local.variant}`, outer.classes())}\n >\n <ClickAwayListener onClickAway={() => !local.disableOutsideClick && handleClose()}>\n {block()}\n </ClickAwayListener>\n </div>\n }\n >\n <div\n ref={(el) => (wrapperEl = el)}\n data-smwb-overlay-layer\n class={cn(local.disableOutsideClick ? \"smwb-sheet__overlay\" : \"smwb-sheet__default\", outer.classes())}\n >\n {block()}\n </div>\n </Show>\n </Portal>\n </Show>\n );\n}\n\nexport default Sheet;\n"],"names":["isVerticalAxis","placement","SheetBlock","props","merged","mergeProps","size","withSizeToggle","hideHeaderActions","reverseHeaderActions","closeAriaLabel","expandAriaLabel","collapseAriaLabel","restoreAriaLabel","resizable","minSize","resizeStep","resizeHandleAriaLabel","local","rest","splitProps","rootEl","dragSize","setDragSize","createSignal","vertical","inner","createCssTransition","in","isOpen","timeout","enter","exit","classNames","enterDone","appear","clamp","px","viewport","window","innerHeight","innerWidth","max","maxSize","Math","min","currentSizePx","rect","getBoundingClientRect","height","width","applySize","next","onResize","drag","onPointerDown","event","preventDefault","start","clientY","clientX","currentTarget","setPointerCapture","pointerId","onPointerMove","delta","grow","endDrag","hasPointerCapture","releasePointerCapture","onHandleKeyDown","base","incKey","decKey","key","createEffect","on","open","root","opener","contains","document","activeElement","focus","onCleanup","restoreFocus","showActions","onClose","actionNodes","nodes","push","_$createComponent","Button","variant","onClick","handleSizeButton","_$memo","mode","children","Icon","name","handleClose","reverse","sizeStyle","transition","_el$","_tmpl$4","_ref$","mergeRefs","ref","el","_$use","_$spread","_$mergeProps","undefined","cn","class","classes","style","mergeStyle","_$insert","Show","when","_el$2","_tmpl$","$$keydown","addEventListener","$$pointerup","$$pointermove","$$pointerdown","_$effect","_p$","_v$","_v$2","_v$3","_v$4","round","_v$5","e","_$setAttribute","t","a","o","i","_el$3","_tmpl$2","_el$4","_tmpl$3","Sheet","closeOnEsc","setMode","wrapperEl","outer","onKeyDown","defaultPrevented","isTopOverlayLayer","removeEventListener","prev","block","r$","_ref$2","mounted","Portal","mount","isServer","body","fallback","_el$6","_tmpl$5","ClickAwayListener","onClickAway","disableOutsideClick","_$className","_el$5","_$delegateEvents"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { TabGroups, default } from "./tabGroups";
2
+ export type { TabGroupsProps, TabGroupsTab } from "./tabGroups";
3
+ export * as tabGroupsLayout from "./tabGroupsLayout";
4
+ export type { TabGroupsChange, TabGroupsDropZone, TabGroupsEdge, TabGroupsGroup, TabGroupsLabels, TabGroupsLayout, TabGroupsMoveTarget, TabGroupsNode, TabGroupsSplit, } from "./tabGroupsLayout";
@@ -0,0 +1,102 @@
1
+ import { type JSX } from "solid-js";
2
+ import type { TabCloseReason, TabProps } from "../../navigation/tabs/tab/tab";
3
+ import { type Ref } from "../../../primitives/mergeRefs";
4
+ import { type TabGroupsChange, type TabGroupsLabels, type TabGroupsLayout } from "./tabGroupsLayout";
5
+ /**
6
+ * What a tab of `TabGroups` shows, answered by the app through `getTab`. Only the tab's id lives in
7
+ * the layout, so a stored arrangement survives renames and carries no content.
8
+ */
9
+ export interface TabGroupsTab {
10
+ /** The tab's label. A tab id the app does not know is drawn as the id itself. */
11
+ label: JSX.Element;
12
+ /**
13
+ * Plain text for the announcements and for a screen reader that cannot read the label (markup,
14
+ * an icon). `label` when it is a string, else the tab id.
15
+ */
16
+ title?: string | undefined;
17
+ /** An icon drawn before the label. */
18
+ icon?: JSX.Element;
19
+ /**
20
+ * Draw a close button and let Delete or Backspace close the tab: true by default. `false` keeps
21
+ * the tab's item wrapper, so every tab has the same drag surface.
22
+ */
23
+ closable?: boolean | undefined;
24
+ /** Accessible label of the tab's close button ("Close Terminal 1"). */
25
+ closeLabel?: string | undefined;
26
+ /** Content after the tab, as `Tab`'s `actions`: a trigger with a `Menu`, or any control. */
27
+ actions?: TabProps["actions"];
28
+ /** Greys the tab out: it cannot be selected, moved or dragged. */
29
+ disabled?: boolean | undefined;
30
+ }
31
+ export interface TabGroupsProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "children" | "onChange" | "id"> {
32
+ /**
33
+ * The arrangement to draw: the split tree, every group's tabs and the selected one. Controlled
34
+ * while it is not `undefined` — the component then only reports changes through
35
+ * `onLayoutChange` and draws what the owner gives back.
36
+ */
37
+ layout?: TabGroupsLayout | undefined;
38
+ /** The arrangement to start from while uncontrolled: one empty group by default. */
39
+ defaultLayout?: TabGroupsLayout | undefined;
40
+ /**
41
+ * Called with the layout after a change and with what happened, in both the controlled and the
42
+ * uncontrolled mode. A controlled owner that does not apply the change simply sees nothing move.
43
+ */
44
+ onLayoutChange?: ((layout: TabGroupsLayout, change: TabGroupsChange) => void) | undefined;
45
+ /** What a tab shows, by its id; `undefined` draws the id as the label. */
46
+ getTab: (tabId: string) => TabGroupsTab | undefined;
47
+ /**
48
+ * The content of a tab's panel, by its id. It is called the first time the tab is selected and
49
+ * the panel stays mounted from then on, hidden while another tab is shown and kept through a
50
+ * move to another group: a form keeps what was typed, a terminal its scrollback. Its node stays
51
+ * where it is in the DOM, so an iframe in it does not reload either.
52
+ */
53
+ renderPanel: (tabId: string) => JSX.Element;
54
+ /**
55
+ * Asked before a tab closes, with what asked for it (its close button, Delete or Backspace, a
56
+ * middle click, its `actions`). Return `false` to keep the tab.
57
+ */
58
+ onTabClose?: ((tabId: string, event: Event, reason: TabCloseReason) => boolean | void) | undefined;
59
+ /** Drawn, centred, when the only group has no tabs left. */
60
+ empty?: JSX.Element;
61
+ /** The smallest a group can be resized to, in px of its split; 120 by default. */
62
+ minGroupSize?: number | undefined;
63
+ /** The arrow-key step of a separator, in percent of its split; 5 by default. */
64
+ keyboardStep?: number | undefined;
65
+ /** Draw each group's actions button and menu; true by default. */
66
+ groupActions?: boolean | undefined;
67
+ /** Compact tab rows, as `Tabs`' `dense`; false by default. */
68
+ dense?: boolean | undefined;
69
+ /** The texts of the component: its menus, labels and announcements. English by default. */
70
+ labels?: Partial<TabGroupsLabels> | undefined;
71
+ /** Base of the generated ids and the id of the root element. Generated by default. */
72
+ id?: string | undefined;
73
+ /** Test id of the root element; `tab-groups` unless given. */
74
+ "data-testid"?: string | undefined;
75
+ /** Class of the root element, added to the component's own. */
76
+ class?: string | undefined;
77
+ /** Inline style of the root element; the component's `grid-template-*` win over it. */
78
+ style?: JSX.HTMLAttributes<HTMLDivElement>["style"];
79
+ /** The root element. */
80
+ ref?: Ref<HTMLDivElement>;
81
+ }
82
+ /**
83
+ * Tab groups in a split area: one component draws every group, each a tab row with its panels.
84
+ *
85
+ * The area splits right or down into groups, a tab moves to another group by drag and drop or by
86
+ * keyboard, dropping it on a group's edge makes a new group there, and closing a group's last tab
87
+ * closes the group and collapses its split. The whole arrangement is a serialisable, versioned
88
+ * `layout` (`layout` / `defaultLayout` / `onLayoutChange`) that an app stores as JSON;
89
+ * `tabGroupsLayout.parseTabGroupsLayout` reads one back, and `tabGroupsLayout.addTab` /
90
+ * `syncTabs` keep it in step with the tabs the app has open.
91
+ *
92
+ * Everything is drawn on one CSS grid whose children are a flat, keyed list, so restructuring the
93
+ * tree re-places nodes instead of remounting them, and a panel's node never moves: it keeps its
94
+ * state, its scroll and the focus inside it when its tab moves to another group or the area splits.
95
+ *
96
+ * Without a mouse: Alt+Shift+Arrow moves the focused tab to the group that way (splitting there
97
+ * when the area ends), Mod+Shift+ArrowLeft/Right moves it along its row, each group's actions
98
+ * button opens a menu of the same actions, and each separator resizes with the arrow keys, Home
99
+ * and End. Every move is announced in a polite status region.
100
+ */
101
+ export declare function TabGroups(props: TabGroupsProps): JSX.Element;
102
+ export default TabGroups;