@health-samurai/react-components 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (571) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -1
  3. package/dist/bundle.css +2349 -754
  4. package/dist/src/components/button-dropdown.d.ts +10 -0
  5. package/dist/src/components/button-dropdown.d.ts.map +1 -0
  6. package/dist/src/components/button-dropdown.js +70 -0
  7. package/dist/src/components/button-dropdown.js.map +1 -0
  8. package/dist/src/components/button-dropdown.stories.js +48 -0
  9. package/dist/src/components/button-dropdown.stories.js.map +1 -0
  10. package/dist/src/components/code-editor/fhir-autocomplete.d.ts +70 -0
  11. package/dist/src/components/code-editor/fhir-autocomplete.d.ts.map +1 -0
  12. package/dist/src/components/code-editor/fhir-autocomplete.js +1850 -0
  13. package/dist/src/components/code-editor/fhir-autocomplete.js.map +1 -0
  14. package/dist/src/components/code-editor/fhir-autocomplete.test.js +1099 -0
  15. package/dist/src/components/code-editor/fhir-autocomplete.test.js.map +1 -0
  16. package/dist/src/components/code-editor/http/grammar/http.d.ts +3 -0
  17. package/dist/src/components/code-editor/http/grammar/http.d.ts.map +1 -0
  18. package/dist/src/components/code-editor/http/grammar/http.grammar +74 -0
  19. package/dist/src/components/code-editor/http/grammar/http.js +38 -0
  20. package/dist/src/components/code-editor/http/grammar/http.js.map +1 -0
  21. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts +2 -0
  22. package/dist/src/components/code-editor/http/grammar/http.terms.d.ts.map +1 -0
  23. package/dist/src/components/code-editor/http/grammar/http.terms.js +4 -0
  24. package/dist/src/components/code-editor/http/grammar/http.terms.js.map +1 -0
  25. package/dist/src/components/code-editor/http/grammar/http.test.js +80 -0
  26. package/dist/src/components/code-editor/http/grammar/http.test.js.map +1 -0
  27. package/dist/src/components/code-editor/http/index.d.ts +12 -0
  28. package/dist/src/components/code-editor/http/index.d.ts.map +1 -0
  29. package/dist/src/components/code-editor/http/index.js +486 -0
  30. package/dist/src/components/code-editor/http/index.js.map +1 -0
  31. package/dist/src/components/code-editor/index.d.ts +39 -1
  32. package/dist/src/components/code-editor/index.d.ts.map +1 -1
  33. package/dist/src/components/code-editor/index.js +1792 -45
  34. package/dist/src/components/code-editor/index.js.map +1 -1
  35. package/dist/src/components/code-editor/json-ast.d.ts +46 -0
  36. package/dist/src/components/code-editor/json-ast.d.ts.map +1 -0
  37. package/dist/src/components/code-editor/json-ast.js +465 -0
  38. package/dist/src/components/code-editor/json-ast.js.map +1 -0
  39. package/dist/src/components/code-editor/json-ast.test.js +206 -0
  40. package/dist/src/components/code-editor/json-ast.test.js.map +1 -0
  41. package/dist/src/components/code-editor/sql-completion.d.ts +22 -0
  42. package/dist/src/components/code-editor/sql-completion.d.ts.map +1 -0
  43. package/dist/src/components/code-editor/sql-completion.js +897 -0
  44. package/dist/src/components/code-editor/sql-completion.js.map +1 -0
  45. package/dist/src/components/code-editor.stories.js +280 -3
  46. package/dist/src/components/code-editor.stories.js.map +1 -1
  47. package/dist/src/components/copy-icon.d.ts +5 -1
  48. package/dist/src/components/copy-icon.d.ts.map +1 -1
  49. package/dist/src/components/copy-icon.js +41 -3
  50. package/dist/src/components/copy-icon.js.map +1 -1
  51. package/dist/src/components/data-table.d.ts +9 -0
  52. package/dist/src/components/data-table.d.ts.map +1 -0
  53. package/dist/src/components/data-table.js +66 -0
  54. package/dist/src/components/data-table.js.map +1 -0
  55. package/dist/src/components/data-table.stories.js +240 -0
  56. package/dist/src/components/data-table.stories.js.map +1 -0
  57. package/dist/src/components/date-picker-input.d.ts +10 -0
  58. package/dist/src/components/date-picker-input.d.ts.map +1 -0
  59. package/dist/src/components/date-picker-input.js +90 -0
  60. package/dist/src/components/date-picker-input.js.map +1 -0
  61. package/dist/src/components/date-picker-input.stories.js +76 -0
  62. package/dist/src/components/date-picker-input.stories.js.map +1 -0
  63. package/dist/src/components/fhir-structure-view.d.ts +34 -0
  64. package/dist/src/components/fhir-structure-view.d.ts.map +1 -0
  65. package/dist/src/components/fhir-structure-view.js +230 -0
  66. package/dist/src/components/fhir-structure-view.js.map +1 -0
  67. package/dist/src/components/fhir-structure-view.stories.js +447 -0
  68. package/dist/src/components/fhir-structure-view.stories.js.map +1 -0
  69. package/dist/src/components/icon-button.d.ts +12 -0
  70. package/dist/src/components/icon-button.d.ts.map +1 -0
  71. package/dist/src/components/icon-button.js +41 -0
  72. package/dist/src/components/icon-button.js.map +1 -0
  73. package/dist/src/components/icon-button.stories.js +157 -0
  74. package/dist/src/components/icon-button.stories.js.map +1 -0
  75. package/dist/src/components/operation-outcome-view.d.ts +27 -0
  76. package/dist/src/components/operation-outcome-view.d.ts.map +1 -0
  77. package/dist/src/components/operation-outcome-view.js +198 -0
  78. package/dist/src/components/operation-outcome-view.js.map +1 -0
  79. package/dist/src/components/operation-outcome-view.stories.js +207 -0
  80. package/dist/src/components/operation-outcome-view.stories.js.map +1 -0
  81. package/dist/src/components/request-line-editor.d.ts +13 -35
  82. package/dist/src/components/request-line-editor.d.ts.map +1 -1
  83. package/dist/src/components/request-line-editor.js +73 -49
  84. package/dist/src/components/request-line-editor.js.map +1 -1
  85. package/dist/src/components/request-line-editor.stories.js +17 -53
  86. package/dist/src/components/request-line-editor.stories.js.map +1 -1
  87. package/dist/src/components/sandbox.d.ts +13 -0
  88. package/dist/src/components/sandbox.d.ts.map +1 -0
  89. package/dist/src/components/sandbox.js +107 -0
  90. package/dist/src/components/sandbox.js.map +1 -0
  91. package/dist/src/components/sandbox.stories.js +126 -0
  92. package/dist/src/components/sandbox.stories.js.map +1 -0
  93. package/dist/src/components/segment-control.d.ts +13 -0
  94. package/dist/src/components/segment-control.d.ts.map +1 -0
  95. package/dist/src/components/segment-control.js +33 -0
  96. package/dist/src/components/segment-control.js.map +1 -0
  97. package/dist/src/components/segment-control.stories.js +68 -0
  98. package/dist/src/components/segment-control.stories.js.map +1 -0
  99. package/dist/src/components/split-button.d.ts +12 -0
  100. package/dist/src/components/split-button.d.ts.map +1 -0
  101. package/dist/src/components/split-button.js +33 -0
  102. package/dist/src/components/split-button.js.map +1 -0
  103. package/dist/src/components/split-button.stories.js +84 -0
  104. package/dist/src/components/split-button.stories.js.map +1 -0
  105. package/dist/src/components/tag.d.ts +16 -0
  106. package/dist/src/components/tag.d.ts.map +1 -0
  107. package/dist/src/components/tag.js +198 -0
  108. package/dist/src/components/tag.js.map +1 -0
  109. package/dist/src/components/tag.stories.js +459 -0
  110. package/dist/src/components/tag.stories.js.map +1 -0
  111. package/dist/src/components/tile.d.ts +15 -0
  112. package/dist/src/components/tile.d.ts.map +1 -0
  113. package/dist/src/components/tile.js +76 -0
  114. package/dist/src/components/tile.js.map +1 -0
  115. package/dist/src/components/tile.stories.js +167 -0
  116. package/dist/src/components/tile.stories.js.map +1 -0
  117. package/dist/src/components/toolbar.d.ts +18 -0
  118. package/dist/src/components/toolbar.d.ts.map +1 -0
  119. package/dist/src/components/toolbar.js +61 -0
  120. package/dist/src/components/toolbar.js.map +1 -0
  121. package/dist/src/components/toolbar.stories.js +69 -0
  122. package/dist/src/components/toolbar.stories.js.map +1 -0
  123. package/dist/src/components/tree-view.d.ts +47 -0
  124. package/dist/src/components/tree-view.d.ts.map +1 -0
  125. package/dist/src/components/tree-view.js +122 -0
  126. package/dist/src/components/tree-view.js.map +1 -0
  127. package/dist/src/components/tree-view.stories.js +283 -0
  128. package/dist/src/components/tree-view.stories.js.map +1 -0
  129. package/dist/src/icons.d.ts +11 -0
  130. package/dist/src/icons.d.ts.map +1 -0
  131. package/dist/src/icons.js +328 -0
  132. package/dist/src/icons.js.map +1 -0
  133. package/dist/src/index.css +358 -74
  134. package/dist/src/index.d.ts +17 -1
  135. package/dist/src/index.d.ts.map +1 -1
  136. package/dist/src/index.js +17 -1
  137. package/dist/src/index.js.map +1 -1
  138. package/dist/src/shadcn/components/ui/accordion.d.ts +2 -2
  139. package/dist/src/shadcn/components/ui/accordion.d.ts.map +1 -1
  140. package/dist/src/shadcn/components/ui/accordion.js +35 -9
  141. package/dist/src/shadcn/components/ui/accordion.js.map +1 -1
  142. package/dist/src/shadcn/components/ui/alert-dialog.d.ts +12 -4
  143. package/dist/src/shadcn/components/ui/alert-dialog.d.ts.map +1 -1
  144. package/dist/src/shadcn/components/ui/alert-dialog.js +128 -18
  145. package/dist/src/shadcn/components/ui/alert-dialog.js.map +1 -1
  146. package/dist/src/shadcn/components/ui/alert-dialog.stories.js +269 -19
  147. package/dist/src/shadcn/components/ui/alert-dialog.stories.js.map +1 -1
  148. package/dist/src/shadcn/components/ui/alert.d.ts +29 -6
  149. package/dist/src/shadcn/components/ui/alert.d.ts.map +1 -1
  150. package/dist/src/shadcn/components/ui/alert.js +50 -19
  151. package/dist/src/shadcn/components/ui/alert.js.map +1 -1
  152. package/dist/src/shadcn/components/ui/alert.stories.js +140 -36
  153. package/dist/src/shadcn/components/ui/alert.stories.js.map +1 -1
  154. package/dist/src/shadcn/components/ui/aspect-ratio.d.ts.map +1 -1
  155. package/dist/src/shadcn/components/ui/aspect-ratio.js +1 -0
  156. package/dist/src/shadcn/components/ui/aspect-ratio.js.map +1 -1
  157. package/dist/src/shadcn/components/ui/avatar.d.ts.map +1 -1
  158. package/dist/src/shadcn/components/ui/avatar.js +4 -3
  159. package/dist/src/shadcn/components/ui/avatar.js.map +1 -1
  160. package/dist/src/shadcn/components/ui/avatar.stories.js +68 -2
  161. package/dist/src/shadcn/components/ui/avatar.stories.js.map +1 -1
  162. package/dist/src/shadcn/components/ui/badge.d.ts +1 -1
  163. package/dist/src/shadcn/components/ui/badge.d.ts.map +1 -1
  164. package/dist/src/shadcn/components/ui/badge.js +16 -5
  165. package/dist/src/shadcn/components/ui/badge.js.map +1 -1
  166. package/dist/src/shadcn/components/ui/breadcrumb.d.ts +5 -2
  167. package/dist/src/shadcn/components/ui/breadcrumb.d.ts.map +1 -1
  168. package/dist/src/shadcn/components/ui/breadcrumb.js +98 -13
  169. package/dist/src/shadcn/components/ui/breadcrumb.js.map +1 -1
  170. package/dist/src/shadcn/components/ui/breadcrumb.stories.js +205 -45
  171. package/dist/src/shadcn/components/ui/breadcrumb.stories.js.map +1 -1
  172. package/dist/src/shadcn/components/ui/button.d.ts.map +1 -1
  173. package/dist/src/shadcn/components/ui/button.js +65 -11
  174. package/dist/src/shadcn/components/ui/button.js.map +1 -1
  175. package/dist/src/shadcn/components/ui/button.stories.js +99 -17
  176. package/dist/src/shadcn/components/ui/button.stories.js.map +1 -1
  177. package/dist/src/shadcn/components/ui/calendar.d.ts +1 -1
  178. package/dist/src/shadcn/components/ui/calendar.d.ts.map +1 -1
  179. package/dist/src/shadcn/components/ui/calendar.js +1 -0
  180. package/dist/src/shadcn/components/ui/calendar.js.map +1 -1
  181. package/dist/src/shadcn/components/ui/card.d.ts +5 -1
  182. package/dist/src/shadcn/components/ui/card.d.ts.map +1 -1
  183. package/dist/src/shadcn/components/ui/card.js +28 -7
  184. package/dist/src/shadcn/components/ui/card.js.map +1 -1
  185. package/dist/src/shadcn/components/ui/card.stories.js +23 -2
  186. package/dist/src/shadcn/components/ui/card.stories.js.map +1 -1
  187. package/dist/src/shadcn/components/ui/carousel.d.ts +1 -1
  188. package/dist/src/shadcn/components/ui/carousel.d.ts.map +1 -1
  189. package/dist/src/shadcn/components/ui/carousel.js +1 -0
  190. package/dist/src/shadcn/components/ui/carousel.js.map +1 -1
  191. package/dist/src/shadcn/components/ui/chart.d.ts +5 -5
  192. package/dist/src/shadcn/components/ui/chart.d.ts.map +1 -1
  193. package/dist/src/shadcn/components/ui/chart.js +4 -3
  194. package/dist/src/shadcn/components/ui/chart.js.map +1 -1
  195. package/dist/src/shadcn/components/ui/checkbox.d.ts +5 -1
  196. package/dist/src/shadcn/components/ui/checkbox.d.ts.map +1 -1
  197. package/dist/src/shadcn/components/ui/checkbox.js +46 -6
  198. package/dist/src/shadcn/components/ui/checkbox.js.map +1 -1
  199. package/dist/src/shadcn/components/ui/checkbox.stories.js +156 -46
  200. package/dist/src/shadcn/components/ui/checkbox.stories.js.map +1 -1
  201. package/dist/src/shadcn/components/ui/combobox.d.ts +29 -0
  202. package/dist/src/shadcn/components/ui/combobox.d.ts.map +1 -0
  203. package/dist/src/shadcn/components/ui/combobox.js +226 -0
  204. package/dist/src/shadcn/components/ui/combobox.js.map +1 -0
  205. package/dist/src/shadcn/components/ui/combobox.stories.js +167 -0
  206. package/dist/src/shadcn/components/ui/combobox.stories.js.map +1 -0
  207. package/dist/src/shadcn/components/ui/command.d.ts +4 -2
  208. package/dist/src/shadcn/components/ui/command.d.ts.map +1 -1
  209. package/dist/src/shadcn/components/ui/command.js +75 -13
  210. package/dist/src/shadcn/components/ui/command.js.map +1 -1
  211. package/dist/src/shadcn/components/ui/command.stories.js +277 -57
  212. package/dist/src/shadcn/components/ui/command.stories.js.map +1 -1
  213. package/dist/src/shadcn/components/ui/context-menu.d.ts +7 -3
  214. package/dist/src/shadcn/components/ui/context-menu.d.ts.map +1 -1
  215. package/dist/src/shadcn/components/ui/context-menu.js +120 -13
  216. package/dist/src/shadcn/components/ui/context-menu.js.map +1 -1
  217. package/dist/src/shadcn/components/ui/dialog.d.ts.map +1 -1
  218. package/dist/src/shadcn/components/ui/dialog.js +35 -7
  219. package/dist/src/shadcn/components/ui/dialog.js.map +1 -1
  220. package/dist/src/shadcn/components/ui/drawer.d.ts.map +1 -1
  221. package/dist/src/shadcn/components/ui/drawer.js +27 -5
  222. package/dist/src/shadcn/components/ui/drawer.js.map +1 -1
  223. package/dist/src/shadcn/components/ui/dropdown-menu.d.ts +7 -3
  224. package/dist/src/shadcn/components/ui/dropdown-menu.d.ts.map +1 -1
  225. package/dist/src/shadcn/components/ui/dropdown-menu.js +122 -14
  226. package/dist/src/shadcn/components/ui/dropdown-menu.js.map +1 -1
  227. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js +22 -5
  228. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js.map +1 -1
  229. package/dist/src/shadcn/components/ui/form.d.ts +2 -2
  230. package/dist/src/shadcn/components/ui/form.d.ts.map +1 -1
  231. package/dist/src/shadcn/components/ui/form.js +17 -8
  232. package/dist/src/shadcn/components/ui/form.js.map +1 -1
  233. package/dist/src/shadcn/components/ui/hover-card.d.ts.map +1 -1
  234. package/dist/src/shadcn/components/ui/hover-card.js +2 -1
  235. package/dist/src/shadcn/components/ui/hover-card.js.map +1 -1
  236. package/dist/src/shadcn/components/ui/input-otp.d.ts.map +1 -1
  237. package/dist/src/shadcn/components/ui/input-otp.js +1 -0
  238. package/dist/src/shadcn/components/ui/input-otp.js.map +1 -1
  239. package/dist/src/shadcn/components/ui/input.d.ts +3 -1
  240. package/dist/src/shadcn/components/ui/input.d.ts.map +1 -1
  241. package/dist/src/shadcn/components/ui/input.js +126 -17
  242. package/dist/src/shadcn/components/ui/input.js.map +1 -1
  243. package/dist/src/shadcn/components/ui/input.stories.js +218 -29
  244. package/dist/src/shadcn/components/ui/input.stories.js.map +1 -1
  245. package/dist/src/shadcn/components/ui/label.d.ts.map +1 -1
  246. package/dist/src/shadcn/components/ui/label.js +9 -1
  247. package/dist/src/shadcn/components/ui/label.js.map +1 -1
  248. package/dist/src/shadcn/components/ui/menubar.d.ts.map +1 -1
  249. package/dist/src/shadcn/components/ui/menubar.js +35 -13
  250. package/dist/src/shadcn/components/ui/menubar.js.map +1 -1
  251. package/dist/src/shadcn/components/ui/pagination.d.ts +9 -2
  252. package/dist/src/shadcn/components/ui/pagination.d.ts.map +1 -1
  253. package/dist/src/shadcn/components/ui/pagination.js +41 -24
  254. package/dist/src/shadcn/components/ui/pagination.js.map +1 -1
  255. package/dist/src/shadcn/components/ui/pagination.stories.js +44 -37
  256. package/dist/src/shadcn/components/ui/pagination.stories.js.map +1 -1
  257. package/dist/src/shadcn/components/ui/popover.d.ts.map +1 -1
  258. package/dist/src/shadcn/components/ui/popover.js +13 -1
  259. package/dist/src/shadcn/components/ui/popover.js.map +1 -1
  260. package/dist/src/shadcn/components/ui/progress.d.ts.map +1 -1
  261. package/dist/src/shadcn/components/ui/progress.js +6 -2
  262. package/dist/src/shadcn/components/ui/progress.js.map +1 -1
  263. package/dist/src/shadcn/components/ui/radio-button-group.d.ts +21 -0
  264. package/dist/src/shadcn/components/ui/radio-button-group.d.ts.map +1 -0
  265. package/dist/src/shadcn/components/ui/radio-button-group.js +148 -0
  266. package/dist/src/shadcn/components/ui/radio-button-group.js.map +1 -0
  267. package/dist/src/shadcn/components/ui/radio-button-group.stories.js +283 -0
  268. package/dist/src/shadcn/components/ui/radio-button-group.stories.js.map +1 -0
  269. package/dist/src/shadcn/components/ui/radio-group.d.ts +5 -1
  270. package/dist/src/shadcn/components/ui/radio-group.d.ts.map +1 -1
  271. package/dist/src/shadcn/components/ui/radio-group.js +40 -7
  272. package/dist/src/shadcn/components/ui/radio-group.js.map +1 -1
  273. package/dist/src/shadcn/components/ui/radio-group.stories.js +107 -32
  274. package/dist/src/shadcn/components/ui/radio-group.stories.js.map +1 -1
  275. package/dist/src/shadcn/components/ui/resizable.d.ts.map +1 -1
  276. package/dist/src/shadcn/components/ui/resizable.js +2 -1
  277. package/dist/src/shadcn/components/ui/resizable.js.map +1 -1
  278. package/dist/src/shadcn/components/ui/resizable.stories.js +2 -2
  279. package/dist/src/shadcn/components/ui/resizable.stories.js.map +1 -1
  280. package/dist/src/shadcn/components/ui/scroll-area.d.ts.map +1 -1
  281. package/dist/src/shadcn/components/ui/scroll-area.js +10 -3
  282. package/dist/src/shadcn/components/ui/scroll-area.js.map +1 -1
  283. package/dist/src/shadcn/components/ui/select.d.ts +1 -2
  284. package/dist/src/shadcn/components/ui/select.d.ts.map +1 -1
  285. package/dist/src/shadcn/components/ui/select.js +49 -19
  286. package/dist/src/shadcn/components/ui/select.js.map +1 -1
  287. package/dist/src/shadcn/components/ui/select.stories.js +193 -70
  288. package/dist/src/shadcn/components/ui/select.stories.js.map +1 -1
  289. package/dist/src/shadcn/components/ui/separator.d.ts.map +1 -1
  290. package/dist/src/shadcn/components/ui/separator.js +8 -1
  291. package/dist/src/shadcn/components/ui/separator.js.map +1 -1
  292. package/dist/src/shadcn/components/ui/sheet.js +1 -1
  293. package/dist/src/shadcn/components/ui/sheet.js.map +1 -1
  294. package/dist/src/shadcn/components/ui/sidebar.d.ts +4 -4
  295. package/dist/src/shadcn/components/ui/sidebar.d.ts.map +1 -1
  296. package/dist/src/shadcn/components/ui/sidebar.js +21 -6
  297. package/dist/src/shadcn/components/ui/sidebar.js.map +1 -1
  298. package/dist/src/shadcn/components/ui/skeleton.d.ts.map +1 -1
  299. package/dist/src/shadcn/components/ui/skeleton.js +3 -1
  300. package/dist/src/shadcn/components/ui/skeleton.js.map +1 -1
  301. package/dist/src/shadcn/components/ui/slider.d.ts.map +1 -1
  302. package/dist/src/shadcn/components/ui/slider.js +35 -4
  303. package/dist/src/shadcn/components/ui/slider.js.map +1 -1
  304. package/dist/src/shadcn/components/ui/sonner.d.ts +24 -2
  305. package/dist/src/shadcn/components/ui/sonner.d.ts.map +1 -1
  306. package/dist/src/shadcn/components/ui/sonner.js +127 -9
  307. package/dist/src/shadcn/components/ui/sonner.js.map +1 -1
  308. package/dist/src/shadcn/components/ui/sonner.stories.js +251 -12
  309. package/dist/src/shadcn/components/ui/sonner.stories.js.map +1 -1
  310. package/dist/src/shadcn/components/ui/switch.d.ts +7 -1
  311. package/dist/src/shadcn/components/ui/switch.d.ts.map +1 -1
  312. package/dist/src/shadcn/components/ui/switch.js +55 -3
  313. package/dist/src/shadcn/components/ui/switch.js.map +1 -1
  314. package/dist/src/shadcn/components/ui/switch.stories.js +84 -9
  315. package/dist/src/shadcn/components/ui/switch.stories.js.map +1 -1
  316. package/dist/src/shadcn/components/ui/table.d.ts +23 -6
  317. package/dist/src/shadcn/components/ui/table.d.ts.map +1 -1
  318. package/dist/src/shadcn/components/ui/table.js +65 -20
  319. package/dist/src/shadcn/components/ui/table.js.map +1 -1
  320. package/dist/src/shadcn/components/ui/table.stories.js +217 -97
  321. package/dist/src/shadcn/components/ui/table.stories.js.map +1 -1
  322. package/dist/src/shadcn/components/ui/tabs.d.ts +30 -5
  323. package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
  324. package/dist/src/shadcn/components/ui/tabs.js +470 -23
  325. package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
  326. package/dist/src/shadcn/components/ui/tabs.stories.js +405 -181
  327. package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
  328. package/dist/src/shadcn/components/ui/textarea.d.ts +8 -1
  329. package/dist/src/shadcn/components/ui/textarea.d.ts.map +1 -1
  330. package/dist/src/shadcn/components/ui/textarea.js +30 -2
  331. package/dist/src/shadcn/components/ui/textarea.js.map +1 -1
  332. package/dist/src/shadcn/components/ui/textarea.stories.js +85 -4
  333. package/dist/src/shadcn/components/ui/textarea.stories.js.map +1 -1
  334. package/dist/src/shadcn/components/ui/toggle-group.d.ts +3 -3
  335. package/dist/src/shadcn/components/ui/toggle-group.d.ts.map +1 -1
  336. package/dist/src/shadcn/components/ui/toggle-group.js +14 -12
  337. package/dist/src/shadcn/components/ui/toggle-group.js.map +1 -1
  338. package/dist/src/shadcn/components/ui/toggle.d.ts +3 -4
  339. package/dist/src/shadcn/components/ui/toggle.d.ts.map +1 -1
  340. package/dist/src/shadcn/components/ui/toggle.js +44 -16
  341. package/dist/src/shadcn/components/ui/toggle.js.map +1 -1
  342. package/dist/src/shadcn/components/ui/toggle.stories.js +130 -7
  343. package/dist/src/shadcn/components/ui/toggle.stories.js.map +1 -1
  344. package/dist/src/shadcn/components/ui/tooltip.d.ts.map +1 -1
  345. package/dist/src/shadcn/components/ui/tooltip.js +12 -1
  346. package/dist/src/shadcn/components/ui/tooltip.js.map +1 -1
  347. package/dist/src/shadcn/components/ui/tree.d.ts +29 -0
  348. package/dist/src/shadcn/components/ui/tree.d.ts.map +1 -0
  349. package/dist/src/shadcn/components/ui/tree.js +135 -0
  350. package/dist/src/shadcn/components/ui/tree.js.map +1 -0
  351. package/dist/src/shadcn/shadcn.css +4 -4
  352. package/dist/src/tokens.css +50 -20
  353. package/dist/src/typography.css +78 -15
  354. package/package.json +84 -64
  355. package/src/components/button-dropdown.stories.tsx +41 -0
  356. package/src/components/button-dropdown.tsx +97 -0
  357. package/src/components/code-editor/fhir-autocomplete.test.ts +993 -0
  358. package/src/components/code-editor/fhir-autocomplete.ts +2322 -0
  359. package/src/components/code-editor/http/grammar/http.grammar +74 -0
  360. package/src/components/code-editor/http/grammar/http.terms.ts +9 -0
  361. package/src/components/code-editor/http/grammar/http.test.ts +110 -0
  362. package/src/components/code-editor/http/grammar/http.ts +21 -0
  363. package/src/components/code-editor/http/index.ts +424 -0
  364. package/src/components/code-editor/index.tsx +1944 -42
  365. package/src/components/code-editor/json-ast.test.ts +230 -0
  366. package/src/components/code-editor/json-ast.ts +590 -0
  367. package/src/components/code-editor/sql-completion.ts +1112 -0
  368. package/src/components/code-editor.stories.tsx +325 -2
  369. package/src/components/copy-icon.tsx +57 -3
  370. package/src/components/data-table.stories.tsx +91 -0
  371. package/src/components/data-table.tsx +126 -0
  372. package/src/components/date-picker-input.stories.tsx +79 -0
  373. package/src/components/date-picker-input.tsx +104 -0
  374. package/src/components/fhir-structure-view.stories.tsx +439 -0
  375. package/src/components/fhir-structure-view.tsx +233 -0
  376. package/src/components/icon-button.stories.tsx +86 -0
  377. package/src/components/icon-button.tsx +57 -0
  378. package/src/components/operation-outcome-view.stories.tsx +163 -0
  379. package/src/components/operation-outcome-view.tsx +254 -0
  380. package/src/components/request-line-editor.stories.tsx +17 -27
  381. package/src/components/request-line-editor.tsx +103 -61
  382. package/src/components/sandbox.stories.tsx +131 -0
  383. package/src/components/sandbox.tsx +191 -0
  384. package/src/components/segment-control.stories.tsx +61 -0
  385. package/src/components/segment-control.tsx +83 -0
  386. package/src/components/split-button.stories.tsx +68 -0
  387. package/src/components/split-button.tsx +74 -0
  388. package/src/components/tag.stories.tsx +371 -0
  389. package/src/components/tag.tsx +236 -0
  390. package/src/components/tile.stories.tsx +149 -0
  391. package/src/components/tile.tsx +105 -0
  392. package/src/components/toolbar.stories.tsx +64 -0
  393. package/src/components/toolbar.tsx +98 -0
  394. package/src/components/tree-view.stories.tsx +265 -0
  395. package/src/components/tree-view.tsx +246 -0
  396. package/src/icons.tsx +331 -0
  397. package/src/index.css +358 -74
  398. package/src/index.tsx +17 -3
  399. package/src/shadcn/components/ui/accordion.tsx +91 -10
  400. package/src/shadcn/components/ui/alert-dialog.stories.tsx +209 -15
  401. package/src/shadcn/components/ui/alert-dialog.tsx +236 -26
  402. package/src/shadcn/components/ui/alert.stories.tsx +120 -21
  403. package/src/shadcn/components/ui/alert.tsx +125 -28
  404. package/src/shadcn/components/ui/aspect-ratio.tsx +1 -0
  405. package/src/shadcn/components/ui/avatar.stories.tsx +74 -1
  406. package/src/shadcn/components/ui/avatar.tsx +22 -6
  407. package/src/shadcn/components/ui/badge.tsx +67 -18
  408. package/src/shadcn/components/ui/breadcrumb.stories.tsx +161 -41
  409. package/src/shadcn/components/ui/breadcrumb.tsx +172 -23
  410. package/src/shadcn/components/ui/button.stories.tsx +106 -18
  411. package/src/shadcn/components/ui/button.tsx +151 -55
  412. package/src/shadcn/components/ui/calendar.tsx +1 -0
  413. package/src/shadcn/components/ui/card.stories.tsx +17 -3
  414. package/src/shadcn/components/ui/card.tsx +89 -14
  415. package/src/shadcn/components/ui/carousel.tsx +1 -0
  416. package/src/shadcn/components/ui/chart.tsx +9 -5
  417. package/src/shadcn/components/ui/checkbox.stories.tsx +78 -30
  418. package/src/shadcn/components/ui/checkbox.tsx +91 -8
  419. package/src/shadcn/components/ui/combobox.stories.tsx +148 -0
  420. package/src/shadcn/components/ui/combobox.tsx +324 -0
  421. package/src/shadcn/components/ui/command.stories.tsx +184 -39
  422. package/src/shadcn/components/ui/command.tsx +218 -37
  423. package/src/shadcn/components/ui/context-menu.tsx +333 -40
  424. package/src/shadcn/components/ui/dialog.tsx +101 -13
  425. package/src/shadcn/components/ui/drawer.tsx +94 -18
  426. package/src/shadcn/components/ui/dropdown-menu.stories.tsx +18 -2
  427. package/src/shadcn/components/ui/dropdown-menu.tsx +334 -68
  428. package/src/shadcn/components/ui/form.tsx +22 -11
  429. package/src/shadcn/components/ui/hover-card.tsx +2 -1
  430. package/src/shadcn/components/ui/input-otp.tsx +1 -0
  431. package/src/shadcn/components/ui/input.stories.tsx +235 -27
  432. package/src/shadcn/components/ui/input.tsx +400 -29
  433. package/src/shadcn/components/ui/label.tsx +22 -4
  434. package/src/shadcn/components/ui/menubar.tsx +188 -43
  435. package/src/shadcn/components/ui/pagination.stories.tsx +8 -2
  436. package/src/shadcn/components/ui/pagination.tsx +65 -8
  437. package/src/shadcn/components/ui/popover.tsx +36 -4
  438. package/src/shadcn/components/ui/progress.tsx +21 -5
  439. package/src/shadcn/components/ui/radio-button-group.stories.tsx +247 -0
  440. package/src/shadcn/components/ui/radio-button-group.tsx +188 -0
  441. package/src/shadcn/components/ui/radio-group.stories.tsx +70 -14
  442. package/src/shadcn/components/ui/radio-group.tsx +85 -9
  443. package/src/shadcn/components/ui/resizable.stories.tsx +2 -2
  444. package/src/shadcn/components/ui/resizable.tsx +2 -1
  445. package/src/shadcn/components/ui/scroll-area.tsx +34 -5
  446. package/src/shadcn/components/ui/select.stories.tsx +108 -32
  447. package/src/shadcn/components/ui/select.tsx +182 -36
  448. package/src/shadcn/components/ui/separator.tsx +16 -5
  449. package/src/shadcn/components/ui/sheet.tsx +1 -1
  450. package/src/shadcn/components/ui/sidebar.tsx +69 -26
  451. package/src/shadcn/components/ui/skeleton.tsx +4 -1
  452. package/src/shadcn/components/ui/slider.tsx +83 -11
  453. package/src/shadcn/components/ui/sonner.stories.tsx +238 -17
  454. package/src/shadcn/components/ui/sonner.tsx +254 -11
  455. package/src/shadcn/components/ui/switch.stories.tsx +52 -5
  456. package/src/shadcn/components/ui/switch.tsx +92 -7
  457. package/src/shadcn/components/ui/table.stories.tsx +252 -72
  458. package/src/shadcn/components/ui/table.tsx +204 -26
  459. package/src/shadcn/components/ui/tabs.stories.tsx +235 -123
  460. package/src/shadcn/components/ui/tabs.tsx +694 -36
  461. package/src/shadcn/components/ui/textarea.stories.tsx +94 -2
  462. package/src/shadcn/components/ui/textarea.tsx +70 -5
  463. package/src/shadcn/components/ui/toggle-group.tsx +35 -13
  464. package/src/shadcn/components/ui/toggle.stories.tsx +92 -5
  465. package/src/shadcn/components/ui/toggle.tsx +96 -23
  466. package/src/shadcn/components/ui/tooltip.tsx +34 -8
  467. package/src/shadcn/components/ui/tree.tsx +257 -0
  468. package/src/shadcn/shadcn.css +4 -4
  469. package/src/tokens.css +50 -20
  470. package/src/typography.css +78 -15
  471. package/dist/src/components/code-editor.stories.d.ts +0 -7
  472. package/dist/src/components/code-editor.stories.d.ts.map +0 -1
  473. package/dist/src/components/request-line-editor.stories.d.ts +0 -11
  474. package/dist/src/components/request-line-editor.stories.d.ts.map +0 -1
  475. package/dist/src/index.stories.d.ts +0 -14
  476. package/dist/src/index.stories.d.ts.map +0 -1
  477. package/dist/src/index.stories.js +0 -19
  478. package/dist/src/index.stories.js.map +0 -1
  479. package/dist/src/shadcn/components/ui/accordion.stories.d.ts +0 -8
  480. package/dist/src/shadcn/components/ui/accordion.stories.d.ts.map +0 -1
  481. package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts +0 -8
  482. package/dist/src/shadcn/components/ui/alert-dialog.stories.d.ts.map +0 -1
  483. package/dist/src/shadcn/components/ui/alert.stories.d.ts +0 -8
  484. package/dist/src/shadcn/components/ui/alert.stories.d.ts.map +0 -1
  485. package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts +0 -8
  486. package/dist/src/shadcn/components/ui/aspect-ratio.stories.d.ts.map +0 -1
  487. package/dist/src/shadcn/components/ui/avatar.stories.d.ts +0 -8
  488. package/dist/src/shadcn/components/ui/avatar.stories.d.ts.map +0 -1
  489. package/dist/src/shadcn/components/ui/badge.stories.d.ts +0 -8
  490. package/dist/src/shadcn/components/ui/badge.stories.d.ts.map +0 -1
  491. package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts +0 -8
  492. package/dist/src/shadcn/components/ui/breadcrumb.stories.d.ts.map +0 -1
  493. package/dist/src/shadcn/components/ui/button.stories.d.ts +0 -23
  494. package/dist/src/shadcn/components/ui/button.stories.d.ts.map +0 -1
  495. package/dist/src/shadcn/components/ui/calendar.stories.d.ts +0 -8
  496. package/dist/src/shadcn/components/ui/calendar.stories.d.ts.map +0 -1
  497. package/dist/src/shadcn/components/ui/card.stories.d.ts +0 -8
  498. package/dist/src/shadcn/components/ui/card.stories.d.ts.map +0 -1
  499. package/dist/src/shadcn/components/ui/carousel.stories.d.ts +0 -8
  500. package/dist/src/shadcn/components/ui/carousel.stories.d.ts.map +0 -1
  501. package/dist/src/shadcn/components/ui/chart.stories.d.ts +0 -8
  502. package/dist/src/shadcn/components/ui/chart.stories.d.ts.map +0 -1
  503. package/dist/src/shadcn/components/ui/checkbox.stories.d.ts +0 -8
  504. package/dist/src/shadcn/components/ui/checkbox.stories.d.ts.map +0 -1
  505. package/dist/src/shadcn/components/ui/collapsible.stories.d.ts +0 -8
  506. package/dist/src/shadcn/components/ui/collapsible.stories.d.ts.map +0 -1
  507. package/dist/src/shadcn/components/ui/command.stories.d.ts +0 -8
  508. package/dist/src/shadcn/components/ui/command.stories.d.ts.map +0 -1
  509. package/dist/src/shadcn/components/ui/context-menu.stories.d.ts +0 -8
  510. package/dist/src/shadcn/components/ui/context-menu.stories.d.ts.map +0 -1
  511. package/dist/src/shadcn/components/ui/dialog.stories.d.ts +0 -8
  512. package/dist/src/shadcn/components/ui/dialog.stories.d.ts.map +0 -1
  513. package/dist/src/shadcn/components/ui/drawer.stories.d.ts +0 -8
  514. package/dist/src/shadcn/components/ui/drawer.stories.d.ts.map +0 -1
  515. package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts +0 -8
  516. package/dist/src/shadcn/components/ui/dropdown-menu.stories.d.ts.map +0 -1
  517. package/dist/src/shadcn/components/ui/form.stories.d.ts +0 -8
  518. package/dist/src/shadcn/components/ui/form.stories.d.ts.map +0 -1
  519. package/dist/src/shadcn/components/ui/hover-card.stories.d.ts +0 -8
  520. package/dist/src/shadcn/components/ui/hover-card.stories.d.ts.map +0 -1
  521. package/dist/src/shadcn/components/ui/input-otp.stories.d.ts +0 -8
  522. package/dist/src/shadcn/components/ui/input-otp.stories.d.ts.map +0 -1
  523. package/dist/src/shadcn/components/ui/input.stories.d.ts +0 -18
  524. package/dist/src/shadcn/components/ui/input.stories.d.ts.map +0 -1
  525. package/dist/src/shadcn/components/ui/label.stories.d.ts +0 -8
  526. package/dist/src/shadcn/components/ui/label.stories.d.ts.map +0 -1
  527. package/dist/src/shadcn/components/ui/menubar.stories.d.ts +0 -8
  528. package/dist/src/shadcn/components/ui/menubar.stories.d.ts.map +0 -1
  529. package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts +0 -8
  530. package/dist/src/shadcn/components/ui/navigation-menu.stories.d.ts.map +0 -1
  531. package/dist/src/shadcn/components/ui/pagination.stories.d.ts +0 -8
  532. package/dist/src/shadcn/components/ui/pagination.stories.d.ts.map +0 -1
  533. package/dist/src/shadcn/components/ui/popover.stories.d.ts +0 -8
  534. package/dist/src/shadcn/components/ui/popover.stories.d.ts.map +0 -1
  535. package/dist/src/shadcn/components/ui/progress.stories.d.ts +0 -8
  536. package/dist/src/shadcn/components/ui/progress.stories.d.ts.map +0 -1
  537. package/dist/src/shadcn/components/ui/radio-group.stories.d.ts +0 -8
  538. package/dist/src/shadcn/components/ui/radio-group.stories.d.ts.map +0 -1
  539. package/dist/src/shadcn/components/ui/resizable.stories.d.ts +0 -8
  540. package/dist/src/shadcn/components/ui/resizable.stories.d.ts.map +0 -1
  541. package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts +0 -8
  542. package/dist/src/shadcn/components/ui/scroll-area.stories.d.ts.map +0 -1
  543. package/dist/src/shadcn/components/ui/select.stories.d.ts +0 -11
  544. package/dist/src/shadcn/components/ui/select.stories.d.ts.map +0 -1
  545. package/dist/src/shadcn/components/ui/separator.stories.d.ts +0 -8
  546. package/dist/src/shadcn/components/ui/separator.stories.d.ts.map +0 -1
  547. package/dist/src/shadcn/components/ui/sheet.stories.d.ts +0 -8
  548. package/dist/src/shadcn/components/ui/sheet.stories.d.ts.map +0 -1
  549. package/dist/src/shadcn/components/ui/sidebar.stories.d.ts +0 -11
  550. package/dist/src/shadcn/components/ui/sidebar.stories.d.ts.map +0 -1
  551. package/dist/src/shadcn/components/ui/skeleton.stories.d.ts +0 -8
  552. package/dist/src/shadcn/components/ui/skeleton.stories.d.ts.map +0 -1
  553. package/dist/src/shadcn/components/ui/slider.stories.d.ts +0 -8
  554. package/dist/src/shadcn/components/ui/slider.stories.d.ts.map +0 -1
  555. package/dist/src/shadcn/components/ui/sonner.stories.d.ts +0 -8
  556. package/dist/src/shadcn/components/ui/sonner.stories.d.ts.map +0 -1
  557. package/dist/src/shadcn/components/ui/switch.stories.d.ts +0 -8
  558. package/dist/src/shadcn/components/ui/switch.stories.d.ts.map +0 -1
  559. package/dist/src/shadcn/components/ui/table.stories.d.ts +0 -8
  560. package/dist/src/shadcn/components/ui/table.stories.d.ts.map +0 -1
  561. package/dist/src/shadcn/components/ui/tabs.stories.d.ts +0 -32
  562. package/dist/src/shadcn/components/ui/tabs.stories.d.ts.map +0 -1
  563. package/dist/src/shadcn/components/ui/textarea.stories.d.ts +0 -8
  564. package/dist/src/shadcn/components/ui/textarea.stories.d.ts.map +0 -1
  565. package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts +0 -8
  566. package/dist/src/shadcn/components/ui/toggle-group.stories.d.ts.map +0 -1
  567. package/dist/src/shadcn/components/ui/toggle.stories.d.ts +0 -8
  568. package/dist/src/shadcn/components/ui/toggle.stories.d.ts.map +0 -1
  569. package/dist/src/shadcn/components/ui/tooltip.stories.d.ts +0 -8
  570. package/dist/src/shadcn/components/ui/tooltip.stories.d.ts.map +0 -1
  571. package/src/index.stories.tsx +0 -21
