@mastra/playground-ui 35.0.0 → 35.1.0-alpha.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 (220) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/dist/{code-block-C4Zp_ewI.cjs → code-block-BPI6hA9o.cjs} +2 -2
  3. package/dist/{code-block-C4Zp_ewI.cjs.map → code-block-BPI6hA9o.cjs.map} +1 -1
  4. package/dist/{code-block-CnRVTecy.js → code-block-BdjHwqE4.js} +2 -2
  5. package/dist/{code-block-CnRVTecy.js.map → code-block-BdjHwqE4.js.map} +1 -1
  6. package/dist/{code-editor-DuX_CPRv.js → code-editor-CxHGOvdY.js} +3 -3
  7. package/dist/{code-editor-DuX_CPRv.js.map → code-editor-CxHGOvdY.js.map} +1 -1
  8. package/dist/{code-editor-LhRB_wMh.cjs → code-editor-DVWPuq12.cjs} +3 -3
  9. package/dist/{code-editor-LhRB_wMh.cjs.map → code-editor-DVWPuq12.cjs.map} +1 -1
  10. package/dist/combobox-DQdRtI_v.cjs +245 -0
  11. package/dist/combobox-DQdRtI_v.cjs.map +1 -0
  12. package/dist/combobox-DvRTz5eL.js +223 -0
  13. package/dist/combobox-DvRTz5eL.js.map +1 -0
  14. package/dist/{command-DPEUOKZw.js → command-CkFCH229.js} +86 -43
  15. package/dist/command-CkFCH229.js.map +1 -0
  16. package/dist/{command-D0tQ1Lpz.cjs → command-EI7t_0WS.cjs} +86 -43
  17. package/dist/command-EI7t_0WS.cjs.map +1 -0
  18. package/dist/components/CodeBlock.cjs.js +1 -1
  19. package/dist/components/CodeBlock.es.js +1 -1
  20. package/dist/components/CodeEditor.cjs.js +1 -1
  21. package/dist/components/CodeEditor.es.js +1 -1
  22. package/dist/components/Columns.cjs.js +1 -1
  23. package/dist/components/Columns.es.js +1 -1
  24. package/dist/components/Combobox.cjs.js +2 -4
  25. package/dist/components/Combobox.cjs.js.map +1 -1
  26. package/dist/components/Combobox.es.js +1 -2
  27. package/dist/components/Combobox.es.js.map +1 -1
  28. package/dist/components/Command.cjs.js +1 -1
  29. package/dist/components/Command.es.js +1 -1
  30. package/dist/components/CopyButton.cjs.js +1 -1
  31. package/dist/components/CopyButton.es.js +1 -1
  32. package/dist/components/DataCodeSection.cjs.js +1 -1
  33. package/dist/components/DataCodeSection.es.js +1 -1
  34. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  35. package/dist/components/DataDetailsPanel.es.js +1 -1
  36. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  37. package/dist/components/DataKeysAndValues.es.js +1 -1
  38. package/dist/components/DataList.cjs.js +2 -2
  39. package/dist/components/DataList.es.js +2 -2
  40. package/dist/components/DataPanel.cjs.js +1 -1
  41. package/dist/components/DataPanel.es.js +1 -1
  42. package/dist/components/Dialog.cjs.js +1 -1
  43. package/dist/components/Dialog.es.js +1 -1
  44. package/dist/components/HorizontalBars.cjs.js +1 -1
  45. package/dist/components/HorizontalBars.es.js +1 -1
  46. package/dist/components/LogsDataList.cjs.js +2 -2
  47. package/dist/components/LogsDataList.es.js +2 -2
  48. package/dist/components/MainSidebar.cjs.js +1 -1
  49. package/dist/components/MainSidebar.es.js +1 -1
  50. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  51. package/dist/components/MarkdownRenderer.es.js +1 -1
  52. package/dist/components/MetricsDataTable.cjs.js +1 -1
  53. package/dist/components/MetricsDataTable.es.js +1 -1
  54. package/dist/components/PropertyFilter.cjs.js +1 -1
  55. package/dist/components/PropertyFilter.es.js +1 -1
  56. package/dist/components/ScrollArea.cjs.js +1 -1
  57. package/dist/components/ScrollArea.es.js +1 -1
  58. package/dist/components/SideDialog.cjs.js +1 -1
  59. package/dist/components/SideDialog.es.js +1 -1
  60. package/dist/components/Truncate.cjs.js +1 -1
  61. package/dist/components/Truncate.es.js +1 -1
  62. package/dist/{copy-button-BfiqaCtC.js → copy-button-RffVknBA.js} +2 -2
  63. package/dist/{copy-button-BfiqaCtC.js.map → copy-button-RffVknBA.js.map} +1 -1
  64. package/dist/{copy-button-BaAuAgdC.cjs → copy-button-ler9dH8g.cjs} +3 -3
  65. package/dist/{copy-button-BaAuAgdC.cjs.map → copy-button-ler9dH8g.cjs.map} +1 -1
  66. package/dist/{data-code-section-MygZlpwo.js → data-code-section-BBBffVVs.js} +3 -3
  67. package/dist/{data-code-section-MygZlpwo.js.map → data-code-section-BBBffVVs.js.map} +1 -1
  68. package/dist/{data-code-section-BtFzBCox.cjs → data-code-section-ChVXPz-i.cjs} +3 -3
  69. package/dist/{data-code-section-BtFzBCox.cjs.map → data-code-section-ChVXPz-i.cjs.map} +1 -1
  70. package/dist/{data-keys-and-values-BSeQG7jb.js → data-keys-and-values-C3pzr_d1.js} +2 -2
  71. package/dist/{data-keys-and-values-BSeQG7jb.js.map → data-keys-and-values-C3pzr_d1.js.map} +1 -1
  72. package/dist/{data-keys-and-values-Spy2O_IE.cjs → data-keys-and-values-KIwfkmc7.cjs} +3 -3
  73. package/dist/{data-keys-and-values-Spy2O_IE.cjs.map → data-keys-and-values-KIwfkmc7.cjs.map} +1 -1
  74. package/dist/{data-list-skeleton-COjCBzBF.cjs → data-list-skeleton-BlOwAki1.cjs} +5 -15
  75. package/dist/data-list-skeleton-BlOwAki1.cjs.map +1 -0
  76. package/dist/{data-list-skeleton-DmAqHgws.js → data-list-skeleton-DD7ljjgS.js} +5 -15
  77. package/dist/data-list-skeleton-DD7ljjgS.js.map +1 -0
  78. package/dist/{data-panel-DToYF7cH.cjs → data-panel-DBxE_3ux.cjs} +2 -2
  79. package/dist/{data-panel-DToYF7cH.cjs.map → data-panel-DBxE_3ux.cjs.map} +1 -1
  80. package/dist/{data-panel-DumaHQiP.js → data-panel-DPVF9Yok.js} +2 -2
  81. package/dist/{data-panel-DumaHQiP.js.map → data-panel-DPVF9Yok.js.map} +1 -1
  82. package/dist/{dialog-46zkb32X.cjs → dialog-C0gOGKEK.cjs} +31 -29
  83. package/dist/dialog-C0gOGKEK.cjs.map +1 -0
  84. package/dist/{dialog-CSSfcjSX.js → dialog-DTLHod4X.js} +31 -29
  85. package/dist/dialog-DTLHod4X.js.map +1 -0
  86. package/dist/dialog.css +2 -2
  87. package/dist/hooks/use-autoscroll.cjs.js +110 -0
  88. package/dist/hooks/use-autoscroll.cjs.js.map +1 -0
  89. package/dist/hooks/use-autoscroll.d.ts +2 -0
  90. package/dist/hooks/use-autoscroll.es.js +106 -0
  91. package/dist/hooks/use-autoscroll.es.js.map +1 -0
  92. package/dist/hooks/use-copy-to-clipboard.cjs.js +11 -0
  93. package/dist/hooks/use-copy-to-clipboard.cjs.js.map +1 -0
  94. package/dist/hooks/use-copy-to-clipboard.d.ts +2 -0
  95. package/dist/hooks/use-copy-to-clipboard.es.js +3 -0
  96. package/dist/hooks/use-copy-to-clipboard.es.js.map +1 -0
  97. package/dist/hooks/use-in-view.cjs.js +22 -0
  98. package/dist/hooks/use-in-view.cjs.js.map +1 -0
  99. package/dist/hooks/use-in-view.d.ts +2 -0
  100. package/dist/hooks/use-in-view.es.js +18 -0
  101. package/dist/hooks/use-in-view.es.js.map +1 -0
  102. package/dist/hooks/use-is-mobile.cjs.js +21 -0
  103. package/dist/hooks/use-is-mobile.cjs.js.map +1 -0
  104. package/dist/hooks/use-is-mobile.d.ts +2 -0
  105. package/dist/hooks/use-is-mobile.es.js +17 -0
  106. package/dist/hooks/use-is-mobile.es.js.map +1 -0
  107. package/dist/hooks/use-keyboard-shortcut-label.cjs.js +29 -0
  108. package/dist/hooks/use-keyboard-shortcut-label.cjs.js.map +1 -0
  109. package/dist/hooks/use-keyboard-shortcut-label.d.ts +2 -0
  110. package/dist/hooks/use-keyboard-shortcut-label.es.js +24 -0
  111. package/dist/hooks/use-keyboard-shortcut-label.es.js.map +1 -0
  112. package/dist/{horizontal-bars-DjLETHvH.js → horizontal-bars-r1aEIHUc.js} +2 -2
  113. package/dist/{horizontal-bars-DjLETHvH.js.map → horizontal-bars-r1aEIHUc.js.map} +1 -1
  114. package/dist/{horizontal-bars-C9qp4r47.cjs → horizontal-bars-uPFpgihX.cjs} +2 -2
  115. package/dist/{horizontal-bars-C9qp4r47.cjs.map → horizontal-bars-uPFpgihX.cjs.map} +1 -1
  116. package/dist/index.cjs.js +88 -79
  117. package/dist/index.cjs.js.map +1 -1
  118. package/dist/index.css +55 -30
  119. package/dist/index.es.js +72 -69
  120. package/dist/index.es.js.map +1 -1
  121. package/dist/{logs-data-list-kzBMv1MW.cjs → logs-data-list-3qmFjBz8.cjs} +2 -2
  122. package/dist/{logs-data-list-kzBMv1MW.cjs.map → logs-data-list-3qmFjBz8.cjs.map} +1 -1
  123. package/dist/{logs-data-list-Bkf7oWlx.js → logs-data-list-Dh6c7URj.js} +2 -2
  124. package/dist/{logs-data-list-Bkf7oWlx.js.map → logs-data-list-Dh6c7URj.js.map} +1 -1
  125. package/dist/{main-sidebar-Djs_3tGw.cjs → main-sidebar-ByHmwU4R.cjs} +6 -5
  126. package/dist/main-sidebar-ByHmwU4R.cjs.map +1 -0
  127. package/dist/{main-sidebar-1GVDTtcD.js → main-sidebar-DJSorgYQ.js} +6 -5
  128. package/dist/main-sidebar-DJSorgYQ.js.map +1 -0
  129. package/dist/{markdown-renderer-DyUlVfRt.cjs → markdown-renderer-Dyg_1QXx.cjs} +2 -2
  130. package/dist/{markdown-renderer-DyUlVfRt.cjs.map → markdown-renderer-Dyg_1QXx.cjs.map} +1 -1
  131. package/dist/{markdown-renderer-BYSrmn0E.js → markdown-renderer-QftQuP4g.js} +2 -2
  132. package/dist/{markdown-renderer-BYSrmn0E.js.map → markdown-renderer-QftQuP4g.js.map} +1 -1
  133. package/dist/{metrics-data-table-D7vx2WEJ.cjs → metrics-data-table-AjAA-dqH.cjs} +2 -2
  134. package/dist/{metrics-data-table-D7vx2WEJ.cjs.map → metrics-data-table-AjAA-dqH.cjs.map} +1 -1
  135. package/dist/{metrics-data-table-DryqJWoI.js → metrics-data-table-hSmtDNck.js} +2 -2
  136. package/dist/{metrics-data-table-DryqJWoI.js.map → metrics-data-table-hSmtDNck.js.map} +1 -1
  137. package/dist/{multi-column-BzL86JPK.cjs → multi-column-BLRjYB5N.cjs} +3 -2
  138. package/dist/{multi-column-BzL86JPK.cjs.map → multi-column-BLRjYB5N.cjs.map} +1 -1
  139. package/dist/{multi-column-C1sXoVG3.js → multi-column-e_-j_rrO.js} +3 -2
  140. package/dist/{multi-column-C1sXoVG3.js.map → multi-column-e_-j_rrO.js.map} +1 -1
  141. package/dist/{property-filter-creator-DU8pl6-6.cjs → property-filter-creator-CaG_zPdy.cjs} +4 -3
  142. package/dist/property-filter-creator-CaG_zPdy.cjs.map +1 -0
  143. package/dist/{property-filter-creator-B9tK0VY3.js → property-filter-creator-Cl9E6wxf.js} +4 -3
  144. package/dist/property-filter-creator-Cl9E6wxf.js.map +1 -0
  145. package/dist/scroll-area-BtcyzOxO.cjs +243 -0
  146. package/dist/scroll-area-BtcyzOxO.cjs.map +1 -0
  147. package/dist/scroll-area-DjZ6nTm5.js +221 -0
  148. package/dist/scroll-area-DjZ6nTm5.js.map +1 -0
  149. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +5 -12
  150. package/dist/src/ds/components/Combobox/combobox.d.ts +13 -4
  151. package/dist/src/ds/components/Combobox/combobox.stories.d.ts +1 -0
  152. package/dist/src/ds/components/Combobox/index.d.ts +0 -1
  153. package/dist/src/ds/components/Command/command.d.ts +5 -1
  154. package/dist/src/ds/components/Command/command.stories.d.ts +1 -0
  155. package/dist/src/ds/components/DataList/data-list-root.d.ts +3 -4
  156. package/dist/src/ds/components/Dialog/dialog.d.ts +2 -0
  157. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-item-classes.d.ts +12 -0
  158. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-link.d.ts +0 -13
  159. package/dist/src/ds/components/MainSidebar/main-sidebar.d.ts +2 -1
  160. package/dist/src/ds/components/ScrollArea/scroll-area.d.ts +12 -0
  161. package/dist/src/ds/components/ScrollArea/scroll-area.stories.d.ts +2 -0
  162. package/dist/src/hooks/use-copy-to-clipboard.d.ts +9 -1
  163. package/dist/src/hooks/use-keyboard-shortcut-label.d.ts +2 -0
  164. package/dist/src/index.d.ts +1 -1
  165. package/dist/src/lib/file/index.d.ts +1 -0
  166. package/dist/src/lib/file/schemes.d.ts +26 -0
  167. package/dist/{traces-data-list-BPTKzaN6.cjs → traces-data-list-BNmnKyDD.cjs} +8 -3
  168. package/dist/traces-data-list-BNmnKyDD.cjs.map +1 -0
  169. package/dist/{traces-data-list-CB7frfpp.js → traces-data-list-DRyI45Ke.js} +8 -3
  170. package/dist/traces-data-list-DRyI45Ke.js.map +1 -0
  171. package/dist/{truncate-C9bKR_02.js → truncate-B8_8wx-G.js} +2 -2
  172. package/dist/{truncate-C9bKR_02.js.map → truncate-B8_8wx-G.js.map} +1 -1
  173. package/dist/{truncate-RL2aHd1a.cjs → truncate-Csk5KmAy.cjs} +2 -2
  174. package/dist/{truncate-RL2aHd1a.cjs.map → truncate-Csk5KmAy.cjs.map} +1 -1
  175. package/dist/use-copy-to-clipboard-D7L_l6_x.js +127 -0
  176. package/dist/use-copy-to-clipboard-D7L_l6_x.js.map +1 -0
  177. package/dist/use-copy-to-clipboard-DHaJCGet.cjs +131 -0
  178. package/dist/use-copy-to-clipboard-DHaJCGet.cjs.map +1 -0
  179. package/package.json +12 -6
  180. package/dist/combobox-B2TriE9Z.cjs +0 -77
  181. package/dist/combobox-B2TriE9Z.cjs.map +0 -1
  182. package/dist/combobox-q2xPfCZc.js +0 -75
  183. package/dist/combobox-q2xPfCZc.js.map +0 -1
  184. package/dist/command-D0tQ1Lpz.cjs.map +0 -1
  185. package/dist/command-DPEUOKZw.js.map +0 -1
  186. package/dist/components/ScrollableContainer.cjs.js +0 -10
  187. package/dist/components/ScrollableContainer.cjs.js.map +0 -1
  188. package/dist/components/ScrollableContainer.d.ts +0 -2
  189. package/dist/components/ScrollableContainer.es.js +0 -2
  190. package/dist/components/ScrollableContainer.es.js.map +0 -1
  191. package/dist/data-list-skeleton-COjCBzBF.cjs.map +0 -1
  192. package/dist/data-list-skeleton-DmAqHgws.js.map +0 -1
  193. package/dist/dialog-46zkb32X.cjs.map +0 -1
  194. package/dist/dialog-CSSfcjSX.js.map +0 -1
  195. package/dist/main-sidebar-1GVDTtcD.js.map +0 -1
  196. package/dist/main-sidebar-Djs_3tGw.cjs.map +0 -1
  197. package/dist/multi-combobox-DkFLK64B.cjs +0 -193
  198. package/dist/multi-combobox-DkFLK64B.cjs.map +0 -1
  199. package/dist/multi-combobox-Y3gT0MqV.js +0 -189
  200. package/dist/multi-combobox-Y3gT0MqV.js.map +0 -1
  201. package/dist/property-filter-creator-B9tK0VY3.js.map +0 -1
  202. package/dist/property-filter-creator-DU8pl6-6.cjs.map +0 -1
  203. package/dist/scroll-area-BqJfcT94.cjs +0 -230
  204. package/dist/scroll-area-BqJfcT94.cjs.map +0 -1
  205. package/dist/scroll-area-BtDqmqBK.js +0 -208
  206. package/dist/scroll-area-BtDqmqBK.js.map +0 -1
  207. package/dist/scrollable-container-BqOFHwdb.js +0 -151
  208. package/dist/scrollable-container-BqOFHwdb.js.map +0 -1
  209. package/dist/scrollable-container-Btq-TfCL.cjs +0 -153
  210. package/dist/scrollable-container-Btq-TfCL.cjs.map +0 -1
  211. package/dist/src/ds/components/Combobox/multi-combobox.d.ts +0 -22
  212. package/dist/src/ds/components/ScrollableContainer/index.d.ts +0 -1
  213. package/dist/src/ds/components/ScrollableContainer/scrollable-container.d.ts +0 -8
  214. package/dist/src/ds/components/ScrollableContainer/scrollable-container.stories.d.ts +0 -10
  215. package/dist/traces-data-list-BPTKzaN6.cjs.map +0 -1
  216. package/dist/traces-data-list-CB7frfpp.js.map +0 -1
  217. package/dist/use-copy-to-clipboard-CGqfkXnN.js +0 -73
  218. package/dist/use-copy-to-clipboard-CGqfkXnN.js.map +0 -1
  219. package/dist/use-copy-to-clipboard-CQgIuR1c.cjs +0 -77
  220. package/dist/use-copy-to-clipboard-CQgIuR1c.cjs.map +0 -1
