@razorwind/tamagui 0.0.33 → 0.0.35

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,5 +1,5 @@
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");function r(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function i(e){return typeof e==`string`?`"${r(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function a(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 String(e)}const o=[{prefix:/^(?:color|colours?|palette)\b/i,category:`color`},{prefix:/^(?:space|spacing|gap|inset)\b/i,category:`space`},{prefix:/^(?:size|sizing)\b/i,category:`size`},{prefix:/^(?:radius|rounded|radii)\b/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)\b/i,category:`zIndex`}];function s(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function c(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function l(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function u(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 d(e,t){for(let{prefix:t,category:n}of o)if(t.test(e))return n;if(t===`color`)return`color`;if(t===`dimension`){if(/space|spacing|gap|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|width|height/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`}function f(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|space|spacing|gap|inset|size|sizing|radius|rounded|radii|z-?index|zindex|elevation)$/i.test(n)&&t.shift();let r=t.join(``)||e.split(`.`).at(-1)||e;return/^(?:DEFAULT|default)$/i.test(r)?`true`:r}function p(e,n,r,i,o){if(!(0,t.isObject)(e))return;let m=l(e,r);if(s(e)){let r=u(e),s=n.join(`.`),l=d(s,m),p=(0,t.formatTokenValue)(r,m),h=l===`color`||m===`color`?p:a(r,m);o.push({path:s,type:m,value:r,cssValue:p,tamaguiValue:h,category:l,tokenKey:l?f(s):void 0,description:c(e),theme:i});return}for(let[t,r]of Object.entries(e))t.startsWith(`$`)||p(r,[...n,t],m,i,o)}function m(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;p(n.tokens,[],void 0,e,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}function h(e){return`# Installing Tamagui Config
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=require("@razorwind/core/plugin"),t=require("@razorwind/core/lib/fonts"),n=require("@razorwind/core/utils"),r=require("node:path");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,t){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if((0,n.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 String(e)}const s=[{prefix:/^(?:color|colours?|palette)\b/i,category:`color`},{prefix:/^(?:space|spacing|gap|inset)\b/i,category:`space`},{prefix:/^(?:size|sizing)\b/i,category:`size`},{prefix:/^(?:radius|rounded|radii)\b/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)\b/i,category:`zIndex`}];function c(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function l(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function u(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function d(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function f(e,t){for(let{prefix:t,category:n}of s)if(t.test(e))return n;if(t===`color`)return`color`;if(t===`dimension`){if(/space|spacing|gap|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|width|height/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`}function p(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|space|spacing|gap|inset|size|sizing|radius|rounded|radii|z-?index|zindex|elevation)$/i.test(n)&&t.shift();let r=t.join(``)||e.split(`.`).at(-1)||e;return/^(?:DEFAULT|default)$/i.test(r)?`true`:r}function m(e,t,r,i,a){if(!(0,n.isObject)(e))return;let s=u(e,r);if(c(e)){let r=d(e),c=t.join(`.`),u=f(c,s),m=(0,n.formatTokenValue)(r,s),h=u===`color`||s===`color`?m:o(r,s);a.push({path:c,type:s,value:r,cssValue:m,tamaguiValue:h,category:u,tokenKey:u?p(c):void 0,description:l(e),theme:i});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)||m(r,[...t,n],s,i,a)}function h(e,t={}){let r=t.includeTypes?new Set(t.includeTypes):void 0,i=[];for(let t of(0,n.resolveTokenSets)(e)){let e=t.id==="default"?void 0:t.id;m(t.tokens,[],void 0,e,i)}return r?i.filter(e=>!e.type||r.has(e.type)):i}function g(e){return`# Installing Tamagui Config
3
3
 
4
4
  Generated by \`@razorwind/tamagui\`.
5
5
 
@@ -37,19 +37,21 @@ export function App() {
37
37
  ## Regenerate
38
38
 
39
39
  Re-run Razorwind generate when tokens change so \`${e.outFile}\` stays aligned with your design system.
40
- `}const g=new Set([`default`,`base`,`light`,`theme`]),_=new Set([`gray`,`grey`,`neutral`,`slate`,`zinc`,`stone`,`palette`,`base`]),v={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function y(e){let t=new Set(e.map(e=>e.theme).filter(e=>!!e));if(t.size===0)return e;for(let t of g){let n=e.filter(e=>e.theme?.toLowerCase()===t);if(n.length>0)return n}let n=[...t][0];return e.filter(e=>e.theme===n)}function b(e,t){return e.filter(e=>e.theme?.toLowerCase()===t)}function x(e){let t={};for(let n of e){if(!n.category||!n.tokenKey)continue;let e=t[n.category]??{};e[n.tokenKey]=n.tamaguiValue,t[n.category]=e}return t}function S(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=/^[A-Z_$][\w$]*$/i.test(e)?e:i(e);return`${n}${r}: ${i(t)}`}).join(`,
41
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function C(e){let t={},n=new Map;for(let t of e)!t.tokenKey||typeof t.tamaguiValue!=`string`||n.set(t.tokenKey,t.tamaguiValue);let r=/^([A-Z]+)(\d{1,2})$/i;for(let[e,i]of n){let n=r.exec(e);if(!n)continue;let[,a=``,o=``]=n,s=Number(o);if(s<0||s>12)continue;let c=t[a]??{};c[`${a}${s}`]=i,t[a]=c}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function w(e,t){let n=[];for(let r=1;r<=12;r++){let i=e[`${t}${r}`];if(!i)return;n.push(i)}return n}function T(e){let t=y(e.filter(e=>e.category===`color`)),n=b(e.filter(e=>e.category===`color`),`dark`),r=C(t),i=C(n),a,o;for(let e of Object.keys(r))if(_.has(e.toLowerCase())&&(a=w(r[e],e),a))break;for(let e of Object.keys(i))if(_.has(e.toLowerCase())&&(o=w(i[e],e),o))break;return{lightPalette:a,darkPalette:o}}function E(e){let t=C(e),n={};for(let r of e)r.category!==`color`||!r.tokenKey||typeof r.tamaguiValue!=`string`||/^[A-Z]+\d{1,2}$/i.test(r.tokenKey)&&t[r.tokenKey.replace(/\d{1,2}$/,``)]||(n[r.tokenKey]=r.tamaguiValue);return n}function D(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))){if(_.has(i.toLowerCase()))continue;let n=e[i]??t[i],a=t[i]??e[i];!n||!a||r.push(` ${i}: {
42
- light: ${S(n,8)},
43
- dark: ${S(a,8)}
40
+ `}const _=new Set([`default`,`base`,`light`,`theme`]),v=new Set([`gray`,`grey`,`neutral`,`slate`,`zinc`,`stone`,`palette`,`base`]),y={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function b(e){let t=new Set(e.map(e=>e.theme).filter(e=>!!e));if(t.size===0)return e;for(let t of _){let n=e.filter(e=>e.theme?.toLowerCase()===t);if(n.length>0)return n}let n=[...t][0];return e.filter(e=>e.theme===n)}function x(e,t){return e.filter(e=>e.theme?.toLowerCase()===t)}function S(e){let t={};for(let n of e){if(!n.category||!n.tokenKey)continue;let e=t[n.category]??{};e[n.tokenKey]=n.tamaguiValue,t[n.category]=e}return t}function C(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=/^[A-Z_$][\w$]*$/i.test(e)?e:a(e);return`${n}${r}: ${a(t)}`}).join(`,
41
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}function w(e){let t={},n=new Map;for(let t of e)!t.tokenKey||typeof t.tamaguiValue!=`string`||n.set(t.tokenKey,t.tamaguiValue);let r=/^([A-Z]+)(\d{1,2})$/i;for(let[e,i]of n){let n=r.exec(e);if(!n)continue;let[,a=``,o=``]=n,s=Number(o);if(s<0||s>12)continue;let c=t[a]??{};c[`${a}${s}`]=i,t[a]=c}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function T(e,t){let n=[];for(let r=1;r<=12;r++){let i=e[`${t}${r}`];if(!i)return;n.push(i)}return n}function E(e){let t=b(e.filter(e=>e.category===`color`)),n=x(e.filter(e=>e.category===`color`),`dark`),r=w(t),i=w(n),a,o;for(let e of Object.keys(r))if(v.has(e.toLowerCase())&&(a=T(r[e],e),a))break;for(let e of Object.keys(i))if(v.has(e.toLowerCase())&&(o=T(i[e],e),o))break;return{lightPalette:a,darkPalette:o}}function D(e){let t=w(e),n={};for(let r of e)r.category!==`color`||!r.tokenKey||typeof r.tamaguiValue!=`string`||/^[A-Z]+\d{1,2}$/i.test(r.tokenKey)&&t[r.tokenKey.replace(/\d{1,2}$/,``)]||(n[r.tokenKey]=r.tamaguiValue);return n}function O(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))){if(v.has(i.toLowerCase()))continue;let n=e[i]??t[i],a=t[i]??e[i];!n||!a||r.push(` ${i}: {
42
+ light: ${C(n,8)},
43
+ dark: ${C(a,8)}
44
44
  }`)}if(r.length!==0)return`{\n${r.join(`,
45
- `)}\n }`}function O(e,t={}){let n=t.useDefaultConfig!==!1,r=t.animations??`css`,a=t.includeTypeAugmentation!==!1,o=x(y(e)),s=y(e.filter(e=>e.category===`color`)),c=b(e.filter(e=>e.category===`color`),`dark`),l=C(s),u=C(c.length>0?c:s),{lightPalette:d,darkPalette:f}=T(e),p=D(l,u),m=E(s),h=E(c.length>0?c:s),g=Object.keys(m).length>0||Object.keys(h).length>0,_=[];for(let e of[`color`,`space`,`size`,`radius`,`zIndex`]){let t=o[e];t&&Object.keys(t).length>0&&_.push(` ${e}: ${S(t,4)}`)}let w=[];d&&w.push(` lightPalette: ${i(d)}`),f&&w.push(` darkPalette: ${i(f)}`),p&&w.push(` childrenThemes: ${p}`),g&&w.push(` getTheme: ({ scheme }) => {
45
+ `)}\n }`}function k(e){switch(e.role){case`heading`:case`display`:return`heading`;case`mono`:case`code`:return`mono`;case`sans`:case`body`:case`serif`:return`body`;default:return e.name.replaceAll(/[^A-Z0-9_]/gi,``)||`body`}}function A(e){let t=new Map;for(let n of Object.values(e)){let e=k(n),r=t.get(e);(!r||n.role===e&&r.role!==e)&&t.set(e,n)}return t}function j(e){let t=new Map;for(let n of e.files){let e=String(n.weight??400),i=(0,r.basename)(n.path).replace(/\.[^.]+$/,``),a=t.get(e)??{};n.style===`italic`||n.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(`,
46
+ `)}\n }`}function M(e,n){let r=e.source===`local`?j(e):void 0,i=[`const ${n} = createFont({`,` family: isWeb ? ${a((0,t.cssFontFamily)(e))} : ${a((0,t.fontFamilyName)(e))},`,` size: {`,` 1: 12,`,` 2: 14,`,` 3: 16,`,` 4: 18,`,` 5: 20,`,` 6: 24,`,` 7: 28,`,` 8: 32,`,` 9: 40,`,` 10: 48`,` }${r?`,`:``}`];return r&&i.push(` face: ${r}`),i.push(`});`),i.join(`
47
+ `)}function N(e,t={},n){let r=t.useDefaultConfig!==!1,i=t.animations??`css`,o=t.includeTypeAugmentation!==!1,s=S(b(e)),c=b(e.filter(e=>e.category===`color`)),l=x(e.filter(e=>e.category===`color`),`dark`),u=w(c),d=w(l.length>0?l:c),{lightPalette:f,darkPalette:p}=E(e),m=O(u,d),h=D(c),g=D(l.length>0?l:c),_=Object.keys(h).length>0||Object.keys(g).length>0,v=[];for(let e of[`color`,`space`,`size`,`radius`,`zIndex`]){let t=s[e];t&&Object.keys(t).length>0&&v.push(` ${e}: ${C(t,4)}`)}let T=[];f&&T.push(` lightPalette: ${a(f)}`),p&&T.push(` darkPalette: ${a(p)}`),m&&T.push(` childrenThemes: ${m}`),_&&T.push(` getTheme: ({ scheme }) => {
46
48
  const semantic = scheme === "dark"
47
- ? ${S(h,8)}
48
- : ${S(m,8)};
49
+ ? ${C(g,8)}
50
+ : ${C(h,8)};
49
51
  return semantic;
50
- }`);let O=[];n?O.push(`import { createV5Theme, defaultConfig } from "@tamagui/config/v5";`):O.push(`import { createV5Theme } from "@tamagui/config/v5";`),r!==!1&&O.push(`import { animations } from "${v[r]}";`);let k=[`createTamagui`];_.length>0&&k.push(`createTokens`),O.push(`import { ${k.join(`, `)} } from "tamagui";`);let A=[`/* eslint-disable */`,`/*`,` * Generated by @razorwind/tamagui — do not edit by hand.`,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...O,``];_.length>0&&A.push(`const tokens = createTokens({`,_.join(`,
51
- `),`});`,``);let j=w.length>0?`createV5Theme({\n${w.join(`,
52
- `)}\n})`:`createV5Theme()`;A.push(`const themes = ${j};`,``);let M=[];return n&&M.push(` ...defaultConfig`),r!==!1&&M.push(` animations`),_.length>0&&(n?M.push(` tokens: {
52
+ }`);let k=[];r?k.push(`import { createV5Theme, defaultConfig } from "@tamagui/config/v5";`):k.push(`import { createV5Theme } from "@tamagui/config/v5";`),i!==!1&&k.push(`import { animations } from "${y[i]}";`);let j=[`createTamagui`];v.length>0&&j.push(`createTokens`);let N=n?A(n):new Map;N.size>0&&j.push(`createFont`,`isWeb`),k.push(`import { ${j.join(`, `)} } from "tamagui";`);let P=[`/* eslint-disable */`,`/*`,` * Generated by @razorwind/tamagui — do not edit by hand.`,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...k,``];v.length>0&&P.push(`const tokens = createTokens({`,v.join(`,
53
+ `),`});`,``);let F=T.length>0?`createV5Theme({\n${T.join(`,
54
+ `)}\n})`:`createV5Theme()`;P.push(`const themes = ${F};`,``);let I=new Map;if(N.size>0){let e=0;for(let[t,n]of N){let r=`${t}Font`.replaceAll(/[^A-Z0-9_]/gi,``)||`font${e}`;I.set(t,r),P.push(M(n,r),``),e+=1}}let L=[];if(r&&L.push(` ...defaultConfig`),i!==!1&&L.push(` animations`),v.length>0&&(r?L.push(` tokens: {
53
55
  ...defaultConfig.tokens,
54
56
  ...tokens,
55
57
  color: {
@@ -72,6 +74,13 @@ Re-run Razorwind generate when tokens change so \`${e.outFile}\` stays aligned w
72
74
  ...defaultConfig.tokens.zIndex,
73
75
  ...tokens.zIndex
74
76
  }
75
- }`):M.push(` tokens`)),M.push(` themes`),A.push(`export const config = createTamagui({`,M.join(`,
76
- `),`});`,``,`export type AppConfig = typeof config;`,``),a&&A.push(`declare module "tamagui" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),A.push(`export default config;`,``),A.join(`
77
- `)}function k(e,r={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let i=m(e.tokens,r);if(i.length===0)return{};let a=r.outFile??`tamagui.config.ts`,o=O(i,r),s=r.installGuide??h({outFile:a}),c=(0,n.join)((0,n.dirname)(a),`INSTALL.md`);return{[a]:(0,t.createDocument)(a,o,{name:`razorwind-tamagui`},`typescript`),[c]:(0,t.createDocument)(c,s,{name:`razorwind-tamagui`},`markdown`)}}var A=(0,e.definePlugin)(e=>({name:`tamagui`,generate:async t=>k(t,e??{})}));exports.collectColorScales=C,exports.default=A,exports.flattenTokens=m,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return t.formatTokenValue}}),exports.generateTamaguiConfig=k,exports.renderInstallMd=h,exports.renderTamaguiConfig=O,exports.resolveTokenCategory=d,exports.resolveTokenSets=t.resolveTokenSets,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return t.toCssVar}}),exports.toTamaguiValue=a,exports.toTokenKey=f;
77
+ }`):L.push(` tokens`)),L.push(` themes`),I.size>0){let e=[...I.entries()].map(([e,t])=>` ${e}: ${t}`);r?L.push(` fonts: {
78
+ ...defaultConfig.fonts,
79
+ ${e.join(`,
80
+ `)}
81
+ }`):L.push(` fonts: {
82
+ ${e.join(`,
83
+ `)}
84
+ }`)}return P.push(`export const config = createTamagui({`,L.join(`,
85
+ `),`});`,``,`export type AppConfig = typeof config;`,``),o&&P.push(`declare module "tamagui" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),P.push(`export default config;`,``),P.join(`
86
+ `)}function P(e,t={}){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?h(e.tokens,t):[];if(o.length===0&&!a)return{};let s=t.outFile??`tamagui.config.ts`,c=N(o,t,e.fonts),l=t.installGuide??g({outFile:s}),u=(0,r.join)((0,r.dirname)(s),`INSTALL.md`);return{[s]:(0,n.createDocument)(s,c,{name:`razorwind-tamagui`},`typescript`),[u]:(0,n.createDocument)(u,l,{name:`razorwind-tamagui`},`markdown`)}}var F=(0,e.definePlugin)(e=>({name:`tamagui`,generate:async t=>P(t,e??{})}));exports.collectColorScales=w,exports.default=F,exports.flattenTokens=h,Object.defineProperty(exports,"formatTokenValue",{enumerable:!0,get:function(){return n.formatTokenValue}}),exports.generateTamaguiConfig=P,exports.renderInstallMd=g,exports.renderTamaguiConfig=N,exports.resolveTokenCategory=f,exports.resolveTokenSets=n.resolveTokenSets,Object.defineProperty(exports,"toCssVar",{enumerable:!0,get:function(){return n.toCssVar}}),exports.toTamaguiValue=o,exports.toTokenKey=p;
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { TokenType } from "@power-plant/dtcg-schema";
2
- import { Schema, Tokens } from "@razorwind/core/schema";
2
+ import { Fonts, Schema, Tokens } from "@razorwind/core/schema";
3
3
  import { formatTokenValue, resolveTokenSets, toCssVar } from "@razorwind/core/utils";
4
4
  import { GeneratorFunctionResult } from "@power-plant/core";
5
5
  //#region src/types.d.ts
@@ -128,7 +128,7 @@ declare function collectColorScales(colorTokens: FlatToken[]): Record<string, Re
128
128
  *
129
129
  * @see https://tamagui.dev/docs/core/config-v5
130
130
  */
131
- declare function renderTamaguiConfig(tokens: FlatToken[], options?: TamaguiPluginOptions): string;
131
+ declare function renderTamaguiConfig(tokens: FlatToken[], options?: TamaguiPluginOptions, fonts?: Fonts): string;
132
132
  /**
133
133
  * Generate a Tamagui v5 config file from a Razorwind schema.
134
134
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/flatten.ts","../src/format.ts","../src/install.ts","../src/generate.ts","../src/index.ts"],"mappings":";;;;;;;;;;KAyBY;;;;KAMA;;;;UAMK;;;;;;EAMf;;;;;;;EAQA,aAAa;;;;;;;;EASb;;;;;EAMA,eAAe;;;;;;;EAQf;;;;;EAMA;;;;;UAMe;;EAEf;;EAEA,OAAO;;EAEP;;EAEA;;EAEA;;EAEA,WAAW;;EAEX;;EAEA;;EAEA;;;;;;;iBCfc,qBACd,cACA,gBACC;;;;;;;iBAuCa,WAAW;;;;iBAuEX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;iBCnJa,eAAe,gBAAgB;;;;;;;;iBCnC/B,gBAAgB;EAAW;;;;;;;;;iBCuG3B,mBACd,aAAa,cACZ,eAAe;;;;;;iBAgKF,oBACd,QAAQ,aACR,UAAS;;;;iBA0LK,sBACd,MAAM,QACN,UAAS,uBACR,wBAAwB,QAAQ"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/flatten.ts","../src/format.ts","../src/install.ts","../src/generate.ts","../src/index.ts"],"mappings":";;;;;;;;;;KAyBY;;;;KAMA;;;;UAMK;;;;;;EAMf;;;;;;;EAQA,aAAa;;;;;;;;EASb;;;;;EAMA,eAAe;;;;;;;EAQf;;;;;EAMA;;;;;UAMe;;EAEf;;EAEA,OAAO;;EAEP;;EAEA;;EAEA;;EAEA,WAAW;;EAEX;;EAEA;;EAEA;;;;;;;iBCfc,qBACd,cACA,gBACC;;;;;;;iBAuCa,WAAW;;;;iBAuEX,cACd,QAAQ,SAAS,eAAe,SAChC,UAAS,KAAK,wCACb;;;;;;;;;iBCnJa,eAAe,gBAAgB;;;;;;;;iBCnC/B,gBAAgB;EAAW;;;;;;;;;iBCwG3B,mBACd,aAAa,cACZ,eAAe;;;;;;iBAkQF,oBACd,QAAQ,aACR,UAAS,sBACT,QAAQ;;;;iBAyNM,sBACd,MAAM,QACN,UAAS,uBACR,wBAAwB,QAAQ"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { formatTokenValue, resolveTokenSets, toCssVar } from "@razorwind/core/utils";
2
2
  import { TokenType } from "@power-plant/dtcg-schema";
3
- import { Schema, Tokens } from "@razorwind/core/schema";
3
+ import { Fonts, Schema, Tokens } from "@razorwind/core/schema";
4
4
  import { GeneratorFunctionResult } from "@power-plant/core";
5
5
  //#region src/types.d.ts
6
6
  /**
@@ -128,7 +128,7 @@ declare function collectColorScales(colorTokens: FlatToken[]): Record<string, Re
128
128
  *
129
129
  * @see https://tamagui.dev/docs/core/config-v5
130
130
  */
131
- declare function renderTamaguiConfig(tokens: FlatToken[], options?: TamaguiPluginOptions): string;
131
+ declare function renderTamaguiConfig(tokens: FlatToken[], options?: TamaguiPluginOptions, fonts?: Fonts): string;
132
132
  /**
133
133
  * Generate a Tamagui v5 config file from a Razorwind schema.
134
134
  */
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import{definePlugin as e}from"@razorwind/core/plugin";import{createDocument as t,formatTokenValue as n,isObject as r,resolveTokenSets as i,toCssVar as a}from"@razorwind/core/utils";import{dirname as o,join as s}from"node:path";function c(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
- `,`\\n`).replaceAll(`\r`,`\\r`)}function l(e){return typeof e==`string`?`"${c(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function u(e,t){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if(r(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 String(e)}const d=[{prefix:/^(?:color|colours?|palette)\b/i,category:`color`},{prefix:/^(?:space|spacing|gap|inset)\b/i,category:`space`},{prefix:/^(?:size|sizing)\b/i,category:`size`},{prefix:/^(?:radius|rounded|radii)\b/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)\b/i,category:`zIndex`}];function f(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function p(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function m(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function h(e){if(`$value`in e)return e.$value;if(`value`in e)return e.value;if(typeof e.$ref==`string`)return e.$ref;if(typeof e.ref==`string`)return e.ref}function g(e,t){for(let{prefix:t,category:n}of d)if(t.test(e))return n;if(t===`color`)return`color`;if(t===`dimension`){if(/space|spacing|gap|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|width|height/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`}function _(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|space|spacing|gap|inset|size|sizing|radius|rounded|radii|z-?index|zindex|elevation)$/i.test(n)&&t.shift();let r=t.join(``)||e.split(`.`).at(-1)||e;return/^(?:DEFAULT|default)$/i.test(r)?`true`:r}function v(e,t,i,a,o){if(!r(e))return;let s=m(e,i);if(f(e)){let r=h(e),i=t.join(`.`),c=g(i,s),l=n(r,s),d=c===`color`||s===`color`?l:u(r,s);o.push({path:i,type:s,value:r,cssValue:l,tamaguiValue:d,category:c,tokenKey:c?_(i):void 0,description:p(e),theme:a});return}for(let[n,r]of Object.entries(e))n.startsWith(`$`)||v(r,[...t,n],s,a,o)}function y(e,t={}){let n=t.includeTypes?new Set(t.includeTypes):void 0,r=[];for(let t of i(e)){let e=t.id==="default"?void 0:t.id;v(t.tokens,[],void 0,e,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}function b(e){return`# Installing Tamagui Config
1
+ import{definePlugin as e}from"@razorwind/core/plugin";import{cssFontFamily as t,fontFamilyName as n}from"@razorwind/core/lib/fonts";import{createDocument as r,formatTokenValue as i,isObject as a,resolveTokenSets as o,toCssVar as s}from"@razorwind/core/utils";import{basename as c,dirname as l,join as u}from"node:path";function d(e){return e.replaceAll(`\\`,`\\\\`).replaceAll(`"`,`\\"`).replaceAll(`
2
+ `,`\\n`).replaceAll(`\r`,`\\r`)}function f(e){return typeof e==`string`?`"${d(e)}"`:typeof e==`number`||typeof e==`boolean`?String(e):e==null?`undefined`:JSON.stringify(e)}function p(e,t){if(typeof e==`number`)return e;if(typeof e==`boolean`)return Number(e);if(a(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 String(e)}const m=[{prefix:/^(?:color|colours?|palette)\b/i,category:`color`},{prefix:/^(?:space|spacing|gap|inset)\b/i,category:`space`},{prefix:/^(?:size|sizing)\b/i,category:`size`},{prefix:/^(?:radius|rounded|radii)\b/i,category:`radius`},{prefix:/^(?:z-?index|zindex|elevation)\b/i,category:`zIndex`}];function h(e){return`$value`in e||`value`in e||`$ref`in e||`ref`in e}function g(e){if(typeof e.$description==`string`)return e.$description;if(typeof e.description==`string`)return e.description}function _(e,t){return typeof e.$type==`string`?e.$type:typeof e.type==`string`?e.type:t}function v(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 y(e,t){for(let{prefix:t,category:n}of m)if(t.test(e))return n;if(t===`color`)return`color`;if(t===`dimension`){if(/space|spacing|gap|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|width|height/i.test(e))return`size`}if(t===`number`&&/z-?index|elevation/i.test(e))return`zIndex`}function b(e){let t=e.split(`.`).filter(Boolean),n=t[0];n&&/^(?:color|colours?|palette|space|spacing|gap|inset|size|sizing|radius|rounded|radii|z-?index|zindex|elevation)$/i.test(n)&&t.shift();let r=t.join(``)||e.split(`.`).at(-1)||e;return/^(?:DEFAULT|default)$/i.test(r)?`true`:r}function x(e,t,n,r,o){if(!a(e))return;let s=_(e,n);if(h(e)){let n=v(e),a=t.join(`.`),c=y(a,s),l=i(n,s),u=c===`color`||s===`color`?l:p(n,s);o.push({path:a,type:s,value:n,cssValue:l,tamaguiValue:u,category:c,tokenKey:c?b(a):void 0,description:g(e),theme:r});return}for(let[n,i]of Object.entries(e))n.startsWith(`$`)||x(i,[...t,n],s,r,o)}function S(e,t={}){let n=t.includeTypes?new Set(t.includeTypes):void 0,r=[];for(let t of o(e)){let e=t.id==="default"?void 0:t.id;x(t.tokens,[],void 0,e,r)}return n?r.filter(e=>!e.type||n.has(e.type)):r}function C(e){return`# Installing Tamagui Config
3
3
 
4
4
  Generated by \`@razorwind/tamagui\`.
5
5
 
@@ -37,19 +37,21 @@ export function App() {
37
37
  ## Regenerate
38
38
 
39
39
  Re-run Razorwind generate when tokens change so \`${e.outFile}\` stays aligned with your design system.
40
- `}const x=new Set([`default`,`base`,`light`,`theme`]),S=new Set([`gray`,`grey`,`neutral`,`slate`,`zinc`,`stone`,`palette`,`base`]),C={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function w(e){let t=new Set(e.map(e=>e.theme).filter(e=>!!e));if(t.size===0)return e;for(let t of x){let n=e.filter(e=>e.theme?.toLowerCase()===t);if(n.length>0)return n}let n=[...t][0];return e.filter(e=>e.theme===n)}function T(e,t){return e.filter(e=>e.theme?.toLowerCase()===t)}function E(e){let t={};for(let n of e){if(!n.category||!n.tokenKey)continue;let e=t[n.category]??{};e[n.tokenKey]=n.tamaguiValue,t[n.category]=e}return t}function D(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=/^[A-Z_$][\w$]*$/i.test(e)?e:l(e);return`${n}${r}: ${l(t)}`}).join(`,
41
- `)}\n${` `.repeat(Math.max(t-2,0))}}`}function O(e){let t={},n=new Map;for(let t of e)!t.tokenKey||typeof t.tamaguiValue!=`string`||n.set(t.tokenKey,t.tamaguiValue);let r=/^([A-Z]+)(\d{1,2})$/i;for(let[e,i]of n){let n=r.exec(e);if(!n)continue;let[,a=``,o=``]=n,s=Number(o);if(s<0||s>12)continue;let c=t[a]??{};c[`${a}${s}`]=i,t[a]=c}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function k(e,t){let n=[];for(let r=1;r<=12;r++){let i=e[`${t}${r}`];if(!i)return;n.push(i)}return n}function A(e){let t=w(e.filter(e=>e.category===`color`)),n=T(e.filter(e=>e.category===`color`),`dark`),r=O(t),i=O(n),a,o;for(let e of Object.keys(r))if(S.has(e.toLowerCase())&&(a=k(r[e],e),a))break;for(let e of Object.keys(i))if(S.has(e.toLowerCase())&&(o=k(i[e],e),o))break;return{lightPalette:a,darkPalette:o}}function j(e){let t=O(e),n={};for(let r of e)r.category!==`color`||!r.tokenKey||typeof r.tamaguiValue!=`string`||/^[A-Z]+\d{1,2}$/i.test(r.tokenKey)&&t[r.tokenKey.replace(/\d{1,2}$/,``)]||(n[r.tokenKey]=r.tamaguiValue);return n}function M(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))){if(S.has(i.toLowerCase()))continue;let n=e[i]??t[i],a=t[i]??e[i];!n||!a||r.push(` ${i}: {
42
- light: ${D(n,8)},
43
- dark: ${D(a,8)}
40
+ `}const w=new Set([`default`,`base`,`light`,`theme`]),T=new Set([`gray`,`grey`,`neutral`,`slate`,`zinc`,`stone`,`palette`,`base`]),E={css:`@tamagui/config/v5-css`,rn:`@tamagui/config/v5-rn`,reanimated:`@tamagui/config/v5-reanimated`,motion:`@tamagui/config/v5-motion`};function D(e){let t=new Set(e.map(e=>e.theme).filter(e=>!!e));if(t.size===0)return e;for(let t of w){let n=e.filter(e=>e.theme?.toLowerCase()===t);if(n.length>0)return n}let n=[...t][0];return e.filter(e=>e.theme===n)}function O(e,t){return e.filter(e=>e.theme?.toLowerCase()===t)}function k(e){let t={};for(let n of e){if(!n.category||!n.tokenKey)continue;let e=t[n.category]??{};e[n.tokenKey]=n.tamaguiValue,t[n.category]=e}return t}function A(e,t=2){let n=` `.repeat(t),r=Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t));return r.length===0?`{}`:`{\n${r.map(([e,t])=>{let r=/^[A-Z_$][\w$]*$/i.test(e)?e:f(e);return`${n}${r}: ${f(t)}`}).join(`,
41
+ `)}\n${` `.repeat(Math.max(t-2,0))}}`}function j(e){let t={},n=new Map;for(let t of e)!t.tokenKey||typeof t.tamaguiValue!=`string`||n.set(t.tokenKey,t.tamaguiValue);let r=/^([A-Z]+)(\d{1,2})$/i;for(let[e,i]of n){let n=r.exec(e);if(!n)continue;let[,a=``,o=``]=n,s=Number(o);if(s<0||s>12)continue;let c=t[a]??{};c[`${a}${s}`]=i,t[a]=c}return Object.fromEntries(Object.entries(t).filter(([,e])=>Object.keys(e).length>=3))}function M(e,t){let n=[];for(let r=1;r<=12;r++){let i=e[`${t}${r}`];if(!i)return;n.push(i)}return n}function N(e){let t=D(e.filter(e=>e.category===`color`)),n=O(e.filter(e=>e.category===`color`),`dark`),r=j(t),i=j(n),a,o;for(let e of Object.keys(r))if(T.has(e.toLowerCase())&&(a=M(r[e],e),a))break;for(let e of Object.keys(i))if(T.has(e.toLowerCase())&&(o=M(i[e],e),o))break;return{lightPalette:a,darkPalette:o}}function P(e){let t=j(e),n={};for(let r of e)r.category!==`color`||!r.tokenKey||typeof r.tamaguiValue!=`string`||/^[A-Z]+\d{1,2}$/i.test(r.tokenKey)&&t[r.tokenKey.replace(/\d{1,2}$/,``)]||(n[r.tokenKey]=r.tamaguiValue);return n}function F(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))){if(T.has(i.toLowerCase()))continue;let n=e[i]??t[i],a=t[i]??e[i];!n||!a||r.push(` ${i}: {
42
+ light: ${A(n,8)},
43
+ dark: ${A(a,8)}
44
44
  }`)}if(r.length!==0)return`{\n${r.join(`,
45
- `)}\n }`}function N(e,t={}){let n=t.useDefaultConfig!==!1,r=t.animations??`css`,i=t.includeTypeAugmentation!==!1,a=E(w(e)),o=w(e.filter(e=>e.category===`color`)),s=T(e.filter(e=>e.category===`color`),`dark`),c=O(o),u=O(s.length>0?s:o),{lightPalette:d,darkPalette:f}=A(e),p=M(c,u),m=j(o),h=j(s.length>0?s:o),g=Object.keys(m).length>0||Object.keys(h).length>0,_=[];for(let e of[`color`,`space`,`size`,`radius`,`zIndex`]){let t=a[e];t&&Object.keys(t).length>0&&_.push(` ${e}: ${D(t,4)}`)}let v=[];d&&v.push(` lightPalette: ${l(d)}`),f&&v.push(` darkPalette: ${l(f)}`),p&&v.push(` childrenThemes: ${p}`),g&&v.push(` getTheme: ({ scheme }) => {
45
+ `)}\n }`}function I(e){switch(e.role){case`heading`:case`display`:return`heading`;case`mono`:case`code`:return`mono`;case`sans`:case`body`:case`serif`:return`body`;default:return e.name.replaceAll(/[^A-Z0-9_]/gi,``)||`body`}}function L(e){let t=new Map;for(let n of Object.values(e)){let e=I(n),r=t.get(e);(!r||n.role===e&&r.role!==e)&&t.set(e,n)}return t}function R(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: ${f(t.normal)}`),t.italic&&n.push(`italic: ${f(t.italic)}`),` ${e}: { ${n.join(`, `)} }`}).join(`,
46
+ `)}\n }`}function z(e,r){let i=e.source===`local`?R(e):void 0,a=[`const ${r} = createFont({`,` family: isWeb ? ${f(t(e))} : ${f(n(e))},`,` size: {`,` 1: 12,`,` 2: 14,`,` 3: 16,`,` 4: 18,`,` 5: 20,`,` 6: 24,`,` 7: 28,`,` 8: 32,`,` 9: 40,`,` 10: 48`,` }${i?`,`:``}`];return i&&a.push(` face: ${i}`),a.push(`});`),a.join(`
47
+ `)}function B(e,t={},n){let r=t.useDefaultConfig!==!1,i=t.animations??`css`,a=t.includeTypeAugmentation!==!1,o=k(D(e)),s=D(e.filter(e=>e.category===`color`)),c=O(e.filter(e=>e.category===`color`),`dark`),l=j(s),u=j(c.length>0?c:s),{lightPalette:d,darkPalette:p}=N(e),m=F(l,u),h=P(s),g=P(c.length>0?c:s),_=Object.keys(h).length>0||Object.keys(g).length>0,v=[];for(let e of[`color`,`space`,`size`,`radius`,`zIndex`]){let t=o[e];t&&Object.keys(t).length>0&&v.push(` ${e}: ${A(t,4)}`)}let y=[];d&&y.push(` lightPalette: ${f(d)}`),p&&y.push(` darkPalette: ${f(p)}`),m&&y.push(` childrenThemes: ${m}`),_&&y.push(` getTheme: ({ scheme }) => {
46
48
  const semantic = scheme === "dark"
47
- ? ${D(h,8)}
48
- : ${D(m,8)};
49
+ ? ${A(g,8)}
50
+ : ${A(h,8)};
49
51
  return semantic;
50
- }`);let y=[];n?y.push(`import { createV5Theme, defaultConfig } from "@tamagui/config/v5";`):y.push(`import { createV5Theme } from "@tamagui/config/v5";`),r!==!1&&y.push(`import { animations } from "${C[r]}";`);let b=[`createTamagui`];_.length>0&&b.push(`createTokens`),y.push(`import { ${b.join(`, `)} } from "tamagui";`);let x=[`/* eslint-disable */`,`/*`,` * Generated by @razorwind/tamagui — do not edit by hand.`,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...y,``];_.length>0&&x.push(`const tokens = createTokens({`,_.join(`,
51
- `),`});`,``);let S=v.length>0?`createV5Theme({\n${v.join(`,
52
- `)}\n})`:`createV5Theme()`;x.push(`const themes = ${S};`,``);let k=[];return n&&k.push(` ...defaultConfig`),r!==!1&&k.push(` animations`),_.length>0&&(n?k.push(` tokens: {
52
+ }`);let b=[];r?b.push(`import { createV5Theme, defaultConfig } from "@tamagui/config/v5";`):b.push(`import { createV5Theme } from "@tamagui/config/v5";`),i!==!1&&b.push(`import { animations } from "${E[i]}";`);let x=[`createTamagui`];v.length>0&&x.push(`createTokens`);let S=n?L(n):new Map;S.size>0&&x.push(`createFont`,`isWeb`),b.push(`import { ${x.join(`, `)} } from "tamagui";`);let C=[`/* eslint-disable */`,`/*`,` * Generated by @razorwind/tamagui — do not edit by hand.`,` * @see https://tamagui.dev/docs/core/config-v5`,` */`,``,...b,``];v.length>0&&C.push(`const tokens = createTokens({`,v.join(`,
53
+ `),`});`,``);let w=y.length>0?`createV5Theme({\n${y.join(`,
54
+ `)}\n})`:`createV5Theme()`;C.push(`const themes = ${w};`,``);let T=new Map;if(S.size>0){let e=0;for(let[t,n]of S){let r=`${t}Font`.replaceAll(/[^A-Z0-9_]/gi,``)||`font${e}`;T.set(t,r),C.push(z(n,r),``),e+=1}}let M=[];if(r&&M.push(` ...defaultConfig`),i!==!1&&M.push(` animations`),v.length>0&&(r?M.push(` tokens: {
53
55
  ...defaultConfig.tokens,
54
56
  ...tokens,
55
57
  color: {
@@ -72,7 +74,14 @@ Re-run Razorwind generate when tokens change so \`${e.outFile}\` stays aligned w
72
74
  ...defaultConfig.tokens.zIndex,
73
75
  ...tokens.zIndex
74
76
  }
75
- }`):k.push(` tokens`)),k.push(` themes`),x.push(`export const config = createTamagui({`,k.join(`,
76
- `),`});`,``,`export type AppConfig = typeof config;`,``),i&&x.push(`declare module "tamagui" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),x.push(`export default config;`,``),x.join(`
77
- `)}function P(e,n={}){if(!e.tokens||Object.keys(e.tokens).length===0)return{};let r=y(e.tokens,n);if(r.length===0)return{};let i=n.outFile??`tamagui.config.ts`,a=N(r,n),c=n.installGuide??b({outFile:i}),l=s(o(i),`INSTALL.md`);return{[i]:t(i,a,{name:`razorwind-tamagui`},`typescript`),[l]:t(l,c,{name:`razorwind-tamagui`},`markdown`)}}var F=e(e=>({name:`tamagui`,generate:async t=>P(t,e??{})}));export{O as collectColorScales,F as default,y as flattenTokens,n as formatTokenValue,P as generateTamaguiConfig,b as renderInstallMd,N as renderTamaguiConfig,g as resolveTokenCategory,i as resolveTokenSets,a as toCssVar,u as toTamaguiValue,_ as toTokenKey};
77
+ }`):M.push(` tokens`)),M.push(` themes`),T.size>0){let e=[...T.entries()].map(([e,t])=>` ${e}: ${t}`);r?M.push(` fonts: {
78
+ ...defaultConfig.fonts,
79
+ ${e.join(`,
80
+ `)}
81
+ }`):M.push(` fonts: {
82
+ ${e.join(`,
83
+ `)}
84
+ }`)}return C.push(`export const config = createTamagui({`,M.join(`,
85
+ `),`});`,``,`export type AppConfig = typeof config;`,``),a&&C.push(`declare module "tamagui" {`,` // eslint-disable-next-line @typescript-eslint/no-empty-object-type`,` interface TamaguiCustomConfig extends AppConfig {}`,`}`,``),C.push(`export default config;`,``),C.join(`
86
+ `)}function V(e,t={}){let n=e.tokens&&Object.keys(e.tokens).length>0,i=e.fonts&&Object.keys(e.fonts).length>0;if(!n&&!i)return{};let a=n?S(e.tokens,t):[];if(a.length===0&&!i)return{};let o=t.outFile??`tamagui.config.ts`,s=B(a,t,e.fonts),c=t.installGuide??C({outFile:o}),d=u(l(o),`INSTALL.md`);return{[o]:r(o,s,{name:`razorwind-tamagui`},`typescript`),[d]:r(d,c,{name:`razorwind-tamagui`},`markdown`)}}var H=e(e=>({name:`tamagui`,generate:async t=>V(t,e??{})}));export{j as collectColorScales,H as default,S as flattenTokens,i as formatTokenValue,V as generateTamaguiConfig,C as renderInstallMd,B as renderTamaguiConfig,y as resolveTokenCategory,o as resolveTokenSets,s as toCssVar,p as toTamaguiValue,b as toTokenKey};
78
87
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@razorwind/tamagui",
3
- "version": "0.0.33",
3
+ "version": "0.0.35",
4
4
  "type": "module",
5
5
  "description": "Razorwind plugin that creates Tamagui theme tokens from Razorwind design tokens.",
6
6
  "repository": {
@@ -85,7 +85,7 @@
85
85
  "dependencies": {
86
86
  "@power-plant/core": "^0.0.90",
87
87
  "@power-plant/dtcg-schema": "^0.0.1",
88
- "@razorwind/core": "^0.0.45",
88
+ "@razorwind/core": "^0.0.47",
89
89
  "@stryke/type-checks": "^0.6.41"
90
90
  },
91
91
  "peerDependencies": {
@@ -104,5 +104,5 @@
104
104
  "typescript": "^6.0.3"
105
105
  },
106
106
  "publishConfig": { "access": "public" },
107
- "gitHead": "8646ac01928c5b68108e86adf33fb78941b35902"
107
+ "gitHead": "ca5955e41399f13b752e589a14338d6821b78f6c"
108
108
  }