@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,247 @@
1
+ import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
2
+ import type { Meta, StoryObj } from "@storybook/react-vite";
3
+ import {
4
+ RadioButtonGroup,
5
+ type RadioButtonGroupOption,
6
+ } from "#shadcn/components/ui/radio-button-group";
7
+
8
+ const optionsWithDescription: RadioButtonGroupOption[] = [
9
+ {
10
+ value: "option-1",
11
+ label: "First option",
12
+ description: "This is a helpful description for the first option",
13
+ },
14
+ {
15
+ value: "option-2",
16
+ label: "Second option",
17
+ description: "This is a helpful description for the second option",
18
+ },
19
+ ];
20
+
21
+ const optionsWithoutDescription: RadioButtonGroupOption[] = [
22
+ { value: "option-1", label: "First option" },
23
+ { value: "option-2", label: "Second option" },
24
+ ];
25
+
26
+ const threeOptionsWithDescription: RadioButtonGroupOption[] = [
27
+ {
28
+ value: "option-1",
29
+ label: "Basic plan",
30
+ description: "Perfect for individuals and small projects",
31
+ },
32
+ {
33
+ value: "option-2",
34
+ label: "Pro plan",
35
+ description: "Best for growing teams and businesses",
36
+ },
37
+ {
38
+ value: "option-3",
39
+ label: "Enterprise",
40
+ description: "Custom solutions for large organizations",
41
+ },
42
+ ];
43
+
44
+ const threeOptionsWithoutDescription: RadioButtonGroupOption[] = [
45
+ { value: "option-1", label: "Basic plan" },
46
+ { value: "option-2", label: "Pro plan" },
47
+ { value: "option-3", label: "Enterprise" },
48
+ ];
49
+
50
+ interface RadioButtonGroupWrapperProps {
51
+ variant?: "wrapped" | "unwrapped";
52
+ vertical?: boolean;
53
+ title?: string;
54
+ description?: string;
55
+ disabled?: boolean;
56
+ optionDescription?: boolean;
57
+ defaultValue?: string;
58
+ }
59
+
60
+ function RadioButtonGroupWrapper({
61
+ variant = "wrapped",
62
+ vertical = false,
63
+ title,
64
+ description,
65
+ disabled = false,
66
+ optionDescription = true,
67
+ defaultValue = "option-1",
68
+ }: RadioButtonGroupWrapperProps) {
69
+ const options = optionDescription
70
+ ? optionsWithDescription
71
+ : optionsWithoutDescription;
72
+
73
+ return (
74
+ <RadioButtonGroup
75
+ variant={variant}
76
+ vertical={vertical}
77
+ {...(title && { title })}
78
+ {...(description && { description })}
79
+ disabled={disabled}
80
+ options={options}
81
+ defaultValue={defaultValue}
82
+ />
83
+ );
84
+ }
85
+
86
+ const meta = {
87
+ title: "Component/Radio Button Group",
88
+ component: RadioButtonGroupWrapper,
89
+ parameters: {
90
+ docs: {
91
+ page: () => (
92
+ <>
93
+ <Title />
94
+ <Primary />
95
+ <Controls />
96
+ </>
97
+ ),
98
+ },
99
+ },
100
+ argTypes: {
101
+ variant: {
102
+ control: "select",
103
+ options: ["wrapped", "unwrapped"],
104
+ },
105
+ vertical: {
106
+ control: "boolean",
107
+ },
108
+ disabled: {
109
+ control: "boolean",
110
+ },
111
+ optionDescription: {
112
+ control: "boolean",
113
+ },
114
+ title: {
115
+ control: "text",
116
+ },
117
+ description: {
118
+ control: "text",
119
+ },
120
+ },
121
+ args: {
122
+ variant: "wrapped",
123
+ vertical: false,
124
+ disabled: false,
125
+ optionDescription: true,
126
+ title: "Select an option",
127
+ description: "Choose the option that best fits your needs",
128
+ defaultValue: "option-1",
129
+ },
130
+ } satisfies Meta<typeof RadioButtonGroupWrapper>;
131
+ export default meta;
132
+
133
+ type Story = StoryObj<typeof meta>;
134
+
135
+ export const Default = {
136
+ tags: ["!dev"],
137
+ render: (args) => <RadioButtonGroupWrapper {...args} />,
138
+ } satisfies Story;
139
+
140
+ export const Demo = {
141
+ tags: ["!autodocs"],
142
+ render: () => (
143
+ <div className="flex flex-col gap-12 p-6">
144
+ {/* Wrapped Style with Description */}
145
+ <div className="space-y-8">
146
+ <h2 className="text-lg font-semibold text-text-primary">
147
+ Style: Wrapped (with description)
148
+ </h2>
149
+
150
+ <div className="space-y-4">
151
+ <h3 className="text-sm text-text-secondary">Horizontal</h3>
152
+ <RadioButtonGroup
153
+ variant="wrapped"
154
+ vertical={false}
155
+ title="Select an option"
156
+ description="Choose the option that best fits your needs"
157
+ options={optionsWithDescription}
158
+ defaultValue="option-1"
159
+ />
160
+ </div>
161
+
162
+ <div className="space-y-4">
163
+ <h3 className="text-sm text-text-secondary">Vertical</h3>
164
+ <RadioButtonGroup
165
+ variant="wrapped"
166
+ vertical={true}
167
+ title="Select a plan"
168
+ description="Choose the plan that best fits your needs"
169
+ options={threeOptionsWithDescription}
170
+ defaultValue="option-1"
171
+ />
172
+ </div>
173
+ </div>
174
+
175
+ {/* Wrapped Style without Description */}
176
+ <div className="space-y-8">
177
+ <h2 className="text-lg font-semibold text-text-primary">
178
+ Style: Wrapped (without description)
179
+ </h2>
180
+
181
+ <div className="space-y-4">
182
+ <h3 className="text-sm text-text-secondary">Horizontal</h3>
183
+ <RadioButtonGroup
184
+ variant="wrapped"
185
+ vertical={false}
186
+ title="Select an option"
187
+ options={optionsWithoutDescription}
188
+ defaultValue="option-1"
189
+ />
190
+ </div>
191
+
192
+ <div className="space-y-4">
193
+ <h3 className="text-sm text-text-secondary">Vertical</h3>
194
+ <RadioButtonGroup
195
+ variant="wrapped"
196
+ vertical={true}
197
+ title="Select a plan"
198
+ options={threeOptionsWithoutDescription}
199
+ defaultValue="option-2"
200
+ />
201
+ </div>
202
+ </div>
203
+
204
+ {/* Unwrapped Style */}
205
+ <div className="space-y-8">
206
+ <h2 className="text-lg font-semibold text-text-primary">
207
+ Style: Unwrapped
208
+ </h2>
209
+
210
+ <div className="space-y-4">
211
+ <h3 className="text-sm text-text-secondary">Horizontal</h3>
212
+ <RadioButtonGroup
213
+ variant="unwrapped"
214
+ vertical={false}
215
+ title="Select an option"
216
+ options={optionsWithoutDescription}
217
+ defaultValue="option-1"
218
+ />
219
+ </div>
220
+
221
+ <div className="space-y-4">
222
+ <h3 className="text-sm text-text-secondary">Vertical</h3>
223
+ <RadioButtonGroup
224
+ variant="unwrapped"
225
+ vertical={true}
226
+ title="Select a plan"
227
+ options={threeOptionsWithoutDescription}
228
+ defaultValue="option-2"
229
+ />
230
+ </div>
231
+ </div>
232
+
233
+ {/* Disabled */}
234
+ <div className="space-y-8">
235
+ <h2 className="text-lg font-semibold text-text-primary">Disabled</h2>
236
+ <RadioButtonGroup
237
+ variant="wrapped"
238
+ vertical={false}
239
+ title="Disabled group"
240
+ options={optionsWithDescription}
241
+ defaultValue="option-1"
242
+ disabled
243
+ />
244
+ </div>
245
+ </div>
246
+ ),
247
+ } satisfies Story;
@@ -0,0 +1,188 @@
1
+ "use client";
2
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3
+ import { cva, type VariantProps } from "class-variance-authority";
4
+ import type * as React from "react";
5
+
6
+ import { cn } from "#shadcn/lib/utils";
7
+ import { RadioGroupItem } from "./radio-group";
8
+
9
+ // Radio Button Group container styles
10
+ const radioButtonGroupStyles = cva("flex flex-col gap-2", {
11
+ variants: {
12
+ variant: {
13
+ wrapped: "",
14
+ unwrapped: "",
15
+ },
16
+ vertical: {
17
+ true: "",
18
+ false: "",
19
+ },
20
+ },
21
+ defaultVariants: {
22
+ variant: "wrapped",
23
+ vertical: false,
24
+ },
25
+ });
26
+
27
+ // Radio items container styles
28
+ const radioItemsContainerStyles = cva("flex", {
29
+ variants: {
30
+ variant: {
31
+ wrapped: "",
32
+ unwrapped: "",
33
+ },
34
+ vertical: {
35
+ true: "flex-col",
36
+ false: "flex-row gap-3",
37
+ },
38
+ },
39
+ compoundVariants: [
40
+ {
41
+ variant: "unwrapped",
42
+ vertical: true,
43
+ class: "gap-2",
44
+ },
45
+ ],
46
+ defaultVariants: {
47
+ variant: "wrapped",
48
+ vertical: false,
49
+ },
50
+ });
51
+
52
+ // Individual radio item wrapper styles
53
+ const radioItemWrapperStyles = cva(cn("flex cursor-pointer transition-all"), {
54
+ variants: {
55
+ variant: {
56
+ wrapped: cn(
57
+ "items-start",
58
+ "gap-3",
59
+ "p-4",
60
+ "border",
61
+ "border-border-primary",
62
+ "bg-bg-primary",
63
+ "hover:bg-bg-secondary",
64
+ "[&:has([data-state=checked])]:bg-bg-tertiary",
65
+ ),
66
+ unwrapped: "gap-2",
67
+ },
68
+ vertical: {
69
+ true: "",
70
+ false: "",
71
+ },
72
+ },
73
+ compoundVariants: [
74
+ {
75
+ variant: "wrapped",
76
+ vertical: false,
77
+ class: "rounded-lg",
78
+ },
79
+ {
80
+ variant: "wrapped",
81
+ vertical: true,
82
+ class: cn(
83
+ "first:rounded-t-lg",
84
+ "last:rounded-b-lg",
85
+ "[&:not(:first-child)]:-mt-px",
86
+ ),
87
+ },
88
+ ],
89
+ defaultVariants: {
90
+ variant: "wrapped",
91
+ vertical: false,
92
+ },
93
+ });
94
+
95
+ // Title styles
96
+ const titleStyles = cn("text-text-primary", "body16bold");
97
+
98
+ // Description styles
99
+ const descriptionStyles = cn("text-text-secondary", "body14");
100
+
101
+ // Label styles
102
+ const labelStyles = cn(
103
+ "text-text-primary",
104
+ "body14",
105
+ "cursor-pointer",
106
+ "select-none",
107
+ );
108
+
109
+ export interface RadioButtonGroupOption {
110
+ value: string;
111
+ label: string;
112
+ description?: string;
113
+ disabled?: boolean;
114
+ }
115
+
116
+ export interface RadioButtonGroupProps
117
+ extends Omit<
118
+ React.ComponentProps<typeof RadioGroupPrimitive.Root>,
119
+ "children"
120
+ >,
121
+ VariantProps<typeof radioButtonGroupStyles> {
122
+ title?: string;
123
+ description?: string;
124
+ options: RadioButtonGroupOption[];
125
+ }
126
+
127
+ function RadioButtonGroup({
128
+ className,
129
+ variant = "wrapped",
130
+ vertical = false,
131
+ title,
132
+ description,
133
+ options,
134
+ ...props
135
+ }: RadioButtonGroupProps) {
136
+ return (
137
+ <div
138
+ className={cn(radioButtonGroupStyles({ variant, vertical }), className)}
139
+ >
140
+ {(title || description) && (
141
+ <div className="flex flex-col gap-0.5 mb-2">
142
+ {title && <span className={titleStyles}>{title}</span>}
143
+ {description && (
144
+ <span className={descriptionStyles}>{description}</span>
145
+ )}
146
+ </div>
147
+ )}
148
+ <RadioGroupPrimitive.Root
149
+ data-slot="radio-button-group"
150
+ className={radioItemsContainerStyles({ variant, vertical })}
151
+ {...props}
152
+ >
153
+ {options.map((option) => {
154
+ const radioId = `radio-${option.value}`;
155
+ return (
156
+ <label
157
+ key={option.value}
158
+ htmlFor={radioId}
159
+ className={cn(
160
+ radioItemWrapperStyles({ variant, vertical }),
161
+ variant === "unwrapped" &&
162
+ (option.description ? "items-start" : "items-center"),
163
+ )}
164
+ >
165
+ <RadioGroupItem
166
+ id={radioId}
167
+ value={option.value}
168
+ disabled={option.disabled}
169
+ size="small"
170
+ className={variant === "wrapped" ? "mt-0.5" : ""}
171
+ />
172
+ <div className="flex flex-col gap-0.5">
173
+ <span className={labelStyles}>{option.label}</span>
174
+ {option.description && (
175
+ <span className={descriptionStyles}>
176
+ {option.description}
177
+ </span>
178
+ )}
179
+ </div>
180
+ </label>
181
+ );
182
+ })}
183
+ </RadioGroupPrimitive.Root>
184
+ </div>
185
+ );
186
+ }
187
+
188
+ export { RadioButtonGroup };
@@ -1,29 +1,85 @@
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 { RadioGroup, RadioGroupItem } from "#shadcn/components/ui/radio-group";
4
4
 