@@ -0,0 +1,223 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { Combobox as Combobox$1 } from '@base-ui/react/combobox';
3
+ import { ChevronsUpDown, Search, Check } from 'lucide-react';
4
+ import * as React from 'react';
5
+ import { c as cva } from './index-CsyK0ihk.js';
6
+ import { b as buttonVariants } from './Button-DoOEJwa_.js';
7
+ import { b as controlTriggerOpenState } from './control-size-BdDLgGX4.js';
8
+ import { t as transitions } from './transitions-tFfqxz40.js';
9
+ import { c as cn } from './utils-CzYGxqbG.js';
10
+ import { u as usePortalContainer } from './portal-container-BlQ6JKob.js';
11
+
12
+ function normalizeComboboxVariant(variant) {
13
+ return variant === "link" ? "ghost" : variant;
14
+ }
15
+ function comboboxTriggerClass({
16
+ variant,
17
+ size,
18
+ error,
19
+ className
20
+ }) {
21
+ const visualVariant = normalizeComboboxVariant(variant);
22
+ return cn(
23
+ buttonVariants({ variant: visualVariant, size }),
24
+ // Fill the field and push the value left / chevron right (Button's base
25
+ // centers its content with `justify-center`).
26
+ "w-full min-w-32 justify-between",
27
+ // Read as "active" while the popup is open, per variant (see map above).
28
+ controlTriggerOpenState[visualVariant],
29
+ "data-[placeholder]:text-neutral3",
30
+ error && "border-error hover:border-error focus-visible:border-error",
31
+ className
32
+ );
33
+ }
34
+ const comboboxItemClass = cva(
35
+ cn(
36
+ "relative flex cursor-pointer select-none items-center rounded-md",
37
+ "py-1.5 min-h-8",
38
+ "text-ui-smd leading-ui-sm text-neutral4",
39
+ "outline-none focus:outline-none focus-visible:outline-none",
40
+ transitions.colors,
41
+ "data-highlighted:bg-surface4 data-highlighted:text-neutral6",
42
+ "data-selected:text-neutral6"
43
+ ),
44
+ {
45
+ variants: {
46
+ multiple: {
47
+ false: "gap-2 pl-2.5 pr-2",
48
+ true: "gap-2 pl-2.5 pr-2"
49
+ }
50
+ },
51
+ defaultVariants: {
52
+ multiple: false
53
+ }
54
+ }
55
+ );
56
+ const comboboxStyles = {
57
+ /** Root wrapper */
58
+ root: "flex flex-col gap-1.5",
59
+ /** Chevron icon in trigger — inherits the variant's text color via currentColor. */
60
+ chevron: "ml-2 h-4 w-4 shrink-0 opacity-60",
61
+ /** Placeholder text color */
62
+ placeholder: "text-neutral3",
63
+ /** Popup container — concentric with rounded-xl + p-1 (8px items inside 12px container). */
64
+ popup: cn(
65
+ "min-w-(--anchor-width) w-max max-w-(--available-width) rounded-xl border border-border1 bg-surface3 text-neutral4",
66
+ "shadow-dialog",
67
+ "origin-(--transform-origin)",
68
+ "transition-[transform,scale,opacity] duration-150 ease-out",
69
+ "data-starting-style:scale-95 data-starting-style:opacity-0",
70
+ "data-ending-style:scale-95 data-ending-style:opacity-0"
71
+ ),
72
+ /** Positioner */
73
+ positioner: "z-50 pointer-events-auto",
74
+ /** Search input container — borderless top section, hairline divider below. */
75
+ searchContainer: cn("flex items-center border-b border-border1 px-2.5 py-1.5", transitions.colors),
76
+ /** Search icon */
77
+ searchIcon: cn("mr-2 h-3.5 w-3.5 shrink-0 text-neutral3", transitions.colors),
78
+ /** Search input */
79
+ searchInput: cn(
80
+ "flex h-7 w-full rounded-md bg-transparent py-1 text-ui-smd leading-ui-sm text-neutral6",
81
+ "placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50",
82
+ "outline-none focus:outline-none focus-visible:outline-none",
83
+ transitions.colors
84
+ ),
85
+ /** Empty state */
86
+ empty: "not-empty:block hidden py-4 text-center text-ui-smd text-neutral3",
87
+ /** Options list */
88
+ list: "max-h-dropdown-max-height overflow-y-auto overflow-x-hidden p-1",
89
+ /** Option item base — rounded-md sits concentrically inside rounded-xl + p-1. */
90
+ item: comboboxItemClass({ multiple: false }),
91
+ /** Multi-select item — same item rhythm with a right-aligned selected check. */
92
+ itemMulti: comboboxItemClass({ multiple: true }),
93
+ /** Right-aligned slot grouping end content + selection check. */
94
+ itemRightSlot: "ml-auto flex items-center gap-2 shrink-0",
95
+ /** Check indicator container — inline, fixed 16x16, shown only when item is selected. */
96
+ checkContainer: "flex h-4 w-4 shrink-0 items-center justify-center text-neutral6",
97
+ /** Check icon (single select) */
98
+ checkIcon: "h-3.5 w-3.5",
99
+ /** Option label/description wrapper */
100
+ optionText: "flex flex-col gap-0.5 min-w-0",
101
+ /** Option label */
102
+ optionLabel: "truncate",
103
+ /** Option description */
104
+ optionDescription: "text-ui-sm text-neutral3 truncate",
105
+ /** Option end slot — `ml-auto` makes it push right inside flex containers (used by multi-select). */
106
+ optionEnd: "ml-auto flex items-center shrink-0",
107
+ /** Error message */
108
+ error: "text-ui-sm text-accent2"
109
+ };
110
+
111
+ const EMPTY_VALUES = [];
112
+ const EMPTY_OPTIONS = [];
113
+ function isMultipleCombobox(props) {
114
+ return props.multiple === true;
115
+ }
116
+ function ComboboxOptionText({ option }) {
117
+ return /* @__PURE__ */ jsxs("span", { className: comboboxStyles.optionText, children: [
118
+ /* @__PURE__ */ jsx("span", { className: comboboxStyles.optionLabel, children: option.label }),
119
+ option.description && /* @__PURE__ */ jsx("span", { className: comboboxStyles.optionDescription, children: option.description })
120
+ ] });
121
+ }
122
+ function Combobox(props) {
123
+ const {
124
+ options,
125
+ placeholder = isMultipleCombobox(props) ? "Select options..." : "Select option...",
126
+ searchPlaceholder = "Search...",
127
+ emptyText = "No option found.",
128
+ className,
129
+ disabled = false,
130
+ variant = "default",
131
+ size = "md",
132
+ open,
133
+ onOpenChange,
134
+ container,
135
+ error
136
+ } = props;
137
+ const multiple = isMultipleCombobox(props);
138
+ const selectedValues = multiple ? props.value ?? EMPTY_VALUES : EMPTY_VALUES;
139
+ const selectedValueSet = React.useMemo(() => new Set(selectedValues), [selectedValues]);
140
+ const selectedOption = multiple ? null : options.find((option) => option.value === props.value) ?? null;
141
+ const selectedOptions = multiple ? options.filter((option) => selectedValueSet.has(option.value)) : EMPTY_OPTIONS;
142
+ const triggerText = selectedOptions.length === 0 ? placeholder : `${selectedOptions.length} selected`;
143
+ const resolvedContainer = usePortalContainer(container);
144
+ const comboboxContent = /* @__PURE__ */ jsxs(Fragment, { children: [
145
+ /* @__PURE__ */ jsxs(Combobox$1.Trigger, { className: comboboxTriggerClass({ variant, size, error: Boolean(error), className }), children: [
146
+ multiple ? /* @__PURE__ */ jsx("span", { className: cn("truncate", selectedOptions.length === 0 && comboboxStyles.placeholder), children: triggerText }) : (
147
+ // Keep truncation off the outer wrapper so start adornments are not clipped.
148
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
149
+ selectedOption?.start,
150
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: /* @__PURE__ */ jsx(Combobox$1.Value, { placeholder }) })
151
+ ] })
152
+ ),
153
+ /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", children: /* @__PURE__ */ jsx(ChevronsUpDown, { className: comboboxStyles.chevron }) })
154
+ ] }),
155
+ /* @__PURE__ */ jsx(Combobox$1.Portal, { container: resolvedContainer, children: /* @__PURE__ */ jsx(Combobox$1.Positioner, { align: "start", sideOffset: 4, className: comboboxStyles.positioner, children: /* @__PURE__ */ jsxs(Combobox$1.Popup, { className: comboboxStyles.popup, children: [
156
+ /* @__PURE__ */ jsxs("div", { className: comboboxStyles.searchContainer, children: [
157
+ /* @__PURE__ */ jsx(Search, { className: comboboxStyles.searchIcon }),
158
+ /* @__PURE__ */ jsx(Combobox$1.Input, { className: comboboxStyles.searchInput, placeholder: searchPlaceholder })
159
+ ] }),
160
+ /* @__PURE__ */ jsx(Combobox$1.Empty, { className: comboboxStyles.empty, children: emptyText }),
161
+ /* @__PURE__ */ jsx(Combobox$1.List, { className: comboboxStyles.list, children: (option) => {
162
+ const isSelected = selectedValueSet.has(option.value);
163
+ return /* @__PURE__ */ jsx(Combobox$1.Item, { value: option, className: comboboxItemClass({ multiple }), children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [
164
+ option.start,
165
+ /* @__PURE__ */ jsx(ComboboxOptionText, { option }),
166
+ /* @__PURE__ */ jsxs("span", { className: comboboxStyles.itemRightSlot, children: [
167
+ option.end ? /* @__PURE__ */ jsx("div", { className: comboboxStyles.optionEnd, children: option.end }) : null,
168
+ /* @__PURE__ */ jsx("span", { className: comboboxStyles.checkContainer, children: isSelected ? /* @__PURE__ */ jsx(Check, { className: comboboxStyles.checkIcon }) : null })
169
+ ] })
170
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
171
+ option.start,
172
+ /* @__PURE__ */ jsx(ComboboxOptionText, { option }),
173
+ /* @__PURE__ */ jsxs("span", { className: comboboxStyles.itemRightSlot, children: [
174
+ option.end ? /* @__PURE__ */ jsx("div", { className: comboboxStyles.optionEnd, children: option.end }) : null,
175
+ /* @__PURE__ */ jsx("span", { className: comboboxStyles.checkContainer, children: /* @__PURE__ */ jsx(Combobox$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: comboboxStyles.checkIcon }) }) })
176
+ ] })
177
+ ] }) }, option.value);
178
+ } })
179
+ ] }) }) })
180
+ ] });
181
+ if (multiple) {
182
+ return /* @__PURE__ */ jsxs("div", { className: comboboxStyles.root, children: [
183
+ /* @__PURE__ */ jsx(
184
+ Combobox$1.Root,
185
+ {
186
+ multiple: true,
187
+ autoHighlight: true,
188
+ items: options,
189
+ value: selectedOptions,
190
+ onValueChange: (items) => props.onValueChange?.((items ?? []).map((item) => item.value)),
191
+ disabled,
192
+ open,
193
+ onOpenChange,
194
+ children: comboboxContent
195
+ }
196
+ ),
197
+ error && /* @__PURE__ */ jsx("span", { className: comboboxStyles.error, children: error })
198
+ ] });
199
+ }
200
+ return /* @__PURE__ */ jsxs("div", { className: comboboxStyles.root, children: [
201
+ /* @__PURE__ */ jsx(
202
+ Combobox$1.Root,
203
+ {
204
+ autoHighlight: true,
205
+ items: options,
206
+ value: selectedOption,
207
+ onValueChange: (item) => {
208
+ if (item) {
209
+ props.onValueChange?.(item.value);
210
+ }
211
+ },
212
+ disabled,
213
+ open,
214
+ onOpenChange,
215
+ children: comboboxContent
216
+ }
217
+ ),
218
+ error && /* @__PURE__ */ jsx("span", { className: comboboxStyles.error, children: error })
219
+ ] });
220
+ }
221
+
222
+ export { Combobox as C, comboboxStyles as c };
223
+ //# sourceMappingURL=combobox-DvRTz5eL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox-DvRTz5eL.js","sources":["../src/ds/components/Combobox/combobox-styles.ts","../src/ds/components/Combobox/combobox.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport { buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport type { ControlTriggerVisualVariant } from '@/ds/primitives/control-size';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n/**\n * A combobox is a form field, so it reuses the same button looks as everywhere,\n * mirroring `SelectTrigger`: `default` (the Button's filled default surface —\n * the default here too), `outline` (bordered, transparent) and `ghost`\n * (borderless, for breadcrumbs/inline pickers). Only the high-emphasis `primary`\n * look is intentionally NOT offered (a field is not a call-to-action).\n */\nexport type ComboboxVisualVariant = ControlTriggerVisualVariant;\nexport type ComboboxLegacyVariant = 'link';\nexport type ComboboxVariant = ComboboxVisualVariant | ComboboxLegacyVariant;\n\nfunction normalizeComboboxVariant(variant: ComboboxVariant): ComboboxVisualVariant {\n return variant === 'link' ? 'ghost' : variant;\n}\n\n/**\n * Single source of truth for both the single- and multi-select combobox\n * triggers. A combobox = a button + a trailing chevron, so it reuses the Button\n * recipe (variant colors, size = height/text/padding/radius, unified border\n * focus, disabled) and layers only the combobox-specific extras — exactly like\n * `SelectTrigger`.\n */\nexport function comboboxTriggerClass({\n variant,\n size,\n error,\n className,\n}: {\n variant: ComboboxVariant;\n size: TextButtonSize;\n error?: boolean;\n className?: string;\n}): string {\n const visualVariant = normalizeComboboxVariant(variant);\n\n return cn(\n buttonVariants({ variant: visualVariant, size }),\n // Fill the field and push the value left / chevron right (Button's base\n // centers its content with `justify-center`).\n 'w-full min-w-32 justify-between',\n // Read as \"active\" while the popup is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-neutral3',\n error && 'border-error hover:border-error focus-visible:border-error',\n className,\n );\n}\n\nexport const comboboxItemClass = cva(\n cn(\n 'relative flex cursor-pointer select-none items-center rounded-md',\n 'py-1.5 min-h-8',\n 'text-ui-smd leading-ui-sm text-neutral4',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n 'data-highlighted:bg-surface4 data-highlighted:text-neutral6',\n 'data-selected:text-neutral6',\n ),\n {\n variants: {\n multiple: {\n false: 'gap-2 pl-2.5 pr-2',\n true: 'gap-2 pl-2.5 pr-2',\n },\n },\n defaultVariants: {\n multiple: false,\n },\n },\n);\n\nexport const comboboxStyles = {\n /** Root wrapper */\n root: 'flex flex-col gap-1.5',\n\n /** Chevron icon in trigger — inherits the variant's text color via currentColor. */\n chevron: 'ml-2 h-4 w-4 shrink-0 opacity-60',\n\n /** Placeholder text color */\n placeholder: 'text-neutral3',\n\n /** Popup container — concentric with rounded-xl + p-1 (8px items inside 12px container). */\n popup: cn(\n 'min-w-(--anchor-width) w-max max-w-(--available-width) rounded-xl border border-border1 bg-surface3 text-neutral4',\n 'shadow-dialog',\n 'origin-(--transform-origin)',\n 'transition-[transform,scale,opacity] duration-150 ease-out',\n 'data-starting-style:scale-95 data-starting-style:opacity-0',\n 'data-ending-style:scale-95 data-ending-style:opacity-0',\n ),\n\n /** Positioner */\n positioner: 'z-50 pointer-events-auto',\n\n /** Search input container — borderless top section, hairline divider below. */\n searchContainer: cn('flex items-center border-b border-border1 px-2.5 py-1.5', transitions.colors),\n\n /** Search icon */\n searchIcon: cn('mr-2 h-3.5 w-3.5 shrink-0 text-neutral3', transitions.colors),\n\n /** Search input */\n searchInput: cn(\n 'flex h-7 w-full rounded-md bg-transparent py-1 text-ui-smd leading-ui-sm text-neutral6',\n 'placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n ),\n\n /** Empty state */\n empty: 'not-empty:block hidden py-4 text-center text-ui-smd text-neutral3',\n\n /** Options list */\n list: 'max-h-dropdown-max-height overflow-y-auto overflow-x-hidden p-1',\n\n /** Option item base — rounded-md sits concentrically inside rounded-xl + p-1. */\n item: comboboxItemClass({ multiple: false }),\n\n /** Multi-select item — same item rhythm with a right-aligned selected check. */\n itemMulti: comboboxItemClass({ multiple: true }),\n\n /** Right-aligned slot grouping end content + selection check. */\n itemRightSlot: 'ml-auto flex items-center gap-2 shrink-0',\n\n /** Check indicator container — inline, fixed 16x16, shown only when item is selected. */\n checkContainer: 'flex h-4 w-4 shrink-0 items-center justify-center text-neutral6',\n\n /** Check icon (single select) */\n checkIcon: 'h-3.5 w-3.5',\n\n /** Option label/description wrapper */\n optionText: 'flex flex-col gap-0.5 min-w-0',\n\n /** Option label */\n optionLabel: 'truncate',\n\n /** Option description */\n optionDescription: 'text-ui-sm text-neutral3 truncate',\n\n /** Option end slot — `ml-auto` makes it push right inside flex containers (used by multi-select). */\n optionEnd: 'ml-auto flex items-center shrink-0',\n\n /** Error message */\n error: 'text-ui-sm text-accent2',\n} as const;\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { Check, ChevronsUpDown, Search } from 'lucide-react';\nimport * as React from 'react';\nimport { comboboxItemClass, comboboxStyles, comboboxTriggerClass } from './combobox-styles';\nimport type { ComboboxVariant } from './combobox-styles';\nimport type { TextButtonSize } from '@/ds/components/Button/Button';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\nexport type { ComboboxVariant } from './combobox-styles';\n\nexport type ComboboxOption = {\n label: string;\n value: string;\n description?: string;\n start?: React.ReactNode;\n end?: React.ReactNode;\n};\n\ntype ComboboxSharedProps = {\n options: ComboboxOption[];\n placeholder?: string;\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n variant?: ComboboxVariant;\n size?: TextButtonSize;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n container?: HTMLElement | ShadowRoot | null | React.RefObject<HTMLElement | ShadowRoot | null>;\n error?: string;\n};\n\nexport type ComboboxSingleProps = ComboboxSharedProps & {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type ComboboxMultipleProps = ComboboxSharedProps & {\n multiple: true;\n value?: readonly string[];\n onValueChange?: (value: string[]) => void;\n};\n\nexport type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;\n\nconst EMPTY_VALUES: string[] = [];\nconst EMPTY_OPTIONS: ComboboxOption[] = [];\n\nfunction isMultipleCombobox(props: ComboboxProps): props is ComboboxMultipleProps {\n return props.multiple === true;\n}\n\nfunction ComboboxOptionText({ option }: { option: ComboboxOption }) {\n return (\n <span className={comboboxStyles.optionText}>\n <span className={comboboxStyles.optionLabel}>{option.label}</span>\n {option.description && <span className={comboboxStyles.optionDescription}>{option.description}</span>}\n </span>\n );\n}\n\nexport function Combobox(props: ComboboxProps) {\n const {\n options,\n placeholder = isMultipleCombobox(props) ? 'Select options...' : 'Select option...',\n searchPlaceholder = 'Search...',\n emptyText = 'No option found.',\n className,\n disabled = false,\n variant = 'default',\n size = 'md',\n open,\n onOpenChange,\n container,\n error,\n } = props;\n const multiple = isMultipleCombobox(props);\n const selectedValues = multiple ? (props.value ?? EMPTY_VALUES) : EMPTY_VALUES;\n const selectedValueSet = React.useMemo(() => new Set(selectedValues), [selectedValues]);\n const selectedOption = multiple ? null : (options.find(option => option.value === props.value) ?? null);\n const selectedOptions = multiple ? options.filter(option => selectedValueSet.has(option.value)) : EMPTY_OPTIONS;\n const triggerText = selectedOptions.length === 0 ? placeholder : `${selectedOptions.length} selected`;\n // Default to the nearest SideDialog/Drawer popup so the list stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n\n const comboboxContent = (\n <>\n <BaseCombobox.Trigger className={comboboxTriggerClass({ variant, size, error: Boolean(error), className })}>\n {multiple ? (\n <span className={cn('truncate', selectedOptions.length === 0 && comboboxStyles.placeholder)}>\n {triggerText}\n </span>\n ) : (\n // Keep truncation off the outer wrapper so start adornments are not clipped.\n <span className=\"flex items-center gap-2 min-w-0 flex-1\">\n {selectedOption?.start}\n <span className=\"truncate\">\n <BaseCombobox.Value placeholder={placeholder} />\n </span>\n </span>\n )}\n {/* Wrap the chevron in a `<span>` so the svg is one level deep and\n escapes Button's `[&>svg]` adornments — mirrors Select's chevron wrap. */}\n <span className=\"flex shrink-0 items-center\">\n <ChevronsUpDown className={comboboxStyles.chevron} />\n </span>\n </BaseCombobox.Trigger>\n\n <BaseCombobox.Portal container={resolvedContainer}>\n <BaseCombobox.Positioner align=\"start\" sideOffset={4} className={comboboxStyles.positioner}>\n <BaseCombobox.Popup className={comboboxStyles.popup}>\n <div className={comboboxStyles.searchContainer}>\n <Search className={comboboxStyles.searchIcon} />\n <BaseCombobox.Input className={comboboxStyles.searchInput} placeholder={searchPlaceholder} />\n </div>\n <BaseCombobox.Empty className={comboboxStyles.empty}>{emptyText}</BaseCombobox.Empty>\n <BaseCombobox.List className={comboboxStyles.list}>\n {(option: ComboboxOption) => {\n const isSelected = selectedValueSet.has(option.value);\n\n return (\n <BaseCombobox.Item key={option.value} value={option} className={comboboxItemClass({ multiple })}>\n {multiple ? (\n <>\n {option.start}\n <ComboboxOptionText option={option} />\n <span className={comboboxStyles.itemRightSlot}>\n {option.end ? <div className={comboboxStyles.optionEnd}>{option.end}</div> : null}\n <span className={comboboxStyles.checkContainer}>\n {isSelected ? <Check className={comboboxStyles.checkIcon} /> : null}\n </span>\n </span>\n </>\n ) : (\n <>\n {option.start}\n <ComboboxOptionText option={option} />\n <span className={comboboxStyles.itemRightSlot}>\n {option.end ? <div className={comboboxStyles.optionEnd}>{option.end}</div> : null}\n <span className={comboboxStyles.checkContainer}>\n <BaseCombobox.ItemIndicator>\n <Check className={comboboxStyles.checkIcon} />\n </BaseCombobox.ItemIndicator>\n </span>\n </span>\n </>\n )}\n </BaseCombobox.Item>\n );\n }}\n </BaseCombobox.List>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </>\n );\n\n if (multiple) {\n return (\n <div className={comboboxStyles.root}>\n <BaseCombobox.Root\n multiple\n autoHighlight\n items={options}\n value={selectedOptions}\n onValueChange={items => props.onValueChange?.((items ?? []).map(item => item.value))}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n {comboboxContent}\n </BaseCombobox.Root>\n {error && <span className={comboboxStyles.error}>{error}</span>}\n </div>\n );\n }\n\n return (\n <div className={comboboxStyles.root}>\n <BaseCombobox.Root\n autoHighlight\n items={options}\n value={selectedOption}\n onValueChange={item => {\n if (item) {\n props.onValueChange?.(item.value);\n }\n }}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n {comboboxContent}\n </BaseCombobox.Root>\n {error && <span className={comboboxStyles.error}>{error}</span>}\n </div>\n );\n}\n"],"names":["BaseCombobox"],"mappings":"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"}
@@ -2,7 +2,8 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Command as Command$1 } from 'cmdk';
3
3
  import { Search } from 'lucide-react';
