@health-samurai/react-components 0.0.0-alpha.1 → 0.0.0-alpha.3

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 (251) hide show
  1. package/dist/bundle.css +100 -7
  2. package/dist/src/components/code-editor/index.js +53 -29
  3. package/dist/src/components/code-editor/index.js.map +1 -1
  4. package/dist/src/components/code-editor.stories.js +22 -7
  5. package/dist/src/components/code-editor.stories.js.map +1 -1
  6. package/dist/src/components/copy-icon.js +11 -4
  7. package/dist/src/components/copy-icon.js.map +1 -1
  8. package/dist/src/components/request-line-editor.js +56 -14
  9. package/dist/src/components/request-line-editor.js.map +1 -1
  10. package/dist/src/components/request-line-editor.stories.js +71 -22
  11. package/dist/src/components/request-line-editor.stories.js.map +1 -1
  12. package/dist/src/global.d.js +2 -0
  13. package/dist/src/global.d.js.map +1 -0
  14. package/dist/src/index.css +6 -0
  15. package/dist/src/index.d.ts +1 -0
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +52 -50
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/index.stories.js +8 -5
  20. package/dist/src/index.stories.js.map +1 -1
  21. package/dist/src/shadcn/components/ui/accordion.js +34 -5
  22. package/dist/src/shadcn/components/ui/accordion.js.map +1 -1
  23. package/dist/src/shadcn/components/ui/accordion.stories.js +68 -3
  24. package/dist/src/shadcn/components/ui/accordion.stories.js.map +1 -1
  25. package/dist/src/shadcn/components/ui/alert-dialog.js +61 -14
  26. package/dist/src/shadcn/components/ui/alert-dialog.js.map +1 -1
  27. package/dist/src/shadcn/components/ui/alert-dialog.stories.js +39 -4
  28. package/dist/src/shadcn/components/ui/alert-dialog.stories.js.map +1 -1
  29. package/dist/src/shadcn/components/ui/alert.js +24 -8
  30. package/dist/src/shadcn/components/ui/alert.js.map +1 -1
  31. package/dist/src/shadcn/components/ui/alert.stories.js +57 -3
  32. package/dist/src/shadcn/components/ui/alert.stories.js.map +1 -1
  33. package/dist/src/shadcn/components/ui/aspect-ratio.d.ts.map +1 -1
  34. package/dist/src/shadcn/components/ui/aspect-ratio.js +6 -1
  35. package/dist/src/shadcn/components/ui/aspect-ratio.js.map +1 -1
  36. package/dist/src/shadcn/components/ui/aspect-ratio.stories.js +12 -3
  37. package/dist/src/shadcn/components/ui/aspect-ratio.stories.js.map +1 -1
  38. package/dist/src/shadcn/components/ui/avatar.js +17 -4
  39. package/dist/src/shadcn/components/ui/avatar.js.map +1 -1
  40. package/dist/src/shadcn/components/ui/avatar.stories.js +69 -3
  41. package/dist/src/shadcn/components/ui/avatar.stories.js.map +1 -1
  42. package/dist/src/shadcn/components/ui/badge.js +13 -6
  43. package/dist/src/shadcn/components/ui/badge.js.map +1 -1
  44. package/dist/src/shadcn/components/ui/badge.stories.js +55 -3
  45. package/dist/src/shadcn/components/ui/badge.stories.js.map +1 -1
  46. package/dist/src/shadcn/components/ui/breadcrumb.js +56 -11
  47. package/dist/src/shadcn/components/ui/breadcrumb.js.map +1 -1
  48. package/dist/src/shadcn/components/ui/breadcrumb.stories.js +69 -4
  49. package/dist/src/shadcn/components/ui/breadcrumb.stories.js.map +1 -1
  50. package/dist/src/shadcn/components/ui/button.js +23 -13
  51. package/dist/src/shadcn/components/ui/button.js.map +1 -1
  52. package/dist/src/shadcn/components/ui/button.stories.js +190 -10
  53. package/dist/src/shadcn/components/ui/button.stories.js.map +1 -1
  54. package/dist/src/shadcn/components/ui/calendar.d.ts.map +1 -1
  55. package/dist/src/shadcn/components/ui/calendar.js +76 -33
  56. package/dist/src/shadcn/components/ui/calendar.js.map +1 -1
  57. package/dist/src/shadcn/components/ui/calendar.stories.js +12 -5
  58. package/dist/src/shadcn/components/ui/calendar.stories.js.map +1 -1
  59. package/dist/src/shadcn/components/ui/card.js +38 -9
  60. package/dist/src/shadcn/components/ui/card.js.map +1 -1
  61. package/dist/src/shadcn/components/ui/card.stories.js +91 -6
  62. package/dist/src/shadcn/components/ui/card.stories.js.map +1 -1
  63. package/dist/src/shadcn/components/ui/carousel.js +99 -39
  64. package/dist/src/shadcn/components/ui/carousel.js.map +1 -1
  65. package/dist/src/shadcn/components/ui/carousel.stories.js +30 -6
  66. package/dist/src/shadcn/components/ui/carousel.stories.js.map +1 -1
  67. package/dist/src/shadcn/components/ui/chart.d.ts.map +1 -1
  68. package/dist/src/shadcn/components/ui/chart.js +119 -55
  69. package/dist/src/shadcn/components/ui/chart.js.map +1 -1
  70. package/dist/src/shadcn/components/ui/chart.stories.js +72 -12
  71. package/dist/src/shadcn/components/ui/chart.stories.js.map +1 -1
  72. package/dist/src/shadcn/components/ui/checkbox.d.ts.map +1 -1
  73. package/dist/src/shadcn/components/ui/checkbox.js +15 -2
  74. package/dist/src/shadcn/components/ui/checkbox.js.map +1 -1
  75. package/dist/src/shadcn/components/ui/checkbox.stories.js +79 -4
  76. package/dist/src/shadcn/components/ui/checkbox.stories.js.map +1 -1
  77. package/dist/src/shadcn/components/ui/collapsible.js +13 -3
  78. package/dist/src/shadcn/components/ui/collapsible.js.map +1 -1
  79. package/dist/src/shadcn/components/ui/collapsible.stories.js +54 -6
  80. package/dist/src/shadcn/components/ui/collapsible.stories.js.map +1 -1
  81. package/dist/src/shadcn/components/ui/command.js +77 -12
  82. package/dist/src/shadcn/components/ui/command.js.map +1 -1
  83. package/dist/src/shadcn/components/ui/command.stories.js +88 -4
  84. package/dist/src/shadcn/components/ui/command.stories.js.map +1 -1
  85. package/dist/src/shadcn/components/ui/context-menu.d.ts.map +1 -1
  86. package/dist/src/shadcn/components/ui/context-menu.js +107 -17
  87. package/dist/src/shadcn/components/ui/context-menu.js.map +1 -1
  88. package/dist/src/shadcn/components/ui/context-menu.stories.js +101 -3
  89. package/dist/src/shadcn/components/ui/context-menu.stories.js.map +1 -1
  90. package/dist/src/shadcn/components/ui/dialog.js +69 -12
  91. package/dist/src/shadcn/components/ui/dialog.js.map +1 -1
  92. package/dist/src/shadcn/components/ui/dialog.stories.js +82 -6
  93. package/dist/src/shadcn/components/ui/dialog.stories.js.map +1 -1
  94. package/dist/src/shadcn/components/ui/drawer.d.ts.map +1 -1
  95. package/dist/src/shadcn/components/ui/drawer.js +62 -12
  96. package/dist/src/shadcn/components/ui/drawer.js.map +1 -1
  97. package/dist/src/shadcn/components/ui/drawer.stories.js +154 -21
  98. package/dist/src/shadcn/components/ui/drawer.stories.js.map +1 -1
  99. package/dist/src/shadcn/components/ui/dropdown-menu.js +107 -17
  100. package/dist/src/shadcn/components/ui/dropdown-menu.js.map +1 -1
  101. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js +119 -4
  102. package/dist/src/shadcn/components/ui/dropdown-menu.stories.js.map +1 -1
  103. package/dist/src/shadcn/components/ui/form.d.ts.map +1 -1
  104. package/dist/src/shadcn/components/ui/form.js +59 -18
  105. package/dist/src/shadcn/components/ui/form.js.map +1 -1
  106. package/dist/src/shadcn/components/ui/form.stories.js +45 -11
  107. package/dist/src/shadcn/components/ui/form.stories.js.map +1 -1
  108. package/dist/src/shadcn/components/ui/hover-card.d.ts.map +1 -1
  109. package/dist/src/shadcn/components/ui/hover-card.js +21 -4
  110. package/dist/src/shadcn/components/ui/hover-card.js.map +1 -1
  111. package/dist/src/shadcn/components/ui/hover-card.stories.js +51 -5
  112. package/dist/src/shadcn/components/ui/hover-card.stories.js.map +1 -1
  113. package/dist/src/shadcn/components/ui/input-otp.js +35 -7
  114. package/dist/src/shadcn/components/ui/input-otp.js.map +1 -1
  115. package/dist/src/shadcn/components/ui/input-otp.stories.js +35 -3
  116. package/dist/src/shadcn/components/ui/input-otp.stories.js.map +1 -1
  117. package/dist/src/shadcn/components/ui/input.js +59 -40
  118. package/dist/src/shadcn/components/ui/input.js.map +1 -1
  119. package/dist/src/shadcn/components/ui/input.stories.js +391 -23
  120. package/dist/src/shadcn/components/ui/input.stories.js.map +1 -1
  121. package/dist/src/shadcn/components/ui/label.d.ts.map +1 -1
  122. package/dist/src/shadcn/components/ui/label.js +8 -2
  123. package/dist/src/shadcn/components/ui/label.js.map +1 -1
  124. package/dist/src/shadcn/components/ui/label.stories.js +18 -4
  125. package/dist/src/shadcn/components/ui/label.stories.js.map +1 -1
  126. package/dist/src/shadcn/components/ui/menubar.js +116 -19
  127. package/dist/src/shadcn/components/ui/menubar.js.map +1 -1
  128. package/dist/src/shadcn/components/ui/menubar.stories.js +216 -3
  129. package/dist/src/shadcn/components/ui/menubar.stories.js.map +1 -1
  130. package/dist/src/shadcn/components/ui/navigation-menu.js +62 -10
  131. package/dist/src/shadcn/components/ui/navigation-menu.js.map +1 -1
  132. package/dist/src/shadcn/components/ui/navigation-menu.stories.js +263 -11
  133. package/dist/src/shadcn/components/ui/navigation-menu.stories.js.map +1 -1
  134. package/dist/src/shadcn/components/ui/pagination.js +73 -16
  135. package/dist/src/shadcn/components/ui/pagination.js.map +1 -1
  136. package/dist/src/shadcn/components/ui/pagination.stories.js +41 -3
  137. package/dist/src/shadcn/components/ui/pagination.stories.js.map +1 -1
  138. package/dist/src/shadcn/components/ui/popover.d.ts.map +1 -1
  139. package/dist/src/shadcn/components/ui/popover.js +24 -5
  140. package/dist/src/shadcn/components/ui/popover.js.map +1 -1
  141. package/dist/src/shadcn/components/ui/popover.stories.js +99 -6
  142. package/dist/src/shadcn/components/ui/popover.stories.js.map +1 -1
  143. package/dist/src/shadcn/components/ui/progress.js +14 -2
  144. package/dist/src/shadcn/components/ui/progress.js.map +1 -1
  145. package/dist/src/shadcn/components/ui/progress.stories.js +12 -8
  146. package/dist/src/shadcn/components/ui/progress.stories.js.map +1 -1
  147. package/dist/src/shadcn/components/ui/radio-group.d.ts.map +1 -1
  148. package/dist/src/shadcn/components/ui/radio-group.js +20 -3
  149. package/dist/src/shadcn/components/ui/radio-group.js.map +1 -1
  150. package/dist/src/shadcn/components/ui/radio-group.stories.js +48 -4
  151. package/dist/src/shadcn/components/ui/radio-group.stories.js.map +1 -1
  152. package/dist/src/shadcn/components/ui/resizable.js +22 -4
  153. package/dist/src/shadcn/components/ui/resizable.js.map +1 -1
  154. package/dist/src/shadcn/components/ui/resizable.stories.js +49 -3
  155. package/dist/src/shadcn/components/ui/resizable.stories.js.map +1 -1
  156. package/dist/src/shadcn/components/ui/scroll-area.d.ts.map +1 -1
  157. package/dist/src/shadcn/components/ui/scroll-area.js +27 -5
  158. package/dist/src/shadcn/components/ui/scroll-area.js.map +1 -1
  159. package/dist/src/shadcn/components/ui/scroll-area.stories.js +30 -5
  160. package/dist/src/shadcn/components/ui/scroll-area.stories.js.map +1 -1
  161. package/dist/src/shadcn/components/ui/select.js +98 -19
  162. package/dist/src/shadcn/components/ui/select.js.map +1 -1
  163. package/dist/src/shadcn/components/ui/select.stories.js +84 -5
  164. package/dist/src/shadcn/components/ui/select.stories.js.map +1 -1
  165. package/dist/src/shadcn/components/ui/separator.d.ts.map +1 -1
  166. package/dist/src/shadcn/components/ui/separator.js +10 -2
  167. package/dist/src/shadcn/components/ui/separator.js.map +1 -1
  168. package/dist/src/shadcn/components/ui/separator.stories.js +43 -3
  169. package/dist/src/shadcn/components/ui/separator.stories.js.map +1 -1
  170. package/dist/src/shadcn/components/ui/sheet.js +69 -16
  171. package/dist/src/shadcn/components/ui/sheet.js.map +1 -1
  172. package/dist/src/shadcn/components/ui/sheet.stories.js +77 -6
  173. package/dist/src/shadcn/components/ui/sheet.stories.js.map +1 -1
  174. package/dist/src/shadcn/components/ui/sidebar.d.ts.map +1 -1
  175. package/dist/src/shadcn/components/ui/sidebar.js +305 -79
  176. package/dist/src/shadcn/components/ui/sidebar.js.map +1 -1
  177. package/dist/src/shadcn/components/ui/sidebar.stories.js +321 -59
  178. package/dist/src/shadcn/components/ui/sidebar.stories.js.map +1 -1
  179. package/dist/src/shadcn/components/ui/skeleton.js +7 -2
  180. package/dist/src/shadcn/components/ui/skeleton.js.map +1 -1
  181. package/dist/src/shadcn/components/ui/skeleton.stories.js +22 -3
  182. package/dist/src/shadcn/components/ui/skeleton.stories.js.map +1 -1
  183. package/dist/src/shadcn/components/ui/slider.d.ts.map +1 -1
  184. package/dist/src/shadcn/components/ui/slider.js +41 -7
  185. package/dist/src/shadcn/components/ui/slider.js.map +1 -1
  186. package/dist/src/shadcn/components/ui/slider.stories.js +11 -3
  187. package/dist/src/shadcn/components/ui/slider.stories.js.map +1 -1
  188. package/dist/src/shadcn/components/ui/sonner.js +10 -4
  189. package/dist/src/shadcn/components/ui/sonner.js.map +1 -1
  190. package/dist/src/shadcn/components/ui/sonner.stories.js +14 -9
  191. package/dist/src/shadcn/components/ui/sonner.stories.js.map +1 -1
  192. package/dist/src/shadcn/components/ui/switch.d.ts.map +1 -1
  193. package/dist/src/shadcn/components/ui/switch.js +12 -2
  194. package/dist/src/shadcn/components/ui/switch.js.map +1 -1
  195. package/dist/src/shadcn/components/ui/switch.stories.js +16 -4
  196. package/dist/src/shadcn/components/ui/switch.stories.js.map +1 -1
  197. package/dist/src/shadcn/components/ui/table.js +47 -10
  198. package/dist/src/shadcn/components/ui/table.js.map +1 -1
  199. package/dist/src/shadcn/components/ui/table.stories.js +72 -11
  200. package/dist/src/shadcn/components/ui/table.stories.js.map +1 -1
  201. package/dist/src/shadcn/components/ui/tabs.d.ts +9 -5
  202. package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
  203. package/dist/src/shadcn/components/ui/tabs.js +76 -18
  204. package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
  205. package/dist/src/shadcn/components/ui/tabs.stories.d.ts +6 -0
  206. package/dist/src/shadcn/components/ui/tabs.stories.d.ts.map +1 -1
  207. package/dist/src/shadcn/components/ui/tabs.stories.js +221 -10
  208. package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
  209. package/dist/src/shadcn/components/ui/textarea.js +7 -2
  210. package/dist/src/shadcn/components/ui/textarea.js.map +1 -1
  211. package/dist/src/shadcn/components/ui/textarea.stories.js +6 -3
  212. package/dist/src/shadcn/components/ui/textarea.stories.js.map +1 -1
  213. package/dist/src/shadcn/components/ui/toggle-group.js +29 -8
  214. package/dist/src/shadcn/components/ui/toggle-group.js.map +1 -1
  215. package/dist/src/shadcn/components/ui/toggle-group.stories.js +30 -3
  216. package/dist/src/shadcn/components/ui/toggle-group.stories.js.map +1 -1
  217. package/dist/src/shadcn/components/ui/toggle.js +16 -7
  218. package/dist/src/shadcn/components/ui/toggle.js.map +1 -1
  219. package/dist/src/shadcn/components/ui/toggle.stories.js +9 -3
  220. package/dist/src/shadcn/components/ui/toggle.stories.js.map +1 -1
  221. package/dist/src/shadcn/components/ui/tooltip.d.ts.map +1 -1
  222. package/dist/src/shadcn/components/ui/tooltip.js +27 -5
  223. package/dist/src/shadcn/components/ui/tooltip.js.map +1 -1
  224. package/dist/src/shadcn/components/ui/tooltip.stories.js +20 -4
  225. package/dist/src/shadcn/components/ui/tooltip.stories.js.map +1 -1
  226. package/dist/src/shadcn/hooks/use-mobile.js +4 -3
  227. package/dist/src/shadcn/hooks/use-mobile.js.map +1 -1
  228. package/dist/src/shadcn/lib/utils.js +1 -0
  229. package/dist/src/shadcn/lib/utils.js.map +1 -1
  230. package/package.json +8 -4
  231. package/src/index.css +6 -0
  232. package/src/index.tsx +1 -0
  233. package/src/shadcn/components/ui/aspect-ratio.tsx +1 -0
  234. package/src/shadcn/components/ui/calendar.tsx +1 -0
  235. package/src/shadcn/components/ui/chart.tsx +1 -0
  236. package/src/shadcn/components/ui/checkbox.tsx +1 -0
  237. package/src/shadcn/components/ui/context-menu.tsx +1 -0
  238. package/src/shadcn/components/ui/drawer.tsx +1 -0
  239. package/src/shadcn/components/ui/form.tsx +1 -0
  240. package/src/shadcn/components/ui/hover-card.tsx +1 -0
  241. package/src/shadcn/components/ui/label.tsx +1 -0
  242. package/src/shadcn/components/ui/popover.tsx +1 -0
  243. package/src/shadcn/components/ui/radio-group.tsx +1 -0
  244. package/src/shadcn/components/ui/scroll-area.tsx +1 -0
  245. package/src/shadcn/components/ui/separator.tsx +1 -0
  246. package/src/shadcn/components/ui/sidebar.tsx +1 -0
  247. package/src/shadcn/components/ui/slider.tsx +1 -0
  248. package/src/shadcn/components/ui/switch.tsx +1 -0
  249. package/src/shadcn/components/ui/tabs.stories.tsx +57 -0
  250. package/src/shadcn/components/ui/tabs.tsx +77 -26
  251. package/src/shadcn/components/ui/tooltip.tsx +1 -0
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { action } from "storybook/internal/actions";
2
3
  import { Button } from "#shadcn/components/ui/button";
