@razorwind/tamagui 0.0.53 → 0.0.55

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.
package/dist/index.cjs CHANGED
@@ -1,14 +1,14 @@
1
1
  Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("@razorwind/core/plugin"),t=require("@razorwind/core/utils"),n=require("node:path"),r=require("@razorwind/core/lib/fonts");function i(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function a(e){return typeof e==`string`?`"${i(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function o(e,n){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if((0,t.isObject)(e)&&typeof e.value==`number`&&typeof e.unit==`string`){let t=e.unit.toLowerCase();return t===`px`||t===``?e.value:t===`rem`?e.value*16:`${e.value}${e.unit}`}if(typeof e==`string`){let t=/^(-?\d+(?:\.\d+)?)px$/i.exec(e.trim());if(t)return Number(t[1]);let n=/^(-?\d+(?:\.\d+)?)rem$/i.exec(e.trim());if(n)return Number(n[1])*16;let r=Number(e);return!Number.isNaN(r)&&e.trim()!==``?r:e}return(0,t.formatTokenValue)(e,n)}const s=/^(?:font-size|fontSize)(?:\.|$)/i,c=/^(?:font-weight|fontWeight)(?:\.|$)/i,l=/^shadow(?:\.|$)/i,u=/^inset-shadow(?:\.|$)/i,d=/^drop-shadow(?:\.|$)/i,f=/^text-shadow(?:\.|$)/i,p=/^(?:blur|blur-?radius)(?:\.|$)/i,m=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),h=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:s,category:`fontSize`},{prefix:c,category:`fontWeight`},{prefix:d,category:`dropShadow`},{prefix:u,category:`insetShadow`},{prefix:f,category:`textShadow`},{prefix:l,category:`shadow`},{prefix:p,category:`blur`},{prefix:/^(?:space|spacing|gap)(?:\.|$)/i,category:`space`},{prefix:/^inset(?:\.|$)/i,category:`space`},{prefix:/^(?:size|sizing)(?:\.|$)/i,category:`size`},{prefix:/^(?:radius|rounded|radii)(?:\.|$)/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)(?:\.|$)/i,category:`zIndex`}];function g(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function _(e){return e===!0||e===`true`||e===1}function ee(e){return _(e.palette)||_(e.$palette)?!0:x(e)===`palette`}function te(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function v(e){return e===!0||e===`true`||e===1}function ne(e){return v(e.primitive)||v(e.$primitive)?!0:x(e)===`primitive`}function y(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function b(e,t){return(e===`theme`||e===`$theme`)&&typeof t==`string`}function re(e){if(typeof e.theme==`string`&&e.theme.length>0)return e.theme;if(typeof e.$theme==`string`&&e.$theme.length>0)return e.$theme}function ie(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function x(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function S(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 ae(e,t){for(let{prefix:t,category:n}of h)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return u.test(e)?`insetShadow`:d.test(e)?`dropShadow`:f.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(s.test(e))return`fontSize`;if(p.test(e))return`blur`;if(/(?:^|\.)(?:space|spacing|gap)(?:\.|$)/i.test(e)||/(?:^|\.)inset(?:\.|$)/i.test(e))return`space`;if(/radius|rounded/i.test(e))return`radius`;if(/z-?index|elevation/i.test(e))return`zIndex`;if(/(?:^|\.)(?:size|sizing)(?:\.|$)/i.test(e)||/(?:^|\.)(?:width|height)(?:\.|$)/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`;if(t===`fontWeight`||c.test(e))return`fontWeight`}function C(e){return e.flatMap(e=>e.split(/[-_\s]+/)).filter(Boolean).map((e,t)=>{if(/^\d/.test(e))return e;let n=e.toLowerCase();return t===0?n:`${n.charAt(0).toUpperCase()}${n.slice(1)}`}).join(``)}function oe(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|primitive|space|spacing|gap|inset|shadow|inset-shadow|drop-shadow|text-shadow|font-size|fontSize|font-weight|fontWeight|size|sizing|radius|rounded|radii|z-?index|zindex|elevation|blur)$/i.test(n)&&t.shift();let r=t.length>0?t:e.split(`.`).slice(-1);return r.length===1&&/^(?:DEFAULT|default)$/i.test(r[0]??``)?`true`:C(r)}function w(e,n,r,i,a,s,c){if(!(0,t.isObject)(e))return;let l=a||ne(e)||ee(e),u=x(e,r),d=re(e)??s;if(g(e)){let r=S(e),a=n.join(`.`),s=ae(a,u)??(l||u===`primitive`||u===`palette`?`color`:void 0),f=(0,t.formatTokenValue)(r,u),p=s&&m.has(s)||u===`color`||u===`palette`||u===`primitive`||u===`shadow`?f:o(r,u);c.push({path:a,type:u===`palette`||u===`primitive`?`color`:u,value:r,cssValue:f,tamaguiValue:p,category:s,tokenKey:s?oe(a):void 0,description:ie(e),theme:i,...d?{childTheme:d}:{},...l?{primitive:!0}:{}});return}for(let[t,r]of Object.entries(e))t.startsWith(`$`)&&t!==`$palette`&&t!==`$primitive`||te(t,r)||y(t,r)||b(t,r)||w(r,[...n,t],u,i,l,d,c)}function T(e,n={}){let r=n.includeTypes?new Set(n.includeTypes):void 0,i=[];for(let n of(0,t.resolveTokenSets)(e)){let e=n.id==="default"?void 0:n.id;w(n.tokens,[],void 0,e,!1,void 0,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}const se=/^\{([^{}]+)\}$/,ce=/^(?:typography|type|text)$/i,E=/^(?:font|fonts|font-family|fontFamily)$/i,D=/^(?:font-size|fontSize)$/i,O=/^(?:font-weight|fontWeight)$/i,le=/^(?:line-height|lineHeight|leading)$/i,k=/^(?:letter-spacing|letterSpacing|tracking)$/i,A=/^(?:[a-z]{2}(?:-[A-Z]{2})?|cn|zh|jp|ja|kr|ko|ar|he|th|hi|ru|french|mandarin|chinese|japanese|korean|arabic|hebrew)$/i,ue=[`fontFamily`,`font-family`,`family`],j=[`fontSize`,`font-size`,`size`],M=[`fontWeight`,`font-weight`,`weight`],de=[`lineHeight`,`line-height`,`leading`],fe=[`letterSpacing`,`letter-spacing`,`tracking`],pe={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function N(e){if(typeof e==`string`)return se.exec(e.trim())?.[1]?.trim()}function P(e,t){let n=N(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=N(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function F(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function me(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function he(e){if(typeof e==`string`){let t=e.trim();return t.length===0||N(t)?void 0:t}if(Array.isArray(e)&&e.every(e=>typeof e==`string`)){let t=e.map(e=>e.trim()).filter(Boolean);return t.length>0?t.join(`, `):void 0}}function ge(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function _e(e){if(e==null)return;let t=o(e);if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=/^(-?\d+(?:\.\d+)?)%$/.exec(t.trim());if(e)return Number.parseFloat(e[1])/100}}function ve(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||N(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=o(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function ye(e,t){let n=_e(e);if(n!=null)return ge(t!=null&&n>0&&n<=4?n*t:n)}function I(e,t){return t.test(e.split(`.`)[0]??``)}function be(e){return e.split(`.`).filter(Boolean).at(-1)??e}function xe(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function Se(e){let t=e.flatMap(e=>e.split(`-`)).filter(Boolean);return t.length===0?`body`:t.map((e,t)=>t===0?`${e.charAt(0).toLowerCase()}${e.slice(1)}`:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``)}function Ce(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return Se([e])}}function we(e){return e.role?Ce(e.role):Ce(e.name)}function Te(e){let t=xe(e,ce);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&A.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function Ee(e){return Ce(xe(e,E)[0]??be(e))}function De(e,t){let n=xe(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:Se(n)}function Oe(e){return e.type===`typography`&&(0,t.isObject)(e.value)}function ke(e){return e.category===`fontSize`||e.category===`fontWeight`||Ae(e)||je(e)||Me(e)||Ne(e)?!1:e.type===`fontFamily`||I(e.path,E)}function Ae(e){return e.category===`fontSize`||I(e.path,D)}function je(e){return e.category===`fontWeight`||e.type===`fontWeight`||I(e.path,O)}function Me(e){return I(e.path,le)}function Ne(e){return I(e.path,k)}function Pe(e,t){if(!e.has(t))return t;let n=2,r=`${t}${n}`;for(;e.has(r);)n++,r=`${t}${n}`;return r}function Fe(e){let t=new Map;for(let n of Object.values(e)){let e=we(n);t.has(e)&&(e=Pe(t,Se([n.name]))),t.set(e,n)}return t}function Ie(e,t,n){if(!e)return;let i=Object.values(e);if(i.length===0)return;if(n){let e=n.split(`.`).filter(Boolean).at(-1);if(e){let t=i.find(t=>t.role===e||t.name.toLowerCase()===e.toLowerCase());if(t)return t}}if(!t)return;let a=me(t).toLowerCase();return i.find(e=>(0,r.fontFamilyName)(e).toLowerCase()===a||e.title.toLowerCase()===a||e.name.toLowerCase()===a)}function Le(e){let t=new Map;for(let r of e.files){let e=String(r.weight??400),i=(0,n.basename)(r.path).replace(/\.[^.]+$/,``),a=t.get(e)??{};r.style===`italic`||r.style===`oblique`?a.italic=i:a.normal=i,t.set(e,a)}if(t.size!==0)return`{\n${[...t.entries()].toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0})).map(([e,t])=>{let n=[];return t.normal&&n.push(`normal: ${a(t.normal)}`),t.italic&&n.push(`italic: ${a(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
- `)}\n }`}function Re(e,t){return{...e,webFamily:(0,r.cssFontFamily)(t),nativeFamily:(0,r.fontFamilyName)(t),face:t.source===`local`?Le(t):e.face}}function L(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function ze(e,t){return{...e,webFamily:t,nativeFamily:me(t)}}const Be=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function R(e,t){let n={true:e},r=N(t);if(!r)return n;let i=De(r,Be);return i&&i!==`true`&&(n[i]=e),n}function Ve(e){return Object.keys(e.size).length>0?e:{...e,size:{...pe}}}function He(e,n,r,i){if(!(0,t.isObject)(n.value))return e;let a=F(n.value,ue),o=N(a),s=he(P(a,r)),c=Ie(i,s,o),l=e;c?l=Re(l,c):s&&(l=ze(l,s));let u=F(n.value,j),d=_e(P(u,r));d!=null&&(l={...l,size:R(d,u)});let f=F(n.value,M),p=ve(P(f,r));p&&(l={...l,weight:R(p,f)});let m=F(n.value,fe),h=_e(P(m,r));h!=null&&(l={...l,letterSpacing:R(h,m)});let g=F(n.value,de),_=ye(P(g,r),l.size.true??d);return _!=null&&(l={...l,lineHeight:R(_,g)}),Ue(l)}function Ue(e){let t=Object.keys(e.size);if(t.length===0)return e;let n=e=>{let n=e.true??Object.values(e)[0];if(n==null)return e;let r={...e};for(let e of t)r[e]??=n;return r};return{...e,lineHeight:Object.keys(e.lineHeight).length>0?n(e.lineHeight):e.lineHeight,weight:Object.keys(e.weight).length>0?n(e.weight):e.weight,letterSpacing:Object.keys(e.letterSpacing).length>0?n(e.letterSpacing):e.letterSpacing}}function We(e,t){let n=new Map(e.map(e=>[e.path,e])),r=new Map,i=e=>{r.set(e.key,e)};if(t)for(let[e,n]of Fe(t))i(Re(L(e),n));for(let a of e){if(!ke(a)||Oe(a))continue;let e=Ee(a.path),o=he(P(a.value,n)),s=r.get(e)??L(e),c=Ie(t,o,a.path),l=s;c?l=Re(l,c):(o&&s.webFamily===L(e).webFamily||o&&!r.has(e))&&(l=ze(l,o)),i(l)}for(let a of e){if(!Oe(a))continue;let e=Te(a.path);i(He(r.get(e)??L(e),a,n,t))}return[...r.values()].map(Ve).toSorted((e,t)=>e.key.localeCompare(t.key))}function Ge(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}function z(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${Ge(e)}: ${a(t)}`).join(`,
4
- `)}\n${r}}`}function Ke(e,t){let n=`${e.split(`-`).filter(Boolean).map((e,t)=>t===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``).replaceAll(/[^\w$]/g,``)||`font${t}`}Font`;return/^[A-Z_$]/i.test(n)?n:`font${t}`}function qe(e,t){let n=a(e.webFamily),r=a(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${z(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${z(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${z(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${z(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
- `)}\n});`}function Je(e){return`# Installing Tamagui Config
2
+ `,`\\n`).replaceAll(`\r`,`\\r`)}function a(e){return typeof e==`string`?`"${i(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function o(e,n){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if((0,t.isObject)(e)&&typeof e.value==`number`&&typeof e.unit==`string`){let t=e.unit.toLowerCase();return t===`px`||t===``?e.value:t===`rem`?e.value*16:`${e.value}${e.unit}`}if(typeof e==`string`){let t=/^(-?\d+(?:\.\d+)?)px$/i.exec(e.trim());if(t)return Number(t[1]);let n=/^(-?\d+(?:\.\d+)?)rem$/i.exec(e.trim());if(n)return Number(n[1])*16;let r=Number(e);return!Number.isNaN(r)&&e.trim()!==``?r:e}return(0,t.formatTokenValue)(e,n)}const s=/^(?:font-size|fontSize)(?:\.|$)/i,c=/^(?:font-weight|fontWeight)(?:\.|$)/i,l=/^shadow(?:\.|$)/i,u=/^inset-shadow(?:\.|$)/i,d=/^drop-shadow(?:\.|$)/i,f=/^text-shadow(?:\.|$)/i,p=/^(?:blur|blur-?radius)(?:\.|$)/i,m=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),h=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:s,category:`fontSize`},{prefix:c,category:`fontWeight`},{prefix:d,category:`dropShadow`},{prefix:u,category:`insetShadow`},{prefix:f,category:`textShadow`},{prefix:l,category:`shadow`},{prefix:p,category:`blur`},{prefix:/^(?:space|spacing|gap)(?:\.|$)/i,category:`space`},{prefix:/^inset(?:\.|$)/i,category:`space`},{prefix:/^(?:size|sizing)(?:\.|$)/i,category:`size`},{prefix:/^(?:radius|rounded|radii)(?:\.|$)/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)(?:\.|$)/i,category:`zIndex`}];function g(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function _(e){return e===!0||e===`true`||e===1}function v(e){return _(e.palette)||_(e.$palette)?!0:T(e)===`palette`}function ee(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function y(e){return e===!0||e===`true`||e===1}function b(e){return y(e.primitive)||y(e.$primitive)?!0:T(e)===`primitive`}function x(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function S(e,t){return(e===`theme`||e===`$theme`)&&typeof t==`string`}function C(e){if(typeof e.theme==`string`&&e.theme.length>0)return e.theme;if(typeof e.$theme==`string`&&e.$theme.length>0)return e.$theme}function w(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function T(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function E(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 te(e,t){for(let{prefix:t,category:n}of h)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return u.test(e)?`insetShadow`:d.test(e)?`dropShadow`:f.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(s.test(e))return`fontSize`;if(p.test(e))return`blur`;if(/(?:^|\.)(?:space|spacing|gap)(?:\.|$)/i.test(e)||/(?:^|\.)inset(?:\.|$)/i.test(e))return`space`;if(/radius|rounded/i.test(e))return`radius`;if(/z-?index|elevation/i.test(e))return`zIndex`;if(/(?:^|\.)(?:size|sizing)(?:\.|$)/i.test(e)||/(?:^|\.)(?:width|height)(?:\.|$)/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`;if(t===`fontWeight`||c.test(e))return`fontWeight`}function D(e){return e.flatMap(e=>e.split(/[-_\s]+/)).filter(Boolean).map((e,t)=>{if(/^\d/.test(e))return e;let n=e.toLowerCase();return t===0?n:`${n.charAt(0).toUpperCase()}${n.slice(1)}`}).join(``)}function ne(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|primitive|space|spacing|gap|inset|shadow|inset-shadow|drop-shadow|text-shadow|font-size|fontSize|font-weight|fontWeight|size|sizing|radius|rounded|radii|z-?index|zindex|elevation|blur)$/i.test(n)&&t.shift();let r=t.length>0?t:e.split(`.`).slice(-1);return r.length===1&&/^(?:DEFAULT|default)$/i.test(r[0]??``)?`true`:D(r)}function O(e,n,r,i,a,s,c){if(!(0,t.isObject)(e))return;let l=a||b(e)||v(e),u=T(e,r),d=C(e)??s;if(g(e)){let r=E(e),a=n.join(`.`),s=te(a,u)??(l||u===`primitive`||u===`palette`?`color`:void 0),f=(0,t.formatTokenValue)(r,u),p=s&&m.has(s)||u===`color`||u===`palette`||u===`primitive`||u===`shadow`?f:o(r,u);c.push({path:a,type:u===`palette`||u===`primitive`?`color`:u,value:r,cssValue:f,tamaguiValue:p,category:s,tokenKey:s?ne(a):void 0,description:w(e),theme:i,...d?{childTheme:d}:{},...l?{primitive:!0}:{}});return}for(let[t,r]of Object.entries(e))t.startsWith(`$`)&&t!==`$palette`&&t!==`$primitive`||ee(t,r)||x(t,r)||S(t,r)||O(r,[...n,t],u,i,l,d,c)}function re(e,n={}){let r=n.includeTypes?new Set(n.includeTypes):void 0,i=[];for(let n of(0,t.resolveTokenSets)(e)){let e=n.id==="default"?void 0:n.id;O(n.tokens,[],void 0,e,!1,void 0,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}const ie=/^\{([^{}]+)\}$/,ae=/^(?:typography|type|text)$/i,oe=/^(?:font|fonts|font-family|fontFamily)$/i,se=/^(?:font-size|fontSize)$/i,ce=/^(?:font-weight|fontWeight)$/i,le=/^(?:line-height|lineHeight|leading)$/i,ue=/^(?:letter-spacing|letterSpacing|tracking)$/i,de=/^(?:[a-z]{2}(?:-[A-Z]{2})?|cn|zh|jp|ja|kr|ko|ar|he|th|hi|ru|french|mandarin|chinese|japanese|korean|arabic|hebrew)$/i,fe=[`fontFamily`,`font-family`,`family`],pe=[`fontSize`,`font-size`,`size`],me=[`fontWeight`,`font-weight`,`weight`],he=[`lineHeight`,`line-height`,`leading`],ge=[`letterSpacing`,`letter-spacing`,`tracking`],_e={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function k(e){if(typeof e==`string`)return ie.exec(e.trim())?.[1]?.trim()}function A(e,t){let n=k(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=k(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function j(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function ve(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function M(e){if(typeof e==`string`){let t=e.trim();return t.length===0||k(t)?void 0:t}if(Array.isArray(e)&&e.every(e=>typeof e==`string`)){let t=e.map(e=>e.trim()).filter(Boolean);return t.length>0?t.join(`, `):void 0}}function ye(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function N(e){if(e==null)return;let t=o(e);if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=/^(-?\d+(?:\.\d+)?)%$/.exec(t.trim());if(e)return Number.parseFloat(e[1])/100}}function be(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||k(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=o(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function xe(e,t){let n=N(e);if(n!=null)return ye(t!=null&&n>0&&n<=4?n*t:n)}function P(e,t){return t.test(e.split(`.`)[0]??``)}function Se(e){return e.split(`.`).filter(Boolean).at(-1)??e}function F(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function I(e){let t=e.flatMap(e=>e.split(`-`)).filter(Boolean);return t.length===0?`body`:t.map((e,t)=>t===0?`${e.charAt(0).toLowerCase()}${e.slice(1)}`:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``)}function L(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return I([e])}}function Ce(e){return e.role?L(e.role):L(e.name)}function we(e){let t=F(e,ae);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&de.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function Te(e){return L(F(e,oe)[0]??Se(e))}function Ee(e,t){let n=F(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:I(n)}function De(e){return e.type===`typography`&&(0,t.isObject)(e.value)}function Oe(e){return e.category===`fontSize`||e.category===`fontWeight`||ke(e)||Ae(e)||je(e)||Me(e)?!1:e.type===`fontFamily`||P(e.path,oe)}function ke(e){return e.category===`fontSize`||P(e.path,se)}function Ae(e){return e.category===`fontWeight`||e.type===`fontWeight`||P(e.path,ce)}function je(e){return P(e.path,le)}function Me(e){return P(e.path,ue)}function Ne(e,t){if(!e.has(t))return t;let n=2,r=`${t}${n}`;for(;e.has(r);)n++,r=`${t}${n}`;return r}function Pe(e){let t=new Map;for(let n of Object.values(e)){let e=Ce(n);t.has(e)&&(e=Ne(t,I([n.name]))),t.set(e,n)}return t}function Fe(e,t,n){if(!e)return;let i=Object.values(e);if(i.length===0)return;if(n){let e=n.split(`.`).filter(Boolean).at(-1);if(e){let t=i.find(t=>t.role===e||t.name.toLowerCase()===e.toLowerCase());if(t)return t}}if(!t)return;let a=ve(t).toLowerCase();return i.find(e=>(0,r.fontFamilyName)(e).toLowerCase()===a||e.title.toLowerCase()===a||e.name.toLowerCase()===a)}function Ie(e){let t=new Map;for(let r of e.files){let e=String(r.weight??400),i=(0,n.basename)(r.path).replace(/\.[^.]+$/,``),a=t.get(e)??{};r.style===`italic`||r.style===`oblique`?a.italic=i:a.normal=i,t.set(e,a)}if(t.size!==0)return`{\n${[...t.entries()].toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0})).map(([e,t])=>{let n=[];return t.normal&&n.push(`normal: ${a(t.normal)}`),t.italic&&n.push(`italic: ${a(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
+ `)}\n }`}function R(e,t){return{...e,webFamily:(0,r.cssFontFamily)(t),nativeFamily:(0,r.fontFamilyName)(t),face:t.source===`local`?Ie(t):e.face}}function z(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Le(e,t){return{...e,webFamily:t,nativeFamily:ve(t)}}const Re=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function B(e,t){let n={true:e},r=k(t);if(!r)return n;let i=Ee(r,Re);return i&&i!==`true`&&(n[i]=e),n}function ze(e){return Object.keys(e.size).length>0?e:{...e,size:{..._e}}}function Be(e,n,r,i){if(!(0,t.isObject)(n.value))return e;let a=j(n.value,fe),o=k(a),s=M(A(a,r)),c=Fe(i,s,o),l=e;c?l=R(l,c):s&&(l=Le(l,s));let u=j(n.value,pe),d=N(A(u,r));d!=null&&(l={...l,size:B(d,u)});let f=j(n.value,me),p=be(A(f,r));p&&(l={...l,weight:B(p,f)});let m=j(n.value,ge),h=N(A(m,r));h!=null&&(l={...l,letterSpacing:B(h,m)});let g=j(n.value,he),_=xe(A(g,r),l.size.true??d);return _!=null&&(l={...l,lineHeight:B(_,g)}),Ve(l)}function Ve(e){let t=Object.keys(e.size);if(t.length===0)return e;let n=e=>{let n=e.true??Object.values(e)[0];if(n==null)return e;let r={...e};for(let e of t)r[e]??=n;return r};return{...e,lineHeight:Object.keys(e.lineHeight).length>0?n(e.lineHeight):e.lineHeight,weight:Object.keys(e.weight).length>0?n(e.weight):e.weight,letterSpacing:Object.keys(e.letterSpacing).length>0?n(e.letterSpacing):e.letterSpacing}}function V(e,t){let n=new Map(e.map(e=>[e.path,e])),r=new Map,i=e=>{r.set(e.key,e)};if(t)for(let[e,n]of Pe(t))i(R(z(e),n));for(let a of e){if(!Oe(a)||De(a))continue;let e=Te(a.path),o=M(A(a.value,n)),s=r.get(e)??z(e),c=Fe(t,o,a.path),l=s;c?l=R(l,c):(o&&s.webFamily===z(e).webFamily||o&&!r.has(e))&&(l=Le(l,o)),i(l)}for(let a of e){if(!De(a))continue;let e=we(a.path);i(Be(r.get(e)??z(e),a,n,t))}return[...r.values()].map(ze).toSorted((e,t)=>e.key.localeCompare(t.key))}function He(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}function H(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${He(e)}: ${a(t)}`).join(`,
4
+ `)}\n${r}}`}function U(e,t){let n=`${e.split(`-`).filter(Boolean).map((e,t)=>t===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``).replaceAll(/[^\w$]/g,``)||`font${t}`}Font`;return/^[A-Z_$]/i.test(n)?n:`font${t}`}function Ue(e,t){let n=a(e.webFamily),r=a(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${H(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${H(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${H(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${H(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
+ `)}\n});`}function W(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
8
8
 
9
9
  ## Files
10
10
 
11
- - \`${e.outputPath}\` — Tamagui v5 config (\`createTamagui\` + \`createV5Theme\` with light and dark)
11
+ - \`${e.outputPath}\` — Tamagui config (\`createTamagui\` + \`createTheme\` with light, dark, and nested semantic themes)
12
12
 
13
13
  ## Setup
14
14
 
@@ -48,50 +48,41 @@ export function App() {
48
48
  ## Regenerate
49
49
 
50
50
  Re-run Razorwind generate when tokens change so \`${e.outputPath}\` stays aligned with your design system.
51
- `}const Ye=new Set([`default`,`light`,`theme`]),Xe=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ze=/^ring(?:\.|$)/i,Qe=[`base`,`gray`,`grey`,`neutral`],$e={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function et(e){return Ye.has(e)}function tt(e){return e===`dark`}function B(e,t){let n=new Map,r=t===`dark`?tt:et;for(let t of e){let e=t.theme?.toLowerCase();(!e||Xe.test(e))&&n.set(t.path,t)}for(let t of e){let e=t.theme?.toLowerCase();e&&r(e)&&n.set(t.path,t)}return[...n.values()]}function nt(e){return Ze.test(e.path)&&e.category===`shadow`}const rt=new Set([`fontSize`,`blur`]),it=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function at(e){return/^px\(-?\d/.test(e)}function ot(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?C([t]):e.tokenKey}return e.tokenKey??``}function st(e,t){let n=q(e,t.byPath,t.byCssVar).tamaguiValue;if(e.category&&rt.has(e.category)&&typeof n==`number`)return`px(${n})`;if(typeof n==`string`){let r=Ct(n,t);return e.category===`dropShadow`?ct(r):r}return n}function ct(e){return e.includes(`drop-shadow(`)?e:e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.replace(/^inset\s+/i,``).split(/\s+/);if(t.length>=5){let[e,n,r]=t;return`drop-shadow(${e} ${n} ${r} ${t.slice(4).join(` `)})`}return`drop-shadow(${e.replace(/^inset\s+/i,``)})`}).join(` `)}function lt(e){let t={},n=W(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||nt(r))continue;let e=ot(r);if(!e)continue;let i=st(r,n);if(typeof i==`string`&&St(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function V(e){let t=e.tokenKey??e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}${t[0]?.toUpperCase()??``}${t.slice(1)}`:t}function H(e){return`tokens.color.${e}.val`}function ut(e,t){let n={},r=W(e),i=W(t),a=(e,t)=>{if(!e.tokenKey)return;let r=K(e,t);typeof r==`string`&&r.length!==0&&r!==`[object Object]`&&(n[V(e)]=r)};for(let t of e)a(t,r);for(let e of t)a(e,i);return n}function dt(e){let t={};for(let n of e){if(!n.primitive)continue;let e=J(n);if(!e)continue;let r=V(n);if(!r)continue;let i=t[e.name]??{};i[`${e.name}${e.step}`]=r,t[e.name]=i}let n=Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=2));if(Object.keys(n).length>0)return n;let r={};for(let t of e){let e=J(t);if(!e)continue;let n=t.tokenKey??V(t);if(!n)continue;let i=r[e.name]??{};i[`${e.name}${e.step}`]=n,r[e.name]=i}return Object.fromEntries(Object.entries(r).filter(([,e])=>Object.keys(e).length>=3))}function U(e,t,n,r){let i=n[r];if(typeof i!=`string`)return!1;let a=K(e,t);return a!=null&&a===i}function ft(e,t,n){let r=V(e);if(U(e,t,n,r))return H(r);if(e.tokenKey&&e.tokenKey!==r&&U(e,t,n,e.tokenKey))return H(e.tokenKey);let i=q(e,t.byPath,t.byCssVar),o=V(i);if(o!==r&&U(e,t,n,o))return H(o);if(i.tokenKey&&i.tokenKey!==o&&U(e,t,n,i.tokenKey))return H(i.tokenKey);if(i.primitive){let r=V(i);if(U(e,t,n,r))return H(r)}let s=K(e,t);if(s)return a(s)}function pt(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=typeof t==`string`&&at(t)?t:a(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${r}`}).join(`,
52
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function mt(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`).join(`,
53
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function ht(e,t=2){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{\n${n}...theme\n${r}}`:`{\n${n}...theme,\n${i.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`).join(`,
54
- `)}\n${r}}`}const gt=/^\{([^{}]+)\}$/,_t=/\{([^{}]+)\}/g,vt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,yt=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function W(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[(0,t.toThemeCssVar)(e.path),e]))}}function bt(e){if(typeof e==`string`)return gt.exec(e.trim())?.[1]?.trim()}function G(e){if(typeof e==`string`)return vt.exec(e.trim())?.[1]}function xt(e){return bt(e)!=null||G(e)!=null}function St(e){return/var\(|\{[^{}]+\}/.test(e)}function K(e,t){let n=q(e,t.byPath,t.byCssVar);if(n.category!=null&&n.category!==`color`)return;let r=[n.cssValue,n.tamaguiValue];for(let e of r)if(typeof e==`string`&&e.length>0&&!xt(e))return e}function Ct(e,t){return e.replace(_t,(e,n)=>{let r=t.byPath.get(n.trim());return r?K(r,t)??e:e}).replace(yt,(e,n)=>{let r=t.byCssVar.get(n);return r?K(r,t)??e:e})}function q(e,t,n){let r=e,i=new Set;for(let e=0;e<8;e++){if(i.has(r.path))return r;i.add(r.path);let e=bt(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=G(r.value)??G(r.cssValue)??G(r.tamaguiValue);if(a){let e=n.get(a);if(!e||e.path===r.path)return r;r=e;continue}return r}return r}function wt(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${a(e)}]`}function Tt(e,t){return t<1?e:t+1-e}function Et(e,t){return e.length<2?!1:X(e,t).some((t,n)=>t!==e[n])}function Dt(e,t,n,r){let i=n[t];if(!i||r!==`dark`)return e;let a=$(i,t);return a.length<2||!Et(a.map(([,e])=>e),r)?e:Tt(e,a[a.length-1][0])}function Ot(e,t,n,r){let i=J(e);if(!i)return;let a=Dt(i.step,i.name,n,r);if(t&&i.name.toLowerCase()===t.toLowerCase()||n[i.name])return`${i.name}${a}`}function kt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function J(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=kt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:C([r]),step:e}}if(!e.tokenKey)return;let r=/^([A-Z]+)(\d{1,3})$/i.exec(e.tokenKey);if(!r)return;let[,i=``,a=``]=r,o=kt(Number(a));if(o!=null)return{name:i,step:o}}function At(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function jt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&At(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function Y(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&At(t,e.name,e.step,n.tamaguiValue)}let n=Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=2));return Object.keys(n).length>0?n:jt(e)}function X(e,t){if(e.length<2)return[...e];let n=Ft(e[0]),r=Ft(e[e.length-1]);if(n==null||r==null||n===r)return[...e];let i=n>r;return t===`light`?i?[...e]:e.toReversed():i?e.toReversed():[...e]}function Z(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Mt(e){let t=e.startsWith(`#`)?e.slice(1):``;if((t.length===3||t.length===4)&&(t=[...t].map(e=>e+e).join(``)),t.length===8&&(t=t.slice(0,6)),t.length!==6||/[^0-9a-f]/i.test(t))return;let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return .2126*Z(n)+.7152*Z(r)+.0722*Z(i)}function Q(e){let t=e.trim();if(t.endsWith(`%`)){let e=Number.parseFloat(t);return Number.isFinite(e)?e/100:void 0}let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0}function Nt(e){return e>1?e/100:e}function Pt(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function Ft(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=Mt(t);if(n!=null)return n;let r=Pt(t,`oklch`);if(r?.[0]){let e=Q(r[0]);return e==null?void 0:Nt(e)}let i=Pt(t,`hsla?`);if(i?.[2]){let e=Q(i[2]);return e==null?void 0:Nt(e)}let a=Pt(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Q(a[0]),t=Q(a[1]),n=Q(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Z(r(e,a[0]))+.7152*Z(r(t,a[1]))+.0722*Z(r(n,a[2]))}}function $(e,t){let n=[],r=t.toLowerCase();for(let[i,a]of Object.entries(e)){if(!i.toLowerCase().startsWith(r))continue;let e=i.slice(t.length);/^\d+$/.test(e)&&n.push([Number(e),a])}return n.sort(([e],[t])=>e-t),n}function It(e,t,n){let r=$(e,t);if(r.length===0)return e;let i=X(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function Lt(e,t,n){let r=t[n];return e.find(([,e])=>e===r)?.[0]??e[n]?.[0]??n+1}function Rt(e,t,n,r){let i=$(e,n);if(i.length===0)return{};let a=X(i.map(([,e])=>e),r),o={};for(let[e,[r]]of i.entries()){let s=t[`${n}${Lt(i,a,e)}`];s&&(o[`${n}${r}`]=H(s))}return o}function zt(e,t,n,r){let i=$(e,n);if(i.length<2)return;let a=X(i.map(([,e])=>e),r),o=[];for(let[e]of i.entries()){let r=t[`${n}${Lt(i,a,e)}`];if(!r)return;o.push(H(r))}let s=[...o],c=s.at(-1);if(c!=null){for(;s.length<12;)s.push(c);return`[${s.join(`,`)}]`}}function Bt(e,t){return $(e,t).length>=2}function Vt(e){if(e.length>=12)return e.slice(0,12);let t=[...e],n=t.at(-1);if(n==null)return t;for(;t.length<12;)t.push(n);return t}function Ht(e,t,n){let r=$(e,t);if(!(r.length<2))return Vt(X(r.map(([,e])=>e),n))}function Ut(e){let t=new Map;for(let n of e){let e=n.childTheme?.trim();if(!e)continue;let r=e.toLowerCase();et(r)||tt(r)||t.has(r)||t.set(r,C([e]))}return[...t.values()].toSorted((e,t)=>e.localeCompare(t))}function Wt(e,t){let n=t.toLowerCase(),r=e.split(/(?=[A-Z])/).filter(Boolean).filter(e=>e.toLowerCase()!==n);if(r.length!==0)return C(r)}function Gt(e){return e.toLowerCase()===`base`}function Kt(e){let t=e.split(/(?=[A-Z])/).filter(Boolean),n=t.at(-1)?.toLowerCase();if((n===`primary`||n===`secondary`||n===`tertiary`)&&!(t.length<2))return{role:C(t.slice(0,-1)),rank:n}}function qt(e){return e.category===`color`&&!e.primitive&&!!e.tokenKey}function Jt(e,t,n){let r=new Map,i={};for(let a of e){if(!qt(a)||!a.tokenKey)continue;let e=a.childTheme?.toLowerCase();if(e&&e!==`base`)continue;let o=ft(a,t,n);if(!o)continue;let s=Kt(a.tokenKey);if(s){let e=r.get(s.role)??{};e[s.rank]=o,r.set(s.role,e);continue}if(e===`base`){let e=Wt(a.tokenKey,`base`);e&&(i[e]=o)}}let a={...i};for(let[e,t]of r){t.primary&&(a[e]=t.primary);let n=t.secondary??t.tertiary;n&&(a[`${e}Subtle`]=n)}return a}function Yt(e,t){let n=W(e),r={};for(let i of Ut(e)){if(Gt(i)){let a=Jt(e,n,t);Object.keys(a).length>0&&(r[i]=a);continue}let a={},o=i.toLowerCase();for(let r of e){if(!qt(r)||r.childTheme?.toLowerCase()!==o)continue;let e=Wt(r.tokenKey,i);if(!e)continue;let s=ft(r,n,t);s&&(a[e]=s)}Object.keys(a).length>0&&(r[i]=a)}return r}function Xt(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of Qe){let r=n.get(e);if(!r)continue;let i=Ht(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function Zt(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=Y(B(t,`light`)),r=Y(B(t,`dark`)),i=Xt(n,`light`),a=Xt(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function Qt(e,t,n){let r=Y(e),{byPath:i,byCssVar:o}=W(e),s={};for(let c of e){if(c.category!==`color`||!c.tokenKey||c.primitive||/^[A-Z]+\d{1,3}$/i.test(c.tokenKey)&&r[c.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=q(c,i,o),l=Ot(e,t,r,n);if(l){s[c.tokenKey]=wt(l);continue}let u=e.tamaguiValue;xt(u)||xt(e.cssValue)||(typeof u==`string`||typeof u==`number`)&&(s[c.tokenKey]=a(u))}return s}function $t(e){return e.replaceAll(`\\`,`\\\\`).replaceAll("`","\\`").replaceAll("${","\\${")}function en(e,t,n,r,i){let a=q(e,t.byPath,t.byCssVar),o=Ot(a,n,r,i);if(o)return{kind:`theme`,property:o};let s=K(a,t);if(s)return{kind:`text`,value:s}}function tn(e,t,n,r,i){let a=[],o=/\{([^{}]+)\}|var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g,s=0;for(let c of e.matchAll(o)){let o=c.index??0;o>s&&a.push({kind:`text`,value:e.slice(s,o)});let l=c[1]?t.byPath.get(c[1].trim()):c[2]?t.byCssVar.get(c[2]):void 0;if(!l)return;let u=en(l,t,n,r,i);if(!u)return;a.push(u),s=o+c[0].length}return s<e.length&&a.push({kind:`text`,value:e.slice(s)}),a}function nn(e){return e.some(e=>e.kind===`theme`)?`\`${e.map(e=>e.kind===`theme`?`\${${wt(e.property)}}`:$t(e.value)).join(``)}\``:a(e.map(e=>e.kind===`text`?e.value:``).join(``))}function rn(e,t,n){let r=W(e),i=Y(e.filter(e=>e.category===`color`)),a={};for(let o of e){if(!nt(o)||!o.tokenKey)continue;let e=typeof o.tamaguiValue==`string`?o.tamaguiValue:o.cssValue;if(typeof e!=`string`||e.length===0)continue;let s=tn(e,r,t,i,n);s&&(a[o.tokenKey]=nn(s))}return a}function an(e,t,n,r,i){let a=new Set([...Object.keys(e),...Object.keys(t)]);if(a.size===0)return;let o=[];for(let s of[...a].toSorted((e,t)=>e.localeCompare(t))){let a=e[s]??t[s]??{},c=t[s]??e[s]??{};if(Object.keys(a).length===0||Object.keys(c).length===0)continue;let l=Bt(a,s)||Bt(c,s),u,d;if(i&&l?(u=Rt(a,n[s]??r[s]??{},s,`light`),d=Rt(c,r[s]??n[s]??{},s,`dark`)):l?(u=It(a,s,`light`),d=It(c,s,`dark`)):(u=a,d=c),Object.keys(u).length===0||Object.keys(d).length===0)continue;let f=l&&!i?(e,t)=>pt(e,t):mt;o.push(` ${s}: {
55
- light: ${f(u,8)},
56
- dark: ${f(d,8)}
57
- }`)}if(o.length!==0)return`{\n${o.join(`,
58
- `)}\n }`}function on(e){let t=new Set;for(let n of e)for(let e of Object.values(n)){for(let n of e.matchAll(/theme\.([A-Z_$][\w$]*)/gi))n[1]&&t.add(n[1]);for(let n of e.matchAll(/theme\[(['"])(.+?)\1\]/g))t.add(n[2])}return[...t]}function sn(e,t){let n=new Set;for(let r of[e,t])for(let e of Object.values(r))for(let t of Object.keys(e))n.add(t);return[...n]}function cn(e,t){let n=Math.max(e?.length??0,t?.length??0);if(n===0)return[];let r=[];for(let e=1;e<=Math.min(n,12);e++)r.push(`base${e}`);return r}function ln(e){let t=new Set;for(let n of Object.keys(e.lightSemantic))t.add(n);for(let n of Object.keys(e.darkSemantic))t.add(n);for(let n of on([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of sn(e.lightScales,e.darkScales))t.add(n);for(let n of cn(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function un(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: string;`}function dn(e,t){if(e.length!==0)return[`/**`,` * Theme values available on \`useTheme()\` and \`$\` style props for the ${t.specName||`design system`}.`,` *`," * Derived from design tokens mapped by `createV5Theme` and `getTheme`.",` *`,` * @see https://tamagui.dev/docs/guides/theme-builder#gettheme`,` */`,`export interface AppTheme {`,...e.map(un),`}`,``]}function fn(e,t,n={}){let r=e.fonts??{},i=n.useDefaultConfig===!0,o=n.animations??`css`,s=n.includeTypeAugmentation!==!1,c=t.filter(e=>e.category===`color`),l=B(c,`light`),u=B(c,`dark`),d=u.length>0?u:l,f=ut(l,u),p=Object.keys(f).length>0,m=dt(l),h=dt(d),g=Y(l),_=Y(d),ee={...g,...Yt(l,f)},te={..._,...Yt(d,f)},{lightPalette:v,darkPalette:ne,lightBaseName:y,darkBaseName:b}=Zt(t),re=an(ee,te,m,h,p),ie=p&&y?zt(g[y]??{},m[y]??{},y,`light`):void 0,x=p&&b?zt(_[b]??{},h[b]??{},b,`dark`):void 0,S=B(t,`light`),ae=B(t,`dark`),C=u.length>0?ae:S,oe=u.length>0?b:y,w={...Qt(l,y,`light`),...rn(S,y,`light`)},T={...Qt(u.length>0?u:l,oe,`dark`),...rn(C,oe,`dark`)},se=dn(ln({lightSemantic:w,darkSemantic:T,lightScales:ee,darkScales:te,lightPalette:v,darkPalette:ne}),{specName:e.name}),ce=lt(S),E=[];Object.keys(f).length>0&&E.push(` color: ${pt(f,4)}`);for(let e of it){let t=ce[e];t&&Object.keys(t).length>0&&E.push(` ${e}: ${pt(t,4)}`)}let D=[];ie?D.push(` lightPalette: ${ie}`):v&&D.push(` lightPalette: ${a(v)}`),x?D.push(` darkPalette: ${x}`):ne&&D.push(` darkPalette: ${a(ne)}`),re&&D.push(` childrenThemes: ${re}`),(Object.keys(w).length>0||Object.keys(T).length>0)&&D.push(` getTheme: ({ theme, scheme }: { theme: AppTheme; scheme: "light" | "dark" }) => {
59
- return scheme === "dark"
60
- ? ${ht(T,8)}
61
- : ${ht(w,8)};
62
- }`);let O=[`import { isWeb } from '@tamagui/constants';`];i?O.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):O.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),o!==!1&&O.push(`import { animations } from "${$e[o]}";`),n.importConfig&&O.push(`import userConfig from "${n.importConfig}";`);let le=[`createTamagui`,`px`];E.length>0&&le.push(`createTokens`);let k=We(t,r);k.length>0&&le.push(`createFont`),O.push(`import { ${le.join(`, `)} } from "@tamagui/core";`);let A=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...O,``];E.length>0&&A.push(`const tokens = createTokens({`,E.join(`,
63
- `),`});`,``);let ue=D.length>0?`createV5Theme({\n${D.join(`,
64
- `)}\n})`:`createV5Theme()`;A.push(`const themes = ${ue};`,``);let j=new Map;if(k.length>0)for(let[e,t]of k.entries()){let n=Ke(t.key,e);j.set(t.key,n),A.push(qe(t,n),``)}let M=[];if(i&&M.push(` ...defaultConfig`),o!==!1&&M.push(` animations`),E.length>0&&(i?M.push(` tokens: {
65
- ...defaultConfig.tokens,
66
- ...tokens,
67
- space: {
68
- ...defaultConfig.tokens.space,
69
- ...tokens.space
70
- },
71
- size: {
72
- ...defaultConfig.tokens.size,
73
- ...tokens.size
74
- },
75
- radius: {
76
- ...defaultConfig.tokens.radius,
77
- ...tokens.radius
78
- },
79
- zIndex: {
80
- ...defaultConfig.tokens.zIndex,
81
- ...tokens.zIndex
82
- }
83
- }`):M.push(` tokens`)),M.push(` themes`),j.size>0){let e=[...j.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`);i?M.push(` fonts: {
84
- ...defaultConfig.fonts,
85
- ${e.join(`,
51
+ `}const We=new Set([`default`,`light`,`theme`]),Ge=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ke=/^ring(?:\.|$)/i,qe={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function Je(e){return We.has(e)}function Ye(e){return e===`dark`}function G(e,t){let n=new Map,r=t===`dark`?Ye:Je;for(let t of e){let e=t.theme?.toLowerCase();(!e||Ge.test(e))&&n.set(t.path,t)}for(let t of e){let e=t.theme?.toLowerCase();e&&r(e)&&n.set(t.path,t)}return[...n.values()]}function Xe(e){return Ke.test(e.path)&&e.category===`shadow`}const Ze=new Set([`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`]);function Qe(e){return!e.primitive&&!!e.tokenKey&&(e.type===`shadow`||e.category!=null&&Ze.has(e.category))}const $e=new Set([`fontSize`,`blur`]),et=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function tt(e){return/^px\(-?\d/.test(e)}function nt(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?D([t]):e.tokenKey}return e.tokenKey??``}function rt(e,t){let n=$(e,t.byPath,t.byCssVar).tamaguiValue;if(e.category&&$e.has(e.category)&&typeof n==`number`)return`px(${n})`;if(typeof n==`string`){let r=Q(n,t);return e.category===`dropShadow`?it(r):r}return n}function it(e){return e.includes(`drop-shadow(`)?e:e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.replace(/^inset\s+/i,``).split(/\s+/);if(t.length>=5){let[e,n,r]=t;return`drop-shadow(${e} ${n} ${r} ${t.slice(4).join(` `)})`}return`drop-shadow(${e.replace(/^inset\s+/i,``)})`}).join(` `)}function at(e){let t={},n=pt(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||Xe(r))continue;let e=nt(r);if(!e)continue;let i=rt(r,n);if(typeof i==`string`&&gt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function K(e){let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}${t[0]?.toUpperCase()??``}${t.slice(1)}`:t}function q(e){return`tokens.color.${e}.val`}function ot(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||ht(r)||r===`[object Object]`||(n[e]=r)};for(let t of e)t.tokenKey&&(t.primitive?r(K(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(K(e),e);return n}function J(e,t,n,r){let i=n[r];if(typeof i!=`string`)return!1;let a=Z(e,t);return a!=null&&a===i}function st(e,t,n){if(e.tokenKey&&J(e,t,n,e.tokenKey))return q(e.tokenKey);let r=$(e,t.byPath,t.byCssVar);if(r.tokenKey&&J(e,t,n,r.tokenKey))return q(r.tokenKey);if(r.primitive){let i=K(r);if(J(e,t,n,i))return q(i)}let i=Z(e,t);if(i)return a(i)}function Y(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=typeof t==`string`&&tt(t)?t:a(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${r}`}).join(`,
52
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}function ct(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`).join(`,
53
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}const lt=/^\{([^{}]+)\}$/,ut=/\{([^{}]+)\}/g,dt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,ft=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function pt(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[(0,t.toThemeCssVar)(e.path),e]))}}function mt(e){if(typeof e==`string`)return lt.exec(e.trim())?.[1]?.trim()}function X(e){if(typeof e==`string`)return dt.exec(e.trim())?.[1]}function ht(e){return mt(e)!=null||X(e)!=null}function gt(e){return/var\(|\{[^{}]+\}/.test(e)}function Z(e,t){let n=$(e,t.byPath,t.byCssVar);if(n.category!=null&&n.category!==`color`)return;let r=[n.cssValue,n.tamaguiValue];for(let e of r)if(typeof e==`string`&&e.length>0&&!ht(e))return e}function Q(e,t){return e.replace(ut,(e,n)=>{let r=t.byPath.get(n.trim());return r?Z(r,t)??e:e}).replace(ft,(e,n)=>{let r=t.byCssVar.get(n);return r?Z(r,t)??e:e})}function $(e,t,n){let r=e,i=new Set;for(let e=0;e<8;e++){if(i.has(r.path))return r;i.add(r.path);let e=mt(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=X(r.value)??X(r.cssValue)??X(r.tamaguiValue);if(a){let e=n.get(a);if(!e||e.path===r.path)return r;r=e;continue}return r}return r}function _t(e,t){let n=t.toLowerCase(),r=e.split(/(?=[A-Z])/).filter(Boolean).filter(e=>e.toLowerCase()!==n);if(r.length!==0)return D(r)}function vt(e){return e.category===`color`&&!e.primitive&&!!e.tokenKey}function yt(e){return Qe(e)&&D(e.path.split(`.`).filter(Boolean))||e.tokenKey}function bt(e){let t=e.toLowerCase();return Je(t)||Ye(t)}function xt(e,t,n){let r=yt(t);if(!r)return;let i=t.childTheme?.trim();if(!i||bt(i)){e.base[r]=n;return}let a=D([i]),o=_t(r,a);if(!o)return;let s=e.children[a]??{};s[o]=n,e.children[a]=s}function St(e,t){let n=typeof e.tamaguiValue==`string`?e.tamaguiValue:e.cssValue;if(typeof n!=`string`||n.length===0)return;let r=Q(n,t);return r.length===0||gt(r)?void 0:a(e.category===`dropShadow`?it(r):r)}function Ct(e,t){let n=pt(e),r={base:{},children:{}};for(let i of e){if(vt(i)){let e=st(i,n,t);e&&xt(r,i,e);continue}if(!Qe(i))continue;let e=St(i,n);if(!e)continue;let a=i.childTheme?.trim();(a&&!bt(a)||Xe(i))&&xt(r,i,e)}return r}function wt(e){let t=new Set;for(let n of e){for(let e of Object.keys(n.base))t.add(e);for(let e of Object.values(n.children))for(let n of Object.keys(e))t.add(n)}return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Tt(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: string;`}function Et(e,t){if(e.length!==0)return[`/**`,` * Theme values available on \`useTheme()\` and \`$\` style props for the ${t.specName||`design system`}.`,` *`," * Derived from semantic color tokens mapped by `createTheme`. Nested"," * themes (`light_primary`, `dark_danger`, …) come from each token's"," * `theme` / `$theme` property.",` *`,` * @see https://tamagui.dev/docs/intro/themes`,` */`,`export interface AppTheme {`,...e.map(Tt),`}`,``]}function Dt(e,t){return`${e}_${t}`}function Ot(e){return Object.keys(e).length>0}function kt(e,t){return`const ${e} = createTheme(${ct(t,2)});`}function At(e,t,n){let r=[],i=[],o=(e,t,n=!1)=>{if(!n&&!Ot(t))return;r.push(kt(e,t));let o=/^[A-Z_$][\w$]*$/i.test(e)?e:a(e);i.push(o===e?` ${e}`:` ${o}: ${e}`)},s=[...new Set([...Object.keys(e.children),...Object.keys(t.children)])].toSorted((e,t)=>e.localeCompare(t));o(`light`,e.base,s.length>0),n&&o(`dark`,t.base,s.length>0);for(let r of s){let i=e.children[r]??t.children[r]??{};if(o(Dt(`light`,r),i),n){let n=t.children[r]??e.children[r]??{};o(Dt(`dark`,r),n)}}return i.length===0?{statements:[],hasThemes:!1}:(r.push(``,`const themes = {\n${i.join(`,
54
+ `)}\n};`),{statements:r,hasThemes:!0})}function jt(e,t,n={}){let r=e.fonts??{},i=n.useDefaultConfig===!0,o=n.animations??`css`,s=n.includeTypeAugmentation!==!1,c=t.filter(e=>e.category===`color`),l=G(c,`light`),u=G(c,`dark`),d=u.length>0,f=ot(l,u),p=G(t,`light`),m=d?G(t,`dark`):p,h=Ct(p,f),g=Ct(m,f),{statements:_,hasThemes:v}=At(h,g,d),ee=Et(wt(d?[h,g]:[h]),{specName:e.name}),y=at(p),b=[];Object.keys(f).length>0&&b.push(` color: ${Y(f,4)}`);for(let e of et){let t=y[e];t&&Object.keys(t).length>0&&b.push(` ${e}: ${Y(t,4)}`)}let x=[`import { isWeb } from '@tamagui/constants';`];i&&x.push(`import { defaultConfig } from "@tamagui/config/v5";`),o!==!1&&x.push(`import { animations } from "${qe[o]}";`),n.importConfig&&x.push(`import userConfig from "${n.importConfig}";`);let S=[`createTamagui`,`px`];b.length>0&&S.push(`createTokens`),v&&S.push(`createTheme`);let C=V(t,r);C.length>0&&S.push(`createFont`),x.push(`import { ${S.join(`, `)} } from "@tamagui/core";`);let w=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/configuration`,` * @see https://tamagui.dev/docs/intro/themes`,` */`,``,...x,``];b.length>0&&w.push(`const tokens = createTokens({`,b.join(`,
55
+ `),`});`,``),_.length>0&&w.push(..._,``);let T=new Map;if(C.length>0)for(let[e,t]of C.entries()){let n=U(t.key,e);T.set(t.key,n),w.push(Ue(t,n),``)}let E=[];if(i&&E.push(` ...defaultConfig`),o!==!1&&E.push(` animations`),b.length>0&&(i?E.push(` tokens: {
56
+ ...defaultConfig.tokens,
57
+ ...tokens,
58
+ space: {
59
+ ...defaultConfig.tokens.space,
60
+ ...tokens.space
61
+ },
62
+ size: {
63
+ ...defaultConfig.tokens.size,
64
+ ...tokens.size
65
+ },
66
+ radius: {
67
+ ...defaultConfig.tokens.radius,
68
+ ...tokens.radius
69
+ },
70
+ zIndex: {
71
+ ...defaultConfig.tokens.zIndex,
72
+ ...tokens.zIndex
73
+ }
74
+ }`):E.push(` tokens`)),v&&E.push(` themes`),T.size>0){let e=[...T.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`);i?E.push(` fonts: {
75
+ ...defaultConfig.fonts,
76
+ ${e.join(`,
86
77
  `)}
87
- }`):M.push(` fonts: {
88
- ${e.join(`,
78
+ }`):E.push(` fonts: {
79
+ ${e.join(`,
89
80
  `)}
90
- }`)}return n.shorthands&&M.push(` shorthands: ${pt(n.shorthands,4)}`),n.media&&M.push(` media: ${a(n.media)}`),n.defaultFont&&M.push(` defaultFont: ${a(n.defaultFont)}`),A.push(``,...se??[],`/**
91
- * The Tamagui v5 config for the ${e.name||`design system`}.
81
+ }`)}return n.shorthands&&E.push(` shorthands: ${Y(n.shorthands,4)}`),n.media&&E.push(` media: ${a(n.media)}`),n.defaultFont&&E.push(` defaultFont: ${a(n.defaultFont)}`),w.push(``,...ee??[],`/**
82
+ * The Tamagui config for the ${e.name||`design system`}.
92
83
  *
93
- * @see https://tamagui.dev/docs/core/config-v5
84
+ * @see https://tamagui.dev/docs/core/configuration
94
85
  */
95
- export const config = createTamagui({`,M.join(`,
96
- `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),s&&A.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),A.push(`export default config;`,``),A.join(`
97
- `)}function pn(e,r={}){let i=e.tokens&&Object.keys(e.tokens).length>0,a=e.fonts&&Object.keys(e.fonts).length>0;if(!i&&!a)return{};let o=i?T(e.tokens,r):[];if(o.length===0&&!a)return{};let s=r.outputPath??`tamagui.config.ts`,c=fn(e,o,r),l=r.installGuide??Je({outputPath:s}),u=(0,n.join)((0,n.dirname)(s),`INSTALL.md`);return{[s]:(0,t.createDocument)(s,c,{name:`razorwind-tamagui`},!1,`typescript`),[u]:(0,t.createDocument)(u,l,{name:`razorwind-tamagui`},!1,`markdown`)}}var mn=(0,e.definePlugin)(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>pn(t,e??{})}));exports.collectColorScales=Y,exports.collectTamaguiFonts=We,exports.colorLightness=Ft,exports.default=mn,exports.flattenTokens=T,exports.flipPaletteStep=Tt,exports.fontVarName=Ke,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=pn,exports.isPaletteGroup=ee,exports.orderPaletteForScheme=X,exports.renderInstallMd=Je,exports.renderTamaguiConfig=fn,exports.resolveTokenCategory=ae,exports.resolveTokenSets=t.resolveTokenSets,exports.tamaguiFontKeyFromRole=Ce,exports.toCamelCaseKey=C,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=o,exports.toTokenKey=oe,exports.typographyFontKey=Te;
86
+ export const config = createTamagui({`,E.join(`,
87
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),s&&w.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),w.push(`export default config;`,``),w.join(`
88
+ `)}function Mt(e,r={}){let i=e.tokens&&Object.keys(e.tokens).length>0,a=e.fonts&&Object.keys(e.fonts).length>0;if(!i&&!a)return{};let o=i?re(e.tokens,r):[];if(o.length===0&&!a)return{};let s=r.outputPath??`tamagui.config.ts`,c=jt(e,o,r),l=r.installGuide??W({outputPath:s}),u=(0,n.join)((0,n.dirname)(s),`INSTALL.md`);return{[s]:(0,t.createDocument)(s,c,{name:`razorwind-tamagui`},!1,`typescript`),[u]:(0,t.createDocument)(u,l,{name:`razorwind-tamagui`},!1,`markdown`)}}var Nt=(0,e.definePlugin)(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Mt(t,e??{})}));exports.collectTamaguiFonts=V,exports.default=Nt,exports.flattenTokens=re,exports.fontVarName=U,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=Mt,exports.isPaletteGroup=v,exports.renderInstallMd=W,exports.renderTamaguiConfig=jt,exports.resolveTokenCategory=te,exports.resolveTokenSets=t.resolveTokenSets,exports.tamaguiFontKeyFromRole=L,exports.toCamelCaseKey=D,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=o,exports.toTokenKey=ne,exports.typographyFontKey=we;
package/dist/index.d.cts CHANGED
@@ -22,7 +22,7 @@ interface TamaguiPluginOptions {
22
22
  * Output path written relative to the execution cwd.
23
23
  *
24
24
  * Light and dark schemes are always written to this single file — Tamagui
25
- * `createV5Theme` encodes both palettes in one config.
25
+ * `createTheme` encodes both as `light` / `dark` plus nested children.
26
26
  *
27
27
  * @defaultValue `"tamagui.config.ts"`
28
28
  */
@@ -108,7 +108,7 @@ interface FlatToken {
108
108
  */
109
109
  childTheme?: string;
110
110
  /**
111
- * True when an ancestor group is marked as a primitive (`primitive: true` or `$type: "primitive"` or `$type: "palette"`). Those scales feed Tamagui `childrenThemes` / `lightPalette` / `darkPalette`.
111
+ * True when an ancestor group is marked as a primitive (`primitive: true` or `$type: "primitive"` or `$type: "palette"`). Those scales feed `createTokens({ color })` and are skipped when building semantic `createTheme` objects.
112
112
  */
113
113
  primitive?: boolean;
114
114
  }
@@ -209,79 +209,52 @@ declare function toTamaguiValue(value: unknown, type?: string): string | number;
209
209
  /**
210
210
  * Build Tamagui INSTALL.md for generated config file.
211
211
  *
212
- * @see https://tamagui.dev/docs/core/config-v5
212
+ * @see https://tamagui.dev/docs/core/configuration
213
213
  */
214
214
  declare function renderInstallMd(options: {
215
215
  outputPath: string;
216
216
  }): string;
217
217
  //#endregion
218
218
  //#region src/generate.d.ts
219
- type ColorScheme = "light" | "dark";
220
- /**
221
- * Mirror a palette step across a numbered scale (`1` ↔ `max`, `2` ↔ `max-1`).
222
- *
223
- * Dark palettes are emitted darkest-first (`color1` / `red1` are the darkest
224
- * stops), so a DTCG alias `{color.red.7}` must read `theme.red3` on a 9-step
225
- * scale to keep pointing at the original token color.
226
- */
227
- declare function flipPaletteStep(step: number, maxStep: number): number;
228
- /**
229
- * Collect color palettes for Tamagui `childrenThemes`.
230
- *
231
- * Groups marked `palette: true` (or `$type: "palette"`) win. When none are
232
- * marked, numbered 1–12 (or 100–900) scales are used as a fallback.
233
- */
234
- declare function collectColorScales(colorTokens: FlatToken[]): Record<string, Record<string, string>>;
235
219
  /**
236
- * Tamagui v5 palettes: light runs lightest darkest, dark runs darkest →
237
- * lightest (`color1`–`color12`).
220
+ * Render a Tamagui config module from flattened design tokens.
238
221
  *
239
- * @see https://tamagui.dev/docs/core/config-v5#base-colors-color1-12
240
- */
241
- declare function orderPaletteForScheme(values: readonly string[], scheme: ColorScheme): string[];
242
- /**
243
- * Approximate perceptual lightness (0–1) for hex, rgb, hsl, and oklch colors.
244
- * CSS variables and unresolved aliases return `undefined`.
245
- */
246
- declare function colorLightness(color: string): number | undefined;
247
- /**
248
- * Render a Tamagui v5 config module from flattened design tokens.
222
+ * Light and dark token sets become `createTheme` objects. Semantic colors with
223
+ * a `theme` / `$theme` property are nested as `light_<name>` / `dark_<name>`,
224
+ * with the theme name stripped from the token key. Each typography token is
225
+ * emitted as its own `createFont` entry with that token's size, line height,
226
+ * and weight (not a shared type scale).
249
227
  *
250
- * Light and dark token sets are combined into one `createV5Theme` call.
251
- * Each typography token is emitted as its own `createFont` entry with that
252
- * token's size, line height, and weight (not a shared type scale).
253
- *
254
- * @see https://tamagui.dev/docs/core/config-v5
228
+ * @see https://tamagui.dev/docs/core/configuration
229
+ * @see https://tamagui.dev/docs/intro/themes
255
230
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
256
231
  */
257
232
  declare function renderTamaguiConfig(spec: Schema, tokens: FlatToken[], options?: TamaguiPluginOptions): string;
258
233
  /**
259
- * Generate a Tamagui v5 config file from a Razorwind schema.
234
+ * Generate a Tamagui config file from a Razorwind schema.
260
235
  */
261
236
  declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOptions): GeneratorFunctionResult<Schema, TamaguiPluginOptions>;
262
237
  //#endregion
263
238
  //#region src/index.d.ts
264
239
  /**
265
- * Razorwind plugin that turns design tokens into a Tamagui v5 config
266
- * (`createTamagui` + `createTokens` + `createV5Theme` + `createFont`).
240
+ * Razorwind plugin that turns design tokens into a Tamagui config
241
+ * (`createTamagui` + `createTokens` + `createTheme` + `createFont`).
267
242
  *
268
- * Light and dark token sets are emitted as a single config: `createV5Theme`
269
- * receives both `lightPalette` / `darkPalette` and `childrenThemes` with
270
- * `{ light, dark }` palettes. Groups marked `palette: true` become
271
- * `childrenThemes`; palettes named `base`, `grey`, `gray`, or `neutral` also
272
- * set `lightPalette` / `darkPalette` (`color1`–`color12`). Semantic token
273
- * `theme` tags on semantic tokens add children themes whose keys are the
274
- * semantic color roles (`foreground`, `backgroundSubtle`, ). The `base`
275
- * children theme maps `xPrimary` → `x` and `xTertiary` (or `xSecondary`) →
276
- * `xSubtle`. Light palettes are ordered lightest-first; dark palettes
277
- * darkest-first.
243
+ * Light and dark token sets are emitted as a single config. Semantic colors
244
+ * and shadows (not marked `palette` / `primitive`) that declare `theme` /
245
+ * `$theme` become nested Tamagui themes (`light_primary`, `dark_danger`, …),
246
+ * with the theme name stripped from the token key (`backgroundPrimarySubtle` +
247
+ * `theme: "primary"` `backgroundSubtle`; `ringPrimarySubtle` `ringSubtle`
248
+ * on `primary`). Untagged semantic colors land on the `light` / `dark` base
249
+ * themes. Primitive palettes stay on `createTokens({ color })`.
278
250
  *
279
251
  * Typography tokens (`$type: "typography"`) each emit their own Tamagui
280
252
  * `createFont` entry with that token's size, line height, and weight. Font
281
253
  * keys keep the DTCG token name (`display-lg`). Names with a `_` suffix (or a
282
254
  * nested language segment) become FontLanguage variants (`body_cn`).
283
255
  *
284
- * @see https://tamagui.dev/docs/core/config-v5
256
+ * @see https://tamagui.dev/docs/core/configuration
257
+ * @see https://tamagui.dev/docs/intro/themes
285
258
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
286
259
  *
287
260
  * @example
@@ -296,5 +269,5 @@ declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOpti
296
269
  */
297
270
  declare const _default: (options?: TamaguiPluginOptions | undefined) => import("@razorwind/core/plugin").Plugin;
298
271
  //#endregion
299
- export { type FlatToken, type TamaguiAnimationDriver, type TamaguiFontDef, type TamaguiPluginOptions, type TamaguiTokenCategory, collectColorScales, collectTamaguiFonts, colorLightness, _default as default, flattenTokens, flipPaletteStep, fontVarName, formatTokenValue, generateTamaguiConfig, isPaletteGroup, orderPaletteForScheme, renderInstallMd, renderTamaguiConfig, resolveTokenCategory, resolveTokenSets, tamaguiFontKeyFromRole, toCamelCaseKey, toCssVar, toTamaguiValue, toTokenKey, typographyFontKey };
272
+ export { type FlatToken, type TamaguiAnimationDriver, type TamaguiFontDef, type TamaguiPluginOptions, type TamaguiTokenCategory, collectTamaguiFonts, _default as default, flattenTokens, fontVarName, formatTokenValue, generateTamaguiConfig, isPaletteGroup, renderInstallMd, renderTamaguiConfig, resolveTokenCategory, resolveTokenSets, tamaguiFontKeyFromRole, toCamelCaseKey, toCssVar, toTamaguiValue, toTokenKey, typographyFontKey };
300
273
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/flatten.ts","../src/fonts.ts","../src/format.ts","../src/install.ts","../src/generate.ts","../src/index.ts"],"mappings":";;;;;;;;;;;KA0BY;;;;KAMA;;;;UAkBK;;;;;;;;;EASf;;;;;;;EAQA,aAAa;;;;;;EAOb,aAAa;;;;;;EAOb,QAAQ;;;;EAKR;;;;EAKA;;;;;;;;EASA;;;;;EAMA,eAAe;;;;;;;EAQf;;;;;EAMA;;;;;UAMe;;EAEf;;EAEA,OAAO;;EAEP;;EAEA;;EAEA;;EAEA,WAAW;;EAEX;;EAEA;;EAEA;;;;;EAKA;;;;EAIA;;;;;;;;;iBChEc,eAAe,MAAM;;;;iBAyGrB,qBACd,cACA,gBACC;;;;;;;iBAoEa,eAAe;;;;;;;;iBA0Bf,WAAW;;;;iBA2GX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;UCrUc;;EAEf;;EAEA;;EAEA;EACA,MAAM;EACN,YAAY;EACZ,QAAQ;EACR,eAAe;;EAEf;;;;;;;;;iBA4Lc,uBAAuB;;;;;;;;;iBAiCvB,kBAAkB;;;;;;;iBA2WlB,oBACd,QAAQ,aACR,QAAQ,QACP;;;;;;iBAsFa,YAAY,aAAa;;;;;;;;;iBC/rBzB,eAAe,gBAAgB;;;;;;;;iBCnC/B,gBAAgB;EAAW;;;;KCmCtC;;;;;;;;iBAwmBW,gBAAgB,cAAc;;;;;;;iBA6K9B,mBACd,aAAa,cACZ,eAAe;;;;;;;iBAmCF,sBACd,2BACA,QAAQ;;;;;iBA+EM,eAAe;;;;;;;;;;;iBAs6Bf,oBACd,MAAM,QACN,QAAQ,aACR,UAAS;;;;iBAmTK,sBACd,MAAM,QACN,UAAS,uBACR,wBAAwB,QAAQ"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/flatten.ts","../src/fonts.ts","../src/format.ts","../src/install.ts","../src/generate.ts","../src/index.ts"],"mappings":";;;;;;;;;;;KA0BY;;;;KAMA;;;;UAkBK;;;;;;;;;EASf;;;;;;;EAQA,aAAa;;;;;;EAOb,aAAa;;;;;;EAOb,QAAQ;;;;EAKR;;;;EAKA;;;;;;;;EASA;;;;;EAMA,eAAe;;;;;;;EAQf;;;;;EAMA;;;;;UAMe;;EAEf;;EAEA,OAAO;;EAEP;;EAEA;;EAEA;;EAEA,WAAW;;EAEX;;EAEA;;EAEA;;;;;EAKA;;;;EAIA;;;;;;;;;iBChEc,eAAe,MAAM;;;;iBAyGrB,qBACd,cACA,gBACC;;;;;;;iBAoEa,eAAe;;;;;;;;iBA0Bf,WAAW;;;;iBA2GX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;UCrUc;;EAEf;;EAEA;;EAEA;EACA,MAAM;EACN,YAAY;EACZ,QAAQ;EACR,eAAe;;EAEf;;;;;;;;;iBA4Lc,uBAAuB;;;;;;;;;iBAiCvB,kBAAkB;;;;;;;iBA2WlB,oBACd,QAAQ,aACR,QAAQ,QACP;;;;;;iBAsFa,YAAY,aAAa;;;;;;;;;iBC/rBzB,eAAe,gBAAgB;;;;;;;;iBCnC/B,gBAAgB;EAAW;;;;;;;;;;;;;;;;;iBCi0B3B,oBACd,MAAM,QACN,QAAQ,aACR,UAAS;;;;iBA4NK,sBACd,MAAM,QACN,UAAS,uBACR,wBAAwB,QAAQ"}
package/dist/index.d.mts CHANGED
@@ -22,7 +22,7 @@ interface TamaguiPluginOptions {
22
22
  * Output path written relative to the execution cwd.
23
23
  *
24
24
  * Light and dark schemes are always written to this single file — Tamagui
25
- * `createV5Theme` encodes both palettes in one config.
25
+ * `createTheme` encodes both as `light` / `dark` plus nested children.
26
26
  *
27
27
  * @defaultValue `"tamagui.config.ts"`
28
28
  */
@@ -108,7 +108,7 @@ interface FlatToken {
108
108
  */
109
109
  childTheme?: string;
110
110
  /**
111
- * True when an ancestor group is marked as a primitive (`primitive: true` or `$type: "primitive"` or `$type: "palette"`). Those scales feed Tamagui `childrenThemes` / `lightPalette` / `darkPalette`.
111
+ * True when an ancestor group is marked as a primitive (`primitive: true` or `$type: "primitive"` or `$type: "palette"`). Those scales feed `createTokens({ color })` and are skipped when building semantic `createTheme` objects.
112
112
  */
113
113
  primitive?: boolean;
114
114
  }
@@ -209,79 +209,52 @@ declare function toTamaguiValue(value: unknown, type?: string): string | number;
209
209
  /**
210
210
  * Build Tamagui INSTALL.md for generated config file.
211
211
  *
212
- * @see https://tamagui.dev/docs/core/config-v5
212
+ * @see https://tamagui.dev/docs/core/configuration
213
213
  */
214
214
  declare function renderInstallMd(options: {
215
215
  outputPath: string;
216
216
  }): string;
217
217
  //#endregion
218
218
  //#region src/generate.d.ts
219
- type ColorScheme = "light" | "dark";
220
- /**
221
- * Mirror a palette step across a numbered scale (`1` ↔ `max`, `2` ↔ `max-1`).
222
- *
223
- * Dark palettes are emitted darkest-first (`color1` / `red1` are the darkest
224
- * stops), so a DTCG alias `{color.red.7}` must read `theme.red3` on a 9-step
225
- * scale to keep pointing at the original token color.
226
- */
227
- declare function flipPaletteStep(step: number, maxStep: number): number;
228
- /**
229
- * Collect color palettes for Tamagui `childrenThemes`.
230
- *
231
- * Groups marked `palette: true` (or `$type: "palette"`) win. When none are
232
- * marked, numbered 1–12 (or 100–900) scales are used as a fallback.
233
- */
234
- declare function collectColorScales(colorTokens: FlatToken[]): Record<string, Record<string, string>>;
235
219
  /**
236
- * Tamagui v5 palettes: light runs lightest darkest, dark runs darkest →
237
- * lightest (`color1`–`color12`).
220
+ * Render a Tamagui config module from flattened design tokens.
238
221
  *
239
- * @see https://tamagui.dev/docs/core/config-v5#base-colors-color1-12
240
- */
241
- declare function orderPaletteForScheme(values: readonly string[], scheme: ColorScheme): string[];
242
- /**
243
- * Approximate perceptual lightness (0–1) for hex, rgb, hsl, and oklch colors.
244
- * CSS variables and unresolved aliases return `undefined`.
245
- */
246
- declare function colorLightness(color: string): number | undefined;
247
- /**
248
- * Render a Tamagui v5 config module from flattened design tokens.
222
+ * Light and dark token sets become `createTheme` objects. Semantic colors with
223
+ * a `theme` / `$theme` property are nested as `light_<name>` / `dark_<name>`,
224
+ * with the theme name stripped from the token key. Each typography token is
225
+ * emitted as its own `createFont` entry with that token's size, line height,
226
+ * and weight (not a shared type scale).
249
227
  *
250
- * Light and dark token sets are combined into one `createV5Theme` call.
251
- * Each typography token is emitted as its own `createFont` entry with that
252
- * token's size, line height, and weight (not a shared type scale).
253
- *
254
- * @see https://tamagui.dev/docs/core/config-v5
228
+ * @see https://tamagui.dev/docs/core/configuration
229
+ * @see https://tamagui.dev/docs/intro/themes
255
230
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
256
231
  */
257
232
  declare function renderTamaguiConfig(spec: Schema, tokens: FlatToken[], options?: TamaguiPluginOptions): string;
258
233
  /**
259
- * Generate a Tamagui v5 config file from a Razorwind schema.
234
+ * Generate a Tamagui config file from a Razorwind schema.
260
235
  */
261
236
  declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOptions): GeneratorFunctionResult<Schema, TamaguiPluginOptions>;
262
237
  //#endregion
263
238
  //#region src/index.d.ts
264
239
  /**
265
- * Razorwind plugin that turns design tokens into a Tamagui v5 config
266
- * (`createTamagui` + `createTokens` + `createV5Theme` + `createFont`).
240
+ * Razorwind plugin that turns design tokens into a Tamagui config
241
+ * (`createTamagui` + `createTokens` + `createTheme` + `createFont`).
267
242
  *
268
- * Light and dark token sets are emitted as a single config: `createV5Theme`
269
- * receives both `lightPalette` / `darkPalette` and `childrenThemes` with
270
- * `{ light, dark }` palettes. Groups marked `palette: true` become
271
- * `childrenThemes`; palettes named `base`, `grey`, `gray`, or `neutral` also
272
- * set `lightPalette` / `darkPalette` (`color1`–`color12`). Semantic token
273
- * `theme` tags on semantic tokens add children themes whose keys are the
274
- * semantic color roles (`foreground`, `backgroundSubtle`, ). The `base`
275
- * children theme maps `xPrimary` → `x` and `xTertiary` (or `xSecondary`) →
276
- * `xSubtle`. Light palettes are ordered lightest-first; dark palettes
277
- * darkest-first.
243
+ * Light and dark token sets are emitted as a single config. Semantic colors
244
+ * and shadows (not marked `palette` / `primitive`) that declare `theme` /
245
+ * `$theme` become nested Tamagui themes (`light_primary`, `dark_danger`, …),
246
+ * with the theme name stripped from the token key (`backgroundPrimarySubtle` +
247
+ * `theme: "primary"` `backgroundSubtle`; `ringPrimarySubtle` `ringSubtle`
248
+ * on `primary`). Untagged semantic colors land on the `light` / `dark` base
249
+ * themes. Primitive palettes stay on `createTokens({ color })`.
278
250
  *
279
251
  * Typography tokens (`$type: "typography"`) each emit their own Tamagui
280
252
  * `createFont` entry with that token's size, line height, and weight. Font
281
253
  * keys keep the DTCG token name (`display-lg`). Names with a `_` suffix (or a
282
254
  * nested language segment) become FontLanguage variants (`body_cn`).
283
255
  *
284
- * @see https://tamagui.dev/docs/core/config-v5
256
+ * @see https://tamagui.dev/docs/core/configuration
257
+ * @see https://tamagui.dev/docs/intro/themes
285
258
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
286
259
  *
287
260
  * @example
@@ -296,5 +269,5 @@ declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOpti
296
269
  */
297
270
  declare const _default: (options?: TamaguiPluginOptions | undefined) => import("@razorwind/core/plugin").Plugin;
298
271
  //#endregion
299
- export { type FlatToken, type TamaguiAnimationDriver, type TamaguiFontDef, type TamaguiPluginOptions, type TamaguiTokenCategory, collectColorScales, collectTamaguiFonts, colorLightness, _default as default, flattenTokens, flipPaletteStep, fontVarName, formatTokenValue, generateTamaguiConfig, isPaletteGroup, orderPaletteForScheme, renderInstallMd, renderTamaguiConfig, resolveTokenCategory, resolveTokenSets, tamaguiFontKeyFromRole, toCamelCaseKey, toCssVar, toTamaguiValue, toTokenKey, typographyFontKey };
272
+ export { type FlatToken, type TamaguiAnimationDriver, type TamaguiFontDef, type TamaguiPluginOptions, type TamaguiTokenCategory, collectTamaguiFonts, _default as default, flattenTokens, fontVarName, formatTokenValue, generateTamaguiConfig, isPaletteGroup, renderInstallMd, renderTamaguiConfig, resolveTokenCategory, resolveTokenSets, tamaguiFontKeyFromRole, toCamelCaseKey, toCssVar, toTamaguiValue, toTokenKey, typographyFontKey };
300
273
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1,14 +1,14 @@
1
1
  import{definePlugin as e}from"@razorwind/core/plugin";import{createDocument as t,formatTokenValue as n,formatTokenValue as r,isObject as i,resolveTokenSets as a,toCssVar as o,toThemeCssVar as s}from"@razorwind/core/utils";import{basename as c,dirname as l,join as u}from"node:path";import{cssFontFamily as d,fontFamilyName as f}from"@razorwind/core/lib/fonts";function p(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function m(e){return typeof e==`string`?`"${p(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function h(e,t){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if(i(e)&&typeof e.value==`number`&&typeof e.unit==`string`){let t=e.unit.toLowerCase();return t===`px`||t===``?e.value:t===`rem`?e.value*16:`${e.value}${e.unit}`}if(typeof e==`string`){let t=/^(-?\d+(?:\.\d+)?)px$/i.exec(e.trim());if(t)return Number(t[1]);let n=/^(-?\d+(?:\.\d+)?)rem$/i.exec(e.trim());if(n)return Number(n[1])*16;let r=Number(e);return!Number.isNaN(r)&&e.trim()!==``?r:e}return r(e,t)}const g=/^(?:font-size|fontSize)(?:\.|$)/i,_=/^(?:font-weight|fontWeight)(?:\.|$)/i,ee=/^shadow(?:\.|$)/i,te=/^inset-shadow(?:\.|$)/i,v=/^drop-shadow(?:\.|$)/i,y=/^text-shadow(?:\.|$)/i,b=/^(?:blur|blur-?radius)(?:\.|$)/i,x=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),ne=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:g,category:`fontSize`},{prefix:_,category:`fontWeight`},{prefix:v,category:`dropShadow`},{prefix:te,category:`insetShadow`},{prefix:y,category:`textShadow`},{prefix:ee,category:`shadow`},{prefix:b,category:`blur`},{prefix:/^(?:space|spacing|gap)(?:\.|$)/i,category:`space`},{prefix:/^inset(?:\.|$)/i,category:`space`},{prefix:/^(?:size|sizing)(?:\.|$)/i,category:`size`},{prefix:/^(?:radius|rounded|radii)(?:\.|$)/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)(?:\.|$)/i,category:`zIndex`}];function re(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function ie(e){return e===!0||e===`true`||e===1}function S(e){return ie(e.palette)||ie(e.$palette)?!0:w(e)===`palette`}function ae(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function oe(e){return e===!0||e===`true`||e===1}function se(e){return oe(e.primitive)||oe(e.$primitive)?!0:w(e)===`primitive`}function C(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function ce(e,t){return(e===`theme`||e===`$theme`)&&typeof t==`string`}function le(e){if(typeof e.theme==`string`&&e.theme.length>0)return e.theme;if(typeof e.$theme==`string`&&e.$theme.length>0)return e.$theme}function ue(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function w(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function T(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 E(e,t){for(let{prefix:t,category:n}of ne)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return te.test(e)?`insetShadow`:v.test(e)?`dropShadow`:y.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(g.test(e))return`fontSize`;if(b.test(e))return`blur`;if(/(?:^|\.)(?:space|spacing|gap)(?:\.|$)/i.test(e)||/(?:^|\.)inset(?:\.|$)/i.test(e))return`space`;if(/radius|rounded/i.test(e))return`radius`;if(/z-?index|elevation/i.test(e))return`zIndex`;if(/(?:^|\.)(?:size|sizing)(?:\.|$)/i.test(e)||/(?:^|\.)(?:width|height)(?:\.|$)/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`;if(t===`fontWeight`||_.test(e))return`fontWeight`}function D(e){return e.flatMap(e=>e.split(/[-_\s]+/)).filter(Boolean).map((e,t)=>{if(/^\d/.test(e))return e;let n=e.toLowerCase();return t===0?n:`${n.charAt(0).toUpperCase()}${n.slice(1)}`}).join(``)}function O(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|primitive|space|spacing|gap|inset|shadow|inset-shadow|drop-shadow|text-shadow|font-size|fontSize|font-weight|fontWeight|size|sizing|radius|rounded|radii|z-?index|zindex|elevation|blur)$/i.test(n)&&t.shift();let r=t.length>0?t:e.split(`.`).slice(-1);return r.length===1&&/^(?:DEFAULT|default)$/i.test(r[0]??``)?`true`:D(r)}function k(e,t,r,a,o,s,c){if(!i(e))return;let l=o||se(e)||S(e),u=w(e,r),d=le(e)??s;if(re(e)){let r=T(e),i=t.join(`.`),o=E(i,u)??(l||u===`primitive`||u===`palette`?`color`:void 0),s=n(r,u),f=o&&x.has(o)||u===`color`||u===`palette`||u===`primitive`||u===`shadow`?s:h(r,u);c.push({path:i,type:u===`palette`||u===`primitive`?`color`:u,value:r,cssValue:s,tamaguiValue:f,category:o,tokenKey:o?O(i):void 0,description:ue(e),theme:a,...d?{childTheme:d}:{},...l?{primitive:!0}:{}});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||ae(n,r)||C(n,r)||ce(n,r)||k(r,[...t,n],u,a,l,d,c)}function de(e,t={}){let n=t.includeTypes?new Set(t.includeTypes):void 0,r=[];for(let t of a(e)){let e=t.id==="default"?void 0:t.id;k(t.tokens,[],void 0,e,!1,void 0,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const fe=/^\{([^{}]+)\}$/,A=/^(?:typography|type|text)$/i,pe=/^(?:font|fonts|font-family|fontFamily)$/i,me=/^(?:font-size|fontSize)$/i,he=/^(?:font-weight|fontWeight)$/i,ge=/^(?:line-height|lineHeight|leading)$/i,_e=/^(?:letter-spacing|letterSpacing|tracking)$/i,ve=/^(?:[a-z]{2}(?:-[A-Z]{2})?|cn|zh|jp|ja|kr|ko|ar|he|th|hi|ru|french|mandarin|chinese|japanese|korean|arabic|hebrew)$/i,ye=[`fontFamily`,`font-family`,`family`],be=[`fontSize`,`font-size`,`size`],xe=[`fontWeight`,`font-weight`,`weight`],Se=[`lineHeight`,`line-height`,`leading`],Ce=[`letterSpacing`,`letter-spacing`,`tracking`],we={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function j(e){if(typeof e==`string`)return fe.exec(e.trim())?.[1]?.trim()}function M(e,t){let n=j(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=j(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function N(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function Te(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function Ee(e){if(typeof e==`string`){let t=e.trim();return t.length===0||j(t)?void 0:t}if(Array.isArray(e)&&e.every(e=>typeof e==`string`)){let t=e.map(e=>e.trim()).filter(Boolean);return t.length>0?t.join(`, `):void 0}}function De(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function Oe(e){if(e==null)return;let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=/^(-?\d+(?:\.\d+)?)%$/.exec(t.trim());if(e)return Number.parseFloat(e[1])/100}}function ke(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||j(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function Ae(e,t){let n=Oe(e);if(n!=null)return De(t!=null&&n>0&&n<=4?n*t:n)}function P(e,t){return t.test(e.split(`.`)[0]??``)}function je(e){return e.split(`.`).filter(Boolean).at(-1)??e}function Me(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function Ne(e){let t=e.flatMap(e=>e.split(`-`)).filter(Boolean);return t.length===0?`body`:t.map((e,t)=>t===0?`${e.charAt(0).toLowerCase()}${e.slice(1)}`:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``)}function F(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return Ne([e])}}function Pe(e){return e.role?F(e.role):F(e.name)}function Fe(e){let t=Me(e,A);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&ve.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function Ie(e){return F(Me(e,pe)[0]??je(e))}function Le(e,t){let n=Me(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:Ne(n)}function Re(e){return e.type===`typography`&&i(e.value)}function ze(e){return e.category===`fontSize`||e.category===`fontWeight`||Be(e)||Ve(e)||He(e)||Ue(e)?!1:e.type===`fontFamily`||P(e.path,pe)}function Be(e){return e.category===`fontSize`||P(e.path,me)}function Ve(e){return e.category===`fontWeight`||e.type===`fontWeight`||P(e.path,he)}function He(e){return P(e.path,ge)}function Ue(e){return P(e.path,_e)}function We(e,t){if(!e.has(t))return t;let n=2,r=`${t}${n}`;for(;e.has(r);)n++,r=`${t}${n}`;return r}function Ge(e){let t=new Map;for(let n of Object.values(e)){let e=Pe(n);t.has(e)&&(e=We(t,Ne([n.name]))),t.set(e,n)}return t}function Ke(e,t,n){if(!e)return;let r=Object.values(e);if(r.length===0)return;if(n){let e=n.split(`.`).filter(Boolean).at(-1);if(e){let t=r.find(t=>t.role===e||t.name.toLowerCase()===e.toLowerCase());if(t)return t}}if(!t)return;let i=Te(t).toLowerCase();return r.find(e=>f(e).toLowerCase()===i||e.title.toLowerCase()===i||e.name.toLowerCase()===i)}function qe(e){let t=new Map;for(let n of e.files){let e=String(n.weight??400),r=c(n.path).replace(/\.[^.]+$/,``),i=t.get(e)??{};n.style===`italic`||n.style===`oblique`?i.italic=r:i.normal=r,t.set(e,i)}if(t.size!==0)return`{\n${[...t.entries()].toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0})).map(([e,t])=>{let n=[];return t.normal&&n.push(`normal: ${m(t.normal)}`),t.italic&&n.push(`italic: ${m(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
- `)}\n }`}function Je(e,t){return{...e,webFamily:d(t),nativeFamily:f(t),face:t.source===`local`?qe(t):e.face}}function I(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Ye(e,t){return{...e,webFamily:t,nativeFamily:Te(t)}}const Xe=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function L(e,t){let n={true:e},r=j(t);if(!r)return n;let i=Le(r,Xe);return i&&i!==`true`&&(n[i]=e),n}function Ze(e){return Object.keys(e.size).length>0?e:{...e,size:{...we}}}function Qe(e,t,n,r){if(!i(t.value))return e;let a=N(t.value,ye),o=j(a),s=Ee(M(a,n)),c=Ke(r,s,o),l=e;c?l=Je(l,c):s&&(l=Ye(l,s));let u=N(t.value,be),d=Oe(M(u,n));d!=null&&(l={...l,size:L(d,u)});let f=N(t.value,xe),p=ke(M(f,n));p&&(l={...l,weight:L(p,f)});let m=N(t.value,Ce),h=Oe(M(m,n));h!=null&&(l={...l,letterSpacing:L(h,m)});let g=N(t.value,Se),_=Ae(M(g,n),l.size.true??d);return _!=null&&(l={...l,lineHeight:L(_,g)}),$e(l)}function $e(e){let t=Object.keys(e.size);if(t.length===0)return e;let n=e=>{let n=e.true??Object.values(e)[0];if(n==null)return e;let r={...e};for(let e of t)r[e]??=n;return r};return{...e,lineHeight:Object.keys(e.lineHeight).length>0?n(e.lineHeight):e.lineHeight,weight:Object.keys(e.weight).length>0?n(e.weight):e.weight,letterSpacing:Object.keys(e.letterSpacing).length>0?n(e.letterSpacing):e.letterSpacing}}function et(e,t){let n=new Map(e.map(e=>[e.path,e])),r=new Map,i=e=>{r.set(e.key,e)};if(t)for(let[e,n]of Ge(t))i(Je(I(e),n));for(let a of e){if(!ze(a)||Re(a))continue;let e=Ie(a.path),o=Ee(M(a.value,n)),s=r.get(e)??I(e),c=Ke(t,o,a.path),l=s;c?l=Je(l,c):(o&&s.webFamily===I(e).webFamily||o&&!r.has(e))&&(l=Ye(l,o)),i(l)}for(let a of e){if(!Re(a))continue;let e=Fe(a.path);i(Qe(r.get(e)??I(e),a,n,t))}return[...r.values()].map(Ze).toSorted((e,t)=>e.key.localeCompare(t.key))}function tt(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}function R(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${tt(e)}: ${m(t)}`).join(`,
4
- `)}\n${r}}`}function nt(e,t){let n=`${e.split(`-`).filter(Boolean).map((e,t)=>t===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``).replaceAll(/[^\w$]/g,``)||`font${t}`}Font`;return/^[A-Z_$]/i.test(n)?n:`font${t}`}function rt(e,t){let n=m(e.webFamily),r=m(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${R(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${R(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${R(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${R(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
- `)}\n});`}function it(e){return`# Installing Tamagui Config
2
+ `,`\\n`).replaceAll(`\r`,`\\r`)}function m(e){return typeof e==`string`?`"${p(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function h(e,t){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if(i(e)&&typeof e.value==`number`&&typeof e.unit==`string`){let t=e.unit.toLowerCase();return t===`px`||t===``?e.value:t===`rem`?e.value*16:`${e.value}${e.unit}`}if(typeof e==`string`){let t=/^(-?\d+(?:\.\d+)?)px$/i.exec(e.trim());if(t)return Number(t[1]);let n=/^(-?\d+(?:\.\d+)?)rem$/i.exec(e.trim());if(n)return Number(n[1])*16;let r=Number(e);return!Number.isNaN(r)&&e.trim()!==``?r:e}return r(e,t)}const g=/^(?:font-size|fontSize)(?:\.|$)/i,_=/^(?:font-weight|fontWeight)(?:\.|$)/i,v=/^shadow(?:\.|$)/i,y=/^inset-shadow(?:\.|$)/i,b=/^drop-shadow(?:\.|$)/i,x=/^text-shadow(?:\.|$)/i,S=/^(?:blur|blur-?radius)(?:\.|$)/i,C=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),w=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:g,category:`fontSize`},{prefix:_,category:`fontWeight`},{prefix:b,category:`dropShadow`},{prefix:y,category:`insetShadow`},{prefix:x,category:`textShadow`},{prefix:v,category:`shadow`},{prefix:S,category:`blur`},{prefix:/^(?:space|spacing|gap)(?:\.|$)/i,category:`space`},{prefix:/^inset(?:\.|$)/i,category:`space`},{prefix:/^(?:size|sizing)(?:\.|$)/i,category:`size`},{prefix:/^(?:radius|rounded|radii)(?:\.|$)/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)(?:\.|$)/i,category:`zIndex`}];function T(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function E(e){return e===!0||e===`true`||e===1}function D(e){return E(e.palette)||E(e.$palette)?!0:O(e)===`palette`}function ee(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function te(e){return e===!0||e===`true`||e===1}function ne(e){return te(e.primitive)||te(e.$primitive)?!0:O(e)===`primitive`}function re(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function ie(e,t){return(e===`theme`||e===`$theme`)&&typeof t==`string`}function ae(e){if(typeof e.theme==`string`&&e.theme.length>0)return e.theme;if(typeof e.$theme==`string`&&e.$theme.length>0)return e.$theme}function oe(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function O(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function se(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 ce(e,t){for(let{prefix:t,category:n}of w)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return y.test(e)?`insetShadow`:b.test(e)?`dropShadow`:x.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(g.test(e))return`fontSize`;if(S.test(e))return`blur`;if(/(?:^|\.)(?:space|spacing|gap)(?:\.|$)/i.test(e)||/(?:^|\.)inset(?:\.|$)/i.test(e))return`space`;if(/radius|rounded/i.test(e))return`radius`;if(/z-?index|elevation/i.test(e))return`zIndex`;if(/(?:^|\.)(?:size|sizing)(?:\.|$)/i.test(e)||/(?:^|\.)(?:width|height)(?:\.|$)/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`;if(t===`fontWeight`||_.test(e))return`fontWeight`}function k(e){return e.flatMap(e=>e.split(/[-_\s]+/)).filter(Boolean).map((e,t)=>{if(/^\d/.test(e))return e;let n=e.toLowerCase();return t===0?n:`${n.charAt(0).toUpperCase()}${n.slice(1)}`}).join(``)}function le(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|primitive|space|spacing|gap|inset|shadow|inset-shadow|drop-shadow|text-shadow|font-size|fontSize|font-weight|fontWeight|size|sizing|radius|rounded|radii|z-?index|zindex|elevation|blur)$/i.test(n)&&t.shift();let r=t.length>0?t:e.split(`.`).slice(-1);return r.length===1&&/^(?:DEFAULT|default)$/i.test(r[0]??``)?`true`:k(r)}function ue(e,t,r,a,o,s,c){if(!i(e))return;let l=o||ne(e)||D(e),u=O(e,r),d=ae(e)??s;if(T(e)){let r=se(e),i=t.join(`.`),o=ce(i,u)??(l||u===`primitive`||u===`palette`?`color`:void 0),s=n(r,u),f=o&&C.has(o)||u===`color`||u===`palette`||u===`primitive`||u===`shadow`?s:h(r,u);c.push({path:i,type:u===`palette`||u===`primitive`?`color`:u,value:r,cssValue:s,tamaguiValue:f,category:o,tokenKey:o?le(i):void 0,description:oe(e),theme:a,...d?{childTheme:d}:{},...l?{primitive:!0}:{}});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||ee(n,r)||re(n,r)||ie(n,r)||ue(r,[...t,n],u,a,l,d,c)}function de(e,t={}){let n=t.includeTypes?new Set(t.includeTypes):void 0,r=[];for(let t of a(e)){let e=t.id==="default"?void 0:t.id;ue(t.tokens,[],void 0,e,!1,void 0,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const fe=/^\{([^{}]+)\}$/,pe=/^(?:typography|type|text)$/i,me=/^(?:font|fonts|font-family|fontFamily)$/i,he=/^(?:font-size|fontSize)$/i,ge=/^(?:font-weight|fontWeight)$/i,_e=/^(?:line-height|lineHeight|leading)$/i,ve=/^(?:letter-spacing|letterSpacing|tracking)$/i,ye=/^(?:[a-z]{2}(?:-[A-Z]{2})?|cn|zh|jp|ja|kr|ko|ar|he|th|hi|ru|french|mandarin|chinese|japanese|korean|arabic|hebrew)$/i,be=[`fontFamily`,`font-family`,`family`],xe=[`fontSize`,`font-size`,`size`],Se=[`fontWeight`,`font-weight`,`weight`],Ce=[`lineHeight`,`line-height`,`leading`],we=[`letterSpacing`,`letter-spacing`,`tracking`],Te={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function A(e){if(typeof e==`string`)return fe.exec(e.trim())?.[1]?.trim()}function j(e,t){let n=A(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=A(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function M(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function N(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function P(e){if(typeof e==`string`){let t=e.trim();return t.length===0||A(t)?void 0:t}if(Array.isArray(e)&&e.every(e=>typeof e==`string`)){let t=e.map(e=>e.trim()).filter(Boolean);return t.length>0?t.join(`, `):void 0}}function Ee(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function F(e){if(e==null)return;let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=/^(-?\d+(?:\.\d+)?)%$/.exec(t.trim());if(e)return Number.parseFloat(e[1])/100}}function De(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||A(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function Oe(e,t){let n=F(e);if(n!=null)return Ee(t!=null&&n>0&&n<=4?n*t:n)}function I(e,t){return t.test(e.split(`.`)[0]??``)}function ke(e){return e.split(`.`).filter(Boolean).at(-1)??e}function L(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function R(e){let t=e.flatMap(e=>e.split(`-`)).filter(Boolean);return t.length===0?`body`:t.map((e,t)=>t===0?`${e.charAt(0).toLowerCase()}${e.slice(1)}`:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``)}function z(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return R([e])}}function Ae(e){return e.role?z(e.role):z(e.name)}function je(e){let t=L(e,pe);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&ye.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function Me(e){return z(L(e,me)[0]??ke(e))}function Ne(e,t){let n=L(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:R(n)}function Pe(e){return e.type===`typography`&&i(e.value)}function Fe(e){return e.category===`fontSize`||e.category===`fontWeight`||Ie(e)||Le(e)||Re(e)||ze(e)?!1:e.type===`fontFamily`||I(e.path,me)}function Ie(e){return e.category===`fontSize`||I(e.path,he)}function Le(e){return e.category===`fontWeight`||e.type===`fontWeight`||I(e.path,ge)}function Re(e){return I(e.path,_e)}function ze(e){return I(e.path,ve)}function Be(e,t){if(!e.has(t))return t;let n=2,r=`${t}${n}`;for(;e.has(r);)n++,r=`${t}${n}`;return r}function Ve(e){let t=new Map;for(let n of Object.values(e)){let e=Ae(n);t.has(e)&&(e=Be(t,R([n.name]))),t.set(e,n)}return t}function He(e,t,n){if(!e)return;let r=Object.values(e);if(r.length===0)return;if(n){let e=n.split(`.`).filter(Boolean).at(-1);if(e){let t=r.find(t=>t.role===e||t.name.toLowerCase()===e.toLowerCase());if(t)return t}}if(!t)return;let i=N(t).toLowerCase();return r.find(e=>f(e).toLowerCase()===i||e.title.toLowerCase()===i||e.name.toLowerCase()===i)}function Ue(e){let t=new Map;for(let n of e.files){let e=String(n.weight??400),r=c(n.path).replace(/\.[^.]+$/,``),i=t.get(e)??{};n.style===`italic`||n.style===`oblique`?i.italic=r:i.normal=r,t.set(e,i)}if(t.size!==0)return`{\n${[...t.entries()].toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0})).map(([e,t])=>{let n=[];return t.normal&&n.push(`normal: ${m(t.normal)}`),t.italic&&n.push(`italic: ${m(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
+ `)}\n }`}function B(e,t){return{...e,webFamily:d(t),nativeFamily:f(t),face:t.source===`local`?Ue(t):e.face}}function V(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function We(e,t){return{...e,webFamily:t,nativeFamily:N(t)}}const Ge=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function H(e,t){let n={true:e},r=A(t);if(!r)return n;let i=Ne(r,Ge);return i&&i!==`true`&&(n[i]=e),n}function Ke(e){return Object.keys(e.size).length>0?e:{...e,size:{...Te}}}function qe(e,t,n,r){if(!i(t.value))return e;let a=M(t.value,be),o=A(a),s=P(j(a,n)),c=He(r,s,o),l=e;c?l=B(l,c):s&&(l=We(l,s));let u=M(t.value,xe),d=F(j(u,n));d!=null&&(l={...l,size:H(d,u)});let f=M(t.value,Se),p=De(j(f,n));p&&(l={...l,weight:H(p,f)});let m=M(t.value,we),h=F(j(m,n));h!=null&&(l={...l,letterSpacing:H(h,m)});let g=M(t.value,Ce),_=Oe(j(g,n),l.size.true??d);return _!=null&&(l={...l,lineHeight:H(_,g)}),Je(l)}function Je(e){let t=Object.keys(e.size);if(t.length===0)return e;let n=e=>{let n=e.true??Object.values(e)[0];if(n==null)return e;let r={...e};for(let e of t)r[e]??=n;return r};return{...e,lineHeight:Object.keys(e.lineHeight).length>0?n(e.lineHeight):e.lineHeight,weight:Object.keys(e.weight).length>0?n(e.weight):e.weight,letterSpacing:Object.keys(e.letterSpacing).length>0?n(e.letterSpacing):e.letterSpacing}}function Ye(e,t){let n=new Map(e.map(e=>[e.path,e])),r=new Map,i=e=>{r.set(e.key,e)};if(t)for(let[e,n]of Ve(t))i(B(V(e),n));for(let a of e){if(!Fe(a)||Pe(a))continue;let e=Me(a.path),o=P(j(a.value,n)),s=r.get(e)??V(e),c=He(t,o,a.path),l=s;c?l=B(l,c):(o&&s.webFamily===V(e).webFamily||o&&!r.has(e))&&(l=We(l,o)),i(l)}for(let a of e){if(!Pe(a))continue;let e=je(a.path);i(qe(r.get(e)??V(e),a,n,t))}return[...r.values()].map(Ke).toSorted((e,t)=>e.key.localeCompare(t.key))}function Xe(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}function U(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${Xe(e)}: ${m(t)}`).join(`,
4
+ `)}\n${r}}`}function Ze(e,t){let n=`${e.split(`-`).filter(Boolean).map((e,t)=>t===0?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``).replaceAll(/[^\w$]/g,``)||`font${t}`}Font`;return/^[A-Z_$]/i.test(n)?n:`font${t}`}function Qe(e,t){let n=m(e.webFamily),r=m(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${U(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${U(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${U(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${U(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
+ `)}\n});`}function $e(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
8
8
 
9
9
  ## Files
10
10
 
11
- - \`${e.outputPath}\` — Tamagui v5 config (\`createTamagui\` + \`createV5Theme\` with light and dark)
11
+ - \`${e.outputPath}\` — Tamagui config (\`createTamagui\` + \`createTheme\` with light, dark, and nested semantic themes)
12
12
 
13
13
  ## Setup
14
14
 
@@ -48,51 +48,42 @@ export function App() {
48
48
  ## Regenerate
49
49
 
50
50
  Re-run Razorwind generate when tokens change so \`${e.outputPath}\` stays aligned with your design system.
51
- `}const at=new Set([`default`,`light`,`theme`]),ot=/^base(?:[A-Z]\w*|[._-].+)?$/i,st=/^ring(?:\.|$)/i,ct=[`base`,`gray`,`grey`,`neutral`],lt={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function ut(e){return at.has(e)}function dt(e){return e===`dark`}function z(e,t){let n=new Map,r=t===`dark`?dt:ut;for(let t of e){let e=t.theme?.toLowerCase();(!e||ot.test(e))&&n.set(t.path,t)}for(let t of e){let e=t.theme?.toLowerCase();e&&r(e)&&n.set(t.path,t)}return[...n.values()]}function ft(e){return st.test(e.path)&&e.category===`shadow`}const pt=new Set([`fontSize`,`blur`]),mt=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function ht(e){return/^px\(-?\d/.test(e)}function gt(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?D([t]):e.tokenKey}return e.tokenKey??``}function _t(e,t){let n=q(e,t.byPath,t.byCssVar).tamaguiValue;if(e.category&&pt.has(e.category)&&typeof n==`number`)return`px(${n})`;if(typeof n==`string`){let r=Mt(n,t);return e.category===`dropShadow`?vt(r):r}return n}function vt(e){return e.includes(`drop-shadow(`)?e:e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.replace(/^inset\s+/i,``).split(/\s+/);if(t.length>=5){let[e,n,r]=t;return`drop-shadow(${e} ${n} ${r} ${t.slice(4).join(` `)})`}return`drop-shadow(${e.replace(/^inset\s+/i,``)})`}).join(` `)}function yt(e){let t={},n=W(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||ft(r))continue;let e=gt(r);if(!e)continue;let i=_t(r,n);if(typeof i==`string`&&jt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function B(e){let t=e.tokenKey??e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}${t[0]?.toUpperCase()??``}${t.slice(1)}`:t}function V(e){return`tokens.color.${e}.val`}function bt(e,t){let n={},r=W(e),i=W(t),a=(e,t)=>{if(!e.tokenKey)return;let r=K(e,t);typeof r==`string`&&r.length!==0&&r!==`[object Object]`&&(n[B(e)]=r)};for(let t of e)a(t,r);for(let e of t)a(e,i);return n}function xt(e){let t={};for(let n of e){if(!n.primitive)continue;let e=J(n);if(!e)continue;let r=B(n);if(!r)continue;let i=t[e.name]??{};i[`${e.name}${e.step}`]=r,t[e.name]=i}let n=Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=2));if(Object.keys(n).length>0)return n;let r={};for(let t of e){let e=J(t);if(!e)continue;let n=t.tokenKey??B(t);if(!n)continue;let i=r[e.name]??{};i[`${e.name}${e.step}`]=n,r[e.name]=i}return Object.fromEntries(Object.entries(r).filter(([,e])=>Object.keys(e).length>=3))}function H(e,t,n,r){let i=n[r];if(typeof i!=`string`)return!1;let a=K(e,t);return a!=null&&a===i}function St(e,t,n){let r=B(e);if(H(e,t,n,r))return V(r);if(e.tokenKey&&e.tokenKey!==r&&H(e,t,n,e.tokenKey))return V(e.tokenKey);let i=q(e,t.byPath,t.byCssVar),a=B(i);if(a!==r&&H(e,t,n,a))return V(a);if(i.tokenKey&&i.tokenKey!==a&&H(e,t,n,i.tokenKey))return V(i.tokenKey);if(i.primitive){let r=B(i);if(H(e,t,n,r))return V(r)}let o=K(e,t);if(o)return m(o)}function U(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=typeof t==`string`&&ht(t)?t:m(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${r}`}).join(`,
52
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function Ct(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`).join(`,
53
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function wt(e,t=2){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{\n${n}...theme\n${r}}`:`{\n${n}...theme,\n${i.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`).join(`,
54
- `)}\n${r}}`}const Tt=/^\{([^{}]+)\}$/,Et=/\{([^{}]+)\}/g,Dt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,Ot=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function W(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[s(e.path),e]))}}function kt(e){if(typeof e==`string`)return Tt.exec(e.trim())?.[1]?.trim()}function G(e){if(typeof e==`string`)return Dt.exec(e.trim())?.[1]}function At(e){return kt(e)!=null||G(e)!=null}function jt(e){return/var\(|\{[^{}]+\}/.test(e)}function K(e,t){let n=q(e,t.byPath,t.byCssVar);if(n.category!=null&&n.category!==`color`)return;let r=[n.cssValue,n.tamaguiValue];for(let e of r)if(typeof e==`string`&&e.length>0&&!At(e))return e}function Mt(e,t){return e.replace(Et,(e,n)=>{let r=t.byPath.get(n.trim());return r?K(r,t)??e:e}).replace(Ot,(e,n)=>{let r=t.byCssVar.get(n);return r?K(r,t)??e:e})}function q(e,t,n){let r=e,i=new Set;for(let e=0;e<8;e++){if(i.has(r.path))return r;i.add(r.path);let e=kt(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=G(r.value)??G(r.cssValue)??G(r.tamaguiValue);if(a){let e=n.get(a);if(!e||e.path===r.path)return r;r=e;continue}return r}return r}function Nt(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${m(e)}]`}function Pt(e,t){return t<1?e:t+1-e}function Ft(e,t){return e.length<2?!1:X(e,t).some((t,n)=>t!==e[n])}function It(e,t,n,r){let i=n[t];if(!i||r!==`dark`)return e;let a=$(i,t);return a.length<2||!Ft(a.map(([,e])=>e),r)?e:Pt(e,a[a.length-1][0])}function Lt(e,t,n,r){let i=J(e);if(!i)return;let a=It(i.step,i.name,n,r);if(t&&i.name.toLowerCase()===t.toLowerCase()||n[i.name])return`${i.name}${a}`}function Rt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function J(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=Rt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:D([r]),step:e}}if(!e.tokenKey)return;let r=/^([A-Z]+)(\d{1,3})$/i.exec(e.tokenKey);if(!r)return;let[,i=``,a=``]=r,o=Rt(Number(a));if(o!=null)return{name:i,step:o}}function zt(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function Bt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&zt(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function Y(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&zt(t,e.name,e.step,n.tamaguiValue)}let n=Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=2));return Object.keys(n).length>0?n:Bt(e)}function X(e,t){if(e.length<2)return[...e];let n=Wt(e[0]),r=Wt(e[e.length-1]);if(n==null||r==null||n===r)return[...e];let i=n>r;return t===`light`?i?[...e]:e.toReversed():i?e.toReversed():[...e]}function Z(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Vt(e){let t=e.startsWith(`#`)?e.slice(1):``;if((t.length===3||t.length===4)&&(t=[...t].map(e=>e+e).join(``)),t.length===8&&(t=t.slice(0,6)),t.length!==6||/[^0-9a-f]/i.test(t))return;let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return .2126*Z(n)+.7152*Z(r)+.0722*Z(i)}function Q(e){let t=e.trim();if(t.endsWith(`%`)){let e=Number.parseFloat(t);return Number.isFinite(e)?e/100:void 0}let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0}function Ht(e){return e>1?e/100:e}function Ut(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function Wt(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=Vt(t);if(n!=null)return n;let r=Ut(t,`oklch`);if(r?.[0]){let e=Q(r[0]);return e==null?void 0:Ht(e)}let i=Ut(t,`hsla?`);if(i?.[2]){let e=Q(i[2]);return e==null?void 0:Ht(e)}let a=Ut(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Q(a[0]),t=Q(a[1]),n=Q(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Z(r(e,a[0]))+.7152*Z(r(t,a[1]))+.0722*Z(r(n,a[2]))}}function $(e,t){let n=[],r=t.toLowerCase();for(let[i,a]of Object.entries(e)){if(!i.toLowerCase().startsWith(r))continue;let e=i.slice(t.length);/^\d+$/.test(e)&&n.push([Number(e),a])}return n.sort(([e],[t])=>e-t),n}function Gt(e,t,n){let r=$(e,t);if(r.length===0)return e;let i=X(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function Kt(e,t,n){let r=t[n];return e.find(([,e])=>e===r)?.[0]??e[n]?.[0]??n+1}function qt(e,t,n,r){let i=$(e,n);if(i.length===0)return{};let a=X(i.map(([,e])=>e),r),o={};for(let[e,[r]]of i.entries()){let s=t[`${n}${Kt(i,a,e)}`];s&&(o[`${n}${r}`]=V(s))}return o}function Jt(e,t,n,r){let i=$(e,n);if(i.length<2)return;let a=X(i.map(([,e])=>e),r),o=[];for(let[e]of i.entries()){let r=t[`${n}${Kt(i,a,e)}`];if(!r)return;o.push(V(r))}let s=[...o],c=s.at(-1);if(c!=null){for(;s.length<12;)s.push(c);return`[${s.join(`,`)}]`}}function Yt(e,t){return $(e,t).length>=2}function Xt(e){if(e.length>=12)return e.slice(0,12);let t=[...e],n=t.at(-1);if(n==null)return t;for(;t.length<12;)t.push(n);return t}function Zt(e,t,n){let r=$(e,t);if(!(r.length<2))return Xt(X(r.map(([,e])=>e),n))}function Qt(e){let t=new Map;for(let n of e){let e=n.childTheme?.trim();if(!e)continue;let r=e.toLowerCase();ut(r)||dt(r)||t.has(r)||t.set(r,D([e]))}return[...t.values()].toSorted((e,t)=>e.localeCompare(t))}function $t(e,t){let n=t.toLowerCase(),r=e.split(/(?=[A-Z])/).filter(Boolean).filter(e=>e.toLowerCase()!==n);if(r.length!==0)return D(r)}function en(e){return e.toLowerCase()===`base`}function tn(e){let t=e.split(/(?=[A-Z])/).filter(Boolean),n=t.at(-1)?.toLowerCase();if((n===`primary`||n===`secondary`||n===`tertiary`)&&!(t.length<2))return{role:D(t.slice(0,-1)),rank:n}}function nn(e){return e.category===`color`&&!e.primitive&&!!e.tokenKey}function rn(e,t,n){let r=new Map,i={};for(let a of e){if(!nn(a)||!a.tokenKey)continue;let e=a.childTheme?.toLowerCase();if(e&&e!==`base`)continue;let o=St(a,t,n);if(!o)continue;let s=tn(a.tokenKey);if(s){let e=r.get(s.role)??{};e[s.rank]=o,r.set(s.role,e);continue}if(e===`base`){let e=$t(a.tokenKey,`base`);e&&(i[e]=o)}}let a={...i};for(let[e,t]of r){t.primary&&(a[e]=t.primary);let n=t.secondary??t.tertiary;n&&(a[`${e}Subtle`]=n)}return a}function an(e,t){let n=W(e),r={};for(let i of Qt(e)){if(en(i)){let a=rn(e,n,t);Object.keys(a).length>0&&(r[i]=a);continue}let a={},o=i.toLowerCase();for(let r of e){if(!nn(r)||r.childTheme?.toLowerCase()!==o)continue;let e=$t(r.tokenKey,i);if(!e)continue;let s=St(r,n,t);s&&(a[e]=s)}Object.keys(a).length>0&&(r[i]=a)}return r}function on(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of ct){let r=n.get(e);if(!r)continue;let i=Zt(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function sn(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=Y(z(t,`light`)),r=Y(z(t,`dark`)),i=on(n,`light`),a=on(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function cn(e,t,n){let r=Y(e),{byPath:i,byCssVar:a}=W(e),o={};for(let s of e){if(s.category!==`color`||!s.tokenKey||s.primitive||/^[A-Z]+\d{1,3}$/i.test(s.tokenKey)&&r[s.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=q(s,i,a),c=Lt(e,t,r,n);if(c){o[s.tokenKey]=Nt(c);continue}let l=e.tamaguiValue;At(l)||At(e.cssValue)||(typeof l==`string`||typeof l==`number`)&&(o[s.tokenKey]=m(l))}return o}function ln(e){return e.replaceAll(`\\`,`\\\\`).replaceAll("`","\\`").replaceAll("${","\\${")}function un(e,t,n,r,i){let a=q(e,t.byPath,t.byCssVar),o=Lt(a,n,r,i);if(o)return{kind:`theme`,property:o};let s=K(a,t);if(s)return{kind:`text`,value:s}}function dn(e,t,n,r,i){let a=[],o=/\{([^{}]+)\}|var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g,s=0;for(let c of e.matchAll(o)){let o=c.index??0;o>s&&a.push({kind:`text`,value:e.slice(s,o)});let l=c[1]?t.byPath.get(c[1].trim()):c[2]?t.byCssVar.get(c[2]):void 0;if(!l)return;let u=un(l,t,n,r,i);if(!u)return;a.push(u),s=o+c[0].length}return s<e.length&&a.push({kind:`text`,value:e.slice(s)}),a}function fn(e){return e.some(e=>e.kind===`theme`)?`\`${e.map(e=>e.kind===`theme`?`\${${Nt(e.property)}}`:ln(e.value)).join(``)}\``:m(e.map(e=>e.kind===`text`?e.value:``).join(``))}function pn(e,t,n){let r=W(e),i=Y(e.filter(e=>e.category===`color`)),a={};for(let o of e){if(!ft(o)||!o.tokenKey)continue;let e=typeof o.tamaguiValue==`string`?o.tamaguiValue:o.cssValue;if(typeof e!=`string`||e.length===0)continue;let s=dn(e,r,t,i,n);s&&(a[o.tokenKey]=fn(s))}return a}function mn(e,t,n,r,i){let a=new Set([...Object.keys(e),...Object.keys(t)]);if(a.size===0)return;let o=[];for(let s of[...a].toSorted((e,t)=>e.localeCompare(t))){let a=e[s]??t[s]??{},c=t[s]??e[s]??{};if(Object.keys(a).length===0||Object.keys(c).length===0)continue;let l=Yt(a,s)||Yt(c,s),u,d;if(i&&l?(u=qt(a,n[s]??r[s]??{},s,`light`),d=qt(c,r[s]??n[s]??{},s,`dark`)):l?(u=Gt(a,s,`light`),d=Gt(c,s,`dark`)):(u=a,d=c),Object.keys(u).length===0||Object.keys(d).length===0)continue;let f=l&&!i?(e,t)=>U(e,t):Ct;o.push(` ${s}: {
55
- light: ${f(u,8)},
56
- dark: ${f(d,8)}
57
- }`)}if(o.length!==0)return`{\n${o.join(`,
58
- `)}\n }`}function hn(e){let t=new Set;for(let n of e)for(let e of Object.values(n)){for(let n of e.matchAll(/theme\.([A-Z_$][\w$]*)/gi))n[1]&&t.add(n[1]);for(let n of e.matchAll(/theme\[(['"])(.+?)\1\]/g))t.add(n[2])}return[...t]}function gn(e,t){let n=new Set;for(let r of[e,t])for(let e of Object.values(r))for(let t of Object.keys(e))n.add(t);return[...n]}function _n(e,t){let n=Math.max(e?.length??0,t?.length??0);if(n===0)return[];let r=[];for(let e=1;e<=Math.min(n,12);e++)r.push(`base${e}`);return r}function vn(e){let t=new Set;for(let n of Object.keys(e.lightSemantic))t.add(n);for(let n of Object.keys(e.darkSemantic))t.add(n);for(let n of hn([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of gn(e.lightScales,e.darkScales))t.add(n);for(let n of _n(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function yn(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: string;`}function bn(e,t){if(e.length!==0)return[`/**`,` * Theme values available on \`useTheme()\` and \`$\` style props for the ${t.specName||`design system`}.`,` *`," * Derived from design tokens mapped by `createV5Theme` and `getTheme`.",` *`,` * @see https://tamagui.dev/docs/guides/theme-builder#gettheme`,` */`,`export interface AppTheme {`,...e.map(yn),`}`,``]}function xn(e,t,n={}){let r=e.fonts??{},i=n.useDefaultConfig===!0,a=n.animations??`css`,o=n.includeTypeAugmentation!==!1,s=t.filter(e=>e.category===`color`),c=z(s,`light`),l=z(s,`dark`),u=l.length>0?l:c,d=bt(c,l),f=Object.keys(d).length>0,p=xt(c),h=xt(u),g=Y(c),_=Y(u),ee={...g,...an(c,d)},te={..._,...an(u,d)},{lightPalette:v,darkPalette:y,lightBaseName:b,darkBaseName:x}=sn(t),ne=mn(ee,te,p,h,f),re=f&&b?Jt(g[b]??{},p[b]??{},b,`light`):void 0,ie=f&&x?Jt(_[x]??{},h[x]??{},x,`dark`):void 0,S=z(t,`light`),ae=z(t,`dark`),oe=l.length>0?ae:S,se=l.length>0?x:b,C={...cn(c,b,`light`),...pn(S,b,`light`)},ce={...cn(l.length>0?l:c,se,`dark`),...pn(oe,se,`dark`)},le=bn(vn({lightSemantic:C,darkSemantic:ce,lightScales:ee,darkScales:te,lightPalette:v,darkPalette:y}),{specName:e.name}),ue=yt(S),w=[];Object.keys(d).length>0&&w.push(` color: ${U(d,4)}`);for(let e of mt){let t=ue[e];t&&Object.keys(t).length>0&&w.push(` ${e}: ${U(t,4)}`)}let T=[];re?T.push(` lightPalette: ${re}`):v&&T.push(` lightPalette: ${m(v)}`),ie?T.push(` darkPalette: ${ie}`):y&&T.push(` darkPalette: ${m(y)}`),ne&&T.push(` childrenThemes: ${ne}`),(Object.keys(C).length>0||Object.keys(ce).length>0)&&T.push(` getTheme: ({ theme, scheme }: { theme: AppTheme; scheme: "light" | "dark" }) => {
59
- return scheme === "dark"
60
- ? ${wt(ce,8)}
61
- : ${wt(C,8)};
62
- }`);let E=[`import { isWeb } from '@tamagui/constants';`];i?E.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):E.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),a!==!1&&E.push(`import { animations } from "${lt[a]}";`),n.importConfig&&E.push(`import userConfig from "${n.importConfig}";`);let D=[`createTamagui`,`px`];w.length>0&&D.push(`createTokens`);let O=et(t,r);O.length>0&&D.push(`createFont`),E.push(`import { ${D.join(`, `)} } from "@tamagui/core";`);let k=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...E,``];w.length>0&&k.push(`const tokens = createTokens({`,w.join(`,
63
- `),`});`,``);let de=T.length>0?`createV5Theme({\n${T.join(`,
64
- `)}\n})`:`createV5Theme()`;k.push(`const themes = ${de};`,``);let fe=new Map;if(O.length>0)for(let[e,t]of O.entries()){let n=nt(t.key,e);fe.set(t.key,n),k.push(rt(t,n),``)}let A=[];if(i&&A.push(` ...defaultConfig`),a!==!1&&A.push(` animations`),w.length>0&&(i?A.push(` tokens: {
65
- ...defaultConfig.tokens,
66
- ...tokens,
67
- space: {
68
- ...defaultConfig.tokens.space,
69
- ...tokens.space
70
- },
71
- size: {
72
- ...defaultConfig.tokens.size,
73
- ...tokens.size
74
- },
75
- radius: {
76
- ...defaultConfig.tokens.radius,
77
- ...tokens.radius
78
- },
79
- zIndex: {
80
- ...defaultConfig.tokens.zIndex,
81
- ...tokens.zIndex
82
- }
83
- }`):A.push(` tokens`)),A.push(` themes`),fe.size>0){let e=[...fe.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`);i?A.push(` fonts: {
84
- ...defaultConfig.fonts,
85
- ${e.join(`,
51
+ `}const et=new Set([`default`,`light`,`theme`]),tt=/^base(?:[A-Z]\w*|[._-].+)?$/i,nt=/^ring(?:\.|$)/i,rt={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function it(e){return et.has(e)}function at(e){return e===`dark`}function W(e,t){let n=new Map,r=t===`dark`?at:it;for(let t of e){let e=t.theme?.toLowerCase();(!e||tt.test(e))&&n.set(t.path,t)}for(let t of e){let e=t.theme?.toLowerCase();e&&r(e)&&n.set(t.path,t)}return[...n.values()]}function ot(e){return nt.test(e.path)&&e.category===`shadow`}const st=new Set([`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`]);function ct(e){return!e.primitive&&!!e.tokenKey&&(e.type===`shadow`||e.category!=null&&st.has(e.category))}const lt=new Set([`fontSize`,`blur`]),ut=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function dt(e){return/^px\(-?\d/.test(e)}function ft(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?k([t]):e.tokenKey}return e.tokenKey??``}function pt(e,t){let n=Q(e,t.byPath,t.byCssVar).tamaguiValue;if(e.category&&lt.has(e.category)&&typeof n==`number`)return`px(${n})`;if(typeof n==`string`){let r=Et(n,t);return e.category===`dropShadow`?mt(r):r}return n}function mt(e){return e.includes(`drop-shadow(`)?e:e.split(`,`).map(e=>e.trim()).filter(Boolean).map(e=>{let t=e.replace(/^inset\s+/i,``).split(/\s+/);if(t.length>=5){let[e,n,r]=t;return`drop-shadow(${e} ${n} ${r} ${t.slice(4).join(` `)})`}return`drop-shadow(${e.replace(/^inset\s+/i,``)})`}).join(` `)}function ht(e){let t={},n=Y(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||ot(r))continue;let e=ft(r);if(!e)continue;let i=pt(r,n);if(typeof i==`string`&&Tt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function G(e){let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}${t[0]?.toUpperCase()??``}${t.slice(1)}`:t}function K(e){return`tokens.color.${e}.val`}function gt(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||wt(r)||r===`[object Object]`||(n[e]=r)};for(let t of e)t.tokenKey&&(t.primitive?r(G(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(G(e),e);return n}function q(e,t,n,r){let i=n[r];if(typeof i!=`string`)return!1;let a=Z(e,t);return a!=null&&a===i}function _t(e,t,n){if(e.tokenKey&&q(e,t,n,e.tokenKey))return K(e.tokenKey);let r=Q(e,t.byPath,t.byCssVar);if(r.tokenKey&&q(e,t,n,r.tokenKey))return K(r.tokenKey);if(r.primitive){let i=G(r);if(q(e,t,n,i))return K(i)}let i=Z(e,t);if(i)return m(i)}function J(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=typeof t==`string`&&dt(t)?t:m(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${r}`}).join(`,
52
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}function vt(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return r.length===0?`{}`:`{\n${r.map(([e,t])=>`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`).join(`,
53
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}const yt=/^\{([^{}]+)\}$/,bt=/\{([^{}]+)\}/g,xt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,St=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function Y(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[s(e.path),e]))}}function Ct(e){if(typeof e==`string`)return yt.exec(e.trim())?.[1]?.trim()}function X(e){if(typeof e==`string`)return xt.exec(e.trim())?.[1]}function wt(e){return Ct(e)!=null||X(e)!=null}function Tt(e){return/var\(|\{[^{}]+\}/.test(e)}function Z(e,t){let n=Q(e,t.byPath,t.byCssVar);if(n.category!=null&&n.category!==`color`)return;let r=[n.cssValue,n.tamaguiValue];for(let e of r)if(typeof e==`string`&&e.length>0&&!wt(e))return e}function Et(e,t){return e.replace(bt,(e,n)=>{let r=t.byPath.get(n.trim());return r?Z(r,t)??e:e}).replace(St,(e,n)=>{let r=t.byCssVar.get(n);return r?Z(r,t)??e:e})}function Q(e,t,n){let r=e,i=new Set;for(let e=0;e<8;e++){if(i.has(r.path))return r;i.add(r.path);let e=Ct(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=X(r.value)??X(r.cssValue)??X(r.tamaguiValue);if(a){let e=n.get(a);if(!e||e.path===r.path)return r;r=e;continue}return r}return r}function Dt(e,t){let n=t.toLowerCase(),r=e.split(/(?=[A-Z])/).filter(Boolean).filter(e=>e.toLowerCase()!==n);if(r.length!==0)return k(r)}function Ot(e){return e.category===`color`&&!e.primitive&&!!e.tokenKey}function kt(e){return ct(e)&&k(e.path.split(`.`).filter(Boolean))||e.tokenKey}function At(e){let t=e.toLowerCase();return it(t)||at(t)}function jt(e,t,n){let r=kt(t);if(!r)return;let i=t.childTheme?.trim();if(!i||At(i)){e.base[r]=n;return}let a=k([i]),o=Dt(r,a);if(!o)return;let s=e.children[a]??{};s[o]=n,e.children[a]=s}function Mt(e,t){let n=typeof e.tamaguiValue==`string`?e.tamaguiValue:e.cssValue;if(typeof n!=`string`||n.length===0)return;let r=Et(n,t);return r.length===0||Tt(r)?void 0:m(e.category===`dropShadow`?mt(r):r)}function Nt(e,t){let n=Y(e),r={base:{},children:{}};for(let i of e){if(Ot(i)){let e=_t(i,n,t);e&&jt(r,i,e);continue}if(!ct(i))continue;let e=Mt(i,n);if(!e)continue;let a=i.childTheme?.trim();(a&&!At(a)||ot(i))&&jt(r,i,e)}return r}function Pt(e){let t=new Set;for(let n of e){for(let e of Object.keys(n.base))t.add(e);for(let e of Object.values(n.children))for(let n of Object.keys(e))t.add(n)}return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Ft(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: string;`}function It(e,t){if(e.length!==0)return[`/**`,` * Theme values available on \`useTheme()\` and \`$\` style props for the ${t.specName||`design system`}.`,` *`," * Derived from semantic color tokens mapped by `createTheme`. Nested"," * themes (`light_primary`, `dark_danger`, …) come from each token's"," * `theme` / `$theme` property.",` *`,` * @see https://tamagui.dev/docs/intro/themes`,` */`,`export interface AppTheme {`,...e.map(Ft),`}`,``]}function Lt(e,t){return`${e}_${t}`}function Rt(e){return Object.keys(e).length>0}function zt(e,t){return`const ${e} = createTheme(${vt(t,2)});`}function Bt(e,t,n){let r=[],i=[],a=(e,t,n=!1)=>{if(!n&&!Rt(t))return;r.push(zt(e,t));let a=/^[A-Z_$][\w$]*$/i.test(e)?e:m(e);i.push(a===e?` ${e}`:` ${a}: ${e}`)},o=[...new Set([...Object.keys(e.children),...Object.keys(t.children)])].toSorted((e,t)=>e.localeCompare(t));a(`light`,e.base,o.length>0),n&&a(`dark`,t.base,o.length>0);for(let r of o){let i=e.children[r]??t.children[r]??{};if(a(Lt(`light`,r),i),n){let n=t.children[r]??e.children[r]??{};a(Lt(`dark`,r),n)}}return i.length===0?{statements:[],hasThemes:!1}:(r.push(``,`const themes = {\n${i.join(`,
54
+ `)}\n};`),{statements:r,hasThemes:!0})}function Vt(e,t,n={}){let r=e.fonts??{},i=n.useDefaultConfig===!0,a=n.animations??`css`,o=n.includeTypeAugmentation!==!1,s=t.filter(e=>e.category===`color`),c=W(s,`light`),l=W(s,`dark`),u=l.length>0,d=gt(c,l),f=W(t,`light`),p=u?W(t,`dark`):f,h=Nt(f,d),g=Nt(p,d),{statements:_,hasThemes:v}=Bt(h,g,u),y=It(Pt(u?[h,g]:[h]),{specName:e.name}),b=ht(f),x=[];Object.keys(d).length>0&&x.push(` color: ${J(d,4)}`);for(let e of ut){let t=b[e];t&&Object.keys(t).length>0&&x.push(` ${e}: ${J(t,4)}`)}let S=[`import { isWeb } from '@tamagui/constants';`];i&&S.push(`import { defaultConfig } from "@tamagui/config/v5";`),a!==!1&&S.push(`import { animations } from "${rt[a]}";`),n.importConfig&&S.push(`import userConfig from "${n.importConfig}";`);let C=[`createTamagui`,`px`];x.length>0&&C.push(`createTokens`),v&&C.push(`createTheme`);let w=Ye(t,r);w.length>0&&C.push(`createFont`),S.push(`import { ${C.join(`, `)} } from "@tamagui/core";`);let T=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/configuration`,` * @see https://tamagui.dev/docs/intro/themes`,` */`,``,...S,``];x.length>0&&T.push(`const tokens = createTokens({`,x.join(`,
55
+ `),`});`,``),_.length>0&&T.push(..._,``);let E=new Map;if(w.length>0)for(let[e,t]of w.entries()){let n=Ze(t.key,e);E.set(t.key,n),T.push(Qe(t,n),``)}let D=[];if(i&&D.push(` ...defaultConfig`),a!==!1&&D.push(` animations`),x.length>0&&(i?D.push(` tokens: {
56
+ ...defaultConfig.tokens,
57
+ ...tokens,
58
+ space: {
59
+ ...defaultConfig.tokens.space,
60
+ ...tokens.space
61
+ },
62
+ size: {
63
+ ...defaultConfig.tokens.size,
64
+ ...tokens.size
65
+ },
66
+ radius: {
67
+ ...defaultConfig.tokens.radius,
68
+ ...tokens.radius
69
+ },
70
+ zIndex: {
71
+ ...defaultConfig.tokens.zIndex,
72
+ ...tokens.zIndex
73
+ }
74
+ }`):D.push(` tokens`)),v&&D.push(` themes`),E.size>0){let e=[...E.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`);i?D.push(` fonts: {
75
+ ...defaultConfig.fonts,
76
+ ${e.join(`,
86
77
  `)}
87
- }`):A.push(` fonts: {
88
- ${e.join(`,
78
+ }`):D.push(` fonts: {
79
+ ${e.join(`,
89
80
  `)}
90
- }`)}return n.shorthands&&A.push(` shorthands: ${U(n.shorthands,4)}`),n.media&&A.push(` media: ${m(n.media)}`),n.defaultFont&&A.push(` defaultFont: ${m(n.defaultFont)}`),k.push(``,...le??[],`/**
91
- * The Tamagui v5 config for the ${e.name||`design system`}.
81
+ }`)}return n.shorthands&&D.push(` shorthands: ${J(n.shorthands,4)}`),n.media&&D.push(` media: ${m(n.media)}`),n.defaultFont&&D.push(` defaultFont: ${m(n.defaultFont)}`),T.push(``,...y??[],`/**
82
+ * The Tamagui config for the ${e.name||`design system`}.
92
83
  *
93
- * @see https://tamagui.dev/docs/core/config-v5
84
+ * @see https://tamagui.dev/docs/core/configuration
94
85
  */
95
- export const config = createTamagui({`,A.join(`,
96
- `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&k.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),k.push(`export default config;`,``),k.join(`
97
- `)}function Sn(e,n={}){let r=e.tokens&&Object.keys(e.tokens).length>0,i=e.fonts&&Object.keys(e.fonts).length>0;if(!r&&!i)return{};let a=r?de(e.tokens,n):[];if(a.length===0&&!i)return{};let o=n.outputPath??`tamagui.config.ts`,s=xn(e,a,n),c=n.installGuide??it({outputPath:o}),d=u(l(o),`INSTALL.md`);return{[o]:t(o,s,{name:`razorwind-tamagui`},!1,`typescript`),[d]:t(d,c,{name:`razorwind-tamagui`},!1,`markdown`)}}var Cn=e(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Sn(t,e??{})}));export{Y as collectColorScales,et as collectTamaguiFonts,Wt as colorLightness,Cn as default,de as flattenTokens,Pt as flipPaletteStep,nt as fontVarName,n as formatTokenValue,Sn as generateTamaguiConfig,S as isPaletteGroup,X as orderPaletteForScheme,it as renderInstallMd,xn as renderTamaguiConfig,E as resolveTokenCategory,a as resolveTokenSets,F as tamaguiFontKeyFromRole,D as toCamelCaseKey,o as toCssVar,h as toTamaguiValue,O as toTokenKey,Fe as typographyFontKey};
86
+ export const config = createTamagui({`,D.join(`,
87
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&T.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),T.push(`export default config;`,``),T.join(`
88
+ `)}function $(e,n={}){let r=e.tokens&&Object.keys(e.tokens).length>0,i=e.fonts&&Object.keys(e.fonts).length>0;if(!r&&!i)return{};let a=r?de(e.tokens,n):[];if(a.length===0&&!i)return{};let o=n.outputPath??`tamagui.config.ts`,s=Vt(e,a,n),c=n.installGuide??$e({outputPath:o}),d=u(l(o),`INSTALL.md`);return{[o]:t(o,s,{name:`razorwind-tamagui`},!1,`typescript`),[d]:t(d,c,{name:`razorwind-tamagui`},!1,`markdown`)}}var Ht=e(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>$(t,e??{})}));export{Ye as collectTamaguiFonts,Ht as default,de as flattenTokens,Ze as fontVarName,n as formatTokenValue,$ as generateTamaguiConfig,D as isPaletteGroup,$e as renderInstallMd,Vt as renderTamaguiConfig,ce as resolveTokenCategory,a as resolveTokenSets,z as tamaguiFontKeyFromRole,k as toCamelCaseKey,o as toCssVar,h as toTamaguiValue,le as toTokenKey,je as typographyFontKey};
98
89
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/tamagui",
3
- "version": "0.0.53",
3
+ "version": "0.0.55",
4
4
  "type": "module",
5
5
  "description": "Razorwind plugin that creates Tamagui theme tokens from Razorwind design tokens.",
6
6
  "repository": {
@@ -85,7 +85,7 @@
85
85
  "dependencies": {
86
86
  "@power-plant/core": "^0.0.91",
87
87
  "@power-plant/dtcg-schema": "^0.0.1",
88
- "@razorwind/core": "^0.0.57",
88
+ "@razorwind/core": "^0.0.58",
89
89
  "@stryke/type-checks": "^0.6.44",
90
90
  "@stryke/helpers": "^0.10.51",
91
91
  "@stryke/string-format": "^0.17.53"
@@ -106,5 +106,5 @@
106
106
  "typescript": "^6.0.3"
107
107
  },
108
108
  "publishConfig": { "access": "public" },
109
- "gitHead": "5148c797bd51b06f175b3b3490f2dab971423f61"
109
+ "gitHead": "26304e8c6d927befb4b9ffdb28ae1cc7f88e45ca"
110
110
  }