@dinachi/cli 0.5.0 → 0.6.0

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 (54) hide show
  1. package/README.md +13 -5
  2. package/dist/index.js +1086 -349
  3. package/package.json +17 -9
  4. package/templates/accordion/accordion.tsx +8 -3
  5. package/templates/alert-dialog/alert-dialog.tsx +24 -25
  6. package/templates/alert-dialog/index.ts +1 -1
  7. package/templates/autocomplete/autocomplete.tsx +0 -1
  8. package/templates/avatar/avatar.tsx +1 -3
  9. package/templates/badge/badge.tsx +167 -0
  10. package/templates/badge/index.ts +2 -0
  11. package/templates/button/button.tsx +6 -6
  12. package/templates/button/index.ts +2 -2
  13. package/templates/card/card.tsx +78 -0
  14. package/templates/card/index.ts +1 -0
  15. package/templates/checkbox/checkbox.tsx +2 -3
  16. package/templates/checkbox-group/checkbox-group.tsx +1 -3
  17. package/templates/collapsible/collapsible.tsx +1 -2
  18. package/templates/combobox/combobox.tsx +0 -1
  19. package/templates/context-menu/context-menu.tsx +0 -1
  20. package/templates/dialog/dialog.tsx +1 -1
  21. package/templates/drawer/drawer.tsx +0 -1
  22. package/templates/field/field.tsx +69 -85
  23. package/templates/fieldset/fieldset.tsx +0 -1
  24. package/templates/form/form.tsx +36 -28
  25. package/templates/input/index.ts +1 -2
  26. package/templates/input/input.tsx +0 -1
  27. package/templates/menu/menu.tsx +0 -1
  28. package/templates/menubar/menubar.tsx +21 -22
  29. package/templates/meter/meter.tsx +0 -1
  30. package/templates/navigation-menu/index.ts +1 -13
  31. package/templates/navigation-menu/navigation-menu.tsx +1 -3
  32. package/templates/number-field/number-field.tsx +0 -1
  33. package/templates/popover/popover.tsx +0 -1
  34. package/templates/preview-card/preview-card.tsx +0 -1
  35. package/templates/progress/progress.tsx +0 -1
  36. package/templates/radio/radio.tsx +0 -1
  37. package/templates/scroll-area/scroll-area.tsx +0 -1
  38. package/templates/select/select.tsx +1 -4
  39. package/templates/separator/separator.tsx +0 -1
  40. package/templates/slider/index.ts +10 -0
  41. package/templates/slider/slider.tsx +1 -3
  42. package/templates/switch/switch.tsx +0 -1
  43. package/templates/tabs/index.ts +8 -0
  44. package/templates/tabs/tabs.tsx +8 -3
  45. package/templates/textarea/index.ts +2 -0
  46. package/templates/textarea/textarea.tsx +23 -0
  47. package/templates/toast/toast.tsx +3 -2
  48. package/templates/toggle/toggle.tsx +0 -1
  49. package/templates/toggle-group/toggle-group.tsx +0 -1
  50. package/templates/toolbar/toolbar.tsx +0 -1
  51. package/templates/tooltip/tooltip.tsx +0 -1
  52. package/templates/tsconfig.json +20 -0
  53. package/templates/utils/utils.ts +0 -1
  54. package/templates/utils/variants.ts +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dinachi/cli",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "CLI for adding Dinachi UI components to your project",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -15,30 +15,37 @@
15
15
  "license": "MIT",
16
16
  "repository": {
17
17
  "type": "git",
18
- "url": "https://github.com/dinachi/ui"
18
+ "url": "git+https://github.com/dinachi/ui.git"
19
19
  },
20
20
  "homepage": "https://dinachi.dev",
21
21
  "bin": {
22
- "dinachi": "./dist/index.js",
23
- "dinachi-ui": "./dist/index.js"
22
+ "dinachi": "dist/index.js",
23
+ "dinachi-ui": "dist/index.js"
24
24
  },
25
25
  "files": [
26
26
  "dist",
27
27
  "templates"
28
28
  ],
