@k2b/ui 0.2.0 → 0.3.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 (366) hide show
  1. package/dist/browser/actions/Button.js +11 -2
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/Disclosure.js +11 -8
  4. package/dist/browser/actions/Disclosure.js.map +1 -1
  5. package/dist/browser/actions/Dropdown.js +4 -1
  6. package/dist/browser/actions/Dropdown.js.map +1 -1
  7. package/dist/browser/actions/FilterChip.js +16 -2
  8. package/dist/browser/actions/FilterChip.js.map +1 -1
  9. package/dist/browser/actions/SplitButton.js +69 -22
  10. package/dist/browser/actions/SplitButton.js.map +1 -1
  11. package/dist/browser/actions/SpotlightSearch.js +3 -7
  12. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  13. package/dist/browser/actions/Tabs.js +132 -47
  14. package/dist/browser/actions/Tabs.js.map +1 -1
  15. package/dist/browser/actions/index.js +1 -1
  16. package/dist/browser/actions/index.js.map +1 -1
  17. package/dist/browser/chat/ChatComposer.js +751 -423
  18. package/dist/browser/chat/ChatComposer.js.map +1 -1
  19. package/dist/browser/chat/ChatContextPopup.js +123 -0
  20. package/dist/browser/chat/ChatContextPopup.js.map +1 -0
  21. package/dist/browser/chat/ChatPrimitives.js +141 -78
  22. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  23. package/dist/browser/chat/ChatTasks.js +112 -0
  24. package/dist/browser/chat/ChatTasks.js.map +1 -0
  25. package/dist/browser/chat/ChatTimeline.js +31 -14
  26. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  27. package/dist/browser/chat/chat-behavior.js +0 -5
  28. package/dist/browser/chat/chat-behavior.js.map +1 -1
  29. package/dist/browser/chat/composer-document.js +55 -0
  30. package/dist/browser/chat/composer-document.js.map +1 -0
  31. package/dist/browser/chat/index.js +6 -1
  32. package/dist/browser/chat/index.js.map +1 -1
  33. package/dist/browser/chat/types.js.map +1 -1
  34. package/dist/browser/content/Chart.js +148 -239
  35. package/dist/browser/content/Chart.js.map +1 -1
  36. package/dist/browser/content/ChartExplorer.js +324 -0
  37. package/dist/browser/content/ChartExplorer.js.map +1 -0
  38. package/dist/browser/content/ChartExplorerControls.js +153 -0
  39. package/dist/browser/content/ChartExplorerControls.js.map +1 -0
  40. package/dist/browser/content/ChartFilterControls.js +200 -0
  41. package/dist/browser/content/ChartFilterControls.js.map +1 -0
  42. package/dist/browser/content/ChartSnapshotView.js +113 -0
  43. package/dist/browser/content/ChartSnapshotView.js.map +1 -0
  44. package/dist/browser/content/DataTable.js +48 -32
  45. package/dist/browser/content/DataTable.js.map +1 -1
  46. package/dist/browser/content/FileBrowser.js +3 -0
  47. package/dist/browser/content/FileBrowser.js.map +1 -1
  48. package/dist/browser/content/FileGrid.js +93 -0
  49. package/dist/browser/content/FileGrid.js.map +1 -0
  50. package/dist/browser/content/FileTree.js +2 -2
  51. package/dist/browser/content/FileTree.js.map +1 -1
  52. package/dist/browser/content/FileView.js +507 -162
  53. package/dist/browser/content/FileView.js.map +1 -1
  54. package/dist/browser/content/MarkdownView.js +6 -0
  55. package/dist/browser/content/MarkdownView.js.map +1 -1
  56. package/dist/browser/content/PdfPreview.js +107 -90
  57. package/dist/browser/content/PdfPreview.js.map +1 -1
  58. package/dist/browser/content/chart-cursor.js +33 -0
  59. package/dist/browser/content/chart-cursor.js.map +1 -0
  60. package/dist/browser/content/chart-explorer.js +147 -0
  61. package/dist/browser/content/chart-explorer.js.map +1 -0
  62. package/dist/browser/content/chart-inspection.js +447 -0
  63. package/dist/browser/content/chart-inspection.js.map +1 -0
  64. package/dist/browser/content/chart-line-gaps.js +53 -0
  65. package/dist/browser/content/chart-line-gaps.js.map +1 -0
  66. package/dist/browser/content/chart-map-viewport.js +5 -1
  67. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  68. package/dist/browser/content/chart-snapshot.js +63 -0
  69. package/dist/browser/content/chart-snapshot.js.map +1 -0
  70. package/dist/browser/content/chart-state-timeline.js +32 -4
  71. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  72. package/dist/browser/content/chart-svg.js +54 -0
  73. package/dist/browser/content/chart-svg.js.map +1 -0
  74. package/dist/browser/content/collection-selection.js +109 -0
  75. package/dist/browser/content/collection-selection.js.map +1 -0
  76. package/dist/browser/content/delimited-preferences.js +21 -0
  77. package/dist/browser/content/delimited-preferences.js.map +1 -0
  78. package/dist/browser/content/file-tree.js.map +1 -1
  79. package/dist/browser/content/file-view-preview.js +11 -7
  80. package/dist/browser/content/file-view-preview.js.map +1 -1
  81. package/dist/browser/content/index.js +9 -0
  82. package/dist/browser/content/index.js.map +1 -1
  83. package/dist/browser/feedback/InlineGuidance.js +17 -3
  84. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  85. package/dist/browser/feedback/dialog-core.js +81 -7
  86. package/dist/browser/feedback/dialog-core.js.map +1 -1
  87. package/dist/browser/feedback/prompts.js +6 -0
  88. package/dist/browser/feedback/prompts.js.map +1 -1
  89. package/dist/browser/feedback/toast.js +29 -6
  90. package/dist/browser/feedback/toast.js.map +1 -1
  91. package/dist/browser/inputs/SelectChip.js +3 -2
  92. package/dist/browser/inputs/SelectChip.js.map +1 -1
  93. package/dist/browser/inputs/TextInput.js +7 -1
  94. package/dist/browser/inputs/TextInput.js.map +1 -1
  95. package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
  96. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  97. package/dist/browser/intl/Format.js +89 -16
  98. package/dist/browser/intl/Format.js.map +1 -1
  99. package/dist/browser/intl/index.js.map +1 -1
  100. package/dist/browser/intl/messages.js +130 -2
  101. package/dist/browser/intl/messages.js.map +1 -1
  102. package/dist/browser/layout/AppWorkspace.js +712 -624
  103. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  104. package/dist/browser/layout/BottomSheet.js +95 -0
  105. package/dist/browser/layout/BottomSheet.js.map +1 -0
  106. package/dist/browser/layout/DetailPanel.js +56 -44
  107. package/dist/browser/layout/DetailPanel.js.map +1 -1
  108. package/dist/browser/layout/Navigation.js +278 -0
  109. package/dist/browser/layout/Navigation.js.map +1 -0
  110. package/dist/browser/layout/PanelDialog.js +219 -71
  111. package/dist/browser/layout/PanelDialog.js.map +1 -1
  112. package/dist/browser/layout/ScrollArea.js +21 -1
  113. package/dist/browser/layout/ScrollArea.js.map +1 -1
  114. package/dist/browser/layout/Settings.js.map +1 -1
  115. package/dist/browser/layout/SidebarItemPreview.js +183 -0
  116. package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
  117. package/dist/browser/layout/app-workspace-controller.js +3 -0
  118. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  119. package/dist/browser/layout/index.js +3 -0
  120. package/dist/browser/layout/index.js.map +1 -1
  121. package/dist/browser/layout/navigation-model.js +23 -0
  122. package/dist/browser/layout/navigation-model.js.map +1 -0
  123. package/dist/browser/layout/scroll-fade.js +100 -0
  124. package/dist/browser/layout/scroll-fade.js.map +1 -0
  125. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  126. package/dist/browser/surfaces/StatusBadge.js +2 -1
  127. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  128. package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
  129. package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
  130. package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
  131. package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
  132. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
  133. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
  134. package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
  135. package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
  136. package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
  137. package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
  138. package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
  139. package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
  140. package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
  141. package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
  142. package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
  143. package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
  144. package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
  145. package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
  146. package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
  147. package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
  148. package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
  149. package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
  150. package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
  151. package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
  152. package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
  153. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
  154. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
  155. package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
  156. package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
  157. package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
  158. package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
  159. package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
  160. package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
  161. package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
  162. package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
  163. package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
  164. package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
  165. package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
  166. package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
  167. package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
  168. package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
  169. package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
  170. package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
  171. package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
  172. package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
  173. package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
  174. package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
  175. package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
  176. package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
  177. package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
  178. package/dist/plex.css +1 -1
  179. package/dist/ssr/actions/Button.js +11 -2
  180. package/dist/ssr/actions/Button.js.map +1 -1
  181. package/dist/ssr/actions/Disclosure.js +2 -2
  182. package/dist/ssr/actions/Disclosure.js.map +1 -1
  183. package/dist/ssr/actions/Dropdown.js +4 -1
  184. package/dist/ssr/actions/Dropdown.js.map +1 -1
  185. package/dist/ssr/actions/FilterChip.js +16 -2
  186. package/dist/ssr/actions/FilterChip.js.map +1 -1
  187. package/dist/ssr/actions/SplitButton.js +69 -22
  188. package/dist/ssr/actions/SplitButton.js.map +1 -1
  189. package/dist/ssr/actions/SpotlightSearch.js +3 -7
  190. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  191. package/dist/ssr/actions/Tabs.js +58 -11
  192. package/dist/ssr/actions/Tabs.js.map +1 -1
  193. package/dist/ssr/actions/index.js +1 -1
  194. package/dist/ssr/actions/index.js.map +1 -1
  195. package/dist/ssr/chat/ChatComposer.js +366 -134
  196. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  197. package/dist/ssr/chat/ChatContextPopup.js +86 -0
  198. package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
  199. package/dist/ssr/chat/ChatPrimitives.js +49 -11
  200. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  201. package/dist/ssr/chat/ChatTasks.js +48 -0
  202. package/dist/ssr/chat/ChatTasks.js.map +1 -0
  203. package/dist/ssr/chat/ChatTimeline.js +14 -4
  204. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  205. package/dist/ssr/chat/chat-behavior.js +0 -5
  206. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  207. package/dist/ssr/chat/composer-document.js +55 -0
  208. package/dist/ssr/chat/composer-document.js.map +1 -0
  209. package/dist/ssr/chat/index.js +6 -1
  210. package/dist/ssr/chat/index.js.map +1 -1
  211. package/dist/ssr/chat/types.js.map +1 -1
  212. package/dist/ssr/content/Chart.js +121 -219
  213. package/dist/ssr/content/Chart.js.map +1 -1
  214. package/dist/ssr/content/ChartExplorer.js +257 -0
  215. package/dist/ssr/content/ChartExplorer.js.map +1 -0
  216. package/dist/ssr/content/ChartExplorerControls.js +105 -0
  217. package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
  218. package/dist/ssr/content/ChartFilterControls.js +139 -0
  219. package/dist/ssr/content/ChartFilterControls.js.map +1 -0
  220. package/dist/ssr/content/ChartSnapshotView.js +57 -0
  221. package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
  222. package/dist/ssr/content/DataTable.js +13 -9
  223. package/dist/ssr/content/DataTable.js.map +1 -1
  224. package/dist/ssr/content/FileBrowser.js +3 -0
  225. package/dist/ssr/content/FileBrowser.js.map +1 -1
  226. package/dist/ssr/content/FileGrid.js +38 -0
  227. package/dist/ssr/content/FileGrid.js.map +1 -0
  228. package/dist/ssr/content/FileTree.js +2 -2
  229. package/dist/ssr/content/FileTree.js.map +1 -1
  230. package/dist/ssr/content/FileView.js +352 -75
  231. package/dist/ssr/content/FileView.js.map +1 -1
  232. package/dist/ssr/content/MarkdownView.js +6 -0
  233. package/dist/ssr/content/MarkdownView.js.map +1 -1
  234. package/dist/ssr/content/PdfPreview.js +37 -24
  235. package/dist/ssr/content/PdfPreview.js.map +1 -1
  236. package/dist/ssr/content/chart-cursor.js +33 -0
  237. package/dist/ssr/content/chart-cursor.js.map +1 -0
  238. package/dist/ssr/content/chart-explorer.js +147 -0
  239. package/dist/ssr/content/chart-explorer.js.map +1 -0
  240. package/dist/ssr/content/chart-inspection.js +447 -0
  241. package/dist/ssr/content/chart-inspection.js.map +1 -0
  242. package/dist/ssr/content/chart-line-gaps.js +53 -0
  243. package/dist/ssr/content/chart-line-gaps.js.map +1 -0
  244. package/dist/ssr/content/chart-map-viewport.js +5 -1
  245. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  246. package/dist/ssr/content/chart-snapshot.js +63 -0
  247. package/dist/ssr/content/chart-snapshot.js.map +1 -0
  248. package/dist/ssr/content/chart-state-timeline.js +32 -4
  249. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  250. package/dist/ssr/content/chart-svg.js +54 -0
  251. package/dist/ssr/content/chart-svg.js.map +1 -0
  252. package/dist/ssr/content/collection-selection.js +109 -0
  253. package/dist/ssr/content/collection-selection.js.map +1 -0
  254. package/dist/ssr/content/delimited-preferences.js +21 -0
  255. package/dist/ssr/content/delimited-preferences.js.map +1 -0
  256. package/dist/ssr/content/file-tree.js.map +1 -1
  257. package/dist/ssr/content/file-view-preview.js +11 -7
  258. package/dist/ssr/content/file-view-preview.js.map +1 -1
  259. package/dist/ssr/content/index.js +9 -0
  260. package/dist/ssr/content/index.js.map +1 -1
  261. package/dist/ssr/feedback/InlineGuidance.js +17 -3
  262. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  263. package/dist/ssr/feedback/dialog-core.js +81 -7
  264. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  265. package/dist/ssr/feedback/prompts.js +6 -0
  266. package/dist/ssr/feedback/prompts.js.map +1 -1
  267. package/dist/ssr/feedback/toast.js +29 -6
  268. package/dist/ssr/feedback/toast.js.map +1 -1
  269. package/dist/ssr/inputs/SelectChip.js +3 -3
  270. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  271. package/dist/ssr/inputs/TextInput.js.map +1 -1
  272. package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
  273. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  274. package/dist/ssr/intl/Format.js +61 -0
  275. package/dist/ssr/intl/Format.js.map +1 -1
  276. package/dist/ssr/intl/index.js.map +1 -1
  277. package/dist/ssr/intl/messages.js +130 -2
  278. package/dist/ssr/intl/messages.js.map +1 -1
  279. package/dist/ssr/layout/AppWorkspace.js +368 -275
  280. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  281. package/dist/ssr/layout/BottomSheet.js +43 -0
  282. package/dist/ssr/layout/BottomSheet.js.map +1 -0
  283. package/dist/ssr/layout/DetailPanel.js +11 -4
  284. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  285. package/dist/ssr/layout/Navigation.js +181 -0
  286. package/dist/ssr/layout/Navigation.js.map +1 -0
  287. package/dist/ssr/layout/PanelDialog.js +111 -26
  288. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  289. package/dist/ssr/layout/ScrollArea.js +16 -1
  290. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  291. package/dist/ssr/layout/Settings.js.map +1 -1
  292. package/dist/ssr/layout/SidebarItemPreview.js +133 -0
  293. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
  294. package/dist/ssr/layout/app-workspace-controller.js +3 -0
  295. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  296. package/dist/ssr/layout/index.js +3 -0
  297. package/dist/ssr/layout/index.js.map +1 -1
  298. package/dist/ssr/layout/navigation-model.js +23 -0
  299. package/dist/ssr/layout/navigation-model.js.map +1 -0
  300. package/dist/ssr/layout/scroll-fade.js +100 -0
  301. package/dist/ssr/layout/scroll-fade.js.map +1 -0
  302. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  303. package/dist/ssr/surfaces/StatusBadge.js +2 -1
  304. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  305. package/dist/styles.css +1 -1
  306. package/dist/tabler.css +1 -1
  307. package/dist/types/actions/Button.d.ts +4 -0
  308. package/dist/types/actions/Disclosure.d.ts +1 -0
  309. package/dist/types/actions/FilterChip.d.ts +4 -0
  310. package/dist/types/actions/SplitButton.d.ts +6 -0
  311. package/dist/types/actions/SpotlightSearch.d.ts +0 -4
  312. package/dist/types/actions/Tabs.d.ts +4 -0
  313. package/dist/types/actions/index.d.ts +1 -1
  314. package/dist/types/chat/ChatComposer.d.ts +20 -2
  315. package/dist/types/chat/ChatContextPopup.d.ts +6 -0
  316. package/dist/types/chat/ChatPrimitives.d.ts +4 -0
  317. package/dist/types/chat/ChatTasks.d.ts +15 -0
  318. package/dist/types/chat/ChatTimeline.d.ts +2 -0
  319. package/dist/types/chat/chat-behavior.d.ts +0 -3
  320. package/dist/types/chat/composer-document.d.ts +14 -0
  321. package/dist/types/chat/index.d.ts +8 -1
  322. package/dist/types/chat/types.d.ts +7 -0
  323. package/dist/types/content/Chart.d.ts +42 -23
  324. package/dist/types/content/ChartExplorer.d.ts +34 -0
  325. package/dist/types/content/ChartExplorerControls.d.ts +10 -0
  326. package/dist/types/content/ChartFilterControls.d.ts +21 -0
  327. package/dist/types/content/ChartSnapshotView.d.ts +11 -0
  328. package/dist/types/content/DataTable.d.ts +4 -0
  329. package/dist/types/content/FileBrowser.d.ts +1 -0
  330. package/dist/types/content/FileGrid.d.ts +21 -0
  331. package/dist/types/content/FileView.d.ts +20 -0
  332. package/dist/types/content/PdfPreview.d.ts +8 -1
  333. package/dist/types/content/chart-cursor.d.ts +15 -0
  334. package/dist/types/content/chart-explorer.d.ts +48 -0
  335. package/dist/types/content/chart-inspection.d.ts +40 -0
  336. package/dist/types/content/chart-line-gaps.d.ts +5 -0
  337. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  338. package/dist/types/content/chart-snapshot.d.ts +26 -0
  339. package/dist/types/content/chart-svg.d.ts +21 -0
  340. package/dist/types/content/collection-selection.d.ts +24 -0
  341. package/dist/types/content/delimited-preferences.d.ts +11 -0
  342. package/dist/types/content/file-tree.d.ts +2 -0
  343. package/dist/types/content/file-view-preview.d.ts +4 -1
  344. package/dist/types/content/index.d.ts +15 -1
  345. package/dist/types/feedback/InlineGuidance.d.ts +1 -0
  346. package/dist/types/feedback/dialog-core.d.ts +11 -0
  347. package/dist/types/feedback/prompts.d.ts +2 -0
  348. package/dist/types/feedback/toast.d.ts +7 -1
  349. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
  350. package/dist/types/intl/Format.d.ts +9 -0
  351. package/dist/types/intl/index.d.ts +1 -1
  352. package/dist/types/intl/messages.d.ts +31 -1
  353. package/dist/types/layout/AppWorkspace.d.ts +35 -18
  354. package/dist/types/layout/BottomSheet.d.ts +23 -0
  355. package/dist/types/layout/DetailPanel.d.ts +1 -0
  356. package/dist/types/layout/Navigation.d.ts +8 -0
  357. package/dist/types/layout/PanelDialog.d.ts +14 -1
  358. package/dist/types/layout/ScrollArea.d.ts +4 -0
  359. package/dist/types/layout/Settings.d.ts +1 -1
  360. package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
  361. package/dist/types/layout/index.d.ts +4 -1
  362. package/dist/types/layout/navigation-model.d.ts +48 -0
  363. package/dist/types/layout/scroll-fade.d.ts +3 -0
  364. package/dist/types/surfaces/DescriptionList.d.ts +1 -1
  365. package/dist/types/surfaces/StatusBadge.d.ts +1 -1
  366. package/package.json +5 -5
