@razorwind/tailwindcss 0.0.42 → 0.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ import{t as e}from"./rolldown-runtime-DK3Fl9T5.mjs";import{mergeFonts as t,parseCssFonts as n}from"@razorwind/core/lib/fonts";import{nestFlatTokens as r}from"@razorwind/core/lib/tokens";import{definePlugin as i}from"@razorwind/core/plugin";import{existsSync as a}from"@stryke/fs/exists";import{readFile as o}from"@stryke/fs/read-file";import{appendPath as s}from"@stryke/path/append";import{isSetString as c}from"@stryke/type-checks/is-set-string";import l from"fast-glob";import u,{dirname as d,isAbsolute as f,resolve as p}from"node:path";import{readJsonFile as m}from"@stryke/fs/json";async function h(e=``){let t=u.join(e,`package.json`);return m(t)}var g=e({default:()=>E,detectTailwindWorkspace:()=>C,extractTailwindTokens:()=>T,getPackageInfo:()=>h,getTailwindConfigFile:()=>S,getTailwindCssFile:()=>x,getTailwindVersion:()=>b,resolveTailwindCssEntry:()=>w});const _=[`**/node_modules/**`,`**/.git/**`,`**/dist/**`,`**/build/**`,`**/.next/**`,`**/.nuxt/**`,`**/.turbo/**`,`**/coverage/**`];async function v(){try{return await import(`@tailwindcss/node`)}catch(e){throw Error(`Cannot load '@tailwindcss/node'. Install tailwindcss v4 / @tailwindcss/node to extract workspace theme tokens.`,{cause:e})}}function y(e,t){return f(t)?t:p(e,t)}async function b(e){let t=await h(e);return!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:/^(?:\^|~)?3(?:\.\d+)*(?:-.*)?$/.test(t?.dependencies?.tailwindcss||t?.devDependencies?.tailwindcss||``)?`v3`:`v4`}async function x(e,t){if(t){let n=p(e,t);if(a(n))return t}let n=await l.glob([`**/*.css`,`**/*.scss`],{cwd:e,deep:5,ignore:_});if(!n.length)return null;for(let t of n){let n=await o(p(e,t));if(n.includes(`@import "tailwindcss"`)||n.includes(`@import 'tailwindcss'`)||n.includes(`@tailwind base`))return t}return null}async function S(e){return(await l.glob(`tailwind.config.*`,{cwd:e,deep:3,ignore:_}))[0]??null}async function C(e,t){let[n,r,i]=await Promise.all([b(e),x(e,t??void 0),S(e)]);return{configured:!!(n&&r),version:n,cssFile:r,configFile:i}}function w(e,t){for(let n of t){if(!c(n))continue;let t=y(e,n);if(a(t))return t}return null}async function T(e){let{cwd:t,cssPath:n,omitDefaults:i=!1}=e,a=await C(t,n);if(!a.configured||a.version!==`v4`)return;let s=w(t,[n,a.cssFile]);if(!s)return;let c=await o(s),l=await(await v()).__unstable__loadDesignSystem(c,{base:d(s)}),u={};for(let[e,t]of l.theme.entries())i&&(t.options&4)==4||!e.startsWith(`--`)||!t.value||(u[e]=t.value);if(Object.keys(u).length!==0)return r(u)}var E=i(e=>({name:`tailwindcss:extract`,extract:async(r,i)=>{let a=i.cwd,c=await C(a,e?.cssPath),l=r;if((!r.tokens||Object.keys(r.tokens).length===0)&&c.configured&&c.version===`v4`){let t=await T({cwd:a,cssPath:e?.cssPath?s(e.cssPath,a):c.cssFile,omitDefaults:e?.omitDefaults});t&&Object.keys(t).length>0&&(l={...l,tokens:t})}let u=w(a,[e?.cssPath,c.cssFile]);if(u){let e=n(await o(u));l={...l,fonts:t(l.fonts,e)}}return l}}));export{S as a,w as c,g as i,h as l,T as n,x as o,E as r,b as s,C as t};
2
+ //# sourceMappingURL=extract-D5hPV_r7.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-D5hPV_r7.mjs","names":[],"sources":[],"mappings":""}
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("@razorwind/core/lib/fonts"),u=require("@razorwind/core/lib/tokens"),d=require("@razorwind/core/plugin"),f=require("@stryke/fs/exists"),p=require("@stryke/fs/read-file"),m=require("@stryke/path/append"),h=require("@stryke/type-checks/is-set-string"),g=require("fast-glob");g=c(g,1);let _=require("node:path");_=c(_,1);let v=require("@stryke/fs/json");async function y(e=``){let t=_.default.join(e,`package.json`);return(0,v.readJsonFile)(t)}var b=o({default:()=>A,detectTailwindWorkspace:()=>D,extractTailwindTokens:()=>k,getPackageInfo:()=>y,getTailwindConfigFile:()=>E,getTailwindCssFile:()=>T,getTailwindVersion:()=>w,resolveTailwindCssEntry:()=>O});const x=[`**/node_modules/**`,`**/.git/**`,`**/dist/**`,`**/build/**`,`**/.next/**`,`**/.nuxt/**`,`**/.turbo/**`,`**/coverage/**`];async function S(){try{return await import(`@tailwindcss/node`)}catch(e){throw Error(`Cannot load '@tailwindcss/node'. Install tailwindcss v4 / @tailwindcss/node to extract workspace theme tokens.`,{cause:e})}}function C(e,t){return(0,_.isAbsolute)(t)?t:(0,_.resolve)(e,t)}async function w(e){let t=await y(e);return!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:/^(?:\^|~)?3(?:\.\d+)*(?:-.*)?$/.test(t?.dependencies?.tailwindcss||t?.devDependencies?.tailwindcss||``)?`v3`:`v4`}async function T(e,t){if(t){let n=(0,_.resolve)(e,t);if((0,f.existsSync)(n))return t}let n=await g.default.glob([`**/*.css`,`**/*.scss`],{cwd:e,deep:5,ignore:x});if(!n.length)return null;for(let t of n){let n=await(0,p.readFile)((0,_.resolve)(e,t));if(n.includes(`@import "tailwindcss"`)||n.includes(`@import 'tailwindcss'`)||n.includes(`@tailwind base`))return t}return null}async function E(e){return(await g.default.glob(`tailwind.config.*`,{cwd:e,deep:3,ignore:x}))[0]??null}async function D(e,t){let[n,r,i]=await Promise.all([w(e),T(e,t??void 0),E(e)]);return{configured:!!(n&&r),version:n,cssFile:r,configFile:i}}function O(e,t){for(let n of t){if(!(0,h.isSetString)(n))continue;let t=C(e,n);if((0,f.existsSync)(t))return t}return null}async function k(e){let{cwd:t,cssPath:n,omitDefaults:r=!1}=e,i=await D(t,n);if(!i.configured||i.version!==`v4`)return;let a=O(t,[n,i.cssFile]);if(!a)return;let o=await(0,p.readFile)(a),s=await(await S()).__unstable__loadDesignSystem(o,{base:(0,_.dirname)(a)}),c={};for(let[e,t]of s.theme.entries())r&&(t.options&4)==4||!e.startsWith(`--`)||!t.value||(c[e]=t.value);if(Object.keys(c).length!==0)return(0,u.nestFlatTokens)(c)}var A=(0,d.definePlugin)(e=>({name:`tailwindcss:extract`,extract:async(t,n)=>{let r=n.cwd,i=await D(r,e?.cssPath),a=t;if((!t.tokens||Object.keys(t.tokens).length===0)&&i.configured&&i.version===`v4`){let t=await k({cwd:r,cssPath:e?.cssPath?(0,m.appendPath)(e.cssPath,r):i.cssFile,omitDefaults:e?.omitDefaults});t&&Object.keys(t).length>0&&(a={...a,tokens:t})}let o=O(r,[e?.cssPath,i.cssFile]);if(o){let e=(0,l.parseCssFonts)(await(0,p.readFile)(o));a={...a,fonts:(0,l.mergeFonts)(a.fonts,e)}}return a}}));Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return o}});
package/dist/extract.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./extract-BEWeWMZY.cjs");exports.default=e.r,exports.detectTailwindWorkspace=e.t,exports.extractTailwindTokens=e.n,exports.getPackageInfo=e.l,exports.getTailwindConfigFile=e.a,exports.getTailwindCssFile=e.o,exports.getTailwindVersion=e.s,exports.resolveTailwindCssEntry=e.c;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./extract-DwBAAWH7.cjs");exports.default=e.r,exports.detectTailwindWorkspace=e.t,exports.extractTailwindTokens=e.n,exports.getPackageInfo=e.l,exports.getTailwindConfigFile=e.a,exports.getTailwindCssFile=e.o,exports.getTailwindVersion=e.s,exports.resolveTailwindCssEntry=e.c;
package/dist/extract.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,c as t,l as n,n as r,o as i,r as a,s as o,t as s}from"./extract-C0PWubPn.mjs";export{a as default,s as detectTailwindWorkspace,r as extractTailwindTokens,n as getPackageInfo,e as getTailwindConfigFile,i as getTailwindCssFile,o as getTailwindVersion,t as resolveTailwindCssEntry};
1
+ import{a as e,c as t,l as n,n as r,o as i,r as a,s as o,t as s}from"./extract-D5hPV_r7.mjs";export{a as default,s as detectTailwindWorkspace,r as extractTailwindTokens,n as getPackageInfo,e as getTailwindConfigFile,i as getTailwindCssFile,o as getTailwindVersion,t as resolveTailwindCssEntry};
@@ -0,0 +1,36 @@
1
+ const e=require("./extract-DwBAAWH7.cjs");let t=require("@razorwind/core/lib/fonts"),n=require("@razorwind/core/plugin"),r=require("node:path"),i=require("@power-plant/core"),a=require("@razorwind/core/utils");function o(e){let t=e.includeImport?'The file includes `@import "tailwindcss"` and `@theme` token mappings.':'The file contains `@theme` token mappings (no `@import "tailwindcss"`).';return`# Installing Tailwind Theme CSS
2
+
3
+ Generated by \`@razorwind/tailwindcss\`.
4
+
5
+ ## Files
6
+
7
+ - \`${e.cssPath}\` — Tailwind v4 theme entry (${t})
8
+
9
+ ## Setup
10
+
11
+ 1. Import the generated CSS in your app entry (or merge into your existing Tailwind entry):
12
+
13
+ \`\`\`ts
14
+ import "./${e.cssPath}";
15
+ \`\`\`
16
+
17
+ 2. Ensure your build uses Tailwind v4 (Vite plugin, PostCSS, or CLI).
18
+
19
+ 3. Use generated theme tokens as utilities or arbitrary values, e.g. \`bg-primary\` when \`--color-primary\` is defined in \`@theme\`\.
20
+
21
+ ## Regenerate
22
+
23
+ Re-run Razorwind generate when design tokens change so \`${e.cssPath}\` stays in sync.
24
+ `}var s=e.u({default:()=>w,flattenThemeTokens:()=>g,generateTailwindCss:()=>C,renderInstallMd:()=>o,renderTailwindCss:()=>x,resolveTokenSets:()=>h,toThemeCssVar:()=>p});const c=/^(?:light|dark|dim|high-contrast|hc|default|base|theme)(?:[._-].+)?$/i,l=new Set([`default`,`base`,`light`,`theme`]);function u(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function d(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function f(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function p(e){return`--${e.split(`.`).filter(Boolean).filter((e,t,n)=>e!==`DEFAULT`||t!==n.length-1).join(`-`)}`}function m(e,t,n,r){if(!(0,a.isObject)(e))return;let i=d(e,n);if(u(e)){let n=f(e),o=t.join(`.`);r.push({path:o,type:i,value:n,cssValue:(0,a.formatTokenValue)(n,i),cssVar:p(o)});return}for(let[n,a]of Object.entries(e))n.startsWith(`$`)||m(a,[...t,n],i,r)}function h(e){if(!(0,a.isObject)(e))return[];let t=Object.keys(e).filter(e=>!e.startsWith(`$`));if(t.length>0&&t.every(e=>c.test(e))){let n=e;return t.map(e=>({id:e,tokens:n[e]}))}return[{id:`default`,tokens:e}]}function g(e){let t=[];for(let n of h(e)){let e=[];m(n.tokens,[],void 0,e);for(let r of e)t.push({...r,theme:n.id==="default"?void 0:n.id})}return t}function _(e){return e.find(e=>l.has(e.id.toLowerCase()))??e[0]}function v(e){return e.length===0?`@theme {
25
+ }
26
+ `:`@theme {\n${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
27
+ `)}\n}\n`}function y(e){return e.length===0?``:`
28
+ @layer theme {
29
+ .dark {
30
+ ${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
31
+ `)}
32
+ }
33
+ }
34
+ `}function b(e,n){if(!n)return e;let r=new Set(e.filter(e=>!e.theme).map(e=>e.cssVar)),i=[];for(let e of Object.values(n)){if(!e.role)continue;let n=`--font-${e.role}`;if(r.has(n))continue;let a=(0,t.cssFontFamily)(e);i.push({path:`font.${e.role}`,type:`fontFamily`,value:a,cssValue:a,cssVar:n}),r.add(n)}return i.length>0?[...e,...i]:e}function x(e,n={}){let r=n.includeImport!==!1,i=n.fonts,a=b(e,i),o=a.filter(e=>!e.theme||l.has(e.theme.toLowerCase())),s=a.filter(e=>e.theme?.toLowerCase()===`dark`),c=[],u=i?(0,t.renderGoogleFontImports)(i):``;u&&c.push(`${u}\n`),r&&c.push(`@import "tailwindcss";
35
+ `);let d=i?(0,t.renderLocalFontFaces)(i):``;return d&&c.push(`${d}\n`),c.push(v(o)),s.length>0&&c.push(y(s)),`${c.join(`
36
+ `).trimEnd()}\n`}async function S(t){if(t.cssPath)return t.cssPath;let{cwd:n}=(0,i.useExecution)();return(await e.t(n)).cssFile??`src/app.css`}async function C(e,n={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let i=h(e.tokens);if(i.length===0||!_(i))return{};let s=g(e.tokens);if(s.length===0)return{};let c=await S(n),l=x(s,{...n,fonts:e.fonts}),u=n.includeImport!==!1;e.fonts&&await(0,t.copyFontFiles)(e.fonts,(0,r.join)((0,r.dirname)(c),`fonts`));let d=n.installGuide??o({cssPath:c,includeImport:u}),f=(0,r.join)((0,r.dirname)(c),`INSTALL.md`);return{[c]:(0,a.createDocument)(c,l,{name:`razorwind-tailwindcss`},`css`),[f]:(0,a.createDocument)(f,d,{name:`razorwind-tailwindcss`},`markdown`)}}var w=(0,n.definePlugin)(e=>({name:`tailwindcss:generate`,generate:async t=>C(t,e??{})}));Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}});
@@ -1,6 +1,6 @@
1
1
  import { r as TailwindGeneratePluginOptions, t as FlatThemeToken } from "./types-CGnL0PxK.mjs";
2
2
  import { GeneratorFunctionResult } from "@power-plant/core";
3
- import { Schema, Tokens } from "@razorwind/core/schema";
3
+ import { Fonts, Schema, Tokens } from "@razorwind/core/schema";
4
4
  //#region src/install.d.ts
5
5
  /**
6
6
  * Build Tailwind INSTALL.md for generated CSS theme entry.
@@ -38,7 +38,9 @@ declare function flattenThemeTokens(tokens: Tokens | Record<string, Tokens>): Fl
38
38
  /**
39
39
  * Render a Tailwind v4 CSS entry from flattened theme tokens.
40
40
  */
41
- declare function renderTailwindCss(tokens: FlatThemeToken[], options?: Pick<TailwindGeneratePluginOptions, "includeImport">): string;
41
+ declare function renderTailwindCss(tokens: FlatThemeToken[], options?: Pick<TailwindGeneratePluginOptions, "includeImport"> & {
42
+ fonts?: Fonts;
43
+ }): string;
42
44
  /**
43
45
  * Generate a Tailwind v4 CSS entry (`@import` + `@theme`) from a Razorwind schema.
44
46
  */
@@ -59,4 +61,4 @@ declare function generateTailwindCss(spec: Schema, options?: TailwindGeneratePlu
59
61
  declare const _default: (options?: TailwindGeneratePluginOptions | undefined) => import("@razorwind/core/plugin").Plugin;
60
62
  //#endregion
61
63
  export { renderTailwindCss as a, renderInstallMd as c, generate_d_exports as i, flattenThemeTokens as n, resolveTokenSets as o, generateTailwindCss as r, toThemeCssVar as s, _default as t };
62
- //# sourceMappingURL=generate-OJ9Icif0.d.mts.map
64
+ //# sourceMappingURL=generate-CbmcAoDd.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-CbmcAoDd.d.mts","names":[],"sources":["../src/install.ts","../src/generate.ts"],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  import { i as __exportAll, r as TailwindGeneratePluginOptions, t as FlatThemeToken } from "./types-Bp1KBCUc.cjs";
2
2
  import { GeneratorFunctionResult } from "@power-plant/core";
3
- import { Schema, Tokens } from "@razorwind/core/schema";
3
+ import { Fonts, Schema, Tokens } from "@razorwind/core/schema";
4
4
  //#region src/install.d.ts
5
5
  /**
6
6
  * Build Tailwind INSTALL.md for generated CSS theme entry.
@@ -38,7 +38,9 @@ declare function flattenThemeTokens(tokens: Tokens | Record<string, Tokens>): Fl
38
38
  /**
39
39
  * Render a Tailwind v4 CSS entry from flattened theme tokens.
40
40
  */
41
- declare function renderTailwindCss(tokens: FlatThemeToken[], options?: Pick<TailwindGeneratePluginOptions, "includeImport">): string;
41
+ declare function renderTailwindCss(tokens: FlatThemeToken[], options?: Pick<TailwindGeneratePluginOptions, "includeImport"> & {
42
+ fonts?: Fonts;
43
+ }): string;
42
44
  /**
43
45
  * Generate a Tailwind v4 CSS entry (`@import` + `@theme`) from a Razorwind schema.
44
46
  */
@@ -59,4 +61,4 @@ declare function generateTailwindCss(spec: Schema, options?: TailwindGeneratePlu
59
61
  declare const _default: (options?: TailwindGeneratePluginOptions | undefined) => import("@razorwind/core/plugin").Plugin;
60
62
  //#endregion
61
63
  export { renderTailwindCss as a, renderInstallMd as c, generate_d_exports as i, flattenThemeTokens as n, resolveTokenSets as o, generateTailwindCss as r, toThemeCssVar as s, _default as t };
62
- //# sourceMappingURL=generate-CtFpoykM.d.cts.map
64
+ //# sourceMappingURL=generate-DpNg5Feb.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-DpNg5Feb.d.cts","names":[],"sources":["../src/install.ts","../src/generate.ts"],"mappings":";;;;;;;;;iBAuBgB,gBAAgB;EAC9B;EACA;;;;;;;;;;iBC2Dc,cAAc;UA6CpB;EACR;EACA,QAAQ;;;;;;;;iBASM,iBACd,QAAQ,SAAS,eAAe,UAC/B;;;;iBAwBa,mBACd,QAAQ,SAAS,eAAe,UAC/B;;;;iBA+Fa,kBACd,QAAQ,kBACR,UAAS,KAAK;EACZ,QAAQ;;;;;iBAkDU,oBACpB,MAAM,QACN,UAAS,gCACR,QAAQ,wBAAwB,QAAQ"}
@@ -0,0 +1,37 @@
1
+ import{t as e}from"./rolldown-runtime-DK3Fl9T5.mjs";import{t}from"./extract-D5hPV_r7.mjs";import{copyFontFiles as n,cssFontFamily as r,renderGoogleFontImports as i,renderLocalFontFaces as a}from"@razorwind/core/lib/fonts";import{definePlugin as o}from"@razorwind/core/plugin";import{dirname as s,join as c}from"node:path";import{useExecution as l}from"@power-plant/core";import{createDocument as u,formatTokenValue as d,isObject as f}from"@razorwind/core/utils";function p(e){let t=e.includeImport?'The file includes `@import "tailwindcss"` and `@theme` token mappings.':'The file contains `@theme` token mappings (no `@import "tailwindcss"`).';return`# Installing Tailwind Theme CSS
2
+
3
+ Generated by \`@razorwind/tailwindcss\`.
4
+
5
+ ## Files
6
+
7
+ - \`${e.cssPath}\` — Tailwind v4 theme entry (${t})
8
+
9
+ ## Setup
10
+
11
+ 1. Import the generated CSS in your app entry (or merge into your existing Tailwind entry):
12
+
13
+ \`\`\`ts
14
+ import "./${e.cssPath}";
15
+ \`\`\`
16
+
17
+ 2. Ensure your build uses Tailwind v4 (Vite plugin, PostCSS, or CLI).
18
+
19
+ 3. Use generated theme tokens as utilities or arbitrary values, e.g. \`bg-primary\` when \`--color-primary\` is defined in \`@theme\`\.
20
+
21
+ ## Regenerate
22
+
23
+ Re-run Razorwind generate when design tokens change so \`${e.cssPath}\` stays in sync.
24
+ `}var m=e({default:()=>j,flattenThemeTokens:()=>C,generateTailwindCss:()=>A,renderInstallMd:()=>p,renderTailwindCss:()=>O,resolveTokenSets:()=>S,toThemeCssVar:()=>b});const h=/^(?:light|dark|dim|high-contrast|hc|default|base|theme)(?:[._-].+)?$/i,g=new Set([`default`,`base`,`light`,`theme`]);function _(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function v(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function y(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function b(e){return`--${e.split(`.`).filter(Boolean).filter((e,t,n)=>e!==`DEFAULT`||t!==n.length-1).join(`-`)}`}function x(e,t,n,r){if(!f(e))return;let i=v(e,n);if(_(e)){let n=y(e),a=t.join(`.`);r.push({path:a,type:i,value:n,cssValue:d(n,i),cssVar:b(a)});return}for(let[n,a]of Object.entries(e))n.startsWith(`$`)||x(a,[...t,n],i,r)}function S(e){if(!f(e))return[];let t=Object.keys(e).filter(e=>!e.startsWith(`$`));if(t.length>0&&t.every(e=>h.test(e))){let n=e;return t.map(e=>({id:e,tokens:n[e]}))}return[{id:`default`,tokens:e}]}function C(e){let t=[];for(let n of S(e)){let e=[];x(n.tokens,[],void 0,e);for(let r of e)t.push({...r,theme:n.id==="default"?void 0:n.id})}return t}function w(e){return e.find(e=>g.has(e.id.toLowerCase()))??e[0]}function T(e){return e.length===0?`@theme {
25
+ }
26
+ `:`@theme {\n${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
27
+ `)}\n}\n`}function E(e){return e.length===0?``:`
28
+ @layer theme {
29
+ .dark {
30
+ ${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
31
+ `)}
32
+ }
33
+ }
34
+ `}function D(e,t){if(!t)return e;let n=new Set(e.filter(e=>!e.theme).map(e=>e.cssVar)),i=[];for(let e of Object.values(t)){if(!e.role)continue;let t=`--font-${e.role}`;if(n.has(t))continue;let a=r(e);i.push({path:`font.${e.role}`,type:`fontFamily`,value:a,cssValue:a,cssVar:t}),n.add(t)}return i.length>0?[...e,...i]:e}function O(e,t={}){let n=t.includeImport!==!1,r=t.fonts,o=D(e,r),s=o.filter(e=>!e.theme||g.has(e.theme.toLowerCase())),c=o.filter(e=>e.theme?.toLowerCase()===`dark`),l=[],u=r?i(r):``;u&&l.push(`${u}\n`),n&&l.push(`@import "tailwindcss";
35
+ `);let d=r?a(r):``;return d&&l.push(`${d}\n`),l.push(T(s)),c.length>0&&l.push(E(c)),`${l.join(`
36
+ `).trimEnd()}\n`}async function k(e){if(e.cssPath)return e.cssPath;let{cwd:n}=l();return(await t(n)).cssFile??`src/app.css`}async function A(e,t={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let r=S(e.tokens);if(r.length===0||!w(r))return{};let i=C(e.tokens);if(i.length===0)return{};let a=await k(t),o=O(i,{...t,fonts:e.fonts}),l=t.includeImport!==!1;e.fonts&&await n(e.fonts,c(s(a),`fonts`));let d=t.installGuide??p({cssPath:a,includeImport:l}),f=c(s(a),`INSTALL.md`);return{[a]:u(a,o,{name:`razorwind-tailwindcss`},`css`),[f]:u(f,d,{name:`razorwind-tailwindcss`},`markdown`)}}var j=o(e=>({name:`tailwindcss:generate`,generate:async t=>A(t,e??{})}));export{O as a,p as c,m as i,A as n,S as o,j as r,b as s,C as t};
37
+ //# sourceMappingURL=generate-ecQXGC5y.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-ecQXGC5y.mjs","names":[],"sources":[],"mappings":""}
package/dist/generate.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./generate-DoOO94Nf.cjs");exports.default=e.r,exports.flattenThemeTokens=e.t,exports.generateTailwindCss=e.n,exports.renderInstallMd=e.c,exports.renderTailwindCss=e.a,exports.resolveTokenSets=e.o,exports.toThemeCssVar=e.s;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./generate-Bb0k5nol.cjs");exports.default=e.r,exports.flattenThemeTokens=e.t,exports.generateTailwindCss=e.n,exports.renderInstallMd=e.c,exports.renderTailwindCss=e.a,exports.resolveTokenSets=e.o,exports.toThemeCssVar=e.s;
@@ -1,3 +1,3 @@
1
1
  import { r as TailwindGeneratePluginOptions, t as FlatThemeToken } from "./types-Bp1KBCUc.cjs";
2
- import { a as renderTailwindCss, c as renderInstallMd, n as flattenThemeTokens, o as resolveTokenSets, r as generateTailwindCss, s as toThemeCssVar, t as _default } from "./generate-CtFpoykM.cjs";
2
+ import { a as renderTailwindCss, c as renderInstallMd, n as flattenThemeTokens, o as resolveTokenSets, r as generateTailwindCss, s as toThemeCssVar, t as _default } from "./generate-DpNg5Feb.cjs";
3
3
  export { type FlatThemeToken, type TailwindGeneratePluginOptions, _default as default, flattenThemeTokens, generateTailwindCss, renderInstallMd, renderTailwindCss, resolveTokenSets, toThemeCssVar };
@@ -1,3 +1,3 @@
1
1
  import { r as TailwindGeneratePluginOptions, t as FlatThemeToken } from "./types-CGnL0PxK.mjs";
2
- import { a as renderTailwindCss, c as renderInstallMd, n as flattenThemeTokens, o as resolveTokenSets, r as generateTailwindCss, s as toThemeCssVar, t as _default } from "./generate-OJ9Icif0.mjs";
2
+ import { a as renderTailwindCss, c as renderInstallMd, n as flattenThemeTokens, o as resolveTokenSets, r as generateTailwindCss, s as toThemeCssVar, t as _default } from "./generate-CbmcAoDd.mjs";
3
3
  export { type FlatThemeToken, type TailwindGeneratePluginOptions, _default as default, flattenThemeTokens, generateTailwindCss, renderInstallMd, renderTailwindCss, resolveTokenSets, toThemeCssVar };
package/dist/generate.mjs CHANGED
@@ -1 +1 @@
1
- import{a as e,c as t,n,o as r,r as i,s as a,t as o}from"./generate-BYKCGYm-.mjs";export{i as default,o as flattenThemeTokens,n as generateTailwindCss,t as renderInstallMd,e as renderTailwindCss,r as resolveTokenSets,a as toThemeCssVar};
1
+ import{a as e,c as t,n,o as r,r as i,s as a,t as o}from"./generate-ecQXGC5y.mjs";export{i as default,o as flattenThemeTokens,n as generateTailwindCss,t as renderInstallMd,e as renderTailwindCss,r as resolveTokenSets,a as toThemeCssVar};
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./extract-BEWeWMZY.cjs"),t=require("./generate-DoOO94Nf.cjs");Object.defineProperty(exports,"extract",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(exports,"generate",{enumerable:!0,get:function(){return t.i}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./extract-DwBAAWH7.cjs"),t=require("./generate-Bb0k5nol.cjs");Object.defineProperty(exports,"extract",{enumerable:!0,get:function(){return e.i}}),Object.defineProperty(exports,"generate",{enumerable:!0,get:function(){return t.i}});
package/dist/index.d.cts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { a as extract_d_exports } from "./extract-DtoWdPiV.cjs";
2
- import { i as generate_d_exports } from "./generate-CtFpoykM.cjs";
2
+ import { i as generate_d_exports } from "./generate-DpNg5Feb.cjs";
3
3
  export { extract_d_exports as extract, generate_d_exports as generate };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { a as extract_d_exports } from "./extract-yB1GBvRe.mjs";
2
- import { i as generate_d_exports } from "./generate-OJ9Icif0.mjs";
2
+ import { i as generate_d_exports } from "./generate-CbmcAoDd.mjs";
3
3
  export { extract_d_exports as extract, generate_d_exports as generate };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{i as e}from"./extract-C0PWubPn.mjs";import{i as t}from"./generate-BYKCGYm-.mjs";export{e as extract,t as generate};
1
+ import{i as e}from"./extract-D5hPV_r7.mjs";import{i as t}from"./generate-ecQXGC5y.mjs";export{e as extract,t as generate};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/tailwindcss",
3
- "version": "0.0.42",
3
+ "version": "0.0.43",
4
4
  "type": "module",
5
5
  "description": "Razorwind Tailwind CSS plugin that can create Tailwind CSS files from design tokens or read a Tailwind CSS file and return the design tokens.",
6
6
  "repository": {
@@ -80,7 +80,7 @@
80
80
  "dependencies": {
81
81
  "@power-plant/core": "^0.0.90",
82
82
  "@power-plant/dtcg-schema": "^0.0.1",
83
- "@razorwind/core": "^0.0.46",
83
+ "@razorwind/core": "^0.0.47",
84
84
  "@stryke/fs": "^0.33.110",
85
85
  "@stryke/path": "^0.29.35",
86
86
  "@stryke/type-checks": "^0.6.41",
@@ -95,5 +95,5 @@
95
95
  "typescript": "^6.0.3"
96
96
  },
97
97
  "publishConfig": { "access": "public" },
98
- "gitHead": "0bfdb728cdb6c241eae5072dab7984fe48146c22"
98
+ "gitHead": "ca5955e41399f13b752e589a14338d6821b78f6c"
99
99
  }
@@ -1 +0,0 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("@power-plant/core"),u=require("@razorwind/core/plugin"),d=require("@razorwind/core/lib/tokens"),f=require("@stryke/fs/exists"),p=require("@stryke/fs/read-file"),m=require("@stryke/path/append"),h=require("@stryke/type-checks/is-set-string"),g=require("fast-glob");g=c(g,1);let _=require("node:path");_=c(_,1);let v=require("@stryke/fs/json");async function y(e=``){let t=_.default.join(e,`package.json`);return(0,v.readJsonFile)(t)}var b=o({default:()=>A,detectTailwindWorkspace:()=>D,extractTailwindTokens:()=>k,getPackageInfo:()=>y,getTailwindConfigFile:()=>E,getTailwindCssFile:()=>T,getTailwindVersion:()=>w,resolveTailwindCssEntry:()=>O});const x=[`**/node_modules/**`,`**/.git/**`,`**/dist/**`,`**/build/**`,`**/.next/**`,`**/.nuxt/**`,`**/.turbo/**`,`**/coverage/**`];async function S(){try{return await import(`@tailwindcss/node`)}catch(e){throw Error(`Cannot load '@tailwindcss/node'. Install tailwindcss v4 / @tailwindcss/node to extract workspace theme tokens.`,{cause:e})}}function C(e,t){return(0,_.isAbsolute)(t)?t:(0,_.resolve)(e,t)}async function w(e){let t=await y(e);return!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:/^(?:\^|~)?3(?:\.\d+)*(?:-.*)?$/.test(t?.dependencies?.tailwindcss||t?.devDependencies?.tailwindcss||``)?`v3`:`v4`}async function T(e,t){if(t){let n=(0,_.resolve)(e,t);if((0,f.existsSync)(n))return t}let n=await g.default.glob([`**/*.css`,`**/*.scss`],{cwd:e,deep:5,ignore:x});if(!n.length)return null;for(let t of n){let n=await(0,p.readFile)((0,_.resolve)(e,t));if(n.includes(`@import "tailwindcss"`)||n.includes(`@import 'tailwindcss'`)||n.includes(`@tailwind base`))return t}return null}async function E(e){return(await g.default.glob(`tailwind.config.*`,{cwd:e,deep:3,ignore:x}))[0]??null}async function D(e,t){let[n,r,i]=await Promise.all([w(e),T(e,t??void 0),E(e)]);return{configured:!!(n&&r),version:n,cssFile:r,configFile:i}}function O(e,t){for(let n of t){if(!(0,h.isSetString)(n))continue;let t=C(e,n);if((0,f.existsSync)(t))return t}return null}async function k(e){let{cwd:t,cssPath:n,omitDefaults:r=!1}=e,i=await D(t,n);if(!i.configured||i.version!==`v4`)return;let a=O(t,[n,i.cssFile]);if(!a)return;let o=await(0,p.readFile)(a),s=await(await S()).__unstable__loadDesignSystem(o,{base:(0,_.dirname)(a)}),c={};for(let[e,t]of s.theme.entries())r&&(t.options&4)==4||!e.startsWith(`--`)||!t.value||(c[e]=t.value);if(Object.keys(c).length!==0)return(0,d.nestFlatTokens)(c)}var A=(0,u.definePlugin)(e=>({name:`tailwindcss:extract`,extract:async t=>{if(t.tokens&&Object.keys(t.tokens).length>0)return t;let{cwd:n}=(0,l.useExecution)(),r=await D(n,e?.cssPath);if(!r.configured||r.version!==`v4`)return t;let i=await k({cwd:n,cssPath:e?.cssPath?(0,m.appendPath)(e.cssPath,n):r.cssFile,omitDefaults:e?.omitDefaults});return!i||Object.keys(i).length===0?t:{...t,tokens:i}}}));Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return o}});
@@ -1,2 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DK3Fl9T5.mjs";import{useExecution as t}from"@power-plant/core";import{definePlugin as n}from"@razorwind/core/plugin";import{nestFlatTokens as r}from"@razorwind/core/lib/tokens";import{existsSync as i}from"@stryke/fs/exists";import{readFile as a}from"@stryke/fs/read-file";import{appendPath as o}from"@stryke/path/append";import{isSetString as s}from"@stryke/type-checks/is-set-string";import c from"fast-glob";import l,{dirname as u,isAbsolute as d,resolve as f}from"node:path";import{readJsonFile as p}from"@stryke/fs/json";async function m(e=``){let t=l.join(e,`package.json`);return p(t)}var h=e({default:()=>T,detectTailwindWorkspace:()=>S,extractTailwindTokens:()=>w,getPackageInfo:()=>m,getTailwindConfigFile:()=>x,getTailwindCssFile:()=>b,getTailwindVersion:()=>y,resolveTailwindCssEntry:()=>C});const g=[`**/node_modules/**`,`**/.git/**`,`**/dist/**`,`**/build/**`,`**/.next/**`,`**/.nuxt/**`,`**/.turbo/**`,`**/coverage/**`];async function _(){try{return await import(`@tailwindcss/node`)}catch(e){throw Error(`Cannot load '@tailwindcss/node'. Install tailwindcss v4 / @tailwindcss/node to extract workspace theme tokens.`,{cause:e})}}function v(e,t){return d(t)?t:f(e,t)}async function y(e){let t=await m(e);return!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:/^(?:\^|~)?3(?:\.\d+)*(?:-.*)?$/.test(t?.dependencies?.tailwindcss||t?.devDependencies?.tailwindcss||``)?`v3`:`v4`}async function b(e,t){if(t){let n=f(e,t);if(i(n))return t}let n=await c.glob([`**/*.css`,`**/*.scss`],{cwd:e,deep:5,ignore:g});if(!n.length)return null;for(let t of n){let n=await a(f(e,t));if(n.includes(`@import "tailwindcss"`)||n.includes(`@import 'tailwindcss'`)||n.includes(`@tailwind base`))return t}return null}async function x(e){return(await c.glob(`tailwind.config.*`,{cwd:e,deep:3,ignore:g}))[0]??null}async function S(e,t){let[n,r,i]=await Promise.all([y(e),b(e,t??void 0),x(e)]);return{configured:!!(n&&r),version:n,cssFile:r,configFile:i}}function C(e,t){for(let n of t){if(!s(n))continue;let t=v(e,n);if(i(t))return t}return null}async function w(e){let{cwd:t,cssPath:n,omitDefaults:i=!1}=e,o=await S(t,n);if(!o.configured||o.version!==`v4`)return;let s=C(t,[n,o.cssFile]);if(!s)return;let c=await a(s),l=await(await _()).__unstable__loadDesignSystem(c,{base:u(s)}),d={};for(let[e,t]of l.theme.entries())i&&(t.options&4)==4||!e.startsWith(`--`)||!t.value||(d[e]=t.value);if(Object.keys(d).length!==0)return r(d)}var T=n(e=>({name:`tailwindcss:extract`,extract:async n=>{if(n.tokens&&Object.keys(n.tokens).length>0)return n;let{cwd:r}=t(),i=await S(r,e?.cssPath);if(!i.configured||i.version!==`v4`)return n;let a=await w({cwd:r,cssPath:e?.cssPath?o(e.cssPath,r):i.cssFile,omitDefaults:e?.omitDefaults});return!a||Object.keys(a).length===0?n:{...n,tokens:a}}}));export{x as a,C as c,h as i,m as l,w as n,b as o,T as r,y as s,S as t};
2
- //# sourceMappingURL=extract-C0PWubPn.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extract-C0PWubPn.mjs","names":[],"sources":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- import{t as e}from"./rolldown-runtime-DK3Fl9T5.mjs";import{t}from"./extract-C0PWubPn.mjs";import{useExecution as n}from"@power-plant/core";import{definePlugin as r}from"@razorwind/core/plugin";import{dirname as i,join as a}from"node:path";import{createDocument as o,formatTokenValue as s,isObject as c}from"@razorwind/core/utils";function l(e){let t=e.includeImport?'The file includes `@import "tailwindcss"` and `@theme` token mappings.':'The file contains `@theme` token mappings (no `@import "tailwindcss"`).';return`# Installing Tailwind Theme CSS
2
-
3
- Generated by \`@razorwind/tailwindcss\`.
4
-
5
- ## Files
6
-
7
- - \`${e.cssPath}\` — Tailwind v4 theme entry (${t})
8
-
9
- ## Setup
10
-
11
- 1. Import the generated CSS in your app entry (or merge into your existing Tailwind entry):
12
-
13
- \`\`\`ts
14
- import "./${e.cssPath}";
15
- \`\`\`
16
-
17
- 2. Ensure your build uses Tailwind v4 (Vite plugin, PostCSS, or CLI).
18
-
19
- 3. Use generated theme tokens as utilities or arbitrary values, e.g. \`bg-primary\` when \`--color-primary\` is defined in \`@theme\`\.
20
-
21
- ## Regenerate
22
-
23
- Re-run Razorwind generate when design tokens change so \`${e.cssPath}\` stays in sync.
24
- `}var u=e({default:()=>E,flattenThemeTokens:()=>y,generateTailwindCss:()=>T,renderInstallMd:()=>l,renderTailwindCss:()=>C,resolveTokenSets:()=>v,toThemeCssVar:()=>g});const d=/^(?:light|dark|dim|high-contrast|hc|default|base|theme)(?:[._-].+)?$/i,f=new Set([`default`,`base`,`light`,`theme`]);function p(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function m(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function h(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function g(e){return`--${e.split(`.`).filter(Boolean).filter((e,t,n)=>e!==`DEFAULT`||t!==n.length-1).join(`-`)}`}function _(e,t,n,r){if(!c(e))return;let i=m(e,n);if(p(e)){let n=h(e),a=t.join(`.`);r.push({path:a,type:i,value:n,cssValue:s(n,i),cssVar:g(a)});return}for(let[n,a]of Object.entries(e))n.startsWith(`$`)||_(a,[...t,n],i,r)}function v(e){if(!c(e))return[];let t=Object.keys(e).filter(e=>!e.startsWith(`$`));if(t.length>0&&t.every(e=>d.test(e))){let n=e;return t.map(e=>({id:e,tokens:n[e]}))}return[{id:`default`,tokens:e}]}function y(e){let t=[];for(let n of v(e)){let e=[];_(n.tokens,[],void 0,e);for(let r of e)t.push({...r,theme:n.id==="default"?void 0:n.id})}return t}function b(e){return e.find(e=>f.has(e.id.toLowerCase()))??e[0]}function x(e){return e.length===0?`@theme {
25
- }
26
- `:`@theme {\n${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
27
- `)}\n}\n`}function S(e){return e.length===0?``:`
28
- @layer theme {
29
- .dark {
30
- ${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
31
- `)}
32
- }
33
- }
34
- `}function C(e,t={}){let n=t.includeImport!==!1,r=e.filter(e=>!e.theme||f.has(e.theme.toLowerCase())),i=e.filter(e=>e.theme?.toLowerCase()===`dark`),a=[];return n&&a.push(`@import "tailwindcss";
35
- `),a.push(x(r)),i.length>0&&a.push(S(i)),`${a.join(`
36
- `).trimEnd()}\n`}async function w(e){if(e.cssPath)return e.cssPath;let{cwd:r}=n();return(await t(r)).cssFile??`src/app.css`}async function T(e,t={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let n=v(e.tokens);if(n.length===0||!b(n))return{};let r=y(e.tokens);if(r.length===0)return{};let s=await w(t),c=C(r,t),u=t.includeImport!==!1,d=t.installGuide??l({cssPath:s,includeImport:u}),f=a(i(s),`INSTALL.md`);return{[s]:o(s,c,{name:`razorwind-tailwindcss`},`css`),[f]:o(f,d,{name:`razorwind-tailwindcss`},`markdown`)}}var E=r(e=>({name:`tailwindcss:generate`,generate:async t=>T(t,e??{})}));export{C as a,l as c,u as i,T as n,v as o,E as r,g as s,y as t};
37
- //# sourceMappingURL=generate-BYKCGYm-.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-BYKCGYm-.mjs","names":[],"sources":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-CtFpoykM.d.cts","names":[],"sources":["../src/install.ts","../src/generate.ts"],"mappings":";;;;;;;;;iBAuBgB,gBAAgB;EAC9B;EACA;;;;;;;;;;iBCqDc,cAAc;UA6CpB;EACR;EACA,QAAQ;;;;;;;;iBASM,iBACd,QAAQ,SAAS,eAAe,UAC/B;;;;iBAwBa,mBACd,QAAQ,SAAS,eAAe,UAC/B;;;;iBA0Da,kBACd,QAAQ,kBACR,UAAS,KAAK;;;;iBAuCM,oBACpB,MAAM,QACN,UAAS,gCACR,QAAQ,wBAAwB,QAAQ"}
@@ -1,36 +0,0 @@
1
- const e=require("./extract-BEWeWMZY.cjs");let t=require("@power-plant/core"),n=require("@razorwind/core/plugin"),r=require("node:path"),i=require("@razorwind/core/utils");function a(e){let t=e.includeImport?'The file includes `@import "tailwindcss"` and `@theme` token mappings.':'The file contains `@theme` token mappings (no `@import "tailwindcss"`).';return`# Installing Tailwind Theme CSS
2
-
3
- Generated by \`@razorwind/tailwindcss\`.
4
-
5
- ## Files
6
-
7
- - \`${e.cssPath}\` — Tailwind v4 theme entry (${t})
8
-
9
- ## Setup
10
-
11
- 1. Import the generated CSS in your app entry (or merge into your existing Tailwind entry):
12
-
13
- \`\`\`ts
14
- import "./${e.cssPath}";
15
- \`\`\`
16
-
17
- 2. Ensure your build uses Tailwind v4 (Vite plugin, PostCSS, or CLI).
18
-
19
- 3. Use generated theme tokens as utilities or arbitrary values, e.g. \`bg-primary\` when \`--color-primary\` is defined in \`@theme\`\.
20
-
21
- ## Regenerate
22
-
23
- Re-run Razorwind generate when design tokens change so \`${e.cssPath}\` stays in sync.
24
- `}var o=e.u({default:()=>S,flattenThemeTokens:()=>h,generateTailwindCss:()=>x,renderInstallMd:()=>a,renderTailwindCss:()=>y,resolveTokenSets:()=>m,toThemeCssVar:()=>f});const s=/^(?:light|dark|dim|high-contrast|hc|default|base|theme)(?:[._-].+)?$/i,c=new Set([`default`,`base`,`light`,`theme`]);function l(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function u(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function d(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function f(e){return`--${e.split(`.`).filter(Boolean).filter((e,t,n)=>e!==`DEFAULT`||t!==n.length-1).join(`-`)}`}function p(e,t,n,r){if(!(0,i.isObject)(e))return;let a=u(e,n);if(l(e)){let n=d(e),o=t.join(`.`);r.push({path:o,type:a,value:n,cssValue:(0,i.formatTokenValue)(n,a),cssVar:f(o)});return}for(let[n,i]of Object.entries(e))n.startsWith(`$`)||p(i,[...t,n],a,r)}function m(e){if(!(0,i.isObject)(e))return[];let t=Object.keys(e).filter(e=>!e.startsWith(`$`));if(t.length>0&&t.every(e=>s.test(e))){let n=e;return t.map(e=>({id:e,tokens:n[e]}))}return[{id:`default`,tokens:e}]}function h(e){let t=[];for(let n of m(e)){let e=[];p(n.tokens,[],void 0,e);for(let r of e)t.push({...r,theme:n.id==="default"?void 0:n.id})}return t}function g(e){return e.find(e=>c.has(e.id.toLowerCase()))??e[0]}function _(e){return e.length===0?`@theme {
25
- }
26
- `:`@theme {\n${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
27
- `)}\n}\n`}function v(e){return e.length===0?``:`
28
- @layer theme {
29
- .dark {
30
- ${e.slice().sort((e,t)=>e.cssVar.localeCompare(t.cssVar)).map(e=>` ${e.cssVar}: ${e.cssValue};`).join(`
31
- `)}
32
- }
33
- }
34
- `}function y(e,t={}){let n=t.includeImport!==!1,r=e.filter(e=>!e.theme||c.has(e.theme.toLowerCase())),i=e.filter(e=>e.theme?.toLowerCase()===`dark`),a=[];return n&&a.push(`@import "tailwindcss";
35
- `),a.push(_(r)),i.length>0&&a.push(v(i)),`${a.join(`
36
- `).trimEnd()}\n`}async function b(n){if(n.cssPath)return n.cssPath;let{cwd:r}=(0,t.useExecution)();return(await e.t(r)).cssFile??`src/app.css`}async function x(e,t={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let n=m(e.tokens);if(n.length===0||!g(n))return{};let o=h(e.tokens);if(o.length===0)return{};let s=await b(t),c=y(o,t),l=t.includeImport!==!1,u=t.installGuide??a({cssPath:s,includeImport:l}),d=(0,r.join)((0,r.dirname)(s),`INSTALL.md`);return{[s]:(0,i.createDocument)(s,c,{name:`razorwind-tailwindcss`},`css`),[d]:(0,i.createDocument)(d,u,{name:`razorwind-tailwindcss`},`markdown`)}}var S=(0,n.definePlugin)(e=>({name:`tailwindcss:generate`,generate:async t=>x(t,e??{})}));Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return h}});
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate-OJ9Icif0.d.mts","names":[],"sources":["../src/install.ts","../src/generate.ts"],"mappings":""}