@@ -0,0 +1,226 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { CheckIcon, X } from "lucide-react";
4
+ import * as React from "react";
5
+ import { Command, CommandEmpty, CommandInput, CommandItem, CommandList } from "./command.js";
6
+ import { Select, SelectContent, SelectTrigger, SelectValue } from "./select.js";
7
+ import { cn } from "../../lib/utils.js";
8
+ import { Tag } from "../../../components/tag.js";
9
+ /* ==========================================================================
10
+ Styles
11
+ ========================================================================== */ const selectContentStyles = cn(// Spacing
12
+ "p-0", // Radix viewport reset
13
+ "[&_[data-radix-select-viewport]]:p-0");
14
+ const commandStyles = cn(// Layout
15
+ "w-full");
16
+ const checkIconStyles = cn(// Layout
17
+ "ml-auto", // Size
18
+ "size-4");
19
+ const checkIconVisibleStyles = cn(checkIconStyles, "opacity-100");
20
+ const checkIconHiddenStyles = cn(checkIconStyles, "opacity-0");
21
+ const triggerWithValueStyles = cn("text-text-primary");
22
+ const triggerWithTagsStyles = cn("pl-2");
23
+ const clearButtonStyles = cn(// Layout
24
+ "ml-auto", "shrink-0", // Size
25
+ "size-4", // Colors
26
+ "text-text-tertiary", "hover:text-text-primary", // Interactions
27
+ "cursor-pointer", "pointer-events-auto", "z-10", // Transitions
28
+ "transition-colors");
29
+ /* ==========================================================================
30
+ Components
31
+ ========================================================================== */ export function Combobox({ options, value, onValueChange, placeholder = "Select option...", searchPlaceholder = "Search...", emptyText = "No options found.", disabled = false, className }) {
32
+ const [open, setOpen] = React.useState(false);
33
+ const [searchValue, setSearchValue] = React.useState("");
34
+ const inputRef = React.useRef(null);
35
+ const filteredOptions = React.useMemo(()=>{
36
+ if (!searchValue) return options;
37
+ return options.filter((option)=>option.label.toLowerCase().includes(searchValue.toLowerCase()));
38
+ }, [
39
+ options,
40
+ searchValue
41
+ ]);
42
+ const selectedOption = options.find((option)=>option.value === value);
43
+ const changeOpen = (newOpen)=>{
44
+ if (!newOpen) {
45
+ setSearchValue("");
46
+ } else {
47
+ inputRef.current?.focus();
48
+ }
49
+ setOpen(newOpen);
50
+ };
51
+ return /*#__PURE__*/ _jsxs(Select, {
52
+ value: value || "",
53
+ ...onValueChange && {
54
+ onValueChange
55
+ },
56
+ disabled: disabled,
57
+ open: open,
58
+ onOpenChange: changeOpen,
59
+ children: [
60
+ /*#__PURE__*/ _jsx(SelectTrigger, {
61
+ className: className,
62
+ children: /*#__PURE__*/ _jsx(SelectValue, {
63
+ placeholder: placeholder,
64
+ children: selectedOption?.label
65
+ })
66
+ }),
67
+ /*#__PURE__*/ _jsx(SelectContent, {
68
+ className: selectContentStyles,
69
+ children: /*#__PURE__*/ _jsxs(Command, {
70
+ className: commandStyles,
71
+ children: [
72
+ /*#__PURE__*/ _jsx(CommandInput, {
73
+ ref: inputRef,
74
+ placeholder: searchPlaceholder,
75
+ value: searchValue,
76
+ onValueChange: setSearchValue
77
+ }),
78
+ /*#__PURE__*/ _jsxs(CommandList, {
79
+ children: [
80
+ /*#__PURE__*/ _jsx(CommandEmpty, {
81
+ children: emptyText
82
+ }),
83
+ filteredOptions.map((option)=>/*#__PURE__*/ _jsxs(CommandItem, {
84
+ value: option.value,
85
+ "data-state": value === option.value ? "checked" : undefined,
86
+ onSelect: (currentValue)=>{
87
+ onValueChange?.(currentValue);
88
+ changeOpen(false);
89
+ },
90
+ children: [
91
+ option.label,
92
+ /*#__PURE__*/ _jsx(CheckIcon, {
93
+ className: value === option.value ? checkIconVisibleStyles : checkIconHiddenStyles
94
+ })
95
+ ]
96
+ }, option.value))
97
+ ]
98
+ })
99
+ ]
100
+ })
101
+ })
102
+ ]
103
+ });
104
+ }
105
+ export function MultiCombobox({ options, value = [], onValueChange, placeholder = "Select options...", searchPlaceholder = "Search...", emptyText = "No options found.", disabled = false, className, maxDisplay = 2 }) {
106
+ const [open, setOpen] = React.useState(false);
107
+ const [searchValue, setSearchValue] = React.useState("");
108
+ const inputRef = React.useRef(null);
109
+ const filteredOptions = React.useMemo(()=>{
110
+ if (!searchValue) return options;
111
+ return options.filter((option)=>option.label.toLowerCase().includes(searchValue.toLowerCase()));
112
+ }, [
113
+ options,
114
+ searchValue
115
+ ]);
116
+ const selectedOptions = React.useMemo(()=>options.filter((option)=>value.includes(option.value)), [
117
+ options,
118
+ value
119
+ ]);
120
+ const handleSelect = (selectedValue)=>{
121
+ const newValue = value.includes(selectedValue) ? value.filter((v)=>v !== selectedValue) : [
122
+ ...value,
123
+ selectedValue
124
+ ];
125
+ onValueChange?.(newValue);
126
+ };
127
+ const handleClear = (e)=>{
128
+ e.stopPropagation();
129
+ onValueChange?.([]);
130
+ };
131
+ const changeOpen = (newOpen)=>{
132
+ if (!newOpen) {
133
+ setSearchValue("");
134
+ } else {
135
+ inputRef.current?.focus();
136
+ }
137
+ setOpen(newOpen);
138
+ };
139
+ const hasValue = selectedOptions.length > 0;
140
+ const displayedOptions = selectedOptions.slice(0, maxDisplay);
141
+ const remainingCount = selectedOptions.length - maxDisplay;
142
+ return /*#__PURE__*/ _jsxs(Select, {
143
+ open: open,
144
+ onOpenChange: changeOpen,
145
+ children: [
146
+ /*#__PURE__*/ _jsx(SelectTrigger, {
147
+ className: cn(className, hasValue && triggerWithValueStyles, hasValue && triggerWithTagsStyles),
148
+ disabled: disabled,
149
+ children: hasValue ? /*#__PURE__*/ _jsxs(_Fragment, {
150
+ children: [
151
+ /*#__PURE__*/ _jsxs("div", {
152
+ className: "flex items-center gap-1 overflow-hidden",
153
+ children: [
154
+ displayedOptions.map((opt)=>/*#__PURE__*/ _jsx(Tag, {
155
+ size: "small",
156
+ color: "gray",
157
+ vibrance: "subtle",
158
+ showIcon: false,
159
+ children: opt.label
160
+ }, opt.value)),
161
+ remainingCount > 0 && /*#__PURE__*/ _jsxs(Tag, {
162
+ size: "small",
163
+ color: "gray",
164
+ vibrance: "subtle",
165
+ showIcon: false,
166
+ children: [
167
+ "+",
168
+ remainingCount
169
+ ]
170
+ })
171
+ ]
172
+ }),
173
+ /*#__PURE__*/ _jsx("button", {
174
+ type: "button",
175
+ className: clearButtonStyles,
176
+ onClick: handleClear,
177
+ onPointerDown: (e)=>e.stopPropagation(),
178
+ children: /*#__PURE__*/ _jsx(X, {
179
+ className: "size-4"
180
+ })
181
+ })
182
+ ]
183
+ }) : /*#__PURE__*/ _jsx(SelectValue, {
184
+ placeholder: placeholder
185
+ })
186
+ }),
187
+ /*#__PURE__*/ _jsx(SelectContent, {
188
+ className: selectContentStyles,
189
+ children: /*#__PURE__*/ _jsxs(Command, {
190
+ className: commandStyles,
191
+ children: [
192
+ /*#__PURE__*/ _jsx(CommandInput, {
193
+ ref: inputRef,
194
+ placeholder: searchPlaceholder,
195
+ value: searchValue,
196
+ onValueChange: setSearchValue
197
+ }),
198
+ /*#__PURE__*/ _jsxs(CommandList, {
199
+ children: [
200
+ /*#__PURE__*/ _jsx(CommandEmpty, {
201
+ children: emptyText
202
+ }),
203
+ filteredOptions.map((option)=>{
204
+ const isSelected = value.includes(option.value);
205
+ return /*#__PURE__*/ _jsxs(CommandItem, {
206
+ value: option.value,
207
+ "data-state": isSelected ? "checked" : undefined,
208
+ onSelect: handleSelect,
209
+ children: [
210
+ option.label,
211
+ /*#__PURE__*/ _jsx(CheckIcon, {
212
+ className: isSelected ? checkIconVisibleStyles : checkIconHiddenStyles
213
+ })
214
+ ]
215
+ }, option.value);
216
+ })
217
+ ]
218
+ })
219
+ ]
220
+ })
221
+ })
222
+ ]
223
+ });
224
+ }
225
+
226
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/shadcn/components/ui/combobox.tsx"],"sourcesContent":["\"use client\";\n\nimport { CheckIcon, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"#shadcn/components/ui/command\";\nimport {\n\tSelect,\n\tSelectContent,\n\tSelectTrigger,\n\tSelectValue,\n} from \"#shadcn/components/ui/select\";\nimport { cn } from \"#shadcn/lib/utils\";\nimport { Tag } from \"../../../components/tag\";\n\n/* ==========================================================================\n Styles\n ========================================================================== */\n\nconst selectContentStyles = cn(\n\t// Spacing\n\t\"p-0\",\n\t// Radix viewport reset\n\t\"[&_[data-radix-select-viewport]]:p-0\",\n);\n\nconst commandStyles = cn(\n\t// Layout\n\t\"w-full\",\n);\n\nconst checkIconStyles = cn(\n\t// Layout\n\t\"ml-auto\",\n\t// Size\n\t\"size-4\",\n);\n\nconst checkIconVisibleStyles = cn(checkIconStyles, \"opacity-100\");\n\nconst checkIconHiddenStyles = cn(checkIconStyles, \"opacity-0\");\n\nconst triggerWithValueStyles = cn(\"text-text-primary\");\n\nconst triggerWithTagsStyles = cn(\"pl-2\");\n\nconst clearButtonStyles = cn(\n\t// Layout\n\t\"ml-auto\",\n\t\"shrink-0\",\n\t// Size\n\t\"size-4\",\n\t// Colors\n\t\"text-text-tertiary\",\n\t\"hover:text-text-primary\",\n\t// Interactions\n\t\"cursor-pointer\",\n\t\"pointer-events-auto\",\n\t\"z-10\",\n\t// Transitions\n\t\"transition-colors\",\n);\n\n/* ==========================================================================\n Types\n ========================================================================== */\n\nexport interface ComboboxOption {\n\tvalue: string;\n\tlabel: string;\n}\n\ninterface ComboboxProps {\n\toptions: ComboboxOption[];\n\tvalue?: string;\n\tonValueChange?: (value: string) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\temptyText?: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n}\n\n/* ==========================================================================\n Components\n ========================================================================== */\n\nexport function Combobox({\n\toptions,\n\tvalue,\n\tonValueChange,\n\tplaceholder = \"Select option...\",\n\tsearchPlaceholder = \"Search...\",\n\temptyText = \"No options found.\",\n\tdisabled = false,\n\tclassName,\n}: ComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [searchValue, setSearchValue] = React.useState(\"\");\n\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\n\tconst filteredOptions = React.useMemo(() => {\n\t\tif (!searchValue) return options;\n\t\treturn options.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(searchValue.toLowerCase()),\n\t\t);\n\t}, [options, searchValue]);\n\n\tconst selectedOption = options.find((option) => option.value === value);\n\n\tconst changeOpen = (newOpen: boolean) => {\n\t\tif (!newOpen) {\n\t\t\tsetSearchValue(\"\");\n\t\t} else {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetOpen(newOpen);\n\t};\n\n\treturn (\n\t\t<Select\n\t\t\tvalue={value || \"\"}\n\t\t\t{...(onValueChange && { onValueChange })}\n\t\t\tdisabled={disabled}\n\t\t\topen={open}\n\t\t\tonOpenChange={changeOpen}\n\t\t>\n\t\t\t<SelectTrigger className={className}>\n\t\t\t\t<SelectValue placeholder={placeholder}>\n\t\t\t\t\t{selectedOption?.label}\n\t\t\t\t</SelectValue>\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent className={selectContentStyles}>\n\t\t\t\t<Command className={commandStyles}>\n\t\t\t\t\t<CommandInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={searchValue}\n\t\t\t\t\t\tonValueChange={setSearchValue}\n\t\t\t\t\t/>\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\n\t\t\t\t\t\t{filteredOptions.map((option) => (\n\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\tdata-state={value === option.value ? \"checked\" : undefined}\n\t\t\t\t\t\t\t\tonSelect={(currentValue) => {\n\t\t\t\t\t\t\t\t\tonValueChange?.(currentValue);\n\t\t\t\t\t\t\t\t\tchangeOpen(false);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tvalue === option.value\n\t\t\t\t\t\t\t\t\t\t\t? checkIconVisibleStyles\n\t\t\t\t\t\t\t\t\t\t\t: checkIconHiddenStyles\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n}\n\ninterface MultiComboboxProps {\n\toptions: ComboboxOption[];\n\tvalue?: string[];\n\tonValueChange?: (value: string[]) => void;\n\tplaceholder?: string;\n\tsearchPlaceholder?: string;\n\temptyText?: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tmaxDisplay?: number;\n}\n\nexport function MultiCombobox({\n\toptions,\n\tvalue = [],\n\tonValueChange,\n\tplaceholder = \"Select options...\",\n\tsearchPlaceholder = \"Search...\",\n\temptyText = \"No options found.\",\n\tdisabled = false,\n\tclassName,\n\tmaxDisplay = 2,\n}: MultiComboboxProps) {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [searchValue, setSearchValue] = React.useState(\"\");\n\tconst inputRef = React.useRef<HTMLInputElement>(null);\n\n\tconst filteredOptions = React.useMemo(() => {\n\t\tif (!searchValue) return options;\n\t\treturn options.filter((option) =>\n\t\t\toption.label.toLowerCase().includes(searchValue.toLowerCase()),\n\t\t);\n\t}, [options, searchValue]);\n\n\tconst selectedOptions = React.useMemo(\n\t\t() => options.filter((option) => value.includes(option.value)),\n\t\t[options, value],\n\t);\n\n\tconst handleSelect = (selectedValue: string) => {\n\t\tconst newValue = value.includes(selectedValue)\n\t\t\t? value.filter((v) => v !== selectedValue)\n\t\t\t: [...value, selectedValue];\n\t\tonValueChange?.(newValue);\n\t};\n\n\tconst handleClear = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tonValueChange?.([]);\n\t};\n\n\tconst changeOpen = (newOpen: boolean) => {\n\t\tif (!newOpen) {\n\t\t\tsetSearchValue(\"\");\n\t\t} else {\n\t\t\tinputRef.current?.focus();\n\t\t}\n\t\tsetOpen(newOpen);\n\t};\n\n\tconst hasValue = selectedOptions.length > 0;\n\tconst displayedOptions = selectedOptions.slice(0, maxDisplay);\n\tconst remainingCount = selectedOptions.length - maxDisplay;\n\n\treturn (\n\t\t<Select open={open} onOpenChange={changeOpen}>\n\t\t\t<SelectTrigger\n\t\t\t\tclassName={cn(\n\t\t\t\t\tclassName,\n\t\t\t\t\thasValue && triggerWithValueStyles,\n\t\t\t\t\thasValue && triggerWithTagsStyles,\n\t\t\t\t)}\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{hasValue ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"flex items-center gap-1 overflow-hidden\">\n\t\t\t\t\t\t\t{displayedOptions.map((opt) => (\n\t\t\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\t\t\tkey={opt.value}\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t\t\t\tvibrance=\"subtle\"\n\t\t\t\t\t\t\t\t\tshowIcon={false}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t\t</Tag>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t{remainingCount > 0 && (\n\t\t\t\t\t\t\t\t<Tag\n\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\t\t\t\t\tvibrance=\"subtle\"\n\t\t\t\t\t\t\t\t\tshowIcon={false}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t+{remainingCount}\n\t\t\t\t\t\t\t\t</Tag>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclassName={clearButtonStyles}\n\t\t\t\t\t\t\tonClick={handleClear}\n\t\t\t\t\t\t\tonPointerDown={(e) => e.stopPropagation()}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"size-4\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<SelectValue placeholder={placeholder} />\n\t\t\t\t)}\n\t\t\t</SelectTrigger>\n\t\t\t<SelectContent className={selectContentStyles}>\n\t\t\t\t<Command className={commandStyles}>\n\t\t\t\t\t<CommandInput\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tplaceholder={searchPlaceholder}\n\t\t\t\t\t\tvalue={searchValue}\n\t\t\t\t\t\tonValueChange={setSearchValue}\n\t\t\t\t\t/>\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>{emptyText}</CommandEmpty>\n\n\t\t\t\t\t\t{filteredOptions.map((option) => {\n\t\t\t\t\t\t\tconst isSelected = value.includes(option.value);\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\t\tvalue={option.value}\n\t\t\t\t\t\t\t\t\tdata-state={isSelected ? \"checked\" : undefined}\n\t\t\t\t\t\t\t\t\tonSelect={handleSelect}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t<CheckIcon\n\t\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\t\tisSelected\n\t\t\t\t\t\t\t\t\t\t\t\t? checkIconVisibleStyles\n\t\t\t\t\t\t\t\t\t\t\t\t: checkIconHiddenStyles\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</SelectContent>\n\t\t</Select>\n\t);\n}\n"],"names":["CheckIcon","X","React","Command","CommandEmpty","CommandInput","CommandItem","CommandList","Select","SelectContent","SelectTrigger","SelectValue","cn","Tag","selectContentStyles","commandStyles","checkIconStyles","checkIconVisibleStyles","checkIconHiddenStyles","triggerWithValueStyles","triggerWithTagsStyles","clearButtonStyles","Combobox","options","value","onValueChange","placeholder","searchPlaceholder","emptyText","disabled","className","open","setOpen","useState","searchValue","setSearchValue","inputRef","useRef","filteredOptions","useMemo","filter","option","label","toLowerCase","includes","selectedOption","find","changeOpen","newOpen","current","focus","onOpenChange","ref","map","data-state","undefined","onSelect","currentValue","MultiCombobox","maxDisplay","selectedOptions","handleSelect","selectedValue","newValue","v","handleClear","e","stopPropagation","hasValue","length","displayedOptions","slice","remainingCount","div","opt","size","color","vibrance","showIcon","button","type","onClick","onPointerDown","isSelected"],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
3
+ import { useState } from "react";
4
+ import { Combobox, MultiCombobox } from "./combobox.js";
5
+ const demoOptions = [
6
+ {
7
+ value: "next.js",
8
+ label: "Next.js"
9
+ },
10
+ {
11
+ value: "sveltekit",
12
+ label: "SvelteKit"
13
+ },
14
+ {
15
+ value: "nuxt.js",
16
+ label: "Nuxt.js"
17
+ },
18
+ {
19
+ value: "remix",
20
+ label: "Remix"
21
+ },
22
+ {
23
+ value: "astro",
24
+ label: "Astro"
25
+ }
26
+ ];
27
+ function ComboboxWrapper({ multi = false, disabled = false }) {
28
+ const [value, setValue] = useState("");
29
+ const [multiValue, setMultiValue] = useState([]);
30
+ if (multi) {
31
+ return /*#__PURE__*/ _jsx(MultiCombobox, {
32
+ options: demoOptions,
33
+ value: multiValue,
34
+ onValueChange: setMultiValue,
35
+ placeholder: "Select frameworks...",
36
+ searchPlaceholder: "Search framework...",
37
+ disabled: disabled
38
+ });
39
+ }
40
+ return /*#__PURE__*/ _jsx(Combobox, {
41
+ options: demoOptions,
42
+ value: value,
43
+ onValueChange: setValue,
44
+ placeholder: "Select framework...",
45
+ searchPlaceholder: "Search framework...",
46
+ disabled: disabled
47
+ });
48
+ }
49
+ const meta = {
50
+ title: "Component/Combobox",
51
+ component: ComboboxWrapper,
52
+ parameters: {
53
+ layout: "centered",
54
+ docs: {
55
+ page: ()=>/*#__PURE__*/ _jsxs(_Fragment, {
56
+ children: [
57
+ /*#__PURE__*/ _jsx(Title, {}),
58
+ /*#__PURE__*/ _jsxs("p", {
59
+ className: "sbdocs-p",
60
+ children: [
61
+ "Combobox is a searchable select component. When the dropdown opens, it displays a ",
62
+ /*#__PURE__*/ _jsx("strong", {
63
+ children: "Command"
64
+ }),
65
+ " component for search and selection. See the Command component for all available styling options."
66
+ ]
67
+ }),
68
+ /*#__PURE__*/ _jsx(Primary, {}),
69
+ /*#__PURE__*/ _jsx(Controls, {})
70
+ ]
71
+ })
72
+ }
73
+ },
74
+ argTypes: {
75
+ multi: {
76
+ control: "boolean"
77
+ },
78
+ disabled: {
79
+ control: "boolean"
80
+ }
81
+ },
82
+ args: {
83
+ multi: false,
84
+ disabled: false
85
+ }
86
+ };
87
+ export default meta;
88
+ export const Default = {
89
+ tags: [
90
+ "!dev"
91
+ ],
92
+ render: ({ multi = false, disabled = false })=>/*#__PURE__*/ _jsx("div", {
93
+ className: "w-[300px]",
94
+ children: /*#__PURE__*/ _jsx(ComboboxWrapper, {
95
+ multi: multi,
96
+ disabled: disabled
97
+ })
98
+ })
99
+ };
100
+ export const Demo = {
101
+ tags: [
102
+ "!autodocs"
103
+ ],
104
+ render: ()=>{
105
+ const [value, setValue] = useState("");
106
+ const [multiValue, setMultiValue] = useState([]);
107
+ return /*#__PURE__*/ _jsxs("div", {
108
+ className: "space-y-8",
109
+ children: [
110
+ /*#__PURE__*/ _jsxs("div", {
111
+ children: [
112
+ /*#__PURE__*/ _jsx("h3", {
113
+ className: "typo-label mb-4",
114
+ children: "Single select"
115
+ }),
116
+ /*#__PURE__*/ _jsx("div", {
117
+ className: "w-[300px]",
118
+ children: /*#__PURE__*/ _jsx(Combobox, {
119
+ options: demoOptions,
120
+ value: value,
121
+ onValueChange: setValue,
122
+ placeholder: "Select framework...",
123
+ searchPlaceholder: "Search framework..."
124
+ })
125
+ })
126
+ ]
127
+ }),
128
+ /*#__PURE__*/ _jsxs("div", {
129
+ children: [
130
+ /*#__PURE__*/ _jsx("h3", {
131
+ className: "typo-label mb-4",
132
+ children: "Multi select"
133
+ }),
134
+ /*#__PURE__*/ _jsx("div", {
135
+ className: "w-[300px]",
136
+ children: /*#__PURE__*/ _jsx(MultiCombobox, {
137
+ options: demoOptions,
138
+ value: multiValue,
139
+ onValueChange: setMultiValue,
140
+ placeholder: "Select frameworks...",
141
+ searchPlaceholder: "Search framework..."
142
+ })
143
+ })
144
+ ]
145
+ }),
146
+ /*#__PURE__*/ _jsxs("div", {
147
+ children: [
148
+ /*#__PURE__*/ _jsx("h3", {
149
+ className: "typo-label mb-4",
150
+ children: "Disabled"
151
+ }),
152
+ /*#__PURE__*/ _jsx("div", {
153
+ className: "w-[300px]",
154
+ children: /*#__PURE__*/ _jsx(Combobox, {
155
+ options: demoOptions,
156
+ placeholder: "Select framework...",
157
+ disabled: true
158
+ })
159
+ })
160
+ ]
161
+ })
162
+ ]
163
+ });
164
+ }
165
+ };
166
+
167
+ //# sourceMappingURL=combobox.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/shadcn/components/ui/combobox.stories.tsx"],"sourcesContent":["import { Controls, Primary, Title } from \"@storybook/addon-docs/blocks\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { useState } from \"react\";\nimport { Combobox, MultiCombobox } from \"./combobox\";\n\nconst demoOptions = [\n\t{ value: \"next.js\", label: \"Next.js\" },\n\t{ value: \"sveltekit\", label: \"SvelteKit\" },\n\t{ value: \"nuxt.js\", label: \"Nuxt.js\" },\n\t{ value: \"remix\", label: \"Remix\" },\n\t{ value: \"astro\", label: \"Astro\" },\n];\n\ninterface ComboboxWrapperProps {\n\tmulti?: boolean;\n\tdisabled?: boolean;\n}\n\nfunction ComboboxWrapper({\n\tmulti = false,\n\tdisabled = false,\n}: ComboboxWrapperProps) {\n\tconst [value, setValue] = useState(\"\");\n\tconst [multiValue, setMultiValue] = useState<string[]>([]);\n\n\tif (multi) {\n\t\treturn (\n\t\t\t<MultiCombobox\n\t\t\t\toptions={demoOptions}\n\t\t\t\tvalue={multiValue}\n\t\t\t\tonValueChange={setMultiValue}\n\t\t\t\tplaceholder=\"Select frameworks...\"\n\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\tdisabled={disabled}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Combobox\n\t\t\toptions={demoOptions}\n\t\t\tvalue={value}\n\t\t\tonValueChange={setValue}\n\t\t\tplaceholder=\"Select framework...\"\n\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\tdisabled={disabled}\n\t\t/>\n\t);\n}\n\nconst meta = {\n\ttitle: \"Component/Combobox\",\n\tcomponent: ComboboxWrapper,\n\tparameters: {\n\t\tlayout: \"centered\",\n\t\tdocs: {\n\t\t\tpage: () => (\n\t\t\t\t<>\n\t\t\t\t\t<Title />\n\t\t\t\t\t<p className=\"sbdocs-p\">\n\t\t\t\t\t\tCombobox is a searchable select component. When the dropdown opens,\n\t\t\t\t\t\tit displays a <strong>Command</strong> component for search and\n\t\t\t\t\t\tselection. See the Command component for all available styling\n\t\t\t\t\t\toptions.\n\t\t\t\t\t</p>\n\t\t\t\t\t<Primary />\n\t\t\t\t\t<Controls />\n\t\t\t\t</>\n\t\t\t),\n\t\t},\n\t},\n\targTypes: {\n\t\tmulti: {\n\t\t\tcontrol: \"boolean\",\n\t\t},\n\t\tdisabled: {\n\t\t\tcontrol: \"boolean\",\n\t\t},\n\t},\n\targs: {\n\t\tmulti: false,\n\t\tdisabled: false,\n\t},\n} satisfies Meta<typeof ComboboxWrapper>;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default = {\n\ttags: [\"!dev\"],\n\trender: ({ multi = false, disabled = false }) => (\n\t\t<div className=\"w-[300px]\">\n\t\t\t<ComboboxWrapper multi={multi} disabled={disabled} />\n\t\t</div>\n\t),\n} satisfies Story;\n\nexport const Demo = {\n\ttags: [\"!autodocs\"],\n\trender: () => {\n\t\tconst [value, setValue] = useState(\"\");\n\t\tconst [multiValue, setMultiValue] = useState<string[]>([]);\n\n\t\treturn (\n\t\t\t<div className=\"space-y-8\">\n\t\t\t\t{/* Single */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Single select</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<Combobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\tonValueChange={setValue}\n\t\t\t\t\t\t\tplaceholder=\"Select framework...\"\n\t\t\t\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Multi */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Multi select</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<MultiCombobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tvalue={multiValue}\n\t\t\t\t\t\t\tonValueChange={setMultiValue}\n\t\t\t\t\t\t\tplaceholder=\"Select frameworks...\"\n\t\t\t\t\t\t\tsearchPlaceholder=\"Search framework...\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Disabled */}\n\t\t\t\t<div>\n\t\t\t\t\t<h3 className=\"typo-label mb-4\">Disabled</h3>\n\t\t\t\t\t<div className=\"w-[300px]\">\n\t\t\t\t\t\t<Combobox\n\t\t\t\t\t\t\toptions={demoOptions}\n\t\t\t\t\t\t\tplaceholder=\"Select framework...\"\n\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t},\n} satisfies Story;\n"],"names":["Controls","Primary","Title","useState","Combobox","MultiCombobox","demoOptions","value","label","ComboboxWrapper","multi","disabled","setValue","multiValue","setMultiValue","options","onValueChange","placeholder","searchPlaceholder","meta","title","component","parameters","layout","docs","page","p","className","strong","argTypes","control","args","Default","tags","render","div","Demo","h3"],"mappings":";AAAA,SAASA,QAAQ,EAAEC,OAAO,EAAEC,KAAK,QAAQ,+BAA+B;AAExE,SAASC,QAAQ,QAAQ,QAAQ;AACjC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,gBAAa;AAErD,MAAMC,cAAc;IACnB;QAAEC,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAASC,OAAO;IAAQ;CACjC;AAOD,SAASC,gBAAgB,EACxBC,QAAQ,KAAK,EACbC,WAAW,KAAK,EACM;IACtB,MAAM,CAACJ,OAAOK,SAAS,GAAGT,SAAS;IACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAmB,EAAE;IAEzD,IAAIO,OAAO;QACV,qBACC,KAACL;YACAU,SAAST;YACTC,OAAOM;YACPG,eAAeF;YACfG,aAAY;YACZC,mBAAkB;YAClBP,UAAUA;;IAGb;IAEA,qBACC,KAACP;QACAW,SAAST;QACTC,OAAOA;QACPS,eAAeJ;QACfK,aAAY;QACZC,mBAAkB;QAClBP,UAAUA;;AAGb;AAEA,MAAMQ,OAAO;IACZC,OAAO;IACPC,WAAWZ;IACXa,YAAY;QACXC,QAAQ;QACRC,MAAM;YACLC,MAAM,kBACL;;sCACC,KAACvB;sCACD,MAACwB;4BAAEC,WAAU;;gCAAW;8CAET,KAACC;8CAAO;;gCAAgB;;;sCAIvC,KAAC3B;sCACD,KAACD;;;QAGJ;IACD;IACA6B,UAAU;QACTnB,OAAO;YACNoB,SAAS;QACV;QACAnB,UAAU;YACTmB,SAAS;QACV;IACD;IACAC,MAAM;QACLrB,OAAO;QACPC,UAAU;IACX;AACD;AACA,eAAeQ,KAAK;AAIpB,OAAO,MAAMa,UAAU;IACtBC,MAAM;QAAC;KAAO;IACdC,QAAQ,CAAC,EAAExB,QAAQ,KAAK,EAAEC,WAAW,KAAK,EAAE,iBAC3C,KAACwB;YAAIR,WAAU;sBACd,cAAA,KAAClB;gBAAgBC,OAAOA;gBAAOC,UAAUA;;;AAG5C,EAAkB;AAElB,OAAO,MAAMyB,OAAO;IACnBH,MAAM;QAAC;KAAY;IACnBC,QAAQ;QACP,MAAM,CAAC3B,OAAOK,SAAS,GAAGT,SAAS;QACnC,MAAM,CAACU,YAAYC,cAAc,GAAGX,SAAmB,EAAE;QAEzD,qBACC,MAACgC;YAAIR,WAAU;;8BAEd,MAACQ;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACvB;gCACAW,SAAST;gCACTC,OAAOA;gCACPS,eAAeJ;gCACfK,aAAY;gCACZC,mBAAkB;;;;;8BAMrB,MAACiB;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACtB;gCACAU,SAAST;gCACTC,OAAOM;gCACPG,eAAeF;gCACfG,aAAY;gCACZC,mBAAkB;;;;;8BAMrB,MAACiB;;sCACA,KAACE;4BAAGV,WAAU;sCAAkB;;sCAChC,KAACQ;4BAAIR,WAAU;sCACd,cAAA,KAACvB;gCACAW,SAAST;gCACTW,aAAY;gCACZN,QAAQ;;;;;;;IAMd;AACD,EAAkB"}
@@ -1,6 +1,6 @@
1
1
  import { Command as CommandPrimitive } from "cmdk";