@@ -10,7 +10,7 @@ import { Show, splitProps } from "solid-js";
10
10
  import { Tooltip } from "../feedback/Tooltip";
11
11
  const buttonClass = className => ["k2b-button", className].filter(Boolean).join(" ");
12
12
  export function Button(props) {
13
- const [local, rest] = splitProps(props, ["children", "class", "disabled", "loading", "loadingLabel", "ref", "size", "tooltip", "tooltipDelay", "tooltipPlacement", "type", "variant"]);
13
+ const [local, rest] = splitProps(props, ["children", "class", "disabled", "loading", "loadingLabel", "ref", "size", "tooltip", "tooltipDelay", "tooltipPlacement", "type", "variant", "wrap"]);
14
14
  let target;
15
15
  const setRef = element => {
16
16
  target = element;
@@ -29,6 +29,9 @@ export function Button(props) {
29
29
  get ["data-variant"]() {
30
30
  return local.variant ?? "primary";
31
31
  },
32
+ get ["data-wrap"]() {
33
+ return local.wrap || undefined;
34
+ },
32
35
  get disabled() {
33
36
  return local.disabled || local.loading;
34
37
  },
@@ -77,7 +80,7 @@ export function Button(props) {
77
80
  })];
78
81
  }
79
82
  export function ButtonLink(props) {
80
- const [local, rest] = splitProps(props, ["children", "class", "href", "navigation", "onClick", "onNavigate", "replace", "ref", "scroll", "size", "tooltip", "tooltipDelay", "tooltipPlacement", "variant"]);
83
+ const [local, rest] = splitProps(props, ["children", "class", "href", "navigation", "onClick", "onNavigate", "replace", "ref", "scroll", "size", "tooltip", "tooltipDelay", "tooltipPlacement", "variant", "wrap"]);
81
84
  let target;
82
85
  const setRef = element => {
83
86
  target = element;
@@ -116,6 +119,9 @@ export function ButtonLink(props) {
116
119
  get ["data-variant"]() {
117
120
  return local.variant ?? "primary";
118
121
  },
122
+ get ["data-wrap"]() {
123
+ return local.wrap || undefined;
124
+ },
119
125
  get onClick() {
120
126
  return local.onClick;
121
127
  },
@@ -141,6 +147,9 @@ export function ButtonLink(props) {
141
147
  },
142
148
  get ["data-variant"]() {
143
149
  return local.variant ?? "primary";
150
+ },
151
+ get ["data-wrap"]() {
152
+ return local.wrap || undefined;
144
153
  }
145
154
  }), _$escape(content), false), tooltip()];
