@logicplanes/kaeso-ui 0.2.1 → 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 (356) hide show
  1. package/AGENTS.md +2 -0
  2. package/NOTICE.md +1 -1
  3. package/ai/component-guides.md +249 -24
  4. package/ai/component-registry.json +1044 -67
  5. package/ai/component-registry.md +238 -50
  6. package/ai/icons.md +1 -1
  7. package/ai/tokens.md +7 -3
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +5 -5
  10. package/dist/blocks/resource-list.js +4 -4
  11. package/dist/chunks/app-frame-B9vrgwaE.js +220 -0
  12. package/dist/chunks/app-frame-B9vrgwaE.js.map +1 -0
  13. package/dist/chunks/{avatar-D2nJNbtC.js → avatar-DOzOhYJr.js} +2 -2
  14. package/dist/chunks/{avatar-D2nJNbtC.js.map → avatar-DOzOhYJr.js.map} +1 -1
  15. package/dist/chunks/{badge-Dkyhs0_j.js → badge-wUHlj7m3.js} +2 -2
  16. package/dist/chunks/{badge-Dkyhs0_j.js.map → badge-wUHlj7m3.js.map} +1 -1
  17. package/dist/chunks/{banner-DxGBPQ7p.js → banner-BBlNFHd-.js} +4 -4
  18. package/dist/chunks/{banner-DxGBPQ7p.js.map → banner-BBlNFHd-.js.map} +1 -1
  19. package/dist/chunks/{button-DQvoOxVQ.js → button-CAPyW-v8.js} +8 -8
  20. package/dist/chunks/{button-DQvoOxVQ.js.map → button-CAPyW-v8.js.map} +1 -1
  21. package/dist/chunks/{calendar-CN3YJi2k.js → calendar-CBeptQFq.js} +2 -2
  22. package/dist/chunks/{calendar-CN3YJi2k.js.map → calendar-CBeptQFq.js.map} +1 -1
  23. package/dist/chunks/{checkbox-BgRdbfCE.js → checkbox-C5yvSS7O.js} +3 -3
  24. package/dist/chunks/{checkbox-BgRdbfCE.js.map → checkbox-C5yvSS7O.js.map} +1 -1
  25. package/dist/chunks/{cn-CidVUKMm.js → cn-DUDmdLpZ.js} +3 -1
  26. package/dist/chunks/cn-DUDmdLpZ.js.map +1 -0
  27. package/dist/chunks/{code-BADhvsgC.js → code-C49NzHUQ.js} +2 -2
  28. package/dist/chunks/{code-BADhvsgC.js.map → code-C49NzHUQ.js.map} +1 -1
  29. package/dist/chunks/{code-block-DxtladFW.js → code-block-DREsvJ-g.js} +24 -21
  30. package/dist/chunks/code-block-DREsvJ-g.js.map +1 -0
  31. package/dist/chunks/{collapsible-Cw_1aem5.js → collapsible-CDQq1Y9x.js} +6 -6
  32. package/dist/chunks/collapsible-CDQq1Y9x.js.map +1 -0
  33. package/dist/chunks/combobox-DqtzsAKG.js +314 -0
  34. package/dist/chunks/combobox-DqtzsAKG.js.map +1 -0
  35. package/dist/chunks/command-list-D5k0uvkR.js +417 -0
  36. package/dist/chunks/command-list-D5k0uvkR.js.map +1 -0
  37. package/dist/chunks/{copy-button-DXxn-YYZ.js → copy-button-CNpEnS04.js} +6 -6
  38. package/dist/chunks/{copy-button-DXxn-YYZ.js.map → copy-button-CNpEnS04.js.map} +1 -1
  39. package/dist/chunks/{core-K960A4OT.js → core-CqLWVMDI.js} +36 -36
  40. package/dist/chunks/core-CqLWVMDI.js.map +1 -0
  41. package/dist/chunks/{date-popup-B-6xhb-1.js → date-popup-BgDz6SUj.js} +4 -4
  42. package/dist/chunks/{date-popup-B-6xhb-1.js.map → date-popup-BgDz6SUj.js.map} +1 -1
  43. package/dist/chunks/{de-CTAo4KL7.js → de-CkXZKaBD.js} +37 -5
  44. package/dist/chunks/de-CkXZKaBD.js.map +1 -0
  45. package/dist/chunks/dialog-truWH0qe.js +353 -0
  46. package/dist/chunks/dialog-truWH0qe.js.map +1 -0
  47. package/dist/chunks/{empty-DIbBpytW.js → empty-YXmSkKzR.js} +2 -2
  48. package/dist/chunks/{empty-DIbBpytW.js.map → empty-YXmSkKzR.js.map} +1 -1
  49. package/dist/chunks/{field-d8V94bvZ.js → field-BZriODU7.js} +3 -3
  50. package/dist/chunks/field-BZriODU7.js.map +1 -0
  51. package/dist/chunks/{icon-CeNQtobn.js → icon-BqujXDUc.js} +2 -2
  52. package/dist/chunks/{icon-CeNQtobn.js.map → icon-BqujXDUc.js.map} +1 -1
  53. package/dist/chunks/{icon-button-_x1RUphC.js → icon-button-D4O4puwH.js} +3 -3
  54. package/dist/chunks/{icon-button-_x1RUphC.js.map → icon-button-D4O4puwH.js.map} +1 -1
  55. package/dist/chunks/identity-CsZvAUwu.js +361 -0
  56. package/dist/chunks/identity-CsZvAUwu.js.map +1 -0
  57. package/dist/chunks/{input-CNTfI6YE.js → input-B0wtkcNh.js} +5 -5
  58. package/dist/chunks/{input-CNTfI6YE.js.map → input-B0wtkcNh.js.map} +1 -1
  59. package/dist/chunks/{input-group-CYA1MEoZ.js → input-group-BQLw06B0.js} +33 -27
  60. package/dist/chunks/input-group-BQLw06B0.js.map +1 -0
  61. package/dist/chunks/{inset-BLMdxX4I.js → inset-BnBj8NJV.js} +12 -2
  62. package/dist/chunks/inset-BnBj8NJV.js.map +1 -0
  63. package/dist/chunks/{iso-field-1qmg7TP8.js → iso-field-BUXgY1dB.js} +5 -3
  64. package/dist/chunks/{iso-field-1qmg7TP8.js.map → iso-field-BUXgY1dB.js.map} +1 -1
  65. package/dist/chunks/{json-view-B6KHIWzh.js → json-view-BkG2hTXV.js} +11 -10
  66. package/dist/chunks/{json-view-B6KHIWzh.js.map → json-view-BkG2hTXV.js.map} +1 -1
  67. package/dist/chunks/{kbd-CBcBDvqU.js → kbd-DqWmbr_e.js} +2 -2
  68. package/dist/chunks/{kbd-CBcBDvqU.js.map → kbd-DqWmbr_e.js.map} +1 -1
  69. package/dist/chunks/{link-vz9aV8WX.js → link-YMcxM-BZ.js} +4 -4
  70. package/dist/chunks/{link-vz9aV8WX.js.map → link-YMcxM-BZ.js.map} +1 -1
  71. package/dist/chunks/{link-provider---9JdxTg.js → link-provider-BsUxhZKG.js} +2 -2
  72. package/dist/chunks/{link-provider---9JdxTg.js.map → link-provider-BsUxhZKG.js.map} +1 -1
  73. package/dist/chunks/list-wXZIZo_s.js +492 -0
  74. package/dist/chunks/list-wXZIZo_s.js.map +1 -0
  75. package/dist/chunks/{loader-CUehxvSZ.js → loader-ENBh2Fbt.js} +2 -2
  76. package/dist/chunks/{loader-CUehxvSZ.js.map → loader-ENBh2Fbt.js.map} +1 -1
  77. package/dist/chunks/{markdown-5NyaHHfN.js → markdown-DWyxjsSY.js} +10 -10
  78. package/dist/chunks/{markdown-5NyaHHfN.js.map → markdown-DWyxjsSY.js.map} +1 -1
  79. package/dist/chunks/{menu-DyVPwgfF.js → menu-Bnfi9P3t.js} +7 -7
  80. package/dist/chunks/{menu-DyVPwgfF.js.map → menu-Bnfi9P3t.js.map} +1 -1
  81. package/dist/chunks/{meter-DWhyzFGQ.js → meter-DhTnem4k.js} +2 -2
  82. package/dist/chunks/{meter-DWhyzFGQ.js.map → meter-DhTnem4k.js.map} +1 -1
  83. package/dist/chunks/nav-sheet-QqNRHo-y.js +60 -0
  84. package/dist/chunks/nav-sheet-QqNRHo-y.js.map +1 -0
  85. package/dist/chunks/{nav-wordmark-DLkItdvo.js → nav-wordmark-DmbT1Aiw.js} +2 -2
  86. package/dist/chunks/{nav-wordmark-DLkItdvo.js.map → nav-wordmark-DmbT1Aiw.js.map} +1 -1
  87. package/dist/chunks/option-checkbox-Df7WhGn4.js +25 -0
  88. package/dist/chunks/option-checkbox-Df7WhGn4.js.map +1 -0
  89. package/dist/chunks/over-sheet-B8vzr_zU.js +8 -0
  90. package/dist/chunks/over-sheet-B8vzr_zU.js.map +1 -0
  91. package/dist/chunks/{page-header-CEPZzhRp.js → page-header-Ccnrspbp.js} +5 -5
  92. package/dist/chunks/{page-header-CEPZzhRp.js.map → page-header-Ccnrspbp.js.map} +1 -1
  93. package/dist/chunks/{pagination-CCMxQ5pH.js → pagination-CEmWZNjp.js} +5 -4
  94. package/dist/chunks/{pagination-CCMxQ5pH.js.map → pagination-CEmWZNjp.js.map} +1 -1
  95. package/dist/chunks/picker-popover-C4ElNk7t.js +102 -0
  96. package/dist/chunks/picker-popover-C4ElNk7t.js.map +1 -0
  97. package/dist/chunks/{popover-BE7VO-a4.js → popover-bjxg020P.js} +3 -3
  98. package/dist/chunks/{popover-BE7VO-a4.js.map → popover-bjxg020P.js.map} +1 -1
  99. package/dist/chunks/{radio-CUxbLCvD.js → radio-DwYcXAzv.js} +2 -2
  100. package/dist/chunks/{radio-CUxbLCvD.js.map → radio-DwYcXAzv.js.map} +1 -1
  101. package/dist/chunks/range-popup-CG9Jo5B7.js +128 -0
  102. package/dist/chunks/range-popup-CG9Jo5B7.js.map +1 -0
  103. package/dist/chunks/release-art-Chd8l9Rf.js +555 -0
  104. package/dist/chunks/release-art-Chd8l9Rf.js.map +1 -0
  105. package/dist/chunks/{resize-motion-CMaidkwe.js → resize-motion-BWGMchyP.js} +27 -23
  106. package/dist/chunks/resize-motion-BWGMchyP.js.map +1 -0
  107. package/dist/chunks/{rights-BbiJ0AJB.js → rights-hMoaFasn.js} +12 -12
  108. package/dist/chunks/rights-hMoaFasn.js.map +1 -0
  109. package/dist/chunks/{section-DzOLLN1p.js → section-BsET7Fo-.js} +4 -4
  110. package/dist/chunks/{section-DzOLLN1p.js.map → section-BsET7Fo-.js.map} +1 -1
  111. package/dist/chunks/{segmented-MrinfDL8.js → segmented-DXKVF-nY.js} +4 -4
  112. package/dist/chunks/{segmented-MrinfDL8.js.map → segmented-DXKVF-nY.js.map} +1 -1
  113. package/dist/chunks/{select-Bc4kRiSG.js → select-Bbv2f5F8.js} +63 -80
  114. package/dist/chunks/select-Bbv2f5F8.js.map +1 -0
  115. package/dist/chunks/{separator-D5AzVFTS.js → separator-CpAUELNs.js} +2 -2
  116. package/dist/chunks/{separator-D5AzVFTS.js.map → separator-CpAUELNs.js.map} +1 -1
  117. package/dist/chunks/{sidebar-5IA18LuP.js → sidebar-Dey1ZfGt.js} +54 -51
  118. package/dist/chunks/sidebar-Dey1ZfGt.js.map +1 -0
  119. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js → sidebar-menu-ct8IiL4z.js} +2 -2
  120. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js.map → sidebar-menu-ct8IiL4z.js.map} +1 -1
  121. package/dist/chunks/{skeleton-kfuqdl1a.js → skeleton-BM797MAg.js} +2 -2
  122. package/dist/chunks/{skeleton-kfuqdl1a.js.map → skeleton-BM797MAg.js.map} +1 -1
  123. package/dist/chunks/{slider-DbhjJ3ML.js → slider-Ds-tqY-1.js} +2 -2
  124. package/dist/chunks/{slider-DbhjJ3ML.js.map → slider-Ds-tqY-1.js.map} +1 -1
  125. package/dist/chunks/status-dot-BqVOlShY.js +29 -0
  126. package/dist/chunks/status-dot-BqVOlShY.js.map +1 -0
  127. package/dist/chunks/{styles-Btvg2DCf.js → styles-CVJU9t9v.js} +2 -2
  128. package/dist/chunks/{styles-Btvg2DCf.js.map → styles-CVJU9t9v.js.map} +1 -1
  129. package/dist/chunks/{swap-text-BhPI8DOf.js → swap-text-Cica0pUr.js} +2 -2
  130. package/dist/chunks/{swap-text-BhPI8DOf.js.map → swap-text-Cica0pUr.js.map} +1 -1
  131. package/dist/chunks/{switch-XMY_CQE-.js → switch-CSKMEomo.js} +3 -3
  132. package/dist/chunks/{switch-XMY_CQE-.js.map → switch-CSKMEomo.js.map} +1 -1
  133. package/dist/chunks/{table-DYKa86af.js → table-D-36EM7f.js} +2 -2
  134. package/dist/chunks/{table-DYKa86af.js.map → table-D-36EM7f.js.map} +1 -1
  135. package/dist/chunks/{tag-Dg89uYpV.js → tag-CwDKXVHj.js} +4 -4
  136. package/dist/chunks/{tag-Dg89uYpV.js.map → tag-CwDKXVHj.js.map} +1 -1
  137. package/dist/chunks/{text--5MKh2G4.js → text-Dvvgg5Jt.js} +3 -3
  138. package/dist/chunks/{text--5MKh2G4.js.map → text-Dvvgg5Jt.js.map} +1 -1
  139. package/dist/chunks/{textarea-Cj8iR82R.js → textarea-2d373OyU.js} +35 -31
  140. package/dist/chunks/textarea-2d373OyU.js.map +1 -0
  141. package/dist/chunks/timeseries-LRDAZHV0.js +339 -0
  142. package/dist/chunks/timeseries-LRDAZHV0.js.map +1 -0
  143. package/dist/chunks/{toolbar-Dw3uxpsE.js → toolbar-nVLFWH2i.js} +3 -3
  144. package/dist/chunks/{toolbar-Dw3uxpsE.js.map → toolbar-nVLFWH2i.js.map} +1 -1
  145. package/dist/chunks/{tooltip-DEbCCsru.js → tooltip-S1DmyLVl.js} +4 -4
  146. package/dist/chunks/{tooltip-DEbCCsru.js.map → tooltip-S1DmyLVl.js.map} +1 -1
  147. package/dist/chunks/{tooltip-root-DRd4ciUv.js → tooltip-root-vjylFUqw.js} +4 -4
  148. package/dist/chunks/{tooltip-root-DRd4ciUv.js.map → tooltip-root-vjylFUqw.js.map} +1 -1
  149. package/dist/chunks/{virtual-rows-BZe49bKi.js → virtual-rows-yAMjeAwj.js} +4 -3
  150. package/dist/chunks/virtual-rows-yAMjeAwj.js.map +1 -0
  151. package/dist/chunks/{zh-CN-C7GmVswt.js → zh-CN-CqEA4PCM.js} +37 -5
  152. package/dist/chunks/zh-CN-CqEA4PCM.js.map +1 -0
  153. package/dist/components/app-frame.js +2 -2
  154. package/dist/components/avatar.js +1 -1
  155. package/dist/components/badge.js +1 -1
  156. package/dist/components/banner.js +1 -1
  157. package/dist/components/button-group.js +33 -32
  158. package/dist/components/button-group.js.map +1 -1
  159. package/dist/components/button.js +1 -1
  160. package/dist/components/calendar.js +1 -1
  161. package/dist/components/charts/bar.js +34 -31
  162. package/dist/components/charts/bar.js.map +1 -1
  163. package/dist/components/charts/donut.js +2 -2
  164. package/dist/components/charts/gauge.js +2 -2
  165. package/dist/components/charts/heatmap.js +1 -1
  166. package/dist/components/charts/sankey.js +2 -2
  167. package/dist/components/charts/sparkline.js +1 -1
  168. package/dist/components/charts/timeseries.js +1 -252
  169. package/dist/components/charts.js +3 -3
  170. package/dist/components/checkbox.js +1 -1
  171. package/dist/components/code-block.js +2 -2
  172. package/dist/components/code.js +1 -1
  173. package/dist/components/collapsible.js +1 -1
  174. package/dist/components/combobox.js +1 -1
  175. package/dist/components/command-list.js +4 -0
  176. package/dist/components/command-palette.js +120 -171
  177. package/dist/components/command-palette.js.map +1 -1
  178. package/dist/components/copy-button.js +1 -1
  179. package/dist/components/data-table.js +251 -193
  180. package/dist/components/data-table.js.map +1 -1
  181. package/dist/components/date-picker.js +7 -7
  182. package/dist/components/date-picker.js.map +1 -1
  183. package/dist/components/dialog.js +7 -9
  184. package/dist/components/dialog.js.map +1 -1
  185. package/dist/components/display-options.js +67 -53
  186. package/dist/components/display-options.js.map +1 -1
  187. package/dist/components/empty.js +1 -1
  188. package/dist/components/field.js +1 -1
  189. package/dist/components/filter-chip.js +138 -63
  190. package/dist/components/filter-chip.js.map +1 -1
  191. package/dist/components/filter-row.js +2 -2
  192. package/dist/components/flow.js +2 -2
  193. package/dist/components/heading.js +1 -1
  194. package/dist/components/icon-button.js +1 -1
  195. package/dist/components/icon.js +1 -1
  196. package/dist/components/input.js +56 -54
  197. package/dist/components/input.js.map +1 -1
  198. package/dist/components/kaeso/conversation.js +88 -79
  199. package/dist/components/kaeso/conversation.js.map +1 -1
  200. package/dist/components/kaeso/identity.js +1 -1
  201. package/dist/components/kaeso/moments.js +8 -8
  202. package/dist/components/kaeso/moments.js.map +1 -1
  203. package/dist/components/kaeso/rights.js +1 -1
  204. package/dist/components/kaeso/usage.js +6 -6
  205. package/dist/components/kaeso/usage.js.map +1 -1
  206. package/dist/components/kaeso.js +212 -84
  207. package/dist/components/kaeso.js.map +1 -1
  208. package/dist/components/kbd.js +1 -1
  209. package/dist/components/key-value.js +3 -3
  210. package/dist/components/label.js +1 -1
  211. package/dist/components/layout.js +1 -1
  212. package/dist/components/link.js +1 -1
  213. package/dist/components/list.js +1 -1
  214. package/dist/components/loader.js +2 -2
  215. package/dist/components/logo.js +2 -2
  216. package/dist/components/markdown.js +1 -1
  217. package/dist/components/menu.js +2 -2
  218. package/dist/components/meter.js +1 -1
  219. package/dist/components/page-header.js +1 -1
  220. package/dist/components/pagination.js +1 -1
  221. package/dist/components/playground.js +654 -381
  222. package/dist/components/playground.js.map +1 -1
  223. package/dist/components/popover.js +2 -2
  224. package/dist/components/qr-code.js +1 -1
  225. package/dist/components/radio.js +1 -1
  226. package/dist/components/release-art.js +2 -0
  227. package/dist/components/scroll-area.js +1 -1
  228. package/dist/components/section.js +1 -1
  229. package/dist/components/segmented.js +1 -1
  230. package/dist/components/select.js +1 -1
  231. package/dist/components/separator.js +1 -1
  232. package/dist/components/settings.js +3 -3
  233. package/dist/components/sheet.js +69 -52
  234. package/dist/components/sheet.js.map +1 -1
  235. package/dist/components/sidebar.js +1 -1
  236. package/dist/components/skeleton.js +1 -1
  237. package/dist/components/slider.js +1 -1
  238. package/dist/components/stat.js +88 -74
  239. package/dist/components/stat.js.map +1 -1
  240. package/dist/components/status-dot.js +1 -1
  241. package/dist/components/surface.js +1 -1
  242. package/dist/components/swap-text.js +1 -1
  243. package/dist/components/switch.js +1 -1
  244. package/dist/components/table.js +1 -1
  245. package/dist/components/tabs.js +48 -49
  246. package/dist/components/tabs.js.map +1 -1
  247. package/dist/components/tag.js +1 -1
  248. package/dist/components/text.js +1 -1
  249. package/dist/components/theme-image.js +1 -1
  250. package/dist/components/theme-menu.js +2 -2
  251. package/dist/components/theme-select.js +1 -1
  252. package/dist/components/timeline.js +1 -1
  253. package/dist/components/toast.js +4 -4
  254. package/dist/components/toc.js +1 -1
  255. package/dist/components/toolbar.js +1 -1
  256. package/dist/components/tooltip.js +1 -1
  257. package/dist/components/visually-hidden.js +1 -1
  258. package/dist/format.js +132 -79
  259. package/dist/format.js.map +1 -1
  260. package/dist/i18n-provider.js +1 -1
  261. package/dist/index.js +115 -111
  262. package/dist/kaeso.css +43 -8
  263. package/dist/styles.css +1 -1
  264. package/dist/types/components/charts/bar.d.ts +6 -0
  265. package/dist/types/components/charts/core.d.ts +2 -2
  266. package/dist/types/components/charts/docs.d.ts +7 -0
  267. package/dist/types/components/charts/time-axis.d.ts +5 -0
  268. package/dist/types/components/charts/timeseries.d.ts +9 -0
  269. package/dist/types/components/code-block/highlighter.d.ts +2 -0
  270. package/dist/types/components/combobox/combobox.d.ts +2 -0
  271. package/dist/types/components/combobox/docs.d.ts +2 -4
  272. package/dist/types/components/command-list/command-list.d.ts +84 -0
  273. package/dist/types/components/command-list/docs.d.ts +52 -0
  274. package/dist/types/components/command-list/index.d.ts +3 -0
  275. package/dist/types/components/command-list/match.d.ts +1 -0
  276. package/dist/types/components/command-list/picker-popover.d.ts +44 -0
  277. package/dist/types/components/data-table/data-table.d.ts +3 -2
  278. package/dist/types/components/data-table/docs.d.ts +1 -0
  279. package/dist/types/components/date-picker/docs.d.ts +0 -6
  280. package/dist/types/components/dialog/dialog.d.ts +24 -0
  281. package/dist/types/components/dialog/docs.d.ts +4 -0
  282. package/dist/types/components/display-options/display-options.d.ts +1 -0
  283. package/dist/types/components/filter-chip/docs.d.ts +4 -0
  284. package/dist/types/components/filter-chip/filter-chip.d.ts +7 -0
  285. package/dist/types/components/input/docs.d.ts +2 -12
  286. package/dist/types/components/input/number-input.d.ts +1 -0
  287. package/dist/types/components/input/tag-input.d.ts +1 -0
  288. package/dist/types/components/kaeso/docs.d.ts +34 -0
  289. package/dist/types/components/kaeso/identity.d.ts +10 -1
  290. package/dist/types/components/kaeso/index.d.ts +1 -0
  291. package/dist/types/components/kaeso/provider-marks.d.ts +5 -1
  292. package/dist/types/components/kaeso/provider-picker.d.ts +42 -0
  293. package/dist/types/components/list/docs.d.ts +2 -0
  294. package/dist/types/components/list/list.d.ts +2 -0
  295. package/dist/types/components/menu/styles.d.ts +1 -1
  296. package/dist/types/components/playground/docs.d.ts +32 -0
  297. package/dist/types/components/playground/index.d.ts +1 -0
  298. package/dist/types/components/playground/model-picker.d.ts +39 -4
  299. package/dist/types/components/playground/reasoning.d.ts +29 -0
  300. package/dist/types/components/playground/response-view.d.ts +7 -1
  301. package/dist/types/components/release-art/docs.d.ts +13 -0
  302. package/dist/types/components/release-art/drawing.d.ts +48 -0
  303. package/dist/types/components/release-art/index.d.ts +1 -0
  304. package/dist/types/components/release-art/release-art.d.ts +37 -0
  305. package/dist/types/components/select/docs.d.ts +0 -2
  306. package/dist/types/components/select/option-checkbox.d.ts +1 -0
  307. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  308. package/dist/types/components/stat/docs.d.ts +1 -0
  309. package/dist/types/components/stat/stat.d.ts +1 -0
  310. package/dist/types/components/status-dot/docs.d.ts +2 -0
  311. package/dist/types/components/status-dot/status-dot.d.ts +2 -0
  312. package/dist/types/format/index.d.ts +8 -0
  313. package/dist/types/index.d.ts +2 -0
  314. package/dist/types/utils/index.d.ts +1 -1
  315. package/dist/types/utils/inset.d.ts +5 -0
  316. package/dist/types/utils/over-sheet.d.ts +1 -0
  317. package/dist/types/utils/restore-focus.d.ts +1 -1
  318. package/dist/utils.js +4 -4
  319. package/foundations/accessibility.md +1 -0
  320. package/foundations/layout.md +45 -0
  321. package/foundations/writing.md +1 -0
  322. package/package.json +2 -2
  323. package/dist/chunks/app-frame-BXh-06HL.js +0 -214
  324. package/dist/chunks/app-frame-BXh-06HL.js.map +0 -1
  325. package/dist/chunks/cn-CidVUKMm.js.map +0 -1
  326. package/dist/chunks/code-block-DxtladFW.js.map +0 -1
  327. package/dist/chunks/collapsible-Cw_1aem5.js.map +0 -1
  328. package/dist/chunks/combobox-D30Wt11R.js +0 -291
  329. package/dist/chunks/combobox-D30Wt11R.js.map +0 -1
  330. package/dist/chunks/core-K960A4OT.js.map +0 -1
  331. package/dist/chunks/de-CTAo4KL7.js.map +0 -1
  332. package/dist/chunks/dialog-LNKgPEsV.js +0 -319
  333. package/dist/chunks/dialog-LNKgPEsV.js.map +0 -1
  334. package/dist/chunks/field-d8V94bvZ.js.map +0 -1
  335. package/dist/chunks/field-press-DwzBFafd.js +0 -10
  336. package/dist/chunks/field-press-DwzBFafd.js.map +0 -1
  337. package/dist/chunks/identity-BtZC_d_Q.js +0 -342
  338. package/dist/chunks/identity-BtZC_d_Q.js.map +0 -1
  339. package/dist/chunks/input-group-CYA1MEoZ.js.map +0 -1
  340. package/dist/chunks/inset-BLMdxX4I.js.map +0 -1
  341. package/dist/chunks/list-CzaiyNja.js +0 -483
  342. package/dist/chunks/list-CzaiyNja.js.map +0 -1
  343. package/dist/chunks/nav-sheet-BIErlV74.js +0 -58
  344. package/dist/chunks/nav-sheet-BIErlV74.js.map +0 -1
  345. package/dist/chunks/range-popup-DGOnGGag.js +0 -111
  346. package/dist/chunks/range-popup-DGOnGGag.js.map +0 -1
  347. package/dist/chunks/resize-motion-CMaidkwe.js.map +0 -1
  348. package/dist/chunks/rights-BbiJ0AJB.js.map +0 -1
  349. package/dist/chunks/select-Bc4kRiSG.js.map +0 -1
  350. package/dist/chunks/sidebar-5IA18LuP.js.map +0 -1
  351. package/dist/chunks/status-dot-CBoQpyL4.js +0 -25
  352. package/dist/chunks/status-dot-CBoQpyL4.js.map +0 -1
  353. package/dist/chunks/textarea-Cj8iR82R.js.map +0 -1
  354. package/dist/chunks/virtual-rows-BZe49bKi.js.map +0 -1
  355. package/dist/chunks/zh-CN-C7GmVswt.js.map +0 -1
  356. package/dist/components/charts/timeseries.js.map +0 -1
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as Accordion, n as Collapsible, r as KAESO_COLLAPSIBLE_DEFAULT_VARIANTS, i as KAESO_COLLAPSIBLE_VARIANTS } from "../chunks/collapsible-Cw_1aem5.js";
2
+ export { t as Accordion, n as Collapsible, r as KAESO_COLLAPSIBLE_DEFAULT_VARIANTS, i as KAESO_COLLAPSIBLE_VARIANTS } from "../chunks/collapsible-CDQq1Y9x.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as Autocomplete, n as Combobox, r as Highlight, i as KAESO_COMBOBOX_DEFAULT_VARIANTS, a as KAESO_COMBOBOX_VARIANTS } from "../chunks/combobox-D30Wt11R.js";
2
+ export { t as Autocomplete, n as Combobox, r as Highlight, i as KAESO_COMBOBOX_DEFAULT_VARIANTS, a as KAESO_COMBOBOX_VARIANTS } from "../chunks/combobox-DqtzsAKG.js";
@@ -0,0 +1,4 @@
1
+ "use client";
2
+ import { a as e, i as t, n, r, t as i } from "../chunks/command-list-D5k0uvkR.js";
3
+ import { i as a, n as o, r as s, t as c } from "../chunks/picker-popover-C4ElNk7t.js";
4
+ export { i as CommandList, n as CommandListHeightContext, r as KAESO_COMMAND_LIST_DEFAULT_VARIANTS, t as KAESO_COMMAND_LIST_VARIANTS, c as KAESO_PICKER_POPOVER_DEFAULT_VARIANTS, o as KAESO_PICKER_POPOVER_VARIANTS, s as PickerPopover, a as PickerTrigger, e as commandMatch };
@@ -1,224 +1,173 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-CidVUKMm.js";
2
+ import { t as e } from "../chunks/cn-DUDmdLpZ.js";
3
3
  import { r as t } from "../chunks/portal-context-BBbzDKmY.js";