2
2
  import type * as React from "react";
3
- import { Dialog } from "#shadcn/components/ui/dialog";
3
+ import { Dialog } from "../../components/ui/dialog";
4
4
  declare function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
6
6
  title?: string;
@@ -8,7 +8,9 @@ declare function CommandDialog({ title, description, children, className, showCl
8
8
  className?: string;
9
9
  showCloseButton?: boolean;
10
10
  }): import("react/jsx-runtime").JSX.Element;
11
- declare function CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>): import("react/jsx-runtime").JSX.Element;
11
+ declare function CommandInput({ className, wrapperClassName, ...props }: React.ComponentProps<typeof CommandPrimitive.Input> & {
12
+ wrapperClassName?: string;
13
+ }): import("react/jsx-runtime").JSX.Element;
12
14
  declare function CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>): import("react/jsx-runtime").JSX.Element;
13
15
  declare function CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>): import("react/jsx-runtime").JSX.Element;
14
16
  declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACN,MAAM,EAKN,MAAM,8BAA8B,CAAC;AAGtC,iBAAS,OAAO,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAW/C;AAED,iBAAS,aAAa,CAAC,EACtB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,2CAiBA;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAiBrD;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAWpD;AAED,iBAAS,YAAY,CAAC,EACrB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQrD;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAWrD;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAQzD;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAepD;AAED,iBAAS,eAAe,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAW9B;AAED,OAAO,EACN,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GAChB,CAAC"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACN,MAAM,EAKN,MAAM,8BAA8B,CAAC;AA6MtC,iBAAS,OAAO,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,2CAQ/C;AAED,iBAAS,aAAa,CAAC,EACtB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,2CAeA;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,gBAAgB,EAChB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,2CAcA;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQpD;AAED,iBAAS,YAAY,CAAC,EACrB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQrD;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,2CAQrD;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,2CAQzD;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAQpD;AAED,iBAAS,eAAe,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,2CAQ9B;AAED,OAAO,EACN,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GAChB,CAAC"}