3
4
  import {
4
5
  Card,
@@ -12,6 +13,7 @@ import { Input } from "#shadcn/components/ui/input";
12
13
  import { Label } from "#shadcn/components/ui/label";
13
14
  import {
14
15
  Tabs,
16
+ TabsAddButton,
15
17
  TabsContent,
16
18
  TabsList,
17
19
  TabsTrigger,
@@ -90,3 +92,58 @@ export const Demo = {
90
92
  </div>
91
93
  ),
92
94
  } satisfies Story;
95
+
96
+ function BrowserTabOnClose(value: string) {
97
+ action("onClose")(value);
98
+ }
99
+
100
+ function BrowserTabOnClick() {
101
+ action("onClick")();
102
+ }
103
+
104
+ function BrowserTabOnAdd() {
105
+ action("onAdd")();
106
+ }
107
+
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>
148
+ ),
149
+ } satisfies Story;
@@ -1,47 +1,73 @@
1
+ "use client";
1
2
  import * as TabsPrimitive from "@radix-ui/react-tabs";
2
3
  import { cva, type VariantProps } from "class-variance-authority";
4
+ import { Plus, X } from "lucide-react";
3
5
  import type * as React from "react";
4
6
  import { cn } from "#shadcn/lib/utils";
7
+ import { Button } from "./button";
8
+
9
+ const tabsVariants = cva("", {
10
+ variants: {
11
+ variant: {
12
+ browser: cn(
13
+ // Tabs
14
+ `flex-row
15
+ items-center
16
+ h-10
17
+ `,
18
+ // TabsList
19
+ `**:data-[slot=tabs-list]:overflow-x-auto
20
+ **:data-[slot=tabs-list]:divide-x`,
21
+ // TabsTrigger
22
+ `**:data-[slot=tabs-trigger]:max-w-80
23
+ **:data-[slot=tabs-trigger]:min-w-40
24
+ **:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-1
25
+ **:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-border-secondary
26
+ **:data-[slot=tabs-trigger]:data-[state=inactive]:pt-[9px]
27
+ `, // TODO: Try to implement this without using pt-[9px].
28
+ ),
29
+ },
30
+ },
31
+ });
5
32
 