4
4
  import { i as n } from "../chunks/context-BELWW79w.js";
5
- import { t as r } from "../chunks/icon-CeNQtobn.js";
6
- import { i, r as a } from "../chunks/kbd-CBcBDvqU.js";
7
- import { t as o } from "../chunks/field-press-DwzBFafd.js";
8
- import { a as s, i as c, r as l, t as u } from "../chunks/resize-motion-CMaidkwe.js";
9
- import { Fragment as d, useCallback as f, useEffect as p, useId as m, useMemo as h, useRef as g, useState as _ } from "react";
10
- import { jsx as v, jsxs as y } from "react/jsx-runtime";
11
- import { ArrowRight01Icon as b, Search01Icon as x } from "@hugeicons/core-free-icons";
12
- import { Dialog as S } from "@base-ui/react/dialog";
5
+ import { t as r } from "../chunks/icon-BqujXDUc.js";
6
+ import { i, r as a } from "../chunks/kbd-DqWmbr_e.js";
7
+ import { t as o } from "../chunks/command-list-D5k0uvkR.js";
8
+ import { a as s, i as c, r as l, t as u } from "../chunks/resize-motion-BWGMchyP.js";
9
+ import { useCallback as d, useEffect as f, useMemo as p, useRef as m, useState as h } from "react";
10
+ import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
11
+ import { ArrowRight01Icon as y } from "@hugeicons/core-free-icons";
12
+ import { Dialog as b } from "@base-ui/react/dialog";
13
13
  //#region src/components/command-palette/command-palette.tsx
