@logicplanes/kaeso-ui 0.1.0 → 0.2.1

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 (246) hide show
  1. package/AGENTS.md +1 -0
  2. package/LICENSE +1 -1
  3. package/ai/component-guides.md +269 -7
  4. package/ai/component-registry.json +600 -800
  5. package/ai/component-registry.md +200 -141
  6. package/ai/icons.md +2 -2
  7. package/ai/tokens.md +1 -1
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +3 -3
  10. package/dist/blocks/resource-list.js +2 -2
  11. package/dist/chunks/app-frame-BXh-06HL.js +214 -0
  12. package/dist/chunks/app-frame-BXh-06HL.js.map +1 -0
  13. package/dist/chunks/{banner-BiziJuBZ.js → banner-DxGBPQ7p.js} +2 -2
  14. package/dist/chunks/{banner-BiziJuBZ.js.map → banner-DxGBPQ7p.js.map} +1 -1
  15. package/dist/chunks/{button-BHKAE6ui.js → button-DQvoOxVQ.js} +2 -2
  16. package/dist/chunks/{button-BHKAE6ui.js.map → button-DQvoOxVQ.js.map} +1 -1
  17. package/dist/chunks/{calendar-B5SSTE56.js → calendar-CN3YJi2k.js} +3 -3
  18. package/dist/chunks/{calendar-B5SSTE56.js.map → calendar-CN3YJi2k.js.map} +1 -1
  19. package/dist/chunks/code-BADhvsgC.js +33 -0
  20. package/dist/chunks/code-BADhvsgC.js.map +1 -0
  21. package/dist/chunks/{code-block-BbK6E4Eo.js → code-block-DxtladFW.js} +41 -37
  22. package/dist/chunks/code-block-DxtladFW.js.map +1 -0
  23. package/dist/chunks/{combobox-D8pQk22r.js → combobox-D30Wt11R.js} +4 -4
  24. package/dist/chunks/{combobox-D8pQk22r.js.map → combobox-D30Wt11R.js.map} +1 -1
  25. package/dist/chunks/{copy-button-mAzHjYXq.js → copy-button-DXxn-YYZ.js} +4 -4
  26. package/dist/chunks/{copy-button-mAzHjYXq.js.map → copy-button-DXxn-YYZ.js.map} +1 -1
  27. package/dist/chunks/{core-Bgefcs3z.js → core-K960A4OT.js} +119 -120
  28. package/dist/chunks/core-K960A4OT.js.map +1 -0
  29. package/dist/chunks/{date-popup-Er1oQwtU.js → date-popup-B-6xhb-1.js} +3 -3
  30. package/dist/chunks/{date-popup-Er1oQwtU.js.map → date-popup-B-6xhb-1.js.map} +1 -1
  31. package/dist/chunks/{de-BCg1eRVd.js → de-CTAo4KL7.js} +10 -10
  32. package/dist/chunks/de-CTAo4KL7.js.map +1 -0
  33. package/dist/chunks/dialog-LNKgPEsV.js +319 -0
  34. package/dist/chunks/dialog-LNKgPEsV.js.map +1 -0
  35. package/dist/chunks/{icon-Bha63LaN.js → icon-CBzvyEqC.js} +30 -29
  36. package/dist/chunks/icon-CBzvyEqC.js.map +1 -0
  37. package/dist/chunks/{icon-button-Bw67oKtx.js → icon-button-_x1RUphC.js} +3 -3
  38. package/dist/chunks/{icon-button-Bw67oKtx.js.map → icon-button-_x1RUphC.js.map} +1 -1
  39. package/dist/chunks/{identity-DQinp-Ep.js → identity-BtZC_d_Q.js} +3 -3
  40. package/dist/chunks/{identity-DQinp-Ep.js.map → identity-BtZC_d_Q.js.map} +1 -1
  41. package/dist/chunks/{input-Biakz6GB.js → input-CNTfI6YE.js} +2 -2
  42. package/dist/chunks/{input-Biakz6GB.js.map → input-CNTfI6YE.js.map} +1 -1
  43. package/dist/chunks/{input-group-DQqEPFj_.js → input-group-CYA1MEoZ.js} +2 -2
  44. package/dist/chunks/{input-group-DQqEPFj_.js.map → input-group-CYA1MEoZ.js.map} +1 -1
  45. package/dist/chunks/{iso-field-CznqNVrH.js → iso-field-1qmg7TP8.js} +2 -2
  46. package/dist/chunks/{iso-field-CznqNVrH.js.map → iso-field-1qmg7TP8.js.map} +1 -1
  47. package/dist/chunks/linear-scale-BWKeRqDX.js +37 -0
  48. package/dist/chunks/linear-scale-BWKeRqDX.js.map +1 -0
  49. package/dist/chunks/{link-tTapNTpM.js → link-vz9aV8WX.js} +9 -2
  50. package/dist/chunks/link-vz9aV8WX.js.map +1 -0
  51. package/dist/chunks/{list-CN8pO8lv.js → list-CzaiyNja.js} +119 -111
  52. package/dist/chunks/list-CzaiyNja.js.map +1 -0
  53. package/dist/chunks/{markdown-C-iJsYnd.js → markdown-5NyaHHfN.js} +6 -6
  54. package/dist/chunks/{markdown-C-iJsYnd.js.map → markdown-5NyaHHfN.js.map} +1 -1
  55. package/dist/chunks/{menu-OURWt_hD.js → menu-DyVPwgfF.js} +2 -2
  56. package/dist/chunks/{menu-OURWt_hD.js.map → menu-DyVPwgfF.js.map} +1 -1
  57. package/dist/chunks/nav-sheet-BIErlV74.js +58 -0
  58. package/dist/chunks/nav-sheet-BIErlV74.js.map +1 -0
  59. package/dist/chunks/{logo-VmXYhIJL.js → nav-wordmark-DLkItdvo.js} +12 -93
  60. package/dist/chunks/nav-wordmark-DLkItdvo.js.map +1 -0
  61. package/dist/chunks/observe-resize-DhxhmoyB.js +25 -0
  62. package/dist/chunks/observe-resize-DhxhmoyB.js.map +1 -0
  63. package/dist/chunks/{page-header-BIRswR73.js → page-header-CEPZzhRp.js} +2 -2
  64. package/dist/chunks/{page-header-BIRswR73.js.map → page-header-CEPZzhRp.js.map} +1 -1
  65. package/dist/chunks/{pagination-DYdLm18-.js → pagination-CCMxQ5pH.js} +3 -3
  66. package/dist/chunks/{pagination-DYdLm18-.js.map → pagination-CCMxQ5pH.js.map} +1 -1
  67. package/dist/chunks/{range-popup-AbRzgHtY.js → range-popup-DGOnGGag.js} +4 -4
  68. package/dist/chunks/{range-popup-AbRzgHtY.js.map → range-popup-DGOnGGag.js.map} +1 -1
  69. package/dist/chunks/resize-motion-CMaidkwe.js +101 -0
  70. package/dist/chunks/resize-motion-CMaidkwe.js.map +1 -0
  71. package/dist/chunks/{rights-CXo7zEf6.js → rights-BbiJ0AJB.js} +4 -4
  72. package/dist/chunks/{rights-CXo7zEf6.js.map → rights-BbiJ0AJB.js.map} +1 -1
  73. package/dist/chunks/{section-XStLtXKa.js → section-DzOLLN1p.js} +3 -3
  74. package/dist/chunks/section-DzOLLN1p.js.map +1 -0
  75. package/dist/chunks/{segmented-CDTx2n29.js → segmented-MrinfDL8.js} +36 -35
  76. package/dist/chunks/segmented-MrinfDL8.js.map +1 -0
  77. package/dist/chunks/select-Bc4kRiSG.js +227 -0
  78. package/dist/chunks/select-Bc4kRiSG.js.map +1 -0
  79. package/dist/chunks/{sidebar-C4fL_KMm.js → sidebar-5IA18LuP.js} +180 -183
  80. package/dist/chunks/sidebar-5IA18LuP.js.map +1 -0
  81. package/dist/chunks/{sidebar-menu-sd9vCpDy.js → sidebar-menu-DRWRxcJ3.js} +2 -2
  82. package/dist/chunks/{sidebar-menu-sd9vCpDy.js.map → sidebar-menu-DRWRxcJ3.js.map} +1 -1
  83. package/dist/chunks/{switch-CztLhA8F.js → switch-XMY_CQE-.js} +2 -2
  84. package/dist/chunks/{switch-CztLhA8F.js.map → switch-XMY_CQE-.js.map} +1 -1
  85. package/dist/chunks/{tag-BsmQ1xPj.js → tag-Dg89uYpV.js} +3 -3
  86. package/dist/chunks/{tag-BsmQ1xPj.js.map → tag-Dg89uYpV.js.map} +1 -1
  87. package/dist/chunks/{text-BPglS3vq.js → text--5MKh2G4.js} +3 -3
  88. package/dist/chunks/{text-BPglS3vq.js.map → text--5MKh2G4.js.map} +1 -1
  89. package/dist/chunks/{textarea-Bvk7N2bh.js → textarea-Cj8iR82R.js} +3 -3
  90. package/dist/chunks/{textarea-Bvk7N2bh.js.map → textarea-Cj8iR82R.js.map} +1 -1
  91. package/dist/chunks/theme-provider-DJhORMlc.js +72 -0
  92. package/dist/chunks/theme-provider-DJhORMlc.js.map +1 -0
  93. package/dist/chunks/tooltip-DEbCCsru.js +151 -0
  94. package/dist/chunks/tooltip-DEbCCsru.js.map +1 -0
  95. package/dist/chunks/{tooltip-root-DWhtAtFb.js → tooltip-root-DRd4ciUv.js} +2 -2
  96. package/dist/chunks/{tooltip-root-DWhtAtFb.js.map → tooltip-root-DRd4ciUv.js.map} +1 -1
  97. package/dist/chunks/use-layout-width-CbSDbRb0.js +28 -0
  98. package/dist/chunks/use-layout-width-CbSDbRb0.js.map +1 -0
  99. package/dist/chunks/use-scroll-margin-DfdTc_5D.js +26 -0
  100. package/dist/chunks/use-scroll-margin-DfdTc_5D.js.map +1 -0
  101. package/dist/chunks/use-truncated-CW0hByYt.js +24 -0
  102. package/dist/chunks/use-truncated-CW0hByYt.js.map +1 -0
  103. package/dist/chunks/{virtual-rows-BgMdVelU.js → virtual-rows-BZe49bKi.js} +2 -2
  104. package/dist/chunks/{virtual-rows-BgMdVelU.js.map → virtual-rows-BZe49bKi.js.map} +1 -1
  105. package/dist/chunks/{zh-CN-cPjO1OOo.js → zh-CN-C7GmVswt.js} +15 -15
  106. package/dist/chunks/zh-CN-C7GmVswt.js.map +1 -0
  107. package/dist/components/app-frame.js +3 -1
  108. package/dist/components/banner.js +1 -1
  109. package/dist/components/button-group.js +2 -2
  110. package/dist/components/button.js +1 -1
  111. package/dist/components/calendar.js +1 -1
  112. package/dist/components/charts/bar.js +78 -77
  113. package/dist/components/charts/bar.js.map +1 -1
  114. package/dist/components/charts/donut.js +2 -2
  115. package/dist/components/charts/gauge.js +1 -1
  116. package/dist/components/charts/sankey.js +1 -1
  117. package/dist/components/charts/timeseries.js +75 -75
  118. package/dist/components/charts/timeseries.js.map +1 -1
  119. package/dist/components/charts.js +1 -1
  120. package/dist/components/code-block.js +1 -1
  121. package/dist/components/code.js +1 -1
  122. package/dist/components/combobox.js +1 -1
  123. package/dist/components/command-palette.js +105 -97
  124. package/dist/components/command-palette.js.map +1 -1
  125. package/dist/components/copy-button.js +1 -1
  126. package/dist/components/data-table.js +94 -95
  127. package/dist/components/data-table.js.map +1 -1
  128. package/dist/components/date-picker.js +3 -3
  129. package/dist/components/date-picker.js.map +1 -1
  130. package/dist/components/dialog.js +141 -153
  131. package/dist/components/dialog.js.map +1 -1
  132. package/dist/components/display-options.js +5 -5
  133. package/dist/components/filter-chip.js +1 -1
  134. package/dist/components/flow.js +37 -36
  135. package/dist/components/flow.js.map +1 -1
  136. package/dist/components/icon-button.js +1 -1
  137. package/dist/components/icon.js +1 -1
  138. package/dist/components/input.js +5 -5
  139. package/dist/components/kaeso/conversation.js +2 -2
  140. package/dist/components/kaeso/identity.js +1 -1
  141. package/dist/components/kaeso/moments.js +3 -3
  142. package/dist/components/kaeso/rights.js +1 -1
  143. package/dist/components/kaeso/usage.js +1 -1
  144. package/dist/components/kaeso.js +4 -4
  145. package/dist/components/key-value.js +3 -3
  146. package/dist/components/link.js +1 -1
  147. package/dist/components/list.js +1 -1
  148. package/dist/components/logo.js +101 -1
  149. package/dist/components/logo.js.map +1 -0
  150. package/dist/components/markdown.js +1 -1
  151. package/dist/components/menu.js +1 -1
  152. package/dist/components/page-header.js +1 -1
  153. package/dist/components/pagination.js +1 -1
  154. package/dist/components/playground.js +8 -8
  155. package/dist/components/scroll-area.js +30 -23
  156. package/dist/components/scroll-area.js.map +1 -1
  157. package/dist/components/section.js +1 -1
  158. package/dist/components/segmented.js +1 -1
  159. package/dist/components/select.js +1 -1
  160. package/dist/components/sheet.js +46 -41
  161. package/dist/components/sheet.js.map +1 -1
  162. package/dist/components/sidebar.js +1 -1
  163. package/dist/components/stat.js +75 -76
  164. package/dist/components/stat.js.map +1 -1
  165. package/dist/components/switch.js +1 -1
  166. package/dist/components/tag.js +1 -1
  167. package/dist/components/text.js +1 -1
  168. package/dist/components/theme-image.js +38 -0
  169. package/dist/components/theme-image.js.map +1 -0
  170. package/dist/components/theme-menu.js +3 -3
  171. package/dist/components/theme-select.js +58 -0
  172. package/dist/components/theme-select.js.map +1 -0
  173. package/dist/components/toast.js +91 -92
  174. package/dist/components/toast.js.map +1 -1
  175. package/dist/components/tooltip.js +1 -1
  176. package/dist/i18n-provider.js +1 -1
  177. package/dist/index.js +76 -74
  178. package/dist/kaeso.css +39 -16
  179. package/dist/styles.css +1 -1
  180. package/dist/theme.js +1 -1
  181. package/dist/types/components/app-frame/app-frame.d.ts +2 -10
  182. package/dist/types/components/app-frame/docs.d.ts +1 -0
  183. package/dist/types/components/app-frame/index.d.ts +1 -0
  184. package/dist/types/components/app-frame/nav-sheet.d.ts +11 -0
  185. package/dist/types/components/charts/linear-scale.d.ts +17 -0
  186. package/dist/types/components/code/code.d.ts +16 -0
  187. package/dist/types/components/code/docs.d.ts +1 -0
  188. package/dist/types/components/code-block/code-block.d.ts +2 -0
  189. package/dist/types/components/code-block/docs.d.ts +4 -0
  190. package/dist/types/components/command-palette/command-palette.d.ts +1 -0
  191. package/dist/types/components/command-palette/docs.d.ts +1 -0
  192. package/dist/types/components/dialog/dialog.d.ts +5 -2
  193. package/dist/types/components/dialog/docs.d.ts +10 -0
  194. package/dist/types/components/dialog/index.d.ts +1 -0
  195. package/dist/types/components/dialog/scope.d.ts +9 -0
  196. package/dist/types/components/dialog/step-dialog.d.ts +9 -1
  197. package/dist/types/components/link/link.d.ts +8 -0
  198. package/dist/types/components/logo/nav-wordmark.d.ts +6 -0
  199. package/dist/types/components/scroll-area/scroll-area.d.ts +3 -3
  200. package/dist/types/components/theme-image/docs.d.ts +13 -0
  201. package/dist/types/components/theme-image/index.d.ts +1 -0
  202. package/dist/types/components/theme-image/theme-image.d.ts +23 -0
  203. package/dist/types/components/theme-select/docs.d.ts +10 -0
  204. package/dist/types/components/theme-select/index.d.ts +1 -0
  205. package/dist/types/components/theme-select/theme-select.d.ts +34 -0
  206. package/dist/types/icons/groups.d.ts +1 -1
  207. package/dist/types/icons/vocabulary.d.ts +5 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/theme/theme-provider.d.ts +1 -1
  210. package/dist/types/utils/dialog-scope.d.ts +7 -0
  211. package/dist/types/utils/lazy-module.d.ts +7 -2
  212. package/dist/types/utils/observe-resize.d.ts +1 -0
  213. package/dist/types/utils/resize-motion.d.ts +2 -0
  214. package/foundations/motion.md +1 -0
  215. package/package.json +2 -2
  216. package/dist/chunks/app-frame-BBIMch8X.js +0 -224
  217. package/dist/chunks/app-frame-BBIMch8X.js.map +0 -1
  218. package/dist/chunks/code-DDyOlIFO.js +0 -23
  219. package/dist/chunks/code-DDyOlIFO.js.map +0 -1
  220. package/dist/chunks/code-block-BbK6E4Eo.js.map +0 -1
  221. package/dist/chunks/core-Bgefcs3z.js.map +0 -1
  222. package/dist/chunks/de-BCg1eRVd.js.map +0 -1
  223. package/dist/chunks/dialog-CVqSVk3T.js +0 -283
  224. package/dist/chunks/dialog-CVqSVk3T.js.map +0 -1
  225. package/dist/chunks/icon-Bha63LaN.js.map +0 -1
  226. package/dist/chunks/link-tTapNTpM.js.map +0 -1
  227. package/dist/chunks/list-CN8pO8lv.js.map +0 -1
  228. package/dist/chunks/logo-VmXYhIJL.js.map +0 -1
  229. package/dist/chunks/restore-focus-Cap1Q-R3.js +0 -19
  230. package/dist/chunks/restore-focus-Cap1Q-R3.js.map +0 -1
  231. package/dist/chunks/section-XStLtXKa.js.map +0 -1
  232. package/dist/chunks/segmented-CDTx2n29.js.map +0 -1
  233. package/dist/chunks/select-Ca3HGsN1.js +0 -223
  234. package/dist/chunks/select-Ca3HGsN1.js.map +0 -1
  235. package/dist/chunks/sidebar-C4fL_KMm.js.map +0 -1
  236. package/dist/chunks/theme-provider-mgUaQK7L.js +0 -69
  237. package/dist/chunks/theme-provider-mgUaQK7L.js.map +0 -1
  238. package/dist/chunks/tooltip-CDu00nzg.js +0 -124
  239. package/dist/chunks/tooltip-CDu00nzg.js.map +0 -1
  240. package/dist/chunks/use-layout-width-DZaLOQMT.js +0 -27
  241. package/dist/chunks/use-layout-width-DZaLOQMT.js.map +0 -1
  242. package/dist/chunks/use-scroll-margin-DWcfIXac.js +0 -25
  243. package/dist/chunks/use-scroll-margin-DWcfIXac.js.map +0 -1
  244. package/dist/chunks/use-truncated-DmQoePvG.js +0 -25
  245. package/dist/chunks/use-truncated-DmQoePvG.js.map +0 -1
  246. package/dist/chunks/zh-CN-cPjO1OOo.js.map +0 -1
