+ )}
- {filteredResources.length === 0 && (
+ {!loading && !error && filteredResources.length === 0 && (
-
+
How It Works
- Your suggestions are sent directly to our team via email for review. We manually verify all information and
- make updates to ensure quality and accuracy. This helps us maintain a trusted resource for the Atlanta tech
+ Your suggestions are saved for our team to review. We manually verify all information and
+ add approved resources to the directory. This helps us maintain a trusted resource for the Atlanta tech
community.
diff --git a/components/tech-hubs-section.tsx b/components/tech-hubs-section.tsx
index daf3d0d..ac85533 100644
--- a/components/tech-hubs-section.tsx
+++ b/components/tech-hubs-section.tsx
@@ -1,14 +1,20 @@
+'use client'
+
import Link from "next/link"
import { ResourceCard } from "./resource-card"
-import { sampleTechHubs } from "@/lib/sample-data"
+import { useResources } from "@/hooks/use-resources"
+import { useMemo } from "react"
+import { Loader2 } from "lucide-react"
export function TechHubsSection() {
- const getRandomTechHubs = () => {
- const shuffled = [...sampleTechHubs].sort(() => 0.5 - Math.random())
- return shuffled.slice(0, 3)
- }
+ const { resources: techHubs, loading } = useResources({ type: 'tech-hub' })
- const displayHubs = getRandomTechHubs()
+ // Get 3 random tech hubs
+ const displayHubs = useMemo(() => {
+ if (techHubs.length === 0) return []
+ const shuffled = [...techHubs].sort(() => 0.5 - Math.random())
+ return shuffled.slice(0, 3)
+ }, [techHubs])
return (
@@ -22,11 +28,17 @@ export function TechHubsSection() {
-
- {displayHubs.map((hub, index) => (
-
- ))}
-
+ {loading ? (
+
+
+
+ ) : (
+
+ {displayHubs.map((hub) => (
+
+ ))}
+
+ )}
Promise
+}
+
+interface APIResponse {
+ success: boolean
+ data: Array<{
+ id: number
+ type: 'meetup' | 'conference' | 'online' | 'tech-hub'
+ name: string
+ description: string
+ tags: string[]
+ link: string
+ image: string | null
+ conference_date: string | null
+ cfp_date: string | null
+ }>
+ pagination: {
+ total: number
+ limit: number
+ offset: number
+ hasMore: boolean
+ }
+}
+
+/**
+ * Hook to fetch resources from the API
+ * Falls back to sample data if API is unavailable (for local dev without D1)
+ */
+export function useResources(options: UseResourcesOptions = {}): UseResourcesResult {
+ const { type, search, limit = 100 } = options
+ const [resources, setResources] = useState([])
+ const [loading, setLoading] = useState(true)
+ const [error, setError] = useState(null)
+ const [total, setTotal] = useState(0)
+
+ const fetchResources = async () => {
+ setLoading(true)
+ setError(null)
+
+ try {
+ // Build query string
+ const params = new URLSearchParams()
+ if (type) params.set('type', type)
+ if (search) params.set('search', search)
+ if (limit) params.set('limit', limit.toString())
+
+ const url = `/api/resources${params.toString() ? `?${params}` : ''}`
+ const response = await fetch(url)
+
+ if (!response.ok) {
+ throw new Error(`Failed to fetch resources: ${response.status}`)
+ }
+
+ const data: APIResponse = await response.json()
+
+ if (!data.success) {
+ throw new Error('API returned unsuccessful response')
+ }
+
+ // Transform API response to Resource format
+ const transformed: Resource[] = data.data.map((item) => {
+ const base = {
+ id: item.id.toString(),
+ name: item.name,
+ description: item.description,
+ tags: item.tags,
+ link: item.link,
+ image: item.image || '/placeholder.svg',
+ }
+
+ if (item.type === 'conference') {
+ return {
+ ...base,
+ type: 'conference' as const,
+ conferenceDate: item.conference_date || undefined,
+ cfpDate: item.cfp_date || undefined,
+ }
+ }
+
+ return {
+ ...base,
+ type: item.type,
+ }
+ })
+
+ setResources(transformed)
+ setTotal(data.pagination.total)
+ } catch (err) {
+ console.error('Error fetching resources:', err)
+ setError(err instanceof Error ? err : new Error('Unknown error'))
+
+ // Fall back to sample data for local development without D1
+ try {
+ const { sampleMeetups, sampleConferences, sampleOnlineResources, sampleTechHubs } = await import('@/lib/sample-data')
+
+ let fallbackData: Resource[] = []
+ if (type === 'meetup') fallbackData = sampleMeetups
+ else if (type === 'conference') fallbackData = sampleConferences
+ else if (type === 'online') fallbackData = sampleOnlineResources
+ else if (type === 'tech-hub') fallbackData = sampleTechHubs
+ else {
+ fallbackData = [
+ ...sampleMeetups,
+ ...sampleConferences,
+ ...sampleOnlineResources,
+ ...sampleTechHubs,
+ ]
+ }
+
+ setResources(fallbackData)
+ setTotal(fallbackData.length)
+ // Clear error since we have fallback data
+ setError(null)
+ } catch {
+ // If sample data also fails, keep the original error
+ }
+ } finally {
+ setLoading(false)
+ }
+ }
+
+ useEffect(() => {
+ fetchResources()
+ }, [type, search, limit])
+
+ return {
+ resources,
+ loading,
+ error,
+ total,
+ refetch: fetchResources,
+ }
+}
diff --git a/lib/db.ts b/lib/db.ts
new file mode 100644
index 0000000..45a3bd3
--- /dev/null
+++ b/lib/db.ts
@@ -0,0 +1,122 @@
+/**
+ * D1 Database Client Wrapper
+ *
+ * Provides typed access to Cloudflare D1 database.
+ * In production, DB is injected via Cloudflare bindings.
+ * In local dev, wrangler provides a local SQLite instance.
+ */
+
+// D1 Types (Cloudflare Workers types)
+export interface D1Database {
+ prepare(query: string): D1PreparedStatement
+ batch(statements: D1PreparedStatement[]): Promise[]>
+ exec(query: string): Promise
+}
+
+export interface D1PreparedStatement {
+ bind(...values: unknown[]): D1PreparedStatement
+ all(): Promise>
+ run(): Promise
+ first(colName?: string): Promise
+}
+
+export interface D1Result {
+ results: T[]
+ success: boolean
+ meta: {
+ duration: number
+ last_row_id?: number
+ changes?: number
+ rows_read?: number
+ rows_written?: number
+ }
+}
+
+export interface D1ExecResult {
+ count: number
+ duration: number
+}
+
+// Resource types matching our schema
+export interface Resource {
+ id: number
+ type: 'meetup' | 'conference' | 'online' | 'tech-hub'
+ name: string
+ description: string
+ tags: string // JSON array stored as string
+ link: string
+ image: string | null
+ conference_date: string | null
+ cfp_date: string | null
+ created_at: string
+ updated_at: string
+}
+
+export interface Submission {
+ id: number
+ submission_type: 'new' | 'edit'
+ resource_type: 'meetup' | 'conference' | 'online' | 'tech-hub'
+ submitter_name: string
+ submitter_email: string
+ status: 'pending' | 'approved' | 'rejected'
+ name: string | null
+ website: string | null
+ description: string | null
+ tags: string | null
+ existing_resource_name: string | null
+ update_reason: string | null
+ created_at: string
+ reviewed_at: string | null
+ admin_notes: string | null
+}
+
+// Parsed resource with tags as array (for frontend use)
+export interface ParsedResource extends Omit {
+ tags: string[]
+}
+
+/**
+ * Get D1 database instance from Cloudflare environment bindings
+ *
+ * In Next.js API routes on Cloudflare Pages, access via:
+ * import { getRequestContext } from '@cloudflare/next-on-pages'
+ * const { env } = getRequestContext()
+ * const db = env.DB
+ */
+export function getD1Database(env: { DB: D1Database }): D1Database {
+ if (!env.DB) {
+ throw new Error('D1 database binding not found. Ensure wrangler.toml is configured correctly.')
+ }
+ return env.DB
+}
+
+/**
+ * Parse a resource row from D1, converting JSON string tags to array
+ */
+export function parseResource(row: Resource): ParsedResource {
+ return {
+ ...row,
+ tags: parseJsonArray(row.tags)
+ }
+}
+
+/**
+ * Safely parse JSON array string, returning empty array on failure
+ */
+export function parseJsonArray(jsonString: string | null): string[] {
+ if (!jsonString) return []
+ try {
+ const parsed = JSON.parse(jsonString)
+ return Array.isArray(parsed) ? parsed : []
+ } catch {
+ // If not valid JSON, try comma-separated
+ return jsonString.split(',').map(s => s.trim()).filter(Boolean)
+ }
+}
+
+/**
+ * Convert array to JSON string for storage
+ */
+export function stringifyTags(tags: string[]): string {
+ return JSON.stringify(tags)
+}
diff --git a/lib/rate-limit.ts b/lib/rate-limit.ts
new file mode 100644
index 0000000..5cf464a
--- /dev/null
+++ b/lib/rate-limit.ts
@@ -0,0 +1,106 @@
+/**
+ * Rate Limiting Utility
+ *
+ * Simple in-memory rate limiter for Edge runtime.
+ * Note: Resets on cold start. For production at scale,
+ * consider Cloudflare KV or Durable Objects.
+ */
+
+interface RateLimitEntry {
+ count: number
+ resetAt: number
+}
+
+// In-memory store (per-isolate in Workers)
+const rateLimitStore = new Map()
+
+// Cleanup threshold to prevent memory leak
+const MAX_ENTRIES = 10000
+
+/**
+ * Check if request is within rate limit
+ *
+ * @param identifier - Unique identifier (IP, user ID, etc.)
+ * @param limit - Maximum requests allowed in window
+ * @param windowMs - Time window in milliseconds (default: 1 hour)
+ * @returns true if allowed, false if rate limited
+ */
+export function checkRateLimit(
+ identifier: string,
+ limit: number = 10,
+ windowMs: number = 3600000 // 1 hour
+): boolean {
+ const now = Date.now()
+ const key = `rl_${identifier}`
+
+ // Cleanup if store gets too large
+ if (rateLimitStore.size > MAX_ENTRIES) {
+ rateLimitStore.clear()
+ }
+
+ const entry = rateLimitStore.get(key)
+
+ // New window or expired entry
+ if (!entry || entry.resetAt < now) {
+ rateLimitStore.set(key, {
+ count: 1,
+ resetAt: now + windowMs
+ })
+ return true
+ }
+
+ // Within window, check count
+ if (entry.count >= limit) {
+ return false
+ }
+
+ // Increment and allow
+ entry.count++
+ return true
+}
+
+/**
+ * Get remaining attempts for an identifier
+ */
+export function getRemainingAttempts(
+ identifier: string,
+ limit: number = 10
+): number {
+ const entry = rateLimitStore.get(`rl_${identifier}`)
+
+ if (!entry || entry.resetAt < Date.now()) {
+ return limit
+ }
+
+ return Math.max(0, limit - entry.count)
+}
+
+/**
+ * Get reset time for an identifier
+ */
+export function getResetTime(identifier: string): number | null {
+ const entry = rateLimitStore.get(`rl_${identifier}`)
+
+ if (!entry || entry.resetAt < Date.now()) {
+ return null
+ }
+
+ return entry.resetAt
+}
+
+/**
+ * Create rate limit headers for response
+ */
+export function rateLimitHeaders(
+ identifier: string,
+ limit: number = 10
+): Record {
+ const remaining = getRemainingAttempts(identifier, limit)
+ const resetTime = getResetTime(identifier)
+
+ return {
+ 'X-RateLimit-Limit': limit.toString(),
+ 'X-RateLimit-Remaining': remaining.toString(),
+ ...(resetTime && { 'X-RateLimit-Reset': Math.ceil(resetTime / 1000).toString() })
+ }
+}
diff --git a/lib/validations.ts b/lib/validations.ts
new file mode 100644
index 0000000..5bece70
--- /dev/null
+++ b/lib/validations.ts
@@ -0,0 +1,128 @@
+/**
+ * Zod Validation Schemas
+ *
+ * Shared validation schemas for API routes and forms.
+ */
+
+import { z } from 'zod'
+
+// Resource types enum
+export const resourceTypes = ['meetup', 'conference', 'online', 'tech-hub'] as const
+export type ResourceType = typeof resourceTypes[number]
+
+// Submission types enum
+export const submissionTypes = ['new', 'edit'] as const
+export type SubmissionType = typeof submissionTypes[number]
+
+/**
+ * Submission form validation schema
+ */
+export const submissionSchema = z.object({
+ submissionType: z.enum(submissionTypes, {
+ errorMap: () => ({ message: 'Please select a submission type' })
+ }),
+ resourceType: z.enum(resourceTypes, {
+ errorMap: () => ({ message: 'Please select a resource type' })
+ }),
+ submitterName: z
+ .string()
+ .min(1, 'Name is required')
+ .max(100, 'Name must be less than 100 characters')
+ .trim(),
+ submitterEmail: z
+ .string()
+ .min(1, 'Email is required')
+ .email('Please enter a valid email address')
+ .max(254, 'Email must be less than 254 characters')
+ .toLowerCase()
+ .trim(),
+
+ // New resource fields (required for 'new' type)
+ name: z
+ .string()
+ .max(200, 'Name must be less than 200 characters')
+ .trim()
+ .optional(),
+ website: z
+ .string()
+ .url('Please enter a valid URL')
+ .max(500, 'URL must be less than 500 characters')
+ .optional()
+ .or(z.literal('')),
+ description: z
+ .string()
+ .max(1000, 'Description must be less than 1000 characters')
+ .trim()
+ .optional(),
+ tags: z
+ .string()
+ .max(500, 'Tags must be less than 500 characters')
+ .trim()
+ .optional(),
+
+ // Edit request fields (required for 'edit' type)
+ existingResourceName: z
+ .string()
+ .max(200, 'Resource name must be less than 200 characters')
+ .trim()
+ .optional(),
+ updateReason: z
+ .string()
+ .max(1000, 'Update reason must be less than 1000 characters')
+ .trim()
+ .optional()
+}).refine(
+ (data) => {
+ // For 'new' submissions, require name, website, and description
+ if (data.submissionType === 'new') {
+ return data.name && data.website && data.description
+ }
+ return true
+ },
+ {
+ message: 'Name, website, and description are required for new resource submissions',
+ path: ['name']
+ }
+).refine(
+ (data) => {
+ // For 'edit' submissions, require existingResourceName and updateReason
+ if (data.submissionType === 'edit') {
+ return data.existingResourceName && data.updateReason
+ }
+ return true
+ },
+ {
+ message: 'Resource name and update reason are required for edit submissions',
+ path: ['existingResourceName']
+ }
+)
+
+export type SubmissionInput = z.infer
+
+/**
+ * Admin review schema
+ */
+export const reviewSchema = z.object({
+ status: z.enum(['approved', 'rejected'], {
+ errorMap: () => ({ message: 'Status must be approved or rejected' })
+ }),
+ adminNotes: z
+ .string()
+ .max(500, 'Notes must be less than 500 characters')
+ .trim()
+ .optional()
+})
+
+export type ReviewInput = z.infer
+
+/**
+ * Resource query parameters
+ */
+export const resourceQuerySchema = z.object({
+ type: z.enum(resourceTypes).optional(),
+ search: z.string().max(100).optional(),
+ limit: z.coerce.number().min(1).max(100).optional().default(100),
+ offset: z.coerce.number().min(0).optional().default(0)
+})
+
+export type ResourceQuery = z.infer
diff --git a/middleware.ts b/middleware.ts
new file mode 100644
index 0000000..c6a0df4
--- /dev/null
+++ b/middleware.ts
@@ -0,0 +1,65 @@
+/**
+ * Next.js Middleware
+ *
+ * Protects /admin routes with HTTP Basic Authentication.
+ * For production, consider Cloudflare Access for stronger security.
+ */
+
+import { NextRequest, NextResponse } from 'next/server'
+
+// Protect all /admin routes and /api/admin routes
+export const config = {
+ matcher: ['/admin/:path*', '/api/admin/:path*']
+}
+
+export function middleware(request: NextRequest) {
+ // Check for Authorization header
+ const authHeader = request.headers.get('authorization')
+
+ if (!authHeader || !isValidAuth(authHeader)) {
+ // Return 401 with WWW-Authenticate header to prompt browser login dialog
+ return new NextResponse('Unauthorized', {
+ status: 401,
+ headers: {
+ 'WWW-Authenticate': 'Basic realm="Admin Panel", charset="UTF-8"'
+ }
+ })
+ }
+
+ // Auth valid, continue to route
+ return NextResponse.next()
+}
+
+/**
+ * Validate Basic Auth credentials
+ */
+function isValidAuth(authHeader: string): boolean {
+ try {
+ // Extract base64 credentials from "Basic "
+ const [scheme, encoded] = authHeader.split(' ')
+
+ if (scheme !== 'Basic' || !encoded) {
+ return false
+ }
+
+ // Decode base64 credentials
+ const decoded = atob(encoded)
+ const [username, password] = decoded.split(':')
+
+ // Get expected password from environment
+ // In Cloudflare Pages, this is set in the dashboard or wrangler.toml [vars]
+ const expectedPassword = process.env.ADMIN_PASSWORD
+
+ if (!expectedPassword) {
+ console.error('ADMIN_PASSWORD environment variable not set!')
+ return false
+ }
+
+ // Simple validation: any username, correct password
+ // For production, you might want to validate username too
+ return password === expectedPassword
+ } catch (error) {
+ console.error('Auth validation error:', error)
+ return false
+ }
+}
diff --git a/package.json b/package.json
index 4869081..21ebe23 100644
--- a/package.json
+++ b/package.json
@@ -1,18 +1,28 @@
{
- "name": "my-v0-project",
- "version": "0.1.0",
+ "name": "atl-tech-network",
+ "version": "0.2.0",
"private": true,
"scripts": {
- "build": "next build",
"dev": "next dev",
+ "build": "next build",
+ "start": "next start",
"lint": "next lint",
- "start": "next start"
+ "pages:build": "npx @cloudflare/next-on-pages",
+ "pages:dev": "npx wrangler pages dev .vercel/output/static --compatibility-flag=nodejs_compat",
+ "pages:deploy": "npm run pages:build && npx wrangler pages deploy .vercel/output/static",
+ "db:create": "wrangler d1 create atl-tech-network-db",
+ "db:schema": "wrangler d1 execute DB --local --file=./db/schema.sql",
+ "db:schema:prod": "wrangler d1 execute DB --file=./db/schema.sql",
+ "db:migrate": "npx tsx scripts/migrate-to-d1.ts > db/seed.sql && wrangler d1 execute DB --local --file=./db/seed.sql",
+ "db:migrate:prod": "npx tsx scripts/migrate-to-d1.ts > db/seed.sql && wrangler d1 execute DB --file=./db/seed.sql",
+ "db:studio": "wrangler d1 execute DB --local --command 'SELECT 1'"
},
"dependencies": {
- "@hookform/resolvers": "^3.10.0",
- "@radix-ui/react-accordion": "1.2.2",
- "@radix-ui/react-alert-dialog": "1.1.4",
- "@radix-ui/react-aspect-ratio": "1.1.1",
+ "@cloudflare/next-on-pages": "^1.13.16",
+ "@hookform/resolvers": "^5.2.2",
+ "@radix-ui/react-accordion": "1.2.12",
+ "@radix-ui/react-alert-dialog": "1.1.15",
+ "@radix-ui/react-aspect-ratio": "1.1.8",
"@radix-ui/react-avatar": "1.1.2",
"@radix-ui/react-checkbox": "1.1.3",
"@radix-ui/react-collapsible": "1.1.2",
@@ -37,7 +47,7 @@
"@radix-ui/react-toggle": "1.1.1",
"@radix-ui/react-toggle-group": "1.1.1",
"@radix-ui/react-tooltip": "1.1.6",
- "autoprefixer": "^10.4.20",
+ "autoprefixer": "^10.4.22",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "1.0.4",
@@ -48,26 +58,28 @@
"lucide-react": "^0.454.0",
"next": "15.2.4",
"next-themes": "latest",
- "react": "^19",
+ "react": "^19.2.1",
"react-day-picker": "9.8.0",
- "react-dom": "^19",
- "react-hook-form": "^7.60.0",
- "react-resizable-panels": "^2.1.7",
+ "react-dom": "^19.2.1",
+ "react-hook-form": "^7.68.0",
+ "react-resizable-panels": "^2.1.9",
"recharts": "2.15.4",
"sonner": "^1.7.4",
- "tailwind-merge": "^2.5.5",
+ "tailwind-merge": "^2.6.0",
"tailwindcss-animate": "^1.0.7",
"vaul": "^0.9.9",
"zod": "3.25.67"
},
"devDependencies": {
- "@tailwindcss/postcss": "^4.1.9",
- "@types/node": "^22",
- "@types/react": "^19",
- "@types/react-dom": "^19",
- "postcss": "^8.5",
- "tailwindcss": "^4.1.9",
+ "@tailwindcss/postcss": "^4.1.17",
+ "@types/node": "^22.19.1",
+ "@types/react": "^19.2.7",
+ "@types/react-dom": "^19.2.3",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.17",
+ "tsx": "^4.21.0",
"tw-animate-css": "1.3.3",
- "typescript": "^5"
+ "typescript": "^5.9.3",
+ "wrangler": "^4.52.1"
}
}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 2818ea7..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,3589 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- '@hookform/resolvers':
- specifier: ^3.10.0
- version: 3.10.0(react-hook-form@7.60.0(react@19.0.0))
- '@radix-ui/react-accordion':
- specifier: 1.2.2
- version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-alert-dialog':
- specifier: 1.1.4
- version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-aspect-ratio':
- specifier: 1.1.1
- version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-avatar':
- specifier: 1.1.2
- version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-checkbox':
- specifier: 1.1.3
- version: 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-collapsible':
- specifier: 1.1.2
- version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-context-menu':
- specifier: 2.2.4
- version: 2.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-dialog':
- specifier: 1.1.4
- version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-dropdown-menu':
- specifier: 2.1.4
- version: 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-hover-card':
- specifier: 1.1.4
- version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-label':
- specifier: latest
- version: 2.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-menubar':
- specifier: 1.1.4
- version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-navigation-menu':
- specifier: 1.2.3
- version: 1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-popover':
- specifier: 1.1.4
- version: 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-progress':
- specifier: 1.1.1
- version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-radio-group':
- specifier: 1.2.2
- version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-scroll-area':
- specifier: 1.2.2
- version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-select':
- specifier: latest
- version: 2.2.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-separator':
- specifier: 1.1.1
- version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slider':
- specifier: 1.2.2
- version: 1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot':
- specifier: latest
- version: 1.2.3(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-switch':
- specifier: 1.1.2
- version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-tabs':
- specifier: 1.1.2
- version: 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-toast':
- specifier: latest
- version: 1.2.15(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-toggle':
- specifier: 1.1.1
- version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-toggle-group':
- specifier: 1.1.1
- version: 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-tooltip':
- specifier: 1.1.6
- version: 1.1.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- autoprefixer:
- specifier: ^10.4.20
- version: 10.4.20(postcss@8.5.0)
- class-variance-authority:
- specifier: ^0.7.1
- version: 0.7.1
- clsx:
- specifier: ^2.1.1
- version: 2.1.1
- cmdk:
- specifier: 1.0.4
- version: 1.0.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- date-fns:
- specifier: 4.1.0
- version: 4.1.0
- embla-carousel-react:
- specifier: 8.5.1
- version: 8.5.1(react@19.0.0)
- geist:
- specifier: latest
- version: 1.4.2(next@15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0))
- input-otp:
- specifier: 1.4.1
- version: 1.4.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- lucide-react:
- specifier: ^0.454.0
- version: 0.454.0(react@19.0.0)
- next:
- specifier: 15.2.4
- version: 15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- next-themes:
- specifier: latest
- version: 0.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react:
- specifier: ^19
- version: 19.0.0
- react-day-picker:
- specifier: 9.8.0
- version: 9.8.0(react@19.0.0)
- react-dom:
- specifier: ^19
- version: 19.0.0(react@19.0.0)
- react-hook-form:
- specifier: ^7.60.0
- version: 7.60.0(react@19.0.0)
- react-resizable-panels:
- specifier: ^2.1.7
- version: 2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- recharts:
- specifier: 2.15.4
- version: 2.15.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- sonner:
- specifier: ^1.7.4
- version: 1.7.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- tailwind-merge:
- specifier: ^2.5.5
- version: 2.5.5
- tailwindcss-animate:
- specifier: ^1.0.7
- version: 1.0.7(tailwindcss@4.1.9)
- vaul:
- specifier: ^0.9.9
- version: 0.9.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- zod:
- specifier: 3.25.67
- version: 3.25.67
- devDependencies:
- '@tailwindcss/postcss':
- specifier: ^4.1.9
- version: 4.1.9
- '@types/node':
- specifier: ^22
- version: 22.0.0
- '@types/react':
- specifier: ^19
- version: 19.0.0
- '@types/react-dom':
- specifier: ^19
- version: 19.0.0
- postcss:
- specifier: ^8.5
- version: 8.5.0
- tailwindcss:
- specifier: ^4.1.9
- version: 4.1.9
- tw-animate-css:
- specifier: 1.3.3
- version: 1.3.3
- typescript:
- specifier: ^5
- version: 5.0.2
-
-packages:
-
- '@alloc/quick-lru@5.2.0':
- resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
- engines: {node: '>=10'}
-
- '@ampproject/remapping@2.3.0':
- resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
- engines: {node: '>=6.0.0'}
-
- '@babel/runtime@7.28.3':
- resolution: {integrity: sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==}
- engines: {node: '>=6.9.0'}
-
- '@date-fns/tz@1.2.0':
- resolution: {integrity: sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==}
-
- '@emnapi/runtime@1.4.5':
- resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==}
-
- '@floating-ui/core@1.7.3':
- resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
-
- '@floating-ui/dom@1.7.4':
- resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
-
- '@floating-ui/react-dom@2.1.6':
- resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==}
- peerDependencies:
- react: '>=16.8.0'
- react-dom: '>=16.8.0'
-
- '@floating-ui/utils@0.2.10':
- resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
-
- '@hookform/resolvers@3.10.0':
- resolution: {integrity: sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==}
- peerDependencies:
- react-hook-form: ^7.0.0
-
- '@img/sharp-darwin-arm64@0.33.5':
- resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-darwin-x64@0.33.5':
- resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
- cpu: [arm64]
- os: [darwin]
-
- '@img/sharp-libvips-darwin-x64@1.0.4':
- resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
- cpu: [x64]
- os: [darwin]
-
- '@img/sharp-libvips-linux-arm64@1.0.4':
- resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linux-arm@1.0.5':
- resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-libvips-linux-s390x@1.0.4':
- resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-libvips-linux-x64@1.0.4':
- resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linux-arm64@0.33.5':
- resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linux-arm@0.33.5':
- resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm]
- os: [linux]
-
- '@img/sharp-linux-s390x@0.33.5':
- resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [s390x]
- os: [linux]
-
- '@img/sharp-linux-x64@0.33.5':
- resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-linuxmusl-arm64@0.33.5':
- resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [arm64]
- os: [linux]
-
- '@img/sharp-linuxmusl-x64@0.33.5':
- resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [linux]
-
- '@img/sharp-wasm32@0.33.5':
- resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [wasm32]
-
- '@img/sharp-win32-ia32@0.33.5':
- resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [ia32]
- os: [win32]
-
- '@img/sharp-win32-x64@0.33.5':
- resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
- cpu: [x64]
- os: [win32]
-
- '@isaacs/fs-minipass@4.0.1':
- resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
- engines: {node: '>=18.0.0'}
-
- '@jridgewell/gen-mapping@0.3.13':
- resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
-
- '@jridgewell/resolve-uri@3.1.2':
- resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.5.5':
- resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
-
- '@jridgewell/trace-mapping@0.3.30':
- resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
-
- '@next/env@15.2.4':
- resolution: {integrity: sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==}
-
- '@next/swc-darwin-arm64@15.2.4':
- resolution: {integrity: sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@next/swc-darwin-x64@15.2.4':
- resolution: {integrity: sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@next/swc-linux-arm64-gnu@15.2.4':
- resolution: {integrity: sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-arm64-musl@15.2.4':
- resolution: {integrity: sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@next/swc-linux-x64-gnu@15.2.4':
- resolution: {integrity: sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-linux-x64-musl@15.2.4':
- resolution: {integrity: sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@next/swc-win32-arm64-msvc@15.2.4':
- resolution: {integrity: sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@next/swc-win32-x64-msvc@15.2.4':
- resolution: {integrity: sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@radix-ui/number@1.1.0':
- resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
-
- '@radix-ui/number@1.1.1':
- resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
-
- '@radix-ui/primitive@1.1.1':
- resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==}
-
- '@radix-ui/primitive@1.1.3':
- resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
-
- '@radix-ui/react-accordion@1.2.2':
- resolution: {integrity: sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-alert-dialog@1.1.4':
- resolution: {integrity: sha512-A6Kh23qZDLy3PSU4bh2UJZznOrUdHImIXqF8YtUa6CN73f8EOO9XlXSCd9IHyPvIquTaa/kwaSWzZTtUvgXVGw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-arrow@1.1.1':
- resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-arrow@1.1.7':
- resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-aspect-ratio@1.1.1':
- resolution: {integrity: sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-avatar@1.1.2':
- resolution: {integrity: sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-checkbox@1.1.3':
- resolution: {integrity: sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-collapsible@1.1.2':
- resolution: {integrity: sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-collection@1.1.1':
- resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-collection@1.1.7':
- resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-compose-refs@1.1.1':
- resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-compose-refs@1.1.2':
- resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-context-menu@2.2.4':
- resolution: {integrity: sha512-ap4wdGwK52rJxGkwukU1NrnEodsUFQIooANKu+ey7d6raQ2biTcEf8za1zr0mgFHieevRTB2nK4dJeN8pTAZGQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-context@1.1.1':
- resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-context@1.1.2':
- resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-dialog@1.1.4':
- resolution: {integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-direction@1.1.0':
- resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-direction@1.1.1':
- resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-dismissable-layer@1.1.11':
- resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-dismissable-layer@1.1.3':
- resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-dropdown-menu@2.1.4':
- resolution: {integrity: sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-focus-guards@1.1.1':
- resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-focus-guards@1.1.3':
- resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-focus-scope@1.1.1':
- resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-focus-scope@1.1.7':
- resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-hover-card@1.1.4':
- resolution: {integrity: sha512-QSUUnRA3PQ2UhvoCv3eYvMnCAgGQW+sTu86QPuNb+ZMi+ZENd6UWpiXbcWDQ4AEaKF9KKpCHBeaJz9Rw6lRlaQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-id@1.1.0':
- resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-id@1.1.1':
- resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-label@2.1.7':
- resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-menu@2.1.4':
- resolution: {integrity: sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-menubar@1.1.4':
- resolution: {integrity: sha512-+KMpi7VAZuB46+1LD7a30zb5IxyzLgC8m8j42gk3N4TUCcViNQdX8FhoH1HDvYiA8quuqcek4R4bYpPn/SY1GA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-navigation-menu@1.2.3':
- resolution: {integrity: sha512-IQWAsQ7dsLIYDrn0WqPU+cdM7MONTv9nqrLVYoie3BPiabSfUVDe6Fr+oEt0Cofsr9ONDcDe9xhmJbL1Uq1yKg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-popover@1.1.4':
- resolution: {integrity: sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-popper@1.2.1':
- resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-popper@1.2.8':
- resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-portal@1.1.3':
- resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-portal@1.1.9':
- resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-presence@1.1.2':
- resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-presence@1.1.5':
- resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.0.1':
- resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-primitive@2.1.3':
- resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-progress@1.1.1':
- resolution: {integrity: sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-radio-group@1.2.2':
- resolution: {integrity: sha512-E0MLLGfOP0l8P/NxgVzfXJ8w3Ch8cdO6UDzJfDChu4EJDy+/WdO5LqpdY8PYnCErkmZH3gZhDL1K7kQ41fAHuQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-roving-focus@1.1.1':
- resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-scroll-area@1.2.2':
- resolution: {integrity: sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-select@2.2.6':
- resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-separator@1.1.1':
- resolution: {integrity: sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-slider@1.2.2':
- resolution: {integrity: sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-slot@1.1.1':
- resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-slot@1.2.3':
- resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-switch@1.1.2':
- resolution: {integrity: sha512-zGukiWHjEdBCRyXvKR6iXAQG6qXm2esuAD6kDOi9Cn+1X6ev3ASo4+CsYaD6Fov9r/AQFekqnD/7+V0Cs6/98g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-tabs@1.1.2':
- resolution: {integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toast@1.2.15':
- resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toggle-group@1.1.1':
- resolution: {integrity: sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-toggle@1.1.1':
- resolution: {integrity: sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-tooltip@1.1.6':
- resolution: {integrity: sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-use-callback-ref@1.1.0':
- resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-callback-ref@1.1.1':
- resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-controllable-state@1.1.0':
- resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-controllable-state@1.2.2':
- resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-effect-event@0.0.2':
- resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-escape-keydown@1.1.0':
- resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-escape-keydown@1.1.1':
- resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-layout-effect@1.1.0':
- resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-layout-effect@1.1.1':
- resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-previous@1.1.0':
- resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-previous@1.1.1':
- resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-rect@1.1.0':
- resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-rect@1.1.1':
- resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-size@1.1.0':
- resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-use-size@1.1.1':
- resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- '@radix-ui/react-visually-hidden@1.1.1':
- resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/react-visually-hidden@1.2.3':
- resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
- '@radix-ui/rect@1.1.0':
- resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
-
- '@radix-ui/rect@1.1.1':
- resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
-
- '@swc/counter@0.1.3':
- resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
-
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
-
- '@tailwindcss/node@4.1.9':
- resolution: {integrity: sha512-ZFsgw6lbtcZKYPWvf6zAuCVSuer7UQ2Z5P8BETHcpA4x/3NwOjAIXmRnYfG77F14f9bPeuR4GaNz3ji1JkQMeQ==}
-
- '@tailwindcss/oxide-android-arm64@4.1.9':
- resolution: {integrity: sha512-X4mBUUJ3DPqODhtdT5Ju55feJwBN+hP855Z7c0t11Jzece9KRtdM41ljMrCcureKMh96mcOh2gxahkp1yE+BOQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [android]
-
- '@tailwindcss/oxide-darwin-arm64@4.1.9':
- resolution: {integrity: sha512-jnWnqz71ZLXUbJLW53m9dSQakLBfaWxAd9TAibimrNdQfZKyie+xGppdDCZExtYwUdflt3kOT9y1JUgYXVEQmw==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [darwin]
-
- '@tailwindcss/oxide-darwin-x64@4.1.9':
- resolution: {integrity: sha512-+Ui6LlvZ6aCPvSwv3l16nYb6gu1N6RamFz7hSu5aqaiPrDQqD1LPT/e8r2/laSVwFjRyOZxQQ/gvGxP3ihA2rw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [darwin]
-
- '@tailwindcss/oxide-freebsd-x64@4.1.9':
- resolution: {integrity: sha512-BWqCh0uoXMprwWfG7+oyPW53VCh6G08pxY0IIN/i5DQTpPnCJ4zm2W8neH9kW1v1f6RXP3b2qQjAzrAcnQ5e9w==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [freebsd]
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.9':
- resolution: {integrity: sha512-U8itjQb5TVc80aV5Yo+JtKo+qS95CV4XLrKEtSLQFoTD/c9j3jk4WZipYT+9Jxqem29qCMRPxjEZ3s+wTT4XCw==}
- engines: {node: '>= 10'}
- cpu: [arm]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.9':
- resolution: {integrity: sha512-dKlGraoNvyTrR7ovLw3Id9yTwc+l0NYg8bwOkYqk+zltvGns8bPvVr6PH5jATdc75kCGd6kDRmP4p1LwqCnPJQ==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.9':
- resolution: {integrity: sha512-qCZ4QTrZaBEgNM13pGjvakdmid1Kw3CUCEQzgVAn64Iud7zSxOGwK1usg+hrwrOfFH7vXZZr8OhzC8fJTRq5NA==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.9':
- resolution: {integrity: sha512-bmzkAWQjRlY9udmg/a1bOtZpV14ZCdrB74PZrd7Oz/wK62Rk+m9+UV3BsgGfOghyO5Qu5ZDciADzDMZbi9n1+g==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.9':
- resolution: {integrity: sha512-NpvPQsXj1raDHhd+g2SUvZQoTPWfYAsyYo9h4ZqV7EOmR+aj7LCAE5hnXNnrJ5Egy/NiO3Hs7BNpSbsPEOpORg==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [linux]
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.9':
- resolution: {integrity: sha512-G93Yuf3xrpTxDUCSh685d1dvOkqOB0Gy+Bchv9Zy3k+lNw/9SEgsHit50xdvp1/p9yRH2TeDHJeDLUiV4mlTkA==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
- bundledDependencies:
- - '@napi-rs/wasm-runtime'
- - '@emnapi/core'
- - '@emnapi/runtime'
- - '@tybys/wasm-util'
- - '@emnapi/wasi-threads'
- - tslib
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.9':
- resolution: {integrity: sha512-Eq9FZzZe/NPkUiSMY+eY7r5l7msuFlm6wC6lnV11m8885z0vs9zx48AKTfw0UbVecTRV5wMxKb3Kmzx2LoUIWg==}
- engines: {node: '>= 10'}
- cpu: [arm64]
- os: [win32]
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.9':
- resolution: {integrity: sha512-oZ4zkthMXMJN2w/vu3jEfuqWTW7n8giGYDV/SfhBGRNehNMOBqh3YUAEv+8fv2YDJEzL4JpXTNTiSXW3UiUwBw==}
- engines: {node: '>= 10'}
- cpu: [x64]
- os: [win32]
-
- '@tailwindcss/oxide@4.1.9':
- resolution: {integrity: sha512-oqjNxOBt1iNRAywjiH+VFsfovx/hVt4mxe0kOkRMAbbcCwbJg5e2AweFqyGN7gtmE1TJXnvnyX7RWTR1l72ciQ==}
- engines: {node: '>= 10'}
-
- '@tailwindcss/postcss@4.1.9':
- resolution: {integrity: sha512-v3DKzHibZO8ioVDmuVHCW1PR0XSM7nS40EjZFJEA1xPuvTuQPaR5flE1LyikU3hu2u1KNWBtEaSe8qsQjX3tyg==}
-
- '@types/d3-array@3.2.1':
- resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==}
-
- '@types/d3-color@3.1.3':
- resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
-
- '@types/d3-ease@3.0.2':
- resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
-
- '@types/d3-interpolate@3.0.4':
- resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
-
- '@types/d3-path@3.1.1':
- resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==}
-
- '@types/d3-scale@4.0.9':
- resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
-
- '@types/d3-shape@3.1.7':
- resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==}
-
- '@types/d3-time@3.0.4':
- resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
-
- '@types/d3-timer@3.0.2':
- resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
-
- '@types/node@22.0.0':
- resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==}
-
- '@types/react-dom@19.0.0':
- resolution: {integrity: sha512-1KfiQKsH1o00p9m5ag12axHQSb3FOU9H20UTrujVSkNhuCrRHiQWFqgEnTNK5ZNfnzZv8UWrnXVqCmCF9fgY3w==}
-
- '@types/react@19.0.0':
- resolution: {integrity: sha512-MY3oPudxvMYyesqs/kW1Bh8y9VqSmf+tzqw3ae8a9DZW68pUe3zAdHeI1jc6iAysuRdACnVknHP8AhwD4/dxtg==}
-
- aria-hidden@1.2.6:
- resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
- engines: {node: '>=10'}
-
- autoprefixer@10.4.20:
- resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
- engines: {node: ^10 || ^12 || >=14}
- hasBin: true
- peerDependencies:
- postcss: ^8.1.0
-
- browserslist@4.25.3:
- resolution: {integrity: sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
-
- caniuse-lite@1.0.30001737:
- resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==}
-
- chownr@3.0.0:
- resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
- engines: {node: '>=18'}
-
- class-variance-authority@0.7.1:
- resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
-
- client-only@0.0.1:
- resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
-
- clsx@2.1.1:
- resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
- engines: {node: '>=6'}
-
- cmdk@1.0.4:
- resolution: {integrity: sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==}
- peerDependencies:
- react: ^18 || ^19 || ^19.0.0-rc
- react-dom: ^18 || ^19 || ^19.0.0-rc
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- d3-array@3.2.4:
- resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
- engines: {node: '>=12'}
-
- d3-color@3.1.0:
- resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
- engines: {node: '>=12'}
-
- d3-ease@3.0.1:
- resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
- engines: {node: '>=12'}
-
- d3-format@3.1.0:
- resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
- engines: {node: '>=12'}
-
- d3-interpolate@3.0.1:
- resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
- engines: {node: '>=12'}
-
- d3-path@3.1.0:
- resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
- engines: {node: '>=12'}
-
- d3-scale@4.0.2:
- resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
- engines: {node: '>=12'}
-
- d3-shape@3.2.0:
- resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
- engines: {node: '>=12'}
-
- d3-time-format@4.1.0:
- resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
- engines: {node: '>=12'}
-
- d3-time@3.1.0:
- resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
- engines: {node: '>=12'}
-
- d3-timer@3.0.1:
- resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
- engines: {node: '>=12'}
-
- date-fns-jalali@4.1.0-0:
- resolution: {integrity: sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==}
-
- date-fns@4.1.0:
- resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==}
-
- decimal.js-light@2.5.1:
- resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==}
-
- detect-libc@2.0.4:
- resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
- engines: {node: '>=8'}
-
- detect-node-es@1.1.0:
- resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==}
-
- dom-helpers@5.2.1:
- resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
-
- electron-to-chromium@1.5.208:
- resolution: {integrity: sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==}
-
- embla-carousel-react@8.5.1:
- resolution: {integrity: sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- embla-carousel-reactive-utils@8.5.1:
- resolution: {integrity: sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A==}
- peerDependencies:
- embla-carousel: 8.5.1
-
- embla-carousel@8.5.1:
- resolution: {integrity: sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==}
-
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
- engines: {node: '>=10.13.0'}
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- eventemitter3@4.0.7:
- resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
-
- fast-equals@5.2.2:
- resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==}
- engines: {node: '>=6.0.0'}
-
- fraction.js@4.3.7:
- resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
-
- geist@1.4.2:
- resolution: {integrity: sha512-OQUga/KUc8ueijck6EbtT07L4tZ5+TZgjw8PyWfxo16sL5FWk7gNViPNU8hgCFjy6bJi9yuTP+CRpywzaGN8zw==}
- peerDependencies:
- next: '>=13.2.0'
-
- get-nonce@1.0.1:
- resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
- engines: {node: '>=6'}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- input-otp@1.4.1:
- resolution: {integrity: sha512-+yvpmKYKHi9jIGngxagY9oWiiblPB7+nEO75F2l2o4vs+6vpPZZmUl4tBNYuTCvQjhvEIbdNeJu70bhfYP2nbw==}
- peerDependencies:
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
-
- internmap@2.0.3:
- resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
- engines: {node: '>=12'}
-
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
- jiti@2.5.1:
- resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
- hasBin: true
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- lightningcss-darwin-arm64@1.30.1:
- resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [darwin]
-
- lightningcss-darwin-x64@1.30.1:
- resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [darwin]
-
- lightningcss-freebsd-x64@1.30.1:
- resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [freebsd]
-
- lightningcss-linux-arm-gnueabihf@1.30.1:
- resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm]
- os: [linux]
-
- lightningcss-linux-arm64-gnu@1.30.1:
- resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-arm64-musl@1.30.1:
- resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [linux]
-
- lightningcss-linux-x64-gnu@1.30.1:
- resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-linux-x64-musl@1.30.1:
- resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [linux]
-
- lightningcss-win32-arm64-msvc@1.30.1:
- resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
- engines: {node: '>= 12.0.0'}
- cpu: [arm64]
- os: [win32]
-
- lightningcss-win32-x64-msvc@1.30.1:
- resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
- engines: {node: '>= 12.0.0'}
- cpu: [x64]
- os: [win32]
-
- lightningcss@1.30.1:
- resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
- engines: {node: '>= 12.0.0'}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- loose-envify@1.4.0:
- resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
- hasBin: true
-
- lucide-react@0.454.0:
- resolution: {integrity: sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==}
- peerDependencies:
- react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
-
- magic-string@0.30.18:
- resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==}
-
- minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minizlib@3.0.2:
- resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==}
- engines: {node: '>= 18'}
-
- mkdirp@3.0.1:
- resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
- engines: {node: '>=10'}
- hasBin: true
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- next-themes@0.4.6:
- resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
- peerDependencies:
- react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
- react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
-
- next@15.2.4:
- resolution: {integrity: sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
- hasBin: true
- peerDependencies:
- '@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
- babel-plugin-react-compiler: '*'
- react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
- sass: ^1.3.0
- peerDependenciesMeta:
- '@opentelemetry/api':
- optional: true
- '@playwright/test':
- optional: true
- babel-plugin-react-compiler:
- optional: true
- sass:
- optional: true
-
- node-releases@2.0.19:
- resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
-
- normalize-range@0.1.2:
- resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
- engines: {node: '>=0.10.0'}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- postcss-value-parser@4.2.0:
- resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
-
- postcss@8.4.31:
- resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==}
- engines: {node: ^10 || ^12 || >=14}
-
- postcss@8.5.0:
- resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==}
- engines: {node: ^10 || ^12 || >=14}
-
- prop-types@15.8.1:
- resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
-
- react-day-picker@9.8.0:
- resolution: {integrity: sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ==}
- engines: {node: '>=18'}
- peerDependencies:
- react: '>=16.8.0'
-
- react-dom@19.0.0:
- resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
- peerDependencies:
- react: ^19.0.0
-
- react-hook-form@7.60.0:
- resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18 || ^19
-
- react-is@16.13.1:
- resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
-
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
-
- react-remove-scroll-bar@2.3.8:
- resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-remove-scroll@2.7.1:
- resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-resizable-panels@2.1.7:
- resolution: {integrity: sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA==}
- peerDependencies:
- react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- react-smooth@4.0.4:
- resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- react-style-singleton@2.2.3:
- resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- react-transition-group@4.4.5:
- resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
- peerDependencies:
- react: '>=16.6.0'
- react-dom: '>=16.6.0'
-
- react@19.0.0:
- resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
- engines: {node: '>=0.10.0'}
-
- recharts-scale@0.4.5:
- resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==}
-
- recharts@2.15.4:
- resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==}
- engines: {node: '>=14'}
- peerDependencies:
- react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- scheduler@0.25.0:
- resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
-
- semver@7.7.2:
- resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==}
- engines: {node: '>=10'}
- hasBin: true
-
- sharp@0.33.5:
- resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
- engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
-
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
-
- sonner@1.7.4:
- resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==}
- peerDependencies:
- react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
-
- styled-jsx@5.1.6:
- resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
- engines: {node: '>= 12.0.0'}
- peerDependencies:
- '@babel/core': '*'
- babel-plugin-macros: '*'
- react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- babel-plugin-macros:
- optional: true
-
- tailwind-merge@2.5.5:
- resolution: {integrity: sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==}
-
- tailwindcss-animate@1.0.7:
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
-
- tailwindcss@4.1.9:
- resolution: {integrity: sha512-anBZRcvfNMsQdHB9XSGzAtIQWlhs49uK75jfkwrqjRUbjt4d7q9RE1wR1xWyfYZhLFnFX4ahWp88Au2lcEw5IQ==}
-
- tapable@2.2.3:
- resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==}
- engines: {node: '>=6'}
-
- tar@7.4.3:
- resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
- engines: {node: '>=18'}
-
- tiny-invariant@1.3.3:
- resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- tw-animate-css@1.3.3:
- resolution: {integrity: sha512-tXE2TRWrskc4TU3RDd7T8n8Np/wCfoeH9gz22c7PzYqNPQ9FBGFbWWzwL0JyHcFp+jHozmF76tbHfPAx22ua2Q==}
-
- typescript@5.0.2:
- resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
- engines: {node: '>=12.20'}
- hasBin: true
-
- undici-types@6.11.1:
- resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==}
-
- update-browserslist-db@1.1.3:
- resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- use-callback-ref@1.3.3:
- resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sidecar@1.1.3:
- resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
- engines: {node: '>=10'}
- peerDependencies:
- '@types/react': '*'
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
-
- use-sync-external-store@1.5.0:
- resolution: {integrity: sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
- vaul@0.9.9:
- resolution: {integrity: sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==}
- peerDependencies:
- react: ^16.8 || ^17.0 || ^18.0
- react-dom: ^16.8 || ^17.0 || ^18.0
-
- victory-vendor@36.9.2:
- resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
-
- yallist@5.0.0:
- resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
- engines: {node: '>=18'}
-
- zod@3.25.67:
- resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==}
-
-snapshots:
-
- '@alloc/quick-lru@5.2.0': {}
-
- '@ampproject/remapping@2.3.0':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.30
-
- '@babel/runtime@7.28.3': {}
-
- '@date-fns/tz@1.2.0': {}
-
- '@emnapi/runtime@1.4.5':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@floating-ui/core@1.7.3':
- dependencies:
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/dom@1.7.4':
- dependencies:
- '@floating-ui/core': 1.7.3
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/react-dom@2.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@floating-ui/dom': 1.7.4
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- '@floating-ui/utils@0.2.10': {}
-
- '@hookform/resolvers@3.10.0(react-hook-form@7.60.0(react@19.0.0))':
- dependencies:
- react-hook-form: 7.60.0(react@19.0.0)
-
- '@img/sharp-darwin-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- optional: true
-
- '@img/sharp-darwin-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.0.4
- optional: true
-
- '@img/sharp-libvips-darwin-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-darwin-x64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-arm@1.0.5':
- optional: true
-
- '@img/sharp-libvips-linux-s390x@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linux-x64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
- optional: true
-
- '@img/sharp-libvips-linuxmusl-x64@1.0.4':
- optional: true
-
- '@img/sharp-linux-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.0.4
- optional: true
-
- '@img/sharp-linux-arm@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.0.5
- optional: true
-
- '@img/sharp-linux-s390x@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.0.4
- optional: true
-
- '@img/sharp-linux-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.0.4
- optional: true
-
- '@img/sharp-linuxmusl-arm64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- optional: true
-
- '@img/sharp-linuxmusl-x64@0.33.5':
- optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- optional: true
-
- '@img/sharp-wasm32@0.33.5':
- dependencies:
- '@emnapi/runtime': 1.4.5
- optional: true
-
- '@img/sharp-win32-ia32@0.33.5':
- optional: true
-
- '@img/sharp-win32-x64@0.33.5':
- optional: true
-
- '@isaacs/fs-minipass@4.0.1':
- dependencies:
- minipass: 7.1.2
-
- '@jridgewell/gen-mapping@0.3.13':
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.30
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.5.5': {}
-
- '@jridgewell/trace-mapping@0.3.30':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
-
- '@next/env@15.2.4': {}
-
- '@next/swc-darwin-arm64@15.2.4':
- optional: true
-
- '@next/swc-darwin-x64@15.2.4':
- optional: true
-
- '@next/swc-linux-arm64-gnu@15.2.4':
- optional: true
-
- '@next/swc-linux-arm64-musl@15.2.4':
- optional: true
-
- '@next/swc-linux-x64-gnu@15.2.4':
- optional: true
-
- '@next/swc-linux-x64-musl@15.2.4':
- optional: true
-
- '@next/swc-win32-arm64-msvc@15.2.4':
- optional: true
-
- '@next/swc-win32-x64-msvc@15.2.4':
- optional: true
-
- '@radix-ui/number@1.1.0': {}
-
- '@radix-ui/number@1.1.1': {}
-
- '@radix-ui/primitive@1.1.1': {}
-
- '@radix-ui/primitive@1.1.3': {}
-
- '@radix-ui/react-accordion@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collapsible': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-alert-dialog@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-aspect-ratio@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-avatar@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-checkbox@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-collapsible@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-context-menu@2.2.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-context@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-context@1.1.2(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- aria-hidden: 1.2.6
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-direction@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-direction@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-dropdown-menu@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-hover-card@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-id@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-id@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-label@2.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-menu@2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- aria-hidden: 1.2.6
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-menubar@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-navigation-menu@1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-popover@1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- aria-hidden: 1.2.6
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/rect': 1.1.0
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/rect': 1.1.1
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-progress@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-radio-group@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-scroll-area@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/number': 1.1.0
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/number': 1.1.1
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- aria-hidden: 1.2.6
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-remove-scroll: 2.7.1(@types/react@19.0.0)(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-separator@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-slider@1.2.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/number': 1.1.0
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-slot@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-slot@1.2.3(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-switch@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-toggle-group@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-direction': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-toggle': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-toggle@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-tooltip@1.1.6(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/primitive': 1.1.1
- '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-context': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-slot': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-visually-hidden': 1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/rect': 1.1.0
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/rect': 1.1.1
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-size@1.1.0(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-use-size@1.1.1(@types/react@19.0.0)(react@19.0.0)':
- dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- react: 19.0.0
- optionalDependencies:
- '@types/react': 19.0.0
-
- '@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
- dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
- '@types/react-dom': 19.0.0
-
- '@radix-ui/rect@1.1.0': {}
-
- '@radix-ui/rect@1.1.1': {}
-
- '@swc/counter@0.1.3': {}
-
- '@swc/helpers@0.5.15':
- dependencies:
- tslib: 2.8.1
-
- '@tailwindcss/node@4.1.9':
- dependencies:
- '@ampproject/remapping': 2.3.0
- enhanced-resolve: 5.18.3
- jiti: 2.5.1
- lightningcss: 1.30.1
- magic-string: 0.30.18
- source-map-js: 1.2.1
- tailwindcss: 4.1.9
-
- '@tailwindcss/oxide-android-arm64@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-darwin-arm64@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-darwin-x64@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-freebsd-x64@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-gnu@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-linux-arm64-musl@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-gnu@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-linux-x64-musl@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-wasm32-wasi@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-win32-arm64-msvc@4.1.9':
- optional: true
-
- '@tailwindcss/oxide-win32-x64-msvc@4.1.9':
- optional: true
-
- '@tailwindcss/oxide@4.1.9':
- dependencies:
- detect-libc: 2.0.4
- tar: 7.4.3
- optionalDependencies:
- '@tailwindcss/oxide-android-arm64': 4.1.9
- '@tailwindcss/oxide-darwin-arm64': 4.1.9
- '@tailwindcss/oxide-darwin-x64': 4.1.9
- '@tailwindcss/oxide-freebsd-x64': 4.1.9
- '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.9
- '@tailwindcss/oxide-linux-arm64-gnu': 4.1.9
- '@tailwindcss/oxide-linux-arm64-musl': 4.1.9
- '@tailwindcss/oxide-linux-x64-gnu': 4.1.9
- '@tailwindcss/oxide-linux-x64-musl': 4.1.9
- '@tailwindcss/oxide-wasm32-wasi': 4.1.9
- '@tailwindcss/oxide-win32-arm64-msvc': 4.1.9
- '@tailwindcss/oxide-win32-x64-msvc': 4.1.9
-
- '@tailwindcss/postcss@4.1.9':
- dependencies:
- '@alloc/quick-lru': 5.2.0
- '@tailwindcss/node': 4.1.9
- '@tailwindcss/oxide': 4.1.9
- postcss: 8.5.0
- tailwindcss: 4.1.9
-
- '@types/d3-array@3.2.1': {}
-
- '@types/d3-color@3.1.3': {}
-
- '@types/d3-ease@3.0.2': {}
-
- '@types/d3-interpolate@3.0.4':
- dependencies:
- '@types/d3-color': 3.1.3
-
- '@types/d3-path@3.1.1': {}
-
- '@types/d3-scale@4.0.9':
- dependencies:
- '@types/d3-time': 3.0.4
-
- '@types/d3-shape@3.1.7':
- dependencies:
- '@types/d3-path': 3.1.1
-
- '@types/d3-time@3.0.4': {}
-
- '@types/d3-timer@3.0.2': {}
-
- '@types/node@22.0.0':
- dependencies:
- undici-types: 6.11.1
-
- '@types/react-dom@19.0.0':
- dependencies:
- '@types/react': 19.0.0
-
- '@types/react@19.0.0':
- dependencies:
- csstype: 3.1.3
-
- aria-hidden@1.2.6:
- dependencies:
- tslib: 2.8.1
-
- autoprefixer@10.4.20(postcss@8.5.0):
- dependencies:
- browserslist: 4.25.3
- caniuse-lite: 1.0.30001737
- fraction.js: 4.3.7
- normalize-range: 0.1.2
- picocolors: 1.1.1
- postcss: 8.5.0
- postcss-value-parser: 4.2.0
-
- browserslist@4.25.3:
- dependencies:
- caniuse-lite: 1.0.30001737
- electron-to-chromium: 1.5.208
- node-releases: 2.0.19
- update-browserslist-db: 1.1.3(browserslist@4.25.3)
-
- busboy@1.6.0:
- dependencies:
- streamsearch: 1.1.0
-
- caniuse-lite@1.0.30001737: {}
-
- chownr@3.0.0: {}
-
- class-variance-authority@0.7.1:
- dependencies:
- clsx: 2.1.1
-
- client-only@0.0.1: {}
-
- clsx@2.1.1: {}
-
- cmdk@1.0.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.0.0)(react@19.0.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- use-sync-external-store: 1.5.0(react@19.0.0)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
- optional: true
-
- color-name@1.1.4:
- optional: true
-
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
- optional: true
-
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
- optional: true
-
- csstype@3.1.3: {}
-
- d3-array@3.2.4:
- dependencies:
- internmap: 2.0.3
-
- d3-color@3.1.0: {}
-
- d3-ease@3.0.1: {}
-
- d3-format@3.1.0: {}
-
- d3-interpolate@3.0.1:
- dependencies:
- d3-color: 3.1.0
-
- d3-path@3.1.0: {}
-
- d3-scale@4.0.2:
- dependencies:
- d3-array: 3.2.4
- d3-format: 3.1.0
- d3-interpolate: 3.0.1
- d3-time: 3.1.0
- d3-time-format: 4.1.0
-
- d3-shape@3.2.0:
- dependencies:
- d3-path: 3.1.0
-
- d3-time-format@4.1.0:
- dependencies:
- d3-time: 3.1.0
-
- d3-time@3.1.0:
- dependencies:
- d3-array: 3.2.4
-
- d3-timer@3.0.1: {}
-
- date-fns-jalali@4.1.0-0: {}
-
- date-fns@4.1.0: {}
-
- decimal.js-light@2.5.1: {}
-
- detect-libc@2.0.4: {}
-
- detect-node-es@1.1.0: {}
-
- dom-helpers@5.2.1:
- dependencies:
- '@babel/runtime': 7.28.3
- csstype: 3.1.3
-
- electron-to-chromium@1.5.208: {}
-
- embla-carousel-react@8.5.1(react@19.0.0):
- dependencies:
- embla-carousel: 8.5.1
- embla-carousel-reactive-utils: 8.5.1(embla-carousel@8.5.1)
- react: 19.0.0
-
- embla-carousel-reactive-utils@8.5.1(embla-carousel@8.5.1):
- dependencies:
- embla-carousel: 8.5.1
-
- embla-carousel@8.5.1: {}
-
- enhanced-resolve@5.18.3:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.2.3
-
- escalade@3.2.0: {}
-
- eventemitter3@4.0.7: {}
-
- fast-equals@5.2.2: {}
-
- fraction.js@4.3.7: {}
-
- geist@1.4.2(next@15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)):
- dependencies:
- next: 15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
-
- get-nonce@1.0.1: {}
-
- graceful-fs@4.2.11: {}
-
- input-otp@1.4.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- internmap@2.0.3: {}
-
- is-arrayish@0.3.2:
- optional: true
-
- jiti@2.5.1: {}
-
- js-tokens@4.0.0: {}
-
- lightningcss-darwin-arm64@1.30.1:
- optional: true
-
- lightningcss-darwin-x64@1.30.1:
- optional: true
-
- lightningcss-freebsd-x64@1.30.1:
- optional: true
-
- lightningcss-linux-arm-gnueabihf@1.30.1:
- optional: true
-
- lightningcss-linux-arm64-gnu@1.30.1:
- optional: true
-
- lightningcss-linux-arm64-musl@1.30.1:
- optional: true
-
- lightningcss-linux-x64-gnu@1.30.1:
- optional: true
-
- lightningcss-linux-x64-musl@1.30.1:
- optional: true
-
- lightningcss-win32-arm64-msvc@1.30.1:
- optional: true
-
- lightningcss-win32-x64-msvc@1.30.1:
- optional: true
-
- lightningcss@1.30.1:
- dependencies:
- detect-libc: 2.0.4
- optionalDependencies:
- lightningcss-darwin-arm64: 1.30.1
- lightningcss-darwin-x64: 1.30.1
- lightningcss-freebsd-x64: 1.30.1
- lightningcss-linux-arm-gnueabihf: 1.30.1
- lightningcss-linux-arm64-gnu: 1.30.1
- lightningcss-linux-arm64-musl: 1.30.1
- lightningcss-linux-x64-gnu: 1.30.1
- lightningcss-linux-x64-musl: 1.30.1
- lightningcss-win32-arm64-msvc: 1.30.1
- lightningcss-win32-x64-msvc: 1.30.1
-
- lodash@4.17.21: {}
-
- loose-envify@1.4.0:
- dependencies:
- js-tokens: 4.0.0
-
- lucide-react@0.454.0(react@19.0.0):
- dependencies:
- react: 19.0.0
-
- magic-string@0.30.18:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
-
- minipass@7.1.2: {}
-
- minizlib@3.0.2:
- dependencies:
- minipass: 7.1.2
-
- mkdirp@3.0.1: {}
-
- nanoid@3.3.11: {}
-
- next-themes@0.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- next@15.2.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- '@next/env': 15.2.4
- '@swc/counter': 0.1.3
- '@swc/helpers': 0.5.15
- busboy: 1.6.0
- caniuse-lite: 1.0.30001737
- postcss: 8.4.31
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- styled-jsx: 5.1.6(react@19.0.0)
- optionalDependencies:
- '@next/swc-darwin-arm64': 15.2.4
- '@next/swc-darwin-x64': 15.2.4
- '@next/swc-linux-arm64-gnu': 15.2.4
- '@next/swc-linux-arm64-musl': 15.2.4
- '@next/swc-linux-x64-gnu': 15.2.4
- '@next/swc-linux-x64-musl': 15.2.4
- '@next/swc-win32-arm64-msvc': 15.2.4
- '@next/swc-win32-x64-msvc': 15.2.4
- sharp: 0.33.5
- transitivePeerDependencies:
- - '@babel/core'
- - babel-plugin-macros
-
- node-releases@2.0.19: {}
-
- normalize-range@0.1.2: {}
-
- object-assign@4.1.1: {}
-
- picocolors@1.1.1: {}
-
- postcss-value-parser@4.2.0: {}
-
- postcss@8.4.31:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- postcss@8.5.0:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- prop-types@15.8.1:
- dependencies:
- loose-envify: 1.4.0
- object-assign: 4.1.1
- react-is: 16.13.1
-
- react-day-picker@9.8.0(react@19.0.0):
- dependencies:
- '@date-fns/tz': 1.2.0
- date-fns: 4.1.0
- date-fns-jalali: 4.1.0-0
- react: 19.0.0
-
- react-dom@19.0.0(react@19.0.0):
- dependencies:
- react: 19.0.0
- scheduler: 0.25.0
-
- react-hook-form@7.60.0(react@19.0.0):
- dependencies:
- react: 19.0.0
-
- react-is@16.13.1: {}
-
- react-is@18.3.1: {}
-
- react-remove-scroll-bar@2.3.8(@types/react@19.0.0)(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-style-singleton: 2.2.3(@types/react@19.0.0)(react@19.0.0)
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.0.0
-
- react-remove-scroll@2.7.1(@types/react@19.0.0)(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-remove-scroll-bar: 2.3.8(@types/react@19.0.0)(react@19.0.0)
- react-style-singleton: 2.2.3(@types/react@19.0.0)(react@19.0.0)
- tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.0.0)(react@19.0.0)
- use-sidecar: 1.1.3(@types/react@19.0.0)(react@19.0.0)
- optionalDependencies:
- '@types/react': 19.0.0
-
- react-resizable-panels@2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- react-smooth@4.0.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- fast-equals: 5.2.2
- prop-types: 15.8.1
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
-
- react-style-singleton@2.2.3(@types/react@19.0.0)(react@19.0.0):
- dependencies:
- get-nonce: 1.0.1
- react: 19.0.0
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.0.0
-
- react-transition-group@4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- '@babel/runtime': 7.28.3
- dom-helpers: 5.2.1
- loose-envify: 1.4.0
- prop-types: 15.8.1
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- react@19.0.0: {}
-
- recharts-scale@0.4.5:
- dependencies:
- decimal.js-light: 2.5.1
-
- recharts@2.15.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- clsx: 2.1.1
- eventemitter3: 4.0.7
- lodash: 4.17.21
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- react-is: 18.3.1
- react-smooth: 4.0.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- recharts-scale: 0.4.5
- tiny-invariant: 1.3.3
- victory-vendor: 36.9.2
-
- scheduler@0.25.0: {}
-
- semver@7.7.2:
- optional: true
-
- sharp@0.33.5:
- dependencies:
- color: 4.2.3
- detect-libc: 2.0.4
- semver: 7.7.2
- optionalDependencies:
- '@img/sharp-darwin-arm64': 0.33.5
- '@img/sharp-darwin-x64': 0.33.5
- '@img/sharp-libvips-darwin-arm64': 1.0.4
- '@img/sharp-libvips-darwin-x64': 1.0.4
- '@img/sharp-libvips-linux-arm': 1.0.5
- '@img/sharp-libvips-linux-arm64': 1.0.4
- '@img/sharp-libvips-linux-s390x': 1.0.4
- '@img/sharp-libvips-linux-x64': 1.0.4
- '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
- '@img/sharp-libvips-linuxmusl-x64': 1.0.4
- '@img/sharp-linux-arm': 0.33.5
- '@img/sharp-linux-arm64': 0.33.5
- '@img/sharp-linux-s390x': 0.33.5
- '@img/sharp-linux-x64': 0.33.5
- '@img/sharp-linuxmusl-arm64': 0.33.5
- '@img/sharp-linuxmusl-x64': 0.33.5
- '@img/sharp-wasm32': 0.33.5
- '@img/sharp-win32-ia32': 0.33.5
- '@img/sharp-win32-x64': 0.33.5
- optional: true
-
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
- optional: true
-
- sonner@1.7.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
-
- source-map-js@1.2.1: {}
-
- streamsearch@1.1.0: {}
-
- styled-jsx@5.1.6(react@19.0.0):
- dependencies:
- client-only: 0.0.1
- react: 19.0.0
-
- tailwind-merge@2.5.5: {}
-
- tailwindcss-animate@1.0.7(tailwindcss@4.1.9):
- dependencies:
- tailwindcss: 4.1.9
-
- tailwindcss@4.1.9: {}
-
- tapable@2.2.3: {}
-
- tar@7.4.3:
- dependencies:
- '@isaacs/fs-minipass': 4.0.1
- chownr: 3.0.0
- minipass: 7.1.2
- minizlib: 3.0.2
- mkdirp: 3.0.1
- yallist: 5.0.0
-
- tiny-invariant@1.3.3: {}
-
- tslib@2.8.1: {}
-
- tw-animate-css@1.3.3: {}
-
- typescript@5.0.2: {}
-
- undici-types@6.11.1: {}
-
- update-browserslist-db@1.1.3(browserslist@4.25.3):
- dependencies:
- browserslist: 4.25.3
- escalade: 3.2.0
- picocolors: 1.1.1
-
- use-callback-ref@1.3.3(@types/react@19.0.0)(react@19.0.0):
- dependencies:
- react: 19.0.0
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.0.0
-
- use-sidecar@1.1.3(@types/react@19.0.0)(react@19.0.0):
- dependencies:
- detect-node-es: 1.1.0
- react: 19.0.0
- tslib: 2.8.1
- optionalDependencies:
- '@types/react': 19.0.0
-
- use-sync-external-store@1.5.0(react@19.0.0):
- dependencies:
- react: 19.0.0
-
- vaul@0.9.9(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
- dependencies:
- '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.0.0)(@types/react@19.0.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- react: 19.0.0
- react-dom: 19.0.0(react@19.0.0)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
-
- victory-vendor@36.9.2:
- dependencies:
- '@types/d3-array': 3.2.1
- '@types/d3-ease': 3.0.2
- '@types/d3-interpolate': 3.0.4
- '@types/d3-scale': 4.0.9
- '@types/d3-shape': 3.1.7
- '@types/d3-time': 3.0.4
- '@types/d3-timer': 3.0.2
- d3-array: 3.2.4
- d3-ease: 3.0.1
- d3-interpolate: 3.0.1
- d3-scale: 4.0.2
- d3-shape: 3.2.0
- d3-time: 3.1.0
- d3-timer: 3.0.1
-
- yallist@5.0.0: {}
-
- zod@3.25.67: {}
diff --git a/scripts/local-setup.sh b/scripts/local-setup.sh
new file mode 100644
index 0000000..f5f098c
--- /dev/null
+++ b/scripts/local-setup.sh
@@ -0,0 +1,93 @@
+#!/bin/bash
+# Local Development Setup Script
+# Run: chmod +x scripts/local-setup.sh && ./scripts/local-setup.sh
+
+set -e
+
+echo "🔥 Calcifer's Local Setup Script"
+echo "================================="
+echo ""
+
+# Check if wrangler is available
+if ! command -v npx &> /dev/null; then
+ echo "❌ npx not found. Please install Node.js first."
+ exit 1
+fi
+
+# Install dependencies
+echo "📦 Installing dependencies..."
+npm install
+
+# Check if user is logged into Cloudflare
+echo ""
+echo "🔐 Checking Cloudflare login..."
+if ! npx wrangler whoami &> /dev/null; then
+ echo "You need to log into Cloudflare (free account works):"
+ npx wrangler login
+fi
+
+# Check if database already exists in wrangler.toml
+if grep -q "YOUR_DATABASE_ID_HERE" wrangler.toml; then
+ echo ""
+ echo "🗄️ Creating D1 database..."
+
+ # Create database and capture output
+ OUTPUT=$(npx wrangler d1 create atl-tech-network-db 2>&1) || true
+
+ # Extract database_id
+ DB_ID=$(echo "$OUTPUT" | grep -o 'database_id = "[^"]*"' | cut -d'"' -f2)
+
+ if [ -n "$DB_ID" ]; then
+ echo " Database ID: $DB_ID"
+ # Update wrangler.toml
+ if [[ "$OSTYPE" == "darwin"* ]]; then
+ sed -i '' "s/YOUR_DATABASE_ID_HERE/$DB_ID/" wrangler.toml
+ else
+ sed -i "s/YOUR_DATABASE_ID_HERE/$DB_ID/" wrangler.toml
+ fi
+ echo " ✅ Updated wrangler.toml"
+ else
+ echo " ⚠️ Could not extract database ID. You may need to:"
+ echo " 1. Run: npx wrangler d1 create atl-tech-network-db"
+ echo " 2. Copy the database_id into wrangler.toml manually"
+ fi
+else
+ echo "✅ Database ID already configured in wrangler.toml"
+fi
+
+# Initialize local schema
+echo ""
+echo "📋 Initializing local database schema..."
+npx wrangler d1 execute DB --local --file=./db/schema.sql
+
+# Generate and run migration
+echo ""
+echo "📊 Migrating sample data to local D1..."
+npx tsx scripts/migrate-to-d1.ts > db/seed.sql
+npx wrangler d1 execute DB --local --file=./db/seed.sql
+
+# Create .env.local if it doesn't exist
+if [ ! -f .env.local ]; then
+ echo ""
+ echo "🔑 Creating .env.local..."
+ echo "ADMIN_PASSWORD=local-dev-password-123" > .env.local
+ echo " Created with default password: local-dev-password-123"
+fi
+
+echo ""
+echo "================================="
+echo "✅ Setup complete!"
+echo ""
+echo "To run locally with D1:"
+echo " npm run build && npm run pages:dev"
+echo " → Opens at http://localhost:8788"
+echo ""
+echo "To run in dev mode (fallback data):"
+echo " npm run dev"
+echo " → Opens at http://localhost:3000"
+echo ""
+echo "Admin panel: http://localhost:8788/admin/submissions"
+echo " Username: anything"
+echo " Password: local-dev-password-123"
+echo ""
+echo "🔥 The hearth is ready!"
diff --git a/scripts/migrate-to-d1.ts b/scripts/migrate-to-d1.ts
new file mode 100644
index 0000000..5dd8c91
--- /dev/null
+++ b/scripts/migrate-to-d1.ts
@@ -0,0 +1,106 @@
+/**
+ * Migration Script: Sample Data to D1
+ *
+ * Migrates hardcoded sample data from lib/sample-data.ts to Cloudflare D1.
+ *
+ * Usage:
+ * 1. Create D1 database: wrangler d1 create atl-tech-network-db
+ * 2. Update wrangler.toml with database_id
+ * 3. Run schema: wrangler d1 execute DB --local --file=./db/schema.sql
+ * 4. Run migration: npx tsx scripts/migrate-to-d1.ts
+ *
+ * For production:
+ * wrangler d1 execute DB --file=./db/schema.sql
+ * Then use the generated SQL file or Wrangler dashboard to import data
+ */
+
+import {
+ sampleMeetups,
+ sampleConferences,
+ sampleOnlineResources,
+ sampleTechHubs
+} from '../lib/sample-data'
+
+interface Resource {
+ id: string
+ type: string
+ name: string
+ description: string
+ tags: string[]
+ link: string
+ image: string
+ date?: string
+ cfpDate?: string
+}
+
+// Escape single quotes for SQL
+function escapeSQL(str: string): string {
+ return str.replace(/'/g, "''")
+}
+
+// Generate INSERT statements
+function generateInserts(resources: Resource[], type: string): string[] {
+ return resources.map(resource => {
+ const tags = JSON.stringify(resource.tags)
+ const image = resource.image || '/placeholder.svg'
+ const conferenceDate = resource.date || null
+ const cfpDate = resource.cfpDate || null
+
+ return `INSERT INTO resources (type, name, description, tags, link, image, conference_date, cfp_date)
+VALUES ('${type}', '${escapeSQL(resource.name)}', '${escapeSQL(resource.description)}', '${escapeSQL(tags)}', '${escapeSQL(resource.link)}', '${escapeSQL(image)}', ${conferenceDate ? `'${conferenceDate}'` : 'NULL'}, ${cfpDate ? `'${cfpDate}'` : 'NULL'});`
+ })
+}
+
+// Main migration
+function generateMigrationSQL(): string {
+ const statements: string[] = [
+ '-- Auto-generated migration from sample-data.ts',
+ `-- Generated: ${new Date().toISOString()}`,
+ '',
+ '-- Clear existing data (optional - comment out to preserve)',
+ 'DELETE FROM resources;',
+ '',
+ '-- Reset auto-increment',
+ 'DELETE FROM sqlite_sequence WHERE name="resources";',
+ '',
+ '-- Meetups',
+ ...generateInserts(sampleMeetups as Resource[], 'meetup'),
+ '',
+ '-- Conferences',
+ ...generateInserts(sampleConferences as Resource[], 'conference'),
+ '',
+ '-- Online Resources',
+ ...generateInserts(sampleOnlineResources as Resource[], 'online'),
+ '',
+ '-- Tech Hubs',
+ ...generateInserts(sampleTechHubs as Resource[], 'tech-hub'),
+ ]
+
+ return statements.join('\n')
+}
+
+// Output to stdout or file
+const sql = generateMigrationSQL()
+
+// Count resources
+const totalCount =
+ sampleMeetups.length +
+ sampleConferences.length +
+ sampleOnlineResources.length +
+ sampleTechHubs.length
+
+console.log(sql)
+console.error(`\n-- Migration generated successfully!`)
+console.error(`-- Total resources: ${totalCount}`)
+console.error(`-- Meetups: ${sampleMeetups.length}`)
+console.error(`-- Conferences: ${sampleConferences.length}`)
+console.error(`-- Online Resources: ${sampleOnlineResources.length}`)
+console.error(`-- Tech Hubs: ${sampleTechHubs.length}`)
+console.error(``)
+console.error(`-- To apply locally:`)
+console.error(`-- npx tsx scripts/migrate-to-d1.ts > db/seed.sql`)
+console.error(`-- wrangler d1 execute DB --local --file=./db/seed.sql`)
+console.error(``)
+console.error(`-- To apply to production:`)
+console.error(`-- npx tsx scripts/migrate-to-d1.ts > db/seed.sql`)
+console.error(`-- wrangler d1 execute DB --file=./db/seed.sql`)
diff --git a/wrangler.toml b/wrangler.toml
new file mode 100644
index 0000000..5ff1aab
--- /dev/null
+++ b/wrangler.toml
@@ -0,0 +1,25 @@
+# Cloudflare Workers / Pages configuration
+# https://developers.cloudflare.com/workers/wrangler/configuration/
+
+name = "atl-tech-network"
+compatibility_date = "2024-12-01"
+compatibility_flags = ["nodejs_compat"]
+
+# For Next.js on Cloudflare Pages, most config is handled by @cloudflare/next-on-pages
+# This file primarily configures D1 bindings
+
+# D1 Database binding
+# After creating database, update database_id:
+# wrangler d1 create atl-tech-network-db
+# Copy the database_id from output
+[[d1_databases]]
+binding = "DB"
+database_name = "atl-tech-network-db"
+database_id = "d3d7267e-36c5-4468-9330-2631713d2fb6"
+
+# Environment variables (set in Cloudflare Dashboard or wrangler secret)
+# ADMIN_PASSWORD - @tlant@T3ch!
+# ADMIN_EMAIL - optional, for notification recipient
+
+[vars]
+ENVIRONMENT = "production"
From a5f613accd2a96aac3662d17c0a268d8b2533faf Mon Sep 17 00:00:00 2001
From: "Drew Schillinger (DoctorEw)"
Date: Wed, 3 Dec 2025 21:05:44 -0500
Subject: [PATCH 2/2] deployment guide
---
DOCS/DEPLOYMENT_GUIDE.md | 337 +++++++++++++++++++++++++++++++++++++++
1 file changed, 337 insertions(+)
create mode 100644 DOCS/DEPLOYMENT_GUIDE.md
diff --git a/DOCS/DEPLOYMENT_GUIDE.md b/DOCS/DEPLOYMENT_GUIDE.md
new file mode 100644
index 0000000..896ac08
--- /dev/null
+++ b/DOCS/DEPLOYMENT_GUIDE.md
@@ -0,0 +1,337 @@
+# Deployment Guide
+## Atlanta Tech Network - Cloudflare Pages + D1
+
+This guide walks you through deploying the Atlanta Tech Network application to Cloudflare Pages with a D1 database.
+
+---
+
+## Prerequisites
+
+- A [Cloudflare account](https://dash.cloudflare.com/sign-up) (free tier works)
+- A [GitHub account](https://github.com)
+- [Node.js](https://nodejs.org/) 18+ or [Bun](https://bun.sh/) installed locally
+- The repository cloned to your local machine
+
+---
+
+## Part 1: Local Setup (Optional but Recommended)
+
+Test the application locally before deploying.
+
+### 1.1 Install Dependencies
+
+```bash
+# Using Bun (recommended)
+bun install
+
+# Or using npm
+npm install
+```
+
+### 1.2 Login to Cloudflare
+
+```bash
+bunx wrangler login
+# This opens a browser to authenticate with Cloudflare
+```
+
+### 1.3 Create the D1 Database
+
+```bash
+bunx wrangler d1 create atl-tech-network-db
+```
+
+You'll see output like:
+```
+✅ Successfully created DB 'atl-tech-network-db'
+
+[[d1_databases]]
+binding = "DB"
+database_name = "atl-tech-network-db"
+database_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
+```
+
+**Copy the `database_id`** and update `wrangler.toml`:
+
+```toml
+[[d1_databases]]
+binding = "DB"
+database_name = "atl-tech-network-db"
+database_id = "YOUR_DATABASE_ID_HERE" # <-- Replace this
+```
+
+### 1.4 Initialize Local Database
+
+```bash
+# Create tables
+bunx wrangler d1 execute DB --local --file=./db/schema.sql
+
+# Migrate sample data
+bunx tsx scripts/migrate-to-d1.ts > db/seed.sql
+bunx wrangler d1 execute DB --local --file=./db/seed.sql
+```
+
+### 1.5 Set Local Environment Variables
+
+```bash
+echo "ADMIN_PASSWORD=your-secure-password-here" > .env.local
+```
+
+### 1.6 Run Locally
+
+```bash
+# Build and run with Cloudflare Pages dev server
+bunx @cloudflare/next-on-pages
+bunx wrangler pages dev .vercel/output/static --compatibility-flag=nodejs_compat
+```
+
+Open http://localhost:8788
+
+---
+
+## Part 2: Production Deployment
+
+### 2.1 Create Cloudflare Pages Project
+
+```bash
+bunx wrangler pages project create atl-tech-network
+```
+
+When prompted:
+- Production branch: `main`
+
+### 2.2 Initialize Production Database
+
+```bash
+# Create tables in production D1
+bunx wrangler d1 execute DB --remote --file=./db/schema.sql
+
+# Seed with initial data
+bunx wrangler d1 execute DB --remote --file=./db/seed.sql
+```
+
+### 2.3 Set Production Secrets
+
+```bash
+# Set the admin password (you'll be prompted to enter it)
+bunx wrangler secret put ADMIN_PASSWORD
+```
+
+Enter a strong password when prompted. This protects the `/admin` routes.
+
+### 2.4 Manual Deploy (First Time)
+
+```bash
+# Build for Cloudflare
+bunx @cloudflare/next-on-pages
+
+# Deploy
+bunx wrangler pages deploy .vercel/output/static --project-name=atl-tech-network
+```
+
+Your site is now live at: `https://atl-tech-network.pages.dev`
+
+---
+
+## Part 3: GitHub Actions (Automatic Deploys)
+
+Set up automatic deployments on every push to `main`.
+
+### 3.1 Get Cloudflare Credentials
+
+#### API Token
+
+1. Go to https://dash.cloudflare.com/profile/api-tokens
+2. Click **Create Token**
+3. Use the **"Edit Cloudflare Workers"** template
+4. Add these permissions:
+ - Account → Cloudflare Pages → Edit
+ - Account → D1 → Edit
+5. Click **Continue to summary** → **Create Token**
+6. **Copy the token** (you won't see it again!)
+
+#### Account ID
+
+1. Go to https://dash.cloudflare.com
+2. Click on any domain or the Workers/Pages section
+3. Find **Account ID** in the right sidebar
+4. Copy it
+
+### 3.2 Add GitHub Secrets
+
+1. Go to your GitHub repository
+2. Navigate to **Settings** → **Secrets and variables** → **Actions**
+3. Click **New repository secret**
+4. Add these secrets:
+
+| Name | Value |
+|------|-------|
+| `CLOUDFLARE_API_TOKEN` | Your API token from step 3.1 |
+| `CLOUDFLARE_ACCOUNT_ID` | Your Account ID from step 3.1 |
+
+### 3.3 How It Works
+
+The workflow in `.github/workflows/deploy.yml` automatically:
+
+| Event | Action |
+|-------|--------|
+| Pull Request to `main` | Builds and deploys a preview |
+| Push/Merge to `main` | Runs D1 migrations and deploys to production |
+
+Preview URLs follow the pattern:
+```
+https://.atl-tech-network.pages.dev
+```
+
+---
+
+## Part 4: Ongoing Maintenance
+
+### Adding New Resources
+
+1. Go to the live site
+2. Use the "Suggest a Resource" form
+3. Log into `/admin/submissions` to approve
+
+Or manually via CLI:
+```bash
+bunx wrangler d1 execute DB --remote --command "INSERT INTO resources (type, name, description, tags, link, image) VALUES ('meetup', 'New Meetup Name', 'Description here', '[\"Tag1\",\"Tag2\"]', 'https://example.com', '/placeholder.svg')"
+```
+
+### Viewing Database
+
+```bash
+# List all resources
+bunx wrangler d1 execute DB --remote --command "SELECT id, type, name FROM resources"
+
+# View pending submissions
+bunx wrangler d1 execute DB --remote --command "SELECT * FROM submissions WHERE status='pending'"
+
+# Count by type
+bunx wrangler d1 execute DB --remote --command "SELECT type, COUNT(*) as count FROM resources GROUP BY type"
+```
+
+### Changing Admin Password
+
+```bash
+bunx wrangler secret put ADMIN_PASSWORD
+# Enter new password when prompted
+```
+
+### Database Backup
+
+```bash
+# Export all data
+bunx wrangler d1 export DB --remote --output=backup.sql
+```
+
+---
+
+## Part 5: Custom Domain (Optional)
+
+### 5.1 Add Domain in Cloudflare Pages
+
+1. Go to Cloudflare Dashboard → Pages → `atl-tech-network`
+2. Click **Custom domains** → **Set up a custom domain**
+3. Enter your domain (e.g., `atltech.network`)
+4. Follow the DNS setup instructions
+
+### 5.2 If Domain is Already on Cloudflare
+
+Cloudflare automatically configures DNS. Just add the custom domain in Pages settings.
+
+### 5.3 If Domain is External
+
+Add a CNAME record at your DNS provider:
+```
+Type: CNAME
+Name: @ (or subdomain)
+Target: atl-tech-network.pages.dev
+```
+
+---
+
+## Troubleshooting
+
+### "D1 database binding not found"
+
+Make sure `wrangler.toml` has the correct `database_id`:
+```toml
+[[d1_databases]]
+binding = "DB"
+database_name = "atl-tech-network-db"
+database_id = "your-actual-database-id"
+```
+
+### Build Fails with Lockfile Error
+
+Remove old lockfiles:
+```bash
+rm -f pnpm-lock.yaml package-lock.json
+bun install
+```
+
+### 404 on Local Development
+
+Make sure you built for Cloudflare Pages first:
+```bash
+bunx @cloudflare/next-on-pages
+```
+
+Then run:
+```bash
+bunx wrangler pages dev .vercel/output/static --compatibility-flag=nodejs_compat
+```
+
+### Admin Login Not Working
+
+1. Check the password is set:
+ ```bash
+ bunx wrangler secret list
+ ```
+2. Re-set if needed:
+ ```bash
+ bunx wrangler secret put ADMIN_PASSWORD
+ ```
+
+### Submissions Not Saving
+
+Check the D1 database is accessible:
+```bash
+bunx wrangler d1 execute DB --remote --command "SELECT 1"
+```
+
+---
+
+## Architecture Overview
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ Cloudflare Pages (Edge) │
+│ ┌────────────────────────┐ ┌───────────────────────────┐ │
+│ │ Static Assets │ │ API Routes (Workers) │ │
+│ │ - HTML/CSS/JS │ │ - GET /api/resources │ │
+│ │ - Images │ │ - POST /api/submissions │ │
+│ │ - Fonts │ │ - /api/admin/* │ │
+│ └────────────────────────┘ └─────────────┬─────────────┘ │
+│ │ │
+│ ▼ │
+│ ┌───────────────────────────┐ │
+│ │ Cloudflare D1 (SQLite) │ │
+│ │ - resources table │ │
+│ │ - submissions table │ │
+│ └───────────────────────────┘ │
+└─────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## Support
+
+- **Cloudflare Pages Docs**: https://developers.cloudflare.com/pages
+- **D1 Docs**: https://developers.cloudflare.com/d1
+- **Wrangler CLI**: https://developers.cloudflare.com/workers/wrangler
+
+---
+
+*Last updated: December 2024*