-
diff --git a/apps/website/tailwind.config.cjs b/apps/website/tailwind.config.cjs
deleted file mode 100644
index 3d7d99030..000000000
--- a/apps/website/tailwind.config.cjs
+++ /dev/null
@@ -1,121 +0,0 @@
-const { join } = require('path');
-const plugin = require('tailwindcss/plugin');
-
-/** @type {import('tailwindcss').Config} */
-
-module.exports = {
- content: [
- join(__dirname, 'src/**/*.{js,ts,jsx,tsx,mdx}'),
- join(__dirname, '../website/src/**/*.{js,ts,jsx,tsx,mdx}'),
- join(__dirname, '../../packages/kit-styled/src/**/*.{js,ts,jsx,tsx,mdx}'),
- join(__dirname, '../../packages/kit-headless/src/**/*.{js,ts,jsx,tsx,mdx}'),
- ],
- plugins: [
- // PLUGIN-START
- require('tailwindcss-animate'),
- plugin(function ({ addUtilities }) {
- addUtilities({
- '.press': {
- transform: 'var(--transform-press)',
- },
- });
- }),
- // PLUGIN-END
- ],
- darkMode: 'class',
- theme: {
- extend: {
- screens: {
- xs: '480px',
- },
- // EXTEND-START
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- alert: {
- DEFAULT: 'hsl(var(--alert))',
- foreground: 'hsl(var(--alert-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- },
- borderRadius: {
- base: 'var(--border-radius)',
- sm: 'calc(var(--border-radius) + 0.125rem)',
- DEFAULT: 'calc(var(--border-radius) + 0.25rem)',
- md: 'calc(var(--border-radius) + 0.375rem)',
- lg: 'calc(var(--border-radius) + 0.5rem)',
- xl: 'calc(var(--border-radius) + 0.75rem)',
- '2xl': 'calc(var(--border-radius) + 1rem)',
- '3xl': 'calc(var(--border-radius) + 1.5rem)',
- },
- borderWidth: {
- base: 'var(--border-width)',
- DEFAULT: 'calc(var(--border-width) + 1px)',
- 2: 'calc(var(--border-width) + 2px)',
- 4: 'calc(var(--border-width) + 4px)',
- 8: 'calc(var(--border-width) + 8px)',
- },
- boxShadow: {
- base: 'var(--shadow-base)',
- sm: 'var(--shadow-sm)',
- DEFAULT: 'var(--shadow)',
- md: 'var(--shadow-md)',
- lg: 'var(--shadow-lg)',
- xl: 'var(--shadow-xl)',
- '2xl': 'var(--shadow-2xl)',
- inner: 'var(--shadow-inner)',
- },
- strokeWidth: {
- 0: '0',
- base: 'var(--stroke-width)',
- 1: 'calc(var(--stroke-width) + 1px)',
- 2: 'calc(var(--stroke-width) + 2px)',
- },
- animation: {
- 'accordion-up': 'collapsible-up 0.2s ease-out 0s 1 normal forwards',
- 'accordion-down': 'collapsible-down 0.2s ease-out 0s 1 normal forwards',
- },
- keyframes: {
- 'collapsible-down': {
- from: { height: '0' },
- to: { height: 'var(--qwikui-collapsible-content-height)' },
- },
- 'collapsible-up': {
- from: { height: 'var(--qwikui-collapsible-content-height)' },
- to: { height: '0' },
- },
- },
- // EXTEND-END
- transitionTimingFunction: {
- step: 'cubic-bezier(0.6, 0.6, 0, 1)',
- jumpy: 'cubic-bezier(0.87, 0, 0.13, 1)',
- },
- },
- },
-};
diff --git a/apps/website/tsconfig.app.json b/apps/website/tsconfig.app.json
index 1a80d4b20..957523dfa 100644
--- a/apps/website/tsconfig.app.json
+++ b/apps/website/tsconfig.app.json
@@ -5,6 +5,5 @@
"outDir": "../../dist/out-tsc"
},
"files": [],
- "exclude": ["tailwind.config.cjs"],
"include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
}
diff --git a/apps/website/vite.config.ts b/apps/website/vite.config.ts
index 1d5b229ee..7981f5782 100644
--- a/apps/website/vite.config.ts
+++ b/apps/website/vite.config.ts
@@ -5,10 +5,11 @@ import tsconfigPaths from 'vite-tsconfig-paths';
import { recmaProvideComponents } from './recma-provide-components';
import autoAPI from './auto-api';
import { ShikiTransformer } from 'shiki';
+import tailwindcss from '@tailwindcss/vite';
export default defineConfig(async () => {
const { default: shikiRehype } = await import('@shikijs/rehype');
-
+ // const { default: tailwindcss } = await import('@tailwindcss/vite');
return {
root: 'apps/website',
plugins: [
@@ -47,6 +48,7 @@ export default defineConfig(async () => {
tsconfigPaths({ root: '../../' }),
// Uncomment for debugging preview with http2 via https
// basicSsl(),
+ tailwindcss(),
],
server: {
diff --git a/cla-signs/v1/cla.json b/cla-signs/v1/cla.json
index e4838d6de..df427e470 100644
--- a/cla-signs/v1/cla.json
+++ b/cla-signs/v1/cla.json
@@ -609,4 +609,4 @@
"pullRequestNo": 1114
}
]
-}
\ No newline at end of file
+}
diff --git a/jest.config.ts b/jest.config.ts
index d0dbd1b88..7a5e33696 100644
--- a/jest.config.ts
+++ b/jest.config.ts
@@ -1,5 +1,5 @@
-import { getJestProjects } from '@nx/jest';
+import { getJestProjectsAsync } from '@nx/jest';
export default {
- projects: getJestProjects(),
+ projects: await getJestProjectsAsync(),
};
diff --git a/package.json b/package.json
index 28f5c52d5..d9a890325 100644
--- a/package.json
+++ b/package.json
@@ -76,6 +76,7 @@
"@shikijs/transformers": "3.4.2",
"@swc-node/register": "^1.9.1",
"@swc/core": "^1.5.7",
+ "@tailwindcss/vite": "4.1.0",
"@types/decompress": "4.2.7",
"@types/eslint": "8.56.12",
"@types/estree-jsx": "1.0.5",
@@ -91,9 +92,9 @@
"axe-core": "^4.9.1",
"body-scroll-lock-upgrade": "^1.1.0",
"canvas-confetti": "1.9.3",
- "class-variance-authority": "^0.7.0",
+ "class-variance-authority": "0.7.1",
"clipboard-copy": "^4.0.1",
- "clsx": "^2.1.1",
+ "clsx": "^2.0.0",
"danger": "^11.3.1",
"decompress": "4.2.1",
"dotenv": "16.4.5",
@@ -113,20 +114,20 @@
"pagefind": "1.2.0",
"postcss": "^8.4.38",
"prettier": "^3.2.5",
- "prettier-plugin-tailwindcss": "^0.6.12",
+ "prettier-plugin-tailwindcss": "^0.6.13",
"pretty-quick": "^4.0.0",
"qwik-nx": "^3.2.0",
"sass": "^1.77.2",
"shiki": "^3.4.2",
"simple-git-hooks": "2.11.1",
"specificity": "^1.0.0",
- "tailwind-merge": "^3.3.0",
- "tailwindcss": "^3.4.17",
- "tailwindcss-animate": "^1.0.7",
+ "tailwind-merge": "^1.14.0",
+ "tailwindcss": "4.1.0",
"tree-sitter": "0.21.1",
"tree-sitter-typescript": "0.23.0",
"ts-jest": "^29.1.3",
"tslib": "^2.6.2",
+ "tw-animate-css": "1.3.4",
"typescript": "5.7.3",
"undici": "5.28.4",
"unified": "^11.0.4",
diff --git a/packages/cli-e2e/src/cli.smoke.spec.ts b/packages/cli-e2e/src/cli.smoke.spec.ts
index 4f1fa5a34..0ef4e2a2a 100644
--- a/packages/cli-e2e/src/cli.smoke.spec.ts
+++ b/packages/cli-e2e/src/cli.smoke.spec.ts
@@ -30,7 +30,7 @@ describe('Qwik UI CLI Smoke test', () => {
stdio: 'inherit',
},
);
- execSync('npx -y qwik-ui@e2e add button', {
+ execSync('pnpm exec qwik-ui add button', {
cwd: projectDirectory,
env: process.env,
stdio: 'inherit',
diff --git a/packages/cli/.prettierrc b/packages/cli/.prettierrc
new file mode 100644
index 000000000..0df26fa76
--- /dev/null
+++ b/packages/cli/.prettierrc
@@ -0,0 +1,6 @@
+{
+ "semi": true,
+ "singleQuote": true,
+ "trailingComma": "all",
+ "printWidth": 90
+}
diff --git a/packages/cli/bin/index.ts b/packages/cli/bin/index.ts
index f85feba63..a33dac4f0 100644
--- a/packages/cli/bin/index.ts
+++ b/packages/cli/bin/index.ts
@@ -185,7 +185,7 @@ async function handleInit() {
if (installTailwind) {
execSync(
- `${getPackageManagerCommand().exec} qwik add tailwind-v3 --skipConfirmation=true --projectDir=${config.projectRoot}`,
+ `${getPackageManagerCommand().exec} qwik add tailwind --skipConfirmation=true --projectDir=${config.projectRoot}`,
{
stdio: 'inherit',
cwd: config.projectRoot,
@@ -195,7 +195,8 @@ async function handleInit() {
// ADD QWIK UI CLI TO DEPENDENCIES
log.info('Adding qwik-ui cli to package.json...');
- execSync(`${getPackageManagerCommand().addDev} qwik-ui@latest`, {
+ const cliTag = args['e2e'] ? 'e2e' : 'latest';
+ execSync(`${getPackageManagerCommand().addDev} qwik-ui@${cliTag}`, {
stdio: 'inherit',
});
diff --git a/packages/cli/jest.config.js b/packages/cli/jest.config.js
index 96571279e..64f313856 100644
--- a/packages/cli/jest.config.js
+++ b/packages/cli/jest.config.js
@@ -15,4 +15,4 @@ module.exports = {
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/packages/cli',
prettierPath: require.resolve('prettier-2'),
-};
\ No newline at end of file
+};
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 41be7e725..6e81c0f61 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -12,8 +12,8 @@
"description": "Qwik UI Command line interface",
"dependencies": {
"@clack/prompts": "^0.7.0",
- "@nx/devkit": "19.2.3",
- "@qwik-ui/utils": "0.3.3",
+ "@nx/devkit": "21.1.2",
+ "@qwik-ui/utils": "0.3.2",
"ansis": "2.3.0",
"tslib": "^2.3.0",
"yargs": "17.7.2"
diff --git a/packages/cli/project.json b/packages/cli/project.json
index e52fe90a4..0a18a66ce 100644
--- a/packages/cli/project.json
+++ b/packages/cli/project.json
@@ -66,10 +66,7 @@
"copy-global-css": {
"executor": "nx:run-commands",
"options": {
- "commands": [
- "cp apps/website/tailwind.config.cjs packages/kit-styled/src/templates",
- "cp apps/website/src/global.css packages/kit-styled/src/templates"
- ]
+ "commands": ["cp apps/website/src/global.css packages/kit-styled/src/templates"]
}
},
"lint": {
diff --git a/packages/cli/src/_shared/external-deps.json b/packages/cli/src/_shared/external-deps.json
index 13c9c9635..69befd717 100644
--- a/packages/cli/src/_shared/external-deps.json
+++ b/packages/cli/src/_shared/external-deps.json
@@ -1,5 +1,5 @@
{
- "tailwindcss-animate": "^1.0.7",
- "class-variance-authority": "^0.7.0",
+ "tw-animate-css": "^1.3.7",
+ "class-variance-authority": "0.7.1",
"@qwikest/icons": "^0.0.13"
}
diff --git a/packages/cli/src/generators/init/schema.json b/packages/cli/src/generators/init/schema.json
index e15177331..c952cd381 100644
--- a/packages/cli/src/generators/init/schema.json
+++ b/packages/cli/src/generators/init/schema.json
@@ -9,11 +9,6 @@
"description": "The root directory you want the config file to be created in.",
"x-prompt": "Which project do you ?"
},
- "tailwindConfigPath": {
- "type": "string",
- "description": "Tailwind config path",
- "x-prompt": "Tailwind config path"
- },
"rootCssPath": {
"type": "string",
"description": "The root css file where you declare all the tailwind related directives",
diff --git a/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.spec.ts b/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.spec.ts
index 884209c40..8c4ac0f21 100644
--- a/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.spec.ts
+++ b/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.spec.ts
@@ -3,69 +3,12 @@ import { ThemeBorderRadiuses, ThemePrimaryColors, ThemeStyles } from '@qwik-ui/u
import { SetupTailwindGeneratorSchema } from './schema';
import { setupTailwindGenerator } from './setup-tailwind-generator';
-const tailwindConfigContent = `
-content: [
- join(__dirname, 'src/**/*.{js,ts,jsx,tsx,mdx}'),
-],
-darkMode: 'class',
-theme: {
- screens: {
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
- },
- important: true,
- extend: {
- fontFamily: {
- sans: ['Inter Variable', 'sans-serif'],
- },
- },
-},
-`;
-
-function wrapWithCommonJs(content: string) {
- return `
-const { join } = require('path');
-
-/** @type {import('tailwindcss').Config} */
-module.exports = {
- ${content}
-};
- `;
-}
-
-function wrapWithEsm(content: string) {
- return `
-/** @type {import('tailwindcss').Config} */
-export default {
- ${content}
-};
- `;
-}
-
describe('Setup Tailwind generator', () => {
function setupWithProperFiles() {
const options: SetupTailwindGeneratorSchema = {};
const tree = createTreeWithEmptyWorkspace();
- tree.write(
- 'src/global.css',
- `@tailwind components;
-@tailwind base;
-@tailwind utilities;
-
-html {
- height: 100%;
- min-height: 100%;
- scroll-behavior: smooth;
- background-color: var(--color-bg) !important;
- color: var(--color-text) !important;
-}`,
- );
-
- tree.write('tailwind.config.cjs', wrapWithCommonJs(tailwindConfigContent));
+ tree.write('src/global.css', '');
return {
tree,
@@ -73,404 +16,6 @@ html {
};
}
- test(`
- GIVEN global.css and tailwind config exist in commonjs format
- THEN it should generate the proper tailwind config values`, async () => {
- const { tree, options } = setupWithProperFiles();
-
- options.rootCssPath = 'src/global.css';
-
- await setupTailwindGenerator(tree, options);
-
- const updatedTailwindConfigContent = tree.read('tailwind.config.cjs', 'utf-8');
-
- expect(updatedTailwindConfigContent).toMatchInlineSnapshot(`
-"const plugin = require('tailwindcss/plugin');
-
-const { join } = require('path');
-
-/** @type {import('tailwindcss').Config} */
-module.exports = {
- plugins: [
- require('tailwindcss-animate'),
- plugin(function ({ addUtilities }) {
- addUtilities({
- '.press': {
- transform: 'var(--transform-press)',
- },
- });
- }),
- ],
-
- content: [join(__dirname, 'src/**/*.{js,ts,jsx,tsx,mdx}')],
- darkMode: 'class',
- theme: {
- screens: {
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
- },
- important: true,
- extend: {
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- alert: {
- DEFAULT: 'hsl(var(--alert))',
- foreground: 'hsl(var(--alert-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- },
- borderRadius: {
- base: 'var(--border-radius)',
- sm: 'calc(var(--border-radius) + 0.125rem)',
- DEFAULT: 'calc(var(--border-radius) + 0.25rem)',
- md: 'calc(var(--border-radius) + 0.375rem)',
- lg: 'calc(var(--border-radius) + 0.5rem)',
- xl: 'calc(var(--border-radius) + 0.75rem)',
- '2xl': 'calc(var(--border-radius) + 1rem)',
- '3xl': 'calc(var(--border-radius) + 1.5rem)',
- },
- borderWidth: {
- base: 'var(--border-width)',
- DEFAULT: 'calc(var(--border-width) + 1px)',
- 2: 'calc(var(--border-width) + 2px)',
- 4: 'calc(var(--border-width) + 4px)',
- 8: 'calc(var(--border-width) + 8px)',
- },
- boxShadow: {
- base: 'var(--shadow-base)',
- sm: 'var(--shadow-sm)',
- DEFAULT: 'var(--shadow)',
- md: 'var(--shadow-md)',
- lg: 'var(--shadow-lg)',
- xl: 'var(--shadow-xl)',
- '2xl': 'var(--shadow-2xl)',
- inner: 'var(--shadow-inner)',
- },
- strokeWidth: {
- 0: '0',
- base: 'var(--stroke-width)',
- 1: 'calc(var(--stroke-width) + 1px)',
- 2: 'calc(var(--stroke-width) + 2px)',
- },
- animation: {
- 'accordion-up': 'collapsible-up 0.2s ease-out 0s 1 normal forwards',
- 'accordion-down': 'collapsible-down 0.2s ease-out 0s 1 normal forwards',
- },
- keyframes: {
- 'collapsible-down': {
- from: { height: '0' },
- to: { height: 'var(--qwikui-collapsible-content-height)' },
- },
- 'collapsible-up': {
- from: { height: 'var(--qwikui-collapsible-content-height)' },
- to: { height: '0' },
- },
- },
- fontFamily: {
- sans: ['Inter Variable', 'sans-serif'],
- },
- },
- },
-};
-"
-`);
- });
-
- test(`
- GIVEN tailwind config exist in esm format
- WHEN running the generator
- THEN it should generate the proper tailwind config values`, async () => {
- const { tree, options } = setupWithProperFiles();
- tree.write('tailwind.config.js', wrapWithEsm(tailwindConfigContent));
-
- options.rootCssPath = 'src/global.css';
-
- await setupTailwindGenerator(tree, options);
-
- const updatedTailwindConfigContent = tree.read('tailwind.config.js', 'utf-8');
-
- expect(updatedTailwindConfigContent).toMatchInlineSnapshot(`
-"import plugin from 'tailwindcss/plugin';
-
-/** @type {import('tailwindcss').Config} */
-export default {
- plugins: [
- require('tailwindcss-animate'),
- plugin(function ({ addUtilities }) {
- addUtilities({
- '.press': {
- transform: 'var(--transform-press)',
- },
- });
- }),
- ],
-
- content: [join(__dirname, 'src/**/*.{js,ts,jsx,tsx,mdx}')],
- darkMode: 'class',
- theme: {
- screens: {
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
- },
- important: true,
- extend: {
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- alert: {
- DEFAULT: 'hsl(var(--alert))',
- foreground: 'hsl(var(--alert-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- },
- borderRadius: {
- base: 'var(--border-radius)',
- sm: 'calc(var(--border-radius) + 0.125rem)',
- DEFAULT: 'calc(var(--border-radius) + 0.25rem)',
- md: 'calc(var(--border-radius) + 0.375rem)',
- lg: 'calc(var(--border-radius) + 0.5rem)',
- xl: 'calc(var(--border-radius) + 0.75rem)',
- '2xl': 'calc(var(--border-radius) + 1rem)',
- '3xl': 'calc(var(--border-radius) + 1.5rem)',
- },
- borderWidth: {
- base: 'var(--border-width)',
- DEFAULT: 'calc(var(--border-width) + 1px)',
- 2: 'calc(var(--border-width) + 2px)',
- 4: 'calc(var(--border-width) + 4px)',
- 8: 'calc(var(--border-width) + 8px)',
- },
- boxShadow: {
- base: 'var(--shadow-base)',
- sm: 'var(--shadow-sm)',
- DEFAULT: 'var(--shadow)',
- md: 'var(--shadow-md)',
- lg: 'var(--shadow-lg)',
- xl: 'var(--shadow-xl)',
- '2xl': 'var(--shadow-2xl)',
- inner: 'var(--shadow-inner)',
- },
- strokeWidth: {
- 0: '0',
- base: 'var(--stroke-width)',
- 1: 'calc(var(--stroke-width) + 1px)',
- 2: 'calc(var(--stroke-width) + 2px)',
- },
- animation: {
- 'accordion-up': 'collapsible-up 0.2s ease-out 0s 1 normal forwards',
- 'accordion-down': 'collapsible-down 0.2s ease-out 0s 1 normal forwards',
- },
- keyframes: {
- 'collapsible-down': {
- from: { height: '0' },
- to: { height: 'var(--qwikui-collapsible-content-height)' },
- },
- 'collapsible-up': {
- from: { height: 'var(--qwikui-collapsible-content-height)' },
- to: { height: '0' },
- },
- },
- fontFamily: {
- sans: ['Inter Variable', 'sans-serif'],
- },
- },
- },
-};
-"
-`);
- });
- test(`
- GIVEN tailwind config has already a plugins array
- THEN it should add the plugin with the right plugin and import`, async () => {
- const { tree, options } = setupWithProperFiles();
- const tailwindConfig = wrapWithEsm(`plugins: [somePlugin],${tailwindConfigContent}`);
- tree.write('tailwind.config.js', tailwindConfig);
-
- options.rootCssPath = 'src/global.css';
-
- await setupTailwindGenerator(tree, options);
-
- const updatedTailwindConfigContent = tree.read('tailwind.config.js', 'utf-8');
-
- expect(updatedTailwindConfigContent).toMatchInlineSnapshot(`
-"import plugin from 'tailwindcss/plugin';
-
-/** @type {import('tailwindcss').Config} */
-export default {
- plugins: [
- require('tailwindcss-animate'),
- plugin(function ({ addUtilities }) {
- addUtilities({
- '.press': {
- transform: 'var(--transform-press)',
- },
- });
- }),
- somePlugin,
- ],
- content: [join(__dirname, 'src/**/*.{js,ts,jsx,tsx,mdx}')],
- darkMode: 'class',
- theme: {
- screens: {
- sm: '640px',
- md: '768px',
- lg: '1024px',
- xl: '1280px',
- '2xl': '1536px',
- },
- important: true,
- extend: {
- colors: {
- border: 'hsl(var(--border))',
- input: 'hsl(var(--input))',
- ring: 'hsl(var(--ring))',
- background: 'hsl(var(--background))',
- foreground: 'hsl(var(--foreground))',
- primary: {
- DEFAULT: 'hsl(var(--primary))',
- foreground: 'hsl(var(--primary-foreground))',
- },
- secondary: {
- DEFAULT: 'hsl(var(--secondary))',
- foreground: 'hsl(var(--secondary-foreground))',
- },
- alert: {
- DEFAULT: 'hsl(var(--alert))',
- foreground: 'hsl(var(--alert-foreground))',
- },
- muted: {
- DEFAULT: 'hsl(var(--muted))',
- foreground: 'hsl(var(--muted-foreground))',
- },
- accent: {
- DEFAULT: 'hsl(var(--accent))',
- foreground: 'hsl(var(--accent-foreground))',
- },
- card: {
- DEFAULT: 'hsl(var(--card))',
- foreground: 'hsl(var(--card-foreground))',
- },
- popover: {
- DEFAULT: 'hsl(var(--popover))',
- foreground: 'hsl(var(--popover-foreground))',
- },
- },
- borderRadius: {
- base: 'var(--border-radius)',
- sm: 'calc(var(--border-radius) + 0.125rem)',
- DEFAULT: 'calc(var(--border-radius) + 0.25rem)',
- md: 'calc(var(--border-radius) + 0.375rem)',
- lg: 'calc(var(--border-radius) + 0.5rem)',
- xl: 'calc(var(--border-radius) + 0.75rem)',
- '2xl': 'calc(var(--border-radius) + 1rem)',
- '3xl': 'calc(var(--border-radius) + 1.5rem)',
- },
- borderWidth: {
- base: 'var(--border-width)',
- DEFAULT: 'calc(var(--border-width) + 1px)',
- 2: 'calc(var(--border-width) + 2px)',
- 4: 'calc(var(--border-width) + 4px)',
- 8: 'calc(var(--border-width) + 8px)',
- },
- boxShadow: {
- base: 'var(--shadow-base)',
- sm: 'var(--shadow-sm)',
- DEFAULT: 'var(--shadow)',
- md: 'var(--shadow-md)',
- lg: 'var(--shadow-lg)',
- xl: 'var(--shadow-xl)',
- '2xl': 'var(--shadow-2xl)',
- inner: 'var(--shadow-inner)',
- },
- strokeWidth: {
- 0: '0',
- base: 'var(--stroke-width)',
- 1: 'calc(var(--stroke-width) + 1px)',
- 2: 'calc(var(--stroke-width) + 2px)',
- },
- animation: {
- 'accordion-up': 'collapsible-up 0.2s ease-out 0s 1 normal forwards',
- 'accordion-down': 'collapsible-down 0.2s ease-out 0s 1 normal forwards',
- },
- keyframes: {
- 'collapsible-down': {
- from: { height: '0' },
- to: { height: 'var(--qwikui-collapsible-content-height)' },
- },
- 'collapsible-up': {
- from: { height: 'var(--qwikui-collapsible-content-height)' },
- to: { height: '0' },
- },
- },
- fontFamily: {
- sans: ['Inter Variable', 'sans-serif'],
- },
- },
- },
-};
-"
-`);
- });
-
test(`
GIVEN no options are passed
THEN it should generate "simple" style with primary color "cyan-600", base color "slate" and border-radius 0`, async () => {
@@ -483,91 +28,190 @@ export default {
const updatedGlobalCssContent = tree.read('src/global.css', 'utf-8');
expect(updatedGlobalCssContent).toMatchInlineSnapshot(`
-"@tailwind components;
-@tailwind base;
-@tailwind utilities;
-@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 222.2 47.4% 11.2%;
- --muted: 210 40% 96.1%;
- --muted-foreground: 215.4 16.3% 46.9%;
- --popover: 0 0% 100%;
- --popover-foreground: 222.2 47.4% 11.2%;
- --card: 0 0% 100%;
- --card-foreground: 222.2 47.4% 11.2%;
- --border: 214.3 31.8% 91.4%;
- --input: 214.3 31.8% 91.4%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 222.2 47.4% 11.2%;
- --secondary-foreground: 0 0% 100%;
- --accent: 210 40% 96.1%;
- --accent-foreground: 222.2 47.4% 11.2%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 210 40% 98%;
- --ring: 222.2 47.4% 11.2%;
- --border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
- --shadow-md:
- 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
- --shadow-lg:
- 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
- --shadow-xl:
- 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
- --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: scale(0.95);
- }
- .dark {
- --background: 222.2 84% 4.9%;
- --foreground: 210 40% 98%;
- --muted: 217.2 32.6% 17.5%;
- --muted-foreground: 215 20.2% 65.1%;
- --popover: 222.2 84% 4.9%;
- --popover-foreground: 210 40% 98%;
- --card: 222.2 84% 4.9%;
- --card-foreground: 210 40% 98%;
- --border: 217.2 32.6% 17.5%;
- --input: 217.2 32.6% 17.5%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 210 40% 96.1%;
- --secondary-foreground: 0 0% 0%;
- --accent: 217.2 32.6% 17.5%;
- --accent-foreground: 210 40% 98%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 210 40% 98%;
- --ring: 212.7 26.8% 83.9;
- --border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
- --shadow-md:
- 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
- --shadow-lg:
- 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
- --shadow-xl:
- 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
- --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: scale(0.95);
- }
-}
-
-html {
- height: 100%;
- min-height: 100%;
- scroll-behavior: smooth;
- background-color: var(--color-bg) !important;
- color: var(--color-text) !important;
-}
-"
-`);
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
+ :root {
+ --background: white;
+ --foreground: var(--color-slate-950);
+ --muted: var(--color-slate-100);
+ --muted-foreground: var(--color-slate-700);
+ --popover: white;
+ --popover-foreground: var(--color-slate-900);
+ --card: white;
+ --card-foreground: var(--color-slate-900);
+ --border: var(--color-slate-200);
+ --input: var(--color-slate-200);
+ --primary: var(--color-cyan-600);
+ --primary-foreground: white;
+ --secondary: var(--color-slate-900);
+ --secondary-foreground: white;
+ --accent: var(--color-slate-100);
+ --accent-foreground: var(--color-slate-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-900);
+ --border-width: 0px;
+ --stroke-width: 1px;
+ --border-radius: 0rem;
+ --shadow-base: none;
+ --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-md:
+ 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+ --shadow-lg:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+ --shadow-xl:
+ 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
+ }
+ .dark {
+ --background: var(--color-slate-950);
+ --foreground: var(--color-slate-50);
+ --muted: var(--color-slate-800);
+ --muted-foreground: var(--color-slate-300);
+ --popover: var(--color-slate-950);
+ --popover-foreground: var(--color-slate-50);
+ --card: var(--color-slate-950);
+ --card-foreground: var(--color-slate-50);
+ --border: var(--color-slate-800);
+ --input: var(--color-slate-800);
+ --primary: var(--color-cyan-600);
+ --primary-foreground: white;
+ --secondary: var(--color-slate-100);
+ --secondary-foreground: black;
+ --accent: var(--color-slate-700);
+ --accent-foreground: var(--color-slate-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-300);
+ --border-width: 0px;
+ --stroke-width: 1px;
+ --border-radius: 0rem;
+ --shadow-base: none;
+ --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
+ --shadow-md:
+ 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+ --shadow-lg:
+ 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
+ --shadow-xl:
+ 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
+ }
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+ "
+ `);
});
test(`
GIVEN style is "brutalist" and primary color is "red-600" and border-radius is 1
@@ -584,84 +228,183 @@ html {
const updatedGlobalCssContent = tree.read('src/global.css', 'utf-8');
expect(updatedGlobalCssContent).toMatchInlineSnapshot(`
-"@tailwind components;
-@tailwind base;
-@tailwind utilities;
-@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 222.2 47.4% 11.2%;
- --muted: 210 40% 96.1%;
- --muted-foreground: 215.4 16.3% 46.9%;
- --popover: 0 0% 100%;
- --popover-foreground: 222.2 47.4% 11.2%;
- --card: 0 0% 100%;
- --card-foreground: 222.2 47.4% 11.2%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 0 72.2% 50.6%;
- --primary-foreground: 0 0% 100%;
- --secondary: 222.2 47.4% 11.2%;
- --secondary-foreground: 0 0% 100%;
- --accent: 210 40% 96.1%;
- --accent-foreground: 222.2 47.4% 11.2%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 210 40% 98%;
- --ring: 0 0% 0%;
- --border-width: 2px;
- --border-radius: 1rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 2px 2px 0px 0px rgba(0, 0, 0, 0);
- --transform-press: translate(4px, 4px);
- }
- .dark {
- --background: 222.2 84% 4.9%;
- --foreground: 210 40% 98%;
- --muted: 217.2 32.6% 17.5%;
- --muted-foreground: 215 20.2% 65.1%;
- --popover: 222.2 84% 4.9%;
- --popover-foreground: 210 40% 98%;
- --card: 222.2 84% 4.9%;
- --card-foreground: 210 40% 98%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 0 72.2% 50.6%;
- --primary-foreground: 0 0% 100%;
- --secondary: 210 40% 96.1%;
- --secondary-foreground: 0 0% 0%;
- --accent: 217.2 32.6% 17.5%;
- --accent-foreground: 210 40% 98%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 210 40% 98%;
- --ring: 0 0% 0%;
- --border-width: 2px;
- --border-radius: 1rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: translate(4px, 4px);
- }
-}
-
-html {
- height: 100%;
- min-height: 100%;
- scroll-behavior: smooth;
- background-color: var(--color-bg) !important;
- color: var(--color-text) !important;
-}
-"
-`);
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
+ :root {
+ --background: white;
+ --foreground: var(--color-slate-950);
+ --muted: var(--color-slate-100);
+ --muted-foreground: var(--color-slate-700);
+ --popover: white;
+ --popover-foreground: var(--color-slate-900);
+ --card: white;
+ --card-foreground: var(--color-slate-900);
+ --border: black;
+ --input: black;
+ --primary: var(--color-red-600);
+ --primary-foreground: white;
+ --secondary: var(--color-slate-900);
+ --secondary-foreground: white;
+ --accent: var(--color-slate-100);
+ --accent-foreground: var(--color-slate-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: black;
+ --border-width: 2px;
+ --stroke-width: 2px;
+ --border-radius: 1rem;
+ --shadow-base: 0px 1px rgba(0, 0, 0, 1);
+ --shadow-2xs: 1px 2px rgba(0, 0, 0, 1);
+ --shadow-xs: 3px 4px rgba(0, 0, 0, 1);
+ --shadow-sm: 5px 6px rgba(0, 0, 0, 1);
+ --shadow-md: 7px 8px rgba(0, 0, 0, 1);
+ --shadow-lg: 9px 10px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 12px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 14px rgba(0, 0, 0, 1);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: translate(4px, 4px);
+ }
+ .dark {
+ --background: var(--color-slate-950);
+ --foreground: var(--color-slate-50);
+ --muted: var(--color-slate-800);
+ --muted-foreground: var(--color-slate-300);
+ --popover: var(--color-slate-950);
+ --popover-foreground: var(--color-slate-50);
+ --card: var(--color-slate-950);
+ --card-foreground: var(--color-slate-50);
+ --border: black;
+ --input: black;
+ --primary: var(--color-red-600);
+ --primary-foreground: white;
+ --secondary: var(--color-slate-100);
+ --secondary-foreground: black;
+ --accent: var(--color-slate-700);
+ --accent-foreground: var(--color-slate-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: black;
+ --border-width: 3px;
+ --stroke-width: 2px;
+ --border-radius: 1rem;
+ --shadow-base: 0px 1px rgba(0, 0, 0, 1);
+ --shadow-2xs: 0px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 1px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 3px 4px rgba(0, 0, 0, 1);
+ --shadow-md: 5px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 7px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 9px 10px rgba(0, 0, 0, 1);
+ --shadow-2xl: 11px 12px rgba(0, 0, 0, 1);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: translate(4px, 4px);
+ }
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+ "
+ `);
});
});
diff --git a/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.ts b/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.ts
index 50751c232..c4350d49c 100644
--- a/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.ts
+++ b/packages/cli/src/generators/setup-tailwind/setup-tailwind-generator.ts
@@ -1,15 +1,13 @@
-import { Tree, formatFiles, joinPathFragments, workspaceRoot } from '@nx/devkit';
+import { Tree, formatFiles, joinPathFragments } from '@nx/devkit';
import {
ThemeBaseColors,
ThemeBorderRadiuses,
ThemePrimaryColors,
ThemeStyles,
- extractBetweenComments,
extractThemeCSS,
type ThemeConfig,
} from '@qwik-ui/utils';
import { readFileSync } from 'fs';
-import { join } from 'path';
import { getKitRoot } from '../../_shared/get-kit-root';
import { SetupTailwindGeneratorSchema } from './schema';
@@ -28,8 +26,6 @@ export async function setupTailwindGenerator(
options.borderRadius = options.borderRadius ?? ThemeBorderRadiuses['BORDER-RADIUS-0'];
- updateTailwindConfig(tree, options.projectRoot, kitRoot);
-
updateRootCss(tree, globalCssPath, kitRoot, {
style: options.style,
primaryColor: options.primaryColor,
@@ -39,142 +35,6 @@ export async function setupTailwindGenerator(
await formatFiles(tree);
}
-function updateTailwindConfig(tree: Tree, projectRoot: string, kitRoot: string) {
- const tailwindConfigPath = getTailwindConfigPath(tree, projectRoot, workspaceRoot);
-
- if (!tailwindConfigPath) {
- throw new Error('Could not find a tailwind config file');
- }
-
- const tailwindConfigContent = tree.read(tailwindConfigPath, 'utf-8');
-
- if (!tailwindConfigContent) {
- throw new Error('Could not read the tailwind config file');
- }
-
- const tailwindConfigTemplatePath = joinPathFragments(
- kitRoot,
- 'src',
- 'templates',
- 'tailwind.config.cjs',
- );
-
- const tailwindTemplate = readFileSync(tailwindConfigTemplatePath, 'utf-8');
-
- const pluginTemplate = extractBetweenComments(
- tailwindTemplate,
- '// PLUGIN-START',
- '// PLUGIN-END',
- );
- const extendTemplate = extractBetweenComments(
- tailwindTemplate,
- '// EXTEND-START',
- '// EXTEND-END',
- );
-
- let modifiedTailwindConfigContent = addPluginToConfig(
- pluginTemplate,
- tailwindConfigContent,
- );
-
- const extendKeyword = /\bextend:\s*\{/;
-
- modifiedTailwindConfigContent = insertAfter({
- whatToFind: extendKeyword,
- whereToFindIt: modifiedTailwindConfigContent,
- whatToInsert: extendTemplate,
- shouldThrow: true,
- errorTitle: 'extend',
- });
-
- tree.write(tailwindConfigPath, modifiedTailwindConfigContent);
-}
-
-function addPluginToConfig(pluginTemplate: string, tailwindConfigContent: string) {
- let modifiedTailwindConfigContent;
- const commonJsModuleExportsRegex = /\bmodule\.exports\s*=\s*\{/;
- const isESM = !commonJsModuleExportsRegex.test(tailwindConfigContent);
-
- const esmModuleExportsRegex = /\bexport\s*default\s*\{/;
- const pluginsKeyword = /\bplugins:\s*\[/;
-
- modifiedTailwindConfigContent = insertAfter({
- whatToFind: pluginsKeyword,
- whereToFindIt: tailwindConfigContent,
- whatToInsert: pluginTemplate,
- shouldThrow: false,
- });
-
- if (modifiedTailwindConfigContent) {
- return addPluginImportStatement(modifiedTailwindConfigContent, isESM);
- }
-
- pluginTemplate = `plugins: [\n${pluginTemplate}\n ],\n`;
-
- modifiedTailwindConfigContent = insertAfter({
- whatToFind: commonJsModuleExportsRegex,
- whereToFindIt: tailwindConfigContent,
- whatToInsert: pluginTemplate,
- shouldThrow: false,
- });
-
- // if the result is undefined that means that
- // it didn't find the `module.exports` string
- if (!modifiedTailwindConfigContent) {
- modifiedTailwindConfigContent = insertAfter({
- whatToFind: esmModuleExportsRegex,
- whereToFindIt: tailwindConfigContent,
- whatToInsert: pluginTemplate,
- shouldThrow: true,
- errorTitle: '"module.exports" or "export default"',
- });
- }
-
- return addPluginImportStatement(modifiedTailwindConfigContent, isESM);
-}
-
-function addPluginImportStatement(content: string, isESM = false) {
- if (isESM) {
- return `import plugin from 'tailwindcss/plugin';
-${content}`;
- }
- return `const plugin = require('tailwindcss/plugin');
-${content}`;
-}
-
-type InsertAfterConfig = {
- whatToFind: RegExp;
- whereToFindIt: string;
- whatToInsert: string;
- shouldThrow?: boolean;
- errorTitle?: string;
-};
-
-function insertAfter({
- whatToFind,
- whereToFindIt: content,
- whatToInsert,
- shouldThrow,
- errorTitle,
-}: InsertAfterConfig) {
- const match = content.match(whatToFind);
-
- if (!match || !match.index) {
- if (shouldThrow) {
- throw new Error(`Could not find the "${errorTitle}" in your tailwind config file`);
- }
- return;
- }
-
- if (match && match.index) {
- const startIndex = match.index + match[0].length;
- const modifiedTailwindConfigContent =
- content.slice(0, startIndex) + whatToInsert + content.slice(startIndex);
-
- return modifiedTailwindConfigContent;
- }
-}
-
function updateRootCss(
tree: Tree,
globalCssPath: string,
@@ -224,30 +84,4 @@ function updateRootCss(
tree.write(globalCssPath, updatedGlobalCssContent);
}
-// CREDIT FOR CODE: Nx Angular plugin
-function getTailwindConfigPath(
- tree: Tree,
- projectRoot: string,
- workspaceRoot: string,
-): string | undefined {
- // valid tailwind config files https://github.com/tailwindlabs/tailwindcss/blob/master/src/util/resolveConfigPath.js#L4
- const tailwindConfigFiles = [
- 'tailwind.config.js',
- 'tailwind.config.cjs',
- 'tailwind.config.mjs',
- 'tailwind.config.ts',
- ];
-
- for (const basePath of [projectRoot, workspaceRoot]) {
- for (const configFile of tailwindConfigFiles) {
- const fullPath = join(basePath, configFile);
- if (tree.read(fullPath)) {
- return fullPath;
- }
- }
- }
-
- return undefined;
-}
-
export default setupTailwindGenerator;
diff --git a/packages/kit-headless/src/components/carousel/use-scroller.tsx b/packages/kit-headless/src/components/carousel/use-scroller.tsx
index 60f90ee6c..3b6bfcb1c 100644
--- a/packages/kit-headless/src/components/carousel/use-scroller.tsx
+++ b/packages/kit-headless/src/components/carousel/use-scroller.tsx
@@ -77,7 +77,7 @@ export function useScroller(context: CarouselContext) {
}
context.scrollerRef.value.style.transition = isEnabled
- ? givenTransitionSig.value ?? 'revert'
+ ? (givenTransitionSig.value ?? 'revert')
: 'none';
});
diff --git a/packages/kit-headless/src/components/collapsible/use-collapsible.tsx b/packages/kit-headless/src/components/collapsible/use-collapsible.tsx
index 8c9d6955f..8efb33a13 100644
--- a/packages/kit-headless/src/components/collapsible/use-collapsible.tsx
+++ b/packages/kit-headless/src/components/collapsible/use-collapsible.tsx
@@ -14,6 +14,9 @@ export function useCollapsible() {
display: 'block',
});
+ // Remove the hidden attribute because tailwind can override it
+ clone.removeAttribute('hidden');
+
el.after(clone);
const height = clone.offsetHeight;
diff --git a/packages/kit-headless/src/components/select/select-display-value.tsx b/packages/kit-headless/src/components/select/select-display-value.tsx
index caf3525a4..3d5801bef 100644
--- a/packages/kit-headless/src/components/select/select-display-value.tsx
+++ b/packages/kit-headless/src/components/select/select-display-value.tsx
@@ -31,7 +31,7 @@ export const HSelectDisplayValue = component$((props: SelectValueProps) => {
} else {
return context.multiple
? context.currDisplayValueSig.value
- : context.currDisplayValueSig.value?.[0] ?? placeholder;
+ : (context.currDisplayValueSig.value?.[0] ?? placeholder);
}
});
diff --git a/packages/kit-headless/src/utils/get-hidden-height.ts b/packages/kit-headless/src/utils/get-hidden-height.ts
deleted file mode 100644
index 981bccde1..000000000
--- a/packages/kit-headless/src/utils/get-hidden-height.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/* similar to React's useLayoutEffect, we want to get the height of a hidden element */
-export function getHiddenHeight(el: HTMLElement) {
- const clone = el.cloneNode(true) as HTMLElement;
-
- Object.assign(clone.style, {
- overflow: 'visible',
- height: 'auto',
- maxHeight: 'none',
- opacity: '0',
- visibility: 'hidden',
- display: 'block',
- });
-
- el.after(clone);
- const height = clone.offsetHeight;
-
- clone.remove();
-
- return height;
-}
diff --git a/packages/kit-styled/src/components/accordion/accordion.tsx b/packages/kit-styled/src/components/accordion/accordion.tsx
index 4437f0814..f3c9aa583 100644
--- a/packages/kit-styled/src/components/accordion/accordion.tsx
+++ b/packages/kit-styled/src/components/accordion/accordion.tsx
@@ -45,11 +45,11 @@ const Content = component$
>((props) =>
-
+
diff --git a/packages/kit-styled/src/components/alert/alert.tsx b/packages/kit-styled/src/components/alert/alert.tsx
index ddf0e2f87..76546b23f 100644
--- a/packages/kit-styled/src/components/alert/alert.tsx
+++ b/packages/kit-styled/src/components/alert/alert.tsx
@@ -4,7 +4,7 @@ import { cn } from '@qwik-ui/utils';
import { cva, type VariantProps } from 'class-variance-authority';
export const alertVariants = cva(
- 'relative w-full rounded-lg border p-4 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7',
+ 'relative w-full rounded-lg border p-4 [&>svg]:absolute [&>svg]:top-4 [&>svg]:left-4 [&>svg]:text-foreground [&>svg+div]:translate-y-[-3px] [&>svg~*]:pl-7',
{
variants: {
look: {
@@ -34,7 +34,7 @@ const Title = component$
>(({ ...props }) => {
return (
diff --git a/packages/kit-styled/src/components/badge/badge.tsx b/packages/kit-styled/src/components/badge/badge.tsx
index 00885865a..8932a9c20 100644
--- a/packages/kit-styled/src/components/badge/badge.tsx
+++ b/packages/kit-styled/src/components/badge/badge.tsx
@@ -3,7 +3,7 @@ import { cn } from '@qwik-ui/utils';
import { cva, type VariantProps } from 'class-variance-authority';
export const badgeVariants = cva(
- 'inline-flex items-center rounded-sm px-2.5 py-0.5 text-xs font-semibold shadow-sm transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',
+ 'inline-flex items-center rounded-sm px-2.5 py-0.5 text-xs font-semibold shadow-sm transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden',
{
variants: {
look: {
diff --git a/packages/kit-styled/src/components/breadcrumb/breadcrumb.tsx b/packages/kit-styled/src/components/breadcrumb/breadcrumb.tsx
index bafc78b1b..42a0cfb08 100644
--- a/packages/kit-styled/src/components/breadcrumb/breadcrumb.tsx
+++ b/packages/kit-styled/src/components/breadcrumb/breadcrumb.tsx
@@ -16,7 +16,7 @@ const List = component$>((props) => {
diff --git a/packages/kit-styled/src/components/button/button.tsx b/packages/kit-styled/src/components/button/button.tsx
index 487d595d0..1b88aa971 100644
--- a/packages/kit-styled/src/components/button/button.tsx
+++ b/packages/kit-styled/src/components/button/button.tsx
@@ -3,25 +3,25 @@ import { cn } from '@qwik-ui/utils';
import { cva, type VariantProps } from 'class-variance-authority';
export const buttonVariants = cva(
- 'group inline-flex items-center justify-center rounded text-sm font-medium transition-all duration-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',
+ 'group inline-flex items-center justify-center rounded text-sm font-medium transition-all duration-100 focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50',
{
variants: {
look: {
primary:
- 'border-base bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:shadow-base active:press',
+ 'border-base bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:press active:shadow-base',
secondary:
- 'border-base bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/90 active:shadow-base active:press',
+ 'border-base bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/90 active:press active:shadow-base',
alert:
- 'border-base bg-alert text-alert-foreground shadow-sm hover:bg-alert/90 active:shadow-base active:press',
+ 'border-base bg-alert text-alert-foreground shadow-sm hover:bg-alert/90 active:press active:shadow-base',
outline:
- 'border bg-background text-foreground shadow-sm hover:bg-accent active:shadow-base active:press',
+ 'border bg-background text-foreground shadow-sm hover:bg-accent active:press active:shadow-base',
ghost: 'text-accent-foreground hover:bg-accent',
link: 'text-foreground hover:bg-transparent hover:text-foreground/80 hover:underline hover:underline-offset-2',
},
size: {
sm: 'h-8 px-2 py-1.5 text-sm',
md: 'h-12 px-4 py-3 text-base',
- lg: ' h-16 px-8 py-4 text-lg',
+ lg: 'h-16 px-8 py-4 text-lg',
icon: 'h-10 w-10',
},
},
diff --git a/packages/kit-styled/src/components/card/card.tsx b/packages/kit-styled/src/components/card/card.tsx
index 4bc3bf277..9ab3093b1 100644
--- a/packages/kit-styled/src/components/card/card.tsx
+++ b/packages/kit-styled/src/components/card/card.tsx
@@ -25,7 +25,7 @@ const Header = component$>((props) => {
const Title = component$>((props) => {
return (
-
+
);
diff --git a/packages/kit-styled/src/components/carousel/carousel.tsx b/packages/kit-styled/src/components/carousel/carousel.tsx
index 57b20e705..66f31527b 100644
--- a/packages/kit-styled/src/components/carousel/carousel.tsx
+++ b/packages/kit-styled/src/components/carousel/carousel.tsx
@@ -93,7 +93,7 @@ const Previous = component$<
class={cn(
'absolute',
context.orientation === 'horizontal'
- ? '-left-12 top-1/2 -translate-y-1/2'
+ ? 'top-1/2 -left-12 -translate-y-1/2'
: '-top-12 right-1/2 translate-x-1/2',
)}
>
@@ -129,8 +129,8 @@ const Next = component$<
class={cn(
'absolute',
context.orientation === 'horizontal'
- ? '-right-12 top-1/2 -translate-y-1/2'
- : '-bottom-12 right-1/2 translate-x-1/2',
+ ? 'top-1/2 -right-12 -translate-y-1/2'
+ : 'right-1/2 -bottom-12 translate-x-1/2',
)}
>
{/* moves content to the right on hover */}
@@ -174,7 +174,7 @@ const Bullet = component$>((props) => {
{...props}
class={cn(
'size-5 rounded-full border border-background bg-muted outline-0 outline-muted transition-all duration-300 ease-in-out hover:border-muted',
- 'data-[active]:border-primary data-[active]:bg-primary data-[active]:text-primary-foreground',
+ 'data-active:border-primary data-active:bg-primary data-active:text-primary-foreground',
props.class,
)}
/>
@@ -205,7 +205,7 @@ const Step = component$>((props) => {
diff --git a/packages/kit-styled/src/components/combobox/combobox.tsx b/packages/kit-styled/src/components/combobox/combobox.tsx
index bef1e56a1..582ed4e2a 100644
--- a/packages/kit-styled/src/components/combobox/combobox.tsx
+++ b/packages/kit-styled/src/components/combobox/combobox.tsx
@@ -51,7 +51,7 @@ const Control = component$>((props) =>
return (
@@ -63,7 +63,7 @@ const Input = component$>((props) => {
@@ -85,7 +85,7 @@ const Popover = component$>((props) =>
return (
@@ -97,7 +97,7 @@ const Item = component$>(({ ...props }) =>
diff --git a/packages/kit-styled/src/components/dropdown/dropdown.tsx b/packages/kit-styled/src/components/dropdown/dropdown.tsx
index 6f5242661..69a82912c 100644
--- a/packages/kit-styled/src/components/dropdown/dropdown.tsx
+++ b/packages/kit-styled/src/components/dropdown/dropdown.tsx
@@ -32,8 +32,8 @@ const Popover = component$((props: PopoverProps) => {
{
(
value={bindSig ? bindSig.value : value}
onInput$={[bindSig && $((_, el) => (bindSig.value = el.value)), onInput$]}
class={cn(
- 'flex h-12 w-full rounded-base border border-input bg-background px-3 py-1 text-sm text-foreground shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
+ 'rounded-base flex h-12 w-full border border-input bg-background px-3 py-1 text-sm text-foreground shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
props.class,
)}
id={inputId}
diff --git a/packages/kit-styled/src/components/modal/modal.tsx b/packages/kit-styled/src/components/modal/modal.tsx
index 67a77389c..f21ef30dc 100644
--- a/packages/kit-styled/src/components/modal/modal.tsx
+++ b/packages/kit-styled/src/components/modal/modal.tsx
@@ -11,21 +11,21 @@ const Close = HeadlessModal.Close;
export const panelVariants = cva(
[
- 'fixed w-full bg-background p-6 text-foreground transition-all backdrop:brightness-50 backdrop:backdrop-blur-sm',
- 'data-[closing]:duration-300 data-[open]:duration-300 data-[open]:animate-in data-[closing]:animate-out',
- 'backdrop:data-[closing]:duration-300 backdrop:data-[open]:duration-300 backdrop:data-[open]:animate-in backdrop:data-[closing]:animate-out backdrop:data-[closing]:fade-out backdrop:data-[open]:fade-in',
+ 'fixed bg-background p-6 text-foreground transition-all backdrop:brightness-50 backdrop:backdrop-blur-xs',
+ 'data-closing:animate-out data-closing:duration-300 data-open:animate-in data-open:duration-300',
+ 'data-closing:backdrop:animate-out data-closing:backdrop:duration-300 data-closing:backdrop:fade-out data-open:backdrop:animate-in data-open:backdrop:duration-300 data-open:backdrop:fade-in',
],
{
variants: {
position: {
center:
- 'max-w-lg rounded-base shadow-lg data-[closed]:fade-out data-[open]:fade-in data-[closed]:zoom-out-95 data-[open]:zoom-in-95 data-[open]:slide-in-from-bottom-2 backdrop:data-[closing]:fade-out backdrop:data-[open]:fade-in',
- top: 'inset-x-0 top-0 mb-auto mt-0 rounded-b-base border-b data-[closing]:slide-out-to-top data-[open]:slide-in-from-top',
+ 'rounded-base m-auto max-w-lg shadow-lg data-closed:zoom-out-95 data-closed:fade-out data-closing:backdrop:fade-out data-open:zoom-in-95 data-open:fade-in data-open:slide-in-from-bottom-2 data-open:backdrop:fade-in',
+ top: 'rounded-b-base inset-x-0 top-0 mb-auto w-full border-b data-closing:slide-out-to-top data-open:slide-in-from-top',
bottom:
- 'inset-x-0 bottom-0 mb-0 mt-auto rounded-t-base border-t data-[closing]:slide-out-to-bottom data-[open]:slide-in-from-bottom',
- left: 'inset-y-0 left-0 ml-0 mr-auto h-full max-w-sm rounded-r-base border-r data-[closing]:slide-out-to-left data-[open]:slide-in-from-left',
+ 'rounded-t-base inset-x-0 bottom-0 mt-auto w-full border-t data-closing:slide-out-to-bottom data-open:slide-in-from-bottom',
+ left: 'rounded-r-base inset-y-0 left-0 mr-auto h-full max-w-sm border-r data-closing:slide-out-to-left data-open:slide-in-from-left',
right:
- 'inset-y-0 right-0 ml-auto mr-0 h-full max-w-sm rounded-l-base border-l data-[closing]:slide-out-to-right data-[open]:slide-in-from-right',
+ 'rounded-l-base inset-y-0 right-0 ml-auto h-full max-w-sm border-l data-closing:slide-out-to-right data-open:slide-in-from-right',
},
},
defaultVariants: {
diff --git a/packages/kit-styled/src/components/popover/popover.tsx b/packages/kit-styled/src/components/popover/popover.tsx
index dc5e26b97..f5ddf1311 100644
--- a/packages/kit-styled/src/components/popover/popover.tsx
+++ b/packages/kit-styled/src/components/popover/popover.tsx
@@ -17,8 +17,8 @@ const Panel = component$>(({ ...props }) =
>((props
return (
>(({ ...props }
span]:line-clamp-1',
+ 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-sm ring-offset-background placeholder:text-muted-foreground focus:ring-1 focus:ring-ring focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',
props.class,
)}
>
@@ -50,7 +50,7 @@ const Popover = component$>(({ ...props }
@@ -71,8 +71,8 @@ const Item = component$>(({ ...props }) => {
diff --git a/packages/kit-styled/src/components/skeleton/skeleton.tsx b/packages/kit-styled/src/components/skeleton/skeleton.tsx
index 160ad89ec..1a276c456 100644
--- a/packages/kit-styled/src/components/skeleton/skeleton.tsx
+++ b/packages/kit-styled/src/components/skeleton/skeleton.tsx
@@ -3,6 +3,9 @@ import { cn } from '@qwik-ui/utils';
export const Skeleton = component$>(({ ...props }) => {
return (
-
+
);
});
diff --git a/packages/kit-styled/src/components/tabs/tabs.tsx b/packages/kit-styled/src/components/tabs/tabs.tsx
index e9e4d86fa..0270d2fdb 100644
--- a/packages/kit-styled/src/components/tabs/tabs.tsx
+++ b/packages/kit-styled/src/components/tabs/tabs.tsx
@@ -30,7 +30,7 @@ const Tab = component$>((props) => {
@@ -44,7 +44,7 @@ const Panel = component$>((props) => {
diff --git a/packages/kit-styled/src/components/textarea/textarea.tsx b/packages/kit-styled/src/components/textarea/textarea.tsx
index fc6700a79..6c906382e 100644
--- a/packages/kit-styled/src/components/textarea/textarea.tsx
+++ b/packages/kit-styled/src/components/textarea/textarea.tsx
@@ -16,7 +16,7 @@ export const Textarea = component$(
value={bindSig ? bindSig.value : value}
onInput$={[bindSig && $((_, el) => (bindSig.value = el.value)), onInput$]}
class={cn(
- '[&::-webkit-scrollbar-track]:bg-blue flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
+ '[&::-webkit-scrollbar-track]:bg-blue flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
props.class,
)}
id={textareaId}
diff --git a/packages/kit-styled/src/components/toggle/toggle.tsx b/packages/kit-styled/src/components/toggle/toggle.tsx
index e53226102..cf644ed54 100644
--- a/packages/kit-styled/src/components/toggle/toggle.tsx
+++ b/packages/kit-styled/src/components/toggle/toggle.tsx
@@ -4,7 +4,7 @@ import { cva, type VariantProps } from 'class-variance-authority';
import { Toggle as HeadlessToggle } from '@qwik-ui/headless';
export const toggleVariants = cva(
- 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 aria-[pressed=true]:bg-primary aria-[pressed=true]:text-primary-foreground',
+ 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50 aria-pressed:bg-primary aria-pressed:text-primary-foreground',
{
variants: {
look: {
diff --git a/packages/kit-styled/src/components/tooltip/tooltip.tsx b/packages/kit-styled/src/components/tooltip/tooltip.tsx
index a4648f6ed..4d8a59961 100644
--- a/packages/kit-styled/src/components/tooltip/tooltip.tsx
+++ b/packages/kit-styled/src/components/tooltip/tooltip.tsx
@@ -17,8 +17,8 @@ const Panel = component$>(({ ...props }) =
{
const theme = extractThemeCSS(inputThemeString, exampleRootCssContent);
expect(theme).toMatchInlineSnapshot(`
- "@layer base {
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
:root {
- --background: 0 0% 100%;
- --foreground: 0 0% 9%;
- --muted: 0 0% 96.1%;
- --muted-foreground: 0 0% 45.1%;
- --popover: 0 0% 100%;
- --popover-foreground: 0 0% 9%;
- --card: 0 0% 100%;
- --card-foreground: 0 0% 9%;
- --border: 0 0% 89.8%;
- --input: 0 0% 89.8%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 0 0% 83.1%;
- --secondary-foreground: 0 0% 9%;
- --accent: 0 0% 96.1%;
- --accent-foreground: 0 0% 9%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 9%;
+ --background: white;
+ --foreground: var(--color-neutral-900);
+ --muted: var(--color-neutral-100);
+ --muted-foreground: var(--color-neutral-700);
+ --popover: white;
+ --popover-foreground: var(--color-neutral-900);
+ --card: white;
+ --card-foreground: var(--color-neutral-900);
+ --border: var(--color-neutral-200);
+ --input: var(--color-neutral-200);
+ --secondary: var(--color-neutral-900);
+ --secondary-foreground: white;
+ --accent: var(--color-neutral-100);
+ --accent-foreground: var(--color-neutral-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-900);
--border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --border-radius: 0rem;
+ --shadow-2xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
@@ -66,30 +70,28 @@ describe('Extract theme from css', () => {
--transform-press: scale(0.95);
}
.dark {
- --background: 0 0% 9%;
- --foreground: 0 0% 98%;
- --muted: 0 0% 14.9%;
- --muted-foreground: 0 0% 63.9%;
- --popover: 0 0% 9%;
- --popover-foreground: 0 0% 98%;
- --card: 0 0% 9%;
- --card-foreground: 0 0% 98%;
- --border: 0 0% 14.9%;
- --input: 0 0% 14.9%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 0 0% 25.1%;
- --secondary-foreground: 0 0% 98%;
- --accent: 0 0% 14.9%;
- --accent-foreground: 0 0% 98%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 83.1%;
+ --background: var(--color-neutral-950);
+ --foreground: var(--color-neutral-50);
+ --muted: var(--color-neutral-800);
+ --muted-foreground: var(--color-neutral-300);
+ --popover: var(--color-neutral-950);
+ --popover-foreground: var(--color-neutral-50);
+ --card: var(--color-neutral-950);
+ --card-foreground: var(--color-neutral-50);
+ --border: var(--color-neutral-800);
+ --input: var(--color-neutral-800);
+ --secondary: var(--color-neutral-100);
+ --secondary-foreground: black;
+ --accent: var(--color-neutral-700);
+ --accent-foreground: var(--color-neutral-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-300);
--border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --border-radius: 0rem;
+ --shadow-2xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
@@ -97,6 +99,106 @@ describe('Extract theme from css', () => {
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
--transform-press: scale(0.95);
}
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
}"
`);
});
@@ -107,82 +209,182 @@ describe('Extract theme from css', () => {
and style is "simple",
in whatever order,
THEN generate the right css variables`, () => {
- const output = `
- "@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 0 0% 9%;
- --muted: 0 0% 96.1%;
- --muted-foreground: 0 0% 45.1%;
- --popover: 0 0% 100%;
- --popover-foreground: 0 0% 9%;
- --card: 0 0% 100%;
- --card-foreground: 0 0% 9%;
- --border: 0 0% 89.8%;
- --input: 0 0% 89.8%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 0 0% 83.1%;
- --secondary-foreground: 0 0% 9%;
- --accent: 0 0% 96.1%;
- --accent-foreground: 0 0% 9%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 9%;
- --border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
- --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: scale(0.95);
- }
- .dark {
- --background: 0 0% 9%;
- --foreground: 0 0% 98%;
- --muted: 0 0% 14.9%;
- --muted-foreground: 0 0% 63.9%;
- --popover: 0 0% 9%;
- --popover-foreground: 0 0% 98%;
- --card: 0 0% 9%;
- --card-foreground: 0 0% 98%;
- --border: 0 0% 14.9%;
- --input: 0 0% 14.9%;
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- --secondary: 0 0% 25.1%;
- --secondary-foreground: 0 0% 98%;
- --accent: 0 0% 14.9%;
- --accent-foreground: 0 0% 98%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 83.1%;
- --border-width: 0px;
- --border-radius: 0;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
- --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
- --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
- --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
- --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
- --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: scale(0.95);
- }
- }"
- `;
-
const themeStringInEveryOrder = generateStringInAllPossibleOrders(
'simple base-neutral primary-cyan-600 border-radius-0',
);
themeStringInEveryOrder.forEach((themeString) => {
const theme = extractThemeCSS(themeString, exampleRootCssContent);
- expect(theme).toMatchInlineSnapshot(output);
+ expect(theme).toMatchInlineSnapshot(`
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
+ :root {
+ --background: white;
+ --foreground: var(--color-neutral-900);
+ --muted: var(--color-neutral-100);
+ --muted-foreground: var(--color-neutral-700);
+ --popover: white;
+ --popover-foreground: var(--color-neutral-900);
+ --card: white;
+ --card-foreground: var(--color-neutral-900);
+ --border: var(--color-neutral-200);
+ --input: var(--color-neutral-200);
+ --secondary: var(--color-neutral-900);
+ --secondary-foreground: white;
+ --accent: var(--color-neutral-100);
+ --accent-foreground: var(--color-neutral-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-900);
+ --border-width: 0px;
+ --border-radius: 0rem;
+ --shadow-2xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
+ }
+ .dark {
+ --background: var(--color-neutral-950);
+ --foreground: var(--color-neutral-50);
+ --muted: var(--color-neutral-800);
+ --muted-foreground: var(--color-neutral-300);
+ --popover: var(--color-neutral-950);
+ --popover-foreground: var(--color-neutral-50);
+ --card: var(--color-neutral-950);
+ --card-foreground: var(--color-neutral-50);
+ --border: var(--color-neutral-800);
+ --input: var(--color-neutral-800);
+ --secondary: var(--color-neutral-100);
+ --secondary-foreground: black;
+ --accent: var(--color-neutral-700);
+ --accent-foreground: var(--color-neutral-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-300);
+ --border-width: 0px;
+ --border-radius: 0rem;
+ --shadow-2xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
+ }
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }"
+ `);
});
});
});
@@ -194,71 +396,173 @@ test(`GIVEN theme string is 'brutalist base-stone primary-pink-700 border-radius
const theme = extractThemeCSS(inputThemeString, exampleRootCssContent);
expect(theme).toMatchInlineSnapshot(`
- "@layer base {
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
:root {
- --background: 0 0% 100%;
- --foreground: 24 9.8% 10%;
- --muted: 60 4.8% 95.9%;
- --muted-foreground: 25 5.3% 44.7%;
- --popover: 0 0% 100%;
- --popover-foreground: 24 9.8% 10%;
- --card: 0 0% 100%;
- --card-foreground: 24 9.8% 10%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 335.1 77.6% 42%;
- --primary-foreground: 0 0% 100%;
- --secondary: 24 5.7% 82.9%;
- --secondary-foreground: 24 9.8% 10%;
- --accent: 60 4.8% 95.9%;
- --accent-foreground: 24 9.8% 10%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 60 9.1% 97.8%;
- --ring: 0 0% 0%;
+ --background: white;
+ --foreground: var(--color-stone-900);
+ --muted: var(--color-stone-100);
+ --muted-foreground: var(--color-stone-700);
+ --popover: white;
+ --popover-foreground: var(--color-stone-900);
+ --card: white;
+ --card-foreground: var(--color-stone-900);
+ --border: black;
+ --input: black;
+ --secondary: var(--color-stone-900);
+ --secondary-foreground: white;
+ --accent: var(--color-stone-100);
+ --accent-foreground: var(--color-stone-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: black;
--border-width: 2px;
+ --stroke-width: 2px;
--border-radius: 0.75rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 2px 2px 0px 0px rgba(0, 0, 0, 0);
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
--transform-press: translate(4px, 4px);
}
.dark {
- --background: 24 9.8% 10%;
- --foreground: 60 9.1% 97.8%;
- --muted: 12 6.5% 15.1%;
- --muted-foreground: 24 5.4% 63.9%;
- --popover: 24 9.8% 10%;
- --popover-foreground: 60 9.1% 97.8%;
- --card: 24 9.8% 10%;
- --card-foreground: 60 9.1% 97.8%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 335.1 77.6% 42%;
- --primary-foreground: 0 0% 100%;
- --secondary: 30 6.3% 25.1%;
- --secondary-foreground: 60 9.1% 97.8%;
- --accent: 12 6.5% 15.1%;
- --accent-foreground: 60 9.1% 97.8%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 0%;
+ --background: var(--color-stone-950);
+ --foreground: var(--color-stone-50);
+ --muted: var(--color-stone-800);
+ --muted-foreground: var(--color-stone-300);
+ --popover: var(--color-stone-950);
+ --popover-foreground: var(--color-stone-50);
+ --card: var(--color-stone-950);
+ --card-foreground: var(--color-stone-50);
+ --border: black;
+ --input: black;
+ --secondary: var(--color-stone-100);
+ --secondary-foreground: black;
+ --accent: var(--color-stone-700);
+ --accent-foreground: var(--color-stone-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: black;
--border-width: 3px;
+ --stroke-width: 2px;
--border-radius: 0.75rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
--transform-press: translate(4px, 4px);
}
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
}"
`);
});
@@ -269,309 +573,965 @@ test(`GIVEN primary color is "pink-700",
and style is "brutalist",
in whatever order,
THEN generate the right css variables`, () => {
- const output = `
- "@layer base {
- :root {
- --background: 0 0% 100%;
- --foreground: 24 9.8% 10%;
- --muted: 60 4.8% 95.9%;
- --muted-foreground: 25 5.3% 44.7%;
- --popover: 0 0% 100%;
- --popover-foreground: 24 9.8% 10%;
- --card: 0 0% 100%;
- --card-foreground: 24 9.8% 10%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 335.1 77.6% 42%;
- --primary-foreground: 0 0% 100%;
- --secondary: 24 5.7% 82.9%;
- --secondary-foreground: 24 9.8% 10%;
- --accent: 60 4.8% 95.9%;
- --accent-foreground: 24 9.8% 10%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 60 9.1% 97.8%;
- --ring: 0 0% 0%;
- --border-width: 2px;
- --border-radius: 0.75rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 2px 2px 0px 0px rgba(0, 0, 0, 0);
- --transform-press: translate(4px, 4px);
- }
- .dark {
- --background: 24 9.8% 10%;
- --foreground: 60 9.1% 97.8%;
- --muted: 12 6.5% 15.1%;
- --muted-foreground: 24 5.4% 63.9%;
- --popover: 24 9.8% 10%;
- --popover-foreground: 60 9.1% 97.8%;
- --card: 24 9.8% 10%;
- --card-foreground: 60 9.1% 97.8%;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --primary: 335.1 77.6% 42%;
- --primary-foreground: 0 0% 100%;
- --secondary: 30 6.3% 25.1%;
- --secondary-foreground: 60 9.1% 97.8%;
- --accent: 12 6.5% 15.1%;
- --accent-foreground: 60 9.1% 97.8%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 0%;
- --border-width: 3px;
- --border-radius: 0.75rem;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
- --transform-press: translate(4px, 4px);
- }
- }"
- `;
-
const themeStringInEveryOrder = generateStringInAllPossibleOrders(
'brutalist base-stone primary-pink-700 border-radius-dot-75',
);
themeStringInEveryOrder.forEach((themeString) => {
const theme = extractThemeCSS(themeString, exampleRootCssContent);
- expect(theme).toMatchInlineSnapshot(output);
+ expect(theme).toMatchInlineSnapshot(`
+ "@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+ @import 'tailwindcss';
+ @import 'tw-animate-css';
+
+ @custom-variant dark (&:is(.dark *));
+
+ @layer base {
+ :root {
+ --background: white;
+ --foreground: var(--color-stone-900);
+ --muted: var(--color-stone-100);
+ --muted-foreground: var(--color-stone-700);
+ --popover: white;
+ --popover-foreground: var(--color-stone-900);
+ --card: white;
+ --card-foreground: var(--color-stone-900);
+ --border: black;
+ --input: black;
+ --secondary: var(--color-stone-900);
+ --secondary-foreground: white;
+ --accent: var(--color-stone-100);
+ --accent-foreground: var(--color-stone-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: black;
+ --border-width: 2px;
+ --stroke-width: 2px;
+ --border-radius: 0.75rem;
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
+ --transform-press: translate(4px, 4px);
+ }
+ .dark {
+ --background: var(--color-stone-950);
+ --foreground: var(--color-stone-50);
+ --muted: var(--color-stone-800);
+ --muted-foreground: var(--color-stone-300);
+ --popover: var(--color-stone-950);
+ --popover-foreground: var(--color-stone-50);
+ --card: var(--color-stone-950);
+ --card-foreground: var(--color-stone-50);
+ --border: black;
+ --input: black;
+ --secondary: var(--color-stone-100);
+ --secondary-foreground: black;
+ --accent: var(--color-stone-700);
+ --accent-foreground: var(--color-stone-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: black;
+ --border-width: 3px;
+ --stroke-width: 2px;
+ --border-radius: 0.75rem;
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
+ --transform-press: translate(4px, 4px);
+ }
+ }
+
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+
+ @utility press {
+ transform: var(--transform-press);
+ }
+ @utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+ }
+ @utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+ }
+ @utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+ }
+
+ @layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }
+
+ @layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+ }"
+ `);
});
});
const exampleRootCssContent = `
+@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+@import 'tailwindcss';
+@import 'tw-animate-css';
+
+@source "../../../packages/kit-styled";
+
+@custom-variant dark (&:is(.dark *));
@layer base {
:root {
+ --background: white;
+ --foreground: var(--color-slate-900);
+ --muted: var(--color-slate-100);
+ --muted-foreground: var(--color-slate-700);
+ --popover: white;
+ --popover-foreground: var(--color-slate-900);
+ --card: white;
+ --card-foreground: var(--color-slate-900);
+ --border: var(--color-slate-200);
+ --input: var(--color-slate-200);
+ --primary: oklch(74.1% 38.5% 234.357);
+ --primary-foreground: black;
+ --secondary: oklch(69.9% 46.25% 301.823);
+ --secondary-foreground: black;
+ --accent: var(--color-slate-100);
+ --accent-foreground: var(--color-slate-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-900);
+ --border-width: 0px;
+ --border-radius: 0;
+ --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
+ --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
+ --shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
+ --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
+ }
+
+ .dark {
+ --background: var(--color-slate-950);
+ --foreground: var(--color-slate-50);
+ --muted: var(--color-slate-800);
+ --muted-foreground: var(--color-slate-300);
+ --popover: var(--color-slate-950);
+ --popover-foreground: var(--color-slate-50);
+ --card: var(--color-slate-950);
+ --card-foreground: var(--color-slate-50);
+ --border: var(--color-slate-800);
+ --input: var(--color-slate-800);
+ --primary: oklch(74.1% 38.5% 234.357);
+ --primary-foreground: black;
+ --secondary: oklch(69.9% 46.25% 301.823);
+ --secondary-foreground: black;
+ --accent: var(--color-slate-700);
+ --accent-foreground: var(--color-slate-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-300);
--border-width: 0px;
+ --border-radius: 0;
--shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
- --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1);
+ --shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --transform-press: scale(0.95);
}
+ @theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+ }
+}
+
+@utility press {
+ transform: var(--transform-press);
+}
+@utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+}
+@utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+}
+@utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+}
+
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
+
+@layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
+
+@layer base {
/* CSS PARSER: START - DO NOT REMOVE */
+ .border-radius-0 {
+ --border-radius: 0rem;
+ }
+
+ .border-radius-dot-25 {
+ --border-radius: 0.25rem;
+ }
+
+ .border-radius-dot-50 {
+ --border-radius: 0.5rem;
+ }
+
+ .border-radius-dot-75 {
+ --border-radius: 0.75rem;
+ }
+
+ .border-radius-1 {
+ --border-radius: 1rem;
+ }
.simple {
--border-width: 0px;
- --shadow-base: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-2xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
+ --shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, 0.01);
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
--shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.1), 0 1px 5px 0px rgba(0, 0, 0, 0.1);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 1);
+ --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);
+ --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);
+ --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);
+ --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);
+ --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);
+ --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);
+ --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);
+ --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);
+ --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
--transform-press: scale(0.95);
}
.brutalist.brutalist {
--border-width: 2px;
- --border: 0 0% 0%;
- --input: 0 0% 0%;
- --ring: 0 0% 0%;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 2px 2px 0px 0px rgba(0, 0, 0, 0);
+ --stroke-width: 2px;
+ --border: black;
+ --input: black;
+ --ring: black;
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow: 5px 5px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
+ --inset-shadow-2xs: inset -1px -1px rgba(0, 0, 0, 1);
+ --inset-shadow-xs: inset -2px -2px rgba(0, 0, 0, 1);
+ --inset-shadow-sm: inset -3px -3px rgba(0, 0, 0, 1);
+ --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.5);
+ --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.5);
+ --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.5);
+ --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.5);
+ --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 1);
+ --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 1);
--transform-press: translate(4px, 4px);
}
.dark.brutalist.brutalist {
--border-width: 3px;
- --shadow-base: 0px 0px 0px 0 rgba(0, 0, 0, 1);
- --shadow-sm: 4px 4px 0px 0 rgba(0, 0, 0, 1);
- --shadow: 5px 5px 0px 0px rgba(0, 0, 0, 1);
- --shadow-md: 6px 6px 0px 0px rgba(0, 0, 0, 1);
- --shadow-lg: 8px 8px 0px 0px rgba(0, 0, 0, 1);
- --shadow-xl: 11px 11px 0px 0px rgba(0, 0, 0, 1);
- --shadow-2xl: 13px 13px 0px 0px rgba(0, 0, 0, 1);
- --shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.01);
+ --stroke-width: 2px;
+ --underline: 2px;
+ --shadow-2xs: 1px 1px rgba(0, 0, 0, 1);
+ --shadow-xs: 2px 2px rgba(0, 0, 0, 1);
+ --shadow-sm: 4px 4px rgba(0, 0, 0, 1);
+ --shadow: 5px 5px rgba(0, 0, 0, 1);
+ --shadow-md: 6px 6px rgba(0, 0, 0, 1);
+ --shadow-lg: 8px 8px rgba(0, 0, 0, 1);
+ --shadow-xl: 11px 11px rgba(0, 0, 0, 1);
+ --shadow-2xl: 13px 13px rgba(0, 0, 0, 1);
+ --inset-shadow-2xs: inset -1px -1px rgba(0, 0, 0, 1);
+ --inset-shadow-xs: inset -2px -2px rgba(0, 0, 0, 1);
+ --inset-shadow-sm: inset -3px -3px rgba(0, 0, 0, 1);
+ --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.5);
+ --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.5);
+ --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.5);
+ --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.5);
+ --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 1);
+ --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 1);
--transform-press: translate(4px, 4px);
}
.neumorphic.neumorphic {
--border-width: 0px;
- --background: 0 0 88%;
- --foreground: 240 5.9% 10%;
- --popover: 0 0 88%;
- --popover-foreground: 240 5.9% 10%;
- --card: 0 0 88%;
- --card-foreground: 240 5.9% 10%;
- --border: 0 0% 80%;
- --ring: 222.2 47.4% 80.2%;
- --shadow-base: -3px -3px 6px #bebebe, 3px 3px 6px #ffffff, inset 1px 1px 2px #bebebe,
+ --stroke-width: 0px;
+ --background: hsl(0 0 88%);
+ --foreground: var(--color-zinc-900);
+ --popover: hsl(0 0 88%);
+ --popover-foreground: var(--color-zinc-900);
+ --card: hsl(0 0 88%);
+ --card-foreground: var(--color-zinc-900);
+ --border: hsl(0 0% 80.2%);
+ --ring: hsl(0 0% 80.2%);
+ --input: hsl(0 0% 80.2%);
+ --shadow-base:
+ -3px -3px 6px #bebebe, 3px 3px 6px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow-sm: 3px 3px 6px #bebebe, -3px -3px 6px #ffffff, inset 1px 1px 2px #bebebe,
+ --shadow-sm:
+ 3px 3px 6px #bebebe, -3px -3px 6px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow: 4px 4px 8px #bebebe, -4px -4px 8px #ffffff, inset 1px 1px 2px #bebebe,
+ --shadow:
+ 4px 4px 8px #bebebe, -4px -4px 8px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow-md: 5px 5px 10px #bebebe, -5px -5px 10px #ffffff, inset 1px 1px 2px #bebebe,
+ --shadow-md:
+ 5px 5px 10px #bebebe, -5px -5px 10px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow-lg: 6px 6px 12px #bebebe, -6px -6px 12px #ffffff, inset 1px 1px 2px #bebebe,
+ --shadow-lg:
+ 6px 6px 12px #bebebe, -6px -6px 12px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow-xl: 8px 8px 15px #bebebe, -8px -8px 15px #ffffff, inset 1px 1px 2px #bebebe,
+ --shadow-xl:
+ 8px 8px 15px #bebebe, -8px -8px 15px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
+ inset -1px -1px 2px rgba(255, 255, 255, 0.5);
+ --shadow-2xl:
+ 10px 10px 20px #bebebe, -10px -10px 20px #ffffff,
+ inset 1px 1px 2px rgba(190, 190, 190, 0.5),
inset -1px -1px 2px rgba(255, 255, 255, 0.5);
- --shadow-2xl: 10px 10px 20px #bebebe, -10px -10px 20px #ffffff,
- inset 1px 1px 2px #bebebe, inset -1px -1px 2px rgba(255, 255, 255, 0.5);
--shadow-inner: inset 4px 4px 8px #bebebe, inset -2px -2px 4px #ffffff;
--transform-press: scale(0.95);
}
.dark.neumorphic.neumorphic {
--border-width: 0px;
- --background: 240 5.3% 26.1%;
- --foreground: 240 5.9% 90%;
- --popover: 240 5.3% 26.1%;
- --popover-foreground: 240 5.9% 90%;
- --card: 240 5.3% 26.1%;
- --card-foreground: 240 5.9% 90%;
- --border: 240 5.9% 20%;
- --ring: 222.2 47.4% 20.2%;
- --shadow-base: -3px -3px 6px #2c2c31, 3px 3px 6px #52525b, inset 1px 1px 2px #2c2c31,
+ --stroke-width: 0px;
+ --background: var(--color-zinc-700);
+ --foreground: var(--color-zinc-200);
+ --popover: var(--color-zinc-700);
+ --popover-foreground: var(--color-zinc-200);
+ --card: var(--color-zinc-700);
+ --card-foreground: var(--color-zinc-200);
+ --border: hsl(240 5.9% 20%);
+ --ring: hsl(240 5.9% 20%);
+ --input: hsl(240 5.9% 20%);
+ --shadow-base:
+ -3px -3px 6px #2c2c31, 3px 3px 6px #52525b, inset 1px 1px 2px #2c2c31,
+ inset -1px -1px 2px #52525b;
+ --shadow-sm:
+ 3px 3px 6px #2c2c31, -3px -3px 6px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow-sm: 3px 3px 6px #2c2c31, -3px -3px 6px #52525b, inset 1px 1px 2px #2c2c31,
+ --shadow:
+ 4px 4px 8px #2c2c31, -4px -4px 8px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow: 4px 4px 8px #2c2c31, -4px -4px 8px #52525b, inset 1px 1px 2px #2c2c31,
+ --shadow-md:
+ 5px 5px 10px #2c2c31, -5px -5px 10px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow-md: 5px 5px 10px #2c2c31, -5px -5px 10px #52525b, inset 1px 1px 2px #2c2c31,
+ --shadow-lg:
+ 6px 6px 12px #2c2c31, -6px -6px 12px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow-lg: 6px 6px 12px #2c2c31, -6px -6px 12px #52525b, inset 1px 1px 2px #2c2c31,
+ --shadow-xl:
+ 8px 8px 15px #2c2c31, -8px -8px 15px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow-xl: 8px 8px 15px #2c2c31, -8px -8px 15px #52525b, inset 1px 1px 2px #2c2c31,
+ --shadow-2xl:
+ 10px 10px 20px #2c2c31, -10px -10px 20px #52525b, inset 1px 1px 2px #2c2c31,
inset -1px -1px 2px #52525b;
- --shadow-2xl: 10px 10px 20px #2c2c31, -10px -10px 20px #52525b,
- inset 1px 1px 2px #2c2c31, inset -1px -1px 2px #52525b;
--shadow-inner: inset 2px 2px 4px #2c2c31, inset -2px -2px 4px #52525b;
--transform-press: scale(0.95);
}
- .border-radius-0 {
- --border-radius: 0;
- }
+ /* use colors from colors.ts */
- .border-radius-dot-25 {
- --border-radius: 0.25rem;
+ .base-slate {
+ --background: white;
+ --foreground: var(--color-slate-950);
+ --muted: var(--color-slate-100);
+ --muted-foreground: var(--color-slate-700);
+ --popover: white;
+ --popover-foreground: var(--color-slate-900);
+ --card: white;
+ --card-foreground: var(--color-slate-900);
+ --border: var(--color-slate-200);
+ --input: var(--color-slate-200);
+ --secondary: var(--color-slate-900);
+ --secondary-foreground: white;
+ --accent: var(--color-slate-100);
+ --accent-foreground: var(--color-slate-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-900);
}
-
- .border-radius-dot-50 {
- --border-radius: 0.5rem;
+ .dark.base-slate {
+ --background: var(--color-slate-950);
+ --foreground: var(--color-slate-50);
+ --muted: var(--color-slate-800);
+ --muted-foreground: var(--color-slate-300);
+ --popover: var(--color-slate-950);
+ --popover-foreground: var(--color-slate-50);
+ --card: var(--color-slate-950);
+ --card-foreground: var(--color-slate-50);
+ --border: var(--color-slate-800);
+ --input: var(--color-slate-800);
+ --secondary: var(--color-slate-100);
+ --secondary-foreground: black;
+ --accent: var(--color-slate-700);
+ --accent-foreground: var(--color-slate-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-slate-50);
+ --ring: var(--color-slate-300);
}
- .border-radius-dot-75 {
- --border-radius: 0.75rem;
+ .base-gray {
+ --background: white;
+ --foreground: var(--color-gray-950);
+ --muted: var(--color-gray-100);
+ --muted-foreground: var(--color-gray-700);
+ --popover: white;
+ --popover-foreground: var(--color-gray-950);
+ --card: white;
+ --card-foreground: var(--color-gray-950);
+ --border: var(--color-gray-200);
+ --input: var(--color-gray-200);
+ --secondary: var(--color-gray-950);
+ --secondary-foreground: white;
+ --accent: var(--color-gray-100);
+ --accent-foreground: var(--color-gray-950);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-gray-50);
+ --ring: var(--color-gray-950);
+ }
+ .dark.base-gray {
+ --background: var(--color-gray-950);
+ --foreground: var(--color-gray-50);
+ --muted: var(--color-gray-800);
+ --muted-foreground: var(--color-gray-300);
+ --popover: var(--color-gray-950);
+ --popover-foreground: var(--color-gray-50);
+ --card: var(--color-gray-950);
+ --card-foreground: var(--color-gray-50);
+ --border: var(--color-gray-800);
+ --input: var(--color-gray-800);
+ --secondary: var(--color-gray-100);
+ --secondary-foreground: black;
+ --accent: var(--color-gray-700);
+ --accent-foreground: var(--color-gray-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-gray-50);
+ --ring: var(--color-gray-300);
}
- .border-radius-1 {
- --border-radius: 1rem;
+ .base-zinc {
+ --background: white;
+ --foreground: var(--color-zinc-900);
+ --muted: var(--color-zinc-100);
+ --muted-foreground: var(--color-zinc-700);
+ --popover: white;
+ --popover-foreground: var(--color-zinc-900);
+ --card: white;
+ --card-foreground: var(--color-zinc-900);
+ --border: var(--color-zinc-200);
+ --input: var(--color-zinc-200);
+ --secondary: var(--color-zinc-900);
+ --secondary-foreground: white;
+ --accent: var(--color-zinc-100);
+ --accent-foreground: var(--color-zinc-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-zinc-50);
+ --ring: var(--color-zinc-900);
+ }
+ .dark.base-zinc {
+ --background: var(--color-zinc-950);
+ --foreground: var(--color-zinc-50);
+ --muted: var(--color-zinc-800);
+ --muted-foreground: var(--color-zinc-300);
+ --popover: var(--color-zinc-950);
+ --popover-foreground: var(--color-zinc-50);
+ --card: var(--color-zinc-950);
+ --card-foreground: var(--color-zinc-50);
+ --border: var(--color-zinc-800);
+ --input: var(--color-zinc-800);
+ --secondary: var(--color-zinc-100);
+ --secondary-foreground: black;
+ --accent: var(--color-zinc-700);
+ --accent-foreground: var(--color-zinc-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-zinc-50);
+ --ring: var(--color-zinc-300);
}
.base-neutral {
- --background: 0 0% 100%;
- --foreground: 0 0% 9%;
- --muted: 0 0% 96.1%;
- --muted-foreground: 0 0% 45.1%;
- --popover: 0 0% 100%;
- --popover-foreground: 0 0% 9%;
- --card: 0 0% 100%;
- --card-foreground: 0 0% 9%;
- --border: 0 0% 89.8%;
- --input: 0 0% 89.8%;
- --secondary: 0 0% 83.1%;
- --secondary-foreground: 0 0% 9%;
- --accent: 0 0% 96.1%;
- --accent-foreground: 0 0% 9%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 9%;
+ --background: white;
+ --foreground: var(--color-neutral-900);
+ --muted: var(--color-neutral-100);
+ --muted-foreground: var(--color-neutral-700);
+ --popover: white;
+ --popover-foreground: var(--color-neutral-900);
+ --card: white;
+ --card-foreground: var(--color-neutral-900);
+ --border: var(--color-neutral-200);
+ --input: var(--color-neutral-200);
+ --secondary: var(--color-neutral-900);
+ --secondary-foreground: white;
+ --accent: var(--color-neutral-100);
+ --accent-foreground: var(--color-neutral-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-900);
}
.dark.base-neutral {
- --background: 0 0% 9%;
- --foreground: 0 0% 98%;
- --muted: 0 0% 14.9%;
- --muted-foreground: 0 0% 63.9%;
- --popover: 0 0% 9%;
- --popover-foreground: 0 0% 98%;
- --card: 0 0% 9%;
- --card-foreground: 0 0% 98%;
- --border: 0 0% 14.9%;
- --input: 0 0% 14.9%;
- --secondary: 0 0% 25.1%;
- --secondary-foreground: 0 0% 98%;
- --accent: 0 0% 14.9%;
- --accent-foreground: 0 0% 98%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 0 0% 83.1%;
+ --background: var(--color-neutral-950);
+ --foreground: var(--color-neutral-50);
+ --muted: var(--color-neutral-800);
+ --muted-foreground: var(--color-neutral-300);
+ --popover: var(--color-neutral-950);
+ --popover-foreground: var(--color-neutral-50);
+ --card: var(--color-neutral-950);
+ --card-foreground: var(--color-neutral-50);
+ --border: var(--color-neutral-800);
+ --input: var(--color-neutral-800);
+ --secondary: var(--color-neutral-100);
+ --secondary-foreground: black;
+ --accent: var(--color-neutral-700);
+ --accent-foreground: var(--color-neutral-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-neutral-50);
+ --ring: var(--color-neutral-300);
}
.base-stone {
- --background: 0 0% 100%;
- --foreground: 24 9.8% 10%;
- --muted: 60 4.8% 95.9%;
- --muted-foreground: 25 5.3% 44.7%;
- --popover: 0 0% 100%;
- --popover-foreground: 24 9.8% 10%;
- --card: 0 0% 100%;
- --card-foreground: 24 9.8% 10%;
- --border: 20 5.9% 90%;
- --input: 20 5.9% 90%;
- --secondary: 24 5.7% 82.9%;
- --secondary-foreground: 24 9.8% 10%;
- --accent: 60 4.8% 95.9%;
- --accent-foreground: 24 9.8% 10%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 60 9.1% 97.8%;
- --ring: 24 9.8% 10%;
+ --background: white;
+ --foreground: var(--color-stone-900);
+ --muted: var(--color-stone-100);
+ --muted-foreground: var(--color-stone-700);
+ --popover: white;
+ --popover-foreground: var(--color-stone-900);
+ --card: white;
+ --card-foreground: var(--color-stone-900);
+ --border: var(--color-stone-200);
+ --input: var(--color-stone-200);
+ --secondary: var(--color-stone-900);
+ --secondary-foreground: white;
+ --accent: var(--color-stone-100);
+ --accent-foreground: var(--color-stone-900);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: var(--color-stone-900);
}
.dark.base-stone {
- --background: 24 9.8% 10%;
- --foreground: 60 9.1% 97.8%;
- --muted: 12 6.5% 15.1%;
- --muted-foreground: 24 5.4% 63.9%;
- --popover: 24 9.8% 10%;
- --popover-foreground: 60 9.1% 97.8%;
- --card: 24 9.8% 10%;
- --card-foreground: 60 9.1% 97.8%;
- --border: 12 6.5% 15.1%;
- --input: 12 6.5% 15.1%;
- --secondary: 30 6.3% 25.1%;
- --secondary-foreground: 60 9.1% 97.8%;
- --accent: 12 6.5% 15.1%;
- --accent-foreground: 60 9.1% 97.8%;
- --alert: 0 84.2% 60.2%;
- --alert-foreground: 0 0% 98%;
- --ring: 24 5.7% 82.9%;
- }
-
- .primary-cyan-600 {
- --primary: 191.6 91.4% 36.5%;
- --primary-foreground: 0 0% 100%;
- }
-
- .primary-pink-700 {
- --primary: 335.1 77.6% 42%;
- --primary-foreground: 0 0% 100%;
+ --background: var(--color-stone-950);
+ --foreground: var(--color-stone-50);
+ --muted: var(--color-stone-800);
+ --muted-foreground: var(--color-stone-300);
+ --popover: var(--color-stone-950);
+ --popover-foreground: var(--color-stone-50);
+ --card: var(--color-stone-950);
+ --card-foreground: var(--color-stone-50);
+ --border: var(--color-stone-800);
+ --input: var(--color-stone-800);
+ --secondary: var(--color-stone-100);
+ --secondary-foreground: black;
+ --accent: var(--color-stone-700);
+ --accent-foreground: var(--color-stone-50);
+ --alert: var(--color-red-500);
+ --alert-foreground: var(--color-stone-50);
+ --ring: var(--color-stone-300);
}
- /* CSS PARSER: END - DO NOT REMOVE */
+ .primary-slate-100,
+ .dark.primary-slate-900 {
+ --primary: var(--color-slate-100);
+ --primary-foreground: black;
+ }
+ .primary-slate-200,
+ .dark.primary-slate-800 {
+ --primary: var(--color-slate-200);
+ --primary-foreground: black;
+ }
+ .primary-slate-300 {
+ --primary: var(--color-slate-300);
+ --primary-foreground: black;
+ }
+ .primary-slate-400 {
+ --primary: var(--color-slate-400);
+ --primary-foreground: black;
+ }
+ .primary-slate-500 {
+ --primary: var(--color-slate-500);
+ --primary-foreground: white;
+ }
+ .primary-slate-600 {
+ --primary: var(--color-slate-600);
+ --primary-foreground: white;
+ }
+ .primary-slate-700 {
+ --primary: var(--color-slate-700);
+ --primary-foreground: white;
+ }
+ .primary-slate-800 {
+ --primary: var(--color-slate-800);
+ --primary-foreground: white;
+ }
+ .primary-slate-900 {
+ --primary: var(--color-slate-900);
+ --primary-foreground: white;
+ }
+
+ .primary-gray-100,
+ .dark.primary-gray-900 {
+ --primary: var(--color-gray-100);
+ --primary-foreground: black;
+ }
+ .primary-gray-200,
+ .dark.primary-gray-800 {
+ --primary: var(--color-gray-200);
+ --primary-foreground: black;
+ }
+ .primary-gray-300 {
+ --primary: var(--color-gray-300);
+ --primary-foreground: black;
+ }
+ .primary-gray-400 {
+ --primary: var(--color-gray-400);
+ --primary-foreground: black;
+ }
+ .primary-gray-500 {
+ --primary: var(--color-gray-500);
+ --primary-foreground: white;
+ }
+ .primary-gray-600 {
+ --primary: var(--color-gray-600);
+ --primary-foreground: white;
+ }
+ .primary-gray-700 {
+ --primary: var(--color-gray-700);
+ --primary-foreground: white;
+ }
+ .primary-gray-800 {
+ --primary: var(--color-gray-800);
+ --primary-foreground: white;
+ }
+ .primary-gray-900 {
+ --primary: var(--color-gray-950);
+ --primary-foreground: white;
+ }
+
+ .primary-zinc-100,
+ .dark.primary-zinc-900 {
+ --primary: var(--color-zinc-100);
+ --primary-foreground: black;
+ }
+ .primary-zinc-200,
+ .dark.primary-zinc-800 {
+ --primary: var(--color-zinc-200);
+ --primary-foreground: black;
+ }
+ .primary-zinc-300 {
+ --primary: var(--color-zinc-300);
+ --primary-foreground: black;
+ }
+ .primary-zinc-400 {
+ --primary: var(--color-zinc-400);
+ --primary-foreground: black;
+ }
+ .primary-zinc-500 {
+ --primary: var(--color-zinc-500);
+ --primary-foreground: white;
+ }
+ .primary-zinc-600 {
+ --primary: var(--color-zinc-600);
+ --primary-foreground: white;
+ }
+ .primary-zinc-700 {
+ --primary: var(--color-zinc-700);
+ --primary-foreground: white;
+ }
+ .primary-zinc-800 {
+ --primary: var(--color-zinc-800);
+ --primary-foreground: white;
+ }
+ .primary-zinc-900 {
+ --primary: var(--color-zinc-900);
+ --primary-foreground: white;
+ }
+
+ .primary-neutral-100,
+ .dark.primary-neutral-900 {
+ --primary: var(--color-neutral-100);
+ --primary-foreground: black;
+ }
+ .primary-neutral-200,
+ .dark.primary-neutral-800 {
+ --primary: var(--color-neutral-200);
+ --primary-foreground: black;
+ }
+ .primary-neutral-300 {
+ --primary: var(--color-neutral-300);
+ --primary-foreground: black;
+ }
+ .primary-neutral-400 {
+ --primary: var(--color-neutral-400);
+ --primary-foreground: black;
+ }
+ .primary-neutral-500 {
+ --primary: var(--color-neutral-500);
+ --primary-foreground: white;
+ }
+ .primary-neutral-600 {
+ --primary: var(--color-neutral-600);
+ --primary-foreground: white;
+ }
+ .primary-neutral-700 {
+ --primary: var(--color-neutral-700);
+ --primary-foreground: white;
+ }
+ .primary-neutral-800 {
+ --primary: var(--color-neutral-800);
+ --primary-foreground: white;
+ }
+ .primary-neutral-900 {
+ --primary: var(--color-neutral-900);
+ --primary-foreground: white;
+ }
+
+ .primary-stone-100,
+ .dark.primary-stone-900 {
+ --primary: var(--color-stone-100);
+ --primary-foreground: black;
+ }
+ .primary-stone-200,
+ .dark.primary-stone-800 {
+ --primary: var(--color-stone-200);
+ --primary-foreground: black;
+ }
+ .primary-stone-300 {
+ --primary: var(--color-stone-300);
+ --primary-foreground: black;
+ }
+ .primary-stone-400 {
+ --primary: var(--color-stone-400);
+ --primary-foreground: black;
+ }
+ .primary-stone-500 {
+ --primary: var(--color-stone-500);
+ --primary-foreground: white;
+ }
+ .primary-stone-600 {
+ --primary: var(--color-stone-600);
+ --primary-foreground: white;
+ }
+ .primary-stone-700 {
+ --primary: var(--color-stone-700);
+ --primary-foreground: white;
+ }
+ .primary-stone-800 {
+ --primary: var(--color-stone-800);
+ --primary-foreground: white;
+ }
+ .primary-stone-900 {
+ --primary: var(--color-stone-900);
+ --primary-foreground: white;
+ }
+ .primary-red-100 {
+ --primary: var(--color-red-100);
+ --primary-foreground: black;
+ }
+ .primary-red-200 {
+ --primary: var(--color-red-200);
+ --primary-foreground: black;
+ }
+ .primary-red-300 {
+ --primary: var(--color-red-300);
+ --primary-foreground: black;
+ }
+ .primary-red-400 {
+ --primary: var(--color-red-400);
+ --primary-foreground: black;
+ }
+ .primary-red-500 {
+ --primary: var(--color-red-500);
+ --primary-foreground: white;
+ }
+ .primary-red-600 {
+ --primary: var(--color-red-600);
+ --primary-foreground: white;
+ }
+ .primary-red-700 {
+ --primary: var(--color-red-700);
+ --primary-foreground: white;
+ }
+ .primary-red-800 {
+ --primary: var(--color-red-800);
+ --primary-foreground: white;
+ }
+ .primary-red-900 {
+ --primary: var(--color-red-900);
+ --primary-foreground: white;
+ }
+ /* CSS PARSER: END - DO NOT REMOVE */
}
`;
diff --git a/packages/utils/src/theme/extract-theme-css.ts b/packages/utils/src/theme/extract-theme-css.ts
index 23c144c15..4f0a115cd 100644
--- a/packages/utils/src/theme/extract-theme-css.ts
+++ b/packages/utils/src/theme/extract-theme-css.ts
@@ -7,10 +7,8 @@ export const extractThemeCSS = (theme: Theme, globalCSS: string) => {
// Parse the CSS to get the variables
const classesMap = createClassesMap(cssClasses);
- // console.log('classesMap', classesMap);
// Example usage with the cssThemeToObjectTheme function output
const objDarkClasses = applyDarkOverrides(classesMap);
- // console.log('objDarkClasses', objDarkClasses);
const objRootClasses = removeDarkClasses(classesMap);
// Build the theme CSS
@@ -222,10 +220,12 @@ function reorderThemeObject(themeObject: ThemeMap) {
'--alert-foreground',
'--ring',
'--border-width',
+ '--stroke-width',
'--border-radius',
'--shadow-base',
+ '--shadow-2xs',
+ '--shadow-xs',
'--shadow-sm',
- '--shadow',
'--shadow-md',
'--shadow-lg',
'--shadow-xl',
@@ -251,7 +251,13 @@ function reorderThemeObject(themeObject: ThemeMap) {
}
function objThemeToCSSThemeOutput(themeObject: ThemeMap) {
- let cssOutput = `@layer base {\n`;
+ let cssOutput = `@layer qwik-ui, popover-polyfill, theme, base, components, utilities;
+@import 'tailwindcss';
+@import 'tw-animate-css';
+
+@custom-variant dark (&:is(.dark *));
+
+@layer base {\n`;
// Iterate over each theme (e.g., 'root', 'dark')
for (const [theme, values] of Object.entries(themeObject)) {
@@ -263,7 +269,107 @@ function objThemeToCSSThemeOutput(themeObject: ThemeMap) {
cssOutput += ` }\n`;
}
- cssOutput += `}`;
+ cssOutput += `}
+
+@theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --color-card: var(--card);
+ --color-card-foreground: var(--card-foreground);
+ --color-popover: var(--popover);
+ --color-popover-foreground: var(--popover-foreground);
+ --color-primary: var(--primary);
+ --color-primary-foreground: var(--primary-foreground);
+ --color-secondary: var(--secondary);
+ --color-secondary-foreground: var(--secondary-foreground);
+ --color-muted: var(--muted);
+ --color-muted-foreground: var(--muted-foreground);
+ --color-accent: var(--accent);
+ --color-accent-foreground: var(--accent-foreground);
+ --color-alert: var(--alert);
+ --color-alert-foreground: var(--alert-foreground);
+ --color-border: var(--border);
+ --color-input: var(--input);
+ --color-ring: var(--ring);
+ --radius-xs: var(--border-radius);
+ --radius-sm: calc(var(--border-radius) + 0.125rem);
+ --radius-md: calc(var(--border-radius) + 0.375rem);
+ --radius-lg: calc(var(--border-radius) + 0.5rem);
+ --radius-xl: calc(var(--border-radius) + 0.75rem);
+ --radius-2xl: calc(var(--border-radius) + 1rem);
+ --radius-3xl: calc(var(--border-radius) + 1.5rem);
+ --shadow-base: var(--shadow-base);
+ --shadow-2xs: var(--shadow-2xs);
+ --shadow-xs: var(--shadow-xs);
+ --shadow-sm: var(--shadow-sm);
+ --shadow-md: var(--shadow-md);
+ --shadow-lg: var(--shadow-lg);
+ --shadow-xl: var(--shadow-xl);
+ --shadow-2xl: var(--shadow-2xl);
+ --shadow-inner: var(--shadow-inner);
+ --default-border-width: calc(var(--border-width) + 1px);
+ --border-width-base: var(--border-width);
+ --border-width-2: calc(var(--border-width) + 2px);
+ --border-width-4: calc(var(--border-width) + 4px);
+ --border-width-8: calc(var(--border-width) + 8px);
+ --stroke-width-0: 0px;
+ --stroke-width-base: var(--stroke-width);
+ --stroke-width-1: calc(var(--stroke-width) + 1px);
+ --stroke-width-2: calc(var(--stroke-width) + 2px);
+ --animate-accordion-down: collapsible-down 0.2s ease-out forwards;
+ --animate-accordion-up: collapsible-up 0.2s ease-out forwards;
+
+ @keyframes collapsible-down {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ }
+ @keyframes collapsible-up {
+ from {
+ height: var(--qwikui-collapsible-content-height);
+ }
+ to {
+ height: 0;
+ }
+ }
+}
+
+@utility press {
+ transform: var(--transform-press);
+}
+@utility border-width-* {
+ /* prettier-ignore */
+ border: --value(--border-width-*);
+}
+@utility stroke-width-* {
+ /* prettier-ignore */
+ stroke: --value(--stroke-width-*);
+}
+@utility shadow-* {
+ /* prettier-ignore */
+ box-shadow: --value(--shadow-*);
+}
+
+@layer base {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}
+
+@layer components {
+ * {
+ @apply border-border outline-ring/50;
+ }
+ body {
+ @apply bg-background text-foreground;
+ }
+}`;
return cssOutput;
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ff9965e1f..4663b4f11 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,10 +13,10 @@ importers:
version: 4.10.1(playwright-core@1.52.0)
'@builder.io/qwik':
specifier: 1.16.0
- version: 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
'@builder.io/qwik-city':
specifier: 1.16.0
- version: 1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@1.21.7)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)
+ version: 1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)
'@changesets/cli':
specifier: ^2.29.4
version: 2.29.4
@@ -43,7 +43,7 @@ importers:
version: 3.5.0(@nx/devkit@21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))))(@nx/node@21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@8.57.1)(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0)))(esbuild@0.25.5)(wrangler@3.114.9)
'@modular-forms/qwik':
specifier: ^0.29.1
- version: 0.29.1(@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@1.21.7)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0))(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)))(typescript@5.7.3)
+ version: 0.29.1(@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0))(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)))(typescript@5.7.3)
'@nx/devkit':
specifier: 21.1.2
version: 21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
@@ -67,7 +67,7 @@ importers:
version: 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(@zkochan/js-yaml@0.0.7)(babel-plugin-macros@3.1.0)(eslint@8.57.1)(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))
'@nx/vite':
specifier: 21.1.2
- version: 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)
+ version: 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)
'@nx/workspace':
specifier: 21.1.2
version: 21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))
@@ -79,7 +79,7 @@ importers:
version: 1.52.0
'@qwikest/icons':
specifier: ^0.0.13
- version: 0.0.13(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)))
+ version: 0.0.13(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)))
'@shikijs/rehype':
specifier: 3.4.2
version: 3.4.2
@@ -92,6 +92,9 @@ importers:
'@swc/core':
specifier: ^1.5.7
version: 1.11.29(@swc/helpers@0.5.17)
+ '@tailwindcss/vite':
+ specifier: 4.1.0
+ version: 4.1.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
'@types/decompress':
specifier: 4.2.7
version: 4.2.7
@@ -115,7 +118,7 @@ importers:
version: 7.18.0(eslint@8.57.1)(typescript@5.7.3)
'@vitejs/plugin-basic-ssl':
specifier: 2.0.0
- version: 2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
'@vitest/coverage-v8':
specifier: ^1.6.0
version: 1.6.1(vitest@1.6.1)
@@ -138,13 +141,13 @@ importers:
specifier: 1.9.3
version: 1.9.3
class-variance-authority:
- specifier: ^0.7.0
+ specifier: 0.7.1
version: 0.7.1
clipboard-copy:
specifier: ^4.0.1
version: 4.0.1
clsx:
- specifier: ^2.1.1
+ specifier: ^2.0.0
version: 2.1.1
danger:
specifier: ^11.3.1
@@ -204,14 +207,14 @@ importers:
specifier: ^3.2.5
version: 3.5.3
prettier-plugin-tailwindcss:
- specifier: ^0.6.12
- version: 0.6.12(prettier@3.5.3)
+ specifier: ^0.6.13
+ version: 0.6.13(prettier@3.5.3)
pretty-quick:
specifier: ^4.0.0
version: 4.2.2(prettier@3.5.3)
qwik-nx:
specifier: ^3.2.0
- version: 3.2.0(06b9841149a3cbce0c3d6f4540ae0521)
+ version: 3.2.0(40d83100a189ae8d5af95d312184e2d7)
sass:
specifier: ^1.77.2
version: 1.89.1
@@ -225,14 +228,11 @@ importers:
specifier: ^1.0.0
version: 1.0.0
tailwind-merge:
- specifier: ^3.3.0
- version: 3.3.0
+ specifier: ^1.14.0
+ version: 1.14.0
tailwindcss:
- specifier: ^3.4.17
- version: 3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))
- tailwindcss-animate:
- specifier: ^1.0.7
- version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3)))
+ specifier: 4.1.0
+ version: 4.1.0
tree-sitter:
specifier: 0.21.1
version: 0.21.1
@@ -245,6 +245,9 @@ importers:
tslib:
specifier: ^2.6.2
version: 2.8.1
+ tw-animate-css:
+ specifier: 1.3.4
+ version: 1.3.4
typescript:
specifier: 5.7.3
version: 5.7.3
@@ -259,25 +262,25 @@ importers:
version: 6.1.2(typanion@3.14.0)
vite:
specifier: 6.3.5
- version: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ version: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
vite-plugin-dts:
specifier: 4.5.4
- version: 4.5.4(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 4.5.4(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
vite-plugin-eslint:
specifier: ^1.8.1
- version: 1.8.1(eslint@8.57.1)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.8.1(eslint@8.57.1)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
vite-plugin-inspect:
specifier: ^0.8.4
- version: 0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
vite-plugin-static-copy:
specifier: 1.0.4
- version: 1.0.4(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.0.4(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
vite-tsconfig-paths:
specifier: 4.3.2
- version: 4.3.2(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 4.3.2(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
vitest:
specifier: ^1.6.0
- version: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(sass@1.89.1)
+ version: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(lightningcss@1.30.1)(sass@1.89.1)
wrangler:
specifier: ^3.57.1
version: 3.114.9
@@ -291,11 +294,11 @@ importers:
specifier: ^0.7.0
version: 0.7.0
'@nx/devkit':
- specifier: 19.2.3
- version: 19.2.3(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
+ specifier: 21.1.2
+ version: 21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
'@qwik-ui/utils':
- specifier: 0.3.3
- version: link:../utils
+ specifier: 0.3.2
+ version: 0.3.2
ansis:
specifier: 2.3.0
version: 2.3.0
@@ -317,7 +320,7 @@ importers:
dependencies:
'@builder.io/qwik':
specifier: '>=1.3.1'
- version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
'@floating-ui/core':
specifier: ^1.6.2
version: 1.7.1
@@ -338,7 +341,7 @@ importers:
dependencies:
'@builder.io/qwik':
specifier: '>=1.3.1'
- version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
devDependencies:
'@qwik-ui/headless':
specifier: ^0.7.1
@@ -351,7 +354,7 @@ importers:
dependencies:
'@builder.io/qwik':
specifier: '>=1.3.1'
- version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ version: 1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
packages/utils:
dependencies:
@@ -370,10 +373,6 @@ importers:
packages:
- '@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'}
@@ -1999,10 +1998,6 @@ packages:
'@types/node':
optional: true
- '@isaacs/cliui@8.0.2':
- resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
- engines: {node: '>=12'}
-
'@istanbuljs/load-nyc-config@1.1.0':
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
engines: {node: '>=8'}
@@ -2152,14 +2147,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@nrwl/devkit@19.2.3':
- resolution: {integrity: sha512-OL6sc70gR/USasvbYzyYY44Hd5ZCde2UfiA5h8VeAYAJbq+JmtscpvjcnZ7OIsXyYEOxe1rypULElqu/8qpKzQ==}
-
- '@nx/devkit@19.2.3':
- resolution: {integrity: sha512-if1WwRVexrQBBADObEcxVIivq4QRZWY/nYRhCQy/qfFI6Cu2jBSI6ZQ1uy7to2L2sQPLgn8v2beQZiAeZdIktg==}
- peerDependencies:
- nx: '>= 17 <= 20'
-
'@nx/devkit@21.1.2':
resolution: {integrity: sha512-1dgjwSsNDdp/VXydZnSfzfVwySEB3C9yjzeIw6+3+nRvZfH16a7ggZE7MF5sJTq4d+01hAgIDz3KyvGa6Jf73g==}
peerDependencies:
@@ -2492,10 +2479,6 @@ packages:
peerDependencies:
typescript: ^3 || ^4 || ^5
- '@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
-
'@pkgr/core@0.2.7':
resolution: {integrity: sha512-YLT9Zo3oNPJoBjBc4q8G2mjU4tqIbf5CEOORbUUr48dCD9q3umJ3IPlVqOqDakPfd2HuwccBaqlGhN4Gmr5OWg==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -2520,6 +2503,9 @@ packages:
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+ '@qwik-ui/utils@0.3.2':
+ resolution: {integrity: sha512-N7VY1Vdor+Z+EsfrbyZ5g+hg+sKl+SLr+wr08N4qU3grNrluAPGTk278DMG8tw/FJa2RjM2/f3XewIoBEPtKpA==}
+
'@qwikest/icons@0.0.13':
resolution: {integrity: sha512-e0wY8vmx0nDSUiuCATlk+ojTvdBV4txIGHHWjZW5SRkv4XB8H9+3WSDcLPz0ItUdRyzcrohE9k2jtQI/98aRPA==}
engines: {node: '>=15.0.0'}
@@ -2815,6 +2801,84 @@ packages:
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
engines: {node: '>=10'}
+ '@tailwindcss/node@4.1.0':
+ resolution: {integrity: sha512-mfgxGxFaxbsUbaGwKIAQXUSm7Qoojw53FftpoKwo4ANwr9wnDaByz4vi1gMti/xfJvmQ5lzA1DvPiX5yCHtBkQ==}
+
+ '@tailwindcss/oxide-android-arm64@4.1.0':
+ resolution: {integrity: sha512-UredFljuHey2Kh5qyYfQVBr0Xfq70ZE5Df6i5IubNYQGs2JXXT4VL0SIUjwzHx5W9T6t7dT7banunlV6lthGPQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.0':
+ resolution: {integrity: sha512-QHQ/46lRVwH9zEBNiRk8AJ3Af4pMq6DuZAI//q323qrPOXjsRdrhLsH9LUO3mqBfHr5EZNUxN3Am5vpO89sntw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.1.0':
+ resolution: {integrity: sha512-lEMgYHCvQQ6x2KOZ4FwnPprwfnc+UnjzwXRqEYIhB/NlYvXQD1QMf7oKEDRqy94DiZaYox9ZRfG2YJOBgM0UkA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.0':
+ resolution: {integrity: sha512-9fdImTc+2lA5yHqJ61oeTXfCtzylNOzJVFhyWwVQAJESJJbVCPnj6f+b+Zf/AYAdKQfS6FCThbPEahkQrDCgLQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.0':
+ resolution: {integrity: sha512-HB0bTkUOuTLLSdadyRhKE9yps4/ZBjrojbHTPMSvvf/8yBLZRPpWb+A6IgW5R+2A2AL4KhVPgLwWfoXsErxJFg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.0':
+ resolution: {integrity: sha512-+QtYCwvKLjC46h6RikKkpELJWrpiMMtgyK0aaqhwPLEx1icGgIhwz8dqrkAiqbFRE0KiRrE2aenhYoEkplyRmA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.0':
+ resolution: {integrity: sha512-nApadFKM9GauzuPZPlt6TKfELavMHqJ0gVd+GYkYBTwr2t9KhgCAb2sKiFDDIhs1a7gOjsU7P1lEauv3iKFp+Q==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.0':
+ resolution: {integrity: sha512-cp0Rf9Wit2kZHhrV8HIoDFD8dxU2+ZTCFCFbDj3a07pGyyPwLCJm5H5VipKXgYrBaLmlYu73ERidW0S5sdEXEg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.0':
+ resolution: {integrity: sha512-4/wf42XWBJGXsOS6BhgPhdQbg/qyfdZ1nZvTL9sJoxYN+Ah+cfY5Dd7R0smzI8hmgCRt3TD1lYb72ChTyIA59w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.0':
+ resolution: {integrity: sha512-caXJJ0G6NwGbcoxEYdH3MZYN84C3PldaMdAEPMU6bjJXURQlKdSlQ/Ecis7/nSgBkMkicZyhqWmb36Tw/BFSIw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.0':
+ resolution: {integrity: sha512-ZHXRXRxB7HBmkUE8U13nmkGGYfR1I2vsuhiYjeDDUFIYpk1BL6caU8hvzkSlL/X5CAQNdIUUJRGom5I0ZyfJOA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.1.0':
+ resolution: {integrity: sha512-A33oyZKpPFH08d7xkl13Dc8OTsbPhsuls0z9gUCxIHvn8c1BsUACddQxL6HwaeJR1fSYyXZUw8bdWcD8bVawpQ==}
+ engines: {node: '>= 10'}
+
+ '@tailwindcss/vite@4.1.0':
+ resolution: {integrity: sha512-IszG0h/o8jOGheY0f7v41a9qyDymZ5eU8qm4koTypMKagBhaQA06Keip13wch6sz7rG3cvIG7A3/ytdfRh2BUw==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6
+
'@tootallnate/once@2.0.0':
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
@@ -3395,9 +3459,6 @@ packages:
zenObservable:
optional: true
- 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'}
@@ -3409,9 +3470,6 @@ packages:
arg@4.1.3:
resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
- arg@5.0.2:
- resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
-
argparse@1.0.10:
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
@@ -3703,10 +3761,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@5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
@@ -3908,10 +3962,6 @@ packages:
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
- commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
-
commander@7.2.0:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
@@ -4027,11 +4077,6 @@ packages:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
engines: {node: '>= 6'}
- cssesc@3.0.0:
- resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
- engines: {node: '>=4'}
- hasBin: true
-
csso@5.0.5:
resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'}
@@ -4291,9 +4336,6 @@ packages:
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-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -4306,9 +4348,6 @@ packages:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
- dlv@1.1.3:
- resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
-
doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -4350,9 +4389,6 @@ packages:
duplexify@3.7.1:
resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
ecc-jsbn@0.1.2:
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
@@ -4384,9 +4420,6 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'}
@@ -4398,6 +4431,10 @@ packages:
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ enhanced-resolve@5.18.1:
+ resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+ engines: {node: '>=10.13.0'}
+
enquirer@2.3.6:
resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==}
engines: {node: '>=8.6'}
@@ -4802,10 +4839,6 @@ packages:
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
engines: {node: '>= 0.4'}
- foreground-child@3.3.1:
- resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
- engines: {node: '>=14'}
-
forever-agent@0.6.1:
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
@@ -4951,10 +4984,6 @@ packages:
glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
- glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
- hasBin: true
-
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
@@ -5580,9 +5609,6 @@ packages:
resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==}
engines: {node: '>=8'}
- jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
-
jake@10.9.2:
resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==}
engines: {node: '>=10'}
@@ -5726,8 +5752,8 @@ packages:
node-notifier:
optional: true
- jiti@1.21.7:
- resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
+ jiti@2.4.2:
+ resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==}
hasBin: true
jju@1.4.0:
@@ -5880,9 +5906,133 @@ packages:
li@1.3.0:
resolution: {integrity: sha512-z34TU6GlMram52Tss5mt1m//ifRIpKH5Dqm7yUVOdHI+BQCs9qGPHFaCUTIzsWX7edN30aa2WrPwR7IO10FHaw==}
- lilconfig@3.1.3:
- resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
- engines: {node: '>=14'}
+ lightningcss-darwin-arm64@1.29.2:
+ resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-arm64@1.30.1:
+ resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.29.2:
+ resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.30.1:
+ resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.29.2:
+ resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-freebsd-x64@1.30.1:
+ resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ 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-arm64-gnu@1.29.2:
+ resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ 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-musl@1.29.2:
+ resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
+ 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-x64-gnu@1.29.2:
+ resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ 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-musl@1.29.2:
+ resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
+ 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-win32-arm64-msvc@1.29.2:
+ resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-arm64-msvc@1.30.1:
+ resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ 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@1.29.2:
+ resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
+ engines: {node: '>= 12.0.0'}
+
+ lightningcss@1.30.1:
+ resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==}
+ engines: {node: '>= 12.0.0'}
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
@@ -6288,10 +6438,6 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
- minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
-
mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
@@ -6334,9 +6480,6 @@ packages:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
engines: {node: ^18.17.0 || >=20.5.0}
- mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
-
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -6473,10 +6616,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.4:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
@@ -6618,9 +6757,6 @@ packages:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
- package-json-from-dist@1.0.1:
- resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
-
package-json@10.0.1:
resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==}
engines: {node: '>=18'}
@@ -6702,10 +6838,6 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
-
path-to-regexp@0.1.12:
resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
@@ -6824,40 +6956,6 @@ packages:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
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-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==}
@@ -6869,8 +6967,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier-plugin-tailwindcss@0.6.12:
- resolution: {integrity: sha512-OuTQKoqNwV7RnxTPwXWzOFXy6Jc4z8oeRZYGuMpRyG3WbuR3jjXdQFK8qFBMBx8UHWdHrddARz2fgUenild6aw==}
+ prettier-plugin-tailwindcss@0.6.13:
+ resolution: {integrity: sha512-uQ0asli1+ic8xrrSmIOaElDu0FacR4x69GynTh2oZjFY10JUt6EEumTQl5tB4fMeD6I1naKd+4rXQQ7esT2i1g==}
engines: {node: '>=14.21.3'}
peerDependencies:
'@ianvs/prettier-plugin-sort-imports': '*'
@@ -7064,9 +7162,6 @@ packages:
react-is@18.3.1:
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
- read-cache@1.0.0:
- resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
-
read-package-up@11.0.0:
resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==}
engines: {node: '>=18'}
@@ -7579,10 +7674,6 @@ packages:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
- string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
-
string-width@7.2.0:
resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
engines: {node: '>=18'}
@@ -7667,11 +7758,6 @@ packages:
style-to-object@1.0.8:
resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==}
- sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
-
supports-color@2.0.0:
resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
engines: {node: '>=0.8.0'}
@@ -7722,18 +7808,12 @@ packages:
tailwind-merge@1.14.0:
resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==}
- tailwind-merge@3.3.0:
- resolution: {integrity: sha512-fyW/pEfcQSiigd5SNn0nApUOxx0zB/dm6UDU/rEwc2c3sX2smWUNbapHv+QRqLGVp9GWX3THIa7MUGPo+YkDzQ==}
+ tailwindcss@4.1.0:
+ resolution: {integrity: sha512-vBYstoFnvUZCDxaauNGQQEvJNQgCd1vSMDRYuZZMH1xRRcTboOk1rJrW5yFkEabU9X6Yx1C4LQ+QvPOvQj4Daw==}
- tailwindcss-animate@1.0.7:
- resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || insiders'
-
- tailwindcss@3.4.17:
- resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==}
- engines: {node: '>=14.0.0'}
- hasBin: true
+ tapable@2.2.2:
+ resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==}
+ engines: {node: '>=6'}
tar-stream@1.6.2:
resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==}
@@ -7767,13 +7847,6 @@ packages:
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
- thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
-
- thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
-
thread-stream@3.1.0:
resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==}
@@ -7887,9 +7960,6 @@ packages:
peerDependencies:
typescript: '>=4.8.4'
- ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
-
ts-jest@29.3.4:
resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==}
engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0}
@@ -7951,6 +8021,9 @@ packages:
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ tw-animate-css@1.3.4:
+ resolution: {integrity: sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==}
+
tweetnacl@0.14.5:
resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
@@ -8468,10 +8541,6 @@ packages:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
-
wrap-ansi@9.0.0:
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
engines: {node: '>=18'}
@@ -8593,8 +8662,6 @@ packages:
snapshots:
- '@alloc/quick-lru@5.2.0': {}
-
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.8
@@ -9382,7 +9449,7 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
- '@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@1.21.7)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)':
+ '@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)':
dependencies:
'@mdx-js/mdx': 3.1.0(acorn@8.14.1)
'@types/mdx': 2.0.13
@@ -9391,7 +9458,7 @@ snapshots:
undici: 5.28.4
valibot: 1.1.0(typescript@5.7.3)
vfile: 6.0.3
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
vite-imagetools: 7.1.0(rollup@4.41.1)
zod: 3.25.48
transitivePeerDependencies:
@@ -9411,17 +9478,17 @@ snapshots:
- typescript
- yaml
- '@builder.io/qwik@1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))':
+ '@builder.io/qwik@1.14.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))':
dependencies:
csstype: 3.1.3
rollup: 4.41.1
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
- '@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))':
+ '@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))':
dependencies:
csstype: 3.1.3
rollup: 4.41.1
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
'@changesets/apply-release-plan@7.0.12':
dependencies:
@@ -10239,15 +10306,6 @@ snapshots:
optionalDependencies:
'@types/node': 22.15.29
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
-
'@istanbuljs/load-nyc-config@1.1.0':
dependencies:
camelcase: 5.3.1
@@ -10530,10 +10588,10 @@ snapshots:
'@microsoft/tsdoc@0.15.1': {}
- '@modular-forms/qwik@0.29.1(@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@1.21.7)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0))(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)))(typescript@5.7.3)':
+ '@modular-forms/qwik@0.29.1(@builder.io/qwik-city@1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0))(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)))(typescript@5.7.3)':
dependencies:
- '@builder.io/qwik': 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
- '@builder.io/qwik-city': 1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@1.21.7)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)
+ '@builder.io/qwik': 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
+ '@builder.io/qwik-city': 1.16.0(@types/node@22.15.29)(acorn@8.14.1)(jiti@2.4.2)(lightningcss@1.30.1)(rollup@4.41.1)(sass@1.89.1)(typescript@5.7.3)(yaml@2.8.0)
decode-formdata: 0.8.0
valibot: 1.1.0(typescript@5.7.3)
transitivePeerDependencies:
@@ -10564,25 +10622,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.19.1
- '@nrwl/devkit@19.2.3(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))':
- dependencies:
- '@nx/devkit': 19.2.3(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
- transitivePeerDependencies:
- - nx
-
- '@nx/devkit@19.2.3(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))':
- dependencies:
- '@nrwl/devkit': 19.2.3(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
- ejs: 3.1.10
- enquirer: 2.3.6
- ignore: 5.3.2
- minimatch: 9.0.3
- nx: 21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))
- semver: 7.7.2
- tmp: 0.2.3
- tslib: 2.8.1
- yargs-parser: 21.1.1
-
'@nx/devkit@21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))':
dependencies:
ejs: 3.1.10
@@ -10812,7 +10851,7 @@ snapshots:
- typescript
- verdaccio
- '@nx/vite@21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)':
+ '@nx/vite@21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)':
dependencies:
'@nx/devkit': 21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
'@nx/js': 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(verdaccio@6.1.2(typanion@3.14.0))
@@ -10823,8 +10862,8 @@ snapshots:
picomatch: 4.0.2
semver: 7.7.2
tsconfig-paths: 4.2.0
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
- vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(sass@1.89.1)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
+ vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(lightningcss@1.30.1)(sass@1.89.1)
transitivePeerDependencies:
- '@babel/traverse'
- '@swc-node/register'
@@ -11053,9 +11092,6 @@ snapshots:
esquery: 1.6.0
typescript: 5.7.3
- '@pkgjs/parseargs@0.11.0':
- optional: true
-
'@pkgr/core@0.2.7': {}
'@playwright/test@1.52.0':
@@ -11076,9 +11112,16 @@ snapshots:
'@polka/url@1.0.0-next.29': {}
- '@qwikest/icons@0.0.13(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)))':
+ '@qwik-ui/utils@0.3.2':
+ dependencies:
+ clsx: 2.1.1
+ qwik-themes: 0.2.0
+ specificity: 1.0.0
+ tailwind-merge: 1.14.0
+
+ '@qwikest/icons@0.0.13(@builder.io/qwik@1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)))':
dependencies:
- '@builder.io/qwik': 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))
+ '@builder.io/qwik': 1.16.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))
'@rollup/pluginutils@4.2.1':
dependencies:
@@ -11342,6 +11385,67 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
+ '@tailwindcss/node@4.1.0':
+ dependencies:
+ enhanced-resolve: 5.18.1
+ jiti: 2.4.2
+ lightningcss: 1.29.2
+ tailwindcss: 4.1.0
+
+ '@tailwindcss/oxide-android-arm64@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.0':
+ optional: true
+
+ '@tailwindcss/oxide@4.1.0':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.1.0
+ '@tailwindcss/oxide-darwin-arm64': 4.1.0
+ '@tailwindcss/oxide-darwin-x64': 4.1.0
+ '@tailwindcss/oxide-freebsd-x64': 4.1.0
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.0
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.1.0
+ '@tailwindcss/oxide-linux-arm64-musl': 4.1.0
+ '@tailwindcss/oxide-linux-x64-gnu': 4.1.0
+ '@tailwindcss/oxide-linux-x64-musl': 4.1.0
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.1.0
+ '@tailwindcss/oxide-win32-x64-msvc': 4.1.0
+
+ '@tailwindcss/vite@4.1.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))':
+ dependencies:
+ '@tailwindcss/node': 4.1.0
+ '@tailwindcss/oxide': 4.1.0
+ tailwindcss: 4.1.0
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
+
'@tootallnate/once@2.0.0': {}
'@trysound/sax@0.2.0': {}
@@ -11829,9 +11933,9 @@ snapshots:
minimatch: 7.4.6
semver: 7.7.1
- '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))':
+ '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))':
dependencies:
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
'@vitest/coverage-v8@1.6.1(vitest@1.6.1)':
dependencies:
@@ -11848,7 +11952,7 @@ snapshots:
std-env: 3.9.0
strip-literal: 2.1.1
test-exclude: 6.0.0
- vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(sass@1.89.1)
+ vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(lightningcss@1.30.1)(sass@1.89.1)
transitivePeerDependencies:
- supports-color
@@ -11883,7 +11987,7 @@ snapshots:
pathe: 1.1.2
picocolors: 1.1.1
sirv: 2.0.4
- vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(sass@1.89.1)
+ vitest: 1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(lightningcss@1.30.1)(sass@1.89.1)
'@vitest/utils@1.6.1':
dependencies:
@@ -12079,8 +12183,6 @@ snapshots:
optionalDependencies:
rxjs: 6.6.7
- any-promise@1.3.0: {}
-
anymatch@3.1.3:
dependencies:
normalize-path: 3.0.0
@@ -12091,8 +12193,6 @@ snapshots:
arg@4.1.3:
optional: true
- arg@5.0.2: {}
-
argparse@1.0.10:
dependencies:
sprintf-js: 1.0.3
@@ -12464,8 +12564,6 @@ snapshots:
callsites@3.1.0: {}
- camelcase-css@2.0.1: {}
-
camelcase@5.3.1: {}
camelcase@6.3.0: {}
@@ -12647,8 +12745,6 @@ snapshots:
commander@2.20.3: {}
- commander@4.1.1: {}
-
commander@7.2.0: {}
compare-versions@6.1.1: {}
@@ -12781,8 +12877,6 @@ snapshots:
css-what@6.1.0: {}
- cssesc@3.0.0: {}
-
csso@5.0.5:
dependencies:
css-tree: 2.2.1
@@ -13049,8 +13143,6 @@ snapshots:
dependencies:
dequal: 2.0.3
- didyoumean@1.2.2: {}
-
diff-sequences@29.6.3: {}
diff@4.0.2:
@@ -13060,8 +13152,6 @@ snapshots:
dependencies:
path-type: 4.0.0
- dlv@1.1.3: {}
-
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
@@ -13111,8 +13201,6 @@ snapshots:
readable-stream: 2.3.8
stream-shift: 1.0.3
- eastasianwidth@0.2.0: {}
-
ecc-jsbn@0.1.2:
dependencies:
jsbn: 0.1.1
@@ -13138,8 +13226,6 @@ snapshots:
emoji-regex@8.0.0: {}
- emoji-regex@9.2.2: {}
-
encodeurl@1.0.2: {}
encodeurl@2.0.0: {}
@@ -13148,6 +13234,11 @@ snapshots:
dependencies:
once: 1.4.0
+ enhanced-resolve@5.18.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.2
+
enquirer@2.3.6:
dependencies:
ansi-colors: 4.1.3
@@ -13721,11 +13812,6 @@ snapshots:
dependencies:
is-callable: 1.2.7
- foreground-child@3.3.1:
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 4.1.0
-
forever-agent@0.6.1: {}
form-data@4.0.2:
@@ -13870,15 +13956,6 @@ snapshots:
glob-to-regexp@0.4.1: {}
- glob@10.4.5:
- dependencies:
- foreground-child: 3.3.1
- jackspeak: 3.4.3
- minimatch: 9.0.5
- minipass: 7.1.2
- package-json-from-dist: 1.0.1
- path-scurry: 1.11.1
-
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -14547,12 +14624,6 @@ snapshots:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.1
- jackspeak@3.4.3:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
-
jake@10.9.2:
dependencies:
async: 3.2.6
@@ -14884,7 +14955,7 @@ snapshots:
- supports-color
- ts-node
- jiti@1.21.7: {}
+ jiti@2.4.2: {}
jju@1.4.0: {}
@@ -15075,7 +15146,96 @@ snapshots:
li@1.3.0: {}
- lilconfig@3.1.3: {}
+ lightningcss-darwin-arm64@1.29.2:
+ optional: true
+
+ lightningcss-darwin-arm64@1.30.1:
+ optional: true
+
+ lightningcss-darwin-x64@1.29.2:
+ optional: true
+
+ lightningcss-darwin-x64@1.30.1:
+ optional: true
+
+ lightningcss-freebsd-x64@1.29.2:
+ optional: true
+
+ lightningcss-freebsd-x64@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.30.1:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.30.1:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.30.1:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.30.1:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.29.2:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.30.1:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.30.1:
+ optional: true
+
+ lightningcss@1.29.2:
+ dependencies:
+ detect-libc: 2.0.4
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.29.2
+ lightningcss-darwin-x64: 1.29.2
+ lightningcss-freebsd-x64: 1.29.2
+ lightningcss-linux-arm-gnueabihf: 1.29.2
+ lightningcss-linux-arm64-gnu: 1.29.2
+ lightningcss-linux-arm64-musl: 1.29.2
+ lightningcss-linux-x64-gnu: 1.29.2
+ lightningcss-linux-x64-musl: 1.29.2
+ lightningcss-win32-arm64-msvc: 1.29.2
+ lightningcss-win32-x64-msvc: 1.29.2
+
+ lightningcss@1.30.1:
+ dependencies:
+ detect-libc: 2.0.4
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.30.1
+ lightningcss-darwin-x64: 1.30.1
+ lightningcss-freebsd-x64: 1.30.1
+ lightningcss-linux-arm-gnueabihf: 1.30.1
+ lightningcss-linux-arm64-gnu: 1.30.1
+ lightningcss-linux-arm64-musl: 1.30.1
+ lightningcss-linux-x64-gnu: 1.30.1
+ lightningcss-linux-x64-musl: 1.30.1
+ lightningcss-win32-arm64-msvc: 1.30.1
+ lightningcss-win32-x64-msvc: 1.30.1
+ optional: true
lines-and-columns@1.2.4: {}
@@ -15667,8 +15827,6 @@ snapshots:
minimist@1.2.8: {}
- minipass@7.1.2: {}
-
mkdirp@1.0.4: {}
mlly@1.7.4:
@@ -15698,12 +15856,6 @@ snapshots:
mute-stream@2.0.0: {}
- mz@2.7.0:
- dependencies:
- any-promise: 1.3.0
- object-assign: 4.1.1
- thenify-all: 1.6.0
-
nanoid@3.3.11: {}
natural-compare@1.4.0: {}
@@ -15895,8 +16047,6 @@ snapshots:
object-assign@4.1.1: {}
- object-hash@3.0.0: {}
-
object-inspect@1.13.4: {}
object-keys@1.1.1: {}
@@ -16057,8 +16207,6 @@ snapshots:
p-try@2.2.0: {}
- package-json-from-dist@1.0.1: {}
-
package-json@10.0.1:
dependencies:
ky: 1.8.1
@@ -16143,11 +16291,6 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.11.1:
- dependencies:
- lru-cache: 10.4.3
- minipass: 7.1.2
-
path-to-regexp@0.1.12: {}
path-to-regexp@6.3.0: {}
@@ -16253,36 +16396,6 @@ snapshots:
possible-typed-array-names@1.1.0: {}
- postcss-import@15.1.0(postcss@8.5.4):
- dependencies:
- postcss: 8.5.4
- postcss-value-parser: 4.2.0
- read-cache: 1.0.0
- resolve: 1.22.10
-
- postcss-js@4.0.1(postcss@8.5.4):
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.5.4
-
- postcss-load-config@4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3)):
- dependencies:
- lilconfig: 3.1.3
- yaml: 2.8.0
- optionalDependencies:
- postcss: 8.5.4
- ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3)
-
- postcss-nested@6.2.0(postcss@8.5.4):
- dependencies:
- postcss: 8.5.4
- 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.5.4:
@@ -16293,7 +16406,7 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier-plugin-tailwindcss@0.6.12(prettier@3.5.3):
+ prettier-plugin-tailwindcss@0.6.13(prettier@3.5.3):
dependencies:
prettier: 3.5.3
@@ -16404,12 +16517,12 @@ snapshots:
quick-lru@5.1.1: {}
- qwik-nx@3.2.0(06b9841149a3cbce0c3d6f4540ae0521):
+ qwik-nx@3.2.0(40d83100a189ae8d5af95d312184e2d7):
dependencies:
'@nx/devkit': 21.1.2(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))
'@nx/eslint': 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(@zkochan/js-yaml@0.0.7)(eslint@8.57.1)(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(verdaccio@6.1.2(typanion@3.14.0))
'@nx/js': 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(verdaccio@6.1.2(typanion@3.14.0))
- '@nx/vite': 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)
+ '@nx/vite': 21.1.2(@babel/traverse@7.27.4)(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17))(nx@21.1.2(@swc-node/register@1.10.10(@swc/core@1.11.29(@swc/helpers@0.5.17))(@swc/types@0.1.21)(typescript@5.7.3))(@swc/core@1.11.29(@swc/helpers@0.5.17)))(typescript@5.7.3)(verdaccio@6.1.2(typanion@3.14.0))(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0))(vitest@1.6.1)
qwik-themes@0.2.0: {}
@@ -16431,10 +16544,6 @@ snapshots:
react-is@18.3.1: {}
- read-cache@1.0.0:
- dependencies:
- pify: 2.3.0
-
read-package-up@11.0.0:
dependencies:
find-up-simple: 1.0.1
@@ -17104,12 +17213,6 @@ snapshots:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- string-width@5.1.2:
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.0
-
string-width@7.2.0:
dependencies:
emoji-regex: 10.4.0
@@ -17202,16 +17305,6 @@ snapshots:
dependencies:
inline-style-parser: 0.2.4
- sucrase@3.35.0:
- dependencies:
- '@jridgewell/gen-mapping': 0.3.8
- commander: 4.1.1
- glob: 10.4.5
- lines-and-columns: 1.2.4
- mz: 2.7.0
- pirates: 4.0.7
- ts-interface-checker: 0.1.13
-
supports-color@2.0.0: {}
supports-color@5.5.0:
@@ -17258,38 +17351,9 @@ snapshots:
tailwind-merge@1.14.0: {}
- tailwind-merge@3.3.0: {}
-
- tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))):
- dependencies:
- tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))
+ tailwindcss@4.1.0: {}
- tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3)):
- 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.4
- postcss-import: 15.1.0(postcss@8.5.4)
- postcss-js: 4.0.1(postcss@8.5.4)
- postcss-load-config: 4.0.2(postcss@8.5.4)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3))
- postcss-nested: 6.2.0(postcss@8.5.4)
- postcss-selector-parser: 6.1.2
- resolve: 1.22.10
- sucrase: 3.35.0
- transitivePeerDependencies:
- - ts-node
+ tapable@2.2.2: {}
tar-stream@1.6.2:
dependencies:
@@ -17341,14 +17405,6 @@ snapshots:
text-table@0.2.0: {}
- thenify-all@1.6.0:
- dependencies:
- thenify: 3.3.1
-
- thenify@3.3.1:
- dependencies:
- any-promise: 1.3.0
-
thread-stream@3.1.0:
dependencies:
real-require: 0.2.0
@@ -17443,8 +17499,6 @@ snapshots:
dependencies:
typescript: 5.7.3
- ts-interface-checker@0.1.13: {}
-
ts-jest@29.3.4(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.5)(jest@29.7.0(@types/node@22.15.29)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.15.29)(typescript@5.7.3)))(typescript@5.7.3):
dependencies:
bs-logger: 0.2.6
@@ -17505,6 +17559,8 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ tw-animate-css@1.3.4: {}
+
tweetnacl@0.14.5: {}
typanion@3.14.0: {}
@@ -17821,13 +17877,13 @@ snapshots:
transitivePeerDependencies:
- rollup
- vite-node@1.6.1(@types/node@22.15.29)(sass@1.89.1):
+ vite-node@1.6.1(@types/node@22.15.29)(lightningcss@1.30.1)(sass@1.89.1):
dependencies:
cac: 6.7.14
debug: 4.4.1
pathe: 1.1.2
picocolors: 1.1.1
- vite: 5.4.19(@types/node@22.15.29)(sass@1.89.1)
+ vite: 5.4.19(@types/node@22.15.29)(lightningcss@1.30.1)(sass@1.89.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -17839,7 +17895,7 @@ snapshots:
- supports-color
- terser
- vite-plugin-dts@4.5.4(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)):
+ vite-plugin-dts@4.5.4(@types/node@22.15.29)(rollup@4.41.1)(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)):
dependencies:
'@microsoft/api-extractor': 7.52.8(@types/node@22.15.29)
'@rollup/pluginutils': 5.1.4(rollup@4.41.1)
@@ -17852,21 +17908,21 @@ snapshots:
magic-string: 0.30.17
typescript: 5.7.3
optionalDependencies:
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)):
+ vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)):
dependencies:
'@rollup/pluginutils': 4.2.1
'@types/eslint': 8.56.12
eslint: 8.57.1
rollup: 2.79.2
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
- vite-plugin-inspect@0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)):
+ vite-plugin-inspect@0.8.9(rollup@4.41.1)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.4(rollup@4.41.1)
@@ -17877,31 +17933,31 @@ snapshots:
perfect-debounce: 1.0.0
picocolors: 1.1.1
sirv: 3.0.1
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
transitivePeerDependencies:
- rollup
- supports-color
- vite-plugin-static-copy@1.0.4(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)):
+ vite-plugin-static-copy@1.0.4(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)):
dependencies:
chokidar: 3.6.0
fast-glob: 3.3.3
fs-extra: 11.3.0
picocolors: 1.1.1
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
- vite-tsconfig-paths@4.3.2(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)):
+ vite-tsconfig-paths@4.3.2(typescript@5.7.3)(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)):
dependencies:
debug: 4.4.1
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.7.3)
optionalDependencies:
- vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0)
+ vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@5.4.19(@types/node@22.15.29)(sass@1.89.1):
+ vite@5.4.19(@types/node@22.15.29)(lightningcss@1.30.1)(sass@1.89.1):
dependencies:
esbuild: 0.21.5
postcss: 8.5.4
@@ -17909,9 +17965,10 @@ snapshots:
optionalDependencies:
'@types/node': 22.15.29
fsevents: 2.3.3
+ lightningcss: 1.30.1
sass: 1.89.1
- vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(sass@1.89.1)(yaml@2.8.0):
+ vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)(sass@1.89.1)(yaml@2.8.0):
dependencies:
esbuild: 0.25.5
fdir: 6.4.5(picomatch@4.0.2)
@@ -17922,11 +17979,12 @@ snapshots:
optionalDependencies:
'@types/node': 22.15.29
fsevents: 2.3.3
- jiti: 1.21.7
+ jiti: 2.4.2
+ lightningcss: 1.30.1
sass: 1.89.1
yaml: 2.8.0
- vitest@1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(sass@1.89.1):
+ vitest@1.6.1(@types/node@22.15.29)(@vitest/ui@1.6.1)(jsdom@24.0.0)(lightningcss@1.30.1)(sass@1.89.1):
dependencies:
'@vitest/expect': 1.6.1
'@vitest/runner': 1.6.1
@@ -17945,8 +18003,8 @@ snapshots:
strip-literal: 2.1.1
tinybench: 2.9.0
tinypool: 0.8.4
- vite: 5.4.19(@types/node@22.15.29)(sass@1.89.1)
- vite-node: 1.6.1(@types/node@22.15.29)(sass@1.89.1)
+ vite: 5.4.19(@types/node@22.15.29)(lightningcss@1.30.1)(sass@1.89.1)
+ vite-node: 1.6.1(@types/node@22.15.29)(lightningcss@1.30.1)(sass@1.89.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.15.29
@@ -18117,12 +18175,6 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 5.1.2
- strip-ansi: 7.1.0
-
wrap-ansi@9.0.0:
dependencies:
ansi-styles: 6.2.1