@@ -5,14 +5,14 @@ import { i as n } from "../chunks/context-BELWW79w.js";
5
5
  import { t as r } from "../chunks/icon-CeNQtobn.js";
6
6
  import { i, r as a } from "../chunks/kbd-CBcBDvqU.js";
7
7
  import { t as o } from "../chunks/field-press-DwzBFafd.js";
8
- import { t as s } from "../chunks/restore-focus-Cap1Q-R3.js";
9
- import { Fragment as c, useEffect as l, useId as u, useMemo as d, useRef as f, useState as p } from "react";
10
- import { jsx as m, jsxs as h } from "react/jsx-runtime";
11
- import { ArrowRight01Icon as g, Search01Icon as _ } from "@hugeicons/core-free-icons";
12
- import { Dialog as v } from "@base-ui/react/dialog";
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";
13
13
  //#region src/components/command-palette/command-palette.tsx
14
- var y = { size: { md: { classes: "w-640" } } }, b = { size: "md" };
15
- function x(e, t) {
14
+ var C = { size: { md: { classes: "w-640" } } }, w = { size: "md" };
15
+ function T(e, t) {
16
16
  if (!t) return !0;
17
17
  let n = [
18
18
  e.label,
@@ -21,109 +21,116 @@ function x(e, t) {
21
21
  ].join(" ").toLowerCase();
22
22
  return t.toLowerCase().split(/\s+/).every((e) => n.includes(e));
23
23
  }
24
- function S({ groups: t, keyHints: s, placeholder: v, emptyText: y, onQueryChange: b, close: S, inline: C, defaultQuery: w = "" }) {
25
- let T = n(), E = v ?? T("commandPalette.placeholder", "Search or run a command"), [D, O] = p(w), [k, A] = p([]), [j, M] = p(0), N = u(), P = f(null), F = k[k.length - 1], I = F ? F.groups : t, L = d(() => I.map((e) => ({
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) => ({
26
30
  ...e,
27
- items: e.items.filter((e) => x(e, D))
28
- })).filter((e) => e.items.length > 0 || e.loading), [I, D]), R = L.flatMap((e) => e.items), z = I.some((e) => e.loading);
29
- l(() => {
30
- document.getElementById(`${N}-${R[j]?.id}`)?.scrollIntoView({ block: "nearest" });
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" });
31
35
  }, [
32
- j,
33
- R,
34
- N
36
+ I,
37
+ K,
38
+ R
35
39
  ]);
36
- let B = (e) => {
40
+ let J = (e) => {
37
41
  if (!e) return;
38
42
  let t = e.children;
39
- t ? (A((n) => [...n, {
43
+ t ? (F((n) => [...n, {
40
44
  title: e.label,
41
45
  groups: t
42
- }]), O(""), M(0), P.current?.focus()) : (e.onSelect?.(), S());
43
- }, V = (e) => {
44
- e.key === "ArrowDown" ? (e.preventDefault(), M((e) => R.length ? (e + 1) % R.length : 0)) : e.key === "ArrowUp" ? (e.preventDefault(), M((e) => R.length ? (e - 1 + R.length) % R.length : 0)) : e.key === "Enter" ? (e.preventDefault(), B(R[j])) : e.key === "Backspace" && !D && k.length ? (e.preventDefault(), A((e) => e.slice(0, -1)), M(0)) : e.key === "Home" ? M(0) : e.key === "End" && M(Math.max(0, R.length - 1));
45
- }, H = -1;
46
- return /* @__PURE__ */ h("div", {
47
- className: e("relative flex palette-limits flex-col overflow-hidden", C && "w-640 rounded-palette bg-raised shadow-dialog"),
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"),
48
53
  children: [
49
- z && /* @__PURE__ */ m("span", {
54
+ q && /* @__PURE__ */ v("span", {
50
55
  "aria-hidden": !0,
51
56
  className: "absolute inset-x-0 top-0 h-2 overflow-hidden",
52
- children: /* @__PURE__ */ m("span", { className: "block h-full w-1/3 animate-indeterminate bg-fg-tertiary" })
57
+ children: /* @__PURE__ */ v("span", { className: "block h-full w-1/3 animate-indeterminate bg-fg-tertiary" })
53
58
  }),
54
- /* @__PURE__ */ h("div", {
59
+ /* @__PURE__ */ y("div", {
55
60
  onMouseDown: o,
56
61
  className: "flex h-56 shrink-0 cursor-text items-center gap-12 px-20 hairline-b",
57
62
  children: [
58
- /* @__PURE__ */ m(r, {
59
- icon: _,
63
+ /* @__PURE__ */ v(r, {
64
+ icon: x,
60
65
  size: "md",
61
66
  className: "text-fg-tertiary"
62
67
  }),
63
- F && /* @__PURE__ */ m("span", {
68
+ U && /* @__PURE__ */ v("span", {
64
69
  className: "inline-flex h-24 shrink-0 items-center rounded-pill bg-fill-2 px-10 text-caption font-medium text-fg",
65
- children: F.title
70
+ children: U.title
66
71
  }),
67
- /* @__PURE__ */ m("input", {
68
- ref: P,
72
+ /* @__PURE__ */ v("input", {
73
+ ref: z,
69
74
  autoFocus: !0,
75
+ "data-palette-input": "",
70
76
  role: "combobox",
71
77
  "aria-expanded": "true",
72
- "aria-controls": N,
78
+ "aria-controls": R,
73
79
  "aria-autocomplete": "list",
74
- "aria-activedescendant": R[j] ? `${N}-${R[j].id}` : void 0,
75
- "aria-label": E,
76
- placeholder: E,
77
- value: D,
80
+ "aria-activedescendant": K[I] ? `${R}-${K[I].id}` : void 0,
81
+ "aria-label": k,
82
+ placeholder: k,
83
+ value: M,
78
84
  onChange: (e) => {
79
- O(e.target.value), M(0), b?.(e.target.value);
85
+ N(e.target.value), L(0);
80
86
  },
81
- onKeyDown: V,
87
+ onKeyDown: Y,
82
88
  className: "min-w-0 flex-1 bg-transparent text-body-lg font-regular text-fg outline-none placeholder:text-fg-tertiary"
83
89
  })
84
90
  ]
85
91
  }),
86
- /* @__PURE__ */ h("div", {
87
- id: N,
88
- ...R.length ? {
92
+ /* @__PURE__ */ y("div", {
93
+ id: R,
94
+ "data-dialog-body": "",
95
+ ...K.length ? {
89
96
  role: "listbox",
90
- "aria-label": T("commandPalette.results", "Results")
97
+ "aria-label": O("commandPalette.results", "Results")
91
98
  } : { role: "status" },
92
99
  className: "min-h-0 flex-1 overflow-y-auto overscroll-contain p-8 scrollbar-quiet",
93
- children: [R.length === 0 && !z && /* @__PURE__ */ m("div", {
100
+ children: [K.length === 0 && !q && /* @__PURE__ */ v("div", {
94
101
  className: "flex h-80 items-center justify-center text-body text-fg-secondary",
95
- children: y ?? T("commandPalette.noResults", "No results")
96
- }), L.map((t, n) => /* @__PURE__ */ h(c, { children: [t.label && /* @__PURE__ */ m("div", {
102
+ children: l ?? O("commandPalette.noResults", "No results")
103
+ }), G.map((t, n) => /* @__PURE__ */ y(d, { children: [t.label && /* @__PURE__ */ v("div", {
97
104
  className: "flex h-28 items-center px-12 pt-4 text-caption font-medium text-fg-secondary",
98
105
  children: t.label
99
106
  }), t.items.map((t) => {
100
- H += 1;
101
- let n = H, a = n === j;
102
- return /* @__PURE__ */ h("div", {
103
- id: `${N}-${t.id}`,
107
+ X += 1;
108
+ let n = X, a = n === I;
109
+ return /* @__PURE__ */ y("div", {
110
+ id: `${R}-${t.id}`,
104
111
  role: "option",
105
112
  "aria-selected": a,
106
- onMouseMove: () => M(n),
107
- onClick: () => B(t),
113
+ onMouseMove: () => L(n),
114
+ onClick: () => J(t),
108
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"),
109
116
  children: [
110
- t.icon && /* @__PURE__ */ m(r, {
117
+ t.icon && /* @__PURE__ */ v(r, {
111
118
  icon: t.icon,
112
119
  size: "sm",
113
120
  className: a ? "text-fg" : "text-fg-secondary"
114
121
  }),
115
- /* @__PURE__ */ m("span", {
122
+ /* @__PURE__ */ v("span", {
116
123
  className: "min-w-0 truncate",
117
124
  children: t.label
118
125
  }),
119
- t.hint && /* @__PURE__ */ m("span", {
126
+ t.hint && /* @__PURE__ */ v("span", {
120
127
  className: e("min-w-0 truncate text-body font-regular", a ? "text-fg-secondary" : "text-fg-tertiary"),
121
128
  children: t.hint
122
129
  }),
123
- /* @__PURE__ */ h("span", {
130
+ /* @__PURE__ */ y("span", {
124
131
  className: "ml-auto flex shrink-0 items-center gap-8",
125
- children: [t.shortcut && /* @__PURE__ */ m(i, { keys: t.shortcut }), t.children && /* @__PURE__ */ m(r, {
126
- icon: g,
132
+ children: [t.shortcut && /* @__PURE__ */ v(i, { keys: t.shortcut }), t.children && /* @__PURE__ */ v(r, {
133
+ icon: b,
127
134
  size: "sm",
128
135
  className: "text-fg-tertiary"
129
136
  })]
@@ -132,40 +139,40 @@ function S({ groups: t, keyHints: s, placeholder: v, emptyText: y, onQueryChange
132
139
  }, t.id);
133
140
  })] }, t.label ?? n))]
134
141
  }),
135
- s && /* @__PURE__ */ h("div", {
142
+ s && /* @__PURE__ */ y("div", {
136
143
  className: "flex h-40 shrink-0 items-center gap-16 px-16 text-caption font-medium text-fg-tertiary hairline-t",
137
144
  children: [
138
- /* @__PURE__ */ h("span", {
145
+ /* @__PURE__ */ y("span", {
139
146
  className: "inline-flex items-center gap-6",
140
147
  children: [
141
- /* @__PURE__ */ m(a, { children: "up" }),
142
- /* @__PURE__ */ m(a, { children: "down" }),
148
+ /* @__PURE__ */ v(a, { children: "up" }),
149
+ /* @__PURE__ */ v(a, { children: "down" }),
143
150
  " ",
144
- T("commandPalette.toNavigate", "to navigate")
151
+ O("commandPalette.toNavigate", "to navigate")
145
152
  ]
146
153
  }),
147
- /* @__PURE__ */ h("span", {
154
+ /* @__PURE__ */ y("span", {
148
155
  className: "inline-flex items-center gap-6",
149
156
  children: [
150
- /* @__PURE__ */ m(a, { children: "enter" }),
157
+ /* @__PURE__ */ v(a, { children: "enter" }),
151
158
  " ",
152
- T("commandPalette.toOpen", "to open")
159
+ O("commandPalette.toOpen", "to open")
153
160
  ]
154
161
  }),
155
- k.length > 0 && /* @__PURE__ */ h("span", {
162
+ P.length > 0 && /* @__PURE__ */ y("span", {
156
163
  className: "inline-flex items-center gap-6",
157
164
  children: [
158
- /* @__PURE__ */ m(a, { children: "backspace" }),
165
+ /* @__PURE__ */ v(a, { children: "backspace" }),
159
166
  " ",
160
- T("commandPalette.toGoBack", "to go back")
167
+ O("commandPalette.toGoBack", "to go back")
161
168
  ]
162
169
  }),
163
- /* @__PURE__ */ h("span", {
170
+ /* @__PURE__ */ y("span", {
164
171
  className: "ml-auto inline-flex items-center gap-6",
165
172
  children: [
166
- /* @__PURE__ */ m(a, { children: "esc" }),
173
+ /* @__PURE__ */ v(a, { children: "esc" }),
167
174
  " ",
168
- T("commandPalette.toClose", "to close")
175
+ O("commandPalette.toClose", "to close")
169
176
  ]
170
177
  })
171
178
  ]
@@ -173,44 +180,45 @@ function S({ groups: t, keyHints: s, placeholder: v, emptyText: y, onQueryChange
173
180
  ]
174
181
  });
175
182
  }
176
- function C(e) {
177
- let { open: r, onOpenChange: i, hotkey: a = !0, inline: o } = e, [c, u] = p(!1), d = r ?? c, g = (e) => {
178
- r === void 0 && u(e), i?.(e);
179
- }, _ = f(() => g(!d));
180
- _.current = () => g(!d), l(() => {
183
+ function D(e) {
184
+ let { open: r, onOpenChange: i, hotkey: a = !0, inline: o } = e, [u, d] = _(!1), f = r ?? u, m = (e) => {
185
+ r === void 0 && d(e), i?.(e);
186
+ }, h = g(() => m(!f));
187
+ h.current = () => m(!f), p(() => {
181
188
  if (!a || o) return;
182
189
  let e = (e) => {
183
- (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), _.current());
190
+ (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k" && (e.preventDefault(), h.current());
184
191
  };
185
192
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
186
193
  }, [a, o]);
187
- let y = s(d), b = n(), x = t();
188
- return o ? /* @__PURE__ */ m(S, {
194
+ let b = s(f), x = n(), C = t(), w = c(!o && f), T = l(f);
195
+ return o ? /* @__PURE__ */ v(E, {
189
196
  ...e,
190
197
  close: () => void 0
191
- }) : /* @__PURE__ */ m(v.Root, {
192
- open: d,
193
- onOpenChange: (e) => g(e),
194
- children: /* @__PURE__ */ h(v.Portal, {
195
- container: x,
196
- children: [/* @__PURE__ */ m(v.Backdrop, { className: "fixed inset-0 z-50 bg-overlay backdrop-motion" }), /* @__PURE__ */ m(v.Viewport, {
198
+ }) : /* @__PURE__ */ v(S.Root, {
199
+ open: f,
200
+ onOpenChange: (e) => m(e),
201
+ onOpenChangeComplete: w,
202
+ children: /* @__PURE__ */ y(S.Portal, {
203
+ container: C,
204
+ children: [/* @__PURE__ */ v(S.Backdrop, { className: "fixed inset-0 z-50 bg-overlay backdrop-motion" }), /* @__PURE__ */ v(S.Viewport, {
197
205
  className: "fixed inset-0 z-50 flex items-start justify-center px-16 pt-palette",
198
- children: /* @__PURE__ */ m(v.Popup, {
199
- "aria-label": b("commandPalette.label", "Command palette"),
200
- initialFocus: y.initialFocus,
201
- finalFocus: y.finalFocus,
202
- className: "w-640 max-w-full overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion",
203
- children: d && /* @__PURE__ */ m(S, {
206
+ children: /* @__PURE__ */ v(S.Popup, {
207
+ "aria-label": x("commandPalette.label", "Command palette"),
208
+ initialFocus: b.initialFocus,
209
+ finalFocus: b.finalFocus,
210
+ 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, {
204
212
  ...e,
205
- close: () => g(!1)
206
- })
213
+ close: () => m(!1)
214
+ }, T)
207
215
  })
208
216
  })]
209
217
  })
210
218
  });
211
219
  }
212
- process.env.NODE_ENV !== "production" && (C.displayName = "CommandPalette");
220
+ process.env.NODE_ENV !== "production" && (D.displayName = "CommandPalette");
213
221
  //#endregion
214
- export { C as CommandPalette, b as KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS, y as KAESO_COMMAND_PALETTE_VARIANTS };
222
+ export { D as CommandPalette, w as KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS, C as KAESO_COMMAND_PALETTE_VARIANTS };
215
223
 
216
224
  //# 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","KAESO_COMMAND_PALETTE_VARIANTS","KAESO_COMMAND_PALETTE_DEFAULT_VARIANTS","matches","q","hay","item","w","Palette","placeholderProp","t","placeholder","query","setQuery","useState","defaultQuery","pages","setPages","active","setActive","listId","useId","input","useRef","page","source","groups","visible","useMemo","g","i","flat","loading","select","children","p","close","onKeyDown","a","index","inline","Search01Icon","onQueryChange","emptyText","Fragment","isActive","KbdSequence","ArrowRight01Icon","gi","keyHints","CommandPalette","props","inner","setInner","isOpen","open","setOpen","o","onOpenChange","toggle","useEffect","hotkey","onKey","focus","container","Dialog"],"sources":["../../src/components/command-palette/command-palette.tsx"],"sourcesContent":["import { usePortalContainer } from \"../../utils/portal-context.js\";\nimport { Fragment, 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 { 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\";\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}\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}: CommandPaletteProps & { close: () => void }) {\n const t = useUiText();\n const placeholder = placeholderProp ?? t(\"commandPalette.placeholder\", \"Search or run a command\");\n const [query, setQuery] = useState(defaultQuery);\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 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 className={cn(\"relative flex palette-limits flex-col overflow-hidden\", inline && \"w-640 rounded-palette bg-raised shadow-dialog\")}>\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 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 onQueryChange?.(e.target.value);\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 {...(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 if (inline) return <Palette {...props} close={() => undefined} />;\n return (\n <BaseDialog.Root open={isOpen} onOpenChange={(o: boolean) => setOpen(o)}>\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=\"w-640 max-w-full overflow-hidden rounded-palette bg-raised text-fg shadow-dialog outline-none dialog-motion\"\n >\n {isOpen && <Palette {...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
+ {"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":"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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-mAzHjYXq.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-DXxn-YYZ.js";