Spaces:
Sleeping
Sleeping
Commit
Β·
e0d6b69
1
Parent(s):
c6f90aa
chore: rearrange the folder structure and add shadcn/ui to manage the ui comp
Browse files- .gitignore +3 -0
- app/components/ThemeProvider.tsx +0 -46
- app/for-students/components/ChatBotCard.tsx +0 -36
- app/for-students/page.tsx +5 -5
- app/globals.css +61 -41
- app/layout.tsx +9 -4
- app/page.tsx +1 -1
- components.json +21 -0
- components/custom/ChatBotCard.tsx +43 -0
- {app/for-students/components β components/custom}/ChatBotGrid.tsx +0 -0
- {app/for-students/components β components/custom}/ChatBotGridSkeleton.tsx +0 -0
- {app/components β components/custom}/LandingPageChatBot.tsx +0 -0
- {app/for-students/components β components/custom}/SearchBar.tsx +0 -0
- {app/for-students/components β components/custom}/SubjectFilter.tsx +0 -0
- components/custom/theme-provider.tsx +22 -0
- app/components/TopNav.tsx β components/custom/top-nav.tsx +66 -9
- components/ui/button.tsx +57 -0
- components/ui/card.tsx +76 -0
- components/ui/dropdown-menu.tsx +201 -0
- lib/utils.ts +6 -0
- package.json +8 -0
- pnpm-lock.yaml +732 -0
- tailwind.config.ts +72 -49
.gitignore
CHANGED
@@ -48,3 +48,6 @@ env/
|
|
48 |
venv/
|
49 |
.env
|
50 |
node_modules
|
|
|
|
|
|
|
|
48 |
venv/
|
49 |
.env
|
50 |
node_modules
|
51 |
+
|
52 |
+
# local files
|
53 |
+
/local_files
|
app/components/ThemeProvider.tsx
DELETED
@@ -1,46 +0,0 @@
|
|
1 |
-
'use client'
|
2 |
-
|
3 |
-
import { createContext, useContext, useEffect, useState } from 'react'
|
4 |
-
|
5 |
-
type Theme = 'light' | 'dark'
|
6 |
-
|
7 |
-
type ThemeContextType = {
|
8 |
-
theme: Theme
|
9 |
-
toggleTheme: () => void
|
10 |
-
}
|
11 |
-
|
12 |
-
const ThemeContext = createContext<ThemeContextType | undefined>(undefined)
|
13 |
-
|
14 |
-
export function ThemeProvider({ children }: { children: React.ReactNode }) {
|
15 |
-
const [theme, setTheme] = useState<Theme>('light')
|
16 |
-
|
17 |
-
useEffect(() => {
|
18 |
-
// On mount, read theme from localStorage or default to light
|
19 |
-
const savedTheme = localStorage.getItem('theme') as Theme
|
20 |
-
if (savedTheme) {
|
21 |
-
setTheme(savedTheme)
|
22 |
-
document.documentElement.setAttribute('data-theme', savedTheme)
|
23 |
-
}
|
24 |
-
}, [])
|
25 |
-
|
26 |
-
const toggleTheme = () => {
|
27 |
-
const newTheme = theme === 'light' ? 'dark' : 'light'
|
28 |
-
setTheme(newTheme)
|
29 |
-
localStorage.setItem('theme', newTheme)
|
30 |
-
document.documentElement.setAttribute('data-theme', newTheme)
|
31 |
-
}
|
32 |
-
|
33 |
-
return (
|
34 |
-
<ThemeContext.Provider value={{ theme, toggleTheme }}>
|
35 |
-
{children}
|
36 |
-
</ThemeContext.Provider>
|
37 |
-
)
|
38 |
-
}
|
39 |
-
|
40 |
-
export function useTheme() {
|
41 |
-
const context = useContext(ThemeContext)
|
42 |
-
if (context === undefined) {
|
43 |
-
throw new Error('useTheme must be used within a ThemeProvider')
|
44 |
-
}
|
45 |
-
return context
|
46 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/for-students/components/ChatBotCard.tsx
DELETED
@@ -1,36 +0,0 @@
|
|
1 |
-
interface ChatBotCardProps {
|
2 |
-
chatbot: {
|
3 |
-
id: string
|
4 |
-
title: string
|
5 |
-
description: string
|
6 |
-
subject: string
|
7 |
-
icon: string
|
8 |
-
author?: string
|
9 |
-
}
|
10 |
-
}
|
11 |
-
|
12 |
-
export default function ChatBotCard({ chatbot }: ChatBotCardProps) {
|
13 |
-
return (
|
14 |
-
<div className="group relative overflow-hidden rounded-2xl border border-border/50 bg-background-primary/50 p-6 shadow-sm transition-all hover:shadow-md backdrop-blur-sm">
|
15 |
-
<div className="mb-4 flex items-center justify-between">
|
16 |
-
<div className="flex items-center gap-3">
|
17 |
-
<span className="text-3xl">{chatbot.icon}</span>
|
18 |
-
<h3 className="text-xl font-semibold text-text-primary">{chatbot.title}</h3>
|
19 |
-
</div>
|
20 |
-
<span className="rounded-full bg-background-secondary/50 px-3 py-1 text-sm text-text-secondary">
|
21 |
-
{chatbot.subject}
|
22 |
-
</span>
|
23 |
-
</div>
|
24 |
-
|
25 |
-
<p className="mb-4 text-text-secondary">{chatbot.description}</p>
|
26 |
-
|
27 |
-
{chatbot.author && (
|
28 |
-
<p className="text-sm text-text-secondary">δ½θ
οΌ{chatbot.author}</p>
|
29 |
-
)}
|
30 |
-
|
31 |
-
<button className="mt-4 w-full rounded-xl bg-primary px-4 py-2 text-white transition-colors hover:bg-primary/90">
|
32 |
-
ιε§ε°θ©±
|
33 |
-
</button>
|
34 |
-
</div>
|
35 |
-
)
|
36 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/for-students/page.tsx
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import { Suspense } from 'react'
|
2 |
-
import ChatBotGrid from '
|
3 |
-
import SubjectFilter from '
|
4 |
-
import SearchBar from '
|
5 |
-
import ChatBotGridSkeleton from '
|
6 |
|
7 |
export default function ForStudentsPage() {
|
8 |
return (
|
@@ -33,4 +33,4 @@ export default function ForStudentsPage() {
|
|
33 |
</div>
|
34 |
</main>
|
35 |
)
|
36 |
-
}
|
|
|
1 |
import { Suspense } from 'react'
|
2 |
+
import ChatBotGrid from '@/components/custom/ChatBotGrid'
|
3 |
+
import SubjectFilter from '@/components/custom/SubjectFilter'
|
4 |
+
import SearchBar from '@/components/custom/SearchBar'
|
5 |
+
import ChatBotGridSkeleton from '@/components/custom/ChatBotGridSkeleton'
|
6 |
|
7 |
export default function ForStudentsPage() {
|
8 |
return (
|
|
|
33 |
</div>
|
34 |
</main>
|
35 |
)
|
36 |
+
}
|
app/globals.css
CHANGED
@@ -2,48 +2,68 @@
|
|
2 |
@tailwind components;
|
3 |
@tailwind utilities;
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
--card-border: rgba(51, 65, 85, 0.5); /* Transparent border */
|
38 |
-
--glass-background: rgba(15, 23, 42, 0.7); /* Transparent dark blue-gray */
|
39 |
-
}
|
40 |
-
|
41 |
-
body {
|
42 |
-
color: var(--text-primary);
|
43 |
-
background: var(--background-primary);
|
44 |
}
|
45 |
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
|
|
|
|
|
|
49 |
}
|
|
|
2 |
@tailwind components;
|
3 |
@tailwind utilities;
|
4 |
|
5 |
+
@layer base {
|
6 |
+
:root {
|
7 |
+
--background: 0 0% 100%;
|
8 |
+
--foreground: 20 14.3% 4.1%;
|
9 |
+
--card: 0 0% 100%;
|
10 |
+
--card-foreground: 20 14.3% 4.1%;
|
11 |
+
--popover: 0 0% 100%;
|
12 |
+
--popover-foreground: 20 14.3% 4.1%;
|
13 |
+
--primary: 24.6 95% 53.1%;
|
14 |
+
--primary-foreground: 60 9.1% 97.8%;
|
15 |
+
--secondary: 60 4.8% 95.9%;
|
16 |
+
--secondary-foreground: 24 9.8% 10%;
|
17 |
+
--muted: 60 4.8% 95.9%;
|
18 |
+
--muted-foreground: 25 5.3% 44.7%;
|
19 |
+
--accent: 60 4.8% 95.9%;
|
20 |
+
--accent-foreground: 24 9.8% 10%;
|
21 |
+
--destructive: 0 84.2% 60.2%;
|
22 |
+
--destructive-foreground: 60 9.1% 97.8%;
|
23 |
+
--border: 20 5.9% 90%;
|
24 |
+
--input: 20 5.9% 90%;
|
25 |
+
--ring: 24.6 95% 53.1%;
|
26 |
+
--radius: 1rem;
|
27 |
+
--chart-1: 12 76% 61%;
|
28 |
+
--chart-2: 173 58% 39%;
|
29 |
+
--chart-3: 197 37% 24%;
|
30 |
+
--chart-4: 43 74% 66%;
|
31 |
+
--chart-5: 27 87% 67%;
|
32 |
+
}
|
33 |
|
34 |
+
.dark {
|
35 |
+
--background: 20 14.3% 4.1%;
|
36 |
+
--foreground: 60 9.1% 97.8%;
|
37 |
+
--card: 20 14.3% 4.1%;
|
38 |
+
--card-foreground: 60 9.1% 97.8%;
|
39 |
+
--popover: 20 14.3% 4.1%;
|
40 |
+
--popover-foreground: 60 9.1% 97.8%;
|
41 |
+
--primary: 20.5 90.2% 48.2%;
|
42 |
+
--primary-foreground: 60 9.1% 97.8%;
|
43 |
+
--secondary: 12 6.5% 15.1%;
|
44 |
+
--secondary-foreground: 60 9.1% 97.8%;
|
45 |
+
--muted: 12 6.5% 15.1%;
|
46 |
+
--muted-foreground: 24 5.4% 63.9%;
|
47 |
+
--accent: 12 6.5% 15.1%;
|
48 |
+
--accent-foreground: 60 9.1% 97.8%;
|
49 |
+
--destructive: 0 72.2% 50.6%;
|
50 |
+
--destructive-foreground: 60 9.1% 97.8%;
|
51 |
+
--border: 12 6.5% 15.1%;
|
52 |
+
--input: 12 6.5% 15.1%;
|
53 |
+
--ring: 20.5 90.2% 48.2%;
|
54 |
+
--chart-1: 220 70% 50%;
|
55 |
+
--chart-2: 160 60% 45%;
|
56 |
+
--chart-3: 30 80% 55%;
|
57 |
+
--chart-4: 280 65% 60%;
|
58 |
+
--chart-5: 340 75% 55%;
|
59 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
|
62 |
+
@layer base {
|
63 |
+
* {
|
64 |
+
@apply border-border;
|
65 |
+
}
|
66 |
+
body {
|
67 |
+
@apply bg-background text-foreground;
|
68 |
+
}
|
69 |
}
|
app/layout.tsx
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
import type { Metadata } from "next";
|
2 |
import localFont from "next/font/local";
|
3 |
import "./globals.css";
|
4 |
-
import { ThemeProvider } from '
|
5 |
-
import { TopNav } from '
|
6 |
|
7 |
const geistSans = localFont({
|
8 |
src: "./fonts/GeistVF.woff",
|
@@ -21,9 +21,14 @@ export default function RootLayout({
|
|
21 |
children: React.ReactNode
|
22 |
}) {
|
23 |
return (
|
24 |
-
<html lang="en" className={`${geistSans.variable}`}>
|
25 |
<body className="antialiased">
|
26 |
-
<ThemeProvider
|
|
|
|
|
|
|
|
|
|
|
27 |
<TopNav />
|
28 |
<main className="pt-14">
|
29 |
{children}
|
|
|
1 |
import type { Metadata } from "next";
|
2 |
import localFont from "next/font/local";
|
3 |
import "./globals.css";
|
4 |
+
import { ThemeProvider } from '@/components/custom/theme-provider'
|
5 |
+
import { TopNav } from '../components/custom/top-nav'
|
6 |
|
7 |
const geistSans = localFont({
|
8 |
src: "./fonts/GeistVF.woff",
|
|
|
21 |
children: React.ReactNode
|
22 |
}) {
|
23 |
return (
|
24 |
+
<html lang="en" suppressHydrationWarning className={`${geistSans.variable}`}>
|
25 |
<body className="antialiased">
|
26 |
+
<ThemeProvider
|
27 |
+
attribute="class"
|
28 |
+
defaultTheme="system"
|
29 |
+
enableSystem
|
30 |
+
disableTransitionOnChange
|
31 |
+
>
|
32 |
<TopNav />
|
33 |
<main className="pt-14">
|
34 |
{children}
|
app/page.tsx
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
'use client'
|
2 |
|
3 |
import Link from "next/link"
|
4 |
-
import ChatBot from '
|
5 |
|
6 |
export default function LandingPage() {
|
7 |
return (
|
|
|
1 |
'use client'
|
2 |
|
3 |
import Link from "next/link"
|
4 |
+
import ChatBot from '@/components/custom/LandingPageChatBot'
|
5 |
|
6 |
export default function LandingPage() {
|
7 |
return (
|
components.json
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"$schema": "https://ui.shadcn.com/schema.json",
|
3 |
+
"style": "new-york",
|
4 |
+
"rsc": true,
|
5 |
+
"tsx": true,
|
6 |
+
"tailwind": {
|
7 |
+
"config": "tailwind.config.ts",
|
8 |
+
"css": "app/globals.css",
|
9 |
+
"baseColor": "neutral",
|
10 |
+
"cssVariables": true,
|
11 |
+
"prefix": ""
|
12 |
+
},
|
13 |
+
"aliases": {
|
14 |
+
"components": "@/components",
|
15 |
+
"utils": "@/lib/utils",
|
16 |
+
"ui": "@/components/ui",
|
17 |
+
"lib": "@/lib",
|
18 |
+
"hooks": "@/hooks"
|
19 |
+
},
|
20 |
+
"iconLibrary": "lucide"
|
21 |
+
}
|
components/custom/ChatBotCard.tsx
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { Card, CardHeader, CardContent, CardFooter } from "@/components/ui/card"
|
2 |
+
|
3 |
+
interface ChatBotCardProps {
|
4 |
+
chatbot: {
|
5 |
+
id: string
|
6 |
+
title: string
|
7 |
+
description: string
|
8 |
+
subject: string
|
9 |
+
icon: string
|
10 |
+
author?: string
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
export default function ChatBotCard({ chatbot }: ChatBotCardProps) {
|
15 |
+
return (
|
16 |
+
<Card className="group relative overflow-hidden bg-background-primary/50 shadow-sm transition-all hover:shadow-md backdrop-blur-sm">
|
17 |
+
<CardHeader className="space-y-0">
|
18 |
+
<div className="flex items-center justify-between">
|
19 |
+
<div className="flex items-center gap-3">
|
20 |
+
<span className="text-3xl">{chatbot.icon}</span>
|
21 |
+
<h3 className="text-xl font-semibold text-text-primary">{chatbot.title}</h3>
|
22 |
+
</div>
|
23 |
+
<span className="rounded-full bg-background-secondary/50 px-3 py-1 text-sm text-text-secondary">
|
24 |
+
{chatbot.subject}
|
25 |
+
</span>
|
26 |
+
</div>
|
27 |
+
</CardHeader>
|
28 |
+
|
29 |
+
<CardContent>
|
30 |
+
<p className="text-text-secondary">{chatbot.description}</p>
|
31 |
+
{chatbot.author && (
|
32 |
+
<p className="mt-2 text-sm text-text-secondary">δ½θ
οΌ{chatbot.author}</p>
|
33 |
+
)}
|
34 |
+
</CardContent>
|
35 |
+
|
36 |
+
<CardFooter>
|
37 |
+
<button className="w-full rounded-xl bg-primary px-4 py-2 text-white transition-colors hover:bg-primary/90">
|
38 |
+
ιε§ε°θ©±
|
39 |
+
</button>
|
40 |
+
</CardFooter>
|
41 |
+
</Card>
|
42 |
+
)
|
43 |
+
}
|
{app/for-students/components β components/custom}/ChatBotGrid.tsx
RENAMED
File without changes
|
{app/for-students/components β components/custom}/ChatBotGridSkeleton.tsx
RENAMED
File without changes
|
{app/components β components/custom}/LandingPageChatBot.tsx
RENAMED
File without changes
|
{app/for-students/components β components/custom}/SearchBar.tsx
RENAMED
File without changes
|
{app/for-students/components β components/custom}/SubjectFilter.tsx
RENAMED
File without changes
|
components/custom/theme-provider.tsx
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client"
|
2 |
+
|
3 |
+
import * as React from "react"
|
4 |
+
import { ThemeProvider as NextThemesProvider } from "next-themes"
|
5 |
+
|
6 |
+
export function ThemeProvider({
|
7 |
+
children,
|
8 |
+
...props
|
9 |
+
}: React.ComponentProps<typeof NextThemesProvider>) {
|
10 |
+
const [mounted, setMounted] = React.useState(false)
|
11 |
+
|
12 |
+
// Prevent hydration mismatch by only rendering after mount
|
13 |
+
React.useEffect(() => {
|
14 |
+
setMounted(true)
|
15 |
+
}, [])
|
16 |
+
|
17 |
+
if (!mounted) {
|
18 |
+
return null
|
19 |
+
}
|
20 |
+
|
21 |
+
return <NextThemesProvider {...props}>{children}</NextThemesProvider>
|
22 |
+
}
|
app/components/TopNav.tsx β components/custom/top-nav.tsx
RENAMED
@@ -1,10 +1,53 @@
|
|
1 |
'use client'
|
2 |
|
|
|
|
|
|
|
3 |
import Link from 'next/link'
|
4 |
-
import {
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
export function TopNav() {
|
7 |
-
const {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
return (
|
10 |
<header className="fixed w-full bg-background-secondary/80 backdrop-blur-sm border-b border-border z-50">
|
@@ -27,13 +70,27 @@ export function TopNav() {
|
|
27 |
ζζ―εΈη
|
28 |
</Link>
|
29 |
</nav>
|
30 |
-
<
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
</div>
|
37 |
</header>
|
38 |
)
|
39 |
-
}
|
|
|
1 |
'use client'
|
2 |
|
3 |
+
import * as React from 'react'
|
4 |
+
import { Moon, Sun } from "lucide-react"
|
5 |
+
import { useTheme } from "next-themes"
|
6 |
import Link from 'next/link'
|
7 |
+
import { Button } from "@/components/ui/button"
|
8 |
+
import {
|
9 |
+
DropdownMenu,
|
10 |
+
DropdownMenuContent,
|
11 |
+
DropdownMenuItem,
|
12 |
+
DropdownMenuTrigger,
|
13 |
+
} from "@/components/ui/dropdown-menu"
|
14 |
|
15 |
export function TopNav() {
|
16 |
+
const { setTheme } = useTheme()
|
17 |
+
const [mounted, setMounted] = React.useState(false)
|
18 |
+
|
19 |
+
React.useEffect(() => {
|
20 |
+
setMounted(true)
|
21 |
+
}, [])
|
22 |
+
|
23 |
+
// Prevent theme toggle from showing before client-side hydration
|
24 |
+
if (!mounted) {
|
25 |
+
return (
|
26 |
+
<header className="fixed w-full bg-background-secondary/80 backdrop-blur-sm border-b border-border z-50">
|
27 |
+
<div className="container mx-auto px-4 py-4 flex items-center">
|
28 |
+
<Link href="/" className="text-3xl font-bold">
|
29 |
+
<span className="text-[#FF6B6B]">P</span>
|
30 |
+
<span className="text-[#4ECDC4]">l</span>
|
31 |
+
<span className="text-[#45B7D1]">a</span>
|
32 |
+
<span className="text-[#FDCB6E]">y</span>
|
33 |
+
<span className="text-[#FF6B6B]">G</span>
|
34 |
+
<span className="text-[#4ECDC4]">o</span>
|
35 |
+
<span className="ml-2 text-[#45B7D1]">A</span>
|
36 |
+
<span className="text-[#FDCB6E]">I</span>
|
37 |
+
</Link>
|
38 |
+
<nav className="flex items-center justify-center flex-1 space-x-8">
|
39 |
+
<Link href="/for-teachers" className="text-text-secondary hover:text-primary">
|
40 |
+
ζζ―θεΈ«
|
41 |
+
</Link>
|
42 |
+
<Link href="/for-students" className="text-text-secondary hover:text-primary">
|
43 |
+
ζζ―εΈη
|
44 |
+
</Link>
|
45 |
+
</nav>
|
46 |
+
<div className="w-9 h-9" /> {/* Placeholder for theme toggle */}
|
47 |
+
</div>
|
48 |
+
</header>
|
49 |
+
)
|
50 |
+
}
|
51 |
|
52 |
return (
|
53 |
<header className="fixed w-full bg-background-secondary/80 backdrop-blur-sm border-b border-border z-50">
|
|
|
70 |
ζζ―εΈη
|
71 |
</Link>
|
72 |
</nav>
|
73 |
+
<DropdownMenu>
|
74 |
+
<DropdownMenuTrigger asChild>
|
75 |
+
<Button>
|
76 |
+
<Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" />
|
77 |
+
<Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" />
|
78 |
+
<span className="sr-only">Toggle theme</span>
|
79 |
+
</Button>
|
80 |
+
</DropdownMenuTrigger>
|
81 |
+
<DropdownMenuContent align="end">
|
82 |
+
<DropdownMenuItem onClick={() => setTheme("light")}>
|
83 |
+
Light
|
84 |
+
</DropdownMenuItem>
|
85 |
+
<DropdownMenuItem onClick={() => setTheme("dark")}>
|
86 |
+
Dark
|
87 |
+
</DropdownMenuItem>
|
88 |
+
<DropdownMenuItem onClick={() => setTheme("system")}>
|
89 |
+
System
|
90 |
+
</DropdownMenuItem>
|
91 |
+
</DropdownMenuContent>
|
92 |
+
</DropdownMenu>
|
93 |
</div>
|
94 |
</header>
|
95 |
)
|
96 |
+
}
|
components/ui/button.tsx
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
import { Slot } from "@radix-ui/react-slot"
|
3 |
+
import { cva, type VariantProps } from "class-variance-authority"
|
4 |
+
|
5 |
+
import { cn } from "@/lib/utils"
|
6 |
+
|
7 |
+
const buttonVariants = cva(
|
8 |
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
9 |
+
{
|
10 |
+
variants: {
|
11 |
+
variant: {
|
12 |
+
default:
|
13 |
+
"bg-primary text-primary-foreground shadow hover:bg-primary/90",
|
14 |
+
destructive:
|
15 |
+
"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
|
16 |
+
outline:
|
17 |
+
"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
|
18 |
+
secondary:
|
19 |
+
"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
|
20 |
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
21 |
+
link: "text-primary underline-offset-4 hover:underline",
|
22 |
+
},
|
23 |
+
size: {
|
24 |
+
default: "h-9 px-4 py-2",
|
25 |
+
sm: "h-8 rounded-md px-3 text-xs",
|
26 |
+
lg: "h-10 rounded-md px-8",
|
27 |
+
icon: "h-9 w-9",
|
28 |
+
},
|
29 |
+
},
|
30 |
+
defaultVariants: {
|
31 |
+
variant: "default",
|
32 |
+
size: "default",
|
33 |
+
},
|
34 |
+
}
|
35 |
+
)
|
36 |
+
|
37 |
+
export interface ButtonProps
|
38 |
+
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
|
39 |
+
VariantProps<typeof buttonVariants> {
|
40 |
+
asChild?: boolean
|
41 |
+
}
|
42 |
+
|
43 |
+
const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
|
44 |
+
({ className, variant, size, asChild = false, ...props }, ref) => {
|
45 |
+
const Comp = asChild ? Slot : "button"
|
46 |
+
return (
|
47 |
+
<Comp
|
48 |
+
className={cn(buttonVariants({ variant, size, className }))}
|
49 |
+
ref={ref}
|
50 |
+
{...props}
|
51 |
+
/>
|
52 |
+
)
|
53 |
+
}
|
54 |
+
)
|
55 |
+
Button.displayName = "Button"
|
56 |
+
|
57 |
+
export { Button, buttonVariants }
|
components/ui/card.tsx
ADDED
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
|
3 |
+
import { cn } from "@/lib/utils"
|
4 |
+
|
5 |
+
const Card = React.forwardRef<
|
6 |
+
HTMLDivElement,
|
7 |
+
React.HTMLAttributes<HTMLDivElement>
|
8 |
+
>(({ className, ...props }, ref) => (
|
9 |
+
<div
|
10 |
+
ref={ref}
|
11 |
+
className={cn(
|
12 |
+
"rounded-xl border bg-card text-card-foreground shadow",
|
13 |
+
className
|
14 |
+
)}
|
15 |
+
{...props}
|
16 |
+
/>
|
17 |
+
))
|
18 |
+
Card.displayName = "Card"
|
19 |
+
|
20 |
+
const CardHeader = React.forwardRef<
|
21 |
+
HTMLDivElement,
|
22 |
+
React.HTMLAttributes<HTMLDivElement>
|
23 |
+
>(({ className, ...props }, ref) => (
|
24 |
+
<div
|
25 |
+
ref={ref}
|
26 |
+
className={cn("flex flex-col space-y-1.5 p-6", className)}
|
27 |
+
{...props}
|
28 |
+
/>
|
29 |
+
))
|
30 |
+
CardHeader.displayName = "CardHeader"
|
31 |
+
|
32 |
+
const CardTitle = React.forwardRef<
|
33 |
+
HTMLDivElement,
|
34 |
+
React.HTMLAttributes<HTMLDivElement>
|
35 |
+
>(({ className, ...props }, ref) => (
|
36 |
+
<div
|
37 |
+
ref={ref}
|
38 |
+
className={cn("font-semibold leading-none tracking-tight", className)}
|
39 |
+
{...props}
|
40 |
+
/>
|
41 |
+
))
|
42 |
+
CardTitle.displayName = "CardTitle"
|
43 |
+
|
44 |
+
const CardDescription = React.forwardRef<
|
45 |
+
HTMLDivElement,
|
46 |
+
React.HTMLAttributes<HTMLDivElement>
|
47 |
+
>(({ className, ...props }, ref) => (
|
48 |
+
<div
|
49 |
+
ref={ref}
|
50 |
+
className={cn("text-sm text-muted-foreground", className)}
|
51 |
+
{...props}
|
52 |
+
/>
|
53 |
+
))
|
54 |
+
CardDescription.displayName = "CardDescription"
|
55 |
+
|
56 |
+
const CardContent = React.forwardRef<
|
57 |
+
HTMLDivElement,
|
58 |
+
React.HTMLAttributes<HTMLDivElement>
|
59 |
+
>(({ className, ...props }, ref) => (
|
60 |
+
<div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
|
61 |
+
))
|
62 |
+
CardContent.displayName = "CardContent"
|
63 |
+
|
64 |
+
const CardFooter = React.forwardRef<
|
65 |
+
HTMLDivElement,
|
66 |
+
React.HTMLAttributes<HTMLDivElement>
|
67 |
+
>(({ className, ...props }, ref) => (
|
68 |
+
<div
|
69 |
+
ref={ref}
|
70 |
+
className={cn("flex items-center p-6 pt-0", className)}
|
71 |
+
{...props}
|
72 |
+
/>
|
73 |
+
))
|
74 |
+
CardFooter.displayName = "CardFooter"
|
75 |
+
|
76 |
+
export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }
|
components/ui/dropdown-menu.tsx
ADDED
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client"
|
2 |
+
|
3 |
+
import * as React from "react"
|
4 |
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
|
5 |
+
import { Check, ChevronRight, Circle } from "lucide-react"
|
6 |
+
|
7 |
+
import { cn } from "@/lib/utils"
|
8 |
+
|
9 |
+
const DropdownMenu = DropdownMenuPrimitive.Root
|
10 |
+
|
11 |
+
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger
|
12 |
+
|
13 |
+
const DropdownMenuGroup = DropdownMenuPrimitive.Group
|
14 |
+
|
15 |
+
const DropdownMenuPortal = DropdownMenuPrimitive.Portal
|
16 |
+
|
17 |
+
const DropdownMenuSub = DropdownMenuPrimitive.Sub
|
18 |
+
|
19 |
+
const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup
|
20 |
+
|
21 |
+
const DropdownMenuSubTrigger = React.forwardRef<
|
22 |
+
React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
|
23 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
|
24 |
+
inset?: boolean
|
25 |
+
}
|
26 |
+
>(({ className, inset, children, ...props }, ref) => (
|
27 |
+
<DropdownMenuPrimitive.SubTrigger
|
28 |
+
ref={ref}
|
29 |
+
className={cn(
|
30 |
+
"flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
31 |
+
inset && "pl-8",
|
32 |
+
className
|
33 |
+
)}
|
34 |
+
{...props}
|
35 |
+
>
|
36 |
+
{children}
|
37 |
+
<ChevronRight className="ml-auto" />
|
38 |
+
</DropdownMenuPrimitive.SubTrigger>
|
39 |
+
))
|
40 |
+
DropdownMenuSubTrigger.displayName =
|
41 |
+
DropdownMenuPrimitive.SubTrigger.displayName
|
42 |
+
|
43 |
+
const DropdownMenuSubContent = React.forwardRef<
|
44 |
+
React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
|
45 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
|
46 |
+
>(({ className, ...props }, ref) => (
|
47 |
+
<DropdownMenuPrimitive.SubContent
|
48 |
+
ref={ref}
|
49 |
+
className={cn(
|
50 |
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
51 |
+
className
|
52 |
+
)}
|
53 |
+
{...props}
|
54 |
+
/>
|
55 |
+
))
|
56 |
+
DropdownMenuSubContent.displayName =
|
57 |
+
DropdownMenuPrimitive.SubContent.displayName
|
58 |
+
|
59 |
+
const DropdownMenuContent = React.forwardRef<
|
60 |
+
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
|
61 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
|
62 |
+
>(({ className, sideOffset = 4, ...props }, ref) => (
|
63 |
+
<DropdownMenuPrimitive.Portal>
|
64 |
+
<DropdownMenuPrimitive.Content
|
65 |
+
ref={ref}
|
66 |
+
sideOffset={sideOffset}
|
67 |
+
className={cn(
|
68 |
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md",
|
69 |
+
"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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
70 |
+
className
|
71 |
+
)}
|
72 |
+
{...props}
|
73 |
+
/>
|
74 |
+
</DropdownMenuPrimitive.Portal>
|
75 |
+
))
|
76 |
+
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName
|
77 |
+
|
78 |
+
const DropdownMenuItem = React.forwardRef<
|
79 |
+
React.ElementRef<typeof DropdownMenuPrimitive.Item>,
|
80 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
|
81 |
+
inset?: boolean
|
82 |
+
}
|
83 |
+
>(({ className, inset, ...props }, ref) => (
|
84 |
+
<DropdownMenuPrimitive.Item
|
85 |
+
ref={ref}
|
86 |
+
className={cn(
|
87 |
+
"relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
|
88 |
+
inset && "pl-8",
|
89 |
+
className
|
90 |
+
)}
|
91 |
+
{...props}
|
92 |
+
/>
|
93 |
+
))
|
94 |
+
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName
|
95 |
+
|
96 |
+
const DropdownMenuCheckboxItem = React.forwardRef<
|
97 |
+
React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
|
98 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
|
99 |
+
>(({ className, children, checked, ...props }, ref) => (
|
100 |
+
<DropdownMenuPrimitive.CheckboxItem
|
101 |
+
ref={ref}
|
102 |
+
className={cn(
|
103 |
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
104 |
+
className
|
105 |
+
)}
|
106 |
+
checked={checked}
|
107 |
+
{...props}
|
108 |
+
>
|
109 |
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
110 |
+
<DropdownMenuPrimitive.ItemIndicator>
|
111 |
+
<Check className="h-4 w-4" />
|
112 |
+
</DropdownMenuPrimitive.ItemIndicator>
|
113 |
+
</span>
|
114 |
+
{children}
|
115 |
+
</DropdownMenuPrimitive.CheckboxItem>
|
116 |
+
))
|
117 |
+
DropdownMenuCheckboxItem.displayName =
|
118 |
+
DropdownMenuPrimitive.CheckboxItem.displayName
|
119 |
+
|
120 |
+
const DropdownMenuRadioItem = React.forwardRef<
|
121 |
+
React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
|
122 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
|
123 |
+
>(({ className, children, ...props }, ref) => (
|
124 |
+
<DropdownMenuPrimitive.RadioItem
|
125 |
+
ref={ref}
|
126 |
+
className={cn(
|
127 |
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
128 |
+
className
|
129 |
+
)}
|
130 |
+
{...props}
|
131 |
+
>
|
132 |
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
133 |
+
<DropdownMenuPrimitive.ItemIndicator>
|
134 |
+
<Circle className="h-2 w-2 fill-current" />
|
135 |
+
</DropdownMenuPrimitive.ItemIndicator>
|
136 |
+
</span>
|
137 |
+
{children}
|
138 |
+
</DropdownMenuPrimitive.RadioItem>
|
139 |
+
))
|
140 |
+
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName
|
141 |
+
|
142 |
+
const DropdownMenuLabel = React.forwardRef<
|
143 |
+
React.ElementRef<typeof DropdownMenuPrimitive.Label>,
|
144 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
145 |
+
inset?: boolean
|
146 |
+
}
|
147 |
+
>(({ className, inset, ...props }, ref) => (
|
148 |
+
<DropdownMenuPrimitive.Label
|
149 |
+
ref={ref}
|
150 |
+
className={cn(
|
151 |
+
"px-2 py-1.5 text-sm font-semibold",
|
152 |
+
inset && "pl-8",
|
153 |
+
className
|
154 |
+
)}
|
155 |
+
{...props}
|
156 |
+
/>
|
157 |
+
))
|
158 |
+
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName
|
159 |
+
|
160 |
+
const DropdownMenuSeparator = React.forwardRef<
|
161 |
+
React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
|
162 |
+
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
|
163 |
+
>(({ className, ...props }, ref) => (
|
164 |
+
<DropdownMenuPrimitive.Separator
|
165 |
+
ref={ref}
|
166 |
+
className={cn("-mx-1 my-1 h-px bg-muted", className)}
|
167 |
+
{...props}
|
168 |
+
/>
|
169 |
+
))
|
170 |
+
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName
|
171 |
+
|
172 |
+
const DropdownMenuShortcut = ({
|
173 |
+
className,
|
174 |
+
...props
|
175 |
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
176 |
+
return (
|
177 |
+
<span
|
178 |
+
className={cn("ml-auto text-xs tracking-widest opacity-60", className)}
|
179 |
+
{...props}
|
180 |
+
/>
|
181 |
+
)
|
182 |
+
}
|
183 |
+
DropdownMenuShortcut.displayName = "DropdownMenuShortcut"
|
184 |
+
|
185 |
+
export {
|
186 |
+
DropdownMenu,
|
187 |
+
DropdownMenuTrigger,
|
188 |
+
DropdownMenuContent,
|
189 |
+
DropdownMenuItem,
|
190 |
+
DropdownMenuCheckboxItem,
|
191 |
+
DropdownMenuRadioItem,
|
192 |
+
DropdownMenuLabel,
|
193 |
+
DropdownMenuSeparator,
|
194 |
+
DropdownMenuShortcut,
|
195 |
+
DropdownMenuGroup,
|
196 |
+
DropdownMenuPortal,
|
197 |
+
DropdownMenuSub,
|
198 |
+
DropdownMenuSubContent,
|
199 |
+
DropdownMenuSubTrigger,
|
200 |
+
DropdownMenuRadioGroup,
|
201 |
+
}
|
lib/utils.ts
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import { clsx, type ClassValue } from "clsx"
|
2 |
+
import { twMerge } from "tailwind-merge"
|
3 |
+
|
4 |
+
export function cn(...inputs: ClassValue[]) {
|
5 |
+
return twMerge(clsx(inputs))
|
6 |
+
}
|
package.json
CHANGED
@@ -10,10 +10,18 @@
|
|
10 |
},
|
11 |
"dependencies": {
|
12 |
"@heroicons/react": "^2.1.5",
|
|
|
|
|
13 |
"ai": "^3.4.31",
|
|
|
|
|
|
|
14 |
"next": "15.0.2",
|
|
|
15 |
"react": "19.0.0-rc-02c0e824-20241028",
|
16 |
"react-dom": "19.0.0-rc-02c0e824-20241028",
|
|
|
|
|
17 |
"zod": "^3.23.8"
|
18 |
},
|
19 |
"devDependencies": {
|
|
|
10 |
},
|
11 |
"dependencies": {
|
12 |
"@heroicons/react": "^2.1.5",
|
13 |
+
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
14 |
+
"@radix-ui/react-slot": "^1.1.0",
|
15 |
"ai": "^3.4.31",
|
16 |
+
"class-variance-authority": "^0.7.0",
|
17 |
+
"clsx": "^2.1.1",
|
18 |
+
"lucide-react": "^0.456.0",
|
19 |
"next": "15.0.2",
|
20 |
+
"next-themes": "^0.4.3",
|
21 |
"react": "19.0.0-rc-02c0e824-20241028",
|
22 |
"react-dom": "19.0.0-rc-02c0e824-20241028",
|
23 |
+
"tailwind-merge": "^2.5.4",
|
24 |
+
"tailwindcss-animate": "^1.0.7",
|
25 |
"zod": "^3.23.8"
|
26 |
},
|
27 |
"devDependencies": {
|
pnpm-lock.yaml
CHANGED
@@ -11,18 +11,42 @@ importers:
|
|
11 |
'@heroicons/react':
|
12 |
specifier: ^2.1.5
|
13 |
version: 2.1.5([email protected])
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
ai:
|
15 |
specifier: ^3.4.31
|
16 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
next:
|
18 |
specifier: 15.0.2
|
19 |
version: 15.0.2(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
|
|
|
|
|
|
|
20 |
react:
|
21 |
specifier: 19.0.0-rc-02c0e824-20241028
|
22 |
version: 19.0.0-rc-02c0e824-20241028
|
23 |
react-dom:
|
24 |
specifier: 19.0.0-rc-02c0e824-20241028
|
25 |
version: 19.0.0-rc-02c0e824-20241028([email protected])
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
zod:
|
27 |
specifier: ^3.23.8
|
28 |
version: 3.23.8
|
@@ -164,6 +188,21 @@ packages:
|
|
164 |
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
|
165 |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
'@heroicons/[email protected]':
|
168 |
resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
|
169 |
peerDependencies:
|
@@ -387,6 +426,272 @@ packages:
|
|
387 |
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
388 |
engines: {node: '>=14'}
|
389 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
390 |
'@rtsao/[email protected]':
|
391 |
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
|
392 |
|
@@ -581,6 +886,10 @@ packages:
|
|
581 | |
582 |
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
583 |
|
|
|
|
|
|
|
|
|
584 | |
585 |
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
|
586 |
engines: {node: '>= 0.4'}
|
@@ -680,9 +989,20 @@ packages:
|
|
680 |
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
681 |
engines: {node: '>= 8.10.0'}
|
682 |
|
|
|
|
|
|
|
683 | |
684 |
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
685 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 | |
687 |
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
688 |
engines: {node: '>=7.0.0'}
|
@@ -763,6 +1083,9 @@ packages:
|
|
763 |
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
764 |
engines: {node: '>=8'}
|
765 |
|
|
|
|
|
|
|
766 | |
767 |
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
768 |
|
@@ -1021,6 +1344,10 @@ packages:
|
|
1021 |
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
|
1022 |
engines: {node: '>= 0.4'}
|
1023 |
|
|
|
|
|
|
|
|
|
1024 | |
1025 |
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
|
1026 |
engines: {node: '>= 0.4'}
|
@@ -1110,6 +1437,9 @@ packages:
|
|
1110 |
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
|
1111 |
engines: {node: '>= 0.4'}
|
1112 |
|
|
|
|
|
|
|
1113 | |
1114 |
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
|
1115 |
engines: {node: '>= 0.4'}
|
@@ -1319,6 +1649,11 @@ packages:
|
|
1319 | |
1320 |
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
1321 |
|
|
|
|
|
|
|
|
|
|
|
1322 | |
1323 |
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
|
1324 |
|
@@ -1358,6 +1693,12 @@ packages:
|
|
1358 | |
1359 |
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
1360 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1361 | |
1362 |
resolution: {integrity: sha512-rxIWHcAu4gGSDmwsELXacqAPUk+j8dV/A9cDF5fsiCMpkBDYkO2AEaL1dfD+nNmDiU6QMCFN8Q30VEKapT9UHQ==}
|
1363 |
engines: {node: '>=18.18.0'}
|
@@ -1546,6 +1887,36 @@ packages:
|
|
1546 | |
1547 |
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
1548 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1549 | |
1550 |
resolution: {integrity: sha512-GbZ7hpPHQMiEu53BqEaPQVM/4GG4hARo+mqEEnx4rYporDvNvUjutiAFxYFSbu6sgHwcr7LeFv8htEOwALVA2A==}
|
1551 |
engines: {node: '>=0.10.0'}
|
@@ -1748,6 +2119,14 @@ packages:
|
|
1748 |
peerDependencies:
|
1749 |
vue: '>=3.2.26 < 4'
|
1750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1751 | |
1752 |
resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==}
|
1753 |
engines: {node: '>=14.0.0'}
|
@@ -1828,6 +2207,26 @@ packages:
|
|
1828 | |
1829 |
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
1830 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1831 | |
1832 |
resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
|
1833 |
peerDependencies:
|
@@ -2009,6 +2408,23 @@ snapshots:
|
|
2009 |
|
2010 |
'@eslint/[email protected]': {}
|
2011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012 |
'@heroicons/[email protected]([email protected])':
|
2013 |
dependencies:
|
2014 |
react: 19.0.0-rc-02c0e824-20241028
|
@@ -2175,6 +2591,244 @@ snapshots:
|
|
2175 |
'@pkgjs/[email protected]':
|
2176 |
optional: true
|
2177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2178 |
'@rtsao/[email protected]': {}
|
2179 |
|
2180 |
'@rushstack/[email protected]': {}
|
@@ -2411,6 +3065,10 @@ snapshots:
|
|
2411 |
|
2412 | |
2413 |
|
|
|
|
|
|
|
|
|
2414 | |
2415 |
|
2416 | |
@@ -2542,8 +3200,16 @@ snapshots:
|
|
2542 |
optionalDependencies:
|
2543 |
fsevents: 2.3.3
|
2544 |
|
|
|
|
|
|
|
|
|
2545 | |
2546 |
|
|
|
|
|
|
|
|
|
2547 | |
2548 |
dependencies:
|
2549 |
color-name: 1.1.4
|
@@ -2621,6 +3287,8 @@ snapshots:
|
|
2621 | |
2622 |
optional: true
|
2623 |
|
|
|
|
|
2624 | |
2625 |
|
2626 | |
@@ -3033,6 +3701,8 @@ snapshots:
|
|
3033 |
has-symbols: 1.0.3
|
3034 |
hasown: 2.0.2
|
3035 |
|
|
|
|
|
3036 | |
3037 |
dependencies:
|
3038 |
call-bind: 1.0.7
|
@@ -3128,6 +3798,10 @@ snapshots:
|
|
3128 |
hasown: 2.0.2
|
3129 |
side-channel: 1.0.6
|
3130 |
|
|
|
|
|
|
|
|
|
3131 | |
3132 |
dependencies:
|
3133 |
call-bind: 1.0.7
|
@@ -3323,6 +3997,10 @@ snapshots:
|
|
3323 |
|
3324 | |
3325 |
|
|
|
|
|
|
|
|
|
3326 | |
3327 |
dependencies:
|
3328 |
'@jridgewell/sourcemap-codec': 1.5.0
|
@@ -3358,6 +4036,11 @@ snapshots:
|
|
3358 |
|
3359 | |
3360 |
|
|
|
|
|
|
|
|
|
|
|
3361 |
[email protected](@opentelemetry/[email protected])([email protected]([email protected]))([email protected]):
|
3362 |
dependencies:
|
3363 |
'@next/env': 15.0.2
|
@@ -3538,6 +4221,34 @@ snapshots:
|
|
3538 |
|
3539 | |
3540 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3541 | |
3542 |
|
3543 | |
@@ -3802,6 +4513,12 @@ snapshots:
|
|
3802 |
dependencies:
|
3803 |
vue: 3.5.12([email protected])
|
3804 |
|
|
|
|
|
|
|
|
|
|
|
|
|
3805 | |
3806 |
dependencies:
|
3807 |
'@alloc/quick-lru': 5.2.0
|
@@ -3915,6 +4632,21 @@ snapshots:
|
|
3915 |
dependencies:
|
3916 |
punycode: 2.3.1
|
3917 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3918 | |
3919 |
dependencies:
|
3920 |
react: 19.0.0-rc-02c0e824-20241028
|
|
|
11 |
'@heroicons/react':
|
12 |
specifier: ^2.1.5
|
13 |
version: 2.1.5([email protected])
|
14 |
+
'@radix-ui/react-dropdown-menu':
|
15 |
+
specifier: ^2.1.2
|
16 |
+
version: 2.1.2(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
17 |
+
'@radix-ui/react-slot':
|
18 |
+
specifier: ^1.1.0
|
19 |
+
version: 1.1.0(@types/[email protected])([email protected])
|
20 |
ai:
|
21 |
specifier: ^3.4.31
|
22 | |
23 |
+
class-variance-authority:
|
24 |
+
specifier: ^0.7.0
|
25 |
+
version: 0.7.0
|
26 |
+
clsx:
|
27 |
+
specifier: ^2.1.1
|
28 |
+
version: 2.1.1
|
29 |
+
lucide-react:
|
30 |
+
specifier: ^0.456.0
|
31 |
+
version: 0.456.0([email protected])
|
32 |
next:
|
33 |
specifier: 15.0.2
|
34 |
version: 15.0.2(@opentelemetry/[email protected])([email protected]([email protected]))([email protected])
|
35 |
+
next-themes:
|
36 |
+
specifier: ^0.4.3
|
37 |
+
version: 0.4.3([email protected]([email protected]))([email protected])
|
38 |
react:
|
39 |
specifier: 19.0.0-rc-02c0e824-20241028
|
40 |
version: 19.0.0-rc-02c0e824-20241028
|
41 |
react-dom:
|
42 |
specifier: 19.0.0-rc-02c0e824-20241028
|
43 |
version: 19.0.0-rc-02c0e824-20241028([email protected])
|
44 |
+
tailwind-merge:
|
45 |
+
specifier: ^2.5.4
|
46 |
+
version: 2.5.4
|
47 |
+
tailwindcss-animate:
|
48 |
+
specifier: ^1.0.7
|
49 |
+
version: 1.0.7([email protected])
|
50 |
zod:
|
51 |
specifier: ^3.23.8
|
52 |
version: 3.23.8
|
|
|
188 |
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
|
189 |
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
190 |
|
191 |
+
'@floating-ui/[email protected]':
|
192 |
+
resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==}
|
193 |
+
|
194 |
+
'@floating-ui/[email protected]':
|
195 |
+
resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==}
|
196 |
+
|
197 |
+
'@floating-ui/[email protected]':
|
198 |
+
resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
|
199 |
+
peerDependencies:
|
200 |
+
react: '>=16.8.0'
|
201 |
+
react-dom: '>=16.8.0'
|
202 |
+
|
203 |
+
'@floating-ui/[email protected]':
|
204 |
+
resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==}
|
205 |
+
|
206 |
'@heroicons/[email protected]':
|
207 |
resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
|
208 |
peerDependencies:
|
|
|
426 |
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
|
427 |
engines: {node: '>=14'}
|
428 |
|
429 |
+
'@radix-ui/[email protected]':
|
430 |
+
resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
|
431 |
+
|
432 |
+
'@radix-ui/[email protected]':
|
433 |
+
resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==}
|
434 |
+
peerDependencies:
|
435 |
+
'@types/react': '*'
|
436 |
+
'@types/react-dom': '*'
|
437 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
438 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
439 |
+
peerDependenciesMeta:
|
440 |
+
'@types/react':
|
441 |
+
optional: true
|
442 |
+
'@types/react-dom':
|
443 |
+
optional: true
|
444 |
+
|
445 |
+
'@radix-ui/[email protected]':
|
446 |
+
resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==}
|
447 |
+
peerDependencies:
|
448 |
+
'@types/react': '*'
|
449 |
+
'@types/react-dom': '*'
|
450 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
451 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
452 |
+
peerDependenciesMeta:
|
453 |
+
'@types/react':
|
454 |
+
optional: true
|
455 |
+
'@types/react-dom':
|
456 |
+
optional: true
|
457 |
+
|
458 |
+
'@radix-ui/[email protected]':
|
459 |
+
resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
|
460 |
+
peerDependencies:
|
461 |
+
'@types/react': '*'
|
462 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
463 |
+
peerDependenciesMeta:
|
464 |
+
'@types/react':
|
465 |
+
optional: true
|
466 |
+
|
467 |
+
'@radix-ui/[email protected]':
|
468 |
+
resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==}
|
469 |
+
peerDependencies:
|
470 |
+
'@types/react': '*'
|
471 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
472 |
+
peerDependenciesMeta:
|
473 |
+
'@types/react':
|
474 |
+
optional: true
|
475 |
+
|
476 |
+
'@radix-ui/[email protected]':
|
477 |
+
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
|
478 |
+
peerDependencies:
|
479 |
+
'@types/react': '*'
|
480 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
481 |
+
peerDependenciesMeta:
|
482 |
+
'@types/react':
|
483 |
+
optional: true
|
484 |
+
|
485 |
+
'@radix-ui/[email protected]':
|
486 |
+
resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
|
487 |
+
peerDependencies:
|
488 |
+
'@types/react': '*'
|
489 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
490 |
+
peerDependenciesMeta:
|
491 |
+
'@types/react':
|
492 |
+
optional: true
|
493 |
+
|
494 |
+
'@radix-ui/[email protected]':
|
495 |
+
resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==}
|
496 |
+
peerDependencies:
|
497 |
+
'@types/react': '*'
|
498 |
+
'@types/react-dom': '*'
|
499 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
500 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
501 |
+
peerDependenciesMeta:
|
502 |
+
'@types/react':
|
503 |
+
optional: true
|
504 |
+
'@types/react-dom':
|
505 |
+
optional: true
|
506 |
+
|
507 |
+
'@radix-ui/[email protected]':
|
508 |
+
resolution: {integrity: sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==}
|
509 |
+
peerDependencies:
|
510 |
+
'@types/react': '*'
|
511 |
+
'@types/react-dom': '*'
|
512 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
513 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
514 |
+
peerDependenciesMeta:
|
515 |
+
'@types/react':
|
516 |
+
optional: true
|
517 |
+
'@types/react-dom':
|
518 |
+
optional: true
|
519 |
+
|
520 |
+
'@radix-ui/[email protected]':
|
521 |
+
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
|
522 |
+
peerDependencies:
|
523 |
+
'@types/react': '*'
|
524 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
525 |
+
peerDependenciesMeta:
|
526 |
+
'@types/react':
|
527 |
+
optional: true
|
528 |
+
|
529 |
+
'@radix-ui/[email protected]':
|
530 |
+
resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
|
531 |
+
peerDependencies:
|
532 |
+
'@types/react': '*'
|
533 |
+
'@types/react-dom': '*'
|
534 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
535 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
536 |
+
peerDependenciesMeta:
|
537 |
+
'@types/react':
|
538 |
+
optional: true
|
539 |
+
'@types/react-dom':
|
540 |
+
optional: true
|
541 |
+
|
542 |
+
'@radix-ui/[email protected]':
|
543 |
+
resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
|
544 |
+
peerDependencies:
|
545 |
+
'@types/react': '*'
|
546 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
547 |
+
peerDependenciesMeta:
|
548 |
+
'@types/react':
|
549 |
+
optional: true
|
550 |
+
|
551 |
+
'@radix-ui/[email protected]':
|
552 |
+
resolution: {integrity: sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==}
|
553 |
+
peerDependencies:
|
554 |
+
'@types/react': '*'
|
555 |
+
'@types/react-dom': '*'
|
556 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
557 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
558 |
+
peerDependenciesMeta:
|
559 |
+
'@types/react':
|
560 |
+
optional: true
|
561 |
+
'@types/react-dom':
|
562 |
+
optional: true
|
563 |
+
|
564 |
+
'@radix-ui/[email protected]':
|
565 |
+
resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
|
566 |
+
peerDependencies:
|
567 |
+
'@types/react': '*'
|
568 |
+
'@types/react-dom': '*'
|
569 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
570 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
571 |
+
peerDependenciesMeta:
|
572 |
+
'@types/react':
|
573 |
+
optional: true
|
574 |
+
'@types/react-dom':
|
575 |
+
optional: true
|
576 |
+
|
577 |
+
'@radix-ui/[email protected]':
|
578 |
+
resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==}
|
579 |
+
peerDependencies:
|
580 |
+
'@types/react': '*'
|
581 |
+
'@types/react-dom': '*'
|
582 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
583 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
584 |
+
peerDependenciesMeta:
|
585 |
+
'@types/react':
|
586 |
+
optional: true
|
587 |
+
'@types/react-dom':
|
588 |
+
optional: true
|
589 |
+
|
590 |
+
'@radix-ui/[email protected]':
|
591 |
+
resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==}
|
592 |
+
peerDependencies:
|
593 |
+
'@types/react': '*'
|
594 |
+
'@types/react-dom': '*'
|
595 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
596 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
597 |
+
peerDependenciesMeta:
|
598 |
+
'@types/react':
|
599 |
+
optional: true
|
600 |
+
'@types/react-dom':
|
601 |
+
optional: true
|
602 |
+
|
603 |
+
'@radix-ui/[email protected]':
|
604 |
+
resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
|
605 |
+
peerDependencies:
|
606 |
+
'@types/react': '*'
|
607 |
+
'@types/react-dom': '*'
|
608 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
609 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
610 |
+
peerDependenciesMeta:
|
611 |
+
'@types/react':
|
612 |
+
optional: true
|
613 |
+
'@types/react-dom':
|
614 |
+
optional: true
|
615 |
+
|
616 |
+
'@radix-ui/[email protected]':
|
617 |
+
resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==}
|
618 |
+
peerDependencies:
|
619 |
+
'@types/react': '*'
|
620 |
+
'@types/react-dom': '*'
|
621 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
622 |
+
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
623 |
+
peerDependenciesMeta:
|
624 |
+
'@types/react':
|
625 |
+
optional: true
|
626 |
+
'@types/react-dom':
|
627 |
+
optional: true
|
628 |
+
|
629 |
+
'@radix-ui/[email protected]':
|
630 |
+
resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
|
631 |
+
peerDependencies:
|
632 |
+
'@types/react': '*'
|
633 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
634 |
+
peerDependenciesMeta:
|
635 |
+
'@types/react':
|
636 |
+
optional: true
|
637 |
+
|
638 |
+
'@radix-ui/[email protected]':
|
639 |
+
resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
|
640 |
+
peerDependencies:
|
641 |
+
'@types/react': '*'
|
642 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
643 |
+
peerDependenciesMeta:
|
644 |
+
'@types/react':
|
645 |
+
optional: true
|
646 |
+
|
647 |
+
'@radix-ui/[email protected]':
|
648 |
+
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
|
649 |
+
peerDependencies:
|
650 |
+
'@types/react': '*'
|
651 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
652 |
+
peerDependenciesMeta:
|
653 |
+
'@types/react':
|
654 |
+
optional: true
|
655 |
+
|
656 |
+
'@radix-ui/[email protected]':
|
657 |
+
resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
|
658 |
+
peerDependencies:
|
659 |
+
'@types/react': '*'
|
660 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
661 |
+
peerDependenciesMeta:
|
662 |
+
'@types/react':
|
663 |
+
optional: true
|
664 |
+
|
665 |
+
'@radix-ui/[email protected]':
|
666 |
+
resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
|
667 |
+
peerDependencies:
|
668 |
+
'@types/react': '*'
|
669 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
670 |
+
peerDependenciesMeta:
|
671 |
+
'@types/react':
|
672 |
+
optional: true
|
673 |
+
|
674 |
+
'@radix-ui/[email protected]':
|
675 |
+
resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
|
676 |
+
peerDependencies:
|
677 |
+
'@types/react': '*'
|
678 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
679 |
+
peerDependenciesMeta:
|
680 |
+
'@types/react':
|
681 |
+
optional: true
|
682 |
+
|
683 |
+
'@radix-ui/[email protected]':
|
684 |
+
resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
|
685 |
+
peerDependencies:
|
686 |
+
'@types/react': '*'
|
687 |
+
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
|
688 |
+
peerDependenciesMeta:
|
689 |
+
'@types/react':
|
690 |
+
optional: true
|
691 |
+
|
692 |
+
'@radix-ui/[email protected]':
|
693 |
+
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
|
694 |
+
|
695 |
'@rtsao/[email protected]':
|
696 |
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
|
697 |
|
|
|
886 | |
887 |
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
888 |
|
889 | |
890 |
+
resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==}
|
891 |
+
engines: {node: '>=10'}
|
892 |
+
|
893 | |
894 |
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
|
895 |
engines: {node: '>= 0.4'}
|
|
|
989 |
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
990 |
engines: {node: '>= 8.10.0'}
|
991 |
|
992 | |
993 |
+
resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==}
|
994 |
+
|
995 | |
996 |
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
997 |
|
998 | |
999 |
+
resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
|
1000 |
+
engines: {node: '>=6'}
|
1001 |
+
|
1002 | |
1003 |
+
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
|
1004 |
+
engines: {node: '>=6'}
|
1005 |
+
|
1006 | |
1007 |
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
1008 |
engines: {node: '>=7.0.0'}
|
|
|
1083 |
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
1084 |
engines: {node: '>=8'}
|
1085 |
|
1086 | |
1087 |
+
resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
|
1088 |
+
|
1089 | |
1090 |
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
1091 |
|
|
|
1344 |
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
|
1345 |
engines: {node: '>= 0.4'}
|
1346 |
|
1347 | |
1348 |
+
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
|
1349 |
+
engines: {node: '>=6'}
|
1350 |
+
|
1351 | |
1352 |
resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==}
|
1353 |
engines: {node: '>= 0.4'}
|
|
|
1437 |
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
|
1438 |
engines: {node: '>= 0.4'}
|
1439 |
|
1440 | |
1441 |
+
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
1442 |
+
|
1443 | |
1444 |
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
|
1445 |
engines: {node: '>= 0.4'}
|
|
|
1649 | |
1650 |
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
|
1651 |
|
1652 | |
1653 |
+
resolution: {integrity: sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA==}
|
1654 |
+
peerDependencies:
|
1655 |
+
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
|
1656 |
+
|
1657 | |
1658 |
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
|
1659 |
|
|
|
1693 | |
1694 |
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
1695 |
|
1696 | |
1697 |
+
resolution: {integrity: sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==}
|
1698 |
+
peerDependencies:
|
1699 |
+
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
1700 |
+
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
|
1701 |
+
|
1702 | |
1703 |
resolution: {integrity: sha512-rxIWHcAu4gGSDmwsELXacqAPUk+j8dV/A9cDF5fsiCMpkBDYkO2AEaL1dfD+nNmDiU6QMCFN8Q30VEKapT9UHQ==}
|
1704 |
engines: {node: '>=18.18.0'}
|
|
|
1887 | |
1888 |
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
|
1889 |
|
1890 | |
1891 |
+
resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==}
|
1892 |
+
engines: {node: '>=10'}
|
1893 |
+
peerDependencies:
|
1894 |
+
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
1895 |
+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
1896 |
+
peerDependenciesMeta:
|
1897 |
+
'@types/react':
|
1898 |
+
optional: true
|
1899 |
+
|
1900 | |
1901 |
+
resolution: {integrity: sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==}
|
1902 |
+
engines: {node: '>=10'}
|
1903 |
+
peerDependencies:
|
1904 |
+
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
1905 |
+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
1906 |
+
peerDependenciesMeta:
|
1907 |
+
'@types/react':
|
1908 |
+
optional: true
|
1909 |
+
|
1910 | |
1911 |
+
resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==}
|
1912 |
+
engines: {node: '>=10'}
|
1913 |
+
peerDependencies:
|
1914 |
+
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
1915 |
+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
1916 |
+
peerDependenciesMeta:
|
1917 |
+
'@types/react':
|
1918 |
+
optional: true
|
1919 |
+
|
1920 | |
1921 |
resolution: {integrity: sha512-GbZ7hpPHQMiEu53BqEaPQVM/4GG4hARo+mqEEnx4rYporDvNvUjutiAFxYFSbu6sgHwcr7LeFv8htEOwALVA2A==}
|
1922 |
engines: {node: '>=0.10.0'}
|
|
|
2119 |
peerDependencies:
|
2120 |
vue: '>=3.2.26 < 4'
|
2121 |
|
2122 | |
2123 |
+
resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==}
|
2124 |
+
|
2125 | |
2126 |
+
resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
|
2127 |
+
peerDependencies:
|
2128 |
+
tailwindcss: '>=3.0.0 || insiders'
|
2129 |
+
|
2130 | |
2131 |
resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==}
|
2132 |
engines: {node: '>=14.0.0'}
|
|
|
2207 | |
2208 |
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
2209 |
|
2210 | |
2211 |
+
resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==}
|
2212 |
+
engines: {node: '>=10'}
|
2213 |
+
peerDependencies:
|
2214 |
+
'@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
|
2215 |
+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
2216 |
+
peerDependenciesMeta:
|
2217 |
+
'@types/react':
|
2218 |
+
optional: true
|
2219 |
+
|
2220 | |
2221 |
+
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
|
2222 |
+
engines: {node: '>=10'}
|
2223 |
+
peerDependencies:
|
2224 |
+
'@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0
|
2225 |
+
react: ^16.8.0 || ^17.0.0 || ^18.0.0
|
2226 |
+
peerDependenciesMeta:
|
2227 |
+
'@types/react':
|
2228 |
+
optional: true
|
2229 |
+
|
2230 | |
2231 |
resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
|
2232 |
peerDependencies:
|
|
|
2408 |
|
2409 |
'@eslint/[email protected]': {}
|
2410 |
|
2411 |
+
'@floating-ui/[email protected]':
|
2412 |
+
dependencies:
|
2413 |
+
'@floating-ui/utils': 0.2.8
|
2414 |
+
|
2415 |
+
'@floating-ui/[email protected]':
|
2416 |
+
dependencies:
|
2417 |
+
'@floating-ui/core': 1.6.8
|
2418 |
+
'@floating-ui/utils': 0.2.8
|
2419 |
+
|
2420 |
+
'@floating-ui/[email protected]([email protected]([email protected]))([email protected])':
|
2421 |
+
dependencies:
|
2422 |
+
'@floating-ui/dom': 1.6.12
|
2423 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2424 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2425 |
+
|
2426 |
+
'@floating-ui/[email protected]': {}
|
2427 |
+
|
2428 |
'@heroicons/[email protected]([email protected])':
|
2429 |
dependencies:
|
2430 |
react: 19.0.0-rc-02c0e824-20241028
|
|
|
2591 |
'@pkgjs/[email protected]':
|
2592 |
optional: true
|
2593 |
|
2594 |
+
'@radix-ui/[email protected]': {}
|
2595 |
+
|
2596 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2597 |
+
dependencies:
|
2598 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2599 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2600 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2601 |
+
optionalDependencies:
|
2602 |
+
'@types/react': 18.3.12
|
2603 |
+
'@types/react-dom': 18.3.1
|
2604 |
+
|
2605 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2606 |
+
dependencies:
|
2607 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2608 |
+
'@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
|
2609 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2610 |
+
'@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
|
2611 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2612 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2613 |
+
optionalDependencies:
|
2614 |
+
'@types/react': 18.3.12
|
2615 |
+
'@types/react-dom': 18.3.1
|
2616 |
+
|
2617 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2618 |
+
dependencies:
|
2619 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2620 |
+
optionalDependencies:
|
2621 |
+
'@types/react': 18.3.12
|
2622 |
+
|
2623 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2624 |
+
dependencies:
|
2625 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2626 |
+
optionalDependencies:
|
2627 |
+
'@types/react': 18.3.12
|
2628 |
+
|
2629 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2630 |
+
dependencies:
|
2631 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2632 |
+
optionalDependencies:
|
2633 |
+
'@types/react': 18.3.12
|
2634 |
+
|
2635 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2636 |
+
dependencies:
|
2637 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2638 |
+
optionalDependencies:
|
2639 |
+
'@types/react': 18.3.12
|
2640 |
+
|
2641 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2642 |
+
dependencies:
|
2643 |
+
'@radix-ui/primitive': 1.1.0
|
2644 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2645 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2646 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2647 |
+
'@radix-ui/react-use-escape-keydown': 1.1.0(@types/[email protected])([email protected])
|
2648 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2649 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2650 |
+
optionalDependencies:
|
2651 |
+
'@types/react': 18.3.12
|
2652 |
+
'@types/react-dom': 18.3.1
|
2653 |
+
|
2654 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2655 |
+
dependencies:
|
2656 |
+
'@radix-ui/primitive': 1.1.0
|
2657 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2658 |
+
'@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
|
2659 |
+
'@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
|
2660 |
+
'@radix-ui/react-menu': 2.1.2(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2661 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2662 |
+
'@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
|
2663 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2664 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2665 |
+
optionalDependencies:
|
2666 |
+
'@types/react': 18.3.12
|
2667 |
+
'@types/react-dom': 18.3.1
|
2668 |
+
|
2669 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2670 |
+
dependencies:
|
2671 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2672 |
+
optionalDependencies:
|
2673 |
+
'@types/react': 18.3.12
|
2674 |
+
|
2675 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2676 |
+
dependencies:
|
2677 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2678 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2679 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2680 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2681 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2682 |
+
optionalDependencies:
|
2683 |
+
'@types/react': 18.3.12
|
2684 |
+
'@types/react-dom': 18.3.1
|
2685 |
+
|
2686 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2687 |
+
dependencies:
|
2688 |
+
'@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
|
2689 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2690 |
+
optionalDependencies:
|
2691 |
+
'@types/react': 18.3.12
|
2692 |
+
|
2693 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2694 |
+
dependencies:
|
2695 |
+
'@radix-ui/primitive': 1.1.0
|
2696 |
+
'@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2697 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2698 |
+
'@radix-ui/react-context': 1.1.1(@types/[email protected])([email protected])
|
2699 |
+
'@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
|
2700 |
+
'@radix-ui/react-dismissable-layer': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2701 |
+
'@radix-ui/react-focus-guards': 1.1.1(@types/[email protected])([email protected])
|
2702 |
+
'@radix-ui/react-focus-scope': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2703 |
+
'@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
|
2704 |
+
'@radix-ui/react-popper': 1.2.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2705 |
+
'@radix-ui/react-portal': 1.1.2(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2706 |
+
'@radix-ui/react-presence': 1.1.1(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2707 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2708 |
+
'@radix-ui/react-roving-focus': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2709 |
+
'@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
|
2710 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2711 |
+
aria-hidden: 1.2.4
|
2712 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2713 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2714 |
+
react-remove-scroll: 2.6.0(@types/[email protected])([email protected])
|
2715 |
+
optionalDependencies:
|
2716 |
+
'@types/react': 18.3.12
|
2717 |
+
'@types/react-dom': 18.3.1
|
2718 |
+
|
2719 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2720 |
+
dependencies:
|
2721 |
+
'@floating-ui/react-dom': 2.1.2([email protected]([email protected]))([email protected])
|
2722 |
+
'@radix-ui/react-arrow': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2723 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2724 |
+
'@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
|
2725 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2726 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2727 |
+
'@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
|
2728 |
+
'@radix-ui/react-use-rect': 1.1.0(@types/[email protected])([email protected])
|
2729 |
+
'@radix-ui/react-use-size': 1.1.0(@types/[email protected])([email protected])
|
2730 |
+
'@radix-ui/rect': 1.1.0
|
2731 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2732 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2733 |
+
optionalDependencies:
|
2734 |
+
'@types/react': 18.3.12
|
2735 |
+
'@types/react-dom': 18.3.1
|
2736 |
+
|
2737 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2738 |
+
dependencies:
|
2739 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2740 |
+
'@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
|
2741 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2742 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2743 |
+
optionalDependencies:
|
2744 |
+
'@types/react': 18.3.12
|
2745 |
+
'@types/react-dom': 18.3.1
|
2746 |
+
|
2747 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2748 |
+
dependencies:
|
2749 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2750 |
+
'@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
|
2751 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2752 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2753 |
+
optionalDependencies:
|
2754 |
+
'@types/react': 18.3.12
|
2755 |
+
'@types/react-dom': 18.3.1
|
2756 |
+
|
2757 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2758 |
+
dependencies:
|
2759 |
+
'@radix-ui/react-slot': 1.1.0(@types/[email protected])([email protected])
|
2760 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2761 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2762 |
+
optionalDependencies:
|
2763 |
+
'@types/react': 18.3.12
|
2764 |
+
'@types/react-dom': 18.3.1
|
2765 |
+
|
2766 |
+
'@radix-ui/[email protected](@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])':
|
2767 |
+
dependencies:
|
2768 |
+
'@radix-ui/primitive': 1.1.0
|
2769 |
+
'@radix-ui/react-collection': 1.1.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2770 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2771 |
+
'@radix-ui/react-context': 1.1.0(@types/[email protected])([email protected])
|
2772 |
+
'@radix-ui/react-direction': 1.1.0(@types/[email protected])([email protected])
|
2773 |
+
'@radix-ui/react-id': 1.1.0(@types/[email protected])([email protected])
|
2774 |
+
'@radix-ui/react-primitive': 2.0.0(@types/[email protected])(@types/[email protected])([email protected]([email protected]))([email protected])
|
2775 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2776 |
+
'@radix-ui/react-use-controllable-state': 1.1.0(@types/[email protected])([email protected])
|
2777 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2778 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
2779 |
+
optionalDependencies:
|
2780 |
+
'@types/react': 18.3.12
|
2781 |
+
'@types/react-dom': 18.3.1
|
2782 |
+
|
2783 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2784 |
+
dependencies:
|
2785 |
+
'@radix-ui/react-compose-refs': 1.1.0(@types/[email protected])([email protected])
|
2786 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2787 |
+
optionalDependencies:
|
2788 |
+
'@types/react': 18.3.12
|
2789 |
+
|
2790 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2791 |
+
dependencies:
|
2792 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2793 |
+
optionalDependencies:
|
2794 |
+
'@types/react': 18.3.12
|
2795 |
+
|
2796 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2797 |
+
dependencies:
|
2798 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2799 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2800 |
+
optionalDependencies:
|
2801 |
+
'@types/react': 18.3.12
|
2802 |
+
|
2803 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2804 |
+
dependencies:
|
2805 |
+
'@radix-ui/react-use-callback-ref': 1.1.0(@types/[email protected])([email protected])
|
2806 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2807 |
+
optionalDependencies:
|
2808 |
+
'@types/react': 18.3.12
|
2809 |
+
|
2810 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2811 |
+
dependencies:
|
2812 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2813 |
+
optionalDependencies:
|
2814 |
+
'@types/react': 18.3.12
|
2815 |
+
|
2816 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2817 |
+
dependencies:
|
2818 |
+
'@radix-ui/rect': 1.1.0
|
2819 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2820 |
+
optionalDependencies:
|
2821 |
+
'@types/react': 18.3.12
|
2822 |
+
|
2823 |
+
'@radix-ui/[email protected](@types/[email protected])([email protected])':
|
2824 |
+
dependencies:
|
2825 |
+
'@radix-ui/react-use-layout-effect': 1.1.0(@types/[email protected])([email protected])
|
2826 |
+
react: 19.0.0-rc-02c0e824-20241028
|
2827 |
+
optionalDependencies:
|
2828 |
+
'@types/react': 18.3.12
|
2829 |
+
|
2830 |
+
'@radix-ui/[email protected]': {}
|
2831 |
+
|
2832 |
'@rtsao/[email protected]': {}
|
2833 |
|
2834 |
'@rushstack/[email protected]': {}
|
|
|
3065 |
|
3066 | |
3067 |
|
3068 | |
3069 |
+
dependencies:
|
3070 |
+
tslib: 2.8.1
|
3071 |
+
|
3072 | |
3073 |
|
3074 | |
|
|
3200 |
optionalDependencies:
|
3201 |
fsevents: 2.3.3
|
3202 |
|
3203 | |
3204 |
+
dependencies:
|
3205 |
+
clsx: 2.0.0
|
3206 |
+
|
3207 | |
3208 |
|
3209 |
+
[email protected]: {}
|
3210 |
+
|
3211 |
+
[email protected]: {}
|
3212 |
+
|
3213 | |
3214 |
dependencies:
|
3215 |
color-name: 1.1.4
|
|
|
3287 | |
3288 |
optional: true
|
3289 |
|
3290 |
+
[email protected]: {}
|
3291 |
+
|
3292 | |
3293 |
|
3294 | |
|
|
3701 |
has-symbols: 1.0.3
|
3702 |
hasown: 2.0.2
|
3703 |
|
3704 |
+
[email protected]: {}
|
3705 |
+
|
3706 | |
3707 |
dependencies:
|
3708 |
call-bind: 1.0.7
|
|
|
3798 |
hasown: 2.0.2
|
3799 |
side-channel: 1.0.6
|
3800 |
|
3801 | |
3802 |
+
dependencies:
|
3803 |
+
loose-envify: 1.4.0
|
3804 |
+
|
3805 | |
3806 |
dependencies:
|
3807 |
call-bind: 1.0.7
|
|
|
3997 |
|
3998 | |
3999 |
|
4000 | |
4001 |
+
dependencies:
|
4002 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4003 |
+
|
4004 | |
4005 |
dependencies:
|
4006 |
'@jridgewell/sourcemap-codec': 1.5.0
|
|
|
4036 |
|
4037 | |
4038 |
|
4039 | |
4040 |
+
dependencies:
|
4041 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4042 |
+
react-dom: 19.0.0-rc-02c0e824-20241028([email protected])
|
4043 |
+
|
4044 |
[email protected](@opentelemetry/[email protected])([email protected]([email protected]))([email protected]):
|
4045 |
dependencies:
|
4046 |
'@next/env': 15.0.2
|
|
|
4221 |
|
4222 | |
4223 |
|
4224 |
+
[email protected](@types/[email protected])([email protected]):
|
4225 |
+
dependencies:
|
4226 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4227 |
+
react-style-singleton: 2.2.1(@types/[email protected])([email protected])
|
4228 |
+
tslib: 2.8.1
|
4229 |
+
optionalDependencies:
|
4230 |
+
'@types/react': 18.3.12
|
4231 |
+
|
4232 |
+
[email protected](@types/[email protected])([email protected]):
|
4233 |
+
dependencies:
|
4234 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4235 |
+
react-remove-scroll-bar: 2.3.6(@types/[email protected])([email protected])
|
4236 |
+
react-style-singleton: 2.2.1(@types/[email protected])([email protected])
|
4237 |
+
tslib: 2.8.1
|
4238 |
+
use-callback-ref: 1.3.2(@types/[email protected])([email protected])
|
4239 |
+
use-sidecar: 1.1.2(@types/[email protected])([email protected])
|
4240 |
+
optionalDependencies:
|
4241 |
+
'@types/react': 18.3.12
|
4242 |
+
|
4243 |
+
[email protected](@types/[email protected])([email protected]):
|
4244 |
+
dependencies:
|
4245 |
+
get-nonce: 1.0.1
|
4246 |
+
invariant: 2.2.4
|
4247 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4248 |
+
tslib: 2.8.1
|
4249 |
+
optionalDependencies:
|
4250 |
+
'@types/react': 18.3.12
|
4251 |
+
|
4252 | |
4253 |
|
4254 | |
|
|
4513 |
dependencies:
|
4514 |
vue: 3.5.12([email protected])
|
4515 |
|
4516 |
+
[email protected]: {}
|
4517 |
+
|
4518 | |
4519 |
+
dependencies:
|
4520 |
+
tailwindcss: 3.4.14
|
4521 |
+
|
4522 | |
4523 |
dependencies:
|
4524 |
'@alloc/quick-lru': 5.2.0
|
|
|
4632 |
dependencies:
|
4633 |
punycode: 2.3.1
|
4634 |
|
4635 |
+
[email protected](@types/[email protected])([email protected]):
|
4636 |
+
dependencies:
|
4637 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4638 |
+
tslib: 2.8.1
|
4639 |
+
optionalDependencies:
|
4640 |
+
'@types/react': 18.3.12
|
4641 |
+
|
4642 |
+
[email protected](@types/[email protected])([email protected]):
|
4643 |
+
dependencies:
|
4644 |
+
detect-node-es: 1.1.0
|
4645 |
+
react: 19.0.0-rc-02c0e824-20241028
|
4646 |
+
tslib: 2.8.1
|
4647 |
+
optionalDependencies:
|
4648 |
+
'@types/react': 18.3.12
|
4649 |
+
|
4650 | |
4651 |
dependencies:
|
4652 |
react: 19.0.0-rc-02c0e824-20241028
|
tailwind.config.ts
CHANGED
@@ -1,61 +1,84 @@
|
|
1 |
import type { Config } from "tailwindcss";
|
2 |
|
3 |
const config: Config = {
|
4 |
-
darkMode: 'class',
|
5 |
content: [
|
6 |
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
|
7 |
"./components/**/*.{js,ts,jsx,tsx,mdx}",
|
8 |
"./app/**/*.{js,ts,jsx,tsx,mdx}",
|
9 |
],
|
10 |
theme: {
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
},
|
59 |
-
plugins: [],
|
60 |
};
|
61 |
export default config;
|
|
|
1 |
import type { Config } from "tailwindcss";
|
2 |
|
3 |
const config: Config = {
|
4 |
+
darkMode: ['class', 'class'],
|
5 |
content: [
|
6 |
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
|
7 |
"./components/**/*.{js,ts,jsx,tsx,mdx}",
|
8 |
"./app/**/*.{js,ts,jsx,tsx,mdx}",
|
9 |
],
|
10 |
theme: {
|
11 |
+
extend: {
|
12 |
+
colors: {
|
13 |
+
primary: {
|
14 |
+
DEFAULT: 'hsl(var(--primary))',
|
15 |
+
dark: '#3DAA9D',
|
16 |
+
light: '#7EDCD6',
|
17 |
+
foreground: 'hsl(var(--primary-foreground))'
|
18 |
+
},
|
19 |
+
secondary: {
|
20 |
+
DEFAULT: 'hsl(var(--secondary))',
|
21 |
+
dark: '#E65555',
|
22 |
+
light: '#FF8F8F',
|
23 |
+
foreground: 'hsl(var(--secondary-foreground))'
|
24 |
+
},
|
25 |
+
accent: {
|
26 |
+
blue: '#45B7D1',
|
27 |
+
yellow: '#FDCB6E',
|
28 |
+
dark: {
|
29 |
+
blue: '#3A9BB2',
|
30 |
+
yellow: '#D4A85D'
|
31 |
+
},
|
32 |
+
DEFAULT: 'hsl(var(--accent))',
|
33 |
+
foreground: 'hsl(var(--accent-foreground))'
|
34 |
+
},
|
35 |
+
background: 'hsl(var(--background))',
|
36 |
+
text: {
|
37 |
+
primary: 'var(--text-primary)',
|
38 |
+
secondary: 'var(--text-secondary)',
|
39 |
+
tertiary: 'var(--text-tertiary)'
|
40 |
+
},
|
41 |
+
border: 'hsl(var(--border))',
|
42 |
+
foreground: 'hsl(var(--foreground))',
|
43 |
+
card: {
|
44 |
+
DEFAULT: 'hsl(var(--card))',
|
45 |
+
foreground: 'hsl(var(--card-foreground))'
|
46 |
+
},
|
47 |
+
popover: {
|
48 |
+
DEFAULT: 'hsl(var(--popover))',
|
49 |
+
foreground: 'hsl(var(--popover-foreground))'
|
50 |
+
},
|
51 |
+
muted: {
|
52 |
+
DEFAULT: 'hsl(var(--muted))',
|
53 |
+
foreground: 'hsl(var(--muted-foreground))'
|
54 |
+
},
|
55 |
+
destructive: {
|
56 |
+
DEFAULT: 'hsl(var(--destructive))',
|
57 |
+
foreground: 'hsl(var(--destructive-foreground))'
|
58 |
+
},
|
59 |
+
input: 'hsl(var(--input))',
|
60 |
+
ring: 'hsl(var(--ring))',
|
61 |
+
chart: {
|
62 |
+
'1': 'hsl(var(--chart-1))',
|
63 |
+
'2': 'hsl(var(--chart-2))',
|
64 |
+
'3': 'hsl(var(--chart-3))',
|
65 |
+
'4': 'hsl(var(--chart-4))',
|
66 |
+
'5': 'hsl(var(--chart-5))'
|
67 |
+
}
|
68 |
+
},
|
69 |
+
backdropBlur: {
|
70 |
+
xs: '2px'
|
71 |
+
},
|
72 |
+
boxShadow: {
|
73 |
+
dark: '0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -1px rgba(0, 0, 0, 0.24)'
|
74 |
+
},
|
75 |
+
borderRadius: {
|
76 |
+
lg: 'var(--radius)',
|
77 |
+
md: 'calc(var(--radius) - 2px)',
|
78 |
+
sm: 'calc(var(--radius) - 4px)'
|
79 |
+
}
|
80 |
+
}
|
81 |
},
|
82 |
+
plugins: [require("tailwindcss-animate")],
|
83 |
};
|
84 |
export default config;
|