@gram-ai/elements 1.27.3 → 1.27.5

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 (278) hide show
  1. package/README.md +72 -60
  2. package/README.typedoc.md +6 -6
  3. package/bin/cli.js +74 -74
  4. package/dist/compat-shims-CO9JXXV4.cjs.map +1 -1
  5. package/dist/{compat-shims-BPJ7Q68c.js → compat-shims-DxtUrORi.js} +4 -2
  6. package/dist/compat-shims-DxtUrORi.js.map +1 -0
  7. package/dist/components/ShareButton/index.d.ts +2 -2
  8. package/dist/components/assistant-ui/message-feedback.d.ts +1 -1
  9. package/dist/components/assistant-ui/tooltip-icon-button.d.ts +2 -2
  10. package/dist/components/ui/avatar.d.ts +2 -2
  11. package/dist/components/ui/button.d.ts +1 -1
  12. package/dist/components/ui/calendar.d.ts +1 -1
  13. package/dist/components/ui/collapsible.d.ts +1 -1
  14. package/dist/components/ui/dialog.d.ts +4 -4
  15. package/dist/components/ui/popover.d.ts +2 -2
  16. package/dist/components/ui/skeleton.d.ts +1 -1
  17. package/dist/components/ui/time-range-picker.d.ts +4 -2
  18. package/dist/components/ui/tool-ui.d.ts +7 -7
  19. package/dist/components/ui/tooltip.d.ts +2 -2
  20. package/dist/contexts/ConnectionStatusContext.d.ts +1 -1
  21. package/dist/elements.cjs +1 -1
  22. package/dist/elements.css +1 -1
  23. package/dist/elements.js +2 -2
  24. package/dist/hooks/useDensity.d.ts +73 -73
  25. package/dist/hooks/useMCPTools.d.ts +1 -1
  26. package/dist/hooks/useRadius.d.ts +1 -1
  27. package/dist/{index-BpJstUh1.cjs → index-C4bFBGfl.cjs} +4 -4
  28. package/dist/{index-BpJstUh1.cjs.map → index-C4bFBGfl.cjs.map} +1 -1
  29. package/dist/{index-CUitXazZ.js → index-D93pV0_o.js} +55 -55
  30. package/dist/{index-CUitXazZ.js.map → index-D93pV0_o.js.map} +1 -1
  31. package/dist/{index-DBrhzauj.js → index-DuCQRbcQ.js} +6386 -6337
  32. package/dist/index-DuCQRbcQ.js.map +1 -0
  33. package/dist/{index-DxfW52oA.cjs → index-y_PNN5vK.cjs} +64 -46
  34. package/dist/index-y_PNN5vK.cjs.map +1 -0
  35. package/dist/lib/cassette.d.ts +4 -4
  36. package/dist/lib/errorTracking.d.ts +1 -1
  37. package/dist/lib/messageConverter.d.ts +1 -1
  38. package/dist/lib/models.d.ts +1 -1
  39. package/dist/plugins/chart/ui/bar-chart.d.ts +1 -1
  40. package/dist/plugins/generative-ui/ui/accordion-wrapper.d.ts +2 -2
  41. package/dist/plugins/generative-ui/ui/accordion.d.ts +1 -1
  42. package/dist/plugins/generative-ui/ui/action-button.d.ts +2 -2
  43. package/dist/plugins/generative-ui/ui/alert-wrapper.d.ts +1 -1
  44. package/dist/plugins/generative-ui/ui/alert.d.ts +4 -4
  45. package/dist/plugins/generative-ui/ui/avatar.d.ts +5 -5
  46. package/dist/plugins/generative-ui/ui/badge.d.ts +2 -2
  47. package/dist/plugins/generative-ui/ui/button-wrapper.d.ts +2 -2
  48. package/dist/plugins/generative-ui/ui/button.d.ts +2 -2
  49. package/dist/plugins/generative-ui/ui/card-wrapper.d.ts +2 -2
  50. package/dist/plugins/generative-ui/ui/card.d.ts +8 -8
  51. package/dist/plugins/generative-ui/ui/checkbox.d.ts +1 -1
  52. package/dist/plugins/generative-ui/ui/data-table.d.ts +2 -2
  53. package/dist/plugins/generative-ui/ui/dialog.d.ts +3 -3
  54. package/dist/plugins/generative-ui/ui/dropdown-menu.d.ts +3 -3
  55. package/dist/plugins/generative-ui/ui/grid.d.ts +3 -3
  56. package/dist/plugins/generative-ui/ui/input-wrapper.d.ts +1 -1
  57. package/dist/plugins/generative-ui/ui/input.d.ts +2 -2
  58. package/dist/plugins/generative-ui/ui/label.d.ts +1 -1
  59. package/dist/plugins/generative-ui/ui/metric.d.ts +3 -3
  60. package/dist/plugins/generative-ui/ui/pagination.d.ts +6 -6
  61. package/dist/plugins/generative-ui/ui/popover.d.ts +4 -4
  62. package/dist/plugins/generative-ui/ui/progress.d.ts +2 -2
  63. package/dist/plugins/generative-ui/ui/radio-group.d.ts +1 -1
  64. package/dist/plugins/generative-ui/ui/select.d.ts +2 -2
  65. package/dist/plugins/generative-ui/ui/separator.d.ts +1 -1
  66. package/dist/plugins/generative-ui/ui/skeleton.d.ts +1 -1
  67. package/dist/plugins/generative-ui/ui/stack.d.ts +6 -6
  68. package/dist/plugins/generative-ui/ui/switch.d.ts +2 -2
  69. package/dist/plugins/generative-ui/ui/table.d.ts +9 -9
  70. package/dist/plugins/generative-ui/ui/tabs-wrapper.d.ts +1 -1
  71. package/dist/plugins/generative-ui/ui/tabs.d.ts +1 -1
  72. package/dist/plugins/generative-ui/ui/text.d.ts +3 -3
  73. package/dist/plugins/generative-ui/ui/textarea.d.ts +2 -2
  74. package/dist/plugins/generative-ui/ui/tooltip.d.ts +1 -1
  75. package/dist/plugins.cjs +1 -1
  76. package/dist/plugins.js +1 -1
  77. package/dist/{profiler-D6ndqfsd.js → profiler-FpBY9eRv.js} +2 -2
  78. package/dist/{profiler-D6ndqfsd.js.map → profiler-FpBY9eRv.js.map} +1 -1
  79. package/dist/{profiler-DhnzZ34c.cjs → profiler-_mthyjvo.cjs} +2 -2
  80. package/dist/{profiler-DhnzZ34c.cjs.map → profiler-_mthyjvo.cjs.map} +1 -1
  81. package/dist/react-shim.js +1 -1
  82. package/dist/server/express.cjs.map +1 -1
  83. package/dist/server/express.js.map +1 -1
  84. package/dist/{startRecording-BwXmdmy1.cjs → startRecording-NJcpiHw-.cjs} +2 -2
  85. package/dist/{startRecording-BwXmdmy1.cjs.map → startRecording-NJcpiHw-.cjs.map} +1 -1
  86. package/dist/{startRecording-B_9CRZ_P.js → startRecording-r5MXQ2Dm.js} +2 -2
  87. package/dist/{startRecording-B_9CRZ_P.js.map → startRecording-r5MXQ2Dm.js.map} +1 -1
  88. package/dist/types/index.d.ts +2 -2
  89. package/package.json +1 -5
  90. package/src/compat-plugin.ts +14 -14
  91. package/src/compat-shims.ts +33 -31
  92. package/src/compat.test.ts +48 -48
  93. package/src/compat.ts +6 -6
  94. package/src/components/Chat/index.tsx +17 -17
  95. package/src/components/Chat/stories/Charts.stories.tsx +98 -98
  96. package/src/components/Chat/stories/Composer.stories.tsx +15 -15
  97. package/src/components/Chat/stories/ConnectionConfiguration.stories.tsx +44 -44
  98. package/src/components/Chat/stories/CustomComponents.stories.tsx +17 -17
  99. package/src/components/Chat/stories/Density.stories.tsx +20 -20
  100. package/src/components/Chat/stories/ErrorBoundary.stories.tsx +47 -47
  101. package/src/components/Chat/stories/FrontendTools.stories.tsx +39 -39
  102. package/src/components/Chat/stories/GenerativeUI.stories.tsx +48 -48
  103. package/src/components/Chat/stories/MessageFeedback.stories.tsx +52 -52
  104. package/src/components/Chat/stories/Modal.stories.tsx +28 -28
  105. package/src/components/Chat/stories/Model.stories.tsx +11 -11
  106. package/src/components/Chat/stories/Radius.stories.tsx +20 -20
  107. package/src/components/Chat/stories/Sidecar.stories.tsx +13 -13
  108. package/src/components/Chat/stories/StyleIsolation.stories.tsx +11 -11
  109. package/src/components/Chat/stories/Theme.stories.tsx +25 -25
  110. package/src/components/Chat/stories/Thread.stories.tsx +25 -25
  111. package/src/components/Chat/stories/ToolApproval.stories.tsx +55 -55
  112. package/src/components/Chat/stories/ToolMentions.stories.tsx +17 -17
  113. package/src/components/Chat/stories/Tools.stories.tsx +88 -88
  114. package/src/components/Chat/stories/Variants.stories.tsx +32 -32
  115. package/src/components/Chat/stories/Welcome.stories.tsx +14 -14
  116. package/src/components/ChatHistory.tsx +7 -7
  117. package/src/components/FrontendTools/index.tsx +5 -5
  118. package/src/components/Replay.stories.tsx +157 -157
  119. package/src/components/Replay.tsx +76 -73
  120. package/src/components/ShadowRoot.tsx +40 -40
  121. package/src/components/ShareButton/index.tsx +32 -32
  122. package/src/components/assistant-ui/assistant-modal.tsx +92 -87
  123. package/src/components/assistant-ui/assistant-sidecar.tsx +35 -35
  124. package/src/components/assistant-ui/attachment.tsx +80 -80
  125. package/src/components/assistant-ui/connection-status-indicator.tsx +33 -33
  126. package/src/components/assistant-ui/error-boundary.tsx +34 -34
  127. package/src/components/assistant-ui/follow-on-suggestions.tsx +26 -26
  128. package/src/components/assistant-ui/markdown-text.tsx +69 -69
  129. package/src/components/assistant-ui/mentioned-tools-badges.tsx +38 -38
  130. package/src/components/assistant-ui/message-feedback.tsx +74 -61
  131. package/src/components/assistant-ui/reasoning.tsx +83 -83
  132. package/src/components/assistant-ui/thread-list.tsx +45 -45
  133. package/src/components/assistant-ui/thread.tsx +278 -278
  134. package/src/components/assistant-ui/tool-fallback.tsx +37 -37
  135. package/src/components/assistant-ui/tool-group.tsx +26 -26
  136. package/src/components/assistant-ui/tool-mention-autocomplete.tsx +122 -122
  137. package/src/components/assistant-ui/tooltip-icon-button.tsx +18 -18
  138. package/src/components/ui/avatar.tsx +12 -12
  139. package/src/components/ui/button.tsx +12 -12
  140. package/src/components/ui/buttonVariants.ts +17 -17
  141. package/src/components/ui/calendar.tsx +106 -106
  142. package/src/components/ui/charts.stories.tsx +56 -56
  143. package/src/components/ui/collapsible.tsx +5 -5
  144. package/src/components/ui/dialog.tsx +30 -30
  145. package/src/components/ui/generative-ui.stories.tsx +200 -200
  146. package/src/components/ui/generative-ui.tsx +26 -26
  147. package/src/components/ui/popover.tsx +14 -14
  148. package/src/components/ui/skeleton.tsx +5 -5
  149. package/src/components/ui/time-range-picker.stories.tsx +80 -80
  150. package/src/components/ui/time-range-picker.tsx +272 -235
  151. package/src/components/ui/tool-ui.stories.tsx +37 -37
  152. package/src/components/ui/tool-ui.tsx +221 -215
  153. package/src/components/ui/tooltip.tsx +15 -15
  154. package/src/constants/tailwind.ts +1 -1
  155. package/src/contexts/ChatIdContext.tsx +7 -7
  156. package/src/contexts/ConnectionStatusContext.tsx +64 -64
  157. package/src/contexts/ElementsProvider.tsx +222 -211
  158. package/src/contexts/ReplayContext.ts +3 -3
  159. package/src/contexts/ToolApprovalContext.tsx +54 -54
  160. package/src/contexts/ToolExecutionContext.tsx +34 -34
  161. package/src/contexts/contexts.ts +7 -7
  162. package/src/contexts/portal-container-context.ts +2 -2
  163. package/src/contexts/portal-container.tsx +7 -7
  164. package/src/embedded.ts +1 -1
  165. package/src/global.css +25 -25
  166. package/src/hooks/useAuth.ts +72 -72
  167. package/src/hooks/useDensity.ts +79 -79
  168. package/src/hooks/useElements.ts +6 -6
  169. package/src/hooks/useExpanded.ts +12 -12
  170. package/src/hooks/useFollowOnSuggestions.ts +87 -82
  171. package/src/hooks/useGramThreadListAdapter.tsx +99 -99
  172. package/src/hooks/useMCPTools.ts +47 -47
  173. package/src/hooks/useModel.ts +14 -14
  174. package/src/hooks/usePluginComponents.ts +11 -11
  175. package/src/hooks/usePortalContainer.ts +5 -5
  176. package/src/hooks/useRadius.ts +23 -23
  177. package/src/hooks/useRecordCassette.ts +34 -34
  178. package/src/hooks/useSession.ts +11 -11
  179. package/src/hooks/useThemeProps.ts +13 -13
  180. package/src/hooks/useThreadId.ts +4 -4
  181. package/src/hooks/useToolApproval.ts +7 -7
  182. package/src/hooks/useToolMentions.ts +40 -40
  183. package/src/index.ts +26 -26
  184. package/src/lib/api.test.ts +61 -61
  185. package/src/lib/api.ts +4 -3
  186. package/src/lib/auth.ts +13 -13
  187. package/src/lib/cassette.ts +84 -84
  188. package/src/lib/easing.ts +1 -1
  189. package/src/lib/errorTracking.config.ts +5 -5
  190. package/src/lib/errorTracking.ts +29 -29
  191. package/src/lib/generative-ui.ts +7 -7
  192. package/src/lib/humanize.ts +3 -3
  193. package/src/lib/messageConverter.test.ts +130 -127
  194. package/src/lib/messageConverter.ts +196 -196
  195. package/src/lib/models.ts +21 -20
  196. package/src/lib/token.test.ts +56 -56
  197. package/src/lib/token.ts +14 -14
  198. package/src/lib/tool-mentions.ts +45 -45
  199. package/src/lib/tools.ts +66 -62
  200. package/src/lib/utils.ts +5 -5
  201. package/src/lib.d.ts +1 -1
  202. package/src/plugins/README.md +5 -5
  203. package/src/plugins/chart/catalog.ts +18 -18
  204. package/src/plugins/chart/chart.test.ts +31 -31
  205. package/src/plugins/chart/component.tsx +34 -34
  206. package/src/plugins/chart/index.ts +4 -4
  207. package/src/plugins/chart/ui/area-chart.tsx +42 -42
  208. package/src/plugins/chart/ui/bar-chart.tsx +46 -46
  209. package/src/plugins/chart/ui/donut-chart.tsx +48 -48
  210. package/src/plugins/chart/ui/index.ts +7 -7
  211. package/src/plugins/chart/ui/line-chart.tsx +43 -43
  212. package/src/plugins/chart/ui/pie-chart.tsx +44 -44
  213. package/src/plugins/chart/ui/radar-chart.tsx +33 -33
  214. package/src/plugins/chart/ui/scatter-chart.tsx +43 -43
  215. package/src/plugins/components/MacOSWindowFrame.tsx +15 -15
  216. package/src/plugins/components/PluginLoadingState.tsx +10 -10
  217. package/src/plugins/components/index.ts +1 -1
  218. package/src/plugins/generative-ui/catalog.ts +54 -54
  219. package/src/plugins/generative-ui/component.tsx +85 -85
  220. package/src/plugins/generative-ui/index.ts +4 -4
  221. package/src/plugins/generative-ui/ui/accordion-wrapper.tsx +16 -16
  222. package/src/plugins/generative-ui/ui/accordion.tsx +16 -16
  223. package/src/plugins/generative-ui/ui/action-button.tsx +28 -28
  224. package/src/plugins/generative-ui/ui/alert-wrapper.tsx +8 -8
  225. package/src/plugins/generative-ui/ui/alert.tsx +20 -20
  226. package/src/plugins/generative-ui/ui/avatar-wrapper.tsx +7 -7
  227. package/src/plugins/generative-ui/ui/avatar.tsx +30 -30
  228. package/src/plugins/generative-ui/ui/badge.tsx +22 -22
  229. package/src/plugins/generative-ui/ui/button-wrapper.tsx +12 -12
  230. package/src/plugins/generative-ui/ui/button.tsx +28 -28
  231. package/src/plugins/generative-ui/ui/card-wrapper.tsx +8 -8
  232. package/src/plugins/generative-ui/ui/card.tsx +27 -27
  233. package/src/plugins/generative-ui/ui/checkbox-wrapper.tsx +9 -9
  234. package/src/plugins/generative-ui/ui/checkbox.tsx +9 -9
  235. package/src/plugins/generative-ui/ui/data-table.tsx +8 -8
  236. package/src/plugins/generative-ui/ui/dialog.tsx +31 -31
  237. package/src/plugins/generative-ui/ui/dropdown-menu.tsx +44 -44
  238. package/src/plugins/generative-ui/ui/grid.tsx +12 -12
  239. package/src/plugins/generative-ui/ui/index.ts +40 -40
  240. package/src/plugins/generative-ui/ui/input-wrapper.tsx +11 -11
  241. package/src/plugins/generative-ui/ui/input.tsx +9 -9
  242. package/src/plugins/generative-ui/ui/label.tsx +8 -8
  243. package/src/plugins/generative-ui/ui/list.tsx +11 -11
  244. package/src/plugins/generative-ui/ui/metric.tsx +23 -23
  245. package/src/plugins/generative-ui/ui/pagination.tsx +28 -28
  246. package/src/plugins/generative-ui/ui/popover.tsx +21 -21
  247. package/src/plugins/generative-ui/ui/progress.tsx +13 -13
  248. package/src/plugins/generative-ui/ui/radio-group.tsx +12 -12
  249. package/src/plugins/generative-ui/ui/select-wrapper.tsx +7 -7
  250. package/src/plugins/generative-ui/ui/select.tsx +37 -37
  251. package/src/plugins/generative-ui/ui/separator.tsx +9 -9
  252. package/src/plugins/generative-ui/ui/skeleton-wrapper.tsx +10 -10
  253. package/src/plugins/generative-ui/ui/skeleton.tsx +5 -5
  254. package/src/plugins/generative-ui/ui/stack.tsx +28 -28
  255. package/src/plugins/generative-ui/ui/switch.tsx +11 -11
  256. package/src/plugins/generative-ui/ui/table.tsx +32 -32
  257. package/src/plugins/generative-ui/ui/tabs-wrapper.tsx +11 -11
  258. package/src/plugins/generative-ui/ui/tabs.tsx +26 -26
  259. package/src/plugins/generative-ui/ui/text.tsx +12 -12
  260. package/src/plugins/generative-ui/ui/textarea.tsx +7 -7
  261. package/src/plugins/generative-ui/ui/tooltip.tsx +12 -12
  262. package/src/plugins/index.ts +7 -7
  263. package/src/react-shim.ts +6 -6
  264. package/src/server/bun.ts +12 -12
  265. package/src/server/core.ts +25 -25
  266. package/src/server/express.ts +17 -15
  267. package/src/server/fastify.ts +14 -14
  268. package/src/server/hono.ts +9 -9
  269. package/src/server/nextjs.ts +12 -12
  270. package/src/server/tanstack-start.ts +12 -12
  271. package/src/server.ts +27 -27
  272. package/src/storybook.d.ts +4 -4
  273. package/src/types/index.ts +122 -122
  274. package/src/types/plugins.ts +7 -7
  275. package/src/vite-env.d.ts +12 -12
  276. package/dist/compat-shims-BPJ7Q68c.js.map +0 -1
  277. package/dist/index-DBrhzauj.js.map +0 -1
  278. package/dist/index-DxfW52oA.cjs.map +0 -1
