@cloudflare/kumo 1.18.0 → 2.0.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 (330) hide show
  1. package/CHANGELOG.md +329 -0
  2. package/ai/component-registry.json +907 -159
  3. package/ai/component-registry.md +1929 -598
  4. package/ai/schemas.ts +58 -14
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +206 -27
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +2003 -1948
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js +430 -0
  11. package/dist/chunks/Legend-ibjxhfm9pn2vrb6f.js.map +1 -0
  12. package/dist/chunks/autocomplete-cs3fwy6lwzlyirpq.js +174 -0
  13. package/dist/chunks/autocomplete-cs3fwy6lwzlyirpq.js.map +1 -0
  14. package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js → breadcrumbs-cxcwf2l1ki3ffg5d.js} +2 -2
  15. package/dist/chunks/{breadcrumbs-k39s28qx05vbxxth.js.map → breadcrumbs-cxcwf2l1ki3ffg5d.js.map} +1 -1
  16. package/dist/chunks/{button-cdxnqcgzwko8ooha.js → button-6by9ntsa3nj553mq.js} +18 -19
  17. package/dist/chunks/button-6by9ntsa3nj553mq.js.map +1 -0
  18. package/dist/chunks/checkbox-eren6w2csum1xghg.js +210 -0
  19. package/dist/chunks/checkbox-eren6w2csum1xghg.js.map +1 -0
  20. package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js → clipboard-text-f9q753udny1uyxr5.js} +47 -43
  21. package/dist/chunks/{clipboard-text-vcbvmtne4zjk4b18.js.map → clipboard-text-f9q753udny1uyxr5.js.map} +1 -1
  22. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js → cloudflare-logo-pbavoe1wu8nr5c4n.js} +9 -9
  23. package/dist/chunks/{cloudflare-logo-bgts2jgsdh7sslw4.js.map → cloudflare-logo-pbavoe1wu8nr5c4n.js.map} +1 -1
  24. package/dist/chunks/collapsible-k8urhi16pg90jvxa.js +71 -0
  25. package/dist/chunks/collapsible-k8urhi16pg90jvxa.js.map +1 -0
  26. package/dist/chunks/{combobox-he2hd9e2ruknq5mp.js → combobox-n9qht9h9ag6kh5sn.js} +142 -118
  27. package/dist/chunks/combobox-n9qht9h9ag6kh5sn.js.map +1 -0
  28. package/dist/chunks/{command-palette-jc1w07jwakxvj23a.js → command-palette-gk9m34ymp2b3hfc5.js} +130 -130
  29. package/dist/chunks/command-palette-gk9m34ymp2b3hfc5.js.map +1 -0
  30. package/dist/chunks/{date-range-picker-j318zxjyqz4o3dak.js → date-range-picker-c9wnx9tbwohai7jy.js} +26 -26
  31. package/dist/chunks/{date-range-picker-j318zxjyqz4o3dak.js.map → date-range-picker-c9wnx9tbwohai7jy.js.map} +1 -1
  32. package/dist/chunks/{dialog-oqh8l3l3zutpibxx.js → dialog-94v7wiz7j3in6528.js} +25 -25
  33. package/dist/chunks/dialog-94v7wiz7j3in6528.js.map +1 -0
  34. package/dist/chunks/dropdown-zbax0zowy6m9zhmt.js +302 -0
  35. package/dist/chunks/dropdown-zbax0zowy6m9zhmt.js.map +1 -0
  36. package/dist/chunks/{empty-cj898km1r8xwuw44.js → empty-kpymw59thjf2ip8g.js} +9 -9
  37. package/dist/chunks/{empty-cj898km1r8xwuw44.js.map → empty-kpymw59thjf2ip8g.js.map} +1 -1
  38. package/dist/chunks/{field-krp6z6vfbkrvufz2.js → field-lnj619xpe8zjd26r.js} +7 -7
  39. package/dist/chunks/{field-krp6z6vfbkrvufz2.js.map → field-lnj619xpe8zjd26r.js.map} +1 -1
  40. package/dist/chunks/{grid-m9r71jxo2b8q1972.js → grid-hj1ylz16p7g5uelh.js} +2 -2
  41. package/dist/chunks/{grid-m9r71jxo2b8q1972.js.map → grid-hj1ylz16p7g5uelh.js.map} +1 -1
  42. package/dist/chunks/{input-area-no30c09udyjxshu5.js → input-area-h8xbqturegdfm1mi.js} +4 -4
  43. package/dist/chunks/{input-area-no30c09udyjxshu5.js.map → input-area-h8xbqturegdfm1mi.js.map} +1 -1
  44. package/dist/chunks/input-group-dh4pg8p20rh4mdi0.js +505 -0
  45. package/dist/chunks/input-group-dh4pg8p20rh4mdi0.js.map +1 -0
  46. package/dist/chunks/{input-h48k3uagzrgb98au.js → input-lpa5fc75tgrraafv.js} +45 -45
  47. package/dist/chunks/input-lpa5fc75tgrraafv.js.map +1 -0
  48. package/dist/chunks/label-be8m7qzlakzig2sl.js +68 -0
  49. package/dist/chunks/{label-latndvb1ngem7we8.js.map → label-be8m7qzlakzig2sl.js.map} +1 -1
  50. package/dist/chunks/layer-card-hvivdirwwnyq88wa.js +46 -0
  51. package/dist/chunks/layer-card-hvivdirwwnyq88wa.js.map +1 -0
  52. package/dist/chunks/{link-hn5ejal7nhh0o0b4.js → link-kt74pxkud4olmcer.js} +4 -4
  53. package/dist/chunks/{link-hn5ejal7nhh0o0b4.js.map → link-kt74pxkud4olmcer.js.map} +1 -1
  54. package/dist/chunks/menubar-hwev159bm4rw9ixk.js +96 -0
  55. package/dist/chunks/menubar-hwev159bm4rw9ixk.js.map +1 -0
  56. package/dist/chunks/{meter-gfa1hz9fhjnvx784.js → meter-bqetlujwg8gm2u7m.js} +2 -2
  57. package/dist/chunks/{meter-gfa1hz9fhjnvx784.js.map → meter-bqetlujwg8gm2u7m.js.map} +1 -1
  58. package/dist/chunks/pagination-ho8zesqfyp6ckmrl.js +266 -0
  59. package/dist/chunks/pagination-ho8zesqfyp6ckmrl.js.map +1 -0
  60. package/dist/chunks/{popover-h300w4vit0s2ayej.js → popover-iayd9ya5yhujz6ve.js} +69 -73
  61. package/dist/chunks/popover-iayd9ya5yhujz6ve.js.map +1 -0
  62. package/dist/chunks/{radio-jouttv89lbvhs55r.js → radio-datzh3pilz8ojak1.js} +87 -75
  63. package/dist/chunks/radio-datzh3pilz8ojak1.js.map +1 -0
  64. package/dist/chunks/select-kpfbib9l8xrrmzpz.js +215 -0
  65. package/dist/chunks/select-kpfbib9l8xrrmzpz.js.map +1 -0
  66. package/dist/chunks/{sensitive-input-hd4tpqkzifad1yca.js → sensitive-input-i1upqytzaw2pus8v.js} +42 -42
  67. package/dist/chunks/sensitive-input-i1upqytzaw2pus8v.js.map +1 -0
  68. package/dist/chunks/{sidebar-hljy3ssm8itc0ucx.js → sidebar-kh37grvfxto14ek6.js} +146 -147
  69. package/dist/chunks/sidebar-kh37grvfxto14ek6.js.map +1 -0
  70. package/dist/chunks/surface-o63tktyrifcjejyb.js +29 -0
  71. package/dist/chunks/surface-o63tktyrifcjejyb.js.map +1 -0
  72. package/dist/chunks/{switch-ihaydbzem62bey4p.js → switch-lclhiplr9zqf73tj.js} +89 -81
  73. package/dist/chunks/switch-lclhiplr9zqf73tj.js.map +1 -0
  74. package/dist/chunks/table-fyy8gl875yyevqs3.js +207 -0
  75. package/dist/chunks/table-fyy8gl875yyevqs3.js.map +1 -0
  76. package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js +102 -0
  77. package/dist/chunks/table-of-contents-fzyv7uhnnyr13dqu.js.map +1 -0
  78. package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js → tabs-jywwt8ebjqjkux75.js} +21 -21
  79. package/dist/chunks/{tabs-e7eh7l3mpk3xgmwq.js.map → tabs-jywwt8ebjqjkux75.js.map} +1 -1
  80. package/dist/chunks/{text-nmyi1rkwdj37f30f.js → text-f7t467waymhb30sx.js} +8 -8
  81. package/dist/chunks/text-f7t467waymhb30sx.js.map +1 -0
  82. package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js → toast-h573o0tc7tefivk2.js} +12 -12
  83. package/dist/chunks/{toast-bpz6iaq54u9jmuu8.js.map → toast-h573o0tc7tefivk2.js.map} +1 -1
  84. package/dist/chunks/{tooltip-belkznz8t8333h5f.js → tooltip-odudhkxe282wxinq.js} +38 -37
  85. package/dist/chunks/tooltip-odudhkxe282wxinq.js.map +1 -0
  86. package/dist/chunks/vendor-base-ui-ie71jahf0czyf58j.js +24638 -0
  87. package/dist/chunks/vendor-base-ui-ie71jahf0czyf58j.js.map +1 -0
  88. package/dist/chunks/vendor-floating-ui-dwag5e88viikh2zs.js +1311 -0
  89. package/dist/chunks/vendor-floating-ui-dwag5e88viikh2zs.js.map +1 -0
  90. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js +534 -0
  91. package/dist/chunks/vendor-utils-ixnhxmehwihk5tr7.js.map +1 -0
  92. package/dist/code.js +1 -1
  93. package/dist/components/autocomplete.js +9 -0
  94. package/dist/components/autocomplete.js.map +1 -0
  95. package/dist/components/breadcrumbs.js +1 -1
  96. package/dist/components/button.js +1 -1
  97. package/dist/components/chart.js +1 -1
  98. package/dist/components/checkbox.js +1 -1
  99. package/dist/components/clipboard-text.js +1 -1
  100. package/dist/components/cloudflare-logo.js +1 -1
  101. package/dist/components/collapsible.js +1 -1
  102. package/dist/components/combobox.js +1 -1
  103. package/dist/components/command-palette.js +1 -1
  104. package/dist/components/date-range-picker.js +1 -1
  105. package/dist/components/dialog.js +1 -1
  106. package/dist/components/dropdown.js +1 -1
  107. package/dist/components/empty.js +1 -1
  108. package/dist/components/field.js +1 -1
  109. package/dist/components/flow.js +2 -2
  110. package/dist/components/flow.js.map +1 -1
  111. package/dist/components/grid.js +1 -1
  112. package/dist/components/input-group.js +8 -0
  113. package/dist/components/input-group.js.map +1 -0
  114. package/dist/components/input.js +9 -7
  115. package/dist/components/label.js +1 -1
  116. package/dist/components/layer-card.js +1 -1
  117. package/dist/components/link.js +1 -1
  118. package/dist/components/menubar.js +1 -1
  119. package/dist/components/meter.js +1 -1
  120. package/dist/components/pagination.js +1 -1
  121. package/dist/components/popover.js +1 -1
  122. package/dist/components/radio.js +1 -1
  123. package/dist/components/select.js +1 -1
  124. package/dist/components/sensitive-input.js +1 -1
  125. package/dist/components/sidebar.js +1 -1
  126. package/dist/components/surface.js +1 -1
  127. package/dist/components/switch.js +1 -1
  128. package/dist/components/table-of-contents.js +8 -0
  129. package/dist/components/table-of-contents.js.map +1 -0
  130. package/dist/components/table.js +1 -1
  131. package/dist/components/tabs.js +1 -1
  132. package/dist/components/text.js +1 -1
  133. package/dist/components/toast.js +2 -2
  134. package/dist/components/tooltip.js +1 -1
  135. package/dist/index.js +148 -139
  136. package/dist/index.js.map +1 -1
  137. package/dist/primitives/accordion.js +1 -1
  138. package/dist/primitives/alert-dialog.js +1 -1
  139. package/dist/primitives/autocomplete.js +1 -1
  140. package/dist/primitives/avatar.js +1 -1
  141. package/dist/primitives/button.js +1 -1
  142. package/dist/primitives/checkbox-group.js +1 -1
  143. package/dist/primitives/checkbox.js +1 -1
  144. package/dist/primitives/collapsible.js +1 -1
  145. package/dist/primitives/combobox.js +1 -1
  146. package/dist/primitives/context-menu.js +1 -1
  147. package/dist/primitives/csp-provider.js +1 -1
  148. package/dist/primitives/dialog.js +1 -1
  149. package/dist/primitives/direction-provider.js +1 -1
  150. package/dist/primitives/drawer.js +2 -2
  151. package/dist/primitives/field.js +1 -1
  152. package/dist/primitives/fieldset.js +1 -1
  153. package/dist/primitives/form.js +1 -1
  154. package/dist/primitives/input.js +1 -1
  155. package/dist/primitives/menu.js +1 -1
  156. package/dist/primitives/menubar.js +1 -1
  157. package/dist/primitives/meter.js +1 -1
  158. package/dist/primitives/navigation-menu.js +1 -1
  159. package/dist/primitives/number-field.js +1 -1
  160. package/dist/primitives/otp-field.js +6 -0
  161. package/dist/primitives/otp-field.js.map +1 -0
  162. package/dist/primitives/popover.js +1 -1
  163. package/dist/primitives/preview-card.js +2 -2
  164. package/dist/primitives/progress.js +1 -1
  165. package/dist/primitives/radio-group.js +1 -1
  166. package/dist/primitives/radio.js +1 -1
  167. package/dist/primitives/scroll-area.js +1 -1
  168. package/dist/primitives/select.js +1 -1
  169. package/dist/primitives/separator.js +1 -1
  170. package/dist/primitives/slider.js +1 -1
  171. package/dist/primitives/switch.js +1 -1
  172. package/dist/primitives/tabs.js +1 -1
  173. package/dist/primitives/toast.js +1 -1
  174. package/dist/primitives/toggle-group.js +1 -1
  175. package/dist/primitives/toggle.js +1 -1
  176. package/dist/primitives/toolbar.js +1 -1
  177. package/dist/primitives/tooltip.js +1 -1
  178. package/dist/primitives.js +22 -21
  179. package/dist/scripts/theme-generator/config.d.ts.map +1 -1
  180. package/dist/scripts/theme-generator/config.js +13 -3
  181. package/dist/scripts/theme-generator/config.js.map +1 -1
  182. package/dist/src/components/autocomplete/autocomplete.d.ts +180 -0
  183. package/dist/src/components/autocomplete/autocomplete.d.ts.map +1 -0
  184. package/dist/src/components/autocomplete/index.d.ts +2 -0
  185. package/dist/src/components/autocomplete/index.d.ts.map +1 -0
  186. package/dist/src/components/button/button.d.ts +3 -3
  187. package/dist/src/components/button/button.d.ts.map +1 -1
  188. package/dist/src/components/chart/Color.d.ts +36 -52
  189. package/dist/src/components/chart/Color.d.ts.map +1 -1
  190. package/dist/src/components/chart/EChart.d.ts +18 -2
  191. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  192. package/dist/src/components/chart/TimeseriesChart.d.ts.map +1 -1
  193. package/dist/src/components/chart/index.d.ts +1 -1
  194. package/dist/src/components/chart/index.d.ts.map +1 -1
  195. package/dist/src/components/checkbox/checkbox.d.ts +37 -14
  196. package/dist/src/components/checkbox/checkbox.d.ts.map +1 -1
  197. package/dist/src/components/checkbox/index.d.ts +1 -1
  198. package/dist/src/components/checkbox/index.d.ts.map +1 -1
  199. package/dist/src/components/clipboard-text/clipboard-text.d.ts.map +1 -1
  200. package/dist/src/components/collapsible/collapsible.d.ts +77 -40
  201. package/dist/src/components/collapsible/collapsible.d.ts.map +1 -1
  202. package/dist/src/components/collapsible/index.d.ts +1 -1
  203. package/dist/src/components/collapsible/index.d.ts.map +1 -1
  204. package/dist/src/components/combobox/combobox.d.ts +19 -3
  205. package/dist/src/components/combobox/combobox.d.ts.map +1 -1
  206. package/dist/src/components/command-palette/command-palette.d.ts +2 -11
  207. package/dist/src/components/command-palette/command-palette.d.ts.map +1 -1
  208. package/dist/src/components/command-palette/index.d.ts +1 -1
  209. package/dist/src/components/command-palette/index.d.ts.map +1 -1
  210. package/dist/src/components/command-palette/types.d.ts +13 -1
  211. package/dist/src/components/command-palette/types.d.ts.map +1 -1
  212. package/dist/src/components/dropdown/dropdown.d.ts.map +1 -1
  213. package/dist/src/components/input/index.d.ts +16 -1
  214. package/dist/src/components/input/index.d.ts.map +1 -1
  215. package/dist/src/components/input/input.d.ts +2 -2
  216. package/dist/src/components/input/input.d.ts.map +1 -1
  217. package/dist/src/components/input-group/context.d.ts +96 -0
  218. package/dist/src/components/input-group/context.d.ts.map +1 -0
  219. package/dist/src/components/input-group/index.d.ts +2 -0
  220. package/dist/src/components/input-group/index.d.ts.map +1 -0
  221. package/dist/src/components/input-group/input-group-addon.d.ts +15 -0
  222. package/dist/src/components/input-group/input-group-addon.d.ts.map +1 -0
  223. package/dist/src/components/input-group/input-group-button.d.ts +36 -0
  224. package/dist/src/components/input-group/input-group-button.d.ts.map +1 -0
  225. package/dist/src/components/input-group/input-group-input.d.ts +9 -0
  226. package/dist/src/components/input-group/input-group-input.d.ts.map +1 -0
  227. package/dist/src/components/input-group/input-group-suffix.d.ts +13 -0
  228. package/dist/src/components/input-group/input-group-suffix.d.ts.map +1 -0
  229. package/dist/src/components/input-group/input-group.d.ts +43 -0
  230. package/dist/src/components/input-group/input-group.d.ts.map +1 -0
  231. package/dist/src/components/label/label.d.ts.map +1 -1
  232. package/dist/src/components/layer-card/layer-card.d.ts +39 -5
  233. package/dist/src/components/layer-card/layer-card.d.ts.map +1 -1
  234. package/dist/src/components/menubar/menubar.d.ts.map +1 -1
  235. package/dist/src/components/pagination/pagination.d.ts +51 -1
  236. package/dist/src/components/pagination/pagination.d.ts.map +1 -1
  237. package/dist/src/components/popover/popover.d.ts +35 -8
  238. package/dist/src/components/popover/popover.d.ts.map +1 -1
  239. package/dist/src/components/radio/index.d.ts +1 -1
  240. package/dist/src/components/radio/index.d.ts.map +1 -1
  241. package/dist/src/components/radio/radio.d.ts +44 -8
  242. package/dist/src/components/radio/radio.d.ts.map +1 -1
  243. package/dist/src/components/select/select.d.ts +52 -8
  244. package/dist/src/components/select/select.d.ts.map +1 -1
  245. package/dist/src/components/sensitive-input/sensitive-input.d.ts +2 -2
  246. package/dist/src/components/sidebar/sidebar.d.ts +2 -2
  247. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  248. package/dist/src/components/surface/index.d.ts +3 -0
  249. package/dist/src/components/surface/index.d.ts.map +1 -1
  250. package/dist/src/components/surface/surface.d.ts +14 -10
  251. package/dist/src/components/surface/surface.d.ts.map +1 -1
  252. package/dist/src/components/switch/index.d.ts +1 -1
  253. package/dist/src/components/switch/index.d.ts.map +1 -1
  254. package/dist/src/components/switch/switch.d.ts +31 -3
  255. package/dist/src/components/switch/switch.d.ts.map +1 -1
  256. package/dist/src/components/table/table.d.ts +17 -2
  257. package/dist/src/components/table/table.d.ts.map +1 -1
  258. package/dist/src/components/table-of-contents/index.d.ts +2 -0
  259. package/dist/src/components/table-of-contents/index.d.ts.map +1 -0
  260. package/dist/src/components/table-of-contents/table-of-contents.d.ts +72 -0
  261. package/dist/src/components/table-of-contents/table-of-contents.d.ts.map +1 -0
  262. package/dist/src/components/text/text.d.ts +34 -6
  263. package/dist/src/components/text/text.d.ts.map +1 -1
  264. package/dist/src/components/text/text.type-spec.d.ts +44 -0
  265. package/dist/src/components/text/text.type-spec.d.ts.map +1 -0
  266. package/dist/src/components/toast/toast.d.ts +1 -1
  267. package/dist/src/components/toast/toast.d.ts.map +1 -1
  268. package/dist/src/components/tooltip/tooltip.d.ts +15 -6
  269. package/dist/src/components/tooltip/tooltip.d.ts.map +1 -1
  270. package/dist/src/index.d.ts +14 -8
  271. package/dist/src/index.d.ts.map +1 -1
  272. package/dist/src/primitives/index.d.ts +1 -0
  273. package/dist/src/primitives/index.d.ts.map +1 -1
  274. package/dist/src/primitives/otp-field.d.ts +13 -0
  275. package/dist/src/primitives/otp-field.d.ts.map +1 -0
  276. package/dist/styles/kumo-binding.css +19 -0
  277. package/dist/styles/kumo-standalone.css +1 -1
  278. package/dist/styles/kumo.css +2 -2
  279. package/dist/styles/theme-kumo.css +13 -6
  280. package/package.json +18 -2
  281. package/scripts/component-registry/discovery.ts +1 -0
  282. package/scripts/component-registry/index.test.ts +265 -0
  283. package/scripts/component-registry/index.ts +14 -0
  284. package/scripts/component-registry/metadata.ts +55 -7
  285. package/scripts/component-registry/sub-components.ts +81 -50
  286. package/scripts/component-registry/types.ts +2 -0
  287. package/scripts/theme-generator/config.ts +18 -6
  288. package/dist/chunks/Legend-o0ntojbaplmszwk0.js +0 -421
  289. package/dist/chunks/Legend-o0ntojbaplmszwk0.js.map +0 -1
  290. package/dist/chunks/button-cdxnqcgzwko8ooha.js.map +0 -1
  291. package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js +0 -211
  292. package/dist/chunks/checkbox-kt1uojk2f9e0d0h1.js.map +0 -1
  293. package/dist/chunks/collapsible-jhzee3ks51d3xowb.js +0 -58
  294. package/dist/chunks/collapsible-jhzee3ks51d3xowb.js.map +0 -1
  295. package/dist/chunks/combobox-he2hd9e2ruknq5mp.js.map +0 -1
  296. package/dist/chunks/command-palette-jc1w07jwakxvj23a.js.map +0 -1
  297. package/dist/chunks/dialog-oqh8l3l3zutpibxx.js.map +0 -1
  298. package/dist/chunks/dropdown-ncwhcd912vmone8k.js +0 -300
  299. package/dist/chunks/dropdown-ncwhcd912vmone8k.js.map +0 -1
  300. package/dist/chunks/input-group-lxdd09p60cf27pe1.js +0 -111
  301. package/dist/chunks/input-group-lxdd09p60cf27pe1.js.map +0 -1
  302. package/dist/chunks/input-h48k3uagzrgb98au.js.map +0 -1
  303. package/dist/chunks/label-latndvb1ngem7we8.js +0 -62
  304. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js +0 -44
  305. package/dist/chunks/layer-card-l5yjvrxry1dhte57.js.map +0 -1
  306. package/dist/chunks/menubar-f1pilzooe5mue7c4.js +0 -92
  307. package/dist/chunks/menubar-f1pilzooe5mue7c4.js.map +0 -1
  308. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js +0 -243
  309. package/dist/chunks/pagination-cu5lm6p5dxuycta4.js.map +0 -1
  310. package/dist/chunks/popover-h300w4vit0s2ayej.js.map +0 -1
  311. package/dist/chunks/radio-jouttv89lbvhs55r.js.map +0 -1
  312. package/dist/chunks/select-kva5ru5f673kah1m.js +0 -179
  313. package/dist/chunks/select-kva5ru5f673kah1m.js.map +0 -1
  314. package/dist/chunks/sensitive-input-hd4tpqkzifad1yca.js.map +0 -1
  315. package/dist/chunks/sidebar-hljy3ssm8itc0ucx.js.map +0 -1
  316. package/dist/chunks/surface-cilvbyhmyujz1bee.js +0 -36
  317. package/dist/chunks/surface-cilvbyhmyujz1bee.js.map +0 -1
  318. package/dist/chunks/switch-ihaydbzem62bey4p.js.map +0 -1
  319. package/dist/chunks/table-inweecadl3her7pd.js +0 -183
  320. package/dist/chunks/table-inweecadl3her7pd.js.map +0 -1
  321. package/dist/chunks/text-nmyi1rkwdj37f30f.js.map +0 -1
  322. package/dist/chunks/tooltip-belkznz8t8333h5f.js.map +0 -1
  323. package/dist/chunks/vendor-base-ui-k7bzesq81ie36nya.js +0 -22813
  324. package/dist/chunks/vendor-base-ui-k7bzesq81ie36nya.js.map +0 -1
  325. package/dist/chunks/vendor-floating-ui-gr9m6tsa1cpqwn99.js +0 -1286
  326. package/dist/chunks/vendor-floating-ui-gr9m6tsa1cpqwn99.js.map +0 -1
  327. package/dist/chunks/vendor-utils-fxk97j6xi1g42z2v.js +0 -740
  328. package/dist/chunks/vendor-utils-fxk97j6xi1g42z2v.js.map +0 -1
  329. package/dist/src/components/input/input-group.d.ts +0 -39
  330. package/dist/src/components/input/input-group.d.ts.map +0 -1
