diff --git a/.gitignore b/.gitignore index b64a01a..e534153 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ dist-ssr *.njsproj *.sln *.sw? -output.sh \ No newline at end of file +output.sh +.next +ui \ No newline at end of file diff --git a/src/authentication/components/user-auth-form.tsx b/app/authentication/components/user-auth-form.tsx similarity index 100% rename from src/authentication/components/user-auth-form.tsx rename to app/authentication/components/user-auth-form.tsx diff --git a/src/authentication/index.tsx b/app/authentication/page.tsx similarity index 99% rename from src/authentication/index.tsx rename to app/authentication/page.tsx index 2578154..183d858 100644 --- a/src/authentication/index.tsx +++ b/app/authentication/page.tsx @@ -1,3 +1,4 @@ +"use client"; import React, { useState } from 'react'; import { UserAuthForm } from './components/user-auth-form'; diff --git a/src/chat/components/chat-layout.tsx b/app/chat/components/chat-layout.tsx similarity index 100% rename from src/chat/components/chat-layout.tsx rename to app/chat/components/chat-layout.tsx diff --git a/src/chat/components/chat/chat-header.tsx b/app/chat/components/chat/chat-header.tsx similarity index 100% rename from src/chat/components/chat/chat-header.tsx rename to app/chat/components/chat/chat-header.tsx diff --git a/src/chat/components/chat/chat-input.tsx b/app/chat/components/chat/chat-input.tsx similarity index 100% rename from src/chat/components/chat/chat-input.tsx rename to app/chat/components/chat/chat-input.tsx diff --git a/src/chat/components/chat/chat-window.tsx b/app/chat/components/chat/chat-window.tsx similarity index 98% rename from src/chat/components/chat/chat-window.tsx rename to app/chat/components/chat/chat-window.tsx index 0c9fc74..710ea17 100644 --- a/src/chat/components/chat/chat-window.tsx +++ b/app/chat/components/chat/chat-window.tsx @@ -1,3 +1,4 @@ +"use client"; import React from 'react'; import { MessageList } from './message-list'; import { ChatInput } from './chat-input'; diff --git a/src/chat/components/chat/message-list.tsx b/app/chat/components/chat/message-list.tsx similarity index 100% rename from src/chat/components/chat/message-list.tsx rename to app/chat/components/chat/message-list.tsx diff --git a/src/chat/components/projector/image-viewer.tsx b/app/chat/components/projector/image-viewer.tsx similarity index 100% rename from src/chat/components/projector/image-viewer.tsx rename to app/chat/components/projector/image-viewer.tsx diff --git a/src/chat/components/projector/markdown-viewer.tsx b/app/chat/components/projector/markdown-viewer.tsx similarity index 100% rename from src/chat/components/projector/markdown-viewer.tsx rename to app/chat/components/projector/markdown-viewer.tsx diff --git a/src/chat/components/projector/projector-view.tsx b/app/chat/components/projector/projector-view.tsx similarity index 98% rename from src/chat/components/projector/projector-view.tsx rename to app/chat/components/projector/projector-view.tsx index 4f0039c..e6ba946 100644 --- a/src/chat/components/projector/projector-view.tsx +++ b/app/chat/components/projector/projector-view.tsx @@ -1,3 +1,5 @@ +"use client"; + import React from 'react'; import { VideoPlayer } from './video-player'; import { ImageViewer } from './image-viewer'; diff --git a/src/chat/components/projector/video-player.tsx b/app/chat/components/projector/video-player.tsx similarity index 100% rename from src/chat/components/projector/video-player.tsx rename to app/chat/components/projector/video-player.tsx diff --git a/src/chat/components/selector/person-selector.tsx b/app/chat/components/selector/person-selector.tsx similarity index 98% rename from src/chat/components/selector/person-selector.tsx rename to app/chat/components/selector/person-selector.tsx index 1523a6f..0341ac3 100644 --- a/src/chat/components/selector/person-selector.tsx +++ b/app/chat/components/selector/person-selector.tsx @@ -1,3 +1,4 @@ +"use client"; import React from 'react'; import { useChat } from '../../providers/chat-provider'; import '../../styles/selector.css'; diff --git a/src/chat/components/sound-initializer.tsx b/app/chat/components/sound-initializer.tsx similarity index 91% rename from src/chat/components/sound-initializer.tsx rename to app/chat/components/sound-initializer.tsx index 138591b..767aad2 100644 --- a/src/chat/components/sound-initializer.tsx +++ b/app/chat/components/sound-initializer.tsx @@ -1,5 +1,6 @@ +"use client"; import React, { useEffect, useState } from 'react'; -import { soundAssets } from '../../../public/sounds/manifest'; +import { soundAssets } from '../../../../public/sounds/manifest'; //import { cacheAssets } from '../lib/asset-loader'; export function SoundInitializer({ children }: { children: React.ReactNode }) { diff --git a/src/chat/lib/utils.ts b/app/chat/lib/utils.ts similarity index 100% rename from src/chat/lib/utils.ts rename to app/chat/lib/utils.ts diff --git a/src/chat/index.tsx b/app/chat/page.tsx similarity index 92% rename from src/chat/index.tsx rename to app/chat/page.tsx index bd7a6af..f671f60 100644 --- a/src/chat/index.tsx +++ b/app/chat/page.tsx @@ -4,7 +4,7 @@ import { ChatLayout } from './components/chat-layout'; import { SoundInitializer } from './components/sound-initializer'; import { SoundProvider } from './providers/sound-provider'; -export function Chat() { + export default function Chat() { return ( diff --git a/src/chat/providers/chat-provider.tsx b/app/chat/providers/chat-provider.tsx similarity index 99% rename from src/chat/providers/chat-provider.tsx rename to app/chat/providers/chat-provider.tsx index ac6259b..263cd2b 100644 --- a/src/chat/providers/chat-provider.tsx +++ b/app/chat/providers/chat-provider.tsx @@ -1,3 +1,4 @@ +"use client"; import React, { createContext, useContext, useState, useEffect } from 'react'; import { core } from '@tauri-apps/api'; import { User, ChatInstance } from '../types'; diff --git a/src/chat/providers/sound-provider.tsx b/app/chat/providers/sound-provider.tsx similarity index 98% rename from src/chat/providers/sound-provider.tsx rename to app/chat/providers/sound-provider.tsx index 59a0892..ada8369 100644 --- a/src/chat/providers/sound-provider.tsx +++ b/app/chat/providers/sound-provider.tsx @@ -1,3 +1,4 @@ +"use client"; import React, { createContext, useContext, useCallback } from 'react'; import { core } from '@tauri-apps/api'; diff --git a/src/chat/styles/chat.css b/app/chat/styles/chat.css similarity index 100% rename from src/chat/styles/chat.css rename to app/chat/styles/chat.css diff --git a/src/chat/styles/layout.css b/app/chat/styles/layout.css similarity index 100% rename from src/chat/styles/layout.css rename to app/chat/styles/layout.css diff --git a/src/chat/styles/projector.css b/app/chat/styles/projector.css similarity index 100% rename from src/chat/styles/projector.css rename to app/chat/styles/projector.css diff --git a/src/chat/styles/selector.css b/app/chat/styles/selector.css similarity index 100% rename from src/chat/styles/selector.css rename to app/chat/styles/selector.css diff --git a/src/chat/styles/ui.css b/app/chat/styles/ui.css similarity index 100% rename from src/chat/styles/ui.css rename to app/chat/styles/ui.css diff --git a/src/chat/types/index.ts b/app/chat/types/index.ts similarity index 100% rename from src/chat/types/index.ts rename to app/chat/types/index.ts diff --git a/app/client-nav.tsx b/app/client-nav.tsx new file mode 100644 index 0000000..8f61d59 --- /dev/null +++ b/app/client-nav.tsx @@ -0,0 +1,36 @@ +"use client"; + +import { usePathname, useRouter } from 'next/navigation'; +import { Button } from '../src/components/ui/button'; + +const examples = [ + { name: "Home", href: "/authentication" }, + { name: "Dashboard", href: "/dashboard" }, + { name: "Chat", href: "/chat" }, + { name: "Mail", href: "/mail" }, + { name: "Drive", href: "/drive" }, + { name: "Tasks", href: "/tasks" }, + { name: "Templates", href: "/templates" }, + { name: "Settings", href: "/sync" }, +]; + +export function Nav() { + const pathname = usePathname(); + const router = useRouter(); + + return ( +
+
+ {examples.map((example) => ( + + ))} +
+
+ ); +} \ No newline at end of file diff --git a/src/dashboard/components/DateRangePicker.tsx b/app/dashboard/components/DateRangePicker.tsx similarity index 98% rename from src/dashboard/components/DateRangePicker.tsx rename to app/dashboard/components/DateRangePicker.tsx index 332d84a..c1c3b82 100644 --- a/src/dashboard/components/DateRangePicker.tsx +++ b/app/dashboard/components/DateRangePicker.tsx @@ -1,3 +1,4 @@ +"use client"; import React, { useState } from 'react'; import { format } from 'date-fns'; diff --git a/src/dashboard/components/MainNav.tsx b/app/dashboard/components/MainNav.tsx similarity index 100% rename from src/dashboard/components/MainNav.tsx rename to app/dashboard/components/MainNav.tsx diff --git a/src/dashboard/components/Overview.tsx b/app/dashboard/components/Overview.tsx similarity index 100% rename from src/dashboard/components/Overview.tsx rename to app/dashboard/components/Overview.tsx diff --git a/src/dashboard/components/RecentSales.tsx b/app/dashboard/components/RecentSales.tsx similarity index 100% rename from src/dashboard/components/RecentSales.tsx rename to app/dashboard/components/RecentSales.tsx diff --git a/src/dashboard/components/Search.tsx b/app/dashboard/components/Search.tsx similarity index 100% rename from src/dashboard/components/Search.tsx rename to app/dashboard/components/Search.tsx diff --git a/src/dashboard/components/TeamSwitcher.tsx b/app/dashboard/components/TeamSwitcher.tsx similarity index 99% rename from src/dashboard/components/TeamSwitcher.tsx rename to app/dashboard/components/TeamSwitcher.tsx index c53b020..a141fa7 100644 --- a/src/dashboard/components/TeamSwitcher.tsx +++ b/app/dashboard/components/TeamSwitcher.tsx @@ -1,3 +1,5 @@ +"use client"; + import React, { useState } from 'react'; const groups = [ diff --git a/src/dashboard/components/UserNav.tsx b/app/dashboard/components/UserNav.tsx similarity index 98% rename from src/dashboard/components/UserNav.tsx rename to app/dashboard/components/UserNav.tsx index d8052ac..d9f4dee 100644 --- a/src/dashboard/components/UserNav.tsx +++ b/app/dashboard/components/UserNav.tsx @@ -1,3 +1,5 @@ +"use client"; + import React, { useState } from 'react'; export function UserNav() { diff --git a/src/dashboard/index.tsx b/app/dashboard/page.tsx similarity index 100% rename from src/dashboard/index.tsx rename to app/dashboard/page.tsx diff --git a/src/drive/components/FileBrowser.tsx b/app/drive/components/FileBrowser.tsx similarity index 100% rename from src/drive/components/FileBrowser.tsx rename to app/drive/components/FileBrowser.tsx diff --git a/src/drive/components/FileOperations.tsx b/app/drive/components/FileOperations.tsx similarity index 100% rename from src/drive/components/FileOperations.tsx rename to app/drive/components/FileOperations.tsx diff --git a/src/drive/components/FileTree.tsx b/app/drive/components/FileTree.tsx similarity index 100% rename from src/drive/components/FileTree.tsx rename to app/drive/components/FileTree.tsx diff --git a/src/drive/index.tsx b/app/drive/page.tsx similarity index 93% rename from src/drive/index.tsx rename to app/drive/page.tsx index 6f2eeaf..0a7b8d0 100644 --- a/src/drive/index.tsx +++ b/app/drive/page.tsx @@ -1,9 +1,10 @@ +"use client"; import { useState } from 'react'; import { FileTree } from './components/FileTree'; import { FileBrowser } from './components/FileBrowser'; import { FileOperations } from './components/FileOperations'; -export function DriveScreen() { + export default function DriveScreen() { const [currentPath, setCurrentPath] = useState(''); const [refreshKey, setRefreshKey] = useState(0); diff --git a/src/styles/globals.css b/app/globals.css similarity index 100% rename from src/styles/globals.css rename to app/globals.css diff --git a/app/layout.tsx b/app/layout.tsx new file mode 100644 index 0000000..e17286d --- /dev/null +++ b/app/layout.tsx @@ -0,0 +1,17 @@ +import { Nav } from './client-nav'; +import './globals.css'; + +import './globals.css' // This path is correct if the file is in your src/app directory +import { ReactNode } from 'react' + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + ) -} +} \ No newline at end of file diff --git a/src/mail/data.tsx b/app/mail/data.tsx similarity index 100% rename from src/mail/data.tsx rename to app/mail/data.tsx diff --git a/app/mail/page.tsx b/app/mail/page.tsx new file mode 100644 index 0000000..a6d19cd --- /dev/null +++ b/app/mail/page.tsx @@ -0,0 +1,27 @@ +import Image from "next/image" + +import { Mail } from "./components/mail" +import { accounts, mails } from "./data" + +export default function MailPage() { + const layout = [20, 32, 48]; //cookies().get("react-resizable-panels:layout:mail") + const collapsed = false; //cookies().get("react-resizable-panels:collapsed") + + const defaultLayout = layout// ? JSON.parse(layout.value) : undefined + const defaultCollapsed = collapsed //? JSON.parse(collapsed.value) : undefined + + + return ( + <> +
+ +
+ + ) +} diff --git a/src/mail/use-mail.ts b/app/mail/use-mail.ts similarity index 83% rename from src/mail/use-mail.ts rename to app/mail/use-mail.ts index 1bfaf89..d197ac9 100644 --- a/src/mail/use-mail.ts +++ b/app/mail/use-mail.ts @@ -1,6 +1,6 @@ import { atom, useAtom } from "jotai" -import { Mail, mails } from "@/mail/data" +import { Mail, mails } from "./data" type Config = { selected: Mail["id"] | null diff --git a/app/page.tsx b/app/page.tsx new file mode 100644 index 0000000..bf6828d --- /dev/null +++ b/app/page.tsx @@ -0,0 +1,9 @@ +// app/page.tsx (your home page) +export default function Home() { + return ( +
+

Welcome to My Tauri App

+

This is your home page

+
+ ) +} \ No newline at end of file diff --git a/src/settings/account/account-form.tsx b/app/settings/account/account-form.tsx similarity index 100% rename from src/settings/account/account-form.tsx rename to app/settings/account/account-form.tsx diff --git a/src/settings/account/page.tsx b/app/settings/account/page.tsx similarity index 100% rename from src/settings/account/page.tsx rename to app/settings/account/page.tsx diff --git a/src/settings/appearance/appearance-form.tsx b/app/settings/appearance/appearance-form.tsx similarity index 100% rename from src/settings/appearance/appearance-form.tsx rename to app/settings/appearance/appearance-form.tsx diff --git a/src/settings/appearance/page.tsx b/app/settings/appearance/page.tsx similarity index 100% rename from src/settings/appearance/page.tsx rename to app/settings/appearance/page.tsx diff --git a/src/settings/components/sidebar-nav.tsx b/app/settings/components/sidebar-nav.tsx similarity index 100% rename from src/settings/components/sidebar-nav.tsx rename to app/settings/components/sidebar-nav.tsx diff --git a/src/settings/display/display-form.tsx b/app/settings/display/display-form.tsx similarity index 100% rename from src/settings/display/display-form.tsx rename to app/settings/display/display-form.tsx diff --git a/src/settings/display/page.tsx b/app/settings/display/page.tsx similarity index 100% rename from src/settings/display/page.tsx rename to app/settings/display/page.tsx diff --git a/src/settings/layout.tsx b/app/settings/layout.tsx similarity index 100% rename from src/settings/layout.tsx rename to app/settings/layout.tsx diff --git a/src/settings/notifications/notifications-form.tsx b/app/settings/notifications/notifications-form.tsx similarity index 100% rename from src/settings/notifications/notifications-form.tsx rename to app/settings/notifications/notifications-form.tsx diff --git a/src/settings/notifications/page.tsx b/app/settings/notifications/page.tsx similarity index 100% rename from src/settings/notifications/page.tsx rename to app/settings/notifications/page.tsx diff --git a/src/settings/index.tsx b/app/settings/page.tsx similarity index 100% rename from src/settings/index.tsx rename to app/settings/page.tsx diff --git a/src/settings/profile-form.tsx b/app/settings/profile-form.tsx similarity index 100% rename from src/settings/profile-form.tsx rename to app/settings/profile-form.tsx diff --git a/src/sync/page.tsx b/app/sync/page.tsx similarity index 99% rename from src/sync/page.tsx rename to app/sync/page.tsx index 0322c0e..0303736 100644 --- a/src/sync/page.tsx +++ b/app/sync/page.tsx @@ -1,3 +1,4 @@ +"use client"; import { useState, useEffect } from "react"; import { invoke } from "@tauri-apps/api/core"; diff --git a/src/tasks/components/DataTable.tsx b/app/tasks/components/DataTable.tsx similarity index 99% rename from src/tasks/components/DataTable.tsx rename to app/tasks/components/DataTable.tsx index 589c4b8..13baa6d 100644 --- a/src/tasks/components/DataTable.tsx +++ b/app/tasks/components/DataTable.tsx @@ -1,3 +1,5 @@ +"use client"; + import React, { useState } from 'react'; import { Task } from '../data/schema'; import { labels, priorities, statuses } from '../data/data'; diff --git a/src/tasks/components/DataTablePagination.tsx b/app/tasks/components/DataTablePagination.tsx similarity index 100% rename from src/tasks/components/DataTablePagination.tsx rename to app/tasks/components/DataTablePagination.tsx diff --git a/src/tasks/components/DataTableToolbar.tsx b/app/tasks/components/DataTableToolbar.tsx similarity index 100% rename from src/tasks/components/DataTableToolbar.tsx rename to app/tasks/components/DataTableToolbar.tsx diff --git a/src/tasks/components/UserNav.tsx b/app/tasks/components/UserNav.tsx similarity index 100% rename from src/tasks/components/UserNav.tsx rename to app/tasks/components/UserNav.tsx diff --git a/src/tasks/data/data.ts b/app/tasks/data/data.ts similarity index 100% rename from src/tasks/data/data.ts rename to app/tasks/data/data.ts diff --git a/src/tasks/data/schema.ts b/app/tasks/data/schema.ts similarity index 100% rename from src/tasks/data/schema.ts rename to app/tasks/data/schema.ts diff --git a/src/tasks/index.tsx b/app/tasks/page.tsx similarity index 100% rename from src/tasks/index.tsx rename to app/tasks/page.tsx diff --git a/src/templates/components/album-artwork.tsx b/app/templates/components/album-artwork.tsx similarity index 100% rename from src/templates/components/album-artwork.tsx rename to app/templates/components/album-artwork.tsx diff --git a/src/templates/components/menu.tsx b/app/templates/components/menu.tsx similarity index 100% rename from src/templates/components/menu.tsx rename to app/templates/components/menu.tsx diff --git a/src/templates/components/podcast-empty-placeholder.tsx b/app/templates/components/podcast-empty-placeholder.tsx similarity index 100% rename from src/templates/components/podcast-empty-placeholder.tsx rename to app/templates/components/podcast-empty-placeholder.tsx diff --git a/src/templates/components/sidebar.tsx b/app/templates/components/sidebar.tsx similarity index 100% rename from src/templates/components/sidebar.tsx rename to app/templates/components/sidebar.tsx diff --git a/src/templates/data/albums.ts b/app/templates/data/albums.ts similarity index 100% rename from src/templates/data/albums.ts rename to app/templates/data/albums.ts diff --git a/src/templates/data/playlists.ts b/app/templates/data/playlists.ts similarity index 100% rename from src/templates/data/playlists.ts rename to app/templates/data/playlists.ts diff --git a/src/templates/index.tsx b/app/templates/page.tsx similarity index 100% rename from src/templates/index.tsx rename to app/templates/page.tsx diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index 45175b9..0000000 --- a/babel.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = function (api) { - api.cache(true); - return { - - plugins: ['nativewind/babel'] - }; -}; \ No newline at end of file diff --git a/gbclient.code-workspace b/gbclient.code-workspace new file mode 100644 index 0000000..880dd4f --- /dev/null +++ b/gbclient.code-workspace @@ -0,0 +1,12 @@ +{ + "folders": [ + { + "path": "." + }, + { + "name": "ui", + "path": "../../ui" + } + ], + "settings": {} +} \ No newline at end of file diff --git a/next-env.d.ts b/next-env.d.ts new file mode 100644 index 0000000..1b3be08 --- /dev/null +++ b/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..082e434 --- /dev/null +++ b/next.config.js @@ -0,0 +1,7 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + output: 'export', + images: { unoptimized: true } +} + +module.exports = nextConfig \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 165fd9f..b4f7c65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,8 @@ "name": "gbclient", "version": "0.1.0", "dependencies": { - "@babel/runtime": "7.26.0", "@hookform/resolvers": "^3.9.1", + "@next/font": "^14.2.15", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-aspect-ratio": "^1.1.2", @@ -50,6 +50,7 @@ "jotai": "^2.12.2", "lucide-react": "0.454.0", "nativewind": "2.0.10", + "next": "^15.2.4", "postcss": "8.4.35", "react": "18.3.1", "react-day-picker": "^8.10.1", @@ -57,21 +58,18 @@ "react-hook-form": "^7.53.2", "react-markdown": "10.1.0", "react-resizable-panels": "^2.1.7", - "react-router-dom": "7.4.1", "tailwind-merge": "3.0.2", "tailwindcss-animate": "1.0.7", "uuid": "11.0.3", "zod": "^3.21.4" }, "devDependencies": { - "@babel/core": "7.18.6", "@tauri-apps/cli": "2", "@types/jest": "29.5.12", "@types/node": "22.13.14", - "@types/react": "18.3.1", - "@types/react-dom": "18.3.1", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.1", "@types/react-test-renderer": "18.0.7", - "@vitejs/plugin-react": "4.3.4", "copy-webpack-plugin": "12.0.2", "esbuild-runner": "2.2.2", "jest": "29.2.1", @@ -79,8 +77,7 @@ "postcss-load-config": "6.0.1", "react-test-renderer": "18.2.0", "tailwindcss": "3.1.8", - "typescript": "5.6.2", - "vite": "6.0.3" + "typescript": "5.6.2" } }, "node_modules/@ampproject/remapping": { @@ -1423,38 +1420,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", @@ -1835,6 +1800,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@emnapi/runtime": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.0.tgz", + "integrity": "sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", @@ -1949,6 +1924,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -1965,6 +1941,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -1981,6 +1958,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -1997,6 +1975,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -2013,6 +1992,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -2029,6 +2009,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -2045,6 +2026,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2061,6 +2043,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2077,6 +2060,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2093,6 +2077,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2109,6 +2094,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2141,6 +2127,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2157,6 +2144,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2173,6 +2161,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2189,6 +2178,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2205,6 +2195,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -2221,6 +2212,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2237,6 +2229,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2253,6 +2246,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2269,6 +2263,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -2285,6 +2280,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -2301,6 +2297,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2317,6 +2314,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2333,6 +2331,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -2384,6 +2383,367 @@ "react-hook-form": "^7.0.0" } }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -2828,6 +3188,149 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@next/env": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.4.tgz", + "integrity": "sha512-+SFtMgoiYP3WoSswuNmxJOCwi06TdWE733D+WPjpXIe4LXGULwEaofiiAy6kbS0+XjM5xF5n3lKuBwN2SnqD9g==", + "license": "MIT" + }, + "node_modules/@next/font": { + "version": "14.2.15", + "resolved": "https://registry.npmjs.org/@next/font/-/font-14.2.15.tgz", + "integrity": "sha512-QopYhBmCDDrNDynbi+ZD1hDZXmQXVFo7TmAFp4DQgO/kogz1OLbQ92hPigJbj572eZ3GaaVxNIyYVn3/eAsehg==", + "license": "MIT", + "peerDependencies": { + "next": "*" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.4.tgz", + "integrity": "sha512-1AnMfs655ipJEDC/FHkSr0r3lXBgpqKo4K1kiwfUf3iE68rDFXZ1TtHdMvf7D0hMItgDZ7Vuq3JgNMbt/+3bYw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.4.tgz", + "integrity": "sha512-3qK2zb5EwCwxnO2HeO+TRqCubeI/NgCe+kL5dTJlPldV/uwCnUgC7VbEzgmxbfrkbjehL4H9BPztWOEtsoMwew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.4.tgz", + "integrity": "sha512-HFN6GKUcrTWvem8AZN7tT95zPb0GUGv9v0d0iyuTb303vbXkkbHDp/DxufB04jNVD+IN9yHy7y/6Mqq0h0YVaQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.4.tgz", + "integrity": "sha512-Oioa0SORWLwi35/kVB8aCk5Uq+5/ZIumMK1kJV+jSdazFm2NzPDztsefzdmzzpx5oGCJ6FkUC7vkaUseNTStNA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.4.tgz", + "integrity": "sha512-yb5WTRaHdkgOqFOZiu6rHV1fAEK0flVpaIN2HB6kxHVSy/dIajWbThS7qON3W9/SNOH2JWkVCyulgGYekMePuw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.4.tgz", + "integrity": "sha512-Dcdv/ix6srhkM25fgXiyOieFUkz+fOYkHlydWCtB0xMST6X9XYI3yPDKBZt1xuhOytONsIFJFB08xXYsxUwJLw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.4.tgz", + "integrity": "sha512-dW0i7eukvDxtIhCYkMrZNQfNicPDExt2jPb9AZPpL7cfyUo7QSNl1DjsHjmmKp6qNAqUESyT8YFl/Aw91cNJJg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.4.tgz", + "integrity": "sha512-SbnWkJmkS7Xl3kre8SdMF6F/XDh1DTFEhp0jRTj/uB8iPKoU2bb2NDfcu+iifv1+mxQEd1g2vvSxcZbXSKyWiQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -4224,7 +4727,8 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-android-arm64": { "version": "4.37.0", @@ -4237,7 +4741,8 @@ "optional": true, "os": [ "android" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.37.0", @@ -4250,7 +4755,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-darwin-x64": { "version": "4.37.0", @@ -4263,7 +4769,8 @@ "optional": true, "os": [ "darwin" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-arm64": { "version": "4.37.0", @@ -4276,7 +4783,8 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-freebsd-x64": { "version": "4.37.0", @@ -4289,7 +4797,8 @@ "optional": true, "os": [ "freebsd" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { "version": "4.37.0", @@ -4302,7 +4811,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { "version": "4.37.0", @@ -4315,7 +4825,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-gnu": { "version": "4.37.0", @@ -4328,7 +4839,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-arm64-musl": { "version": "4.37.0", @@ -4341,7 +4853,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { "version": "4.37.0", @@ -4354,7 +4867,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { "version": "4.37.0", @@ -4367,7 +4881,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { "version": "4.37.0", @@ -4380,7 +4895,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-riscv64-musl": { "version": "4.37.0", @@ -4393,7 +4909,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-s390x-gnu": { "version": "4.37.0", @@ -4406,7 +4923,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-gnu": { "version": "4.37.0", @@ -4419,7 +4937,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.37.0", @@ -4432,7 +4951,8 @@ "optional": true, "os": [ "linux" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-arm64-msvc": { "version": "4.37.0", @@ -4445,7 +4965,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-ia32-msvc": { "version": "4.37.0", @@ -4458,7 +4979,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@rollup/rollup-win32-x64-msvc": { "version": "4.37.0", @@ -4471,7 +4993,8 @@ "optional": true, "os": [ "win32" - ] + ], + "peer": true }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -4513,6 +5036,21 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@tailwindcss/node": { "version": "4.0.17", "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.0.17.tgz", @@ -5030,12 +5568,6 @@ "@babel/types": "^7.20.7" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "license": "MIT" - }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -5287,64 +5819,6 @@ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "license": "ISC" }, - "node_modules/@vitejs/plugin-react": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.26.0", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/@vitejs/plugin-react/node_modules/@babel/core": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", - "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@vitejs/plugin-react/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -6494,6 +6968,17 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "license": "MIT" }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -6709,6 +7194,12 @@ "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.5.tgz", "integrity": "sha512-KDwzwbmLIPfCgd8JERVDpQKrUUM1U4KpFJJg2IROv89rF172lLufoJnqJ/Wea6fXL5bO6WjuLMzY8V52UWPvkA==" }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -6767,11 +7258,25 @@ "dev": true, "license": "MIT" }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -6786,6 +7291,17 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -6823,15 +7339,6 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "license": "MIT" }, - "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/copy-webpack-plugin": { "version": "12.0.2", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", @@ -10994,6 +11501,88 @@ "license": "MIT", "peer": true }, + "node_modules/next": { + "version": "15.2.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.4.tgz", + "integrity": "sha512-VwL+LAaPSxEkd3lU2xWbgEOtrM8oedmyhBqaVNmgKB+GvZlCy9rgaEc+y2on0wv+l0oSFqLtYD6dcC1eAedUaQ==", + "license": "MIT", + "dependencies": { + "@next/env": "15.2.4", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.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" + }, + "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_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -11969,16 +12558,6 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "license": "MIT" }, - "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/react-remove-scroll": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", @@ -12036,46 +12615,6 @@ "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, - "node_modules/react-router": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.4.1.tgz", - "integrity": "sha512-Vmizn9ZNzxfh3cumddqv3kLOKvc7AskUT0dC1prTabhiEi0U4A33LmkDOJ79tXaeSqCqMBXBU/ySX88W85+EUg==", - "license": "MIT", - "dependencies": { - "@types/cookie": "^0.6.0", - "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0", - "turbo-stream": "2.4.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/react-router-dom": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.4.1.tgz", - "integrity": "sha512-L3/4tig0Lvs6m6THK0HRV4eHUdpx0dlJasgCxXKnavwhh4tKYgpuZk75HRYNoRKDyDWi9QgzGXsQ1oQSBlWpAA==", - "license": "MIT", - "dependencies": { - "react-router": "7.4.1" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, "node_modules/react-say": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/react-say/-/react-say-2.1.0.tgz", @@ -12677,6 +13216,7 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.37.0.tgz", "integrity": "sha512-iAtQy/L4QFU+rTJ1YUjXqJOJzuwEghqWzCEYD2FEghT7Gsy1VdABntrO4CLopA5IkflTyqNiLNwPcOJ3S7UKLg==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "1.0.6" }, @@ -12844,11 +13384,58 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", - "license": "MIT" + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "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" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/shebang-command": { "version": "2.0.0", @@ -12885,6 +13472,23 @@ "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz", "integrity": "sha512-uEv/AFO0ADI7d99OHDmh1QfYzQk/izT1vCmu/riQfh7qjBVUUgRT87E5s5h7CxWCA/+YoZerykpEthzVrW3LIw==" }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, "node_modules/simple-update-in": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/simple-update-in/-/simple-update-in-2.2.0.tgz", @@ -13018,6 +13622,14 @@ "node": ">=8" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -13125,6 +13737,29 @@ "inline-style-parser": "0.2.4" } }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "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 + } + } + }, "node_modules/stylis": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", @@ -13494,12 +14129,6 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, - "node_modules/turbo-stream": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", - "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", - "license": "ISC" - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -13913,6 +14542,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz", "integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.24.0", "postcss": "^8.4.49", @@ -13991,6 +14621,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -14001,6 +14632,7 @@ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -14054,6 +14686,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", diff --git a/package.json b/package.json index 7e00f33..37f2134 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,15 @@ "name": "gbclient", "private": true, "version": "0.1.0", - "type": "module", "scripts": { - "dev": "npx tailwindcss -i ./src/styles/globals.css -o ./public/output.css;ESBUILD_RUNNER=true vite", - "build": "tsc && vite build", - "preview": "vite preview", + "dev": "npx tailwindcss -i ./src/styles/globals.css -o ./public/output.css;ESBUILD_RUNNER=true next dev", + "build": "tsc && next build", + "start": "next start", "tauri": "tauri" }, "dependencies": { - "@babel/runtime": "7.26.0", "@hookform/resolvers": "^3.9.1", + "@next/font": "^14.2.15", "@radix-ui/react-accordion": "^1.2.3", "@radix-ui/react-alert-dialog": "^1.1.6", "@radix-ui/react-aspect-ratio": "^1.1.2", @@ -52,6 +51,7 @@ "jotai": "^2.12.2", "lucide-react": "0.454.0", "nativewind": "2.0.10", + "next": "^15.2.4", "postcss": "8.4.35", "react": "18.3.1", "react-day-picker": "^8.10.1", @@ -59,21 +59,18 @@ "react-hook-form": "^7.53.2", "react-markdown": "10.1.0", "react-resizable-panels": "^2.1.7", - "react-router-dom": "7.4.1", "tailwind-merge": "3.0.2", "tailwindcss-animate": "1.0.7", "uuid": "11.0.3", "zod": "^3.21.4" }, "devDependencies": { - "@babel/core": "7.18.6", "@tauri-apps/cli": "2", "@types/jest": "29.5.12", "@types/node": "22.13.14", - "@types/react": "18.3.1", - "@types/react-dom": "18.3.1", + "@types/react": "^18.3.1", + "@types/react-dom": "^18.3.1", "@types/react-test-renderer": "18.0.7", - "@vitejs/plugin-react": "4.3.4", "copy-webpack-plugin": "12.0.2", "esbuild-runner": "2.2.2", "jest": "29.2.1", @@ -81,7 +78,6 @@ "postcss-load-config": "6.0.1", "react-test-renderer": "18.2.0", "tailwindcss": "3.1.8", - "typescript": "5.6.2", - "vite": "6.0.3" + "typescript": "5.6.2" } } diff --git a/public/output.css b/public/output.css index cd05315..59477d5 100644 --- a/public/output.css +++ b/public/output.css @@ -503,2299 +503,3 @@ video { --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; } - -.container { - width: 100%; -} - -@media (min-width: 640px) { - .container { - max-width: 640px; - } -} - -@media (min-width: 768px) { - .container { - max-width: 768px; - } -} - -@media (min-width: 1024px) { - .container { - max-width: 1024px; - } -} - -@media (min-width: 1280px) { - .container { - max-width: 1280px; - } -} - -@media (min-width: 1536px) { - .container { - max-width: 1536px; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.pointer-events-none { - pointer-events: none; -} - -.pointer-events-auto { - pointer-events: auto; -} - -.visible { - visibility: visible; -} - -.\!visible { - visibility: visible !important; -} - -.invisible { - visibility: hidden; -} - -.fixed { - position: fixed; -} - -.absolute { - position: absolute; -} - -.relative { - position: relative; -} - -.inset-0 { - top: 0px; - right: 0px; - bottom: 0px; - left: 0px; -} - -.inset-x-0 { - left: 0px; - right: 0px; -} - -.inset-y-0 { - top: 0px; - bottom: 0px; -} - -.left-\[50\%\] { - left: 50%; -} - -.top-\[50\%\] { - top: 50%; -} - -.left-1 { - left: 0.25rem; -} - -.right-1 { - right: 0.25rem; -} - -.left-2 { - left: 0.5rem; -} - -.right-4 { - right: 1rem; -} - -.top-4 { - top: 1rem; -} - -.top-\[1px\] { - top: 1px; -} - -.left-0 { - left: 0px; -} - -.top-0 { - top: 0px; -} - -.top-full { - top: 100%; -} - -.top-\[60\%\] { - top: 60%; -} - -.right-2 { - right: 0.5rem; -} - -.bottom-0 { - bottom: 0px; -} - -.right-0 { - right: 0px; -} - -.top-1 { - top: 0.25rem; -} - -.left-2\.5 { - left: 0.625rem; -} - -.top-2\.5 { - top: 0.625rem; -} - -.top-2 { - top: 0.5rem; -} - -.z-50 { - z-index: 50; -} - -.z-10 { - z-index: 10; -} - -.z-\[1\] { - z-index: 1; -} - -.z-\[100\] { - z-index: 100; -} - -.z-0 { - z-index: 0; -} - -.m-0 { - margin: 0px; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; -} - -.-mx-1 { - margin-left: -0.25rem; - margin-right: -0.25rem; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.mx-1 { - margin-left: 0.25rem; - margin-right: 0.25rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.mt-1 { - margin-top: 0.25rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.mb-8 { - margin-bottom: 2rem; -} - -.mt-2 { - margin-top: 0.5rem; -} - -.mr-2 { - margin-right: 0.5rem; -} - -.ml-auto { - margin-left: auto; -} - -.ml-1 { - margin-left: 0.25rem; -} - -.mt-1\.5 { - margin-top: 0.375rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.ml-2 { - margin-left: 0.5rem; -} - -.mt-auto { - margin-top: auto; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.ml-3 { - margin-left: 0.75rem; -} - -.mr-4 { - margin-right: 1rem; -} - -.ml-4 { - margin-left: 1rem; -} - -.mb-5 { - margin-bottom: 1.25rem; -} - -.block { - display: block; -} - -.flex { - display: flex; -} - -.inline-flex { - display: inline-flex; -} - -.table { - display: table; -} - -.grid { - display: grid; -} - -.hidden { - display: none; -} - -.aspect-square { - aspect-ratio: 1 / 1; -} - -.aspect-\[3\/4\] { - aspect-ratio: 3/4; -} - -.h-16 { - height: 4rem; -} - -.h-screen { - height: 100vh; -} - -.h-\[calc\(100vh-80px\)\] { - height: calc(100vh - 80px); -} - -.h-4 { - height: 1rem; -} - -.h-10 { - height: 2.5rem; -} - -.h-full { - height: 100%; -} - -.h-9 { - height: 2.25rem; -} - -.h-8 { - height: 2rem; -} - -.h-7 { - height: 1.75rem; -} - -.h-px { - height: 1px; -} - -.h-3\.5 { - height: 0.875rem; -} - -.h-3 { - height: 0.75rem; -} - -.h-2 { - height: 0.5rem; -} - -.h-\[var\(--radix-navigation-menu-viewport-height\)\] { - height: var(--radix-navigation-menu-viewport-height); -} - -.h-1\.5 { - height: 0.375rem; -} - -.h-1 { - height: 0.25rem; -} - -.h-2\.5 { - height: 0.625rem; -} - -.h-\[var\(--radix-select-trigger-height\)\] { - height: var(--radix-select-trigger-height); -} - -.h-\[1px\] { - height: 1px; -} - -.h-5 { - height: 1.25rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-\[52px\] { - height: 52px; -} - -.max-h-\[300px\] { - max-height: 300px; -} - -.max-h-\[--radix-context-menu-content-available-height\] { - max-height: --radix-context-menu-content-available-height; -} - -.max-h-\[var\(--radix-dropdown-menu-content-available-height\)\] { - max-height: var(--radix-dropdown-menu-content-available-height); -} - -.max-h-\[--radix-select-content-available-height\] { - max-height: --radix-select-content-available-height; -} - -.max-h-screen { - max-height: 100vh; -} - -.max-h-\[800px\] { - max-height: 800px; -} - -.max-h-72 { - max-height: 18rem; -} - -.min-h-screen { - min-height: 100vh; -} - -.min-h-\[60px\] { - min-height: 60px; -} - -.w-full { - width: 100%; -} - -.w-64 { - width: 16rem; -} - -.w-4 { - width: 1rem; -} - -.w-10 { - width: 2.5rem; -} - -.w-9 { - width: 2.25rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-8 { - width: 2rem; -} - -.w-3\.5 { - width: 0.875rem; -} - -.w-3 { - width: 0.75rem; -} - -.w-2 { - width: 0.5rem; -} - -.w-max { - width: -moz-max-content; - width: max-content; -} - -.w-72 { - width: 18rem; -} - -.w-px { - width: 1px; -} - -.w-2\.5 { - width: 0.625rem; -} - -.w-\[1px\] { - width: 1px; -} - -.w-3\/4 { - width: 75%; -} - -.w-56 { - width: 14rem; -} - -.w-48 { - width: 12rem; -} - -.w-\[535px\] { - width: 535px; -} - -.min-w-\[8rem\] { - min-width: 8rem; -} - -.min-w-\[12rem\] { - min-width: 12rem; -} - -.min-w-\[var\(--radix-select-trigger-width\)\] { - min-width: var(--radix-select-trigger-width); -} - -.min-w-\[250px\] { - min-width: 250px; -} - -.min-w-\[50px\] { - min-width: 50px; -} - -.min-w-full { - min-width: 100%; -} - -.max-w-lg { - max-width: 32rem; -} - -.max-w-max { - max-width: -moz-max-content; - max-width: max-content; -} - -.max-w-md { - max-width: 28rem; -} - -.flex-1 { - flex: 1 1 0%; -} - -.flex-shrink-0 { - flex-shrink: 0; -} - -.shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.grow { - flex-grow: 1; -} - -.border-collapse { - border-collapse: collapse; -} - -.origin-\[--radix-context-menu-content-transform-origin\] { - transform-origin: --radix-context-menu-content-transform-origin; -} - -.origin-\[--radix-dropdown-menu-content-transform-origin\] { - transform-origin: --radix-dropdown-menu-content-transform-origin; -} - -.origin-\[--radix-hover-card-content-transform-origin\] { - transform-origin: --radix-hover-card-content-transform-origin; -} - -.origin-\[--radix-menubar-content-transform-origin\] { - transform-origin: --radix-menubar-content-transform-origin; -} - -.origin-\[--radix-popover-content-transform-origin\] { - transform-origin: --radix-popover-content-transform-origin; -} - -.origin-\[--radix-select-content-transform-origin\] { - transform-origin: --radix-select-content-transform-origin; -} - -.origin-\[--radix-tooltip-content-transform-origin\] { - transform-origin: --radix-tooltip-content-transform-origin; -} - -.origin-top-right { - transform-origin: top right; -} - -.translate-x-\[-50\%\] { - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.translate-y-\[-50\%\] { - --tw-translate-y: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.rotate-45 { - --tw-rotate: 45deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.transform { - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -@keyframes pulse { - 50% { - opacity: .5; - } -} - -.animate-pulse { - animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; -} - -.cursor-default { - cursor: default; -} - -.cursor-pointer { - cursor: pointer; -} - -.touch-none { - touch-action: none; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; -} - -.list-none { - list-style-type: none; -} - -.flex-col { - flex-direction: column; -} - -.flex-col-reverse { - flex-direction: column-reverse; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.items-start { - align-items: flex-start; -} - -.items-end { - align-items: flex-end; -} - -.items-center { - align-items: center; -} - -.items-stretch { - align-items: stretch; -} - -.justify-start { - justify-content: flex-start; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.justify-around { - justify-content: space-around; -} - -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.gap-2 { - gap: 0.5rem; -} - -.gap-1 { - gap: 0.25rem; -} - -.gap-3 { - gap: 0.75rem; -} - -.space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1rem * var(--tw-space-y-reverse)); -} - -.space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-6 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); -} - -.space-y-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); -} - -.space-x-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.25rem * var(--tw-space-x-reverse)); - margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-1 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); -} - -.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); -} - -.space-x-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.75rem * var(--tw-space-x-reverse)); - margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse))); -} - -.space-y-3 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); -} - -.-space-x-px > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(-1px * var(--tw-space-x-reverse)); - margin-left: calc(-1px * calc(1 - var(--tw-space-x-reverse))); -} - -.divide-y > :not([hidden]) ~ :not([hidden]) { - --tw-divide-y-reverse: 0; - border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(1px * var(--tw-divide-y-reverse)); -} - -.divide-gray-200 > :not([hidden]) ~ :not([hidden]) { - --tw-divide-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-divide-opacity)); -} - -.overflow-auto { - overflow: auto; -} - -.overflow-hidden { - overflow: hidden; -} - -.overflow-x-auto { - overflow-x: auto; -} - -.overflow-y-auto { - overflow-y: auto; -} - -.overflow-x-hidden { - overflow-x: hidden; -} - -.whitespace-nowrap { - white-space: nowrap; -} - -.whitespace-pre-wrap { - white-space: pre-wrap; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-lg { - border-radius: var(--radius); -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-md { - border-radius: calc(var(--radius) - 2px); -} - -.rounded-xl { - border-radius: 0.75rem; -} - -.rounded-sm { - border-radius: calc(var(--radius) - 4px); -} - -.rounded-\[inherit\] { - border-radius: inherit; -} - -.rounded-l-md { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.rounded-r-md { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.rounded-tl-sm { - border-top-left-radius: calc(var(--radius) - 4px); -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-b { - border-bottom-width: 1px; -} - -.border-t { - border-top-width: 1px; -} - -.border-r { - border-right-width: 1px; -} - -.border-l { - border-left-width: 1px; -} - -.border-gray-200 { - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} - -.border-red-500 { - --tw-border-opacity: 1; - border-color: rgb(239 68 68 / var(--tw-border-opacity)); -} - -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)); -} - -.border-destructive\/50 { - border-color: hsl(var(--destructive) / 0.5); -} - -.border-transparent { - border-color: transparent; -} - -.border-input { - border-color: hsl(var(--input)); -} - -.border-primary { - border-color: hsl(var(--primary)); -} - -.border-primary\/50 { - border-color: hsl(var(--primary) / 0.5); -} - -.border-destructive { - border-color: hsl(var(--destructive)); -} - -.border-l-transparent { - border-left-color: transparent; -} - -.border-t-transparent { - border-top-color: transparent; -} - -.bg-gray-50 { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity)); -} - -.bg-blue-500 { - --tw-bg-opacity: 1; - background-color: rgb(59 130 246 / var(--tw-bg-opacity)); -} - -.bg-black\/80 { - background-color: rgb(0 0 0 / 0.8); -} - -.bg-background { - background-color: hsl(var(--background)); -} - -.bg-muted { - background-color: hsl(var(--muted)); -} - -.bg-primary { - background-color: hsl(var(--primary)); -} - -.bg-secondary { - background-color: hsl(var(--secondary)); -} - -.bg-destructive { - background-color: hsl(var(--destructive)); -} - -.bg-transparent { - background-color: transparent; -} - -.bg-accent { - background-color: hsl(var(--accent)); -} - -.bg-card { - background-color: hsl(var(--card)); -} - -.bg-popover { - background-color: hsl(var(--popover)); -} - -.bg-border { - background-color: hsl(var(--border)); -} - -.bg-primary\/20 { - background-color: hsl(var(--primary) / 0.2); -} - -.bg-primary\/10 { - background-color: hsl(var(--primary) / 0.1); -} - -.bg-muted\/50 { - background-color: hsl(var(--muted) / 0.5); -} - -.bg-gray-200 { - --tw-bg-opacity: 1; - background-color: rgb(229 231 235 / var(--tw-bg-opacity)); -} - -.bg-black { - --tw-bg-opacity: 1; - background-color: rgb(0 0 0 / var(--tw-bg-opacity)); -} - -.bg-green-500 { - --tw-bg-opacity: 1; - background-color: rgb(34 197 94 / var(--tw-bg-opacity)); -} - -.bg-blue-600 { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.bg-background\/95 { - background-color: hsl(var(--background) / 0.95); -} - -.bg-gray-100 { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.bg-opacity-50 { - --tw-bg-opacity: 0.5; -} - -.fill-current { - fill: currentColor; -} - -.fill-primary { - fill: hsl(var(--primary)); -} - -.object-cover { - -o-object-fit: cover; - object-fit: cover; -} - -.p-4 { - padding: 1rem; -} - -.p-6 { - padding: 1.5rem; -} - -.p-5 { - padding: 1.25rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-0 { - padding: 0px; -} - -.p-1 { - padding: 0.25rem; -} - -.p-\[1px\] { - padding: 1px; -} - -.p-8 { - padding: 2rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.px-6 { - padding-left: 1.5rem; - padding-right: 1.5rem; -} - -.py-4 { - padding-top: 1rem; - padding-bottom: 1rem; -} - -.py-3 { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.px-2\.5 { - padding-left: 0.625rem; - padding-right: 0.625rem; -} - -.py-0\.5 { - padding-top: 0.125rem; - padding-bottom: 0.125rem; -} - -.px-2 { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.py-0 { - padding-top: 0px; - padding-bottom: 0px; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-8 { - padding-left: 2rem; - padding-right: 2rem; -} - -.py-6 { - padding-top: 1.5rem; - padding-bottom: 1.5rem; -} - -.py-1\.5 { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem; -} - -.px-1\.5 { - padding-left: 0.375rem; - padding-right: 0.375rem; -} - -.px-1 { - padding-left: 0.25rem; - padding-right: 0.25rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - -.pt-0 { - padding-top: 0px; -} - -.pt-1 { - padding-top: 0.25rem; -} - -.pl-8 { - padding-left: 2rem; -} - -.pr-2 { - padding-right: 0.5rem; -} - -.pl-2 { - padding-left: 0.5rem; -} - -.pr-8 { - padding-right: 2rem; -} - -.pr-6 { - padding-right: 1.5rem; -} - -.pr-4 { - padding-right: 1rem; -} - -.pl-4 { - padding-left: 1rem; -} - -.text-left { - text-align: left; -} - -.text-center { - text-align: center; -} - -.align-middle { - vertical-align: middle; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xs { - font-size: 0.75rem; - line-height: 1rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-\[0\.8rem\] { - font-size: 0.8rem; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.font-bold { - font-weight: 700; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.font-normal { - font-weight: 400; -} - -.uppercase { - text-transform: uppercase; -} - -.leading-none { - line-height: 1; -} - -.tracking-tight { - letter-spacing: -0.025em; -} - -.tracking-widest { - letter-spacing: 0.1em; -} - -.tracking-wider { - letter-spacing: 0.05em; -} - -.text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.text-gray-500 { - --tw-text-opacity: 1; - color: rgb(107 114 128 / var(--tw-text-opacity)); -} - -.text-red-500 { - --tw-text-opacity: 1; - color: rgb(239 68 68 / var(--tw-text-opacity)); -} - -.text-gray-900 { - --tw-text-opacity: 1; - color: rgb(17 24 39 / var(--tw-text-opacity)); -} - -.text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.text-foreground { - color: hsl(var(--foreground)); -} - -.text-destructive { - color: hsl(var(--destructive)); -} - -.text-primary-foreground { - color: hsl(var(--primary-foreground)); -} - -.text-secondary-foreground { - color: hsl(var(--secondary-foreground)); -} - -.text-destructive-foreground { - color: hsl(var(--destructive-foreground)); -} - -.text-primary { - color: hsl(var(--primary)); -} - -.text-accent-foreground { - color: hsl(var(--accent-foreground)); -} - -.text-card-foreground { - color: hsl(var(--card-foreground)); -} - -.text-current { - color: currentColor; -} - -.text-popover-foreground { - color: hsl(var(--popover-foreground)); -} - -.text-foreground\/50 { - color: hsl(var(--foreground) / 0.5); -} - -.text-gray-400 { - --tw-text-opacity: 1; - color: rgb(156 163 175 / var(--tw-text-opacity)); -} - -.text-zinc-600 { - --tw-text-opacity: 1; - color: rgb(82 82 91 / var(--tw-text-opacity)); -} - -.text-background { - color: hsl(var(--background)); -} - -.text-blue-600 { - --tw-text-opacity: 1; - color: rgb(37 99 235 / var(--tw-text-opacity)); -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(59 130 246 / var(--tw-text-opacity)); -} - -.text-gray-700 { - --tw-text-opacity: 1; - color: rgb(55 65 81 / var(--tw-text-opacity)); -} - -.underline-offset-4 { - text-underline-offset: 4px; -} - -.opacity-50 { - opacity: 0.5; -} - -.opacity-70 { - opacity: 0.7; -} - -.opacity-60 { - opacity: 0.6; -} - -.opacity-0 { - opacity: 0; -} - -.opacity-90 { - opacity: 0.9; -} - -.shadow-lg { - --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow { - --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-sm { - --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.shadow-md { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); -} - -.outline-none { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.outline { - outline-style: solid; -} - -.ring-0 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.ring-1 { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.ring-black { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity)); -} - -.ring-opacity-5 { - --tw-ring-opacity: 0.05; -} - -.ring-offset-background { - --tw-ring-offset-color: hsl(var(--background)); -} - -.filter { - filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); -} - -.backdrop-blur { - --tw-backdrop-blur: blur(8px); - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.backdrop-filter { - -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); - backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); -} - -.transition-all { - transition-property: all; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-transform { - transition-property: transform; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition-opacity { - transition-property: opacity; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.transition { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -.duration-200 { - transition-duration: 200ms; -} - -.duration-300 { - transition-duration: 300ms; -} - -.ease-in-out { - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -@keyframes enter { - from { - opacity: var(--tw-enter-opacity, 1); - transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0)); - } -} - -@keyframes exit { - to { - opacity: var(--tw-exit-opacity, 1); - transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0)); - } -} - -.animate-in { - animation-name: enter; - animation-duration: 150ms; - --tw-enter-opacity: initial; - --tw-enter-scale: initial; - --tw-enter-rotate: initial; - --tw-enter-translate-x: initial; - --tw-enter-translate-y: initial; -} - -.fade-in-0 { - --tw-enter-opacity: 0; -} - -.zoom-in-95 { - --tw-enter-scale: .95; -} - -.duration-200 { - animation-duration: 200ms; -} - -.duration-300 { - animation-duration: 300ms; -} - -.ease-in-out { - animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); -} - -.file\:border-0::file-selector-button { - border-width: 0px; -} - -.file\:bg-transparent::file-selector-button { - background-color: transparent; -} - -.file\:text-sm::file-selector-button { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.file\:font-medium::file-selector-button { - font-weight: 500; -} - -.file\:text-foreground::file-selector-button { - color: hsl(var(--foreground)); -} - -.placeholder\:text-muted-foreground::-moz-placeholder { - color: hsl(var(--muted-foreground)); -} - -.placeholder\:text-muted-foreground::placeholder { - color: hsl(var(--muted-foreground)); -} - -.after\:absolute::after { - content: var(--tw-content); - position: absolute; -} - -.after\:inset-y-0::after { - content: var(--tw-content); - top: 0px; - bottom: 0px; -} - -.after\:left-1\/2::after { - content: var(--tw-content); - left: 50%; -} - -.after\:w-1::after { - content: var(--tw-content); - width: 0.25rem; -} - -.after\:-translate-x-1\/2::after { - content: var(--tw-content); - --tw-translate-x: -50%; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.focus-within\:relative:focus-within { - position: relative; -} - -.focus-within\:z-20:focus-within { - z-index: 20; -} - -.hover\:scale-105:hover { - --tw-scale-x: 1.05; - --tw-scale-y: 1.05; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.hover\:bg-blue-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(37 99 235 / var(--tw-bg-opacity)); -} - -.hover\:bg-primary\/80:hover { - background-color: hsl(var(--primary) / 0.8); -} - -.hover\:bg-secondary\/80:hover { - background-color: hsl(var(--secondary) / 0.8); -} - -.hover\:bg-destructive\/80:hover { - background-color: hsl(var(--destructive) / 0.8); -} - -.hover\:bg-primary\/90:hover { - background-color: hsl(var(--primary) / 0.9); -} - -.hover\:bg-destructive\/90:hover { - background-color: hsl(var(--destructive) / 0.9); -} - -.hover\:bg-accent:hover { - background-color: hsl(var(--accent)); -} - -.hover\:bg-primary:hover { - background-color: hsl(var(--primary)); -} - -.hover\:bg-muted\/50:hover { - background-color: hsl(var(--muted) / 0.5); -} - -.hover\:bg-secondary:hover { - background-color: hsl(var(--secondary)); -} - -.hover\:bg-muted:hover { - background-color: hsl(var(--muted)); -} - -.hover\:bg-gray-100:hover { - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} - -.hover\:bg-green-600:hover { - --tw-bg-opacity: 1; - background-color: rgb(22 163 74 / var(--tw-bg-opacity)); -} - -.hover\:bg-gray-50:hover { - --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)); -} - -.hover\:bg-blue-700:hover { - --tw-bg-opacity: 1; - background-color: rgb(29 78 216 / var(--tw-bg-opacity)); -} - -.hover\:text-accent-foreground:hover { - color: hsl(var(--accent-foreground)); -} - -.hover\:text-primary-foreground:hover { - color: hsl(var(--primary-foreground)); -} - -.hover\:text-foreground:hover { - color: hsl(var(--foreground)); -} - -.hover\:text-muted-foreground:hover { - color: hsl(var(--muted-foreground)); -} - -.hover\:text-primary:hover { - color: hsl(var(--primary)); -} - -.hover\:text-blue-700:hover { - --tw-text-opacity: 1; - color: rgb(29 78 216 / var(--tw-text-opacity)); -} - -.hover\:underline:hover { - text-decoration-line: underline; -} - -.hover\:opacity-100:hover { - opacity: 1; -} - -.focus\:border-indigo-300:focus { - --tw-border-opacity: 1; - border-color: rgb(165 180 252 / var(--tw-border-opacity)); -} - -.focus\:border-indigo-500:focus { - --tw-border-opacity: 1; - border-color: rgb(99 102 241 / var(--tw-border-opacity)); -} - -.focus\:bg-primary:focus { - background-color: hsl(var(--primary)); -} - -.focus\:bg-accent:focus { - background-color: hsl(var(--accent)); -} - -.focus\:text-primary-foreground:focus { - color: hsl(var(--primary-foreground)); -} - -.focus\:text-accent-foreground:focus { - color: hsl(var(--accent-foreground)); -} - -.focus\:opacity-100:focus { - opacity: 1; -} - -.focus\:outline-none:focus { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus\:ring-2:focus { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus\:ring-1:focus { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus\:ring:focus { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus\:ring-ring:focus { - --tw-ring-color: hsl(var(--ring)); -} - -.focus\:ring-blue-500:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity)); -} - -.focus\:ring-indigo-200:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity)); -} - -.focus\:ring-indigo-500:focus { - --tw-ring-opacity: 1; - --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity)); -} - -.focus\:ring-opacity-50:focus { - --tw-ring-opacity: 0.5; -} - -.focus\:ring-offset-2:focus { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:outline-none:focus-visible { - outline: 2px solid transparent; - outline-offset: 2px; -} - -.focus-visible\:ring-1:focus-visible { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus-visible\:ring-2:focus-visible { - --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); - --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); - box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); -} - -.focus-visible\:ring-ring:focus-visible { - --tw-ring-color: hsl(var(--ring)); -} - -.focus-visible\:ring-offset-1:focus-visible { - --tw-ring-offset-width: 1px; -} - -.focus-visible\:ring-offset-2:focus-visible { - --tw-ring-offset-width: 2px; -} - -.focus-visible\:ring-offset-background:focus-visible { - --tw-ring-offset-color: hsl(var(--background)); -} - -.disabled\:pointer-events-none:disabled { - pointer-events: none; -} - -.disabled\:cursor-not-allowed:disabled { - cursor: not-allowed; -} - -.disabled\:opacity-50:disabled { - opacity: 0.5; -} - -.group:hover .group-hover\:opacity-100 { - opacity: 1; -} - -.peer:disabled ~ .peer-disabled\:cursor-not-allowed { - cursor: not-allowed; -} - -.peer:disabled ~ .peer-disabled\:opacity-70 { - opacity: 0.7; -} - -.dark .dark\:block { - display: block; -} - -.dark .dark\:hidden { - display: none; -} - -.dark .dark\:border-destructive { - border-color: hsl(var(--destructive)); -} - -.dark .dark\:bg-muted { - background-color: hsl(var(--muted)); -} - -.dark .dark\:text-zinc-200 { - --tw-text-opacity: 1; - color: rgb(228 228 231 / var(--tw-text-opacity)); -} - -.dark .dark\:text-muted-foreground { - color: hsl(var(--muted-foreground)); -} - -.dark .dark\:text-white { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -.dark .dark\:hover\:bg-muted:hover { - background-color: hsl(var(--muted)); -} - -.dark .dark\:hover\:text-white:hover { - --tw-text-opacity: 1; - color: rgb(255 255 255 / var(--tw-text-opacity)); -} - -@media (min-width: 640px) { - .sm\:bottom-0 { - bottom: 0px; - } - - .sm\:right-0 { - right: 0px; - } - - .sm\:top-auto { - top: auto; - } - - .sm\:mt-0 { - margin-top: 0px; - } - - .sm\:flex { - display: flex; - } - - .sm\:hidden { - display: none; - } - - .sm\:max-w-sm { - max-width: 24rem; - } - - .sm\:flex-1 { - flex: 1 1 0%; - } - - .sm\:flex-row { - flex-direction: row; - } - - .sm\:flex-col { - flex-direction: column; - } - - .sm\:items-center { - align-items: center; - } - - .sm\:justify-end { - justify-content: flex-end; - } - - .sm\:justify-between { - justify-content: space-between; - } - - .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(0.5rem * var(--tw-space-x-reverse)); - margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) { - --tw-space-x-reverse: 0; - margin-right: calc(1rem * var(--tw-space-x-reverse)); - margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); - } - - .sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) { - --tw-space-y-reverse: 0; - margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); - margin-bottom: calc(0px * var(--tw-space-y-reverse)); - } - - .sm\:rounded-lg { - border-radius: var(--radius); - } - - .sm\:text-left { - text-align: left; - } -} - -@media (min-width: 768px) { - .md\:absolute { - position: absolute; - } - - .md\:flex { - display: flex; - } - - .md\:hidden { - display: none; - } - - .md\:w-1\/4 { - width: 25%; - } - - .md\:w-auto { - width: auto; - } - - .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] { - width: var(--radix-navigation-menu-viewport-width); - } - - .md\:max-w-\[420px\] { - max-width: 420px; - } - - .md\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .md\:flex-row { - flex-direction: row; - } - - .md\:text-sm { - font-size: 0.875rem; - line-height: 1.25rem; - } -} - -@media (min-width: 1024px) { - .lg\:grid-cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } -} - -.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg { - --tw-rotate: 180deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div { - --tw-translate-y: -3px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\>svg\]\:absolute>svg { - position: absolute; -} - -.\[\&\>svg\]\:left-4>svg { - left: 1rem; -} - -.\[\&\>svg\]\:top-4>svg { - top: 1rem; -} - -.\[\&\>svg\]\:hidden>svg { - display: none; -} - -.\[\&\>svg\]\:shrink-0>svg { - flex-shrink: 0; -} - -.\[\&\>svg\]\:text-foreground>svg { - color: hsl(var(--foreground)); -} - -.\[\&\>svg\]\:text-destructive>svg { - color: hsl(var(--destructive)); -} - -.\[\&\>svg\~\*\]\:pl-7>svg~* { - padding-left: 1.75rem; -} - -.\[\&_p\]\:leading-relaxed p { - line-height: 1.625; -} - -.\[\&_svg\]\:pointer-events-none svg { - pointer-events: none; -} - -.\[\&_svg\]\:h-4 svg { - height: 1rem; -} - -.\[\&_svg\]\:w-4 svg { - width: 1rem; -} - -.\[\&_svg\]\:shrink-0 svg { - flex-shrink: 0; -} - -.\[\&_svg\]\:text-foreground svg { - color: hsl(var(--foreground)); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:rounded-md:has([aria-selected]) { - border-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\)\]\:bg-accent:has([aria-selected]) { - background-color: hsl(var(--accent)); -} - -.first\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-l-md:has([aria-selected]):first-child { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.last\:\[\&\:has\(\[aria-selected\]\)\]\:rounded-r-md:has([aria-selected]):last-child { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\[aria-selected\]\.day-outside\)\]\:bg-accent\/50:has([aria-selected].day-outside) { - background-color: hsl(var(--accent) / 0.5); -} - -.\[\&\:has\(\[aria-selected\]\.day-range-end\)\]\:rounded-r-md:has([aria-selected].day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\>\.day-range-end\)\]\:rounded-r-md:has(>.day-range-end) { - border-top-right-radius: calc(var(--radius) - 2px); - border-bottom-right-radius: calc(var(--radius) - 2px); -} - -.\[\&\:has\(\>\.day-range-start\)\]\:rounded-l-md:has(>.day-range-start) { - border-top-left-radius: calc(var(--radius) - 2px); - border-bottom-left-radius: calc(var(--radius) - 2px); -} - -.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] { - padding-top: 0.375rem; - padding-bottom: 0.375rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] { - font-weight: 500; -} - -.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading] { - color: hsl(var(--muted-foreground)); -} - -.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~[cmdk-group] { - padding-top: 0px; -} - -.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg { - width: 1.25rem; -} - -.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] { - height: 3rem; -} - -.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] { - padding-left: 0.5rem; - padding-right: 0.5rem; -} - -.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] { - padding-top: 0.75rem; - padding-bottom: 0.75rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg { - height: 1.25rem; -} - -.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg { - width: 1.25rem; -} - -.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction=vertical]>div { - --tw-rotate: 90deg; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&_tr\]\:border-b tr { - border-bottom-width: 1px; -} - -.\[\&_tr\:last-child\]\:border-0 tr:last-child { - border-width: 0px; -} - -.\[\&\>tr\]\:last\:border-b-0:last-child>tr { - border-bottom-width: 0px; -} - -.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]) { - padding-right: 0px; -} - -.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox] { - --tw-translate-y: 2px; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.\[\&\+div\]\:text-xs+div { - font-size: 0.75rem; - line-height: 1rem; -} - -.\[\&\>span\]\:flex>span { - display: flex; -} - -.\[\&\>span\]\:w-full>span { - width: 100%; -} - -.\[\&\>span\]\:w-auto>span { - width: auto; -} - -.\[\&\>span\]\:items-center>span { - align-items: center; -} - -.\[\&\>span\]\:gap-1>span { - gap: 0.25rem; -} - -.\[\&\>span\]\:truncate>span { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} diff --git a/src/styles/output.css b/public/styles/output.css similarity index 100% rename from src/styles/output.css rename to public/styles/output.css diff --git a/src-rust/tauri.conf.json b/src-rust/tauri.conf.json index 40c6489..4a19f60 100644 --- a/src-rust/tauri.conf.json +++ b/src-rust/tauri.conf.json @@ -4,11 +4,10 @@ "version": "6.0.0", "identifier": "online.generalbots", "build": { - "beforeDevCommand": "pnpm dev", + "beforeDevCommand": "npm run dev", "devUrl": "http://localhost:1420", - "beforeBuildCommand": "pnpm build", - "frontendDist": "../dist" - + "beforeBuildCommand": "npm run build", + "frontendDist": "../out" }, "app": { "withGlobalTauri": true, diff --git a/src/chat/components/ui/emoji-picker.tsx b/src/chat/components/ui/emoji-picker.tsx deleted file mode 100644 index d2ed8ee..0000000 --- a/src/chat/components/ui/emoji-picker.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; -import '../../styles/ui.css'; - -const EMOJI_CATEGORIES = { - "😀 🎮": ["😀", "😎", "🤖", "👾", "🎮", "✨", "🚀", "đŸ’Ģ"], - "🌟 đŸ’Ģ": ["⭐", "🌟", "đŸ’Ģ", "✨", "⚡", "đŸ’Ĩ", "đŸ”Ĩ", "🌈"], - "🤖 đŸŽ¯": ["🤖", "đŸŽ¯", "🎲", "🎮", "đŸ•šī¸", "👾", "đŸ’ģ", "âŒ¨ī¸"] -}; - -export function EmojiPicker({ visible, onClose, onEmojiSelect }: { - visible: boolean; - onClose: () => void; - onEmojiSelect: (emoji: string) => void; -}) { - if (!visible) return null; - - return ( -
-
-

Select Emoji

- -
- -
- {Object.entries(EMOJI_CATEGORIES).map(([category, emojis]) => ( -
-

{category}

-
- {emojis.map(emoji => ( - - ))} -
-
- ))} -
-
- ); -} diff --git a/src/chat/components/ui/settings-panel.tsx b/src/chat/components/ui/settings-panel.tsx deleted file mode 100644 index 4c48ca7..0000000 --- a/src/chat/components/ui/settings-panel.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import { useSound } from '../../providers/sound-provider'; -import '../../styles/ui.css'; - -export function SettingsPanel() { - const [theme, setTheme] = React.useState('dark'); - const [sound, setSound] = React.useState(true); - const [powerMode, setPowerMode] = React.useState(false); - const { setEnabled, playSound } = useSound(); - - const handleSoundToggle = (value: boolean) => { - setSound(value); - setEnabled(value); - if (value) { - playSound('success'); - } - }; - - const handleThemeChange = () => { - playSound('click'); - setTheme(theme === 'dark' ? 'light' : 'dark'); - }; - - const handlePowerMode = (value: boolean) => { - playSound(value ? 'success' : 'click'); - setPowerMode(value); - }; - - return ( -
-
- {sound ? ( - - - - ) : ( - - - - )} - Sound Effects - -
-
- ); -} diff --git a/src/index.tsx b/src/index.tsx deleted file mode 100644 index 6f3dd90..0000000 --- a/src/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { Route, Routes, useLocation, useNavigate } from 'react-router-dom'; -import AuthenticationScreen from './authentication'; -import { Chat } from './chat'; - -import DashboardPage from './dashboard'; -import TaskPage from './tasks'; -import TemplatesPage from './templates'; -import { DriveScreen } from './drive'; -import SyncPage from './sync/page'; -import { Button } from './components/ui/button'; -import MailPage from './mail'; - -const examples = [ - { name: "Home", href: "authentication" }, - { name: "Dashboard", href: "dashboard" }, - { name: "Chat", href: "chat" }, - { name: "Mail", href: "mail" }, - { name: "Drive", href: "drive" }, - { name: "Tasks", href: "tasks" }, - { name: "Meet", href: "meet" }, - { name: "Templates", href: "templates" }, - { name: "Settings", href: "sync" }, - { name: "Help", href: "help" }, -]; - -const ExamplesNav = () => { - const location = useLocation(); - const navigate = useNavigate(); - - return ( -
-
- {examples.map((example) => ( - - ))} -
-
- ); -}; - - -export function RootLayout() { - return ( -
- -
- - - - - } /> - - - - - } /> - - - - - } /> - - - - - } /> - } /> - - - - - } /> - Meet Screen (Placeholder)
} /> - - - - - } /> - } /> - - - - ); -} - -export default RootLayout; \ No newline at end of file diff --git a/src/lib/client-cookies.ts b/src/lib/client-cookies.ts new file mode 100644 index 0000000..48e3b25 --- /dev/null +++ b/src/lib/client-cookies.ts @@ -0,0 +1,25 @@ +'use client'; + +export function getClientCookie(key: string): string | null { + if (typeof document === 'undefined') return null; + + const value = document.cookie + .split('; ') + .find(row => row.startsWith(`${key}=`)) + ?.split('=')[1]; + + return value ? decodeURIComponent(value) : null; +} + +export function setClientCookie( + key: string, + value: string, + options: { expires?: Date; path?: string } = {} +): void { + if (typeof document === 'undefined') return; + + let cookie = `${key}=${encodeURIComponent(value)}`; + if (options.expires) cookie += `; expires=${options.expires.toUTCString()}`; + cookie += `; path=${options.path || '/'}`; + document.cookie = cookie; +} \ No newline at end of file diff --git a/src/lib/server-cookies.tsx b/src/lib/server-cookies.tsx new file mode 100644 index 0000000..78f5d09 --- /dev/null +++ b/src/lib/server-cookies.tsx @@ -0,0 +1,11 @@ +'use server'; + +import { cookies } from 'next/headers'; + +export async function getServerCookie(key: string): Promise { + // This will only run during SSR, not during static export + if (process.env.NEXT_PHASE === 'phase-production-build') { + return undefined; + } + return cookies().get(key)?.value; +} \ No newline at end of file diff --git a/src/mail/index.tsx b/src/mail/index.tsx deleted file mode 100644 index 5a3f5ab..0000000 --- a/src/mail/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useState, useEffect } from "react"; - -import { Mail } from "@/mail/components/mail"; -import { accounts, mails } from "@/mail/data"; - -export default function MailPage() { - const [defaultLayout, setDefaultLayout] = useState(undefined); - const [defaultCollapsed, setDefaultCollapsed] = useState(undefined); - - useEffect(() => { - // In Vite/React, we'll use localStorage instead of cookies - const layout = localStorage.getItem("react-resizable-panels:layout:mail"); - const collapsed = localStorage.getItem("react-resizable-panels:collapsed:mail"); - - if (layout) setDefaultLayout(JSON.parse(layout)); - if (collapsed) setDefaultCollapsed(JSON.parse(collapsed)); - }, []); - - return ( - <> -
- Mail - Mail -
-
- -
- - ); -} \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx deleted file mode 100644 index a554f09..0000000 --- a/src/main.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom/client' -import { BrowserRouter } from 'react-router-dom' -import RootLayout from "."; -import './styles/globals.css' // or your CSS file path - -ReactDOM.createRoot(document.getElementById('root')).render( - - - - - -) \ No newline at end of file diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 11f02fe..0000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/tsconfig.json b/tsconfig.json index 989d402..b2b2419 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,9 +2,11 @@ "compilerOptions": { "baseUrl": ".", "paths": { - "@/*": ["./src/*"] + "@/*": [ + "./src/*" + ] }, - "target": "ES2020", + "target": "ES2020", "useDefineForClassFields": true, "lib": [ "ES2020", @@ -19,19 +21,33 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx", + "jsx": "preserve", /* Linting */ "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "allowJs": true, + "incremental": true, + "esModuleInterop": true, + "plugins": [ + { + "name": "next" + } + ] }, "include": [ - "src" - ], + "src", + + ".next/types/**/*.ts" +, "app" ], "references": [ { "path": "./tsconfig.node.json" } + ], + "exclude": [ + "node_modules", + "src-rust" ] -} \ No newline at end of file +} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 87397da..0000000 --- a/vite.config.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import path from "path"; -import tailwindcss from "@tailwindcss/vite" - -// @ts-expect-error process is a nodejs global -const host = process.env.TAURI_DEV_HOST; - -// https://vitejs.dev/config/ -export default defineConfig(async () => ({ - - plugins: [react(),tailwindcss()], - css: { - postcss: { - config: false // Disable auto-loading of postcss.config.js - } as any - }, - resolve: { - alias: { - "@": path.resolve(__dirname, "./src"), - }, - }, - - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // - // 1. prevent vite from obscuring rust errors - clearScreen: false, - // 2. tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - host: host || false, - hmr: host - ? { - protocol: "ws", - host, - port: 1421, - } - : undefined, - watch: { - // 3. tell vite to ignore watching `src-rust` - ignored: ["**/src-rust/**"], - }, - }, -}));