29
29
  "dependencies": {
30
- "commander": "^14.0.2",
31
30
  "chalk": "^5.3.0",
32
- "ora": "^9.0.0",
33
- "prompts": "^2.4.2",
31
+ "commander": "^14.0.2",
32
+ "execa": "^9.6.1",
34
33
  "fs-extra": "^11.2.0",
35
34
  "node-fetch": "^3.3.2",
36
- "execa": "^9.6.1",
35
+ "ora": "^9.0.0",
36
+ "prompts": "^2.4.2",
37
37
  "ts-morph": "^27.0.2"
38
38
  },
39
39
  "devDependencies": {
40
+ "@base-ui/react": "1.2.0",
40
41
  "@types/fs-extra": "^11.0.4",
41
42
  "@types/prompts": "^2.4.9",
43
+ "@types/react": "^19.2.14",
44
+ "class-variance-authority": "^0.7.1",
45
+ "clsx": "^2.1.1",
46
+ "lucide-react": "0.552.0",
47
+ "react": "19.2.4",
48
+ "tailwind-merge": "^3.5.0",
42
49
  "tsup": "^8.0.1",
43
50
  "typescript": "^5.5.3"
44
51
  },
@@ -51,6 +58,7 @@
51
58
  "scripts": {
52
59
  "build": "tsup src/index.ts --format esm --dts --clean",
53
60
  "dev": "tsup src/index.ts --format esm --dts --watch",
54
- "type-check": "tsc --noEmit"
61
+ "type-check": "tsc --noEmit",
62
+ "test": "pnpm run build && node --test test/**/*.test.mjs"
55
63
  }
56
64
  }
@@ -1,10 +1,15 @@
1
- // @ts-nocheck
2
1
  import * as React from "react";
3
2
  import { Accordion as BaseAccordion } from "@base-ui/react/accordion";
4
- import { cn } from "@/lib/utils"
3
+ import { cn } from "@/lib/utils";
5
4
  import { ChevronDown } from "lucide-react";
6
5
 
7
- const Accordion = BaseAccordion.Root;
6
+ const Accordion = React.forwardRef<
7
+ React.ComponentRef<typeof BaseAccordion.Root>,
8
+ React.ComponentProps<typeof BaseAccordion.Root>
9
+ >(({ className, ...props }, ref) => (
10
+ <BaseAccordion.Root ref={ref} className={cn(className)} {...props} />
11
+ ));
12
+ Accordion.displayName = "Accordion";
8
13
 
9
14
  const AccordionItem = React.forwardRef<
10
15
  HTMLDivElement,
@@ -1,9 +1,8 @@
1
- // @ts-nocheck
2
- import * as React from "react"
3
- import { AlertDialog as BaseAlertDialog } from "@base-ui/react"
4
- import { cn } from "@/lib/utils"
1
+ import * as React from "react";
2
+ import { AlertDialog as BaseAlertDialog } from "@base-ui/react";
3
+ import { cn } from "@/lib/utils";
5
4
 
6
- const AlertDialog = BaseAlertDialog.Root
5
+ const AlertDialog = BaseAlertDialog.Root;
7
6
 
8
7
  const AlertDialogTrigger = React.forwardRef<
9
8
  HTMLButtonElement,
@@ -21,10 +20,10 @@ const AlertDialogTrigger = React.forwardRef<
21
20
  )}
22
21
  {...props}
23
22
  />
24
- ))
25
- AlertDialogTrigger.displayName = "AlertDialogTrigger"
23
+ ));
24
+ AlertDialogTrigger.displayName = "AlertDialogTrigger";
26
25
 
27
- const AlertDialogPortal = BaseAlertDialog.Portal
26
+ const AlertDialogPortal = BaseAlertDialog.Portal;
28
27
 
29
28
  const AlertDialogBackdrop = React.forwardRef<
30
29
  HTMLDivElement,
@@ -40,8 +39,8 @@ const AlertDialogBackdrop = React.forwardRef<
40
39
  )}
41
40
  {...props}