4
4
  import * as React from 'react';
5
- import { D as Dialog, c as DialogContent, i as DialogTitle, d as DialogDescription } from './dialog-CSSfcjSX.js';
5
+ import { D as Dialog, c as DialogContent, i as DialogTitle, d as DialogDescription } from './dialog-DTLHod4X.js';
6
+ import { S as ScrollArea } from './scroll-area-DjZ6nTm5.js';
6
7
  import { t as transitions } from './transitions-tFfqxz40.js';
7
8
  import { c as cn } from './utils-CzYGxqbG.js';
8
9
 
@@ -19,6 +20,10 @@ const CommandDialog = ({
19
20
  children,
20
21
  title = "Command Palette",
21
22
  description = "Search for commands and actions",
23
+ contentClassName,
24
+ commandClassName,
25
+ showOverlay = false,
26
+ overlayClassName,
22
27
  ...props
23
28
  }) => {
24
29
  const filter = React.useCallback((value, search) => {
@@ -29,55 +34,93 @@ const CommandDialog = ({
29
34
  return matches ? 1 : 0;
30
35
  }, []);
31
36
  const handleKeyDown = React.useCallback((e) => {
37
+ if (e.key === "Escape") return;
32
38
  e.stopPropagation();
33
39
  }, []);
34
- return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxs(DialogContent, { className: "overflow-hidden p-0", children: [
35
- /* @__PURE__ */ jsx(DialogTitle, { className: "sr-only", children: title }),
36
- /* @__PURE__ */ jsx(DialogDescription, { className: "sr-only", children: description }),
37
- /* @__PURE__ */ jsx(
38
- Command,
39
- {
40
- filter,
41
- onKeyDown: handleKeyDown,
42
- className: cn(
43
- "**:[[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-neutral3",
44
- "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2",
45
- "[&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5",
46
- "**:[[cmdk-input]]:h-12",
47
- "**:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3",
48
- "[&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5"
49
- ),
50
- children
51
- }
52
- )
53
- ] }) });
40
+ return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxs(
41
+ DialogContent,
42
+ {
43
+ showOverlay,
44
+ overlayClassName,
45
+ className: cn("overflow-hidden p-0", contentClassName),
46
+ children: [
47
+ /* @__PURE__ */ jsx(DialogTitle, { className: "sr-only", children: title }),
48
+ /* @__PURE__ */ jsx(DialogDescription, { className: "sr-only", children: description }),
49
+ /* @__PURE__ */ jsx(
50
+ Command,
51
+ {
52
+ filter,
53
+ onKeyDown: handleKeyDown,
54
+ className: cn(
55
+ "**:[[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-neutral3",
56
+ "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2",
57
+ "[&_[data-slot=command-input-wrapper]_svg]:h-5 [&_[data-slot=command-input-wrapper]_svg]:w-5",
58
+ "**:[[cmdk-input]]:h-12",
59
+ "**:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3",
60
+ "[&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
61
+ commandClassName
62
+ ),
63
+ children
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ ) });
54
69
  };
55
- const CommandInput = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: cn("flex items-center border-b border-border1 px-3", transitions.colors), "cmdk-input-wrapper": "", children: [
56
- /* @__PURE__ */ jsx(Search, { className: cn("mr-2 h-4 w-4 shrink-0 text-neutral3", transitions.colors) }),
57
- /* @__PURE__ */ jsx(
58
- Command$1.Input,
70
+ const CommandInput = React.forwardRef(
71
+ ({ className, rightSlot, wrapperClassName, ...props }, ref) => /* @__PURE__ */ jsxs(
72
+ "div",
59
73
  {
60
- ref,
61
- className: cn(
62
- "flex h-10 w-full rounded-md bg-transparent py-3 text-ui-smd leading-ui-sm text-neutral6",
63
- "placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50",
64
- "outline-none focus:outline-none focus-visible:outline-none",
65
- transitions.colors,
66
- className
67
- ),
68
- ...props
74
+ "data-slot": "command-input-wrapper",
75
+ className: cn("flex items-center border-b border-border1 px-3", transitions.colors, wrapperClassName),
76
+ children: [
77
+ /* @__PURE__ */ jsx(Search, { className: cn("mr-2 h-4 w-4 shrink-0 text-neutral3", transitions.colors) }),
78
+ /* @__PURE__ */ jsx(
79
+ Command$1.Input,
80
+ {
81
+ ref,
82
+ className: cn(
83
+ "flex h-10 min-w-0 flex-1 rounded-md bg-transparent py-3 text-ui-smd leading-ui-sm text-neutral6",
84
+ "placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50",
85
+ "outline-none focus:outline-none focus-visible:outline-none",
86
+ transitions.colors,
87
+ className
88
+ ),
89
+ ...props
90
+ }
91
+ ),
92
+ rightSlot && /* @__PURE__ */ jsx("div", { "data-slot": "command-input-right-slot", className: "ml-2 flex shrink-0 items-center text-neutral3", children: rightSlot })
93
+ ]
69
94
  }
70
95
  )
71
- ] }));
96
+ );
72
97
  CommandInput.displayName = Command$1.Input.displayName;