5
5
  const meta = {
6
6
  title: "Component/Radio group",
7
- } satisfies Meta;
7
+ component: RadioGroup,
8
+ parameters: {
9
+ docs: {
10
+ page: () => (
11
+ <>
12
+ <Title />
13
+ <Primary />
14
+ <Controls />
15
+ </>
16
+ ),
17
+ },
18
+ },
19
+ argTypes: {
20
+ disabled: {
21
+ control: "boolean",
22
+ },
23
+ },
24
+ args: {
25
+ disabled: false,
26
+ },
27
+ } satisfies Meta<typeof RadioGroup>;
8
28
  export default meta;
9
29
 
10
30
  type Story = StoryObj<typeof meta>;
11
31
 
32
+ export const Default = {
33
+ tags: ["!dev"],
34
+ render: (args) => (
35
+ <RadioGroup defaultValue="option-1" {...args}>
36
+ <RadioGroupItem value="option-1" id="option-1" size="regular" />
37
+ <RadioGroupItem value="option-2" id="option-2" size="regular" />
38
+ </RadioGroup>
39
+ ),
40
+ } satisfies Story;
41
+
12
42
  export const Demo = {
43
+ tags: ["!autodocs"],
13
44
  render: () => (
14
- <RadioGroup defaultValue="comfortable">
15
- <div className="flex items-center gap-3">
16
- <RadioGroupItem value="default" id="r1" />
17
- <Label htmlFor="r1">Default</Label>
18
- </div>
19
- <div className="flex items-center gap-3">
20
- <RadioGroupItem value="comfortable" id="r2" />
21
- <Label htmlFor="r2">Comfortable</Label>
45
+ <div className="flex gap-12">
46
+ {/* Regular size */}
47
+ <div className="space-y-6">
48
+ <RadioGroup defaultValue="checked">
49
+ <RadioGroupItem value="default" id="r1" size="regular" />
50
+ <RadioGroupItem value="checked" id="r2" size="regular" />
51
+ <RadioGroupItem value="disabled" id="r3" size="regular" disabled />
52
+ </RadioGroup>
53
+ <RadioGroup defaultValue="disabled-checked">
54
+ <RadioGroupItem
55
+ value="disabled-checked"
56
+ id="r4"
57
+ size="regular"
58
+ disabled
59
+ />
60
+ </RadioGroup>
22
61
  </div>
23
- <div className="flex items-center gap-3">
24
- <RadioGroupItem value="compact" id="r3" />
25
- <Label htmlFor="r3">Compact</Label>
62
+ {/* Small size */}
63
+ <div className="space-y-6">
64
+ <RadioGroup defaultValue="checked-small">
65
+ <RadioGroupItem value="default-small" id="r1-small" size="small" />
66
+ <RadioGroupItem value="checked-small" id="r2-small" size="small" />
67
+ <RadioGroupItem
68
+ value="disabled-small"
69
+ id="r3-small"
70
+ size="small"
71
+ disabled
72
+ />
73
+ </RadioGroup>
74
+ <RadioGroup defaultValue="disabled-checked-small">
75
+ <RadioGroupItem
76
+ value="disabled-checked-small"
77
+ id="r4-small"
78
+ size="small"
79
+ disabled
80
+ />
81
+ </RadioGroup>
26
82
  </div>
27
- </RadioGroup>
83
+ </div>
28
84
  ),
29
85
  } satisfies Story;