146
155
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Link","Show","splitProps","Tooltip","buttonClass","className","filter","Boolean","join","Button","props","local","rest","target","setRef","element","ref","control","_$ssrElement","_$mergeProps","type","class","data-size","size","data-variant","variant","disabled","loading","aria-busy","undefined","_$escape","_$createComponent","when","children","_$ssr","_tmpl$","_tmpl$2","loadingLabel","fallback","tooltip","content","delay","tooltipDelay","placement","tooltipPlacement","ButtonLink","navigation","href","onNavigate","onClick","replace","scroll","IconButton","aria-label","label","title","IconButtonLink"],"sources":["actions/Button.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent, type NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport { type JSX, Show, splitProps } from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"text\" | \"subtle\" | \"input\" | \"warning\" | \"danger\" | \"success\" | \"ai\";\nexport type ButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport type ButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n loading?: boolean;\n loadingLabel?: string;\n size?: ButtonSize;\n variant?: ButtonVariant;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n};\n\nexport type ButtonLinkProps = Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"onClick\"> & {\n navigation?: \"document\" | \"enhanced\";\n onClick?: JSX.EventHandlerUnion<HTMLAnchorElement, MouseEvent>;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n replace?: boolean;\n scroll?: NavigationScrollMode;\n size?: ButtonSize;\n variant?: ButtonVariant;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n};\n\nconst buttonClass = (className?: string): string => [\"k2b-button\", className].filter(Boolean).join(\" \");\n\nexport function Button(props: ButtonProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"children\",\n \"class\",\n \"disabled\",\n \"loading\",\n \"loadingLabel\",\n \"ref\",\n \"size\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n ]);\n let target: HTMLButtonElement | undefined;\n const setRef = (element: HTMLButtonElement) => {\n target = element;\n if (typeof local.ref === \"function\") local.ref(element);\n };\n\n const control = (\n <button\n {...rest}\n ref={setRef}\n type={local.type ?? \"button\"}\n class={buttonClass(local.class)}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n disabled={local.disabled || local.loading}\n aria-busy={local.loading ? \"true\" : undefined}\n >\n <Show when={local.loading}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n <span class=\"k2b-button__label\">\n <Show when={local.loading && local.loadingLabel} fallback={local.children}>\n {local.loadingLabel}\n </Show>\n </span>\n </button>\n );\n\n return (\n <>\n {control}\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={local.disabled || local.loading}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\nexport function ButtonLink(props: ButtonLinkProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"children\",\n \"class\",\n \"href\",\n \"navigation\",\n \"onClick\",\n \"onNavigate\",\n \"replace\",\n \"ref\",\n \"scroll\",\n \"size\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"variant\",\n ]);\n let target: HTMLAnchorElement | undefined;\n const setRef = (element: HTMLAnchorElement) => {\n target = element;\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const className = buttonClass(local.class);\n const content = <span class=\"k2b-button__label\">{local.children}</span>;\n\n const tooltip = () => (\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip content={local.tooltip as JSX.Element} target={() => target} delay={local.tooltipDelay} placement={local.tooltipPlacement} />\n </Show>\n );\n\n if (local.navigation === \"enhanced\" && local.href && local.onNavigate) {\n return (\n <>\n <Link\n {...rest}\n ref={setRef}\n href={local.href}\n class={className}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n onClick={local.onClick}\n onNavigate={local.onNavigate}\n replace={local.replace}\n scroll={local.scroll}\n >\n {content}\n </Link>\n {tooltip()}\n </>\n );\n }\n\n return (\n <>\n <a\n {...rest}\n ref={setRef}\n href={local.href}\n class={className}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n onClick={local.onClick}\n >\n {content}\n </a>\n {tooltip()}\n </>\n );\n}\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n children: JSX.Element;\n label: string;\n};\n\nexport type IconButtonLinkProps = Omit<ButtonLinkProps, \"children\"> & {\n children: JSX.Element;\n label: string;\n};\n\nexport function IconButton(props: IconButtonProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"label\", \"loading\", \"loadingLabel\", \"tooltip\", \"variant\"]);\n\n return (\n <Button\n {...rest}\n loading={local.loading}\n variant={local.variant ?? \"ghost\"}\n class={`k2b-icon-button ${local.class ?? \"\"}`}\n aria-label={local.loading ? (local.loadingLabel ?? local.label) : local.label}\n title={rest.title ?? (local.tooltip === undefined ? local.label : undefined)}\n tooltip={local.tooltip}\n >\n <Show when={!local.loading}>{local.children}</Show>\n </Button>\n );\n}\n\nexport function IconButtonLink(props: IconButtonLinkProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"label\", \"tooltip\", \"variant\"]);\n\n return (\n <ButtonLink\n {...rest}\n variant={local.variant ?? \"ghost\"}\n class={`k2b-icon-button ${local.class ?? \"\"}`}\n aria-label={local.label}\n title={rest.title ?? (local.tooltip === undefined ? local.label : undefined)}\n tooltip={local.tooltip}\n >\n {local.children}\n </ButtonLink>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Link","Show","splitProps","Tooltip","buttonClass","className","filter","Boolean","join","Button","props","local","rest","target","setRef","element","ref","control","_$ssrElement","_$mergeProps","type","class","data-size","size","data-variant","variant","data-wrap","wrap","undefined","disabled","loading","aria-busy","_$escape","_$createComponent","when","children","_$ssr","_tmpl$","_tmpl$2","loadingLabel","fallback","tooltip","content","delay","tooltipDelay","placement","tooltipPlacement","ButtonLink","navigation","href","onNavigate","onClick","replace","scroll","IconButton","aria-label","label","title","IconButtonLink"],"sources":["actions/Button.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent, type NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport { type JSX, Show, splitProps } from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"text\" | \"subtle\" | \"input\" | \"warning\" | \"danger\" | \"success\" | \"ai\";\nexport type ButtonSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport type ButtonProps = JSX.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Allow a deliberately long or rich label to wrap. Defaults to false. */\n wrap?: boolean;\n loading?: boolean;\n loadingLabel?: string;\n size?: ButtonSize;\n variant?: ButtonVariant;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n};\n\nexport type ButtonLinkProps = Omit<JSX.AnchorHTMLAttributes<HTMLAnchorElement>, \"onClick\"> & {\n /** Allow a deliberately long or rich label to wrap. Defaults to false. */\n wrap?: boolean;\n navigation?: \"document\" | \"enhanced\";\n onClick?: JSX.EventHandlerUnion<HTMLAnchorElement, MouseEvent>;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n replace?: boolean;\n scroll?: NavigationScrollMode;\n size?: ButtonSize;\n variant?: ButtonVariant;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n};\n\nconst buttonClass = (className?: string): string => [\"k2b-button\", className].filter(Boolean).join(\" \");\n\nexport function Button(props: ButtonProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"children\",\n \"class\",\n \"disabled\",\n \"loading\",\n \"loadingLabel\",\n \"ref\",\n \"size\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n \"wrap\",\n ]);\n let target: HTMLButtonElement | undefined;\n const setRef = (element: HTMLButtonElement) => {\n target = element;\n if (typeof local.ref === \"function\") local.ref(element);\n };\n\n const control = (\n <button\n {...rest}\n ref={setRef}\n type={local.type ?? \"button\"}\n class={buttonClass(local.class)}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n data-wrap={local.wrap || undefined}\n disabled={local.disabled || local.loading}\n aria-busy={local.loading ? \"true\" : undefined}\n >\n <Show when={local.loading}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n </Show>\n <span class=\"k2b-button__label\">\n <Show when={local.loading && local.loadingLabel} fallback={local.children}>\n {local.loadingLabel}\n </Show>\n </span>\n </button>\n );\n\n return (\n <>\n {control}\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={local.disabled || local.loading}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\nexport function ButtonLink(props: ButtonLinkProps): JSX.Element {\n const [local, rest] = splitProps(props, [\n \"children\",\n \"class\",\n \"href\",\n \"navigation\",\n \"onClick\",\n \"onNavigate\",\n \"replace\",\n \"ref\",\n \"scroll\",\n \"size\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"variant\",\n \"wrap\",\n ]);\n let target: HTMLAnchorElement | undefined;\n const setRef = (element: HTMLAnchorElement) => {\n target = element;\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const className = buttonClass(local.class);\n const content = <span class=\"k2b-button__label\">{local.children}</span>;\n\n const tooltip = () => (\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip content={local.tooltip as JSX.Element} target={() => target} delay={local.tooltipDelay} placement={local.tooltipPlacement} />\n </Show>\n );\n\n if (local.navigation === \"enhanced\" && local.href && local.onNavigate) {\n return (\n <>\n <Link\n {...rest}\n ref={setRef}\n href={local.href}\n class={className}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n data-wrap={local.wrap || undefined}\n onClick={local.onClick}\n onNavigate={local.onNavigate}\n replace={local.replace}\n scroll={local.scroll}\n >\n {content}\n </Link>\n {tooltip()}\n </>\n );\n }\n\n return (\n <>\n <a\n {...rest}\n ref={setRef}\n href={local.href}\n class={className}\n data-size={local.size ?? \"md\"}\n data-variant={local.variant ?? \"primary\"}\n data-wrap={local.wrap || undefined}\n onClick={local.onClick}\n >\n {content}\n </a>\n {tooltip()}\n </>\n );\n}\n\nexport type IconButtonProps = Omit<ButtonProps, \"children\"> & {\n children: JSX.Element;\n label: string;\n};\n\nexport type IconButtonLinkProps = Omit<ButtonLinkProps, \"children\"> & {\n children: JSX.Element;\n label: string;\n};\n\nexport function IconButton(props: IconButtonProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"label\", \"loading\", \"loadingLabel\", \"tooltip\", \"variant\"]);\n\n return (\n <Button\n {...rest}\n loading={local.loading}\n variant={local.variant ?? \"ghost\"}\n class={`k2b-icon-button ${local.class ?? \"\"}`}\n aria-label={local.loading ? (local.loadingLabel ?? local.label) : local.label}\n title={rest.title ?? (local.tooltip === undefined ? local.label : undefined)}\n tooltip={local.tooltip}\n >\n <Show when={!local.loading}>{local.children}</Show>\n </Button>\n );\n}\n\nexport function IconButtonLink(props: IconButtonLinkProps): JSX.Element {\n const [local, rest] = splitProps(props, [\"children\", \"class\", \"label\", \"tooltip\", \"variant\"]);\n\n return (\n <ButtonLink\n {...rest}\n variant={local.variant ?? \"ghost\"}\n class={`k2b-icon-button ${local.class ?? \"\"}`}\n aria-label={local.label}\n title={rest.title ?? (local.tooltip === undefined ? local.label : undefined)}\n tooltip={local.tooltip}\n >\n {local.children}\n </ButtonLink>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@ import { ssr as _$ssr } from "solid-js/web";
2
2
  import { createComponent as _$createComponent } from "solid-js/web";
3
3
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
4
  import { escape as _$escape } from "solid-js/web";
5
- var _tmpl$ = ["<details class=\"", "\"", "><summary", ">", "<span>", "</span><i class=\"ti ti-chevron-down k2b-disclosure__chevron\" aria-hidden=\"true\"></i></summary><div class=\"k2b-disclosure__content\">", "</div></details>"],
5
+ var _tmpl$ = ["<details class=\"", "\"", "", "><summary", ">", "<span>", "</span><i class=\"ti ti-chevron-down k2b-disclosure__chevron\" aria-hidden=\"true\"></i></summary><div class=\"k2b-disclosure__content\">", "</div></details>"],
6
6
  _tmpl$2 = ["<i", " aria-hidden=\"true\"></i>"];
7
7
  import { createEffect, createSignal, Show } from "solid-js";
8
8
  import { resolveMaybeAccessor } from "../inputs/field-contract";
@@ -15,7 +15,7 @@ export function Disclosure(props) {
15
15
  createEffect(() => {
16
16
  if (details && details.open !== open()) details.open = open();
17
17
  });
18
- return _$ssr(_tmpl$, `k2b-disclosure ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("open", open(), true) + _$ssrAttribute("data-disabled", props.disabled ? "true" : _$escape(undefined, true), false), _$ssrAttribute("aria-disabled", props.disabled ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
18
+ return _$ssr(_tmpl$, `k2b-disclosure ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-surface", _$escape(props.surface ?? "paper", true), false), _$ssrAttribute("open", open(), true) + _$ssrAttribute("data-disabled", props.disabled ? "true" : _$escape(undefined, true), false), _$ssrAttribute("aria-disabled", props.disabled ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
19
19
  get when() {
20
20
  return props.icon;
21
21
  },
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createSignal","Show","resolveMaybeAccessor","Disclosure","props","controlled","value","undefined","internal","setInternal","defaultValue","open","Boolean","details","_$ssr","_tmpl$","_$escape","class","_$ssrAttribute","disabled","_$createComponent","when","icon","children","_tmpl$2","summary"],"sources":["actions/Disclosure.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, Show } from \"solid-js\";\nimport type { MaybeAccessor } from \"../inputs/field-contract\";\nimport { resolveMaybeAccessor } from \"../inputs/field-contract\";\n\nexport type DisclosureProps = {\n summary: JSX.Element;\n children: JSX.Element;\n value?: MaybeAccessor<boolean>;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n icon?: string;\n disabled?: boolean;\n class?: string;\n};\n\n/** Native disclosure with the same value/onValueChange vocabulary as other controls. */\nexport function Disclosure(props: DisclosureProps): JSX.Element {\n const controlled = () => props.value !== undefined;\n const [internal, setInternal] = createSignal(props.defaultValue ?? false);\n const open = () => (controlled() ? Boolean(resolveMaybeAccessor(props.value)) : internal());\n let details: HTMLDetailsElement | undefined;\n\n createEffect(() => {\n if (details && details.open !== open()) details.open = open();\n });\n\n return (\n <details\n ref={details}\n class={`k2b-disclosure ${props.class ?? \"\"}`}\n open={open()}\n data-disabled={props.disabled ? \"true\" : undefined}\n onToggle={(event) => {\n if (props.disabled) {\n event.currentTarget.open = open();\n return;\n }\n const next = event.currentTarget.open;\n // A controlled owner may change `value` without user input. Reflecting\n // that value onto <details> emits a native toggle event; it must not be\n // reported back as a second user change.\n if (controlled() && next === open()) return;\n if (!controlled()) setInternal(next);\n props.onValueChange?.(next);\n }}\n >\n {/* biome-ignore lint/a11y/noStaticElementInteractions: summary is the native interactive trigger for details. */}\n <summary aria-disabled={props.disabled ? \"true\" : undefined} onClick={(event) => props.disabled && event.preventDefault()}>\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{props.summary}</span>\n <i class=\"ti ti-chevron-down k2b-disclosure__chevron\" aria-hidden=\"true\" />\n </summary>\n <div class=\"k2b-disclosure__content\">{props.children}</div>\n </details>\n );\n}\n\nexport default Disclosure;\n"],"mappings":";;;;;;AAAA,SAASA,YAAY,EAAEC,YAAY,EAAYC,IAAI,QAAQ,UAAU;AAErE,SAASC,oBAAoB,QAAQ,0BAA0B;AAa/D;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAe;EAC9D,MAAMC,UAAU,GAAGA,CAAA,KAAMD,KAAK,CAACE,KAAK,KAAKC,SAAS;EAClD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGT,YAAY,CAACI,KAAK,CAACM,YAAY,IAAI,KAAK,CAAC;EACzE,MAAMC,IAAI,GAAGA,CAAA,KAAON,UAAU,CAAC,CAAC,GAAGO,OAAO,CAACV,oBAAoB,CAACE,KAAK,CAACE,KAAK,CAAC,CAAC,GAAGE,QAAQ,CAAC,CAAE;EAC3F,IAAIK,OAAuC;EAE3Cd,YAAY,CAAC,MAAM;IACjB,IAAIc,OAAO,IAAIA,OAAO,CAACF,IAAI,KAAKA,IAAI,CAAC,CAAC,EAAEE,OAAO,CAACF,IAAI,GAAGA,IAAI,CAAC,CAAC;EAC/D,CAAC,CAAC;EAEF,OAAAG,KAAA,CAAAC,MAAA,EAGW,kBAAAC,QAAA,CAAkBZ,KAAK,CAACa,KAAK,IAAI,EAAE,SAAE,EAAAC,cAAA,SACtCP,IAAI,CAAC,CAAC,UAAAO,cAAA,kBACGd,KAAK,CAACe,QAAQ,GAAG,MAAM,GAAAH,QAAA,CAAGT,SAAS,iBAAAW,cAAA,kBAgB1Bd,KAAK,CAACe,QAAQ,GAAG,MAAM,GAAAH,QAAA,CAAGT,SAAS,iBAAAS,QAAA,CAAAI,iBAAA,CACxDnB,IAAI;IAAA,IAACoB,IAAIA,CAAA;MAAA,OAAEjB,KAAK,CAACkB,IAAI;IAAA;IAAAC,QAAA,EAAID,IAAI,IAAAR,KAAA,CAAAU,OAAA,EAAAN,cAAA,UAAAF,QAAA,CAAeM,IAAI,CAAC,CAAC;EAAuB,KAAAN,QAAA,CACnEZ,KAAK,CAACqB,OAAO,GAAAT,QAAA,CAGgBZ,KAAK,CAACmB,QAAQ;AAG1D;AAEA,eAAepB,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createSignal","Show","resolveMaybeAccessor","Disclosure","props","controlled","value","undefined","internal","setInternal","defaultValue","open","Boolean","details","_$ssr","_tmpl$","_$escape","class","_$ssrAttribute","surface","disabled","_$createComponent","when","icon","children","_tmpl$2","summary"],"sources":["actions/Disclosure.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, Show } from \"solid-js\";\nimport type { MaybeAccessor } from \"../inputs/field-contract\";\nimport { resolveMaybeAccessor } from \"../inputs/field-contract\";\n\nexport type DisclosureProps = {\n summary: JSX.Element;\n surface?: \"paper\" | \"plain\";\n children: JSX.Element;\n value?: MaybeAccessor<boolean>;\n defaultValue?: boolean;\n onValueChange?: (value: boolean) => void;\n icon?: string;\n disabled?: boolean;\n class?: string;\n};\n\n/** Native disclosure with the same value/onValueChange vocabulary as other controls. */\nexport function Disclosure(props: DisclosureProps): JSX.Element {\n const controlled = () => props.value !== undefined;\n const [internal, setInternal] = createSignal(props.defaultValue ?? false);\n const open = () => (controlled() ? Boolean(resolveMaybeAccessor(props.value)) : internal());\n let details: HTMLDetailsElement | undefined;\n\n createEffect(() => {\n if (details && details.open !== open()) details.open = open();\n });\n\n return (\n <details\n ref={details}\n class={`k2b-disclosure ${props.class ?? \"\"}`}\n data-surface={props.surface ?? \"paper\"}\n open={open()}\n data-disabled={props.disabled ? \"true\" : undefined}\n onToggle={(event) => {\n if (props.disabled) {\n event.currentTarget.open = open();\n return;\n }\n const next = event.currentTarget.open;\n // A controlled owner may change `value` without user input. Reflecting\n // that value onto <details> emits a native toggle event; it must not be\n // reported back as a second user change.\n if (controlled() && next === open()) return;\n if (!controlled()) setInternal(next);\n props.onValueChange?.(next);\n }}\n >\n {/* biome-ignore lint/a11y/noStaticElementInteractions: summary is the native interactive trigger for details. */}\n <summary aria-disabled={props.disabled ? \"true\" : undefined} onClick={(event) => props.disabled && event.preventDefault()}>\n <Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>\n <span>{props.summary}</span>\n <i class=\"ti ti-chevron-down k2b-disclosure__chevron\" aria-hidden=\"true\" />\n </summary>\n <div class=\"k2b-disclosure__content\">{props.children}</div>\n </details>\n );\n}\n\nexport default Disclosure;\n"],"mappings":";;;;;;AAAA,SAASA,YAAY,EAAEC,YAAY,EAAYC,IAAI,QAAQ,UAAU;AAErE,SAASC,oBAAoB,QAAQ,0BAA0B;AAc/D;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAe;EAC9D,MAAMC,UAAU,GAAGA,CAAA,KAAMD,KAAK,CAACE,KAAK,KAAKC,SAAS;EAClD,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAGT,YAAY,CAACI,KAAK,CAACM,YAAY,IAAI,KAAK,CAAC;EACzE,MAAMC,IAAI,GAAGA,CAAA,KAAON,UAAU,CAAC,CAAC,GAAGO,OAAO,CAACV,oBAAoB,CAACE,KAAK,CAACE,KAAK,CAAC,CAAC,GAAGE,QAAQ,CAAC,CAAE;EAC3F,IAAIK,OAAuC;EAE3Cd,YAAY,CAAC,MAAM;IACjB,IAAIc,OAAO,IAAIA,OAAO,CAACF,IAAI,KAAKA,IAAI,CAAC,CAAC,EAAEE,OAAO,CAACF,IAAI,GAAGA,IAAI,CAAC,CAAC;EAC/D,CAAC,CAAC;EAEF,OAAAG,KAAA,CAAAC,MAAA,EAGW,kBAAAC,QAAA,CAAkBZ,KAAK,CAACa,KAAK,IAAI,EAAE,SAAE,EAAAC,cAAA,iBAAAF,QAAA,CAC9BZ,KAAK,CAACe,OAAO,IAAI,OAAO,iBAAAD,cAAA,SAChCP,IAAI,CAAC,CAAC,UAAAO,cAAA,kBACGd,KAAK,CAACgB,QAAQ,GAAG,MAAM,GAAAJ,QAAA,CAAGT,SAAS,iBAAAW,cAAA,kBAgB1Bd,KAAK,CAACgB,QAAQ,GAAG,MAAM,GAAAJ,QAAA,CAAGT,SAAS,iBAAAS,QAAA,CAAAK,iBAAA,CACxDpB,IAAI;IAAA,IAACqB,IAAIA,CAAA;MAAA,OAAElB,KAAK,CAACmB,IAAI;IAAA;IAAAC,QAAA,EAAID,IAAI,IAAAT,KAAA,CAAAW,OAAA,EAAAP,cAAA,UAAAF,QAAA,CAAeO,IAAI,CAAC,CAAC;EAAuB,KAAAP,QAAA,CACnEZ,KAAK,CAACsB,OAAO,GAAAV,QAAA,CAGgBZ,KAAK,CAACoB,QAAQ;AAG1D;AAEA,eAAerB,UAAU","ignoreList":[]}
@@ -25,6 +25,9 @@ import { Tooltip } from "../feedback/Tooltip";
25
25
  import { useUiMessages } from "../intl/messages";
