From 18965de46abe6fd1f0e1e0d95e1b81a35aebf124 Mon Sep 17 00:00:00 2001 From: Tyler <26290074+tylersayshi@users.noreply.github.com> Date: Sun, 26 Jan 2025 18:28:25 -0800 Subject: [PATCH] refactor(tailwind): bump all projects to v4 with vite tailwind plugin (#1189) docs: https://tailwindcss.com/blog/tailwindcss-v4 swapped to vite plugin to improve dev perf as well per the rec from the blog post. --------- Co-authored-by: Tyler <26290074+thegitduck@users.noreply.github.com> --- .../waku-project/src/pages/_layout.tsx | 4 +- .../packages/waku-project/src/styles.css | 1 - examples/01_template/package.json | 4 +- examples/01_template/postcss.config.js | 7 - .../01_template/src/components/counter.tsx | 4 +- examples/01_template/src/styles.css | 7 +- examples/01_template/tailwind.config.js | 4 - examples/01_template/vite.config.ts | 5 + examples/02_template_js/package.json | 4 +- examples/02_template_js/postcss.config.js | 7 - .../02_template_js/src/components/counter.jsx | 4 +- examples/02_template_js/src/styles.css | 7 +- examples/02_template_js/tailwind.config.js | 4 - examples/02_template_js/vite.config.ts | 5 + examples/03_demo/package.json | 3 +- examples/03_demo/postcss.config.js | 7 - examples/03_demo/src/pages/[slug].tsx | 6 +- examples/03_demo/src/pages/index.tsx | 4 +- examples/03_demo/src/styles.css | 16 +- examples/03_demo/tailwind.config.js | 10 - examples/03_demo/vite.config.ts | 5 + examples/05_compiler/package.json | 4 +- examples/05_compiler/postcss.config.js | 7 - .../05_compiler/src/components/counter.tsx | 4 +- examples/05_compiler/src/styles.css | 7 +- examples/05_compiler/tailwind.config.js | 4 - examples/05_compiler/vite.config.ts | 5 + examples/06_form-demo/package.json | 4 +- examples/06_form-demo/postcss.config.js | 7 - examples/06_form-demo/src/components/Form.tsx | 4 +- examples/06_form-demo/src/styles.css | 16 +- examples/06_form-demo/tailwind.config.js | 10 - examples/06_form-demo/vite.config.ts | 5 + examples/12_nossr/package.json | 4 +- examples/12_nossr/postcss.config.js | 7 - examples/12_nossr/src/components/counter.tsx | 4 +- examples/12_nossr/src/styles.css | 7 +- examples/12_nossr/tailwind.config.js | 4 - examples/12_nossr/vite.config.ts | 5 + examples/12_nossr/waku.config.ts | 10 - examples/42_react-tweet/package.json | 3 +- examples/42_react-tweet/postcss.config.js | 7 - examples/42_react-tweet/src/styles.css | 7 +- examples/42_react-tweet/tailwind.config.js | 4 - examples/42_react-tweet/vite.config.ts | 5 + .../src/lib/middleware/dev-server-impl.ts | 4 + packages/website/package.json | 4 +- packages/website/postcss.config.js | 8 - packages/website/src/components/fade.tsx | 6 +- packages/website/src/components/logo.tsx | 2 +- packages/website/src/components/mdx.tsx | 8 +- .../website/src/components/navigation.tsx | 16 +- packages/website/src/pages/blog/[slug].tsx | 2 +- packages/website/src/pages/blog/index.tsx | 4 +- packages/website/src/pages/index.tsx | 2 +- packages/website/src/styles.css | 110 ++-- packages/website/vite.config.ts | 7 +- pnpm-lock.yaml | 611 ++++++++++-------- 58 files changed, 526 insertions(+), 520 deletions(-) delete mode 100644 e2e/fixtures/monorepo/packages/waku-project/src/styles.css delete mode 100644 examples/01_template/postcss.config.js delete mode 100644 examples/01_template/tailwind.config.js create mode 100644 examples/01_template/vite.config.ts delete mode 100644 examples/02_template_js/postcss.config.js delete mode 100644 examples/02_template_js/tailwind.config.js create mode 100644 examples/02_template_js/vite.config.ts delete mode 100644 examples/03_demo/postcss.config.js delete mode 100644 examples/03_demo/tailwind.config.js create mode 100644 examples/03_demo/vite.config.ts delete mode 100644 examples/05_compiler/postcss.config.js delete mode 100644 examples/05_compiler/tailwind.config.js create mode 100644 examples/05_compiler/vite.config.ts delete mode 100644 examples/06_form-demo/postcss.config.js delete mode 100644 examples/06_form-demo/tailwind.config.js create mode 100644 examples/06_form-demo/vite.config.ts delete mode 100644 examples/12_nossr/postcss.config.js delete mode 100644 examples/12_nossr/tailwind.config.js create mode 100644 examples/12_nossr/vite.config.ts delete mode 100644 examples/12_nossr/waku.config.ts delete mode 100644 examples/42_react-tweet/postcss.config.js delete mode 100644 examples/42_react-tweet/tailwind.config.js create mode 100644 examples/42_react-tweet/vite.config.ts delete mode 100644 packages/website/postcss.config.js diff --git a/e2e/fixtures/monorepo/packages/waku-project/src/pages/_layout.tsx b/e2e/fixtures/monorepo/packages/waku-project/src/pages/_layout.tsx index f93c96c74..259c76d8d 100644 --- a/e2e/fixtures/monorepo/packages/waku-project/src/pages/_layout.tsx +++ b/e2e/fixtures/monorepo/packages/waku-project/src/pages/_layout.tsx @@ -1,5 +1,3 @@ -import '../styles.css'; - import type { ReactNode } from 'react'; import { Header } from '../components/header'; @@ -11,7 +9,7 @@ export default async function RootLayout({ children }: RootLayoutProps) { const data = await getData(); return ( -
+
diff --git a/e2e/fixtures/monorepo/packages/waku-project/src/styles.css b/e2e/fixtures/monorepo/packages/waku-project/src/styles.css deleted file mode 100644 index fd092867f..000000000 --- a/e2e/fixtures/monorepo/packages/waku-project/src/styles.css +++ /dev/null @@ -1 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); diff --git a/examples/01_template/package.json b/examples/01_template/package.json index 428132b58..fb63737fc 100644 --- a/examples/01_template/package.json +++ b/examples/01_template/package.json @@ -15,10 +15,10 @@ "waku": "0.21.17" }, "devDependencies": { + "@tailwindcss/vite": "4.0.0", "@types/react": "19.0.8", "@types/react-dom": "19.0.3", - "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17", + "tailwindcss": "4.0.0", "typescript": "5.7.3" } } diff --git a/examples/01_template/postcss.config.js b/examples/01_template/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/01_template/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/01_template/src/components/counter.tsx b/examples/01_template/src/components/counter.tsx index c5b5e13a3..0e540b8bb 100644 --- a/examples/01_template/src/components/counter.tsx +++ b/examples/01_template/src/components/counter.tsx @@ -8,11 +8,11 @@ export const Counter = () => { const handleIncrement = () => setCount((c) => c + 1); return ( -
+
Count: {count}
diff --git a/examples/01_template/src/styles.css b/examples/01_template/src/styles.css index 4cb5445ab..f1d3c37c5 100644 --- a/examples/01_template/src/styles.css +++ b/examples/01_template/src/styles.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import 'tailwindcss'; diff --git a/examples/01_template/tailwind.config.js b/examples/01_template/tailwind.config.js deleted file mode 100644 index df5c92956..000000000 --- a/examples/01_template/tailwind.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], -}; diff --git a/examples/01_template/vite.config.ts b/examples/01_template/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/01_template/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/examples/02_template_js/package.json b/examples/02_template_js/package.json index 720e7bda8..38973c971 100644 --- a/examples/02_template_js/package.json +++ b/examples/02_template_js/package.json @@ -15,7 +15,7 @@ "waku": "0.21.17" }, "devDependencies": { - "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17" + "@tailwindcss/vite": "4.0.0", + "tailwindcss": "4.0.0" } } diff --git a/examples/02_template_js/postcss.config.js b/examples/02_template_js/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/02_template_js/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/02_template_js/src/components/counter.jsx b/examples/02_template_js/src/components/counter.jsx index c5b5e13a3..0e540b8bb 100644 --- a/examples/02_template_js/src/components/counter.jsx +++ b/examples/02_template_js/src/components/counter.jsx @@ -8,11 +8,11 @@ export const Counter = () => { const handleIncrement = () => setCount((c) => c + 1); return ( -
+
Count: {count}
diff --git a/examples/02_template_js/src/styles.css b/examples/02_template_js/src/styles.css index 4cb5445ab..f1d3c37c5 100644 --- a/examples/02_template_js/src/styles.css +++ b/examples/02_template_js/src/styles.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import 'tailwindcss'; diff --git a/examples/02_template_js/tailwind.config.js b/examples/02_template_js/tailwind.config.js deleted file mode 100644 index df5c92956..000000000 --- a/examples/02_template_js/tailwind.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], -}; diff --git a/examples/02_template_js/vite.config.ts b/examples/02_template_js/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/02_template_js/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/examples/03_demo/package.json b/examples/03_demo/package.json index c7d920e0d..a33710adf 100644 --- a/examples/03_demo/package.json +++ b/examples/03_demo/package.json @@ -9,6 +9,7 @@ "start": "waku start" }, "dependencies": { + "@tailwindcss/vite": "4.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-server-dom-webpack": "19.0.0", @@ -18,7 +19,7 @@ "@types/react": "19.0.8", "@types/react-dom": "19.0.3", "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17", + "tailwindcss": "4.0.0", "typescript": "5.7.3" } } diff --git a/examples/03_demo/postcss.config.js b/examples/03_demo/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/03_demo/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/03_demo/src/pages/[slug].tsx b/examples/03_demo/src/pages/[slug].tsx index b8213fc4c..073459b75 100644 --- a/examples/03_demo/src/pages/[slug].tsx +++ b/examples/03_demo/src/pages/[slug].tsx @@ -17,7 +17,7 @@ export default async function PokemonPage({ slug }: PageProps<'/[slug]'>) { <> {`Waku ${pokemon.name.english}`}
-
+
    {pokemon.type.map((type: string) => ( @@ -34,7 +34,7 @@ export default async function PokemonPage({ slug }: PageProps<'/[slug]'>) { {pokemon.slug}
    {pokemon.name.english} @@ -48,7 +48,7 @@ export default async function PokemonPage({ slug }: PageProps<'/[slug]'>) { {stats.map(([stat, value]: any) => (
  • {stat}: {value}
  • diff --git a/examples/03_demo/src/pages/index.tsx b/examples/03_demo/src/pages/index.tsx index 495e28ea5..bf65fd75e 100644 --- a/examples/03_demo/src/pages/index.tsx +++ b/examples/03_demo/src/pages/index.tsx @@ -18,12 +18,12 @@ export default async function HomePage() { className="whitespace-nowrap text-xs font-bold hover:underline sm:text-base" >{`SELECT * FROM pokemon ORDER BY RANDOM() LIMIT 9`}
    -
      +
        {rows.map((row) => (
      • { const handleIncrement = () => setCount((c) => c + 1); return ( -
        +
        Count: {count}
        diff --git a/examples/05_compiler/src/styles.css b/examples/05_compiler/src/styles.css index 4cb5445ab..f1d3c37c5 100644 --- a/examples/05_compiler/src/styles.css +++ b/examples/05_compiler/src/styles.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import 'tailwindcss'; diff --git a/examples/05_compiler/tailwind.config.js b/examples/05_compiler/tailwind.config.js deleted file mode 100644 index df5c92956..000000000 --- a/examples/05_compiler/tailwind.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], -}; diff --git a/examples/05_compiler/vite.config.ts b/examples/05_compiler/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/05_compiler/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/examples/06_form-demo/package.json b/examples/06_form-demo/package.json index 8d21174d6..bb518f7da 100644 --- a/examples/06_form-demo/package.json +++ b/examples/06_form-demo/package.json @@ -9,6 +9,7 @@ "start": "waku start" }, "dependencies": { + "@tailwindcss/vite": "4.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-server-dom-webpack": "19.0.0", @@ -17,8 +18,7 @@ "devDependencies": { "@types/react": "19.0.8", "@types/react-dom": "19.0.3", - "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17", + "tailwindcss": "4.0.0", "typescript": "5.7.3" } } diff --git a/examples/06_form-demo/postcss.config.js b/examples/06_form-demo/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/06_form-demo/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/06_form-demo/src/components/Form.tsx b/examples/06_form-demo/src/components/Form.tsx index ea1e97ee0..26dd94a31 100644 --- a/examples/06_form-demo/src/components/Form.tsx +++ b/examples/06_form-demo/src/components/Form.tsx @@ -33,7 +33,7 @@ export const Form = ({
@@ -42,7 +42,7 @@ export const Form = ({ type="email" name="email" required - className="invalid:border-red-500 rounded border px-2 py-1" + className="invalid:border-red-500 rounded-sm border px-2 py-1" />
diff --git a/examples/06_form-demo/src/styles.css b/examples/06_form-demo/src/styles.css index 06dc50147..2d81b7941 100644 --- a/examples/06_form-demo/src/styles.css +++ b/examples/06_form-demo/src/styles.css @@ -1,5 +1,11 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@import url('https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@400;700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import url('https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@400;700&display=swap') +layer(base); +@import 'tailwindcss'; + +@theme { + --font-*: initial; + --font-nunito: 'Nunito', sans-serif; + --font-zen-maru-gothic: 'Zen Maru Gothic', serif; +} diff --git a/examples/06_form-demo/tailwind.config.js b/examples/06_form-demo/tailwind.config.js deleted file mode 100644 index b15775b26..000000000 --- a/examples/06_form-demo/tailwind.config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], - theme: { - fontFamily: { - nunito: ['"Nunito"', 'sans-serif'], - 'zen-maru-gothic': ['"Zen Maru Gothic"', 'serif'], - }, - }, -}; diff --git a/examples/06_form-demo/vite.config.ts b/examples/06_form-demo/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/06_form-demo/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/examples/12_nossr/package.json b/examples/12_nossr/package.json index 749fac887..47c4dd5c1 100644 --- a/examples/12_nossr/package.json +++ b/examples/12_nossr/package.json @@ -9,6 +9,7 @@ "start": "waku start" }, "dependencies": { + "@tailwindcss/vite": "4.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-server-dom-webpack": "19.0.0", @@ -17,8 +18,7 @@ "devDependencies": { "@types/react": "19.0.8", "@types/react-dom": "19.0.3", - "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17", + "tailwindcss": "4.0.0", "typescript": "5.7.3", "vite": "6.0.11" } diff --git a/examples/12_nossr/postcss.config.js b/examples/12_nossr/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/12_nossr/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/12_nossr/src/components/counter.tsx b/examples/12_nossr/src/components/counter.tsx index c5b5e13a3..0e540b8bb 100644 --- a/examples/12_nossr/src/components/counter.tsx +++ b/examples/12_nossr/src/components/counter.tsx @@ -8,11 +8,11 @@ export const Counter = () => { const handleIncrement = () => setCount((c) => c + 1); return ( -
+
Count: {count}
diff --git a/examples/12_nossr/src/styles.css b/examples/12_nossr/src/styles.css index 4cb5445ab..f1d3c37c5 100644 --- a/examples/12_nossr/src/styles.css +++ b/examples/12_nossr/src/styles.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import 'tailwindcss'; diff --git a/examples/12_nossr/tailwind.config.js b/examples/12_nossr/tailwind.config.js deleted file mode 100644 index df5c92956..000000000 --- a/examples/12_nossr/tailwind.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], -}; diff --git a/examples/12_nossr/vite.config.ts b/examples/12_nossr/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/12_nossr/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/examples/12_nossr/waku.config.ts b/examples/12_nossr/waku.config.ts deleted file mode 100644 index 4ab241bab..000000000 --- a/examples/12_nossr/waku.config.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { defineConfig } from 'waku/config'; - -export default defineConfig({ - middleware: () => [ - import('waku/middleware/context'), - import('waku/middleware/dev-server'), - import('waku/middleware/handler'), - import('waku/middleware/fallback'), - ], -}); diff --git a/examples/42_react-tweet/package.json b/examples/42_react-tweet/package.json index 97a7c337d..9a7c72de9 100644 --- a/examples/42_react-tweet/package.json +++ b/examples/42_react-tweet/package.json @@ -16,10 +16,11 @@ "waku": "0.21.17" }, "devDependencies": { + "@tailwindcss/vite": "4.0.0", "@types/react": "19.0.8", "@types/react-dom": "19.0.3", "autoprefixer": "10.4.20", - "tailwindcss": "3.4.17", + "tailwindcss": "4.0.0", "typescript": "5.7.3" } } diff --git a/examples/42_react-tweet/postcss.config.js b/examples/42_react-tweet/postcss.config.js deleted file mode 100644 index 709af5d83..000000000 --- a/examples/42_react-tweet/postcss.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/examples/42_react-tweet/src/styles.css b/examples/42_react-tweet/src/styles.css index 4cb5445ab..f1d3c37c5 100644 --- a/examples/42_react-tweet/src/styles.css +++ b/examples/42_react-tweet/src/styles.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap'); -@tailwind base; -@tailwind components; -@tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,700;1,400;1,700&display=swap') +layer(base); +@import 'tailwindcss'; diff --git a/examples/42_react-tweet/tailwind.config.js b/examples/42_react-tweet/tailwind.config.js deleted file mode 100644 index df5c92956..000000000 --- a/examples/42_react-tweet/tailwind.config.js +++ /dev/null @@ -1,4 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -export default { - content: ['./src/**/*.{js,jsx,ts,tsx}'], -}; diff --git a/examples/42_react-tweet/vite.config.ts b/examples/42_react-tweet/vite.config.ts new file mode 100644 index 000000000..f12e43851 --- /dev/null +++ b/examples/42_react-tweet/vite.config.ts @@ -0,0 +1,5 @@ +import tailwindcss from '@tailwindcss/vite'; + +export default { + plugins: [tailwindcss()], +}; diff --git a/packages/waku/src/lib/middleware/dev-server-impl.ts b/packages/waku/src/lib/middleware/dev-server-impl.ts index a28992a40..c0f9ab20f 100644 --- a/packages/waku/src/lib/middleware/dev-server-impl.ts +++ b/packages/waku/src/lib/middleware/dev-server-impl.ts @@ -392,6 +392,10 @@ export const devServer: Middleware = (options) => { const processedModules = new Set(); const processModule = async (modulePath: string) => { + if (modulePath.endsWith('.css')) { + // HACK not sure if this is correct + return; + } if (processedModules.has(modulePath)) { return; } diff --git a/packages/website/package.json b/packages/website/package.json index caf557ff1..872055389 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -21,13 +21,13 @@ "waku": "workspace:*" }, "devDependencies": { + "@tailwindcss/vite": "4.0.0", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", - "autoprefixer": "^10.4.20", "prettier": "^3.4.2", "prettier-plugin-tailwindcss": "^0.6.10", "shiki": "^2.1.0", - "tailwindcss": "^3.4.17", + "tailwindcss": "4.0.0", "typescript": "^5.7.3", "vite": "6.0.11" } diff --git a/packages/website/postcss.config.js b/packages/website/postcss.config.js deleted file mode 100644 index f73aad3c0..000000000 --- a/packages/website/postcss.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('postcss-load-config').Config} */ -export default { - plugins: { - 'tailwindcss/nesting': {}, - tailwindcss: {}, - autoprefixer: {}, - }, -}; diff --git a/packages/website/src/components/fade.tsx b/packages/website/src/components/fade.tsx index 4513c34d7..9de9000d8 100644 --- a/packages/website/src/components/fade.tsx +++ b/packages/website/src/components/fade.tsx @@ -19,9 +19,9 @@ export const Fade = ({ always = true }: FadeProps) => { always || hasScrolled ? 'opacity-100' : 'opacity-0', )} > -
-
-
+
+
+
); }; diff --git a/packages/website/src/components/logo.tsx b/packages/website/src/components/logo.tsx index 7e5c7a930..4942eb364 100644 --- a/packages/website/src/components/logo.tsx +++ b/packages/website/src/components/logo.tsx @@ -36,7 +36,7 @@ export const Logo = ({ className = '' }: LogoProps) => { {isMenuOpen && (
{ return ( {children} @@ -113,14 +113,14 @@ export const components = { return ( ); }, blockquote: ({ children, ...rest }: any) => { return ( -
+
-
+
{children}
diff --git a/packages/website/src/components/navigation.tsx b/packages/website/src/components/navigation.tsx index 5cdf69f66..382736667 100644 --- a/packages/website/src/components/navigation.tsx +++ b/packages/website/src/components/navigation.tsx @@ -26,12 +26,12 @@ export const Navigation = ({ isHome }: NavigationProps) => { ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0', isHome && !hasScrolled - ? 'xl:!pointer-events-none xl:!opacity-0' - : 'xl:!pointer-events-auto xl:!opacity-100', - 'fixed inset-0 z-90 flex-shrink-0 flex-col overflow-clip border-gray-800 bg-gray-950 transition-opacity duration-300 ease-in-out xl:pointer-events-auto xl:bottom-auto xl:left-0 xl:right-auto xl:top-0 xl:z-[9999] xl:h-screen xl:border-r 2xl:left-12 2xl:top-12 2xl:h-[calc(100vh-6rem)] 2xl:rounded-xl 2xl:border', + ? 'xl:pointer-events-none! xl:opacity-0!' + : 'xl:pointer-events-auto! xl:opacity-100!', + 'xl:z-9999 fixed inset-0 z-90 shrink-0 flex-col overflow-clip border-gray-800 bg-gray-950 transition-opacity duration-300 ease-in-out xl:pointer-events-auto xl:bottom-auto xl:left-0 xl:right-auto xl:top-0 xl:h-screen xl:border-r 2xl:left-12 2xl:top-12 2xl:h-[calc(100vh-6rem)] 2xl:rounded-xl 2xl:border', )} > -
+
{isHome ? (
-
+
{docs.map((link) => { return isHome ? ( @@ -68,7 +68,7 @@ export const Navigation = ({ isHome }: NavigationProps) => { ); })}
-
    +
      {links.map((link) => { return ; })} @@ -128,7 +128,7 @@ const DocLink = ({ link }: LinkProps) => { ); }; -const linkClassNames = `block text-balance font-simple text-[11px] font-bold uppercase tracking-[0.125em] text-gray-500 transition duration-300 ease-in-out hover:text-white p-0.5 xl:p-0 !whitespace-nowrap`; +const linkClassNames = `block text-balance font-simple text-[11px] font-bold uppercase tracking-[0.125em] text-gray-500 transition duration-300 ease-in-out hover:text-white p-0.5 xl:p-0 whitespace-nowrap!`; export const MenuLink = ({ link }: LinkProps) => { const setIsMenuOpen = useSetAtom(menuAtom); @@ -164,7 +164,7 @@ export const MenuLink = ({ link }: LinkProps) => { {link.icon && ( )} {link.label} diff --git a/packages/website/src/pages/blog/[slug].tsx b/packages/website/src/pages/blog/[slug].tsx index 25f99e5af..667c9f0e3 100644 --- a/packages/website/src/pages/blog/[slug].tsx +++ b/packages/website/src/pages/blog/[slug].tsx @@ -91,7 +91,7 @@ export default async function BlogArticlePage({ slug }: BlogArticlePageProps) { href="https://github.com/dai-shi/waku" target="_blank" rel="noreferrer" - className="text-shadow !inline-block -rotate-[5deg] transform whitespace-nowrap text-center font-serif text-3xl font-extrabold leading-none text-white transition-colors duration-300 ease-in-out hover:text-primary sm:mr-4 sm:text-6xl" + className="text-shadow inline-block! -rotate-[5deg] transform whitespace-nowrap text-center font-serif text-3xl font-extrabold leading-none text-white transition-colors duration-300 ease-in-out hover:text-primary sm:mr-4 sm:text-6xl" > star Waku on GitHub! diff --git a/packages/website/src/pages/blog/index.tsx b/packages/website/src/pages/blog/index.tsx index 727736c35..813dd6dcf 100644 --- a/packages/website/src/pages/blog/index.tsx +++ b/packages/website/src/pages/blog/index.tsx @@ -18,11 +18,11 @@ export default async function BlogIndexPage() { {articles.map((article) => (
    • {article.release && ( diff --git a/packages/website/src/pages/index.tsx b/packages/website/src/pages/index.tsx index 70f78156d..52b38351b 100644 --- a/packages/website/src/pages/index.tsx +++ b/packages/website/src/pages/index.tsx @@ -42,7 +42,7 @@ export default async function HomePage() { href="https://github.com/dai-shi/waku" target="_blank" rel="noreferrer" - className="text-shadow !inline-block -rotate-[5deg] transform whitespace-nowrap text-center font-serif text-3xl font-extrabold leading-none text-white transition-colors duration-300 ease-in-out hover:text-primary sm:mr-4 sm:text-6xl" + className="text-shadow inline-block! -rotate-[5deg] transform whitespace-nowrap text-center font-serif text-3xl font-extrabold leading-none text-white transition-colors duration-300 ease-in-out hover:text-primary sm:mr-4 sm:text-6xl" > star Waku on GitHub! diff --git a/packages/website/src/styles.css b/packages/website/src/styles.css index 0c2d72005..d529ffb85 100644 --- a/packages/website/src/styles.css +++ b/packages/website/src/styles.css @@ -1,58 +1,64 @@ -@import url('https://fonts.googleapis.com/css2?family=Alegreya:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&display=block'); -@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&display=block'); -@import url('https://fonts.googleapis.com/css2?family=Inter&display=block'); -@import url('https://fonts.googleapis.com/css2?family=Fira+Code&display=block'); -@tailwind base; -:root { - @apply bg-black; +@import url('https://fonts.googleapis.com/css2?family=Alegreya:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&display=block') +layer(base); +@import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&display=block') +layer(base); +@import url('https://fonts.googleapis.com/css2?family=Inter&display=block') +layer(base); +@import url('https://fonts.googleapis.com/css2?family=Fira+Code&display=block') +layer(base); +@import 'tailwindcss'; + +@config '../tailwind.config.js'; + +@utility text-shadow { + text-shadow: 0.03125em 0.03125em 0px black; } -body { - @apply overflow-x-clip overflow-y-scroll overscroll-none; -} -#__waku { - @apply bg-gray-950; - opacity: 0; - animation: fadeIn cubic-bezier(0.4, 0, 0.2, 1) 0.5s; - animation-iteration-count: 1; - animation-fill-mode: forwards !important; - animation-delay: 0.7s; -} -@keyframes fadeIn { - 0% { + +@layer base { + :root { + @apply bg-black; + } + body { + @apply overflow-x-clip overflow-y-scroll overscroll-none; + } + #__waku { + @apply bg-gray-950; opacity: 0; + animation: fadeIn cubic-bezier(0.4, 0, 0.2, 1) 0.5s; + animation-iteration-count: 1; + animation-fill-mode: forwards !important; + animation-delay: 0.7s; } - 100% { - opacity: 1; + @keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } } -} -*::-webkit-scrollbar { - @apply h-full w-4 bg-gray-950; -} -*::-webkit-scrollbar-track { - @apply bg-gray-950; -} -*::-webkit-scrollbar-thumb { - @apply rounded-2xl border-4 border-solid border-gray-950 bg-gray-600; -} -*::-webkit-scrollbar-button { - @apply hidden; -} -*:focus { - @apply !outline-none; -} -:focus:not(:focus-visible) { - @apply !outline-none; -} -::selection { - @apply bg-primary text-black; -} -.code + .code { - @apply !-mt-8; -} -@layer utilities { - .text-shadow { - text-shadow: 0.03125em 0.03125em 0px black; + *::-webkit-scrollbar { + @apply h-full w-4 bg-gray-950; + } + *::-webkit-scrollbar-track { + @apply bg-gray-950; + } + *::-webkit-scrollbar-thumb { + @apply rounded-2xl border-4 border-solid border-gray-950 bg-gray-600; + } + *::-webkit-scrollbar-button { + @apply hidden; + } + *:focus { + @apply outline-hidden!; + } + :focus:not(:focus-visible) { + @apply outline-hidden!; + } + ::selection { + @apply bg-primary text-black; + } + .code + .code { + @apply -mt-8!; } } -@tailwind components; -@tailwind utilities; diff --git a/packages/website/vite.config.ts b/packages/website/vite.config.ts index a1e2079bc..8ecb89a7e 100644 --- a/packages/website/vite.config.ts +++ b/packages/website/vite.config.ts @@ -1,7 +1,10 @@ +import tailwindcss from '@tailwindcss/vite'; + /** @type {import('vite').UserConfig} */ export default ({ mode }: { mode: string }) => { if (mode === 'development') { return { + plugins: [tailwindcss()], optimizeDeps: { include: ['tailwindcss/colors'], }, @@ -12,5 +15,7 @@ export default ({ mode }: { mode: string }) => { }, }; } - return {}; + return { + plugins: [tailwindcss()], + }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9dd2cfbcd..4caae9f44 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -538,18 +538,18 @@ importers: specifier: 0.21.17 version: link:../../packages/waku devDependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) '@types/react': specifier: 19.0.8 version: 19.0.8 '@types/react-dom': specifier: 19.0.3 version: 19.0.3(@types/react@19.0.8) - autoprefixer: - specifier: 10.4.20 - version: 10.4.20(postcss@8.5.1) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 @@ -569,15 +569,18 @@ importers: specifier: 0.21.17 version: link:../../packages/waku devDependencies: - autoprefixer: - specifier: 10.4.20 - version: 10.4.20(postcss@8.5.1) + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 examples/03_demo: dependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) react: specifier: 19.0.0 version: 19.0.0 @@ -601,8 +604,8 @@ importers: specifier: 10.4.20 version: 10.4.20(postcss@8.5.1) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 @@ -647,6 +650,9 @@ importers: specifier: 0.21.17 version: link:../../packages/waku devDependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) '@types/react': specifier: 19.0.8 version: 19.0.8 @@ -655,22 +661,22 @@ importers: version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react': specifier: 4.3.4 - version: 4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) - autoprefixer: - specifier: 10.4.20 - version: 10.4.20(postcss@8.5.1) + version: 4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) babel-plugin-react-compiler: specifier: 19.0.0-beta-e552027-20250112 version: 19.0.0-beta-e552027-20250112 tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 examples/06_form-demo: dependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) react: specifier: 19.0.0 version: 19.0.0 @@ -690,12 +696,9 @@ importers: '@types/react-dom': specifier: 19.0.3 version: 19.0.3(@types/react@19.0.8) - autoprefixer: - specifier: 10.4.20 - version: 10.4.20(postcss@8.5.1) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 @@ -727,6 +730,9 @@ importers: examples/12_nossr: dependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) react: specifier: 19.0.0 version: 19.0.0 @@ -746,18 +752,15 @@ importers: '@types/react-dom': specifier: 19.0.3 version: 19.0.3(@types/react@19.0.8) - autoprefixer: - specifier: 10.4.20 - version: 10.4.20(postcss@8.5.1) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 vite: specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) examples/21_create-pages: dependencies: @@ -987,13 +990,13 @@ importers: version: 19.0.3(@types/react@19.0.8) '@vanilla-extract/vite-plugin': specifier: 4.0.19 - version: 4.0.19(@types/node@22.10.9)(terser@5.37.0)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 4.0.19(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) typescript: specifier: 5.7.3 version: 5.7.3 vite: specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) vite-plugin-stylex-dev: specifier: 0.7.5 version: 0.7.5(rollup@4.31.0) @@ -1086,10 +1089,10 @@ importers: version: 5.7.3 vite: specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.7.3)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 5.1.4(typescript@5.7.3)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) examples/42_react-tweet: dependencies: @@ -1109,6 +1112,9 @@ importers: specifier: 0.21.17 version: link:../../packages/waku devDependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) '@types/react': specifier: 19.0.8 version: 19.0.8 @@ -1119,8 +1125,8 @@ importers: specifier: 10.4.20 version: 10.4.20(postcss@8.5.1) tailwindcss: - specifier: 3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: 5.7.3 version: 5.7.3 @@ -1311,7 +1317,7 @@ importers: version: 1.10.9(@swc/helpers@0.5.15) '@vitejs/plugin-react': specifier: 4.3.4 - version: 4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) dotenv: specifier: 16.4.7 version: 16.4.7 @@ -1323,7 +1329,7 @@ importers: version: 0.0.4 vite: specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) devDependencies: '@netlify/functions': specifier: ^3.0.0 @@ -1348,7 +1354,7 @@ importers: version: 1.3.0 vitest: specifier: 3.0.3 - version: 3.0.3(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 3.0.3(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) packages/website: dependencies: @@ -1380,15 +1386,15 @@ importers: specifier: workspace:* version: link:../waku devDependencies: + '@tailwindcss/vite': + specifier: 4.0.0 + version: 4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) '@types/react': specifier: ^19.0.8 version: 19.0.8 '@types/react-dom': specifier: ^19.0.3 version: 19.0.3(@types/react@19.0.8) - autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.5.1) prettier: specifier: ^3.4.2 version: 3.4.2 @@ -1399,14 +1405,14 @@ importers: specifier: ^2.1.0 version: 2.1.0 tailwindcss: - specifier: ^3.4.17 - version: 3.4.17 + specifier: 4.0.0 + version: 4.0.0 typescript: specifier: ^5.7.3 version: 5.7.3 vite: specifier: 6.0.11 - version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) packages: @@ -1456,10 +1462,6 @@ packages: zod: optional: true - '@alloc/quick-lru@5.2.0': - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} - engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -2681,6 +2683,84 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@tailwindcss/node@4.0.0': + resolution: {integrity: sha512-tfG2uBvo6j6kDIPmntxwXggCOZAt7SkpAXJ6pTIYirNdk5FBqh/CZZ9BZPpgcl/tNFLs6zc4yghM76sqiELG9g==} + + '@tailwindcss/oxide-android-arm64@4.0.0': + resolution: {integrity: sha512-EAhjU0+FIdyGPR+7MbBWubLLPtmOu+p7c2egTTFBRk/n//zYjNvVK0WhcBK5Y7oUB5mo4EjA2mCbY7dcEMWSRw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.0.0': + resolution: {integrity: sha512-hdz4xnSWS11cIp+7ye+3dGHqs0X33z+BXXTtgPOguDWVa+TdXUzwxonklSzf5wlJFuot3dv5eWzhlNai0oYYQg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.0.0': + resolution: {integrity: sha512-+dOUUaXTkPKKhtUI9QtVaYg+MpmLh2CN0dHohiYXaBirEyPMkjaT0zbRgzQlNnQWjCVVXPQluIEb0OMEjSTH+Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.0.0': + resolution: {integrity: sha512-CJhGDhxnrmu4SwyC62fA+wP24MhA/TZlIhRHqg1kRuIHoGoVR2uSSm1qxTxU37tSSZj8Up0q6jsBJCAP4k7rgQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0': + resolution: {integrity: sha512-Wy7Av0xzXfY2ujZBcYy4+7GQm25/J1iHvlQU2CfwdDCuPWfIjYzR6kggz+uVdSJyKV2s64znchBxRE8kV4uXSA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0': + resolution: {integrity: sha512-srwBo2l6pvM0swBntc1ucuhGsfFOLkqPRFQ3dWARRTfSkL1U9nAsob2MKc/n47Eva/W9pZZgMOuf7rDw8pK1Ew==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.0.0': + resolution: {integrity: sha512-abhusswkduYWuezkBmgo0K0/erGq3M4Se5xP0fhc/0dKs0X/rJUYYCFWntHb3IGh3aVzdQ0SXJs93P76DbUqtw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0': + resolution: {integrity: sha512-hGtRYIUEx377/HlU49+jvVKKwU1MDSKYSMMs0JFO2Wp7LGxk5+0j5+RBk9NFnmp/lbp32yPTgIOO5m1BmDq36A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.0.0': + resolution: {integrity: sha512-7xgQgSAThs0I14VAgmxpJnK6XFSZBxHMGoDXkLyYkEnu+8WRQMbCP93dkCUn2PIv+Q+JulRgc00PJ09uORSLXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0': + resolution: {integrity: sha512-qEcgTIPcWY5ZE7f6VxQ/JPrSFMcehzVIlZj7sGE3mVd5YWreAT+Fl1vSP8q2pjnWXn0avZG3Iw7a2hJQAm+fTQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.0.0': + resolution: {integrity: sha512-bqT0AY8RXb8GMDy28JtngvqaOSB2YixbLPLvUo6I6lkvvUwA6Eqh2Tj60e2Lh7O/k083f8tYiB0WEK4wmTI7Jg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.0.0': + resolution: {integrity: sha512-W3FjpJgy4VV1JiL7iBYDf2n/WkeDg1Il+0Q7eWnqPyvkPPCo/Mbwc5BiaT7dfBNV6tQKAhVE34rU5xl8pSl50w==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.0.0': + resolution: {integrity: sha512-4uukMiU9gHui8KMPMdWic5SP1O/tmQ1NFSRNrQWmcop5evAVl/LZ6/LuWL3quEiecp2RBcRWwqJrG+mFXlRlew==} + peerDependencies: + vite: ^5.2.0 || ^6 + '@tanstack/history@1.97.8': resolution: {integrity: sha512-+0R1Xe2lRLeK4htiLRCv0fyxDnrCQbK/ltrJ9rofUwMdh/jQ5+tjGBPzOlyUQzTZg7Rzv8NzVzQWuyxjQYga2g==} engines: {node: '>=12'} @@ -3078,10 +3158,6 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} @@ -3178,10 +3254,6 @@ packages: resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} engines: {node: '>=12'} - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -3251,10 +3323,6 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - camelcase-css@2.0.1: - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} - engines: {node: '>= 6'} - camelcase@7.0.1: resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} engines: {node: '>=14.16'} @@ -3304,10 +3372,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -3519,18 +3583,17 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - didyoumean@1.2.2: - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff-match-patch@1.0.5: resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} - dlv@1.1.3: - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -4116,10 +4179,6 @@ packages: resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - is-boolean-object@1.2.1: resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} engines: {node: '>= 0.4'} @@ -4266,10 +4325,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true @@ -4364,6 +4419,70 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-darwin-arm64@1.29.1: + resolution: {integrity: sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.29.1: + resolution: {integrity: sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.29.1: + resolution: {integrity: sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.29.1: + resolution: {integrity: sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.29.1: + resolution: {integrity: sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.29.1: + resolution: {integrity: sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.29.1: + resolution: {integrity: sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.29.1: + resolution: {integrity: sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.29.1: + resolution: {integrity: sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.29.1: + resolution: {integrity: sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.29.1: + resolution: {integrity: sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==} + engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -4676,10 +4795,6 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} @@ -4696,10 +4811,6 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} - engines: {node: '>= 6'} - object-inspect@1.13.3: resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} engines: {node: '>= 0.4'} @@ -4827,10 +4938,6 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} @@ -4858,30 +4965,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - postcss-import@15.1.0: - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} - peerDependencies: - postcss: ^8.0.0 - - postcss-js@4.0.1: - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} - engines: {node: ^12 || ^14 || >= 16} - peerDependencies: - postcss: ^8.4.21 - - postcss-load-config@4.0.2: - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -4900,23 +4983,9 @@ packages: yaml: optional: true - postcss-nested@6.2.0: - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} - engines: {node: '>=12.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.1: resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} @@ -5074,13 +5143,6 @@ packages: resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} - read-cache@1.0.0: - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - readdirp@4.1.1: resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} engines: {node: '>= 14.18.0'} @@ -5473,10 +5535,8 @@ packages: peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - tailwindcss@3.4.17: - resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} - engines: {node: '>=14.0.0'} - hasBin: true + tailwindcss@4.0.0: + resolution: {integrity: sha512-ULRPI3A+e39T7pSaf1xoi58AqqJxVCLg8F/uM5A3FadUbnyDTgltVnXJvdkTjwCOGA6NazqHVcwPJC5h2vRYVQ==} tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} @@ -5777,9 +5837,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -6091,8 +6148,6 @@ snapshots: optionalDependencies: zod: 3.24.1 - '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -7014,6 +7069,67 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@tailwindcss/node@4.0.0': + dependencies: + enhanced-resolve: 5.18.0 + jiti: 2.4.2 + tailwindcss: 4.0.0 + + '@tailwindcss/oxide-android-arm64@4.0.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.0.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.0.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.0.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.0.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.0.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.0.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.0.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.0.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.0.0': + optional: true + + '@tailwindcss/oxide@4.0.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.0.0 + '@tailwindcss/oxide-darwin-arm64': 4.0.0 + '@tailwindcss/oxide-darwin-x64': 4.0.0 + '@tailwindcss/oxide-freebsd-x64': 4.0.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.0.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.0.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.0.0 + '@tailwindcss/oxide-linux-x64-musl': 4.0.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.0.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.0.0 + + '@tailwindcss/vite@4.0.0(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + dependencies: + '@tailwindcss/node': 4.0.0 + '@tailwindcss/oxide': 4.0.0 + lightningcss: 1.29.1 + tailwindcss: 4.0.0 + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@tanstack/history@1.97.8': {} '@tanstack/react-router@1.97.14(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -7253,7 +7369,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/integration@7.1.12(@types/node@22.10.9)(terser@5.37.0)': + '@vanilla-extract/integration@7.1.12(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0)': dependencies: '@babel/core': 7.26.0 '@babel/plugin-syntax-typescript': 7.25.7(@babel/core@7.26.0) @@ -7265,8 +7381,8 @@ snapshots: find-up: 5.0.0 javascript-stringify: 2.1.0 mlly: 1.7.2 - vite: 5.4.14(@types/node@22.10.9)(terser@5.37.0) - vite-node: 1.6.0(@types/node@22.10.9)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0) + vite-node: 1.6.0(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -7281,10 +7397,10 @@ snapshots: '@vanilla-extract/private@1.0.6': {} - '@vanilla-extract/vite-plugin@4.0.19(@types/node@22.10.9)(terser@5.37.0)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vanilla-extract/vite-plugin@4.0.19(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': dependencies: - '@vanilla-extract/integration': 7.1.12(@types/node@22.10.9)(terser@5.37.0) - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + '@vanilla-extract/integration': 7.1.12(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -7297,14 +7413,14 @@ snapshots: - supports-color - terser - '@vitejs/plugin-react@4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -7315,13 +7431,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.3(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': + '@vitest/mocker@3.0.3(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.0.3 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) '@vitest/pretty-format@3.0.3': dependencies: @@ -7579,11 +7695,6 @@ snapshots: any-promise@1.3.0: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - arch@2.2.0: {} arch@3.0.0: {} @@ -7706,8 +7817,6 @@ snapshots: execa: 5.1.1 find-versions: 5.1.0 - binary-extensions@2.3.0: {} - blake3-wasm@2.1.5: {} boxen@7.0.0: @@ -7790,8 +7899,6 @@ snapshots: callsites@3.1.0: {} - camelcase-css@2.0.1: {} - camelcase@7.0.1: {} caniuse-lite@1.0.30001695: {} @@ -7836,18 +7943,6 @@ snapshots: check-error@2.1.1: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - chokidar@4.0.3: dependencies: readdirp: 4.1.1 @@ -8008,16 +8103,14 @@ snapshots: dequal@2.0.3: {} + detect-libc@1.0.3: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 - didyoumean@1.2.2: {} - diff-match-patch@1.0.5: {} - dlv@1.1.3: {} - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -8877,10 +8970,6 @@ snapshots: dependencies: has-bigints: 1.1.0 - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - is-boolean-object@1.2.1: dependencies: call-bound: 1.0.3 @@ -9021,10 +9110,7 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.7: {} - - jiti@2.4.2: - optional: true + jiti@2.4.2: {} jotai@2.11.1(@types/react@19.0.8)(react@19.0.0): optionalDependencies: @@ -9095,6 +9181,51 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-darwin-arm64@1.29.1: + optional: true + + lightningcss-darwin-x64@1.29.1: + optional: true + + lightningcss-freebsd-x64@1.29.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.29.1: + optional: true + + lightningcss-linux-arm64-gnu@1.29.1: + optional: true + + lightningcss-linux-arm64-musl@1.29.1: + optional: true + + lightningcss-linux-x64-gnu@1.29.1: + optional: true + + lightningcss-linux-x64-musl@1.29.1: + optional: true + + lightningcss-win32-arm64-msvc@1.29.1: + optional: true + + lightningcss-win32-x64-msvc@1.29.1: + optional: true + + lightningcss@1.29.1: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.29.1 + lightningcss-darwin-x64: 1.29.1 + lightningcss-freebsd-x64: 1.29.1 + lightningcss-linux-arm-gnueabihf: 1.29.1 + lightningcss-linux-arm64-gnu: 1.29.1 + lightningcss-linux-arm64-musl: 1.29.1 + lightningcss-linux-x64-gnu: 1.29.1 + lightningcss-linux-x64-musl: 1.29.1 + lightningcss-win32-arm64-msvc: 1.29.1 + lightningcss-win32-x64-msvc: 1.29.1 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -9585,8 +9716,6 @@ snapshots: node-releases@2.0.19: {} - normalize-path@3.0.0: {} - normalize-range@0.1.2: {} normalize-url@8.0.1: {} @@ -9597,8 +9726,6 @@ snapshots: object-assign@4.1.1: {} - object-hash@3.0.0: {} - object-inspect@1.13.3: {} object-keys@1.1.1: {} @@ -9730,8 +9857,6 @@ snapshots: picomatch@4.0.2: {} - pify@2.3.0: {} - pirates@4.0.6: {} piscina@4.8.0: @@ -9760,25 +9885,6 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - read-cache: 1.0.0 - resolve: 1.22.10 - - postcss-js@4.0.1(postcss@8.5.1): - dependencies: - camelcase-css: 2.0.1 - postcss: 8.5.1 - - postcss-load-config@4.0.2(postcss@8.5.1): - dependencies: - lilconfig: 3.1.3 - yaml: 2.7.0 - optionalDependencies: - postcss: 8.5.1 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.1)(tsx@4.19.2)(yaml@2.7.0): dependencies: lilconfig: 3.1.3 @@ -9788,24 +9894,8 @@ snapshots: tsx: 4.19.2 yaml: 2.7.0 - postcss-nested@6.2.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-value-parser@4.2.0: {} - postcss@8.4.49: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.1: dependencies: nanoid: 3.3.8 @@ -9924,14 +10014,6 @@ snapshots: react@19.0.0: {} - read-cache@1.0.0: - dependencies: - pify: 2.3.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - readdirp@4.1.1: {} recma-build-jsx@1.0.0: @@ -10457,32 +10539,7 @@ snapshots: react: 19.0.0 use-sync-external-store: 1.4.0(react@19.0.0) - tailwindcss@3.4.17: - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.3 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.7 - lilconfig: 3.1.3 - micromatch: 4.0.8 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.1.1 - postcss: 8.5.1 - postcss-import: 15.1.0(postcss@8.5.1) - postcss-js: 4.0.1(postcss@8.5.1) - postcss-load-config: 4.0.2(postcss@8.5.1) - postcss-nested: 6.2.0(postcss@8.5.1) - postcss-selector-parser: 6.1.2 - resolve: 1.22.10 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node + tailwindcss@4.0.0: {} tapable@2.2.1: {} @@ -10831,8 +10888,6 @@ snapshots: dependencies: react: 19.0.0 - util-deprecate@1.0.2: {} - vary@1.1.2: {} vfile-matter@5.0.0: @@ -10850,13 +10905,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@1.6.0(@types/node@22.10.9)(terser@5.37.0): + vite-node@1.6.0(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0): dependencies: cac: 6.7.14 debug: 4.4.0 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.14(@types/node@22.10.9)(terser@5.37.0) + vite: 5.4.14(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -10868,13 +10923,13 @@ snapshots: - supports-color - terser - vite-node@3.0.3(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite-node@3.0.3(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.2 - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -10899,28 +10954,29 @@ snapshots: - rollup - supports-color - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.7.3) optionalDependencies: - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.14(@types/node@22.10.9)(terser@5.37.0): + vite@5.4.14(@types/node@22.10.9)(lightningcss@1.29.1)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.49 + postcss: 8.5.1 rollup: 4.31.0 optionalDependencies: '@types/node': 22.10.9 fsevents: 2.3.3 + lightningcss: 1.29.1 terser: 5.37.0 - vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): dependencies: esbuild: 0.24.2 postcss: 8.5.1 @@ -10929,14 +10985,15 @@ snapshots: '@types/node': 22.10.9 fsevents: 2.3.3 jiti: 2.4.2 + lightningcss: 1.29.1 terser: 5.37.0 tsx: 4.19.2 yaml: 2.7.0 - vitest@3.0.3(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): + vitest@3.0.3(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0): dependencies: '@vitest/expect': 3.0.3 - '@vitest/mocker': 3.0.3(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) + '@vitest/mocker': 3.0.3(vite@6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0)) '@vitest/pretty-format': 3.0.3 '@vitest/runner': 3.0.3 '@vitest/snapshot': 3.0.3 @@ -10952,8 +11009,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) - vite-node: 3.0.3(@types/node@22.10.9)(jiti@2.4.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) + vite-node: 3.0.3(@types/node@22.10.9)(jiti@2.4.2)(lightningcss@1.29.1)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.10.9