@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
@@ -1,8 +1,37 @@
1
+ "use client";
1
2
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
2
3
  import type * as React from "react";
3
4
 
4
5
  import { cn } from "#shadcn/lib/utils";
5
6
 
7
+ // Scroll area viewport styles
8
+ const scrollAreaViewportStyles = cn(
9
+ "size-full",
10
+ "rounded-[inherit]",
11
+ "transition-[color,box-shadow]",
12
+ "outline-none",
13
+ "focus-visible:ring-2",
14
+ "focus-visible:ring-utility-blue/70",
15
+ "focus-visible:outline-1",
16
+ );
17
+
18
+ // Scroll bar base styles
19
+ const scrollBarBaseStyles = cn(
20
+ "flex",
21
+ "touch-none",
22
+ "p-px",
23
+ "transition-colors",
24
+ "select-none",
25
+ );
26
+
27
+ // Scroll bar thumb styles
28
+ const scrollBarThumbStyles = cn(
29
+ "bg-border-primary",
30
+ "relative",
31
+ "flex-1",
32
+ "rounded-full",
33
+ );
34
+
6
35
  function ScrollArea({
7
36
  className,
8
37
  children,
@@ -16,7 +45,7 @@ function ScrollArea({
16
45
  >
17
46
  <ScrollAreaPrimitive.Viewport
18
47
  data-slot="scroll-area-viewport"
19
- className="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
48
+ className={scrollAreaViewportStyles}
20
49
  >
21
50
  {children}
22
51
  </ScrollAreaPrimitive.Viewport>
@@ -36,18 +65,18 @@ function ScrollBar({
36
65
  data-slot="scroll-area-scrollbar"
37
66
  orientation={orientation}
38
67
  className={cn(
39
- "flex touch-none p-px transition-colors select-none",
68
+ scrollBarBaseStyles,
40
69
  orientation === "vertical" &&
41
- "h-full w-2.5 border-l border-l-transparent",
70
+ cn("h-full", "w-2.5", "border-l", "border-l-transparent"),
42
71
  orientation === "horizontal" &&
43
- "h-2.5 flex-col border-t border-t-transparent",
72
+ cn("h-2.5", "flex-col", "border-t", "border-t-transparent"),
44
73
  className,
45
74
  )}
46
75
  {...props}
47
76
  >
48
77
  <ScrollAreaPrimitive.ScrollAreaThumb
49
78
  data-slot="scroll-area-thumb"
50
- className="bg-border relative flex-1 rounded-full"
79
+ className={scrollBarThumbStyles}
51
80
  />
52
81
  </ScrollAreaPrimitive.ScrollAreaScrollbar>
53
82
  );
@@ -1,31 +1,30 @@
1
+ import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
1
2
  import type { Meta, StoryObj } from "@storybook/react-vite";
2
- import { Label } from "#shadcn/components/ui/label";
3
3
  import {
4
4
  Select,
5
5
  SelectContent,
6
6
  SelectGroup,
7
7
  SelectItem,
8
- SelectLabel,
9
8
  SelectTrigger,
10
9
  SelectValue,
11
10
  } from "#shadcn/components/ui/select";
12
11
 
13
- const meta = {
14
- title: "Component/Select",
15
- } satisfies Meta;
16
- export default meta;
17
-
18
- type Story = StoryObj<typeof meta>;
12
+ interface SelectWrapperProps {
13
+ variant?: "default" | "compound";
14
+ disabled?: boolean;
15
+ }
19
16
 
20
- export const Demo = {
21
- render: () => (
22
- <Select>
23
- <SelectTrigger className="w-[180px]">
17
+ function SelectWrapper({
18
+ variant = "default",
19
+ disabled = false,
20
+ }: SelectWrapperProps) {
21
+ return (
22
+ <Select disabled={disabled}>
23
+ <SelectTrigger className="w-[200px]" variant={variant}>
24
24
  <SelectValue placeholder="Select a fruit" />
25
25
  </SelectTrigger>
26
26
  <SelectContent>
27
27
  <SelectGroup>
28
- <SelectLabel>Fruits</SelectLabel>
29
28
  <SelectItem value="apple">Apple</SelectItem>
30
29
  <SelectItem value="banana">Banana</SelectItem>
31
30
  <SelectItem value="blueberry">Blueberry</SelectItem>
@@ -34,28 +33,105 @@ export const Demo = {
34
33
  </SelectGroup>
35
34
  </SelectContent>
36
35
  </Select>
36
+ );
37
+ }
38
+
39
+ const meta = {
40
+ title: "Component/Select",
41
+ component: SelectWrapper,
42
+ parameters: {
43
+ layout: "centered",
44
+ docs: {
45
+ page: () => (
46
+ <>
47
+ <Title />
48
+ <p className="sbdocs-p">
49
+ Select is a dropdown component for choosing a single option. It is
50
+ also used as the trigger/container in <strong>Combobox</strong> and{" "}
51
+ <strong>MultiCombobox</strong> components.
52
+ </p>
53
+ <Primary />
54
+ <Controls />
55
+ </>
56
+ ),
57
+ },
58
+ },
59
+ argTypes: {
60
+ variant: {
61
+ control: "select",
62
+ options: ["default", "compound"],
63
+ },
64
+ disabled: {
65
+ control: "boolean",
66
+ },
67
+ },
68
+ args: {
69
+ variant: "default",
70
+ disabled: false,
71
+ },
72
+ } satisfies Meta<typeof SelectWrapper>;
73
+ export default meta;
74
+
75
+ type Story = StoryObj<typeof meta>;
76
+
77
+ export const Default = {
78
+ tags: ["!dev"],
79
+ render: ({ variant = "default", disabled = false }) => (
80
+ <SelectWrapper variant={variant} disabled={disabled} />
37
81
  ),
38
82
  } satisfies Story;
39
83
 
40
- export const CompoundSelectWrite: Story = {
84
+ export const Demo = {
85
+ tags: ["!autodocs"],
41
86
  render: () => (
42
- <div className="grid w-full max-w-sm items-center gap-1.5">
43
- <Label htmlFor="compound-select">Compound Select Write</Label>
44
- <Select>
45
- <SelectTrigger
46
- id="compound-select"
47
- variant="compound"
48
- className="w-[180px]"
49
- >
50
- <SelectValue placeholder="Select option" />
51
- </SelectTrigger>
52
- <SelectContent>
53
- <SelectItem value="option1">Option 1</SelectItem>
54
- <SelectItem value="option2">Option 2</SelectItem>
55
- <SelectItem value="option3">Option 3</SelectItem>
56
- <SelectItem value="option4">Option 4</SelectItem>
57
- </SelectContent>
58
- </Select>
87
+ <div className="space-y-8">
88
+ {/* Default */}
89
+ <div>
90
+ <h3 className="typo-label mb-4">Default</h3>
91
+ <Select>
92
+ <SelectTrigger className="w-[200px]">
93
+ <SelectValue placeholder="Select a fruit" />
94
+ </SelectTrigger>
95
+ <SelectContent>
96
+ <SelectGroup>
97
+ <SelectItem value="apple">Apple</SelectItem>
98
+ <SelectItem value="banana">Banana</SelectItem>
99
+ <SelectItem value="blueberry">Blueberry</SelectItem>
100
+ </SelectGroup>
101
+ </SelectContent>
102
+ </Select>
103
+ </div>
104
+
105
+ {/* Compound */}
106
+ <div>
107
+ <h3 className="typo-label mb-4">Compound</h3>
108
+ <Select>
109
+ <SelectTrigger className="w-[200px]" variant="compound">
110
+ <SelectValue placeholder="Select option" />
111
+ </SelectTrigger>
112
+ <SelectContent>
113
+ <SelectItem value="option1">Option 1</SelectItem>
114
+ <SelectItem value="option2">Option 2</SelectItem>
115
+ <SelectItem value="option3">Option 3</SelectItem>
116
+ </SelectContent>
117
+ </Select>
118
+ </div>
119
+
120
+ {/* Disabled */}
121
+ <div>
122
+ <h3 className="typo-label mb-4">Disabled</h3>
123
+ <Select disabled>
124
+ <SelectTrigger className="w-[200px]">
125
+ <SelectValue placeholder="Select a fruit" />
126
+ </SelectTrigger>
127
+ <SelectContent>
128
+ <SelectGroup>
129
+ <SelectItem value="apple">Apple</SelectItem>
130
+ <SelectItem value="banana">Banana</SelectItem>
131
+ </SelectGroup>
132
+ </SelectContent>
133
+ </Select>
134
+ </div>
59
135
  </div>
60
136
  ),
61
- };
137
+ } satisfies Story;
@@ -4,34 +4,75 @@ import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react";
4
4
  import type * as React from "react";
5
5
  import { cn } from "#shadcn/lib/utils";
6
6
 
7
- const selectTriggerVariants = cva(
8
- cn(
9
- "border-border-primary hover:border-border-primary_hover data-[placeholder]:text-text-quternary selection:bg-bg-primary",
10
- "selection:text-text-primary-foreground [&_svg:not([class*='text-'])]:text-text-quternary flex w-fit items-center justify-between",
11
- "gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none",
12
- "disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-text-disabled focus-visible:ring-2 focus-visible:ring-border-link",
13
- "data-[state=open]:ring-2 data-[state=open]:ring-border-link disabled:bg-bg-disabled aria-invalid:ring-destructive",
14
- "aria-invalid:text-text-error-primary aria-invalid:border-border-error-primary *:data-[slot=select-value]:line-clamp-1",
15
- "*:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2",
16
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
17
- ),
18
- {
19
- variants: {
20
- size: {
21
- regular: "h-9",
22
- small: "h-8",
23
- },
24
- variant: {
25
- default: "",
26
- compound: "border-r-0 typo-label",
27
- },
28
- },
29
- defaultVariants: {
30
- size: "regular",
31
- variant: "default",
7
+ // Base select trigger styles
8
+ const baseSelectTriggerStyles = cn(
9
+ // Layout
10
+ "flex",
11
+ "w-full",
12
+ "items-center",
13
+ "justify-between",
14
+ "gap-2",
15
+ "whitespace-nowrap",
16
+ // Shape
17
+ "rounded-md",
18
+ // Borders
19
+ "border",
20
+ "border-border-primary",
21
+ // Background & Colors
22
+ "bg-transparent",
23
+ "text-sm",
24
+ // Spacing
25
+ "px-3",
26
+ "py-2",
27
+ // Transitions
28
+ "transition-colors",
29
+ "duration-300",
30
+ "outline-none",
31
+ // Hover
32
+ "hover:border-border-primary_hover",
33
+ // Focus
34
+ "focus-visible:border-border-link",
35
+ // Placeholder
36
+ "data-[placeholder]:text-text-tertiary",
37
+ // Selection
38
+ "selection:bg-selection",
39
+ "selection:text-text-primary",
40
+ // SVG icons
41
+ "[&_svg:not([class*='text-'])]:text-text-tertiary",
42
+ "[&_svg]:pointer-events-none",
43
+ "[&_svg]:shrink-0",
44
+ "[&_svg:not([class*='size-'])]:size-4",
45
+ // Value styles
46
+ "*:data-[slot=select-value]:line-clamp-1",
47
+ "*:data-[slot=select-value]:flex",
48
+ "*:data-[slot=select-value]:items-center",
49
+ "*:data-[slot=select-value]:gap-2",
50
+ // Cursor
51
+ "cursor-pointer",
52
+ // Disabled
53
+ "disabled:pointer-events-none",
54
+ "disabled:cursor-not-allowed",
55
+ "disabled:text-text-disabled",
56
+ "disabled:bg-bg-secondary",
57
+ "disabled:border-border-primary",
58
+ // Invalid
59
+ "aria-invalid:text-text-error-primary",
60
+ "aria-invalid:border-border-error",
61
+ "aria-invalid:ring-2",
62
+ "aria-invalid:ring-utility-red/70",
63
+ );
64
+
65
+ const selectTriggerVariants = cva(baseSelectTriggerStyles, {
66
+ variants: {
67
+ variant: {
68
+ default: cn("h-9"),
69
+ compound: cn("h-9", "border-r-0", "typo-label"),
32
70
  },
33
71
  },
34
- );
72
+ defaultVariants: {
73
+ variant: "default",
74
+ },
75
+ });
35
76
 
36
77
  function Select({
37
78
  ...props
@@ -53,7 +94,6 @@ function SelectValue({
53
94
 
54
95
  function SelectTrigger({
55
96
  className,
56
- size,
57
97
  variant,
58
98
  children,
59
99
  ...props
@@ -62,12 +102,12 @@ function SelectTrigger({
62
102
  return (
63
103
  <SelectPrimitive.Trigger
64
104
  data-slot="select-trigger"
65
- className={cn(selectTriggerVariants({ variant, size, className }))}
105
+ className={cn(selectTriggerVariants({ variant, className }))}
66
106
  {...props}
67
107
  >
68
108
  {children}
69
109
  <SelectPrimitive.Icon asChild>
70
- <ChevronDownIcon className="size-4 opacity-50" />
110
+ <ChevronDownIcon />
71
111
  </SelectPrimitive.Icon>
72
112
  </SelectPrimitive.Trigger>
73
113
  );
@@ -84,9 +124,47 @@ function SelectContent({
84
124
  <SelectPrimitive.Content
85
125
  data-slot="select-content"
86
126
  className={cn(
87
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
127
+ // Layout
128
+ "relative",
129
+ "z-50",
130
+ "group",
131
+ "min-w-[8rem]",
132
+ "max-h-(--radix-select-content-available-height)",
133
+ "origin-(--radix-select-content-transform-origin)",
134
+ "overflow-x-hidden",
135
+ "overflow-y-auto",
136
+ // Shape
137
+ "rounded-md",
138
+ // Borders
139
+ "border",
140
+ "border-border-separator",
141
+ // Background & Colors
142
+ "bg-bg-primary",
143
+ "text-text-primary",
144
+ // Spacing
145
+ "py-1",
146
+ // Shadow
147
+ "dropdown-menu-shadow",
148
+ // Animations - open
149
+ "data-[state=open]:animate-in",
150
+ "data-[state=open]:fade-in-0",
151
+ "data-[state=open]:zoom-in-95",
152
+ // Animations - closed
153
+ "data-[state=closed]:animate-out",
154
+ "data-[state=closed]:fade-out-0",
155
+ "data-[state=closed]:zoom-out-95",
156
+ // Slide animations
157
+ "data-[side=bottom]:slide-in-from-top-2",
158
+ "data-[side=left]:slide-in-from-right-2",
159
+ "data-[side=right]:slide-in-from-left-2",
160
+ "data-[side=top]:slide-in-from-bottom-2",
88
161
  position === "popper" &&
89
- "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
162
+ cn(
163
+ "data-[side=bottom]:translate-y-1",
164
+ "data-[side=left]:-translate-x-1",
165
+ "data-[side=right]:translate-x-1",
166
+ "data-[side=top]:-translate-y-1",
167
+ ),
90
168
  className,
91
169
  )}
92
170
  position={position}
@@ -97,7 +175,12 @@ function SelectContent({
97
175
  className={cn(
98
176
  "p-1",
99
177
  position === "popper" &&
100
- "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1",
178
+ cn(
179
+ "h-[var(--radix-select-trigger-height)]",
180
+ "w-full",
181
+ "min-w-[var(--radix-select-trigger-width)]",
182
+ "scroll-my-1",
183
+ ),
101
184
  )}
102
185
  >
103
186
  {children}
@@ -115,7 +198,13 @@ function SelectLabel({
115
198
  return (
116
199
  <SelectPrimitive.Label
117
200
  data-slot="select-label"
118
- className={cn("text-muted-foreground px-2 py-1.5 text-xs", className)}
201
+ className={cn(
202
+ "text-text-tertiary",
203
+ "px-2",
204
+ "py-1.5",
205
+ "typo-label",
206
+ className,
207
+ )}
119
208
  {...props}
120
209
  />
121
210
  );
@@ -130,12 +219,62 @@ function SelectItem({
130
219
  <SelectPrimitive.Item
131
220
  data-slot="select-item"
132
221
  className={cn(
133
- "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
222
+ // Layout
223
+ "relative",
224
+ "flex",
225
+ "w-full",
226
+ "items-center",
227
+ "cursor-pointer",
228
+ "select-none",
229
+ // Shape
230
+ "rounded-md",
231
+ // Spacing
232
+ "py-1.5",
233
+ "pl-3",
234
+ "pr-8",
235
+ "mb-0.5",
236
+ "last:mb-0",
237
+ // Typography
238
+ "text-sm",
239
+ "text-text-primary",
240
+ // Interaction
241
+ "outline-hidden",
242
+ // Hover
243
+ "hover:bg-bg-tertiary",
244
+ // Active
245
+ "active:text-text-primary",
246
+ // Focus
247
+ "focus-visible:bg-bg-tertiary",
248
+ // Checked state
249
+ "data-[state=checked]:bg-bg-tertiary",
250
+ "data-[state=checked]:text-text-primary",
251
+ "group-hover:data-[state=checked]:bg-transparent",
252
+ // Disabled
253
+ "data-[disabled]:pointer-events-none",
254
+ "data-[disabled]:opacity-50",
255
+ // SVG icons
256
+ "[&_svg:not([class*='text-'])]:text-text-tertiary",
257
+ "[&_svg]:pointer-events-none",
258
+ "[&_svg]:shrink-0",
259
+ "[&_svg:not([class*='size-'])]:size-4",
260
+ // Span styles
261
+ "*:[span]:last:flex",
262
+ "*:[span]:last:items-center",
263
+ "*:[span]:last:gap-2",
134
264
  className,
135
265
  )}
136
266
  {...props}
137
267
  >
138
- <span className="absolute right-2 flex size-3.5 items-center justify-center">
268
+ <span
269
+ className={cn(
270
+ "absolute",
271
+ "right-2",
272
+ "flex",
273
+ "size-3.5",
274
+ "items-center",
275
+ "justify-center",
276
+ )}
277
+ >
139
278
  <SelectPrimitive.ItemIndicator>
140
279
  <CheckIcon className="size-4" />
141
280
  </SelectPrimitive.ItemIndicator>
@@ -152,7 +291,14 @@ function SelectSeparator({
152
291
  return (
153
292
  <SelectPrimitive.Separator
154
293
  data-slot="select-separator"
155
- className={cn("bg-border pointer-events-none -mx-1 my-1 h-px", className)}
294
+ className={cn(
295
+ "bg-border-separator",
296
+ "pointer-events-none",
297
+ "-mx-1",
298
+ "my-1",
299
+ "h-px",
300
+ className,
301
+ )}
156
302
  {...props}
157
303
  />
158
304
  );
@@ -1,8 +1,23 @@
1
+ "use client";
1
2
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
2
3
  import type * as React from "react";
3
4
 
4
5
  import { cn } from "#shadcn/lib/utils";
5
6
 
7
+ // Separator styles
8
+ const separatorStyles = cn(
9
+ // Background
10
+ "bg-border-separator",
11
+ // Layout
12
+ "shrink-0",
13
+ // Horizontal orientation
14
+ "data-[orientation=horizontal]:h-px",
15
+ "data-[orientation=horizontal]:w-full",
16
+ // Vertical orientation
17
+ "data-[orientation=vertical]:h-full",
18
+ "data-[orientation=vertical]:w-px",
19
+ );
20
+
6
21
  function Separator({
7
22
  className,
8
23
  orientation = "horizontal",
@@ -14,11 +29,7 @@ function Separator({
14
29
  data-slot="separator"
15
30
  decorative={decorative}
16
31
  orientation={orientation}
17
- className={cn(
18
- "bg-bg-quaternary shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full",
19
- "data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
20
- className,
21
- )}
32
+ className={cn(separatorStyles, className)}
22
33
  {...props}
23
34
  />
24
35
  );
@@ -56,7 +56,7 @@ function SheetContent({
56
56
  <SheetPrimitive.Content
57
57
  data-slot="sheet-content"
58
58
  className={cn(
59
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
59
+ "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 dropdown-menu-shadow transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
60
60
  side === "right" &&
61
61
  "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
62
62
  side === "left" &&
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { Slot } from "@radix-ui/react-slot";
2
3
  import { cva, type VariantProps } from "class-variance-authority";
3
4
  import { PanelLeftIcon } from "lucide-react";
@@ -476,35 +477,77 @@ function SidebarMenuItem({ className, ...props }: React.ComponentProps<"li">) {
476
477
  );
477
478
  }
478
479
 
479
- const sidebarMenuButtonVariants = cva(
480
- cn(
481
- "typo-body text-text-secondary flex items-center gap-2 overflow-hidden rounded-lg py-2 px-[0.44rem] outline-hidden ",
482
- "ring-sidebar-ring transition-all focus-visible:ring-2 active:bg-bg-quaternary disabled:pointer-events-none",
483
- "disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50",
484
- "data-[active=true]:bg-bg-brand-secondary data-[active=true]:text-text-primary data-[state=open]:hover:bg-sidebar-accent",
485
- "data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:py-2! group-data-[collapsible=icon]:px-[0.44rem]!",
486
- "[&>span:last-child]:truncate [&>svg]:size-5 [&>svg]:shrink-0 hover:bg-bg-secondary hover:text-text-primary",
487
- "data-[active=true]:[&>svg]:text-text-brand-primary w-full",
488
- ),
489
- {
490
- variants: {
491
- variant: {
492
- default: "",
493
- outline:
494
- "shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
495
- },
496
- size: {
497
- default: "",
498
- sm: "",
499
- lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
500
- },
480
+ // Base sidebar menu button styles
481
+ const baseSidebarMenuButtonStyles = cn(
482
+ // Layout
483
+ "flex",
484
+ "items-center",
485
+ "gap-2",
486
+ "w-full",
487
+ "overflow-hidden",
488
+ // Shape
489
+ "rounded-lg",
490
+ // Spacing
491
+ "py-2",
492
+ "px-[0.44rem]",
493
+ // Typography
494
+ "typo-body",
495
+ "text-fg-secondary",
496
+ // Interaction
497
+ "outline-hidden",
498
+ "transition-all",
499
+ "cursor-pointer",
500
+ // Focus
501
+ "focus-visible:ring-2",
502
+ "focus-visible:ring-utility-blue/70",
503
+ // Hover
504
+ "hover:bg-bg-secondary",
505
+ "hover:text-text-primary",
506
+ // Active
507
+ "active:bg-bg-quaternary",
508
+ "data-[active=true]:bg-bg-brand-primary",
509
+ "data-[active=true]:text-text-primary",
510
+ "data-[active=true]:[&>svg]:text-fg-brand-primary",
511
+ // Open state
512
+ "data-[state=open]:hover:bg-bg-secondary",
513
+ "data-[state=open]:hover:text-text-primary",
514
+ // Disabled
515
+ "disabled:pointer-events-none",
516
+ "disabled:opacity-50",
517
+ "aria-disabled:pointer-events-none",
518
+ "aria-disabled:opacity-50",
519
+ // Group styles
520
+ "group-has-data-[sidebar=menu-action]/menu-item:pr-8",
521
+ "group-data-[collapsible=icon]:py-2!",
522
+ "group-data-[collapsible=icon]:px-[0.44rem]!",
523
+ // Content styles
524
+ "[&>span:last-child]:truncate",
525
+ "[&>svg]:size-5",
526
+ "[&>svg]:shrink-0",
527
+ );
528
+
529
+ const sidebarMenuButtonVariants = cva(baseSidebarMenuButtonStyles, {
530
+ variants: {
531
+ variant: {
532
+ default: cn(""),
533
+ outline: cn(
534
+ "shadow-[0_0_0_1px_hsl(var(--sidebar-border))]",
535
+ "hover:bg-bg-secondary",
536
+ "hover:text-text-primary",
537
+ "hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
538
+ ),
501
539
  },
502
- defaultVariants: {
503
- variant: "default",
504
- size: "default",
540
+ size: {
541
+ default: cn(""),
542
+ sm: cn(""),
543
+ lg: cn("h-12", "text-sm", "group-data-[collapsible=icon]:p-0!"),
505
544
  },
506
545
  },
507
- );
546
+ defaultVariants: {
547
+ variant: "default",
548
+ size: "default",
549
+ },
550
+ });
508
551
 
509
552
  function SidebarMenuButton({
510
553
  asChild = false,