@tailwindcss/cli 4.0.0-alpha.24 → 4.0.0-alpha.25

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.
Files changed (2) hide show
  1. package/dist/index.mjs +7 -7
  2. package/package.json +4 -10
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import ge from"mri";function Q(e,t=process.argv.slice(2)){let i=ge(t),n={_:i._};for(let[s,{type:r,alias:l,default:a=r==="boolean"?!1:null}]of Object.entries(e)){if(n[s]=a,l){let o=l.slice(1);i[o]!==void 0&&(n[s]=J(i[o],r))}{let o=s.slice(2);i[o]!==void 0&&(n[s]=J(i[o],r))}}return n}function J(e,t){switch(t){case"string":return k(e);case"boolean":return F(e);case"number":return R(e);case"boolean | string":return F(e)??k(e);case"number | string":return R(e)??k(e);case"boolean | number":return F(e)??R(e);case"boolean | number | string":return F(e)??R(e)??k(e);default:throw new Error(`Unhandled type: ${t}`)}}function F(e){if(e===!0||e===!1)return e;if(e==="true")return!0;if(e==="false")return!1}function R(e){if(typeof e=="number")return e;{let t=Number(e);if(!Number.isNaN(t))return t}}function k(e){return`${e}`}import Ce from"@parcel/watcher";import{compile as Fe}from"@tailwindcss/node";import{clearRequireCache as Re}from"@tailwindcss/node/require-cache";import{Scanner as oe}from"@tailwindcss/oxide";import A from"node:path";function be(e,t){if(typeof e!="string")throw new TypeError("expected path to be a string");if(e==="\\"||e==="/")return"/";var i=e.length;if(i<=1)return e;var n="";if(i>4&&e[3]==="\\"){var s=e[2];(s==="?"||s===".")&&e.slice(0,2)==="\\\\"&&(e=e.slice(2),n="//")}var r=e.split(/[/\\]+/);return t!==!1&&r[r.length-1]===""&&r.pop(),n+r.join("/")}function Y(e){let t=be(e);return e.startsWith("\\\\")&&t.startsWith("/")&&!t.startsWith("//")?`/${t}`:t}var M="'",B='"';function H(){let e=new WeakSet;function t(i){let n=i.root().source?.input.file;if(!n)return;let s=i.source?.input.file;if(!s||e.has(i))return;let r=i.params[0],l=r[0]===B&&r[r.length-1]===B?B:r[0]===M&&r[r.length-1]===M?M:null;if(!l)return;let a=i.params.slice(1,-1),o="";if(a.startsWith("!")&&(a=a.slice(1),o="!"),!a.startsWith("./")&&!a.startsWith("../"))return;let p=A.posix.join(Y(A.dirname(s)),a),u=A.posix.dirname(Y(n)),f=A.posix.relative(u,p);f.startsWith(".")||(f="./"+f),i.params=l+o+f+l,e.add(i)}return{postcssPlugin:"tailwindcss-postcss-fix-relative-paths",AtRule:{source:t,plugin:t,config:t}}}import{Features as le,transform as ke}from"lightningcss";import{existsSync as Ae,readFileSync as We}from"node:fs";import L from"node:fs/promises";import b from"node:path";import Ne from"postcss";import Oe from"postcss-import";var T=class{#e=new Set([]);queueMacrotask(t){let i=setTimeout(t,0);return this.add(()=>{clearTimeout(i)})}add(t){return this.#e.add(t),()=>{this.#e.delete(t),t()}}dispose(){for(let t of this.#e)t();this.#e.clear()}};import ve from"node:fs";import ie from"node:path";import{stripVTControlCharacters as Te}from"node:util";import h from"picocolors";import X from"enhanced-resolve";import ye from"node:fs";import{createRequire as we}from"node:module";var xe=we(import.meta.url).resolve;function Z(e){if(typeof globalThis.__tw_resolve=="function"){let t=globalThis.__tw_resolve(e);if(t)return t}return xe(e)}var $e=X.ResolverFactory.createResolver({fileSystem:new X.CachedInputFileSystem(ye,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"]});function ee(e,t){if(typeof globalThis.__tw_resolve=="function"){let i=globalThis.__tw_resolve(e,t);if(i)return i}return $e.resolveSync({},t,e)}function te(e){let t=typeof e=="number"?BigInt(e):e;return t<1000n?`${t}ns`:(t/=1000n,t<1000n?`${t}\xB5s`:(t/=1000n,t<1000n?`${t}ms`:(t/=1000n,t<60n?`${t}s`:(t/=60n,t<60n?`${t}m`:(t/=60n,t<24n?`${t}h`:(t/=24n,`${t}d`))))))}var W={indent:2};function _(){return`${h.italic(h.bold(h.blue("\u2248")))} tailwindcss ${h.blue(`v${_e()}`)}`}function N(e){return`${h.dim(h.blue("`"))}${h.blue(e)}${h.dim(h.blue("`"))}`}function ne(e,t=process.cwd(),{preferAbsoluteIfShorter:i=!0}={}){let n=ie.relative(t,e);return n.startsWith("..")||(n=`.${ie.sep}${n}`),i&&n.length>e.length?e:n}function q(e,t){let i=e.split(" "),n=[],s="",r=0;for(let l of i){let a=Te(l).length;r+a+1>t&&(n.push(s),s="",r=0),s+=(r?" ":"")+l,r+=a+(r?1:0)}return r&&n.push(s),n}function O(e){let t=te(e);return e<=50*1e6?h.green(t):e<=300*1e6?h.blue(t):e<=1e3*1e6?h.yellow(t):h.red(t)}function S(e,t=0){return`${" ".repeat(t+W.indent)}${e}`}function g(e=""){process.stderr.write(`${e}
3
- `)}function d(e=""){process.stdout.write(`${e}
4
- `)}function _e(){if(typeof globalThis.__tw_version=="string")return globalThis.__tw_version;let{version:e}=JSON.parse(ve.readFileSync(Z("tailwindcss/package.json"),"utf-8"));return e}import K from"node:fs/promises";import Se from"node:path";function re(){return new Promise((e,t)=>{let i="";process.stdin.on("data",n=>{i+=n}),process.stdin.on("end",()=>e(i)),process.stdin.on("error",n=>t(n))})}async function se(e,t){try{if(await K.readFile(e,"utf8")===t)return}catch{}await K.mkdir(Se.dirname(e),{recursive:!0}),await K.writeFile(e,t,"utf8")}var ae=String.raw;function P(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed",alias:"-w"},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."}}}async function ce(e){let t=b.resolve(e["--cwd"]);e["--output"]&&(e["--output"]=b.resolve(t,e["--output"])),e["--input"]&&e["--input"]!=="-"&&(e["--input"]=b.resolve(t,e["--input"]),Ae(e["--input"])||(g(_()),g(),g(`Specified input file ${N(ne(e["--input"]))} does not exist.`),process.exit(1)));let i=process.hrtime.bigint(),[n,s]=await fe(e["--input"]?e["--input"]==="-"?await re():await L.readFile(e["--input"],"utf-8"):ae`
5
- @import 'tailwindcss';
6
- `,e["--input"]??t),r={css:"",optimizedCss:""};async function l(c,m){let w=c;if(m["--minify"]||m["--optimize"])if(c!==r.css){let x=Pe(c,{file:m["--input"]??"input.css",minify:m["--minify"]??!1});r.css=c,r.optimizedCss=x,w=x}else w=r.optimizedCss;m["--output"]?await se(m["--output"],w):d(w)}let a=e["--input"]&&e["--input"]!=="-"?e["--input"]:process.cwd(),o=b.dirname(b.resolve(a)),p=s.slice();function u(c){return Fe(c,{base:o,onDependency(m){p.push(m)}})}let f=await u(n),y=new oe({detectSources:{base:t},sources:f.globs.map(({origin:c,pattern:m})=>({base:c?b.dirname(b.resolve(o,c)):o,pattern:m}))});if(e["--watch"]){let c=await pe(ue(t,y),async function m(w){try{if(w.length===1&&w[0]===e["--output"])return;let x=[],D="incremental",E=p;for(let $ of w){if(E.includes($)){D="full";break}x.push({file:$,extension:b.extname($).slice(1)})}let G=process.hrtime.bigint(),j="";if(D==="full"){c(),[n,s]=await fe(e["--input"]?await L.readFile(e["--input"],"utf-8"):ae`
7
- @import 'tailwindcss';
8
- `,e["--input"]??t),Re(E),p=s.slice(),f=await u(n),y=new oe({detectSources:{base:t},sources:f.globs.map(({origin:C,pattern:he})=>({base:C?b.dirname(b.resolve(o,C)):o,pattern:he}))});let $=y.scan();c=await pe(ue(t,y),m),j=f.build($)}else if(D==="incremental"){let $=y.scanFiles(x);if($.length<=0){let C=process.hrtime.bigint();g(`Done in ${O(C-G)}`);return}j=f.build($)}await l(j,e);let me=process.hrtime.bigint();g(`Done in ${O(me-G)}`)}catch(x){x instanceof Error&&g(x.toString())}});e["--watch"]!=="always"&&process.stdin.on("end",()=>{c(),process.exit(0)}),process.stdin.resume()}await l(f.build(y.scan()),e);let z=process.hrtime.bigint();g(_()),g(),g(`Done in ${O(z-i)}`)}function ue(e,t){return[e].concat(t.globs.flatMap(i=>i.pattern[0]==="!"?[]:i.base.startsWith(e)?[]:i.base))}async function pe(e,t){let i=new T,n=new Set,s=new T;function r(){s.dispose(),s.queueMacrotask(()=>{t(Array.from(n)),n.clear()})}for(let l of e){let{unsubscribe:a}=await Ce.subscribe(l,async(o,p)=>{if(o){console.error(o);return}await Promise.all(p.map(async u=>{u.type==="delete"||(await L.lstat(u.path)).isDirectory()||n.add(u.path)})),r()});i.add(a)}return()=>{i.dispose(),s.dispose()}}function fe(e,t){return e.includes("@import")?Ne().use(Oe({resolve(i,n){let s=ee(i,n);if(!s)throw new Error(`Could not resolve ${i} from ${n}`);return s},load(i){return We(i,"utf-8")}})).use(H()).process(e,{from:t}).then(i=>[i.css,[t].concat(i.messages.filter(n=>n.type==="dependency").map(n=>n.file))]):[e,[t]]}function Pe(e,{file:t="input.css",minify:i=!1}={}){return ke({filename:t,code:Buffer.from(e),minify:i,sourceMap:!1,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:le.Nesting,exclude:le.LogicalProperties,targets:{safari:16<<16|1024},errorRecovery:!0}).code.toString()}import v from"picocolors";function U({invalid:e,usage:t,options:i}){let n=process.stdout.columns;if(d(_()),e&&(d(),d(`${v.dim("Invalid command:")} ${e}`)),t&&t.length>0){d(),d(v.dim("Usage:"));for(let[s,r]of t.entries()){let l=r.slice(0,r.indexOf("[")),a=r.slice(r.indexOf("["));a=a.replace(/\[.*?\]/g,u=>v.dim(u));let p=q(a,n-W.indent-l.length-1);p.length>1&&s!==0&&d(),d(S(`${l}${p.shift()}`));for(let u of p)d(S(u,l.length))}}if(i){let s=0;for(let{alias:o}of Object.values(i))o&&(s=Math.max(s,o.length));let r=[],l=0;for(let[o,{alias:p}]of Object.entries(i)){let u=[p&&`${p.padStart(s)}`,p?o:" ".repeat(s+2)+o].filter(Boolean).join(", ");r.push(u),l=Math.max(l,u.length)}d(),d(v.dim("Options:"));let a=8;for(let{description:o,default:p=null}of Object.values(i)){let u=r.shift(),f=a+(l-u.length),y=2,z=n-u.length-f-y-W.indent,c=q(p!==null?`${o} ${v.dim(`[default:\u202F${N(`${p}`)}]`)}`:o,z);d(S(`${v.blue(u)} ${v.dim(v.gray("\xB7")).repeat(f)} ${c.shift()}`));for(let m of c)d(S(`${" ".repeat(u.length+f+y)}${m}`))}}}var V={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}},I=Q({...P(),...V}),de=I._[0];de&&(U({invalid:de,usage:["tailwindcss [options]"],options:{...P(),...V}}),process.exit(1));(process.stdout.isTTY&&!I["--output"]||I["--help"])&&(U({usage:["tailwindcss [--input input.css] [--output output.css] [--watch] [options\u2026]"],options:{...P(),...V}}),process.exit(0));ce(I);
2
+ import le from"mri";function E(e,t=process.argv.slice(2)){let n=le(t),i={_:n._};for(let[r,{type:o,alias:u,default:f=o==="boolean"?!1:null}]of Object.entries(e)){if(i[r]=f,u){let s=u.slice(1);n[s]!==void 0&&(i[r]=V(n[s],o))}{let s=r.slice(2);n[s]!==void 0&&(i[r]=V(n[s],o))}}return i}function V(e,t){switch(t){case"string":return k(e);case"boolean":return C(e);case"number":return F(e);case"boolean | string":return C(e)??k(e);case"number | string":return F(e)??k(e);case"boolean | number":return C(e)??F(e);case"boolean | number | string":return C(e)??F(e)??k(e);default:throw new Error(`Unhandled type: ${t}`)}}function C(e){if(e===!0||e===!1)return e;if(e==="true")return!0;if(e==="false")return!1}function F(e){if(typeof e=="number")return e;{let t=Number(e);if(!Number.isNaN(t))return t}}function k(e){return`${e}`}import he from"@parcel/watcher";import{compile as ge}from"@tailwindcss/node";import{clearRequireCache as be}from"@tailwindcss/node/require-cache";import{Scanner as Z}from"@tailwindcss/oxide";import{Features as ee,transform as ye}from"lightningcss";import{existsSync as we}from"node:fs";import P from"node:fs/promises";import $ from"node:path";var T=class{#e=new Set([]);queueMacrotask(t){let n=setTimeout(t,0);return this.add(()=>{clearTimeout(n)})}add(t){return this.#e.add(t),()=>{this.#e.delete(t),t()}}dispose(){for(let t of this.#e)t();this.#e.clear()}};import fe from"node:fs";import Y from"node:path";import{stripVTControlCharacters as ce}from"node:util";import d from"picocolors";import G from"enhanced-resolve";import ue from"node:fs";import{createRequire as ae}from"node:module";var pe=ae(import.meta.url).resolve;function J(e){if(typeof globalThis.__tw_resolve=="function"){let t=globalThis.__tw_resolve(e);if(t)return t}return pe(e)}var ke=G.ResolverFactory.createResolver({fileSystem:new G.CachedInputFileSystem(ue,4e3),useSyncFileSystemCalls:!0,extensions:[".css"],mainFields:["style"],conditionNames:["style"]});function Q(e){let t=typeof e=="number"?BigInt(e):e;return t<1000n?`${t}ns`:(t/=1000n,t<1000n?`${t}\xB5s`:(t/=1000n,t<1000n?`${t}ms`:(t/=1000n,t<60n?`${t}s`:(t/=60n,t<60n?`${t}m`:(t/=60n,t<24n?`${t}h`:(t/=24n,`${t}d`))))))}var R={indent:2};function _(){return`${d.italic(d.bold(d.blue("\u2248")))} tailwindcss ${d.blue(`v${de()}`)}`}function A(e){return`${d.dim(d.blue("`"))}${d.blue(e)}${d.dim(d.blue("`"))}`}function H(e,t=process.cwd(),{preferAbsoluteIfShorter:n=!0}={}){let i=Y.relative(t,e);return i.startsWith("..")||(i=`.${Y.sep}${i}`),n&&i.length>e.length?e:i}function M(e,t){let n=e.split(" "),i=[],r="",o=0;for(let u of n){let f=ce(u).length;o+f+1>t&&(i.push(r),r="",o=0),r+=(o?" ":"")+u,o+=f+(o?1:0)}return o&&i.push(r),i}function N(e){let t=Q(e);return e<=50*1e6?d.green(t):e<=300*1e6?d.blue(t):e<=1e3*1e6?d.yellow(t):d.red(t)}function v(e,t=0){return`${" ".repeat(t+R.indent)}${e}`}function b(e=""){process.stderr.write(`${e}
3
+ `)}function p(e=""){process.stdout.write(`${e}
4
+ `)}function de(){if(typeof globalThis.__tw_version=="string")return globalThis.__tw_version;let{version:e}=JSON.parse(fe.readFileSync(J("tailwindcss/package.json"),"utf-8"));return e}import j from"node:fs/promises";import me from"node:path";function B(){return new Promise((e,t)=>{let n="";process.stdin.on("data",i=>{n+=i}),process.stdin.on("end",()=>e(n)),process.stdin.on("error",i=>t(i))})}async function X(e,t){try{if(await j.readFile(e,"utf8")===t)return}catch{}await j.mkdir(me.dirname(e),{recursive:!0}),await j.writeFile(e,t,"utf8")}var te=String.raw;function O(){return{"--input":{type:"string",description:"Input file",alias:"-i"},"--output":{type:"string",description:"Output file",alias:"-o"},"--watch":{type:"boolean | string",description:"Watch for changes and rebuild as needed",alias:"-w"},"--minify":{type:"boolean",description:"Optimize and minify the output",alias:"-m"},"--optimize":{type:"boolean",description:"Optimize the output without minifying"},"--cwd":{type:"string",description:"The current working directory",default:"."}}}async function re(e){let t=$.resolve(e["--cwd"]);e["--output"]&&(e["--output"]=$.resolve(t,e["--output"])),e["--input"]&&e["--input"]!=="-"&&(e["--input"]=$.resolve(t,e["--input"]),we(e["--input"])||(b(_()),b(),b(`Specified input file ${A(H(e["--input"]))} does not exist.`),process.exit(1)));let n=process.hrtime.bigint(),i=e["--input"]?e["--input"]==="-"?await B():await P.readFile(e["--input"],"utf-8"):te`
5
+ @import 'tailwindcss';
6
+ `,r={css:"",optimizedCss:""};async function o(m,c){let g=m;if(c["--minify"]||c["--optimize"])if(m!==r.css){let y=xe(m,{file:c["--input"]??"input.css",minify:c["--minify"]??!1});r.css=m,r.optimizedCss=y,g=y}else g=r.optimizedCss;c["--output"]?await X(c["--output"],g):p(g)}let u=e["--input"]&&e["--input"]!=="-"?e["--input"]:process.cwd(),f=$.dirname($.resolve(u)),s=[];function a(m){return ge(m,{base:f,onDependency(c){s.push(c)}})}let l=await a(i),h=new Z({detectSources:{base:t},sources:l.globs});if(e["--watch"]){let m=await ie(ne(t,h),async function c(g){try{if(g.length===1&&g[0]===e["--output"])return;let y=[],D="incremental",L=s;for(let w of g){if(L.includes(w)){D="full";break}y.push({file:w,extension:$.extname(w).slice(1)})}let U=process.hrtime.bigint(),W="";if(D==="full"){m();let w=e["--input"]?e["--input"]==="-"?await B():await P.readFile(e["--input"],"utf-8"):te`
7
+ @import 'tailwindcss';
8
+ `;be(L),s=[],l=await a(w),h=new Z({detectSources:{base:t},sources:l.globs});let I=h.scan();m=await ie(ne(t,h),c),W=l.build(I)}else if(D==="incremental"){let w=h.scanFiles(y);if(w.length<=0){let I=process.hrtime.bigint();b(`Done in ${N(I-U)}`);return}W=l.build(w)}await o(W,e);let se=process.hrtime.bigint();b(`Done in ${N(se-U)}`)}catch(y){y instanceof Error&&b(y.toString())}});e["--watch"]!=="always"&&process.stdin.on("end",()=>{m(),process.exit(0)}),process.stdin.resume()}await o(l.build(h.scan()),e);let S=process.hrtime.bigint();b(_()),b(),b(`Done in ${N(S-n)}`)}function ne(e,t){return[e].concat(t.globs.flatMap(n=>n.pattern[0]==="!"?[]:n.base.startsWith(e)?[]:n.base))}async function ie(e,t){let n=new T,i=new Set,r=new T;function o(){r.dispose(),r.queueMacrotask(()=>{t(Array.from(i)),i.clear()})}for(let u of e){let{unsubscribe:f}=await he.subscribe(u,async(s,a)=>{if(s){console.error(s);return}await Promise.all(a.map(async l=>{l.type==="delete"||(await P.lstat(l.path)).isDirectory()||i.add(l.path)})),o()});n.add(f)}return()=>{n.dispose(),r.dispose()}}function xe(e,{file:t="input.css",minify:n=!1}={}){return ye({filename:t,code:Buffer.from(e),minify:n,sourceMap:!1,drafts:{customMedia:!0},nonStandard:{deepSelectorCombinator:!0},include:ee.Nesting,exclude:ee.LogicalProperties,targets:{safari:16<<16|1024},errorRecovery:!0}).code.toString()}import x from"picocolors";function q({invalid:e,usage:t,options:n}){let i=process.stdout.columns;if(p(_()),e&&(p(),p(`${x.dim("Invalid command:")} ${e}`)),t&&t.length>0){p(),p(x.dim("Usage:"));for(let[r,o]of t.entries()){let u=o.slice(0,o.indexOf("[")),f=o.slice(o.indexOf("["));f=f.replace(/\[.*?\]/g,l=>x.dim(l));let a=M(f,i-R.indent-u.length-1);a.length>1&&r!==0&&p(),p(v(`${u}${a.shift()}`));for(let l of a)p(v(l,u.length))}}if(n){let r=0;for(let{alias:s}of Object.values(n))s&&(r=Math.max(r,s.length));let o=[],u=0;for(let[s,{alias:a}]of Object.entries(n)){let l=[a&&`${a.padStart(r)}`,a?s:" ".repeat(r+2)+s].filter(Boolean).join(", ");o.push(l),u=Math.max(u,l.length)}p(),p(x.dim("Options:"));let f=8;for(let{description:s,default:a=null}of Object.values(n)){let l=o.shift(),h=f+(u-l.length),S=2,m=i-l.length-h-S-R.indent,c=M(a!==null?`${s} ${x.dim(`[default:\u202F${A(`${a}`)}]`)}`:s,m);p(v(`${x.blue(l)} ${x.dim(x.gray("\xB7")).repeat(h)} ${c.shift()}`));for(let g of c)p(v(`${" ".repeat(l.length+h+S)}${g}`))}}}var K={"--help":{type:"boolean",description:"Display usage information",alias:"-h"}},z=E({...O(),...K}),oe=z._[0];oe&&(q({invalid:oe,usage:["tailwindcss [options]"],options:{...O(),...K}}),process.exit(1));(process.stdout.isTTY&&!z["--output"]||z["--help"])&&(q({usage:["tailwindcss [--input input.css] [--output output.css] [--watch] [options\u2026]"],options:{...O(),...K}}),process.exit(0));re(z);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailwindcss/cli",
3
- "version": "4.0.0-alpha.24",
3
+ "version": "4.0.0-alpha.25",
4
4
  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -29,15 +29,9 @@
29
29
  "lightningcss": "^1.26.0",
30
30
  "mri": "^1.2.0",
31
31
  "picocolors": "^1.0.1",
32
- "postcss-import": "^16.1.0",
33
- "postcss": "^8.4.41",
34
- "@tailwindcss/node": "4.0.0-alpha.24",
35
- "@tailwindcss/oxide": "4.0.0-alpha.24",
36
- "tailwindcss": "4.0.0-alpha.24"
37
- },
38
- "devDependencies": {
39
- "@types/postcss-import": "^14.0.3",
40
- "internal-postcss-fix-relative-paths": "0.0.0"
32
+ "@tailwindcss/node": "4.0.0-alpha.25",
33
+ "@tailwindcss/oxide": "4.0.0-alpha.25",
34
+ "tailwindcss": "4.0.0-alpha.25"
41
35
  },
42
36
  "scripts": {
43
37
  "lint": "tsc --noEmit",