Skip to content

Commit 405055a

Browse files
committed
feat: ✨ add new UI components and update existing ones
1 parent 8ca8058 commit 405055a

Some content is hidden

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

50 files changed

+7574
-2688
lines changed

.windsurfrules

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
You are an expert in TypeScript, Node.js, Next.js App Router, React, Shadcn UI, Radix UI, and Tailwind.
2+
3+
Code Style and Structure
4+
- Write concise, technical TypeScript code with accurate examples.
5+
- Use functional and declarative programming patterns; avoid classes.
6+
- Prefer iteration and modularization over code duplication.
7+
- Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError).
8+
- Structure files: exported component, subcomponents, helpers, static content, types.
9+
10+
Naming Conventions
11+
- Use lowercase with dashes for directories (e.g., components/auth-wizard).
12+
- Favor named exports for components.
13+
14+
TypeScript Usage
15+
- Use TypeScript for all code; prefer interfaces over types.
16+
- Avoid enums; use maps instead.
17+
- Use functional components with TypeScript interfaces.
18+
19+
Syntax and Formatting
20+
- Use the "function" keyword for pure functions.
21+
- Avoid unnecessary curly braces in conditionals; use concise syntax for simple statements.
22+
- Use declarative JSX.
23+
24+
UI and Styling
25+
- Use Shadcn UI, Radix, and Tailwind for components and styling.
26+
- Implement responsive design with Tailwind CSS; use a mobile-first approach.
27+
28+
Performance Optimization
29+
- Minimize 'use client', 'useEffect', and 'setState'; favor React Server Components (RSC).
30+
- Wrap client components in Suspense with fallback.
31+
- Use dynamic loading for non-critical components.
32+
- Optimize images: use WebP format, include size data, implement lazy loading.
33+
34+
Key Conventions.
35+
- Optimize Web Vitals (LCP, CLS, FID).
36+
- Limit 'use client':
37+
- Favor server components and Next.js SSR.
38+
- Use only for Web API access in small components.
39+
- Avoid for data fetching or state management.
40+
41+
Follow Next.js docs for Data Fetching, Rendering, and Routing.

components.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,15 @@
77
"config": "tailwind.config.js",
88
"css": "src/app/globals.css",
99
"baseColor": "slate",
10-
"cssVariables": true
10+
"cssVariables": true,
11+
"prefix": ""
1112
},
1213
"aliases": {
1314
"components": "~/components",
14-
"utils": "~/lib/utils"
15-
}
15+
"utils": "~/lib/utils",
16+
"ui": "~/components/ui",
17+
"lib": "~/lib",
18+
"hooks": "~/hooks"
19+
},
20+
"iconLibrary": "lucide"
1621
}

package.json

