Skip to content

Commit 4fd16e0

Browse files
committed
2nd commit
1 parent b10a9bc commit 4fd16e0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+7906
-294
lines changed

package-lock.json

+2,765-291
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+41-1
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,54 @@
99
"lint": "next lint"
1010
},
1111
"dependencies": {
12+
"@hookform/resolvers": "^3.9.1",
13+
"@radix-ui/react-accordion": "^1.2.1",
14+
"@radix-ui/react-alert-dialog": "^1.1.2",
15+
"@radix-ui/react-aspect-ratio": "^1.1.0",
16+
"@radix-ui/react-avatar": "^1.1.1",
17+
"@radix-ui/react-checkbox": "^1.1.2",
18+
"@radix-ui/react-collapsible": "^1.1.1",
19+
"@radix-ui/react-context-menu": "^2.2.2",
20+
"@radix-ui/react-dialog": "^1.1.2",
21+
"@radix-ui/react-dropdown-menu": "^2.1.2",
22+
"@radix-ui/react-hover-card": "^1.1.2",
23+
"@radix-ui/react-label": "^2.1.0",
24+
"@radix-ui/react-menubar": "^1.1.2",
25+
"@radix-ui/react-navigation-menu": "^1.2.1",
26+
"@radix-ui/react-popover": "^1.1.2",
27+
"@radix-ui/react-progress": "^1.1.0",
28+
"@radix-ui/react-radio-group": "^1.2.1",
29+
"@radix-ui/react-scroll-area": "^1.2.1",
30+
"@radix-ui/react-select": "^2.1.2",
31+
"@radix-ui/react-separator": "^1.1.0",
32+
"@radix-ui/react-slider": "^1.2.1",
33+
"@radix-ui/react-slot": "^1.1.0",
34+
"@radix-ui/react-switch": "^1.1.1",
35+
"@radix-ui/react-tabs": "^1.1.1",
36+
"@radix-ui/react-toast": "^1.2.2",
37+
"@radix-ui/react-toggle": "^1.1.0",
38+
"@radix-ui/react-toggle-group": "^1.1.0",
39+
"@radix-ui/react-tooltip": "^1.1.4",
1240
"class-variance-authority": "^0.7.1",
1341
"clsx": "^2.1.1",
42+
"cmdk": "^1.0.0",
43+
"date-fns": "^4.1.0",
44+
"embla-carousel-react": "^8.5.1",
45+
"input-otp": "^1.4.1",
1446
"lucide-react": "^0.468.0",
1547
"next": "15.0.4",
48+
"next-themes": "^0.4.4",
1649
"react": "^19.0.0",
50+
"react-day-picker": "^8.10.1",
1751
"react-dom": "^19.0.0",
52+
"react-hook-form": "^7.54.0",
53+
"react-resizable-panels": "^2.1.7",
54+
"recharts": "^2.14.1",
55+
"sonner": "^1.7.1",
1856
"tailwind-merge": "^2.5.5",
19-
"tailwindcss-animate": "^1.0.7"
57+
"tailwindcss-animate": "^1.0.7",
58+
"vaul": "^1.1.1",
59+
"zod": "^3.23.8"
2060
},
2161
"devDependencies": {
2262
"@types/node": "^20",

src/app/globals.css

+16
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ body {
3333
--chart-4: 43 74% 66%;
3434
--chart-5: 27 87% 67%;
3535
--radius: 0.5rem;
36+
--sidebar-background: 0 0% 98%;
37+
--sidebar-foreground: 240 5.3% 26.1%;
38+
--sidebar-primary: 240 5.9% 10%;
39+
--sidebar-primary-foreground: 0 0% 98%;
40+
--sidebar-accent: 240 4.8% 95.9%;
41+
--sidebar-accent-foreground: 240 5.9% 10%;
42+
--sidebar-border: 220 13% 91%;
43+
--sidebar-ring: 217.2 91.2% 59.8%;
3644
}
3745
.dark {
3846
--background: 0 0% 3.9%;
@@ -59,6 +67,14 @@ body {
5967
--chart-3: 30 80% 55%;
6068
--chart-4: 280 65% 60%;
6169
--chart-5: 340 75% 55%;
70+
--sidebar-background: 240 5.9% 10%;
71+
--sidebar-foreground: 240 4.8% 95.9%;
72+
--sidebar-primary: 224.3 76.3% 48%;
73+
--sidebar-primary-foreground: 0 0% 100%;
74+
--sidebar-accent: 240 3.7% 15.9%;
75+
--sidebar-accent-foreground: 240 4.8% 95.9%;
76+
--sidebar-border: 240 3.7% 15.9%;
77+
--sidebar-ring: 217.2 91.2% 59.8%;
6278
}
6379
}
6480

src/app/page.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11

2-
export default function Home() {
2+
export function Home() {
33
return (
44
<div>
5-
hello
5+
66
</div>
77
);
88
}

src/components/ui/accordion.tsx

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"use client"
2+
3+
import * as React from "react"
4+
import * as AccordionPrimitive from "@radix-ui/react-accordion"
5+
import { ChevronDown } from "lucide-react"
6+
7+
import { cn } from "@/lib/utils"
8+
9+
const Accordion = AccordionPrimitive.Root
10+
11+
const AccordionItem = React.forwardRef<
12+
React.ElementRef<typeof AccordionPrimitive.Item>,
13+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
14+
>(({ className, ...props }, ref) => (
15+
<AccordionPrimitive.Item
16+
ref={ref}
17+
className={cn("border-b", className)}
18+
{...props}
19+
/>
20+
))
21+
AccordionItem.displayName = "AccordionItem"
22+
23+
const AccordionTrigger = React.forwardRef<
24+
React.ElementRef<typeof AccordionPrimitive.Trigger>,
25+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
26+
>(({ className, children, ...props }, ref) => (
27+
<AccordionPrimitive.Header className="flex">
28+
<AccordionPrimitive.Trigger
29+
ref={ref}
30+
className={cn(
31+
"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
32+
className
33+
)}
34+
{...props}
35+
>
36+
{children}
37+
<ChevronDown className="h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" />
38+
</AccordionPrimitive.Trigger>
39+
</AccordionPrimitive.Header>
40+
))
41+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName
42+
43+
const AccordionContent = React.forwardRef<
44+
React.ElementRef<typeof AccordionPrimitive.Content>,
45+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
46+
>(({ className, children, ...props }, ref) => (
47+
<AccordionPrimitive.Content
48+
ref={ref}
49+
className="overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
50+
{...props}
51+
>
52+
<div className={cn("pb-4 pt-0", className)}>{children}</div>
53+
</AccordionPrimitive.Content>
54+
))
55+
AccordionContent.displayName = AccordionPrimitive.Content.displayName
56+
57+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }

src/components/ui/alert-dialog.tsx

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
"use client"
2+
3+
import * as React from "react"
4+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"
5+
6+
import { cn } from "@/lib/utils"
7+
import { buttonVariants } from "@/components/ui/button"
8+
9+
const AlertDialog = AlertDialogPrimitive.Root
10+
11+
const AlertDialogTrigger = AlertDialogPrimitive.Trigger
12+
13+
const AlertDialogPortal = AlertDialogPrimitive.Portal
14+
15+
const AlertDialogOverlay = React.forwardRef<
16+
React.ElementRef<typeof AlertDialogPrimitive.Overlay>,
17+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Overlay>
18+
>(({ className, ...props }, ref) => (
19+
<AlertDialogPrimitive.Overlay
20+
className={cn(
21+
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
22+
className
23+
)}
24+
{...props}
25+
ref={ref}
26+
/>
27+
))
28+
AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName
29+
30+
const AlertDialogContent = React.forwardRef<
31+
React.ElementRef<typeof AlertDialogPrimitive.Content>,
32+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>
33+
>(({ className, ...props }, ref) => (
34+
<AlertDialogPortal>
35+
<AlertDialogOverlay />
36+
<AlertDialogPrimitive.Content
37+
ref={ref}
38+
className={cn(
39+
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
40+
className
41+
)}
42+
{...props}
43+
/>
44+
</AlertDialogPortal>
45+
))
46+
AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName
47+
48+
const AlertDialogHeader = ({
49+
className,
50+
...props
51+
}: React.HTMLAttributes<HTMLDivElement>) => (
52+
<div
53+
className={cn(
54+
"flex flex-col space-y-2 text-center sm:text-left",
55+
className
56+
)}
57+
{...props}
58+
/>
59+
)
60+
AlertDialogHeader.displayName = "AlertDialogHeader"
61+
62+
const AlertDialogFooter = ({
63+
className,
64+
...props
65+
}: React.HTMLAttributes<HTMLDivElement>) => (
66+
<div
67+
className={cn(
68+
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
69+
className
70+
)}
71+
{...props}
72+
/>
73+
)
74+
AlertDialogFooter.displayName = "AlertDialogFooter"
75+
76+
const AlertDialogTitle = React.forwardRef<
77+
React.ElementRef<typeof AlertDialogPrimitive.Title>,
78+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Title>
79+
>(({ className, ...props }, ref) => (
80+
<AlertDialogPrimitive.Title
81+
ref={ref}
82+
className={cn("text-lg font-semibold", className)}
83+
{...props}
84+
/>
85+
))
86+
AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName
87+
88+
const AlertDialogDescription = React.forwardRef<
89+
React.ElementRef<typeof AlertDialogPrimitive.Description>,
90+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Description>
91+
>(({ className, ...props }, ref) => (
92+
<AlertDialogPrimitive.Description
93+
ref={ref}
94+
className={cn("text-sm text-muted-foreground", className)}
95+
{...props}
96+
/>
97+
))
98+
AlertDialogDescription.displayName =
99+
AlertDialogPrimitive.Description.displayName
100+
101+
const AlertDialogAction = React.forwardRef<
102+
React.ElementRef<typeof AlertDialogPrimitive.Action>,
103+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Action>
104+
>(({ className, ...props }, ref) => (
105+
<AlertDialogPrimitive.Action
106+
ref={ref}
107+
className={cn(buttonVariants(), className)}
108+
{...props}
109+
/>
110+
))
111+
AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName
112+
113+
const AlertDialogCancel = React.forwardRef<
114+
React.ElementRef<typeof AlertDialogPrimitive.Cancel>,
115+
React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Cancel>
116+
>(({ className, ...props }, ref) => (
117+
<AlertDialogPrimitive.Cancel
118+
ref={ref}
119+
className={cn(
120+
buttonVariants({ variant: "outline" }),
121+
"mt-2 sm:mt-0",
122+
className
123+
)}
124+
{...props}
125+
/>
126+
))
127+
AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName
128+
129+
export {
130+
AlertDialog,
131+
AlertDialogPortal,
132+
AlertDialogOverlay,
133+
AlertDialogTrigger,
134+
AlertDialogContent,
135+
AlertDialogHeader,
136+
AlertDialogFooter,
137+
AlertDialogTitle,
138+
AlertDialogDescription,
139+
AlertDialogAction,
140+
AlertDialogCancel,
141+
}

src/components/ui/alert.tsx

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import * as React from "react"
2+
import { cva, type VariantProps } from "class-variance-authority"
3+
4+
import { cn } from "@/lib/utils"
5+
6+
const alertVariants = cva(
7+
"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7",
8+
{
9+
variants: {
10+
variant: {
11+
default: "bg-background text-foreground",
12+
destructive:
13+
"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
14+
},
15+
},
16+
defaultVariants: {
17+
variant: "default",
18+
},
19+
}
20+
)
21+
22+
const Alert = React.forwardRef<
23+
HTMLDivElement,
24+
React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>
25+
>(({ className, variant, ...props }, ref) => (
26+
<div
27+
ref={ref}
28+
role="alert"
29+
className={cn(alertVariants({ variant }), className)}
30+
{...props}
31+
/>
32+
))
33+
Alert.displayName = "Alert"
34+
35+
const AlertTitle = React.forwardRef<
36+
HTMLParagraphElement,
37+
React.HTMLAttributes<HTMLHeadingElement>
38+
>(({ className, ...props }, ref) => (
39+
<h5
40+
ref={ref}
41+
className={cn("mb-1 font-medium leading-none tracking-tight", className)}
42+
{...props}
43+
/>
44+
))
45+
AlertTitle.displayName = "AlertTitle"
46+
47+
const AlertDescription = React.forwardRef<
48+
HTMLParagraphElement,
49+
React.HTMLAttributes<HTMLParagraphElement>
50+
>(({ className, ...props }, ref) => (
51+
<div
52+
ref={ref}
53+
className={cn("text-sm [&_p]:leading-relaxed", className)}
54+
{...props}
55+
/>
56+
))
57+
AlertDescription.displayName = "AlertDescription"
58+
59+
export { Alert, AlertTitle, AlertDescription }

src/components/ui/aspect-ratio.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"use client"
2+
3+
import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"
4+
5+
const AspectRatio = AspectRatioPrimitive.Root
6+
7+
export { AspectRatio }

0 commit comments

Comments
 (0)