42
41
  />
43
- ))
44
- AlertDialogBackdrop.displayName = "AlertDialogBackdrop"
42
+ ));
43
+ AlertDialogBackdrop.displayName = "AlertDialogBackdrop";
45
44
 
46
45
  const AlertDialogPopup = React.forwardRef<
47
46
  HTMLDivElement,
@@ -58,8 +57,8 @@ const AlertDialogPopup = React.forwardRef<
58
57
  )}
59
58
  {...props}
60
59
  />
61
- ))
62
- AlertDialogPopup.displayName = "AlertDialogPopup"
60
+ ));
61
+ AlertDialogPopup.displayName = "AlertDialogPopup";
63
62
 
64
63
  const AlertDialogTitle = React.forwardRef<
65
64
  HTMLHeadingElement,
@@ -70,8 +69,8 @@ const AlertDialogTitle = React.forwardRef<
70
69
  className={cn("text-lg font-semibold", className)}
71
70
  {...props}
72
71
  />
73
- ))
74
- AlertDialogTitle.displayName = "AlertDialogTitle"
72
+ ));
73
+ AlertDialogTitle.displayName = "AlertDialogTitle";
75
74
 
76
75
  const AlertDialogDescription = React.forwardRef<
77
76
  HTMLParagraphElement,
@@ -82,8 +81,8 @@ const AlertDialogDescription = React.forwardRef<
82
81
  className={cn("text-sm text-muted-foreground", className)}
83
82
  {...props}
84
83
  />
85
- ))
86
- AlertDialogDescription.displayName = "AlertDialogDescription"
84
+ ));
85
+ AlertDialogDescription.displayName = "AlertDialogDescription";
87
86
 
88
87
  const AlertDialogAction = React.forwardRef<
89
88
  HTMLButtonElement,
@@ -99,8 +98,8 @@ const AlertDialogAction = React.forwardRef<
99
98
  )}
100
99
  {...props}
101
100
  />
102
- ))
103
- AlertDialogAction.displayName = "AlertDialogAction"
101
+ ));
102
+ AlertDialogAction.displayName = "AlertDialogAction";
104
103
 
105
104
  const AlertDialogCancel = React.forwardRef<
106
105
  HTMLButtonElement,
@@ -116,8 +115,8 @@ const AlertDialogCancel = React.forwardRef<
116
115
  )}
117
116
  {...props}
118
117
  />
119
- ))
120
- AlertDialogCancel.displayName = "AlertDialogCancel"
118
+ ));
119
+ AlertDialogCancel.displayName = "AlertDialogCancel";
121
120
 
122
121
  const AlertDialogHeader = ({
123
122
  className,
@@ -130,8 +129,8 @@ const AlertDialogHeader = ({
130
129
  )}
131
130
  {...props}
132
131
  />
133
- )
134
- AlertDialogHeader.displayName = "AlertDialogHeader"
132
+ );
133
+ AlertDialogHeader.displayName = "AlertDialogHeader";
135
134
 
136
135
  const AlertDialogFooter = ({
137
136
  className,
@@ -144,8 +143,8 @@ const AlertDialogFooter = ({
144
143
  )}
145
144
  {...props}
146
145
  />
147
- )
148
- AlertDialogFooter.displayName = "AlertDialogFooter"
146
+ );
147
+ AlertDialogFooter.displayName = "AlertDialogFooter";
149
148
 
150
149
  export {
151
150
  AlertDialog,
@@ -159,4 +158,4 @@ export {
159
158
  AlertDialogCancel,
160
159
  AlertDialogHeader,
161
160
  AlertDialogFooter,
162
- }
161
+ };
@@ -10,4 +10,4 @@ export {
10
10
  AlertDialogCancel,
11
11
  AlertDialogHeader,
12
12
  AlertDialogFooter,
13
- } from "./alert-dialog"
13
+ } from "./alert-dialog";
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  "use client"
3
2
 
4
3
  import * as React from "react"
@@ -1,9 +1,7 @@
1
- // @ts-nocheck
2
1
  import * as React from "react";