Lines changed: 75 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -15,65 +15,90 @@
1515
"release": "release-it"
1616
},
1717
"dependencies": {
18-
"@hookform/resolvers": "^3.9.1",
18+
"@hookform/resolvers": "^3.10.0",
1919
"@oslojs/crypto": "^1.0.1",
2020
"@oslojs/encoding": "^1.1.0",
21-
"@prisma/client": "^5.22.0",
22-
"@radix-ui/react-alert-dialog": "^1.1.2",
23-
"@radix-ui/react-avatar": "^1.1.1",
24-
"@radix-ui/react-dialog": "^1.1.2",
25-
"@radix-ui/react-dropdown-menu": "^2.1.2",
26-
"@radix-ui/react-label": "^2.1.0",
27-
"@radix-ui/react-menubar": "^1.1.2",
28-
"@radix-ui/react-select": "^2.1.2",
29-
"@radix-ui/react-slot": "^1.1.0",
30-
"@radix-ui/react-tabs": "^1.1.1",
31-
"@radix-ui/react-toast": "^1.2.2",
32-
"@react-email/components": "^0.0.28",
33-
"@serwist/next": "^9.0.10",
34-
"@uploadthing/react": "^7.1.1",
35-
"arctic": "^2.2.2",
21+
"@prisma/client": "^6.2.1",
22+
"@radix-ui/react-accordion": "^1.2.3",
23+
"@radix-ui/react-alert-dialog": "^1.1.4",
24+
"@radix-ui/react-aspect-ratio": "^1.1.2",
25+
"@radix-ui/react-avatar": "^1.1.2",
26+
"@radix-ui/react-checkbox": "^1.1.4",
27+
"@radix-ui/react-collapsible": "^1.1.3",
28+
"@radix-ui/react-context-menu": "^2.2.6",
29+
"@radix-ui/react-dialog": "^1.1.4",
30+
"@radix-ui/react-dropdown-menu": "^2.1.4",
31+
"@radix-ui/react-hover-card": "^1.1.6",
32+
"@radix-ui/react-label": "^2.1.1",
33+
"@radix-ui/react-menubar": "^1.1.4",
34+
"@radix-ui/react-navigation-menu": "^1.2.5",
35+
"@radix-ui/react-popover": "^1.1.6",
36+
"@radix-ui/react-progress": "^1.1.2",
37+
"@radix-ui/react-radio-group": "^1.2.3",
38+
"@radix-ui/react-scroll-area": "^1.2.3",
39+
"@radix-ui/react-select": "^2.1.4",
40+
"@radix-ui/react-separator": "^1.1.2",
41+
"@radix-ui/react-slider": "^1.2.3",
42+
"@radix-ui/react-slot": "^1.1.1",
43+
"@radix-ui/react-switch": "^1.1.3",
44+
"@radix-ui/react-tabs": "^1.1.2",
45+
"@radix-ui/react-toast": "^1.2.4",
46+
"@radix-ui/react-toggle": "^1.1.2",
47+
"@radix-ui/react-toggle-group": "^1.1.2",
48+
"@radix-ui/react-tooltip": "^1.1.8",
49+
"@react-email/components": "^0.0.32",
50+
"@serwist/next": "^9.0.11",
51+
"@uploadthing/react": "^7.1.5",
52+
"arctic": "^3.1.3",
53+
"cmdk": "^1.1.1",
54+
"date-fns": "^4.1.0",
3655
"dayjs": "^1.11.13",
37-
"input-otp": "^1.4.1",
38-
"lucide-react": "^0.460.0",
39-
"next": "15.0.3",
56+
"embla-carousel-react": "^8.5.2",
57+
"input-otp": "^1.4.2",
58+
"lucide-react": "^0.471.1",
59+
"next": "15.1.4",
4060
"next-international": "^1.3.1",
41-
"next-safe-action": "^7.9.9",
42-
"next-themes": "^0.4.3",
43-
"postcss": "8.4.49",
44-
"react": "18.3.1",
45-
"react-dom": "18.3.1",
46-
"react-email": "3.0.2",
47-
"react-hook-form": "^7.53.2",
48-
"resend": "^4.0.0",
49-
"stripe": "^14.25.0",
50-
"uploadthing": "^7.3.0",
51-
"zod": "^3.23.8"
61+
"next-safe-action": "^7.10.2",
62+
"next-themes": "^0.4.4",
63+
"postcss": "8.5.1",
64+
"react": "19.0.0",
65+
"react-day-picker": "8.10.1",
66+
"react-dom": "19.0.0",
67+
"react-email": "3.0.6",
68+
"react-hook-form": "^7.54.2",
69+
"react-resizable-panels": "^2.1.7",
70+
"recharts": "^2.15.2",
71+
"resend": "^4.1.1",
72+
"sonner": "^2.0.3",
73+
"stripe": "^17.5.0",
74+
"uploadthing": "^7.4.4",
75+
"vaul": "^1.1.2",
76+
"zod": "^3.24.1"
5277
},
5378
"devDependencies": {
5479
"@tailwindcss/line-clamp": "^0.4.4",
55-
"@tailwindcss/typography": "^0.5.15",
56-
"@types/node": "22.9.0",
57-
"@types/react": "18.3.12",
58-
"@types/react-dom": "18.3.1",
80+
"@tailwindcss/typography": "^0.5.16",
81+
"@types/node": "22.10.7",
82+
"@types/react": "19.0.7",
83+
"@types/react-dom": "19.0.3",
5984
"autoprefixer": "10.4.20",
60-
"class-variance-authority": "^0.7.0",
85+
"class-variance-authority": "^0.7.1",
6186
"clsx": "^2.1.1",
62-
"eslint": "8.56.0",
63-
"eslint-config-next": "15.0.3",
64-
"eslint-config-prettier": "^8.10.0",
65-
"lefthook": "^1.8.4",
66-
"prettier": "3.3.3",
67-
"prettier-plugin-tailwindcss": "^0.6.8",
68-
"prisma": "^5.22.0",
69-
"release-it": "^17.10.0",
70-
"release-it-pnpm": "^4.6.3",
71-
"serwist": "^9.0.10",
72-
"tailwind-merge": "^2.5.4",
73-
"tailwindcss": "3.4.15",
87+
"eslint": "9.18.0",
88+
"eslint-config-next": "15.1.4",
89+
"eslint-config-prettier": "^10.0.1",
90+
"lefthook": "^1.10.7",
91+
"prettier": "3.4.2",
92+
"prettier-plugin-tailwindcss": "^0.6.10",
93+
"prisma": "^6.2.1",
94+
"release-it": "^18.1.1",
95+
"release-it-pnpm": "^4.6.4",
96+
"serwist": "^9.0.11",
97+
"tailwind-merge": "^2.6.0",
98+
"tailwindcss": "3.4.17",
7499
"tailwindcss-animate": "^1.0.7",
75-
"typescript": "5.6.3",
76-
"velite": "0.2.1"
100+
"typescript": "5.7.3",
101+
"velite": "0.2.2"
77102
},
78-
"packageManager": "pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee"
103+
"packageManager": "pnpm@10.4.1"
79104
}

0 commit comments

Comments
 (0)