diff --git a/packages/core/__tests__/e2e/next-ssr.spec.js b/packages/core/__tests__/e2e/next-ssr.spec.js
index 12255ea..1fcf3ce 100644
--- a/packages/core/__tests__/e2e/next-ssr.spec.js
+++ b/packages/core/__tests__/e2e/next-ssr.spec.js
@@ -251,8 +251,8 @@ test.describe('Zero-UI Comprehensive Test Suite', () => {
await expect(themeTest).toHaveCSS('background-color', 'rgb(0, 0, 0)'); // black
// Color styling
- await expect(colorTest).toHaveCSS('background-color', 'oklch(0.637 0.237 25.331)'); // red-500
+ await expect(colorTest).toHaveCSS('background-color', 'lab(55.4814 75.0732 48.8528)'); // red-500
await page.getByTestId('color-blue').click();
- await expect(colorTest).toHaveCSS('background-color', 'oklch(0.623 0.214 259.815)'); // blue-500
+ await expect(colorTest).toHaveCSS('background-color', 'lab(54.1736 13.3369 -74.6839)'); // blue-500
});
});
diff --git a/packages/core/__tests__/fixtures/next/next-env.d.ts b/packages/core/__tests__/fixtures/next/next-env.d.ts
index 1b3be08..9edff1c 100644
--- a/packages/core/__tests__/fixtures/next/next-env.d.ts
+++ b/packages/core/__tests__/fixtures/next/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/packages/core/__tests__/fixtures/next/package.json b/packages/core/__tests__/fixtures/next/package.json
index 99de055..356b81b 100644
--- a/packages/core/__tests__/fixtures/next/package.json
+++ b/packages/core/__tests__/fixtures/next/package.json
@@ -8,17 +8,17 @@
"clean": "rm -rf .next node_modules package-lock.json"
},
"dependencies": {
- "next": "15.0.7",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
+ "next": "16.2.2",
+ "react": "19.2.4",
+ "react-dom": "19.2.4"
},
"devDependencies": {
- "@tailwindcss/postcss": "^4.1.10",
+ "@tailwindcss/postcss": "4.2.2",
"@types/node": "24.0.0",
- "@types/react": "19.1.7",
+ "@types/react": "19.2.14",
"eslint-plugin-react-zero-ui": "0.0.1-beta.1",
- "postcss": "^8.5.5",
- "tailwindcss": "^4.1.10",
+ "postcss": "8.5.8",
+ "tailwindcss": "4.2.2",
"typescript": "5.8.3"
}
}
diff --git a/packages/core/__tests__/fixtures/next/tsconfig.json b/packages/core/__tests__/fixtures/next/tsconfig.json
index a976c3c..8e80681 100644
--- a/packages/core/__tests__/fixtures/next/tsconfig.json
+++ b/packages/core/__tests__/fixtures/next/tsconfig.json
@@ -7,7 +7,7 @@
],
"allowJs": true,
"skipLibCheck": true,
- "strict": false,
+ "strict": true,
"noEmit": true,
"incremental": true,
"module": "ESNext",
@@ -15,7 +15,7 @@
"moduleResolution": "bundler",
"resolveJsonModule": true,
"isolatedModules": true,
- "jsx": "preserve",
+ "jsx": "react-jsx",
"plugins": [
{
"name": "next"
@@ -35,7 +35,8 @@
".next/**/*.d.ts",
".next/types/**/*.ts",
".zero-ui/**/*.d.ts",
- "next-env.d.ts"
+ "next-env.d.ts",
+ ".next/dev/types/**/*.ts"
],
"exclude": [
"node_modules"
diff --git a/packages/core/__tests__/fixtures/vite/package.json b/packages/core/__tests__/fixtures/vite/package.json
index 8727de5..9d74147 100644
--- a/packages/core/__tests__/fixtures/vite/package.json
+++ b/packages/core/__tests__/fixtures/vite/package.json
@@ -9,17 +9,17 @@
"build-and-preview": "vite build && vite preview --port 5173"
},
"dependencies": {
- "react": "^19.1.0",
- "react-dom": "^19.1.0"
+ "react": "19.2.4",
+ "react-dom": "19.2.4"
},
"devDependencies": {
- "@tailwindcss/postcss": "^4.1.10",
- "@types/react": "^19.1.2",
- "@types/react-dom": "^19.1.2",
- "@vitejs/plugin-react": "^4.4.1",
- "postcss": "^8.5.5",
- "tailwindcss": "^4.1.10",
+ "@tailwindcss/postcss": "4.2.2",
+ "@types/react": "19.2.14",
+ "@types/react-dom": "19.2.3",
+ "@vitejs/plugin-react": "6.0.1",
+ "postcss": "8.5.8",
+ "tailwindcss": "4.2.2",
"typescript": "~5.8.3",
- "vite": "^6.3.5"
+ "vite": "8.0.3"
}
}
diff --git a/packages/core/__tests__/unit/index.test.cjs b/packages/core/__tests__/unit/index.test.cjs
index e56720a..17bc5e8 100644
--- a/packages/core/__tests__/unit/index.test.cjs
+++ b/packages/core/__tests__/unit/index.test.cjs
@@ -96,6 +96,35 @@ test('generates body attributes file correctly', async () => {
);
});
+test('warns instead of auto-initializing when project setup is missing', async () => {
+ await runTest(
+ {
+ 'app/test.jsx': `
+ import { useUI } from '@react-zero-ui/core';
+
+ function Component() {
+ const [theme, setTheme] = useUI('theme', 'light');
+ return
Test
;
+ }
+ `,
+ },
+ (result) => {
+ assert(fs.existsSync(getAttrFile()), 'Attributes file should still be generated');
+ assert(!fs.existsSync('postcss.config.js'), 'PostCSS plugin should not create postcss.config.js');
+ assert(!fs.existsSync('postcss.config.mjs'), 'PostCSS plugin should not create postcss.config.mjs');
+ assert(!fs.existsSync('tsconfig.json'), 'PostCSS plugin should not patch tsconfig');
+
+ const warnings = result.warnings().map((warning) => warning.text);
+ assert(
+ warnings.some(
+ (text) => text.includes('Zero UI is not initialized') && text.includes('react-zero-ui')
+ ),
+ 'Expected a setup warning instead of auto-initialization'
+ );
+ }
+ );
+});
+
test('generates body attributes file correctly when kebab-case is used', async () => {
await runTest(
{
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 0f452c2..1b6e2eb 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -1,10 +1,10 @@
'use client';
-import { useRef, type RefObject } from 'react';
+import { useRef } from 'react';
import { cssVar, makeSetter } from './internal.js';
type UIAction = T | ((prev: T) => T);
-type ScopedRef = RefObject | (((node: HTMLElement | null) => void) & { current: HTMLElement | null });
+type ScopedRef = ((node: HTMLElement | null) => void) & { current: HTMLElement | null };
interface ScopedSetterFn {
(action: UIAction): void; // ← SINGLE source of truth
@@ -22,40 +22,38 @@ function useScopedUI(key: string, initialValue: T, fl
// Create a ref to hold the DOM element that will receive the data-* attributes
// This allows scoping UI state to specific elements instead of always using document.body
const scopeRef = useRef(null);
-
const setterFn = useRef(makeSetter(key, initialValue, () => scopeRef.current!, flag)).current as ScopedSetterFn;
-
- if (process.env.NODE_ENV !== 'production') {
- // -- DEV-ONLY MULTIPLE REF GUARD (removed in production by modern bundlers) --
- // Attach the ref to the setter function so users can write:
- const refAttachCount = useRef(0);
- // DEV: Wrap scopeRef to detect multiple attachments
- const attachRef = ((node: HTMLElement | null) => {
- if (node) {
- refAttachCount!.current++;
- if (refAttachCount!.current > 1) {
- // TODO add documentation link
- throw new Error(
- `[useUI] Multiple ref attachments detected for key "${key}". ` +
- `Each useScopedUI hook supports only one ref attachment per component. ` +
- `Solution: Create separate component. and reuse.\n` +
- `React Strict Mode May Cause the Ref to be attached multiple times.`
- );
+ const refAttachCount = useRef(0);
+ const attachRef = useRef(null);
+
+ if (!attachRef.current) {
+ attachRef.current = ((node: HTMLElement | null) => {
+ if (process.env.NODE_ENV !== 'production') {
+ if (node) {
+ refAttachCount.current++;
+ if (refAttachCount.current > 1) {
+ // TODO add documentation link
+ throw new Error(
+ `[useUI] Multiple ref attachments detected for key "${key}". ` +
+ `Each useScopedUI hook supports only one ref attachment per component. ` +
+ `Solution: Create separate component. and reuse.\n` +
+ `React Strict Mode May Cause the Ref to be attached multiple times.`
+ );
+ }
+ } else {
+ // Handle cleanup when ref is detached
+ refAttachCount.current = Math.max(0, refAttachCount.current - 1);
}
- } else {
- // Handle cleanup when ref is detached
- refAttachCount!.current = Math.max(0, refAttachCount!.current - 1);
}
+
scopeRef.current = node;
- attachRef.current = node;
- }) as ((node: HTMLElement | null) => void) & { current: HTMLElement | null };
- attachRef.current = null;
- (setterFn as ScopedSetterFn).ref = attachRef;
- } else {
- // PROD: Direct ref assignment for zero overhead
- setterFn.ref = scopeRef;
+ attachRef.current!.current = node;
+ }) as ScopedRef;
+ attachRef.current.current = null;
}
+ setterFn.ref = attachRef.current;
+
// Return tuple matching React's useState pattern: [initialValue, setter]
return [initialValue, setterFn];
}
diff --git a/packages/core/src/postcss/index.cts b/packages/core/src/postcss/index.cts
index 7636921..033cf1c 100644
--- a/packages/core/src/postcss/index.cts
+++ b/packages/core/src/postcss/index.cts
@@ -2,21 +2,60 @@
/**
* @type {import('postcss').PluginCreator}
*/
-import { buildCss, generateAttributesFile, isZeroUiInitialized } from './helpers';
-import { runZeroUiInit } from '../cli/postInstall.js';
-import { processVariants } from './ast-parsing';
-import { CONFIG } from '../config';
-import { formatError, registerDeps, Result } from './utilities.js';
-
type Root = { prepend: (css: string) => void };
+type Result = {
+ messages: { type: string; plugin: string; file: string; parent: string }[];
+ opts: { from: string };
+ prepend: (css: string) => void;
+ warn: (message: string, options?: { endIndex?: number; index?: number; node?: Node; plugin?: string; word?: string }) => void;
+};
+type RuntimeModules = {
+ buildCss: typeof import('./helpers.js').buildCss;
+ generateAttributesFile: typeof import('./helpers.js').generateAttributesFile;
+ isZeroUiInitialized: typeof import('./helpers.js').isZeroUiInitialized;
+ processVariants: typeof import('./ast-parsing.js').processVariants;
+ formatError: typeof import('./utilities.js').formatError;
+ registerDeps: typeof import('./utilities.js').registerDeps;
+};
+
+const zeroUIPlugin = 'postcss-react-zero-ui';
+const warnedCwds = new Set();
+let runtimeModulesPromise: Promise | null = null;
+
+function loadRuntimeModules(): Promise {
+ if (!runtimeModulesPromise) {
+ runtimeModulesPromise = Promise.all([import('./helpers.js'), import('./ast-parsing.js'), import('./utilities.js')]).then(
+ ([helpers, astParsing, utilities]) => ({
+ buildCss: helpers.buildCss,
+ generateAttributesFile: helpers.generateAttributesFile,
+ isZeroUiInitialized: helpers.isZeroUiInitialized,
+ processVariants: astParsing.processVariants,
+ formatError: utilities.formatError,
+ registerDeps: utilities.registerDeps,
+ })
+ );
+ }
-const zeroUIPlugin = CONFIG.PLUGIN_NAME;
+ return runtimeModulesPromise;
+}
+
+function warnIfNotInitialized(result: Result, isZeroUiInitialized: RuntimeModules['isZeroUiInitialized']) {
+ const cwd = process.cwd();
+
+ if (isZeroUiInitialized() || warnedCwds.has(cwd)) {
+ return;
+ }
+
+ warnedCwds.add(cwd);
+ result.warn('[Zero-UI] Zero UI is not initialized. Run `react-zero-ui` to patch your project config.', { plugin: zeroUIPlugin });
+}
const plugin = () => {
return {
postcssPlugin: zeroUIPlugin,
async Once(root: Root, { result }: { result: Result }) {
try {
+ const { buildCss, generateAttributesFile, isZeroUiInitialized, processVariants, formatError, registerDeps } = await loadRuntimeModules();
const { finalVariants, initialGlobalValues, sourceFiles } = await processVariants();
const cssBlock = buildCss(finalVariants);
@@ -25,13 +64,10 @@ const plugin = () => {
/* ── register file-dependencies for HMR ─────────────────── */
registerDeps(result, zeroUIPlugin, sourceFiles, result.opts.from ?? '');
- /* ── first-run bootstrap ────────────────────────────────── */
- if (!isZeroUiInitialized()) {
- console.log('[Zero-UI] Auto-initializing (first-time setup)…');
- await runZeroUiInit();
- }
+ warnIfNotInitialized(result, isZeroUiInitialized);
await generateAttributesFile(finalVariants, initialGlobalValues);
} catch (err: unknown) {
+ const { formatError, registerDeps } = await loadRuntimeModules();
const { friendly, loc } = formatError(err);
if (process.env.NODE_ENV !== 'production') {
if (loc?.file) registerDeps(result, zeroUIPlugin, [loc.file], result.opts.from ?? '');
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d6957c9..c34af38 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -19,13 +19,13 @@ importers:
version: 0.25.8
eslint:
specifier: ^9.32.0
- version: 9.32.0(jiti@2.5.1)
+ version: 9.32.0(jiti@2.6.1)
eslint-plugin-import:
specifier: ^2.32.0
- version: 2.32.0(eslint@9.32.0(jiti@2.5.1))
+ version: 2.32.0(eslint@9.32.0(jiti@2.6.1))
eslint-plugin-n:
specifier: ^17.21.3
- version: 17.21.3(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)
+ version: 17.21.3(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2)
prettier:
specifier: ^3.6.2
version: 3.6.2
@@ -95,7 +95,7 @@ importers:
dependencies:
'@react-zero-ui/core':
specifier: ^0.3.3
- version: 0.3.3(@tailwindcss/postcss@4.1.11)(react@19.1.1)
+ version: 0.3.3(@tailwindcss/postcss@4.2.2)(react@19.2.4)
packages/core:
dependencies:
@@ -162,17 +162,17 @@ importers:
dependencies:
'@typescript-eslint/parser':
specifier: ^8.39.0
- version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)
+ version: 8.39.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2)
eslint:
specifier: ^9.0.0
- version: 9.32.0(jiti@2.5.1)
+ version: 9.32.0(jiti@2.6.1)
typescript:
specifier: ^5.9.2
version: 5.9.2
devDependencies:
'@typescript-eslint/utils':
specifier: ^8.39.0
- version: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)
+ version: 8.39.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2)
packages:
@@ -734,6 +734,9 @@ packages:
'@jridgewell/gen-mapping@0.3.12':
resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==}
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
@@ -741,6 +744,9 @@ packages:
'@jridgewell/sourcemap-codec@1.5.4':
resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==}
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@jridgewell/trace-mapping@0.3.29':
resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==}
@@ -997,60 +1003,117 @@ packages:
'@tailwindcss/node@4.1.11':
resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==}
+ '@tailwindcss/node@4.2.2':
+ resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==}
+
'@tailwindcss/oxide-android-arm64@4.1.11':
resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
+ '@tailwindcss/oxide-android-arm64@4.2.2':
+ resolution: {integrity: sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [android]
+
'@tailwindcss/oxide-darwin-arm64@4.1.11':
resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
+ '@tailwindcss/oxide-darwin-arm64@4.2.2':
+ resolution: {integrity: sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [darwin]
+
'@tailwindcss/oxide-darwin-x64@4.1.11':
resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
+ '@tailwindcss/oxide-darwin-x64@4.2.2':
+ resolution: {integrity: sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [darwin]
+
'@tailwindcss/oxide-freebsd-x64@4.1.11':
resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
+ '@tailwindcss/oxide-freebsd-x64@4.2.2':
+ resolution: {integrity: sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [freebsd]
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2':
+ resolution: {integrity: sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm]
+ os: [linux]
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.2':
+ resolution: {integrity: sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.11':
resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.2':
+ resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.11':
resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.2':
+ resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+
'@tailwindcss/oxide-linux-x64-musl@4.1.11':
resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@tailwindcss/oxide-linux-x64-musl@4.2.2':
+ resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+
'@tailwindcss/oxide-wasm32-wasi@4.1.11':
resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==}
engines: {node: '>=14.0.0'}
@@ -1063,25 +1126,56 @@ packages:
- '@emnapi/wasi-threads'
- tslib
+ '@tailwindcss/oxide-wasm32-wasi@4.2.2':
+ resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==}
+ 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.11':
resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
+ '@tailwindcss/oxide-win32-arm64-msvc@4.2.2':
+ resolution: {integrity: sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [win32]
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.11':
resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
+ '@tailwindcss/oxide-win32-x64-msvc@4.2.2':
+ resolution: {integrity: sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [win32]
+
'@tailwindcss/oxide@4.1.11':
resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==}
engines: {node: '>= 10'}
+ '@tailwindcss/oxide@4.2.2':
+ resolution: {integrity: sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==}
+ engines: {node: '>= 20'}
+
'@tailwindcss/postcss@4.1.11':
resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==}
+ '@tailwindcss/postcss@4.2.2':
+ resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==}
+
'@types/babel__code-frame@7.0.6':
resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==}
@@ -1419,6 +1513,10 @@ packages:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
doctrine@2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
@@ -1451,6 +1549,10 @@ packages:
resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==}
engines: {node: '>=10.13.0'}
+ enhanced-resolve@5.20.1:
+ resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
+ engines: {node: '>=10.13.0'}
+
entities@2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
@@ -1907,6 +2009,10 @@ packages:
resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==}
hasBin: true
+ jiti@2.6.1:
+ resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
+ hasBin: true
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1948,70 +2054,140 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
lightningcss-darwin-arm64@1.30.1:
resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
lightningcss-darwin-x64@1.30.1:
resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
lightningcss-freebsd-x64@1.30.1:
resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
lightningcss-linux-arm-gnueabihf@1.30.1:
resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
lightningcss-linux-arm64-gnu@1.30.1:
resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
lightningcss-linux-arm64-musl@1.30.1:
resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
lightningcss-linux-x64-gnu@1.30.1:
resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
lightningcss-linux-x64-musl@1.30.1:
resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
lightningcss-win32-arm64-msvc@1.30.1:
resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
lightningcss-win32-x64-msvc@1.30.1:
resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
lightningcss@1.30.1:
resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
engines: {node: '>= 12.0.0'}
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -2041,6 +2217,9 @@ packages:
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
engines: {node: '>= 0.4'}
@@ -2242,6 +2421,10 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.8:
+ resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
+ engines: {node: ^10 || ^12 || >=14}
+
preact@10.27.0:
resolution: {integrity: sha512-/DTYoB6mwwgPytiqQTh/7SFRL98ZdiD8Sk8zIUVOxtwq4oWcwrcd1uno9fE/zZmUaUrFNYzbH14CPebOz9tZQw==}
@@ -2296,6 +2479,10 @@ packages:
resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==}
engines: {node: '>=0.10.0'}
+ react@19.2.4:
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
+ engines: {node: '>=0.10.0'}
+
reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
@@ -2467,10 +2654,17 @@ packages:
tailwindcss@4.1.11:
resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==}
+ tailwindcss@4.2.2:
+ resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==}
+
tapable@2.2.2:
resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==}
engines: {node: '>=6'}
+ tapable@2.3.2:
+ resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
+ engines: {node: '>=6'}
+
tar@7.4.3:
resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
engines: {node: '>=18'}
@@ -3032,9 +3226,9 @@ snapshots:
'@esbuild/win32-x64@0.25.8':
optional: true
- '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))':
+ '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.6.1))':
dependencies:
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.12.1': {}
@@ -3181,17 +3375,24 @@ snapshots:
'@jridgewell/gen-mapping@0.3.12':
dependencies:
- '@jridgewell/sourcemap-codec': 1.5.4
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.29
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.12
'@jridgewell/trace-mapping': 0.3.29
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/sourcemap-codec@1.5.4': {}
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
'@jridgewell/trace-mapping@0.3.29':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.4
+ '@jridgewell/sourcemap-codec': 1.5.5
'@lezer/common@1.2.3': {}
@@ -3303,6 +3504,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@react-zero-ui/core@0.3.3(@tailwindcss/postcss@4.2.2)(react@19.2.4)':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.0
+ '@babel/parser': 7.28.0
+ '@babel/traverse': 7.28.0
+ '@babel/types': 7.28.2
+ '@tailwindcss/postcss': 4.2.2
+ fast-glob: 3.3.3
+ lru-cache: 11.1.0
+ react: 19.2.4
+ transitivePeerDependencies:
+ - supports-color
+
'@react-zero-ui/icon-sprite@0.1.4(react@19.1.1)':
dependencies:
'@babel/core': 7.28.0
@@ -3404,42 +3619,88 @@ snapshots:
source-map-js: 1.2.1
tailwindcss: 4.1.11
+ '@tailwindcss/node@4.2.2':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.20.1
+ jiti: 2.6.1
+ lightningcss: 1.32.0
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.2.2
+
'@tailwindcss/oxide-android-arm64@4.1.11':
optional: true
+ '@tailwindcss/oxide-android-arm64@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-darwin-arm64@4.1.11':
optional: true
+ '@tailwindcss/oxide-darwin-arm64@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-darwin-x64@4.1.11':
optional: true
+ '@tailwindcss/oxide-darwin-x64@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-freebsd-x64@4.1.11':
optional: true
+ '@tailwindcss/oxide-freebsd-x64@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11':
optional: true
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-linux-arm64-gnu@4.1.11':
optional: true
+ '@tailwindcss/oxide-linux-arm64-gnu@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-linux-arm64-musl@4.1.11':
optional: true
+ '@tailwindcss/oxide-linux-arm64-musl@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-linux-x64-gnu@4.1.11':
optional: true
+ '@tailwindcss/oxide-linux-x64-gnu@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-linux-x64-musl@4.1.11':
optional: true
+ '@tailwindcss/oxide-linux-x64-musl@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-wasm32-wasi@4.1.11':
optional: true
+ '@tailwindcss/oxide-wasm32-wasi@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-win32-arm64-msvc@4.1.11':
optional: true
+ '@tailwindcss/oxide-win32-arm64-msvc@4.2.2':
+ optional: true
+
'@tailwindcss/oxide-win32-x64-msvc@4.1.11':
optional: true
+ '@tailwindcss/oxide-win32-x64-msvc@4.2.2':
+ optional: true
+
'@tailwindcss/oxide@4.1.11':
dependencies:
detect-libc: 2.0.4
@@ -3458,6 +3719,21 @@ snapshots:
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.11
'@tailwindcss/oxide-win32-x64-msvc': 4.1.11
+ '@tailwindcss/oxide@4.2.2':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.2.2
+ '@tailwindcss/oxide-darwin-arm64': 4.2.2
+ '@tailwindcss/oxide-darwin-x64': 4.2.2
+ '@tailwindcss/oxide-freebsd-x64': 4.2.2
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.2.2
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.2.2
+ '@tailwindcss/oxide-linux-arm64-musl': 4.2.2
+ '@tailwindcss/oxide-linux-x64-gnu': 4.2.2
+ '@tailwindcss/oxide-linux-x64-musl': 4.2.2
+ '@tailwindcss/oxide-wasm32-wasi': 4.2.2
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.2.2
+ '@tailwindcss/oxide-win32-x64-msvc': 4.2.2
+
'@tailwindcss/postcss@4.1.11':
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -3466,6 +3742,14 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.11
+ '@tailwindcss/postcss@4.2.2':
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ '@tailwindcss/node': 4.2.2
+ '@tailwindcss/oxide': 4.2.2
+ postcss: 8.5.8
+ tailwindcss: 4.2.2
+
'@types/babel__code-frame@7.0.6': {}
'@types/babel__core@7.20.5':
@@ -3515,14 +3799,14 @@ snapshots:
dependencies:
csstype: 3.1.3
- '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)':
+ '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
'@typescript-eslint/scope-manager': 8.39.0
'@typescript-eslint/types': 8.39.0
'@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2)
'@typescript-eslint/visitor-keys': 8.39.0
debug: 4.4.1
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
@@ -3563,13 +3847,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)':
+ '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2)':
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1))
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.39.0
'@typescript-eslint/types': 8.39.0
'@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2)
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
typescript: 5.9.2
transitivePeerDependencies:
- supports-color
@@ -3846,6 +4130,8 @@ snapshots:
detect-libc@2.0.4: {}
+ detect-libc@2.1.2: {}
+
doctrine@2.1.0:
dependencies:
esutils: 2.0.3
@@ -3883,6 +4169,11 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.2
+ enhanced-resolve@5.20.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.2
+
entities@2.2.0: {}
es-abstract@1.24.0:
@@ -4020,9 +4311,9 @@ snapshots:
escape-string-regexp@4.0.0: {}
- eslint-compat-utils@0.5.1(eslint@9.32.0(jiti@2.5.1)):
+ eslint-compat-utils@0.5.1(eslint@9.32.0(jiti@2.6.1)):
dependencies:
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
semver: 7.7.2
eslint-import-resolver-node@0.3.9:
@@ -4033,23 +4324,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1)):
+ eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
transitivePeerDependencies:
- supports-color
- eslint-plugin-es-x@7.8.0(eslint@9.32.0(jiti@2.5.1)):
+ eslint-plugin-es-x@7.8.0(eslint@9.32.0(jiti@2.6.1)):
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1))
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
- eslint: 9.32.0(jiti@2.5.1)
- eslint-compat-utils: 0.5.1(eslint@9.32.0(jiti@2.5.1))
+ eslint: 9.32.0(jiti@2.6.1)
+ eslint-compat-utils: 0.5.1(eslint@9.32.0(jiti@2.6.1))
- eslint-plugin-import@2.32.0(eslint@9.32.0(jiti@2.5.1)):
+ eslint-plugin-import@2.32.0(eslint@9.32.0(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -4058,9 +4349,9 @@ snapshots:
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
- eslint: 9.32.0(jiti@2.5.1)
+ eslint: 9.32.0(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.5.1))
+ eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint@9.32.0(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -4076,12 +4367,12 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-plugin-n@17.21.3(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2):
+ eslint-plugin-n@17.21.3(eslint@9.32.0(jiti@2.6.1))(typescript@5.9.2):
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1))
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1))
enhanced-resolve: 5.18.2
- eslint: 9.32.0(jiti@2.5.1)
- eslint-plugin-es-x: 7.8.0(eslint@9.32.0(jiti@2.5.1))
+ eslint: 9.32.0(jiti@2.6.1)
+ eslint-plugin-es-x: 7.8.0(eslint@9.32.0(jiti@2.6.1))
get-tsconfig: 4.10.1
globals: 15.15.0
globrex: 0.1.2
@@ -4100,9 +4391,9 @@ snapshots:
eslint-visitor-keys@4.2.1: {}
- eslint@9.32.0(jiti@2.5.1):
+ eslint@9.32.0(jiti@2.6.1):
dependencies:
- '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1))
+ '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.6.1))
'@eslint-community/regexpp': 4.12.1
'@eslint/config-array': 0.21.0
'@eslint/config-helpers': 0.3.0
@@ -4138,7 +4429,7 @@ snapshots:
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
- jiti: 2.5.1
+ jiti: 2.6.1
transitivePeerDependencies:
- supports-color
@@ -4469,6 +4760,8 @@ snapshots:
jiti@2.5.1: {}
+ jiti@2.6.1: {}
+
js-tokens@4.0.0: {}
js-yaml@4.1.0:
@@ -4500,36 +4793,69 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
lightningcss-darwin-arm64@1.30.1:
optional: true
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
lightningcss-darwin-x64@1.30.1:
optional: true
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
lightningcss-freebsd-x64@1.30.1:
optional: true
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
lightningcss-linux-arm-gnueabihf@1.30.1:
optional: true
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
lightningcss-linux-arm64-gnu@1.30.1:
optional: true
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
lightningcss-linux-arm64-musl@1.30.1:
optional: true
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
lightningcss-linux-x64-gnu@1.30.1:
optional: true
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
lightningcss-linux-x64-musl@1.30.1:
optional: true
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
lightningcss-win32-arm64-msvc@1.30.1:
optional: true
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
lightningcss-win32-x64-msvc@1.30.1:
optional: true
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
lightningcss@1.30.1:
dependencies:
detect-libc: 2.0.4
@@ -4545,6 +4871,22 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.30.1
lightningcss-win32-x64-msvc: 1.30.1
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
@@ -4569,6 +4911,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.4
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
math-intrinsics@1.1.0: {}
merge2@1.4.1: {}
@@ -4756,6 +5102,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.8:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
preact@10.27.0: {}
prelude-ls@1.2.1: {}
@@ -4808,6 +5160,8 @@ snapshots:
react@19.1.1: {}
+ react@19.2.4: {}
+
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.8
@@ -5055,8 +5409,12 @@ snapshots:
tailwindcss@4.1.11: {}
+ tailwindcss@4.2.2: {}
+
tapable@2.2.2: {}
+ tapable@2.3.2: {}
+
tar@7.4.3:
dependencies:
'@isaacs/fs-minipass': 4.0.1