73
- const CommandList = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
74
- Command$1.List,
75
- {
76
- ref,
77
- className: cn("max-h-dropdown-max-height overflow-y-auto overflow-x-hidden", className),
78
- ...props
98
+ const CommandList = React.forwardRef(
99
+ ({ className, scrollArea = false, scrollAreaClassName, scrollAreaViewportClassName, scrollAreaMask, ...props }, ref) => {
100
+ const list = /* @__PURE__ */ jsx(
101
+ Command$1.List,
102
+ {
103
+ ref,
104
+ className: cn(
105
+ "outline-none focus:outline-none focus-visible:outline-none",
106
+ scrollArea ? "overflow-visible" : "max-h-dropdown-max-height overflow-y-auto overflow-x-hidden",
107
+ className
108
+ ),
109
+ ...props
110
+ }
111
+ );
112
+ if (!scrollArea) return list;
113
+ return /* @__PURE__ */ jsx(
114
+ ScrollArea,
115
+ {
116
+ className: cn("min-h-0", scrollAreaClassName),
117
+ viewPortClassName: scrollAreaViewportClassName,
118
+ mask: scrollAreaMask,
119
+ children: list
120
+ }
121
+ );
79
122
  }
80
- ));
123
+ );
81
124
  CommandList.displayName = Command$1.List.displayName;
