@apollion-dsi/tokens 7.6.0 → 7.7.0
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/lib/build.cjs +11 -11
- package/lib/build.esm.js +8 -8
- package/lib/cli.mjs +9 -9
- package/package.json +1 -1
- package/src/theme-factory.ts +18 -2
package/lib/build.cjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var ne=Object.defineProperty;var oo=Object.getOwnPropertyDescriptor;var to=Object.getOwnPropertyNames;var ro=Object.prototype.hasOwnProperty;var i=(e,n)=>ne(e,"name",{value:n,configurable:!0});var io=(e,n)=>{for(var o in n)ne(e,o,{get:n[o],enumerable:!0})},so=(e,n,o,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of to(n))!ro.call(e,r)&&r!==o&&ne(e,r,{get:()=>n[r],enumerable:!(t=oo(n,r))||t.enumerable});return e};var ao=e=>so(ne({},"__esModule",{value:!0}),e);var nt={};io(nt,{build:()=>Yo,check:()=>Qo});module.exports=ao(nt);var x=require("node:fs/promises"),no=require("node:os"),A=require("node:path");var ue=require("@apollion-dsi/core/themes/text-size");var ae=require("culori");var K=require("@apollion-dsi/core/themes/border"),He=require("@apollion-dsi/core/themes/colors"),ie=require("@apollion-dsi/core/themes/depth"),C=require("@apollion-dsi/core/themes/font"),Re=require("@apollion-dsi/core/themes/spacing"),Ke=require("@apollion-dsi/core/themes/text-size"),_=require("culori");var Le=require("@apollion-dsi/core/themes/breakpoints");function Oe(e=Le.defaultInputBreakpoints){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Oe,"breakpointEntries");var N=require("@apollion-dsi/core/themes/layout");function Ge(e=N.defaultInputContainerSizes){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Ge,"containerSizeEntries");function je(e=N.defaultInputLayout){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(je,"layoutEntries");function Fe(e=N.defaultInputZIndex){return Object.entries(e)}i(Fe,"zIndexEntries");var $=require("@apollion-dsi/core/themes/motion");function ze(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(ze,"motionDurationEntries");function Ne(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(Ne,"motionEasingEntries");function Pe(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(Pe,"motionIndicatorEntries");function _e(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(_e,"motionIntentEntries");var Be=require("@apollion-dsi/core/themes/dimension");function oe({multiplier:e=.25,alias:n},o){let t=o!==void 0?Be.DIMENSION_MULTIPLIERS[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(oe,"createSpacing");var he={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function be(e){let n=Object.keys(he).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(be,"assertTokenMetaResolves");var co=(0,_.converter)("oklch");function R(e){return typeof e.type=="string"&&"value"in e}i(R,"isToken");function T(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(T,"kebab");function We(e){return e.split(".").map(T).join(".")}i(We,"kebabPath");function M(e){return e.kind==="ref"?e.resolved.raw:e.raw}i(M,"rawValue");function te(e,n){return Number(e.toFixed(n))||0}i(te,"round");function Ie(e){let n=co((0,_.parse)(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[te(n.l,4),te(n.c,4),te(n.h??0,2)],t=(0,_.formatHex)(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:te(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(Ie,"toColorValue");var Je=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function E(e){let n=Je.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i(E,"toDimensionValue");function S(e){return{type:"color",value:Ie(e)}}i(S,"colorToken");function F(e){let n={};for(let[o,t]of Object.entries(e))n[o]=S(t);return n}i(F,"recordColorGroup");function Ue(e){let n=(0,He.createReadableTextLayer)(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=S(r);return o.neutral=F(n.neutral),o}i(Ue,"buildReadableTextGroup");var uo=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function Xe(e){let n={};for(let o of uo){let t=e[o];n[o]={base:S(t.base),dark:S(t.dark),action:S(t.action),active:S(t.active),light:S(t.light),onLight:S(t.onLight)}}return n.grayscale=F(e.grayscale),n.neutral=F(e.neutral),n.surface=F(e.surface),n.ink=F(e.ink),n.edge=F(e.edge),n.wash=F(e.wash),n.baseDark=S(e.baseDark??"#000000"),n.baseLight=S(e.baseLight??"#ffffff"),n.deepDark=S(e.deepDark??"#000000"),n.deepLight=S(e.deepLight??"#ffffff"),n}i(Xe,"buildColorPrimitives");function Ze(e){let n=oe(Re.defaultInputSpacing,e),o={};for(let t of Object.keys(Re.defaultInputSpacing.alias))o[t]={type:"dimension",value:E(n(t))};return o}i(Ze,"buildSpacePrimitives");function qe(){let e={};for(let[n,o]of Object.entries(K.defaultInputBorder.borderWidth))e[n]={type:"dimension",value:E(o)};return e}i(qe,"buildBorderWidthPrimitives");function lo(e,n){return{color:Xe(e),space:Ze(n),borderWidth:qe()}}i(lo,"buildPrimitives");var Ye={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},Qe={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},en={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function po(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i(po,"lookupPrimitive");function P(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?po(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:Ie(s)}}:S(s)}return t}i(P,"colorRefGroup");var nn={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},fo={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function mo(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!R(r)&&s in r)r=r[s];else return;return r&&R(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(mo,"lookupDimensionPrimitive");function ke(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?mo(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:E(s)}}:{type:"dimension",value:E(s)}}return t}i(ke,"dimensionRefGroup");function on(e){let n={},o={};for(let[s,a]of Object.entries(K.defaultInputBorder.borderRadius))Je.test(a)?n[s]={type:"dimension",value:E(a)}:o[s]=a;let t=ke(K.defaultInputBorder.borderWidth,e,fo),r={};for(let[s,a]of Object.entries(K.defaultInputBorder.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(on,"buildBorder");function tn(e){let n=(0,C.createFont)(C.defaultInputFont,{textSize:e}),o={};for(let[c,u]of Object.entries(C.defaultInputFont.fontFamily)){let m=u.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:m,family:m}}}let t={};for(let[c,u]of Object.entries(n.fontSize))t[c]={type:"dimension",value:E(u)};let r={};for(let[c,u]of Object.entries(C.defaultInputFont.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${u}`,weight:u}};let s={};for(let[c,u]of Object.entries(C.defaultInputFont.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${u}`,number:u}};let a={letterSpacing:C.defaultInputFont.letterSpacing,textTransform:C.defaultInputFont.textTransform,fontStyle:C.defaultInputFont.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(tn,"buildFont");var go=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function yo(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(go),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(u=>E(a[u]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:Ie(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(yo,"parseShadow");function rn(e){let n=(0,ie.createDeth)(e),o={};for(let t of Object.keys(ie.levelValues))o[t]={type:"shadow",value:yo(n(t))};return o}i(rn,"buildShadow");function re(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${T(r)}`:T(r);if(R(s)){o.add(a);let c=he[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=re(s,a,o)}return t}i(re,"decorateGroup");function ho(e){let n=new Set,o=re(e.primitives,"",n),t=re(e.groups,"",n);return be(n),{...e,primitives:o,groups:t}}i(ho,"decorateMeta");function se(e,n){return re(e,"",n)}i(se,"decorateSlice");function sn(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${T(t)}`:T(t);R(r)?o.add(s):sn(r,s,o)}}i(sn,"collectPaths");function an(e){let n=new Set;for(let o of e)sn(o.groups,"",n);be(n)}i(an,"assertSlicesMetaComplete");function cn(){let e={};for(let[n,o]of Oe())e[n]={type:"dimension",value:E(o)};return e}i(cn,"buildBreakpoints");function un(){let e={};for(let[n,o]of Ge())e[n]={type:"dimension",value:E(o)};return e}i(un,"buildContainerSizes");function ln(){let e={};for(let[n,o]of je())e[n]={type:"dimension",value:E(o)};return e}i(ln,"buildLayoutConstants");function dn(){let e={};for(let[n,o]of Fe())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(dn,"buildZIndex");function pn(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of ze())o[a]=e(c);let t={};for(let[a,c]of Ne())t[a]=n(c);let r={};for(let[a,c]of Pe())r[a]=e(c);let s={};for(let[a,c]of _e()){let u=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:u}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(pn,"buildMotion");var fn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function mn(){let e=qe(),o=on({borderWidth:e}),t={"com.apollion.breakpoint":fn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:se({"border-width":e,border:o.group,breakpoint:cn(),"container-size":un(),layout:ln(),"z-index":dn(),motion:pn()},r),extensions:t}}i(mn,"buildBaseIR");function xe(e){let n=tn(e),o=new Set;return{groups:se({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(xe,"buildFontIR");function gn(e,n){let o=Xe(n),t=new Set;return{groups:se({color:o,bg:P(e.bg,n,Ye),text:P(e.text,n,Qe),edge:P(e.edge,n,en),tx:Ue(n),shadow:rn(n)},t),extensions:{}}}i(gn,"buildColorIR");function yn(e,n){let o=Ze(n),t={space:o},r=new Set;return{groups:se({space:o,spacing:ke(e.spacing,t,nn)},r),extensions:{}}}i(yn,"buildSpacingIR");function bo(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=lo(n,o.dimension),s=on(r),a=tn(Ke.DEFAULT_TEXT_SIZE),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":fn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let u={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:P(e.bg,n,Ye),text:P(e.text,n,Qe),edge:P(e.edge,n,en),tx:Ue(n),spacing:ke(e.spacing,r,nn),border:s.group,breakpoint:cn(),"container-size":un(),layout:ln(),"z-index":dn(),motion:pn(),font:a.group,shadow:rn(n)},extensions:c};return ho(u)}i(bo,"buildIR");var B=bo;var Ro=(0,ae.converter)("rgb"),hn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function Se(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(Se,"colorPayload");function Te(e){return e.alpha===void 0}i(Te,"isOpaqueColor");function bn(e){let n=Ro((0,ae.parse)(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(bn,"rgbTriplet");function W(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,T(t)];if(R(r))o.set(s.join("-"),r);else for(let[a,c]of W(r,s))o.set(a,c)}return o}i(W,"flatTokens");function h(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||R(o))return{};o=o[t]}return o&&!R(o)?o:{}}i(h,"groupAt");function Rn(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of W(h(e.groups,o),[o])){let s=Se(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:Te(s)})}return n}i(Rn,"colorEntries");function V(e,n){return[...W(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(V,"varEntries");function D(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(D,"pushScale");function In(e){let n=[hn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=Rn(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),D(n,"screens",[...W(h(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,M(r.value)])),D(n,"spacing",V(h(e.groups,"spacing"),["spacing"])),D(n,"borderRadius",V(h(e.groups,"border","radius"),["border","radius"])),D(n,"borderWidth",V(h(e.groups,"border","width"),["border","width"])),D(n,"fontFamily",V(h(e.groups,"font","family"),["font","family"])),D(n,"fontSize",V(h(e.groups,"font","size"),["font","size"])),D(n,"fontWeight",V(h(e.groups,"font","weight"),["font","weight"])),D(n,"lineHeight",V(h(e.groups,"font","lineHeight"),["font","line-height"])),D(n,"boxShadow",V(h(e.groups,"shadow"),["shadow"])),D(n,"transitionDuration",V(h(e.groups,"motion","duration"),["motion","duration"])),D(n,"transitionTimingFunction",V(h(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
2
|
-
`)}i(
|
|
3
|
-
`)}i(
|
|
4
|
-
`)}i(
|
|
5
|
-
`)}i(
|
|
1
|
+
"use strict";var oe=Object.defineProperty;var oo=Object.getOwnPropertyDescriptor;var to=Object.getOwnPropertyNames;var ro=Object.prototype.hasOwnProperty;var i=(e,n)=>oe(e,"name",{value:n,configurable:!0});var io=(e,n)=>{for(var o in n)oe(e,o,{get:n[o],enumerable:!0})},so=(e,n,o,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of to(n))!ro.call(e,r)&&r!==o&&oe(e,r,{get:()=>n[r],enumerable:!(t=oo(n,r))||t.enumerable});return e};var ao=e=>so(oe({},"__esModule",{value:!0}),e);var ot={};io(ot,{build:()=>Qo,check:()=>et});module.exports=ao(ot);var x=require("node:fs/promises"),no=require("node:os"),A=require("node:path");var le=require("@apollion-dsi/core/themes/text-size");var ce=require("culori");var K=require("@apollion-dsi/core/themes/border"),Ke=require("@apollion-dsi/core/themes/colors"),se=require("@apollion-dsi/core/themes/depth"),C=require("@apollion-dsi/core/themes/font"),Ie=require("@apollion-dsi/core/themes/spacing"),We=require("@apollion-dsi/core/themes/text-size"),_=require("culori");var Oe=require("@apollion-dsi/core/themes/breakpoints");function Ge(e=Oe.defaultInputBreakpoints){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Ge,"breakpointEntries");var N=require("@apollion-dsi/core/themes/layout");function je(e=N.defaultInputContainerSizes){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(je,"containerSizeEntries");function Fe(e=N.defaultInputLayout){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(Fe,"layoutEntries");function ze(e=N.defaultInputZIndex){return Object.entries(e)}i(ze,"zIndexEntries");var $=require("@apollion-dsi/core/themes/motion");function Ne(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(Ne,"motionDurationEntries");function Pe(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(Pe,"motionEasingEntries");function _e(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(_e,"motionIndicatorEntries");function Be(e=$.defaultInputMotion){let n=(0,$.createMotion)(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(Be,"motionIntentEntries");var He=require("@apollion-dsi/core/themes/dimension");function te({multiplier:e=.25,alias:n},o){let t=o!==void 0?He.DIMENSION_MULTIPLIERS[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(te,"createSpacing");var be={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function Re(e){let n=Object.keys(be).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(Re,"assertTokenMetaResolves");var co=(0,_.converter)("oklch");function R(e){return typeof e.type=="string"&&"value"in e}i(R,"isToken");function T(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(T,"kebab");function Je(e){return e.split(".").map(T).join(".")}i(Je,"kebabPath");function M(e){return e.kind==="ref"?e.resolved.raw:e.raw}i(M,"rawValue");function re(e,n){return Number(e.toFixed(n))||0}i(re,"round");function ke(e){let n=co((0,_.parse)(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[re(n.l,4),re(n.c,4),re(n.h??0,2)],t=(0,_.formatHex)(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:re(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(ke,"toColorValue");var Ue=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function E(e){let n=Ue.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i(E,"toDimensionValue");function S(e){return{type:"color",value:ke(e)}}i(S,"colorToken");function F(e){let n={};for(let[o,t]of Object.entries(e))n[o]=S(t);return n}i(F,"recordColorGroup");function Xe(e){let n=(0,Ke.createReadableTextLayer)(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=S(r);return o.neutral=F(n.neutral),o}i(Xe,"buildReadableTextGroup");var uo=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function Ze(e){let n={};for(let o of uo){let t=e[o];n[o]={base:S(t.base),dark:S(t.dark),action:S(t.action),active:S(t.active),light:S(t.light),onLight:S(t.onLight)}}return n.grayscale=F(e.grayscale),n.neutral=F(e.neutral),n.surface=F(e.surface),n.ink=F(e.ink),n.edge=F(e.edge),n.wash=F(e.wash),n.baseDark=S(e.baseDark??"#000000"),n.baseLight=S(e.baseLight??"#ffffff"),n.deepDark=S(e.deepDark??"#000000"),n.deepLight=S(e.deepLight??"#ffffff"),n}i(Ze,"buildColorPrimitives");function qe(e){let n=te(Ie.defaultInputSpacing,e),o={};for(let t of Object.keys(Ie.defaultInputSpacing.alias))o[t]={type:"dimension",value:E(n(t))};return o}i(qe,"buildSpacePrimitives");function Ye(){let e={};for(let[n,o]of Object.entries(K.defaultInputBorder.borderWidth))e[n]={type:"dimension",value:E(o)};return e}i(Ye,"buildBorderWidthPrimitives");function lo(e,n){return{color:Ze(e),space:qe(n),borderWidth:Ye()}}i(lo,"buildPrimitives");var Qe={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},en={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},nn={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function po(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i(po,"lookupPrimitive");function P(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?po(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:ke(s)}}:S(s)}return t}i(P,"colorRefGroup");var on={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},fo={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function mo(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!R(r)&&s in r)r=r[s];else return;return r&&R(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(mo,"lookupDimensionPrimitive");function xe(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?mo(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:E(s)}}:{type:"dimension",value:E(s)}}return t}i(xe,"dimensionRefGroup");function tn(e){let n={},o={};for(let[s,a]of Object.entries(K.defaultInputBorder.borderRadius))Ue.test(a)?n[s]={type:"dimension",value:E(a)}:o[s]=a;let t=xe(K.defaultInputBorder.borderWidth,e,fo),r={};for(let[s,a]of Object.entries(K.defaultInputBorder.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(tn,"buildBorder");function rn(e){let n=(0,C.createFont)(C.defaultInputFont,{textSize:e}),o={};for(let[c,u]of Object.entries(C.defaultInputFont.fontFamily)){let m=u.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:m,family:m}}}let t={};for(let[c,u]of Object.entries(n.fontSize))t[c]={type:"dimension",value:E(u)};let r={};for(let[c,u]of Object.entries(C.defaultInputFont.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${u}`,weight:u}};let s={};for(let[c,u]of Object.entries(C.defaultInputFont.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${u}`,number:u}};let a={letterSpacing:C.defaultInputFont.letterSpacing,textTransform:C.defaultInputFont.textTransform,fontStyle:C.defaultInputFont.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(rn,"buildFont");var go=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function yo(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(go),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(u=>E(a[u]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:ke(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(yo,"parseShadow");function sn(e){let n=(0,se.createDeth)(e),o={};for(let t of Object.keys(se.levelValues))o[t]={type:"shadow",value:yo(n(t))};return o}i(sn,"buildShadow");function ie(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${T(r)}`:T(r);if(R(s)){o.add(a);let c=be[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=ie(s,a,o)}return t}i(ie,"decorateGroup");function ho(e){let n=new Set,o=ie(e.primitives,"",n),t=ie(e.groups,"",n);return Re(n),{...e,primitives:o,groups:t}}i(ho,"decorateMeta");function ae(e,n){return ie(e,"",n)}i(ae,"decorateSlice");function an(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${T(t)}`:T(t);R(r)?o.add(s):an(r,s,o)}}i(an,"collectPaths");function cn(e){let n=new Set;for(let o of e)an(o.groups,"",n);Re(n)}i(cn,"assertSlicesMetaComplete");function un(){let e={};for(let[n,o]of Ge())e[n]={type:"dimension",value:E(o)};return e}i(un,"buildBreakpoints");function ln(){let e={};for(let[n,o]of je())e[n]={type:"dimension",value:E(o)};return e}i(ln,"buildContainerSizes");function dn(){let e={};for(let[n,o]of Fe())e[n]={type:"dimension",value:E(o)};return e}i(dn,"buildLayoutConstants");function pn(){let e={};for(let[n,o]of ze())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(pn,"buildZIndex");function fn(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of Ne())o[a]=e(c);let t={};for(let[a,c]of Pe())t[a]=n(c);let r={};for(let[a,c]of _e())r[a]=e(c);let s={};for(let[a,c]of Be()){let u=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:u}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(fn,"buildMotion");var mn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function gn(){let e=Ye(),o=tn({borderWidth:e}),t={"com.apollion.breakpoint":mn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:ae({"border-width":e,border:o.group,breakpoint:un(),"container-size":ln(),layout:dn(),"z-index":pn(),motion:fn()},r),extensions:t}}i(gn,"buildBaseIR");function Se(e){let n=rn(e),o=new Set;return{groups:ae({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(Se,"buildFontIR");function yn(e,n){let o=Ze(n),t=new Set;return{groups:ae({color:o,bg:P(e.bg,n,Qe),text:P(e.text,n,en),edge:P(e.edge,n,nn),tx:Xe(n),shadow:sn(n)},t),extensions:{}}}i(yn,"buildColorIR");function hn(e,n){let o=qe(n),t={space:o},r=new Set;return{groups:ae({space:o,spacing:xe(e.spacing,t,on)},r),extensions:{}}}i(hn,"buildSpacingIR");function bo(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=lo(n,o.dimension),s=tn(r),a=rn(We.DEFAULT_TEXT_SIZE),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":mn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let u={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:P(e.bg,n,Qe),text:P(e.text,n,en),edge:P(e.edge,n,nn),tx:Xe(n),spacing:xe(e.spacing,r,on),border:s.group,breakpoint:un(),"container-size":ln(),layout:dn(),"z-index":pn(),motion:fn(),font:a.group,shadow:sn(n)},extensions:c};return ho(u)}i(bo,"buildIR");var B=bo;var Ro=(0,ce.converter)("rgb"),bn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function Te(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(Te,"colorPayload");function ve(e){return e.alpha===void 0}i(ve,"isOpaqueColor");function Rn(e){let n=Ro((0,ce.parse)(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(Rn,"rgbTriplet");function W(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,T(t)];if(R(r))o.set(s.join("-"),r);else for(let[a,c]of W(r,s))o.set(a,c)}return o}i(W,"flatTokens");function h(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||R(o))return{};o=o[t]}return o&&!R(o)?o:{}}i(h,"groupAt");function In(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of W(h(e.groups,o),[o])){let s=Te(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:ve(s)})}return n}i(In,"colorEntries");function V(e,n){return[...W(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(V,"varEntries");function D(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(D,"pushScale");function kn(e){let n=[bn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=In(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),D(n,"screens",[...W(h(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,M(r.value)])),D(n,"spacing",V(h(e.groups,"spacing"),["spacing"])),D(n,"borderRadius",V(h(e.groups,"border","radius"),["border","radius"])),D(n,"borderWidth",V(h(e.groups,"border","width"),["border","width"])),D(n,"fontFamily",V(h(e.groups,"font","family"),["font","family"])),D(n,"fontSize",V(h(e.groups,"font","size"),["font","size"])),D(n,"fontWeight",V(h(e.groups,"font","weight"),["font","weight"])),D(n,"lineHeight",V(h(e.groups,"font","lineHeight"),["font","line-height"])),D(n,"boxShadow",V(h(e.groups,"shadow"),["shadow"])),D(n,"transitionDuration",V(h(e.groups,"motion","duration"),["motion","duration"])),D(n,"transitionTimingFunction",V(h(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
2
|
+
`)}i(kn,"renderTailwindPreset");function xn(e){let n=i(r=>[...W(r).keys()],"keys"),o=i(r=>`[${r.map(s=>JSON.stringify(s)).join(", ")}]`,"list");return[bn,"// tailwind-merge extension for the generated preset \u2014 pass to extendTailwindMerge().","","export const twMergeExtension = {"," extend: {"," theme: {",` colors: ${o(In(e).map(r=>r.key))},`,` spacing: ${o(n(h(e.groups,"spacing")))},`,` borderRadius: ${o(n(h(e.groups,"border","radius")))},`,` borderWidth: ${o(n(h(e.groups,"border","width")))},`," },"," classGroups: {",` 'font-family': [{ font: ${o(n(h(e.groups,"font","family")))} }],`,` 'font-size': [{ text: ${o(n(h(e.groups,"font","size")))} }],`,` 'font-weight': [{ font: ${o(n(h(e.groups,"font","weight")))} }],`,` leading: [{ leading: ${o(n(h(e.groups,"font","lineHeight")))} }],`,` shadow: [{ shadow: ${o(n(h(e.groups,"shadow")))} }],`," },"," },","};",""].join(`
|
|
3
|
+
`)}i(xn,"renderTwMergeExtension");var De="/* Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. */";function J(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,T(t)];R(r)?o.push(` --apollion-${s.join("-")}: ${M(r.value)};`):J(r,s,o)}}i(J,"emitVars");function ue(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,T(t)];if(!R(r)){ue(r,s,o);continue}let a=Te(r);a&&ve(a)&&o.push(` --apollion-${s.join("-")}-rgb: ${Rn(a)};`)}}i(ue,"emitRgbVars");function we(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,T(t)];R(r)?r.type==="color"&&o.push(` @property --apollion-${s.join("-")} { syntax: '<color>'; inherits: true; initial-value: ${M(r.value)}; }`):we(r,s,o)}}i(we,"emitProperties");function Sn(e,n={}){let{brand:o,mode:t,surface:r,dimension:s}=e.meta,a=[De,""];return a.push(`/* Variant: brand=${o} mode=${t} surface=${r} dimension=${s} */`,"",":root {"),J(e.groups,[],a),n.rgbCompanions&&(a.push(""," /* -rgb channel triplets \u2014 Tailwind <alpha-value> companions (opaque colour tokens only). */"),ue(e.groups,[],a)),a.push("}",""),a.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),we(e.groups,[],a),a.push("}",""),a.join(`
|
|
4
|
+
`)}i(Sn,"renderCss");function Tn(e,n,o={}){let{attribute:t="data-apollion-mode",rgbCompanions:r}=o,{brand:s,surface:a,dimension:c}=e.meta,u=[De,""],m=i((v,l,d)=>{u.push(`${v} {`,` color-scheme: ${d};`),J(l.groups,[],u),r&&ue(l.groups,[],u),u.push("}","")},"block");u.push(`/* Variant: brand=${s} surface=${a} dimension=${c} modes=light+dark (attribute ${t}) */`,""),m(`:root, html[${t}="light"]`,e,"light"),m(`html[${t}="dark"]`,n,"dark"),u.push("@media (prefers-color-scheme: dark) {"),u.push(` html:not([${t}]) {`," color-scheme: dark;");let I=[];J(n.groups,[],I),r&&ue(n.groups,[],I);for(let v of I)u.push(` ${v}`);return u.push(" }","}",""),u.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),we(e.groups,[],u),u.push("}",""),u.join(`
|
|
5
|
+
`)}i(Tn,"renderCssModes");function vn(e,n={}){let{attribute:o=le.TEXT_SIZE_ATTRIBUTE,defaultLevel:t=le.DEFAULT_TEXT_SIZE}=n,r=[De,""];r.push(`/* Text size (ADR-030): levels=${e.map(([c])=>c).join("+")} default=${t} (attribute ${o}) */`,"");let s=i((c,u)=>{r.push(`${c} {`);let m=u.groups.font;J(m.size,["font","size"],r),r.push("}","")},"block"),a=e.find(([c])=>c===t);a&&s(":root",a[1]);for(let[c,u]of e)s(`:root[${o}="${c}"],
|
|
6
6
|
[${o}="${c}"]`,u);return r.join(`
|
|
7
|
-
`)}i(
|
|
7
|
+
`)}i(vn,"renderCssTextSize");var Io="<!-- Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. -->";function $e(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${t}`:t;R(r)?o.push([s,M(r.value)]):$e(r,s,o)}}i($e,"flatten");function ko(e){return typeof e=="number"?String(e):`'${String(e).replace(/'/g,"''")}'`}i(ko,"yamlEscape");function xo(e){let{mode:n,surface:o,dimension:t}=e.meta;return`${n}.${o}.${t}`}i(xo,"variantKey");function Dn(e,n){if(n.length===0)throw new Error(`renderDesignMd: no variants for brand "${e}"`);let o=["---",`brand: '${e}'`,"generator: apollion-tokens","variants:"];for(let r of n){let s=[];$e(r.groups,"",s),o.push(` ${xo(r)}:`);for(let[a,c]of s)o.push(` ${a}: ${ko(c)}`)}o.push("---");let t=["",Io,"",`# Design.md \u2014 ${e}`,"","Resolved design-token values for this brand, one section per variant.","Consumption rules (which token to reach for, layer boundaries) live in the","package `llms.txt`; this file carries the values those rules reference.","Regenerate with `apollion-tokens build` \u2014 never edit.",""];for(let r of n){let{mode:s,surface:a,dimension:c}=r.meta;t.push(`## Variant \`${s} \xB7 ${a} \xB7 ${c}\``,"");let u=[];$e(r.groups,"",u);let m=new Map;for(let[I,v]of u){let l=I.split(".")[0]??I,d=m.get(l)??[];d.push([I,v]),m.set(l,d)}for(let[I,v]of m){t.push(`### ${I}`,"","| Token | Value |","| --- | --- |");for(let[l,d]of v)t.push(`| \`${l}\` | \`${d}\` |`);t.push("")}}return`${o.join(`
|
|
8
8
|
`)}
|
|
9
9
|
${t.join(`
|
|
10
|
-
`)}`}i(
|
|
11
|
-
`}i(X,"renderSet");function
|
|
12
|
-
`}i(
|
|
13
|
-
`)}i(
|
|
14
|
-
`}i(zn,"serializeManifest");var Nn=require("@apollion-dsi/core/themes/text-size");var Lo="json/sets",Pn="json/resolver.json";function Z(e){return`${Lo}/${e}.json`}i(Z,"setFile");function Oo(e,n,o){return`${e}.color.${n}.${o}`}i(Oo,"colorSetName");function Go(e){return`spacing.${e}`}i(Go,"spacingSetName");function jo(e){return`font.${e}`}i(jo,"fontSetName");function Fo(e){return`font.${e}`}i(Fo,"legacyFontSetName");function fe(e,n){e.includes(n)||e.push(n)}i(fe,"pushUnique");function _n(e){let n=de(e),o=[],t=[],r=[],s=[],a=new Set,c=[],u=new Set,m=[],I=[...le(e)],v=I.map(l=>{let d=jo(l);return{kind:"font",name:d,file:Z(d),textSize:l}});for(let l of n){fe(o,l.brand),fe(t,l.mode),fe(r,l.surface),fe(s,l.dimension);let d=Oo(l.brand,l.mode,l.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:Z(d),brand:l.brand,mode:l.mode,surface:l.surface}));let b=Go(l.dimension);u.has(b)||(u.add(b),m.push({kind:"spacing",name:b,file:Z(b),dimension:l.dimension}))}for(let l of s){let d=Fo(l);v.push({kind:"font",name:d,file:Z(d),textSize:Nn.DEFAULT_TEXT_SIZE,deprecatedDimension:l})}return{base:{kind:"base",name:"base",file:Z("base")},spacing:m,font:v,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:I}}}i(_n,"planSets");var qn=require("@apollion-dsi/core/themes/colors"),Ae=require("@apollion-dsi/core/themes/foundation"),Yn=require("@apollion-dsi/core/themes/semantic"),Qn=require("@apollion-dsi/core/themes/spacing"),eo=require("@apollion-dsi/core/themes/surface");var y=require("culori");var Q=(0,y.converter)("oklch"),zo=(0,y.converter)("rgb");function p(e,n,o){let t=(0,y.parse)(e),r=(0,y.parse)(n);if(!t||!r)return e;let s=(0,y.interpolate)([t,r],"oklch");return(0,y.formatHex)(s(o))??e}i(p,"mixOklch");function No(e){return e?typeof e=="string"?e:e.base:"#000"}i(No,"coerceToHex");var me=1.3,Po=.05,Bn=.04,G=i((e,n)=>{let o=(0,y.parse)(e),t=(0,y.parse)(n);return!o||!t?1:(0,y.wcagContrast)(o,t)},"contrastRatio"),q=i(e=>{let n=Q((0,y.parse)(e));return n?n.l??0:null},"oklchLightness"),_o=4.5;function Y(e,n,o=_o){let t=(0,y.parse)(n),r=Q((0,y.parse)(e));if(!t||!r)return e;let s=G("#fff",n)>=G("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=(0,y.formatHex)(r)??e,u=(0,y.parse)(c);if(u&&(0,y.wcagContrast)(u,t)>=o)return c;let m=Math.min(1,Math.max(0,(r.l??0)+s));if(m===(r.l??0))break;r={...r,l:m}}return(0,y.formatHex)(r)??e}i(Y,"readableColor");var Hn=i((e,n)=>{if(G(e,n)>=me)return!0;let o=q(e),t=q(n);return o!==null&&t!==null&&Math.abs(o-t)>=Po},"isPerceptibleState"),Ve=i(e=>e?G("#fff",e)>G("#000",e):!1,"isDarkSurface");function Kn(e,n,o){let t=Q((0,y.parse)(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?Bn:-Bn;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let u=(0,y.formatHex)(r);if(u&&G(e,u)>=me)return u}return(0,y.formatHex)(r)??null}i(Kn,"derivePerceptibleState");function Wn(e,n,o){let t=Kn(e,n,o);if(t&&G(e,t)>=me)return t;let r=Kn(e,!n);return r&&G(e,r)>=me?r:t??r}i(Wn,"perceptibleStateFor");function w(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=No(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:p(t,r,.6),action:p(t,r,.2),active:p(t,s,.6),light:p(t,s,.9),onLight:t};if((0,y.parse)(t)){let c=Ve(n.baseLight),u=Hn(t,a.action);if(u||(a.action=Wn(t,c)??a.action),!Hn(t,a.active)){let m=u?void 0:q(a.action)??void 0;a.active=Wn(t,c,m)??a.active}}if(a.onLight=Y(a.action,a.light),o){let c=o.action??a.action,u=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:u,onLight:o.onLight??Y(c,u)}}return a}i(w,"mountSingleColor");function Jn(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:p(n,o,.05),10:p(n,o,.1),20:p(n,o,.2),30:p(n,o,.3),40:p(n,o,.4),50:p(n,o,.5),60:p(n,o,.6),70:p(n,o,.7),80:p(n,o,.8),90:p(n,o,.9),100:p(n,o,1)}}i(Jn,"mountGreyscaleColors");function Un(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=p(t,o,.5);return{0:p(s,n,r(18)),5:p(s,n,r(17.5)),10:p(s,n,r(17)),20:p(s,n,r(16)),30:p(s,n,r(15)),40:p(s,n,r(14)),50:p(s,n,r(13)),60:p(s,n,r(12)),70:p(s,n,r(11)),80:p(s,n,r(10)),90:p(s,n,r(9)),100:p(s,n,r(8)),110:p(s,n,r(7)),120:p(s,n,r(6)),130:p(s,n,r(5)),140:p(s,n,r(4)),150:p(s,n,r(3)),160:p(s,n,r(2)),170:s,180:p(s,o,.25)}}i(Un,"mountNeutralColors");function H(e,n){let o=Q((0,y.parse)(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return(0,y.formatHex)({...o,l:t})??e}i(H,"shiftLightness");function ge(e,n){let o=Q((0,y.parse)(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:(0,y.formatHex)({...o,l:Math.min(s,Math.max(r,t))})??e}i(ge,"clampLightness");function z(e,n){let o=zo((0,y.parse)(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(z,"toRgbaString");var f=require("@apollion-dsi/core/themes/colors");var Bo="#FFFFFF",Me="#000000";function Ho(e){return Ve(e.baseLight)?"dark":"light"}i(Ho,"resolvePolarity");function Ko(e){let n=f.HALATION_FLOORS.CANVAS_MIN_L;return e<=n?1:e>=f.DARK_BOOST_TAPER_MAX_L?0:(f.DARK_BOOST_TAPER_MAX_L-e)/(f.DARK_BOOST_TAPER_MAX_L-n)}i(Ko,"darkElevationBoostFactor");function Xn(e,n,o){if(Math.abs((0,f.apcaContrast)(e,n))>=o)return e;let t=Math.abs((0,f.apcaContrast)("#ffffff",n))>=Math.abs((0,f.apcaContrast)("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=H(r,t?.02:-.02);if(a===r||(r=a,Math.abs((0,f.apcaContrast)(r,n))>=o))break}return r}i(Xn,"ensureApca");function Wo(e,n){let o=e.baseLight??Bo,t=n==="dark",r=t?ge(o,{min:f.HALATION_FLOORS.CANVAS_MIN_L}):o,s=H(r,f.LADDER_DELTAS.sunken),a=t?Ko(q(r)??0):0,c=i(u=>f.LADDER_DELTAS[u]+a*f.DARK_ELEVATION_BOOST[u],"delta");return{canvas:r,sunken:t?ge(s,{min:f.HALATION_FLOORS.CANVAS_MIN_L}):s,paper:H(r,c("paper")),raised:H(r,c("raised")),overlay:H(r,c("overlay")),scrim:t?e.deepLight??Me:e.neutral?.["180"]??e.baseDark??Me}}i(Wo,"deriveSurface");function Jo(e,n){let o=e.baseDark??Me,t=ge(Xn(Y(o,n.paper,f.MIN_CONTRAST_AA),n.paper,f.INK_APCA_MIN.primary),{max:f.HALATION_FLOORS.INK_MAX_L}),r=i((s,a)=>Xn(Y(p(t,n.canvas,s),n.paper,f.MIN_CONTRAST_AA),n.paper,a),"tier");return{primary:t,secondary:r(f.INK_MIX.secondary,f.INK_APCA_MIN.secondary),muted:r(f.INK_MIX.muted,f.INK_APCA_MIN.muted),disabled:p(t,n.canvas,f.INK_MIX.disabled)}}i(Jo,"deriveInk");function Uo(e){return{hairline:z(e.primary,f.EDGE_ALPHA.hairline),border:z(e.primary,f.EDGE_ALPHA.border),strong:z(e.primary,f.EDGE_ALPHA.strong)}}i(Uo,"deriveEdge");function Xo(e,n){let o=f.WASH_ALPHA[n];return{hover:z(e.primary,o.hover),pressed:z(e.primary,o.pressed),selected:z(e.primary,o.selected)}}i(Xo,"deriveWash");function Zo(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(Zo,"applyOverride");function Zn(e,n){let o=Ho(e),t=Wo(e,o),r=Jo(e,t),s={surface:t,ink:r,edge:Uo(r),wash:Xo(r,o)};return Zo(s,n?.[o])}i(Zn,"resolveSurfaceLadder");function qo(e){let n=Un(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Jn(e),...Zn({...e,neutral:n},e.ladder),main:w(e.main,e),opposite:w(e.opposite,e),complementary:w(e.complementary,e),danger:w(e.danger,e),information:w(e.information,e),success:w(e.success,e),warning:w(e.warning,e),primary:w(e.primary,e),secondary:w(e.secondary,e),tertiary:w(e.tertiary,e)}}i(qo,"composeColors");function j(e,n=Qn.defaultInputSpacing){let o=e.mode==="dark"?(0,qn.toDarkColors)(e.colors):e.colors,t=qo(o),r=oe(n,e.dimension),s=(0,Yn.createSemantic)({colors:t,spacing:r}),a=(0,Ae.createFoundation)(s);return e.surface==="negative"&&(a=(0,Ae.createFoundation)((0,eo.invertForSurface)({semantic:s,colors:t},"negative").semantic)),{foundation:a,colors:t}}i(j,"buildVariantThemes");async function Yo(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=de(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await(0,x.mkdtemp)((0,A.join)((0,no.tmpdir)(),"apollion-tokens-"));try{let u=[],m=i(async(l,d)=>{await et(c,l,d),u.push({path:l,sha256:pe(d)}),r&&console.log(` \u2713 ${l}`)},"emit");if(a.json){let l=_n(n),d=[],b=mn();d.push(b),await m(l.base.file,$n(b));for(let g of l.spacing){let k=s.find(ee=>ee.dimension===g.dimension),{foundation:L}=j(k),O=yn(L,g.dimension);d.push(O),await m(g.file,En(O,g.dimension))}for(let g of l.font){let k=xe(g.textSize);d.push(k),await m(g.file,Vn(k,g))}for(let g of l.color){let k=s.find(ye=>ye.brand===g.brand&&ye.mode===g.mode&&ye.surface===g.surface),{foundation:L,colors:O}=j(k),ee=gn(L,O);d.push(ee),await m(g.file,Cn(ee,g.brand,g.mode,g.surface))}an(d),await m(Pn,Mn(n,l))}if(a.css||a.ts)for(let l of s){let{foundation:d,colors:b}=j(l),g=B(d,b,l),k=On(l);a.css&&await m(`css/${k}.css`,xn(g,{rgbCompanions:a.tailwind})),a.ts&&await m(`ts/${k}.d.ts`,Ln(g))}if(a.css||a.cssModes){let l=le(n).map(d=>[d,xe(d)]);await m("css/font.css",Tn(l))}if(a.cssModes){let l=new Map;for(let d of s){let b=`${d.brand}.${d.surface}.${d.dimension}`,g=l.get(b)??{};g[d.mode]=d,l.set(b,g)}for(let[d,{light:b,dark:g}]of l){if(!b||!g)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let k=j(b),L=j(g),O=Sn(B(k.foundation,k.colors,b),B(L.foundation,L.colors,g),{rgbCompanions:a.tailwind});await m(`css/${d}.modes.css`,O)}}if(a.tailwind){let l=s[0],{foundation:d,colors:b}=j(l),g=B(d,b,l);await m("tailwind/preset.mjs",In(g)),await m("tailwind/tw-merge.mjs",kn(g))}if(a.designMd){let l=[...new Set(s.map(d=>d.brand))];for(let d of l){let g=s.filter(k=>k.brand===d).map(k=>{let{foundation:L,colors:O}=j(k);return B(L,O,k)});await m(`design/${d}.design.md`,vn(d,g))}}let I={configHash:Ee(n),files:u,gitCommit:jn(t),buildEnv:Fn()},v=zn(I);return await(0,x.writeFile)((0,A.join)(c,"manifest.json"),v),await(0,x.rm)(o,{recursive:!0,force:!0}),await(0,x.mkdir)((0,A.dirname)(o),{recursive:!0}),await(0,x.rename)(c,o),r&&console.log(`\u2713 ${u.length} files \u2192 ${o}`),{manifest:I,outDir:o}}catch(u){throw await(0,x.rm)(c,{recursive:!0,force:!0}).catch(()=>{}),u}}i(Yo,"build");async function Qo(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await(0,x.readFile)((0,A.join)(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==Ee(n))return!1;for(let r of t.files){let s;try{s=await(0,x.readFile)((0,A.join)(o,r.path))}catch{return!1}if(pe(s)!==r.sha256)return!1}return!0}i(Qo,"check");async function et(e,n,o){let t=(0,A.join)(e,n);await(0,x.mkdir)((0,A.dirname)(t),{recursive:!0}),await(0,x.writeFile)(t,o)}i(et,"writeAt");0&&(module.exports={build,check});
|
|
10
|
+
`)}`}i(Dn,"renderDesignMd");var $n=require("@apollion-dsi/core/themes/text-size");function wn(e){return e.alpha!==void 0?{colorSpace:"oklch",components:[...e.components],alpha:e.alpha,hex:e.hex}:{colorSpace:"oklch",components:[...e.components],hex:e.hex}}i(wn,"colorValue");function U(e){return{value:e.value,unit:e.unit}}i(U,"dimensionValue");function So(e){return{value:e.value,unit:e.unit}}i(So,"durationValue");function To(e){return[...e.points]}i(To,"cubicBezierValue");function vo(e){let n=e.shadow,o={color:wn(n.color),offsetX:U(n.offsetX),offsetY:U(n.offsetY),blur:U(n.blur),spread:U(n.spread)};return n.inset&&(o.inset=!0),o}i(vo,"shadowValue");function Do(e){switch(e.kind){case"ref":return`{${Je(e.path)}}`;case"color":return wn(e);case"dimension":return U(e);case"fontFamily":return e.family;case"fontWeight":return e.weight;case"number":return e.number;case"strokeStyle":return e.style;case"shadow":return vo(e);case"duration":return So(e);case"cubicBezier":return To(e)}}i(Do,"projectValue");function wo(e){let n={$value:Do(e.value),$type:e.type};return e.description!==void 0&&(n.$description=e.description),e.deprecated!==void 0&&(n.$deprecated=e.deprecated),n}i(wo,"projectToken");function Ce(e){let n={};for(let[o,t]of Object.entries(e))n[T(o)]=R(t)?wo(t):Ce(t);return n}i(Ce,"projectGroup");function X(e,n,o){let t=Ce(e.groups);if(o)for(let s of Object.keys(t))t[s]={$deprecated:o,...t[s]};let r={$description:n,...t};return Object.keys(e.extensions).length>0&&(r.$extensions=e.extensions),`${JSON.stringify(r,null,2)}
|
|
11
|
+
`}i(X,"renderSet");function Cn(e){return X(e,"Apollion DS \u2014 base set (axis-invariant: border, breakpoints, container sizes, layout, motion). DTCG 2025.10.")}i(Cn,"renderBaseSet");function En(e,n,o,t){return X(e,`Apollion DS \u2014 colour set. brand=${n} mode=${o} surface=${t}. DTCG 2025.10.`)}i(En,"renderColorSet");function Vn(e,n){return X(e,`Apollion DS \u2014 spacing set. dimension=${n}. DTCG 2025.10.`)}i(Vn,"renderSpacingSet");function Mn(e,n){return n.deprecatedDimension?X(e,`Apollion DS \u2014 font set. DEPRECATED alias of font.${n.textSize} (dimension=${n.deprecatedDimension} no longer scales type, ADR-030; removed at the next major). DTCG 2025.10.`,`Alias of font.${n.textSize} \u2014 dimension no longer scales type (ADR-030). Use font.<textSize>.`):X(e,`Apollion DS \u2014 font set. textSize=${n.textSize}. DTCG 2025.10.`)}i(Mn,"renderFontSet");function An(e,n){let{modifiers:o}=n,t=[{name:"brand",values:[...o.brand],default:o.brand[0]},{name:"mode",values:[...o.mode],default:o.mode[0]},{name:"surface",values:[...o.surface],default:o.surface[0]},{name:"dimension",values:[...o.dimension],default:o.dimension[0]},{name:"textSize",values:[...o.textSize],default:$n.DEFAULT_TEXT_SIZE}],r=n.font.filter(c=>c.deprecatedDimension),a={name:"apollion-tokens",description:"Apollion DS token resolver \u2014 DTCG 2025.10. Compose the base set with the colour set for the chosen brand/mode/surface, the spacing set for the chosen dimension and the font set for the chosen textSize. NOTE: mode is a topology placeholder in this release (dark resolves identically to light until S6).",sets:[{name:n.base.name,source:n.base.file},...n.spacing.map(c=>({name:c.name,source:c.file})),...n.font.map(c=>({name:c.name,source:c.file})),...n.color.map(c=>({name:c.name,source:c.file}))],modifiers:t,$extensions:{"com.apollion.resolver":{composition:{always:[n.base.name],byModifier:{color:"${brand}.color.${mode}.${surface}",spacing:"spacing.${dimension}",font:"font.${textSize}"}},deprecatedSets:Object.fromEntries(r.map(c=>[c.name,`font.${c.textSize}`])),modeIsPlaceholder:!0}}};return`${JSON.stringify(a,null,2)}
|
|
12
|
+
`}i(An,"renderResolver");var $o="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function Co(e,n,o){let t=[];if(e.description!==void 0&&t.push(e.description),e.deprecated===!0?t.push("@deprecated"):typeof e.deprecated=="string"&&t.push(`@deprecated ${e.deprecated}`),t.length!==0){o.push(`${n}/**`);for(let r of t)o.push(`${n} * ${r.replace(/\*\//g,"*\\/")}`);o.push(`${n} */`)}}i(Co,"emitDoc");function Ln(e,n,o){let t=" ".repeat(n);for(let[r,s]of Object.entries(e))R(s)?(Co(s,t,o),o.push(`${t}${JSON.stringify(r)}: ${JSON.stringify(M(s.value))},`)):(o.push(`${t}${r}: {`),Ln(s,n+1,o),o.push(`${t}},`))}i(Ln,"emitGroup");function On(e){let{brand:n,mode:o,surface:t,dimension:r}=e.meta,s=[$o,`// Variant: brand=${n} mode=${o} surface=${t} dimension=${r}`,"","export const tokens = {"];return Ln(e.groups,1,s),s.push("} as const;","","export type Tokens = typeof tokens;",""),s.join(`
|
|
13
|
+
`)}i(On,"renderTs");var Eo=["light","dark"],Vo=["positive","negative"],Mo=["compact","normal","spacious"],Ao=["smaller","default","larger","largest"];function de(e){let n=[...new Set(e.textSizes??Ao)];if(!n.includes("default"))throw new Error(`apollion-tokens: textSizes must include 'default' (got [${n.join(", ")}])`);return n}i(de,"resolveTextSizes");function pe(e){let n=e.modes??Eo,o=e.surfaces??Vo,t=e.dimensions??Mo,r=Object.entries(e.brands).sort(([a],[c])=>a.localeCompare(c)),s=[];for(let[a,c]of r)for(let u of n)for(let m of o)for(let I of t)s.push({brand:a,colors:c,mode:u,surface:m,dimension:I});return s}i(pe,"expandVariants");function Gn(e){return`${e.brand}.${e.mode}.${e.surface}.${e.dimension}`}i(Gn,"variantName");var jn=require("node:crypto");function fe(e){return(0,jn.createHash)("sha256").update(e).digest("hex")}i(fe,"sha256");function Ve(e){return fe(Ee(e))}i(Ve,"hashConfig");function Ee(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(Ee).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Ee(e[t])}`).join(",")}}`}i(Ee,"stableStringify");function Fn(e){try{let{execSync:n}=require("node:child_process");return n("git rev-parse --short HEAD",{cwd:e,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim()}catch{return""}}i(Fn,"detectGitCommit");function zn(){return{node:process.version,platform:`${process.platform}-${process.arch}`}}i(zn,"buildEnv");function Nn(e){let n=[...e.files].sort((t,r)=>t.path.localeCompare(r.path)),o={configHash:e.configHash,files:n,gitCommit:e.gitCommit,buildEnv:e.buildEnv};return`${JSON.stringify(o,null,2)}
|
|
14
|
+
`}i(Nn,"serializeManifest");var Pn=require("@apollion-dsi/core/themes/text-size");var Lo="json/sets",_n="json/resolver.json";function Z(e){return`${Lo}/${e}.json`}i(Z,"setFile");function Oo(e,n,o){return`${e}.color.${n}.${o}`}i(Oo,"colorSetName");function Go(e){return`spacing.${e}`}i(Go,"spacingSetName");function jo(e){return`font.${e}`}i(jo,"fontSetName");function Fo(e){return`font.${e}`}i(Fo,"legacyFontSetName");function me(e,n){e.includes(n)||e.push(n)}i(me,"pushUnique");function Bn(e){let n=pe(e),o=[],t=[],r=[],s=[],a=new Set,c=[],u=new Set,m=[],I=[...de(e)],v=I.map(l=>{let d=jo(l);return{kind:"font",name:d,file:Z(d),textSize:l}});for(let l of n){me(o,l.brand),me(t,l.mode),me(r,l.surface),me(s,l.dimension);let d=Oo(l.brand,l.mode,l.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:Z(d),brand:l.brand,mode:l.mode,surface:l.surface}));let b=Go(l.dimension);u.has(b)||(u.add(b),m.push({kind:"spacing",name:b,file:Z(b),dimension:l.dimension}))}for(let l of s){let d=Fo(l);v.push({kind:"font",name:d,file:Z(d),textSize:Pn.DEFAULT_TEXT_SIZE,deprecatedDimension:l})}return{base:{kind:"base",name:"base",file:Z("base")},spacing:m,font:v,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:I}}}i(Bn,"planSets");var ee=require("@apollion-dsi/core/themes/colors"),Le=require("@apollion-dsi/core/themes/foundation"),Yn=require("@apollion-dsi/core/themes/semantic"),Qn=require("@apollion-dsi/core/themes/spacing"),eo=require("@apollion-dsi/core/themes/surface");var y=require("culori");var Q=(0,y.converter)("oklch"),zo=(0,y.converter)("rgb");function p(e,n,o){let t=(0,y.parse)(e),r=(0,y.parse)(n);if(!t||!r)return e;let s=(0,y.interpolate)([t,r],"oklch");return(0,y.formatHex)(s(o))??e}i(p,"mixOklch");function No(e){return e?typeof e=="string"?e:e.base:"#000"}i(No,"coerceToHex");var ge=1.3,Po=.05,Hn=.04,G=i((e,n)=>{let o=(0,y.parse)(e),t=(0,y.parse)(n);return!o||!t?1:(0,y.wcagContrast)(o,t)},"contrastRatio"),q=i(e=>{let n=Q((0,y.parse)(e));return n?n.l??0:null},"oklchLightness"),_o=4.5;function Y(e,n,o=_o){let t=(0,y.parse)(n),r=Q((0,y.parse)(e));if(!t||!r)return e;let s=G("#fff",n)>=G("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=(0,y.formatHex)(r)??e,u=(0,y.parse)(c);if(u&&(0,y.wcagContrast)(u,t)>=o)return c;let m=Math.min(1,Math.max(0,(r.l??0)+s));if(m===(r.l??0))break;r={...r,l:m}}return(0,y.formatHex)(r)??e}i(Y,"readableColor");var Kn=i((e,n)=>{if(G(e,n)>=ge)return!0;let o=q(e),t=q(n);return o!==null&&t!==null&&Math.abs(o-t)>=Po},"isPerceptibleState"),Me=i(e=>e?G("#fff",e)>G("#000",e):!1,"isDarkSurface");function Wn(e,n,o){let t=Q((0,y.parse)(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?Hn:-Hn;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let u=(0,y.formatHex)(r);if(u&&G(e,u)>=ge)return u}return(0,y.formatHex)(r)??null}i(Wn,"derivePerceptibleState");function Jn(e,n,o){let t=Wn(e,n,o);if(t&&G(e,t)>=ge)return t;let r=Wn(e,!n);return r&&G(e,r)>=ge?r:t??r}i(Jn,"perceptibleStateFor");function w(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=No(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:p(t,r,.6),action:p(t,r,.2),active:p(t,s,.6),light:p(t,s,.9),onLight:t};if((0,y.parse)(t)){let c=Me(n.baseLight),u=Kn(t,a.action);if(u||(a.action=Jn(t,c)??a.action),!Kn(t,a.active)){let m=u?void 0:q(a.action)??void 0;a.active=Jn(t,c,m)??a.active}}if(a.onLight=Y(a.action,a.light),o){let c=o.action??a.action,u=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:u,onLight:o.onLight??Y(c,u)}}return a}i(w,"mountSingleColor");function Un(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:p(n,o,.05),10:p(n,o,.1),20:p(n,o,.2),30:p(n,o,.3),40:p(n,o,.4),50:p(n,o,.5),60:p(n,o,.6),70:p(n,o,.7),80:p(n,o,.8),90:p(n,o,.9),100:p(n,o,1)}}i(Un,"mountGreyscaleColors");function Xn(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=p(t,o,.5);return{0:p(s,n,r(18)),5:p(s,n,r(17.5)),10:p(s,n,r(17)),20:p(s,n,r(16)),30:p(s,n,r(15)),40:p(s,n,r(14)),50:p(s,n,r(13)),60:p(s,n,r(12)),70:p(s,n,r(11)),80:p(s,n,r(10)),90:p(s,n,r(9)),100:p(s,n,r(8)),110:p(s,n,r(7)),120:p(s,n,r(6)),130:p(s,n,r(5)),140:p(s,n,r(4)),150:p(s,n,r(3)),160:p(s,n,r(2)),170:s,180:p(s,o,.25)}}i(Xn,"mountNeutralColors");function H(e,n){let o=Q((0,y.parse)(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return(0,y.formatHex)({...o,l:t})??e}i(H,"shiftLightness");function ye(e,n){let o=Q((0,y.parse)(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:(0,y.formatHex)({...o,l:Math.min(s,Math.max(r,t))})??e}i(ye,"clampLightness");function z(e,n){let o=zo((0,y.parse)(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(z,"toRgbaString");var f=require("@apollion-dsi/core/themes/colors");var Bo="#FFFFFF",Ae="#000000";function Ho(e){return Me(e.baseLight)?"dark":"light"}i(Ho,"resolvePolarity");function Ko(e){let n=f.HALATION_FLOORS.CANVAS_MIN_L;return e<=n?1:e>=f.DARK_BOOST_TAPER_MAX_L?0:(f.DARK_BOOST_TAPER_MAX_L-e)/(f.DARK_BOOST_TAPER_MAX_L-n)}i(Ko,"darkElevationBoostFactor");function Zn(e,n,o){if(Math.abs((0,f.apcaContrast)(e,n))>=o)return e;let t=Math.abs((0,f.apcaContrast)("#ffffff",n))>=Math.abs((0,f.apcaContrast)("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=H(r,t?.02:-.02);if(a===r||(r=a,Math.abs((0,f.apcaContrast)(r,n))>=o))break}return r}i(Zn,"ensureApca");function Wo(e,n){let o=e.baseLight??Bo,t=n==="dark",r=t?ye(o,{min:f.HALATION_FLOORS.CANVAS_MIN_L}):o,s=H(r,f.LADDER_DELTAS.sunken),a=t?Ko(q(r)??0):0,c=i(u=>f.LADDER_DELTAS[u]+a*f.DARK_ELEVATION_BOOST[u],"delta");return{canvas:r,sunken:t?ye(s,{min:f.HALATION_FLOORS.CANVAS_MIN_L}):s,paper:H(r,c("paper")),raised:H(r,c("raised")),overlay:H(r,c("overlay")),scrim:t?e.deepLight??Ae:e.neutral?.["180"]??e.baseDark??Ae}}i(Wo,"deriveSurface");function Jo(e,n){let o=e.baseDark??Ae,t=ye(Zn(Y(o,n.paper,f.MIN_CONTRAST_AA),n.paper,f.INK_APCA_MIN.primary),{max:f.HALATION_FLOORS.INK_MAX_L}),r=i((s,a)=>Zn(Y(p(t,n.canvas,s),n.paper,f.MIN_CONTRAST_AA),n.paper,a),"tier");return{primary:t,secondary:r(f.INK_MIX.secondary,f.INK_APCA_MIN.secondary),muted:r(f.INK_MIX.muted,f.INK_APCA_MIN.muted),disabled:p(t,n.canvas,f.INK_MIX.disabled)}}i(Jo,"deriveInk");function Uo(e){return{hairline:z(e.primary,f.EDGE_ALPHA.hairline),border:z(e.primary,f.EDGE_ALPHA.border),strong:z(e.primary,f.EDGE_ALPHA.strong)}}i(Uo,"deriveEdge");function Xo(e,n){let o=f.WASH_ALPHA[n];return{hover:z(e.primary,o.hover),pressed:z(e.primary,o.pressed),selected:z(e.primary,o.selected)}}i(Xo,"deriveWash");function Zo(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(Zo,"applyOverride");function qn(e,n){let o=Ho(e),t=Wo(e,o),r=Jo(e,t),s={surface:t,ink:r,edge:Uo(r),wash:Xo(r,o)};return Zo(s,n?.[o])}i(qn,"resolveSurfaceLadder");function qo(e){let n=Xn(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Un(e),...qn({...e,neutral:n},e.ladder),main:w(e.main,e),opposite:w(e.opposite,e),complementary:w(e.complementary,e),danger:w(e.danger,e),information:w(e.information,e),success:w(e.success,e),warning:w(e.warning,e),primary:w(e.primary,e),secondary:w(e.secondary,e),tertiary:w(e.tertiary,e)}}i(qo,"composeColors");function Yo(e){return{...e,baseLight:e.baseLight??ee.defaultInputColors.baseLight,baseDark:e.baseDark??ee.defaultInputColors.baseDark}}i(Yo,"withContrastDefaults");function j(e,n=Qn.defaultInputSpacing){let o=Yo(e.colors),t=e.mode==="dark"?(0,ee.toDarkColors)(o):o,r=qo(t),s=te(n,e.dimension),a=(0,Yn.createSemantic)({colors:r,spacing:s}),c=(0,Le.createFoundation)(a);return e.surface==="negative"&&(c=(0,Le.createFoundation)((0,eo.invertForSurface)({semantic:a,colors:r},"negative").semantic)),{foundation:c,colors:r}}i(j,"buildVariantThemes");async function Qo(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=pe(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await(0,x.mkdtemp)((0,A.join)((0,no.tmpdir)(),"apollion-tokens-"));try{let u=[],m=i(async(l,d)=>{await nt(c,l,d),u.push({path:l,sha256:fe(d)}),r&&console.log(` \u2713 ${l}`)},"emit");if(a.json){let l=Bn(n),d=[],b=gn();d.push(b),await m(l.base.file,Cn(b));for(let g of l.spacing){let k=s.find(ne=>ne.dimension===g.dimension),{foundation:L}=j(k),O=hn(L,g.dimension);d.push(O),await m(g.file,Vn(O,g.dimension))}for(let g of l.font){let k=Se(g.textSize);d.push(k),await m(g.file,Mn(k,g))}for(let g of l.color){let k=s.find(he=>he.brand===g.brand&&he.mode===g.mode&&he.surface===g.surface),{foundation:L,colors:O}=j(k),ne=yn(L,O);d.push(ne),await m(g.file,En(ne,g.brand,g.mode,g.surface))}cn(d),await m(_n,An(n,l))}if(a.css||a.ts)for(let l of s){let{foundation:d,colors:b}=j(l),g=B(d,b,l),k=Gn(l);a.css&&await m(`css/${k}.css`,Sn(g,{rgbCompanions:a.tailwind})),a.ts&&await m(`ts/${k}.d.ts`,On(g))}if(a.css||a.cssModes){let l=de(n).map(d=>[d,Se(d)]);await m("css/font.css",vn(l))}if(a.cssModes){let l=new Map;for(let d of s){let b=`${d.brand}.${d.surface}.${d.dimension}`,g=l.get(b)??{};g[d.mode]=d,l.set(b,g)}for(let[d,{light:b,dark:g}]of l){if(!b||!g)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let k=j(b),L=j(g),O=Tn(B(k.foundation,k.colors,b),B(L.foundation,L.colors,g),{rgbCompanions:a.tailwind});await m(`css/${d}.modes.css`,O)}}if(a.tailwind){let l=s[0],{foundation:d,colors:b}=j(l),g=B(d,b,l);await m("tailwind/preset.mjs",kn(g)),await m("tailwind/tw-merge.mjs",xn(g))}if(a.designMd){let l=[...new Set(s.map(d=>d.brand))];for(let d of l){let g=s.filter(k=>k.brand===d).map(k=>{let{foundation:L,colors:O}=j(k);return B(L,O,k)});await m(`design/${d}.design.md`,Dn(d,g))}}let I={configHash:Ve(n),files:u,gitCommit:Fn(t),buildEnv:zn()},v=Nn(I);return await(0,x.writeFile)((0,A.join)(c,"manifest.json"),v),await(0,x.rm)(o,{recursive:!0,force:!0}),await(0,x.mkdir)((0,A.dirname)(o),{recursive:!0}),await(0,x.rename)(c,o),r&&console.log(`\u2713 ${u.length} files \u2192 ${o}`),{manifest:I,outDir:o}}catch(u){throw await(0,x.rm)(c,{recursive:!0,force:!0}).catch(()=>{}),u}}i(Qo,"build");async function et(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await(0,x.readFile)((0,A.join)(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==Ve(n))return!1;for(let r of t.files){let s;try{s=await(0,x.readFile)((0,A.join)(o,r.path))}catch{return!1}if(fe(s)!==r.sha256)return!1}return!0}i(et,"check");async function nt(e,n,o){let t=(0,A.join)(e,n);await(0,x.mkdir)((0,A.dirname)(t),{recursive:!0}),await(0,x.writeFile)(t,o)}i(nt,"writeAt");0&&(module.exports={build,check});
|
package/lib/build.esm.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
var Qn=Object.defineProperty;var i=(e,n)=>Qn(e,"name",{value:n,configurable:!0}),eo=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});import{mkdir as Zn,mkdtemp as bt,readFile as Un,rename as Rt,rm as Xn,writeFile as qn}from"node:fs/promises";import{tmpdir as It}from"node:os";import{dirname as Yn,join as U}from"node:path";import{DEFAULT_TEXT_SIZE as $o,TEXT_SIZE_ATTRIBUTE as Co}from"@apollion-dsi/core/themes/text-size";import{converter as vo,parse as Do}from"culori";import{defaultInputBorder as ee}from"@apollion-dsi/core/themes/border";import{createReadableTextLayer as so}from"@apollion-dsi/core/themes/colors";import{createDeth as ao,levelValues as co}from"@apollion-dsi/core/themes/depth";import{createFont as uo,defaultInputFont as A}from"@apollion-dsi/core/themes/font";import{defaultInputSpacing as Ne}from"@apollion-dsi/core/themes/spacing";import{DEFAULT_TEXT_SIZE as lo}from"@apollion-dsi/core/themes/text-size";import{converter as po,formatHex as fo,parse as mo}from"culori";import{defaultInputBreakpoints as no}from"@apollion-dsi/core/themes/breakpoints";function Me(e=no){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Me,"breakpointEntries");import{defaultInputContainerSizes as oo,defaultInputLayout as to,defaultInputZIndex as ro}from"@apollion-dsi/core/themes/layout";function Ae(e=oo){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Ae,"containerSizeEntries");function Le(e=to){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(Le,"layoutEntries");function Oe(e=ro){return Object.entries(e)}i(Oe,"zIndexEntries");import{createMotion as Z,defaultInputMotion as q}from"@apollion-dsi/core/themes/motion";function Ge(e=q){let n=Z(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(Ge,"motionDurationEntries");function je(e=q){let n=Z(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(je,"motionEasingEntries");function Fe(e=q){let n=Z(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(Fe,"motionIndicatorEntries");function ze(e=q){let n=Z(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(ze,"motionIntentEntries");import{DIMENSION_MULTIPLIERS as io}from"@apollion-dsi/core/themes/dimension";function Y({multiplier:e=.25,alias:n},o){let t=o!==void 0?io[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(Y,"createSpacing");var fe={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function me(e){let n=Object.keys(fe).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(me,"assertTokenMetaResolves");var go=po("oklch");function h(e){return typeof e.type=="string"&&"value"in e}i(h,"isToken");function k(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(k,"kebab");function Pe(e){return e.split(".").map(k).join(".")}i(Pe,"kebabPath");function $(e){return e.kind==="ref"?e.resolved.raw:e.raw}i($,"rawValue");function Q(e,n){return Number(e.toFixed(n))||0}i(Q,"round");function ge(e){let n=go(mo(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[Q(n.l,4),Q(n.c,4),Q(n.h??0,2)],t=fo(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:Q(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(ge,"toColorValue");var _e=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function D(e){let n=_e.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i(D,"toDimensionValue");function I(e){return{type:"color",value:ge(e)}}i(I,"colorToken");function L(e){let n={};for(let[o,t]of Object.entries(e))n[o]=I(t);return n}i(L,"recordColorGroup");function Be(e){let n=so(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=I(r);return o.neutral=L(n.neutral),o}i(Be,"buildReadableTextGroup");var yo=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function He(e){let n={};for(let o of yo){let t=e[o];n[o]={base:I(t.base),dark:I(t.dark),action:I(t.action),active:I(t.active),light:I(t.light),onLight:I(t.onLight)}}return n.grayscale=L(e.grayscale),n.neutral=L(e.neutral),n.surface=L(e.surface),n.ink=L(e.ink),n.edge=L(e.edge),n.wash=L(e.wash),n.baseDark=I(e.baseDark??"#000000"),n.baseLight=I(e.baseLight??"#ffffff"),n.deepDark=I(e.deepDark??"#000000"),n.deepLight=I(e.deepLight??"#ffffff"),n}i(He,"buildColorPrimitives");function Ke(e){let n=Y(Ne,e),o={};for(let t of Object.keys(Ne.alias))o[t]={type:"dimension",value:D(n(t))};return o}i(Ke,"buildSpacePrimitives");function We(){let e={};for(let[n,o]of Object.entries(ee.borderWidth))e[n]={type:"dimension",value:D(o)};return e}i(We,"buildBorderWidthPrimitives");function ho(e,n){return{color:He(e),space:Ke(n),borderWidth:We()}}i(ho,"buildPrimitives");var Je={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},Ue={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},Xe={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function bo(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i(bo,"lookupPrimitive");function j(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?bo(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:ge(s)}}:I(s)}return t}i(j,"colorRefGroup");var Ze={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},Ro={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function Io(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!h(r)&&s in r)r=r[s];else return;return r&&h(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(Io,"lookupDimensionPrimitive");function ye(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?Io(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:D(s)}}:{type:"dimension",value:D(s)}}return t}i(ye,"dimensionRefGroup");function qe(e){let n={},o={};for(let[s,a]of Object.entries(ee.borderRadius))_e.test(a)?n[s]={type:"dimension",value:D(a)}:o[s]=a;let t=ye(ee.borderWidth,e,Ro),r={};for(let[s,a]of Object.entries(ee.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(qe,"buildBorder");function Ye(e){let n=uo(A,{textSize:e}),o={};for(let[c,u]of Object.entries(A.fontFamily)){let f=u.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:f,family:f}}}let t={};for(let[c,u]of Object.entries(n.fontSize))t[c]={type:"dimension",value:D(u)};let r={};for(let[c,u]of Object.entries(A.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${u}`,weight:u}};let s={};for(let[c,u]of Object.entries(A.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${u}`,number:u}};let a={letterSpacing:A.letterSpacing,textTransform:A.textTransform,fontStyle:A.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(Ye,"buildFont");var ko=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function xo(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(ko),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(u=>D(a[u]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:ge(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(xo,"parseShadow");function Qe(e){let n=ao(e),o={};for(let t of Object.keys(co))o[t]={type:"shadow",value:xo(n(t))};return o}i(Qe,"buildShadow");function ne(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${k(r)}`:k(r);if(h(s)){o.add(a);let c=fe[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=ne(s,a,o)}return t}i(ne,"decorateGroup");function So(e){let n=new Set,o=ne(e.primitives,"",n),t=ne(e.groups,"",n);return me(n),{...e,primitives:o,groups:t}}i(So,"decorateMeta");function oe(e,n){return ne(e,"",n)}i(oe,"decorateSlice");function en(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${k(t)}`:k(t);h(r)?o.add(s):en(r,s,o)}}i(en,"collectPaths");function nn(e){let n=new Set;for(let o of e)en(o.groups,"",n);me(n)}i(nn,"assertSlicesMetaComplete");function on(){let e={};for(let[n,o]of Me())e[n]={type:"dimension",value:D(o)};return e}i(on,"buildBreakpoints");function tn(){let e={};for(let[n,o]of Ae())e[n]={type:"dimension",value:D(o)};return e}i(tn,"buildContainerSizes");function rn(){let e={};for(let[n,o]of Le())e[n]={type:"dimension",value:D(o)};return e}i(rn,"buildLayoutConstants");function sn(){let e={};for(let[n,o]of Oe())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(sn,"buildZIndex");function an(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of Ge())o[a]=e(c);let t={};for(let[a,c]of je())t[a]=n(c);let r={};for(let[a,c]of Fe())r[a]=e(c);let s={};for(let[a,c]of ze()){let u=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:u}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(an,"buildMotion");var cn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function un(){let e=We(),o=qe({borderWidth:e}),t={"com.apollion.breakpoint":cn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:oe({"border-width":e,border:o.group,breakpoint:on(),"container-size":tn(),layout:rn(),"z-index":sn(),motion:an()},r),extensions:t}}i(un,"buildBaseIR");function he(e){let n=Ye(e),o=new Set;return{groups:oe({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(he,"buildFontIR");function ln(e,n){let o=He(n),t=new Set;return{groups:oe({color:o,bg:j(e.bg,n,Je),text:j(e.text,n,Ue),edge:j(e.edge,n,Xe),tx:Be(n),shadow:Qe(n)},t),extensions:{}}}i(ln,"buildColorIR");function dn(e,n){let o=Ke(n),t={space:o},r=new Set;return{groups:oe({space:o,spacing:ye(e.spacing,t,Ze)},r),extensions:{}}}i(dn,"buildSpacingIR");function To(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=ho(n,o.dimension),s=qe(r),a=Ye(lo),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":cn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let u={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:j(e.bg,n,Je),text:j(e.text,n,Ue),edge:j(e.edge,n,Xe),tx:Be(n),spacing:ye(e.spacing,r,Ze),border:s.group,breakpoint:on(),"container-size":tn(),layout:rn(),"z-index":sn(),motion:an(),font:a.group,shadow:Qe(n)},extensions:c};return So(u)}i(To,"buildIR");var F=To;var wo=vo("rgb"),pn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function be(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(be,"colorPayload");function Re(e){return e.alpha===void 0}i(Re,"isOpaqueColor");function fn(e){let n=wo(Do(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(fn,"rgbTriplet");function N(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,k(t)];if(h(r))o.set(s.join("-"),r);else for(let[a,c]of N(r,s))o.set(a,c)}return o}i(N,"flatTokens");function g(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||h(o))return{};o=o[t]}return o&&!h(o)?o:{}}i(g,"groupAt");function mn(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of N(g(e.groups,o),[o])){let s=be(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:Re(s)})}return n}i(mn,"colorEntries");function w(e,n){return[...N(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(w,"varEntries");function T(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(T,"pushScale");function gn(e){let n=[pn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=mn(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),T(n,"screens",[...N(g(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,$(r.value)])),T(n,"spacing",w(g(e.groups,"spacing"),["spacing"])),T(n,"borderRadius",w(g(e.groups,"border","radius"),["border","radius"])),T(n,"borderWidth",w(g(e.groups,"border","width"),["border","width"])),T(n,"fontFamily",w(g(e.groups,"font","family"),["font","family"])),T(n,"fontSize",w(g(e.groups,"font","size"),["font","size"])),T(n,"fontWeight",w(g(e.groups,"font","weight"),["font","weight"])),T(n,"lineHeight",w(g(e.groups,"font","lineHeight"),["font","line-height"])),T(n,"boxShadow",w(g(e.groups,"shadow"),["shadow"])),T(n,"transitionDuration",w(g(e.groups,"motion","duration"),["motion","duration"])),T(n,"transitionTimingFunction",w(g(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
1
|
+
var eo=Object.defineProperty;var i=(e,n)=>eo(e,"name",{value:n,configurable:!0}),no=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});import{mkdir as qn,mkdtemp as It,readFile as Xn,rename as kt,rm as Zn,writeFile as Yn}from"node:fs/promises";import{tmpdir as xt}from"node:os";import{dirname as Qn,join as U}from"node:path";import{DEFAULT_TEXT_SIZE as Co,TEXT_SIZE_ATTRIBUTE as Eo}from"@apollion-dsi/core/themes/text-size";import{converter as Do,parse as wo}from"culori";import{defaultInputBorder as ee}from"@apollion-dsi/core/themes/border";import{createReadableTextLayer as ao}from"@apollion-dsi/core/themes/colors";import{createDeth as co,levelValues as uo}from"@apollion-dsi/core/themes/depth";import{createFont as lo,defaultInputFont as A}from"@apollion-dsi/core/themes/font";import{defaultInputSpacing as Ne}from"@apollion-dsi/core/themes/spacing";import{DEFAULT_TEXT_SIZE as po}from"@apollion-dsi/core/themes/text-size";import{converter as fo,formatHex as mo,parse as go}from"culori";import{defaultInputBreakpoints as oo}from"@apollion-dsi/core/themes/breakpoints";function Me(e=oo){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Me,"breakpointEntries");import{defaultInputContainerSizes as to,defaultInputLayout as ro,defaultInputZIndex as io}from"@apollion-dsi/core/themes/layout";function Ae(e=to){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Ae,"containerSizeEntries");function Le(e=ro){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(Le,"layoutEntries");function Oe(e=io){return Object.entries(e)}i(Oe,"zIndexEntries");import{createMotion as Z,defaultInputMotion as q}from"@apollion-dsi/core/themes/motion";function Ge(e=q){let n=Z(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(Ge,"motionDurationEntries");function je(e=q){let n=Z(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(je,"motionEasingEntries");function Fe(e=q){let n=Z(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(Fe,"motionIndicatorEntries");function ze(e=q){let n=Z(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(ze,"motionIntentEntries");import{DIMENSION_MULTIPLIERS as so}from"@apollion-dsi/core/themes/dimension";function Y({multiplier:e=.25,alias:n},o){let t=o!==void 0?so[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(Y,"createSpacing");var fe={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function me(e){let n=Object.keys(fe).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(me,"assertTokenMetaResolves");var yo=fo("oklch");function h(e){return typeof e.type=="string"&&"value"in e}i(h,"isToken");function k(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(k,"kebab");function Pe(e){return e.split(".").map(k).join(".")}i(Pe,"kebabPath");function $(e){return e.kind==="ref"?e.resolved.raw:e.raw}i($,"rawValue");function Q(e,n){return Number(e.toFixed(n))||0}i(Q,"round");function ge(e){let n=yo(go(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[Q(n.l,4),Q(n.c,4),Q(n.h??0,2)],t=mo(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:Q(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(ge,"toColorValue");var _e=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function D(e){let n=_e.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i(D,"toDimensionValue");function I(e){return{type:"color",value:ge(e)}}i(I,"colorToken");function L(e){let n={};for(let[o,t]of Object.entries(e))n[o]=I(t);return n}i(L,"recordColorGroup");function Be(e){let n=ao(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=I(r);return o.neutral=L(n.neutral),o}i(Be,"buildReadableTextGroup");var ho=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function He(e){let n={};for(let o of ho){let t=e[o];n[o]={base:I(t.base),dark:I(t.dark),action:I(t.action),active:I(t.active),light:I(t.light),onLight:I(t.onLight)}}return n.grayscale=L(e.grayscale),n.neutral=L(e.neutral),n.surface=L(e.surface),n.ink=L(e.ink),n.edge=L(e.edge),n.wash=L(e.wash),n.baseDark=I(e.baseDark??"#000000"),n.baseLight=I(e.baseLight??"#ffffff"),n.deepDark=I(e.deepDark??"#000000"),n.deepLight=I(e.deepLight??"#ffffff"),n}i(He,"buildColorPrimitives");function Ke(e){let n=Y(Ne,e),o={};for(let t of Object.keys(Ne.alias))o[t]={type:"dimension",value:D(n(t))};return o}i(Ke,"buildSpacePrimitives");function We(){let e={};for(let[n,o]of Object.entries(ee.borderWidth))e[n]={type:"dimension",value:D(o)};return e}i(We,"buildBorderWidthPrimitives");function bo(e,n){return{color:He(e),space:Ke(n),borderWidth:We()}}i(bo,"buildPrimitives");var Je={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},Ue={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},Xe={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function Ro(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i(Ro,"lookupPrimitive");function j(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?Ro(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:ge(s)}}:I(s)}return t}i(j,"colorRefGroup");var Ze={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},Io={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function ko(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!h(r)&&s in r)r=r[s];else return;return r&&h(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(ko,"lookupDimensionPrimitive");function ye(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?ko(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:D(s)}}:{type:"dimension",value:D(s)}}return t}i(ye,"dimensionRefGroup");function qe(e){let n={},o={};for(let[s,a]of Object.entries(ee.borderRadius))_e.test(a)?n[s]={type:"dimension",value:D(a)}:o[s]=a;let t=ye(ee.borderWidth,e,Io),r={};for(let[s,a]of Object.entries(ee.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(qe,"buildBorder");function Ye(e){let n=lo(A,{textSize:e}),o={};for(let[c,u]of Object.entries(A.fontFamily)){let f=u.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:f,family:f}}}let t={};for(let[c,u]of Object.entries(n.fontSize))t[c]={type:"dimension",value:D(u)};let r={};for(let[c,u]of Object.entries(A.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${u}`,weight:u}};let s={};for(let[c,u]of Object.entries(A.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${u}`,number:u}};let a={letterSpacing:A.letterSpacing,textTransform:A.textTransform,fontStyle:A.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(Ye,"buildFont");var xo=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function So(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(xo),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(u=>D(a[u]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:ge(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(So,"parseShadow");function Qe(e){let n=co(e),o={};for(let t of Object.keys(uo))o[t]={type:"shadow",value:So(n(t))};return o}i(Qe,"buildShadow");function ne(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${k(r)}`:k(r);if(h(s)){o.add(a);let c=fe[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=ne(s,a,o)}return t}i(ne,"decorateGroup");function To(e){let n=new Set,o=ne(e.primitives,"",n),t=ne(e.groups,"",n);return me(n),{...e,primitives:o,groups:t}}i(To,"decorateMeta");function oe(e,n){return ne(e,"",n)}i(oe,"decorateSlice");function en(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${k(t)}`:k(t);h(r)?o.add(s):en(r,s,o)}}i(en,"collectPaths");function nn(e){let n=new Set;for(let o of e)en(o.groups,"",n);me(n)}i(nn,"assertSlicesMetaComplete");function on(){let e={};for(let[n,o]of Me())e[n]={type:"dimension",value:D(o)};return e}i(on,"buildBreakpoints");function tn(){let e={};for(let[n,o]of Ae())e[n]={type:"dimension",value:D(o)};return e}i(tn,"buildContainerSizes");function rn(){let e={};for(let[n,o]of Le())e[n]={type:"dimension",value:D(o)};return e}i(rn,"buildLayoutConstants");function sn(){let e={};for(let[n,o]of Oe())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(sn,"buildZIndex");function an(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of Ge())o[a]=e(c);let t={};for(let[a,c]of je())t[a]=n(c);let r={};for(let[a,c]of Fe())r[a]=e(c);let s={};for(let[a,c]of ze()){let u=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:u}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(an,"buildMotion");var cn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function un(){let e=We(),o=qe({borderWidth:e}),t={"com.apollion.breakpoint":cn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:oe({"border-width":e,border:o.group,breakpoint:on(),"container-size":tn(),layout:rn(),"z-index":sn(),motion:an()},r),extensions:t}}i(un,"buildBaseIR");function he(e){let n=Ye(e),o=new Set;return{groups:oe({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(he,"buildFontIR");function ln(e,n){let o=He(n),t=new Set;return{groups:oe({color:o,bg:j(e.bg,n,Je),text:j(e.text,n,Ue),edge:j(e.edge,n,Xe),tx:Be(n),shadow:Qe(n)},t),extensions:{}}}i(ln,"buildColorIR");function dn(e,n){let o=Ke(n),t={space:o},r=new Set;return{groups:oe({space:o,spacing:ye(e.spacing,t,Ze)},r),extensions:{}}}i(dn,"buildSpacingIR");function vo(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=bo(n,o.dimension),s=qe(r),a=Ye(po),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":cn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let u={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:j(e.bg,n,Je),text:j(e.text,n,Ue),edge:j(e.edge,n,Xe),tx:Be(n),spacing:ye(e.spacing,r,Ze),border:s.group,breakpoint:on(),"container-size":tn(),layout:rn(),"z-index":sn(),motion:an(),font:a.group,shadow:Qe(n)},extensions:c};return To(u)}i(vo,"buildIR");var F=vo;var $o=Do("rgb"),pn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function be(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(be,"colorPayload");function Re(e){return e.alpha===void 0}i(Re,"isOpaqueColor");function fn(e){let n=$o(wo(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(fn,"rgbTriplet");function N(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,k(t)];if(h(r))o.set(s.join("-"),r);else for(let[a,c]of N(r,s))o.set(a,c)}return o}i(N,"flatTokens");function g(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||h(o))return{};o=o[t]}return o&&!h(o)?o:{}}i(g,"groupAt");function mn(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of N(g(e.groups,o),[o])){let s=be(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:Re(s)})}return n}i(mn,"colorEntries");function w(e,n){return[...N(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(w,"varEntries");function T(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(T,"pushScale");function gn(e){let n=[pn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=mn(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),T(n,"screens",[...N(g(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,$(r.value)])),T(n,"spacing",w(g(e.groups,"spacing"),["spacing"])),T(n,"borderRadius",w(g(e.groups,"border","radius"),["border","radius"])),T(n,"borderWidth",w(g(e.groups,"border","width"),["border","width"])),T(n,"fontFamily",w(g(e.groups,"font","family"),["font","family"])),T(n,"fontSize",w(g(e.groups,"font","size"),["font","size"])),T(n,"fontWeight",w(g(e.groups,"font","weight"),["font","weight"])),T(n,"lineHeight",w(g(e.groups,"font","lineHeight"),["font","line-height"])),T(n,"boxShadow",w(g(e.groups,"shadow"),["shadow"])),T(n,"transitionDuration",w(g(e.groups,"motion","duration"),["motion","duration"])),T(n,"transitionTimingFunction",w(g(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
2
2
|
`)}i(gn,"renderTailwindPreset");function yn(e){let n=i(r=>[...N(r).keys()],"keys"),o=i(r=>`[${r.map(s=>JSON.stringify(s)).join(", ")}]`,"list");return[pn,"// tailwind-merge extension for the generated preset \u2014 pass to extendTailwindMerge().","","export const twMergeExtension = {"," extend: {"," theme: {",` colors: ${o(mn(e).map(r=>r.key))},`,` spacing: ${o(n(g(e.groups,"spacing")))},`,` borderRadius: ${o(n(g(e.groups,"border","radius")))},`,` borderWidth: ${o(n(g(e.groups,"border","width")))},`," },"," classGroups: {",` 'font-family': [{ font: ${o(n(g(e.groups,"font","family")))} }],`,` 'font-size': [{ text: ${o(n(g(e.groups,"font","size")))} }],`,` 'font-weight': [{ font: ${o(n(g(e.groups,"font","weight")))} }],`,` leading: [{ leading: ${o(n(g(e.groups,"font","lineHeight")))} }],`,` shadow: [{ shadow: ${o(n(g(e.groups,"shadow")))} }],`," },"," },","};",""].join(`
|
|
3
3
|
`)}i(yn,"renderTwMergeExtension");var Ie="/* Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. */";function P(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,k(t)];h(r)?o.push(` --apollion-${s.join("-")}: ${$(r.value)};`):P(r,s,o)}}i(P,"emitVars");function te(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,k(t)];if(!h(r)){te(r,s,o);continue}let a=be(r);a&&Re(a)&&o.push(` --apollion-${s.join("-")}-rgb: ${fn(a)};`)}}i(te,"emitRgbVars");function ke(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,k(t)];h(r)?r.type==="color"&&o.push(` @property --apollion-${s.join("-")} { syntax: '<color>'; inherits: true; initial-value: ${$(r.value)}; }`):ke(r,s,o)}}i(ke,"emitProperties");function hn(e,n={}){let{brand:o,mode:t,surface:r,dimension:s}=e.meta,a=[Ie,""];return a.push(`/* Variant: brand=${o} mode=${t} surface=${r} dimension=${s} */`,"",":root {"),P(e.groups,[],a),n.rgbCompanions&&(a.push(""," /* -rgb channel triplets \u2014 Tailwind <alpha-value> companions (opaque colour tokens only). */"),te(e.groups,[],a)),a.push("}",""),a.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),ke(e.groups,[],a),a.push("}",""),a.join(`
|
|
4
4
|
`)}i(hn,"renderCss");function bn(e,n,o={}){let{attribute:t="data-apollion-mode",rgbCompanions:r}=o,{brand:s,surface:a,dimension:c}=e.meta,u=[Ie,""],f=i((S,l,d)=>{u.push(`${S} {`,` color-scheme: ${d};`),P(l.groups,[],u),r&&te(l.groups,[],u),u.push("}","")},"block");u.push(`/* Variant: brand=${s} surface=${a} dimension=${c} modes=light+dark (attribute ${t}) */`,""),f(`:root, html[${t}="light"]`,e,"light"),f(`html[${t}="dark"]`,n,"dark"),u.push("@media (prefers-color-scheme: dark) {"),u.push(` html:not([${t}]) {`," color-scheme: dark;");let b=[];P(n.groups,[],b),r&&te(n.groups,[],b);for(let S of b)u.push(` ${S}`);return u.push(" }","}",""),u.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),ke(e.groups,[],u),u.push("}",""),u.join(`
|
|
5
|
-
`)}i(bn,"renderCssModes");function Rn(e,n={}){let{attribute:o=
|
|
5
|
+
`)}i(bn,"renderCssModes");function Rn(e,n={}){let{attribute:o=Eo,defaultLevel:t=Co}=n,r=[Ie,""];r.push(`/* Text size (ADR-030): levels=${e.map(([c])=>c).join("+")} default=${t} (attribute ${o}) */`,"");let s=i((c,u)=>{r.push(`${c} {`);let f=u.groups.font;P(f.size,["font","size"],r),r.push("}","")},"block"),a=e.find(([c])=>c===t);a&&s(":root",a[1]);for(let[c,u]of e)s(`:root[${o}="${c}"],
|
|
6
6
|
[${o}="${c}"]`,u);return r.join(`
|
|
7
|
-
`)}i(Rn,"renderCssTextSize");var
|
|
7
|
+
`)}i(Rn,"renderCssTextSize");var Vo="<!-- Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. -->";function xe(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${t}`:t;h(r)?o.push([s,$(r.value)]):xe(r,s,o)}}i(xe,"flatten");function Mo(e){return typeof e=="number"?String(e):`'${String(e).replace(/'/g,"''")}'`}i(Mo,"yamlEscape");function Ao(e){let{mode:n,surface:o,dimension:t}=e.meta;return`${n}.${o}.${t}`}i(Ao,"variantKey");function In(e,n){if(n.length===0)throw new Error(`renderDesignMd: no variants for brand "${e}"`);let o=["---",`brand: '${e}'`,"generator: apollion-tokens","variants:"];for(let r of n){let s=[];xe(r.groups,"",s),o.push(` ${Ao(r)}:`);for(let[a,c]of s)o.push(` ${a}: ${Mo(c)}`)}o.push("---");let t=["",Vo,"",`# Design.md \u2014 ${e}`,"","Resolved design-token values for this brand, one section per variant.","Consumption rules (which token to reach for, layer boundaries) live in the","package `llms.txt`; this file carries the values those rules reference.","Regenerate with `apollion-tokens build` \u2014 never edit.",""];for(let r of n){let{mode:s,surface:a,dimension:c}=r.meta;t.push(`## Variant \`${s} \xB7 ${a} \xB7 ${c}\``,"");let u=[];xe(r.groups,"",u);let f=new Map;for(let[b,S]of u){let l=b.split(".")[0]??b,d=f.get(l)??[];d.push([b,S]),f.set(l,d)}for(let[b,S]of f){t.push(`### ${b}`,"","| Token | Value |","| --- | --- |");for(let[l,d]of S)t.push(`| \`${l}\` | \`${d}\` |`);t.push("")}}return`${o.join(`
|
|
8
8
|
`)}
|
|
9
9
|
${t.join(`
|
|
10
|
-
`)}`}i(In,"renderDesignMd");import{DEFAULT_TEXT_SIZE as
|
|
11
|
-
`}i(B,"renderSet");function xn(e){return B(e,"Apollion DS \u2014 base set (axis-invariant: border, breakpoints, container sizes, layout, motion). DTCG 2025.10.")}i(xn,"renderBaseSet");function Sn(e,n,o,t){return B(e,`Apollion DS \u2014 colour set. brand=${n} mode=${o} surface=${t}. DTCG 2025.10.`)}i(Sn,"renderColorSet");function Tn(e,n){return B(e,`Apollion DS \u2014 spacing set. dimension=${n}. DTCG 2025.10.`)}i(Tn,"renderSpacingSet");function vn(e,n){return n.deprecatedDimension?B(e,`Apollion DS \u2014 font set. DEPRECATED alias of font.${n.textSize} (dimension=${n.deprecatedDimension} no longer scales type, ADR-030; removed at the next major). DTCG 2025.10.`,`Alias of font.${n.textSize} \u2014 dimension no longer scales type (ADR-030). Use font.<textSize>.`):B(e,`Apollion DS \u2014 font set. textSize=${n.textSize}. DTCG 2025.10.`)}i(vn,"renderFontSet");function Dn(e,n){let{modifiers:o}=n,t=[{name:"brand",values:[...o.brand],default:o.brand[0]},{name:"mode",values:[...o.mode],default:o.mode[0]},{name:"surface",values:[...o.surface],default:o.surface[0]},{name:"dimension",values:[...o.dimension],default:o.dimension[0]},{name:"textSize",values:[...o.textSize],default:
|
|
12
|
-
`}i(Dn,"renderResolver");var
|
|
13
|
-
`)}i($n,"renderTs");var
|
|
14
|
-
`}i(Mn,"serializeManifest");import{DEFAULT_TEXT_SIZE as Wo}from"@apollion-dsi/core/themes/text-size";var Jo="json/sets",An="json/resolver.json";function H(e){return`${Jo}/${e}.json`}i(H,"setFile");function Uo(e,n,o){return`${e}.color.${n}.${o}`}i(Uo,"colorSetName");function Xo(e){return`spacing.${e}`}i(Xo,"spacingSetName");function Zo(e){return`font.${e}`}i(Zo,"fontSetName");function qo(e){return`font.${e}`}i(qo,"legacyFontSetName");function ae(e,n){e.includes(n)||e.push(n)}i(ae,"pushUnique");function Ln(e){let n=ie(e),o=[],t=[],r=[],s=[],a=new Set,c=[],u=new Set,f=[],b=[...re(e)],S=b.map(l=>{let d=Zo(l);return{kind:"font",name:d,file:H(d),textSize:l}});for(let l of n){ae(o,l.brand),ae(t,l.mode),ae(r,l.surface),ae(s,l.dimension);let d=Uo(l.brand,l.mode,l.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:H(d),brand:l.brand,mode:l.mode,surface:l.surface}));let y=Xo(l.dimension);u.has(y)||(u.add(y),f.push({kind:"spacing",name:y,file:H(y),dimension:l.dimension}))}for(let l of s){let d=qo(l);S.push({kind:"font",name:d,file:H(d),textSize:Wo,deprecatedDimension:l})}return{base:{kind:"base",name:"base",file:H("base")},spacing:f,font:S,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:b}}}i(Ln,"planSets");import{toDarkColors as ft}from"@apollion-dsi/core/themes/colors";import{createFoundation as Jn}from"@apollion-dsi/core/themes/foundation";import{createSemantic as mt}from"@apollion-dsi/core/themes/semantic";import{defaultInputSpacing as gt}from"@apollion-dsi/core/themes/spacing";import{invertForSurface as yt}from"@apollion-dsi/core/themes/surface";import{converter as zn,formatHex as O,interpolate as Yo,parse as x,wcagContrast as Nn}from"culori";var J=zn("oklch"),Qo=zn("rgb");function p(e,n,o){let t=x(e),r=x(n);if(!t||!r)return e;let s=Yo([t,r],"oklch");return O(s(o))??e}i(p,"mixOklch");function et(e){return e?typeof e=="string"?e:e.base:"#000"}i(et,"coerceToHex");var ce=1.3,nt=.05,On=.04,V=i((e,n)=>{let o=x(e),t=x(n);return!o||!t?1:Nn(o,t)},"contrastRatio"),K=i(e=>{let n=J(x(e));return n?n.l??0:null},"oklchLightness"),ot=4.5;function W(e,n,o=ot){let t=x(n),r=J(x(e));if(!t||!r)return e;let s=V("#fff",n)>=V("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=O(r)??e,u=x(c);if(u&&Nn(u,t)>=o)return c;let f=Math.min(1,Math.max(0,(r.l??0)+s));if(f===(r.l??0))break;r={...r,l:f}}return O(r)??e}i(W,"readableColor");var Gn=i((e,n)=>{if(V(e,n)>=ce)return!0;let o=K(e),t=K(n);return o!==null&&t!==null&&Math.abs(o-t)>=nt},"isPerceptibleState"),De=i(e=>e?V("#fff",e)>V("#000",e):!1,"isDarkSurface");function jn(e,n,o){let t=J(x(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?On:-On;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let u=O(r);if(u&&V(e,u)>=ce)return u}return O(r)??null}i(jn,"derivePerceptibleState");function Fn(e,n,o){let t=jn(e,n,o);if(t&&V(e,t)>=ce)return t;let r=jn(e,!n);return r&&V(e,r)>=ce?r:t??r}i(Fn,"perceptibleStateFor");function v(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=et(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:p(t,r,.6),action:p(t,r,.2),active:p(t,s,.6),light:p(t,s,.9),onLight:t};if(x(t)){let c=De(n.baseLight),u=Gn(t,a.action);if(u||(a.action=Fn(t,c)??a.action),!Gn(t,a.active)){let f=u?void 0:K(a.action)??void 0;a.active=Fn(t,c,f)??a.active}}if(a.onLight=W(a.action,a.light),o){let c=o.action??a.action,u=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:u,onLight:o.onLight??W(c,u)}}return a}i(v,"mountSingleColor");function Pn(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:p(n,o,.05),10:p(n,o,.1),20:p(n,o,.2),30:p(n,o,.3),40:p(n,o,.4),50:p(n,o,.5),60:p(n,o,.6),70:p(n,o,.7),80:p(n,o,.8),90:p(n,o,.9),100:p(n,o,1)}}i(Pn,"mountGreyscaleColors");function _n(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=p(t,o,.5);return{0:p(s,n,r(18)),5:p(s,n,r(17.5)),10:p(s,n,r(17)),20:p(s,n,r(16)),30:p(s,n,r(15)),40:p(s,n,r(14)),50:p(s,n,r(13)),60:p(s,n,r(12)),70:p(s,n,r(11)),80:p(s,n,r(10)),90:p(s,n,r(9)),100:p(s,n,r(8)),110:p(s,n,r(7)),120:p(s,n,r(6)),130:p(s,n,r(5)),140:p(s,n,r(4)),150:p(s,n,r(3)),160:p(s,n,r(2)),170:s,180:p(s,o,.25)}}i(_n,"mountNeutralColors");function z(e,n){let o=J(x(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return O({...o,l:t})??e}i(z,"shiftLightness");function ue(e,n){let o=J(x(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:O({...o,l:Math.min(s,Math.max(r,t))})??e}i(ue,"clampLightness");function G(e,n){let o=Qo(x(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(G,"toRgbaString");import{apcaContrast as le,DARK_BOOST_TAPER_MAX_L as we,DARK_ELEVATION_BOOST as tt,EDGE_ALPHA as $e,HALATION_FLOORS as de,INK_APCA_MIN as Ce,INK_MIX as Ee,LADDER_DELTAS as Bn,MIN_CONTRAST_AA as Hn,WASH_ALPHA as rt}from"@apollion-dsi/core/themes/colors";var it="#FFFFFF",Ve="#000000";function st(e){return De(e.baseLight)?"dark":"light"}i(st,"resolvePolarity");function at(e){let n=de.CANVAS_MIN_L;return e<=n?1:e>=we?0:(we-e)/(we-n)}i(at,"darkElevationBoostFactor");function Kn(e,n,o){if(Math.abs(le(e,n))>=o)return e;let t=Math.abs(le("#ffffff",n))>=Math.abs(le("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=z(r,t?.02:-.02);if(a===r||(r=a,Math.abs(le(r,n))>=o))break}return r}i(Kn,"ensureApca");function ct(e,n){let o=e.baseLight??it,t=n==="dark",r=t?ue(o,{min:de.CANVAS_MIN_L}):o,s=z(r,Bn.sunken),a=t?at(K(r)??0):0,c=i(u=>Bn[u]+a*tt[u],"delta");return{canvas:r,sunken:t?ue(s,{min:de.CANVAS_MIN_L}):s,paper:z(r,c("paper")),raised:z(r,c("raised")),overlay:z(r,c("overlay")),scrim:t?e.deepLight??Ve:e.neutral?.["180"]??e.baseDark??Ve}}i(ct,"deriveSurface");function ut(e,n){let o=e.baseDark??Ve,t=ue(Kn(W(o,n.paper,Hn),n.paper,Ce.primary),{max:de.INK_MAX_L}),r=i((s,a)=>Kn(W(p(t,n.canvas,s),n.paper,Hn),n.paper,a),"tier");return{primary:t,secondary:r(Ee.secondary,Ce.secondary),muted:r(Ee.muted,Ce.muted),disabled:p(t,n.canvas,Ee.disabled)}}i(ut,"deriveInk");function lt(e){return{hairline:G(e.primary,$e.hairline),border:G(e.primary,$e.border),strong:G(e.primary,$e.strong)}}i(lt,"deriveEdge");function dt(e,n){let o=rt[n];return{hover:G(e.primary,o.hover),pressed:G(e.primary,o.pressed),selected:G(e.primary,o.selected)}}i(dt,"deriveWash");function pt(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(pt,"applyOverride");function Wn(e,n){let o=st(e),t=ct(e,o),r=ut(e,t),s={surface:t,ink:r,edge:lt(r),wash:dt(r,o)};return pt(s,n?.[o])}i(Wn,"resolveSurfaceLadder");function ht(e){let n=_n(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Pn(e),...Wn({...e,neutral:n},e.ladder),main:v(e.main,e),opposite:v(e.opposite,e),complementary:v(e.complementary,e),danger:v(e.danger,e),information:v(e.information,e),success:v(e.success,e),warning:v(e.warning,e),primary:v(e.primary,e),secondary:v(e.secondary,e),tertiary:v(e.tertiary,e)}}i(ht,"composeColors");function M(e,n=gt){let o=e.mode==="dark"?ft(e.colors):e.colors,t=ht(o),r=Y(n,e.dimension),s=mt({colors:t,spacing:r}),a=Jn(s);return e.surface==="negative"&&(a=Jn(yt({semantic:s,colors:t},"negative").semantic)),{foundation:a,colors:t}}i(M,"buildVariantThemes");async function ri(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=ie(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await bt(U(It(),"apollion-tokens-"));try{let u=[],f=i(async(l,d)=>{await kt(c,l,d),u.push({path:l,sha256:se(d)}),r&&console.log(` \u2713 ${l}`)},"emit");if(a.json){let l=Ln(n),d=[],y=un();d.push(y),await f(l.base.file,xn(y));for(let m of l.spacing){let R=s.find(X=>X.dimension===m.dimension),{foundation:C}=M(R),E=dn(C,m.dimension);d.push(E),await f(m.file,Tn(E,m.dimension))}for(let m of l.font){let R=he(m.textSize);d.push(R),await f(m.file,vn(R,m))}for(let m of l.color){let R=s.find(pe=>pe.brand===m.brand&&pe.mode===m.mode&&pe.surface===m.surface),{foundation:C,colors:E}=M(R),X=ln(C,E);d.push(X),await f(m.file,Sn(X,m.brand,m.mode,m.surface))}nn(d),await f(An,Dn(n,l))}if(a.css||a.ts)for(let l of s){let{foundation:d,colors:y}=M(l),m=F(d,y,l),R=Cn(l);a.css&&await f(`css/${R}.css`,hn(m,{rgbCompanions:a.tailwind})),a.ts&&await f(`ts/${R}.d.ts`,$n(m))}if(a.css||a.cssModes){let l=re(n).map(d=>[d,he(d)]);await f("css/font.css",Rn(l))}if(a.cssModes){let l=new Map;for(let d of s){let y=`${d.brand}.${d.surface}.${d.dimension}`,m=l.get(y)??{};m[d.mode]=d,l.set(y,m)}for(let[d,{light:y,dark:m}]of l){if(!y||!m)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let R=M(y),C=M(m),E=bn(F(R.foundation,R.colors,y),F(C.foundation,C.colors,m),{rgbCompanions:a.tailwind});await f(`css/${d}.modes.css`,E)}}if(a.tailwind){let l=s[0],{foundation:d,colors:y}=M(l),m=F(d,y,l);await f("tailwind/preset.mjs",gn(m)),await f("tailwind/tw-merge.mjs",yn(m))}if(a.designMd){let l=[...new Set(s.map(d=>d.brand))];for(let d of l){let m=s.filter(R=>R.brand===d).map(R=>{let{foundation:C,colors:E}=M(R);return F(C,E,R)});await f(`design/${d}.design.md`,In(d,m))}}let b={configHash:ve(n),files:u,gitCommit:En(t),buildEnv:Vn()},S=Mn(b);return await qn(U(c,"manifest.json"),S),await Xn(o,{recursive:!0,force:!0}),await Zn(Yn(o),{recursive:!0}),await Rt(c,o),r&&console.log(`\u2713 ${u.length} files \u2192 ${o}`),{manifest:b,outDir:o}}catch(u){throw await Xn(c,{recursive:!0,force:!0}).catch(()=>{}),u}}i(ri,"build");async function ii(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await Un(U(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==ve(n))return!1;for(let r of t.files){let s;try{s=await Un(U(o,r.path))}catch{return!1}if(se(s)!==r.sha256)return!1}return!0}i(ii,"check");async function kt(e,n,o){let t=U(e,n);await Zn(Yn(t),{recursive:!0}),await qn(t,o)}i(kt,"writeAt");export{ri as build,ii as check};
|
|
10
|
+
`)}`}i(In,"renderDesignMd");import{DEFAULT_TEXT_SIZE as zo}from"@apollion-dsi/core/themes/text-size";function kn(e){return e.alpha!==void 0?{colorSpace:"oklch",components:[...e.components],alpha:e.alpha,hex:e.hex}:{colorSpace:"oklch",components:[...e.components],hex:e.hex}}i(kn,"colorValue");function _(e){return{value:e.value,unit:e.unit}}i(_,"dimensionValue");function Lo(e){return{value:e.value,unit:e.unit}}i(Lo,"durationValue");function Oo(e){return[...e.points]}i(Oo,"cubicBezierValue");function Go(e){let n=e.shadow,o={color:kn(n.color),offsetX:_(n.offsetX),offsetY:_(n.offsetY),blur:_(n.blur),spread:_(n.spread)};return n.inset&&(o.inset=!0),o}i(Go,"shadowValue");function jo(e){switch(e.kind){case"ref":return`{${Pe(e.path)}}`;case"color":return kn(e);case"dimension":return _(e);case"fontFamily":return e.family;case"fontWeight":return e.weight;case"number":return e.number;case"strokeStyle":return e.style;case"shadow":return Go(e);case"duration":return Lo(e);case"cubicBezier":return Oo(e)}}i(jo,"projectValue");function Fo(e){let n={$value:jo(e.value),$type:e.type};return e.description!==void 0&&(n.$description=e.description),e.deprecated!==void 0&&(n.$deprecated=e.deprecated),n}i(Fo,"projectToken");function Se(e){let n={};for(let[o,t]of Object.entries(e))n[k(o)]=h(t)?Fo(t):Se(t);return n}i(Se,"projectGroup");function B(e,n,o){let t=Se(e.groups);if(o)for(let s of Object.keys(t))t[s]={$deprecated:o,...t[s]};let r={$description:n,...t};return Object.keys(e.extensions).length>0&&(r.$extensions=e.extensions),`${JSON.stringify(r,null,2)}
|
|
11
|
+
`}i(B,"renderSet");function xn(e){return B(e,"Apollion DS \u2014 base set (axis-invariant: border, breakpoints, container sizes, layout, motion). DTCG 2025.10.")}i(xn,"renderBaseSet");function Sn(e,n,o,t){return B(e,`Apollion DS \u2014 colour set. brand=${n} mode=${o} surface=${t}. DTCG 2025.10.`)}i(Sn,"renderColorSet");function Tn(e,n){return B(e,`Apollion DS \u2014 spacing set. dimension=${n}. DTCG 2025.10.`)}i(Tn,"renderSpacingSet");function vn(e,n){return n.deprecatedDimension?B(e,`Apollion DS \u2014 font set. DEPRECATED alias of font.${n.textSize} (dimension=${n.deprecatedDimension} no longer scales type, ADR-030; removed at the next major). DTCG 2025.10.`,`Alias of font.${n.textSize} \u2014 dimension no longer scales type (ADR-030). Use font.<textSize>.`):B(e,`Apollion DS \u2014 font set. textSize=${n.textSize}. DTCG 2025.10.`)}i(vn,"renderFontSet");function Dn(e,n){let{modifiers:o}=n,t=[{name:"brand",values:[...o.brand],default:o.brand[0]},{name:"mode",values:[...o.mode],default:o.mode[0]},{name:"surface",values:[...o.surface],default:o.surface[0]},{name:"dimension",values:[...o.dimension],default:o.dimension[0]},{name:"textSize",values:[...o.textSize],default:zo}],r=n.font.filter(c=>c.deprecatedDimension),a={name:"apollion-tokens",description:"Apollion DS token resolver \u2014 DTCG 2025.10. Compose the base set with the colour set for the chosen brand/mode/surface, the spacing set for the chosen dimension and the font set for the chosen textSize. NOTE: mode is a topology placeholder in this release (dark resolves identically to light until S6).",sets:[{name:n.base.name,source:n.base.file},...n.spacing.map(c=>({name:c.name,source:c.file})),...n.font.map(c=>({name:c.name,source:c.file})),...n.color.map(c=>({name:c.name,source:c.file}))],modifiers:t,$extensions:{"com.apollion.resolver":{composition:{always:[n.base.name],byModifier:{color:"${brand}.color.${mode}.${surface}",spacing:"spacing.${dimension}",font:"font.${textSize}"}},deprecatedSets:Object.fromEntries(r.map(c=>[c.name,`font.${c.textSize}`])),modeIsPlaceholder:!0}}};return`${JSON.stringify(a,null,2)}
|
|
12
|
+
`}i(Dn,"renderResolver");var No="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function Po(e,n,o){let t=[];if(e.description!==void 0&&t.push(e.description),e.deprecated===!0?t.push("@deprecated"):typeof e.deprecated=="string"&&t.push(`@deprecated ${e.deprecated}`),t.length!==0){o.push(`${n}/**`);for(let r of t)o.push(`${n} * ${r.replace(/\*\//g,"*\\/")}`);o.push(`${n} */`)}}i(Po,"emitDoc");function wn(e,n,o){let t=" ".repeat(n);for(let[r,s]of Object.entries(e))h(s)?(Po(s,t,o),o.push(`${t}${JSON.stringify(r)}: ${JSON.stringify($(s.value))},`)):(o.push(`${t}${r}: {`),wn(s,n+1,o),o.push(`${t}},`))}i(wn,"emitGroup");function $n(e){let{brand:n,mode:o,surface:t,dimension:r}=e.meta,s=[No,`// Variant: brand=${n} mode=${o} surface=${t} dimension=${r}`,"","export const tokens = {"];return wn(e.groups,1,s),s.push("} as const;","","export type Tokens = typeof tokens;",""),s.join(`
|
|
13
|
+
`)}i($n,"renderTs");var _o=["light","dark"],Bo=["positive","negative"],Ho=["compact","normal","spacious"],Ko=["smaller","default","larger","largest"];function re(e){let n=[...new Set(e.textSizes??Ko)];if(!n.includes("default"))throw new Error(`apollion-tokens: textSizes must include 'default' (got [${n.join(", ")}])`);return n}i(re,"resolveTextSizes");function ie(e){let n=e.modes??_o,o=e.surfaces??Bo,t=e.dimensions??Ho,r=Object.entries(e.brands).sort(([a],[c])=>a.localeCompare(c)),s=[];for(let[a,c]of r)for(let u of n)for(let f of o)for(let b of t)s.push({brand:a,colors:c,mode:u,surface:f,dimension:b});return s}i(ie,"expandVariants");function Cn(e){return`${e.brand}.${e.mode}.${e.surface}.${e.dimension}`}i(Cn,"variantName");import{createHash as Wo}from"node:crypto";function se(e){return Wo("sha256").update(e).digest("hex")}i(se,"sha256");function ve(e){return se(Te(e))}i(ve,"hashConfig");function Te(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(Te).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${Te(e[t])}`).join(",")}}`}i(Te,"stableStringify");function En(e){try{let{execSync:n}=no("node:child_process");return n("git rev-parse --short HEAD",{cwd:e,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim()}catch{return""}}i(En,"detectGitCommit");function Vn(){return{node:process.version,platform:`${process.platform}-${process.arch}`}}i(Vn,"buildEnv");function Mn(e){let n=[...e.files].sort((t,r)=>t.path.localeCompare(r.path)),o={configHash:e.configHash,files:n,gitCommit:e.gitCommit,buildEnv:e.buildEnv};return`${JSON.stringify(o,null,2)}
|
|
14
|
+
`}i(Mn,"serializeManifest");import{DEFAULT_TEXT_SIZE as Jo}from"@apollion-dsi/core/themes/text-size";var Uo="json/sets",An="json/resolver.json";function H(e){return`${Uo}/${e}.json`}i(H,"setFile");function Xo(e,n,o){return`${e}.color.${n}.${o}`}i(Xo,"colorSetName");function Zo(e){return`spacing.${e}`}i(Zo,"spacingSetName");function qo(e){return`font.${e}`}i(qo,"fontSetName");function Yo(e){return`font.${e}`}i(Yo,"legacyFontSetName");function ae(e,n){e.includes(n)||e.push(n)}i(ae,"pushUnique");function Ln(e){let n=ie(e),o=[],t=[],r=[],s=[],a=new Set,c=[],u=new Set,f=[],b=[...re(e)],S=b.map(l=>{let d=qo(l);return{kind:"font",name:d,file:H(d),textSize:l}});for(let l of n){ae(o,l.brand),ae(t,l.mode),ae(r,l.surface),ae(s,l.dimension);let d=Xo(l.brand,l.mode,l.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:H(d),brand:l.brand,mode:l.mode,surface:l.surface}));let y=Zo(l.dimension);u.has(y)||(u.add(y),f.push({kind:"spacing",name:y,file:H(y),dimension:l.dimension}))}for(let l of s){let d=Yo(l);S.push({kind:"font",name:d,file:H(d),textSize:Jo,deprecatedDimension:l})}return{base:{kind:"base",name:"base",file:H("base")},spacing:f,font:S,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:b}}}i(Ln,"planSets");import{defaultInputColors as Jn,toDarkColors as mt}from"@apollion-dsi/core/themes/colors";import{createFoundation as Un}from"@apollion-dsi/core/themes/foundation";import{createSemantic as gt}from"@apollion-dsi/core/themes/semantic";import{defaultInputSpacing as yt}from"@apollion-dsi/core/themes/spacing";import{invertForSurface as ht}from"@apollion-dsi/core/themes/surface";import{converter as zn,formatHex as O,interpolate as Qo,parse as x,wcagContrast as Nn}from"culori";var J=zn("oklch"),et=zn("rgb");function p(e,n,o){let t=x(e),r=x(n);if(!t||!r)return e;let s=Qo([t,r],"oklch");return O(s(o))??e}i(p,"mixOklch");function nt(e){return e?typeof e=="string"?e:e.base:"#000"}i(nt,"coerceToHex");var ce=1.3,ot=.05,On=.04,V=i((e,n)=>{let o=x(e),t=x(n);return!o||!t?1:Nn(o,t)},"contrastRatio"),K=i(e=>{let n=J(x(e));return n?n.l??0:null},"oklchLightness"),tt=4.5;function W(e,n,o=tt){let t=x(n),r=J(x(e));if(!t||!r)return e;let s=V("#fff",n)>=V("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=O(r)??e,u=x(c);if(u&&Nn(u,t)>=o)return c;let f=Math.min(1,Math.max(0,(r.l??0)+s));if(f===(r.l??0))break;r={...r,l:f}}return O(r)??e}i(W,"readableColor");var Gn=i((e,n)=>{if(V(e,n)>=ce)return!0;let o=K(e),t=K(n);return o!==null&&t!==null&&Math.abs(o-t)>=ot},"isPerceptibleState"),De=i(e=>e?V("#fff",e)>V("#000",e):!1,"isDarkSurface");function jn(e,n,o){let t=J(x(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?On:-On;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let u=O(r);if(u&&V(e,u)>=ce)return u}return O(r)??null}i(jn,"derivePerceptibleState");function Fn(e,n,o){let t=jn(e,n,o);if(t&&V(e,t)>=ce)return t;let r=jn(e,!n);return r&&V(e,r)>=ce?r:t??r}i(Fn,"perceptibleStateFor");function v(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=nt(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:p(t,r,.6),action:p(t,r,.2),active:p(t,s,.6),light:p(t,s,.9),onLight:t};if(x(t)){let c=De(n.baseLight),u=Gn(t,a.action);if(u||(a.action=Fn(t,c)??a.action),!Gn(t,a.active)){let f=u?void 0:K(a.action)??void 0;a.active=Fn(t,c,f)??a.active}}if(a.onLight=W(a.action,a.light),o){let c=o.action??a.action,u=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:u,onLight:o.onLight??W(c,u)}}return a}i(v,"mountSingleColor");function Pn(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:p(n,o,.05),10:p(n,o,.1),20:p(n,o,.2),30:p(n,o,.3),40:p(n,o,.4),50:p(n,o,.5),60:p(n,o,.6),70:p(n,o,.7),80:p(n,o,.8),90:p(n,o,.9),100:p(n,o,1)}}i(Pn,"mountGreyscaleColors");function _n(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=p(t,o,.5);return{0:p(s,n,r(18)),5:p(s,n,r(17.5)),10:p(s,n,r(17)),20:p(s,n,r(16)),30:p(s,n,r(15)),40:p(s,n,r(14)),50:p(s,n,r(13)),60:p(s,n,r(12)),70:p(s,n,r(11)),80:p(s,n,r(10)),90:p(s,n,r(9)),100:p(s,n,r(8)),110:p(s,n,r(7)),120:p(s,n,r(6)),130:p(s,n,r(5)),140:p(s,n,r(4)),150:p(s,n,r(3)),160:p(s,n,r(2)),170:s,180:p(s,o,.25)}}i(_n,"mountNeutralColors");function z(e,n){let o=J(x(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return O({...o,l:t})??e}i(z,"shiftLightness");function ue(e,n){let o=J(x(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:O({...o,l:Math.min(s,Math.max(r,t))})??e}i(ue,"clampLightness");function G(e,n){let o=et(x(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(G,"toRgbaString");import{apcaContrast as le,DARK_BOOST_TAPER_MAX_L as we,DARK_ELEVATION_BOOST as rt,EDGE_ALPHA as $e,HALATION_FLOORS as de,INK_APCA_MIN as Ce,INK_MIX as Ee,LADDER_DELTAS as Bn,MIN_CONTRAST_AA as Hn,WASH_ALPHA as it}from"@apollion-dsi/core/themes/colors";var st="#FFFFFF",Ve="#000000";function at(e){return De(e.baseLight)?"dark":"light"}i(at,"resolvePolarity");function ct(e){let n=de.CANVAS_MIN_L;return e<=n?1:e>=we?0:(we-e)/(we-n)}i(ct,"darkElevationBoostFactor");function Kn(e,n,o){if(Math.abs(le(e,n))>=o)return e;let t=Math.abs(le("#ffffff",n))>=Math.abs(le("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=z(r,t?.02:-.02);if(a===r||(r=a,Math.abs(le(r,n))>=o))break}return r}i(Kn,"ensureApca");function ut(e,n){let o=e.baseLight??st,t=n==="dark",r=t?ue(o,{min:de.CANVAS_MIN_L}):o,s=z(r,Bn.sunken),a=t?ct(K(r)??0):0,c=i(u=>Bn[u]+a*rt[u],"delta");return{canvas:r,sunken:t?ue(s,{min:de.CANVAS_MIN_L}):s,paper:z(r,c("paper")),raised:z(r,c("raised")),overlay:z(r,c("overlay")),scrim:t?e.deepLight??Ve:e.neutral?.["180"]??e.baseDark??Ve}}i(ut,"deriveSurface");function lt(e,n){let o=e.baseDark??Ve,t=ue(Kn(W(o,n.paper,Hn),n.paper,Ce.primary),{max:de.INK_MAX_L}),r=i((s,a)=>Kn(W(p(t,n.canvas,s),n.paper,Hn),n.paper,a),"tier");return{primary:t,secondary:r(Ee.secondary,Ce.secondary),muted:r(Ee.muted,Ce.muted),disabled:p(t,n.canvas,Ee.disabled)}}i(lt,"deriveInk");function dt(e){return{hairline:G(e.primary,$e.hairline),border:G(e.primary,$e.border),strong:G(e.primary,$e.strong)}}i(dt,"deriveEdge");function pt(e,n){let o=it[n];return{hover:G(e.primary,o.hover),pressed:G(e.primary,o.pressed),selected:G(e.primary,o.selected)}}i(pt,"deriveWash");function ft(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(ft,"applyOverride");function Wn(e,n){let o=at(e),t=ut(e,o),r=lt(e,t),s={surface:t,ink:r,edge:dt(r),wash:pt(r,o)};return ft(s,n?.[o])}i(Wn,"resolveSurfaceLadder");function bt(e){let n=_n(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Pn(e),...Wn({...e,neutral:n},e.ladder),main:v(e.main,e),opposite:v(e.opposite,e),complementary:v(e.complementary,e),danger:v(e.danger,e),information:v(e.information,e),success:v(e.success,e),warning:v(e.warning,e),primary:v(e.primary,e),secondary:v(e.secondary,e),tertiary:v(e.tertiary,e)}}i(bt,"composeColors");function Rt(e){return{...e,baseLight:e.baseLight??Jn.baseLight,baseDark:e.baseDark??Jn.baseDark}}i(Rt,"withContrastDefaults");function M(e,n=yt){let o=Rt(e.colors),t=e.mode==="dark"?mt(o):o,r=bt(t),s=Y(n,e.dimension),a=gt({colors:r,spacing:s}),c=Un(a);return e.surface==="negative"&&(c=Un(ht({semantic:a,colors:r},"negative").semantic)),{foundation:c,colors:r}}i(M,"buildVariantThemes");async function si(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=ie(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await It(U(xt(),"apollion-tokens-"));try{let u=[],f=i(async(l,d)=>{await St(c,l,d),u.push({path:l,sha256:se(d)}),r&&console.log(` \u2713 ${l}`)},"emit");if(a.json){let l=Ln(n),d=[],y=un();d.push(y),await f(l.base.file,xn(y));for(let m of l.spacing){let R=s.find(X=>X.dimension===m.dimension),{foundation:C}=M(R),E=dn(C,m.dimension);d.push(E),await f(m.file,Tn(E,m.dimension))}for(let m of l.font){let R=he(m.textSize);d.push(R),await f(m.file,vn(R,m))}for(let m of l.color){let R=s.find(pe=>pe.brand===m.brand&&pe.mode===m.mode&&pe.surface===m.surface),{foundation:C,colors:E}=M(R),X=ln(C,E);d.push(X),await f(m.file,Sn(X,m.brand,m.mode,m.surface))}nn(d),await f(An,Dn(n,l))}if(a.css||a.ts)for(let l of s){let{foundation:d,colors:y}=M(l),m=F(d,y,l),R=Cn(l);a.css&&await f(`css/${R}.css`,hn(m,{rgbCompanions:a.tailwind})),a.ts&&await f(`ts/${R}.d.ts`,$n(m))}if(a.css||a.cssModes){let l=re(n).map(d=>[d,he(d)]);await f("css/font.css",Rn(l))}if(a.cssModes){let l=new Map;for(let d of s){let y=`${d.brand}.${d.surface}.${d.dimension}`,m=l.get(y)??{};m[d.mode]=d,l.set(y,m)}for(let[d,{light:y,dark:m}]of l){if(!y||!m)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let R=M(y),C=M(m),E=bn(F(R.foundation,R.colors,y),F(C.foundation,C.colors,m),{rgbCompanions:a.tailwind});await f(`css/${d}.modes.css`,E)}}if(a.tailwind){let l=s[0],{foundation:d,colors:y}=M(l),m=F(d,y,l);await f("tailwind/preset.mjs",gn(m)),await f("tailwind/tw-merge.mjs",yn(m))}if(a.designMd){let l=[...new Set(s.map(d=>d.brand))];for(let d of l){let m=s.filter(R=>R.brand===d).map(R=>{let{foundation:C,colors:E}=M(R);return F(C,E,R)});await f(`design/${d}.design.md`,In(d,m))}}let b={configHash:ve(n),files:u,gitCommit:En(t),buildEnv:Vn()},S=Mn(b);return await Yn(U(c,"manifest.json"),S),await Zn(o,{recursive:!0,force:!0}),await qn(Qn(o),{recursive:!0}),await kt(c,o),r&&console.log(`\u2713 ${u.length} files \u2192 ${o}`),{manifest:b,outDir:o}}catch(u){throw await Zn(c,{recursive:!0,force:!0}).catch(()=>{}),u}}i(si,"build");async function ai(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await Xn(U(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==ve(n))return!1;for(let r of t.files){let s;try{s=await Xn(U(o,r.path))}catch{return!1}if(se(s)!==r.sha256)return!1}return!0}i(ai,"check");async function St(e,n,o){let t=U(e,n);await qn(Qn(t),{recursive:!0}),await Yn(t,o)}i(St,"writeAt");export{si as build,ai as check};
|
package/lib/cli.mjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var lo=Object.defineProperty;var i=(e,n)=>lo(e,"name",{value:n,configurable:!0}),uo=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});import{readFile as zt}from"node:fs/promises";import{resolve as je}from"node:path";import{mkdir as oo,mkdtemp as $t,readFile as eo,rename as Ct,rm as no,writeFile as to}from"node:fs/promises";import{tmpdir as Et}from"node:os";import{dirname as ro,join as Z}from"node:path";import{DEFAULT_TEXT_SIZE as Po,TEXT_SIZE_ATTRIBUTE as _o}from"@apollion-dsi/core/themes/text-size";import{converter as Lo,parse as Go}from"culori";import{defaultInputBorder as te}from"@apollion-dsi/core/themes/border";import{createReadableTextLayer as ho}from"@apollion-dsi/core/themes/colors";import{createDeth as bo,levelValues as Ro}from"@apollion-dsi/core/themes/depth";import{createFont as ko,defaultInputFont as L}from"@apollion-dsi/core/themes/font";import{defaultInputSpacing as We}from"@apollion-dsi/core/themes/spacing";import{DEFAULT_TEXT_SIZE as Io}from"@apollion-dsi/core/themes/text-size";import{converter as xo,formatHex as So,parse as vo}from"culori";import{defaultInputBreakpoints as po}from"@apollion-dsi/core/themes/breakpoints";function Pe(e=po){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Pe,"breakpointEntries");import{defaultInputContainerSizes as fo,defaultInputLayout as mo,defaultInputZIndex as go}from"@apollion-dsi/core/themes/layout";function _e(e=fo){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(_e,"containerSizeEntries");function ze(e=mo){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(ze,"layoutEntries");function Fe(e=go){return Object.entries(e)}i(Fe,"zIndexEntries");import{createMotion as Q,defaultInputMotion as ee}from"@apollion-dsi/core/themes/motion";function Ne(e=ee){let n=Q(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(Ne,"motionDurationEntries");function Be(e=ee){let n=Q(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(Be,"motionEasingEntries");function He(e=ee){let n=Q(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(He,"motionIndicatorEntries");function Ke(e=ee){let n=Q(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(Ke,"motionIntentEntries");import{DIMENSION_MULTIPLIERS as yo}from"@apollion-dsi/core/themes/dimension";function ne({multiplier:e=.25,alias:n},o){let t=o!==void 0?yo[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(ne,"createSpacing");var he={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function be(e){let n=Object.keys(he).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(be,"assertTokenMetaResolves");var wo=xo("oklch");function b(e){return typeof e.type=="string"&&"value"in e}i(b,"isToken");function x(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(x,"kebab");function Ue(e){return e.split(".").map(x).join(".")}i(Ue,"kebabPath");function E(e){return e.kind==="ref"?e.resolved.raw:e.raw}i(E,"rawValue");function oe(e,n){return Number(e.toFixed(n))||0}i(oe,"round");function Re(e){let n=wo(vo(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[oe(n.l,4),oe(n.c,4),oe(n.h??0,2)],t=So(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:oe(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(Re,"toColorValue");var Je=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function $(e){let n=Je.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i($,"toDimensionValue");function I(e){return{type:"color",value:Re(e)}}i(I,"colorToken");function G(e){let n={};for(let[o,t]of Object.entries(e))n[o]=I(t);return n}i(G,"recordColorGroup");function Xe(e){let n=ho(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=I(r);return o.neutral=G(n.neutral),o}i(Xe,"buildReadableTextGroup");var To=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function qe(e){let n={};for(let o of To){let t=e[o];n[o]={base:I(t.base),dark:I(t.dark),action:I(t.action),active:I(t.active),light:I(t.light),onLight:I(t.onLight)}}return n.grayscale=G(e.grayscale),n.neutral=G(e.neutral),n.surface=G(e.surface),n.ink=G(e.ink),n.edge=G(e.edge),n.wash=G(e.wash),n.baseDark=I(e.baseDark??"#000000"),n.baseLight=I(e.baseLight??"#ffffff"),n.deepDark=I(e.deepDark??"#000000"),n.deepLight=I(e.deepLight??"#ffffff"),n}i(qe,"buildColorPrimitives");function Ze(e){let n=ne(We,e),o={};for(let t of Object.keys(We.alias))o[t]={type:"dimension",value:$(n(t))};return o}i(Ze,"buildSpacePrimitives");function Ye(){let e={};for(let[n,o]of Object.entries(te.borderWidth))e[n]={type:"dimension",value:$(o)};return e}i(Ye,"buildBorderWidthPrimitives");function Do(e,n){return{color:qe(e),space:Ze(n),borderWidth:Ye()}}i(Do,"buildPrimitives");var Qe={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},en={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},nn={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function $o(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i($o,"lookupPrimitive");function z(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?$o(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:Re(s)}}:I(s)}return t}i(z,"colorRefGroup");var on={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},Co={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function Eo(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!b(r)&&s in r)r=r[s];else return;return r&&b(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(Eo,"lookupDimensionPrimitive");function ke(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?Eo(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:$(s)}}:{type:"dimension",value:$(s)}}return t}i(ke,"dimensionRefGroup");function tn(e){let n={},o={};for(let[s,a]of Object.entries(te.borderRadius))Je.test(a)?n[s]={type:"dimension",value:$(a)}:o[s]=a;let t=ke(te.borderWidth,e,Co),r={};for(let[s,a]of Object.entries(te.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(tn,"buildBorder");function rn(e){let n=ko(L,{textSize:e}),o={};for(let[c,l]of Object.entries(L.fontFamily)){let p=l.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:p,family:p}}}let t={};for(let[c,l]of Object.entries(n.fontSize))t[c]={type:"dimension",value:$(l)};let r={};for(let[c,l]of Object.entries(L.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${l}`,weight:l}};let s={};for(let[c,l]of Object.entries(L.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${l}`,number:l}};let a={letterSpacing:L.letterSpacing,textTransform:L.textTransform,fontStyle:L.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(rn,"buildFont");var Ao=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function Mo(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(Ao),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(l=>$(a[l]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:Re(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(Mo,"parseShadow");function sn(e){let n=bo(e),o={};for(let t of Object.keys(Ro))o[t]={type:"shadow",value:Mo(n(t))};return o}i(sn,"buildShadow");function re(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${x(r)}`:x(r);if(b(s)){o.add(a);let c=he[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=re(s,a,o)}return t}i(re,"decorateGroup");function Vo(e){let n=new Set,o=re(e.primitives,"",n),t=re(e.groups,"",n);return be(n),{...e,primitives:o,groups:t}}i(Vo,"decorateMeta");function ie(e,n){return re(e,"",n)}i(ie,"decorateSlice");function an(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${x(t)}`:x(t);b(r)?o.add(s):an(r,s,o)}}i(an,"collectPaths");function cn(e){let n=new Set;for(let o of e)an(o.groups,"",n);be(n)}i(cn,"assertSlicesMetaComplete");function ln(){let e={};for(let[n,o]of Pe())e[n]={type:"dimension",value:$(o)};return e}i(ln,"buildBreakpoints");function un(){let e={};for(let[n,o]of _e())e[n]={type:"dimension",value:$(o)};return e}i(un,"buildContainerSizes");function dn(){let e={};for(let[n,o]of ze())e[n]={type:"dimension",value:$(o)};return e}i(dn,"buildLayoutConstants");function pn(){let e={};for(let[n,o]of Fe())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(pn,"buildZIndex");function fn(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of Ne())o[a]=e(c);let t={};for(let[a,c]of Be())t[a]=n(c);let r={};for(let[a,c]of He())r[a]=e(c);let s={};for(let[a,c]of Ke()){let l=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:l}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(fn,"buildMotion");var mn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function gn(){let e=Ye(),o=tn({borderWidth:e}),t={"com.apollion.breakpoint":mn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:ie({"border-width":e,border:o.group,breakpoint:ln(),"container-size":un(),layout:dn(),"z-index":pn(),motion:fn()},r),extensions:t}}i(gn,"buildBaseIR");function Ie(e){let n=rn(e),o=new Set;return{groups:ie({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(Ie,"buildFontIR");function yn(e,n){let o=qe(n),t=new Set;return{groups:ie({color:o,bg:z(e.bg,n,Qe),text:z(e.text,n,en),edge:z(e.edge,n,nn),tx:Xe(n),shadow:sn(n)},t),extensions:{}}}i(yn,"buildColorIR");function hn(e,n){let o=Ze(n),t={space:o},r=new Set;return{groups:ie({space:o,spacing:ke(e.spacing,t,on)},r),extensions:{}}}i(hn,"buildSpacingIR");function Oo(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=Do(n,o.dimension),s=tn(r),a=rn(Io),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":mn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let l={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:z(e.bg,n,Qe),text:z(e.text,n,en),edge:z(e.edge,n,nn),tx:Xe(n),spacing:ke(e.spacing,r,on),border:s.group,breakpoint:ln(),"container-size":un(),layout:dn(),"z-index":pn(),motion:fn(),font:a.group,shadow:sn(n)},extensions:c};return Vo(l)}i(Oo,"buildIR");var F=Oo;var jo=Lo("rgb"),bn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function xe(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(xe,"colorPayload");function Se(e){return e.alpha===void 0}i(Se,"isOpaqueColor");function Rn(e){let n=jo(Go(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(Rn,"rgbTriplet");function B(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,x(t)];if(b(r))o.set(s.join("-"),r);else for(let[a,c]of B(r,s))o.set(a,c)}return o}i(B,"flatTokens");function y(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||b(o))return{};o=o[t]}return o&&!b(o)?o:{}}i(y,"groupAt");function kn(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of B(y(e.groups,o),[o])){let s=xe(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:Se(s)})}return n}i(kn,"colorEntries");function C(e,n){return[...B(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(C,"varEntries");function T(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(T,"pushScale");function In(e){let n=[bn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=kn(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),T(n,"screens",[...B(y(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,E(r.value)])),T(n,"spacing",C(y(e.groups,"spacing"),["spacing"])),T(n,"borderRadius",C(y(e.groups,"border","radius"),["border","radius"])),T(n,"borderWidth",C(y(e.groups,"border","width"),["border","width"])),T(n,"fontFamily",C(y(e.groups,"font","family"),["font","family"])),T(n,"fontSize",C(y(e.groups,"font","size"),["font","size"])),T(n,"fontWeight",C(y(e.groups,"font","weight"),["font","weight"])),T(n,"lineHeight",C(y(e.groups,"font","lineHeight"),["font","line-height"])),T(n,"boxShadow",C(y(e.groups,"shadow"),["shadow"])),T(n,"transitionDuration",C(y(e.groups,"motion","duration"),["motion","duration"])),T(n,"transitionTimingFunction",C(y(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
2
|
+
var uo=Object.defineProperty;var i=(e,n)=>uo(e,"name",{value:n,configurable:!0}),po=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(n,o)=>(typeof require<"u"?require:n)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});import{readFile as Nt}from"node:fs/promises";import{resolve as je}from"node:path";import{mkdir as to,mkdtemp as Et,readFile as no,rename as At,rm as oo,writeFile as ro}from"node:fs/promises";import{tmpdir as Mt}from"node:os";import{dirname as io,join as Z}from"node:path";import{DEFAULT_TEXT_SIZE as _o,TEXT_SIZE_ATTRIBUTE as zo}from"@apollion-dsi/core/themes/text-size";import{converter as Go,parse as jo}from"culori";import{defaultInputBorder as te}from"@apollion-dsi/core/themes/border";import{createReadableTextLayer as bo}from"@apollion-dsi/core/themes/colors";import{createDeth as Ro,levelValues as ko}from"@apollion-dsi/core/themes/depth";import{createFont as Io,defaultInputFont as L}from"@apollion-dsi/core/themes/font";import{defaultInputSpacing as We}from"@apollion-dsi/core/themes/spacing";import{DEFAULT_TEXT_SIZE as xo}from"@apollion-dsi/core/themes/text-size";import{converter as So,formatHex as vo,parse as wo}from"culori";import{defaultInputBreakpoints as fo}from"@apollion-dsi/core/themes/breakpoints";function Pe(e=fo){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(Pe,"breakpointEntries");import{defaultInputContainerSizes as mo,defaultInputLayout as go,defaultInputZIndex as yo}from"@apollion-dsi/core/themes/layout";function _e(e=mo){return Object.entries(e.values).map(([n,o])=>[n,`${o}px`])}i(_e,"containerSizeEntries");function ze(e=go){return[["page-max-width",`${e.pageMaxWidth}px`]]}i(ze,"layoutEntries");function Fe(e=yo){return Object.entries(e)}i(Fe,"zIndexEntries");import{createMotion as Q,defaultInputMotion as ee}from"@apollion-dsi/core/themes/motion";function Ne(e=ee){let n=Q(e);return Object.keys(e.duration).map(o=>[o,{ms:e.duration[o],css:n.duration[o]}])}i(Ne,"motionDurationEntries");function Be(e=ee){let n=Q(e);return Object.keys(e.easing).map(o=>[o,{points:e.easing[o],css:n.easing[o]}])}i(Be,"motionEasingEntries");function He(e=ee){let n=Q(e);return Object.keys(e.indicator).map(o=>[o,{ms:e.indicator[o],css:n.indicator[o]}])}i(He,"motionIndicatorEntries");function Ke(e=ee){let n=Q(e);return Object.keys(e.intent).map(o=>{let t=e.intent[o],r=typeof t.duration=="number"?null:t.duration,s=typeof t.duration=="number"?t.duration:e.duration[t.duration];return[o,{durationRef:r,duration:{ms:s,css:n.intent[o].duration},easingRef:t.easing,easing:{points:e.easing[t.easing],css:n.intent[o].easing}}]})}i(Ke,"motionIntentEntries");import{DIMENSION_MULTIPLIERS as ho}from"@apollion-dsi/core/themes/dimension";function ne({multiplier:e=.25,alias:n},o){let t=o!==void 0?ho[o]:e;return(...r)=>r.map(s=>{let a=typeof s=="string"?n[s]:s;return`${t*a}rem`}).join(" ")}i(ne,"createSpacing");var he={"bg.primary":{description:"Primary action surface \u2014 the brand\u2019s dominant call-to-action background."},"bg.secondary":{description:"Secondary action surface \u2014 supporting actions paired with the primary."},"bg.danger":{description:"Destructive / error surface \u2014 irreversible or failing actions."},"bg.success":{description:"Positive confirmation surface \u2014 completed or healthy states."},"bg.info":{description:"Informational surface \u2014 neutral, non-blocking notices.",deprecated:"Use bg.information once the foundation role is renamed (tracked for S6)."},"bg.canvas":{description:"Page ground \u2014 the theme canvas (never pure black in dark)."},"bg.paper":{description:"Component ground (cards, inputs, tables) \u2014 lighter than the canvas in both modes; the dark step is widened for near-black grounds so cards stay separated on LCD/SDR panels (ADR-026)."},"bg.overlay":{description:"Top of the elevation ladder \u2014 modal / dialog panels."},"text.primary":{description:"Primary neutral ink \u2014 AA + APCA Lc \u2265 75 over bg.paper and bg.canvas."},"text.muted":{description:"Muted neutral ink \u2014 AA + APCA Lc \u2265 45 over bg.paper."},"edge.border":{description:"Default control outline \u2014 primary ink at 20 % alpha, legible on any ground."},"edge.hairline":{description:"Dividers and card outlines \u2014 primary ink at 10 % alpha."},"text.on-primary":{description:"Text/icon colour with guaranteed contrast over bg.primary."},"text.on-danger":{description:"Text/icon colour with guaranteed contrast over bg.danger."},"space.medium":{description:"Base spacing step (1rem at normal density) \u2014 the layout rhythm unit."},"space.large":{description:"Comfortable spacing step \u2014 section padding and card gutters."},"spacing.md":{description:"Medium foundation spacing alias \u2014 references the space.medium primitive."},"spacing.lg":{description:"Large foundation spacing alias \u2014 references the space.large primitive."},"border.radius.md":{description:"Default card corner radius."},"border.width.thin":{description:"Hairline border \u2014 dividers and default input outlines."},"border.width.regular":{description:"Standard emphasis border \u2014 focused/active controls."}};function be(e){let n=Object.keys(he).filter(o=>!e.has(o));if(n.length>0)throw new Error(`token-meta: ${n.length} stale TOKEN_META key(s) resolve to no IR node: ${n.join(", ")}. Update src/token-meta.ts to match the current IR paths.`)}i(be,"assertTokenMetaResolves");var To=So("oklch");function b(e){return typeof e.type=="string"&&"value"in e}i(b,"isToken");function x(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}i(x,"kebab");function Ue(e){return e.split(".").map(x).join(".")}i(Ue,"kebabPath");function E(e){return e.kind==="ref"?e.resolved.raw:e.raw}i(E,"rawValue");function oe(e,n){return Number(e.toFixed(n))||0}i(oe,"round");function Re(e){let n=To(wo(e));if(!n)return{kind:"color",raw:e,components:[0,0,0],hex:"#000000"};let o=[oe(n.l,4),oe(n.c,4),oe(n.h??0,2)],t=vo(n)??"#000000";return n.alpha!==void 0&&n.alpha!==1?{kind:"color",raw:e,components:o,alpha:oe(n.alpha,4),hex:t}:{kind:"color",raw:e,components:o,hex:t}}i(Re,"toColorValue");var Je=/^(-?(?:\d+\.?\d*|\.\d+))(px|rem)$/;function $(e){let n=Je.exec(e.trim());if(n)return{kind:"dimension",raw:e,value:Number(n[1]),unit:n[2]};let o=Number.parseFloat(e);return{kind:"dimension",raw:e,value:Number.isFinite(o)?o:0,unit:"rem"}}i($,"toDimensionValue");function I(e){return{type:"color",value:Re(e)}}i(I,"colorToken");function G(e){let n={};for(let[o,t]of Object.entries(e))n[o]=I(t);return n}i(G,"recordColorGroup");function Xe(e){let n=bo(e),o={};for(let[t,r]of Object.entries(n.palettes))o[t]=I(r);return o.neutral=G(n.neutral),o}i(Xe,"buildReadableTextGroup");var Do=["main","opposite","complementary","primary","secondary","tertiary","success","danger","warning","information"];function qe(e){let n={};for(let o of Do){let t=e[o];n[o]={base:I(t.base),dark:I(t.dark),action:I(t.action),active:I(t.active),light:I(t.light),onLight:I(t.onLight)}}return n.grayscale=G(e.grayscale),n.neutral=G(e.neutral),n.surface=G(e.surface),n.ink=G(e.ink),n.edge=G(e.edge),n.wash=G(e.wash),n.baseDark=I(e.baseDark??"#000000"),n.baseLight=I(e.baseLight??"#ffffff"),n.deepDark=I(e.deepDark??"#000000"),n.deepLight=I(e.deepLight??"#ffffff"),n}i(qe,"buildColorPrimitives");function Ze(e){let n=ne(We,e),o={};for(let t of Object.keys(We.alias))o[t]={type:"dimension",value:$(n(t))};return o}i(Ze,"buildSpacePrimitives");function Ye(){let e={};for(let[n,o]of Object.entries(te.borderWidth))e[n]={type:"dimension",value:$(o)};return e}i(Ye,"buildBorderWidthPrimitives");function $o(e,n){return{color:qe(e),space:Ze(n),borderWidth:Ye()}}i($o,"buildPrimitives");var Qe={primary:"color.primary.base",secondary:"color.secondary.base",tertiary:"color.tertiary.base",success:"color.success.base",danger:"color.danger.base",warning:"color.warning.base",info:"color.information.base",canvas:"color.surface.canvas",sunken:"color.surface.sunken",paper:"color.surface.paper",raised:"color.surface.raised",overlay:"color.surface.overlay"},en={onPrimary:"color.baseLight",onSecondary:"color.baseLight",onTertiary:"color.baseDark",onSuccess:"color.baseLight",onDanger:"color.baseLight",onWarning:"color.baseDark",onInfo:"color.baseLight",primary:"color.ink.primary",secondary:"color.ink.secondary",muted:"color.ink.muted",disabled:"color.ink.disabled"},nn={hairline:"color.edge.hairline",border:"color.edge.border",strong:"color.edge.strong"};function Co(e,n){let o=e;for(let t of n.split(".").slice(1))if(o&&typeof o=="object"&&t in o)o=o[t];else return;return typeof o=="string"?o:void 0}i(Co,"lookupPrimitive");function z(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?Co(n,a):void 0;t[r]=a&&c===s?{type:"color",value:{kind:"ref",path:a,resolved:Re(s)}}:I(s)}return t}i(z,"colorRefGroup");var on={xs:"space.xs",sm:"space.small",md:"space.medium",lg:"space.large",xl:"space.xl",xxl:"space.xxl"},Eo={none:"border-width.none",thin:"border-width.thin",regular:"border-width.regular",great:"border-width.great",bold:"border-width.bold"};function Ao(e,n){let o=n.split("."),t=o[0]==="border-width"?"borderWidth":o[0],r=e[t];for(let s of o.slice(1))if(r&&!b(r)&&s in r)r=r[s];else return;return r&&b(r)&&r.value.kind==="dimension"?r.value.raw:void 0}i(Ao,"lookupDimensionPrimitive");function ke(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=o[r],c=a?Ao(n,a):void 0;t[r]=a&&c===s?{type:"dimension",value:{kind:"ref",path:a,resolved:$(s)}}:{type:"dimension",value:$(s)}}return t}i(ke,"dimensionRefGroup");function tn(e){let n={},o={};for(let[s,a]of Object.entries(te.borderRadius))Je.test(a)?n[s]={type:"dimension",value:$(a)}:o[s]=a;let t=ke(te.borderWidth,e,Eo),r={};for(let[s,a]of Object.entries(te.borderStyle))r[s]={type:"strokeStyle",value:{kind:"strokeStyle",raw:a,style:a}};return{group:{radius:n,width:t,style:r},extensions:o}}i(tn,"buildBorder");function rn(e){let n=Io(L,{textSize:e}),o={};for(let[c,l]of Object.entries(L.fontFamily)){let p=l.replace(/;\s*$/,"").trim();o[c]={type:"fontFamily",value:{kind:"fontFamily",raw:p,family:p}}}let t={};for(let[c,l]of Object.entries(n.fontSize))t[c]={type:"dimension",value:$(l)};let r={};for(let[c,l]of Object.entries(L.fontWeight))r[c]={type:"fontWeight",value:{kind:"fontWeight",raw:`${l}`,weight:l}};let s={};for(let[c,l]of Object.entries(L.lineHeight))s[c]={type:"number",value:{kind:"number",raw:`${l}`,number:l}};let a={letterSpacing:L.letterSpacing,textTransform:L.textTransform,fontStyle:L.fontStyle};return{group:{family:o,size:t,weight:r,lineHeight:s},extensions:a}}i(rn,"buildFont");var Mo=/rgba?\([^)]*\)|#[0-9a-fA-F]+|[a-zA-Z]+$/;function Vo(e){let n=e.trim(),o=n.startsWith("inset");o&&(n=n.slice(5).trim());let t=n.match(Mo),r=t?t[0]:"#000000",a=(t?n.slice(0,t.index).trim():n).split(/\s+/).filter(Boolean),c=i(l=>$(a[l]??"0px"),"dim");return{kind:"shadow",raw:e,shadow:{color:Re(r),offsetX:c(0),offsetY:c(1),blur:c(2),spread:c(3),inset:o}}}i(Vo,"parseShadow");function sn(e){let n=Ro(e),o={};for(let t of Object.keys(ko))o[t]={type:"shadow",value:Vo(n(t))};return o}i(sn,"buildShadow");function re(e,n,o){let t={};for(let[r,s]of Object.entries(e)){let a=n?`${n}.${x(r)}`:x(r);if(b(s)){o.add(a);let c=he[a];t[r]=c&&(c.description!==void 0||c.deprecated!==void 0)?{...s,...c.description!==void 0?{description:c.description}:{},...c.deprecated!==void 0?{deprecated:c.deprecated}:{}}:s}else t[r]=re(s,a,o)}return t}i(re,"decorateGroup");function Oo(e){let n=new Set,o=re(e.primitives,"",n),t=re(e.groups,"",n);return be(n),{...e,primitives:o,groups:t}}i(Oo,"decorateMeta");function ie(e,n){return re(e,"",n)}i(ie,"decorateSlice");function an(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${x(t)}`:x(t);b(r)?o.add(s):an(r,s,o)}}i(an,"collectPaths");function cn(e){let n=new Set;for(let o of e)an(o.groups,"",n);be(n)}i(cn,"assertSlicesMetaComplete");function ln(){let e={};for(let[n,o]of Pe())e[n]={type:"dimension",value:$(o)};return e}i(ln,"buildBreakpoints");function un(){let e={};for(let[n,o]of _e())e[n]={type:"dimension",value:$(o)};return e}i(un,"buildContainerSizes");function dn(){let e={};for(let[n,o]of ze())e[n]={type:"dimension",value:$(o)};return e}i(dn,"buildLayoutConstants");function pn(){let e={};for(let[n,o]of Fe())e[n]={type:"number",value:{kind:"number",raw:`${o}`,number:o}};return e}i(pn,"buildZIndex");function fn(){let e=i(a=>({type:"duration",value:{kind:"duration",raw:a.css,value:a.ms,unit:"ms"}}),"durationToken"),n=i(a=>({type:"cubicBezier",value:{kind:"cubicBezier",raw:a.css,points:a.points}}),"easingToken"),o={};for(let[a,c]of Ne())o[a]=e(c);let t={};for(let[a,c]of Be())t[a]=n(c);let r={};for(let[a,c]of He())r[a]=e(c);let s={};for(let[a,c]of Ke()){let l=e(c.duration).value;s[a]={duration:c.durationRef?{type:"duration",value:{kind:"ref",path:`motion.duration.${c.durationRef}`,resolved:l}}:e(c.duration),easing:{type:"cubicBezier",value:{kind:"ref",path:`motion.easing.${c.easingRef}`,resolved:n(c.easing).value}}}}return{duration:o,easing:t,indicator:r,intent:s}}i(fn,"buildMotion");var mn={unit:"px",interval:"half-open [value, next) \u2014 min-width sets, ascending",cssVarsUsage:"informational only \u2014 var() is invalid inside a @media prelude"};function gn(){let e=Ye(),o=tn({borderWidth:e}),t={"com.apollion.breakpoint":mn};Object.keys(o.extensions).length>0&&(t["com.apollion.border"]={radius:o.extensions});let r=new Set;return{groups:ie({"border-width":e,border:o.group,breakpoint:ln(),"container-size":un(),layout:dn(),"z-index":pn(),motion:fn()},r),extensions:t}}i(gn,"buildBaseIR");function Ie(e){let n=rn(e),o=new Set;return{groups:ie({font:n.group},o),extensions:{"com.apollion.font":n.extensions}}}i(Ie,"buildFontIR");function yn(e,n){let o=qe(n),t=new Set;return{groups:ie({color:o,bg:z(e.bg,n,Qe),text:z(e.text,n,en),edge:z(e.edge,n,nn),tx:Xe(n),shadow:sn(n)},t),extensions:{}}}i(yn,"buildColorIR");function hn(e,n){let o=Ze(n),t={space:o},r=new Set;return{groups:ie({space:o,spacing:ke(e.spacing,t,on)},r),extensions:{}}}i(hn,"buildSpacingIR");function Lo(e,n,o){let t={brand:o.brand,mode:o.mode,surface:o.surface,dimension:o.dimension},r=$o(n,o.dimension),s=tn(r),a=rn(xo),c={"com.apollion.variant":t,"com.apollion.font":a.extensions,"com.apollion.breakpoint":mn};Object.keys(s.extensions).length>0&&(c["com.apollion.border"]={radius:s.extensions});let l={description:`Apollion DS tokens \u2014 DTCG 2025.10. Variant: ${t.brand}/${t.mode}/${t.surface}/${t.dimension}.`,meta:t,primitives:r,groups:{bg:z(e.bg,n,Qe),text:z(e.text,n,en),edge:z(e.edge,n,nn),tx:Xe(n),spacing:ke(e.spacing,r,on),border:s.group,breakpoint:ln(),"container-size":un(),layout:dn(),"z-index":pn(),motion:fn(),font:a.group,shadow:sn(n)},extensions:c};return Oo(l)}i(Lo,"buildIR");var F=Lo;var Po=Go("rgb"),bn="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function xe(e){if(e.value.kind==="color")return e.value;if(e.value.kind==="ref"&&e.value.resolved.kind==="color")return e.value.resolved}i(xe,"colorPayload");function Se(e){return e.alpha===void 0}i(Se,"isOpaqueColor");function Rn(e){let n=Po(jo(e.hex));if(!n)return"0 0 0";let o=i(t=>Math.min(255,Math.max(0,Math.round(t*255))),"channel");return`${o(n.r)} ${o(n.g)} ${o(n.b)}`}i(Rn,"rgbTriplet");function B(e,n=[]){let o=new Map;for(let[t,r]of Object.entries(e)){let s=[...n,x(t)];if(b(r))o.set(s.join("-"),r);else for(let[a,c]of B(r,s))o.set(a,c)}return o}i(B,"flatTokens");function y(e,...n){let o=e[n[0]];for(let t of n.slice(1)){if(!o||b(o))return{};o=o[t]}return o&&!b(o)?o:{}}i(y,"groupAt");function kn(e){let n=[];for(let o of["bg","text","edge","tx"])for(let[t,r]of B(y(e.groups,o),[o])){let s=xe(r);s&&n.push({key:t,cssVar:`--apollion-${t}`,opaque:Se(s)})}return n}i(kn,"colorEntries");function C(e,n){return[...B(e)].map(([o])=>[o,`var(--apollion-${[...n,o].join("-")})`])}i(C,"varEntries");function T(e,n,o){if(o.length!==0){e.push(` ${n}: {`);for(let[t,r]of o)e.push(` ${JSON.stringify(t)}: ${JSON.stringify(r)},`);e.push(" },")}}i(T,"pushScale");function In(e){let n=[bn,"// Tailwind preset over the Apollion foundation tokens \u2014 requires dist/css/ vars in scope.","","const preset = {"," theme: {"," extend: {"],o=kn(e);n.push(" colors: {");for(let{key:t,cssVar:r,opaque:s}of o)s?n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`rgb(var(${r}-rgb) / <alpha-value>)`)},`):(n.push(` // ${t} carries its own alpha \u2014 excluded from the <alpha-value> modifier form.`),n.push(` ${JSON.stringify(t)}: ${JSON.stringify(`var(${r})`)},`));return n.push(" },"),T(n,"screens",[...B(y(e.groups,"breakpoint"))].filter(([t])=>t!=="xs").map(([t,r])=>[t,E(r.value)])),T(n,"spacing",C(y(e.groups,"spacing"),["spacing"])),T(n,"borderRadius",C(y(e.groups,"border","radius"),["border","radius"])),T(n,"borderWidth",C(y(e.groups,"border","width"),["border","width"])),T(n,"fontFamily",C(y(e.groups,"font","family"),["font","family"])),T(n,"fontSize",C(y(e.groups,"font","size"),["font","size"])),T(n,"fontWeight",C(y(e.groups,"font","weight"),["font","weight"])),T(n,"lineHeight",C(y(e.groups,"font","lineHeight"),["font","line-height"])),T(n,"boxShadow",C(y(e.groups,"shadow"),["shadow"])),T(n,"transitionDuration",C(y(e.groups,"motion","duration"),["motion","duration"])),T(n,"transitionTimingFunction",C(y(e.groups,"motion","easing"),["motion","easing"])),n.push(" },"," },","};","","export default preset;",""),n.join(`
|
|
3
3
|
`)}i(In,"renderTailwindPreset");function xn(e){let n=i(r=>[...B(r).keys()],"keys"),o=i(r=>`[${r.map(s=>JSON.stringify(s)).join(", ")}]`,"list");return[bn,"// tailwind-merge extension for the generated preset \u2014 pass to extendTailwindMerge().","","export const twMergeExtension = {"," extend: {"," theme: {",` colors: ${o(kn(e).map(r=>r.key))},`,` spacing: ${o(n(y(e.groups,"spacing")))},`,` borderRadius: ${o(n(y(e.groups,"border","radius")))},`,` borderWidth: ${o(n(y(e.groups,"border","width")))},`," },"," classGroups: {",` 'font-family': [{ font: ${o(n(y(e.groups,"font","family")))} }],`,` 'font-size': [{ text: ${o(n(y(e.groups,"font","size")))} }],`,` 'font-weight': [{ font: ${o(n(y(e.groups,"font","weight")))} }],`,` leading: [{ leading: ${o(n(y(e.groups,"font","lineHeight")))} }],`,` shadow: [{ shadow: ${o(n(y(e.groups,"shadow")))} }],`," },"," },","};",""].join(`
|
|
4
4
|
`)}i(xn,"renderTwMergeExtension");var ve="/* Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. */";function H(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,x(t)];b(r)?o.push(` --apollion-${s.join("-")}: ${E(r.value)};`):H(r,s,o)}}i(H,"emitVars");function se(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,x(t)];if(!b(r)){se(r,s,o);continue}let a=xe(r);a&&Se(a)&&o.push(` --apollion-${s.join("-")}-rgb: ${Rn(a)};`)}}i(se,"emitRgbVars");function we(e,n,o){for(let[t,r]of Object.entries(e)){let s=[...n,x(t)];b(r)?r.type==="color"&&o.push(` @property --apollion-${s.join("-")} { syntax: '<color>'; inherits: true; initial-value: ${E(r.value)}; }`):we(r,s,o)}}i(we,"emitProperties");function Sn(e,n={}){let{brand:o,mode:t,surface:r,dimension:s}=e.meta,a=[ve,""];return a.push(`/* Variant: brand=${o} mode=${t} surface=${r} dimension=${s} */`,"",":root {"),H(e.groups,[],a),n.rgbCompanions&&(a.push(""," /* -rgb channel triplets \u2014 Tailwind <alpha-value> companions (opaque colour tokens only). */"),se(e.groups,[],a)),a.push("}",""),a.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),we(e.groups,[],a),a.push("}",""),a.join(`
|
|
5
5
|
`)}i(Sn,"renderCss");function vn(e,n,o={}){let{attribute:t="data-apollion-mode",rgbCompanions:r}=o,{brand:s,surface:a,dimension:c}=e.meta,l=[ve,""],p=i((v,u,d)=>{l.push(`${v} {`,` color-scheme: ${d};`),H(u.groups,[],l),r&&se(u.groups,[],l),l.push("}","")},"block");l.push(`/* Variant: brand=${s} surface=${a} dimension=${c} modes=light+dark (attribute ${t}) */`,""),p(`:root, html[${t}="light"]`,e,"light"),p(`html[${t}="dark"]`,n,"dark"),l.push("@media (prefers-color-scheme: dark) {"),l.push(` html:not([${t}]) {`," color-scheme: dark;");let R=[];H(n.groups,[],R),r&&se(n.groups,[],R);for(let v of R)l.push(` ${v}`);return l.push(" }","}",""),l.push("@supports (background: paint(squircle)) or (color: oklch(0% 0 0)) {"),we(e.groups,[],l),l.push("}",""),l.join(`
|
|
6
|
-
`)}i(vn,"renderCssModes");function wn(e,n={}){let{attribute:o=
|
|
6
|
+
`)}i(vn,"renderCssModes");function wn(e,n={}){let{attribute:o=zo,defaultLevel:t=_o}=n,r=[ve,""];r.push(`/* Text size (ADR-030): levels=${e.map(([c])=>c).join("+")} default=${t} (attribute ${o}) */`,"");let s=i((c,l)=>{r.push(`${c} {`);let p=l.groups.font;H(p.size,["font","size"],r),r.push("}","")},"block"),a=e.find(([c])=>c===t);a&&s(":root",a[1]);for(let[c,l]of e)s(`:root[${o}="${c}"],
|
|
7
7
|
[${o}="${c}"]`,l);return r.join(`
|
|
8
|
-
`)}i(wn,"renderCssTextSize");var
|
|
8
|
+
`)}i(wn,"renderCssTextSize");var Fo="<!-- Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs. -->";function Te(e,n,o){for(let[t,r]of Object.entries(e)){let s=n?`${n}.${t}`:t;b(r)?o.push([s,E(r.value)]):Te(r,s,o)}}i(Te,"flatten");function No(e){return typeof e=="number"?String(e):`'${String(e).replace(/'/g,"''")}'`}i(No,"yamlEscape");function Bo(e){let{mode:n,surface:o,dimension:t}=e.meta;return`${n}.${o}.${t}`}i(Bo,"variantKey");function Tn(e,n){if(n.length===0)throw new Error(`renderDesignMd: no variants for brand "${e}"`);let o=["---",`brand: '${e}'`,"generator: apollion-tokens","variants:"];for(let r of n){let s=[];Te(r.groups,"",s),o.push(` ${Bo(r)}:`);for(let[a,c]of s)o.push(` ${a}: ${No(c)}`)}o.push("---");let t=["",Fo,"",`# Design.md \u2014 ${e}`,"","Resolved design-token values for this brand, one section per variant.","Consumption rules (which token to reach for, layer boundaries) live in the","package `llms.txt`; this file carries the values those rules reference.","Regenerate with `apollion-tokens build` \u2014 never edit.",""];for(let r of n){let{mode:s,surface:a,dimension:c}=r.meta;t.push(`## Variant \`${s} \xB7 ${a} \xB7 ${c}\``,"");let l=[];Te(r.groups,"",l);let p=new Map;for(let[R,v]of l){let u=R.split(".")[0]??R,d=p.get(u)??[];d.push([R,v]),p.set(u,d)}for(let[R,v]of p){t.push(`### ${R}`,"","| Token | Value |","| --- | --- |");for(let[u,d]of v)t.push(`| \`${u}\` | \`${d}\` |`);t.push("")}}return`${o.join(`
|
|
9
9
|
`)}
|
|
10
10
|
${t.join(`
|
|
11
|
-
`)}`}i(Tn,"renderDesignMd");import{DEFAULT_TEXT_SIZE as
|
|
12
|
-
`}i(W,"renderSet");function $n(e){return W(e,"Apollion DS \u2014 base set (axis-invariant: border, breakpoints, container sizes, layout, motion). DTCG 2025.10.")}i($n,"renderBaseSet");function Cn(e,n,o,t){return W(e,`Apollion DS \u2014 colour set. brand=${n} mode=${o} surface=${t}. DTCG 2025.10.`)}i(Cn,"renderColorSet");function En(e,n){return W(e,`Apollion DS \u2014 spacing set. dimension=${n}. DTCG 2025.10.`)}i(En,"renderSpacingSet");function An(e,n){return n.deprecatedDimension?W(e,`Apollion DS \u2014 font set. DEPRECATED alias of font.${n.textSize} (dimension=${n.deprecatedDimension} no longer scales type, ADR-030; removed at the next major). DTCG 2025.10.`,`Alias of font.${n.textSize} \u2014 dimension no longer scales type (ADR-030). Use font.<textSize>.`):W(e,`Apollion DS \u2014 font set. textSize=${n.textSize}. DTCG 2025.10.`)}i(An,"renderFontSet");function Mn(e,n){let{modifiers:o}=n,t=[{name:"brand",values:[...o.brand],default:o.brand[0]},{name:"mode",values:[...o.mode],default:o.mode[0]},{name:"surface",values:[...o.surface],default:o.surface[0]},{name:"dimension",values:[...o.dimension],default:o.dimension[0]},{name:"textSize",values:[...o.textSize],default:
|
|
13
|
-
`}i(Mn,"renderResolver");var
|
|
14
|
-
`)}i(On,"renderTs");var
|
|
15
|
-
`}i(Pn,"serializeManifest");import{DEFAULT_TEXT_SIZE as ot}from"@apollion-dsi/core/themes/text-size";var tt="json/sets",_n="json/resolver.json";function U(e){return`${tt}/${e}.json`}i(U,"setFile");function rt(e,n,o){return`${e}.color.${n}.${o}`}i(rt,"colorSetName");function it(e){return`spacing.${e}`}i(it,"spacingSetName");function st(e){return`font.${e}`}i(st,"fontSetName");function at(e){return`font.${e}`}i(at,"legacyFontSetName");function ue(e,n){e.includes(n)||e.push(n)}i(ue,"pushUnique");function zn(e){let n=ce(e),o=[],t=[],r=[],s=[],a=new Set,c=[],l=new Set,p=[],R=[...ae(e)],v=R.map(u=>{let d=st(u);return{kind:"font",name:d,file:U(d),textSize:u}});for(let u of n){ue(o,u.brand),ue(t,u.mode),ue(r,u.surface),ue(s,u.dimension);let d=rt(u.brand,u.mode,u.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:U(d),brand:u.brand,mode:u.mode,surface:u.surface}));let h=it(u.dimension);l.has(h)||(l.add(h),p.push({kind:"spacing",name:h,file:U(h),dimension:u.dimension}))}for(let u of s){let d=at(u);v.push({kind:"font",name:d,file:U(d),textSize:ot,deprecatedDimension:u})}return{base:{kind:"base",name:"base",file:U("base")},spacing:p,font:v,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:R}}}i(zn,"planSets");import{toDarkColors as St}from"@apollion-dsi/core/themes/colors";import{createFoundation as Qn}from"@apollion-dsi/core/themes/foundation";import{createSemantic as vt}from"@apollion-dsi/core/themes/semantic";import{defaultInputSpacing as wt}from"@apollion-dsi/core/themes/spacing";import{invertForSurface as Tt}from"@apollion-dsi/core/themes/surface";import{converter as Kn,formatHex as j,interpolate as ct,parse as S,wcagContrast as Wn}from"culori";var q=Kn("oklch"),lt=Kn("rgb");function f(e,n,o){let t=S(e),r=S(n);if(!t||!r)return e;let s=ct([t,r],"oklch");return j(s(o))??e}i(f,"mixOklch");function ut(e){return e?typeof e=="string"?e:e.base:"#000"}i(ut,"coerceToHex");var de=1.3,dt=.05,Fn=.04,V=i((e,n)=>{let o=S(e),t=S(n);return!o||!t?1:Wn(o,t)},"contrastRatio"),J=i(e=>{let n=q(S(e));return n?n.l??0:null},"oklchLightness"),pt=4.5;function X(e,n,o=pt){let t=S(n),r=q(S(e));if(!t||!r)return e;let s=V("#fff",n)>=V("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=j(r)??e,l=S(c);if(l&&Wn(l,t)>=o)return c;let p=Math.min(1,Math.max(0,(r.l??0)+s));if(p===(r.l??0))break;r={...r,l:p}}return j(r)??e}i(X,"readableColor");var Nn=i((e,n)=>{if(V(e,n)>=de)return!0;let o=J(e),t=J(n);return o!==null&&t!==null&&Math.abs(o-t)>=dt},"isPerceptibleState"),Ee=i(e=>e?V("#fff",e)>V("#000",e):!1,"isDarkSurface");function Bn(e,n,o){let t=q(S(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?Fn:-Fn;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let l=j(r);if(l&&V(e,l)>=de)return l}return j(r)??null}i(Bn,"derivePerceptibleState");function Hn(e,n,o){let t=Bn(e,n,o);if(t&&V(e,t)>=de)return t;let r=Bn(e,!n);return r&&V(e,r)>=de?r:t??r}i(Hn,"perceptibleStateFor");function D(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=ut(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:f(t,r,.6),action:f(t,r,.2),active:f(t,s,.6),light:f(t,s,.9),onLight:t};if(S(t)){let c=Ee(n.baseLight),l=Nn(t,a.action);if(l||(a.action=Hn(t,c)??a.action),!Nn(t,a.active)){let p=l?void 0:J(a.action)??void 0;a.active=Hn(t,c,p)??a.active}}if(a.onLight=X(a.action,a.light),o){let c=o.action??a.action,l=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:l,onLight:o.onLight??X(c,l)}}return a}i(D,"mountSingleColor");function Un(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:f(n,o,.05),10:f(n,o,.1),20:f(n,o,.2),30:f(n,o,.3),40:f(n,o,.4),50:f(n,o,.5),60:f(n,o,.6),70:f(n,o,.7),80:f(n,o,.8),90:f(n,o,.9),100:f(n,o,1)}}i(Un,"mountGreyscaleColors");function Jn(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=f(t,o,.5);return{0:f(s,n,r(18)),5:f(s,n,r(17.5)),10:f(s,n,r(17)),20:f(s,n,r(16)),30:f(s,n,r(15)),40:f(s,n,r(14)),50:f(s,n,r(13)),60:f(s,n,r(12)),70:f(s,n,r(11)),80:f(s,n,r(10)),90:f(s,n,r(9)),100:f(s,n,r(8)),110:f(s,n,r(7)),120:f(s,n,r(6)),130:f(s,n,r(5)),140:f(s,n,r(4)),150:f(s,n,r(3)),160:f(s,n,r(2)),170:s,180:f(s,o,.25)}}i(Jn,"mountNeutralColors");function N(e,n){let o=q(S(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return j({...o,l:t})??e}i(N,"shiftLightness");function pe(e,n){let o=q(S(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:j({...o,l:Math.min(s,Math.max(r,t))})??e}i(pe,"clampLightness");function P(e,n){let o=lt(S(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(P,"toRgbaString");import{apcaContrast as fe,DARK_BOOST_TAPER_MAX_L as Ae,DARK_ELEVATION_BOOST as ft,EDGE_ALPHA as Me,HALATION_FLOORS as me,INK_APCA_MIN as Ve,INK_MIX as Oe,LADDER_DELTAS as Xn,MIN_CONTRAST_AA as qn,WASH_ALPHA as mt}from"@apollion-dsi/core/themes/colors";var gt="#FFFFFF",Le="#000000";function yt(e){return Ee(e.baseLight)?"dark":"light"}i(yt,"resolvePolarity");function ht(e){let n=me.CANVAS_MIN_L;return e<=n?1:e>=Ae?0:(Ae-e)/(Ae-n)}i(ht,"darkElevationBoostFactor");function Zn(e,n,o){if(Math.abs(fe(e,n))>=o)return e;let t=Math.abs(fe("#ffffff",n))>=Math.abs(fe("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=N(r,t?.02:-.02);if(a===r||(r=a,Math.abs(fe(r,n))>=o))break}return r}i(Zn,"ensureApca");function bt(e,n){let o=e.baseLight??gt,t=n==="dark",r=t?pe(o,{min:me.CANVAS_MIN_L}):o,s=N(r,Xn.sunken),a=t?ht(J(r)??0):0,c=i(l=>Xn[l]+a*ft[l],"delta");return{canvas:r,sunken:t?pe(s,{min:me.CANVAS_MIN_L}):s,paper:N(r,c("paper")),raised:N(r,c("raised")),overlay:N(r,c("overlay")),scrim:t?e.deepLight??Le:e.neutral?.["180"]??e.baseDark??Le}}i(bt,"deriveSurface");function Rt(e,n){let o=e.baseDark??Le,t=pe(Zn(X(o,n.paper,qn),n.paper,Ve.primary),{max:me.INK_MAX_L}),r=i((s,a)=>Zn(X(f(t,n.canvas,s),n.paper,qn),n.paper,a),"tier");return{primary:t,secondary:r(Oe.secondary,Ve.secondary),muted:r(Oe.muted,Ve.muted),disabled:f(t,n.canvas,Oe.disabled)}}i(Rt,"deriveInk");function kt(e){return{hairline:P(e.primary,Me.hairline),border:P(e.primary,Me.border),strong:P(e.primary,Me.strong)}}i(kt,"deriveEdge");function It(e,n){let o=mt[n];return{hover:P(e.primary,o.hover),pressed:P(e.primary,o.pressed),selected:P(e.primary,o.selected)}}i(It,"deriveWash");function xt(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(xt,"applyOverride");function Yn(e,n){let o=yt(e),t=bt(e,o),r=Rt(e,t),s={surface:t,ink:r,edge:kt(r),wash:It(r,o)};return xt(s,n?.[o])}i(Yn,"resolveSurfaceLadder");function Dt(e){let n=Jn(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Un(e),...Yn({...e,neutral:n},e.ladder),main:D(e.main,e),opposite:D(e.opposite,e),complementary:D(e.complementary,e),danger:D(e.danger,e),information:D(e.information,e),success:D(e.success,e),warning:D(e.warning,e),primary:D(e.primary,e),secondary:D(e.secondary,e),tertiary:D(e.tertiary,e)}}i(Dt,"composeColors");function O(e,n=wt){let o=e.mode==="dark"?St(e.colors):e.colors,t=Dt(o),r=ne(n,e.dimension),s=vt({colors:t,spacing:r}),a=Qn(s);return e.surface==="negative"&&(a=Qn(Tt({semantic:s,colors:t},"negative").semantic)),{foundation:a,colors:t}}i(O,"buildVariantThemes");async function io(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=ce(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await $t(Z(Et(),"apollion-tokens-"));try{let l=[],p=i(async(u,d)=>{await At(c,u,d),l.push({path:u,sha256:le(d)}),r&&console.log(` \u2713 ${u}`)},"emit");if(a.json){let u=zn(n),d=[],h=gn();d.push(h),await p(u.base.file,$n(h));for(let m of u.spacing){let k=s.find(Y=>Y.dimension===m.dimension),{foundation:A}=O(k),M=hn(A,m.dimension);d.push(M),await p(m.file,En(M,m.dimension))}for(let m of u.font){let k=Ie(m.textSize);d.push(k),await p(m.file,An(k,m))}for(let m of u.color){let k=s.find(ye=>ye.brand===m.brand&&ye.mode===m.mode&&ye.surface===m.surface),{foundation:A,colors:M}=O(k),Y=yn(A,M);d.push(Y),await p(m.file,Cn(Y,m.brand,m.mode,m.surface))}cn(d),await p(_n,Mn(n,u))}if(a.css||a.ts)for(let u of s){let{foundation:d,colors:h}=O(u),m=F(d,h,u),k=Ln(u);a.css&&await p(`css/${k}.css`,Sn(m,{rgbCompanions:a.tailwind})),a.ts&&await p(`ts/${k}.d.ts`,On(m))}if(a.css||a.cssModes){let u=ae(n).map(d=>[d,Ie(d)]);await p("css/font.css",wn(u))}if(a.cssModes){let u=new Map;for(let d of s){let h=`${d.brand}.${d.surface}.${d.dimension}`,m=u.get(h)??{};m[d.mode]=d,u.set(h,m)}for(let[d,{light:h,dark:m}]of u){if(!h||!m)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let k=O(h),A=O(m),M=vn(F(k.foundation,k.colors,h),F(A.foundation,A.colors,m),{rgbCompanions:a.tailwind});await p(`css/${d}.modes.css`,M)}}if(a.tailwind){let u=s[0],{foundation:d,colors:h}=O(u),m=F(d,h,u);await p("tailwind/preset.mjs",In(m)),await p("tailwind/tw-merge.mjs",xn(m))}if(a.designMd){let u=[...new Set(s.map(d=>d.brand))];for(let d of u){let m=s.filter(k=>k.brand===d).map(k=>{let{foundation:A,colors:M}=O(k);return F(A,M,k)});await p(`design/${d}.design.md`,Tn(d,m))}}let R={configHash:Ce(n),files:l,gitCommit:Gn(t),buildEnv:jn()},v=Pn(R);return await to(Z(c,"manifest.json"),v),await no(o,{recursive:!0,force:!0}),await oo(ro(o),{recursive:!0}),await Ct(c,o),r&&console.log(`\u2713 ${l.length} files \u2192 ${o}`),{manifest:R,outDir:o}}catch(l){throw await no(c,{recursive:!0,force:!0}).catch(()=>{}),l}}i(io,"build");async function so(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await eo(Z(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==Ce(n))return!1;for(let r of t.files){let s;try{s=await eo(Z(o,r.path))}catch{return!1}if(le(s)!==r.sha256)return!1}return!0}i(so,"check");async function At(e,n,o){let t=Z(e,n);await oo(ro(t),{recursive:!0}),await to(t,o)}i(At,"writeAt");import{readFile as Vt}from"node:fs/promises";import{resolve as Ot}from"node:path";import{createContext as Lt,Script as Gt}from"node:vm";import{z as g}from"zod";var w=g.string().regex(/^#([0-9a-fA-F]{3}){1,2}$|^transparent$|^rgb\(.*\)$|^oklch\(.*\)$/,{message:'Must be hex, rgb(), oklch(), or "transparent"'}),Mt=g.object({baseDark:g.string().optional(),baseLight:g.string().optional(),deepDark:w,deepLight:w,transparent:g.string().optional(),main:w.optional(),opposite:w.optional(),complementary:w.optional(),information:w.optional(),success:w.optional(),danger:w.optional(),warning:w.optional(),primary:w.optional(),secondary:w.optional(),tertiary:w.optional()}).passthrough(),ao=g.object({brands:g.record(g.string(),Mt).refine(e=>Object.keys(e).length>0,{message:"apollion.config.mjs: brands must contain at least 1 entry"}),modes:g.array(g.enum(["light","dark"])).optional(),surfaces:g.array(g.enum(["positive","negative"])).optional(),dimensions:g.array(g.enum(["compact","normal","spacious"])).optional(),textSizes:g.array(g.enum(["smaller","default","larger","largest"])).refine(e=>e.includes("default"),{message:"apollion.config.mjs: textSizes must include 'default'"}).refine(e=>new Set(e).size===e.length,{message:"apollion.config.mjs: textSizes must not repeat a level"}).optional(),output:g.object({runtime:g.boolean().optional(),css:g.boolean().optional(),json:g.boolean().optional(),ts:g.boolean().optional(),designMd:g.boolean().optional(),tailwind:g.boolean().optional(),cssModes:g.boolean().optional()}).passthrough().optional()}).passthrough();var jt=[/\brequire\s*\(/,/\bimport\s*\(/,/^\s*import\s+/m],Pt=1e3;var Ge=class Ge extends Error{constructor(o,t){super(o);this.configPath=t;this.name="ConfigLoadError"}};i(Ge,"ConfigLoadError");var _=Ge;async function co(e){let n=Ot(e.configPath),o=await Vt(n,"utf8");for(let l of jt)if(l.test(o))throw new _(`apollion.config: dynamic require/import not allowed (matched ${l}). Declarative config only \u2014 see ADR-006 \xA73.8 B3.`,n);let t=o.replace(/(^|\n)\s*export\s+default\s+/,(l,p)=>`${p}__apollion_config_export = `);if(t===o)throw new _("apollion.config: missing `export default <object>;` \u2014 config must export a default object literal.",n);let r={__apollion_config_export:void 0,console:_t(),Symbol,Number,String,Boolean,Array,Object,JSON,Math,defineConfig:i(l=>l,"defineConfig")},s=Lt(r);try{new Gt(t,{filename:n}).runInContext(s,{timeout:Pt})}catch(l){throw new _(`apollion.config: evaluation failed \u2014 ${l instanceof Error?l.message:String(l)}`,n)}let a=r.__apollion_config_export;if(a===void 0)throw new _("apollion.config: `export default` produced undefined.",n);let c=ao.safeParse(a);if(!c.success){let l=c.error.issues.map(p=>` ${p.path.join(".")||"(root)"}: ${p.message}`).join(`
|
|
11
|
+
`)}`}i(Tn,"renderDesignMd");import{DEFAULT_TEXT_SIZE as Xo}from"@apollion-dsi/core/themes/text-size";function Dn(e){return e.alpha!==void 0?{colorSpace:"oklch",components:[...e.components],alpha:e.alpha,hex:e.hex}:{colorSpace:"oklch",components:[...e.components],hex:e.hex}}i(Dn,"colorValue");function K(e){return{value:e.value,unit:e.unit}}i(K,"dimensionValue");function Ho(e){return{value:e.value,unit:e.unit}}i(Ho,"durationValue");function Ko(e){return[...e.points]}i(Ko,"cubicBezierValue");function Wo(e){let n=e.shadow,o={color:Dn(n.color),offsetX:K(n.offsetX),offsetY:K(n.offsetY),blur:K(n.blur),spread:K(n.spread)};return n.inset&&(o.inset=!0),o}i(Wo,"shadowValue");function Uo(e){switch(e.kind){case"ref":return`{${Ue(e.path)}}`;case"color":return Dn(e);case"dimension":return K(e);case"fontFamily":return e.family;case"fontWeight":return e.weight;case"number":return e.number;case"strokeStyle":return e.style;case"shadow":return Wo(e);case"duration":return Ho(e);case"cubicBezier":return Ko(e)}}i(Uo,"projectValue");function Jo(e){let n={$value:Uo(e.value),$type:e.type};return e.description!==void 0&&(n.$description=e.description),e.deprecated!==void 0&&(n.$deprecated=e.deprecated),n}i(Jo,"projectToken");function De(e){let n={};for(let[o,t]of Object.entries(e))n[x(o)]=b(t)?Jo(t):De(t);return n}i(De,"projectGroup");function W(e,n,o){let t=De(e.groups);if(o)for(let s of Object.keys(t))t[s]={$deprecated:o,...t[s]};let r={$description:n,...t};return Object.keys(e.extensions).length>0&&(r.$extensions=e.extensions),`${JSON.stringify(r,null,2)}
|
|
12
|
+
`}i(W,"renderSet");function $n(e){return W(e,"Apollion DS \u2014 base set (axis-invariant: border, breakpoints, container sizes, layout, motion). DTCG 2025.10.")}i($n,"renderBaseSet");function Cn(e,n,o,t){return W(e,`Apollion DS \u2014 colour set. brand=${n} mode=${o} surface=${t}. DTCG 2025.10.`)}i(Cn,"renderColorSet");function En(e,n){return W(e,`Apollion DS \u2014 spacing set. dimension=${n}. DTCG 2025.10.`)}i(En,"renderSpacingSet");function An(e,n){return n.deprecatedDimension?W(e,`Apollion DS \u2014 font set. DEPRECATED alias of font.${n.textSize} (dimension=${n.deprecatedDimension} no longer scales type, ADR-030; removed at the next major). DTCG 2025.10.`,`Alias of font.${n.textSize} \u2014 dimension no longer scales type (ADR-030). Use font.<textSize>.`):W(e,`Apollion DS \u2014 font set. textSize=${n.textSize}. DTCG 2025.10.`)}i(An,"renderFontSet");function Mn(e,n){let{modifiers:o}=n,t=[{name:"brand",values:[...o.brand],default:o.brand[0]},{name:"mode",values:[...o.mode],default:o.mode[0]},{name:"surface",values:[...o.surface],default:o.surface[0]},{name:"dimension",values:[...o.dimension],default:o.dimension[0]},{name:"textSize",values:[...o.textSize],default:Xo}],r=n.font.filter(c=>c.deprecatedDimension),a={name:"apollion-tokens",description:"Apollion DS token resolver \u2014 DTCG 2025.10. Compose the base set with the colour set for the chosen brand/mode/surface, the spacing set for the chosen dimension and the font set for the chosen textSize. NOTE: mode is a topology placeholder in this release (dark resolves identically to light until S6).",sets:[{name:n.base.name,source:n.base.file},...n.spacing.map(c=>({name:c.name,source:c.file})),...n.font.map(c=>({name:c.name,source:c.file})),...n.color.map(c=>({name:c.name,source:c.file}))],modifiers:t,$extensions:{"com.apollion.resolver":{composition:{always:[n.base.name],byModifier:{color:"${brand}.color.${mode}.${surface}",spacing:"spacing.${dimension}",font:"font.${textSize}"}},deprecatedSets:Object.fromEntries(r.map(c=>[c.name,`font.${c.textSize}`])),modeIsPlaceholder:!0}}};return`${JSON.stringify(a,null,2)}
|
|
13
|
+
`}i(Mn,"renderResolver");var qo="// Generated by apollion-tokens build \u2014 DO NOT EDIT. See apollion.config.mjs.";function Zo(e,n,o){let t=[];if(e.description!==void 0&&t.push(e.description),e.deprecated===!0?t.push("@deprecated"):typeof e.deprecated=="string"&&t.push(`@deprecated ${e.deprecated}`),t.length!==0){o.push(`${n}/**`);for(let r of t)o.push(`${n} * ${r.replace(/\*\//g,"*\\/")}`);o.push(`${n} */`)}}i(Zo,"emitDoc");function Vn(e,n,o){let t=" ".repeat(n);for(let[r,s]of Object.entries(e))b(s)?(Zo(s,t,o),o.push(`${t}${JSON.stringify(r)}: ${JSON.stringify(E(s.value))},`)):(o.push(`${t}${r}: {`),Vn(s,n+1,o),o.push(`${t}},`))}i(Vn,"emitGroup");function On(e){let{brand:n,mode:o,surface:t,dimension:r}=e.meta,s=[qo,`// Variant: brand=${n} mode=${o} surface=${t} dimension=${r}`,"","export const tokens = {"];return Vn(e.groups,1,s),s.push("} as const;","","export type Tokens = typeof tokens;",""),s.join(`
|
|
14
|
+
`)}i(On,"renderTs");var Yo=["light","dark"],Qo=["positive","negative"],et=["compact","normal","spacious"],nt=["smaller","default","larger","largest"];function ae(e){let n=[...new Set(e.textSizes??nt)];if(!n.includes("default"))throw new Error(`apollion-tokens: textSizes must include 'default' (got [${n.join(", ")}])`);return n}i(ae,"resolveTextSizes");function ce(e){let n=e.modes??Yo,o=e.surfaces??Qo,t=e.dimensions??et,r=Object.entries(e.brands).sort(([a],[c])=>a.localeCompare(c)),s=[];for(let[a,c]of r)for(let l of n)for(let p of o)for(let R of t)s.push({brand:a,colors:c,mode:l,surface:p,dimension:R});return s}i(ce,"expandVariants");function Ln(e){return`${e.brand}.${e.mode}.${e.surface}.${e.dimension}`}i(Ln,"variantName");import{createHash as ot}from"node:crypto";function le(e){return ot("sha256").update(e).digest("hex")}i(le,"sha256");function Ce(e){return le($e(e))}i(Ce,"hashConfig");function $e(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map($e).join(",")}]`:`{${Object.keys(e).sort().map(t=>`${JSON.stringify(t)}:${$e(e[t])}`).join(",")}}`}i($e,"stableStringify");function Gn(e){try{let{execSync:n}=po("node:child_process");return n("git rev-parse --short HEAD",{cwd:e,stdio:["ignore","pipe","ignore"],encoding:"utf8"}).trim()}catch{return""}}i(Gn,"detectGitCommit");function jn(){return{node:process.version,platform:`${process.platform}-${process.arch}`}}i(jn,"buildEnv");function Pn(e){let n=[...e.files].sort((t,r)=>t.path.localeCompare(r.path)),o={configHash:e.configHash,files:n,gitCommit:e.gitCommit,buildEnv:e.buildEnv};return`${JSON.stringify(o,null,2)}
|
|
15
|
+
`}i(Pn,"serializeManifest");import{DEFAULT_TEXT_SIZE as tt}from"@apollion-dsi/core/themes/text-size";var rt="json/sets",_n="json/resolver.json";function U(e){return`${rt}/${e}.json`}i(U,"setFile");function it(e,n,o){return`${e}.color.${n}.${o}`}i(it,"colorSetName");function st(e){return`spacing.${e}`}i(st,"spacingSetName");function at(e){return`font.${e}`}i(at,"fontSetName");function ct(e){return`font.${e}`}i(ct,"legacyFontSetName");function ue(e,n){e.includes(n)||e.push(n)}i(ue,"pushUnique");function zn(e){let n=ce(e),o=[],t=[],r=[],s=[],a=new Set,c=[],l=new Set,p=[],R=[...ae(e)],v=R.map(u=>{let d=at(u);return{kind:"font",name:d,file:U(d),textSize:u}});for(let u of n){ue(o,u.brand),ue(t,u.mode),ue(r,u.surface),ue(s,u.dimension);let d=it(u.brand,u.mode,u.surface);a.has(d)||(a.add(d),c.push({kind:"color",name:d,file:U(d),brand:u.brand,mode:u.mode,surface:u.surface}));let h=st(u.dimension);l.has(h)||(l.add(h),p.push({kind:"spacing",name:h,file:U(h),dimension:u.dimension}))}for(let u of s){let d=ct(u);v.push({kind:"font",name:d,file:U(d),textSize:tt,deprecatedDimension:u})}return{base:{kind:"base",name:"base",file:U("base")},spacing:p,font:v,color:c,modifiers:{brand:o,mode:t,surface:r,dimension:s,textSize:R}}}i(zn,"planSets");import{defaultInputColors as Qn,toDarkColors as vt}from"@apollion-dsi/core/themes/colors";import{createFoundation as eo}from"@apollion-dsi/core/themes/foundation";import{createSemantic as wt}from"@apollion-dsi/core/themes/semantic";import{defaultInputSpacing as Tt}from"@apollion-dsi/core/themes/spacing";import{invertForSurface as Dt}from"@apollion-dsi/core/themes/surface";import{converter as Kn,formatHex as j,interpolate as lt,parse as S,wcagContrast as Wn}from"culori";var q=Kn("oklch"),ut=Kn("rgb");function f(e,n,o){let t=S(e),r=S(n);if(!t||!r)return e;let s=lt([t,r],"oklch");return j(s(o))??e}i(f,"mixOklch");function dt(e){return e?typeof e=="string"?e:e.base:"#000"}i(dt,"coerceToHex");var de=1.3,pt=.05,Fn=.04,V=i((e,n)=>{let o=S(e),t=S(n);return!o||!t?1:Wn(o,t)},"contrastRatio"),J=i(e=>{let n=q(S(e));return n?n.l??0:null},"oklchLightness"),ft=4.5;function X(e,n,o=ft){let t=S(n),r=q(S(e));if(!t||!r)return e;let s=V("#fff",n)>=V("#000",n)?.04:-.04;for(let a=0;a<25;a+=1){let c=j(r)??e,l=S(c);if(l&&Wn(l,t)>=o)return c;let p=Math.min(1,Math.max(0,(r.l??0)+s));if(p===(r.l??0))break;r={...r,l:p}}return j(r)??e}i(X,"readableColor");var Nn=i((e,n)=>{if(V(e,n)>=de)return!0;let o=J(e),t=J(n);return o!==null&&t!==null&&Math.abs(o-t)>=pt},"isPerceptibleState"),Ee=i(e=>e?V("#fff",e)>V("#000",e):!1,"isDarkSurface");function Bn(e,n,o){let t=q(S(e));if(!t)return null;let r={...t,l:o??t.l??0},s=n?Fn:-Fn;for(let a=0;a<25;a+=1){let c=Math.min(1,Math.max(0,(r.l??0)+s));if(c===(r.l??0))break;r={...r,l:c};let l=j(r);if(l&&V(e,l)>=de)return l}return j(r)??null}i(Bn,"derivePerceptibleState");function Hn(e,n,o){let t=Bn(e,n,o);if(t&&V(e,t)>=de)return t;let r=Bn(e,!n);return r&&V(e,r)>=de?r:t??r}i(Hn,"perceptibleStateFor");function D(e,n){let o=typeof e=="object"&&e!==null?e:void 0,t=dt(e),r=n.deepDark,s=n.deepLight,a={base:t,dark:f(t,r,.6),action:f(t,r,.2),active:f(t,s,.6),light:f(t,s,.9),onLight:t};if(S(t)){let c=Ee(n.baseLight),l=Nn(t,a.action);if(l||(a.action=Hn(t,c)??a.action),!Nn(t,a.active)){let p=l?void 0:J(a.action)??void 0;a.active=Hn(t,c,p)??a.active}}if(a.onLight=X(a.action,a.light),o){let c=o.action??a.action,l=o.light??a.light;return{base:t,dark:o.dark??a.dark,action:c,active:o.active??a.active,light:l,onLight:o.onLight??X(c,l)}}return a}i(D,"mountSingleColor");function Un(e){let n=e.deepLight,o=e.deepDark;return{0:n,5:f(n,o,.05),10:f(n,o,.1),20:f(n,o,.2),30:f(n,o,.3),40:f(n,o,.4),50:f(n,o,.5),60:f(n,o,.6),70:f(n,o,.7),80:f(n,o,.8),90:f(n,o,.9),100:f(n,o,1)}}i(Un,"mountGreyscaleColors");function Jn(e){let n=e.deepLight,o=e.deepDark,t=typeof e.primary=="object"&&e.primary?e.primary.base:e.primary,r=i(a=>1/17*(a-1),"interpolation"),s=f(t,o,.5);return{0:f(s,n,r(18)),5:f(s,n,r(17.5)),10:f(s,n,r(17)),20:f(s,n,r(16)),30:f(s,n,r(15)),40:f(s,n,r(14)),50:f(s,n,r(13)),60:f(s,n,r(12)),70:f(s,n,r(11)),80:f(s,n,r(10)),90:f(s,n,r(9)),100:f(s,n,r(8)),110:f(s,n,r(7)),120:f(s,n,r(6)),130:f(s,n,r(5)),140:f(s,n,r(4)),150:f(s,n,r(3)),160:f(s,n,r(2)),170:s,180:f(s,o,.25)}}i(Jn,"mountNeutralColors");function N(e,n){let o=q(S(e));if(!o)return e;let t=Math.min(1,Math.max(0,(o.l??0)+n));return j({...o,l:t})??e}i(N,"shiftLightness");function pe(e,n){let o=q(S(e));if(!o)return e;let t=o.l??0,r=n.min??0,s=n.max??1;return t>=r&&t<=s?e:j({...o,l:Math.min(s,Math.max(r,t))})??e}i(pe,"clampLightness");function P(e,n){let o=ut(S(e));if(!o)return e;let t=Math.min(1,Math.max(0,n)),r=i(s=>Math.round((s??0)*255),"channel");return`rgba(${r(o.r)}, ${r(o.g)}, ${r(o.b)}, ${t})`}i(P,"toRgbaString");import{apcaContrast as fe,DARK_BOOST_TAPER_MAX_L as Ae,DARK_ELEVATION_BOOST as mt,EDGE_ALPHA as Me,HALATION_FLOORS as me,INK_APCA_MIN as Ve,INK_MIX as Oe,LADDER_DELTAS as Xn,MIN_CONTRAST_AA as qn,WASH_ALPHA as gt}from"@apollion-dsi/core/themes/colors";var yt="#FFFFFF",Le="#000000";function ht(e){return Ee(e.baseLight)?"dark":"light"}i(ht,"resolvePolarity");function bt(e){let n=me.CANVAS_MIN_L;return e<=n?1:e>=Ae?0:(Ae-e)/(Ae-n)}i(bt,"darkElevationBoostFactor");function Zn(e,n,o){if(Math.abs(fe(e,n))>=o)return e;let t=Math.abs(fe("#ffffff",n))>=Math.abs(fe("#000000",n)),r=e;for(let s=0;s<40;s+=1){let a=N(r,t?.02:-.02);if(a===r||(r=a,Math.abs(fe(r,n))>=o))break}return r}i(Zn,"ensureApca");function Rt(e,n){let o=e.baseLight??yt,t=n==="dark",r=t?pe(o,{min:me.CANVAS_MIN_L}):o,s=N(r,Xn.sunken),a=t?bt(J(r)??0):0,c=i(l=>Xn[l]+a*mt[l],"delta");return{canvas:r,sunken:t?pe(s,{min:me.CANVAS_MIN_L}):s,paper:N(r,c("paper")),raised:N(r,c("raised")),overlay:N(r,c("overlay")),scrim:t?e.deepLight??Le:e.neutral?.["180"]??e.baseDark??Le}}i(Rt,"deriveSurface");function kt(e,n){let o=e.baseDark??Le,t=pe(Zn(X(o,n.paper,qn),n.paper,Ve.primary),{max:me.INK_MAX_L}),r=i((s,a)=>Zn(X(f(t,n.canvas,s),n.paper,qn),n.paper,a),"tier");return{primary:t,secondary:r(Oe.secondary,Ve.secondary),muted:r(Oe.muted,Ve.muted),disabled:f(t,n.canvas,Oe.disabled)}}i(kt,"deriveInk");function It(e){return{hairline:P(e.primary,Me.hairline),border:P(e.primary,Me.border),strong:P(e.primary,Me.strong)}}i(It,"deriveEdge");function xt(e,n){let o=gt[n];return{hover:P(e.primary,o.hover),pressed:P(e.primary,o.pressed),selected:P(e.primary,o.selected)}}i(xt,"deriveWash");function St(e,n){return n?{surface:{...e.surface,...n.surface},ink:{...e.ink,...n.ink},edge:{...e.edge,...n.edge},wash:{...e.wash,...n.wash}}:e}i(St,"applyOverride");function Yn(e,n){let o=ht(e),t=Rt(e,o),r=kt(e,t),s={surface:t,ink:r,edge:It(r),wash:xt(r,o)};return St(s,n?.[o])}i(Yn,"resolveSurfaceLadder");function $t(e){let n=Jn(e);return{baseDark:e.baseDark,baseLight:e.baseLight,deepDark:e.deepDark,deepLight:e.deepLight,transparent:e.transparent??"transparent",neutral:n,grayscale:Un(e),...Yn({...e,neutral:n},e.ladder),main:D(e.main,e),opposite:D(e.opposite,e),complementary:D(e.complementary,e),danger:D(e.danger,e),information:D(e.information,e),success:D(e.success,e),warning:D(e.warning,e),primary:D(e.primary,e),secondary:D(e.secondary,e),tertiary:D(e.tertiary,e)}}i($t,"composeColors");function Ct(e){return{...e,baseLight:e.baseLight??Qn.baseLight,baseDark:e.baseDark??Qn.baseDark}}i(Ct,"withContrastDefaults");function O(e,n=Tt){let o=Ct(e.colors),t=e.mode==="dark"?vt(o):o,r=$t(t),s=ne(n,e.dimension),a=wt({colors:r,spacing:s}),c=eo(a);return e.surface==="negative"&&(c=eo(Dt({semantic:a,colors:r},"negative").semantic)),{foundation:c,colors:r}}i(O,"buildVariantThemes");async function so(e){let{config:n,outDir:o,cwd:t=process.cwd(),verbose:r=!1}=e,s=ce(n),a=n.output??{};if(s.length===0)throw new Error("apollion-tokens build: no variants (config.brands is empty)");let c=await Et(Z(Mt(),"apollion-tokens-"));try{let l=[],p=i(async(u,d)=>{await Vt(c,u,d),l.push({path:u,sha256:le(d)}),r&&console.log(` \u2713 ${u}`)},"emit");if(a.json){let u=zn(n),d=[],h=gn();d.push(h),await p(u.base.file,$n(h));for(let m of u.spacing){let k=s.find(Y=>Y.dimension===m.dimension),{foundation:A}=O(k),M=hn(A,m.dimension);d.push(M),await p(m.file,En(M,m.dimension))}for(let m of u.font){let k=Ie(m.textSize);d.push(k),await p(m.file,An(k,m))}for(let m of u.color){let k=s.find(ye=>ye.brand===m.brand&&ye.mode===m.mode&&ye.surface===m.surface),{foundation:A,colors:M}=O(k),Y=yn(A,M);d.push(Y),await p(m.file,Cn(Y,m.brand,m.mode,m.surface))}cn(d),await p(_n,Mn(n,u))}if(a.css||a.ts)for(let u of s){let{foundation:d,colors:h}=O(u),m=F(d,h,u),k=Ln(u);a.css&&await p(`css/${k}.css`,Sn(m,{rgbCompanions:a.tailwind})),a.ts&&await p(`ts/${k}.d.ts`,On(m))}if(a.css||a.cssModes){let u=ae(n).map(d=>[d,Ie(d)]);await p("css/font.css",wn(u))}if(a.cssModes){let u=new Map;for(let d of s){let h=`${d.brand}.${d.surface}.${d.dimension}`,m=u.get(h)??{};m[d.mode]=d,u.set(h,m)}for(let[d,{light:h,dark:m}]of u){if(!h||!m)throw new Error(`apollion-tokens build: output.cssModes needs both modes for ${d} (config.modes)`);let k=O(h),A=O(m),M=vn(F(k.foundation,k.colors,h),F(A.foundation,A.colors,m),{rgbCompanions:a.tailwind});await p(`css/${d}.modes.css`,M)}}if(a.tailwind){let u=s[0],{foundation:d,colors:h}=O(u),m=F(d,h,u);await p("tailwind/preset.mjs",In(m)),await p("tailwind/tw-merge.mjs",xn(m))}if(a.designMd){let u=[...new Set(s.map(d=>d.brand))];for(let d of u){let m=s.filter(k=>k.brand===d).map(k=>{let{foundation:A,colors:M}=O(k);return F(A,M,k)});await p(`design/${d}.design.md`,Tn(d,m))}}let R={configHash:Ce(n),files:l,gitCommit:Gn(t),buildEnv:jn()},v=Pn(R);return await ro(Z(c,"manifest.json"),v),await oo(o,{recursive:!0,force:!0}),await to(io(o),{recursive:!0}),await At(c,o),r&&console.log(`\u2713 ${l.length} files \u2192 ${o}`),{manifest:R,outDir:o}}catch(l){throw await oo(c,{recursive:!0,force:!0}).catch(()=>{}),l}}i(so,"build");async function ao(e){let{config:n,outDir:o}=e,t;try{t=JSON.parse(await no(Z(o,"manifest.json"),"utf8"))}catch{return!1}if(t.configHash!==Ce(n))return!1;for(let r of t.files){let s;try{s=await no(Z(o,r.path))}catch{return!1}if(le(s)!==r.sha256)return!1}return!0}i(ao,"check");async function Vt(e,n,o){let t=Z(e,n);await to(io(t),{recursive:!0}),await ro(t,o)}i(Vt,"writeAt");import{readFile as Lt}from"node:fs/promises";import{resolve as Gt}from"node:path";import{createContext as jt,Script as Pt}from"node:vm";import{z as g}from"zod";var w=g.string().regex(/^#([0-9a-fA-F]{3}){1,2}$|^transparent$|^rgb\(.*\)$|^oklch\(.*\)$/,{message:'Must be hex, rgb(), oklch(), or "transparent"'}),Ot=g.object({baseDark:g.string().optional(),baseLight:g.string().optional(),deepDark:w,deepLight:w,transparent:g.string().optional(),main:w.optional(),opposite:w.optional(),complementary:w.optional(),information:w.optional(),success:w.optional(),danger:w.optional(),warning:w.optional(),primary:w.optional(),secondary:w.optional(),tertiary:w.optional()}).passthrough(),co=g.object({brands:g.record(g.string(),Ot).refine(e=>Object.keys(e).length>0,{message:"apollion.config.mjs: brands must contain at least 1 entry"}),modes:g.array(g.enum(["light","dark"])).optional(),surfaces:g.array(g.enum(["positive","negative"])).optional(),dimensions:g.array(g.enum(["compact","normal","spacious"])).optional(),textSizes:g.array(g.enum(["smaller","default","larger","largest"])).refine(e=>e.includes("default"),{message:"apollion.config.mjs: textSizes must include 'default'"}).refine(e=>new Set(e).size===e.length,{message:"apollion.config.mjs: textSizes must not repeat a level"}).optional(),output:g.object({runtime:g.boolean().optional(),css:g.boolean().optional(),json:g.boolean().optional(),ts:g.boolean().optional(),designMd:g.boolean().optional(),tailwind:g.boolean().optional(),cssModes:g.boolean().optional()}).passthrough().optional()}).passthrough();var _t=[/\brequire\s*\(/,/\bimport\s*\(/,/^\s*import\s+/m],zt=1e3;var Ge=class Ge extends Error{constructor(o,t){super(o);this.configPath=t;this.name="ConfigLoadError"}};i(Ge,"ConfigLoadError");var _=Ge;async function lo(e){let n=Gt(e.configPath),o=await Lt(n,"utf8");for(let l of _t)if(l.test(o))throw new _(`apollion.config: dynamic require/import not allowed (matched ${l}). Declarative config only \u2014 see ADR-006 \xA73.8 B3.`,n);let t=o.replace(/(^|\n)\s*export\s+default\s+/,(l,p)=>`${p}__apollion_config_export = `);if(t===o)throw new _("apollion.config: missing `export default <object>;` \u2014 config must export a default object literal.",n);let r={__apollion_config_export:void 0,console:Ft(),Symbol,Number,String,Boolean,Array,Object,JSON,Math,defineConfig:i(l=>l,"defineConfig")},s=jt(r);try{new Pt(t,{filename:n}).runInContext(s,{timeout:zt})}catch(l){throw new _(`apollion.config: evaluation failed \u2014 ${l instanceof Error?l.message:String(l)}`,n)}let a=r.__apollion_config_export;if(a===void 0)throw new _("apollion.config: `export default` produced undefined.",n);let c=co.safeParse(a);if(!c.success){let l=c.error.issues.map(p=>` ${p.path.join(".")||"(root)"}: ${p.message}`).join(`
|
|
16
16
|
`);throw new _(`apollion.config: schema validation failed \u2014
|
|
17
|
-
${l}`,n)}return c.data}i(
|
|
17
|
+
${l}`,n)}return c.data}i(lo,"loadConfig");function Ft(){return{log:i((...e)=>console.log("[apollion.config]",...e),"log"),warn:i((...e)=>console.warn("[apollion.config]",...e),"warn"),error:i((...e)=>console.error("[apollion.config]",...e),"error")}}i(Ft,"makeReadOnlyConsole");function Bt(e){let n=e.slice(2),o=n[0];o!=="build"&&ge(`Unknown command "${o??""}". Usage: apollion-tokens build [--check] [--verbose] --config <path> [--out <dir>]`);let t="apollion.config.mjs",r="dist",s=!1,a=!1;for(let c=1;c<n.length;c++){let l=n[c];switch(l){case"--config":t=n[++c]??ge("--config needs a path");break;case"--out":r=n[++c]??ge("--out needs a path");break;case"--check":s=!0;break;case"--verbose":a=!0;break;default:ge(`Unknown flag "${l}"`)}}return{command:o,configPath:t,outDir:r,check:s,verbose:a}}i(Bt,"parseArgs");function ge(e){console.error(`apollion-tokens: ${e}`),process.exit(2)}i(ge,"fail");async function Ht(e){let n=je(e);if(n.endsWith(".json")){let o=await Nt(n,"utf8");return JSON.parse(o)}return lo({configPath:n})}i(Ht,"loadConfigFromPath");async function Kt(){let e=Bt(process.argv),n=await Ht(e.configPath);if(e.check){await ao({config:n,outDir:je(e.outDir)})||(console.error("apollion-tokens: dist/ is stale, missing, or has drifted from its manifest. Re-run `apollion-tokens build` without --check."),process.exit(1)),console.log("apollion-tokens: dist/ is up-to-date with config.");return}let{manifest:o}=await so({config:n,outDir:je(e.outDir),verbose:e.verbose});console.log(`apollion-tokens: wrote ${o.files.length} file(s) \u2014 configHash=${o.configHash.slice(0,12)}\u2026`)}i(Kt,"main");Kt().catch(e=>{console.error(`apollion-tokens: ${e instanceof Error?e.message:String(e)}`),process.exit(1)});
|
package/package.json
CHANGED
package/src/theme-factory.ts
CHANGED
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
* @see PRD-002 §S5 · docs/spikes/2026-08-13-dark-mode-real-parity.md
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
import {
|
|
26
|
+
import type { ColorsInput } from '@apollion-dsi/core/themes/colors';
|
|
27
|
+
import { defaultInputColors, toDarkColors } from '@apollion-dsi/core/themes/colors';
|
|
27
28
|
import type { FoundationLayer } from '@apollion-dsi/core/themes/foundation';
|
|
28
29
|
import { createFoundation } from '@apollion-dsi/core/themes/foundation';
|
|
29
30
|
import { createSemantic } from '@apollion-dsi/core/themes/semantic';
|
|
@@ -70,6 +71,20 @@ function composeColors(input: Variant['colors']) {
|
|
|
70
71
|
};
|
|
71
72
|
}
|
|
72
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Seed the contrast pair a brand omits from core's `defaultInputColors` — the
|
|
76
|
+
* same fallback `toDarkColors` applies, so light and dark emission share one
|
|
77
|
+
* default and a config without `baseLight` paints the core canvas
|
|
78
|
+
* (APOLLION-BASELIGHT-PARITY).
|
|
79
|
+
*/
|
|
80
|
+
export function withContrastDefaults(colors: ColorsInput): ColorsInput {
|
|
81
|
+
return {
|
|
82
|
+
...colors,
|
|
83
|
+
baseLight: colors.baseLight ?? defaultInputColors.baseLight,
|
|
84
|
+
baseDark: colors.baseDark ?? defaultInputColors.baseDark,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
73
88
|
/**
|
|
74
89
|
* Build a variant's resolved themes — the Foundation layer plus the structural
|
|
75
90
|
* palette (colour SSOT consumed by the IR for reference emission). Pure +
|
|
@@ -79,7 +94,8 @@ export function buildVariantThemes(variant: Variant, spacingInput: SpacingInput
|
|
|
79
94
|
// ADR-019: dark stops being a placeholder — the palette derives from the
|
|
80
95
|
// canonical-dark seed swap. Emitted dark == runtime canonical dark, byte-exact
|
|
81
96
|
// (parity by composition over the Strangler Fig builders).
|
|
82
|
-
const
|
|
97
|
+
const seeded = withContrastDefaults(variant.colors);
|
|
98
|
+
const colorsInput = variant.mode === 'dark' ? toDarkColors(seeded) : seeded;
|
|
83
99
|
const themeColors = composeColors(colorsInput) as unknown as ColorsThemeInterface;
|
|
84
100
|
const themeSpacing = createSpacing(spacingInput, variant.dimension);
|
|
85
101
|
const semantic = createSemantic({ colors: themeColors as never, spacing: themeSpacing as never });
|