6
33
  function Tabs({
7
34
  className,
35
+ variant,
8
36
  ...props
9
- }: React.ComponentProps<typeof TabsPrimitive.Root>) {
37
+ }: React.ComponentProps<typeof TabsPrimitive.Root> &
38
+ VariantProps<typeof tabsVariants>) {
10
39
  return (
11
40
  <TabsPrimitive.Root
12
41
  data-slot="tabs"
13
- className={cn("flex flex-col", className)}
42
+ className={cn("flex flex-col", tabsVariants({ variant }), className)}
14
43
  {...props}
15
44
  />
16
45
  );
17
46
  }
18
47
 
19
- const tabListVariants = cva("", {
20
- variants: {
21
- variant: {
22
- button: "",
23
- dashed: "",
24
- },
25
- },
26
- defaultVariants: {
27
- variant: "dashed",
28
- },
29
- });
48
+ export function TabsAddButton(props: React.ComponentProps<typeof Button>) {
49
+ return (
50
+ <div className="grow h-full bg-bg-secondary border-l border-b">
51
+ <Button
52
+ data-slot="tabs-add-button"
53
+ variant="link"
54
+ className="h-full"
55
+ {...props}
56
+ >
57
+ <Plus />
58
+ </Button>
59
+ </div>
60
+ );
61
+ }
30
62
 
