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 => (
-
-);
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