3
2
  import { Avatar as BaseAvatar } from "@base-ui/react";
4
3
  import { cva, type VariantProps } from "class-variance-authority";
5
- import { cn } from "@/lib/utils"
6
-
4
+ import { cn } from "@/lib/utils";
7
5
 
8
6
  const avatarVariants = cva(
9
7
  "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
@@ -0,0 +1,167 @@
1
+ 'use client';
2
+
3
+ import * as React from "react"
4
+ import { cva, type VariantProps } from "class-variance-authority"
5
+ import { useRender } from '@base-ui/react/use-render'
6
+ import { cn } from "@/lib/utils"
7
+
8
+ const badgeVariants = cva(
9
+ "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
10
+ {
11
+ variants: {
12
+ variant: {
13
+ default:
14
+ "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
15
+ secondary:
16
+ "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
17
+ destructive:
18
+ "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
19
+ outline: "text-foreground",
20
+ success:
21
+ "border-transparent bg-green-500 text-white hover:bg-green-600",
22
+ warning:
23
+ "border-transparent bg-yellow-500 text-yellow-900 hover:bg-yellow-600",
24
+ info:
25
+ "border-transparent bg-blue-500 text-white hover:bg-blue-600",
26
+ },
27
+ size: {
28
+ sm: "px-2 py-0.5 text-xs",
29
+ default: "px-2.5 py-0.5 text-xs",
30
+ lg: "px-3 py-1 text-sm",
31
+ },
32
+ rounded: {
33
+ default: "rounded-full",
34
+ sm: "rounded-sm",
35
+ md: "rounded-md",
36
+ lg: "rounded-lg",
37
+ none: "rounded-none",
38
+ }
39
+ },
40
+ defaultVariants: {
41
+ variant: "default",
42
+ size: "default",
43
+ rounded: "default",
44
+ },
45
+ }
46
+ )
47
+
48
+ type BadgeElement = React.ComponentRef<"div">
49
+
50
+ export interface BadgeProps
51
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>,
52
+ VariantProps<typeof badgeVariants> {
53
+ /**
54
+ * The content of the badge
55
+ */
56
+ children?: React.ReactNode
57
+ /**
58
+ * Custom render prop for composition
59
+ */
60
+ render?: React.ReactElement
61
+ /**
62
+ * Whether the badge should be interactive (clickable)
63
+ */
64
+ interactive?: boolean
65
+ /**
66
+ * Icon to display before the content
67
+ */
68
+ icon?: React.ReactNode
69
+ /**
70
+ * Whether to show a close button
71
+ */
72
+ dismissible?: boolean
73
+ /**
74
+ * Callback when close button is clicked
75
+ */
76
+ onDismiss?: () => void
77
+ }
78
+
79
+ const Badge = React.forwardRef<BadgeElement, BadgeProps>(
80
+ ({
81
+ className,
82
+ variant,
83
+ size,
84
+ rounded,
85
+ children,
86
+ render = <div />,
87
+ interactive = false,
88
+ icon,
89
+ dismissible = false,
90
+ onDismiss,
91
+ onClick,
92
+ ...props
93
+ }, ref) => {
94
+ // Handle keyboard interaction for dismissible badges
95
+ const handleKeyDown = React.useCallback((event: React.KeyboardEvent) => {
96
+ if (dismissible && onDismiss && (event.key === 'Delete' || event.key === 'Backspace')) {
97
+ event.preventDefault()
98
+ onDismiss()
99
+ }
100
+ }, [dismissible, onDismiss])
101
+
102
+ // Handle click for interactive badges
103
+ const handleClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {
104
+ if (interactive && onClick) {
105
+ onClick(event)
106
+ }
107
+ }, [interactive, onClick])
108
+
109
+ // Compute classes once
110
+ const badgeClasses = React.useMemo(() =>
111
+ cn(
112
+ badgeVariants({ variant, size, rounded }),
113
+ {
114
+ 'cursor-pointer hover:opacity-80': interactive,
115
+ 'focus:ring-2 focus:ring-offset-2': interactive || dismissible,
116
+ },
117
+ className
118
+ ),
119
+ [variant, size, rounded, interactive, dismissible, className]
120
+ )
121
+
122
+ const content = (
123
+ <>
124
+ {icon && <span className="mr-1 shrink-0">{icon}</span>}
125
+ {children}
126
+ {dismissible && (
127
+ <button
128
+ type="button"
129
+ onClick={onDismiss}
130
+ className="ml-1 shrink-0 rounded-full p-0.5 hover:bg-black/10 focus:outline-none focus:ring-1 focus:ring-black/20"
131
+ aria-label="Remove badge"
132
+ >
133
+ <svg
134
+ className="h-3 w-3"
135
+ fill="none"
136
+ stroke="currentColor"
137
+ viewBox="0 0 24 24"
138
+ aria-hidden="true"
139
+ >
140
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M6 18L18 6M6 6l12 12" />
141
+ </svg>
142
+ </button>
143
+ )}
144
+ </>
145
+ )
146
+
147
+ return useRender({
148
+ render: React.cloneElement(render, {
149
+ ref,
150
+ className: badgeClasses,
151
+ onClick: handleClick,
152
+ onKeyDown: handleKeyDown,
153
+ tabIndex: interactive || dismissible ? 0 : undefined,
154
+ role: interactive ? 'button' : dismissible ? 'button' : undefined,
155
+ 'aria-label': interactive ? 'Interactive badge' : dismissible ? 'Dismissible badge' : undefined,
156
+ ...props,
157
+ }),
158
+ props: {
159
+ children: content,
160
+ },
161
+ })
162
+ }
163
+ )
164
+
165
+ Badge.displayName = "Badge"
166
+
167
+ export { Badge, badgeVariants }
@@ -0,0 +1,2 @@
1
+ export { Badge, badgeVariants } from './badge'
2
+ export type { BadgeProps } from './badge'
@@ -1,5 +1,5 @@
1
- // @ts-nocheck
2
1
  import * as React from "react"
