@vcp-dev/contracts 0.10.11 → 0.10.12

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.
@@ -1 +1 @@
1
- import{converter as le,differenceCiede2000 as ae}from"culori";import{converter as X,parse as m,wcagContrast as b}from"culori";var p=X("oklch"),M=4.5,_=7,e={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},Y={\u84DD:e.blue,\u84DD\u8272:e.blue,\u5929\u84DD:e.sky,\u5929\u84DD\u8272:e.sky,\u6D45\u84DD:e.sky,\u6E56\u84DD:e.ocean,\u6D77\u84DD:e.ocean,\u6DF1\u84DD:e.navy,\u85CF\u84DD:e.navy,\u85CF\u9752:e.navy,\u6D77\u519B\u84DD:e.navy,\u6DF1\u6D77\u519B\u84DD:e.navy,\u5348\u591C\u84DD:e.navy,\u975B\u84DD:e.indigo,\u975B\u9752:e.indigo,\u94A2\u84DD:e["slate blue"],\u9752:e.teal,\u9752\u8272:e.teal,\u84DD\u7EFF:e.teal,\u7EFF:e.green,\u7EFF\u8272:e.green,\u6D45\u7EFF:e.mint,\u8584\u8377\u7EFF:e.mint,\u8349\u7EFF:e.lime,\u6A44\u6984\u7EFF:e.olive,\u58A8\u7EFF:e.forest,\u6DF1\u7EFF:e.forest,\u68EE\u6797\u7EFF:e.forest,\u7FE0\u7EFF:e.emerald,\u7956\u6BCD\u7EFF:e.emerald,\u9EC4:e.yellow,\u9EC4\u8272:e.yellow,\u91D1:e.gold,\u91D1\u8272:e.gold,\u91D1\u9EC4:e.gold,\u7425\u73C0:e.amber,\u7425\u73C0\u8272:e.amber,\u6A59:e.orange,\u6A59\u8272:e.orange,\u6A58\u8272:e.orange,\u6A58\u9EC4:e.orange,\u6D3B\u529B\u6A59:e.orange,\u6696\u6A59:e.orange,\u73CA\u745A:e.coral,\u73CA\u745A\u6A59:e.coral,\u9676\u571F:e.terracotta,\u8D64\u9676:e.terracotta,\u9508\u7EA2:e.rust,\u68D5:e.brown,\u68D5\u8272:e.brown,\u8910\u8272:e.brown,\u5496\u5561\u8272:e.brown,\u7EA2:e.red,\u7EA2\u8272:e.red,\u6731\u7EA2:e.red,\u7EEF\u7EA2:e.crimson,\u6DF1\u7EA2:e.crimson,\u9152\u7EA2:e.wine,\u73AB\u7470:e.rose,\u73AB\u7EA2:e.rose,\u7C89:e.pink,\u7C89\u8272:e.pink,\u7C89\u7EA2:e.pink,\u6D0B\u7EA2:e.magenta,\u54C1\u7EA2:e.magenta,\u7D2B:e.purple,\u7D2B\u8272:e.purple,\u6DE1\u7D2B:e.lavender,\u85B0\u8863\u8349:e.lavender,\u7D2B\u7F57\u5170:e.violet,\u6885\u7EA2:e.plum,\u7070:e.gray,\u7070\u8272:e.gray,\u6D45\u7070:e.gray,\u6DE1\u7070:e.gray,\u51B7\u7070:e["cool gray"],\u51B7\u7070\u767D:e["cool gray"],\u6696\u7070:e.stone,\u6DF1\u7070:e.slate,\u77F3\u58A8\u7070:e.slate,\u77F3\u677F\u7070:e.slate,\u70AD\u7070:e.charcoal,\u70AD\u9ED1:e.charcoal,\u58A8:e.ink,\u58A8\u8272:e.ink,\u9ED1:e.ink,\u9ED1\u8272:e.ink,\u767D:e["clean white"],\u767D\u8272:e["clean white"],\u7C73\u767D:e.cream,\u7C73\u8272:e.cream,\u8C61\u7259\u767D:e.cream,\u5976\u6CB9\u767D:e.cream,\u6C99\u8272:e.sand},R={...e,...Y};function B(t){let o=t.colorSeeds??{primary:"slate",accent:"blue",neutral:"zinc"},r=t.surfaceMode,n=y(o.primary||"slate"),c=s(n),l=s(y(o.accent||"blue")),h=o.neutral?y(o.neutral):oe(n),i=u(h.h),f,a,d,g,S,E;r==="dark"?(f=s({mode:"oklch",l:.14,c:.03,h:i}),a=s({mode:"oklch",l:.95,c:.02,h:i}),d=s({mode:"oklch",l:.2,c:.04,h:i}),g=s({mode:"oklch",l:.29,c:.05,h:i}),S=s({mode:"oklch",l:.78,c:.02,h:i}),E=s({mode:"oklch",l:.35,c:.06,h:i})):(f=s({mode:"oklch",l:.98,c:.01,h:i}),a=s({mode:"oklch",l:.2,c:.02,h:i}),d=s({mode:"oklch",l:.96,c:.015,h:i}),g=s({mode:"oklch",l:.92,c:.02,h:i}),S=s({mode:"oklch",l:.43,c:.02,h:i}),E=s({mode:"oklch",l:.84,c:.025,h:i}));let k=t.imagePalette;if(k){let D=typeof k.background=="string"&&w(k.background),O=D&&ce(k.background,r);D&&O&&(f=s(y(k.background))),O&&typeof k.card=="string"&&w(k.card)&&(d=s(y(k.card))),O&&typeof k.muted=="string"&&w(k.muted)&&(g=s(y(k.muted))),typeof k.foreground=="string"&&w(k.foreground)?a=F(s(y(k.foreground)),f,M):D&&O&&(a=v(f)),typeof k.border=="string"&&w(k.border)&&(E=ne(s(y(k.border)),f))}typeof o.foreground=="string"&&w(o.foreground)&&(a=F(s(y(o.foreground)),f,M));let A=r!=="dark",C=s({mode:"oklch",l:.96,c:.02,h:i}),L=s({mode:"oklch",l:.2,c:.02,h:i}),V={"--background":f,"--foreground":a,"--card":d,"--card-foreground":a,"--muted":g,"--muted-foreground":S,"--border":E,"--input":E,"--ring":l,"--primary":c,"--primary-foreground":v(c),"--primary-hover":T(c,A),"--accent":l,"--accent-foreground":v(l),"--accent-ink":x(l,f),"--accent-subtle":te(l,A),"--accent-hover":T(l,A),"--overlay-on-dark":C,"--overlay-on-light":L,"--overlay-on-dark-accent-ink":x(l,L),"--overlay-on-light-accent-ink":x(l,C),"--overlay-on-dark-muted":I(L,i,_),"--overlay-on-light-muted":I(C,i,_)},$=a,U=v(a),z=I(a,i),j=x(l,a),K=p(m(c)??c),q=u(K?.h),J=I(c,q),W=x(l,c);return Q({...V,...{"--surface-inverse":$,"--surface-inverse-foreground":U,"--surface-inverse-muted":z,"--surface-inverse-accent-ink":j,"--surface-primary-muted":J,"--surface-primary-accent-ink":W}},o)}function Q(t,o){let r=s({mode:"oklch",l:.58,c:.22,h:28}),n=s({mode:"oklch",l:.6,c:.14,h:150}),c=s({mode:"oklch",l:.75,c:.15,h:75}),l={...t,"--popover":"var(--card)","--popover-foreground":"var(--card-foreground)","--secondary":"var(--muted)","--secondary-foreground":"var(--foreground)","--destructive":r,"--destructive-foreground":v(r),"--success":n,"--success-foreground":v(n),"--warning":c,"--warning-foreground":v(c)},[h,i]=Z(o,l);return l["--supporting-0"]=h,l["--supporting-1"]=i,re(l["--accent"]).forEach((a,d)=>{l[`--chart-${d+1}`]=a}),l}function Z(t,o){let c=(t.supporting??[]).filter(h=>!!(h&&h.trim())).slice(0,2).map(h=>s(y(h))),l=[o["--primary"],o["--accent"]];for(;c.length<2;)c.push(l[c.length]);return[c[0],c[1]]}function w(t){let o=(t??"").trim();if(!o||o.startsWith("#")&&!/^#[0-9A-Fa-f]{3,8}$/.test(o))return!1;let r=R[o.toLowerCase()]??o;return!!m(r)}function y(t,o="paper"){let r=(t??"").trim();if(!r)return y(o);let n=R[r.toLowerCase()]??r,c=m(n);if(c){let l=p(c);if(l)return l}return ee(r)}function ee(t){let o=2166136261,r=t.toLowerCase();for(let h=0;h<r.length;h++)o^=r.charCodeAt(h),o=Math.imul(o,16777619)>>>0;let n=o%360,c=.08+(o>>>9)%9/100;return{mode:"oklch",l:.52+(o>>>18)%16/100,c,h:n}}function oe(t){return{mode:"oklch",l:.6,c:.02,h:u(t.h)}}function T(t,o){let r=p(m(t)??t);if(!r)return t;let n=o?-.06:.06,c=Math.max(.06,Math.min(.97,u(r.l)+n));return s({mode:"oklch",l:c,c:u(r.c),h:u(r.h)})}function te(t,o){let r=p(m(t)??t),n=u(r?.h),c=Math.min(u(r?.c),o?.05:.06);return s({mode:"oklch",l:o?.95:.24,c,h:n})}function re(t){let o=p(m(t)??t),r=u(o?.h),n=Math.max(.12,Math.min(u(o?.c),.16));return[0,72,144,216,288].map(c=>s({mode:"oklch",l:.62,c:n,h:(r+c)%360}))}function v(t){let o=m(t),r=o?p(o):void 0,n=u(r?.h),c={mode:"oklch",l:.99,c:.01,h:n},l={mode:"oklch",l:.18,c:.02,h:n},h=b(o??t,c),i=b(o??t,l);return s(h>=i?c:l)}function F(t,o,r){let n=p(m(t)??t);if(!n)return v(o);if(b(t,o)>=r)return s(n);let c=p(m(o)??o),h=(c?u(c.l)>=.5:!0)?-.02:.02,i=u(n.l),f=u(n.c),a=u(n.h);for(let d=1;d<=50;d++){let g=i+h*d;if(g<=0||g>=1)break;let S={mode:"oklch",l:g,c:f,h:a};if(b(S,o)>=r)return s(S)}return v(o)}var N=1.3;function ne(t,o){let r=p(m(t)??t);if(!r)return t;if(b(t,o)>=N)return s(r);let n=p(m(o)??o),l=(n?u(n.l)>=.5:!0)?-.03:.03,h=u(r.l),i=u(r.c),f=u(r.h);for(let a=1;a<=40;a++){let d=h+l*a;if(d<=0||d>=1)break;let g={mode:"oklch",l:d,c:i,h:f};if(b(g,o)>=N)return s(g)}return t}function ce(t,o){let r=p(m(t)??t);if(!r)return!1;let n=u(r.l)>=.5;return o==="dark"?!n:n}function x(t,o){let r=p(m(t)??t);if(!r)return t;let n=u(r.h),c=u(r.c),l=u(r.l),h=p(m(o)??o),f=(h?u(h.l)>=.5:!0)?-.02:.02;for(let a=0;a<=50;a++){let d=l+f*a;if(d<=0||d>=1)break;let g={mode:"oklch",l:d,c,h:n};if(b(g,o)>=M)return s(g)}return v(o)}function I(t,o,r=M){let n=p(m(t)??t),l=(n?u(n.l):.5)>=.5,h=l?.75:.35,i=l?-.02:.02;for(let f=0;f<=50;f++){let a=h+i*f;if(a<=0||a>=1)break;let d={mode:"oklch",l:a,c:.02,h:o};if(b(d,t)>=r)return s(d)}return v(t)}function u(t){return typeof t=="number"&&Number.isFinite(t)?t:0}function s(t){let o=u(t.l),r=u(t.c),n=u(t.h);return`oklch(${o.toFixed(2)} ${r.toFixed(2)} ${n.toFixed(2)})`}var se=10,P=25,ie=le("oklch"),he=ae();function ue(t){return typeof t.colorSeeds?.primary=="string"&&t.colorSeeds.primary.trim().length>0}function H(t){let o=ie(t);return o&&typeof o.h=="number"?o.h:void 0}function G(t){let o=0;for(let r=0;r<t.length;r+=1)for(let n=r+1;n<t.length;n+=1){let c=t[r],l=t[n];if(c===void 0||l===void 0)continue;let h=Math.abs(c-l)%360,i=h>180?360-h:h;i>o&&(o=i)}return o}function de(t){let o=0,r=1/0;for(let n=0;n<t.length;n+=1)for(let c=n+1;c<t.length;c+=1){let l=he(t[n],t[c]);l>o&&(o=l),l<r&&(r=l)}return{max:o,min:r===1/0?0:r}}function ye(t){let o=t.filter(ue);if(o.length<2)return{minBackgroundDeltaE:null,tooSimilar:!1,insufficient:!0};let r=o.map(a=>a.surfaceMode??"light"),n=o.map((a,d)=>B({colorSeeds:a.colorSeeds,surfaceMode:r[d]})),c=de(n.map(a=>a["--background"])),l=G(n.map(a=>H(a["--primary"]))),h=G(n.map(a=>H(a["--accent"]))),f=!(new Set(r).size===1)||c.max>=se||l>=P||h>=P;return{minBackgroundDeltaE:c.min,tooSimilar:!f,insufficient:!1}}export{ye as measureColorwayDistinctness};
1
+ import{converter as ge,differenceCiede2000 as pe}from"culori";import{converter as ce,formatHex as Oe,parse as g,wcagContrast as w}from"culori";var y=ce("oklch"),M=4.5,U=7,e={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},le={\u84DD:e.blue,\u84DD\u8272:e.blue,\u5929\u84DD:e.sky,\u5929\u84DD\u8272:e.sky,\u6D45\u84DD:e.sky,\u6E56\u84DD:e.ocean,\u6D77\u84DD:e.ocean,\u6DF1\u84DD:e.navy,\u85CF\u84DD:e.navy,\u85CF\u9752:e.navy,\u6D77\u519B\u84DD:e.navy,\u6DF1\u6D77\u519B\u84DD:e.navy,\u5348\u591C\u84DD:e.navy,\u975B\u84DD:e.indigo,\u975B\u9752:e.indigo,\u94A2\u84DD:e["slate blue"],\u9752:e.teal,\u9752\u8272:e.teal,\u84DD\u7EFF:e.teal,\u7EFF:e.green,\u7EFF\u8272:e.green,\u6D45\u7EFF:e.mint,\u8584\u8377\u7EFF:e.mint,\u8349\u7EFF:e.lime,\u6A44\u6984\u7EFF:e.olive,\u58A8\u7EFF:e.forest,\u6DF1\u7EFF:e.forest,\u68EE\u6797\u7EFF:e.forest,\u7FE0\u7EFF:e.emerald,\u7956\u6BCD\u7EFF:e.emerald,\u9EC4:e.yellow,\u9EC4\u8272:e.yellow,\u91D1:e.gold,\u91D1\u8272:e.gold,\u91D1\u9EC4:e.gold,\u7425\u73C0:e.amber,\u7425\u73C0\u8272:e.amber,\u6A59:e.orange,\u6A59\u8272:e.orange,\u6A58\u8272:e.orange,\u6A58\u9EC4:e.orange,\u6D3B\u529B\u6A59:e.orange,\u6696\u6A59:e.orange,\u73CA\u745A:e.coral,\u73CA\u745A\u6A59:e.coral,\u9676\u571F:e.terracotta,\u8D64\u9676:e.terracotta,\u9508\u7EA2:e.rust,\u68D5:e.brown,\u68D5\u8272:e.brown,\u8910\u8272:e.brown,\u5496\u5561\u8272:e.brown,\u7EA2:e.red,\u7EA2\u8272:e.red,\u6731\u7EA2:e.red,\u7EEF\u7EA2:e.crimson,\u6DF1\u7EA2:e.crimson,\u9152\u7EA2:e.wine,\u73AB\u7470:e.rose,\u73AB\u7EA2:e.rose,\u7C89:e.pink,\u7C89\u8272:e.pink,\u7C89\u7EA2:e.pink,\u6D0B\u7EA2:e.magenta,\u54C1\u7EA2:e.magenta,\u7D2B:e.purple,\u7D2B\u8272:e.purple,\u6DE1\u7D2B:e.lavender,\u85B0\u8863\u8349:e.lavender,\u7D2B\u7F57\u5170:e.violet,\u6885\u7EA2:e.plum,\u7070:e.gray,\u7070\u8272:e.gray,\u6D45\u7070:e.gray,\u6DE1\u7070:e.gray,\u51B7\u7070:e["cool gray"],\u51B7\u7070\u767D:e["cool gray"],\u6696\u7070:e.stone,\u6DF1\u7070:e.slate,\u77F3\u58A8\u7070:e.slate,\u77F3\u677F\u7070:e.slate,\u70AD\u7070:e.charcoal,\u70AD\u9ED1:e.charcoal,\u58A8:e.ink,\u58A8\u8272:e.ink,\u9ED1:e.ink,\u9ED1\u8272:e.ink,\u767D:e["clean white"],\u767D\u8272:e["clean white"],\u7C73\u767D:e.cream,\u7C73\u8272:e.cream,\u8C61\u7259\u767D:e.cream,\u5976\u6CB9\u767D:e.cream,\u6C99\u8272:e.sand},K={...e,...le};function j(o){let t=o.colorSeeds??{primary:"slate",accent:"blue",neutral:"zinc"},n=o.surfaceMode,r=v(t.primary||"slate"),c=i(r),a=v(t.accent||"blue"),s=i(a),m=t.neutral?v(t.neutral):he(r),h=u(m.h),l=S(m)?0:1,d,f,p,A,R,I;n==="dark"?(d=i({mode:"oklch",l:.14,c:.03*l,h}),f=i({mode:"oklch",l:.95,c:.02*l,h}),p=i({mode:"oklch",l:.2,c:.04*l,h}),A=i({mode:"oklch",l:.29,c:.05*l,h}),R=i({mode:"oklch",l:.78,c:.02*l,h}),I=i({mode:"oklch",l:.35,c:.06*l,h})):(d=i({mode:"oklch",l:.98,c:.01*l,h}),f=i({mode:"oklch",l:.2,c:.02*l,h}),p=i({mode:"oklch",l:.96,c:.015*l,h}),A=i({mode:"oklch",l:.92,c:.02*l,h}),R=i({mode:"oklch",l:.43,c:.02*l,h}),I=i({mode:"oklch",l:.84,c:.025*l,h}));let N=S(r),X=S(a),E=l===0,O=l===0,k=o.imagePalette;if(k){let x=typeof k.background=="string"&&C(k.background),D=x&&ke(k.background,n);if(x&&D){let T=v(k.background);d=i(T),E=S(T)}if(D&&typeof k.card=="string"&&C(k.card)&&(p=i(v(k.card))),D&&typeof k.muted=="string"&&C(k.muted)&&(A=i(v(k.muted))),typeof k.foreground=="string"&&C(k.foreground)){let T=v(k.foreground);f=$(i(T),d,M,E),O=S(T)}else x&&D&&(f=b(d,E),O=E);typeof k.border=="string"&&C(k.border)&&(I=me(i(v(k.border)),d))}if(typeof t.foreground=="string"&&C(t.foreground)){let x=v(t.foreground);f=$(i(x),d,M,E),O=S(x)}let H=n!=="dark",B=i({mode:"oklch",l:.96,c:.02*l,h}),P=i({mode:"oklch",l:.2,c:.02*l,h}),Y={"--background":d,"--foreground":f,"--card":p,"--card-foreground":f,"--muted":A,"--muted-foreground":R,"--border":I,"--input":I,"--ring":s,"--primary":c,"--primary-foreground":b(c,N),"--primary-hover":V(c,H),"--accent":s,"--accent-foreground":b(s,X),"--accent-ink":_(s,d,E),"--accent-subtle":de(s,H),"--accent-hover":V(s,H),"--overlay-on-dark":B,"--overlay-on-light":P,"--overlay-on-dark-accent-ink":_(s,P),"--overlay-on-light-accent-ink":_(s,B),"--overlay-on-dark-muted":F(P,h,U,L*l),"--overlay-on-light-muted":F(B,h,U,L*l)},Q=f,Z=b(f,O),ee=F(f,h,M,L*l,O),oe=_(s,f,O),G=y(g(c)??c),te=u(G?.h),ne=F(c,te,M,G&&S(G)?0:L,N),re=_(s,c,N);return ae({...Y,...{"--surface-inverse":Q,"--surface-inverse-foreground":Z,"--surface-inverse-muted":ee,"--surface-inverse-accent-ink":oe,"--surface-primary-muted":ne,"--surface-primary-accent-ink":re}},t)}function ae(o,t){let n=i({mode:"oklch",l:.58,c:.22,h:28}),r=i({mode:"oklch",l:.6,c:.14,h:150}),c=i({mode:"oklch",l:.75,c:.15,h:75}),a={...o,"--popover":"var(--card)","--popover-foreground":"var(--card-foreground)","--secondary":"var(--muted)","--secondary-foreground":"var(--foreground)","--destructive":n,"--destructive-foreground":b(n),"--success":r,"--success-foreground":b(r),"--warning":c,"--warning-foreground":b(c)},[s,m]=se(t,a);return a["--supporting-0"]=s,a["--supporting-1"]=m,fe(a["--accent"]).forEach((l,d)=>{a[`--chart-${d+1}`]=l}),a}function se(o,t){let c=(o.supporting??[]).filter(s=>!!(s&&s.trim())).slice(0,2).map(s=>i(v(s))),a=[t["--primary"],t["--accent"]];for(;c.length<2;)c.push(a[c.length]);return[c[0],c[1]]}function C(o){let t=(o??"").trim();if(!t||t.startsWith("#")&&!/^#[0-9A-Fa-f]{3,8}$/.test(t))return!1;let n=K[t.toLowerCase()]??t;return!!g(n)}function v(o,t="paper"){let n=(o??"").trim();if(!n)return v(t);let r=K[n.toLowerCase()]??n,c=g(r);if(c){let a=y(c);if(a)return a}return ie(n)}function ie(o){let t=2166136261,n=o.toLowerCase();for(let s=0;s<n.length;s++)t^=n.charCodeAt(s),t=Math.imul(t,16777619)>>>0;let r=t%360,c=.08+(t>>>9)%9/100;return{mode:"oklch",l:.52+(t>>>18)%16/100,c,h:r}}function he(o){return S(o)?{mode:"oklch",l:.6,c:0}:{mode:"oklch",l:.6,c:.02,h:u(o.h)}}var L=.02,ue=.002;function S(o){return typeof o.h!="number"||!Number.isFinite(o.h)||u(o.c)<ue}function V(o,t){let n=y(g(o)??o);if(!n)return o;let r=t?-.06:.06,c=Math.max(.06,Math.min(.97,u(n.l)+r));return i({mode:"oklch",l:c,c:u(n.c),h:u(n.h)})}function de(o,t){let n=y(g(o)??o),r=u(n?.h),c=Math.min(u(n?.c),t?.05:.06);return i({mode:"oklch",l:t?.95:.24,c,h:r})}function fe(o){let t=y(g(o)??o),n=u(t?.h),r=Math.max(.12,Math.min(u(t?.c),.16));return[0,72,144,216,288].map(c=>i({mode:"oklch",l:.62,c:r,h:(n+c)%360}))}function b(o,t){let n=g(o),r=n?y(n):void 0,c=u(r?.h),a=t??(!r||S(r))?0:1,s={mode:"oklch",l:.99,c:.01*a,h:c},m={mode:"oklch",l:.18,c:.02*a,h:c},h=w(n??o,s),l=w(n??o,m);return i(h>=l?s:m)}function $(o,t,n,r){let c=y(g(o)??o);if(!c)return b(t,r);if(w(o,t)>=n)return i(c);let a=y(g(t)??t),m=(a?u(a.l)>=.5:!0)?-.02:.02,h=u(c.l),l=u(c.c),d=u(c.h);for(let f=1;f<=50;f++){let p=h+m*f;if(p<=0||p>=1)break;let A={mode:"oklch",l:p,c:l,h:d};if(w(A,t)>=n)return i(A)}return b(t,r)}var z=1.3;function me(o,t){let n=y(g(o)??o);if(!n)return o;if(w(o,t)>=z)return i(n);let r=y(g(t)??t),a=(r?u(r.l)>=.5:!0)?-.03:.03,s=u(n.l),m=u(n.c),h=u(n.h);for(let l=1;l<=40;l++){let d=s+a*l;if(d<=0||d>=1)break;let f={mode:"oklch",l:d,c:m,h};if(w(f,t)>=z)return i(f)}return o}function ke(o,t){let n=y(g(o)??o);if(!n)return!1;let r=u(n.l)>=.5;return t==="dark"?!r:r}function _(o,t,n){let r=y(g(o)??o);if(!r)return o;let c=u(r.h),a=u(r.c),s=u(r.l),m=y(g(t)??t),l=(m?u(m.l)>=.5:!0)?-.02:.02;for(let d=0;d<=50;d++){let f=s+l*d;if(f<=0||f>=1)break;let p={mode:"oklch",l:f,c:a,h:c};if(w(p,t)>=M)return i(p)}return b(t,n)}function F(o,t,n=M,r=L,c){let a=y(g(o)??o),m=(a?u(a.l):.5)>=.5,h=m?.75:.35,l=m?-.02:.02;for(let d=0;d<=50;d++){let f=h+l*d;if(f<=0||f>=1)break;let p={mode:"oklch",l:f,c:r,h:t};if(w(p,o)>=n)return i(p)}return b(o,c)}function u(o){return typeof o=="number"&&Number.isFinite(o)?o:0}function i(o){let t=u(o.l),n=u(o.c),r=u(o.h);return`oklch(${t.toFixed(2)} ${n.toFixed(2)} ${r.toFixed(2)})`}var ye=10,q=25,ve=ge("oklch"),be=pe();function Se(o){return typeof o.colorSeeds?.primary=="string"&&o.colorSeeds.primary.trim().length>0}function J(o){let t=ve(o);return t&&typeof t.h=="number"?t.h:void 0}function W(o){let t=0;for(let n=0;n<o.length;n+=1)for(let r=n+1;r<o.length;r+=1){let c=o[n],a=o[r];if(c===void 0||a===void 0)continue;let s=Math.abs(c-a)%360,m=s>180?360-s:s;m>t&&(t=m)}return t}function we(o){let t=0,n=1/0;for(let r=0;r<o.length;r+=1)for(let c=r+1;c<o.length;c+=1){let a=be(o[r],o[c]);a>t&&(t=a),a<n&&(n=a)}return{max:t,min:n===1/0?0:n}}function Ie(o){let t=o.filter(Se);if(t.length<2)return{minBackgroundDeltaE:null,tooSimilar:!1,insufficient:!0};let n=t.map(l=>l.surfaceMode??"light"),r=t.map((l,d)=>j({colorSeeds:l.colorSeeds,surfaceMode:n[d]})),c=we(r.map(l=>l["--background"])),a=W(r.map(l=>J(l["--primary"]))),s=W(r.map(l=>J(l["--accent"]))),h=!(new Set(n).size===1)||c.max>=ye||a>=q||s>=q;return{minBackgroundDeltaE:c.min,tooSimilar:!h,insufficient:!1}}export{Ie as measureColorwayDistinctness};
@@ -106,9 +106,11 @@ export type ConnectDynamicCollectionInput = z.infer<typeof ConnectDynamicCollect
106
106
  export type ConnectDynamicCollectionResult = {
107
107
  status: "bound" | "provisioned";
108
108
  collection_slug: string;
109
+ /** 空串表示 CMS 尚无可采样的已发布 URL;此时只生成列表能力。 */
109
110
  detail_prefix: string;
110
111
  schema: ResolvedField[];
111
112
  list_view: string;
113
+ /** 无详情 URL 时为空串,不创建详情视图或路由。 */
112
114
  detail_view: string;
113
115
  /** 逐字段人话渲染契约(LLM 写 view 的零猜测依据),确定性派生。 */
114
116
  view_contract: string;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * `app/globals.css` 的令牌标记区读写。
3
+ *
4
+ * `app/globals.css` 是**可执行的令牌源**:生成链把种子色与字体编译进
5
+ * `/* <cms-builder:global-design-tokens> *\/` 标记区。本模块把「冻结令牌名
6
+ * 集合」从提示词约束变成**机械约束**:
7
+ *
8
+ * 1. 只在标记区内读写——区外的同名声明(`.outside { --not-a-token: red }`、
9
+ * `@layer base` 里的规则)逐字节不受影响;文件里有多个标记区时**全部**处理;
10
+ * 2. 只改声明**值**,令牌**名集合逐字节不变**——写入器没有新增令牌名的代码路径;
11
+ * 3. 写入值先过形态校验:值里出现 `;` / `{` / `}` / 注释开闭符 / 换行一律拒绝,
12
+ * 杜绝「一个值越出 `:root` 注入整段 CSS 规则」;
13
+ * 4. 未改到的令牌、非令牌声明(`color-scheme: light;`)、缩进、注释、标记本身
14
+ * 全部原样保留——只重写命中声明的**值那一段**。
15
+ *
16
+ * 从 `services/subsite-service/src/localize/design-tokens-writer.ts` 迁入,
17
+ * 供 `apps/agent` 与子站服务共用;子站的错误码 / 降级语义保留在原文件的包装层。
18
+ */
19
+ import { type PaletteInputs } from "./site-design-notes.js";
20
+ export declare const GLOBAL_DESIGN_TOKENS_START = "/* <cms-builder:global-design-tokens> */";
21
+ export declare const GLOBAL_DESIGN_TOKENS_END = "/* </cms-builder:global-design-tokens> */";
22
+ export type DesignTokenBlockErrorCode = "DESIGN_TOKEN_BLOCK_MISSING" | "DESIGN_TOKEN_UNKNOWN" | "DESIGN_TOKEN_UNSAFE_VALUE";
23
+ /** 合同化错误:message 恒以 code 开头,落库的失败原因因此可归因。 */
24
+ export declare class DesignTokenBlockError extends Error {
25
+ readonly code: DesignTokenBlockErrorCode;
26
+ constructor(code: DesignTokenBlockErrorCode, detail: string);
27
+ }
28
+ /**
29
+ * 标记区内的令牌名 → 声明值(源码顺序,多个标记区按出现顺序合并)。
30
+ * 区外声明一概不进结果。
31
+ */
32
+ export declare function readDesignTokens(css: string): Map<string, string>;
33
+ export interface WriteDesignTokensOptions {
34
+ /**
35
+ * 属于共享派生输出的令牌名集合。落在这个集合里的名字即便写不进去也不硬失败;
36
+ * 不在集合里的未知名仍硬抛。缺省表示「全部硬抛」。
37
+ */
38
+ readonly derivedKeys?: ReadonlySet<string>;
39
+ /**
40
+ * 父站整份 CSS 里根本没声明该令牌:本站没有这个令牌面,**不是缺失**。
41
+ * 只做计数/调试留痕,不进降级通道。
42
+ */
43
+ readonly onOutOfScopeToken?: (token: string) => void;
44
+ /** 父站声明了该令牌、但声明在标记区外,本次写不进去:真正的降级。原因码由调用方自己补。 */
45
+ readonly onUnwritableToken?: (token: string) => void;
46
+ }
47
+ /**
48
+ * 按名替换标记区内的声明值,返回新的完整 CSS 文本。
49
+ *
50
+ * - **本次要写的集合 = `values` 的键 ∩ 父站标记区内已声明的键**:站点的令牌面
51
+ * 决定范围,派生的键集不决定;
52
+ * - `values` 里区内没声明的名分三路:不在 `derivedKeys` → 抛
53
+ * `DESIGN_TOKEN_UNKNOWN`;在 `derivedKeys` 且整份 CSS 都没声明 →
54
+ * 范围之外,回调 `onOutOfScopeToken`;在 `derivedKeys` 且区外声明过 →
55
+ * 回调 `onUnwritableToken`(降级);
56
+ * - 每个待写值都过形态校验,任一不合法即抛,**先整体校验再写**,不留半程结果;
57
+ * - `values` 没提到的令牌、非令牌声明、注释、标记、区外内容一律逐字节保留;
58
+ * - 同名令牌在区内出现多次时全部替换,保持 CSS 层叠结果与调用意图一致。
59
+ */
60
+ export declare function writeDesignTokens(css: string, values: ReadonlyMap<string, string>, options?: WriteDesignTokensOptions): string;
61
+ /** 文件里是否存在至少一段完整的(开闭都在)令牌标记区。 */
62
+ export declare function hasDesignTokenBlock(css: string): boolean;
63
+ /** 令牌区内 `color-scheme` 的当前值;没有标记区或没有该声明时返回 null。 */
64
+ export declare function readColorScheme(css: string): "light" | "dark" | null;
65
+ /** 改写令牌区内的 `color-scheme` 值;没有标记区时抛 `DESIGN_TOKEN_BLOCK_MISSING`。 */
66
+ export declare function writeColorScheme(css: string, mode: "light" | "dark"): string;
67
+ /**
68
+ * Pure reverse-derivation of the workspace design panel's baseline straight
69
+ * from `app/globals.css`'s executable token block — the file the generation
70
+ * and apply materializers actually write, so it never drifts from what the
71
+ * site currently renders.
72
+ *
73
+ * Contract for callers (apps/agent's workspace design GET/apply today,
74
+ * services/subsite-service's localization next): this function is pure CSS
75
+ * text in, plain data out — no Nest, no agent runtime, no I/O. Both a Nest
76
+ * service and a plain script can call it directly.
77
+ *
78
+ * Returns `null` ONLY when there is no token block to read at all: the
79
+ * marker block is missing, or {@link readDesignTokens} throws
80
+ * {@link DesignTokenBlockError} on a malformed one (unclosed/nested marker).
81
+ * Callers fall back to an archived source (e.g. the persisted DesignPlan) in
82
+ * that case.
83
+ *
84
+ * A token block that parses fine but whose `--primary`/`--accent` value
85
+ * cannot be converted back to a hex color (e.g. a chat model wrote a
86
+ * non-oklch value like `color-mix(in oklch, var(--primary) 70%, white)`) is
87
+ * NOT a `null` return: `primary`/`accent` go individually `null` instead of
88
+ * collapsing the whole result, so a caller can still use
89
+ * `fonts`/`surfaceMode`/`paletteInputs`/`notesLines` from the file and only
90
+ * needs to fall back for the specific anchor(s) that failed to convert.
91
+ *
92
+ * `foreground`/`neutral`/`supporting`/`imagePalette` come ONLY from the
93
+ * design-notes `palette-inputs` record, never from a derived token: e.g.
94
+ * `--foreground` in the token block is always a derived ramp value, never
95
+ * the seed the user entered, so converting it back through
96
+ * {@link oklchCssToHex} would round differently from what the user typed.
97
+ */
98
+ export interface GlobalsDesignValues {
99
+ /** Lowercase hex, or `null` when `--primary` could not be converted back to a color. */
100
+ primary: string | null;
101
+ /** Lowercase hex, or `null` when `--accent` could not be converted back to a color. */
102
+ accent: string | null;
103
+ /** The user's original foreground seed, verbatim from palette-inputs; omitted (not `null`) when there is none. */
104
+ foreground?: string;
105
+ neutral?: string;
106
+ supporting?: string[];
107
+ imagePalette?: PaletteInputs["imagePalette"];
108
+ surfaceMode: "light" | "dark" | null;
109
+ /** First font-stack family for heading/body, resolved to the registry's canonical display name; `null` if either is missing. */
110
+ fonts: {
111
+ heading: string;
112
+ body: string;
113
+ } | null;
114
+ paletteInputs: PaletteInputs | null;
115
+ /** Whether the design notes carried a parsable palette-inputs block at all. */
116
+ paletteInputsPresent: boolean;
117
+ notesLines: string[] | null;
118
+ }
119
+ export declare function readGlobalsDesignValues(css: string): GlobalsDesignValues | null;
@@ -0,0 +1,2 @@
1
+ import{converter as C,formatHex as F,parse as D,wcagContrast as ne}from"culori";var te=C("oklch");var n={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},P={\u84DD:n.blue,\u84DD\u8272:n.blue,\u5929\u84DD:n.sky,\u5929\u84DD\u8272:n.sky,\u6D45\u84DD:n.sky,\u6E56\u84DD:n.ocean,\u6D77\u84DD:n.ocean,\u6DF1\u84DD:n.navy,\u85CF\u84DD:n.navy,\u85CF\u9752:n.navy,\u6D77\u519B\u84DD:n.navy,\u6DF1\u6D77\u519B\u84DD:n.navy,\u5348\u591C\u84DD:n.navy,\u975B\u84DD:n.indigo,\u975B\u9752:n.indigo,\u94A2\u84DD:n["slate blue"],\u9752:n.teal,\u9752\u8272:n.teal,\u84DD\u7EFF:n.teal,\u7EFF:n.green,\u7EFF\u8272:n.green,\u6D45\u7EFF:n.mint,\u8584\u8377\u7EFF:n.mint,\u8349\u7EFF:n.lime,\u6A44\u6984\u7EFF:n.olive,\u58A8\u7EFF:n.forest,\u6DF1\u7EFF:n.forest,\u68EE\u6797\u7EFF:n.forest,\u7FE0\u7EFF:n.emerald,\u7956\u6BCD\u7EFF:n.emerald,\u9EC4:n.yellow,\u9EC4\u8272:n.yellow,\u91D1:n.gold,\u91D1\u8272:n.gold,\u91D1\u9EC4:n.gold,\u7425\u73C0:n.amber,\u7425\u73C0\u8272:n.amber,\u6A59:n.orange,\u6A59\u8272:n.orange,\u6A58\u8272:n.orange,\u6A58\u9EC4:n.orange,\u6D3B\u529B\u6A59:n.orange,\u6696\u6A59:n.orange,\u73CA\u745A:n.coral,\u73CA\u745A\u6A59:n.coral,\u9676\u571F:n.terracotta,\u8D64\u9676:n.terracotta,\u9508\u7EA2:n.rust,\u68D5:n.brown,\u68D5\u8272:n.brown,\u8910\u8272:n.brown,\u5496\u5561\u8272:n.brown,\u7EA2:n.red,\u7EA2\u8272:n.red,\u6731\u7EA2:n.red,\u7EEF\u7EA2:n.crimson,\u6DF1\u7EA2:n.crimson,\u9152\u7EA2:n.wine,\u73AB\u7470:n.rose,\u73AB\u7EA2:n.rose,\u7C89:n.pink,\u7C89\u8272:n.pink,\u7C89\u7EA2:n.pink,\u6D0B\u7EA2:n.magenta,\u54C1\u7EA2:n.magenta,\u7D2B:n.purple,\u7D2B\u8272:n.purple,\u6DE1\u7D2B:n.lavender,\u85B0\u8863\u8349:n.lavender,\u7D2B\u7F57\u5170:n.violet,\u6885\u7EA2:n.plum,\u7070:n.gray,\u7070\u8272:n.gray,\u6D45\u7070:n.gray,\u6DE1\u7070:n.gray,\u51B7\u7070:n["cool gray"],\u51B7\u7070\u767D:n["cool gray"],\u6696\u7070:n.stone,\u6DF1\u7070:n.slate,\u77F3\u58A8\u7070:n.slate,\u77F3\u677F\u7070:n.slate,\u70AD\u7070:n.charcoal,\u70AD\u9ED1:n.charcoal,\u58A8:n.ink,\u58A8\u8272:n.ink,\u9ED1:n.ink,\u9ED1\u8272:n.ink,\u767D:n["clean white"],\u767D\u8272:n["clean white"],\u7C73\u767D:n.cream,\u7C73\u8272:n.cream,\u8C61\u7259\u767D:n.cream,\u5976\u6CB9\u767D:n.cream,\u6C99\u8272:n.sand},oe={...n,...P};function _(e){let t=D(e.trim());return t?F(t)??null:null}var S={Inter:{import:"Inter"},"Inter Tight":{import:"Inter_Tight"},"DM Sans":{import:"DM_Sans"},"Source Sans 3":{import:"Source_Sans_3"},"Libre Franklin":{import:"Libre_Franklin"},Montserrat:{import:"Montserrat"},Archivo:{import:"Archivo"},"Space Grotesk":{import:"Space_Grotesk"},Manrope:{import:"Manrope"},"IBM Plex Sans":{import:"IBM_Plex_Sans"},Oswald:{import:"Oswald"},"Roboto Condensed":{import:"Roboto_Condensed"},"Bebas Neue":{import:"Bebas_Neue",weights:["400"]},"Playfair Display":{import:"Playfair_Display"},Lora:{import:"Lora"},Fraunces:{import:"Fraunces"},"Cormorant Garamond":{import:"Cormorant_Garamond"},"JetBrains Mono":{import:"JetBrains_Mono"},"IBM Plex Mono":{import:"IBM_Plex_Mono"},"Noto Sans SC":{import:"Noto_Sans_SC",download:!1},"Noto Serif SC":{import:"Noto_Serif_SC",download:!1}};var ce=S.Inter;function b(e){return e.trim().replace(/\s+/g,"_").toLowerCase()}var R=(()=>{let e=new Map;for(let[t,o]of Object.entries(S))e.set(b(t),o),e.set(b(o.import),o);return e})();var B=(()=>{let e=new Map;for(let[t,o]of Object.entries(S))e.set(o.import,t);return e})();function w(e){if(typeof e!="string"||e.trim().length===0)return"Inter";let t=R.get(b(e));return t?B.get(t.import)??"Inter":"Inter"}var ae=Object.keys(S);var ie=new Set(["Playfair Display","Lora","Fraunces","Cormorant Garamond","Noto Serif SC"].map(e=>e.toLowerCase())),se=new Set(["JetBrains Mono","IBM Plex Mono"].map(e=>e.toLowerCase()));import{z as g}from"zod";var O="/* <cms-builder:site-design-notes>",N="</cms-builder:site-design-notes> */",E="palette-inputs: ",m=g.string().min(1).max(40),G=g.object({primarySource:g.enum(["user","derived"]),neutral:m.optional(),foreground:m.optional(),supporting:g.array(m).max(4).optional(),imagePalette:g.object({background:m.optional(),foreground:m.optional(),card:m.optional(),muted:m.optional(),border:m.optional()}).optional()});function $(e){let t=e.indexOf(O),o=e.indexOf(N,t+1);return t===-1||o===-1?null:{start:t,end:o+N.length}}function K(e){try{let t=JSON.parse(e),o=G.safeParse(t);return o.success?o.data:null}catch{return null}}function x(e){let t=$(e);if(!t)return null;let o=e.slice(t.start+O.length,t.end-N.length),c=[],r=null;for(let a of o.split(`
2
+ `).map(s=>s.trim()).filter(Boolean))a.startsWith(E)?r=K(a.slice(E.length)):c.push(a);return{lines:c,paletteInputs:r}}var p="/* <cms-builder:global-design-tokens> */",k="/* </cms-builder:global-design-tokens> */",f=class extends Error{constructor(t,o){super(`${t}: ${o}`),this.code=t,this.name="DesignTokenBlockError"}};function U(e){let t=[],o=0;for(;o<e.length;){let c=e.indexOf(p,o),r=e.indexOf(k,o);if(c<0){if(r>=0)throw new f("DESIGN_TOKEN_BLOCK_MISSING","a closing global-design-tokens marker appears without a matching opening marker.");break}if(r<0||r<c)throw new f("DESIGN_TOKEN_BLOCK_MISSING","a global-design-tokens region is opened but never closed.");let a=c+p.length,s=e.indexOf(p,a);if(s>=0&&s<r)throw new f("DESIGN_TOKEN_BLOCK_MISSING","global-design-tokens regions are nested; refusing to guess the intended boundaries.");t.push({bodyStart:a,bodyEnd:r}),o=r+k.length}if(t.length===0)throw new f("DESIGN_TOKEN_BLOCK_MISSING","app/globals.css does not contain a cms-builder:global-design-tokens region.");return t}var V=/^--[A-Za-z0-9_-]+/;function Y(e){return e===void 0||e==="{"||e==="}"||e===";"||/\s/.test(e)}function A(e,t,o){let c=[],r=t,a=0;for(;r<o;){let s=e[r];if(s==="/"&&e[r+1]==="*"){let l=e.indexOf("*/",r+2);r=l<0||l>=o?o:l+2;continue}if(s==='"'||s==="'"){r=M(e,r,o);continue}if(s==="("){a+=1,r+=1;continue}if(s===")"){a=Math.max(0,a-1),r+=1;continue}if(s==="-"&&a===0&&e[r+1]==="-"&&Y(r===0?void 0:e[r-1])){let l=V.exec(e.slice(r,o));if(l){let d=l[0],u=r+d.length;for(;u<o&&(e[u]===" "||e[u]===" ");)u+=1;if(e[u]===":"){for(u+=1;u<o&&(e[u]===" "||e[u]===" ");)u+=1;let i=u,h=H(e,i,o),I=e.slice(i,h).trimEnd();c.push({name:d,value:I.trim(),valueStart:i,valueEnd:i+I.length}),r=h;continue}}}r+=1}return c}function M(e,t,o){let c=e[t],r=t+1;for(;r<o;){let a=e[r];if(a==="\\"){r+=2;continue}if(a===c)return r+1;r+=1}return o}function H(e,t,o){let c=t,r=0;for(;c<o;){let a=e[c];if(a==="\\"){c+=2;continue}if(a==='"'||a==="'"){c=M(e,c,o);continue}if(a==="/"&&e[c+1]==="*"){let s=e.indexOf("*/",c+2);c=s<0||s>=o?o:s+2;continue}if(a==="(")r+=1;else if(a===")")r=Math.max(0,r-1);else if(r===0&&(a===";"||a==="}"))return c;c+=1}return o}function L(e){return U(e).flatMap(t=>A(e,t.bodyStart,t.bodyEnd))}function W(e){return new Set(A(e,0,e.length).map(t=>t.name))}var j=/[;{}]|\/\*|\*\/|[\r\n]/;function z(e,t){if(t.trim().length===0)throw new f("DESIGN_TOKEN_UNSAFE_VALUE",`refusing to write an empty declaration value for ${e}.`);if(j.test(t))throw new f("DESIGN_TOKEN_UNSAFE_VALUE",`refusing to write a declaration value for ${e} that contains a declaration or block terminator, a comment marker, or a newline.`)}function J(e){let t=new Map;for(let o of L(e))t.set(o.name,o.value);return t}function pe(e,t,o={}){let c=L(e),r=new Set(c.map(i=>i.name)),a=new Set,s=new Set,l=[],d=null;for(let i of t.keys())if(!r.has(i)){if(o.derivedKeys?.has(i)!==!0){l.push(i);continue}d??=W(e),d.has(i)?s.add(i):a.add(i)}if(l.length>0)throw new f("DESIGN_TOKEN_UNKNOWN",`refusing to add token names that the shared derivation never produces: ${l.join(", ")}`);for(let[i,h]of t)r.has(i)&&z(i,h);for(let i of a)o.onOutOfScopeToken?.(i);for(let i of s)o.onUnwritableToken?.(i);let u=e;for(let i=c.length-1;i>=0;i-=1){let h=c[i],y=t.get(h.name);y!==void 0&&(u=u.slice(0,h.valueStart)+y+u.slice(h.valueEnd))}return u}function X(e){let t=e.indexOf(p),o=e.indexOf(k);return t!==-1&&o!==-1&&o>t}var v=/(color-scheme:\s*)(light|dark)(\s*;)/;function Z(e){let t=e.indexOf(p),o=e.indexOf(k);return t!==-1&&o>t?e.slice(t,o):null}function q(e){let o=Z(e)?.match(v);return o?o[2]:null}function ge(e,t){let o=e.indexOf(p),c=e.indexOf(k);if(o===-1||c===-1||c<o)throw new f("DESIGN_TOKEN_BLOCK_MISSING","globals.css has no design token block");let r=e.slice(o,c);return e.slice(0,o)+r.replace(v,`$1${t}$3`)+e.slice(c)}var Q=/["']([^"']+)["']/;function T(e){return e?.match(Q)?.[1]??null}function ke(e){if(!X(e))return null;let t;try{t=J(e)}catch(d){if(d instanceof f)return null;throw d}let o=_(t.get("--primary")??"")?.toLowerCase()??null,c=_(t.get("--accent")??"")?.toLowerCase()??null,r=T(t.get("--site-font-heading")),a=T(t.get("--site-font-sans")),s=x(e),l=s?.paletteInputs??null;return{primary:o,accent:c,...l?.foreground!==void 0?{foreground:l.foreground}:{},...l?.neutral!==void 0?{neutral:l.neutral}:{},...l?.supporting!==void 0?{supporting:l.supporting}:{},...l?.imagePalette!==void 0?{imagePalette:l.imagePalette}:{},surfaceMode:q(e),fonts:r&&a?{heading:w(r),body:w(a)}:null,paletteInputs:l,paletteInputsPresent:l!=null,notesLines:s?.lines??null}}export{f as DesignTokenBlockError,k as GLOBAL_DESIGN_TOKENS_END,p as GLOBAL_DESIGN_TOKENS_START,X as hasDesignTokenBlock,q as readColorScheme,J as readDesignTokens,ke as readGlobalsDesignValues,ge as writeColorScheme,pe as writeDesignTokens};
@@ -41,17 +41,23 @@ export declare function deriveDesignColors(input: DeriveDesignColorsInput): Reco
41
41
  * cms-builder's `_color_from_unknown_label` intent.
42
42
  */
43
43
  export declare function isResolvableDesignColorSeed(seed: string): boolean;
44
- /** Picks a near-white / near-black foreground with higher WCAG contrast. */
45
- export declare function bestForegroundFor(background: string): string;
44
+ /**
45
+ * Picks a near-white / near-black foreground with higher WCAG contrast. The ink
46
+ * carries the background's hue at a faint chroma, or none when the background
47
+ * has no meaningful hue. `achromatic` overrides reading that off `background`,
48
+ * for a 2-decimal token whose source color has a faint real hue that prints as
49
+ * chroma 0.00 (e.g. #09090B).
50
+ */
51
+ export declare function bestForegroundFor(background: string, achromatic?: boolean): string;
46
52
  /**
47
53
  * Adjusts an ink color's lightness (keeping hue/chroma) until it clears
48
54
  * `minContrast` against `background`, mirroring the stepping in accentInkFor.
49
55
  * Used when an imagePalette foreground is taken faithfully but must stay
50
56
  * readable on the (possibly imagePalette) background. Returns the input as-is
51
- * when it already clears the threshold; falls back to bestForegroundFor when
52
- * the gamut is exhausted.
57
+ * when it already clears the threshold; falls back to bestForegroundFor (with
58
+ * `backgroundAchromatic`) when the gamut is exhausted.
53
59
  */
54
- export declare function ensureReadableInk(ink: string, background: string, minContrast: number): string;
60
+ export declare function ensureReadableInk(ink: string, background: string, minContrast: number, backgroundAchromatic?: boolean): string;
55
61
  /**
56
62
  * Readable accent *text* color for copy that sits directly on a page surface —
57
63
  * eyebrow labels, emphasized words, prices, stat numbers, outline-button labels.
@@ -65,9 +71,13 @@ export declare function ensureReadableInk(ink: string, background: string, minCo
65
71
  * background, so `text-accent-ink` stays legible while remaining recognizably
66
72
  * the brand accent. When the accent already clears 4.5:1 as-is (common on dark
67
73
  * surfaces, or for an already-deep seed) its original lightness is kept.
74
+ * `backgroundAchromatic` is passed on to the high-contrast fallback (see
75
+ * `bestForegroundFor`).
68
76
  */
69
- export declare function accentInkFor(accent: string, background: string): string;
77
+ export declare function accentInkFor(accent: string, background: string, backgroundAchromatic?: boolean): string;
70
78
  /** NaN-safe channel read (achromatic colors have undefined hue in culori). */
71
79
  export declare function channel(value: number | undefined): number;
72
80
  /** Formats an oklch color as `oklch(L C H)` with 2-decimal precision. */
73
81
  export declare function oklchString(color: Oklch): string;
82
+ /** 令牌值(如 `oklch(0.38 0.14 265.87)`)转十六进制;解析不了返回 null。 */
83
+ export declare function oklchCssToHex(value: string): string | null;
@@ -1 +1 @@
1
- import{converter as K,parse as m,wcagContrast as b}from"culori";var p=K("oklch"),I=4.5,F=7,e={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},W={\u84DD:e.blue,\u84DD\u8272:e.blue,\u5929\u84DD:e.sky,\u5929\u84DD\u8272:e.sky,\u6D45\u84DD:e.sky,\u6E56\u84DD:e.ocean,\u6D77\u84DD:e.ocean,\u6DF1\u84DD:e.navy,\u85CF\u84DD:e.navy,\u85CF\u9752:e.navy,\u6D77\u519B\u84DD:e.navy,\u6DF1\u6D77\u519B\u84DD:e.navy,\u5348\u591C\u84DD:e.navy,\u975B\u84DD:e.indigo,\u975B\u9752:e.indigo,\u94A2\u84DD:e["slate blue"],\u9752:e.teal,\u9752\u8272:e.teal,\u84DD\u7EFF:e.teal,\u7EFF:e.green,\u7EFF\u8272:e.green,\u6D45\u7EFF:e.mint,\u8584\u8377\u7EFF:e.mint,\u8349\u7EFF:e.lime,\u6A44\u6984\u7EFF:e.olive,\u58A8\u7EFF:e.forest,\u6DF1\u7EFF:e.forest,\u68EE\u6797\u7EFF:e.forest,\u7FE0\u7EFF:e.emerald,\u7956\u6BCD\u7EFF:e.emerald,\u9EC4:e.yellow,\u9EC4\u8272:e.yellow,\u91D1:e.gold,\u91D1\u8272:e.gold,\u91D1\u9EC4:e.gold,\u7425\u73C0:e.amber,\u7425\u73C0\u8272:e.amber,\u6A59:e.orange,\u6A59\u8272:e.orange,\u6A58\u8272:e.orange,\u6A58\u9EC4:e.orange,\u6D3B\u529B\u6A59:e.orange,\u6696\u6A59:e.orange,\u73CA\u745A:e.coral,\u73CA\u745A\u6A59:e.coral,\u9676\u571F:e.terracotta,\u8D64\u9676:e.terracotta,\u9508\u7EA2:e.rust,\u68D5:e.brown,\u68D5\u8272:e.brown,\u8910\u8272:e.brown,\u5496\u5561\u8272:e.brown,\u7EA2:e.red,\u7EA2\u8272:e.red,\u6731\u7EA2:e.red,\u7EEF\u7EA2:e.crimson,\u6DF1\u7EA2:e.crimson,\u9152\u7EA2:e.wine,\u73AB\u7470:e.rose,\u73AB\u7EA2:e.rose,\u7C89:e.pink,\u7C89\u8272:e.pink,\u7C89\u7EA2:e.pink,\u6D0B\u7EA2:e.magenta,\u54C1\u7EA2:e.magenta,\u7D2B:e.purple,\u7D2B\u8272:e.purple,\u6DE1\u7D2B:e.lavender,\u85B0\u8863\u8349:e.lavender,\u7D2B\u7F57\u5170:e.violet,\u6885\u7EA2:e.plum,\u7070:e.gray,\u7070\u8272:e.gray,\u6D45\u7070:e.gray,\u6DE1\u7070:e.gray,\u51B7\u7070:e["cool gray"],\u51B7\u7070\u767D:e["cool gray"],\u6696\u7070:e.stone,\u6DF1\u7070:e.slate,\u77F3\u58A8\u7070:e.slate,\u77F3\u677F\u7070:e.slate,\u70AD\u7070:e.charcoal,\u70AD\u9ED1:e.charcoal,\u58A8:e.ink,\u58A8\u8272:e.ink,\u9ED1:e.ink,\u9ED1\u8272:e.ink,\u767D:e["clean white"],\u767D\u8272:e["clean white"],\u7C73\u767D:e.cream,\u7C73\u8272:e.cream,\u8C61\u7259\u767D:e.cream,\u5976\u6CB9\u767D:e.cream,\u6C99\u8272:e.sand},N={...e,...W};function te(r){let o=r.colorSeeds??{primary:"slate",accent:"blue",neutral:"zinc"},c=r.surfaceMode,t=y(o.primary||"slate"),n=l(t),s=l(y(o.accent||"blue")),u=o.neutral?y(o.neutral):G(t),a=h(u.h),k,i,d,g,S,O;c==="dark"?(k=l({mode:"oklch",l:.14,c:.03,h:a}),i=l({mode:"oklch",l:.95,c:.02,h:a}),d=l({mode:"oklch",l:.2,c:.04,h:a}),g=l({mode:"oklch",l:.29,c:.05,h:a}),S=l({mode:"oklch",l:.78,c:.02,h:a}),O=l({mode:"oklch",l:.35,c:.06,h:a})):(k=l({mode:"oklch",l:.98,c:.01,h:a}),i=l({mode:"oklch",l:.2,c:.02,h:a}),d=l({mode:"oklch",l:.96,c:.015,h:a}),g=l({mode:"oklch",l:.92,c:.02,h:a}),S=l({mode:"oklch",l:.43,c:.02,h:a}),O=l({mode:"oklch",l:.84,c:.025,h:a}));let f=r.imagePalette;if(f){let T=typeof f.background=="string"&&w(f.background),L=T&&oe(f.background,c);T&&L&&(k=l(y(f.background))),L&&typeof f.card=="string"&&w(f.card)&&(d=l(y(f.card))),L&&typeof f.muted=="string"&&w(f.muted)&&(g=l(y(f.muted))),typeof f.foreground=="string"&&w(f.foreground)?i=R(l(y(f.foreground)),k,I):T&&L&&(i=v(k)),typeof f.border=="string"&&w(f.border)&&(O=ee(l(y(f.border)),k))}typeof o.foreground=="string"&&w(o.foreground)&&(i=R(l(y(o.foreground)),k,I));let C=c!=="dark",E=l({mode:"oklch",l:.96,c:.02,h:a}),M=l({mode:"oklch",l:.2,c:.02,h:a}),P={"--background":k,"--foreground":i,"--card":d,"--card-foreground":i,"--muted":g,"--muted-foreground":S,"--border":O,"--input":O,"--ring":s,"--primary":n,"--primary-foreground":v(n),"--primary-hover":_(n,C),"--accent":s,"--accent-foreground":v(s),"--accent-ink":A(s,k),"--accent-subtle":Q(s,C),"--accent-hover":_(s,C),"--overlay-on-dark":E,"--overlay-on-light":M,"--overlay-on-dark-accent-ink":A(s,M),"--overlay-on-light-accent-ink":A(s,E),"--overlay-on-dark-muted":x(M,a,F),"--overlay-on-light-muted":x(E,a,F)},B=i,V=v(i),$=x(i,a),z=A(s,i),H=p(m(n)??n),U=h(H?.h),q=x(n,U),J=A(s,n);return X({...P,...{"--surface-inverse":B,"--surface-inverse-foreground":V,"--surface-inverse-muted":$,"--surface-inverse-accent-ink":z,"--surface-primary-muted":q,"--surface-primary-accent-ink":J}},o)}function X(r,o){let c=l({mode:"oklch",l:.58,c:.22,h:28}),t=l({mode:"oklch",l:.6,c:.14,h:150}),n=l({mode:"oklch",l:.75,c:.15,h:75}),s={...r,"--popover":"var(--card)","--popover-foreground":"var(--card-foreground)","--secondary":"var(--muted)","--secondary-foreground":"var(--foreground)","--destructive":c,"--destructive-foreground":v(c),"--success":t,"--success-foreground":v(t),"--warning":n,"--warning-foreground":v(n)},[u,a]=Y(o,s);return s["--supporting-0"]=u,s["--supporting-1"]=a,Z(s["--accent"]).forEach((i,d)=>{s[`--chart-${d+1}`]=i}),s}function Y(r,o){let n=(r.supporting??[]).filter(u=>!!(u&&u.trim())).slice(0,2).map(u=>l(y(u))),s=[o["--primary"],o["--accent"]];for(;n.length<2;)n.push(s[n.length]);return[n[0],n[1]]}function w(r){let o=(r??"").trim();if(!o||o.startsWith("#")&&!/^#[0-9A-Fa-f]{3,8}$/.test(o))return!1;let c=N[o.toLowerCase()]??o;return!!m(c)}function y(r,o="paper"){let c=(r??"").trim();if(!c)return y(o);let t=N[c.toLowerCase()]??c,n=m(t);if(n){let s=p(n);if(s)return s}return j(c)}function j(r){let o=2166136261,c=r.toLowerCase();for(let u=0;u<c.length;u++)o^=c.charCodeAt(u),o=Math.imul(o,16777619)>>>0;let t=o%360,n=.08+(o>>>9)%9/100;return{mode:"oklch",l:.52+(o>>>18)%16/100,c:n,h:t}}function G(r){return{mode:"oklch",l:.6,c:.02,h:h(r.h)}}function _(r,o){let c=p(m(r)??r);if(!c)return r;let t=o?-.06:.06,n=Math.max(.06,Math.min(.97,h(c.l)+t));return l({mode:"oklch",l:n,c:h(c.c),h:h(c.h)})}function Q(r,o){let c=p(m(r)??r),t=h(c?.h),n=Math.min(h(c?.c),o?.05:.06);return l({mode:"oklch",l:o?.95:.24,c:n,h:t})}function Z(r){let o=p(m(r)??r),c=h(o?.h),t=Math.max(.12,Math.min(h(o?.c),.16));return[0,72,144,216,288].map(n=>l({mode:"oklch",l:.62,c:t,h:(c+n)%360}))}function v(r){let o=m(r),c=o?p(o):void 0,t=h(c?.h),n={mode:"oklch",l:.99,c:.01,h:t},s={mode:"oklch",l:.18,c:.02,h:t},u=b(o??r,n),a=b(o??r,s);return l(u>=a?n:s)}function R(r,o,c){let t=p(m(r)??r);if(!t)return v(o);if(b(r,o)>=c)return l(t);let n=p(m(o)??o),u=(n?h(n.l)>=.5:!0)?-.02:.02,a=h(t.l),k=h(t.c),i=h(t.h);for(let d=1;d<=50;d++){let g=a+u*d;if(g<=0||g>=1)break;let S={mode:"oklch",l:g,c:k,h:i};if(b(S,o)>=c)return l(S)}return v(o)}var D=1.3;function ee(r,o){let c=p(m(r)??r);if(!c)return r;if(b(r,o)>=D)return l(c);let t=p(m(o)??o),s=(t?h(t.l)>=.5:!0)?-.03:.03,u=h(c.l),a=h(c.c),k=h(c.h);for(let i=1;i<=40;i++){let d=u+s*i;if(d<=0||d>=1)break;let g={mode:"oklch",l:d,c:a,h:k};if(b(g,o)>=D)return l(g)}return r}function oe(r,o){let c=p(m(r)??r);if(!c)return!1;let t=h(c.l)>=.5;return o==="dark"?!t:t}function A(r,o){let c=p(m(r)??r);if(!c)return r;let t=h(c.h),n=h(c.c),s=h(c.l),u=p(m(o)??o),k=(u?h(u.l)>=.5:!0)?-.02:.02;for(let i=0;i<=50;i++){let d=s+k*i;if(d<=0||d>=1)break;let g={mode:"oklch",l:d,c:n,h:t};if(b(g,o)>=I)return l(g)}return v(o)}function x(r,o,c=I){let t=p(m(r)??r),s=(t?h(t.l):.5)>=.5,u=s?.75:.35,a=s?-.02:.02;for(let k=0;k<=50;k++){let i=u+a*k;if(i<=0||i>=1)break;let d={mode:"oklch",l:i,c:.02,h:o};if(b(d,r)>=c)return l(d)}return v(r)}function h(r){return typeof r=="number"&&Number.isFinite(r)?r:0}function l(r){let o=h(r.l),c=h(r.c),t=h(r.h);return`oklch(${o.toFixed(2)} ${c.toFixed(2)} ${t.toFixed(2)})`}export{N as SEMANTIC_SEED_ALIASES,A as accentInkFor,v as bestForegroundFor,h as channel,te as deriveDesignColors,R as ensureReadableInk,w as isResolvableDesignColorSeed,l as oklchString};
1
+ import{converter as oe,formatHex as ce,parse as g,wcagContrast as w}from"culori";var y=oe("oklch"),I=4.5,$=7,e={paper:"oklch(0.92 0.008 250)",cream:"oklch(0.90 0.035 85)",sand:"oklch(0.75 0.05 78)",stone:"oklch(0.60 0.02 75)",ash:"oklch(0.60 0.012 250)",slate:"oklch(0.45 0.025 250)",charcoal:"oklch(0.30 0.015 255)",ink:"oklch(0.25 0.04 260)",sky:"oklch(0.72 0.12 230)",blue:"oklch(0.58 0.17 250)","medical blue":"oklch(0.58 0.12 235)",indigo:"oklch(0.50 0.18 280)",navy:"oklch(0.40 0.10 258)",ocean:"oklch(0.55 0.13 220)","slate blue":"oklch(0.46 0.06 245)",teal:"oklch(0.60 0.12 195)","soft aqua":"oklch(0.78 0.07 190)",mint:"oklch(0.78 0.10 165)",sage:"oklch(0.65 0.05 145)",green:"oklch(0.58 0.15 145)","clinical green":"oklch(0.62 0.12 155)",emerald:"oklch(0.60 0.16 155)",forest:"oklch(0.45 0.10 145)",olive:"oklch(0.58 0.08 115)",lime:"oklch(0.72 0.17 130)",yellow:"oklch(0.82 0.15 100)",gold:"oklch(0.72 0.14 85)",amber:"oklch(0.70 0.16 70)",orange:"oklch(0.66 0.18 55)",coral:"oklch(0.68 0.16 32)",terracotta:"oklch(0.55 0.12 42)",rust:"oklch(0.50 0.13 38)",brown:"oklch(0.45 0.07 55)",rose:"oklch(0.65 0.16 18)",red:"oklch(0.58 0.20 25)",crimson:"oklch(0.52 0.20 22)",wine:"oklch(0.42 0.13 18)",pink:"oklch(0.72 0.14 0)",magenta:"oklch(0.60 0.22 345)",lavender:"oklch(0.72 0.08 295)",violet:"oklch(0.58 0.19 295)",purple:"oklch(0.52 0.19 305)",plum:"oklch(0.45 0.13 325)",electric:"oklch(0.62 0.23 285)","clean white":"oklch(0.97 0.01 245)","cool gray":"oklch(0.62 0.02 245)",zinc:"oklch(0.60 0.012 250)",gray:"oklch(0.60 0.012 250)",grey:"oklch(0.60 0.012 250)",neutral:"oklch(0.60 0.005 250)",gunmetal:"oklch(0.30 0.015 255)"},te={\u84DD:e.blue,\u84DD\u8272:e.blue,\u5929\u84DD:e.sky,\u5929\u84DD\u8272:e.sky,\u6D45\u84DD:e.sky,\u6E56\u84DD:e.ocean,\u6D77\u84DD:e.ocean,\u6DF1\u84DD:e.navy,\u85CF\u84DD:e.navy,\u85CF\u9752:e.navy,\u6D77\u519B\u84DD:e.navy,\u6DF1\u6D77\u519B\u84DD:e.navy,\u5348\u591C\u84DD:e.navy,\u975B\u84DD:e.indigo,\u975B\u9752:e.indigo,\u94A2\u84DD:e["slate blue"],\u9752:e.teal,\u9752\u8272:e.teal,\u84DD\u7EFF:e.teal,\u7EFF:e.green,\u7EFF\u8272:e.green,\u6D45\u7EFF:e.mint,\u8584\u8377\u7EFF:e.mint,\u8349\u7EFF:e.lime,\u6A44\u6984\u7EFF:e.olive,\u58A8\u7EFF:e.forest,\u6DF1\u7EFF:e.forest,\u68EE\u6797\u7EFF:e.forest,\u7FE0\u7EFF:e.emerald,\u7956\u6BCD\u7EFF:e.emerald,\u9EC4:e.yellow,\u9EC4\u8272:e.yellow,\u91D1:e.gold,\u91D1\u8272:e.gold,\u91D1\u9EC4:e.gold,\u7425\u73C0:e.amber,\u7425\u73C0\u8272:e.amber,\u6A59:e.orange,\u6A59\u8272:e.orange,\u6A58\u8272:e.orange,\u6A58\u9EC4:e.orange,\u6D3B\u529B\u6A59:e.orange,\u6696\u6A59:e.orange,\u73CA\u745A:e.coral,\u73CA\u745A\u6A59:e.coral,\u9676\u571F:e.terracotta,\u8D64\u9676:e.terracotta,\u9508\u7EA2:e.rust,\u68D5:e.brown,\u68D5\u8272:e.brown,\u8910\u8272:e.brown,\u5496\u5561\u8272:e.brown,\u7EA2:e.red,\u7EA2\u8272:e.red,\u6731\u7EA2:e.red,\u7EEF\u7EA2:e.crimson,\u6DF1\u7EA2:e.crimson,\u9152\u7EA2:e.wine,\u73AB\u7470:e.rose,\u73AB\u7EA2:e.rose,\u7C89:e.pink,\u7C89\u8272:e.pink,\u7C89\u7EA2:e.pink,\u6D0B\u7EA2:e.magenta,\u54C1\u7EA2:e.magenta,\u7D2B:e.purple,\u7D2B\u8272:e.purple,\u6DE1\u7D2B:e.lavender,\u85B0\u8863\u8349:e.lavender,\u7D2B\u7F57\u5170:e.violet,\u6885\u7EA2:e.plum,\u7070:e.gray,\u7070\u8272:e.gray,\u6D45\u7070:e.gray,\u6DE1\u7070:e.gray,\u51B7\u7070:e["cool gray"],\u51B7\u7070\u767D:e["cool gray"],\u6696\u7070:e.stone,\u6DF1\u7070:e.slate,\u77F3\u58A8\u7070:e.slate,\u77F3\u677F\u7070:e.slate,\u70AD\u7070:e.charcoal,\u70AD\u9ED1:e.charcoal,\u58A8:e.ink,\u58A8\u8272:e.ink,\u9ED1:e.ink,\u9ED1\u8272:e.ink,\u767D:e["clean white"],\u767D\u8272:e["clean white"],\u7C73\u767D:e.cream,\u7C73\u8272:e.cream,\u8C61\u7259\u767D:e.cream,\u5976\u6CB9\u767D:e.cream,\u6C99\u8272:e.sand},q={...e,...te};function me(o){let c=o.colorSeeds??{primary:"slate",accent:"blue",neutral:"zinc"},t=o.surfaceMode,n=v(c.primary||"slate"),r=l(n),i=v(c.accent||"blue"),a=l(i),f=c.neutral?v(c.neutral):se(n),u=h(f.h),s=S(f)?0:1,k,d,p,A,N,T;t==="dark"?(k=l({mode:"oklch",l:.14,c:.03*s,h:u}),d=l({mode:"oklch",l:.95,c:.02*s,h:u}),p=l({mode:"oklch",l:.2,c:.04*s,h:u}),A=l({mode:"oklch",l:.29,c:.05*s,h:u}),N=l({mode:"oklch",l:.78,c:.02*s,h:u}),T=l({mode:"oklch",l:.35,c:.06*s,h:u})):(k=l({mode:"oklch",l:.98,c:.01*s,h:u}),d=l({mode:"oklch",l:.2,c:.02*s,h:u}),p=l({mode:"oklch",l:.96,c:.015*s,h:u}),A=l({mode:"oklch",l:.92,c:.02*s,h:u}),N=l({mode:"oklch",l:.43,c:.02*s,h:u}),T=l({mode:"oklch",l:.84,c:.025*s,h:u}));let D=S(n),J=S(i),O=s===0,C=s===0,m=o.imagePalette;if(m){let x=typeof m.background=="string"&&M(m.background),_=x&&de(m.background,t);if(x&&_){let L=v(m.background);k=l(L),O=S(L)}if(_&&typeof m.card=="string"&&M(m.card)&&(p=l(v(m.card))),_&&typeof m.muted=="string"&&M(m.muted)&&(A=l(v(m.muted))),typeof m.foreground=="string"&&M(m.foreground)){let L=v(m.foreground);d=z(l(L),k,I,O),C=S(L)}else x&&_&&(d=b(k,O),C=O);typeof m.border=="string"&&M(m.border)&&(T=ue(l(v(m.border)),k))}if(typeof c.foreground=="string"&&M(c.foreground)){let x=v(c.foreground);d=z(l(x),k,I,O),C=S(x)}let H=t!=="dark",P=l({mode:"oklch",l:.96,c:.02*s,h:u}),B=l({mode:"oklch",l:.2,c:.02*s,h:u}),W={"--background":k,"--foreground":d,"--card":p,"--card-foreground":d,"--muted":A,"--muted-foreground":N,"--border":T,"--input":T,"--ring":a,"--primary":r,"--primary-foreground":b(r,D),"--primary-hover":U(r,H),"--accent":a,"--accent-foreground":b(a,J),"--accent-ink":E(a,k,O),"--accent-subtle":he(a,H),"--accent-hover":U(a,H),"--overlay-on-dark":P,"--overlay-on-light":B,"--overlay-on-dark-accent-ink":E(a,B),"--overlay-on-light-accent-ink":E(a,P),"--overlay-on-dark-muted":R(B,u,$,F*s),"--overlay-on-light-muted":R(P,u,$,F*s)},X=d,Y=b(d,C),j=R(d,u,I,F*s,C),G=E(a,d,C),V=y(g(r)??r),Q=h(V?.h),Z=R(r,Q,I,V&&S(V)?0:F,D),ee=E(a,r,D);return re({...W,...{"--surface-inverse":X,"--surface-inverse-foreground":Y,"--surface-inverse-muted":j,"--surface-inverse-accent-ink":G,"--surface-primary-muted":Z,"--surface-primary-accent-ink":ee}},c)}function re(o,c){let t=l({mode:"oklch",l:.58,c:.22,h:28}),n=l({mode:"oklch",l:.6,c:.14,h:150}),r=l({mode:"oklch",l:.75,c:.15,h:75}),i={...o,"--popover":"var(--card)","--popover-foreground":"var(--card-foreground)","--secondary":"var(--muted)","--secondary-foreground":"var(--foreground)","--destructive":t,"--destructive-foreground":b(t),"--success":n,"--success-foreground":b(n),"--warning":r,"--warning-foreground":b(r)},[a,f]=ne(c,i);return i["--supporting-0"]=a,i["--supporting-1"]=f,ie(i["--accent"]).forEach((s,k)=>{i[`--chart-${k+1}`]=s}),i}function ne(o,c){let r=(o.supporting??[]).filter(a=>!!(a&&a.trim())).slice(0,2).map(a=>l(v(a))),i=[c["--primary"],c["--accent"]];for(;r.length<2;)r.push(i[r.length]);return[r[0],r[1]]}function M(o){let c=(o??"").trim();if(!c||c.startsWith("#")&&!/^#[0-9A-Fa-f]{3,8}$/.test(c))return!1;let t=q[c.toLowerCase()]??c;return!!g(t)}function v(o,c="paper"){let t=(o??"").trim();if(!t)return v(c);let n=q[t.toLowerCase()]??t,r=g(n);if(r){let i=y(r);if(i)return i}return le(t)}function le(o){let c=2166136261,t=o.toLowerCase();for(let a=0;a<t.length;a++)c^=t.charCodeAt(a),c=Math.imul(c,16777619)>>>0;let n=c%360,r=.08+(c>>>9)%9/100;return{mode:"oklch",l:.52+(c>>>18)%16/100,c:r,h:n}}function se(o){return S(o)?{mode:"oklch",l:.6,c:0}:{mode:"oklch",l:.6,c:.02,h:h(o.h)}}var F=.02,ae=.002;function S(o){return typeof o.h!="number"||!Number.isFinite(o.h)||h(o.c)<ae}function U(o,c){let t=y(g(o)??o);if(!t)return o;let n=c?-.06:.06,r=Math.max(.06,Math.min(.97,h(t.l)+n));return l({mode:"oklch",l:r,c:h(t.c),h:h(t.h)})}function he(o,c){let t=y(g(o)??o),n=h(t?.h),r=Math.min(h(t?.c),c?.05:.06);return l({mode:"oklch",l:c?.95:.24,c:r,h:n})}function ie(o){let c=y(g(o)??o),t=h(c?.h),n=Math.max(.12,Math.min(h(c?.c),.16));return[0,72,144,216,288].map(r=>l({mode:"oklch",l:.62,c:n,h:(t+r)%360}))}function b(o,c){let t=g(o),n=t?y(t):void 0,r=h(n?.h),i=c??(!n||S(n))?0:1,a={mode:"oklch",l:.99,c:.01*i,h:r},f={mode:"oklch",l:.18,c:.02*i,h:r},u=w(t??o,a),s=w(t??o,f);return l(u>=s?a:f)}function z(o,c,t,n){let r=y(g(o)??o);if(!r)return b(c,n);if(w(o,c)>=t)return l(r);let i=y(g(c)??c),f=(i?h(i.l)>=.5:!0)?-.02:.02,u=h(r.l),s=h(r.c),k=h(r.h);for(let d=1;d<=50;d++){let p=u+f*d;if(p<=0||p>=1)break;let A={mode:"oklch",l:p,c:s,h:k};if(w(A,c)>=t)return l(A)}return b(c,n)}var K=1.3;function ue(o,c){let t=y(g(o)??o);if(!t)return o;if(w(o,c)>=K)return l(t);let n=y(g(c)??c),i=(n?h(n.l)>=.5:!0)?-.03:.03,a=h(t.l),f=h(t.c),u=h(t.h);for(let s=1;s<=40;s++){let k=a+i*s;if(k<=0||k>=1)break;let d={mode:"oklch",l:k,c:f,h:u};if(w(d,c)>=K)return l(d)}return o}function de(o,c){let t=y(g(o)??o);if(!t)return!1;let n=h(t.l)>=.5;return c==="dark"?!n:n}function E(o,c,t){let n=y(g(o)??o);if(!n)return o;let r=h(n.h),i=h(n.c),a=h(n.l),f=y(g(c)??c),s=(f?h(f.l)>=.5:!0)?-.02:.02;for(let k=0;k<=50;k++){let d=a+s*k;if(d<=0||d>=1)break;let p={mode:"oklch",l:d,c:i,h:r};if(w(p,c)>=I)return l(p)}return b(c,t)}function R(o,c,t=I,n=F,r){let i=y(g(o)??o),f=(i?h(i.l):.5)>=.5,u=f?.75:.35,s=f?-.02:.02;for(let k=0;k<=50;k++){let d=u+s*k;if(d<=0||d>=1)break;let p={mode:"oklch",l:d,c:n,h:c};if(w(p,o)>=t)return l(p)}return b(o,r)}function h(o){return typeof o=="number"&&Number.isFinite(o)?o:0}function l(o){let c=h(o.l),t=h(o.c),n=h(o.h);return`oklch(${c.toFixed(2)} ${t.toFixed(2)} ${n.toFixed(2)})`}function ge(o){let c=g(o.trim());return c?ce(c)??null:null}export{q as SEMANTIC_SEED_ALIASES,E as accentInkFor,b as bestForegroundFor,h as channel,me as deriveDesignColors,z as ensureReadableInk,M as isResolvableDesignColorSeed,ge as oklchCssToHex,l as oklchString};