82
125
  const CommandEmpty = React.forwardRef((props, ref) => /* @__PURE__ */ jsx(Command$1.Empty, { ref, className: "py-6 text-center text-ui-smd text-neutral3", ...props }));
83
126
  CommandEmpty.displayName = Command$1.Empty.displayName;
@@ -119,4 +162,4 @@ const CommandShortcut = ({ className, ...props }) => {
119
162
  CommandShortcut.displayName = "CommandShortcut";
120
163
 
121
164
  export { Command as C, CommandDialog as a, CommandEmpty as b, CommandGroup as c, CommandInput as d, CommandItem as e, CommandList as f, CommandSeparator as g, CommandShortcut as h };
122
- //# sourceMappingURL=command-DPEUOKZw.js.map
165
+ //# sourceMappingURL=command-CkFCH229.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-CkFCH229.js","sources":["../src/ds/components/Command/command.tsx"],"sourcesContent":["import { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/ds/components/Dialog';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport type { ScrollAreaMask } from '@/ds/components/ScrollArea';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn('flex h-full w-full flex-col overflow-hidden rounded-xl bg-surface3 text-neutral4', className)}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogProps = Omit<React.ComponentPropsWithoutRef<typeof Dialog>, 'children'> & {\n children?: React.ReactNode;\n title?: string;\n description?: string;\n contentClassName?: string;\n commandClassName?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst CommandDialog = ({\n children,\n title = 'Command Palette',\n description = 'Search for commands and actions',\n contentClassName,\n commandClassName,\n showOverlay = false,\n overlayClassName,\n ...props\n}: CommandDialogProps) => {\n // Custom filter that preserves DOM order by returning 1 for all matches\n // This prevents cmdk from reordering items by match score\n const filter = React.useCallback((value: string, search: string) => {\n const normalizedValue = value.toLowerCase();\n const normalizedSearch = search.toLowerCase();\n const searchTerms = normalizedSearch.split(/\\s+/).filter(Boolean);\n\n // All search terms must be found in the value\n const matches = searchTerms.every(term => normalizedValue.includes(term));\n return matches ? 1 : 0;\n }, []);\n\n // Stop propagation to prevent keyboard events from reaching\n // global document-level listeners (e.g., table keyboard nav)\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') return;\n\n e.stopPropagation();\n }, []);\n\n return (\n <Dialog {...props}>\n <DialogContent\n showOverlay={showOverlay}\n overlayClassName={overlayClassName}\n className={cn('overflow-hidden p-0', contentClassName)}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n <Command\n filter={filter}\n onKeyDown={handleKeyDown}\n className={cn(\n '**:[[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-neutral3',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2',\n '[&_[data-slot=command-input-wrapper]_svg]:h-5 [&_[data-slot=command-input-wrapper]_svg]:w-5',\n '**:[[cmdk-input]]:h-12',\n '**:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3',\n '[&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5',\n commandClassName,\n )}\n >\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n rightSlot?: React.ReactNode;\n wrapperClassName?: string;\n};\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n ({ className, rightSlot, wrapperClassName, ...props }, ref) => (\n <div\n data-slot=\"command-input-wrapper\"\n className={cn('flex items-center border-b border-border1 px-3', transitions.colors, wrapperClassName)}\n >\n <Search className={cn('mr-2 h-4 w-4 shrink-0 text-neutral3', transitions.colors)} />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 min-w-0 flex-1 rounded-md bg-transparent py-3 text-ui-smd leading-ui-sm text-neutral6',\n 'placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n className,\n )}\n {...props}\n />\n {rightSlot && (\n <div data-slot=\"command-input-right-slot\" className=\"ml-2 flex shrink-0 items-center text-neutral3\">\n {rightSlot}\n </div>\n )}\n </div>\n ),\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\ntype CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n scrollArea?: boolean;\n scrollAreaClassName?: string;\n scrollAreaViewportClassName?: string;\n scrollAreaMask?: ScrollAreaMask;\n};\n\nconst CommandList = React.forwardRef<React.ElementRef<typeof CommandPrimitive.List>, CommandListProps>(\n (\n { className, scrollArea = false, scrollAreaClassName, scrollAreaViewportClassName, scrollAreaMask, ...props },\n ref,\n ) => {\n const list = (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\n 'outline-none focus:outline-none focus-visible:outline-none',\n scrollArea ? 'overflow-visible' : 'max-h-dropdown-max-height overflow-y-auto overflow-x-hidden',\n className,\n )}\n {...props}\n />\n );\n\n if (!scrollArea) return list;\n\n return (\n <ScrollArea\n className={cn('min-h-0', scrollAreaClassName)}\n viewPortClassName={scrollAreaViewportClassName}\n mask={scrollAreaMask}\n >\n {list}\n </ScrollArea>\n );\n },\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-ui-smd text-neutral3\" {...props} />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-neutral4',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:pt-1.5 **:[[cmdk-group-heading]]:pb-1 [&_[cmdk-group-heading]]:text-ui-xs [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:uppercase **:[[cmdk-group-heading]]:tracking-wider **:[[cmdk-group-heading]]:text-neutral3',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border1', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer select-none items-center gap-2.5 rounded-lg px-2 py-1.5 text-ui-smd leading-ui-sm text-neutral4',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n 'data-[selected=true]:bg-surface4 data-[selected=true]:text-neutral6',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 [&_svg]:text-neutral3 data-[selected=true]:[&_svg]:text-neutral6',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-ui-xs tabular-nums tracking-wider text-neutral3', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n"],"names":["CommandPrimitive"],"mappings":"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"}
@@ -4,7 +4,8 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const cmdk = require('cmdk');
5
5
  const lucideReact = require('lucide-react');
6
6
  const React = require('react');
7
- const dialog = require('./dialog-46zkb32X.cjs');
7
+ const dialog = require('./dialog-C0gOGKEK.cjs');
8
+ const scrollArea = require('./scroll-area-BtcyzOxO.cjs');
8
9
  const transitions = require('./transitions-DpczSjmD.cjs');
9
10
  const utils = require('./utils-vA5sWo9W.cjs');
10
11
 
@@ -40,6 +41,10 @@ const CommandDialog = ({
40
41
  children,
41
42
  title = "Command Palette",
42
43
  description = "Search for commands and actions",
44
+ contentClassName,
45
+ commandClassName,
46
+ showOverlay = false,
47
+ overlayClassName,
43
48
  ...props
44
49
  }) => {
45
50
  const filter = React__namespace.useCallback((value, search) => {
@@ -50,55 +55,93 @@ const CommandDialog = ({
50
55
  return matches ? 1 : 0;
51
56
  }, []);
52
57
  const handleKeyDown = React__namespace.useCallback((e) => {
58
+ if (e.key === "Escape") return;
53
59
  e.stopPropagation();
54
60
  }, []);
55
- return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(dialog.DialogContent, { className: "overflow-hidden p-0", children: [
56
- /* @__PURE__ */ jsxRuntime.jsx(dialog.DialogTitle, { className: "sr-only", children: title }),
57
- /* @__PURE__ */ jsxRuntime.jsx(dialog.DialogDescription, { className: "sr-only", children: description }),
58
- /* @__PURE__ */ jsxRuntime.jsx(
59
- Command,
60
- {
61
- filter,
62
- onKeyDown: handleKeyDown,
63
- className: utils.cn(
64
- "**:[[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-neutral3",
65
- "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2",
66
- "[&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5",
67
- "**:[[cmdk-input]]:h-12",
68
- "**:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3",
69
- "[&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5"
70
- ),
71
- children
72
- }
73
- )
74
- ] }) });
61
+ return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(
62
+ dialog.DialogContent,
63
+ {
64
+ showOverlay,
65
+ overlayClassName,
66
+ className: utils.cn("overflow-hidden p-0", contentClassName),
67
+ children: [
68
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.DialogTitle, { className: "sr-only", children: title }),
69
+ /* @__PURE__ */ jsxRuntime.jsx(dialog.DialogDescription, { className: "sr-only", children: description }),
70
+ /* @__PURE__ */ jsxRuntime.jsx(
71
+ Command,
72
+ {
73
+ filter,
74
+ onKeyDown: handleKeyDown,
75
+ className: utils.cn(
76
+ "**:[[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-neutral3",
77
+ "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2",
78
+ "[&_[data-slot=command-input-wrapper]_svg]:h-5 [&_[data-slot=command-input-wrapper]_svg]:w-5",
79
+ "**:[[cmdk-input]]:h-12",
80
+ "**:[[cmdk-item]]:px-2 **:[[cmdk-item]]:py-3",
81
+ "[&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
82
+ commandClassName
83
+ ),
84
+ children
85
+ }
86
+ )
87
+ ]
88
+ }
89
+ ) });
75
90
  };