2
+ import { Button as BaseButton } from "@base-ui/react/button"
3
3
  import { cva, type VariantProps } from "class-variance-authority"
4
4
  import { cn } from "@/lib/utils"
5
5
 
@@ -33,15 +33,15 @@ const buttonVariants = cva(
33
33
  )
34
34
 
35
35
  export interface ButtonProps
36
- extends React.ButtonHTMLAttributes<HTMLButtonElement>,
36
+ extends Omit<React.ComponentPropsWithoutRef<typeof BaseButton>, 'className'>,
37
37
  VariantProps<typeof buttonVariants> {
38
- asChild?: boolean
38
+ className?: string
39
39
  }
40
40
 
41
- const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
42
- ({ className, variant, size, asChild = false, ...props }, ref) => {
41
+ const Button = React.forwardRef<HTMLElement, ButtonProps>(
42
+ ({ className, variant, size, ...props }, ref) => {
43
43
  return (
44
- <button
44
+ <BaseButton
45
45
  className={cn(buttonVariants({ variant, size, className }))}
46
46
  ref={ref}
47
47
  {...props}
@@ -1,2 +1,2 @@
1
- export { Button, buttonVariants } from "./button"
2
- export type { ButtonProps } from "./button"
1
+ export { Button, buttonVariants } from './button'
2
+ export type { ButtonProps } from './button'
@@ -0,0 +1,78 @@
1
+ import * as React from "react"
2
+ import { cn } from "@/lib/utils"
3
+
4
+ const Card = React.forwardRef<
5
+ HTMLDivElement,
6
+ React.HTMLAttributes<HTMLDivElement>
7
+ >(({ className, ...props }, ref) => (
8
+ <div
9
+ ref={ref}
10
+ className={cn(
11
+ "rounded-lg border bg-card text-card-foreground shadow-sm",
12
+ className
13
+ )}
14
+ {...props}
15
+ />
16
+ ))
17
+ Card.displayName = "Card"
18
+
19
+ const CardHeader = React.forwardRef<
20
+ HTMLDivElement,
21
+ React.HTMLAttributes<HTMLDivElement>
22
+ >(({ className, ...props }, ref) => (
23
+ <div
24
+ ref={ref}
25
+ className={cn("flex flex-col space-y-1.5 p-6", className)}
26
+ {...props}
27
+ />
28
+ ))
29
+ CardHeader.displayName = "CardHeader"
30
+
31
+ const CardTitle = React.forwardRef<
32
+ HTMLParagraphElement,
33
+ React.HTMLAttributes<HTMLHeadingElement>
34
+ >(({ className, ...props }, ref) => (
35
+ <h3
36
+ ref={ref}
37
+ className={cn(
38
+ "text-2xl font-semibold leading-none tracking-tight",
39
+ className
40
+ )}
41
+ {...props}
42
+ />
43
+ ))
44
+ CardTitle.displayName = "CardTitle"
45
+
46
+ const CardDescription = React.forwardRef<
47
+ HTMLParagraphElement,
48
+ React.HTMLAttributes<HTMLParagraphElement>
49
+ >(({ className, ...props }, ref) => (
50
+ <p
51
+ ref={ref}
52
+ className={cn("text-sm text-muted-foreground", className)}
53
+ {...props}
54
+ />
55
+ ))
56
+ CardDescription.displayName = "CardDescription"
57
+
58
+ const CardContent = React.forwardRef<
59
+ HTMLDivElement,
60
+ React.HTMLAttributes<HTMLDivElement>
61
+ >(({ className, ...props }, ref) => (
62
+ <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
63
+ ))
64
+ CardContent.displayName = "CardContent"
65
+
66
+ const CardFooter = React.forwardRef<
67
+ HTMLDivElement,
68
+ React.HTMLAttributes<HTMLDivElement>
69
+ >(({ className, ...props }, ref) => (
70
+ <div
71
+ ref={ref}
72
+ className={cn("flex items-center p-6 pt-0", className)}
73
+ {...props}
74
+ />
75
+ ))
76
+ CardFooter.displayName = "CardFooter"
77
+
78
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
@@ -0,0 +1 @@
1
+ export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } from './card'
@@ -1,7 +1,6 @@
1
- // @ts-nocheck
2
1
  import * as React from "react";
3
- import { Checkbox as BaseCheckbox } from "@base-ui/react";
4
- import { cn } from "@/lib/utils"
2
+ import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox';
3
+ import { cn } from "@/lib/utils";
5
4
  import { Check } from "lucide-react";
6
5
 
7
6
  const Checkbox = React.forwardRef<
@@ -1,8 +1,6 @@
1
- // @ts-nocheck
2
1
  import * as React from "react";
3
2
  import { CheckboxGroup as BaseCheckboxGroup } from "@base-ui/react/checkbox-group";
4
- import { cn } from "@/lib/utils"
5
-
3
+ import { cn } from "@/lib/utils";
6
4
 
7
5
  const CheckboxGroup = React.forwardRef<
8
6
  React.ComponentRef<typeof BaseCheckboxGroup>,
@@ -1,6 +1,5 @@
1
- // @ts-nocheck
2
-
3
1
  "use client"
2
+
4
3
  import * as React from "react"
5
4
  import { Collapsible as BaseCollapsible } from "@base-ui/react/collapsible"
6
5
  import { cn } from "@/lib/utils"
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  "use client"
3
2
 
4
3
  import * as React from "react"
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  import * as React from "react";
3
2
  import { ContextMenu as BaseContextMenu } from "@base-ui/react/context-menu";
4
3
  import { Menu } from "@base-ui/react/menu";
@@ -1,5 +1,5 @@
1
- // @ts-nocheck
2
1
  "use client"
2
+
3
3
  import * as React from "react"
4
4
  import { Dialog as BaseDialog } from "@base-ui/react/dialog"
5
5
  import { cn } from "@/lib/utils"
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  "use client"
3
2
 
4
3
  import * as React from "react"