@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,27 +1,144 @@
1
- import type * as React from "react";
1
+ import { ArrowDownIcon, ArrowUpDownIcon, ArrowUpIcon } from "lucide-react";
2
+ import * as React from "react";
2
3
 
3
4
  import { cn } from "#shadcn/lib/utils";
4
5
 
5
- function Table({ className, ...props }: React.ComponentProps<"table">) {
6
+ // Table container
7
+ const tableContainerStyles = cn(
8
+ "relative",
9
+ "h-full",
10
+ "w-full",
11
+ "overflow-auto",
12
+ );
13
+
14
+ // Table base
15
+ const tableStyles = cn(
16
+ "w-full",
17
+ "caption-bottom",
18
+ "text-sm",
19
+ "border-collapse",
20
+ "border-spacing-0",
21
+ );
22
+
23
+ // Table header
24
+ const tableHeaderStyles = cn(
25
+ "bg-bg-secondary",
26
+ "[&_tr]:border-b",
27
+ "[&_tr]:border-border-secondary",
28
+ "[&_tr]:h-8",
29
+ );
30
+
31
+ // Table header sticky variant
32
+ const tableHeaderStickyStyles = cn("sticky", "top-0", "z-10");
33
+
34
+ // Table body
35
+ const tableBodyStyles = cn(
36
+ "[&_tr:last-child]:border-0",
37
+ "[&_tr]:hover:bg-bg-hover",
38
+ );
39
+
40
+ // Table footer
41
+ const tableFooterStyles = cn(
42
+ "bg-bg-secondary",
43
+ "border-t",
44
+ "border-border-secondary",
45
+ "font-medium",
46
+ "[&>tr]:last:border-b-0",
47
+ );
48
+
49
+ // Table row
50
+ const tableRowStyles = cn("h-7", "transition-colors", "duration-150");
51
+
52
+ // Table head cell
53
+ const tableHeadStyles = cn(
54
+ "group/head",
55
+ "text-text-secondary",
56
+ "h-8",
57
+ "px-4",
58
+ "py-2",
59
+ "text-left",
60
+ "align-middle",
61
+ "typo-body-xs",
62
+ "whitespace-nowrap",
63
+ "transition-colors",
64
+ "duration-150",
65
+ "hover:bg-bg-tertiary",
66
+ "[&:has([role=checkbox])]:pr-0",
67
+ );
68
+
69
+ // Table head sort icon
70
+ const tableSortIconStyles = cn(
71
+ "size-3.5",
72
+ "shrink-0",
73
+ "transition-opacity",
74
+ "duration-150",
75
+ );
76
+
77
+ // Table cell
78
+ const tableCellStyles = cn(
79
+ "px-4",
80
+ "py-1",
81
+ "align-middle",
82
+ "whitespace-nowrap",
83
+ "text-sm",
84
+ "text-grey-700",
85
+ "[&:has([role=checkbox])]:pr-0",
86
+ );
87
+
88
+ // Table cell link variant
89
+ const tableCellLinkStyles = cn(
90
+ "text-text-link",
91
+ "cursor-pointer",
92
+ "hover:underline",
93
+ );
94
+
95
+ // Table caption
96
+ const tableCaptionStyles = cn(
97
+ "text-text-secondary",
98
+ "mt-4",
99
+ "text-xs",
100
+ "text-left",
101
+ );
102
+
103
+ // Context for sticky header
104
+ const TableStickyContext = React.createContext(false);
105
+
106
+ type TableProps = React.ComponentProps<"table"> & {
107
+ zebra?: boolean | undefined;
108
+ stickyHeader?: boolean | undefined;
109
+ };
110
+
111
+ function Table({
112
+ className,
113
+ zebra = false,
114
+ stickyHeader = false,
115
+ ...props
116
+ }: TableProps) {
6
117
  return (
7
- <div
8
- data-slot="table-container"
9
- className="relative w-full overflow-x-auto"
10
- >
11
- <table
12
- data-slot="table"
13
- className={cn("w-full caption-bottom text-sm", className)}
14
- {...props}
15
- />
16
- </div>
118
+ <TableStickyContext.Provider value={stickyHeader}>
119
+ <div data-slot="table-container" className={tableContainerStyles}>
120
+ <table
121
+ data-slot="table"
122
+ data-zebra={zebra}
123
+ className={cn(tableStyles, className)}
124
+ {...props}
125
+ />
126
+ </div>
127
+ </TableStickyContext.Provider>
17
128
  );
18
129
  }
19
130
 
20
131
  function TableHeader({ className, ...props }: React.ComponentProps<"thead">) {
132
+ const stickyHeader = React.useContext(TableStickyContext);
133
+
21
134
  return (
22
135
  <thead
23
136
  data-slot="table-header"
24
- className={cn("[&_tr]:border-b", className)}
137
+ className={cn(
138
+ tableHeaderStyles,
139
+ stickyHeader && tableHeaderStickyStyles,
140
+ className,
141
+ )}
25
142
  {...props}
26
143
  />
27
144
  );
@@ -31,7 +148,7 @@ function TableBody({ className, ...props }: React.ComponentProps<"tbody">) {
31
148
  return (
32
149
  <tbody
33
150
  data-slot="table-body"
34
- className={cn("[&_tr:last-child]:border-0", className)}
151
+ className={cn(tableBodyStyles, className)}
35
152
  {...props}
36
153
  />
37
154
  );
@@ -41,21 +158,36 @@ function TableFooter({ className, ...props }: React.ComponentProps<"tfoot">) {
41
158
  return (
42
159
  <tfoot
43
160
  data-slot="table-footer"
44
- className={cn(
45
- "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",
46
- className,
47
- )}
161
+ className={cn(tableFooterStyles, className)}
48
162
  {...props}
49
163
  />
50
164
  );
51
165
  }
52
166
 
53
- function TableRow({ className, ...props }: React.ComponentProps<"tr">) {
167
+ type TableRowProps = React.ComponentProps<"tr"> & {
168
+ zebra?: boolean | undefined;
169
+ index?: number | undefined;
170
+ selected?: boolean | undefined;
171
+ };
172
+
173
+ function TableRow({
174
+ className,
175
+ zebra = false,
176
+ index = 0,
177
+ selected = false,
178
+ ...props
179
+ }: TableRowProps) {
180
+ const isOdd = index % 2 === 1;
181
+
54
182
  return (
55
183
  <tr
56
184
  data-slot="table-row"
57
185
  className={cn(
58
- "hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
186
+ tableRowStyles,
187
+ !zebra && "border-b",
188
+ !zebra && "border-border-secondary",
189
+ zebra && isOdd && "bg-bg-secondary",
190
+ selected && "bg-bg-hover",
59
191
  className,
60
192
  )}
61
193
  {...props}
@@ -63,25 +195,66 @@ function TableRow({ className, ...props }: React.ComponentProps<"tr">) {
63
195
  );
64
196
  }
65
197
 
66
- function TableHead({ className, ...props }: React.ComponentProps<"th">) {
198
+ type TableHeadProps = React.ComponentProps<"th"> & {
199
+ sortable?: boolean | undefined;
200
+ sorted?: "asc" | "desc" | false | undefined;
201
+ };
202
+
203
+ function TableHead({
204
+ className,
205
+ sortable = false,
206
+ sorted = false,
207
+ children,
208
+ ...props
209
+ }: TableHeadProps) {
210
+ const SortIcon =
211
+ sorted === "asc"
212
+ ? ArrowUpIcon
213
+ : sorted === "desc"
214
+ ? ArrowDownIcon
215
+ : ArrowUpDownIcon;
216
+
67
217
  return (
68
218
  <th
69
219
  data-slot="table-head"
70
220
  className={cn(
71
- "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
221
+ tableHeadStyles,
222
+ sortable && "cursor-pointer select-none",
72
223
  className,
73
224
  )}
74
225
  {...props}
75
- />
226
+ >
227
+ {sortable ? (
228
+ <div className="flex items-center gap-1">
229
+ {children}
230
+ <SortIcon
231
+ className={cn(
232
+ tableSortIconStyles,
233
+ sorted ? "opacity-100" : "opacity-0 group-hover/head:opacity-30",
234
+ )}
235
+ />
236
+ </div>
237
+ ) : (
238
+ children
239
+ )}
240
+ </th>
76
241
  );
77
242
  }
78
243
 
79
- function TableCell({ className, ...props }: React.ComponentProps<"td">) {
244
+ type CellType = "text" | "link";
245
+
246
+ type TableCellProps = React.ComponentProps<"td"> & {
247
+ type?: CellType | undefined;
248
+ };
249
+
250
+ function TableCell({ className, type = "text", ...props }: TableCellProps) {
80
251
  return (
81
252
  <td
82
253
  data-slot="table-cell"
254
+ data-type={type}
83
255
  className={cn(
84
- "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
256
+ tableCellStyles,
257
+ type === "link" && tableCellLinkStyles,
85
258
  className,
86
259
  )}
87
260
  {...props}
@@ -96,7 +269,7 @@ function TableCaption({
96
269
  return (
97
270
  <caption
98
271
  data-slot="table-caption"
99
- className={cn("text-muted-foreground mt-4 text-sm", className)}
272
+ className={cn(tableCaptionStyles, className)}
100
273
  {...props}
101
274
  />
102
275
  );
@@ -111,4 +284,9 @@ export {
111
284
  TableRow,
112
285
  TableCell,
113
286
  TableCaption,
287
+ type TableProps,
288
+ type TableRowProps,
289
+ type TableHeadProps,
290
+ type TableCellProps,
291
+ type CellType,
114
292
  };
@@ -1,149 +1,261 @@
1
+ import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
1
2
  import type { Meta, StoryObj } from "@storybook/react-vite";
2
- import { action } from "storybook/internal/actions";
3
- import { Button } from "#shadcn/components/ui/button";
4
- import {
5
- Card,
6
- CardContent,
7
- CardDescription,
8
- CardFooter,
9
- CardHeader,
10
- CardTitle,
11
- } from "#shadcn/components/ui/card";
12
- import { Input } from "#shadcn/components/ui/input";
13
- import { Label } from "#shadcn/components/ui/label";
3
+ import { action } from "storybook/actions";
14
4
  import {
15
5
  Tabs,
16
6
  TabsAddButton,
17
7
  TabsContent,
18
8
  TabsList,
9
+ TabsListDropdown,
19
10
  TabsTrigger,
20
11
  } from "#shadcn/components/ui/tabs";
21
12
 
13
+ interface TabsWrapperProps {
14
+ variant?: "default" | "browser" | "secondary" | "tertiary";
15
+ }
16
+
17
+ function TabsWrapper({ variant = "default" }: TabsWrapperProps) {
18
+ if (variant === "browser") {
19
+ return (
20
+ <Tabs defaultValue="first" variant="browser">
21
+ <TabsList>
22
+ <TabsTrigger
23
+ value="first"
24
+ onClick={() => action("onClick")()}
25
+ onClose={(v) => action("onClose")(v)}
26
+ >
27
+ <span className="flex items-center gap-1">
28
+ <span className="text-utility-green">GET</span>
29
+ <span>/fhir/Patient</span>
30
+ </span>
31
+ </TabsTrigger>
32
+ <TabsTrigger
33
+ value="second"
34
+ onClick={() => action("onClick")()}
35
+ onClose={(v) => action("onClose")(v)}
36
+ >
37
+ <span className="flex items-center gap-1">
38
+ <span className="text-utility-yellow">POST</span>
39
+ <span>/fhir</span>
40
+ </span>
41
+ </TabsTrigger>
42
+ </TabsList>
43
+ <TabsAddButton onClick={() => action("onAdd")()} />
44
+ <TabsContent value="first">
45
+ <div className="p-4">GET /fhir/Patient content</div>
46
+ </TabsContent>
47
+ <TabsContent value="second">
48
+ <div className="p-4">POST /fhir content</div>
49
+ </TabsContent>
50
+ </Tabs>
51
+ );
52
+ }
53
+
54
+ if (variant === "secondary") {
55
+ return (
56
+ <Tabs defaultValue="tab1" variant="secondary">
57
+ <TabsList>
58
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
59
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
60
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
61
+ </TabsList>
62
+ <TabsContent value="tab1">
63
+ <div className="p-4">Tab 1 content</div>
64
+ </TabsContent>
65
+ <TabsContent value="tab2">
66
+ <div className="p-4">Tab 2 content</div>
67
+ </TabsContent>
68
+ <TabsContent value="tab3">
69
+ <div className="p-4">Tab 3 content</div>
70
+ </TabsContent>
71
+ </Tabs>
72
+ );
73
+ }
74
+
75
+ if (variant === "tertiary") {
76
+ return (
77
+ <Tabs defaultValue="tab1" variant="tertiary">
78
+ <TabsList>
79
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
80
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
81
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
82
+ </TabsList>
83
+ <TabsContent value="tab1">
84
+ <div className="p-4">Tab 1 content</div>
85
+ </TabsContent>
86
+ <TabsContent value="tab2">
87
+ <div className="p-4">Tab 2 content</div>
88
+ </TabsContent>
89
+ <TabsContent value="tab3">
90
+ <div className="p-4">Tab 3 content</div>
91
+ </TabsContent>
92
+ </Tabs>
93
+ );
94
+ }
95
+
96
+ return (
97
+ <Tabs defaultValue="tab1">
98
+ <TabsList>
99
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
100
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
101
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
102
+ </TabsList>
103
+ <TabsContent value="tab1">
104
+ <div className="p-4">Tab 1 content</div>
105
+ </TabsContent>
106
+ <TabsContent value="tab2">
107
+ <div className="p-4">Tab 2 content</div>
108
+ </TabsContent>
109
+ <TabsContent value="tab3">
110
+ <div className="p-4">Tab 3 content</div>
111
+ </TabsContent>
112
+ </Tabs>
113
+ );
114
+ }
115
+
22
116
  const meta = {
23
117
  title: "Component/Tabs",
118
+ component: TabsWrapper,
119
+ parameters: {
120
+ docs: {
121
+ page: () => (
122
+ <>
123
+ <Title />
124
+ <Primary />
125
+ <Controls />
126
+ </>
127
+ ),
128
+ },
129
+ },
24
130
  argTypes: {
25
131
  variant: {
26
- options: ["button", "dashed"],
27
- control: { type: "select" },
132
+ control: "select",
133
+ options: ["default", "browser", "secondary", "tertiary"],
28
134
  },
29
135
  },
30
- } satisfies Meta;
136
+ args: {
137
+ variant: "default",
138
+ },
139
+ } satisfies Meta<typeof TabsWrapper>;
31
140
  export default meta;
32
141
 
33
142
  type Story = StoryObj<typeof meta>;
34
143
 
35
- export const Demo = {
36
- render: (props) => (
37
- <div className="flex w-full max-w-sm flex-col gap-6">
38
- <Tabs defaultValue="account" {...props}>
39
- <TabsList>
40
- <TabsTrigger value="account">Account</TabsTrigger>
41
- <TabsTrigger value="password">Password</TabsTrigger>
42
- </TabsList>
43
- <TabsContent value="account">
44
- <Card>
45
- <CardHeader>
46
- <CardTitle>Account</CardTitle>
47
- <CardDescription>
48
- Make changes to your account here. Click save when you&apos;re
49
- done.
50
- </CardDescription>
51
- </CardHeader>
52
- <CardContent className="grid gap-6">
53
- <div className="grid gap-3">
54
- <Label htmlFor="tabs-demo-name">Name</Label>
55
- <Input id="tabs-demo-name" defaultValue="Pedro Duarte" />
56
- </div>
57
- <div className="grid gap-3">
58
- <Label htmlFor="tabs-demo-username">Username</Label>
59
- <Input id="tabs-demo-username" defaultValue="@peduarte" />
60
- </div>
61
- </CardContent>
62
- <CardFooter>
63
- <Button>Save changes</Button>
64
- </CardFooter>
65
- </Card>
66
- </TabsContent>
67
- <TabsContent value="password">
68
- <Card>
69
- <CardHeader>
70
- <CardTitle>Password</CardTitle>
71
- <CardDescription>
72
- Change your password here. After saving, you&apos;ll be logged
73
- out.
74
- </CardDescription>
75
- </CardHeader>
76
- <CardContent className="grid gap-6">
77
- <div className="grid gap-3">
78
- <Label htmlFor="tabs-demo-current">Current password</Label>
79
- <Input id="tabs-demo-current" type="password" />
80
- </div>
81
- <div className="grid gap-3">
82
- <Label htmlFor="tabs-demo-new">New password</Label>
83
- <Input id="tabs-demo-new" type="password" />
84
- </div>
85
- </CardContent>
86
- <CardFooter>
87
- <Button>Save password</Button>
88
- </CardFooter>
89
- </Card>
90
- </TabsContent>
91
- </Tabs>
92
- </div>
93
- ),
144
+ export const Default = {
145
+ tags: ["!dev"],
146
+ render: ({ variant = "default" }) => <TabsWrapper variant={variant} />,
94
147
  } satisfies Story;
95
148
 
96
- function BrowserTabOnClose(value: string) {
97
- action("onClose")(value);
98
- }
149
+ export const Demo = {
150
+ tags: ["!autodocs"],
151
+ render: () => (
152
+ <div className="space-y-8">
153
+ {/* Default variant */}
154
+ <div>
155
+ <h3 className="typo-label mb-4">Default</h3>
156
+ <Tabs defaultValue="tab1">
157
+ <TabsList>
158
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
159
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
160
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
161
+ </TabsList>
162
+ </Tabs>
163
+ </div>
99
164
 
100
- function BrowserTabOnClick() {
101
- action("onClick")();
102
- }
165
+ {/* Secondary variant */}
166
+ <div>
167
+ <h3 className="typo-label mb-4">Secondary</h3>
168
+ <Tabs defaultValue="tab1" variant="secondary">
169
+ <TabsList>
170
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
171
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
172
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
173
+ </TabsList>
174
+ </Tabs>
175
+ </div>
103
176
 
104
- function BrowserTabOnAdd() {
105
- action("onAdd")();
106
- }
177
+ {/* Tertiary variant */}
178
+ <div>
179
+ <h3 className="typo-label mb-4">Tertiary</h3>
180
+ <Tabs defaultValue="tab1" variant="tertiary">
181
+ <TabsList>
182
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
183
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
184
+ <TabsTrigger value="tab3">Tab 3</TabsTrigger>
185
+ </TabsList>
186
+ </Tabs>
187
+ </div>
107
188
 
108
- export const Browser = {
109
- parameters: {
110
- layout: "fullscreen",
111
- },
112
- render: () => (
113
- <Tabs defaultValue="first" variant="browser">
114
- <TabsList>
115
- <TabsTrigger
116
- value="first"
117
- onClick={BrowserTabOnClick}
118
- onClose={BrowserTabOnClose}
119
- >
120
- <span className="flex items-center gap-1">
121
- <span className="text-utility-green">GET</span>
122
- <span>/fhir/Patient</span>
123
- </span>
124
- </TabsTrigger>
125
- <TabsTrigger
126
- value="second"
127
- onClick={BrowserTabOnClick}
128
- onClose={BrowserTabOnClose}
129
- >
130
- <span className="flex items-center gap-1">
131
- <span className="text-utility-yellow">POST</span>
132
- <span>/fhir</span>
133
- </span>
134
- </TabsTrigger>
135
- <TabsTrigger
136
- value="third"
137
- onClick={BrowserTabOnClick}
138
- onClose={BrowserTabOnClose}
139
- >
140
- <span className="flex items-center gap-1">
141
- <span className="text-utility-yellow">POST</span>
142
- <span>/$graphql</span>
143
- </span>
144
- </TabsTrigger>
145
- </TabsList>
146
- <TabsAddButton onClick={BrowserTabOnAdd} />
147
- </Tabs>
189
+ {/* Browser variant */}
190
+ <div>
191
+ <h3 className="typo-label mb-4">Browser</h3>
192
+ <Tabs defaultValue="first" variant="browser">
193
+ <TabsList>
194
+ <TabsTrigger
195
+ value="first"
196
+ onClick={() => action("onClick")()}
197
+ onClose={(v) => action("onClose")(v)}
198
+ >
199
+ <span className="flex items-center gap-1">
200
+ <span className="text-utility-green">GET</span>
201
+ <span>/fhir/Patient</span>
202
+ </span>
203
+ </TabsTrigger>
204
+ <TabsTrigger
205
+ value="second"
206
+ onClick={() => action("onClick")()}
207
+ onClose={(v) => action("onClose")(v)}
208
+ >
209
+ <span className="flex items-center gap-1">
210
+ <span className="text-utility-yellow">POST</span>
211
+ <span>/fhir</span>
212
+ </span>
213
+ </TabsTrigger>
214
+ <TabsTrigger
215
+ value="third"
216
+ onClick={() => action("onClick")()}
217
+ onClose={(v) => action("onClose")(v)}
218
+ >
219
+ <span className="flex items-center gap-1">
220
+ <span className="text-utility-yellow">POST</span>
221
+ <span>/$graphql</span>
222
+ </span>
223
+ </TabsTrigger>
224
+ </TabsList>
225
+ <TabsAddButton onClick={() => action("onAdd")()} />
226
+ <TabsListDropdown
227
+ tabs={[
228
+ {
229
+ id: "first",
230
+ content: (
231
+ <span className="flex items-center gap-1">
232
+ <span className="text-utility-green">GET</span>
233
+ <span>/fhir/Patient</span>
234
+ </span>
235
+ ),
236
+ },
237
+ {
238
+ id: "second",
239
+ content: (
240
+ <span className="flex items-center gap-1">
241
+ <span className="text-utility-yellow">POST</span>
242
+ <span>/fhir</span>
243
+ </span>
244
+ ),
245
+ },
246
+ {
247
+ id: "third",
248
+ content: (
249
+ <span className="flex items-center gap-1">
250
+ <span className="text-utility-yellow">POST</span>
251
+ <span>/$graphql</span>
252
+ </span>
253
+ ),
254
+ },
255
+ ]}
256
+ />
257
+ </Tabs>
258
+ </div>
259
+ </div>
148
260
  ),
149
261
  } satisfies Story;