@@ -1,18 +1,18 @@
1
1
  "use client";
2
- import { jsx as e, jsxs as g, Fragment as E } from "react/jsx-runtime";
3
- import { forwardRef as K, useContext as N, createContext as v, useCallback as b, useRef as T } from "react";
2
+ import { jsx as t, jsxs as g, Fragment as E } from "react/jsx-runtime";
3
+ import { forwardRef as K, useContext as N, createContext as w, useCallback as b, useRef as T } from "react";
4
4
  import { CaretRightIcon as M, ArrowSquareOutIcon as H, ArrowRightIcon as _, MagnifyingGlassIcon as F } from "@phosphor-icons/react";
5
- import { S as G } from "./surface-cilvbyhmyujz1bee.js";
5
+ import { L as G } from "./layer-card-hvivdirwwnyq88wa.js";
6
6
  import { L as j } from "./loader-hr2w7cpqeev3p3vl.js";
7
7
  import { c as m } from "./cn-ct4n7r74mh8y0f48.js";
8
8
  import { u as U } from "./portal-provider-hwmkdmkpvct0cb76.js";
9
- import { a5 as O, a7 as V, aa as $, ac as w, a9 as q, a8 as z, ab as B, bp as S, ap as J, au as Q, av as W, aw as X } from "./vendor-base-ui-k7bzesq81ie36nya.js";
10
- const C = v({});
9
+ import { a6 as q, a8 as O, ab as V, bt as v, aa as $, a9 as z, ac as B, bu as J, aq as Q, av as W, aw as X, ax as Y } from "./vendor-base-ui-ie71jahf0czyf58j.js";
10
+ const C = w({});
11
11
  function I({
12
- open: t,
12
+ open: e,
13
13
  onOpenChange: n,
14
14
  onBackdropClick: o,
15
- children: i,
15
+ children: l,
16
16
  container: s
17
17
  }) {
18
18
  const u = U(), d = s ?? u ?? void 0, r = (c) => {
@@ -20,18 +20,18 @@ function I({
20
20
  }, a = b(() => {
21
21
  n(!1);
22
22
  }, [n]);
23
- return /* @__PURE__ */ e(J, { open: t, onOpenChange: n, modal: !0, children: /* @__PURE__ */ g(Q, { container: d, children: [
24
- /* @__PURE__ */ e(
25
- W,
23
+ return /* @__PURE__ */ t(Q, { open: e, onOpenChange: n, modal: !0, children: /* @__PURE__ */ g(W, { container: d, children: [
24
+ /* @__PURE__ */ t(
25
+ X,
26
26
  {
27
27
  className: "fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0",
28
28
  onClick: r
29
29
  }
30
30
  ),
31
- /* @__PURE__ */ e(
31
+ /* @__PURE__ */ t(
32
32
  G,
33
33
  {
34
- render: /* @__PURE__ */ e(X, {}),
34
+ render: /* @__PURE__ */ t(Y, {}),
35
35
  className: m(
36
36
  "fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2",
37
37
  "overflow-hidden rounded-lg",
@@ -41,34 +41,34 @@ function I({
41
41
  transitionProperty: "scale, opacity",
42
42
  transitionTimingFunction: "var(--default-transition-timing-function)"
43
43
  },
44
- children: /* @__PURE__ */ e(C.Provider, { value: { onClose: a }, children: i })
44
+ children: /* @__PURE__ */ t(C.Provider, { value: { onClose: a }, children: l })
45
45
  }
46
46
  )
47
47
  ] }) });
48
48
  }
49
- function Y({
50
- open: t,
49
+ function Z({
50
+ open: e,
51
51
  onOpenChange: n,
52
52
  onBackdropClick: o,
53
- children: i,
53
+ children: l,
54
54
  items: s,
55
55
  value: u,
56
56
  onValueChange: d,
57
57
  onItemHighlighted: r,
58
58
  itemToStringValue: a,
59
59
  filter: c,
60
- onSelect: l,
60
+ onSelect: i,
61
61
  getSelectableItems: f,
62
62
  container: h
63
63
  }) {
64
- return /* @__PURE__ */ e(
64
+ return /* @__PURE__ */ t(
65
65
  I,
66
66
  {
67
- open: t,
67
+ open: e,
68
68
  onOpenChange: n,
69
69
  onBackdropClick: o,
70
70
  container: h,
71
- children: /* @__PURE__ */ e(
71
+ children: /* @__PURE__ */ t(
72
72
  A,
73
73
  {
74
74
  items: s,
@@ -77,39 +77,39 @@ function Y({
77
77
  onItemHighlighted: r,
78
78
  itemToStringValue: a,
79
79
  filter: c,
80
- open: t,
81
- onSelect: l,
80
+ open: e,
81
+ onSelect: i,
82
82
  getSelectableItems: f,
83
- children: i
83
+ children: l
84
84
  }
85
85
  )
86
86
  }
87
87
  );
88
88
  }
89
- function Z({
90
- children: t,
89
+ function S({
90
+ children: e,
91
91
  leading: n,
92
92
  trailing: o
93
93
  }) {
94
- return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-kumo-base px-4 py-3", children: [
95
- n ?? /* @__PURE__ */ e(
94
+ return /* @__PURE__ */ g("div", { className: "flex items-center gap-3 bg-kumo-base px-4 py-3 focus-within:ring-2 focus-within:ring-kumo-brand", children: [
95
+ n ?? /* @__PURE__ */ t(
96
96
  F,
97
97
  {
98
98
  className: "h-4 w-4 text-kumo-subtle",
99
99
  weight: "bold"
100
100
  }
101
101
  ),
102
- t,
102
+ e,
103
103
  o
104
104
  ] });
105
105
  }
106
- const D = K(function({ children: n, className: o }, i) {
107
- return /* @__PURE__ */ e(
106
+ const D = K(function({ children: n, className: o }, l) {
107
+ return /* @__PURE__ */ t(
108
108
  "div",
109
109
  {
110
- ref: i,
110
+ ref: l,
111
111
  className: m(
112
- "min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-line",
112
+ "min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-hairline",
113
113
  o
114
114
  ),
115
115
  children: n
@@ -117,39 +117,39 @@ const D = K(function({ children: n, className: o }, i) {
117
117
  );
118
118
  });
119
119
  D.displayName = "CommandPalette.List";
120
- function ee({
121
- children: t,
120
+ function tt({
121
+ children: e,
122
122
  className: n,
123
123
  ...o
124
124
  }) {
125
- return /* @__PURE__ */ e(z, { className: m("space-y-0.5", n), ...o, children: t });
125
+ return /* @__PURE__ */ t(z, { className: m("space-y-0.5", n), ...o, children: e });
126
126
  }
127
- function te({
128
- children: t,
127
+ function et({
128
+ children: e,
129
129
  className: n
130
130
  }) {
131
- return /* @__PURE__ */ e(
132
- q,
131
+ return /* @__PURE__ */ t(
132
+ $,
133
133
  {
134
134
  className: m(
135
135
  "mb-2 px-2 pt-1 text-xs font-semibold text-kumo-strong",
136
136
  n
137
137
  ),
138
- children: t
138
+ children: e
139
139
  }
140
140
  );
141
141
  }
142
- function ne({
143
- value: t,
142
+ function nt({
143
+ value: e,
144
144
  disabled: n,
145
145
  children: o,
146
- className: i,
146
+ className: l,
147
147
  onClick: s
148
148
  }) {
149
- return /* @__PURE__ */ e(
150
- w,
149
+ return /* @__PURE__ */ t(
150
+ v,
151
151
  {
152
- value: t,
152
+ value: e,
153
153
  disabled: n,
154
154
  onClick: s,
155
155
  className: m(
@@ -157,84 +157,84 @@ function ne({
157
157
  "cursor-pointer data-[highlighted]:bg-kumo-overlay",
158
158
  "rounded-lg",
159
159
  n && "cursor-default opacity-50",
160
- i
160
+ l
161
161
  ),
162
162
  children: o
163
163
  }
164
164
  );
165
165
  }
166
- function oe({ children: t }) {
167
- return /* @__PURE__ */ e($, { children: /* @__PURE__ */ e("div", { className: "p-8 text-center", children: /* @__PURE__ */ e("p", { className: "text-kumo-strong", children: t ?? "No results found" }) }) });
166
+ function ot({ children: e }) {
167
+ return /* @__PURE__ */ t(V, { children: /* @__PURE__ */ t("div", { className: "p-8 text-center", children: /* @__PURE__ */ t("p", { className: "text-kumo-strong", children: e ?? "No results found" }) }) });
168
168
  }
169
- function ae({ children: t }) {
170
- return /* @__PURE__ */ e("div", { className: "flex items-center justify-center p-8", children: t ?? /* @__PURE__ */ e(j, { size: 24 }) });
169
+ function at({ children: e }) {
170
+ return /* @__PURE__ */ t("div", { className: "flex items-center justify-center p-8", children: e ?? /* @__PURE__ */ t(j, { size: 24 }) });
171
171
  }
172
- function se({ children: t }) {
173
- return /* @__PURE__ */ e("div", { className: "flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong", children: t });
172
+ function st({ children: e }) {
173
+ return /* @__PURE__ */ t("div", { className: "flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong", children: e });
174
174
  }
175
175
  function y({
176
- text: t,
176
+ text: e,
177
177
  highlights: n,
178
178
  className: o
179
179
  }) {
180
180
  if (!n || n.length === 0)
181
- return /* @__PURE__ */ e("span", { className: o, children: t });
182
- const i = [...n].sort((r, a) => r[0] - a[0]), s = [];
183
- for (const r of i) {
181
+ return /* @__PURE__ */ t("span", { className: o, children: e });
182
+ const l = [...n].sort((r, a) => r[0] - a[0]), s = [];
183
+ for (const r of l) {
184
184
  const a = s[s.length - 1];
185
185
  a && r[0] <= a[1] + 1 ? a[1] = Math.max(a[1], r[1]) : s.push([...r]);
186
186
  }
187
187
  const u = [];
188
188
  let d = 0;
189
189
  return s.forEach((r, a) => {
190
- const [c, l] = r;
191
- c > d && u.push(/* @__PURE__ */ e("span", { children: t.slice(d, c) }, `text-${a}`)), u.push(
192
- /* @__PURE__ */ e(
190
+ const [c, i] = r;
191
+ c > d && u.push(/* @__PURE__ */ t("span", { children: e.slice(d, c) }, `text-${a}`)), u.push(
192
+ /* @__PURE__ */ t(
193
193
  "mark",
194
194
  {
195
195
  className: "rounded-sm bg-kumo-warning/50 text-kumo-default",
196
- children: t.slice(c, l + 1)
196
+ children: e.slice(c, i + 1)
197
197
  },
198
198
  `highlight-${a}`
199
199
  )
200
- ), d = l + 1;
201
- }), d < t.length && u.push(/* @__PURE__ */ e("span", { children: t.slice(d) }, "text-end")), /* @__PURE__ */ e("span", { className: o, children: u });
200
+ ), d = i + 1;
201
+ }), d < e.length && u.push(/* @__PURE__ */ t("span", { children: e.slice(d) }, "text-end")), /* @__PURE__ */ t("span", { className: o, children: u });
202
202
  }
203
- function re({
204
- title: t,
203
+ function rt({
204
+ title: e,
205
205
  breadcrumbs: n,
206
206
  titleHighlights: o,
207
- breadcrumbHighlights: i,
207
+ breadcrumbHighlights: l,
208
208
  description: s,
209
209
  icon: u,
210
210
  value: d,
211
211
  onClick: r,
212
212
  showArrow: a = !0,
213
213
  external: c = !1,
214
- nonInteractive: l = !1
214
+ nonInteractive: i = !1
215
215
  }) {
216
216
  return /* @__PURE__ */ g(
217
- w,
217
+ v,
218
218
  {
219
219
  value: d,
220
- onClick: l ? void 0 : (f) => r(f),
220
+ onClick: i ? void 0 : (f) => r(f),
221
221
  className: m(
222
222
  "group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors",
223
- l ? "cursor-default" : "cursor-pointer data-[highlighted]:bg-kumo-overlay"
223
+ i ? "cursor-default" : "cursor-pointer data-[highlighted]:bg-kumo-overlay"
224
224
  ),
225
225
  children: [
226
- u && /* @__PURE__ */ e("div", { className: "flex flex-shrink-0 items-center text-kumo-subtle", children: u }),
227
- /* @__PURE__ */ e("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ g("div", { className: "flex items-center gap-2 truncate", children: [
226
+ u && /* @__PURE__ */ t("div", { className: "flex flex-shrink-0 items-center text-kumo-subtle", children: u }),
227
+ /* @__PURE__ */ t("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ g("div", { className: "flex items-center gap-2 truncate", children: [
228
228
  n?.map((f, h) => /* @__PURE__ */ g("span", { className: "flex items-center gap-2", children: [
229
- /* @__PURE__ */ e(
229
+ /* @__PURE__ */ t(
230
230
  y,
231
231
  {
232
232
  text: f,
233
- highlights: i?.[h],
233
+ highlights: l?.[h],
234
234
  className: "text-base text-kumo-default"
235
235
  }
236
236
  ),
237
- /* @__PURE__ */ e(
237
+ /* @__PURE__ */ t(
238
238
  M,
239
239
  {
240
240
  className: "h-3 w-3 flex-shrink-0 text-kumo-subtle",
@@ -242,162 +242,162 @@ function re({
242
242
  }
243
243
  )
244
244
  ] }, h)),
245
- /* @__PURE__ */ e(
245
+ /* @__PURE__ */ t(
246
246
  y,
247
247
  {
248
- text: t,
248
+ text: e,
249
249
  highlights: o,
250
250
  className: "text-base text-kumo-default"
251
251
  }
252
252
  ),
253
- c && /* @__PURE__ */ e(H, { className: "h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle" }),
253
+ c && /* @__PURE__ */ t(H, { className: "h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle" }),
254
254
  s && /* @__PURE__ */ g(E, { children: [
255
- /* @__PURE__ */ e("span", { className: "text-kumo-strong", children: "—" }),
256
- /* @__PURE__ */ e("span", { className: "truncate text-sm text-kumo-strong", children: s })
255
+ /* @__PURE__ */ t("span", { className: "text-kumo-strong", children: "—" }),
256
+ /* @__PURE__ */ t("span", { className: "truncate text-sm text-kumo-strong", children: s })
257
257
  ] })
258
258
  ] }) }),
259
- a && !c && !l && /* @__PURE__ */ e(_, { className: "h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100" })
259
+ a && !c && !i && /* @__PURE__ */ t(_, { className: "h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100" })
260
260
  ]
261
261
  }
262
262
  );
263
263
  }
264
- function le({
265
- children: t,
264
+ function it({
265
+ children: e,
266
266
  className: n
267
267
  }) {
268
- return /* @__PURE__ */ e(
268
+ return /* @__PURE__ */ t(
269
269
  "div",
270
270
  {
271
271
  className: m(
272
272
  "flex max-h-[60vh] flex-col overflow-hidden rounded-lg bg-kumo-elevated",
273
273
  n
274
274
  ),
275
- children: t
275
+ children: e
276
276
  }
277
277
  );
278
278
  }
279
- const P = v({}), ie = () => !0;
279
+ const L = w({}), lt = () => !0;
280
280
  function A({
281
- children: t,
281
+ children: e,
282
282
  items: n,
283
283
  value: o,
284
- onValueChange: i,
284
+ onValueChange: l,
285
285
  onItemHighlighted: s,
286
286
  itemToStringValue: u,
287
- filter: d = ie,
287
+ filter: d = lt,
288
288
  open: r = !0,
289
289
  className: a,
290
290
  onSelect: c,
291
- getSelectableItems: l
291
+ getSelectableItems: i
292
292
  }) {
293
293
  const f = T(-1), h = b(
294
294
  (p, x) => {
295
295
  f.current = x.index, s?.(p, x);
296
296
  },
297
297
  [s]
298
- ), L = b(
298
+ ), P = b(
299
299
  (p) => {
300
300
  const x = p.key === "Enter", R = p.metaKey || p.ctrlKey;
301
- if (x && R && c && l) {
302
- const k = l(n)[f.current];
301
+ if (x && R && c && i) {
302
+ const k = i(n)[f.current];
303
303
  k !== void 0 && (p.preventDefault(), c(k, { newTab: !0 }));
304
304
  }
305
305
  },
306
- [n, c, l]
306
+ [n, c, i]
307
307
  );
308
- return /* @__PURE__ */ e(le, { className: a, children: /* @__PURE__ */ e(
309
- S,
308
+ return /* @__PURE__ */ t(it, { className: a, children: /* @__PURE__ */ t(
309
+ J,
310
310
  {
311
311
  items: n,
312
312
  value: o,
313
- onValueChange: i,
313
+ onValueChange: l,
314
314
  onItemHighlighted: h,
315
315
  itemToStringValue: u,
316
316
  filter: d,
317
317
  autoHighlight: "always",
318
318
  keepHighlight: !0,
319
319
  open: r,
320
- children: /* @__PURE__ */ e(P.Provider, { value: { onInputKeyDown: L }, children: t })
320
+ children: /* @__PURE__ */ t(L.Provider, { value: { onInputKeyDown: P }, children: e })
321
321
  }
322
322
  ) });
323
323
  }
324
- function ce({
325
- autoFocus: t = !0,
324
+ function ct({
325
+ autoFocus: e = !0,
326
326
  placeholder: n,
327
327
  className: o,
328
- onKeyDown: i,
328
+ onKeyDown: l,
329
329
  leading: s,
330
330
  trailing: u,
331
331
  ...d
332
332
  }) {
333
- const { onInputKeyDown: r } = N(P), { onClose: a } = N(C), c = b(
334
- (l) => {
335
- if (i?.(l), !l.defaultPrevented) {
336
- if (l.key === "Escape" && a) {
337
- l.preventDefault(), a();
333
+ const { onInputKeyDown: r } = N(L), { onClose: a } = N(C), c = b(
334
+ (i) => {
335
+ if (l?.(i), !i.defaultPrevented) {
336
+ if (i.key === "Escape" && a) {
337
+ i.preventDefault(), a();
338
338
  return;
339
339
  }
340
- r?.(l);
340
+ r?.(i);
341
341
  }
342
342
  },
343
- [r, i, a]
343
+ [r, l, a]
344
344
  );
345
- return /* @__PURE__ */ e(Z, { leading: s, trailing: u, children: /* @__PURE__ */ e(
345
+ return /* @__PURE__ */ t(S, { leading: s, trailing: u, children: /* @__PURE__ */ t(
346
346
  B,
347
347
  {
348
348
  placeholder: n,
349
349
  className: m(
350
350
  "flex-1 border-none bg-transparent text-base kumo-input-placeholder",
351
- "outline-none focus-visible:outline-none",
351
+ "outline-none",
352
352
  o
353
353
  ),
354
354
  onKeyDown: c,
355
- autoFocus: t,
355
+ autoFocus: e,
356
356
  ...d
357
357
  }
358
358
  ) });
359
359
  }
360
- function ue({
361
- children: t,
360
+ function ut({
361
+ children: e,
362
362
  className: n
363
363
  }) {
364
- return /* @__PURE__ */ e(V, { className: m("space-y-3", n), children: t });
364
+ return /* @__PURE__ */ t(O, { className: m("space-y-3", n), children: e });
365
365
  }
366
- const de = O, Ne = {}, ve = {}, we = {
366
+ const dt = q, Nt = {}, wt = {}, vt = {
367
367
  /** Modal dialog wrapper - use with Panel for content that can swap */
368
368
  Dialog: I,
369
369
  /** Dialog + Panel combined - for simple single-view command palettes */
370
- Root: Y,
370
+ Root: Z,
371
371
  /** Autocomplete panel without dialog - use inside Dialog for swappable content */
372
372
  Panel: A,
373
373
  /** Input for use inside Panel */
374
- Input: ce,
374
+ Input: ct,
375
375
  /** Scrollable results container */
376
376
  List: D,
377
377
  /** Category grouping */
378
- Group: ee,
378
+ Group: tt,
379
379
  /** Section header text */
380
- GroupLabel: te,
380
+ GroupLabel: et,
381
381
  /** Basic item */
382
- Item: ne,
382
+ Item: nt,
383
383
  /** Rich item with breadcrumbs, highlights, icons */
384
- ResultItem: re,
384
+ ResultItem: rt,
385
385
  /** Text with highlighted portions */
386
386
  HighlightedText: y,
387
387
  /** Empty state */
388
- Empty: oe,
388
+ Empty: ot,
389
389
  /** Loading state */
390
- Loading: ae,
390
+ Loading: at,
391
391
  /** Footer for keyboard hints */
392
- Footer: se,
392
+ Footer: st,
393
393
  /** Render prop iterator for groups */
394
- Results: ue,
394
+ Results: ut,
395
395
  /** Render prop iterator for items within a group */
396
- Items: de
396
+ Items: dt
397
397
  };
398
398
  export {
399
- we as C,
400
- Ne as K,
401
- ve as a
399
+ vt as C,
400
+ Nt as K,
401
+ wt as a
402
402
  };
403
- //# sourceMappingURL=command-palette-jc1w07jwakxvj23a.js.map
403
+ //# sourceMappingURL=command-palette-gk9m34ymp2b3hfc5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-palette-gk9m34ymp2b3hfc5.js","sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import {\n useRef,\n useCallback,\n createContext,\n useContext,\n forwardRef,\n type CSSProperties,\n} from \"react\";\nimport { Autocomplete } from \"@base-ui/react/autocomplete\";\nimport { Dialog as DialogBase } from \"@base-ui/react/dialog\";\nimport {\n MagnifyingGlassIcon,\n ArrowRightIcon,\n ArrowSquareOutIcon,\n CaretRightIcon,\n} from \"@phosphor-icons/react\";\n\nimport { LayerCard } from \"../layer-card\";\nimport { Loader } from \"../loader\";\nimport { cn } from \"../../utils\";\nimport {\n usePortalContainer,\n type PortalContainer,\n} from \"../../utils/portal-provider\";\nimport type {\n HighlightRange,\n CommandPaletteRootProps,\n CommandPaletteInputProps,\n CommandPaletteListProps,\n CommandPaletteGroupProps,\n CommandPaletteGroupLabelProps,\n CommandPaletteItemProps,\n CommandPaletteEmptyProps,\n CommandPaletteLoadingProps,\n CommandPaletteFooterProps,\n CommandPaletteResultItemProps,\n} from \"./types\";\n\n/**\n * CommandPalette - A composable command palette component for Kumo\n *\n * Uses @base-ui/react/autocomplete primitives for accessible command palette functionality.\n *\n * Keyboard navigation is built-in:\n * - Arrow keys (up/down) move highlight between items\n * - Enter selects the highlighted item (calls onSelect with newTab: false)\n * - Cmd+Enter (Mac) / Ctrl+Enter (Windows/Linux) selects with newTab: true\n * - First item is auto-highlighted when results change\n * - Escape closes the dialog\n *\n * Usage:\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * onSelect={(item, { newTab }) => handleSelect(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap(g => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <Autocomplete.List>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <Autocomplete.Collection>\n * {(item) => (\n * <CommandPalette.Item value={item} onClick={(e) => handleSelect(item, e.metaKey || e.ctrlKey)}>\n * {item.title}\n * </CommandPalette.Item>\n * )}\n * </Autocomplete.Collection>\n * </CommandPalette.Group>\n * )}\n * </Autocomplete.List>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer />\n * </CommandPalette.Root>\n * ```\n */\n\n/**\n * Dialog context for passing close handler to children\n */\ninterface DialogContextValue {\n onClose?: () => void;\n}\n\nconst DialogContext = createContext<DialogContextValue>({});\n\n/**\n * Props for the Dialog component\n */\ninterface DialogProps {\n /** Whether the dialog is open */\n open: boolean;\n /** Callback when the open state changes */\n onOpenChange: (open: boolean) => void;\n /**\n * Optional callback when backdrop is clicked.\n * Receives the mouse event for position tracking (e.g., for ripple effects).\n * If not provided, backdrop click calls onOpenChange(false).\n */\n onBackdropClick?: (e: React.MouseEvent) => void;\n /** Child content - typically one or more Panel components */\n children: React.ReactNode;\n /**\n * Container element for the portal. Use this to render the command palette inside\n * a Shadow DOM or custom container. Overrides `KumoPortalProvider` context.\n * @default document.body (or KumoPortalProvider container if set)\n */\n container?: PortalContainer;\n}\n\n/**\n * Dialog component - Modal wrapper for command palette content.\n *\n * Use this when you need a dialog that can swap between different Panel contents\n * without re-mounting (e.g., drill-down navigation).\n *\n * @example\n * ```tsx\n * <CommandPalette.Dialog open={open} onOpenChange={setOpen}>\n * {showDrillDown ? (\n * <ZonePicker />\n * ) : (\n * <CommandPalette.Panel items={results} ...>\n * ...\n * </CommandPalette.Panel>\n * )}\n * </CommandPalette.Dialog>\n * ```\n */\nfunction Dialog({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n container: containerProp,\n}: DialogProps) {\n const contextContainer = usePortalContainer();\n const container = containerProp ?? contextContainer ?? undefined;\n\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (onBackdropClick) {\n onBackdropClick(e);\n } else {\n onOpenChange(false);\n }\n };\n\n const handleClose = useCallback(() => {\n onOpenChange(false);\n }, [onOpenChange]);\n\n return (\n <DialogBase.Root open={open} onOpenChange={onOpenChange} modal>\n <DialogBase.Portal container={container}>\n <DialogBase.Backdrop\n className=\"fixed inset-0 bg-kumo-overlay opacity-80 transition-all duration-150 data-[ending-style]:opacity-0 data-[starting-style]:opacity-0\"\n onClick={handleBackdropClick}\n />\n <LayerCard\n render={<DialogBase.Popup />}\n className={cn(\n \"fixed top-[10vh] left-1/2 w-full max-w-2xl -translate-x-1/2\",\n \"overflow-hidden rounded-lg\",\n \"duration-150 data-[ending-style]:scale-90 data-[ending-style]:opacity-0 data-[starting-style]:scale-90 data-[starting-style]:opacity-0\",\n )}\n style={\n {\n transitionProperty: \"scale, opacity\",\n transitionTimingFunction:\n \"var(--default-transition-timing-function)\",\n } as CSSProperties\n }\n >\n <DialogContext.Provider value={{ onClose: handleClose }}>\n {children}\n </DialogContext.Provider>\n </LayerCard>\n </DialogBase.Portal>\n </DialogBase.Root>\n );\n}\n\n/**\n * Root component - Dialog + Panel combined for simple use cases.\n *\n * For cases where you need to swap content inside the dialog without\n * re-mounting (e.g., drill-down navigation), use Dialog + Panel separately.\n *\n * Keyboard navigation is always enabled:\n * - Arrow keys (up/down) move highlight\n * - Enter selects highlighted item\n * - Cmd/Ctrl+Enter selects with newTab: true\n * - First item is auto-highlighted when results change\n */\nfunction Root<TGroup, TItem = TGroup>({\n open,\n onOpenChange,\n onBackdropClick,\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter,\n onSelect,\n getSelectableItems,\n container,\n}: CommandPaletteRootProps<TGroup, TItem>) {\n return (\n <Dialog\n open={open}\n onOpenChange={onOpenChange}\n onBackdropClick={onBackdropClick}\n container={container}\n >\n <Panel\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={onItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n open={open}\n onSelect={onSelect}\n getSelectableItems={getSelectableItems}\n >\n {children}\n </Panel>\n </Dialog>\n );\n}\n\n/**\n * InputHeader component - Internal styled container for search input.\n */\nfunction InputHeader({\n children,\n leading,\n trailing,\n}: {\n children: React.ReactNode;\n leading?: React.ReactNode;\n trailing?: React.ReactNode;\n}) {\n return (\n <div className=\"flex items-center gap-3 bg-kumo-base px-4 py-3 focus-within:ring-2 focus-within:ring-kumo-brand\">\n {leading ?? (\n <MagnifyingGlassIcon\n className=\"h-4 w-4 text-kumo-subtle\"\n weight=\"bold\"\n />\n )}\n {children}\n {trailing}\n </div>\n );\n}\n\n/**\n * List component - Scrollable results container\n *\n * Wrapper div with proper styling, contains Autocomplete.List internally.\n * Supports ref forwarding for scroll control.\n */\nconst List = forwardRef<\n HTMLDivElement,\n CommandPaletteListProps & { className?: string }\n>(function List({ children, className }, ref) {\n return (\n <div\n ref={ref}\n className={cn(\n \"min-h-0 flex-1 overflow-y-auto rounded-b-lg bg-kumo-base px-2 py-2 ring-1 ring-kumo-hairline\",\n className,\n )}\n >\n {children}\n </div>\n );\n});\n\nList.displayName = \"CommandPalette.List\";\n\n/**\n * Group component - Category grouping\n *\n * Re-export of Autocomplete.Group with default styling.\n */\nfunction Group({\n children,\n className,\n ...props\n}: CommandPaletteGroupProps & {\n className?: string;\n items?: unknown[];\n}) {\n return (\n <Autocomplete.Group className={cn(\"space-y-0.5\", className)} {...props}>\n {children}\n </Autocomplete.Group>\n );\n}\n\n/**\n * GroupLabel component - Section header text\n *\n * Re-export of Autocomplete.GroupLabel with styling matching SectionHeader.\n */\nfunction GroupLabel({\n children,\n className,\n}: CommandPaletteGroupLabelProps & { className?: string }) {\n return (\n <Autocomplete.GroupLabel\n className={cn(\n \"mb-2 px-2 pt-1 text-xs font-semibold text-kumo-strong\",\n className,\n )}\n >\n {children}\n </Autocomplete.GroupLabel>\n );\n}\n\n/**\n * Item component - Individual result item\n *\n * Re-export of Autocomplete.Item with styling matching SearchResultItem.\n * Note: Use onClick for selection handling, matching the existing CommandPalette pattern.\n */\nfunction Item<T>({\n value,\n disabled,\n children,\n className,\n onClick,\n}: CommandPaletteItemProps<T> & {\n className?: string;\n}) {\n return (\n <Autocomplete.Item\n value={value}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"group flex w-full items-center gap-3 px-2 py-1.5 text-left text-base transition-colors\",\n \"cursor-pointer data-[highlighted]:bg-kumo-overlay\",\n \"rounded-lg\",\n disabled && \"cursor-default opacity-50\",\n className,\n )}\n >\n {children}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Empty component - Empty state when no results\n *\n * Re-export of Autocomplete.Empty with default styling.\n */\nfunction Empty({ children }: CommandPaletteEmptyProps) {\n return (\n <Autocomplete.Empty>\n <div className=\"p-8 text-center\">\n <p className=\"text-kumo-strong\">{children ?? \"No results found\"}</p>\n </div>\n </Autocomplete.Empty>\n );\n}\n\n/**\n * Loading component - Loading spinner state\n *\n * Centered loading spinner using Kumo Loader.\n */\nfunction Loading({ children }: CommandPaletteLoadingProps) {\n return (\n <div className=\"flex items-center justify-center p-8\">\n {children ?? <Loader size={24} />}\n </div>\n );\n}\n\n/**\n * Footer component - Styled container for keyboard hints or other footer content.\n *\n * Children are required - this is just a styled container.\n * Consumers should provide their own keyboard hints with proper i18n.\n */\nfunction Footer({ children }: CommandPaletteFooterProps) {\n return (\n <div className=\"flex items-center justify-between rounded-b-lg bg-kumo-elevated px-4 py-3 text-xs text-kumo-strong\">\n {children}\n </div>\n );\n}\n\n/**\n * HighlightedText - Renders text with highlighted portions based on match indices.\n * Highlighted text is shown with a background color to indicate matches.\n */\nfunction HighlightedText({\n text,\n highlights,\n className,\n}: {\n text: string;\n highlights?: HighlightRange[];\n className?: string;\n}) {\n if (!highlights || highlights.length === 0) {\n return <span className={className}>{text}</span>;\n }\n\n // Sort highlights by start index and merge overlapping ranges\n const sortedHighlights = [...highlights].sort((a, b) => a[0] - b[0]);\n const mergedHighlights: HighlightRange[] = [];\n\n for (const range of sortedHighlights) {\n const last = mergedHighlights[mergedHighlights.length - 1];\n if (last && range[0] <= last[1] + 1) {\n // Merge overlapping or adjacent ranges\n last[1] = Math.max(last[1], range[1]);\n } else {\n mergedHighlights.push([...range]);\n }\n }\n\n const parts: React.ReactNode[] = [];\n let lastIndex = 0;\n\n mergedHighlights.forEach((range, i) => {\n const [start, end] = range;\n\n // Add non-highlighted text before this match\n if (start > lastIndex) {\n parts.push(<span key={`text-${i}`}>{text.slice(lastIndex, start)}</span>);\n }\n\n // Add highlighted text (end index is inclusive)\n parts.push(\n <mark\n key={`highlight-${i}`}\n className=\"rounded-sm bg-kumo-warning/50 text-kumo-default\"\n >\n {text.slice(start, end + 1)}\n </mark>,\n );\n\n lastIndex = end + 1;\n });\n\n // Add remaining non-highlighted text\n if (lastIndex < text.length) {\n parts.push(<span key=\"text-end\">{text.slice(lastIndex)}</span>);\n }\n\n return <span className={className}>{parts}</span>;\n}\n\n/**\n * ResultItem - Rich item component with breadcrumbs, highlights, icons, and external indicators.\n *\n * Use this for search result items that need breadcrumb navigation, text highlighting,\n * or external link indicators. For simple items, use Item instead.\n */\nfunction ResultItem<T>({\n title,\n breadcrumbs,\n titleHighlights,\n breadcrumbHighlights,\n description,\n icon,\n value,\n onClick,\n showArrow = true,\n external = false,\n nonInteractive = false,\n}: CommandPaletteResultItemProps<T>) {\n return (\n <Autocomplete.Item\n value={value}\n onClick={nonInteractive ? undefined : (e: React.MouseEvent) => onClick(e)}\n className={cn(\n \"group flex w-full items-center gap-3 rounded-lg px-2 py-1.5 text-left transition-colors\",\n nonInteractive\n ? \"cursor-default\"\n : \"cursor-pointer data-[highlighted]:bg-kumo-overlay\",\n )}\n >\n {icon && (\n <div className=\"flex flex-shrink-0 items-center text-kumo-subtle\">\n {icon}\n </div>\n )}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-2 truncate\">\n {breadcrumbs?.map((crumb, index) => (\n <span key={index} className=\"flex items-center gap-2\">\n <HighlightedText\n text={crumb}\n highlights={breadcrumbHighlights?.[index]}\n className=\"text-base text-kumo-default\"\n />\n <CaretRightIcon\n className=\"h-3 w-3 flex-shrink-0 text-kumo-subtle\"\n weight=\"bold\"\n />\n </span>\n ))}\n <HighlightedText\n text={title}\n highlights={titleHighlights}\n className=\"text-base text-kumo-default\"\n />\n {external && (\n <ArrowSquareOutIcon className=\"h-3.5 w-3.5 flex-shrink-0 text-kumo-subtle\" />\n )}\n {description && (\n <>\n <span className=\"text-kumo-strong\">—</span>\n <span className=\"truncate text-sm text-kumo-strong\">\n {description}\n </span>\n </>\n )}\n </div>\n </div>\n {showArrow && !external && !nonInteractive && (\n <ArrowRightIcon className=\"h-4 w-4 flex-shrink-0 text-kumo-subtle opacity-0 transition-opacity group-data-[highlighted]:opacity-100\" />\n )}\n </Autocomplete.Item>\n );\n}\n\n/**\n * Container component - Internal styled wrapper.\n */\nfunction Container({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n \"flex max-h-[60vh] flex-col overflow-hidden rounded-lg bg-kumo-elevated\",\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Panel context for passing handlers from Panel to children\n */\ninterface PanelContextValue {\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nconst PanelContext = createContext<PanelContextValue>({});\n\n/**\n * Props for the Panel component\n */\ninterface PanelProps<TGroup, TItem = TGroup> {\n /** Child components (Input, List, Footer, etc.) */\n children: React.ReactNode;\n /** Items for the autocomplete */\n items: TGroup[];\n /** Controlled input value */\n value?: string;\n /** Callback when input value changes */\n onValueChange?: (value: string) => void;\n /** Callback when an item is highlighted */\n onItemHighlighted?: (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => void;\n /** Convert item to string for accessibility */\n itemToStringValue?: (item: TGroup) => string;\n /** Custom filter function */\n filter?: (item: TGroup, query: string) => boolean;\n /** Whether the panel is active/open (for autocomplete state) */\n open?: boolean;\n /** Optional className for the container */\n className?: string;\n /**\n * Callback when an item is selected via Cmd/Ctrl+Enter.\n * Requires getSelectableItems to be provided.\n */\n onSelect?: (item: TItem, options: { newTab: boolean }) => void;\n /**\n * Function to get flat list of selectable items from groups.\n * Required when items are grouped and onSelect is used.\n */\n getSelectableItems?: (items: TGroup[]) => TItem[];\n}\n\n/**\n * Panel component - Command palette without dialog wrapper.\n *\n * Use this when you need to render command palette content inside an existing dialog\n * (e.g., for drill-down navigation where the dialog stays open but content changes).\n *\n * Combines Container + Autocomplete functionality with a clean API.\n *\n * @example\n * ```tsx\n * <DialogRoot open={open} onOpenChange={setOpen}>\n * <Dialog>\n * <CommandPalette.Panel\n * items={results}\n * value={searchTerm}\n * onValueChange={setSearchTerm}\n * itemToStringValue={(group) => group.label}\n * >\n * <CommandPalette.Input placeholder=\"Search...\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => <CommandPalette.ResultItem ... />}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>...</CommandPalette.Footer>\n * </CommandPalette.Panel>\n * </Dialog>\n * </DialogRoot>\n * ```\n */\nconst defaultFilter = () => true;\n\nfunction Panel<TGroup, TItem = TGroup>({\n children,\n items,\n value,\n onValueChange,\n onItemHighlighted,\n itemToStringValue,\n filter = defaultFilter,\n open = true,\n className,\n onSelect,\n getSelectableItems,\n}: PanelProps<TGroup, TItem>) {\n const highlightedIndexRef = useRef<number>(-1);\n\n const handleItemHighlighted = useCallback(\n (\n item: TGroup | undefined,\n details: { reason: string; event: Event; index: number },\n ) => {\n highlightedIndexRef.current = details.index;\n onItemHighlighted?.(item, details);\n },\n [onItemHighlighted],\n );\n\n // Handle Cmd/Ctrl+Enter for new tab selection\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const isEnter = e.key === \"Enter\";\n const withModifier = e.metaKey || e.ctrlKey;\n\n if (isEnter && withModifier && onSelect && getSelectableItems) {\n const selectableItems = getSelectableItems(items);\n const highlightedItem = selectableItems[highlightedIndexRef.current];\n\n if (highlightedItem !== undefined) {\n e.preventDefault();\n onSelect(highlightedItem, { newTab: true });\n }\n }\n },\n [items, onSelect, getSelectableItems],\n );\n\n return (\n <Container className={className}>\n <Autocomplete.Root\n items={items}\n value={value}\n onValueChange={onValueChange}\n onItemHighlighted={handleItemHighlighted}\n itemToStringValue={itemToStringValue}\n filter={filter}\n autoHighlight=\"always\"\n keepHighlight\n open={open}\n >\n <PanelContext.Provider value={{ onInputKeyDown: handleInputKeyDown }}>\n {children}\n </PanelContext.Provider>\n </Autocomplete.Root>\n </Container>\n );\n}\n\n/**\n * PanelInput component - Input that works inside Panel.\n *\n * Similar to Input but designed for use with Panel instead of Root.\n * Automatically wires up Cmd/Ctrl+Enter handling from Panel.\n */\nfunction PanelInput({\n autoFocus = true,\n placeholder,\n className,\n onKeyDown: onKeyDownProp,\n leading,\n trailing,\n ...props\n}: CommandPaletteInputProps) {\n const { onInputKeyDown } = useContext(PanelContext);\n const { onClose } = useContext(DialogContext);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Let consumer handle first (e.g., for custom Escape/Backspace behavior)\n onKeyDownProp?.(e);\n if (e.defaultPrevented) return;\n\n // Handle Escape to close the dialog\n if (e.key === \"Escape\" && onClose) {\n e.preventDefault();\n onClose();\n return;\n }\n onInputKeyDown?.(e);\n },\n [onInputKeyDown, onKeyDownProp, onClose],\n );\n\n return (\n <InputHeader leading={leading} trailing={trailing}>\n <Autocomplete.Input\n placeholder={placeholder}\n className={cn(\n \"flex-1 border-none bg-transparent text-base kumo-input-placeholder\",\n \"outline-none\",\n className,\n )}\n onKeyDown={handleKeyDown}\n // oxlint-disable-next-line no-autofocus -- Command palette input should autofocus for keyboard-driven UX\n autoFocus={autoFocus}\n {...props}\n />\n </InputHeader>\n );\n}\n\n/**\n * Render prop iterators - wrap base-ui primitives with cleaner names.\n */\n\n/**\n * Results component - Render prop iterator for groups.\n *\n * Wraps Autocomplete.List with default spacing between groups.\n */\nfunction Results({\n children,\n className,\n}: React.ComponentProps<typeof Autocomplete.List> & { className?: string }) {\n return (\n <Autocomplete.List className={cn(\"space-y-3\", className)}>\n {children}\n </Autocomplete.List>\n );\n}\n\nconst Items = Autocomplete.Collection;\n\n/** CommandPalette variant definitions (no user-facing variants; structure reserved for future use). */\nexport const KUMO_COMMAND_PALETTE_VARIANTS = {} as const;\n\nexport const KUMO_COMMAND_PALETTE_DEFAULT_VARIANTS = {} as const;\n\n/**\n * CommandPalette — accessible command palette / spotlight search overlay.\n *\n * Compound component: `CommandPalette.Root` (or `.Dialog` + `.Panel`),\n * `.Input`, `.List`, `.Results`, `.Items`, `.Group`, `.GroupLabel`,\n * `.Item`, `.ResultItem`, `.HighlightedText`, `.Empty`, `.Loading`, `.Footer`.\n *\n * Built on `@base-ui/react/autocomplete` + `@base-ui/react/dialog`.\n *\n * @example\n * ```tsx\n * <CommandPalette.Root\n * open={open}\n * onOpenChange={setOpen}\n * items={results}\n * value={query}\n * onValueChange={setQuery}\n * itemToStringValue={(g) => g.label}\n * onSelect={(item, { newTab }) => navigate(item, newTab)}\n * getSelectableItems={(groups) => groups.flatMap((g) => g.items)}\n * >\n * <CommandPalette.Input placeholder=\"Search…\" />\n * <CommandPalette.List>\n * <CommandPalette.Results>\n * {(group) => (\n * <CommandPalette.Group items={group.items}>\n * <CommandPalette.GroupLabel>{group.label}</CommandPalette.GroupLabel>\n * <CommandPalette.Items>\n * {(item) => (\n * <CommandPalette.ResultItem title={item.title} value={item} onClick={…} />\n * )}\n * </CommandPalette.Items>\n * </CommandPalette.Group>\n * )}\n * </CommandPalette.Results>\n * <CommandPalette.Empty>No results found</CommandPalette.Empty>\n * </CommandPalette.List>\n * <CommandPalette.Footer>…keyboard hints…</CommandPalette.Footer>\n * </CommandPalette.Root>\n * ```\n */\nexport const CommandPalette = {\n /** Modal dialog wrapper - use with Panel for content that can swap */\n Dialog,\n /** Dialog + Panel combined - for simple single-view command palettes */\n Root,\n /** Autocomplete panel without dialog - use inside Dialog for swappable content */\n Panel,\n /** Input for use inside Panel */\n Input: PanelInput,\n /** Scrollable results container */\n List,\n /** Category grouping */\n Group,\n /** Section header text */\n GroupLabel,\n /** Basic item */\n Item,\n /** Rich item with breadcrumbs, highlights, icons */\n ResultItem,\n /** Text with highlighted portions */\n HighlightedText,\n /** Empty state */\n Empty,\n /** Loading state */\n Loading,\n /** Footer for keyboard hints */\n Footer,\n /** Render prop iterator for groups */\n Results,\n /** Render prop iterator for items within a group */\n Items,\n};\n"],"names":["DialogContext","createContext","Dialog","open","onOpenChange","onBackdropClick","children","containerProp","contextContainer","usePortalContainer","container","handleBackdropClick","e","handleClose","useCallback","jsx","DialogBase.Root","jsxs","DialogBase.Portal","DialogBase.Backdrop","LayerCard","DialogBase.Popup","cn","Root","items","value","onValueChange","onItemHighlighted","itemToStringValue","filter","onSelect","getSelectableItems","Panel","InputHeader","leading","trailing","MagnifyingGlassIcon","List","forwardRef","className","ref","Group","props","Autocomplete.Group","GroupLabel","Autocomplete.GroupLabel","Item","disabled","onClick","Autocomplete.Item","Empty","Autocomplete.Empty","Loading","Loader","Footer","HighlightedText","text","highlights","sortedHighlights","a","b","mergedHighlights","range","last","parts","lastIndex","i","start","end","ResultItem","title","breadcrumbs","titleHighlights","breadcrumbHighlights","description","icon","showArrow","external","nonInteractive","crumb","index","CaretRightIcon","ArrowSquareOutIcon","Fragment","ArrowRightIcon","Container","PanelContext","defaultFilter","highlightedIndexRef","useRef","handleItemHighlighted","item","details","handleInputKeyDown","isEnter","withModifier","highlightedItem","Autocomplete.Root","PanelInput","autoFocus","placeholder","onKeyDownProp","onInputKeyDown","useContext","onClose","handleKeyDown","Autocomplete.Input","Results","Autocomplete.List","Items","Autocomplete.Collection","KUMO_COMMAND_PALETTE_VARIANTS","KUMO_COMMAND_PALETTE_DEFAULT_VARIANTS","CommandPalette"],"mappings":"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"}