@@ -1,54 +1,54 @@
1
- import * as React from 'react'
2
- import { cva, type VariantProps } from 'class-variance-authority'
3
- import { Slot } from 'radix-ui'
1
+ import * as React from "react";
2
+ import { cva, type VariantProps } from "class-variance-authority";
3
+ import { Slot } from "radix-ui";
4
4
 
5
- import { cn } from '@/lib/utils'
5
+ import { cn } from "@/lib/utils";
6
6
 
7
7
  const buttonVariants = cva(
8
8
  "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
9
9
  {
10
10
  variants: {
11
11
  variant: {
12
- default: 'bg-primary text-primary-foreground hover:bg-primary/90',
12
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
13
13
  destructive:
14
- 'bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',
14
+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
15
15
  outline:
16
- 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',
16
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
17
17
  secondary:
18
- 'bg-secondary text-secondary-foreground hover:bg-secondary/80',
18
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
19
19
  ghost:
20
- 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
21
- link: 'text-primary underline-offset-4 hover:underline',
20
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
21
+ link: "text-primary underline-offset-4 hover:underline",
22
22
  },
23
23
  size: {
24
- default: 'h-9 px-4 py-2 has-[>svg]:px-3',
24
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
25
25
  xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
26
- sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',
27
- lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',
28
- icon: 'size-9',
29
- 'icon-xs': "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
30
- 'icon-sm': 'size-8',
31
- 'icon-lg': 'size-10',
26
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
27
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
28
+ icon: "size-9",
29
+ "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
30
+ "icon-sm": "size-8",
31
+ "icon-lg": "size-10",
32
32
  },
33
33
  },
34
34
  defaultVariants: {
35
- variant: 'default',
36
- size: 'default',
35
+ variant: "default",
36
+ size: "default",
37
37
  },
38
- }
39
- )
38
+ },
39
+ );
40
40
 