76
- const CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: utils.cn("flex items-center border-b border-border1 px-3", transitions.transitions.colors), "cmdk-input-wrapper": "", children: [
77
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: utils.cn("mr-2 h-4 w-4 shrink-0 text-neutral3", transitions.transitions.colors) }),
78
- /* @__PURE__ */ jsxRuntime.jsx(
79
- cmdk.Command.Input,
91
+ const CommandInput = React__namespace.forwardRef(
92
+ ({ className, rightSlot, wrapperClassName, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
93
+ "div",
80
94
  {
81
- ref,
82
- className: utils.cn(
83
- "flex h-10 w-full rounded-md bg-transparent py-3 text-ui-smd leading-ui-sm text-neutral6",
84
- "placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50",
85
- "outline-none focus:outline-none focus-visible:outline-none",
86
- transitions.transitions.colors,
87
- className
88
- ),
89
- ...props
95
+ "data-slot": "command-input-wrapper",
96
+ className: utils.cn("flex items-center border-b border-border1 px-3", transitions.transitions.colors, wrapperClassName),
97
+ children: [
98
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: utils.cn("mr-2 h-4 w-4 shrink-0 text-neutral3", transitions.transitions.colors) }),
99
+ /* @__PURE__ */ jsxRuntime.jsx(
100
+ cmdk.Command.Input,
101
+ {
102
+ ref,
103
+ className: utils.cn(
104
+ "flex h-10 min-w-0 flex-1 rounded-md bg-transparent py-3 text-ui-smd leading-ui-sm text-neutral6",
105
+ "placeholder:text-neutral3 disabled:cursor-not-allowed disabled:opacity-50",
106
+ "outline-none focus:outline-none focus-visible:outline-none",
107
+ transitions.transitions.colors,
108
+ className
109
+ ),
110
+ ...props
111
+ }
112
+ ),
113
+ rightSlot && /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "command-input-right-slot", className: "ml-2 flex shrink-0 items-center text-neutral3", children: rightSlot })
114
+ ]
90
115
  }