31
63
  function TabsList({
32
64
  className,
33
- variant,
34
65
  ...props
35
- }: React.ComponentProps<typeof TabsPrimitive.List> &
36
- VariantProps<typeof tabListVariants>) {
66
+ }: React.ComponentProps<typeof TabsPrimitive.List>) {
37
67
  return (
38
68
  <TabsPrimitive.List
39
69
  data-slot="tabs-list"
40
- className={cn(
41
- tabListVariants({ variant }),
42
- "inline-flex w-fit items-center",
43
- className,
44
- )}
70
+ className={cn("inline-flex w-fit items-center", className)}
45
71
  {...props}
46
72
  />
47
73
  );
@@ -49,22 +75,47 @@ function TabsList({
49
75
 
50
76
  function TabsTrigger({
51
77
  className,
78
+ onClose,
52
79
  ...props
53
- }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
80
+ }: React.ComponentProps<typeof TabsPrimitive.Trigger> & {
81
+ onClose?: (value: string) => void;
82
+ }) {
54
83
  return (
55
84
  <TabsPrimitive.Trigger
56
85
  data-slot="tabs-trigger"
57
86
  className={cn(
58
- "h-10 typo-label px-3 py-2 cursor-pointer text-text-tertiary data-[state=active]:text-text-primary border-b-2",
59
- "data-[state=active]:border-border-brand border-transparent hover:text-text-tertiary-hover focus-visible:border-ring",
87
+ "group/tabs-trigger",
88
+ "box-border h-10 typo-body px-3 pb-2 pt-2.5 cursor-pointer text-text-tertiary data-[state=active]:text-text-primary",
89
+ "data-[state=active]:border-b-border-brand border-b-2 border-b-transparent hover:text-text-tertiary-hover focus-visible:border-ring",
60
90
  "focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:text-muted-foreground",
61
- "inline-flex flex-1 items-center justify-center whitespace-nowrap transition-[color,box-shadow,border]",
91
+ "inline-flex flex-1 items-center justify-center whitespace-nowrap transition-[color,box-shadow]",
62
92
  "focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50",
63
93
  "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
94
+ "hover:bg-bg-secondary/60",
95
+ onClose ? "justify-between" : "",
64
96
  className,
65
97
  )}
66
98
  {...props}
67
- />
99
+ >
100
+ {props.children}
101
+
102
+ {onClose && (
103
+ <Button
104
+ onClick={(event) => {
105
+ event.stopPropagation();
106
+ onClose(props.value);
107
+ }}
108
+ variant="link"
109
+ size="small"
110
+ className="p-0 ml-2"
111
+ asChild
112
+ >
113
+ <span>
114
+ <X />
115
+ </span>
116
+ </Button>
117
+ )}
118
+ </TabsPrimitive.Trigger>
68
119
  );
69
120
  }
70
121
 
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2
3
  import type * as React from "react";
3
4