41
41
  function Button({
42
42
  className,
43
- variant = 'default',
44
- size = 'default',
43
+ variant = "default",
44
+ size = "default",
45
45
  asChild = false,
46
46
  ...props
47
- }: React.ComponentProps<'button'> &
47
+ }: React.ComponentProps<"button"> &
48
48
  VariantProps<typeof buttonVariants> & {
49
- asChild?: boolean
49
+ asChild?: boolean;
50
50
  }) {
51
- const Comp = asChild ? Slot.Root : 'button'
51
+ const Comp = asChild ? Slot.Root : "button";
52
52
 
53
53
  return (
54
54
  <Comp
@@ -58,8 +58,8 @@ function Button({
58
58
  className={cn(buttonVariants({ variant, size, className }))}
59
59
  {...props}
60
60
  />
61
- )
61
+ );
62
62
  }
63
63
 
64
64
  // eslint-disable-next-line react-refresh/only-export-components
65
- export { Button, buttonVariants }
65
+ export { Button, buttonVariants };
@@ -1,8 +1,8 @@
1
- import * as React from 'react'
2
- import { cn } from '@/lib/utils'
1
+ import * as React from "react";
2
+ import { cn } from "@/lib/utils";
3
3
 
4
- export interface CardWrapperProps extends React.ComponentProps<'div'> {
5
- title?: string
4
+ export interface CardWrapperProps extends React.ComponentProps<"div"> {
5
+ title?: string;
6
6
  }
7
7
 
8
8
  /**
@@ -20,17 +20,17 @@ export function CardWrapper({
20
20
  <div
21
21
  data-slot="card-wrapper"
22
22
  className={cn(
23
- 'bg-card text-card-foreground flex flex-col gap-6 p-6',
24
- className
23
+ "flex flex-col gap-6 bg-card p-6 text-card-foreground",
24
+ className,
25
25
  )}
26
26
  {...props}
27
27
  >
28
28
  {title && (
29
- <div className="text-foreground text-lg leading-none font-semibold">
29
+ <div className="text-lg leading-none font-semibold text-foreground">
30
30
  {title}
31
31
  </div>
32
32
  )}
33
33
  <div className="flex flex-col gap-6">{children}</div>
34
34
  </div>
35
- )
35
+ );
36
36
  }
@@ -1,84 +1,84 @@
1
- import * as React from 'react'
1
+ import * as React from "react";
2
2
 
3
- import { cn } from '@/lib/utils'
3
+ import { cn } from "@/lib/utils";
4
4
 
5
- function Card({ className, ...props }: React.ComponentProps<'div'>) {
5
+ function Card({ className, ...props }: React.ComponentProps<"div">) {
6
6
  return (
7
7
  <div
8
8
  data-slot="card"
9
9
  className={cn(
10
- 'bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm',
11
- className
10
+ "flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",
11
+ className,
12
12
  )}
13
13
  {...props}
14
14
  />
15
- )
15
+ );
16
16
  }
17
17
 
18
- function CardHeader({ className, ...props }: React.ComponentProps<'div'>) {
18
+ function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
19
19
  return (
20
20
  <div
21
21
  data-slot="card-header"
22
22
  className={cn(
23
- '@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6',
24
- className
23
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
24
+ className,
25
25
  )}
26
26
  {...props}
27
27
  />
28
- )
28
+ );
29
29
  }
30
30
 
31
- function CardTitle({ className, ...props }: React.ComponentProps<'div'>) {
31
+ function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
32
32
  return (
33
33
  <div
34
34
  data-slot="card-title"
35
- className={cn('leading-none font-semibold', className)}
35
+ className={cn("leading-none font-semibold", className)}
36
36
  {...props}
37
37
  />
38
- )
38
+ );
39
39
  }
40
40
 
41
- function CardDescription({ className, ...props }: React.ComponentProps<'div'>) {
41
+ function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
42
42
  return (
43
43
  <div
44
44
  data-slot="card-description"
45
- className={cn('text-muted-foreground text-sm', className)}
45
+ className={cn("text-sm text-muted-foreground", className)}
46
46
  {...props}
47
47
  />
48
- )
48
+ );
49
49
  }
50
50
 
51
- function CardAction({ className, ...props }: React.ComponentProps<'div'>) {
51
+ function CardAction({ className, ...props }: React.ComponentProps<"div">) {
52
52
  return (
53
53
  <div
54
54
  data-slot="card-action"
55
55
  className={cn(
56
- 'col-start-2 row-span-2 row-start-1 self-start justify-self-end',
57
- className
56
+ "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
57
+ className,
58
58
  )}
59
59
  {...props}
60
60
  />
61
- )
61
+ );
62
62
  }
63
63
 
64
- function CardContent({ className, ...props }: React.ComponentProps<'div'>) {
64
+ function CardContent({ className, ...props }: React.ComponentProps<"div">) {
65
65
  return (
66
66
  <div
67
67
  data-slot="card-content"
68
- className={cn('px-6', className)}
68
+ className={cn("px-6", className)}
69
69
  {...props}
70
70
  />
71
- )
71
+ );
72
72
  }
73
73
 
74
- function CardFooter({ className, ...props }: React.ComponentProps<'div'>) {
74
+ function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
75
75
  return (
76
76
  <div
77
77
  data-slot="card-footer"
78
- className={cn('flex items-center px-6 [.border-t]:pt-6', className)}
78
+ className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
79
79
  {...props}
80
80
  />
81
- )
81
+ );
82
82
  }
83
83
 
84
84
  export {
@@ -89,4 +89,4 @@ export {
89
89
  CardAction,
90
90
  CardDescription,
91
91
  CardContent,
92
- }
92
+ };
@@ -1,14 +1,14 @@
1
- 'use client'
1
+ "use client";
2
2
 
3
- import * as React from 'react'
4
- import { Checkbox } from './checkbox'
5
- import { Label } from './label'
3
+ import * as React from "react";
4
+ import { Checkbox } from "./checkbox";
5
+ import { Label } from "./label";
6
6
 
7
7
  export interface CheckboxWrapperProps {
8
- label?: string
8
+ label?: string;
9
9
  /** Path for form state management (future use) */
10
- valuePath: string
11
- defaultChecked?: boolean
10
+ valuePath: string;
11
+ defaultChecked?: boolean;
12
12
  }
13
13
 
14
14
  /**
@@ -19,7 +19,7 @@ export function CheckboxWrapper({
19
19
  valuePath,
20
20
  defaultChecked,
21
21
  }: CheckboxWrapperProps) {
22
- const id = React.useId()
22
+ const id = React.useId();
23
23
 
24
24
  return (
25
25
  <div className="flex items-center gap-2">
@@ -35,5 +35,5 @@ export function CheckboxWrapper({
35
35
  </Label>
36
36
  )}
37
37
  </div>
38
- )
38
+ );
39
39
  }
@@ -1,10 +1,10 @@
1
- 'use client'
1
+ "use client";
2
2
 
3
- import * as React from 'react'
4
- import { CheckIcon } from 'lucide-react'
5
- import { Checkbox as CheckboxPrimitive } from 'radix-ui'
3
+ import * as React from "react";
4
+ import { CheckIcon } from "lucide-react";
5
+ import { Checkbox as CheckboxPrimitive } from "radix-ui";
6
6
 
7
- import { cn } from '@/lib/utils'
7
+ import { cn } from "@/lib/utils";
8
8
 
9
9
  function Checkbox({
10
10
  className,
@@ -14,8 +14,8 @@ function Checkbox({
14
14
  <CheckboxPrimitive.Root
15
15
  data-slot="checkbox"
16
16
  className={cn(
17
- 'peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-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 size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
18
- className
17
+ "peer size-4 shrink-0 rounded-[4px] border border-input shadow-xs transition-shadow outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary",
18
+ className,
19
19
  )}
20
20
  {...props}
21
21
  >
@@ -26,7 +26,7 @@ function Checkbox({
26
26
  <CheckIcon className="size-3.5" />
27
27
  </CheckboxPrimitive.Indicator>
28
28
  </CheckboxPrimitive.Root>
29
- )
29
+ );
30
30
  }
31
31
 
32
- export { Checkbox }
32
+ export { Checkbox };
@@ -1,6 +1,6 @@
1
- 'use client'
1
+ "use client";
2
2
 
3
- import * as React from 'react'
3
+ import * as React from "react";
4
4
  import {
5
5
  Table,
6
6
  TableHeader,
@@ -8,12 +8,12 @@ import {
8
8
  TableHead,
9
9
  TableRow,
10
10
  TableCell,
11
- } from './table'
12
- import { cn } from '@/lib/utils'
11
+ } from "./table";
12
+ import { cn } from "@/lib/utils";
13
13
 
14
- export interface DataTableProps extends React.ComponentProps<'div'> {
15
- headers?: string[]
16
- rows: (string | number)[][]
14
+ export interface DataTableProps extends React.ComponentProps<"div"> {
15
+ headers?: string[];
16
+ rows: (string | number)[][];
17
17
  }
18
18
 
19
19
  /**
@@ -49,5 +49,5 @@ export function DataTable({
49
49
  </TableBody>
50
50
  </Table>
51
51
  </div>
52
- )
52
+ );
53
53
  }
@@ -1,34 +1,34 @@
1
- 'use client'
1
+ "use client";
2
2
 
3
- import * as React from 'react'
4
- import { XIcon } from 'lucide-react'
5
- import { Dialog as DialogPrimitive } from 'radix-ui'
3
+ import * as React from "react";
4
+ import { XIcon } from "lucide-react";
5
+ import { Dialog as DialogPrimitive } from "radix-ui";
6
6
 
7
- import { cn } from '@/lib/utils'
8
- import { Button } from '@/components/ui/button'
7
+ import { cn } from "@/lib/utils";
8
+ import { Button } from "@/components/ui/button";
9
9
 
10
10
  function Dialog({
11
11
  ...props
12
12
  }: React.ComponentProps<typeof DialogPrimitive.Root>) {
13
- return <DialogPrimitive.Root data-slot="dialog" {...props} />
13
+ return <DialogPrimitive.Root data-slot="dialog" {...props} />;
14
14
  }
15
15
 
16
16
  function DialogTrigger({
17
17
  ...props
18
18
  }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {
19
- return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />
19
+ return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} />;
20
20
  }
21
21
 
22
22
  function DialogPortal({
23
23
  ...props
24
24
  }: React.ComponentProps<typeof DialogPrimitive.Portal>) {
25
- return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />
25
+ return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />;
26
26
  }
27
27
 
28
28
  function DialogClose({
29
29
  ...props
30
30
  }: React.ComponentProps<typeof DialogPrimitive.Close>) {
31
- return <DialogPrimitive.Close data-slot="dialog-close" {...props} />
31
+ return <DialogPrimitive.Close data-slot="dialog-close" {...props} />;
32
32
  }
33
33
 
34
34
  function DialogOverlay({
@@ -39,12 +39,12 @@ function DialogOverlay({
39
39
  <DialogPrimitive.Overlay
40
40
  data-slot="dialog-overlay"
41
41
  className={cn(
42
- 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50',
43
- className
42
+ "fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
43
+ className,
44
44
  )}
45
45
  {...props}
46
46
  />
47
- )
47
+ );
48
48
  }
49
49
 
50
50
  function DialogContent({
@@ -53,7 +53,7 @@ function DialogContent({
53
53
  showCloseButton = true,
54
54
  ...props
55
55
  }: React.ComponentProps<typeof DialogPrimitive.Content> & {
56
- showCloseButton?: boolean
56
+ showCloseButton?: boolean;
57
57
  }) {
58
58
  return (
59
59
  <DialogPortal data-slot="dialog-portal">
@@ -61,8 +61,8 @@ function DialogContent({
61
61
  <DialogPrimitive.Content
62
62
  data-slot="dialog-content"
63
63
  className={cn(
64
- 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 outline-none sm:max-w-lg',
65
- className
64
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 sm:max-w-lg",
65
+ className,
66
66
  )}
67
67
  {...props}
68
68
  >
@@ -70,7 +70,7 @@ function DialogContent({
70
70
  {showCloseButton && (
71
71
  <DialogPrimitive.Close
72
72
  data-slot="dialog-close"
73
- className="ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
73
+ className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
74
74
  >
75
75
  <XIcon />
76
76
  <span className="sr-only">Close</span>
@@ -78,17 +78,17 @@ function DialogContent({
78
78
  )}
79
79
  </DialogPrimitive.Content>
80
80
  </DialogPortal>
81
- )
81
+ );
82
82
  }
83
83
 
84
- function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
84
+ function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
85
85
  return (
86
86
  <div
87
87
  data-slot="dialog-header"
88
- className={cn('flex flex-col gap-2 text-center sm:text-left', className)}
88
+ className={cn("flex flex-col gap-2 text-center sm:text-left", className)}
89
89
  {...props}
90
90
  />
91
- )
91
+ );
92
92
  }
93
93
 
94
94
  function DialogFooter({
@@ -96,15 +96,15 @@ function DialogFooter({
96
96
  showCloseButton = false,
97
97
  children,
98
98
  ...props
99
- }: React.ComponentProps<'div'> & {
100
- showCloseButton?: boolean
99
+ }: React.ComponentProps<"div"> & {
100
+ showCloseButton?: boolean;
101
101
  }) {
102
102
  return (
103
103
  <div
104
104
  data-slot="dialog-footer"
105
105
  className={cn(
106
- 'flex flex-col-reverse gap-2 sm:flex-row sm:justify-end',
107
- className
106
+ "flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",
107
+ className,
108
108
  )}
109
109
  {...props}
110
110
  >
@@ -115,7 +115,7 @@ function DialogFooter({
115
115
  </DialogPrimitive.Close>
116
116
  )}
117
117
  </div>
118
- )
118
+ );
119
119
  }
120
120
 
121
121
  function DialogTitle({
@@ -125,10 +125,10 @@ function DialogTitle({
125
125
  return (
126
126
  <DialogPrimitive.Title
127
127
  data-slot="dialog-title"
128
- className={cn('text-lg leading-none font-semibold', className)}
128
+ className={cn("text-lg leading-none font-semibold", className)}
129
129
  {...props}
130
130
  />
131
- )
131
+ );
132
132
  }
133
133
 
134
134
  function DialogDescription({
@@ -138,10 +138,10 @@ function DialogDescription({
138
138
  return (
139
139
  <DialogPrimitive.Description
140
140
  data-slot="dialog-description"
141
- className={cn('text-muted-foreground text-sm', className)}
141
+ className={cn("text-sm text-muted-foreground", className)}
142
142
  {...props}
143
143
  />
144
- )
144
+ );
145
145
  }
146
146
 
147
147
  export {
@@ -155,4 +155,4 @@ export {
155
155
  DialogPortal,
156
156
  DialogTitle,
157
157
  DialogTrigger,
158
- }
158
+ };