26
26
  import { Button } from "./Button";
27
27
 
28
+ // Resolved outside JSX: a conditional attribute compiles to a lazy memo, which would be created inside the click handler.
29
+ const selectAction = item => item.action;
30
+
28
31
  /** Declarative radio or checkbox row for compact action menus. */
29
32
 
30
33
  const MenuContext = createContext();
@@ -161,7 +164,7 @@ export function DropdownItems(props) {
161
164
  return "external" in item ? item.external : undefined;
162
165
  },
163
166
  get onSelect() {
164
- return "action" in item ? item.action : undefined;
167
+ return selectAction(item);
165
168
  },
166
169
  get children() {
167
170
  return item.label;
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","createEffect","createSignal","createUniqueId","For","onCleanup","onMount","Show","splitProps","useContext","Tooltip","useUiMessages","Button","MenuContext","DropdownContext","actionableItems","menu","Array","from","querySelectorAll","join","focusMenuItem","index","items","length","focus","dropdownPosition","trigger","position","viewport","gap","left","top","bottom","right","width","height","Math","max","min","itemContent","props","_$createComponent","when","image","fallback","icon","children","_$ssr","_tmpl$2","_$ssrAttribute","_$escape","_tmpl$3","_tmpl$","description","_tmpl$4","DropdownItem","danger","variant","content","disabled","href","undefined","_tmpl$5","class","_tmpl$6","external","DropdownChoiceItem","checked","_tmpl$0","choice","_tmpl$8","_tmpl$7","color","_tmpl$1","_$ssrStyleProperty","label","_tmpl$9","DropdownItems","messages","renderItem","item","onSelect","action","Provider","value","close","each","_tmpl$10","sectionLabel","actions","_tmpl$11","DropdownTrigger","context","Error","local","rest","target","Boolean","register","element","registerTrigger","ref","click","event","stopPropagation","toggle","appearance","_$mergeProps","aria-controls","menuId","aria-expanded","open","aria-label","tabIndex","onClick","onKeyDown","triggerKeyDown","type","iconOnly","size","tooltip","tooltipDelay","tooltipPlacement","_$ssrElement","delay","placement","DropdownRoot","id","replace","internalOpen","setInternalOpen","triggerRef","menuRef","mounted","viewportListenersAttached","isOpen","align","place","rect","getBoundingClientRect","window","innerWidth","innerHeight","style","reposition","attachViewportListeners","addEventListener","detachViewportListeners","removeEventListener","restoreFocus","matches","hidePopover","queueMicrotask","showPopover","requestOpen","next","onOpenChange","handleMenuKeyDown","current","indexOf","document","activeElement","key","preventDefault","includes","controlled","_tmpl$12","dropdownMenu","menuClass","_$ssrStyle","Dropdown","Root","Trigger","Item"],"sources":["actions/Dropdown.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n onCleanup,\n onMount,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from \"./Button\";\n\nexport type DropdownPosition = \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\" | \"right-start\";\n\nexport type DropdownActionBase = {\n class?: string;\n disabled?: boolean;\n icon?: string;\n image?: string;\n label: string;\n description?: string;\n variant?: \"danger\";\n};\n\nexport type DropdownAction =\n | (DropdownActionBase & {\n action: () => void;\n href?: never;\n external?: never;\n })\n | (DropdownActionBase & {\n href: string;\n external?: boolean;\n action?: never;\n })\n | (DropdownActionBase & {\n disabled: true;\n action?: never;\n href?: never;\n external?: never;\n });\n\n/** Declarative radio or checkbox row for compact action menus. */\nexport type DropdownChoice = DropdownActionBase & {\n action: () => void;\n checked: boolean | (() => boolean);\n choice: \"checkbox\" | \"radio\";\n closeOnSelect?: boolean;\n color?: string;\n};\n\nexport type DropdownSection = {\n sectionLabel?: string;\n items: readonly (DropdownAction | DropdownChoice)[];\n};\n\nexport type DropdownItem = DropdownAction | DropdownChoice | DropdownSection;\n\nexport type DropdownProps = {\n items: readonly DropdownItem[];\n children: JSX.Element;\n position?: DropdownPosition | (() => DropdownPosition);\n /** Larger menu rows and typography for touch. Defaults to `default`. */\n variant?: \"default\" | \"touch\";\n /** Menu width as a CSS length. Defaults to `12rem`, or `18rem` for touch. */\n width?: string;\n class?: string;\n menuClass?: string;\n onClose?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n label?: string;\n align?: \"start\" | \"end\";\n};\n\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"aria-controls\" | \"aria-expanded\" | \"aria-haspopup\" | \"children\" | \"disabled\" | \"onClick\" | \"onKeyDown\"\n> & {\n children: JSX.Element;\n /** Use `plain` when a specialized component class owns the complete visual treatment. */\n appearance?: \"button\" | \"plain\";\n disabled?: boolean;\n iconOnly?: boolean;\n label?: string;\n size?: ButtonSize;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n variant?: ButtonVariant;\n};\n\nexport type DropdownItemProps = {\n children: JSX.Element;\n icon?: string;\n image?: string;\n description?: string;\n disabled?: boolean;\n danger?: boolean;\n variant?: \"danger\";\n href?: string;\n external?: boolean;\n onSelect?: () => void;\n class?: string;\n};\n\ntype MenuContextValue = {\n close: (restoreFocus?: boolean) => void;\n};\n\ntype DropdownContextValue = {\n disabled: () => boolean;\n menuId: string;\n open: () => boolean;\n registerTrigger: (element: HTMLButtonElement) => void;\n toggle: () => void;\n triggerKeyDown: JSX.EventHandlerUnion<HTMLButtonElement, KeyboardEvent>;\n};\n\nconst MenuContext = createContext<MenuContextValue>();\nconst DropdownContext = createContext<DropdownContextValue>();\n\nconst actionableItems = (menu: HTMLElement | undefined): HTMLElement[] =>\n menu\n ? Array.from(\n menu.querySelectorAll<HTMLElement>(\n [\n \"[role='menuitem']:not([aria-disabled='true'])\",\n \"[role='menuitemcheckbox']:not([aria-disabled='true'])\",\n \"[role='menuitemradio']:not([aria-disabled='true'])\",\n ].join(\", \"),\n ),\n )\n : [];\n\nconst focusMenuItem = (menu: HTMLElement | undefined, index: number): void => {\n const items = actionableItems(menu);\n if (items.length === 0) return;\n items[(index + items.length) % items.length]?.focus();\n};\n\nexport const dropdownPosition = (\n trigger: DOMRect,\n menu: Pick<DOMRect, \"width\" | \"height\">,\n position: DropdownPosition,\n viewport: { width: number; height: number },\n gap = 4,\n): { left: number; top: number } => {\n let left = trigger.left;\n let top = trigger.bottom + gap;\n\n if (position === \"bottom-left\" || position === \"top-left\") left = trigger.right - menu.width;\n if (position === \"top-right\" || position === \"top-left\") top = trigger.top - menu.height - gap;\n if (position === \"right-start\") {\n left = trigger.right + gap;\n top = trigger.top;\n }\n\n return {\n left: Math.max(8, Math.min(left, viewport.width - menu.width - 8)),\n top: Math.max(8, Math.min(top, viewport.height - menu.height - 8)),\n };\n};\n\nconst itemContent = (props: { description?: string; icon?: string; image?: string; children: JSX.Element }): JSX.Element => (\n <>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.children}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </>\n);\n\nexport function DropdownItem(props: DropdownItemProps): JSX.Element {\n const menu = useContext(MenuContext);\n const danger = () => props.danger || props.variant === \"danger\";\n const content = itemContent(props);\n\n return (\n <Show\n when={!props.disabled ? props.href : undefined}\n fallback={\n <button\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n disabled={props.disabled}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n menu?.close();\n props.onSelect?.();\n }}\n >\n {content}\n </button>\n }\n >\n {(href) => (\n <a\n href={href()}\n target={props.external ? \"_blank\" : undefined}\n rel={props.external ? \"noopener noreferrer\" : undefined}\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n onClick={() => {\n menu?.close(false);\n props.onSelect?.();\n }}\n >\n {content}\n </a>\n )}\n </Show>\n );\n}\n\nfunction DropdownChoiceItem(props: DropdownChoice): JSX.Element {\n const menu = useContext(MenuContext);\n const checked = () => (typeof props.checked === \"function\" ? props.checked() : props.checked);\n return (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: the runtime role is always menuitemcheckbox or menuitemradio, both of which support aria-checked.\n <button\n type=\"button\"\n role={props.choice === \"checkbox\" ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={checked()}\n aria-disabled={props.disabled ? \"true\" : undefined}\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-selected={checked() ? \"true\" : undefined}\n disabled={props.disabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (props.closeOnSelect !== false) menu?.close();\n props.action();\n }}\n >\n <Show when={props.choice === \"checkbox\"}>\n <span class=\"k2b-dropdown__checkbox\" aria-hidden=\"true\">\n <Show when={checked()}>\n <i class=\"ti ti-check\" />\n </Show>\n </span>\n </Show>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <Show when={props.color}>\n {(color) => <span class=\"k2b-dropdown__color\" style={{ \"--k2b-dropdown-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.label}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.choice === \"radio\" && checked()}>\n <i class=\"ti ti-check k2b-dropdown__check\" aria-hidden=\"true\" />\n </Show>\n </button>\n );\n}\n\nexport function DropdownItems(props: { items: readonly DropdownItem[]; close: (restoreFocus?: boolean) => void }): JSX.Element {\n const messages = useUiMessages();\n const renderItem = (item: DropdownAction | DropdownChoice): JSX.Element =>\n \"choice\" in item ? (\n <DropdownChoiceItem {...item} />\n ) : (\n <DropdownItem\n icon={item.icon}\n image={item.image}\n description={item.description}\n variant={item.variant}\n disabled={item.disabled}\n class={item.class}\n href={\"href\" in item ? item.href : undefined}\n external={\"external\" in item ? item.external : undefined}\n onSelect={\"action\" in item ? item.action : undefined}\n >\n {item.label}\n </DropdownItem>\n );\n\n return (\n <MenuContext.Provider value={{ close: props.close }}>\n <For each={props.items}>\n {(item, index) => (\n <Show when={\"items\" in item} fallback={renderItem(item as DropdownAction | DropdownChoice)}>\n <div\n class=\"k2b-dropdown__section\"\n data-divided={index() > 0 ? \"true\" : undefined}\n role=\"group\"\n aria-label={(item as DropdownSection).sectionLabel ?? messages().actions}\n >\n <Show when={(item as DropdownSection).sectionLabel}>{(label) => <div class=\"k2b-dropdown__label\">{label()}</div>}</Show>\n <For each={(item as DropdownSection).items}>{renderItem}</For>\n </div>\n </Show>\n )}\n </For>\n </MenuContext.Provider>\n );\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps): JSX.Element {\n const context = useContext(DropdownContext);\n if (!context) throw new Error(\"Dropdown.Trigger must be used inside Dropdown.Root\");\n const [local, rest] = splitProps(props, [\n \"appearance\",\n \"children\",\n \"class\",\n \"disabled\",\n \"iconOnly\",\n \"label\",\n \"ref\",\n \"size\",\n \"tabIndex\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n ]);\n let target: HTMLButtonElement | undefined;\n const disabled = () => Boolean(context.disabled() || local.disabled);\n const register = (element: HTMLButtonElement) => {\n target = element;\n context.registerTrigger(element);\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const click: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n context.toggle();\n };\n\n if (local.appearance !== \"plain\") {\n return (\n <Button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`${local.iconOnly ? \"k2b-icon-button\" : \"\"} k2b-dropdown__trigger ${local.class ?? \"\"}`}\n size={local.size}\n variant={local.variant ?? (local.iconOnly ? \"ghost\" : undefined)}\n tooltip={local.tooltip}\n tooltipDelay={local.tooltipDelay}\n tooltipPlacement={local.tooltipPlacement}\n >\n {local.children}\n </Button>\n );\n }\n\n return (\n <>\n <button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`k2b-dropdown__trigger ${local.class ?? \"\"}`}\n >\n {local.children}\n </button>\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={disabled()}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\n/** Accessible top-layer menu with explicit trigger ownership. */\nfunction DropdownRoot(props: DropdownProps): JSX.Element {\n const messages = useUiMessages();\n const id = createUniqueId().replace(/[^a-zA-Z0-9_-]/g, \"-\");\n const menuId = `k2b-dropdown-${id}`;\n const [internalOpen, setInternalOpen] = createSignal(false);\n let triggerRef: HTMLButtonElement | undefined;\n let menuRef: HTMLDivElement | undefined;\n let mounted = false;\n let viewportListenersAttached = false;\n\n const isOpen = () => props.open ?? internalOpen();\n const position = (): DropdownPosition =>\n typeof props.position === \"function\" ? props.position() : (props.position ?? (props.align === \"end\" ? \"bottom-left\" : \"bottom-right\"));\n\n const place = () => {\n if (!triggerRef || !menuRef) return;\n const rect = dropdownPosition(triggerRef.getBoundingClientRect(), menuRef.getBoundingClientRect(), position(), {\n width: window.innerWidth,\n height: window.innerHeight,\n });\n menuRef.style.left = `${rect.left}px`;\n menuRef.style.top = `${rect.top}px`;\n };\n const reposition = () => {\n if (isOpen()) place();\n };\n const attachViewportListeners = () => {\n if (viewportListenersAttached) return;\n viewportListenersAttached = true;\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n };\n const detachViewportListeners = () => {\n if (!viewportListenersAttached) return;\n viewportListenersAttached = false;\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n };\n const close = (restoreFocus = true) => {\n if (menuRef?.matches(\":popover-open\")) menuRef.hidePopover();\n detachViewportListeners();\n if (restoreFocus) queueMicrotask(() => triggerRef?.focus());\n };\n const open = (focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled || !menuRef || menuRef.matches(\":popover-open\")) return;\n menuRef.showPopover();\n attachViewportListeners();\n place();\n queueMicrotask(() => {\n if (focus) focusMenuItem(menuRef, focus === \"first\" ? 0 : -1);\n });\n };\n const requestOpen = (next: boolean, focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled && next) return;\n if (props.open !== undefined) {\n props.onOpenChange?.(next);\n return;\n }\n if (next) open(focus);\n else close(false);\n };\n const handleMenuKeyDown = (event: KeyboardEvent) => {\n const items = actionableItems(menuRef);\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n focusMenuItem(menuRef, current + (event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusMenuItem(menuRef, event.key === \"Home\" ? 0 : -1);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n requestOpen(false);\n queueMicrotask(() => triggerRef?.focus());\n } else if (event.key === \"Tab\") {\n requestOpen(false);\n }\n };\n\n const context: DropdownContextValue = {\n disabled: () => Boolean(props.disabled),\n menuId,\n open: isOpen,\n registerTrigger: (element) => {\n triggerRef = element;\n },\n toggle: () => requestOpen(!isOpen()),\n triggerKeyDown: (event) => {\n if (![\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\"].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n if (isOpen()) {\n focusMenuItem(menuRef, event.key === \"ArrowUp\" ? -1 : 0);\n return;\n }\n requestOpen(true, event.key === \"ArrowUp\" ? \"last\" : \"first\");\n },\n };\n\n createEffect(() => {\n const controlled = props.open;\n if (!mounted || controlled === undefined || !menuRef) return;\n if (controlled && !menuRef.matches(\":popover-open\")) open(false);\n if (!controlled && menuRef.matches(\":popover-open\")) close(false);\n });\n createEffect(() => {\n if (mounted && props.disabled) close(false);\n });\n onMount(() => {\n mounted = true;\n if (props.open) open(false);\n onCleanup(detachViewportListeners);\n });\n\n return (\n <DropdownContext.Provider value={context}>\n <span class={`k2b-dropdown ${props.class ?? \"\"}`}>\n {props.children}\n <div\n ref={menuRef}\n id={menuId}\n popover=\"auto\"\n role=\"menu\"\n aria-label={props.label ?? messages().dropdownMenu}\n class={`k2b-dropdown__menu ${props.menuClass ?? \"\"}`}\n style={props.width ? { \"--k2b-dropdown-width\": props.width } : undefined}\n data-variant={props.variant ?? \"default\"}\n data-position={position()}\n onKeyDown={handleMenuKeyDown}\n onToggle={(event) => {\n const nextOpen = (event as ToggleEvent).newState === \"open\";\n const wasOpen = internalOpen();\n setInternalOpen(nextOpen);\n if (nextOpen) attachViewportListeners();\n else detachViewportListeners();\n if (props.open === undefined || props.open !== nextOpen) props.onOpenChange?.(nextOpen);\n if (wasOpen && !nextOpen) props.onClose?.();\n if (!nextOpen && props.open === true) queueMicrotask(() => props.open === true && open(false));\n }}\n >\n <DropdownItems items={props.items} close={close} />\n </div>\n </span>\n </DropdownContext.Provider>\n );\n}\n\ntype DropdownComponent = ((props: DropdownProps) => JSX.Element) & {\n Root: (props: DropdownProps) => JSX.Element;\n Trigger: (props: DropdownTriggerProps) => JSX.Element;\n Item: (props: DropdownItemProps) => JSX.Element;\n};\n\nexport const Dropdown = DropdownRoot as DropdownComponent;\nDropdown.Root = DropdownRoot;\nDropdown.Trigger = DropdownTrigger;\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","createEffect","createSignal","createUniqueId","For","onCleanup","onMount","Show","splitProps","useContext","Tooltip","useUiMessages","Button","selectAction","item","action","MenuContext","DropdownContext","actionableItems","menu","Array","from","querySelectorAll","join","focusMenuItem","index","items","length","focus","dropdownPosition","trigger","position","viewport","gap","left","top","bottom","right","width","height","Math","max","min","itemContent","props","_$createComponent","when","image","fallback","icon","children","_$ssr","_tmpl$2","_$ssrAttribute","_$escape","_tmpl$3","_tmpl$","description","_tmpl$4","DropdownItem","danger","variant","content","disabled","href","undefined","_tmpl$5","class","_tmpl$6","external","DropdownChoiceItem","checked","_tmpl$0","choice","_tmpl$8","_tmpl$7","color","_tmpl$1","_$ssrStyleProperty","label","_tmpl$9","DropdownItems","messages","renderItem","onSelect","Provider","value","close","each","_tmpl$10","sectionLabel","actions","_tmpl$11","DropdownTrigger","context","Error","local","rest","target","Boolean","register","element","registerTrigger","ref","click","event","stopPropagation","toggle","appearance","_$mergeProps","aria-controls","menuId","aria-expanded","open","aria-label","tabIndex","onClick","onKeyDown","triggerKeyDown","type","iconOnly","size","tooltip","tooltipDelay","tooltipPlacement","_$ssrElement","delay","placement","DropdownRoot","id","replace","internalOpen","setInternalOpen","triggerRef","menuRef","mounted","viewportListenersAttached","isOpen","align","place","rect","getBoundingClientRect","window","innerWidth","innerHeight","style","reposition","attachViewportListeners","addEventListener","detachViewportListeners","removeEventListener","restoreFocus","matches","hidePopover","queueMicrotask","showPopover","requestOpen","next","onOpenChange","handleMenuKeyDown","current","indexOf","document","activeElement","key","preventDefault","includes","controlled","_tmpl$12","dropdownMenu","menuClass","_$ssrStyle","Dropdown","Root","Trigger","Item"],"sources":["actions/Dropdown.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n onCleanup,\n onMount,\n Show,\n splitProps,\n useContext,\n} from \"solid-js\";\nimport { Tooltip, type TooltipPlacement } from \"../feedback/Tooltip\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { Button, type ButtonProps, type ButtonSize, type ButtonVariant } from \"./Button\";\n\n// Resolved outside JSX: a conditional attribute compiles to a lazy memo, which would be created inside the click handler.\nconst selectAction = (item: { action?: () => void }) => item.action;\n\nexport type DropdownPosition = \"bottom-right\" | \"bottom-left\" | \"top-right\" | \"top-left\" | \"right-start\";\n\nexport type DropdownActionBase = {\n class?: string;\n disabled?: boolean;\n icon?: string;\n image?: string;\n label: string;\n description?: string;\n variant?: \"danger\";\n};\n\nexport type DropdownAction =\n | (DropdownActionBase & {\n action: () => void;\n href?: never;\n external?: never;\n })\n | (DropdownActionBase & {\n href: string;\n external?: boolean;\n action?: never;\n })\n | (DropdownActionBase & {\n disabled: true;\n action?: never;\n href?: never;\n external?: never;\n });\n\n/** Declarative radio or checkbox row for compact action menus. */\nexport type DropdownChoice = DropdownActionBase & {\n action: () => void;\n checked: boolean | (() => boolean);\n choice: \"checkbox\" | \"radio\";\n closeOnSelect?: boolean;\n color?: string;\n};\n\nexport type DropdownSection = {\n sectionLabel?: string;\n items: readonly (DropdownAction | DropdownChoice)[];\n};\n\nexport type DropdownItem = DropdownAction | DropdownChoice | DropdownSection;\n\nexport type DropdownProps = {\n items: readonly DropdownItem[];\n children: JSX.Element;\n position?: DropdownPosition | (() => DropdownPosition);\n /** Larger menu rows and typography for touch. Defaults to `default`. */\n variant?: \"default\" | \"touch\";\n /** Menu width as a CSS length. Defaults to `12rem`, or `18rem` for touch. */\n width?: string;\n class?: string;\n menuClass?: string;\n onClose?: () => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n disabled?: boolean;\n label?: string;\n align?: \"start\" | \"end\";\n};\n\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"aria-controls\" | \"aria-expanded\" | \"aria-haspopup\" | \"children\" | \"disabled\" | \"onClick\" | \"onKeyDown\"\n> & {\n children: JSX.Element;\n /** Use `plain` when a specialized component class owns the complete visual treatment. */\n appearance?: \"button\" | \"plain\";\n disabled?: boolean;\n iconOnly?: boolean;\n label?: string;\n size?: ButtonSize;\n tooltip?: JSX.Element | false;\n tooltipDelay?: number;\n tooltipPlacement?: TooltipPlacement;\n variant?: ButtonVariant;\n};\n\nexport type DropdownItemProps = {\n children: JSX.Element;\n icon?: string;\n image?: string;\n description?: string;\n disabled?: boolean;\n danger?: boolean;\n variant?: \"danger\";\n href?: string;\n external?: boolean;\n onSelect?: () => void;\n class?: string;\n};\n\ntype MenuContextValue = {\n close: (restoreFocus?: boolean) => void;\n};\n\ntype DropdownContextValue = {\n disabled: () => boolean;\n menuId: string;\n open: () => boolean;\n registerTrigger: (element: HTMLButtonElement) => void;\n toggle: () => void;\n triggerKeyDown: JSX.EventHandlerUnion<HTMLButtonElement, KeyboardEvent>;\n};\n\nconst MenuContext = createContext<MenuContextValue>();\nconst DropdownContext = createContext<DropdownContextValue>();\n\nconst actionableItems = (menu: HTMLElement | undefined): HTMLElement[] =>\n menu\n ? Array.from(\n menu.querySelectorAll<HTMLElement>(\n [\n \"[role='menuitem']:not([aria-disabled='true'])\",\n \"[role='menuitemcheckbox']:not([aria-disabled='true'])\",\n \"[role='menuitemradio']:not([aria-disabled='true'])\",\n ].join(\", \"),\n ),\n )\n : [];\n\nconst focusMenuItem = (menu: HTMLElement | undefined, index: number): void => {\n const items = actionableItems(menu);\n if (items.length === 0) return;\n items[(index + items.length) % items.length]?.focus();\n};\n\nexport const dropdownPosition = (\n trigger: DOMRect,\n menu: Pick<DOMRect, \"width\" | \"height\">,\n position: DropdownPosition,\n viewport: { width: number; height: number },\n gap = 4,\n): { left: number; top: number } => {\n let left = trigger.left;\n let top = trigger.bottom + gap;\n\n if (position === \"bottom-left\" || position === \"top-left\") left = trigger.right - menu.width;\n if (position === \"top-right\" || position === \"top-left\") top = trigger.top - menu.height - gap;\n if (position === \"right-start\") {\n left = trigger.right + gap;\n top = trigger.top;\n }\n\n return {\n left: Math.max(8, Math.min(left, viewport.width - menu.width - 8)),\n top: Math.max(8, Math.min(top, viewport.height - menu.height - 8)),\n };\n};\n\nconst itemContent = (props: { description?: string; icon?: string; image?: string; children: JSX.Element }): JSX.Element => (\n <>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.children}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n </>\n);\n\nexport function DropdownItem(props: DropdownItemProps): JSX.Element {\n const menu = useContext(MenuContext);\n const danger = () => props.danger || props.variant === \"danger\";\n const content = itemContent(props);\n\n return (\n <Show\n when={!props.disabled ? props.href : undefined}\n fallback={\n <button\n type=\"button\"\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n disabled={props.disabled}\n aria-disabled={props.disabled ? \"true\" : undefined}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n menu?.close();\n props.onSelect?.();\n }}\n >\n {content}\n </button>\n }\n >\n {(href) => (\n <a\n href={href()}\n target={props.external ? \"_blank\" : undefined}\n rel={props.external ? \"noopener noreferrer\" : undefined}\n role=\"menuitem\"\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-danger={danger() ? \"true\" : undefined}\n onClick={() => {\n menu?.close(false);\n props.onSelect?.();\n }}\n >\n {content}\n </a>\n )}\n </Show>\n );\n}\n\nfunction DropdownChoiceItem(props: DropdownChoice): JSX.Element {\n const menu = useContext(MenuContext);\n const checked = () => (typeof props.checked === \"function\" ? props.checked() : props.checked);\n return (\n // biome-ignore lint/a11y/useAriaPropsSupportedByRole: the runtime role is always menuitemcheckbox or menuitemradio, both of which support aria-checked.\n <button\n type=\"button\"\n role={props.choice === \"checkbox\" ? \"menuitemcheckbox\" : \"menuitemradio\"}\n aria-checked={checked()}\n aria-disabled={props.disabled ? \"true\" : undefined}\n tabIndex={-1}\n class={`k2b-dropdown__item ${props.class ?? \"\"}`}\n data-selected={checked() ? \"true\" : undefined}\n disabled={props.disabled}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (props.closeOnSelect !== false) menu?.close();\n props.action();\n }}\n >\n <Show when={props.choice === \"checkbox\"}>\n <span class=\"k2b-dropdown__checkbox\" aria-hidden=\"true\">\n <Show when={checked()}>\n <i class=\"ti ti-check\" />\n </Show>\n </span>\n </Show>\n <Show when={props.image} fallback={<Show when={props.icon}>{(icon) => <i class={icon()} aria-hidden=\"true\" />}</Show>}>\n {(image) => <img class=\"k2b-dropdown__image\" src={image()} alt=\"\" />}\n </Show>\n <Show when={props.color}>\n {(color) => <span class=\"k2b-dropdown__color\" style={{ \"--k2b-dropdown-color\": color() }} aria-hidden=\"true\" />}\n </Show>\n <span class=\"k2b-dropdown__copy\">\n <span>{props.label}</span>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.choice === \"radio\" && checked()}>\n <i class=\"ti ti-check k2b-dropdown__check\" aria-hidden=\"true\" />\n </Show>\n </button>\n );\n}\n\nexport function DropdownItems(props: { items: readonly DropdownItem[]; close: (restoreFocus?: boolean) => void }): JSX.Element {\n const messages = useUiMessages();\n const renderItem = (item: DropdownAction | DropdownChoice): JSX.Element =>\n \"choice\" in item ? (\n <DropdownChoiceItem {...item} />\n ) : (\n <DropdownItem\n icon={item.icon}\n image={item.image}\n description={item.description}\n variant={item.variant}\n disabled={item.disabled}\n class={item.class}\n href={\"href\" in item ? item.href : undefined}\n external={\"external\" in item ? item.external : undefined}\n onSelect={selectAction(item)}\n >\n {item.label}\n </DropdownItem>\n );\n\n return (\n <MenuContext.Provider value={{ close: props.close }}>\n <For each={props.items}>\n {(item, index) => (\n <Show when={\"items\" in item} fallback={renderItem(item as DropdownAction | DropdownChoice)}>\n <div\n class=\"k2b-dropdown__section\"\n data-divided={index() > 0 ? \"true\" : undefined}\n role=\"group\"\n aria-label={(item as DropdownSection).sectionLabel ?? messages().actions}\n >\n <Show when={(item as DropdownSection).sectionLabel}>{(label) => <div class=\"k2b-dropdown__label\">{label()}</div>}</Show>\n <For each={(item as DropdownSection).items}>{renderItem}</For>\n </div>\n </Show>\n )}\n </For>\n </MenuContext.Provider>\n );\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps): JSX.Element {\n const context = useContext(DropdownContext);\n if (!context) throw new Error(\"Dropdown.Trigger must be used inside Dropdown.Root\");\n const [local, rest] = splitProps(props, [\n \"appearance\",\n \"children\",\n \"class\",\n \"disabled\",\n \"iconOnly\",\n \"label\",\n \"ref\",\n \"size\",\n \"tabIndex\",\n \"tooltip\",\n \"tooltipDelay\",\n \"tooltipPlacement\",\n \"type\",\n \"variant\",\n ]);\n let target: HTMLButtonElement | undefined;\n const disabled = () => Boolean(context.disabled() || local.disabled);\n const register = (element: HTMLButtonElement) => {\n target = element;\n context.registerTrigger(element);\n if (typeof local.ref === \"function\") local.ref(element);\n };\n const click: JSX.EventHandlerUnion<HTMLButtonElement, MouseEvent> = (event) => {\n event.stopPropagation();\n context.toggle();\n };\n\n if (local.appearance !== \"plain\") {\n return (\n <Button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`${local.iconOnly ? \"k2b-icon-button\" : \"\"} k2b-dropdown__trigger ${local.class ?? \"\"}`}\n size={local.size}\n variant={local.variant ?? (local.iconOnly ? \"ghost\" : undefined)}\n tooltip={local.tooltip}\n tooltipDelay={local.tooltipDelay}\n tooltipPlacement={local.tooltipPlacement}\n >\n {local.children}\n </Button>\n );\n }\n\n return (\n <>\n <button\n {...rest}\n ref={register}\n aria-controls={context.menuId}\n aria-expanded={context.open()}\n aria-haspopup=\"menu\"\n aria-label={local.label}\n disabled={disabled()}\n tabIndex={disabled() ? -1 : local.tabIndex}\n onClick={click}\n onKeyDown={context.triggerKeyDown}\n type={local.type ?? \"button\"}\n class={`k2b-dropdown__trigger ${local.class ?? \"\"}`}\n >\n {local.children}\n </button>\n <Show when={local.tooltip !== false && local.tooltip !== undefined}>\n <Tooltip\n content={local.tooltip as JSX.Element}\n target={() => target}\n delay={local.tooltipDelay}\n disabled={disabled()}\n placement={local.tooltipPlacement}\n />\n </Show>\n </>\n );\n}\n\n/** Accessible top-layer menu with explicit trigger ownership. */\nfunction DropdownRoot(props: DropdownProps): JSX.Element {\n const messages = useUiMessages();\n const id = createUniqueId().replace(/[^a-zA-Z0-9_-]/g, \"-\");\n const menuId = `k2b-dropdown-${id}`;\n const [internalOpen, setInternalOpen] = createSignal(false);\n let triggerRef: HTMLButtonElement | undefined;\n let menuRef: HTMLDivElement | undefined;\n let mounted = false;\n let viewportListenersAttached = false;\n\n const isOpen = () => props.open ?? internalOpen();\n const position = (): DropdownPosition =>\n typeof props.position === \"function\" ? props.position() : (props.position ?? (props.align === \"end\" ? \"bottom-left\" : \"bottom-right\"));\n\n const place = () => {\n if (!triggerRef || !menuRef) return;\n const rect = dropdownPosition(triggerRef.getBoundingClientRect(), menuRef.getBoundingClientRect(), position(), {\n width: window.innerWidth,\n height: window.innerHeight,\n });\n menuRef.style.left = `${rect.left}px`;\n menuRef.style.top = `${rect.top}px`;\n };\n const reposition = () => {\n if (isOpen()) place();\n };\n const attachViewportListeners = () => {\n if (viewportListenersAttached) return;\n viewportListenersAttached = true;\n window.addEventListener(\"resize\", reposition);\n window.addEventListener(\"scroll\", reposition, true);\n };\n const detachViewportListeners = () => {\n if (!viewportListenersAttached) return;\n viewportListenersAttached = false;\n window.removeEventListener(\"resize\", reposition);\n window.removeEventListener(\"scroll\", reposition, true);\n };\n const close = (restoreFocus = true) => {\n if (menuRef?.matches(\":popover-open\")) menuRef.hidePopover();\n detachViewportListeners();\n if (restoreFocus) queueMicrotask(() => triggerRef?.focus());\n };\n const open = (focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled || !menuRef || menuRef.matches(\":popover-open\")) return;\n menuRef.showPopover();\n attachViewportListeners();\n place();\n queueMicrotask(() => {\n if (focus) focusMenuItem(menuRef, focus === \"first\" ? 0 : -1);\n });\n };\n const requestOpen = (next: boolean, focus: \"first\" | \"last\" | false = \"first\") => {\n if (props.disabled && next) return;\n if (props.open !== undefined) {\n props.onOpenChange?.(next);\n return;\n }\n if (next) open(focus);\n else close(false);\n };\n const handleMenuKeyDown = (event: KeyboardEvent) => {\n const items = actionableItems(menuRef);\n const current = items.indexOf(document.activeElement as HTMLElement);\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n focusMenuItem(menuRef, current + (event.key === \"ArrowDown\" ? 1 : -1));\n } else if (event.key === \"Home\" || event.key === \"End\") {\n event.preventDefault();\n focusMenuItem(menuRef, event.key === \"Home\" ? 0 : -1);\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n requestOpen(false);\n queueMicrotask(() => triggerRef?.focus());\n } else if (event.key === \"Tab\") {\n requestOpen(false);\n }\n };\n\n const context: DropdownContextValue = {\n disabled: () => Boolean(props.disabled),\n menuId,\n open: isOpen,\n registerTrigger: (element) => {\n triggerRef = element;\n },\n toggle: () => requestOpen(!isOpen()),\n triggerKeyDown: (event) => {\n if (![\"Enter\", \" \", \"ArrowDown\", \"ArrowUp\"].includes(event.key)) return;\n event.preventDefault();\n event.stopPropagation();\n if (isOpen()) {\n focusMenuItem(menuRef, event.key === \"ArrowUp\" ? -1 : 0);\n return;\n }\n requestOpen(true, event.key === \"ArrowUp\" ? \"last\" : \"first\");\n },\n };\n\n createEffect(() => {\n const controlled = props.open;\n if (!mounted || controlled === undefined || !menuRef) return;\n if (controlled && !menuRef.matches(\":popover-open\")) open(false);\n if (!controlled && menuRef.matches(\":popover-open\")) close(false);\n });\n createEffect(() => {\n if (mounted && props.disabled) close(false);\n });\n onMount(() => {\n mounted = true;\n if (props.open) open(false);\n onCleanup(detachViewportListeners);\n });\n\n return (\n <DropdownContext.Provider value={context}>\n <span class={`k2b-dropdown ${props.class ?? \"\"}`}>\n {props.children}\n <div\n ref={menuRef}\n id={menuId}\n popover=\"auto\"\n role=\"menu\"\n aria-label={props.label ?? messages().dropdownMenu}\n class={`k2b-dropdown__menu ${props.menuClass ?? \"\"}`}\n style={props.width ? { \"--k2b-dropdown-width\": props.width } : undefined}\n data-variant={props.variant ?? \"default\"}\n data-position={position()}\n onKeyDown={handleMenuKeyDown}\n onToggle={(event) => {\n const nextOpen = (event as ToggleEvent).newState === \"open\";\n const wasOpen = internalOpen();\n setInternalOpen(nextOpen);\n if (nextOpen) attachViewportListeners();\n else detachViewportListeners();\n if (props.open === undefined || props.open !== nextOpen) props.onOpenChange?.(nextOpen);\n if (wasOpen && !nextOpen) props.onClose?.();\n if (!nextOpen && props.open === true) queueMicrotask(() => props.open === true && open(false));\n }}\n >\n <DropdownItems items={props.items} close={close} />\n </div>\n </span>\n </DropdownContext.Provider>\n );\n}\n\ntype DropdownComponent = ((props: DropdownProps) => JSX.Element) & {\n Root: (props: DropdownProps) => JSX.Element;\n Trigger: (props: DropdownTriggerProps) => JSX.Element;\n Item: (props: DropdownItemProps) => JSX.Element;\n};\n\nexport const Dropdown = DropdownRoot as DropdownComponent;\nDropdown.Root = DropdownRoot;\nDropdown.Trigger = DropdownTrigger;\nDropdown.Item = DropdownItem;\n\nexport default Dropdown;\n"],"mappings":"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","ignoreList":[]}
@@ -76,6 +76,9 @@ export function FilterChip(props) {
76
76
  }];
