@razorwind/tamagui 0.0.45 → 0.0.47

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 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:ge(t)}}function Fe(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 V(e,t){return{...t,...e}}function H(e,t){return{...e,size:V(e.size,t.size),lineHeight:V(e.lineHeight,t.lineHeight),weight:V(e.weight,t.weight),letterSpacing:V(e.letterSpacing,t.letterSpacing)}}function Ie(e){return Object.keys(e.size).length>0?e:{...e,size:{...he}}}function Le(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=z(l,c):s&&(l=Pe(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 Re(e,t){let n=new Map(e.map(e=>[e.path,e])),r=Fe(e,n),a=new Map,o=e=>{a.set(e.key,e)};if(t)for(let[e,n]of je(t))o(H(z(B(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)??B(e),l=Me(t,s,i.path),u=c;l?u=z(u,l):(s&&c.webFamily===B(e).webFamily||s&&!a.has(e))&&(u=Pe(u,s)),o(H(u,r))}for(let i of e){if(!Te(i))continue;let e=Ce(i.path);o(Le(H(a.get(e)??B(e),r),i,n,t))}return(0,i.getUniqueBy)([...a.values()].map(Ie).toSorted((e,t)=>e.key.localeCompare(t.key)),e=>e.key)}function ze(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:o(e)}function U(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${ze(e)}: ${o(t)}`).join(`,
4
- `)}\n${r}}`}function Be(e,t){let n=`${e.replaceAll(/\W/g,``)||`font${t}`}Font`;return/^[A-Z_]/i.test(n)?n:`font${t}`}function Ve(e,t){let n=o(e.webFamily),r=o(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${U(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${U(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${U(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${U(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
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 ee(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function y(e){return e===!0||e===`true`||e===1}function b(e){return y(e.primitive)||y(e.$primitive)?!0: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 te(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 w(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 T(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 E(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`:T(r)}function D(e,n,r,i,a,s){if(!(0,t.isObject)(e))return;let c=a||b(e)||v(e),l=C(e,r);if(g(e)){let r=te(e),a=n.join(`.`),u=w(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?E(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`||ee(t,r)||x(t,r)||D(r,[...n,t],l,i,c,s)}function O(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;D(n.tokens,[],void 0,e,!1,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}const k=/^\{([^{}]+)\}$/,A=/^(?:typography|type|text)$/i,j=/^(?:font|fonts|font-family|fontFamily)$/i,M=/^(?:font-size|fontSize)$/i,N=/^(?:font-weight|fontWeight)$/i,ne=/^(?:line-height|lineHeight|leading)$/i,re=/^(?:letter-spacing|letterSpacing|tracking)$/i,ie=/^(?:[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,ae=[`fontFamily`,`font-family`,`family`],oe=[`fontSize`,`font-size`,`size`],se=[`fontWeight`,`font-weight`,`weight`],ce=[`lineHeight`,`line-height`,`leading`],le=[`letterSpacing`,`letter-spacing`,`tracking`],ue={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function P(e){if(typeof e==`string`)return k.exec(e.trim())?.[1]?.trim()}function F(e,t){let n=P(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=P(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function I(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function de(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function fe(e){if(typeof e==`string`){let t=e.trim();return t.length===0||P(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 pe(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function L(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 me(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||P(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 he(e,t){let n=L(e);if(n!=null)return pe(t!=null&&n>0&&n<=4?n*t:n)}function R(e,t){return t.test(e.split(`.`)[0]??``)}function ge(e){return e.split(`.`).filter(Boolean).at(-1)??e}function _e(e,t){let n=e.split(`.`).filter(Boolean);return n[0]&&t.test(n[0])&&n.shift(),n}function ve(e){let t=e.flatMap(e=>e.split(`-`)).filter(Boolean);return t.length===0?`body`:t.map((e,t)=>t===0?`${e.charAt(0).toLowerCase()}${e.slice(1)}`:`${e.charAt(0).toUpperCase()}${e.slice(1)}`).join(``)}function z(e){switch(e.toLowerCase()){case`sans`:case`body`:case`serif`:return`body`;case`monospace`:case`mono`:return`mono`;default:return ve([e])}}function ye(e){return e.role?z(e.role):z(e.name)}function be(e){let t=_e(e,A);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&ie.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function xe(e){return z(_e(e,j)[0]??ge(e))}function Se(e,t){let n=_e(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:ve(n)}function Ce(e){return e.type===`typography`&&(0,t.isObject)(e.value)}function we(e){return e.category===`fontSize`||e.category===`fontWeight`||Te(e)||Ee(e)||De(e)||Oe(e)?!1:e.type===`fontFamily`||R(e.path,j)}function Te(e){return e.category===`fontSize`||R(e.path,M)}function Ee(e){return e.category===`fontWeight`||e.type===`fontWeight`||R(e.path,N)}function De(e){return R(e.path,ne)}function Oe(e){return R(e.path,re)}function ke(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 Ae(e){let t=new Map;for(let n of Object.values(e)){let e=ye(n);t.has(e)&&(e=ke(t,ve([n.name]))),t.set(e,n)}return t}function je(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=de(t).toLowerCase();return i.find(e=>(0,r.fontFamilyName)(e).toLowerCase()===a||e.title.toLowerCase()===a||e.name.toLowerCase()===a)}function Me(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 B(e,t){return{...e,webFamily:(0,r.cssFontFamily)(t),nativeFamily:(0,r.fontFamilyName)(t),face:t.source===`local`?Me(t):e.face}}function V(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function Ne(e,t){return{...e,webFamily:t,nativeFamily:de(t)}}const Pe=/^(?:font-size|fontSize|font-weight|fontWeight|line-height|lineHeight|leading|letter-spacing|letterSpacing|tracking)$/i;function H(e,t){let n={true:e},r=P(t);if(!r)return n;let i=Se(r,Pe);return i&&i!==`true`&&(n[i]=e),n}function Fe(e){return Object.keys(e.size).length>0?e:{...e,size:{...ue}}}function Ie(e,n,r,i){if(!(0,t.isObject)(n.value))return e;let a=I(n.value,ae),o=P(a),s=fe(F(a,r)),c=je(i,s,o),l=e;c?l=B(l,c):s&&(l=Ne(l,s));let u=I(n.value,oe),d=L(F(u,r));d!=null&&(l={...l,size:H(d,u)});let f=I(n.value,se),p=me(F(f,r));p&&(l={...l,weight:H(p,f)});let m=I(n.value,le),h=L(F(m,r));h!=null&&(l={...l,letterSpacing:H(h,m)});let g=I(n.value,ce),_=he(F(g,r),l.size.true??d);return _!=null&&(l={...l,lineHeight:H(_,g)}),Le(l)}function Le(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 Re(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 Ae(t))i(B(V(e),n));for(let a of e){if(!we(a)||Ce(a))continue;let e=xe(a.path),o=fe(F(a.value,n)),s=r.get(e)??V(e),c=je(t,o,a.path),l=s;c?l=B(l,c):(o&&s.webFamily===V(e).webFamily||o&&!r.has(e))&&(l=Ne(l,o)),i(l)}for(let a of e){if(!Ce(a))continue;let e=be(a.path);i(Ie(r.get(e)??V(e),a,n,t))}return[...r.values()].map(Fe).toSorted((e,t)=>e.key.localeCompare(t.key))}function ze(e){return/^\d+$/.test(e)||/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}function U(e,t=4){let n=` `.repeat(t),r=` `.repeat(Math.max(t-2,0)),i=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0}));return i.length===0?`{}`:`{\n${i.map(([e,t])=>`${n}${ze(e)}: ${a(t)}`).join(`,
4
+ `)}\n${r}}`}function Be(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 Ve(e,t){let n=a(e.webFamily),r=a(e.nativeFamily),i=[n===r?` family: ${n}`:` family: isWeb ? ${n} : ${r}`,` size: ${U(e.size)}`];return Object.keys(e.lineHeight).length>0&&i.push(` lineHeight: ${U(e.lineHeight)}`),Object.keys(e.weight).length>0&&i.push(` weight: ${U(e.weight)}`),Object.keys(e.letterSpacing).length>0&&i.push(` letterSpacing: ${U(e.letterSpacing)}`),e.face&&i.push(` face: ${e.face}`),`const ${t} = createFont({\n${i.join(`,
5
5
  `)}\n});`}function He(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
@@ -41,26 +41,26 @@ export function App() {
41
41
  - \`color="$primary"\` / \`padding="$sm"\` / \`borderRadius="$md"\`
42
42
  - \`fontFamily="$body"\` / \`fontSize="$true"\` / \`fontWeight="$bold"\`
43
43
  - Language variants: \`<FontLanguage body="cn">\` when a \`body_cn\` font is generated
44
- - \`boxShadow="$shadow.sm"\` / \`boxShadow="$insetShadow.xs"\`
44
+ - \`boxShadow="$shadow.sm"\` / \`boxShadow="$insetShadow.xs"\` / \`boxShadow="$ringAccent"\`
45
45
  - \`textShadow="$textShadow.sm"\`
46
46
  - \`filter="$dropShadow.sm"\`
47
47
 
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 Ue=new Set([`default`,`light`,`theme`]),We=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ge=[`base`,`gray`,`grey`,`neutral`],Ke={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function qe(e){return Ue.has(e)}function Je(e){return e===`dark`}function W(e,t){let n=new Map,r=t===`dark`?Je:qe;for(let t of e){let e=t.theme?.toLowerCase();(!e||We.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 Ye=new Set([`fontSize`,`blur`]),Xe=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function Ze(e){return/^px\(-?\d/.test(e)}function Qe(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 $e(e,t){if(e.category&&Ye.has(e.category)&&typeof e.tamaguiValue==`number`)return`px(${e.tamaguiValue})`;if(typeof e.tamaguiValue==`string`){let n=ft(e.tamaguiValue,t);return e.category===`dropShadow`?et(n):n}return e.tamaguiValue}function et(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 tt(e){let t={},n=ct(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey)continue;let e=Qe(r);if(!e)continue;let i=$e(r,n);if(typeof i==`string`&&ut(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function nt(e,t){let n={},r=(e,t)=>{let r=t.cssValue;typeof r!=`string`||r.length===0||q(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 G(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`&&Ze(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 rt(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 it=/^\{([^{}]+)\}$/,at=/\{([^{}]+)\}/g,ot=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,st=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function ct(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[(0,t.toThemeCssVar)(e.path),e]))}}function lt(e){if(typeof e==`string`)return it.exec(e.trim())?.[1]?.trim()}function K(e){if(typeof e==`string`)return ot.exec(e.trim())?.[1]}function q(e){return lt(e)!=null||K(e)!=null}function ut(e){return/var\(|\{[^{}]+\}/.test(e)}function dt(e,t){let n=pt(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&&!q(e))return e}function ft(e,t){return e.replace(at,(e,n)=>{let r=t.byPath.get(n.trim());return r?dt(r,t)??e:e}).replace(st,(e,n)=>{let r=t.byCssVar.get(n);return r?dt(r,t)??e:e})}function pt(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=lt(r.value);if(e){let n=t.get(e);if(!n||n.path===r.path)return r;r=n;continue}let a=K(r.value)??K(r.cssValue)??K(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 mt(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${o(e)}]`}function ht(e,t,n){let r=J(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function gt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function J(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=gt(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=gt(Number(a));if(o!=null)return{name:i,step:o}}function _t(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function vt(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&_t(t,e.name,e.step,n.tamaguiValue)}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function Y(e){let t={};for(let n of e){if(!n.primitive||typeof n.tamaguiValue!=`string`)continue;let e=J(n);e&&_t(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:vt(e)}function X(e,t){if(e.length<2)return[...e];let n=xt(e[0]),r=xt(e[e.length-1]);if(n==null||r==null||n===r)return[...e];let i=n>r;return t===`light`?i?[...e]:e.toReversed():i?e.toReversed():[...e]}function Z(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function yt(e){let t=e.startsWith(`#`)?e.slice(1):``;if((t.length===3||t.length===4)&&(t=[...t].map(e=>e+e).join(``)),t.length===8&&(t=t.slice(0,6)),t.length!==6||/[^0-9a-f]/i.test(t))return;let n=Number.parseInt(t.slice(0,2),16)/255,r=Number.parseInt(t.slice(2,4),16)/255,i=Number.parseInt(t.slice(4,6),16)/255;return .2126*Z(n)+.7152*Z(r)+.0722*Z(i)}function Q(e){let t=e.trim();if(t.endsWith(`%`)){let e=Number.parseFloat(t);return Number.isFinite(e)?e/100:void 0}let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0}function bt(e){return e>1?e/100:e}function $(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function xt(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=yt(t);if(n!=null)return n;let r=$(t,`oklch`);if(r?.[0]){let e=Q(r[0]);return e==null?void 0:bt(e)}let i=$(t,`hsla?`);if(i?.[2]){let e=Q(i[2]);return e==null?void 0:bt(e)}let a=$(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Q(a[0]),t=Q(a[1]),n=Q(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Z(r(e,a[0]))+.7152*Z(r(t,a[1]))+.0722*Z(r(n,a[2]))}}function 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=X(r.map(([,e])=>e),n),a={};for(let[e,[n]]of r.entries())a[`${t}${n}`]=i[e]??r[e][1];return a}function 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(X(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 Ge){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=Y(W(t,`light`)),r=Y(W(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=Y(e),{byPath:r,byCssVar:i}=ct(e),a={};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=pt(s,r,i),c=ht(e,t,n);if(c){a[s.tokenKey]=mt(c);continue}let l=e.tamaguiValue;q(l)||q(e.cssValue)||(typeof l==`string`||typeof l==`number`)&&(a[s.tokenKey]=o(l))}return a}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}: {
51
+ `}const Ue=new Set([`default`,`light`,`theme`]),We=/^base(?:[A-Z]\w*|[._-].+)?$/i,Ge=/^ring(?:\.|$)/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 Ue.has(e)}function Ye(e){return e===`dark`}function W(e,t){let n=new Map,r=t===`dark`?Ye:Je;for(let t of e){let e=t.theme?.toLowerCase();(!e||We.test(e))&&n.set(t.path,t)}for(let t of e){let e=t.theme?.toLowerCase();e&&r(e)&&n.set(t.path,t)}return[...n.values()]}function Xe(e){return Ge.test(e.path)&&e.category===`shadow`}const Ze=new Set([`fontSize`,`blur`]),Qe=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function $e(e){return/^px\(-?\d/.test(e)}function et(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?T([t]):e.tokenKey}return e.tokenKey??``}function tt(e,t){if(e.category&&Ze.has(e.category)&&typeof e.tamaguiValue==`number`)return`px(${e.tamaguiValue})`;if(typeof e.tamaguiValue==`string`){let n=ft(e.tamaguiValue,t);return e.category===`dropShadow`?nt(n):n}return e.tamaguiValue}function nt(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 rt(e){let t={},n=K(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||Xe(r))continue;let e=et(r);if(!e)continue;let i=tt(r,n);if(typeof i==`string`&&dt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function it(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 G(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`&&$e(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 at(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 ot=/^\{([^{}]+)\}$/,st=/\{([^{}]+)\}/g,ct=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,lt=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function K(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 ot.exec(e.trim())?.[1]?.trim()}function q(e){if(typeof e==`string`)return ct.exec(e.trim())?.[1]}function J(e){return ut(e)!=null||q(e)!=null}function dt(e){return/var\(|\{[^{}]+\}/.test(e)}function Y(e,t){let n=pt(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 ft(e,t){return e.replace(st,(e,n)=>{let r=t.byPath.get(n.trim());return r?Y(r,t)??e:e}).replace(lt,(e,n)=>{let r=t.byCssVar.get(n);return r?Y(r,t)??e:e})}function pt(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=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 mt(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${a(e)}]`}function ht(e,t,n){let r=_t(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function gt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function _t(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=gt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:T([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=gt(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=_t(n);e&&vt(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=_t(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=$(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 Z(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*Z(n)+.7152*Z(r)+.0722*Z(i)}function Q(e){let t=e.trim();if(t.endsWith(`%`)){let e=Number.parseFloat(t);return Number.isFinite(e)?e/100:void 0}let n=Number.parseFloat(t);return Number.isFinite(n)?n:void 0}function 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 $(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=Q(r[0]);return e==null?void 0:St(e)}let i=Ct(t,`hsla?`);if(i?.[2]){let e=Q(i[2]);return e==null?void 0:St(e)}let a=Ct(t,`rgba?`);if(a?.[0]&&a[1]&&a[2]){let e=Q(a[0]),t=Q(a[1]),n=Q(a[2]);if(e==null||t==null||n==null)return;let r=(e,t)=>t.trim().endsWith(`%`)||e<=1?e:e/255;return .2126*Z(r(e,a[0]))+.7152*Z(r(t,a[1]))+.0722*Z(r(n,a[2]))}}function wt(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 Tt(e,t,n){let r=wt(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 Et(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 Dt(e,t,n){let r=wt(e,t);if(!(r.length<2))return Et(bt(r.map(([,e])=>e),n))}function Ot(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=Dt(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function kt(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=X(W(t,`light`)),r=X(W(t,`dark`)),i=Ot(n,`light`),a=Ot(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function At(e,t){let n=X(e),{byPath:r,byCssVar:i}=K(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=pt(s,r,i),c=ht(e,t,n);if(c){o[s.tokenKey]=mt(c);continue}let l=e.tamaguiValue;J(l)||J(e.cssValue)||(typeof l==`string`||typeof l==`number`)&&(o[s.tokenKey]=a(l))}return o}function jt(e){return e.replaceAll(`\\`,`\\\\`).replaceAll("`","\\`").replaceAll("${","\\${")}function Mt(e,t,n,r){let i=pt(e,t.byPath,t.byCssVar),a=ht(i,n,r);if(a)return{kind:`theme`,property:a};let o=Y(i,t);if(o)return{kind:`text`,value:o}}function Nt(e,t,n,r){let i=[],a=/\{([^{}]+)\}|var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g,o=0;for(let s of e.matchAll(a)){let a=s.index??0;a>o&&i.push({kind:`text`,value:e.slice(o,a)});let c=s[1]?t.byPath.get(s[1].trim()):s[2]?t.byCssVar.get(s[2]):void 0;if(!c)return;let l=Mt(c,t,n,r);if(!l)return;i.push(l),o=a+s[0].length}return o<e.length&&i.push({kind:`text`,value:e.slice(o)}),i}function Pt(e){return e.some(e=>e.kind===`theme`)?`\`${e.map(e=>e.kind===`theme`?`\${${mt(e.property)}}`:jt(e.value)).join(``)}\``:a(e.map(e=>e.kind===`text`?e.value:``).join(``))}function Ft(e,t){let n=K(e),r=X(e.filter(e=>e.category===`color`)),i={};for(let a of e){if(!Xe(a)||!a.tokenKey)continue;let e=typeof a.tamaguiValue==`string`?a.tamaguiValue:a.cssValue;if(typeof e!=`string`||e.length===0)continue;let o=Nt(e,n,t,r);o&&(i[a.tokenKey]=Pt(o))}return i}function It(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=Tt(e[i]??t[i]??{},i,`light`),a=Tt(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
54
54
  light: ${G(n,8)},
55
55
  dark: ${G(a,8)}
56
56
  }`)}if(r.length!==0)return`{\n${r.join(`,
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:o(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,a=n.animations??`css`,s=n.includeTypeAugmentation!==!1,c=t.filter(e=>e.category===`color`),l=W(c,`light`),u=W(c,`dark`),d=Y(l),f=Y(u.length>0?u:l),{lightPalette:p,darkPalette:m,lightBaseName:h,darkBaseName:ee}=Dt(t),g=kt(d,f),_=Ot(l,h),v=Ot(u.length>0?u:l,u.length>0?ee:h),te=Ft(Nt({lightSemantic:_,darkSemantic:v,lightScales:d,darkScales:f,lightPalette:p,darkPalette:m}),{specName:e.name}),y=tt(W(t,`light`)),b=nt(l,u),x=[];Object.keys(b).length>0&&x.push(` color: ${G(b,4)}`);for(let e of Xe){let t=y[e];t&&Object.keys(t).length>0&&x.push(` ${e}: ${G(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 Lt(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 Rt(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 zt(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 Bt(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 Lt([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of Rt(e.lightScales,e.darkScales))t.add(n);for(let n of zt(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Vt(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: string;`}function Ht(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(Vt),`}`,``]}function Ut(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=W(c,`light`),u=W(c,`dark`),d=X(l),f=X(u.length>0?u:l),{lightPalette:p,darkPalette:m,lightBaseName:h,darkBaseName:g}=kt(t),_=It(d,f),v=W(t,`light`),ee=W(t,`dark`),y=u.length>0?ee:v,b=u.length>0?g:h,x={...At(l,h),...Ft(v,h)},S={...At(u.length>0?u:l,b),...Ft(y,b)},C=Ht(Bt({lightSemantic:x,darkSemantic:S,lightScales:d,darkScales:f,lightPalette:p,darkPalette:m}),{specName:e.name}),te=rt(v),w=it(l,u),T=[];Object.keys(w).length>0&&T.push(` color: ${G(w,4)}`);for(let e of Qe){let t=te[e];t&&Object.keys(t).length>0&&T.push(` ${e}: ${G(t,4)}`)}let E=[];p&&E.push(` lightPalette: ${a(p)}`),m&&E.push(` darkPalette: ${a(m)}`),_&&E.push(` childrenThemes: ${_}`),(Object.keys(x).length>0||Object.keys(S).length>0)&&E.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
58
58
  return scheme === "dark"
59
- ? ${rt(v,8)}
60
- : ${rt(_,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 "${Ke[a]}";`),n.importConfig&&C.push(`import userConfig from "${n.importConfig}";`);let w=[`createTamagui`,`px`];x.length>0&&w.push(`createTokens`);let T=Re(W(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=Be(t.key,e);O.set(t.key,n),E.push(Ve(t,n),``)}let k=[];if(i&&k.push(` ...defaultConfig`),a!==!1&&k.push(` animations`),x.length>0&&(i?k.push(` tokens: {
59
+ ? ${at(S,8)}
60
+ : ${at(x,8)};
61
+ }`);let D=[`import { isWeb } from '@tamagui/constants';`];i?D.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):D.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),o!==!1&&D.push(`import { animations } from "${qe[o]}";`),n.importConfig&&D.push(`import userConfig from "${n.importConfig}";`);let O=[`createTamagui`,`px`];T.length>0&&O.push(`createTokens`);let k=Re(t,r);k.length>0&&O.push(`createFont`),D.push(`import { ${O.join(`, `)} } from "@tamagui/core";`);let A=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...D,``];T.length>0&&A.push(`const tokens = createTokens({`,T.join(`,
62
+ `),`});`,``);let j=E.length>0?`createV5Theme({\n${E.join(`,
63
+ `)}\n})`:`createV5Theme()`;A.push(`const themes = ${j};`,``);let M=new Map;if(k.length>0)for(let[e,t]of k.entries()){let n=Be(t.key,e);M.set(t.key,n),A.push(Ve(t,n),``)}let N=[];if(i&&N.push(` ...defaultConfig`),o!==!1&&N.push(` animations`),T.length>0&&(i?N.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
+ }`):N.push(` tokens`)),N.push(` themes`),M.size>0){let e=[...M.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:a(e)}: ${t}`);i?N.push(` fonts: {
83
83
  ...defaultConfig.fonts,
84
84
  ${e.join(`,
85
85
  `)}
86
- }`):k.push(` fonts: {
86
+ }`):N.push(` fonts: {
87
87
  ${e.join(`,
88
88
  `)}
89
- }`)}return n.shorthands&&k.push(` shorthands: ${G(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&&N.push(` shorthands: ${G(n.shorthands,4)}`),n.media&&N.push(` media: ${a(n.media)}`),n.defaultFont&&N.push(` defaultFont: ${a(n.defaultFont)}`),A.push(``,...C??[],`/**
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 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??He({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=Y,exports.collectTamaguiFonts=Re,exports.colorLightness=xt,exports.default=Rt,exports.flattenTokens=k,exports.fontVarName=Be,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=Lt,exports.isPaletteGroup=v,exports.orderPaletteForScheme=X,exports.renderInstallMd=He,exports.renderTamaguiConfig=It,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({`,N.join(`,
95
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),s&&A.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),A.push(`export default config;`,``),A.join(`
96
+ `)}function Wt(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?O(e.tokens,r):[];if(o.length===0&&!a)return{};let s=r.outputPath??`tamagui.config.ts`,c=Ut(e,o,r),l=r.installGuide??He({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 Gt=(0,e.definePlugin)(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>Wt(t,e??{})}));exports.collectColorScales=X,exports.collectTamaguiFonts=Re,exports.colorLightness=$,exports.default=Gt,exports.flattenTokens=O,exports.fontVarName=Be,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=Wt,exports.isPaletteGroup=v,exports.orderPaletteForScheme=bt,exports.renderInstallMd=He,exports.renderTamaguiConfig=Ut,exports.resolveTokenCategory=w,exports.resolveTokenSets=t.resolveTokenSets,exports.tamaguiFontKeyFromRole=z,exports.toCamelCaseKey=T,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=o,exports.toTokenKey=E,exports.typographyFontKey=be;
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;;;;;;;iBAoiBW,mBACd,aAAa,cACZ,eAAe;;;;;;;iBAmCF,sBACd,2BACA,QAAQ;;;;;iBA+EM,eAAe;;;;;;;;;;iBA2af,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;;;;KCmCtC;;;;;;;iBA6iBW,mBACd,aAAa,cACZ,eAAe;;;;;;;iBAmCF,sBACd,2BACA,QAAQ;;;;;iBA+EM,eAAe;;;;;;;;;;;iBA2jBf,oBACd,MAAM,QACN,QAAQ,aACR,UAAS;;;;iBAyQK,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,7 +1,7 @@
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 ee(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function m(e){return typeof e==`string`?`"${ee(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,te=/^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:te,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:k(e)===`palette`}function ne(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function D(e){return e===!0||e===`true`||e===1}function O(e){return D(e.primitive)||D(e.$primitive)?!0:k(e)===`primitive`}function re(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function ie(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function k(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function ae(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 oe(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`:te.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 A(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 se(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`:A(r)}function ce(e,t,r,a,o,s){if(!i(e))return;let c=o||O(e)||E(e),l=k(e,r);if(w(e)){let r=ae(e),i=t.join(`.`),o=oe(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?se(i):void 0,description:ie(e),theme:a,primitive:c});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||ne(n,r)||re(n,r)||ce(r,[...t,n],l,a,c,s)}function le(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;ce(t.tokens,[],void 0,e,!1,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const ue=/^\{([^{}]+)\}$/,de=/^(?:typography|type|text)$/i,fe=/^(?:font|fonts|font-family|fontFamily)$/i,pe=/^(?:font-size|fontSize)$/i,me=/^(?:font-weight|fontWeight)$/i,he=/^(?:line-height|lineHeight|leading)$/i,ge=/^(?:letter-spacing|letterSpacing|tracking)$/i,_e=/^(?:[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,ve=[`fontFamily`,`font-family`,`family`],ye=[`fontSize`,`font-size`,`size`],be=[`fontWeight`,`font-weight`,`weight`],xe=[`lineHeight`,`line-height`,`leading`],Se=[`letterSpacing`,`letter-spacing`,`tracking`],Ce={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 ue.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 we(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function Te(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 Ee(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function P(e){if(e==null)return;let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return t;if(typeof t==`string`){let e=/^(-?\d+(?:\.\d+)?)%$/.exec(t.trim());if(e)return Number.parseFloat(e[1])/100}}function De(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||j(t))return;let n=Number(t);return Number.isNaN(n)?t:String(n)}let t=h(e);if(typeof t==`number`&&Number.isFinite(t))return String(t);if(typeof t==`string`&&t.length>0)return t}function Oe(e,t){let n=P(e);if(n!=null)return Ee(t!=null&&n>0&&n<=4?n*t:n)}function F(e,t){return t.test(e.split(`.`)[0]??``)}function ke(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`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 L([e])}}function Ae(e){return e.role?R(e.role):R(e.name)}function je(e){let t=I(e,de);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&_e.test(n)&&!n.includes(`_`)?`${L(t.slice(0,-1))}_${n}`:L(t)}function Me(e){return R(I(e,fe)[0]??ke(e))}function z(e,t){let n=I(e,t);return n.length===0||n.length===1&&/^(?:DEFAULT|default)$/i.test(n[0])?`true`:L(n)}function Ne(e){return e.type===`typography`&&i(e.value)}function Pe(e){return e.category===`fontSize`||e.category===`fontWeight`||Fe(e)||Ie(e)||Le(e)||Re(e)?!1:e.type===`fontFamily`||F(e.path,fe)}function Fe(e){return e.category===`fontSize`||F(e.path,pe)}function Ie(e){return e.category===`fontWeight`||e.type===`fontWeight`||F(e.path,me)}function Le(e){return F(e.path,he)}function Re(e){return F(e.path,ge)}function ze(e){let t=new Map;for(let n of Object.values(e)){let e=Ae(n),r=t.get(e);(!r||n.role===e&&r.role!==e)&&t.set(e,n)}return t}function Be(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=we(t).toLowerCase();return r.find(e=>f(e).toLowerCase()===i||e.title.toLowerCase()===i||e.name.toLowerCase()===i)}function Ve(e){let t=new Map;for(let n of e.files){let e=String(n.weight??400),r=c(n.path).replace(/\.[^.]+$/,``),i=t.get(e)??{};n.style===`italic`||n.style===`oblique`?i.italic=r:i.normal=r,t.set(e,i)}if(t.size!==0)return`{\n${[...t.entries()].toSorted(([e],[t])=>e.localeCompare(t,void 0,{numeric:!0})).map(([e,t])=>{let n=[];return t.normal&&n.push(`normal: ${m(t.normal)}`),t.italic&&n.push(`italic: ${m(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
3
- `)}\n }`}function B(e,t){return{...e,webFamily:d(t),nativeFamily:f(t),face:t.source===`local`?Ve(t):e.face}}function V(e){return{key:e,webFamily:`system-ui, sans-serif`,nativeFamily:`system-ui`,size:{},lineHeight:{},weight:{},letterSpacing:{}}}function He(e,t){return{...e,webFamily:t,nativeFamily:we(t)}}function Ue(e,t){let n={},r=[],i={},a={};for(let o of e){if(Fe(o)){let e=P(M(o.value,t));e!=null&&(n[z(o.path,pe)]=e);continue}if(Ie(o)){let e=De(M(o.value,t));e&&(i[z(o.path,me)]=e);continue}if(Re(o)){let e=P(M(o.value,t));e!=null&&(a[z(o.path,ge)]=e);continue}Le(o)&&r.push({key:z(o.path,he),value:M(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=Oe(e.value,t);r!=null&&(s[e.key]=r)}return{size:n,lineHeight:s,weight:i,letterSpacing:a}}function H(e,t){return{...t,...e}}function U(e,t){return{...e,size:H(e.size,t.size),lineHeight:H(e.lineHeight,t.lineHeight),weight:H(e.weight,t.weight),letterSpacing:H(e.letterSpacing,t.letterSpacing)}}function We(e){return Object.keys(e.size).length>0?e:{...e,size:{...Ce}}}function Ge(e,t,n,r){if(!i(t.value))return e;let a=N(t.value,ve),o=j(a),s=Te(M(a,n)),c=Be(r,s,o),l=e;c?l=B(l,c):s&&(l=He(l,s));let u=P(M(N(t.value,ye),n));u!=null&&(l={...l,size:{...l.size,true:u}});let d=De(M(N(t.value,be),n));d&&(l={...l,weight:{...l.weight,true:d}});let f=P(M(N(t.value,Se),n));f!=null&&(l={...l,letterSpacing:{...l.letterSpacing,true:f}});let p=Oe(M(N(t.value,xe),n),l.size.true??u);return p!=null&&(l={...l,lineHeight:{...l.lineHeight,true:p}}),l}function Ke(e,t){let n=new Map(e.map(e=>[e.path,e])),r=Ue(e,n),i=new Map,a=e=>{i.set(e.key,e)};if(t)for(let[e,n]of ze(t))a(U(B(V(e),n),r));for(let o of e){if(!Pe(o)||Ne(o))continue;let e=Me(o.path),s=Te(M(o.value,n)),c=i.get(e)??V(e),l=Be(t,s,o.path),u=c;l?u=B(u,l):(s&&c.webFamily===V(e).webFamily||s&&!i.has(e))&&(u=He(u,s)),a(U(u,r))}for(let o of e){if(!Ne(o))continue;let e=je(o.path);a(Ge(U(i.get(e)??V(e),r),o,n,t))}return p([...i.values()].map(We).toSorted((e,t)=>e.key.localeCompare(t.key)),e=>e.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.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(`,
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,b=/^drop-shadow(?:\.|$)/i,x=/^text-shadow(?:\.|$)/i,S=/^(?:blur|blur-?radius)(?:\.|$)/i,C=new Set([`color`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`]),ee=[{prefix:/^(?:color|colours?|palette)(?:\.|$)/i,category:`color`},{prefix:g,category:`fontSize`},{prefix:_,category:`fontWeight`},{prefix:b,category:`dropShadow`},{prefix:y,category:`insetShadow`},{prefix:x,category:`textShadow`},{prefix:v,category:`shadow`},{prefix:S,category:`blur`},{prefix:/^(?:space|spacing|gap)(?:\.|$)/i,category:`space`},{prefix:/^inset(?:\.|$)/i,category:`space`},{prefix:/^(?:size|sizing)(?:\.|$)/i,category:`size`},{prefix:/^(?:radius|rounded|radii)(?:\.|$)/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)(?:\.|$)/i,category:`zIndex`}];function te(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function w(e){return e===!0||e===`true`||e===1}function T(e){return w(e.palette)||w(e.$palette)?!0:j(e)===`palette`}function E(e,t){return(e===`palette`||e===`$palette`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function D(e){return e===!0||e===`true`||e===1}function O(e){return D(e.primitive)||D(e.$primitive)?!0:j(e)===`primitive`}function k(e,t){return(e===`primitive`||e===`$primitive`)&&(typeof t==`boolean`||typeof t==`number`||typeof t==`string`)}function A(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 M(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 N(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 y.test(e)?`insetShadow`:b.test(e)?`dropShadow`:x.test(e)?`textShadow`:`shadow`;if(t===`dimension`){if(g.test(e))return`fontSize`;if(S.test(e))return`blur`;if(/(?:^|\.)(?:space|spacing|gap)(?:\.|$)/i.test(e)||/(?:^|\.)inset(?:\.|$)/i.test(e))return`space`;if(/radius|rounded/i.test(e))return`radius`;if(/z-?index|elevation/i.test(e))return`zIndex`;if(/(?:^|\.)(?:size|sizing)(?:\.|$)/i.test(e)||/(?:^|\.)(?:width|height)(?:\.|$)/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`;if(t===`fontWeight`||_.test(e))return`fontWeight`}function P(e){return e.flatMap(e=>e.split(/[-_\s]+/)).filter(Boolean).map((e,t)=>{if(/^\d/.test(e))return e;let n=e.toLowerCase();return t===0?n:`${n.charAt(0).toUpperCase()}${n.slice(1)}`}).join(``)}function ne(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|primitive|space|spacing|gap|inset|shadow|inset-shadow|drop-shadow|text-shadow|font-size|fontSize|font-weight|fontWeight|size|sizing|radius|rounded|radii|z-?index|zindex|elevation|blur)$/i.test(n)&&t.shift();let r=t.length>0?t:e.split(`.`).slice(-1);return r.length===1&&/^(?:DEFAULT|default)$/i.test(r[0]??``)?`true`:P(r)}function re(e,t,r,a,o,s){if(!i(e))return;let c=o||O(e)||T(e),l=j(e,r);if(te(e)){let r=M(e),i=t.join(`.`),o=N(i,l)??(c||l===`primitive`||l===`palette`?`color`:void 0),u=n(r,l),d=o&&C.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?ne(i):void 0,description:A(e),theme:a,primitive:c});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)&&n!==`$palette`&&n!==`$primitive`||E(n,r)||k(n,r)||re(r,[...t,n],l,a,c,s)}function ie(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;re(t.tokens,[],void 0,e,!1,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}const ae=/^\{([^{}]+)\}$/,oe=/^(?:typography|type|text)$/i,se=/^(?:font|fonts|font-family|fontFamily)$/i,ce=/^(?:font-size|fontSize)$/i,le=/^(?:font-weight|fontWeight)$/i,ue=/^(?:line-height|lineHeight|leading)$/i,de=/^(?:letter-spacing|letterSpacing|tracking)$/i,fe=/^(?:[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,pe=[`fontFamily`,`font-family`,`family`],me=[`fontSize`,`font-size`,`size`],he=[`fontWeight`,`font-weight`,`weight`],ge=[`lineHeight`,`line-height`,`leading`],_e=[`letterSpacing`,`letter-spacing`,`tracking`],ve={1:12,2:14,3:16,4:18,5:20,6:24,7:28,8:32,9:40,10:48};function F(e){if(typeof e==`string`)return ae.exec(e.trim())?.[1]?.trim()}function I(e,t){let n=F(e);if(!n)return e;let r=t.get(n),i=new Set([n]);for(let e=0;e<8&&r;e++){let e=F(r.value);if(!e||i.has(e))return r.value;i.add(e),r=t.get(e)}return r?.value??e}function L(e,t){for(let n of t)if(e[n]!==void 0&&e[n]!==null)return e[n]}function ye(e){return(e.split(`,`)[0]?.trim()??e).replaceAll(/^["']|["']$/g,``)}function be(e){if(typeof e==`string`){let t=e.trim();return t.length===0||F(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 xe(e){return Number.isInteger(e)?e:Math.round(e*1e3)/1e3}function Se(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 Ce(e){if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`string`){let t=e.trim();if(t.length===0||F(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 we(e,t){let n=Se(e);if(n!=null)return xe(t!=null&&n>0&&n<=4?n*t:n)}function R(e,t){return t.test(e.split(`.`)[0]??``)}function Te(e){return e.split(`.`).filter(Boolean).at(-1)??e}function Ee(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=Ee(e,oe);if(t.length===0)return`body`;let n=t.at(-1);return n&&t.length>=2&&fe.test(n)&&!n.includes(`_`)?`${t.slice(0,-1).join(`-`)}_${n}`:t.join(`-`)}function ke(e){return B(Ee(e,se)[0]??Te(e))}function Ae(e,t){let n=Ee(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`||R(e.path,se)}function Ne(e){return e.category===`fontSize`||R(e.path,ce)}function Pe(e){return e.category===`fontWeight`||e.type===`fontWeight`||R(e.path,le)}function Fe(e){return R(e.path,ue)}function Ie(e){return R(e.path,de)}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=ye(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:ye(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=F(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:{...ve}}}function We(e,t,n,r){if(!i(t.value))return e;let a=L(t.value,pe),o=F(a),s=be(I(a,n)),c=ze(r,s,o),l=e;c?l=V(l,c):s&&(l=Ve(l,s));let u=L(t.value,me),d=Se(I(u,n));d!=null&&(l={...l,size:U(d,u)});let f=L(t.value,he),p=Ce(I(f,n));p&&(l={...l,weight:U(p,f)});let m=L(t.value,_e),h=Se(I(m,n));h!=null&&(l={...l,letterSpacing:U(h,m)});let g=L(t.value,ge),_=we(I(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=be(I(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
5
  `)}\n});`}function Xe(e){return`# Installing Tamagui Config
6
6
 
7
7
  Generated by \`@razorwind/tamagui\`.
@@ -41,26 +41,26 @@ export function App() {
41
41
  - \`color="$primary"\` / \`padding="$sm"\` / \`borderRadius="$md"\`
42
42
  - \`fontFamily="$body"\` / \`fontSize="$true"\` / \`fontWeight="$bold"\`
43
43
  - Language variants: \`<FontLanguage body="cn">\` when a \`body_cn\` font is generated
44
- - \`boxShadow="$shadow.sm"\` / \`boxShadow="$insetShadow.xs"\`
44
+ - \`boxShadow="$shadow.sm"\` / \`boxShadow="$insetShadow.xs"\` / \`boxShadow="$ringAccent"\`
45
45
  - \`textShadow="$textShadow.sm"\`
46
46
  - \`filter="$dropShadow.sm"\`
47
47
 
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 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?A([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:A([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}: {
51
+ `}const Ze=new Set([`default`,`light`,`theme`]),Qe=/^base(?:[A-Z]\w*|[._-].+)?$/i,$e=/^ring(?:\.|$)/i,et=[`base`,`gray`,`grey`,`neutral`],tt={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function nt(e){return Ze.has(e)}function rt(e){return e===`dark`}function G(e,t){let n=new Map,r=t===`dark`?rt:nt;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()]}function it(e){return $e.test(e.path)&&e.category===`shadow`}const at=new Set([`fontSize`,`blur`]),ot=[`space`,`size`,`radius`,`zIndex`,`blur`,`fontSize`,`shadow`,`insetShadow`,`dropShadow`,`textShadow`,`boxShadow`,`fontWeight`];function st(e){return/^px\(-?\d/.test(e)}function ct(e){if(e.category===`radius`&&e.tokenKey?.startsWith(`borderRadius`)){let t=e.tokenKey.replace(/^borderRadius/,``);return t?P([t]):e.tokenKey}return e.tokenKey??``}function lt(e,t){if(e.category&&at.has(e.category)&&typeof e.tamaguiValue==`number`)return`px(${e.tamaguiValue})`;if(typeof e.tamaguiValue==`string`){let n=xt(e.tamaguiValue,t);return e.category===`dropShadow`?ut(n):n}return e.tamaguiValue}function ut(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 dt(e){let t={},n=q(e);for(let r of e){if(!r.category||r.category===`color`||!r.tokenKey||it(r))continue;let e=ct(r);if(!e)continue;let i=lt(r,n);if(typeof i==`string`&&yt(i))continue;let a=t[r.category]??{};a[e]=i,t[r.category]=a}return t}function ft(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 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`&&st(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 pt(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 mt=/^\{([^{}]+)\}$/,ht=/\{([^{}]+)\}/g,gt=/^var\((--[^),\s]+)(?:\s*,[^)]*)?\)$/,_t=/var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g;function q(e){return{byPath:new Map(e.map(e=>[e.path,e])),byCssVar:new Map(e.map(e=>[s(e.path),e]))}}function vt(e){if(typeof e==`string`)return mt.exec(e.trim())?.[1]?.trim()}function J(e){if(typeof e==`string`)return gt.exec(e.trim())?.[1]}function Y(e){return vt(e)!=null||J(e)!=null}function yt(e){return/var\(|\{[^{}]+\}/.test(e)}function bt(e,t){let n=St(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&&!Y(e))return e}function xt(e,t){return e.replace(ht,(e,n)=>{let r=t.byPath.get(n.trim());return r?bt(r,t)??e:e}).replace(_t,(e,n)=>{let r=t.byCssVar.get(n);return r?bt(r,t)??e:e})}function St(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=vt(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 Ct(e){return/^[A-Z_$][\w$]*$/i.test(e)?`theme.${e}`:`theme[${m(e)}]`}function wt(e,t,n){let r=Et(e);if(r){if(t&&r.name.toLowerCase()===t.toLowerCase())return`color${r.step}`;if(n[r.name])return`${r.name}${r.step}`}}function Tt(e){if(e>=1&&e<=12)return e;if(e>=100&&e<=900&&e%100==0)return e/100}function Et(e){let t=e.path.split(`.`).filter(Boolean),n=t.at(-1);if(n&&/^\d+$/.test(n)){let e=Tt(Number(n)),r=t.at(-2);if(e!=null&&r&&!/^(?:color|colours?|palette)$/i.test(r))return{name:P([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=Tt(Number(a));if(o!=null)return{name:i,step:o}}function Dt(e,t,n,r){let i=e[t]??{};i[`${t}${n}`]=r,e[t]=i}function Ot(e){let t={};for(let n of e){if(typeof n.tamaguiValue!=`string`)continue;let e=Et(n);e&&Dt(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=Et(n);e&&Dt(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:Ot(e)}function Z(e,t){if(e.length<2)return[...e];let n=Mt(e[0]),r=Mt(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 kt(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 At(e){return e>1?e/100:e}function jt(e,t){let n=RegExp(`^${t}\\((.+)\\)$`,`i`).exec(e.trim());if(n?.[1])return n[1].split(/[\s,/]+/).filter(Boolean)}function Mt(e){let t=e.trim();if(!t||t.startsWith(`var(`)||t.includes(`{`))return;let n=kt(t);if(n!=null)return n;let r=jt(t,`oklch`);if(r?.[0]){let e=$(r[0]);return e==null?void 0:At(e)}let i=jt(t,`hsla?`);if(i?.[2]){let e=$(i[2]);return e==null?void 0:At(e)}let a=jt(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 Nt(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 Pt(e,t,n){let r=Nt(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 Ft(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 It(e,t,n){let r=Nt(e,t);if(!(r.length<2))return Ft(Z(r.map(([,e])=>e),n))}function Lt(e,t){let n=new Map(Object.entries(e).map(([e,t])=>[e.toLowerCase(),{name:e,scale:t}]));for(let e of et){let r=n.get(e);if(!r)continue;let i=It(r.scale,r.name,t);if(i)return{name:r.name,palette:i}}}function Rt(e){let t=e.filter(e=>e.category===`color`||e.primitive),n=X(G(t,`light`)),r=X(G(t,`dark`)),i=Lt(n,`light`),a=Lt(r,`dark`);return{lightPalette:i?.palette,darkPalette:a?.palette,lightBaseName:i?.name,darkBaseName:a?.name}}function zt(e,t){let n=X(e),{byPath:r,byCssVar:i}=q(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=St(o,r,i),s=wt(e,t,n);if(s){a[o.tokenKey]=Ct(s);continue}let c=e.tamaguiValue;Y(c)||Y(e.cssValue)||(typeof c==`string`||typeof c==`number`)&&(a[o.tokenKey]=m(c))}return a}function Bt(e){return e.replaceAll(`\\`,`\\\\`).replaceAll("`","\\`").replaceAll("${","\\${")}function Vt(e,t,n,r){let i=St(e,t.byPath,t.byCssVar),a=wt(i,n,r);if(a)return{kind:`theme`,property:a};let o=bt(i,t);if(o)return{kind:`text`,value:o}}function Ht(e,t,n,r){let i=[],a=/\{([^{}]+)\}|var\((--[^),\s]+)(?:\s*,[^)]*)?\)/g,o=0;for(let s of e.matchAll(a)){let a=s.index??0;a>o&&i.push({kind:`text`,value:e.slice(o,a)});let c=s[1]?t.byPath.get(s[1].trim()):s[2]?t.byCssVar.get(s[2]):void 0;if(!c)return;let l=Vt(c,t,n,r);if(!l)return;i.push(l),o=a+s[0].length}return o<e.length&&i.push({kind:`text`,value:e.slice(o)}),i}function Ut(e){return e.some(e=>e.kind===`theme`)?`\`${e.map(e=>e.kind===`theme`?`\${${Ct(e.property)}}`:Bt(e.value)).join(``)}\``:m(e.map(e=>e.kind===`text`?e.value:``).join(``))}function Wt(e,t){let n=q(e),r=X(e.filter(e=>e.category===`color`)),i={};for(let a of e){if(!it(a)||!a.tokenKey)continue;let e=typeof a.tamaguiValue==`string`?a.tamaguiValue:a.cssValue;if(typeof e!=`string`||e.length===0)continue;let o=Ht(e,n,t,r);o&&(i[a.tokenKey]=Ut(o))}return i}function Gt(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=Pt(e[i]??t[i]??{},i,`light`),a=Pt(t[i]??e[i]??{},i,`dark`);Object.keys(n).length!==0&&Object.keys(a).length!==0&&r.push(` ${i}: {
54
54
  light: ${K(n,8)},
55
55
  dark: ${K(a,8)}
56
56
  }`)}if(r.length!==0)return`{\n${r.join(`,
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:ee,darkBaseName:h}=It(t),g=Rt(u,d),_=Lt(c,ee),v=Lt(l.length>0?l:c,l.length>0?h:ee),y=Wt(Ht({lightSemantic:_,darkSemantic:v,lightScales:u,darkScales:d,lightPalette:f,darkPalette:p}),{specName:e.name}),te=lt(G(t,`light`)),b=ut(c,l),x=[];Object.keys(b).length>0&&x.push(` color: ${K(b,4)}`);for(let e of it){let t=te[e];t&&Object.keys(t).length>0&&x.push(` ${e}: ${K(t,4)}`)}let S=[];f&&S.push(` lightPalette: ${m(f)}`),p&&S.push(` darkPalette: ${m(p)}`),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 Kt(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 qt(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 Jt(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 Yt(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 Kt([e.lightSemantic,e.darkSemantic]))t.add(n);for(let n of qt(e.lightScales,e.darkScales))t.add(n);for(let n of Jt(e.lightPalette,e.darkPalette))t.add(n);return[...t].toSorted((e,t)=>e.localeCompare(t,void 0,{numeric:!0}))}function Xt(e){return` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: string;`}function Zt(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(Xt),`}`,``]}function Qt(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}=Rt(t),_=Gt(u,d),v=G(t,`light`),y=G(t,`dark`),b=l.length>0?y:v,x=l.length>0?g:h,S={...zt(c,h),...Wt(v,h)},C={...zt(l.length>0?l:c,x),...Wt(b,x)},ee=Zt(Yt({lightSemantic:S,darkSemantic:C,lightScales:u,darkScales:d,lightPalette:f,darkPalette:p}),{specName:e.name}),te=dt(v),w=ft(c,l),T=[];Object.keys(w).length>0&&T.push(` color: ${K(w,4)}`);for(let e of ot){let t=te[e];t&&Object.keys(t).length>0&&T.push(` ${e}: ${K(t,4)}`)}let E=[];f&&E.push(` lightPalette: ${m(f)}`),p&&E.push(` darkPalette: ${m(p)}`),_&&E.push(` childrenThemes: ${_}`),(Object.keys(S).length>0||Object.keys(C).length>0)&&E.push(` getTheme: ({ theme, scheme }: { theme: any; scheme: "light" | "dark" }) => {
58
58
  return scheme === "dark"
59
- ? ${dt(v,8)}
60
- : ${dt(_,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 "${et[a]}";`),n.importConfig&&C.push(`import userConfig from "${n.importConfig}";`);let w=[`createTamagui`,`px`];x.length>0&&w.push(`createTokens`);let T=Ke(G(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 ne=S.length>0?`createV5Theme({\n${S.join(`,
63
- `)}\n})`:`createV5Theme()`;E.push(`const themes = ${ne};`,``);let D=new Map;if(T.length>0)for(let[e,t]of T.entries()){let n=Je(t.key,e);D.set(t.key,n),E.push(Ye(t,n),``)}let O=[];if(i&&O.push(` ...defaultConfig`),a!==!1&&O.push(` animations`),x.length>0&&(i?O.push(` tokens: {
59
+ ? ${pt(C,8)}
60
+ : ${pt(S,8)};
61
+ }`);let D=[`import { isWeb } from '@tamagui/constants';`];i?D.push(`import { createV5Theme, defaultConfig, type CreateV5ThemeOptions } from "@tamagui/config/v5";`):D.push(`import { createV5Theme, type CreateV5ThemeOptions } from "@tamagui/config/v5";`),a!==!1&&D.push(`import { animations } from "${tt[a]}";`),n.importConfig&&D.push(`import userConfig from "${n.importConfig}";`);let O=[`createTamagui`,`px`];T.length>0&&O.push(`createTokens`);let k=Ke(t,r);k.length>0&&O.push(`createFont`),D.push(`import { ${O.join(`, `)} } from "@tamagui/core";`);let A=[`/* eslint-disable */`,``,`/*`,` * Generated by @razorwind/tamagui — Do not edit by hand.`,` * `,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...D,``];T.length>0&&A.push(`const tokens = createTokens({`,T.join(`,
62
+ `),`});`,``);let j=E.length>0?`createV5Theme({\n${E.join(`,
63
+ `)}\n})`:`createV5Theme()`;A.push(`const themes = ${j};`,``);let M=new Map;if(k.length>0)for(let[e,t]of k.entries()){let n=Je(t.key,e);M.set(t.key,n),A.push(Ye(t,n),``)}let N=[];if(i&&N.push(` ...defaultConfig`),a!==!1&&N.push(` animations`),T.length>0&&(i?N.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
- }`):O.push(` tokens`)),O.push(` themes`),D.size>0){let e=[...D.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`);i?O.push(` fonts: {
82
+ }`):N.push(` tokens`)),N.push(` themes`),M.size>0){let e=[...M.entries()].map(([e,t])=>` ${/^[A-Z_$][\w$]*$/i.test(e)?e:m(e)}: ${t}`);i?N.push(` fonts: {
83
83
  ...defaultConfig.fonts,
84
84
  ${e.join(`,
85
85
  `)}
86
- }`):O.push(` fonts: {
86
+ }`):N.push(` fonts: {
87
87
  ${e.join(`,
88
88
  `)}
89
- }`)}return n.shorthands&&O.push(` shorthands: ${K(n.shorthands,4)}`),n.media&&O.push(` media: ${m(n.media)}`),n.defaultFont&&O.push(` defaultFont: ${m(n.defaultFont)}`),E.push(``,...y??[],`/**
89
+ }`)}return n.shorthands&&N.push(` shorthands: ${K(n.shorthands,4)}`),n.media&&N.push(` media: ${m(n.media)}`),n.defaultFont&&N.push(` defaultFont: ${m(n.defaultFont)}`),A.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
- export const config = createTamagui({`,O.join(`,
95
- `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&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 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?le(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,le as flattenTokens,Je as fontVarName,n as formatTokenValue,Kt as generateTamaguiConfig,E as isPaletteGroup,Z as orderPaletteForScheme,Xe as renderInstallMd,Gt as renderTamaguiConfig,oe as resolveTokenCategory,a as resolveTokenSets,R as tamaguiFontKeyFromRole,A as toCamelCaseKey,o as toCssVar,h as toTamaguiValue,se as toTokenKey,je as typographyFontKey};
94
+ export const config = createTamagui({`,N.join(`,
95
+ `),n.importConfig?`, ...userConfig `:``,`});`,``,`export type AppConfig = typeof config;`,``),o&&A.push(`declare module "@tamagui/core" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),A.push(`export default config;`,``),A.join(`
96
+ `)}function $t(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?ie(e.tokens,n):[];if(a.length===0&&!i)return{};let o=n.outputPath??`tamagui.config.ts`,s=Qt(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 en=e(e=>({name:`tamagui`,themeGeneration:`combined`,generate:async t=>$t(t,e??{})}));export{X as collectColorScales,Ke as collectTamaguiFonts,Mt as colorLightness,en as default,ie as flattenTokens,Je as fontVarName,n as formatTokenValue,$t as generateTamaguiConfig,T as isPaletteGroup,Z as orderPaletteForScheme,Xe as renderInstallMd,Qt as renderTamaguiConfig,N as resolveTokenCategory,a as resolveTokenSets,B as tamaguiFontKeyFromRole,P as toCamelCaseKey,o as toCssVar,h as toTamaguiValue,ne 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.45",
3
+ "version": "0.0.47",
4
4
  "type": "module",
5
5
  "description": "Razorwind plugin that creates Tamagui theme tokens from Razorwind design tokens.",
6
6
  "repository": {
@@ -106,5 +106,5 @@
106
106
  "typescript": "^6.0.3"
107
107
  },
108
108
  "publishConfig": { "access": "public" },
109
- "gitHead": "058f1f3c881d4f4e109a3f45008b50d403a9acab"
109
+ "gitHead": "46cad9adc5886956e4e8e76ba73a983771460244"
110
110
  }