91
116
  )
92
- ] }));
117
+ );
93
118
  CommandInput.displayName = cmdk.Command.Input.displayName;
94
- const CommandList = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
95
- cmdk.Command.List,
96
- {
97
- ref,
98
- className: utils.cn("max-h-dropdown-max-height overflow-y-auto overflow-x-hidden", className),
99
- ...props
119
+ const CommandList = React__namespace.forwardRef(
120
+ ({ className, scrollArea: scrollArea$1 = false, scrollAreaClassName, scrollAreaViewportClassName, scrollAreaMask, ...props }, ref) => {
121
+ const list = /* @__PURE__ */ jsxRuntime.jsx(
122
+ cmdk.Command.List,
123
+ {
124
+ ref,
125
+ className: utils.cn(
126
+ "outline-none focus:outline-none focus-visible:outline-none",
127
+ scrollArea$1 ? "overflow-visible" : "max-h-dropdown-max-height overflow-y-auto overflow-x-hidden",
128
+ className
129
+ ),
130
+ ...props
131
+ }
132
+ );
133
+ if (!scrollArea$1) return list;
134
+ return /* @__PURE__ */ jsxRuntime.jsx(
135
+ scrollArea.ScrollArea,
136
+ {
137
+ className: utils.cn("min-h-0", scrollAreaClassName),
138
+ viewPortClassName: scrollAreaViewportClassName,
139
+ mask: scrollAreaMask,
140
+ children: list
141
+ }
142
+ );
100
143
  }
101
- ));
144
+ );
102
145
  CommandList.displayName = cmdk.Command.List.displayName;
103
146
  const CommandEmpty = React__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(cmdk.Command.Empty, { ref, className: "py-6 text-center text-ui-smd text-neutral3", ...props }));
104
147
  CommandEmpty.displayName = cmdk.Command.Empty.displayName;
@@ -148,4 +191,4 @@ exports.CommandItem = CommandItem;
148
191
  exports.CommandList = CommandList;
149
192
  exports.CommandSeparator = CommandSeparator;
150
193
  exports.CommandShortcut = CommandShortcut;
151
- //# sourceMappingURL=command-D0tQ1Lpz.cjs.map
194
+ //# sourceMappingURL=command-EI7t_0WS.cjs.map