diff --git a/apps/web/package.json b/apps/web/package.json index ee582d64..088e0b72 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -15,10 +15,9 @@ "dependencies": { "@erp/auth": "workspace:*", "@erp/core": "workspace:*", - "@repo/shadcn-ui": "workspace:*", "@repo/rdx-criteria": "workspace:*", "@repo/rdx-ui": "workspace:*", - "@tailwindcss/vite": "^4.1.5", + "@repo/shadcn-ui": "workspace:*", "@tanstack/react-query": "^5.74.11", "axios": "^1.9.0", "i18next": "^25.0.2", @@ -30,14 +29,18 @@ "react-i18next": "^15.0.1", "react-router-dom": "^6.26.0", "react-secure-storage": "^1.3.2", - "tailwindcss": "^4.1.5", + "tailwind-merge": "^3.2.0", + "tailwindcss": "^4.1.6", "tailwindcss-animate": "^1.0.7", + "tw-animate-css": "^1.2.9", "vite-plugin-html": "^3.2.2" }, "devDependencies": { "@biomejs/biome": "1.9.4", "@hookform/devtools": "^4.4.0", "@repo/typescript-config": "workspace:*", + "@tailwindcss/postcss": "^4.1.5", + "@tailwindcss/vite": "^4.1.6", "@tanstack/react-query-devtools": "^5.74.11", "@types/axios": "^0.14.4", "@types/node": "^22.15.12", diff --git a/apps/web/postcss.config.mjs b/apps/web/postcss.config.mjs new file mode 100644 index 00000000..b62ffe34 --- /dev/null +++ b/apps/web/postcss.config.mjs @@ -0,0 +1 @@ +export { default } from "@repo/shadcn-ui/postcss.config"; diff --git a/apps/web/src/App.css b/apps/web/src/App.css new file mode 100644 index 00000000..8df81348 --- /dev/null +++ b/apps/web/src/App.css @@ -0,0 +1,175 @@ +@import "tailwindcss"; + +@tailwind utilities; +@plugin "tailwindcss-animate"; + +@custom-variant dark (&:is(.dark *)); + +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} + +:root { + --background: hsl(0 0% 100%); + --foreground: hsl(0 0% 3.9%); + --card: hsl(0 0% 100%); + --card-foreground: hsl(0 0% 3.9%); + --popover: hsl(0 0% 100%); + --popover-foreground: hsl(0 0% 3.9%); + --primary: hsl(0 0% 9%); + --primary-foreground: hsl(0 0% 98%); + --secondary: hsl(0 0% 96.1%); + --secondary-foreground: hsl(0 0% 9%); + --muted: hsl(0 0% 96.1%); + --muted-foreground: hsl(0 0% 45.1%); + --accent: hsl(0 0% 96.1%); + --accent-foreground: hsl(0 0% 9%); + --destructive: hsl(0 84.2% 60.2%); + --destructive-foreground: hsl(0 0% 98%); + --border: hsl(0 0% 89.8%); + --input: hsl(0 0% 89.8%); + --ring: hsl(0 0% 3.9%); + --chart-1: hsl(12 76% 61%); + --chart-2: hsl(173 58% 39%); + --chart-3: hsl(197 37% 24%); + --chart-4: hsl(43 74% 66%); + --chart-5: hsl(27 87% 67%); + --radius: 0.6rem; + --sidebar: hsl(0 0% 98%); + --sidebar-foreground: hsl(240 5.3% 26.1%); + --sidebar-primary: hsl(240 5.9% 10%); + --sidebar-primary-foreground: hsl(0 0% 98%); + --sidebar-accent: hsl(240 4.8% 95.9%); + --sidebar-accent-foreground: hsl(240 5.9% 10%); + --sidebar-border: hsl(220 13% 91%); + --sidebar-ring: hsl(217.2 91.2% 59.8%); +} + +.dark { + --background: hsl(0 0% 3.9%); + --foreground: hsl(0 0% 98%); + --card: hsl(0 0% 3.9%); + --card-foreground: hsl(0 0% 98%); + --popover: hsl(0 0% 3.9%); + --popover-foreground: hsl(0 0% 98%); + --primary: hsl(0 0% 98%); + --primary-foreground: hsl(0 0% 9%); + --secondary: hsl(0 0% 14.9%); + --secondary-foreground: hsl(0 0% 98%); + --muted: hsl(0 0% 14.9%); + --muted-foreground: hsl(0 0% 63.9%); + --accent: hsl(0 0% 14.9%); + --accent-foreground: hsl(0 0% 98%); + --destructive: hsl(0 62.8% 30.6%); + --destructive-foreground: hsl(0 0% 98%); + --border: hsl(0 0% 14.9%); + --input: hsl(0 0% 14.9%); + --ring: hsl(0 0% 83.1%); + --chart-1: hsl(220 70% 50%); + --chart-2: hsl(160 60% 45%); + --chart-3: hsl(30 80% 55%); + --chart-4: hsl(280 65% 60%); + --chart-5: hsl(340 75% 55%); + --sidebar: hsl(240 5.9% 10%); + --sidebar-foreground: hsl(240 4.8% 95.9%); + --sidebar-primary: hsl(224.3 76.3% 48%); + --sidebar-primary-foreground: hsl(0 0% 100%); + --sidebar-accent: hsl(240 3.7% 15.9%); + --sidebar-accent-foreground: hsl(240 4.8% 95.9%); + --sidebar-border: hsl(240 3.7% 15.9%); + --sidebar-ring: hsl(217.2 91.2% 59.8%); +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-destructive-foreground: var(--destructive-foreground); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --animate-accordion-down: accordion-down 0.2s ease-out; + --animate-accordion-up: accordion-up 0.2s ease-out; + + @keyframes accordion-down { + from { + height: 0; + } + to { + height: var(--radix-accordion-content-height); + } + } + + @keyframes accordion-up { + from { + height: var(--radix-accordion-content-height); + } + to { + height: 0; + } + } +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx index e222fe0e..000fe1a5 100644 --- a/apps/web/src/App.tsx +++ b/apps/web/src/App.tsx @@ -1,56 +1,18 @@ -import { Prueba } from "@repo/rdx-ui/components"; -import { Button, Toaster, TooltipProvider } from "@repo/shadcn-ui/components"; -import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; -import { Suspense, useState } from "react"; -import { I18nextProvider } from "react-i18next"; +import { useState } from "react"; -import { LoadingOverlay, TailwindIndicator } from "@/components"; -import { createAxiosDataProvider } from "@/lib/axios/create-axios-data-provider"; -import { DataSourceProvider, ThemeProvider, UnsavedWarnProvider } from "@/lib/hooks"; -import { i18n } from "@/locales"; +import { AvatarDemo } from "./components/avatar-demo"; +import { BreadcrumbDemo } from "./components/b-demo"; -import "./global.css"; +import "./App.css"; function App() { - const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - staleTime: 10000, // Specify a staleTime to only fetch when the data is older than a certain amount of time - }, - }, - }); - const [count, setCount] = useState(0); return ( - - - - - - - }> -
- -

This is a Vite application

-

- This shadcn/ui button is shared between Vite, NextJS and any other - application. -

- -
-
-
-
- - - {import.meta.env.MODE === "development" && } -
-
-
-
+ <> + + + ); } diff --git a/apps/web/src/components/avatar-demo.tsx b/apps/web/src/components/avatar-demo.tsx new file mode 100644 index 00000000..3ead8da3 --- /dev/null +++ b/apps/web/src/components/avatar-demo.tsx @@ -0,0 +1,65 @@ +import { Avatar, AvatarFallback, AvatarImage } from "@repo/shadcn-ui/components"; + +export function AvatarDemo() { + return ( +
+ + + CN + + + CN + + + + CN + + + + ER + +
+ + + CN + + + + LR + + + + ER + +
+
+ + + CN + + + + LR + + + + ER + +
+
+ + + CN + + + + LR + + + + ER + +
+
+ ); +} diff --git a/apps/web/src/components/b-demo.tsx b/apps/web/src/components/b-demo.tsx new file mode 100644 index 00000000..adb74bcb --- /dev/null +++ b/apps/web/src/components/b-demo.tsx @@ -0,0 +1,49 @@ +import { + Breadcrumb, + BreadcrumbEllipsis, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from "@repo/shadcn-ui/components"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@repo/shadcn-ui/components"; + +export function BreadcrumbDemo() { + return ( + + + + Home + + + + + + + Toggle menu + + + Documentation + Themes + GitHub + + + + + + Components + + + + Breadcrumb + + + + ); +} diff --git a/apps/web/src/components/custom-dialog.tsx b/apps/web/src/components/custom-dialog.tsx deleted file mode 100644 index f34b14a7..00000000 --- a/apps/web/src/components/custom-dialog.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import { - AlertDialog, - AlertDialogAction, - AlertDialogCancel, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, -} from "@repo/shadcn-ui/components"; -import { SyntheticEvent } from "react"; -import { Link } from "react-router-dom"; - -interface CustomDialogProps { - isOpen: boolean; - onCancel: (event: SyntheticEvent) => void; - onConfirm: (event: SyntheticEvent) => void; - title: React.ReactNode; - description: React.ReactNode; - cancelLabel: React.ReactNode; - confirmLabel: React.ReactNode; -} - -export const CustomDialog = ({ - isOpen, - onCancel, - onConfirm, - title, - description, - cancelLabel, - confirmLabel, -}: CustomDialogProps) => { - return ( - - - - {title} - {description} - - - - - {cancelLabel} - - - - - {confirmLabel} - - - - - - ); -}; diff --git a/apps/web/src/components/index.tsx b/apps/web/src/components/index.tsx index 52ad21e0..b2dfcd49 100644 --- a/apps/web/src/components/index.tsx +++ b/apps/web/src/components/index.tsx @@ -1,3 +1 @@ -export * from "./tailwind-indicator.tsx"; -export * from "./loading-overlay"; -export * from "./custom-dialog.tsx"; +export * from "./slider-demo"; diff --git a/apps/web/src/components/loading-overlay/index.tsx b/apps/web/src/components/loading-overlay/index.tsx deleted file mode 100644 index b229c338..00000000 --- a/apps/web/src/components/loading-overlay/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export * from "./loading-overlay.tsx"; diff --git a/apps/web/src/components/loading-overlay/loading-indicator.tsx b/apps/web/src/components/loading-overlay/loading-indicator.tsx deleted file mode 100644 index 85d6aacf..00000000 --- a/apps/web/src/components/loading-overlay/loading-indicator.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { cn } from "@repo/shadcn-ui/lib/utils"; -import { t } from "i18next"; -import { LoadingSpinIcon } from "./loading-spin-icon"; - -export type LoadingIndicatorProps = { - look?: "dark" | string; - size?: number; - active?: boolean; - title?: string; - subtitle?: string; -}; - -export const LoadingIndicator = ({ - active = true, - look = "dark", - title = t("components.loading_indicator.title"), - subtitle = "", -}: LoadingIndicatorProps) => { - const isDark = look === "dark"; - const loadingSpinClassName = isDark ? "text-brand" : "text-white"; - - if (!active) { - return; - } - - return ( -
- - {/**/} - {title ? ( -

- {title} -

- ) : null} - {subtitle ? ( -

- {subtitle} -

- ) : null} -
- ); -}; - -LoadingIndicator.displayName = "LoadingIndicator"; diff --git a/apps/web/src/components/loading-overlay/loading-overlay.tsx b/apps/web/src/components/loading-overlay/loading-overlay.tsx deleted file mode 100644 index 8708e2ff..00000000 --- a/apps/web/src/components/loading-overlay/loading-overlay.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { t } from "i18next"; -import { LoadingIndicator } from "./loading-indicator"; - -export type LoadingOverlayProps = { - title?: string; - subtitle?: string; -}; - -export const LoadingOverlay = ({ - title = t("components.loading_overlay.title"), - subtitle = t("components.loading_overlay.subtitle"), - ...props -}: LoadingOverlayProps) => { - return ( -
- -
- ); -}; - -LoadingOverlay.displayName = "LoadingOverlay"; diff --git a/apps/web/src/components/loading-overlay/loading-spin-icon.tsx b/apps/web/src/components/loading-overlay/loading-spin-icon.tsx deleted file mode 100644 index a852496d..00000000 --- a/apps/web/src/components/loading-overlay/loading-spin-icon.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { JSX } from "react"; - -export const LoadingSpinIcon = ({ - size = 5, - color = "brand", - className, -}: { - size?: number; - color?: string; - className?: string; -}): JSX.Element => ( - - Loading spinner - - - - -); diff --git a/apps/web/src/components/slider-demo.tsx b/apps/web/src/components/slider-demo.tsx new file mode 100644 index 00000000..90de068f --- /dev/null +++ b/apps/web/src/components/slider-demo.tsx @@ -0,0 +1,16 @@ +import { Slider } from "@repo/shadcn-ui/components"; +import { cn } from "@repo/shadcn-ui/lib/utils"; + +type SliderProps = React.ComponentProps; + +export function SliderDemo({ className, ...props }: SliderProps) { + return ( + + ); +} diff --git a/apps/web/src/components/tailwind-indicator.tsx b/apps/web/src/components/tailwind-indicator.tsx deleted file mode 100644 index 91af9da0..00000000 --- a/apps/web/src/components/tailwind-indicator.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export function TailwindIndicator() { - if (process.env.NODE_ENV === "production") return null; - - return ( -
-
xs
-
sm
-
md
-
lg
-
xl
-
2xl
-
- ); -} diff --git a/apps/web/src/global.css b/apps/web/src/global.css index f34ea458..c94dac01 100644 --- a/apps/web/src/global.css +++ b/apps/web/src/global.css @@ -1,143 +1,26 @@ -@import "tailwindcss"; -@plugin "tailwindcss-animate"; -@import "@repo/shadcn-ui/globals.css"; - -@theme { - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); -} +@import 'tailwindcss'; +@import '@repo/shadcn-ui/globals.css'; +@import '@repo/rdx-ui/globals.css'; :root { - --background: oklch(1 0 0); - --foreground: oklch(0.145 0 0); - --card: oklch(1 0 0); - --card-foreground: oklch(0.145 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.145 0 0); - --primary: oklch(0.205 0 0); - --primary-foreground: oklch(0.985 0 0); - --secondary: oklch(0.97 0 0); - --secondary-foreground: oklch(0.205 0 0); - --muted: oklch(0.97 0 0); - --muted-foreground: oklch(0.556 0 0); - --accent: oklch(0.97 0 0); - --accent-foreground: oklch(0.205 0 0); - --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(0.577 0.245 27.325); - --border: oklch(0.922 0 0); - --input: oklch(0.922 0 0); - --ring: oklch(0.87 0 0); - --chart-1: oklch(0.646 0.222 41.116); - --chart-2: oklch(0.6 0.118 184.704); - --chart-3: oklch(0.398 0.07 227.392); - --chart-4: oklch(0.828 0.189 84.429); - --chart-5: oklch(0.769 0.188 70.08); - --radius: 0.625rem; - --sidebar: oklch(0.985 0 0); - --sidebar-foreground: oklch(0.145 0 0); - --sidebar-primary: oklch(0.205 0 0); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.97 0 0); - --sidebar-accent-foreground: oklch(0.205 0 0); - --sidebar-border: oklch(0.922 0 0); - --sidebar-ring: oklch(0.87 0 0); + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } -.dark { - --background: oklch(0.145 0 0); - --foreground: oklch(0.985 0 0); - --card: oklch(0.145 0 0); - --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.145 0 0); - --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.985 0 0); - --primary-foreground: oklch(0.205 0 0); - --secondary: oklch(0.269 0 0); - --secondary-foreground: oklch(0.985 0 0); - --muted: oklch(0.269 0 0); - --muted-foreground: oklch(0.708 0 0); - --accent: oklch(0.269 0 0); - --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.396 0.141 25.723); - --destructive-foreground: oklch(0.637 0.237 25.331); - --border: oklch(0.269 0 0); - --input: oklch(0.269 0 0); - --ring: oklch(0.439 0 0); - --chart-1: oklch(0.488 0.243 264.376); - --chart-2: oklch(0.696 0.17 162.48); - --chart-3: oklch(0.769 0.188 70.08); - --chart-4: oklch(0.627 0.265 303.9); - --chart-5: oklch(0.645 0.246 16.439); - --sidebar: oklch(0.205 0 0); - --sidebar-foreground: oklch(0.985 0 0); - --sidebar-primary: oklch(0.488 0.243 264.376); - --sidebar-primary-foreground: oklch(0.985 0 0); - --sidebar-accent: oklch(0.269 0 0); - --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(0.269 0 0); - --sidebar-ring: oklch(0.439 0 0); -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} - -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } -} - -:root { - --color-1: 0 100% 63%; - --color-2: 270 100% 63%; - --color-3: 210 100% 63%; - --color-4: 195 100% 63%; - --color-5: 90 100% 63%; -} - -@theme inline { - --color-color-1: var(----color-1); - --color-color-2: var(----color-2); - --color-color-3: var(----color-3); - --color-color-4: var(----color-4); - --color-color-5: var(----color-5); +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; } diff --git a/apps/web/src/main.tsx b/apps/web/src/main.tsx index b25d859b..902681bd 100644 --- a/apps/web/src/main.tsx +++ b/apps/web/src/main.tsx @@ -2,6 +2,8 @@ import { StrictMode } from "react"; import { createRoot } from "react-dom/client"; import App from "./App.tsx"; +import "./global.css"; + const rootElement = document.getElementById("factuges"); if (rootElement) { createRoot(rootElement).render( diff --git a/apps/web/tailwind.config.ts b/apps/web/tailwind.config.ts new file mode 100644 index 00000000..d41501e3 --- /dev/null +++ b/apps/web/tailwind.config.ts @@ -0,0 +1 @@ +export * from "@repo/shadcn-ui/tailwind.config.mjs"; diff --git a/apps/web/tailwind.config.ts.bak b/apps/web/tailwind.config.ts.bak deleted file mode 100644 index ab410ee5..00000000 --- a/apps/web/tailwind.config.ts.bak +++ /dev/null @@ -1,27 +0,0 @@ -import type { Config } from "tailwindcss"; - -export default { - content: [ - "./src/**/*.{html,ts,tsx}", // Adjust the paths to match your project structure - ], - theme: { - extend: { - colors: { - "color-1": "hsl(var(--color-1))", - "color-2": "hsl(var(--color-2))", - "color-3": "hsl(var(--color-3))", - "color-4": "hsl(var(--color-4))", - "color-5": "hsl(var(--color-5))", - }, - animation: { - rainbow: "rainbow var(--speed, 2s) infinite linear", - }, - keyframes: { - rainbow: { - "0%": { "background-position": "0%" }, - "100%": { "background-position": "200%" }, - }, - }, - }, - }, -} satisfies Config; diff --git a/apps/web/tsconfig.app.json b/apps/web/tsconfig.app.json index dd509b06..fb85fb38 100644 --- a/apps/web/tsconfig.app.json +++ b/apps/web/tsconfig.app.json @@ -1,5 +1,9 @@ { "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + }, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2020", "useDefineForClassFields": true, @@ -10,7 +14,7 @@ /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "verbatimModuleSyntax": false, + "isolatedModules": true, "moduleDetection": "force", "noEmit": true, "jsx": "react-jsx", @@ -19,14 +23,9 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, - "noUncheckedSideEffectImports": true, - - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } + "noUncheckedSideEffectImports": true }, - "include": ["src"] + "include": ["src"], + "exclude": ["node_modules"] } diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 2b78387c..fec8c8e5 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -1,6 +1,9 @@ { "files": [], - "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ], "compilerOptions": { "baseUrl": ".", "paths": { diff --git a/apps/web/tsconfig.node.json b/apps/web/tsconfig.node.json index 1277bfcb..dc608fc0 100644 --- a/apps/web/tsconfig.node.json +++ b/apps/web/tsconfig.node.json @@ -9,7 +9,7 @@ /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "verbatimModuleSyntax": false, + "isolatedModules": true, "moduleDetection": "force", "noEmit": true, @@ -17,9 +17,8 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, - "include": ["vite.config.ts"] + "include": ["vite.config.mts"] } diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.mts similarity index 88% rename from apps/web/vite.config.ts rename to apps/web/vite.config.mts index 533c4bdf..506e619d 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.mts @@ -1,11 +1,11 @@ -import path from "path"; -import tailwindcss from "@tailwindcss/vite"; -import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tailwindcss from "@tailwindcss/vite"; +import path from "path"; // https://vite.dev/config/ export default defineConfig({ - plugins: [tailwindcss(), react()], + plugins: [react(), tailwindcss()], resolve: { alias: { "@": path.resolve(__dirname, "./src"), diff --git a/packages/rdx-ui/package.json b/packages/rdx-ui/package.json index 2f4e0ea6..35efa19e 100644 --- a/packages/rdx-ui/package.json +++ b/packages/rdx-ui/package.json @@ -7,6 +7,7 @@ "ui:lint": "biome lint --fix" }, "exports": { + "./globals.css": "./src/styles/globals.css", "./components": "./src/components/index.tsx", "./components/*": "./src/components/*.tsx", "./hooks/*": ["./src/hooks/*.tsx", "./src/hooks/*.ts"] diff --git a/packages/rdx-ui/src/global.d.ts b/packages/rdx-ui/src/global.d.ts deleted file mode 100644 index f2d12bb5..00000000 --- a/packages/rdx-ui/src/global.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module "*.module.css" { - const classes: { [key: string]: string }; - export default classes; -} diff --git a/packages/rdx-ui/src/styles/globals.css b/packages/rdx-ui/src/styles/globals.css new file mode 100644 index 00000000..27bf2e1a --- /dev/null +++ b/packages/rdx-ui/src/styles/globals.css @@ -0,0 +1,3 @@ +@import 'tailwindcss'; +@import '@repo/shadcn-ui/globals.css'; + diff --git a/packages/rdx-ui/tsconfig.json b/packages/rdx-ui/tsconfig.json index e3fcefc1..63ae6dd1 100644 --- a/packages/rdx-ui/tsconfig.json +++ b/packages/rdx-ui/tsconfig.json @@ -8,11 +8,11 @@ "baseUrl": ".", "paths": { - "@repo/ui/*": ["./src/*"] + "@repo/rdx-ui/*": ["./src/*"] }, "plugins": [{ "name": "typescript-plugin-css-modules" }] }, - "include": ["."], + "include": ["src"], "exclude": ["node_modules", "dist"] } diff --git a/packages/shadcn-ui/components.json b/packages/shadcn-ui/components.json index 47ec4567..76a1c7da 100644 --- a/packages/shadcn-ui/components.json +++ b/packages/shadcn-ui/components.json @@ -5,17 +5,17 @@ "tsx": true, "tailwind": { "config": "", - "prefix": "", "css": "src/styles/globals.css", "baseColor": "neutral", - "cssVariables": true + "cssVariables": true, + "prefix": "" }, - "iconLibrary": "lucide", "aliases": { - "components": "@repo/shadcn-ui/components", - "utils": "@repo/shadcn-ui/lib/utils", - "hooks": "@repo/shadcn-ui/hooks", - "lib": "@repo/shadcn-ui/lib", - "ui": "@repo/shadcn-ui/components" - } + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" } diff --git a/packages/shadcn-ui/package.json b/packages/shadcn-ui/package.json index fc4ef239..0ef84de4 100644 --- a/packages/shadcn-ui/package.json +++ b/packages/shadcn-ui/package.json @@ -3,57 +3,22 @@ "version": "0.0.0", "type": "module", "private": true, + "exports": { + "./tailwind.config.mts": "./tailwind.config.mts", + "./globals.css": "./src/styles/globals.css", + "./postcss.config": "./postcss.config.mjs", + "./components": "./src/components/index.tsx", + "./components/*": "./src/components/*.tsx", + "./lib/*": "./src/lib/*.ts", + "./hooks/*": ["./src/hooks/*.tsx", "./src/hooks/*.ts"] + }, "scripts": { "lint": "biome lint --fix", "ui:add": "pnpm dlx shadcn@latest add" }, - "dependencies": { - "@hookform/resolvers": "^5.0.1", - "@radix-ui/react-accordion": "^1.2.8", - "@radix-ui/react-alert-dialog": "^1.1.11", - "@radix-ui/react-aspect-ratio": "^1.1.4", - "@radix-ui/react-avatar": "^1.1.7", - "@radix-ui/react-checkbox": "^1.2.3", - "@radix-ui/react-collapsible": "^1.1.8", - "@radix-ui/react-context-menu": "^2.2.12", - "@radix-ui/react-dialog": "^1.1.11", - "@radix-ui/react-dropdown-menu": "^2.1.12", - "@radix-ui/react-hover-card": "^1.1.11", - "@radix-ui/react-label": "^2.1.4", - "@radix-ui/react-menubar": "^1.1.12", - "@radix-ui/react-navigation-menu": "^1.2.10", - "@radix-ui/react-popover": "^1.1.11", - "@radix-ui/react-progress": "^1.1.4", - "@radix-ui/react-radio-group": "^1.3.4", - "@radix-ui/react-scroll-area": "^1.2.6", - "@radix-ui/react-select": "^2.2.2", - "@radix-ui/react-separator": "^1.1.4", - "@radix-ui/react-slider": "^1.3.2", - "@radix-ui/react-slot": "^1.2.0", - "@radix-ui/react-switch": "^1.2.2", - "@radix-ui/react-tabs": "^1.1.9", - "@radix-ui/react-toggle": "^1.1.6", - "@radix-ui/react-toggle-group": "^1.1.7", - "@radix-ui/react-tooltip": "^1.2.4", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.1.1", - "date-fns": "^4.1.0", - "embla-carousel-react": "^8.6.0", - "input-otp": "^1.4.2", - "lucide-react": "^0.503.0", - "next-themes": "^0.4.6", - "react": "^19.1.0", - "react-day-picker": "8.10.1", - "react-dom": "^19.1.0", - "react-hook-form": "^7.56.2", - "react-resizable-panels": "^3.0.1", - "recharts": "^2.15.3", - "sonner": "^2.0.3", - "tailwind-merge": "^3.2.0", - "tw-animate-css": "^1.2.8", - "vaul": "^1.1.2", - "zod": "^3.24.3" + "peerDependencies": { + "react": "^18 || ^19", + "react-dom": "^18 || ^19" }, "devDependencies": { "@biomejs/biome": "1.9.4", @@ -63,18 +28,61 @@ "@types/node": "^22.15.12", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.3", - "tailwindcss": "^4.1.5", + "postcss": "^8.5.3", "typescript": "^5.8.3" }, - "exports": { - "./globals.css": "./src/styles/globals.css", - "./postcss.config": "./postcss.config.mjs", - "./components": "./src/components/index.tsx", - "./components/*": "./src/components/*.tsx", - "./lib/*": "./src/lib/*.ts", - "./hooks/*": [ - "./src/hooks/*.tsx", - "./src/hooks/*.ts" - ] + "dependencies": { + "@hookform/resolvers": "^5.0.1", + "@radix-ui/react-accordion": "^1.2.10", + "@radix-ui/react-alert-dialog": "^1.1.13", + "@radix-ui/react-aspect-ratio": "^1.1.6", + "@radix-ui/react-avatar": "^1.1.9", + "@radix-ui/react-checkbox": "^1.3.1", + "@radix-ui/react-collapsible": "^1.1.10", + "@radix-ui/react-context-menu": "^2.2.14", + "@radix-ui/react-dialog": "^1.1.13", + "@radix-ui/react-dropdown-menu": "^2.1.14", + "@radix-ui/react-hover-card": "^1.1.13", + "@radix-ui/react-label": "^2.1.6", + "@radix-ui/react-menubar": "^1.1.14", + "@radix-ui/react-navigation-menu": "^1.2.12", + "@radix-ui/react-popover": "^1.1.13", + "@radix-ui/react-progress": "^1.1.6", + "@radix-ui/react-radio-group": "^1.3.6", + "@radix-ui/react-scroll-area": "^1.2.8", + "@radix-ui/react-select": "^2.2.4", + "@radix-ui/react-separator": "^1.1.6", + "@radix-ui/react-slider": "^1.3.4", + "@radix-ui/react-slot": "^1.2.2", + "@radix-ui/react-switch": "^1.2.4", + "@radix-ui/react-tabs": "^1.1.11", + "@radix-ui/react-toggle": "^1.1.8", + "@radix-ui/react-toggle-group": "^1.1.9", + "@radix-ui/react-tooltip": "^1.2.6", + "@tailwindcss/cli": "^4.1.5", + "add": "^2.0.6", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "date-fns": "^4.1.0", + "embla-carousel-react": "^8.6.0", + "framer-motion": "^12.4.7", + "input-otp": "^1.4.2", + "lucide-react": "^0.503.0", + "next-themes": "^0.4.6", + "pnpm": "^10.10.0", + "react": "^19.1.0", + "react-day-picker": "8.10.1", + "react-dom": "^19.1.0", + "react-hook-form": "^7.56.2", + "react-resizable-panels": "^3.0.1", + "recharts": "^2.15.3", + "sonner": "^2.0.3", + "tailwind-merge": "^3.2.0", + "tailwindcss": "^4.1.5", + "tailwindcss-animate": "^1.0.7", + "tw-animate-css": "^1.2.9", + "vaul": "^1.1.2", + "zod": "^3.24.4" } } diff --git a/packages/shadcn-ui/postcss.config.mjs b/packages/shadcn-ui/postcss.config.mjs index d2bc192d..79bcf135 100644 --- a/packages/shadcn-ui/postcss.config.mjs +++ b/packages/shadcn-ui/postcss.config.mjs @@ -1,8 +1,8 @@ /** @type {import('postcss-load-config').Config} */ -export default { +const config = { plugins: { - "postcss-import": {}, - tailwindcss: {}, - autoprefixer: {}, + "@tailwindcss/postcss": {}, }, }; + +export default config; diff --git a/packages/shadcn-ui/src/styles/globals.css b/packages/shadcn-ui/src/styles/globals.css index 1d7ebffa..0be43e2b 100644 --- a/packages/shadcn-ui/src/styles/globals.css +++ b/packages/shadcn-ui/src/styles/globals.css @@ -1,9 +1,52 @@ -@import "tailwindcss"; -@import "tw-animate-css"; +@import 'tailwindcss'; +@config "../../tailwind.config.mts"; + +@import 'tw-animate-css'; @custom-variant dark (&:is(.dark *)); +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + :root { + --radius: 0.625rem; --background: oklch(1 0 0); --foreground: oklch(0.145 0 0); --card: oklch(1 0 0); @@ -19,7 +62,6 @@ --accent: oklch(0.97 0 0); --accent-foreground: oklch(0.205 0 0); --destructive: oklch(0.577 0.245 27.325); - --destructive-foreground: oklch(0.577 0.245 27.325); --border: oklch(0.922 0 0); --input: oklch(0.922 0 0); --ring: oklch(0.708 0 0); @@ -28,7 +70,6 @@ --chart-3: oklch(0.398 0.07 227.392); --chart-4: oklch(0.828 0.189 84.429); --chart-5: oklch(0.769 0.188 70.08); - --radius: 0.625rem; --sidebar: oklch(0.985 0 0); --sidebar-foreground: oklch(0.145 0 0); --sidebar-primary: oklch(0.205 0 0); @@ -42,11 +83,11 @@ .dark { --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0); - --card: oklch(0.145 0 0); + --card: oklch(0.205 0 0); --card-foreground: oklch(0.985 0 0); - --popover: oklch(0.145 0 0); + --popover: oklch(0.205 0 0); --popover-foreground: oklch(0.985 0 0); - --primary: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0); --secondary: oklch(0.269 0 0); --secondary-foreground: oklch(0.985 0 0); @@ -54,10 +95,9 @@ --muted-foreground: oklch(0.708 0 0); --accent: oklch(0.269 0 0); --accent-foreground: oklch(0.985 0 0); - --destructive: oklch(0.396 0.141 25.723); - --destructive-foreground: oklch(0.637 0.237 25.331); - --border: oklch(0.269 0 0); - --input: oklch(0.269 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); --ring: oklch(0.556 0 0); --chart-1: oklch(0.488 0.243 264.376); --chart-2: oklch(0.696 0.17 162.48); @@ -70,47 +110,8 @@ --sidebar-primary-foreground: oklch(0.985 0 0); --sidebar-accent: oklch(0.269 0 0); --sidebar-accent-foreground: oklch(0.985 0 0); - --sidebar-border: oklch(0.269 0 0); - --sidebar-ring: oklch(0.439 0 0); -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-destructive-foreground: var(--destructive-foreground); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); } @layer base { @@ -120,4 +121,4 @@ body { @apply bg-background text-foreground; } -} +} \ No newline at end of file diff --git a/packages/shadcn-ui/tailwind.config.mts b/packages/shadcn-ui/tailwind.config.mts new file mode 100644 index 00000000..2724faf6 --- /dev/null +++ b/packages/shadcn-ui/tailwind.config.mts @@ -0,0 +1,9 @@ +import type { Config } from "tailwindcss"; + +const config = { + // this file is located in packages/ui, but it is being used by apps/web (and any future web apps). + // hence, the following paths: + content: ["app/**/*.{ts,tsx}", "../../packages/shadcn-ui/src/**/*.{ts,tsx}"], +} satisfies Config; + +export default config; diff --git a/packages/shadcn-ui/tsconfig.json b/packages/shadcn-ui/tsconfig.json index a313a098..7a27ed67 100644 --- a/packages/shadcn-ui/tsconfig.json +++ b/packages/shadcn-ui/tsconfig.json @@ -6,6 +6,6 @@ "@repo/shadcn-ui/*": ["./src/*"] } }, - "include": ["."], + "include": ["src"], "exclude": ["node_modules", "dist"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37985373..1ff58ea6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -204,9 +204,6 @@ importers: '@repo/shadcn-ui': specifier: workspace:* version: link:../../packages/shadcn-ui - '@tailwindcss/vite': - specifier: ^4.1.5 - version: 4.1.5(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)) '@tanstack/react-query': specifier: ^5.74.11 version: 5.75.4(react@19.1.0) @@ -240,12 +237,18 @@ importers: react-secure-storage: specifier: ^1.3.2 version: 1.3.2 + tailwind-merge: + specifier: ^3.2.0 + version: 3.2.0 tailwindcss: - specifier: ^4.1.5 - version: 4.1.5 + specifier: ^4.1.6 + version: 4.1.6 tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@4.1.5) + version: 1.0.7(tailwindcss@4.1.6) + tw-animate-css: + specifier: ^1.2.9 + version: 1.2.9 vite-plugin-html: specifier: ^3.2.2 version: 3.2.2(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)) @@ -259,6 +262,12 @@ importers: '@repo/typescript-config': specifier: workspace:* version: link:../../packages/typescript-config + '@tailwindcss/postcss': + specifier: ^4.1.5 + version: 4.1.5 + '@tailwindcss/vite': + specifier: ^4.1.6 + version: 4.1.6(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1)) '@tanstack/react-query-devtools': specifier: ^5.74.11 version: 5.75.4(@tanstack/react-query@5.75.4(react@19.1.0))(react@19.1.0) @@ -420,7 +429,7 @@ importers: version: 0.0.4 tailwindcss: specifier: ^4.1.5 - version: 4.1.5 + version: 4.1.6 tsup: specifier: ^8.4.0 version: 8.4.0(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.4)(typescript@5.8.3)(yaml@2.7.1) @@ -452,83 +461,89 @@ importers: specifier: ^5.0.1 version: 5.0.1(react-hook-form@7.56.2(react@19.1.0)) '@radix-ui/react-accordion': - specifier: ^1.2.8 + specifier: ^1.2.10 version: 1.2.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-alert-dialog': - specifier: ^1.1.11 + specifier: ^1.1.13 version: 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-aspect-ratio': - specifier: ^1.1.4 + specifier: ^1.1.6 version: 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-avatar': - specifier: ^1.1.7 + specifier: ^1.1.9 version: 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-checkbox': - specifier: ^1.2.3 + specifier: ^1.3.1 version: 1.3.1(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-collapsible': - specifier: ^1.1.8 + specifier: ^1.1.10 version: 1.1.10(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-context-menu': - specifier: ^2.2.12 + specifier: ^2.2.14 version: 2.2.14(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dialog': - specifier: ^1.1.11 + specifier: ^1.1.13 version: 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-dropdown-menu': - specifier: ^2.1.12 + specifier: ^2.1.14 version: 2.1.14(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-hover-card': - specifier: ^1.1.11 + specifier: ^1.1.13 version: 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-label': - specifier: ^2.1.4 + specifier: ^2.1.6 version: 2.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-menubar': - specifier: ^1.1.12 + specifier: ^1.1.14 version: 1.1.14(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-navigation-menu': - specifier: ^1.2.10 + specifier: ^1.2.12 version: 1.2.12(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-popover': - specifier: ^1.1.11 + specifier: ^1.1.13 version: 1.1.13(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-progress': - specifier: ^1.1.4 + specifier: ^1.1.6 version: 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-radio-group': - specifier: ^1.3.4 + specifier: ^1.3.6 version: 1.3.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-scroll-area': - specifier: ^1.2.6 + specifier: ^1.2.8 version: 1.2.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-select': - specifier: ^2.2.2 + specifier: ^2.2.4 version: 2.2.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-separator': - specifier: ^1.1.4 + specifier: ^1.1.6 version: 1.1.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slider': - specifier: ^1.3.2 + specifier: ^1.3.4 version: 1.3.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-slot': - specifier: ^1.2.0 + specifier: ^1.2.2 version: 1.2.2(@types/react@19.1.3)(react@19.1.0) '@radix-ui/react-switch': - specifier: ^1.2.2 + specifier: ^1.2.4 version: 1.2.4(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tabs': - specifier: ^1.1.9 + specifier: ^1.1.11 version: 1.1.11(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toggle': - specifier: ^1.1.6 + specifier: ^1.1.8 version: 1.1.8(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-toggle-group': - specifier: ^1.1.7 + specifier: ^1.1.9 version: 1.1.9(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@radix-ui/react-tooltip': - specifier: ^1.2.4 + specifier: ^1.2.6 version: 1.2.6(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tailwindcss/cli': + specifier: ^4.1.5 + version: 4.1.5 + add: + specifier: ^2.0.6 + version: 2.0.6 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -544,6 +559,9 @@ importers: embla-carousel-react: specifier: ^8.6.0 version: 8.6.0(react@19.1.0) + framer-motion: + specifier: ^12.4.7 + version: 12.10.5(@emotion/is-prop-valid@1.3.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) input-otp: specifier: ^1.4.2 version: 1.4.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -553,6 +571,9 @@ importers: next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + pnpm: + specifier: ^10.10.0 + version: 10.10.0 react: specifier: ^19.1.0 version: 19.1.0 @@ -577,14 +598,20 @@ importers: tailwind-merge: specifier: ^3.2.0 version: 3.2.0 + tailwindcss: + specifier: ^4.1.5 + version: 4.1.6 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@4.1.6) tw-animate-css: - specifier: ^1.2.8 + specifier: ^1.2.9 version: 1.2.9 vaul: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@19.1.3(@types/react@19.1.3))(@types/react@19.1.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) zod: - specifier: ^3.24.3 + specifier: ^3.24.4 version: 3.24.4 devDependencies: '@biomejs/biome': @@ -608,9 +635,9 @@ importers: '@types/react-dom': specifier: ^19.1.3 version: 19.1.3(@types/react@19.1.3) - tailwindcss: - specifier: ^4.1.5 - version: 4.1.5 + postcss: + specifier: ^8.5.3 + version: 8.5.3 typescript: specifier: ^5.8.3 version: 5.8.3 @@ -1236,6 +1263,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2177,63 +2208,124 @@ packages: '@standard-schema/utils@0.3.0': resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + '@tailwindcss/cli@4.1.5': + resolution: {integrity: sha512-Kr567rDwDjY1VUnfqh5/+DCpRf4B8lPs5O9flP4kri7n4AM2aubrIxGSh5GN8s+awUKw/U4+6kNlEnZbBNfUeg==} + hasBin: true + '@tailwindcss/node@4.1.5': resolution: {integrity: sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==} + '@tailwindcss/node@4.1.6': + resolution: {integrity: sha512-ed6zQbgmKsjsVvodAS1q1Ld2BolEuxJOSyyNc+vhkjdmfNUDCmQnlXBfQkHrlzNmslxHsQU/bFmzcEbv4xXsLg==} + '@tailwindcss/oxide-android-arm64@4.1.5': resolution: {integrity: sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==} engines: {node: '>= 10'} cpu: [arm64] os: [android] + '@tailwindcss/oxide-android-arm64@4.1.6': + resolution: {integrity: sha512-VHwwPiwXtdIvOvqT/0/FLH/pizTVu78FOnI9jQo64kSAikFSZT7K4pjyzoDpSMaveJTGyAKvDjuhxJxKfmvjiQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + '@tailwindcss/oxide-darwin-arm64@4.1.5': resolution: {integrity: sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tailwindcss/oxide-darwin-arm64@4.1.6': + resolution: {integrity: sha512-weINOCcqv1HVBIGptNrk7c6lWgSFFiQMcCpKM4tnVi5x8OY2v1FrV76jwLukfT6pL1hyajc06tyVmZFYXoxvhQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.1.5': resolution: {integrity: sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tailwindcss/oxide-darwin-x64@4.1.6': + resolution: {integrity: sha512-3FzekhHG0ww1zQjQ1lPoq0wPrAIVXAbUkWdWM8u5BnYFZgb9ja5ejBqyTgjpo5mfy0hFOoMnMuVDI+7CXhXZaQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@tailwindcss/oxide-freebsd-x64@4.1.5': resolution: {integrity: sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] + '@tailwindcss/oxide-freebsd-x64@4.1.6': + resolution: {integrity: sha512-4m5F5lpkBZhVQJq53oe5XgJ+aFYWdrgkMwViHjRsES3KEu2m1udR21B1I77RUqie0ZYNscFzY1v9aDssMBZ/1w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': resolution: {integrity: sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + resolution: {integrity: sha512-qU0rHnA9P/ZoaDKouU1oGPxPWzDKtIfX7eOGi5jOWJKdxieUJdVV+CxWZOpDWlYTd4N3sFQvcnVLJWJ1cLP5TA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': resolution: {integrity: sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + resolution: {integrity: sha512-jXy3TSTrbfgyd3UxPQeXC3wm8DAgmigzar99Km9Sf6L2OFfn/k+u3VqmpgHQw5QNfCpPe43em6Q7V76Wx7ogIQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.1.5': resolution: {integrity: sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + resolution: {integrity: sha512-8kjivE5xW0qAQ9HX9reVFmZj3t+VmljDLVRJpVBEoTR+3bKMnvC7iLcoSGNIUJGOZy1mLVq7x/gerVg0T+IsYw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.1.5': resolution: {integrity: sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + resolution: {integrity: sha512-A4spQhwnWVpjWDLXnOW9PSinO2PTKJQNRmL/aIl2U/O+RARls8doDfs6R41+DAXK0ccacvRyDpR46aVQJJCoCg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.1.5': resolution: {integrity: sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + resolution: {integrity: sha512-YRee+6ZqdzgiQAHVSLfl3RYmqeeaWVCk796MhXhLQu2kJu2COHBkqlqsqKYx3p8Hmk5pGCQd2jTAoMWWFeyG2A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tailwindcss/oxide-wasm32-wasi@4.1.5': resolution: {integrity: sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==} engines: {node: '>=14.0.0'} @@ -2246,27 +2338,55 @@ packages: - '@emnapi/wasi-threads' - tslib + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + resolution: {integrity: sha512-qAp4ooTYrBQ5pk5jgg54/U1rCJ/9FLYOkkQ/nTE+bVMseMfB6O7J8zb19YTpWuu4UdfRf5zzOrNKfl6T64MNrQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': resolution: {integrity: sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + resolution: {integrity: sha512-nqpDWk0Xr8ELO/nfRUDjk1pc9wDJ3ObeDdNMHLaymc4PJBWj11gdPCWZFKSK2AVKjJQC7J2EfmSmf47GN7OuLg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.1.5': resolution: {integrity: sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + resolution: {integrity: sha512-5k9xF33xkfKpo9wCvYcegQ21VwIBU1/qEbYlVukfEIyQbEA47uK8AAwS7NVjNE3vHzcmxMYwd0l6L4pPjjm1rQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@tailwindcss/oxide@4.1.5': resolution: {integrity: sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==} engines: {node: '>= 10'} + '@tailwindcss/oxide@4.1.6': + resolution: {integrity: sha512-0bpEBQiGx+227fW4G0fLQ8vuvyy5rsB1YIYNapTq3aRsJ9taF3f5cCaovDjN5pUGKKzcpMrZst/mhNaKAPOHOA==} + engines: {node: '>= 10'} + '@tailwindcss/postcss@4.1.5': resolution: {integrity: sha512-5lAC2/pzuyfhsFgk6I58HcNy6vPK3dV/PoPxSDuOTVbDvCddYHzHiJZZInGIY0venvzzfrTEUAXJFULAfFmObg==} - '@tailwindcss/vite@4.1.5': - resolution: {integrity: sha512-FE1stRoqdHSb7RxesMfCXE8icwI1W6zGE/512ae3ZDrpkQYTTYeSyUJPRCjZd8CwVAhpDUbi1YR8pcZioFJQ/w==} + '@tailwindcss/vite@4.1.6': + resolution: {integrity: sha512-zjtqjDeY1w3g2beYQtrMAf51n5G7o+UwmyOjtsDMP7t6XyoRMOidcoKP32ps7AkNOHIXEOK0bhIC05dj8oJp4w==} peerDependencies: vite: ^5.2.0 || ^6 @@ -2516,6 +2636,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + add@2.0.6: + resolution: {integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==} + agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -2784,6 +2907,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -3411,6 +3538,20 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + framer-motion@12.10.5: + resolution: {integrity: sha512-p6VF1YkwWvNDFzg5IQ5lqPx11Td4TQ6LqDnshV7sWj0Nrp4dwz2/aEzmgh9WA9ridcTIJ625Fr0oiuhgqIoFwQ==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -4198,6 +4339,9 @@ packages: resolution: {integrity: sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==} engines: {node: '>=12'} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -4289,6 +4433,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -4298,6 +4446,11 @@ packages: engines: {node: '>=10'} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + module-alias@2.2.3: resolution: {integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==} @@ -4307,6 +4460,16 @@ packages: moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + motion-dom@12.10.5: + resolution: {integrity: sha512-F7XKmhxXEH/y3aWWf0N2w69wNSN+6PcJ1seqR1WolClmXpPhj+xwzs9j5CpsMFzeHR1D7irl3JcWMToPRwX6Hg==} + + motion-utils@12.9.4: + resolution: {integrity: sha512-BW3I65zeM76CMsfh3kHid9ansEJk9Qvl+K5cu4DVHKGsI52n76OJ4z2CUJUV+Mn3uEP9k1JJA3tClG0ggSrRcg==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -4609,6 +4772,11 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} + pnpm@10.10.0: + resolution: {integrity: sha512-1hXbJG/nDyXc/qbY1z3ueCziPiJF48T2+Igkn7VoFJMYY33Kc8LFyO8qTKDVZX+5VnGIv6tH9WbR7mzph4FcOQ==} + engines: {node: '>=18.12'} + hasBin: true + postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -5265,6 +5433,9 @@ packages: tailwindcss@4.1.5: resolution: {integrity: sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==} + tailwindcss@4.1.6: + resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -5273,6 +5444,10 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + terser@5.39.0: resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} engines: {node: '>=10'} @@ -5750,6 +5925,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -6370,6 +6549,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -6655,7 +6838,6 @@ snapshots: '@parcel/watcher-win32-arm64': 2.5.1 '@parcel/watcher-win32-ia32': 2.5.1 '@parcel/watcher-win32-x64': 2.5.1 - optional: true '@pkgjs/parseargs@0.11.0': optional: true @@ -7400,6 +7582,16 @@ snapshots: '@standard-schema/utils@0.3.0': {} + '@tailwindcss/cli@4.1.5': + dependencies: + '@parcel/watcher': 2.5.1 + '@tailwindcss/node': 4.1.5 + '@tailwindcss/oxide': 4.1.5 + enhanced-resolve: 5.18.1 + mri: 1.2.0 + picocolors: 1.1.1 + tailwindcss: 4.1.5 + '@tailwindcss/node@4.1.5': dependencies: enhanced-resolve: 5.18.1 @@ -7407,42 +7599,88 @@ snapshots: lightningcss: 1.29.2 tailwindcss: 4.1.5 + '@tailwindcss/node@4.1.6': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.29.2 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.6 + '@tailwindcss/oxide-android-arm64@4.1.5': optional: true + '@tailwindcss/oxide-android-arm64@4.1.6': + optional: true + '@tailwindcss/oxide-darwin-arm64@4.1.5': optional: true + '@tailwindcss/oxide-darwin-arm64@4.1.6': + optional: true + '@tailwindcss/oxide-darwin-x64@4.1.5': optional: true + '@tailwindcss/oxide-darwin-x64@4.1.6': + optional: true + '@tailwindcss/oxide-freebsd-x64@4.1.5': optional: true + '@tailwindcss/oxide-freebsd-x64@4.1.6': + optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5': optional: true + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.6': + optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.1.5': optional: true + '@tailwindcss/oxide-linux-arm64-gnu@4.1.6': + optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.1.5': optional: true + '@tailwindcss/oxide-linux-arm64-musl@4.1.6': + optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.1.5': optional: true + '@tailwindcss/oxide-linux-x64-gnu@4.1.6': + optional: true + '@tailwindcss/oxide-linux-x64-musl@4.1.5': optional: true + '@tailwindcss/oxide-linux-x64-musl@4.1.6': + optional: true + '@tailwindcss/oxide-wasm32-wasi@4.1.5': optional: true + '@tailwindcss/oxide-wasm32-wasi@4.1.6': + optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.1.5': optional: true + '@tailwindcss/oxide-win32-arm64-msvc@4.1.6': + optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.1.5': optional: true + '@tailwindcss/oxide-win32-x64-msvc@4.1.6': + optional: true + '@tailwindcss/oxide@4.1.5': optionalDependencies: '@tailwindcss/oxide-android-arm64': 4.1.5 @@ -7458,6 +7696,24 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.5 '@tailwindcss/oxide-win32-x64-msvc': 4.1.5 + '@tailwindcss/oxide@4.1.6': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-arm64': 4.1.6 + '@tailwindcss/oxide-darwin-x64': 4.1.6 + '@tailwindcss/oxide-freebsd-x64': 4.1.6 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.6 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.6 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.6 + '@tailwindcss/oxide-linux-x64-musl': 4.1.6 + '@tailwindcss/oxide-wasm32-wasi': 4.1.6 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 + '@tailwindcss/postcss@4.1.5': dependencies: '@alloc/quick-lru': 5.2.0 @@ -7466,11 +7722,11 @@ snapshots: postcss: 8.5.3 tailwindcss: 4.1.5 - '@tailwindcss/vite@4.1.5(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))': + '@tailwindcss/vite@4.1.6(vite@6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1))': dependencies: - '@tailwindcss/node': 4.1.5 - '@tailwindcss/oxide': 4.1.5 - tailwindcss: 4.1.5 + '@tailwindcss/node': 4.1.6 + '@tailwindcss/oxide': 4.1.6 + tailwindcss: 4.1.6 vite: 6.3.5(@types/node@22.15.12)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.62.0)(terser@5.39.0)(tsx@4.19.4)(yaml@2.7.1) '@tanstack/query-core@5.75.4': {} @@ -7777,6 +8033,8 @@ snapshots: acorn@8.14.1: {} + add@2.0.6: {} + agent-base@6.0.2: dependencies: debug: 4.4.0 @@ -8105,6 +8363,8 @@ snapshots: chownr@2.0.0: {} + chownr@3.0.0: {} + ci-info@3.9.0: {} cjs-module-lexer@1.4.3: {} @@ -8382,8 +8642,7 @@ snapshots: destroy@1.2.0: {} - detect-libc@1.0.3: - optional: true + detect-libc@1.0.3: {} detect-libc@2.0.4: {} @@ -8728,6 +8987,16 @@ snapshots: fraction.js@4.3.7: {} + framer-motion@12.10.5(@emotion/is-prop-valid@1.3.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + motion-dom: 12.10.5 + motion-utils: 12.9.4 + tslib: 2.8.1 + optionalDependencies: + '@emotion/is-prop-valid': 1.3.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + fresh@0.5.2: {} fs-extra@10.1.0: @@ -9703,6 +9972,10 @@ snapshots: luxon@3.6.1: {} + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + make-dir@2.1.0: dependencies: pify: 4.0.1 @@ -9777,12 +10050,18 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + mkdirp@0.5.6: dependencies: minimist: 1.2.8 mkdirp@1.0.4: {} + mkdirp@3.0.1: {} + module-alias@2.2.3: {} moment-timezone@0.5.48: @@ -9791,6 +10070,14 @@ snapshots: moment@2.30.1: {} + motion-dom@12.10.5: + dependencies: + motion-utils: 12.9.4 + + motion-utils@12.9.4: {} + + mri@1.2.0: {} + ms@2.0.0: {} ms@2.1.3: {} @@ -9855,8 +10142,7 @@ snapshots: node-addon-api@5.1.0: {} - node-addon-api@7.1.1: - optional: true + node-addon-api@7.1.1: {} node-fetch@2.7.0: dependencies: @@ -10097,6 +10383,8 @@ snapshots: dependencies: find-up: 4.1.0 + pnpm@10.10.0: {} + postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.12)(typescript@5.8.3)): dependencies: lilconfig: 2.1.0 @@ -10744,12 +11032,14 @@ snapshots: tailwind-merge@3.2.0: {} - tailwindcss-animate@1.0.7(tailwindcss@4.1.5): + tailwindcss-animate@1.0.7(tailwindcss@4.1.6): dependencies: - tailwindcss: 4.1.5 + tailwindcss: 4.1.6 tailwindcss@4.1.5: {} + tailwindcss@4.1.6: {} + tapable@2.2.1: {} tar@6.2.1: @@ -10761,6 +11051,15 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 @@ -11249,6 +11548,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@1.10.2: {} yaml@2.7.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b0580448..b3b67df0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,6 +6,7 @@ packages: onlyBuiltDependencies: - '@biomejs/biome' - '@parcel/watcher' + - '@tailwindcss/oxide' - bcrypt - core-js-pure