14
- var C = { size: { md: { classes: "w-640" } } }, w = { size: "md" };
15
- function T(e, t) {
16
- if (!t) return !0;
17
- let n = [
18
- e.label,
19
- e.hint ?? "",
20
- ...e.keywords ?? []
21
- ].join(" ").toLowerCase();
22
- return t.toLowerCase().split(/\s+/).every((e) => n.includes(e));
14
+ var x = { size: { md: { classes: "w-640" } } }, S = { size: "md" };
15
+ function C(e, t) {
16
+ let n = [e.label, ...e.keywords ?? []].join(" ").toLowerCase();
17
+ return +!!t.toLowerCase().split(/\s+/).every((e) => n.includes(e));
23
18
  }
24
- function E({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange: S, close: C, inline: w, defaultQuery: E = "", query: D }) {
25
- let O = n(), k = c ?? O("commandPalette.placeholder", "Search or run a command"), [A, j] = _(E), M = D ?? A, N = (e) => {
26
- j(e), S?.(e);
27
- }, [P, F] = _([]), [I, L] = _(0), R = m(), z = g(null), [B, V] = _(null), H = f((e) => V(w ? null : e?.parentElement ?? null), [w]);
28
- u(B);
29
- let U = P[P.length - 1], W = U ? U.groups : t, G = h(() => W.map((e) => ({
30
- ...e,
31
- items: e.items.filter((e) => T(e, M))
32
- })).filter((e) => e.items.length > 0 || e.loading), [W, M]), K = G.flatMap((e) => e.items), q = W.some((e) => e.loading);
33
- p(() => {
34
- document.getElementById(`${R}-${K[I]?.id}`)?.scrollIntoView({ block: "nearest" });
35
- }, [
36
- I,
37
- K,
38
- R
39
- ]);
40
- let J = (e) => {
41
- if (!e) return;
42
- let t = e.children;
43
- t ? (F((n) => [...n, {
44
- title: e.label,
45
- groups: t
46
- }]), N(""), L(0), z.current?.focus()) : (e.onSelect?.(), C());
47
- }, Y = (e) => {
48
- e.key === "ArrowDown" ? (e.preventDefault(), L((e) => K.length ? (e + 1) % K.length : 0)) : e.key === "ArrowUp" ? (e.preventDefault(), L((e) => K.length ? (e - 1 + K.length) % K.length : 0)) : e.key === "Enter" ? (e.preventDefault(), J(K[I])) : e.key === "Backspace" && !M && P.length ? (e.preventDefault(), F((e) => e.slice(0, -1)), L(0)) : e.key === "Home" ? L(0) : e.key === "End" && L(Math.max(0, K.length - 1));
49
- }, X = -1;
50
- return /* @__PURE__ */ y("div", {
51
- ref: H,
52
- className: e("relative flex palette-limits min-h-0 flex-col overflow-hidden", w ? "w-640 rounded-palette bg-raised shadow-dialog" : "flex-1"),
53
- children: [
54
- q && /* @__PURE__ */ v("span", {
55
- "aria-hidden": !0,
56
- className: "absolute inset-x-0 top-0 h-2 overflow-hidden",
57
- children: /* @__PURE__ */ v("span", { className: "block h-full w-1/3 animate-indeterminate bg-fg-tertiary" })
58
- }),
59
- /* @__PURE__ */ y("div", {
60
- onMouseDown: o,
61
- className: "flex h-56 shrink-0 cursor-text items-center gap-12 px-20 hairline-b",
62
- children: [
63
- /* @__PURE__ */ v(r, {
64
- icon: x,
65
- size: "md",
66
- className: "text-fg-tertiary"
67
- }),
68
- U && /* @__PURE__ */ v("span", {
69
- className: "inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg",
70
- children: U.title
71
- }),
72
- /* @__PURE__ */ v("input", {
73
- ref: z,
74
- autoFocus: !0,
75
- "data-palette-input": "",
76
- role: "combobox",
77
- "aria-expanded": "true",
78
- "aria-controls": R,
79
- "aria-autocomplete": "list",
80
- "aria-activedescendant": K[I] ? `${R}-${K[I].id}` : void 0,
81
- "aria-label": k,
82
- placeholder: k,
83
- value: M,
84
- onChange: (e) => {
85
- N(e.target.value), L(0);
86
- },
87
- onKeyDown: Y,
88
- className: "min-w-0 flex-1 bg-transparent text-body-lg font-regular text-fg outline-none placeholder:text-fg-tertiary"
89
- })
90
- ]
91
- }),
92
- /* @__PURE__ */ y("div", {
93
- id: R,
94
- "data-dialog-body": "",
95
- ...K.length ? {
96
- role: "listbox",
97
- "aria-label": O("commandPalette.results", "Results")
98
- } : { role: "status" },
99
- className: "min-h-0 flex-1 overflow-y-auto overscroll-contain p-8 scrollbar-quiet",
100
- children: [K.length === 0 && !q && /* @__PURE__ */ v("div", {
101
- className: "flex h-80 items-center justify-center text-body text-fg-secondary",
102
- children: l ?? O("commandPalette.noResults", "No results")
103
- }), G.map((t, n) => /* @__PURE__ */ y(d, { children: [t.label && /* @__PURE__ */ v("div", {
104
- className: "flex h-28 items-center px-12 pt-4 text-caption font-medium text-fg-secondary",
19
+ function w({ groups: t, keyHints: s, placeholder: c, emptyText: l, onQueryChange: f, close: b, inline: x, defaultQuery: S = "", query: w }) {
20
+ let T = n(), E = c ?? T("commandPalette.placeholder", "Search or run a command"), [D, O] = h(S), k = w ?? D, A = (e) => {
21
+ O(e), f?.(e);
22
+ }, [j, M] = h([]), N = m(null), [P, F] = h(null), I = d((e) => F(x ? null : e?.parentElement ?? null), [x]);
23
+ u(P);
24
+ let L = j[j.length - 1], R = L ? L.groups : t, z = R.some((e) => e.loading), B = p(() => new Map(R.flatMap((e) => e.items.map((e) => [e.id, e]))), [R]), V = p(() => R.map((t, n) => ({
25
+ id: `${n}:${t.label ?? ""}`,
26
+ ...t.label ? { label: t.label } : {},
27
+ ...t.loading ? { loading: !0 } : {},
28
+ items: t.items.map((t) => ({
29
+ value: t.id,
30
+ label: t.label,
31
+ keywords: [t.hint ?? "", ...t.keywords ?? []],
32
+ render: ({ active: n }) => /* @__PURE__ */ v(g, { children: [
33
+ t.icon && /* @__PURE__ */ _(r, {
34
+ icon: t.icon,
35
+ size: "sm",
36
+ className: n ? "text-fg" : "text-fg-secondary"
37
+ }),
38
+ /* @__PURE__ */ _("span", {
39
+ className: "min-w-0 truncate",
105
40
  children: t.label
106
- }), t.items.map((t) => {
107
- X += 1;
108
- let n = X, a = n === I;
109
- return /* @__PURE__ */ y("div", {
110
- id: `${R}-${t.id}`,
111
- role: "option",
112
- "aria-selected": a,
113
- onMouseMove: () => L(n),
114
- onClick: () => J(t),
115
- className: e("flex h-40 cursor-pointer items-center gap-12 rounded-palette-item px-12 text-body font-medium text-fg select-none", a && "bg-item-hover"),
116
- children: [
117
- t.icon && /* @__PURE__ */ v(r, {
118
- icon: t.icon,
119
- size: "sm",
120
- className: a ? "text-fg" : "text-fg-secondary"
121
- }),
122
- /* @__PURE__ */ v("span", {
123
- className: "min-w-0 truncate",
124
- children: t.label
125
- }),
126
- t.hint && /* @__PURE__ */ v("span", {
127
- className: e("min-w-0 truncate text-body font-regular", a ? "text-fg-secondary" : "text-fg-tertiary"),
128
- children: t.hint
129
- }),
130
- /* @__PURE__ */ y("span", {
131
- className: "ml-auto flex shrink-0 items-center gap-8",
132
- children: [t.shortcut && /* @__PURE__ */ v(i, { keys: t.shortcut }), t.children && /* @__PURE__ */ v(r, {
133
- icon: b,
134
- size: "sm",
135
- className: "text-fg-tertiary"
136
- })]
137
- })
138
- ]
139
- }, t.id);
140
- })] }, t.label ?? n))]
41
+ }),
42
+ t.hint && /* @__PURE__ */ _("span", {
43
+ className: e("min-w-0 truncate text-body font-regular", n ? "text-fg-secondary" : "text-fg-tertiary"),
44
+ children: t.hint
45
+ }),
46
+ /* @__PURE__ */ v("span", {
47
+ className: "ml-auto flex shrink-0 items-center gap-8",
48
+ children: [t.shortcut && /* @__PURE__ */ _(i, { keys: t.shortcut }), t.children && /* @__PURE__ */ _(r, {
49
+ icon: y,
50
+ size: "sm",
51
+ className: "text-fg-tertiary"
52
+ })]
53
+ })
54
+ ] })
55
+ }))
56
+ })), [R]);
57
+ return /* @__PURE__ */ _("div", {
58
+ ref: I,
59
+ className: e("relative flex palette-limits min-h-0 flex-col overflow-hidden", x ? "w-640 rounded-palette bg-raised shadow-dialog" : "flex-1"),
60
+ children: /* @__PURE__ */ _(o, {
61
+ ref: N,
62
+ groups: V,
63
+ "aria-label": T("commandPalette.results", "Results"),
64
+ size: "lg",
65
+ height: "fill",
66
+ escapeClears: !1,
67
+ match: C,
68
+ inputProps: { "data-palette-input": "" },
69
+ autoFocus: !0,
70
+ query: k,
71
+ onQueryChange: A,
72
+ onSelect: (e) => {
73
+ let t = B.get(e);
74
+ if (!t) return;
75
+ let n = t.children;
76
+ n ? (M((e) => [...e, {
77
+ title: t.label,
78
+ groups: n
79
+ }]), A(""), N.current?.focus()) : (t.onSelect?.(), b());
80
+ },
81
+ loading: z,
82
+ placeholder: E,
83
+ emptyText: l ?? T("commandPalette.noResults", "No results"),
84
+ searchPrefix: L && /* @__PURE__ */ _("span", {
85
+ className: "inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg",
86
+ children: L.title
141
87
  }),
142
- s && /* @__PURE__ */ y("div", {
88
+ onInputKeyDown: (e) => {
89
+ e.key === "Backspace" && !k && j.length && (e.preventDefault(), M((e) => e.slice(0, -1)));
90
+ },
91
+ footer: s && /* @__PURE__ */ v("div", {
143
92
  className: "flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t",
144
93
  children: [
145
- /* @__PURE__ */ y("span", {
94
+ /* @__PURE__ */ v("span", {
146
95
  className: "inline-flex items-center gap-6",
147
96
  children: [
148
- /* @__PURE__ */ v(a, { children: "up" }),
149
- /* @__PURE__ */ v(a, { children: "down" }),
97
+ /* @__PURE__ */ _(a, { children: "up" }),
98
+ /* @__PURE__ */ _(a, { children: "down" }),
150
99
  " ",
151
- O("commandPalette.toNavigate", "to navigate")
100
+ T("commandPalette.toNavigate", "to navigate")
152
101
  ]
153
102
  }),
154
- /* @__PURE__ */ y("span", {
103
+ /* @__PURE__ */ v("span", {
155
104
  className: "inline-flex items-center gap-6",
156
105
  children: [
157
- /* @__PURE__ */ v(a, { children: "enter" }),
106
+ /* @__PURE__ */ _(a, { children: "enter" }),
158
107
  " ",
159
- O("commandPalette.toOpen", "to open")
108
+ T("commandPalette.toOpen", "to open")
160
109
  ]
161
110
  }),
162
- P.length > 0 && /* @__PURE__ */ y("span", {
111
+ j.length > 0 && /* @__PURE__ */ v("span", {
163
112
  className: "inline-flex items-center gap-6",
164
113
  children: [
165
- /* @__PURE__ */ v(a, { children: "backspace" }),
114
+ /* @__PURE__ */ _(a, { children: "backspace" }),
166
115
  " ",
167
- O("commandPalette.toGoBack", "to go back")
116
+ T("commandPalette.toGoBack", "to go back")
168
117
  ]
169
118
  }),
170
- /* @__PURE__ */ y("span", {
119
+ /* @__PURE__ */ v("span", {
171
120
  className: "ml-auto inline-flex items-center gap-6",
172
121
  children: [
173
- /* @__PURE__ */ v(a, { children: "esc" }),
122
+ /* @__PURE__ */ _(a, { children: "esc" }),
174
123
  " ",
175
- O("commandPalette.toClose", "to close")
124
+ T("commandPalette.toClose", "to close")
176
125
  ]
177
126
  })
178
127
  ]
179
128
  })
180
- ]
129
+ })
181
130
  });
182
131
  }
183
- function D(e) {
184
- let { open: r, onOpenChange: i, hotkey: a = !0, inline: o } = e, [u, d] = _(!1), f = r ?? u, m = (e) => {
132
+ function T(e) {
133
+ let { open: r, onOpenChange: i, hotkey: a = !0, inline: o } = e, [u, d] = h(!1), p = r ?? u, g = (e) => {
185
134
  r === void 0 && d(e), i?.(e);
186
- }, h = g(() => m(!f));
187
- h.current = () => m(!f), p(() => {
135
+ }, y = m(() => g(!p));
136
+ y.current = () => g(!p), f(() => {
188
137
  if (!a || o) return;
189
138
  let e = (e) => {
190
- (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), h.current());
139
+ (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), y.current());
191
140
  };
192
141
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
193
142
  }, [a, o]);
194
- let b = s(f), x = n(), C = t(), w = c(!o && f), T = l(f);
195
- return o ? /* @__PURE__ */ v(E, {
143
+ let x = s(p), S = n(), C = t(), T = c(!o && p), E = l(p);
144
+ return o ? /* @__PURE__ */ _(w, {
196
145
  ...e,
197
146
  close: () => void 0
198
- }) : /* @__PURE__ */ v(S.Root, {
199
- open: f,
200
- onOpenChange: (e) => m(e),
201
- onOpenChangeComplete: w,
202
- children: /* @__PURE__ */ y(S.Portal, {
147
+ }) : /* @__PURE__ */ _(b.Root, {
148
+ open: p,
149
+ onOpenChange: (e) => g(e),
150
+ onOpenChangeComplete: T,
151
+ children: /* @__PURE__ */ v(b.Portal, {
203
152
  container: C,
204
- children: [/* @__PURE__ */ v(S.Backdrop, { className: "fixed inset-0 z-50 bg-overlay backdrop-motion" }), /* @__PURE__ */ v(S.Viewport, {
153
+ children: [/* @__PURE__ */ _(b.Backdrop, { className: "fixed inset-0 z-50 bg-overlay backdrop-motion" }), /* @__PURE__ */ _(b.Viewport, {
205
154
  className: "fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette",
206
- children: /* @__PURE__ */ v(S.Popup, {
207
- "aria-label": x("commandPalette.label", "Command palette"),
208
- initialFocus: b.initialFocus,
209
- finalFocus: b.finalFocus,
155
+ children: /* @__PURE__ */ _(b.Popup, {
156
+ "aria-label": S("commandPalette.label", "Command palette"),
157
+ initialFocus: x.initialFocus,
158
+ finalFocus: x.finalFocus,
210
159
  className: "flex w-640 max-w-full flex-col overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion",
211
- children: /* @__PURE__ */ v(E, {
160
+ children: /* @__PURE__ */ _(w, {
212
161
  ...e,
213
- close: () => m(!1)
214
- }, T)
162
+ close: () => g(!1)
163
+ }, E)
215
164
  })
216
165
  })]
217
166
  })
218
167
  });
219
168
  }
220
- process.env.NODE_ENV !== "production" && (D.displayName = "CommandPalette");
169
+ process.env.NODE_ENV !== "production" && (T.displayName = "CommandPalette");
221
170
  //#endregion
222
- export { D as CommandPalette, w as KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS, C as KAESO_COMMAND_PALETTE_VARIANTS };
171
+ export { T as CommandPalette, S as KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS, x as KAESO_COMMAND_PALETTE_VARIANTS };
223
172
 
224
173
  //# sourceMappingURL=command-palette.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-palette.js","names":["__icon_Search01Icon","__icon_ArrowRight01Icon","BaseDialog","cn","usePortalContainer","useUiText","Icon","Kbd","focusInputOnPress","useRestoreFocus","useScopedDialog","useOpenSession","useResizeMotion","KAESO_COMMAND_PALETTE_VARIANTS","KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS","matches","q","hay","item","w","Palette","placeholderProp","controlledQuery","t","placeholder","ownQuery","setOwnQuery","useState","defaultQuery","query","setQuery","next","onQueryChange","pages","setPages","active","setActive","listId","useId","input","useRef","box","setBox","boxRef","useCallback","inline","el","page","source","groups","visible","useMemo","g","i","flat","loading","select","children","p","close","onKeyDown","a","index","Search01Icon","emptyText","Fragment","isActive","KbdSequence","ArrowRight01Icon","gi","keyHints","CommandPalette","props","inner","setInner","isOpen","open","setOpen","o","onOpenChange","toggle","useEffect","hotkey","onKey","focus","container","settled","session","Dialog"],"sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, useCallback, useEffect, useId, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { focusInputOnPress } from \"../../utils/field-press.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { useOpenSession, useScopedDialog } from \"../../utils/dialog-scope.js\";\nimport { Search01Icon as __icon_Search01Icon, ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence, Kbd } from \"../kbd/kbd.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useResizeMotion } from \"../../utils/resize-motion.js\";\n\nexport const KAESO_COMMAND_PALETTE_VARIANTS = {\n size: {\n md: { classes: \"w-640\" },\n },\n} as const;\nexport const KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface CommandItem {\n id: string;\n label: string;\n icon?: IconData | undefined;\n hint?: string | undefined;\n shortcut?: string[] | string[][] | undefined;\n keywords?: string[] | undefined;\n onSelect?: (() => void) | undefined;\n children?: CommandGroup[] | undefined;\n}\n\nexport interface CommandGroup {\n label?: string | undefined;\n items: CommandItem[];\n loading?: boolean | undefined;\n}\n\nexport interface CommandPaletteProps {\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n groups: CommandGroup[];\n placeholder?: string | undefined;\n emptyText?: ReactNode | undefined;\n onQueryChange?: ((query: string) => void) | undefined;\n hotkey?: boolean | undefined;\n keyHints?: boolean | undefined;\n inline?: boolean | undefined;\n defaultQuery?: string | undefined;\n query?: string | undefined;\n}\n\nfunction matches(item: CommandItem, q: string) {\n if (!q) return true;\n const hay = [item.label, item.hint ?? \"\", ...(item.keywords ?? [])].join(\" \").toLowerCase();\n return q\n .toLowerCase()\n .split(/\\s+/)\n .every((w) => hay.includes(w));\n}\n\nfunction Palette({\n groups,\n keyHints,\n placeholder: placeholderProp,\n emptyText,\n onQueryChange,\n close,\n inline,\n defaultQuery = \"\",\n query: controlledQuery,\n}: CommandPaletteProps & { close: () => void }) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"commandPalette.placeholder\", \"Search or run a command\");\n const [ownQuery, setOwnQuery] = useState(defaultQuery);\n const query = controlledQuery ?? ownQuery;\n const setQuery = (next: string) => {\n setOwnQuery(next);\n onQueryChange?.(next);\n };\n const [pages, setPages] = useState<{ title: string; groups: CommandGroup[] }[]>([]);\n const [active, setActive] = useState(0);\n const listId = useId();\n const input = useRef<HTMLInputElement>(null);\n const [box, setBox] = useState<HTMLElement | null>(null);\n const boxRef = useCallback((el: HTMLElement | null) => setBox(inline ? null : (el?.parentElement ?? null)), [inline]);\n useResizeMotion(box);\n const page = pages[pages.length - 1];\n const source = page ? page.groups : groups;\n const visible = useMemo(\n () => source.map((g) => ({ ...g, items: g.items.filter((i) => matches(i, query)) })).filter((g) => g.items.length > 0 || g.loading),\n [source, query],\n );\n const flat = visible.flatMap((g) => g.items);\n const loading = source.some((g) => g.loading);\n useEffect(() => {\n document.getElementById(`${listId}-${flat[active]?.id}`)?.scrollIntoView({ block: \"nearest\" });\n }, [active, flat, listId]);\n\n const select = (item: CommandItem | undefined) => {\n if (!item) return;\n const children = item.children;\n if (children) {\n setPages((p) => [...p, { title: item.label, groups: children }]);\n setQuery(\"\");\n setActive(0);\n input.current?.focus();\n return;\n }\n item.onSelect?.();\n close();\n };\n\n const onKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setActive((a) => (flat.length ? (a + 1) % flat.length : 0));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setActive((a) => (flat.length ? (a - 1 + flat.length) % flat.length : 0));\n } else if (e.key === \"Enter\") {\n e.preventDefault();\n select(flat[active]);\n } else if (e.key === \"Backspace\" && !query && pages.length) {\n e.preventDefault();\n setPages((p) => p.slice(0, -1));\n setActive(0);\n } else if (e.key === \"Home\") {\n setActive(0);\n } else if (e.key === \"End\") {\n setActive(Math.max(0, flat.length - 1));\n }\n };\n\n let index = -1;\n return (\n <div\n ref={boxRef}\n className={cn(\"relative flex palette-limits min-h-0 flex-col overflow-hidden\", inline ? \"w-640 rounded-palette bg-raised shadow-dialog\" : \"flex-1\")}\n >\n {loading && (\n <span aria-hidden className=\"absolute inset-x-0 top-0 h-2 overflow-hidden\">\n <span className=\"block h-full w-1/3 animate-indeterminate bg-fg-tertiary\" />\n </span>\n )}\n <div onMouseDown={focusInputOnPress} className=\"flex h-56 shrink-0 cursor-text items-center gap-12 px-20 hairline-b\">\n <Icon icon={__icon_Search01Icon} size=\"md\" className=\"text-fg-tertiary\" />\n {page && <span className=\"inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg\">{page.title}</span>}\n <input\n ref={input}\n autoFocus\n data-palette-input=\"\"\n role=\"combobox\"\n aria-expanded=\"true\"\n aria-controls={listId}\n aria-autocomplete=\"list\"\n aria-activedescendant={flat[active] ? `${listId}-${flat[active].id}` : undefined}\n aria-label={placeholder}\n placeholder={placeholder}\n value={query}\n onChange={(e) => {\n setQuery(e.target.value);\n setActive(0);\n }}\n onKeyDown={onKeyDown}\n className=\"min-w-0 flex-1 bg-transparent text-body-lg font-regular text-fg outline-none placeholder:text-fg-tertiary\"\n />\n </div>\n <div\n id={listId}\n data-dialog-body=\"\"\n {...(flat.length ? { role: \"listbox\", \"aria-label\": t(\"commandPalette.results\", \"Results\") } : { role: \"status\" })}\n className=\"min-h-0 flex-1 overflow-y-auto overscroll-contain p-8 scrollbar-quiet\"\n >\n {flat.length === 0 && !loading && (\n <div className=\"flex h-80 items-center justify-center text-body text-fg-secondary\">{emptyText ?? t(\"commandPalette.noResults\", \"No results\")}</div>\n )}\n {visible.map((g, gi) => (\n <Fragment key={g.label ?? gi}>\n {g.label && <div className=\"flex h-28 items-center px-12 pt-4 text-caption font-medium text-fg-secondary\">{g.label}</div>}\n {g.items.map((item) => {\n index += 1;\n const i = index;\n const isActive = i === active;\n return (\n <div\n key={item.id}\n id={`${listId}-${item.id}`}\n role=\"option\"\n aria-selected={isActive}\n onMouseMove={() => setActive(i)}\n onClick={() => select(item)}\n className={cn(\n \"flex h-40 cursor-pointer items-center gap-12 rounded-palette-item px-12 text-body font-medium text-fg select-none\",\n isActive && \"bg-item-hover\",\n )}\n >\n {item.icon && <Icon icon={item.icon} size=\"sm\" className={isActive ? \"text-fg\" : \"text-fg-secondary\"} />}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.hint && (\n <span className={cn(\"min-w-0 truncate text-body font-regular\", isActive ? \"text-fg-secondary\" : \"text-fg-tertiary\")}>{item.hint}</span>\n )}\n <span className=\"ml-auto flex shrink-0 items-center gap-8\">\n {item.shortcut && <KbdSequence keys={item.shortcut} />}\n {item.children && <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"text-fg-tertiary\" />}\n </span>\n </div>\n );\n })}\n </Fragment>\n ))}\n </div>\n {keyHints && (\n <div className=\"flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t\">\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>up</Kbd>\n <Kbd>down</Kbd> {t(\"commandPalette.toNavigate\", \"to navigate\")}\n </span>\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>enter</Kbd> {t(\"commandPalette.toOpen\", \"to open\")}\n </span>\n {pages.length > 0 && (\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>backspace</Kbd> {t(\"commandPalette.toGoBack\", \"to go back\")}\n </span>\n )}\n <span className=\"ml-auto inline-flex items-center gap-6\">\n <Kbd>esc</Kbd> {t(\"commandPalette.toClose\", \"to close\")}\n </span>\n </div>\n )}\n </div>\n );\n}\n\nexport function CommandPalette(props: CommandPaletteProps) {\n const { open, onOpenChange, hotkey = true, inline } = props;\n const [inner, setInner] = useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const toggle = useRef(() => setOpen(!isOpen));\n toggle.current = () => setOpen(!isOpen);\n useEffect(() => {\n if (!hotkey || inline) return;\n const onKey = (e: globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [hotkey, inline]);\n const focus = useRestoreFocus(isOpen);\n const t = useUiText();\n const container = usePortalContainer();\n const settled = useScopedDialog(inline ? false : isOpen);\n const session = useOpenSession(isOpen);\n if (inline) return <Palette {...props} close={() => undefined} />;\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)} onOpenChangeComplete={settled}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"fixed inset-0 z-50 bg-overlay backdrop-motion\" />\n <BaseDialog.Viewport className=\"fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette\">\n <BaseDialog.Popup\n aria-label={t(\"commandPalette.label\", \"Command palette\")}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className=\"flex w-640 max-w-full flex-col overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion\"\n >\n <Palette key={session} {...props} close={() => setOpen(false)} />\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") CommandPalette.displayName = \"CommandPalette\";\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAaa,IAAiC,EAC5C,MAAM,EACJ,IAAI,EAAE,SAAS,QAAQ,EACzB,EACF,GACaC,IAAyC,EAAE,MAAM,KAAK;AAiCnE,SAASC,EAAQ,GAAmB,GAAW;CAC7C,IAAI,CAACC,GAAG,OAAO;CACf,IAAMC,IAAM;EAACC,EAAK;EAAOA,EAAK,QAAQ;EAAI,GAAIA,EAAK,YAAY,CAAC;CAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,YAAY;CAC1F,OAAOF,EACJ,YAAY,CAAC,CACb,MAAM,KAAK,CAAC,CACZ,OAAO,MAAMC,EAAI,SAASE,CAAC,CAAC;AACjC;AAEA,SAASC,EAAQ,EACf,WACA,aACA,aAAaC,GACb,cACA,kBACA,UACA,WACA,kBAAe,IACf,OAAOC,KACuC;CAC9C,IAAMC,IAAIlB,EAAU,GACdmB,IAAcH,KAAmBE,EAAE,8BAA8B,yBAAyB,GAC1F,CAACE,GAAUC,KAAeC,EAASC,CAAY,GAC/CC,IAAQP,KAAmBG,GAC3BK,KAAY,MAAiB;EAEjC,AADAJ,EAAYK,CAAI,GAChBC,IAAgBD,CAAI;CACtB,GACM,CAACE,GAAOC,KAAYP,EAAsD,CAAC,CAAC,GAC5E,CAACQ,GAAQC,KAAaT,EAAS,CAAC,GAChCU,IAASC,EAAM,GACfC,IAAQC,EAAyB,IAAI,GACrC,CAACC,GAAKC,KAAUf,EAA6B,IAAI,GACjDgB,IAASC,GAAa,MAA2BF,EAAOG,IAAS,OAAQC,GAAI,iBAAiB,IAAK,GAAG,CAACD,CAAM,CAAC;CACpH,EAAgBJ,CAAG;CACnB,IAAMM,IAAOd,EAAMA,EAAM,SAAS,IAC5Be,IAASD,IAAOA,EAAK,SAASE,GAC9BC,IAAUC,QACRH,EAAO,KAAK,OAAO;EAAE,GAAGI;EAAG,OAAOA,EAAE,MAAM,QAAQ,MAAMrC,EAAQsC,GAAGxB,CAAK,CAAC;CAAE,EAAE,CAAC,CAAC,QAAQ,MAAMuB,EAAE,MAAM,SAAS,KAAKA,EAAE,OAAO,GAClI,CAACJ,GAAQnB,CAAK,CAChB,GACMyB,IAAOJ,EAAQ,SAAS,MAAME,EAAE,KAAK,GACrCG,IAAUP,EAAO,MAAM,MAAMI,EAAE,OAAO;CAC5C,QAAgB;EACd,SAAS,eAAe,GAAGf,EAAO,GAAGiB,EAAKnB,EAAO,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,UAAU,CAAC;CAC/F,GAAG;EAACA;EAAQmB;EAAMjB;CAAM,CAAC;CAEzB,IAAMmB,KAAU,MAAkC;EAChD,IAAI,CAACtC,GAAM;EACX,IAAMuC,IAAWvC,EAAK;EACtB,AAAIuC,KACFvB,GAAU,MAAM,CAAC,GAAGwB,GAAG;GAAE,OAAOxC,EAAK;GAAO,QAAQuC;EAAS,CAAC,CAAC,GAC/D3B,EAAS,EAAE,GACXM,EAAU,CAAC,GACXG,EAAM,SAAS,MAAM,MAGvBrB,EAAK,WAAW,GAChByC,EAAM;CACR,GAEMC,KAAa,MAAuC;EACxD,AAAI,EAAE,QAAQ,eACZ,EAAE,eAAe,GACjBxB,GAAW,MAAOkB,EAAK,UAAUO,IAAI,KAAKP,EAAK,SAAS,CAAE,KACjD,EAAE,QAAQ,aACnB,EAAE,eAAe,GACjBlB,GAAW,MAAOkB,EAAK,UAAUO,IAAI,IAAIP,EAAK,UAAUA,EAAK,SAAS,CAAE,KAC/D,EAAE,QAAQ,WACnB,EAAE,eAAe,GACjBE,EAAOF,EAAKnB,EAAO,KACV,EAAE,QAAQ,eAAe,CAACN,KAASI,EAAM,UAClD,EAAE,eAAe,GACjBC,GAAU,MAAMwB,EAAE,MAAM,GAAG,EAAE,CAAC,GAC9BtB,EAAU,CAAC,KACF,EAAE,QAAQ,SACnBA,EAAU,CAAC,IACF,EAAE,QAAQ,SACnBA,EAAU,KAAK,IAAI,GAAGkB,EAAK,SAAS,CAAC,CAAC;CAE1C,GAEIQ,IAAQ;CACZ,OACE,kBAAC,OAAD;EACE,KAAKnB;EACL,WAAWxC,EAAG,iEAAiE0C,IAAS,kDAAkD,QAAQ;EAFpJ,UAAA;GAIGU,KACC,kBAAC,QAAD;IAAM,eAAA;IAAY,WAAU;IAC1B,UAAA,kBAAC,QAAD,EAAM,WAAU,0DAA2D,CAAA;GACvE,CAAA;GAER,kBAAC,OAAD;IAAK,aAAa/C;IAAmB,WAAU;IAA/C,UAAA;KACE,kBAACF,GAAD;MAAM,MAAMN;MAAqB,MAAK;MAAK,WAAU;KAAoB,CAAA;KACxE+C,KAAQ,kBAAC,QAAD;MAAM,WAAU;MAAwG,UAAAA,EAAK;KAAY,CAAA;KAClJ,kBAAC,SAAD;MACE,KAAKR;MACL,WAAA;MACA,sBAAmB;MACnB,MAAK;MACL,iBAAc;MACd,iBAAeF;MACf,qBAAkB;MAClB,yBAAuBiB,EAAKnB,KAAU,GAAGE,EAAO,GAAGiB,EAAKnB,EAAO,CAAC,OAAO,KAAA;MACvE,cAAYX;MACC;MACb,OAAOK;MACP,WAAW,MAAM;OAEf,AADAC,EAAS,EAAE,OAAO,KAAK,GACvBM,EAAU,CAAC;MACb;MACW;MACX,WAAU;KACX,CAAA;IACE;;GACL,kBAAC,OAAD;IACE,IAAIC;IACJ,oBAAiB;IACjB,GAAKiB,EAAK,SAAS;KAAE,MAAM;KAAW,cAAc/B,EAAE,0BAA0B,SAAS;IAAE,IAAI,EAAE,MAAM,SAAS;IAChH,WAAU;IAJZ,UAAA,CAMG+B,EAAK,WAAW,KAAK,CAACC,KACrB,kBAAC,OAAD;KAAK,WAAU;KAAqE,UAAAS,KAAazC,EAAE,4BAA4B,YAAY;IAAO,CAAA,GAEnJ2B,EAAQ,KAAK,GAAG,MACf,kBAACe,GAAD,EAAA,UAAA,CACGb,EAAE,SAAS,kBAAC,OAAD;KAAK,WAAU;KAAgF,UAAAA,EAAE;IAAW,CAAA,GACvHA,EAAE,MAAM,KAAK,MAAS;KACrB,KAAS;KACT,IAAMC,IAAIS,GACJI,IAAWb,MAAMlB;KACvB,OACE,kBAAC,OAAD;MAEE,IAAI,GAAGE,EAAO,GAAGnB,EAAK;MACtB,MAAK;MACL,iBAAegD;MACf,mBAAmB9B,EAAUiB,CAAC;MAC9B,eAAeG,EAAOtC,CAAI;MAC1B,WAAWf,EACT,qHACA+D,KAAY,eACd;MAVF,UAAA;OAYGhD,EAAK,QAAQ,kBAACZ,GAAD;QAAM,MAAMY,EAAK;QAAM,MAAK;QAAK,WAAWgD,IAAW,YAAY;OAAsB,CAAA;OACvG,kBAAC,QAAD;QAAM,WAAU;QAAoB,UAAAhD,EAAK;OAAY,CAAA;OACpDA,EAAK,QACJ,kBAAC,QAAD;QAAM,WAAWf,EAAG,2CAA2C+D,IAAW,sBAAsB,kBAAkB;QAAI,UAAAhD,EAAK;OAAW,CAAA;OAExI,kBAAC,QAAD;QAAM,WAAU;QAAhB,UAAA,CACGA,EAAK,YAAY,kBAACiD,GAAD,EAAa,MAAMjD,EAAK,SAAW,CAAA,GACpDA,EAAK,YAAY,kBAACZ,GAAD;SAAM,MAAML;SAAyB,MAAK;SAAK,WAAU;QAAoB,CAAA,CAC3F;;MACH;KApBE,GAAAiB,EAAK,EAoBP;IAET,CAAC,CACO,EAAA,GA/BKkC,EAAE,SAASiB,CA+BhB,CACX,CACE;;GACJC,KACC,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACE,kBAAC/D,GAAD,EAAA,UAAK,KAAO,CAAA;OACZ,kBAACA,GAAD,EAAA,UAAK,OAAS,CAAA;OAAC;OAAEgB,EAAE,6BAA6B,aAAa;MACzD;;KACN,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACE,kBAAChB,GAAD,EAAA,UAAK,QAAU,CAAA;OAAC;OAAEgB,EAAE,yBAAyB,SAAS;MAClD;;KACLU,EAAM,SAAS,KACd,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACE,kBAAC1B,GAAD,EAAA,UAAK,YAAc,CAAA;OAAC;OAAEgB,EAAE,2BAA2B,YAAY;MAC3D;;KAER,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACE,kBAAChB,GAAD,EAAA,UAAK,MAAQ,CAAA;OAAC;OAAEgB,EAAE,0BAA0B,UAAU;MAClD;;IACH;;EAEJ;;AAET;AAEA,SAAgBgD,EAAe,GAA4B;CACzD,IAAM,EAAE,SAAM,iBAAc,YAAS,IAAM,cAAWC,GAChD,CAACC,GAAOC,KAAY/C,EAAS,EAAK,GAClCgD,IAASC,KAAQH,GACjBI,KAAW,MAAe;EAE9B,AADID,MAAS,KAAA,KAAWF,EAASI,CAAC,GAClCC,IAAeD,CAAC;CAClB,GACME,IAASxC,QAAaqC,EAAQ,CAACF,CAAM,CAAC;CAE5C,AADA,EAAO,gBAAgBE,EAAQ,CAACF,CAAM,GACtCM,QAAgB;EACd,IAAI,CAACC,KAAUrC,GAAQ;EACvB,IAAMsC,KAAS,MAAgC;GAC7C,CAAK,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,YAAY,MAAM,QACtD,EAAE,eAAe,GACjBH,EAAO,QAAQ;EAEnB;EAEA,OADA,OAAO,iBAAiB,WAAWG,CAAK,SAC3B,OAAO,oBAAoB,WAAWA,CAAK;CAC1D,GAAG,CAACD,GAAQrC,CAAM,CAAC;CACnB,IAAMuC,IAAQ3E,EAAgBkE,CAAM,GAC9BpD,IAAIlB,EAAU,GACdgF,IAAYjF,EAAmB,GAC/BkF,IAAU5E,EAAgB,MAAiBiE,CAAM,GACjDY,IAAU5E,EAAegE,CAAM;CAErC,OADI9B,IAAe,kBAACzB,GAAD;EAAS,GAAIoD;EAAO,aAAa,KAAA;CAAY,CAAA,IAE9D,kBAACtE,EAAW,MAAZ;EAAiB,MAAMyE;EAAQ,eAAe,MAAeE,EAAQC,CAAC;EAAG,sBAAsBQ;EAC7F,UAAA,kBAACpF,EAAW,QAAZ;GAA8B;GAA9B,UAAA,CACE,kBAACA,EAAW,UAAZ,EAAqB,WAAU,gDAAiD,CAAA,GAChF,kBAACA,EAAW,UAAZ;IAAqB,WAAU;IAC7B,UAAA,kBAACA,EAAW,OAAZ;KACE,cAAYqB,EAAE,wBAAwB,iBAAiB;KACvD,cAAc6D,EAAM;KACpB,YAAYA,EAAM;KAClB,WAAU;KAEV,UAAA,kBAAChE,GAAD;MAAuB,GAAIoD;MAAO,aAAaK,EAAQ,EAAK;KAAI,GAAlDU,CAAkD;IAChD,CAAA;GACC,CAAA,CACJ;;CACJ,CAAA;AAErB;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAe,cAAc"}
1
+ {"version":3,"file":"command-palette.js","names":["_Fragment","__icon_ArrowRight01Icon","BaseDialog","cn","usePortalContainer","useUiText","Icon","Kbd","CommandList","useRestoreFocus","useScopedDialog","useOpenSession","useResizeMotion","Fragment$1","KAESO_COMMAND_PALETTE_VARIANTS","KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS","matches","hay","item","w","Palette","placeholderProp","controlledQuery","t","placeholder","ownQuery","setOwnQuery","useState","defaultQuery","query","setQuery","next","onQueryChange","pages","setPages","input","useRef","box","setBox","boxRef","useCallback","inline","el","page","source","groups","loading","g","byId","useMemo","i","listGroups","gi","active","KbdSequence","ArrowRight01Icon","id","children","p","close","emptyText","keyHints","CommandPalette","props","inner","setInner","isOpen","open","setOpen","o","onOpenChange","toggle","useEffect","hotkey","onKey","focus","container","settled","session","Dialog"],"sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent, type ReactNode } from \"react\";\nimport { Dialog as BaseDialog } from \"@base-ui/react/dialog\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useRestoreFocus } from \"../../utils/restore-focus.js\";\nimport { useOpenSession, useScopedDialog } from \"../../utils/dialog-scope.js\";\nimport { ArrowRight01Icon as __icon_ArrowRight01Icon } from \"@hugeicons/core-free-icons\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { KbdSequence, Kbd } from \"../kbd/kbd.js\";\nimport { useUiText } from \"../../i18n/context.js\";\nimport { useResizeMotion } from \"../../utils/resize-motion.js\";\nimport { CommandList, type CommandListGroup, type CommandListItem, type CommandListRowState } from \"../command-list/command-list.js\";\n\nexport const KAESO_COMMAND_PALETTE_VARIANTS = {\n size: {\n md: { classes: \"w-640\" },\n },\n} as const;\nexport const KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface CommandItem {\n id: string;\n label: string;\n icon?: IconData | undefined;\n hint?: string | undefined;\n shortcut?: string[] | string[][] | undefined;\n keywords?: string[] | undefined;\n onSelect?: (() => void) | undefined;\n children?: CommandGroup[] | undefined;\n}\n\nexport interface CommandGroup {\n label?: string | undefined;\n items: CommandItem[];\n loading?: boolean | undefined;\n}\n\nexport interface CommandPaletteProps {\n open?: boolean | undefined;\n onOpenChange?: ((open: boolean) => void) | undefined;\n groups: CommandGroup[];\n placeholder?: string | undefined;\n emptyText?: ReactNode | undefined;\n onQueryChange?: ((query: string) => void) | undefined;\n hotkey?: boolean | undefined;\n keyHints?: boolean | undefined;\n inline?: boolean | undefined;\n defaultQuery?: string | undefined;\n query?: string | undefined;\n}\n\nfunction matches(item: CommandListItem, q: string) {\n const hay = [item.label, ...(item.keywords ?? [])].join(\" \").toLowerCase();\n return q\n .toLowerCase()\n .split(/\\s+/)\n .every((w) => hay.includes(w))\n ? 1\n : 0;\n}\n\nfunction Palette({\n groups,\n keyHints,\n placeholder: placeholderProp,\n emptyText,\n onQueryChange,\n close,\n inline,\n defaultQuery = \"\",\n query: controlledQuery,\n}: CommandPaletteProps & { close: () => void }) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"commandPalette.placeholder\", \"Search or run a command\");\n const [ownQuery, setOwnQuery] = useState(defaultQuery);\n const query = controlledQuery ?? ownQuery;\n const setQuery = (next: string) => {\n setOwnQuery(next);\n onQueryChange?.(next);\n };\n const [pages, setPages] = useState<{ title: string; groups: CommandGroup[] }[]>([]);\n const input = useRef<HTMLInputElement>(null);\n const [box, setBox] = useState<HTMLElement | null>(null);\n const boxRef = useCallback((el: HTMLElement | null) => setBox(inline ? null : (el?.parentElement ?? null)), [inline]);\n useResizeMotion(box);\n const page = pages[pages.length - 1];\n const source = page ? page.groups : groups;\n const loading = source.some((g) => g.loading);\n const byId = useMemo(() => new Map(source.flatMap((g) => g.items.map((i) => [i.id, i] as const))), [source]);\n const listGroups = useMemo<CommandListGroup[]>(\n () =>\n source.map((g, gi) => ({\n id: `${gi}:${g.label ?? \"\"}`,\n ...(g.label ? { label: g.label } : {}),\n ...(g.loading ? { loading: true } : {}),\n items: g.items.map((item) => ({\n value: item.id,\n label: item.label,\n keywords: [item.hint ?? \"\", ...(item.keywords ?? [])],\n render: ({ active }: CommandListRowState) => (\n <>\n {item.icon && <Icon icon={item.icon} size=\"sm\" className={active ? \"text-fg\" : \"text-fg-secondary\"} />}\n <span className=\"min-w-0 truncate\">{item.label}</span>\n {item.hint && (\n <span className={cn(\"min-w-0 truncate text-body font-regular\", active ? \"text-fg-secondary\" : \"text-fg-tertiary\")}>{item.hint}</span>\n )}\n <span className=\"ml-auto flex shrink-0 items-center gap-8\">\n {item.shortcut && <KbdSequence keys={item.shortcut} />}\n {item.children && <Icon icon={__icon_ArrowRight01Icon} size=\"sm\" className=\"text-fg-tertiary\" />}\n </span>\n </>\n ),\n })),\n })),\n [source],\n );\n\n const select = (id: string) => {\n const item = byId.get(id);\n if (!item) return;\n const children = item.children;\n if (children) {\n setPages((p) => [...p, { title: item.label, groups: children }]);\n setQuery(\"\");\n input.current?.focus();\n return;\n }\n item.onSelect?.();\n close();\n };\n\n return (\n <div\n ref={boxRef}\n className={cn(\"relative flex palette-limits min-h-0 flex-col overflow-hidden\", inline ? \"w-640 rounded-palette bg-raised shadow-dialog\" : \"flex-1\")}\n >\n <CommandList\n ref={input}\n groups={listGroups}\n aria-label={t(\"commandPalette.results\", \"Results\")}\n size=\"lg\"\n height=\"fill\"\n escapeClears={false}\n match={matches}\n inputProps={{ \"data-palette-input\": \"\" }}\n autoFocus\n query={query}\n onQueryChange={setQuery}\n onSelect={select}\n loading={loading}\n placeholder={placeholder}\n emptyText={emptyText ?? t(\"commandPalette.noResults\", \"No results\")}\n searchPrefix={\n page && <span className=\"inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg\">{page.title}</span>\n }\n onInputKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !query && pages.length) {\n e.preventDefault();\n setPages((p) => p.slice(0, -1));\n }\n }}\n footer={\n keyHints && (\n <div className=\"flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t\">\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>up</Kbd>\n <Kbd>down</Kbd> {t(\"commandPalette.toNavigate\", \"to navigate\")}\n </span>\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>enter</Kbd> {t(\"commandPalette.toOpen\", \"to open\")}\n </span>\n {pages.length > 0 && (\n <span className=\"inline-flex items-center gap-6\">\n <Kbd>backspace</Kbd> {t(\"commandPalette.toGoBack\", \"to go back\")}\n </span>\n )}\n <span className=\"ml-auto inline-flex items-center gap-6\">\n <Kbd>esc</Kbd> {t(\"commandPalette.toClose\", \"to close\")}\n </span>\n </div>\n )\n }\n />\n </div>\n );\n}\n\nexport function CommandPalette(props: CommandPaletteProps) {\n const { open, onOpenChange, hotkey = true, inline } = props;\n const [inner, setInner] = useState(false);\n const isOpen = open ?? inner;\n const setOpen = (o: boolean) => {\n if (open === undefined) setInner(o);\n onOpenChange?.(o);\n };\n const toggle = useRef(() => setOpen(!isOpen));\n toggle.current = () => setOpen(!isOpen);\n useEffect(() => {\n if (!hotkey || inline) return;\n const onKey = (e: globalThis.KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\n e.preventDefault();\n toggle.current();\n }\n };\n window.addEventListener(\"keydown\", onKey);\n return () => window.removeEventListener(\"keydown\", onKey);\n }, [hotkey, inline]);\n const focus = useRestoreFocus(isOpen);\n const t = useUiText();\n const container = usePortalContainer();\n const settled = useScopedDialog(inline ? false : isOpen);\n const session = useOpenSession(isOpen);\n if (inline) return <Palette {...props} close={() => undefined} />;\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)} onOpenChangeComplete={settled}>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"fixed inset-0 z-50 bg-overlay backdrop-motion\" />\n <BaseDialog.Viewport className=\"fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette\">\n <BaseDialog.Popup\n aria-label={t(\"commandPalette.label\", \"Command palette\")}\n initialFocus={focus.initialFocus}\n finalFocus={focus.finalFocus}\n className=\"flex w-640 max-w-full flex-col overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion\"\n >\n <Palette key={session} {...props} close={() => setOpen(false)} />\n </BaseDialog.Popup>\n </BaseDialog.Viewport>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n );\n}\nif (process.env.NODE_ENV !== \"production\") CommandPalette.displayName = \"CommandPalette\";\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as ClipboardText, n as CopyButton, r as InlineCopyText, i as KAESO_CLIPBOARD_TEXT_DEFAULT_VARIANTS, a as KAESO_CLIPBOARD_TEXT_VARIANTS, o as KAESO_COPY_BUTTON_DEFAULT_VARIANTS, s as KAESO_COPY_BUTTON_VARIANTS } from "../chunks/copy-button-DXxn-YYZ.js";
2
+ export { t as ClipboardText, n as CopyButton, r as InlineCopyText, i as KAESO_CLIPBOARD_TEXT_DEFAULT_VARIANTS, a as KAESO_CLIPBOARD_TEXT_VARIANTS, o as KAESO_COPY_BUTTON_DEFAULT_VARIANTS, s as KAESO_COPY_BUTTON_VARIANTS } from "../chunks/copy-button-CNpEnS04.js";