77
77
  });
78
78
  return _$createComponent(Dropdown.Root, {
79
+ get disabled() {
80
+ return props.disabled;
81
+ },
79
82
  get items() {
80
83
  return items();
81
84
  },
@@ -88,9 +91,20 @@ export function FilterChip(props) {
88
91
  },
89
92
  get children() {
90
93
  return _$createComponent(Dropdown.Trigger, {
91
- appearance: "plain",
94
+ get appearance() {
95
+ return props.variant ? "button" : "plain";
96
+ },
97
+ get variant() {
98
+ return props.variant;
99
+ },
100
+ get iconOnly() {
101
+ return props.iconOnly;
102
+ },
103
+ get tooltip() {
104
+ return props.variant && props.iconOnly ? props.label : undefined;
105
+ },
92
106
  get ["class"]() {
93
- return `k2b-filter-chip ${props.class ?? ""}`;
107
+ return props.variant ? props.class : `k2b-filter-chip ${props.class ?? ""}`;
94
108
  },
95
109
  get ["data-state"]() {
96
110
  return active() ? "active" : "idle";
@@ -1 +1 @@
1
- {"version":3,"names":["createMemo","Show","useUiMessages","Dropdown","FilterChip","props","messages","selectedValues","Set","value","defaultValues","defaultValue","sectionByValue","sections","Map","section","options","option","set","hasDefault","length","selected","has","active","isActive","atDefault","current","every","emit","onValueChange","toggle","get","multiple","filter","entry","sectionValues","map","otherValues","reset","showReset","optionItems","result","items","action","checked","includes","choice","class","closeOnSelect","color","icon","undefined","label","push","sectionLabel","filterActions","clear","variant","_$createComponent","Root","position","width","children","Trigger","appearance","data-state","data-active","data-icon-only","iconOnly","title","_$ssr","_tmpl$","_$ssrAttribute","_$escape","when","_tmpl$2","_tmpl$3"],"sources":["actions/FilterChip.tsx"],"sourcesContent":["import { createMemo, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\nimport Dropdown, { type DropdownItem } from \"./Dropdown\";\n\nexport type FilterChipOption = {\n value: string;\n label: string;\n icon?: string;\n color?: string;\n};\n\nexport type FilterChipSection = {\n label?: string;\n options: readonly FilterChipOption[];\n multiple?: boolean;\n};\n\nexport type FilterChipProps = {\n label: string;\n icon: string;\n options: readonly FilterChipSection[];\n value: readonly string[];\n onValueChange: (value: string[]) => void;\n isActive?: boolean;\n position?: \"bottom-left\" | \"bottom-right\";\n defaultValue?: readonly string[];\n iconOnly?: boolean;\n class?: string;\n};\n\n/** Section-aware controlled filter with immediate single- and multi-select commits. */\nexport function FilterChip(props: FilterChipProps): JSX.Element {\n const messages = useUiMessages();\n const selectedValues = createMemo(() => new Set(props.value));\n const defaultValues = createMemo(() => new Set(props.defaultValue ?? []));\n const sectionByValue = createMemo(() => {\n const sections = new Map<string, FilterChipSection>();\n for (const section of props.options) {\n for (const option of section.options) sections.set(option.value, section);\n }\n return sections;\n });\n const hasDefault = () => (props.defaultValue?.length ?? 0) > 0;\n const selected = (value: string) => selectedValues().has(value);\n const active = () => props.isActive ?? props.value.length > 0;\n const atDefault = () => {\n if (!props.defaultValue) return false;\n const current = props.value;\n return current.length === props.defaultValue.length && current.every((value) => defaultValues().has(value));\n };\n const emit = (value: string[]) => props.onValueChange(value);\n const toggle = (value: string) => {\n const section = sectionByValue().get(value);\n if (!section) return;\n const current = props.value;\n if (section.multiple) {\n emit(selected(value) ? current.filter((entry) => entry !== value) : [...current, value]);\n return;\n }\n const sectionValues = new Set(section.options.map((option) => option.value));\n const otherValues = current.filter((entry) => !sectionValues.has(entry));\n emit(selected(value) ? otherValues : [...otherValues, value]);\n };\n const reset = () => emit(props.defaultValue ? [...props.defaultValue] : []);\n const showReset = () => (hasDefault() && !atDefault()) || (!hasDefault() && props.value.length > 0);\n const optionItems = createMemo<DropdownItem[]>(() => {\n const result: DropdownItem[] = [];\n for (const section of props.options) {\n const items = section.options.map((option) => ({\n action: () => toggle(option.value),\n checked: () => props.value.includes(option.value),\n choice: section.multiple ? (\"checkbox\" as const) : (\"radio\" as const),\n class: \"k2b-filter-chip__option\",\n closeOnSelect: false,\n color: option.color,\n icon: !section.multiple ? option.icon : undefined,\n label: option.label,\n }));\n if (section.label) result.push({ sectionLabel: section.label, items });\n else result.push(...items);\n }\n return result;\n });\n const items = createMemo<DropdownItem[]>(() => {\n if (!showReset()) return optionItems();\n return [\n ...optionItems(),\n {\n sectionLabel: messages().filterActions,\n items: [\n {\n action: reset,\n icon: hasDefault() ? \"ti ti-refresh\" : \"ti ti-x\",\n label: hasDefault() ? messages().reset : messages().clear,\n variant: \"danger\",\n },\n ],\n },\n ];\n });\n\n return (\n <Dropdown.Root items={items()} position={props.position ?? \"bottom-left\"} width=\"13rem\" label={props.label}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class={`k2b-filter-chip ${props.class ?? \"\"}`}\n data-state={active() ? \"active\" : \"idle\"}\n data-active={active() ? \"true\" : undefined}\n data-icon-only={props.iconOnly ? \"true\" : undefined}\n label={props.label}\n title={props.iconOnly ? props.label : undefined}\n >\n <i class={props.icon} aria-hidden=\"true\" />\n <Show when={!props.iconOnly}>\n <span>\n {props.label}\n <Show when={!hasDefault() && props.value.length > 0}>{` (${props.value.length})`}</Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-filter-chip__chevron\" aria-hidden=\"true\" />\n </Show>\n </Dropdown.Trigger>\n </Dropdown.Root>\n );\n}\n\nexport default FilterChip;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createMemo","Show","useUiMessages","Dropdown","FilterChip","props","messages","selectedValues","Set","value","defaultValues","defaultValue","sectionByValue","sections","Map","section","options","option","set","hasDefault","length","selected","has","active","isActive","atDefault","current","every","emit","onValueChange","toggle","get","multiple","filter","entry","sectionValues","map","otherValues","reset","showReset","optionItems","result","items","action","checked","includes","choice","class","closeOnSelect","color","icon","undefined","label","push","sectionLabel","filterActions","clear","variant","_$createComponent","Root","disabled","position","width","children","Trigger","appearance","iconOnly","tooltip","data-state","data-active","data-icon-only","title","_$ssr","_tmpl$","_$ssrAttribute","_$escape","when","_tmpl$2","_tmpl$3"],"sources":["actions/FilterChip.tsx"],"sourcesContent":["import { createMemo, type JSX, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ButtonVariant } from \"./Button\";\nimport Dropdown, { type DropdownItem } from \"./Dropdown\";\n\nexport type FilterChipOption = {\n value: string;\n label: string;\n icon?: string;\n color?: string;\n};\n\nexport type FilterChipSection = {\n label?: string;\n options: readonly FilterChipOption[];\n multiple?: boolean;\n};\n\nexport type FilterChipProps = {\n label: string;\n icon: string;\n options: readonly FilterChipSection[];\n value: readonly string[];\n onValueChange: (value: string[]) => void;\n isActive?: boolean;\n position?: \"bottom-left\" | \"bottom-right\";\n defaultValue?: readonly string[];\n iconOnly?: boolean;\n /** Use a standard button appearance instead of the default filter field. */\n variant?: ButtonVariant;\n disabled?: boolean;\n class?: string;\n};\n\n/** Section-aware controlled filter with immediate single- and multi-select commits. */\nexport function FilterChip(props: FilterChipProps): JSX.Element {\n const messages = useUiMessages();\n const selectedValues = createMemo(() => new Set(props.value));\n const defaultValues = createMemo(() => new Set(props.defaultValue ?? []));\n const sectionByValue = createMemo(() => {\n const sections = new Map<string, FilterChipSection>();\n for (const section of props.options) {\n for (const option of section.options) sections.set(option.value, section);\n }\n return sections;\n });\n const hasDefault = () => (props.defaultValue?.length ?? 0) > 0;\n const selected = (value: string) => selectedValues().has(value);\n const active = () => props.isActive ?? props.value.length > 0;\n const atDefault = () => {\n if (!props.defaultValue) return false;\n const current = props.value;\n return current.length === props.defaultValue.length && current.every((value) => defaultValues().has(value));\n };\n const emit = (value: string[]) => props.onValueChange(value);\n const toggle = (value: string) => {\n const section = sectionByValue().get(value);\n if (!section) return;\n const current = props.value;\n if (section.multiple) {\n emit(selected(value) ? current.filter((entry) => entry !== value) : [...current, value]);\n return;\n }\n const sectionValues = new Set(section.options.map((option) => option.value));\n const otherValues = current.filter((entry) => !sectionValues.has(entry));\n emit(selected(value) ? otherValues : [...otherValues, value]);\n };\n const reset = () => emit(props.defaultValue ? [...props.defaultValue] : []);\n const showReset = () => (hasDefault() && !atDefault()) || (!hasDefault() && props.value.length > 0);\n const optionItems = createMemo<DropdownItem[]>(() => {\n const result: DropdownItem[] = [];\n for (const section of props.options) {\n const items = section.options.map((option) => ({\n action: () => toggle(option.value),\n checked: () => props.value.includes(option.value),\n choice: section.multiple ? (\"checkbox\" as const) : (\"radio\" as const),\n class: \"k2b-filter-chip__option\",\n closeOnSelect: false,\n color: option.color,\n icon: !section.multiple ? option.icon : undefined,\n label: option.label,\n }));\n if (section.label) result.push({ sectionLabel: section.label, items });\n else result.push(...items);\n }\n return result;\n });\n const items = createMemo<DropdownItem[]>(() => {\n if (!showReset()) return optionItems();\n return [\n ...optionItems(),\n {\n sectionLabel: messages().filterActions,\n items: [\n {\n action: reset,\n icon: hasDefault() ? \"ti ti-refresh\" : \"ti ti-x\",\n label: hasDefault() ? messages().reset : messages().clear,\n variant: \"danger\",\n },\n ],\n },\n ];\n });\n\n return (\n <Dropdown.Root disabled={props.disabled} items={items()} position={props.position ?? \"bottom-left\"} width=\"13rem\" label={props.label}>\n <Dropdown.Trigger\n appearance={props.variant ? \"button\" : \"plain\"}\n variant={props.variant}\n iconOnly={props.iconOnly}\n tooltip={props.variant && props.iconOnly ? props.label : undefined}\n class={props.variant ? props.class : `k2b-filter-chip ${props.class ?? \"\"}`}\n data-state={active() ? \"active\" : \"idle\"}\n data-active={active() ? \"true\" : undefined}\n data-icon-only={props.iconOnly ? \"true\" : undefined}\n label={props.label}\n title={props.iconOnly ? props.label : undefined}\n >\n <i class={props.icon} aria-hidden=\"true\" />\n <Show when={!props.iconOnly}>\n <span>\n {props.label}\n <Show when={!hasDefault() && props.value.length > 0}>{` (${props.value.length})`}</Show>\n </span>\n <i class=\"ti ti-chevron-down k2b-filter-chip__chevron\" aria-hidden=\"true\" />\n </Show>\n </Dropdown.Trigger>\n </Dropdown.Root>\n );\n}\n\nexport default FilterChip;\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,13 @@
1
1
  import { ssr as _$ssr } from "solid-js/web";
2
- import { createComponent as _$createComponent } from "solid-js/web";
3
2
  import { mergeProps as _$mergeProps } from "solid-js/web";
3
+ import { createComponent as _$createComponent } from "solid-js/web";
4
4
  var _tmpl$ = "<i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i>";
5
- import { splitProps } from "solid-js";
5
+ import { Show, splitProps } from "solid-js";
6
6
  import { Button } from "./Button";
7
7
  import { Dropdown } from "./Dropdown";
8
8
  /** One primary button action with a separate menu of related alternatives. */
9
9
  export function SplitButton(props) {
10
- const [local, buttonProps] = splitProps(props, ["children", "class", "disabled", "items", "loading", "menuLabel", "menuPosition", "menuWidth", "size", "variant"]);
10
+ const [local, buttonProps] = splitProps(props, ["children", "primaryItems", "primaryMenuLabel", "menuIcon", "class", "disabled", "items", "loading", "menuLabel", "menuPosition", "menuWidth", "size", "variant"]);
11
11
  const disabled = () => Boolean(local.disabled || local.loading);
12
12
  return _$createComponent(Dropdown.Root, {
13
13
  "class": "k2b-split-button",
@@ -27,26 +27,73 @@ export function SplitButton(props) {
27
27
  return local.menuWidth;
28
28
  },
29
29
  get children() {
30
- return [_$createComponent(Button, _$mergeProps(buttonProps, {
31
- get ["class"]() {
32
- return `k2b-split-button__primary ${local.class ?? ""}`;
33
- },
34
- get disabled() {
35
- return local.disabled;
36
- },
37
- get loading() {
38
- return local.loading;
39
- },
40
- get size() {
41
- return local.size;
30
+ return [_$createComponent(Show, {
31
+ get when() {
32
+ return local.primaryItems;
42
33
  },
43
- get variant() {
44
- return local.variant ?? "primary";
34
+ get fallback() {
35
+ return _$createComponent(Button, _$mergeProps(buttonProps, {
36
+ get ["class"]() {
37
+ return `k2b-split-button__primary ${local.class ?? ""}`;
38
+ },
39
+ get disabled() {
40
+ return local.disabled;
41
+ },
42
+ get loading() {
43
+ return local.loading;
44
+ },
45
+ get size() {
46
+ return local.size;
47
+ },
48
+ get variant() {
49
+ return local.variant ?? "primary";
50
+ },
51
+ get children() {
52
+ return local.children;
53
+ }
54
+ }));
45
55
  },
46
- get children() {
47
- return local.children;
48
- }
49
- })), _$createComponent(Dropdown.Trigger, {
56
+ children: items => _$createComponent(Dropdown.Root, {
57
+ get items() {
58
+ return items();
59
+ },
60
+ get disabled() {
61
+ return disabled();
62
+ },
63
+ "class": "k2b-split-button__primary-menu",
64
+ get position() {
65
+ return local.menuPosition ?? "bottom-left";
66
+ },
67
+ get width() {
68
+ return local.menuWidth;
69
+ },
70
+ get children() {
71
+ return _$createComponent(Dropdown.Trigger, {
72
+ get wrap() {
73
+ return buttonProps.wrap;
74
+ },
75
+ get disabled() {
76
+ return disabled();
77
+ },
78
+ get size() {
79
+ return local.size;
80
+ },
81
+ get variant() {
82
+ return local.variant ?? "primary";
83
+ },
84
+ get label() {
85
+ return local.primaryMenuLabel;
86
+ },
87
+ get ["class"]() {
88
+ return `k2b-split-button__primary ${local.class ?? ""}`;
89
+ },
90
+ get children() {
91
+ return local.children;
92
+ }
93
+ });
94
+ }
95
+ })
96
+ }), _$createComponent(Dropdown.Trigger, {
50
97
  "class": "k2b-split-button__menu-trigger",
51
98
  get disabled() {
52
99
  return disabled();
@@ -65,7 +112,7 @@ export function SplitButton(props) {
65
112
  return local.variant ?? "primary";
66
113
  },
67
114
  get children() {
68
- return _$ssr(_tmpl$);
115
+ return local.menuIcon ?? _$ssr(_tmpl$);
69
116
  }
70
117
  })];
71
118
  }