@@ -3,10 +3,72 @@ import { Command as CommandPrimitive } from "cmdk";
3
3
  import { SearchIcon } from "lucide-react";
4
4
  import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./dialog.js";
5
5
  import { cn } from "../../lib/utils.js";
6
+ // Command Root
7
+ const commandStyles = cn(// Layout
8
+ "flex", "h-full", "w-full", "flex-col", "overflow-hidden", "rounded-md", // Colors
9
+ "bg-bg-primary", "text-text-primary", // Group heading styles
10
+ "[&_*[cmdk-group-heading]]:flex", "[&_*[cmdk-group-heading]]:items-center", "[&_*[cmdk-group-heading]]:h-7", "[&_*[cmdk-group-heading]]:px-3", "[&_*[cmdk-group-heading]]:py-0", "[&_*[cmdk-group-heading]]:typo-label-tiny", "[&_*[cmdk-group-heading]]:text-[color:var(--color-text-secondary)]");
11
+ // Command Dialog
12
+ const commandDialogContentStyles = cn(// Layout
13
+ "overflow-hidden", "p-0");
14
+ const commandDialogCommandStyles = cn(// Group headings
15
+ "[&_[cmdk-group-heading]]:flex", "[&_[cmdk-group-heading]]:items-center", "[&_[cmdk-group-heading]]:h-7", "[&_[cmdk-group-heading]]:px-3", "[&_[cmdk-group-heading]]:py-0", "[&_[cmdk-group-heading]]:typo-label-tiny", "[&_[cmdk-group-heading]]:text-text-secondary", // Groups
16
+ "[&_[cmdk-group]]:p-2", "[&_[cmdk-group]]:gap-1", "[&_[cmdk-group]]:flex", "[&_[cmdk-group]]:flex-col", "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0", // Input wrapper
17
+ "[&_[cmdk-input-wrapper]]:h-12", "**:data-[slot=command-input-wrapper]:h-12", // Input wrapper SVG
18
+ "[&_[cmdk-input-wrapper]_svg]:h-5", "[&_[cmdk-input-wrapper]_svg]:w-5", // Input
19
+ "[&_[cmdk-input]]:h-12", // Items
20
+ "[&_[cmdk-item]]:px-2", "[&_[cmdk-item]]:py-3", // Item SVG
21
+ "[&_[cmdk-item]_svg]:h-5", "[&_[cmdk-item]_svg]:w-5");
22
+ // Command Input Wrapper
23
+ const commandInputWrapperStyles = cn(// Layout
24
+ "flex", "h-9", "items-center", "gap-2", "px-3", // Border
25
+ "border-b", "border-border-separator", // Animation
26
+ "transition-colors", "duration-300");
27
+ // Command Input Icon
28
+ const commandInputIconStyles = cn(// Size
29
+ "size-4", "shrink-0", // Colors
30
+ "text-text-tertiary");
31
+ // Command Input
32
+ const commandInputStyles = cn(// Layout
33
+ "flex", "h-10", "w-full", "rounded-md", "py-3", // Background
34
+ "bg-transparent", // Typography
35
+ "typo-body", // Colors
36
+ "text-text-primary", "placeholder:text-text-quternary", "file:text-text-primary", // States
37
+ "outline-hidden", "disabled:cursor-not-allowed", "disabled:opacity-50");
38
+ // Command List
39
+ const commandListStyles = cn(// Layout
40
+ "max-h-[300px]", "scroll-py-1", // Overflow
41
+ "overflow-x-hidden", "overflow-y-auto", "p-2");
42
+ // Command Empty
43
+ const commandEmptyStyles = cn(// Layout
44
+ "py-6", "text-center", // Typography
45
+ "typo-body", // Colors
46
+ "text-text-tertiary");
47
+ // Command Group
48
+ const commandGroupStyles = cn(// Layout
49
+ "overflow-hidden", "p-2", "gap-1", "flex", "flex-col", "group", // Colors
50
+ "text-text-tertiary", // Group heading styles
51
+ "[&_*[cmdk-group-heading]]:flex", "[&_*[cmdk-group-heading]]:items-center", "[&_*[cmdk-group-heading]]:h-7", "[&_*[cmdk-group-heading]]:px-3", "[&_*[cmdk-group-heading]]:py-0", "[&_*[cmdk-group-heading]]:typo-label-tiny", "[&_*[cmdk-group-heading]]:text-[var(--color-text-secondary)]");
52
+ // Command Separator
53
+ const commandSeparatorStyles = cn(// Layout
54
+ "-mx-1", "h-px", // Colors
55
+ "bg-border-separator");
56
+ // Command Item
57
+ const commandItemStyles = cn(// Layout
58
+ "relative", "flex", "cursor-pointer", "items-center", "gap-2", "rounded", "px-2", "py-1.5", "select-none", // Typography
59
+ "typo-body", // Colors
60
+ "text-text-primary", // States
61
+ "outline-hidden", "data-[state=checked]:bg-bg-tertiary", "data-[state=checked]:hover:bg-bg-secondary", "hover:bg-bg-secondary", "hover:text-text-primary", "data-[state=checked]:text-text-primary", "data-[disabled=true]:pointer-events-none", "data-[disabled=true]:opacity-50", // SVG styles
62
+ "[&_svg:not([class*='text-'])]:text-text-quaternary", "[&_svg]:pointer-events-none", "[&_svg]:shrink-0", "[&_svg:not([class*='size-'])]:size-4");
63
+ // Command Shortcut
64
+ const commandShortcutStyles = cn(// Layout
65
+ "ml-auto", // Typography
66
+ "typo-body", "tracking-widest", // Colors
67
+ "text-text-quaternary");
6
68
  function Command({ className, ...props }) {
7
69
  return /*#__PURE__*/ _jsx(CommandPrimitive, {
8
70
  "data-slot": "command",
9
- className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
71
+ className: cn(commandStyles, className),
10
72
  ...props
11
73
  });
12
74
  }
