@razorwind/tamagui 0.0.44 → 0.0.46

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,7 +1,7 @@
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"),i=require("@stryke/helpers/get-unique");function a(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function o(e){return typeof e==`string`?`"${a(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function s(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 c=/^(?:font-size|fontSize)(?:\.|$)/i,l=/^(?:font-weight|fontWeight)(?:\.|$)/i,u=/^shadow(?:\.|$)/i,d=/^inset-shadow(?:\.|$)/i,f=/^drop-shadow(?:\.|$)/i,p=/^text-shadow(?:\.|$)/i,m=/^(?:blur|blur-?radius)(?:\.|$)/i,h=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),ee=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:c,category:`fontSize`},{prefix:l,category:`fontWeight`},{prefix:f,category:`dropShadow`},{prefix:d,category:`insetShadow`},{prefix:p,category:`textShadow`},{prefix:u,category:`shadow`},{prefix:m,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:C(e)===`palette`}function te(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:C(e)===`primitive`}function x(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function S(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function C(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function w(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 T(e,t){for(let{prefix:t,category:n}of ee)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return d.test(e)?`insetShadow`:f.test(e)?`dropShadow`:p.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(c.test(e))return`fontSize`;if(m.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`||l.test(e))return`fontWeight`}function E(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 D(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`:E(r)}function O(e,n,r,i,a,o){if(!(0,t.isObject)(e))return;let c=a||b(e)||v(e),l=C(e,r);if(g(e)){let r=w(e),a=n.join(`.`),u=T(a,l)??(c||l===`primitive`||l===`palette`?`color`:void 0),d=(0,t.formatTokenValue)(r,l),f=u&&h.has(u)||l===`color`||l===`palette`||l===`primitive`||l===`shadow`?d:s(r,l);o.push({path:a,type:l===`palette`||l===`primitive`?`color`:l,value:r,cssValue:d,tamaguiValue:f,category:u,tokenKey:u?D(a):void 0,description:S(e),theme:i,primitive:c});return}for(let[t,r]of Object.entries(e))t.startsWith(`$`)&&t!==`$palette`&&t!==`$primitive`||te(t,r)||x(t,r)||O(r,[...n,t],l,i,c,o)}function k(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,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}const ne=/^\{([^{}]+)\}$/,re=/^(?:typography|type|text)$/i,ie=/^(?:font|fonts|font-family|fontFamily)$/i,ae=/^(?:font-size|fontSize)$/i,oe=/^(?:font-weight|fontWeight)$/i,se=/^(?:line-height|lineHeight|leading)$/i,ce=/^(?:letter-spacing|letterSpacing|tracking)$/i,le=/^(?:[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`],de=[`fontSize`,`font-size`,`size`],fe=[`fontWeight`,`font-weight`,`weight`],pe=[`lineHeight`,`line-height`,`leading`],me=[`letterSpacing`,`letter-spacing`,`tracking`],he={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 ne.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 ge(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function _e(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 ve(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function N(e){if(e==null)return;let t=s(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 ye(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=s(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function be(e,t){let n=N(e);if(n!=null)return ve(t!=null&&n>0&&n<=4?n*t:n)}function P(e,t){return t.test(e.split(`.`)[0]??``)}function xe(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`heading`:case`title`:case`display`:return`heading`;case`mono`:case`monospace`:case`caption`:case`code`:return`mono`;case`sans`:case`body`:case`serif`:return`body`;default:return I([e])}}function Se(e){return e.role?L(e.role):L(e.name)}function Ce(e){let t=F(e,re);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&le.test(n)&&!n.includes(`_`)?`${I(t.slice(0,-1))}_${n}`:I(t)}function we(e){return L(F(e,ie)[0]??xe(e))}function R(e,t){let n=F(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:I(n)}function Te(e){return e.type===`typography`&&(0,t.isObject)(e.value)}function Ee(e){return e.category===`fontSize`||e.category===`fontWeight`||De(e)||Oe(e)||ke(e)||Ae(e)?!1:e.type===`fontFamily`||P(e.path,ie)}function De(e){return e.category===`fontSize`||P(e.path,ae)}function Oe(e){return e.category===`fontWeight`||e.type===`fontWeight`||P(e.path,oe)}function ke(e){return P(e.path,se)}function Ae(e){return P(e.path,ce)}function je(e){let t=new Map;for(let n of Object.values(e)){let e=Se(n),r=t.get(e);(!r||n.role===e&&r.role!==e)&&t.set(e,n)}return t}function Me(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=ge(t).toLowerCase();return i.find(e=>(0,r.fontFamilyName)(e).toLowerCase()===a||e.title.toLowerCase()===a||e.name.toLowerCase()===a)}function Ne(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: ${o(t.normal)}`),t.italic&&n.push(`italic: ${o(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
- `)}\n }`}function Pe(e,t){return{...e,webFamily:(0,r.cssFontFamily)(t),nativeFamily:(0,r.fontFamilyName)(t),face:t.source===`local`?Ne(t):e.face}}function z(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Fe(e,t){return{...e,webFamily:t,nativeFamily:ge(t)}}function Ie(e,t){let n={},r=[],i={},a={};for(let o of e){if(De(o)){let e=N(j(o.value,t));e!=null&&(n[R(o.path,ae)]=e);continue}if(Oe(o)){let e=ye(j(o.value,t));e&&(i[R(o.path,oe)]=e);continue}if(Ae(o)){let e=N(j(o.value,t));e!=null&&(a[R(o.path,ce)]=e);continue}ke(o)&&r.push({key:R(o.path,se),value:j(o.value,t)})}let o=n.true??n.base??Object.values(n)[0],s={};for(let e of r){let t=n[e.key]??o,r=be(e.value,t);r!=null&&(s[e.key]=r)}return{size:n,lineHeight:s,weight:i,letterSpacing:a}}function B(e,t){return{...t,...e}}function V(e,t){return{...e,size:B(e.size,t.size),lineHeight:B(e.lineHeight,t.lineHeight),weight:B(e.weight,t.weight),letterSpacing:B(e.letterSpacing,t.letterSpacing)}}function Le(e){return Object.keys(e.size).length>0?e:{...e,size:{...he}}}function Re(e,n,r,i){if(!(0,t.isObject)(n.value))return e;let a=M(n.value,ue),o=A(a),s=_e(j(a,r)),c=Me(i,s,o),l=e;c?l=Pe(l,c):s&&(l=Fe(l,s));let u=N(j(M(n.value,de),r));u!=null&&(l={...l,size:{...l.size,true:u}});let d=ye(j(M(n.value,fe),r));d&&(l={...l,weight:{...l.weight,true:d}});let f=N(j(M(n.value,me),r));f!=null&&(l={...l,letterSpacing:{...l.letterSpacing,true:f}});let p=be(j(M(n.value,pe),r),l.size.true??u);return p!=null&&(l={...l,lineHeight:{...l.lineHeight,true:p}}),l}function ze(e,t){let n=new Map(e.map(e=>[e.path,e])),r=Ie(e,n),a=new Map,o=e=>{a.set(e.key,e)};if(t)for(let[e,n]of je(t))o(V(Pe(z(e),n),r));for(let i of e){if(!Ee(i)||Te(i))continue;let e=we(i.path),s=_e(j(i.value,n)),c=a.get(e)??z(e),l=Me(t,s,i.path),u=c;l?u=Pe(u,l):(s&&c.webFamily===z(e).webFamily||s&&!a.has(e))&&(u=Fe(u,s)),o(V(u,r))}for(let i of e){if(!Te(i))continue;let e=Ce(i.path);o(Re(V(a.get(e)??z(e),r),i,n,t))}return(0,i.getUniqueBy)([...a.values()].map(Le).toSorted((e,t)=>e.key.localeCompare(t.key)),e=>e.key)}function Be(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:o(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}${Be(e)}: ${o(t)}`).join(`,
4
- `)}\n${r}}`}function Ve(e,t){let n=`${e.replaceAll(/\W/g,``)||`font${t}`}Font`;return/^[A-Z_]/i.test(n)?n:`font${t}`}function He(e,t){let n=o(e.webFamily),r=o(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(`,
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 v(e){return _(e.palette)||_(e.$palette)?!0:C(e)===`palette`}function y(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function b(e){return e===!0||e===`true`||e===1}function ee(e){return b(e.primitive)||b(e.$primitive)?!0:C(e)===`primitive`}function x(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function S(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function C(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function w(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 T(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 E(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 D(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`:E(r)}function O(e,n,r,i,a,s){if(!(0,t.isObject)(e))return;let c=a||ee(e)||v(e),l=C(e,r);if(g(e)){let r=w(e),a=n.join(`.`),u=T(a,l)??(c||l===`primitive`||l===`palette`?`color`:void 0),d=(0,t.formatTokenValue)(r,l),f=u&&m.has(u)||l===`color`||l===`palette`||l===`primitive`||l===`shadow`?d:o(r,l);s.push({path:a,type:l===`palette`||l===`primitive`?`color`:l,value:r,cssValue:d,tamaguiValue:f,category:u,tokenKey:u?D(a):void 0,description:S(e),theme:i,primitive:c});return}for(let[t,r]of Object.entries(e))t.startsWith(`$`)&&t!==`$palette`&&t!==`$primitive`||y(t,r)||x(t,r)||O(r,[...n,t],l,i,c,s)}function k(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,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}const A=/^\{([^{}]+)\}$/,te=/^(?:typography|type|text)$/i,ne=/^(?:font|fonts|font-family|fontFamily)$/i,re=/^(?:font-size|fontSize)$/i,ie=/^(?:font-weight|fontWeight)$/i,ae=/^(?:line-height|lineHeight|leading)$/i,oe=/^(?:letter-spacing|letterSpacing|tracking)$/i,se=/^(?:[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,ce=[`fontFamily`,`font-family`,`family`],le=[`fontSize`,`font-size`,`size`],ue=[`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 j(e){if(typeof e==`string`)return A.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 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||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 ge(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function P(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 _e(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=o(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function ve(e,t){let n=P(e);if(n!=null)return ge(t!=null&&n>0&&n<=4?n*t:n)}function F(e,t){return t.test(e.split(`.`)[0]??``)}function ye(e){return e.split(`.`).filter(Boolean).at(-1)??e}function I(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function L(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 R(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return L([e])}}function be(e){return e.role?R(e.role):R(e.name)}function xe(e){let t=I(e,te);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&se.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function Se(e){return R(I(e,ne)[0]??ye(e))}function Ce(e,t){let n=I(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:L(n)}function we(e){return e.type===`typography`&&(0,t.isObject)(e.value)}function Te(e){return e.category===`fontSize`||e.category===`fontWeight`||Ee(e)||De(e)||Oe(e)||ke(e)?!1:e.type===`fontFamily`||F(e.path,ne)}function Ee(e){return e.category===`fontSize`||F(e.path,re)}function De(e){return e.category===`fontWeight`||e.type===`fontWeight`||F(e.path,ie)}function Oe(e){return F(e.path,ae)}function ke(e){return F(e.path,oe)}function Ae(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 je(e){let t=new Map;for(let n of Object.values(e)){let e=be(n);t.has(e)&&(e=Ae(t,L([n.name]))),t.set(e,n)}return t}function Me(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 Ne(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 z(e,t){return{...e,webFamily:(0,r.cssFontFamily)(t),nativeFamily:(0,r.fontFamilyName)(t),face:t.source===`local`?Ne(t):e.face}}function B(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Pe(e,t){return{...e,webFamily:t,nativeFamily:me(t)}}const Fe=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function V(e,t){let n={true:e},r=j(t);if(!r)return n;let i=Ce(r,Fe);return i&&i!==`true`&&(n[i]=e),n}function Ie(e){return Object.keys(e.size).length>0?e:{...e,size:{...pe}}}function Le(e,n,r,i){if(!(0,t.isObject)(n.value))return e;let a=N(n.value,ce),o=j(a),s=he(M(a,r)),c=Me(i,s,o),l=e;c?l=z(l,c):s&&(l=Pe(l,s));let u=N(n.value,le),d=P(M(u,r));d!=null&&(l={...l,size:V(d,u)});let f=N(n.value,ue),p=_e(M(f,r));p&&(l={...l,weight:V(p,f)});let m=N(n.value,fe),h=P(M(m,r));h!=null&&(l={...l,letterSpacing:V(h,m)});let g=N(n.value,de),_=ve(M(g,r),l.size.true??d);return _!=null&&(l={...l,lineHeight:V(_,g)}),Re(l)}function Re(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 ze(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 je(t))i(z(B(e),n));for(let a of e){if(!Te(a)||we(a))continue;let e=Se(a.path),o=he(M(a.value,n)),s=r.get(e)??B(e),c=Me(t,o,a.path),l=s;c?l=z(l,c):(o&&s.webFamily===B(e).webFamily||o&&!r.has(e))&&(l=Pe(l,o)),i(l)}for(let a of e){if(!we(a))continue;let e=xe(a.path);i(Le(r.get(e)??B(e),a,n,t))}return[...r.values()].map(Ie).toSorted((e,t)=>e.key.localeCompare(t.key))}function Be(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}${Be(e)}: ${a(t)}`).join(`,
4
+ `)}\n${r}}`}function Ve(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 He(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
5
  `)}\n});`}function Ue(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
@@ -48,19 +48,19 @@ 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 We=new Set([`default`,`light`,`theme`]),Ge=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ke=[`base`,`gray`,`grey`,`neutral`],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 U(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()]}const Xe=new Set([`fontSize`,`blur`]),Ze=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function Qe(e){return/^px\(-?\d/.test(e)}function $e(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?E([t]):e.tokenKey}return e.tokenKey??``}function et(e){return e.category&&Xe.has(e.category)&&typeof e.tamaguiValue==`number`?`px(${e.tamaguiValue})`:e.category===`dropShadow`&&typeof e.tamaguiValue==`string`?tt(e.tamaguiValue):e.tamaguiValue}function tt(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 nt(e){let t={};for(let n of e){if(!n.category||n.category===`color`||!n.tokenKey)continue;let e=$e(n);if(!e)continue;let r=t[n.category]??{};r[e]=et(n),t[n.category]=r}return t}function rt(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||K(r)||r===`[object Object]`||(n[e]=r)},i=e=>{let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}_${t}`:t};for(let t of e)t.tokenKey&&(t.primitive?r(i(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(i(e),e);return n}function W(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`&&Qe(t)?t:o(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:o(e)}: ${r}`}).join(`,
52
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function it(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:o(e)}: ${t}`).join(`,
53
- `)}\n${r}}`}const at=/^\{([^{}]+)\}$/,ot=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/;function st(e){if(typeof e==`string`)return at.exec(e.trim())?.[1]?.trim()}function G(e){if(typeof e==`string`)return ot.exec(e.trim())?.[1]}function K(e){return st(e)!=null||G(e)!=null}function ct(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=st(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 lt(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${o(e)}]`}function ut(e,t,n){let r=q(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function dt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function q(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=dt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:E([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=dt(Number(a));if(o!=null)return{name:i,step:o}}function ft(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function pt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=q(n);e&&ft(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function J(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=q(n);e&&ft(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:pt(e)}function Y(e,t){if(e.length<2)return[...e];let n=$(e[0]),r=$(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 X(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*X(n)+.7152*X(r)+.0722*X(i)}function Z(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 Q(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function $(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=mt(t);if(n!=null)return n;let r=Q(t,`oklch`);if(r?.[0]){let e=Z(r[0]);return e==null?void 0:ht(e)}let i=Q(t,`hsla?`);if(i?.[2]){let e=Z(i[2]);return e==null?void 0:ht(e)}let a=Q(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Z(a[0]),t=Z(a[1]),n=Z(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*X(r(e,a[0]))+.7152*X(r(t,a[1]))+.0722*X(r(n,a[2]))}}function gt(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 _t(e,t,n){let r=gt(e,t);if(r.length===0)return e;let i=Y(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}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 yt(e,t,n){let r=gt(e,t);if(!(r.length<2))return vt(Y(r.map(([,e])=>e),n))}function bt(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of Ke){let r=n.get(e);if(!r)continue;let i=yt(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function xt(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=J(U(t,`light`)),r=J(U(t,`dark`)),i=bt(n,`light`),a=bt(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function St(e,n){let r=J(e),i=new Map(e.map(e=>[e.path,e])),a=new Map(e.map(e=>[(0,t.toThemeCssVar)(e.path),e])),s={};for(let t of e){if(t.category!==`color`||!t.tokenKey||t.primitive||/^[A-Z]+\d{1,3}$/i.test(t.tokenKey)&&r[t.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=ct(t,i,a),c=ut(e,n,r);if(c){s[t.tokenKey]=lt(c);continue}let l=e.tamaguiValue;K(l)||K(e.cssValue)||(typeof l==`string`||typeof l==`number`)&&(s[t.tokenKey]=o(l))}return s}function Ct(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);if(n.size===0)return;let r=[];for(let i of[...n].toSorted((e,t)=>e.localeCompare(t))){let n=_t(e[i]??t[i]??{},i,`light`),a=_t(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
51
+ `}const We=new Set([`default`,`light`,`theme`]),Ge=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ke=[`base`,`gray`,`grey`,`neutral`],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 U(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()]}const Xe=new Set([`fontSize`,`blur`]),Ze=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function Qe(e){return/^px\(-?\d/.test(e)}function $e(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?E([t]):e.tokenKey}return e.tokenKey??``}function et(e,t){if(e.category&&Xe.has(e.category)&&typeof e.tamaguiValue==`number`)return`px(${e.tamaguiValue})`;if(typeof e.tamaguiValue==`string`){let n=pt(e.tamaguiValue,t);return e.category===`dropShadow`?tt(n):n}return e.tamaguiValue}function tt(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 nt(e){let t={},n=lt(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey)continue;let e=$e(r);if(!e)continue;let i=et(r,n);if(typeof i==`string`&&dt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function rt(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||K(r)||r===`[object Object]`||(n[e]=r)},i=e=>{let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}_${t}`:t};for(let t of e)t.tokenKey&&(t.primitive?r(i(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(i(e),e);return n}function W(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`&&Qe(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 it(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(`,
53
+ `)}\n${r}}`}const at=/^\{([^{}]+)\}$/,ot=/\{([^{}]+)\}/g,st=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,ct=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function lt(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[(0,t.toThemeCssVar)(e.path),e]))}}function ut(e){if(typeof e==`string`)return at.exec(e.trim())?.[1]?.trim()}function G(e){if(typeof e==`string`)return st.exec(e.trim())?.[1]}function K(e){return ut(e)!=null||G(e)!=null}function dt(e){return/var\(|\{[^{}]+\}/.test(e)}function ft(e,t){let n=mt(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&&!K(e))return e}function pt(e,t){return e.replace(ot,(e,n)=>{let r=t.byPath.get(n.trim());return r?ft(r,t)??e:e}).replace(ct,(e,n)=>{let r=t.byCssVar.get(n);return r?ft(r,t)??e:e})}function mt(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=ut(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 ht(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${a(e)}]`}function gt(e,t,n){let r=q(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function _t(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function q(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=_t(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:E([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=_t(Number(a));if(o!=null)return{name:i,step:o}}function vt(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function yt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=q(n);e&&vt(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function J(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=q(n);e&&vt(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:yt(e)}function Y(e,t){if(e.length<2)return[...e];let n=$(e[0]),r=$(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 X(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function bt(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*X(n)+.7152*X(r)+.0722*X(i)}function Z(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 xt(e){return e>1?e/100:e}function Q(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function $(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=bt(t);if(n!=null)return n;let r=Q(t,`oklch`);if(r?.[0]){let e=Z(r[0]);return e==null?void 0:xt(e)}let i=Q(t,`hsla?`);if(i?.[2]){let e=Z(i[2]);return e==null?void 0:xt(e)}let a=Q(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Z(a[0]),t=Z(a[1]),n=Z(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*X(r(e,a[0]))+.7152*X(r(t,a[1]))+.0722*X(r(n,a[2]))}}function St(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 Ct(e,t,n){let r=St(e,t);if(r.length===0)return e;let i=Y(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function wt(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 Tt(e,t,n){let r=St(e,t);if(!(r.length<2))return wt(Y(r.map(([,e])=>e),n))}function Et(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of Ke){let r=n.get(e);if(!r)continue;let i=Tt(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function Dt(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=J(U(t,`light`)),r=J(U(t,`dark`)),i=Et(n,`light`),a=Et(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function Ot(e,t){let n=J(e),{byPath:r,byCssVar:i}=lt(e),o={};for(let s of e){if(s.category!==`color`||!s.tokenKey||s.primitive||/^[A-Z]+\d{1,3}$/i.test(s.tokenKey)&&n[s.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=mt(s,r,i),c=gt(e,t,n);if(c){o[s.tokenKey]=ht(c);continue}let l=e.tamaguiValue;K(l)||K(e.cssValue)||(typeof l==`string`||typeof l==`number`)&&(o[s.tokenKey]=a(l))}return o}function kt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);if(n.size===0)return;let r=[];for(let i of[...n].toSorted((e,t)=>e.localeCompare(t))){let n=Ct(e[i]??t[i]??{},i,`light`),a=Ct(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
54
54
  light: ${W(n,8)},
55
55
  dark: ${W(a,8)}
56
56
  }`)}if(r.length!==0)return`{\n${r.join(`,
57
- `)}\n }`}function wt(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 Tt(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 Et(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(`color${e}`);return r}function Dt(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 wt([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of Tt(e.lightScales,e.darkScales))t.add(n);for(let n of Et(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Ot(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:o(e)}: string;`}function kt(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(Ot),`}`,``]}function At(e,t,n={}){let r=e.fonts??{},i=n.useDefaultConfig===!0,a=n.animations??`css`,s=n.includeTypeAugmentation!==!1,c=t.filter(e=>e.category===`color`),l=U(c,`light`),u=U(c,`dark`),d=J(l),f=J(u.length>0?u:l),{lightPalette:p,darkPalette:m,lightBaseName:h,darkBaseName:ee}=xt(t),g=Ct(d,f),_=St(l,h),v=St(u.length>0?u:l,u.length>0?ee:h),te=kt(Dt({lightSemantic:_,darkSemantic:v,lightScales:d,darkScales:f,lightPalette:p,darkPalette:m}),{specName:e.name}),y=nt(U(t,`light`)),b=rt(l,u),x=[];Object.keys(b).length>0&&x.push(` color: ${W(b,4)}`);for(let e of Ze){let t=y[e];t&&Object.keys(t).length>0&&x.push(` ${e}: ${W(t,4)}`)}let S=[];p&&S.push(` lightPalette: ${o(p)}`),m&&S.push(` darkPalette: ${o(m)}`),g&&S.push(` childrenThemes: ${g}`),(Object.keys(_).length>0||Object.keys(v).length>0)&&S.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
57
+ `)}\n }`}function At(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 jt(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 Mt(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(`color${e}`);return r}function Nt(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 At([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of jt(e.lightScales,e.darkScales))t.add(n);for(let n of Mt(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Pt(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: string;`}function Ft(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(Pt),`}`,``]}function It(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=U(c,`light`),u=U(c,`dark`),d=J(l),f=J(u.length>0?u:l),{lightPalette:p,darkPalette:m,lightBaseName:h,darkBaseName:g}=Dt(t),_=kt(d,f),v=Ot(l,h),y=Ot(u.length>0?u:l,u.length>0?g:h),b=Ft(Nt({lightSemantic:v,darkSemantic:y,lightScales:d,darkScales:f,lightPalette:p,darkPalette:m}),{specName:e.name}),ee=nt(U(t,`light`)),x=rt(l,u),S=[];Object.keys(x).length>0&&S.push(` color: ${W(x,4)}`);for(let e of Ze){let t=ee[e];t&&Object.keys(t).length>0&&S.push(` ${e}: ${W(t,4)}`)}let C=[];p&&C.push(` lightPalette: ${a(p)}`),m&&C.push(` darkPalette: ${a(m)}`),_&&C.push(` childrenThemes: ${_}`),(Object.keys(v).length>0||Object.keys(y).length>0)&&C.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
58
58
  return scheme === "dark"
59
- ? ${it(v,8)}
60
- : ${it(_,8)};
61
- }`);let C=[`import { isWeb } from '@tamagui/constants';`];i?C.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):C.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),a!==!1&&C.push(`import { animations } from "${qe[a]}";`),n.importConfig&&C.push(`import userConfig from "${n.importConfig}";`);let w=[`createTamagui`,`px`];x.length>0&&w.push(`createTokens`);let T=ze(U(t,`light`),r);T.length>0&&w.push(`createFont`),C.push(`import { ${w.join(`, `)} } from "@tamagui/core";`);let E=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...C,``];x.length>0&&E.push(`const tokens = createTokens({`,x.join(`,
62
- `),`});`,``);let D=S.length>0?`createV5Theme({\n${S.join(`,
63
- `)}\n})`:`createV5Theme()`;E.push(`const themes = ${D};`,``);let O=new Map;if(T.length>0)for(let[e,t]of T.entries()){let n=Ve(t.key,e);O.set(t.key,n),E.push(He(t,n),``)}let k=[];if(i&&k.push(` ...defaultConfig`),a!==!1&&k.push(` animations`),x.length>0&&(i?k.push(` tokens: {
59
+ ? ${it(y,8)}
60
+ : ${it(v,8)};
61
+ }`);let w=[`import { isWeb } from '@tamagui/constants';`];i?w.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):w.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),o!==!1&&w.push(`import { animations } from "${qe[o]}";`),n.importConfig&&w.push(`import userConfig from "${n.importConfig}";`);let T=[`createTamagui`,`px`];S.length>0&&T.push(`createTokens`);let E=ze(t,r);E.length>0&&T.push(`createFont`),w.push(`import { ${T.join(`, `)} } from "@tamagui/core";`);let D=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...w,``];S.length>0&&D.push(`const tokens = createTokens({`,S.join(`,
62
+ `),`});`,``);let O=C.length>0?`createV5Theme({\n${C.join(`,
63
+ `)}\n})`:`createV5Theme()`;D.push(`const themes = ${O};`,``);let k=new Map;if(E.length>0)for(let[e,t]of E.entries()){let n=Ve(t.key,e);k.set(t.key,n),D.push(He(t,n),``)}let A=[];if(i&&A.push(` ...defaultConfig`),o!==!1&&A.push(` animations`),S.length>0&&(i?A.push(` tokens: {
64
64
  ...defaultConfig.tokens,
65
65
  ...tokens,
66
66
  space: {
@@ -79,18 +79,18 @@ Re-run Razorwind generate when tokens change so \`${e.outputPath}\` stays aligne
79
79
  ...defaultConfig.tokens.zIndex,
80
80
  ...tokens.zIndex
81
81
  }
82
- }`):k.push(` tokens`)),k.push(` themes`),O.size>0){let e=[...O.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:o(e)}: ${t}`);i?k.push(` fonts: {
82
+ }`):A.push(` tokens`)),A.push(` themes`),k.size>0){let e=[...k.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`);i?A.push(` fonts: {
83
83
  ...defaultConfig.fonts,
84
84
  ${e.join(`,
85
85
  `)}
86
- }`):k.push(` fonts: {
86
+ }`):A.push(` fonts: {
87
87
  ${e.join(`,
88
88
  `)}
89
- }`)}return n.shorthands&&k.push(` shorthands: ${W(n.shorthands,4)}`),n.media&&k.push(` media: ${o(n.media)}`),n.defaultFont&&k.push(` defaultFont: ${o(n.defaultFont)}`),E.push(``,...te??[],`/**
89
+ }`)}return n.shorthands&&A.push(` shorthands: ${W(n.shorthands,4)}`),n.media&&A.push(` media: ${a(n.media)}`),n.defaultFont&&A.push(` defaultFont: ${a(n.defaultFont)}`),D.push(``,...b??[],`/**
90
90
  * The Tamagui v5 config for the ${e.name||`design system`}.
91
91
  *
92
92
  * @see https://tamagui.dev/docs/core/config-v5
93
93
  */
94
- export const config = createTamagui({`,k.join(`,
95
- `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),s&&E.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),E.push(`export default config;`,``),E.join(`
96
- `)}function jt(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?k(e.tokens,r):[];if(o.length===0&&!a)return{};let s=r.outputPath??`tamagui.config.ts`,c=At(e,o,r),l=r.installGuide??Ue({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 Mt=(0,e.definePlugin)(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>jt(t,e??{})}));exports.collectColorScales=J,exports.collectTamaguiFonts=ze,exports.colorLightness=$,exports.default=Mt,exports.flattenTokens=k,exports.fontVarName=Ve,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=jt,exports.isPaletteGroup=v,exports.orderPaletteForScheme=Y,exports.renderInstallMd=Ue,exports.renderTamaguiConfig=At,exports.resolveTokenCategory=T,exports.resolveTokenSets=t.resolveTokenSets,exports.tamaguiFontKeyFromRole=L,exports.toCamelCaseKey=E,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=s,exports.toTokenKey=D,exports.typographyFontKey=Ce;
94
+ export const config = createTamagui({`,A.join(`,
95
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),s&&D.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),D.push(`export default config;`,``),D.join(`
96
+ `)}function Lt(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?k(e.tokens,r):[];if(o.length===0&&!a)return{};let s=r.outputPath??`tamagui.config.ts`,c=It(e,o,r),l=r.installGuide??Ue({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 Rt=(0,e.definePlugin)(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Lt(t,e??{})}));exports.collectColorScales=J,exports.collectTamaguiFonts=ze,exports.colorLightness=$,exports.default=Rt,exports.flattenTokens=k,exports.fontVarName=Ve,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=Lt,exports.isPaletteGroup=v,exports.orderPaletteForScheme=Y,exports.renderInstallMd=Ue,exports.renderTamaguiConfig=It,exports.resolveTokenCategory=T,exports.resolveTokenSets=t.resolveTokenSets,exports.tamaguiFontKeyFromRole=R,exports.toCamelCaseKey=E,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=o,exports.toTokenKey=D,exports.typographyFontKey=xe;
package/dist/index.d.cts CHANGED
@@ -161,13 +161,18 @@ interface TamaguiFontDef {
161
161
  face?: string;
162
162
  }
163
163
  /**
164
- * Map a font role / family token name onto Tamagui's `body` / `heading` /
165
- * `mono` keys.
164
+ * Map a font role / family token name onto a Tamagui `fonts` object key.
165
+ *
166
+ * Family aliases (`sans` / `serif` → `body`, `monospace` → `mono`) stay
167
+ * collapsed so Tamagui's default font names resolve. Distinct type roles
168
+ * (`heading`, `title`, `display`, `caption`, `code`) keep their own keys.
166
169
  */
167
170
  declare function tamaguiFontKeyFromRole(name: string): string;
168
171
  /**
169
- * Tamagui font key for a typography token. Nested language segments and
170
- * `body_cn`-style names keep the `_` separator FontLanguage expects.
172
+ * Tamagui `fonts` object key for a typography token. The DTCG token name is
173
+ * kept as-is (`display-lg`, `heading-2xl`) so `fontFamily="$display-lg"`
174
+ * matches the design tokens. Nested language segments use the `_` separator
175
+ * FontLanguage expects (`typography.body.cn` → `body_cn`).
171
176
  *
172
177
  * @see https://tamagui.dev/docs/core/font-language
173
178
  */
@@ -181,6 +186,8 @@ declare function typographyFontKey(path: string): string;
181
186
  declare function collectTamaguiFonts(tokens: FlatToken[], fonts?: Fonts): TamaguiFontDef[];
182
187
  /**
183
188
  * Valid JS identifier used for the `const <name> = createFont(...)` binding.
189
+ * Hyphenated token names (`display-lg`) become camelCase (`displayLgFont`);
190
+ * FontLanguage keys (`body_cn`) keep the underscore.
184
191
  */
185
192
  declare function fontVarName(key: string, index: number): string;
186
193
  //#endregion
@@ -228,7 +235,8 @@ declare function colorLightness(color: string): number | undefined;
228
235
  * Render a Tamagui v5 config module from flattened design tokens.
229
236
  *
230
237
  * Light and dark token sets are combined into one `createV5Theme` call.
231
- * Typography and font-family tokens are emitted as `createFont` entries.
238
+ * Each typography token is emitted as its own `createFont` entry with that
239
+ * token's size, line height, and weight (not a shared type scale).
232
240
  *
233
241
  * @see https://tamagui.dev/docs/core/config-v5
234
242
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
@@ -251,9 +259,10 @@ declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOpti
251
259
  * set `lightPalette` / `darkPalette` (`color1`–`color12`). Light palettes are
252
260
  * ordered lightest-first; dark palettes darkest-first.
253
261
  *
254
- * Typography tokens (`$type: "typography"`) and font-family tokens each emit
255
- * a Tamagui `createFont` entry. Names with a `_` suffix (or a nested language
256
- * segment) become FontLanguage variants (`body_cn`).
262
+ * Typography tokens (`$type: "typography"`) each emit their own Tamagui
263
+ * `createFont` entry with that token's size, line height, and weight. Font
264
+ * keys keep the DTCG token name (`display-lg`). Names with a `_` suffix (or a
265
+ * nested language segment) become FontLanguage variants (`body_cn`).
257
266
  *
258
267
  * @see https://tamagui.dev/docs/core/config-v5
259
268
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
@@ -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;;;;EAIA;;;;;;;;;iBC3Dc,eAAe,MAAM;;;;iBAuFrB,qBACd,cACA,gBACC;;;;;;;iBAoEa,eAAe;;;;;;;;iBA0Bf,WAAW;;;;iBA6FX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;UCpSc;;EAEf;;EAEA;;EAEA;EACA,MAAM;EACN,YAAY;EACZ,QAAQ;EACR,eAAe;;EAEf;;;;;;iBAyLc,uBAAuB;;;;;;;iBAsCvB,kBAAkB;;;;;;;iBAkXlB,oBACd,QAAQ,aACR,QAAQ,QACP;;;;iBA0Fa,YAAY,aAAa;;;;;;;;;iBC7sBzB,eAAe,gBAAgB;;;;;;;;iBCnC/B,gBAAgB;EAAW;;;;KCiCtC;;;;;;;iBA0cW,mBACd,aAAa,cACZ,eAAe;;;;;;;iBAmCF,sBACd,2BACA,QAAQ;;;;;iBA+EM,eAAe;;;;;;;;;;iBA8af,oBACd,MAAM,QACN,QAAQ,aACR,UAAS;;;;iBA+PK,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;;;;EAIA;;;;;;;;;iBC3Dc,eAAe,MAAM;;;;iBAuFrB,qBACd,cACA,gBACC;;;;;;;iBAoEa,eAAe;;;;;;;;iBA0Bf,WAAW;;;;iBA6FX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;UCrSc;;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;;;;KCiCtC;;;;;;;iBAoiBW,mBACd,aAAa,cACZ,eAAe;;;;;;;iBAmCF,sBACd,2BACA,QAAQ;;;;;iBA+EM,eAAe;;;;;;;;;;;iBA4af,oBACd,MAAM,QACN,QAAQ,aACR,UAAS;;;;iBA4PK,sBACd,MAAM,QACN,UAAS,uBACR,wBAAwB,QAAQ"}
package/dist/index.d.mts CHANGED
@@ -161,13 +161,18 @@ interface TamaguiFontDef {
161
161
  face?: string;
162
162
  }
163
163
  /**
164
- * Map a font role / family token name onto Tamagui's `body` / `heading` /
165
- * `mono` keys.
164
+ * Map a font role / family token name onto a Tamagui `fonts` object key.
165
+ *
166
+ * Family aliases (`sans` / `serif` → `body`, `monospace` → `mono`) stay
167
+ * collapsed so Tamagui's default font names resolve. Distinct type roles
168
+ * (`heading`, `title`, `display`, `caption`, `code`) keep their own keys.
166
169
  */
167
170
  declare function tamaguiFontKeyFromRole(name: string): string;
168
171
  /**
169
- * Tamagui font key for a typography token. Nested language segments and
170
- * `body_cn`-style names keep the `_` separator FontLanguage expects.
172
+ * Tamagui `fonts` object key for a typography token. The DTCG token name is
173
+ * kept as-is (`display-lg`, `heading-2xl`) so `fontFamily="$display-lg"`
174
+ * matches the design tokens. Nested language segments use the `_` separator
175
+ * FontLanguage expects (`typography.body.cn` → `body_cn`).
171
176
  *
172
177
  * @see https://tamagui.dev/docs/core/font-language
173
178
  */
@@ -181,6 +186,8 @@ declare function typographyFontKey(path: string): string;
181
186
  declare function collectTamaguiFonts(tokens: FlatToken[], fonts?: Fonts): TamaguiFontDef[];
182
187
  /**
183
188
  * Valid JS identifier used for the `const <name> = createFont(...)` binding.
189
+ * Hyphenated token names (`display-lg`) become camelCase (`displayLgFont`);
190
+ * FontLanguage keys (`body_cn`) keep the underscore.
184
191
  */
185
192
  declare function fontVarName(key: string, index: number): string;
186
193
  //#endregion
@@ -228,7 +235,8 @@ declare function colorLightness(color: string): number | undefined;
228
235
  * Render a Tamagui v5 config module from flattened design tokens.
229
236
  *
230
237
  * Light and dark token sets are combined into one `createV5Theme` call.
231
- * Typography and font-family tokens are emitted as `createFont` entries.
238
+ * Each typography token is emitted as its own `createFont` entry with that
239
+ * token's size, line height, and weight (not a shared type scale).
232
240
  *
233
241
  * @see https://tamagui.dev/docs/core/config-v5
234
242
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
@@ -251,9 +259,10 @@ declare function generateTamaguiConfig(spec: Schema, options?: TamaguiPluginOpti
251
259
  * set `lightPalette` / `darkPalette` (`color1`–`color12`). Light palettes are
252
260
  * ordered lightest-first; dark palettes darkest-first.
253
261
  *
254
- * Typography tokens (`$type: "typography"`) and font-family tokens each emit
255
- * a Tamagui `createFont` entry. Names with a `_` suffix (or a nested language
256
- * segment) become FontLanguage variants (`body_cn`).
262
+ * Typography tokens (`$type: "typography"`) each emit their own Tamagui
263
+ * `createFont` entry with that token's size, line height, and weight. Font
264
+ * keys keep the DTCG token name (`display-lg`). Names with a `_` suffix (or a
265
+ * nested language segment) become FontLanguage variants (`body_cn`).
257
266
  *
258
267
  * @see https://tamagui.dev/docs/core/config-v5
259
268
  * @see https://tamagui.dev/docs/core/font-language#font-tokens
package/dist/index.mjs CHANGED
@@ -1,8 +1,8 @@
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";import{getUniqueBy as p}from"@stryke/helpers/get-unique";function m(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function h(e){return typeof e==`string`?`"${m(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function g(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 _=/^(?:font-size|fontSize)(?:\.|$)/i,v=/^(?:font-weight|fontWeight)(?:\.|$)/i,y=/^shadow(?:\.|$)/i,b=/^inset-shadow(?:\.|$)/i,x=/^drop-shadow(?:\.|$)/i,S=/^text-shadow(?:\.|$)/i,C=/^(?:blur|blur-?radius)(?:\.|$)/i,w=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),T=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:_,category:`fontSize`},{prefix:v,category:`fontWeight`},{prefix:x,category:`dropShadow`},{prefix:b,category:`insetShadow`},{prefix:S,category:`textShadow`},{prefix:y,category:`shadow`},{prefix:C,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 E(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function D(e){return e===!0||e===`true`||e===1}function O(e){return D(e.palette)||D(e.$palette)?!0:re(e)===`palette`}function ee(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function k(e){return e===!0||e===`true`||e===1}function A(e){return k(e.primitive)||k(e.$primitive)?!0:re(e)===`primitive`}function te(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function ne(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function re(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function ie(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 T)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return b.test(e)?`insetShadow`:x.test(e)?`dropShadow`:S.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(_.test(e))return`fontSize`;if(C.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`||v.test(e))return`fontWeight`}function j(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`:j(r)}function se(e,t,r,a,o,s){if(!i(e))return;let c=o||A(e)||O(e),l=re(e,r);if(E(e)){let r=ie(e),i=t.join(`.`),o=ae(i,l)??(c||l===`primitive`||l===`palette`?`color`:void 0),u=n(r,l),d=o&&w.has(o)||l===`color`||l===`palette`||l===`primitive`||l===`shadow`?u:g(r,l);s.push({path:i,type:l===`palette`||l===`primitive`?`color`:l,value:r,cssValue:u,tamaguiValue:d,category:o,tokenKey:o?oe(i):void 0,description:ne(e),theme:a,primitive:c});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||ee(n,r)||te(n,r)||se(r,[...t,n],l,a,c,s)}function ce(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;se(t.tokens,[],void 0,e,!1,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const le=/^\{([^{}]+)\}$/,ue=/^(?:typography|type|text)$/i,de=/^(?:font|fonts|font-family|fontFamily)$/i,fe=/^(?:font-size|fontSize)$/i,pe=/^(?:font-weight|fontWeight)$/i,me=/^(?:line-height|lineHeight|leading)$/i,he=/^(?:letter-spacing|letterSpacing|tracking)$/i,ge=/^(?:[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,_e=[`fontFamily`,`font-family`,`family`],ve=[`fontSize`,`font-size`,`size`],ye=[`fontWeight`,`font-weight`,`weight`],be=[`lineHeight`,`line-height`,`leading`],xe=[`letterSpacing`,`letter-spacing`,`tracking`],Se={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function M(e){if(typeof e==`string`)return le.exec(e.trim())?.[1]?.trim()}function N(e,t){let n=M(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=M(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function P(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function Ce(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function we(e){if(typeof e==`string`){let t=e.trim();return t.length===0||M(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 Te(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function F(e){if(e==null)return;let t=g(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 Ee(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||M(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=g(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function De(e,t){let n=F(e);if(n!=null)return Te(t!=null&&n>0&&n<=4?n*t:n)}function I(e,t){return t.test(e.split(`.`)[0]??``)}function Oe(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`heading`:case`title`:case`display`:return`heading`;case`mono`:case`monospace`:case`caption`:case`code`:return`mono`;case`sans`:case`body`:case`serif`:return`body`;default:return R([e])}}function ke(e){return e.role?z(e.role):z(e.name)}function Ae(e){let t=L(e,ue);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&ge.test(n)&&!n.includes(`_`)?`${R(t.slice(0,-1))}_${n}`:R(t)}function je(e){return z(L(e,de)[0]??Oe(e))}function B(e,t){let n=L(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:R(n)}function Me(e){return e.type===`typography`&&i(e.value)}function Ne(e){return e.category===`fontSize`||e.category===`fontWeight`||Pe(e)||Fe(e)||Ie(e)||Le(e)?!1:e.type===`fontFamily`||I(e.path,de)}function Pe(e){return e.category===`fontSize`||I(e.path,fe)}function Fe(e){return e.category===`fontWeight`||e.type===`fontWeight`||I(e.path,pe)}function Ie(e){return I(e.path,me)}function Le(e){return I(e.path,he)}function Re(e){let t=new Map;for(let n of Object.values(e)){let e=ke(n),r=t.get(e);(!r||n.role===e&&r.role!==e)&&t.set(e,n)}return t}function ze(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=Ce(t).toLowerCase();return r.find(e=>f(e).toLowerCase()===i||e.title.toLowerCase()===i||e.name.toLowerCase()===i)}function Be(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: ${h(t.normal)}`),t.italic&&n.push(`italic: ${h(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
- `)}\n }`}function V(e,t){return{...e,webFamily:d(t),nativeFamily:f(t),face:t.source===`local`?Be(t):e.face}}function H(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Ve(e,t){return{...e,webFamily:t,nativeFamily:Ce(t)}}function He(e,t){let n={},r=[],i={},a={};for(let o of e){if(Pe(o)){let e=F(N(o.value,t));e!=null&&(n[B(o.path,fe)]=e);continue}if(Fe(o)){let e=Ee(N(o.value,t));e&&(i[B(o.path,pe)]=e);continue}if(Le(o)){let e=F(N(o.value,t));e!=null&&(a[B(o.path,he)]=e);continue}Ie(o)&&r.push({key:B(o.path,me),value:N(o.value,t)})}let o=n.true??n.base??Object.values(n)[0],s={};for(let e of r){let t=n[e.key]??o,r=De(e.value,t);r!=null&&(s[e.key]=r)}return{size:n,lineHeight:s,weight:i,letterSpacing:a}}function U(e,t){return{...t,...e}}function W(e,t){return{...e,size:U(e.size,t.size),lineHeight:U(e.lineHeight,t.lineHeight),weight:U(e.weight,t.weight),letterSpacing:U(e.letterSpacing,t.letterSpacing)}}function Ue(e){return Object.keys(e.size).length>0?e:{...e,size:{...Se}}}function We(e,t,n,r){if(!i(t.value))return e;let a=P(t.value,_e),o=M(a),s=we(N(a,n)),c=ze(r,s,o),l=e;c?l=V(l,c):s&&(l=Ve(l,s));let u=F(N(P(t.value,ve),n));u!=null&&(l={...l,size:{...l.size,true:u}});let d=Ee(N(P(t.value,ye),n));d&&(l={...l,weight:{...l.weight,true:d}});let f=F(N(P(t.value,xe),n));f!=null&&(l={...l,letterSpacing:{...l.letterSpacing,true:f}});let p=De(N(P(t.value,be),n),l.size.true??u);return p!=null&&(l={...l,lineHeight:{...l.lineHeight,true:p}}),l}function Ge(e,t){let n=new Map(e.map(e=>[e.path,e])),r=He(e,n),i=new Map,a=e=>{i.set(e.key,e)};if(t)for(let[e,n]of Re(t))a(W(V(H(e),n),r));for(let o of e){if(!Ne(o)||Me(o))continue;let e=je(o.path),s=we(N(o.value,n)),c=i.get(e)??H(e),l=ze(t,s,o.path),u=c;l?u=V(u,l):(s&&c.webFamily===H(e).webFamily||s&&!i.has(e))&&(u=Ve(u,s)),a(W(u,r))}for(let o of e){if(!Me(o))continue;let e=Ae(o.path);a(We(W(i.get(e)??H(e),r),o,n,t))}return p([...i.values()].map(Ue).toSorted((e,t)=>e.key.localeCompare(t.key)),e=>e.key)}function Ke(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:h(e)}function G(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}${Ke(e)}: ${h(t)}`).join(`,
4
- `)}\n${r}}`}function qe(e,t){let n=`${e.replaceAll(/\W/g,``)||`font${t}`}Font`;return/^[A-Z_]/i.test(n)?n:`font${t}`}function Je(e,t){let n=h(e.webFamily),r=h(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${G(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${G(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${G(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${G(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
- `)}\n});`}function Ye(e){return`# Installing Tamagui Config
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,v=/^shadow(?:\.|$)/i,y=/^inset-shadow(?:\.|$)/i,ee=/^drop-shadow(?:\.|$)/i,b=/^text-shadow(?:\.|$)/i,x=/^(?:blur|blur-?radius)(?:\.|$)/i,S=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),C=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:g,category:`fontSize`},{prefix:_,category:`fontWeight`},{prefix:ee,category:`dropShadow`},{prefix:y,category:`insetShadow`},{prefix:b,category:`textShadow`},{prefix:v,category:`shadow`},{prefix:x,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 w(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function T(e){return e===!0||e===`true`||e===1}function E(e){return T(e.palette)||T(e.$palette)?!0:j(e)===`palette`}function D(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function O(e){return e===!0||e===`true`||e===1}function k(e){return O(e.primitive)||O(e.$primitive)?!0:j(e)===`primitive`}function A(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function te(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function j(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function ne(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 re(e,t){for(let{prefix:t,category:n}of C)if(t.test(e))return n;if(t===`color`||t===`palette`)return`color`;if(t===`shadow`)return y.test(e)?`insetShadow`:ee.test(e)?`dropShadow`:b.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(g.test(e))return`fontSize`;if(x.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 M(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 ie(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`:M(r)}function ae(e,t,r,a,o,s){if(!i(e))return;let c=o||k(e)||E(e),l=j(e,r);if(w(e)){let r=ne(e),i=t.join(`.`),o=re(i,l)??(c||l===`primitive`||l===`palette`?`color`:void 0),u=n(r,l),d=o&&S.has(o)||l===`color`||l===`palette`||l===`primitive`||l===`shadow`?u:h(r,l);s.push({path:i,type:l===`palette`||l===`primitive`?`color`:l,value:r,cssValue:u,tamaguiValue:d,category:o,tokenKey:o?ie(i):void 0,description:te(e),theme:a,primitive:c});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||D(n,r)||A(n,r)||ae(r,[...t,n],l,a,c,s)}function oe(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;ae(t.tokens,[],void 0,e,!1,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const se=/^\{([^{}]+)\}$/,ce=/^(?:typography|type|text)$/i,le=/^(?:font|fonts|font-family|fontFamily)$/i,ue=/^(?:font-size|fontSize)$/i,de=/^(?:font-weight|fontWeight)$/i,fe=/^(?:line-height|lineHeight|leading)$/i,pe=/^(?:letter-spacing|letterSpacing|tracking)$/i,me=/^(?:[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,he=[`fontFamily`,`font-family`,`family`],ge=[`fontSize`,`font-size`,`size`],_e=[`fontWeight`,`font-weight`,`weight`],ve=[`lineHeight`,`line-height`,`leading`],ye=[`letterSpacing`,`letter-spacing`,`tracking`],be={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 xe(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function Se(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 Ce(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function I(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 we(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=h(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function Te(e,t){let n=I(e);if(n!=null)return Ce(t!=null&&n>0&&n<=4?n*t:n)}function L(e,t){return t.test(e.split(`.`)[0]??``)}function Ee(e){return e.split(`.`).filter(Boolean).at(-1)??e}function R(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function z(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 B(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return z([e])}}function De(e){return e.role?B(e.role):B(e.name)}function Oe(e){let t=R(e,ce);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&me.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function ke(e){return B(R(e,le)[0]??Ee(e))}function Ae(e,t){let n=R(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:z(n)}function je(e){return e.type===`typography`&&i(e.value)}function Me(e){return e.category===`fontSize`||e.category===`fontWeight`||Ne(e)||Pe(e)||Fe(e)||Ie(e)?!1:e.type===`fontFamily`||L(e.path,le)}function Ne(e){return e.category===`fontSize`||L(e.path,ue)}function Pe(e){return e.category===`fontWeight`||e.type===`fontWeight`||L(e.path,de)}function Fe(e){return L(e.path,fe)}function Ie(e){return L(e.path,pe)}function Le(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 Re(e){let t=new Map;for(let n of Object.values(e)){let e=De(n);t.has(e)&&(e=Le(t,z([n.name]))),t.set(e,n)}return t}function ze(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=xe(t).toLowerCase();return r.find(e=>f(e).toLowerCase()===i||e.title.toLowerCase()===i||e.name.toLowerCase()===i)}function Be(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 V(e,t){return{...e,webFamily:d(t),nativeFamily:f(t),face:t.source===`local`?Be(t):e.face}}function H(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Ve(e,t){return{...e,webFamily:t,nativeFamily:xe(t)}}const He=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function U(e,t){let n={true:e},r=N(t);if(!r)return n;let i=Ae(r,He);return i&&i!==`true`&&(n[i]=e),n}function Ue(e){return Object.keys(e.size).length>0?e:{...e,size:{...be}}}function We(e,t,n,r){if(!i(t.value))return e;let a=F(t.value,he),o=N(a),s=Se(P(a,n)),c=ze(r,s,o),l=e;c?l=V(l,c):s&&(l=Ve(l,s));let u=F(t.value,ge),d=I(P(u,n));d!=null&&(l={...l,size:U(d,u)});let f=F(t.value,_e),p=we(P(f,n));p&&(l={...l,weight:U(p,f)});let m=F(t.value,ye),h=I(P(m,n));h!=null&&(l={...l,letterSpacing:U(h,m)});let g=F(t.value,ve),_=Te(P(g,n),l.size.true??d);return _!=null&&(l={...l,lineHeight:U(_,g)}),Ge(l)}function Ge(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 Ke(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 Re(t))i(V(H(e),n));for(let a of e){if(!Me(a)||je(a))continue;let e=ke(a.path),o=Se(P(a.value,n)),s=r.get(e)??H(e),c=ze(t,o,a.path),l=s;c?l=V(l,c):(o&&s.webFamily===H(e).webFamily||o&&!r.has(e))&&(l=Ve(l,o)),i(l)}for(let a of e){if(!je(a))continue;let e=Oe(a.path);i(We(r.get(e)??H(e),a,n,t))}return[...r.values()].map(Ue).toSorted((e,t)=>e.key.localeCompare(t.key))}function qe(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}function W(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}${qe(e)}: ${m(t)}`).join(`,
4
+ `)}\n${r}}`}function Je(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 Ye(e,t){let n=m(e.webFamily),r=m(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${W(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${W(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${W(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${W(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
+ `)}\n});`}function Xe(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
8
8
 
@@ -48,19 +48,19 @@ 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 Xe=new Set([`default`,`light`,`theme`]),Ze=/^base(?:[A-Z]\w*|[._-].+)?$/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 Xe.has(e)}function tt(e){return e===`dark`}function K(e,t){let n=new Map,r=t===`dark`?tt:et;for(let t of e){let e=t.theme?.toLowerCase();(!e||Ze.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()]}const nt=new Set([`fontSize`,`blur`]),rt=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function it(e){return/^px\(-?\d/.test(e)}function at(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?j([t]):e.tokenKey}return e.tokenKey??``}function ot(e){return e.category&&nt.has(e.category)&&typeof e.tamaguiValue==`number`?`px(${e.tamaguiValue})`:e.category===`dropShadow`&&typeof e.tamaguiValue==`string`?st(e.tamaguiValue):e.tamaguiValue}function st(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 ct(e){let t={};for(let n of e){if(!n.category||n.category===`color`||!n.tokenKey)continue;let e=at(n);if(!e)continue;let r=t[n.category]??{};r[e]=ot(n),t[n.category]=r}return t}function lt(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||Y(r)||r===`[object Object]`||(n[e]=r)},i=e=>{let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}_${t}`:t};for(let t of e)t.tokenKey&&(t.primitive?r(i(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(i(e),e);return n}function q(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`&&it(t)?t:h(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:h(e)}: ${r}`}).join(`,
52
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function ut(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:h(e)}: ${t}`).join(`,
53
- `)}\n${r}}`}const dt=/^\{([^{}]+)\}$/,ft=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/;function pt(e){if(typeof e==`string`)return dt.exec(e.trim())?.[1]?.trim()}function J(e){if(typeof e==`string`)return ft.exec(e.trim())?.[1]}function Y(e){return pt(e)!=null||J(e)!=null}function mt(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=pt(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=J(r.value)??J(r.cssValue)??J(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 ht(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${h(e)}]`}function gt(e,t,n){let r=X(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function _t(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function X(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=_t(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:j([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=_t(Number(a));if(o!=null)return{name:i,step:o}}function vt(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function yt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=X(n);e&&vt(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function Z(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=X(n);e&&vt(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:yt(e)}function bt(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 Q(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function xt(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*Q(n)+.7152*Q(r)+.0722*Q(i)}function $(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 St(e){return e>1?e/100:e}function Ct(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=xt(t);if(n!=null)return n;let r=Ct(t,`oklch`);if(r?.[0]){let e=$(r[0]);return e==null?void 0:St(e)}let i=Ct(t,`hsla?`);if(i?.[2]){let e=$(i[2]);return e==null?void 0:St(e)}let a=Ct(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=$(a[0]),t=$(a[1]),n=$(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Q(r(e,a[0]))+.7152*Q(r(t,a[1]))+.0722*Q(r(n,a[2]))}}function Tt(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 Et(e,t,n){let r=Tt(e,t);if(r.length===0)return e;let i=bt(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function Dt(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 Ot(e,t,n){let r=Tt(e,t);if(!(r.length<2))return Dt(bt(r.map(([,e])=>e),n))}function kt(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=Ot(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function At(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=Z(K(t,`light`)),r=Z(K(t,`dark`)),i=kt(n,`light`),a=kt(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function jt(e,t){let n=Z(e),r=new Map(e.map(e=>[e.path,e])),i=new Map(e.map(e=>[s(e.path),e])),a={};for(let o of e){if(o.category!==`color`||!o.tokenKey||o.primitive||/^[A-Z]+\d{1,3}$/i.test(o.tokenKey)&&n[o.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=mt(o,r,i),s=gt(e,t,n);if(s){a[o.tokenKey]=ht(s);continue}let c=e.tamaguiValue;Y(c)||Y(e.cssValue)||(typeof c==`string`||typeof c==`number`)&&(a[o.tokenKey]=h(c))}return a}function Mt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);if(n.size===0)return;let r=[];for(let i of[...n].toSorted((e,t)=>e.localeCompare(t))){let n=Et(e[i]??t[i]??{},i,`light`),a=Et(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
54
- light: ${q(n,8)},
55
- dark: ${q(a,8)}
51
+ `}const Ze=new Set([`default`,`light`,`theme`]),Qe=/^base(?:[A-Z]\w*|[._-].+)?$/i,$e=[`base`,`gray`,`grey`,`neutral`],et={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function tt(e){return Ze.has(e)}function nt(e){return e===`dark`}function G(e,t){let n=new Map,r=t===`dark`?nt:tt;for(let t of e){let e=t.theme?.toLowerCase();(!e||Qe.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()]}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?M([t]):e.tokenKey}return e.tokenKey??``}function st(e,t){if(e.category&&rt.has(e.category)&&typeof e.tamaguiValue==`number`)return`px(${e.tamaguiValue})`;if(typeof e.tamaguiValue==`string`){let n=bt(e.tamaguiValue,t);return e.category===`dropShadow`?ct(n):n}return e.tamaguiValue}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=gt(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey)continue;let e=ot(r);if(!e)continue;let i=st(r,n);if(typeof i==`string`&&vt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function ut(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||J(r)||r===`[object Object]`||(n[e]=r)},i=e=>{let t=e.path.replace(/^color\./i,``).replaceAll(`.`,``);return e.theme?`${e.theme}_${t}`:t};for(let t of e)t.tokenKey&&(t.primitive?r(i(t),t):r(t.tokenKey,t));for(let e of t)!e.tokenKey||!e.primitive||r(i(e),e);return n}function K(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:m(t);return`${n}${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${r}`}).join(`,
52
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}function dt(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(`,
53
+ `)}\n${r}}`}const ft=/^\{([^{}]+)\}$/,pt=/\{([^{}]+)\}/g,mt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,ht=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function gt(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[s(e.path),e]))}}function _t(e){if(typeof e==`string`)return ft.exec(e.trim())?.[1]?.trim()}function q(e){if(typeof e==`string`)return mt.exec(e.trim())?.[1]}function J(e){return _t(e)!=null||q(e)!=null}function vt(e){return/var\(|\{[^{}]+\}/.test(e)}function yt(e,t){let n=xt(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&&!J(e))return e}function bt(e,t){return e.replace(pt,(e,n)=>{let r=t.byPath.get(n.trim());return r?yt(r,t)??e:e}).replace(ht,(e,n)=>{let r=t.byCssVar.get(n);return r?yt(r,t)??e:e})}function xt(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=_t(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=q(r.value)??q(r.cssValue)??q(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 St(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${m(e)}]`}function Ct(e,t,n){let r=Y(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function wt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function Y(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=wt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:M([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=wt(Number(a));if(o!=null)return{name:i,step:o}}function Tt(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function Et(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=Y(n);e&&Tt(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function X(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=Y(n);e&&Tt(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:Et(e)}function Z(e,t){if(e.length<2)return[...e];let n=At(e[0]),r=At(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 Q(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function Dt(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*Q(n)+.7152*Q(r)+.0722*Q(i)}function $(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 Ot(e){return e>1?e/100:e}function kt(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function At(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=Dt(t);if(n!=null)return n;let r=kt(t,`oklch`);if(r?.[0]){let e=$(r[0]);return e==null?void 0:Ot(e)}let i=kt(t,`hsla?`);if(i?.[2]){let e=$(i[2]);return e==null?void 0:Ot(e)}let a=kt(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=$(a[0]),t=$(a[1]),n=$(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Q(r(e,a[0]))+.7152*Q(r(t,a[1]))+.0722*Q(r(n,a[2]))}}function jt(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 Mt(e,t,n){let r=jt(e,t);if(r.length===0)return e;let i=Z(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function Nt(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 Pt(e,t,n){let r=jt(e,t);if(!(r.length<2))return Nt(Z(r.map(([,e])=>e),n))}function Ft(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of $e){let r=n.get(e);if(!r)continue;let i=Pt(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function It(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=X(G(t,`light`)),r=X(G(t,`dark`)),i=Ft(n,`light`),a=Ft(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function Lt(e,t){let n=X(e),{byPath:r,byCssVar:i}=gt(e),a={};for(let o of e){if(o.category!==`color`||!o.tokenKey||o.primitive||/^[A-Z]+\d{1,3}$/i.test(o.tokenKey)&&n[o.tokenKey.replace(/\d{1,3}$/,``)])continue;let e=xt(o,r,i),s=Ct(e,t,n);if(s){a[o.tokenKey]=St(s);continue}let c=e.tamaguiValue;J(c)||J(e.cssValue)||(typeof c==`string`||typeof c==`number`)&&(a[o.tokenKey]=m(c))}return a}function Rt(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);if(n.size===0)return;let r=[];for(let i of[...n].toSorted((e,t)=>e.localeCompare(t))){let n=Mt(e[i]??t[i]??{},i,`light`),a=Mt(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
54
+ light: ${K(n,8)},
55
+ dark: ${K(a,8)}
56
56
  }`)}if(r.length!==0)return`{\n${r.join(`,
57
- `)}\n }`}function Nt(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 Pt(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 Ft(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(`color${e}`);return r}function It(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 Nt([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of Pt(e.lightScales,e.darkScales))t.add(n);for(let n of Ft(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Lt(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:h(e)}: string;`}function Rt(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(Lt),`}`,``]}function zt(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=K(s,`light`),l=K(s,`dark`),u=Z(c),d=Z(l.length>0?l:c),{lightPalette:f,darkPalette:p,lightBaseName:m,darkBaseName:g}=At(t),_=Mt(u,d),v=jt(c,m),y=jt(l.length>0?l:c,l.length>0?g:m),b=Rt(It({lightSemantic:v,darkSemantic:y,lightScales:u,darkScales:d,lightPalette:f,darkPalette:p}),{specName:e.name}),x=ct(K(t,`light`)),S=lt(c,l),C=[];Object.keys(S).length>0&&C.push(` color: ${q(S,4)}`);for(let e of rt){let t=x[e];t&&Object.keys(t).length>0&&C.push(` ${e}: ${q(t,4)}`)}let w=[];f&&w.push(` lightPalette: ${h(f)}`),p&&w.push(` darkPalette: ${h(p)}`),_&&w.push(` childrenThemes: ${_}`),(Object.keys(v).length>0||Object.keys(y).length>0)&&w.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
57
+ `)}\n }`}function zt(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 Bt(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 Vt(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(`color${e}`);return r}function Ht(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 zt([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of Bt(e.lightScales,e.darkScales))t.add(n);for(let n of Vt(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Ut(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: string;`}function Wt(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(Ut),`}`,``]}function Gt(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=G(s,`light`),l=G(s,`dark`),u=X(c),d=X(l.length>0?l:c),{lightPalette:f,darkPalette:p,lightBaseName:h,darkBaseName:g}=It(t),_=Rt(u,d),v=Lt(c,h),y=Lt(l.length>0?l:c,l.length>0?g:h),ee=Wt(Ht({lightSemantic:v,darkSemantic:y,lightScales:u,darkScales:d,lightPalette:f,darkPalette:p}),{specName:e.name}),b=lt(G(t,`light`)),x=ut(c,l),S=[];Object.keys(x).length>0&&S.push(` color: ${K(x,4)}`);for(let e of it){let t=b[e];t&&Object.keys(t).length>0&&S.push(` ${e}: ${K(t,4)}`)}let C=[];f&&C.push(` lightPalette: ${m(f)}`),p&&C.push(` darkPalette: ${m(p)}`),_&&C.push(` childrenThemes: ${_}`),(Object.keys(v).length>0||Object.keys(y).length>0)&&C.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
58
58
  return scheme === "dark"
59
- ? ${ut(y,8)}
60
- : ${ut(v,8)};
61
- }`);let T=[`import { isWeb } from '@tamagui/constants';`];i?T.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):T.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),a!==!1&&T.push(`import { animations } from "${$e[a]}";`),n.importConfig&&T.push(`import userConfig from "${n.importConfig}";`);let E=[`createTamagui`,`px`];C.length>0&&E.push(`createTokens`);let D=Ge(K(t,`light`),r);D.length>0&&E.push(`createFont`),T.push(`import { ${E.join(`, `)} } from "@tamagui/core";`);let O=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...T,``];C.length>0&&O.push(`const tokens = createTokens({`,C.join(`,
62
- `),`});`,``);let ee=w.length>0?`createV5Theme({\n${w.join(`,
63
- `)}\n})`:`createV5Theme()`;O.push(`const themes = ${ee};`,``);let k=new Map;if(D.length>0)for(let[e,t]of D.entries()){let n=qe(t.key,e);k.set(t.key,n),O.push(Je(t,n),``)}let A=[];if(i&&A.push(` ...defaultConfig`),a!==!1&&A.push(` animations`),C.length>0&&(i?A.push(` tokens: {
59
+ ? ${dt(y,8)}
60
+ : ${dt(v,8)};
61
+ }`);let w=[`import { isWeb } from '@tamagui/constants';`];i?w.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):w.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),a!==!1&&w.push(`import { animations } from "${et[a]}";`),n.importConfig&&w.push(`import userConfig from "${n.importConfig}";`);let T=[`createTamagui`,`px`];S.length>0&&T.push(`createTokens`);let E=Ke(t,r);E.length>0&&T.push(`createFont`),w.push(`import { ${T.join(`, `)} } from "@tamagui/core";`);let D=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...w,``];S.length>0&&D.push(`const tokens = createTokens({`,S.join(`,
62
+ `),`});`,``);let O=C.length>0?`createV5Theme({\n${C.join(`,
63
+ `)}\n})`:`createV5Theme()`;D.push(`const themes = ${O};`,``);let k=new Map;if(E.length>0)for(let[e,t]of E.entries()){let n=Je(t.key,e);k.set(t.key,n),D.push(Ye(t,n),``)}let A=[];if(i&&A.push(` ...defaultConfig`),a!==!1&&A.push(` animations`),S.length>0&&(i?A.push(` tokens: {
64
64
  ...defaultConfig.tokens,
65
65
  ...tokens,
66
66
  space: {
@@ -79,19 +79,19 @@ Re-run Razorwind generate when tokens change so \`${e.outputPath}\` stays aligne
79
79
  ...defaultConfig.tokens.zIndex,
80
80
  ...tokens.zIndex
81
81
  }
82
- }`):A.push(` tokens`)),A.push(` themes`),k.size>0){let e=[...k.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:h(e)}: ${t}`);i?A.push(` fonts: {
82
+ }`):A.push(` tokens`)),A.push(` themes`),k.size>0){let e=[...k.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`);i?A.push(` fonts: {
83
83
  ...defaultConfig.fonts,
84
84
  ${e.join(`,
85
85
  `)}
86
86
  }`):A.push(` fonts: {
87
87
  ${e.join(`,
88
88
  `)}
89
- }`)}return n.shorthands&&A.push(` shorthands: ${q(n.shorthands,4)}`),n.media&&A.push(` media: ${h(n.media)}`),n.defaultFont&&A.push(` defaultFont: ${h(n.defaultFont)}`),O.push(``,...b??[],`/**
89
+ }`)}return n.shorthands&&A.push(` shorthands: ${K(n.shorthands,4)}`),n.media&&A.push(` media: ${m(n.media)}`),n.defaultFont&&A.push(` defaultFont: ${m(n.defaultFont)}`),D.push(``,...ee??[],`/**
90
90
  * The Tamagui v5 config for the ${e.name||`design system`}.
91
91
  *
92
92
  * @see https://tamagui.dev/docs/core/config-v5
93
93
  */
94
94
  export const config = createTamagui({`,A.join(`,
95
- `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&O.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),O.push(`export default config;`,``),O.join(`
96
- `)}function Bt(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?ce(e.tokens,n):[];if(a.length===0&&!i)return{};let o=n.outputPath??`tamagui.config.ts`,s=zt(e,a,n),c=n.installGuide??Ye({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 Vt=e(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Bt(t,e??{})}));export{Z as collectColorScales,Ge as collectTamaguiFonts,wt as colorLightness,Vt as default,ce as flattenTokens,qe as fontVarName,n as formatTokenValue,Bt as generateTamaguiConfig,O as isPaletteGroup,bt as orderPaletteForScheme,Ye as renderInstallMd,zt as renderTamaguiConfig,ae as resolveTokenCategory,a as resolveTokenSets,z as tamaguiFontKeyFromRole,j as toCamelCaseKey,o as toCssVar,g as toTamaguiValue,oe as toTokenKey,Ae as typographyFontKey};
95
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&D.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),D.push(`export default config;`,``),D.join(`
96
+ `)}function Kt(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?oe(e.tokens,n):[];if(a.length===0&&!i)return{};let o=n.outputPath??`tamagui.config.ts`,s=Gt(e,a,n),c=n.installGuide??Xe({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 qt=e(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Kt(t,e??{})}));export{X as collectColorScales,Ke as collectTamaguiFonts,At as colorLightness,qt as default,oe as flattenTokens,Je as fontVarName,n as formatTokenValue,Kt as generateTamaguiConfig,E as isPaletteGroup,Z as orderPaletteForScheme,Xe as renderInstallMd,Gt as renderTamaguiConfig,re as resolveTokenCategory,a as resolveTokenSets,B as tamaguiFontKeyFromRole,M as toCamelCaseKey,o as toCssVar,h as toTamaguiValue,ie as toTokenKey,Oe as typographyFontKey};
97
97
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/tamagui",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "type": "module",
5
5
  "description": "Razorwind plugin that creates Tamagui theme tokens from Razorwind design tokens.",
6
6
  "repository": {
@@ -85,10 +85,10 @@
85
85
  "dependencies": {
86
86
  "@power-plant/core": "^0.0.90",
87
87
  "@power-plant/dtcg-schema": "^0.0.1",
88
- "@razorwind/core": "^0.0.55",
89
- "@stryke/type-checks": "^0.6.42",
90
- "@stryke/helpers": "^0.10.49",
91
- "@stryke/string-format": "^0.17.51"
88
+ "@razorwind/core": "^0.0.56",
89
+ "@stryke/type-checks": "^0.6.43",
90
+ "@stryke/helpers": "^0.10.50",
91
+ "@stryke/string-format": "^0.17.52"
92
92
  },
93
93
  "peerDependencies": {
94
94
  "@tamagui/config": ">=1.120.0",
@@ -106,5 +106,5 @@
106
106
  "typescript": "^6.0.3"
107
107
  },
108
108
  "publishConfig": { "access": "public" },
109
- "gitHead": "a0e63cfffa72f4e3438a28e633cc72c29aa065fd"
109
+ "gitHead": "e360b927faf08cb025ae429055c52ce504d3596b"
110
110
  }