@@ -1,9 +1,77 @@
1
+ "use client";
1
2
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
2
- import { CircleIcon } from "lucide-react";
3
+ import { cva, type VariantProps } from "class-variance-authority";
3
4
  import type * as React from "react";
4
5
 
5
6
  import { cn } from "#shadcn/lib/utils";
6
7
 
8
+ // Radio group root styles
9
+ const radioGroupStyles = cn(
10
+ // Layout
11
+ "grid",
12
+ "gap-3",
13
+ );
14
+
15
+ // Radio group item base styles
16
+ const baseRadioGroupItemStyles = cn(
17
+ // Layout
18
+ "aspect-square",
19
+ "shrink-0",
20
+ "relative",
21
+ // Shape
22
+ "rounded-full",
23
+ "overflow-hidden",
24
+ // Interaction
25
+ "outline-none",
26
+ "cursor-pointer",
27
+ // Animation
28
+ "transition-all",
29
+ "duration-200",
30
+ "active:scale-90",
31
+ "active:duration-75",
32
+ // Default state
33
+ "bg-bg-primary",
34
+ "border-[1.5px]",
35
+ "border-solid",
36
+ "border-border-primary",
37
+ // Checked state
38
+ "data-[state=checked]:bg-bg-link",
39
+ "data-[state=checked]:border-bg-link",
40
+ // Disabled states
41
+ "disabled:cursor-not-allowed",
42
+ "disabled:active:scale-100",
43
+ "disabled:bg-bg-primary",
44
+ "disabled:border-border-secondary",
45
+ "disabled:data-[state=checked]:bg-border-secondary",
46
+ "disabled:data-[state=checked]:border-border-secondary",
47
+ // Focus styles
48
+ "focus-visible:ring-4",
49
+ "focus-visible:ring-ring-blue",
50
+ "focus-visible:data-[state=unchecked]:border-bg-link",
51
+ );
52
+
53
+ const radioGroupItemVariants = cva(baseRadioGroupItemStyles, {
54
+ variants: {
55
+ size: {
56
+ regular: "size-5",
57
+ small: "size-4",
58
+ },
59
+ },
60
+ defaultVariants: {
61
+ size: "regular",
62
+ },
63
+ });
64
+
65
+ // Radio group indicator styles
66
+ const radioGroupIndicatorStyles = cn(
67
+ // Layout
68
+ "absolute",
69
+ "inset-0",
70
+ "flex",
71
+ "items-center",
72
+ "justify-center",
73
+ );
74
+
7
75
  function RadioGroup({
8
76
  className,
9
77
  ...props
@@ -11,7 +79,7 @@ function RadioGroup({
11
79
  return (
12
80
  <RadioGroupPrimitive.Root
13
81
  data-slot="radio-group"
14
- className={cn("grid gap-3", className)}
82
+ className={cn(radioGroupStyles, className)}
15
83
  {...props}
16
84
  />
17
85
  );
@@ -19,22 +87,30 @@ function RadioGroup({
19
87
 
20
88
  function RadioGroupItem({
21
89
  className,
90
+ size,
22
91
  ...props
23
- }: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {
92
+ }: React.ComponentProps<typeof RadioGroupPrimitive.Item> &
93
+ VariantProps<typeof radioGroupItemVariants>) {
24
94
  return (
25
95
  <RadioGroupPrimitive.Item
26
96
  data-slot="radio-group-item"
27
- className={cn(
28
- "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
29
- className,
30
- )}
97
+ className={cn(radioGroupItemVariants({ size }), className)}
31
98
  {...props}
32
99
  >
33
100
  <RadioGroupPrimitive.Indicator
34
101
  data-slot="radio-group-indicator"
35
- className="relative flex items-center justify-center"
102
+ className={radioGroupIndicatorStyles}
36
103
  >
37
- <CircleIcon className="fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" />
104
+ <div
105
+ className={cn(
106
+ // Shape
107
+ "rounded-full",
108
+ // Colors
109
+ "bg-white",
110
+ // Size based on variant
111
+ size === "small" ? "size-1.5" : "size-2",
112
+ )}
113
+ />
38
114
  </RadioGroupPrimitive.Indicator>
39
115
  </RadioGroupPrimitive.Item>
40
116
  );
@@ -15,7 +15,7 @@ type Story = StoryObj<typeof meta>;
15
15
  export const Demo = {
16
16
  render: () => (
17
17
  <ResizablePanelGroup
18
- direction="horizontal"
18
+ orientation="horizontal"
19
19
  className="max-w-md rounded-lg border md:min-w-[450px]"
20
20
  >
21
21
  <ResizablePanel defaultSize={50}>
@@ -25,7 +25,7 @@ export const Demo = {
25
25
  </ResizablePanel>
26
26
  <ResizableHandle />
27
27
  <ResizablePanel defaultSize={50}>
28
- <ResizablePanelGroup direction="vertical">
28
+ <ResizablePanelGroup orientation="vertical">
29
29
  <ResizablePanel defaultSize={25}>
30
30
  <div className="flex h-full items-center justify-center p-6">
31
31
  <span className="font-semibold">Two</span>
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { GripVerticalIcon } from "lucide-react";
2
3
  import type * as React from "react";
3
4
  import * as ResizablePrimitive from "react-resizable-panels";
@@ -37,7 +38,7 @@ function ResizableHandle({
37
38
  <ResizablePrimitive.PanelResizeHandle
38
39
  data-slot="resizable-handle"
39
40
  className={cn(
40
- "bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
41
+ "bg-border border-x border-border hover:border-bg-link hover:bg-bg-link focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:border-x-0 data-[panel-group-direction=vertical]:border-y data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:translate-x-0 data-[panel-group-direction=vertical]:after:-translate-y-1/2 [&[data-panel-group-direction=vertical]>div]:rotate-90",
41
42
  className,
42
43
  )}
43
44
  {...props}