@@ -26,27 +88,27 @@ function CommandDialog({ title = "Command Palette", description = "Search for a
26
88
  ]
27
89
  }),
28
90
  /*#__PURE__*/ _jsx(DialogContent, {
29
- className: cn("overflow-hidden p-0", className),
91
+ className: cn(commandDialogContentStyles, className),
30
92
  showCloseButton: showCloseButton,
31
93
  children: /*#__PURE__*/ _jsx(Command, {
32
- className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
94
+ className: commandDialogCommandStyles,
33
95
  children: children
34
96
  })
35
97
  })
36
98
  ]
37
99
  });
38
100
  }
39
- function CommandInput({ className, ...props }) {
101
+ function CommandInput({ className, wrapperClassName, ...props }) {
40
102
  return /*#__PURE__*/ _jsxs("div", {
41
103
  "data-slot": "command-input-wrapper",
42
- className: "flex h-9 items-center gap-2 border-b px-3",
104
+ className: cn(commandInputWrapperStyles, wrapperClassName),
43
105
  children: [
44
106
  /*#__PURE__*/ _jsx(SearchIcon, {
45
- className: "size-4 shrink-0 opacity-50"
107
+ className: commandInputIconStyles
46
108
  }),
47
109
  /*#__PURE__*/ _jsx(CommandPrimitive.Input, {
48
110
  "data-slot": "command-input",
49
- className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
111
+ className: cn(commandInputStyles, className),
50
112
  ...props
51
113
  })
52
114
  ]
@@ -55,42 +117,42 @@ function CommandInput({ className, ...props }) {
55
117
  function CommandList({ className, ...props }) {
56
118
  return /*#__PURE__*/ _jsx(CommandPrimitive.List, {
57
119
  "data-slot": "command-list",
58
- className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
120
+ className: cn(commandListStyles, className),
59
121
  ...props
60
122
  });
61
123
  }
62
124
  function CommandEmpty({ ...props }) {
63
125
  return /*#__PURE__*/ _jsx(CommandPrimitive.Empty, {
64
126
  "data-slot": "command-empty",
65
- className: "py-6 text-center text-sm",
127
+ className: commandEmptyStyles,
66
128
  ...props
67
129
  });
68
130
  }
69
131
  function CommandGroup({ className, ...props }) {
70
132
  return /*#__PURE__*/ _jsx(CommandPrimitive.Group, {
71
133
  "data-slot": "command-group",
72
- className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
134
+ className: cn(commandGroupStyles, className),
73
135
  ...props
74
136
  });
75
137
  }
76
138
  function CommandSeparator({ className, ...props }) {
77
139
  return /*#__PURE__*/ _jsx(CommandPrimitive.Separator, {
78
140
  "data-slot": "command-separator",
79
- className: cn("bg-border -mx-1 h-px", className),
141
+ className: cn(commandSeparatorStyles, className),
80
142
  ...props
81
143
  });
82
144
  }
83
145
  function CommandItem({ className, ...props }) {
84
146
  return /*#__PURE__*/ _jsx(CommandPrimitive.Item, {
85
147
  "data-slot": "command-item",
86
- className: cn("data-[selected=true]:bg-(--color-surface-1) text-(--color-elements-assistive)", "data-[selected=true]:text-(--color-elements-readable) [&_svg:not([class*='text-'])]:text-muted-foreground", "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none", "[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
148
+ className: cn(commandItemStyles, className),
87
149
  ...props
88
150
  });
89
151
  }
90
152
  function CommandShortcut({ className, ...props }) {
91
153
  return /*#__PURE__*/ _jsx("span", {
92
154
  "data-slot": "command-shortcut",
93
- className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
155
+ className: cn(commandShortcutStyles, className),
94
156
  ...props
95
157
  });
96
158
  }