@aurora-ds/theme 2.0.0 → 3.0.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/README.md +506 -546
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +277 -415
- package/dist/index.d.ts +277 -415
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/README.dev.md +0 -424
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {createContext,useLayoutEffect,useContext}from'react';import {jsx}from'react/jsx-runtime';var L=typeof document>"u",A=null,m=null,I=[],V=new Map([["backgroundColor","background-color"],["borderRadius","border-radius"],["fontSize","font-size"],["fontWeight","font-weight"],["lineHeight","line-height"],["marginTop","margin-top"],["marginBottom","margin-bottom"],["marginLeft","margin-left"],["marginRight","margin-right"],["paddingTop","padding-top"],["paddingBottom","padding-bottom"],["paddingLeft","padding-left"],["paddingRight","padding-right"],["textAlign","text-align"],["justifyContent","justify-content"],["alignItems","align-items"],["flexDirection","flex-direction"],["flexWrap","flex-wrap"],["boxShadow","box-shadow"],["zIndex","z-index"]]),z=new Map,p=new Set,W=new Set,K=new Set,N=0,Fe=new Set(["animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","fontWeight","lineHeight","opacity","order","orphans","widows","zIndex","zoom"]),Z=100;if(!L){let e=document.getElementById("aurora-styles");if(e)m=e.sheet;else {let t=document.createElement("style");t.id="aurora-styles",document.head.appendChild(t),m=t.sheet;}}var y=e=>{let t=A;return A=e,t},E=()=>A?.(),l=e=>{if(L)I.push(e);else if(m)try{m.insertRule(e,m.cssRules.length);}catch{}},g=e=>{let t=V.get(e);return t||(t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),V.set(e,t)),t},h=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase(),Ae=/expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|@import|<\s*\/?\s*style/i,_=e=>{let t=e.replace(/\0/g,"");return Ae.test(t)?"unset":t},D=(e,t)=>typeof t=="number"&&!Fe.has(e)?`${t}px`:_(String(t)),u=e=>{let t="";for(let r in e){let o=e[r];o!=null&&typeof o!="object"&&(t+=`${g(r)}:${D(r,o)};`);}return t};var M=e=>{let t=e.length;if(t===0)return "";if(t===1){let r=e[0];if(r===void 0)return "u";if(r===null)return "n";if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")return String(r)}if(t<=4){let r="";for(let o=0;o<t;o++){let n=e[o],s=typeof n;if(n===void 0)r+=o?"|u":"u";else if(n===null)r+=o?"|n":"n";else if(s==="string"||s==="number"||s==="boolean")r+=o?"|"+n:String(n);else return JSON.stringify(e)}return r}return JSON.stringify(e)},G=e=>{let t=e.charCodeAt(0);if(e.length<20){if(t>=97&&t<=122||t>=65&&t<=90){let n=true;for(let s=1;s<e.length;s++){let i=e.charCodeAt(s);if(!(i>=97&&i<=122||i>=65&&i<=90||i>=48&&i<=57)){n=false;break}}if(n)return h(e)}else if(t===45||t>=48&&t<=57){let n=true;for(let s=1;s<e.length;s++)if(e.charCodeAt(s)<48||e.charCodeAt(s)>57){n=false;break}if(n)return e}}let r=5381,o=e.length;for(let n=0;n<o;n++)r=(r<<5)+r^e.charCodeAt(n);return (r>>>0).toString(36)},J=e=>{let t=new Map;return {getOrSet(r,o){let n=t.get(r);if(n!==void 0)return t.delete(r),t.set(r,n),n;let s=o();if(t.size>=e){let i=t.keys().next().value;i!==void 0&&t.delete(i);}return t.set(r,s),s}}},j=e=>{let t=JSON.stringify(e),r=5381,o=t.length;for(let n=0;n<o;n++)r=(r<<5)+r^t.charCodeAt(n);return (r>>>0).toString(36)},U=e=>{let t=5381,r=e.length;for(let o=0;o<r;o++)t=(t<<5)+t^e.charCodeAt(o);return (t>>>0).toString(36)},ze=e=>{if(!p.has(e))return p.add(e),e;let t=2;for(;p.has(`${e}-${t}`);)t++;let r=`${e}-${t}`;return p.add(r),r},B=(e,t,r=false)=>{if(r){let i=j(e),f=z.get(i);if(f)return f}let o=ze(t),n="",s="";for(let i in e){let f=e[i],d=i[0];if(d==="@"){let c=u(f);c&&(s+=`${i}{.${o}{${c}}}`);}else if(d==="&"){let c=u(f);c&&(s+=`${i.replace(/&/g,`.${o}`)}{${c}}`);}else if(d===":"){let c=u(f);c&&(s+=`.${o}${i}{${c}}`);}else f!=null&&typeof f!="object"&&(n+=`${g(i)}:${D(i,f)};`);}return n&&l(`.${o}{${n}}`),s&&l(s),r&&z.set(j(e),o),o},X=e=>W.has(e),q=e=>{W.add(e);},Q=()=>(++N).toString(36),Y=e=>K.has(e),ee=e=>{K.add(e);},H=()=>I,te=()=>{I=[],z.clear(),p.clear(),W.clear(),K.clear(),N=0;};var re=createContext(void 0),Ee=({theme:e,children:t})=>{let r=y(()=>e);return useLayoutEffect(()=>()=>{y(r);},[r]),jsx(re.Provider,{value:e,children:t})},Be=()=>{let e=useContext(re);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e};var oe={25:"#fffdfb",50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"};var ne={25:"#f5f8ff",50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"};var se={25:"#f3fefe",50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"};var ae={25:"#f5fefc",50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"};var ie={25:"#fef5ff",50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"};var fe={25:"#fcfcfc",50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"};var ce={25:"#f6fef9",50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"};var le={25:"#f5f7ff",50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"};var de={25:"#fbfef8",50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"};var pe={25:"#fffcfa",50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"};var me={25:"#fef5f9",50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"};var ue={25:"#faf5ff",50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"};var ge={25:"#fffbfb",50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"};var he={25:"#fff5f6",50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"};var xe={25:"#f5faff",50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e",950:"#082f49"};var ye={25:"#fcfcfd",50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"};var Te={25:"#fcfcfb",50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"};var Se={25:"#f4fefe",50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"};var be={25:"#f8f5ff",50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"};var Ce={25:"#fefef9",50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"};var a={gray:fe,slate:ye,stone:Te,red:ge,orange:pe,amber:oe,yellow:Ce,lime:de,green:ce,emerald:ae,teal:Se,cyan:se,sky:xe,blue:ne,indigo:le,violet:be,purple:ue,fuchsia:ie,pink:me,rose:he,white:"#ffffff",black:"#000000",transparent:"transparent",current:"currentColor"};var T={background:a.slate[25],surface:a.white,surfaceHover:a.slate[100],surfaceActive:a.slate[200],text:a.slate[800],textSecondary:a.slate[500],textTertiary:a.slate[400],primary:a.indigo[600],primaryHover:a.indigo[700],primaryActive:a.indigo[800],primarySubtle:a.indigo[50],primaryDisabled:a.indigo[300],onPrimary:a.white,secondary:a.slate[100],secondaryHover:a.slate[200],secondaryActive:a.slate[300],secondarySubtle:a.slate[50],secondaryDisabled:a.slate[200],onSecondary:a.slate[700],border:a.slate[200],disabledText:a.slate[400],disabled:a.slate[300],success:a.emerald[600],successSubtle:a.emerald[50],warning:a.amber[500],warningSubtle:a.amber[50],error:a.red[600],errorHover:a.red[700],errorSubtle:a.red[50],onError:a.white,info:a.blue[600],infoSubtle:a.blue[50],link:a.indigo[600],linkHover:a.indigo[700],linkActive:a.indigo[800],linkDisabled:a.indigo[300]};var S={none:"0","2xs":"0.125rem",xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem","4xl":"6rem","5xl":"8rem"},b={none:"0",xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem",full:"9999px"},C={none:"none",xs:"0 1px 2px 0 rgb(0 0 0 / 0.05)",sm:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",focus:"0 0 0 3px rgb(99 102 241 / 0.4)"},R={"2xs":"0.625rem",xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.25rem",xl:"1.5rem","2xl":"2rem","3xl":"2.5rem","4xl":"3rem","5xl":"4rem"},w={light:300,regular:400,medium:500,semibold:600,bold:700},$={none:1,tight:1.25,normal:1.5,relaxed:1.75,loose:2},k={behind:-1,base:0,dropdown:1e3,sticky:1100,overlay:1300,modal:1400,popover:1500,tooltip:1600,toast:1700},v={fast:"150ms ease-out",normal:"250ms ease-out",slow:"350ms ease-out"},P={none:0,lowest:.05,low:.1,medium:.25,high:.5,higher:.75,full:1},F={xs:"480px",sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},Oe={colors:T,spacing:S,radius:b,shadows:C,fontSize:R,fontWeight:w,lineHeight:$,zIndex:k,transition:v,opacity:P,breakpoints:F};var Re=e=>{let t=JSON.stringify(e),r=5381,o=t.length;for(let n=0;n<o;n++)r=(r<<5)+r^t.charCodeAt(n);return (r>>>0).toString(36)},x=new Map,Ve=50;var O=(e,t)=>{let r={...e};for(let o in t){let n=t[o];if(n===void 0)continue;let s=e[o];n!==null&&typeof n=="object"&&!Array.isArray(n)&&s!==null&&typeof s=="object"?r[o]=O(s,n):r[o]=n;}return r},je=(e,t)=>({...e,...t}),we=(e,t,r={})=>{let{mode:o="merge"}=r,n=`${Re(e)}_${Re(t)}_${o}`,s=x.get(n);if(s)return s;let i=o==="replace"?je(e,t):O(e,t);if(x.size>=Ve){let f=x.keys().next().value;f&&x.delete(f);}return x.set(n,i),i},Le=(e,...t)=>t.reduce((r,o)=>O(r,o),e),Ne=e=>t=>we(t,e),Ze=e=>({colors:e.colors,spacing:e.spacing??S,radius:e.radius??b,shadows:e.shadows??C,fontSize:e.fontSize??R,fontWeight:e.fontWeight??w,lineHeight:e.lineHeight??$,zIndex:e.zIndex??k,transition:e.transition??v,opacity:e.opacity??P,breakpoints:e.breakpoints??F});var _e=()=>{let e=new Error().stack||"",t=e.match(/([A-Za-z0-9_]+)\.styles\.[tj]s/);if(t?.[1])return h(t[1]);let r=e.match(/\/([A-Za-z0-9_]+)\.[tj]sx?[:\d]*\)?$/m);return r?.[1]&&r[1]!=="createStyles"?h(r[1]):"style"},$e=(e,t)=>{let r={};for(let o in e){let n=e[o];if(n){let s=`${t}-${h(o)}`;if(typeof n=="function"){let i=J(Z);r[o]=(...f)=>{let d=M(f);return i.getOrSet(d,()=>{let c=n(...f);return B(c,`${s}-${G(d)}`)})};}else r[o]=B(n,s,true);}}return r},ke=e=>{let t=_e();if(typeof e=="function"){let r=null,o;return new Proxy({},{get(n,s){let i=E();if(!i)throw new Error("createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.");return (i!==o||!r)&&(r=$e(e(i),t),o=i),r[s]}})}return $e(e,t)},De=()=>e=>ke(e);var Me=e=>{let t="";for(let o in e)t+=`${o}{${u(e[o])}}`;if(X(t))return `aurora-kf-${U(t)}`;let r=`aurora-kf-${Q()}`;return l(`@keyframes ${r}{${t}}`),q(t),r};var Ge=e=>{let{fontFamily:t,src:r,fontStyle:o="normal",fontWeight:n=400,fontDisplay:s="swap",unicodeRange:i}=e,f=`font-family:"${t}";`;return f+=`src:${r};`,f+=`font-style:${o};`,f+=`font-weight:${n};`,f+=`font-display:${s};`,i&&(f+=`unicode-range:${i};`),Y(f)||(l(`@font-face{${f}}`),ee(f)),t};var ve=(e,t)=>{let r="";for(let o in e){let n=e[o],s=g(o);n&&typeof n=="object"?r+=ve(n,`${t}-${s}`):n!=null&&(r+=`--${t}-${s}:${n};`);}return r},Je=(e,t="theme")=>{let r=ve(e,t);l(`:root{${r}}`);},Ue=(e,t)=>{let r=`--theme-${e.replace(/\./g,"-")}`;return t?`var(${r}, ${t})`:`var(${r})`},Xe=(e,t={})=>{let{prefix:r="",inject:o=false}=t,n={},s="";for(let i in e){let f=g(i),d=r?`--${r}-${f}`:`--${f}`;n[i]=`var(${d})`,o&&(s+=`${d}:${e[i]};`);}return o&&s&&l(`:root{${s}}`),n};var Pe=()=>H().join(""),qe=()=>{let e=Pe();return e?`<style id="aurora-styles">${e}</style>`:""},Qe=()=>{te();},Ye=()=>[...H()];export{Ee as ThemeProvider,Qe as clearSSRRules,a as colors,Ze as createCustomTheme,ke as createStyles,we as createTheme,Ne as createThemeVariant,De as createTypedStyles,Ue as cssVar,Xe as cssVariables,F as defaultBreakpoints,R as defaultFontSize,w as defaultFontWeight,$ as defaultLineHeight,P as defaultOpacity,T as defaultPalette,b as defaultRadius,C as defaultShadows,S as defaultSpacing,Oe as defaultTheme,v as defaultTransition,k as defaultZIndex,Ge as fontFace,Ye as getSSRRulesArray,qe as getSSRStyleTag,Pe as getSSRStyles,E as getTheme,Je as injectCssVariables,l as insertRule,Me as keyframes,Le as mergeThemes,_ as sanitizeCssValue,y as setThemeContextGetter,Be as useTheme};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {createContext,useLayoutEffect,useContext}from'react';import {jsx}from'react/jsx-runtime';var V=typeof document>"u",y=null,p=null,b=[],H=new Map([["backgroundColor","background-color"],["borderRadius","border-radius"],["fontSize","font-size"],["fontWeight","font-weight"],["lineHeight","line-height"],["marginTop","margin-top"],["marginBottom","margin-bottom"],["marginLeft","margin-left"],["marginRight","margin-right"],["paddingTop","padding-top"],["paddingBottom","padding-bottom"],["paddingLeft","padding-left"],["paddingRight","padding-right"],["textAlign","text-align"],["justifyContent","justify-content"],["alignItems","align-items"],["flexDirection","flex-direction"],["flexWrap","flex-wrap"],["boxShadow","box-shadow"],["zIndex","z-index"]]),S=new Map,d=new Set,T=new Set,C=new Set,j=0,$e=new Set(["animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","fontWeight","lineHeight","opacity","order","orphans","widows","zIndex","zoom"]),N=100;if(!V){let e=document.getElementById("aurora-styles");if(e)p=e.sheet;else {let t=document.createElement("style");t.id="aurora-styles",document.head.appendChild(t),p=t.sheet;}}var x=e=>{let t=y;return y=e,t},R=()=>y?.(),l=e=>{if(V)b.push(e);else if(p)try{p.insertRule(e,p.cssRules.length);}catch{}},m=e=>{let t=H.get(e);return t||(t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),H.set(e,t)),t},g=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase(),we=/expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|@import|<\s*\/?\s*style/i,O=e=>{let t=e.replace(/\0/g,"");return we.test(t)?"unset":t},L=(e,t)=>typeof t=="number"&&!$e.has(e)?`${t}px`:O(String(t)),u=e=>{let t="";for(let r in e){let o=e[r];o!=null&&typeof o!="object"&&(t+=`${m(r)}:${L(r,o)};`);}return t};var Z=e=>{let t=e.length;if(t===0)return "";if(t===1){let r=e[0];if(r===void 0)return "u";if(r===null)return "n";if(typeof r=="string"||typeof r=="number"||typeof r=="boolean")return String(r)}if(t<=4){let r="";for(let o=0;o<t;o++){let n=e[o],s=typeof n;if(n===void 0)r+=o?"|u":"u";else if(n===null)r+=o?"|n":"n";else if(s==="string"||s==="number"||s==="boolean")r+=o?"|"+n:String(n);else return JSON.stringify(e)}return r}return JSON.stringify(e)},_=e=>{let t=e.charCodeAt(0);if(e.length<20){if(t>=97&&t<=122||t>=65&&t<=90){let n=true;for(let s=1;s<e.length;s++){let a=e.charCodeAt(s);if(!(a>=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57)){n=false;break}}if(n)return g(e)}else if(t===45||t>=48&&t<=57){let n=true;for(let s=1;s<e.length;s++)if(e.charCodeAt(s)<48||e.charCodeAt(s)>57){n=false;break}if(n)return e}}let r=5381,o=e.length;for(let n=0;n<o;n++)r=(r<<5)+r^e.charCodeAt(n);return (r>>>0).toString(36)},M=e=>{let t=new Map;return {getOrSet(r,o){let n=t.get(r);if(n!==void 0)return t.delete(r),t.set(r,n),n;let s=o();if(t.size>=e){let a=t.keys().next().value;a!==void 0&&t.delete(a);}return t.set(r,s),s}}},E=e=>{let t=JSON.stringify(e),r=5381,o=t.length;for(let n=0;n<o;n++)r=(r<<5)+r^t.charCodeAt(n);return (r>>>0).toString(36)},G=e=>{let t=5381,r=e.length;for(let o=0;o<r;o++)t=(t<<5)+t^e.charCodeAt(o);return (t>>>0).toString(36)},ke=e=>{if(!d.has(e))return d.add(e),e;let t=2;for(;d.has(`${e}-${t}`);)t++;let r=`${e}-${t}`;return d.add(r),r},$=(e,t,r=false)=>{if(r){let s=E(e),a=S.get(s);if(a)return a}let o=ke(t),n="";for(let s in e){let a=e[s],f=s[0];if(f==="@"){let c=u(a);c&&l(`${s}{.${o}{${c}}}`);}else if(f==="&"){let c=u(a);c&&l(`${s.replace(/&/g,`.${o}`)}{${c}}`);}else if(f===":"){let c=u(a);c&&l(`.${o}${s}{${c}}`);}else a!=null&&typeof a!="object"&&(n+=`${m(s)}:${L(s,a)};`);}return n&&l(`.${o}{${n}}`),r&&S.set(E(e),o),o},D=e=>T.has(e),J=e=>{T.add(e);},U=()=>(++j).toString(36),q=e=>C.has(e),X=e=>{C.add(e);},w=()=>b,Q=()=>{b=[],S.clear(),d.clear(),T.clear(),C.clear(),j=0;};var Y=createContext(void 0),Ae=({theme:e,children:t})=>{let r=x(()=>e);return useLayoutEffect(()=>()=>{x(r);},[r]),jsx(Y.Provider,{value:e,children:t})},ze=()=>{let e=useContext(Y);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e};var k={none:"0","2xs":"0.125rem",xs:"0.25rem",sm:"0.5rem",md:"1rem",lg:"1.5rem",xl:"2rem","2xl":"3rem","3xl":"4rem","4xl":"6rem","5xl":"8rem"},v={none:"0",xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem",full:"9999px"},P={none:"none",xs:"0 1px 2px 0 rgb(0 0 0 / 0.05)",sm:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",focus:"0 0 0 3px rgb(99 102 241 / 0.4)"},F={"2xs":"0.625rem",xs:"0.75rem",sm:"0.875rem",md:"1rem",lg:"1.25rem",xl:"1.5rem","2xl":"2rem","3xl":"2.5rem","4xl":"3rem","5xl":"4rem"},A={light:300,regular:400,medium:500,semibold:600,bold:700},z={none:1,tight:1.25,normal:1.5,relaxed:1.75,loose:2},K={behind:-1,base:0,dropdown:1e3,sticky:1100,overlay:1300,modal:1400,popover:1500,tooltip:1600,toast:1700},I={fast:"150ms ease-out",normal:"250ms ease-out",slow:"350ms ease-out"},W={none:0,lowest:.05,low:.1,medium:.25,high:.5,higher:.75,full:1},B={xs:"480px",sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"};var ee={25:"#fffdfb",50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f",950:"#451a03"};var te={25:"#f5f8ff",50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a",950:"#172554"};var re={25:"#f3fefe",50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63",950:"#083344"};var oe={25:"#f5fefc",50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b",950:"#022c22"};var ne={25:"#fef5ff",50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75",950:"#4a044e"};var se={25:"#fcfcfc",50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b",950:"#09090b"};var ie={25:"#f6fef9",50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d",950:"#052e16"};var ae={25:"#f5f7ff",50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81",950:"#1e1b4b"};var fe={25:"#fbfef8",50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314",950:"#1a2e05"};var ce={25:"#fffcfa",50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12",950:"#431407"};var le={25:"#fef5f9",50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843",950:"#500724"};var de={25:"#faf5ff",50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87",950:"#3b0764"};var pe={25:"#fffbfb",50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d",950:"#450a0a"};var ue={25:"#fff5f6",50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337",950:"#4c0519"};var me={25:"#fcfcfd",50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a",950:"#020617"};var ge={25:"#fcfcfb",50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917",950:"#0c0a09"};var xe={25:"#f4fefe",50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a",950:"#042f2e"};var he={25:"#f8f5ff",50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95",950:"#2e1065"};var ye={25:"#fefef9",50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12",950:"#422006"};var i={gray:se,slate:me,stone:ge,red:pe,orange:ce,amber:ee,yellow:ye,lime:fe,green:ie,emerald:oe,teal:xe,cyan:re,blue:te,indigo:ae,violet:he,purple:de,fuchsia:ne,pink:le,rose:ue,white:"#ffffff",black:"#000000",transparent:"transparent",current:"currentColor"};var h={background:i.slate[25],surface:i.white,surfaceHover:i.slate[100],surfaceActive:i.slate[200],text:i.slate[800],textSecondary:i.slate[500],textTertiary:i.slate[400],primary:i.indigo[600],primaryHover:i.indigo[700],primaryActive:i.indigo[800],primarySubtle:i.indigo[50],primaryDisabled:i.indigo[300],onPrimary:i.white,secondary:i.slate[100],secondaryHover:i.slate[200],secondaryActive:i.slate[300],secondarySubtle:i.slate[50],secondaryDisabled:i.slate[200],onSecondary:i.slate[700],border:i.slate[200],disabledText:i.slate[400],disabled:i.slate[300],success:i.emerald[600],successSubtle:i.emerald[50],warning:i.amber[500],warningSubtle:i.amber[50],error:i.red[600],errorHover:i.red[700],errorSubtle:i.red[50],onError:i.white,info:i.blue[600],infoSubtle:i.blue[50],link:i.indigo[600],linkHover:i.indigo[700],linkActive:i.indigo[800],linkDisabled:i.indigo[300]};var Ie=e=>({colors:e?.colors??h,spacing:e?.spacing??k,radius:e?.radius??v,shadows:e?.shadows??P,fontSize:e?.fontSize??F,fontWeight:e?.fontWeight??A,lineHeight:e?.lineHeight??z,zIndex:e?.zIndex??K,transition:e?.transition??I,opacity:e?.opacity??W,breakpoints:e?.breakpoints??B});var We=()=>{let e=new Error().stack||"",t=e.match(/([A-Za-z0-9_]+)\.styles\.[tj]s/);if(t?.[1])return g(t[1]);let r=e.match(/\/([A-Za-z0-9_]+)\.[tj]sx?[:\d]*\)?$/m);return r?.[1]&&r[1]!=="createStyles"?g(r[1]):"style"},Se=(e,t)=>{let r={};for(let o in e){let n=e[o];if(n){let s=`${t}-${g(o)}`;if(typeof n=="function"){let a=M(N);r[o]=(...f)=>{let c=Z(f);return a.getOrSet(c,()=>{let Re=n(...f);return $(Re,`${s}-${_(c)}`)})};}else r[o]=$(n,s,true);}}return r},be=e=>{let t=We();if(typeof e=="function"){let r=null,o;return new Proxy({},{get(n,s){let a=R();if(!a)throw new Error("createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.");return (a!==o||!r)&&(r=Se(e(a),t),o=a),r[s]}})}return Se(e,t)},Be=()=>e=>be(e);var He=e=>{let t="";for(let o in e)t+=`${o}{${u(e[o])}}`;if(D(t))return `aurora-kf-${G(t)}`;let r=`aurora-kf-${U()}`;return l(`@keyframes ${r}{${t}}`),J(t),r};var Ee=e=>{let{fontFamily:t,src:r,fontStyle:o="normal",fontWeight:n=400,fontDisplay:s="swap",unicodeRange:a}=e,f=`font-family:"${t}";`;return f+=`src:${r};`,f+=`font-style:${o};`,f+=`font-weight:${n};`,f+=`font-display:${s};`,a&&(f+=`unicode-range:${a};`),q(f)||(l(`@font-face{${f}}`),X(f)),t};var Te=(e,t)=>{let r="";for(let o in e){let n=e[o],s=m(o);n&&typeof n=="object"?r+=Te(n,`${t}-${s}`):n!=null&&(r+=`--${t}-${s}:${n};`);}return r},Ve=(e,t="theme")=>{let r=Te(e,t);l(`:root{${r}}`);},je=(e,t)=>{let r=`--theme-${e.replace(/\./g,"-")}`;return t?`var(${r}, ${t})`:`var(${r})`},Ne=(e,t={})=>{let{prefix:r="",inject:o=false}=t,n={},s="";for(let a in e){let f=m(a),c=r?`--${r}-${f}`:`--${f}`;n[a]=`var(${c})`,o&&(s+=`${c}:${e[a]};`);}return o&&s&&l(`:root{${s}}`),n};var Ce=()=>w().join(""),Oe=()=>{let e=Ce();return e?`<style id="aurora-styles">${e}</style>`:""},Le=()=>{Q();},Ze=()=>[...w()];export{Ae as ThemeProvider,Le as clearSSRRules,i as colors,be as createStyles,Ie as createTheme,Be as createTypedStyles,je as cssVar,Ne as cssVariables,B as defaultBreakpoints,F as defaultFontSize,A as defaultFontWeight,z as defaultLineHeight,W as defaultOpacity,h as defaultPalette,v as defaultRadius,P as defaultShadows,k as defaultSpacing,I as defaultTransition,K as defaultZIndex,Ee as fontFace,Ze as getSSRRulesArray,Oe as getSSRStyleTag,Ce as getSSRStyles,R as getTheme,Ve as injectCssVariables,l as insertRule,He as keyframes,O as sanitizeCssValue,x as setThemeContextGetter,ze as useTheme};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/styles/styleEngine.ts","../src/providers/ThemeProvider.tsx","../src/utils/theme/colors/amber.ts","../src/utils/theme/colors/blue.ts","../src/utils/theme/colors/cyan.ts","../src/utils/theme/colors/emerald.ts","../src/utils/theme/colors/fuchsia.ts","../src/utils/theme/colors/gray.ts","../src/utils/theme/colors/green.ts","../src/utils/theme/colors/indigo.ts","../src/utils/theme/colors/lime.ts","../src/utils/theme/colors/orange.ts","../src/utils/theme/colors/pink.ts","../src/utils/theme/colors/purple.ts","../src/utils/theme/colors/red.ts","../src/utils/theme/colors/rose.ts","../src/utils/theme/colors/sky.ts","../src/utils/theme/colors/slate.ts","../src/utils/theme/colors/stone.ts","../src/utils/theme/colors/teal.ts","../src/utils/theme/colors/violet.ts","../src/utils/theme/colors/yellow.ts","../src/utils/theme/colors/index.ts","../src/utils/theme/palettes/default.ts","../src/utils/theme/defaultTheme.ts","../src/utils/theme/createTheme.ts","../src/utils/styles/createStyles.ts","../src/utils/styles/keyframes.ts","../src/utils/styles/fontFace.ts","../src/utils/styles/cssVariables.ts","../src/utils/styles/ssr.ts"],"names":["IS_SERVER","themeContextGetter","styleSheet","ssrRules","cssKeyCache","staticStyleCache","usedClassNames","injectedKeyframes","injectedFontFaces","keyframeCounter","UNITLESS_PROPERTIES","MAX_CACHE_SIZE","existingStyle","style","setThemeContextGetter","getter","previous","getTheme","insertRule","rule","toKebabCase","key","cached","toKebabCaseClassName","name","CSS_INJECTION_PATTERNS","sanitizeCssValue","value","cleaned","toCssValue","objectToCss","obj","result","createCacheKey","args","len","arg","i","t","cacheKeyToSuffix","firstChar","valid","c","hash","createLRUCache","maxSize","cache","factory","existing","firstKey","hashStyles","styles","str","hashString","getUniqueClassName","baseName","counter","generateCssClass","className","useCache","uniqueName","baseCss","specialRules","innerCss","hasKeyframes","css","addKeyframes","getNextKeyframeId","hasFontFace","addFontFace","getSSRRulesInternal","resetState","ThemeContext","createContext","ThemeProvider","theme","children","previousGetter","useLayoutEffect","jsx","useTheme","useContext","amber","blue","cyan","emerald","fuchsia","gray","green","indigo","lime","orange","pink","purple","red","rose","sky","slate","stone","teal","violet","yellow","colors","defaultPalette","defaultSpacing","defaultRadius","defaultShadows","defaultFontSize","defaultFontWeight","defaultLineHeight","defaultZIndex","defaultTransition","defaultOpacity","defaultBreakpoints","defaultTheme","hashObject","themeCache","MAX_THEME_CACHE_SIZE","deepMerge","target","source","sourceValue","targetValue","shallowMerge","createTheme","baseTheme","overrides","options","mode","cacheKey","mergeThemes","acc","override","createThemeVariant","variantOverrides","createCustomTheme","config","getComponentNameFromStack","stack","match","fileMatch","processStyles","componentName","classes","lru","resolved","createStyles","stylesOrCreator","lastTheme","_","prop","createTypedStyles","keyframes","frames","fontFace","fontFamily","src","fontStyle","fontWeight","fontDisplay","unicodeRange","generateCssVariables","prefix","kebabKey","injectCssVariables","variables","cssVar","path","fallback","varName","cssVariables","inject","cssToInject","getSSRStyles","getSSRStyleTag","clearSSRRules","getSSRRulesArray"],"mappings":"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","file":"index.js","sourcesContent":["import type { StyleWithPseudos } from './types'\r\nimport type { Theme } from '@/types'\r\n\r\n// Environment detection (constant since it never changes)\r\nconst IS_SERVER = typeof document === 'undefined'\r\n\r\n// Global theme getter\r\nlet themeContextGetter: (() => Theme | undefined) | null = null\r\n\r\n// Stylesheet for client-side injection\r\nlet styleSheet: CSSStyleSheet | null = null\r\n\r\n// SSR buffer to collect server-side rules\r\nlet ssrRules: string[] = []\r\n\r\n// Cache for camelCase → kebab-case conversion (pre-allocated for common keys)\r\nconst cssKeyCache = new Map<string, string>([\r\n ['backgroundColor', 'background-color'],\r\n ['borderRadius', 'border-radius'],\r\n ['fontSize', 'font-size'],\r\n ['fontWeight', 'font-weight'],\r\n ['lineHeight', 'line-height'],\r\n ['marginTop', 'margin-top'],\r\n ['marginBottom', 'margin-bottom'],\r\n ['marginLeft', 'margin-left'],\r\n ['marginRight', 'margin-right'],\r\n ['paddingTop', 'padding-top'],\r\n ['paddingBottom', 'padding-bottom'],\r\n ['paddingLeft', 'padding-left'],\r\n ['paddingRight', 'padding-right'],\r\n ['textAlign', 'text-align'],\r\n ['justifyContent', 'justify-content'],\r\n ['alignItems', 'align-items'],\r\n ['flexDirection', 'flex-direction'],\r\n ['flexWrap', 'flex-wrap'],\r\n ['boxShadow', 'box-shadow'],\r\n ['zIndex', 'z-index'],\r\n])\r\n\r\n// Global cache for static styles (avoids regenerating the same styles)\r\nconst staticStyleCache = new Map<string, string>()\r\n\r\n// Set to track already used class names\r\nconst usedClassNames = new Set<string>()\r\n\r\n// Set to track already injected keyframes\r\nconst injectedKeyframes = new Set<string>()\r\n\r\n// Set to track already injected font-faces\r\nconst injectedFontFaces = new Set<string>()\r\n\r\n// Counter for unique keyframe names generation\r\nlet keyframeCounter = 0\r\n\r\n// Properties that accept unitless numbers (optimized Set)\r\nconst UNITLESS_PROPERTIES = new Set([\r\n 'animationIterationCount', 'columnCount', 'fillOpacity', 'flexGrow', 'flexShrink',\r\n 'fontWeight', 'lineHeight', 'opacity', 'order', 'orphans', 'widows', 'zIndex', 'zoom'\r\n])\r\n\r\n// Max LRU cache size for dynamic styles\r\nexport const MAX_CACHE_SIZE = 100\r\n\r\n// Initialize stylesheet (client-side only)\r\nif (!IS_SERVER) {\r\n const existingStyle = document.getElementById('aurora-styles') as HTMLStyleElement | null\r\n if (existingStyle) {\r\n styleSheet = existingStyle.sheet as CSSStyleSheet\r\n } else {\r\n const style = document.createElement('style')\r\n style.id = 'aurora-styles'\r\n document.head.appendChild(style)\r\n styleSheet = style.sheet as CSSStyleSheet\r\n }\r\n}\r\n\r\n/**\r\n * Set the theme getter\r\n */\r\nexport const setThemeContextGetter = (getter: (() => Theme | undefined) | null): (() => Theme | undefined) | null => {\r\n const previous = themeContextGetter\r\n themeContextGetter = getter\r\n return previous\r\n}\r\n\r\n/**\r\n * Get the current theme\r\n */\r\nexport const getTheme = (): Theme | undefined => {\r\n return themeContextGetter?.()\r\n}\r\n\r\n/**\r\n * Insert a CSS rule\r\n */\r\nexport const insertRule = (rule: string): void => {\r\n if (IS_SERVER) {\r\n ssrRules.push(rule)\r\n } else if (styleSheet) {\r\n try {\r\n styleSheet.insertRule(rule, styleSheet.cssRules.length)\r\n } catch {\r\n // Ignore errors (invalid rules)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert camelCase to kebab-case with caching\r\n */\r\nexport const toKebabCase = (key: string): string => {\r\n let cached = cssKeyCache.get(key)\r\n if (!cached) {\r\n cached = key.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n cssKeyCache.set(key, cached)\r\n }\r\n return cached\r\n}\r\n\r\n/**\r\n * Convert PascalCase/camelCase to kebab-case for class names\r\n */\r\nexport const toKebabCaseClassName = (name: string): string => {\r\n return name\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\r\n .toLowerCase()\r\n}\r\n\r\n/**\r\n * Dangerous patterns that could be used for CSS injection attacks\r\n * - expression(): IE-specific, allows JavaScript execution\r\n * - url() with javascript:/data:: can execute scripts or embed malicious content\r\n * - behavior: IE-specific, loads external HTC files\r\n * - -moz-binding: Firefox-specific, loads XBL files\r\n * - @import: could load external malicious stylesheets\r\n * - </style>: could break out of style context\r\n */\r\nconst CSS_INJECTION_PATTERNS = /expression\\s*\\(|javascript\\s*:|data\\s*:\\s*text\\/html|behavior\\s*:|@import|<\\s*\\/?\\s*style/i\r\n\r\n/**\r\n * Sanitize a CSS value to prevent injection attacks\r\n * Returns the sanitized value or 'unset' if the value is dangerous\r\n */\r\nexport const sanitizeCssValue = (value: string): string => {\r\n // Remove any null bytes\r\n const cleaned = value.replace(/\\0/g, '')\r\n\r\n // Check for dangerous patterns\r\n if (CSS_INJECTION_PATTERNS.test(cleaned)) {\r\n return 'unset'\r\n }\r\n\r\n return cleaned\r\n}\r\n\r\n\r\n/**\r\n * Convert values to valid CSS with sanitization\r\n */\r\nexport const toCssValue = (key: string, value: unknown): string => {\r\n if (typeof value === 'number' && !UNITLESS_PROPERTIES.has(key)) {\r\n return `${value}px`\r\n }\r\n return sanitizeCssValue(String(value))\r\n}\r\n\r\n/**\r\n * Convert a styles object to CSS (simple properties only)\r\n * Optimized to avoid unnecessary allocations\r\n */\r\nexport const objectToCss = (obj: Record<string, unknown>): string => {\r\n let result = ''\r\n for (const key in obj) {\r\n const value = obj[key]\r\n if (value != null && typeof value !== 'object') {\r\n result += `${toKebabCase(key)}:${toCssValue(key, value)};`\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Convert an & selector to a valid CSS selector\r\n */\r\nexport const resolveAmpersandSelector = (selector: string, className: string): string => {\r\n return selector.includes('&') ? selector.replace(/&/g, `.${className}`) : `.${className}${selector}`\r\n}\r\n\r\n/**\r\n * Create a cache key from arguments\r\n */\r\nexport const createCacheKey = (args: unknown[]): string => {\r\n const len = args.length\r\n if (len === 0) {return ''}\r\n if (len === 1) {\r\n const arg = args[0]\r\n if (arg === undefined) {return 'u'}\r\n if (arg === null) {return 'n'}\r\n if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {\r\n return String(arg)\r\n }\r\n }\r\n if (len <= 4) {\r\n let result = ''\r\n for (let i = 0; i < len; i++) {\r\n const arg = args[i]\r\n const t = typeof arg\r\n if (arg === undefined) {\r\n result += i ? '|u' : 'u'\r\n } else if (arg === null) {\r\n result += i ? '|n' : 'n'\r\n } else if (t === 'string' || t === 'number' || t === 'boolean') {\r\n result += i ? '|' + arg : String(arg)\r\n } else {\r\n return JSON.stringify(args)\r\n }\r\n }\r\n return result\r\n }\r\n return JSON.stringify(args)\r\n}\r\n\r\n/**\r\n * Convert cacheKey to a valid CSS suffix\r\n */\r\nexport const cacheKeyToSuffix = (key: string): string => {\r\n // Fast path for simple keys\r\n const firstChar = key.charCodeAt(0)\r\n if (key.length < 20) {\r\n if ((firstChar >= 97 && firstChar <= 122) || (firstChar >= 65 && firstChar <= 90)) {\r\n // Starts with letter, check if alphanumeric\r\n let valid = true\r\n for (let i = 1; i < key.length; i++) {\r\n const c = key.charCodeAt(i)\r\n if (!((c >= 97 && c <= 122) || (c >= 65 && c <= 90) || (c >= 48 && c <= 57))) {\r\n valid = false\r\n break\r\n }\r\n }\r\n if (valid) {return toKebabCaseClassName(key)}\r\n } else if (firstChar === 45 || (firstChar >= 48 && firstChar <= 57)) {\r\n // Number or negative number\r\n let valid = true\r\n for (let i = 1; i < key.length; i++) {\r\n if (key.charCodeAt(i) < 48 || key.charCodeAt(i) > 57) {\r\n valid = false\r\n break\r\n }\r\n }\r\n if (valid) {return key}\r\n }\r\n }\r\n // Hash for complex keys\r\n let hash = 5381\r\n const len = key.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ key.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Optimized LRU cache with O(1) deletion\r\n */\r\nexport const createLRUCache = <V>(maxSize: number): { getOrSet: (key: string, factory: () => V) => V } => {\r\n const cache = new Map<string, V>()\r\n return {\r\n getOrSet(key: string, factory: () => V): V {\r\n const existing = cache.get(key)\r\n if (existing !== undefined) {\r\n // Move to end (most recent) - O(1) with Map\r\n cache.delete(key)\r\n cache.set(key, existing)\r\n return existing\r\n }\r\n const value = factory()\r\n if (cache.size >= maxSize) {\r\n // Remove oldest (first element)\r\n const firstKey = cache.keys().next().value\r\n if (firstKey !== undefined) { cache.delete(firstKey) }\r\n }\r\n cache.set(key, value)\r\n return value\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Hash for static styles cache\r\n */\r\nexport const hashStyles = (styles: StyleWithPseudos): string => {\r\n const str = JSON.stringify(styles)\r\n let hash = 5381\r\n const len = str.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Generic hash for a string\r\n */\r\nexport const hashString = (str: string): string => {\r\n let hash = 5381\r\n const len = str.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Get a unique class name\r\n */\r\nexport const getUniqueClassName = (baseName: string): string => {\r\n if (!usedClassNames.has(baseName)) {\r\n usedClassNames.add(baseName)\r\n return baseName\r\n }\r\n let counter = 2\r\n while (usedClassNames.has(`${baseName}-${counter}`)) {\r\n counter++\r\n }\r\n const name = `${baseName}-${counter}`\r\n usedClassNames.add(name)\r\n return name\r\n}\r\n\r\n/**\r\n * Generate a CSS class with support for complex selectors\r\n * Optimized to minimize allocations and iterations\r\n */\r\nexport const generateCssClass = (styles: StyleWithPseudos, className: string, useCache = false): string => {\r\n if (useCache) {\r\n const hash = hashStyles(styles)\r\n const cached = staticStyleCache.get(hash)\r\n if (cached) { return cached }\r\n }\r\n\r\n const uniqueName = getUniqueClassName(className)\r\n let baseCss = ''\r\n let specialRules = ''\r\n\r\n for (const key in styles) {\r\n const value = (styles as Record<string, unknown>)[key]\r\n const firstChar = key[0]\r\n\r\n if (firstChar === '@') {\r\n // @media, @container, @supports\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n specialRules += `${key}{.${uniqueName}{${innerCss}}}`\r\n }\r\n } else if (firstChar === '&') {\r\n // Complex selectors (& > div, &:nth-child, etc.)\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n specialRules += `${key.replace(/&/g, `.${uniqueName}`)}{${innerCss}}`\r\n }\r\n } else if (firstChar === ':') {\r\n // Pseudo-classes (:hover, :focus, etc.)\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n specialRules += `.${uniqueName}${key}{${innerCss}}`\r\n }\r\n } else if (value != null && typeof value !== 'object') {\r\n // Simple CSS properties\r\n baseCss += `${toKebabCase(key)}:${toCssValue(key, value)};`\r\n }\r\n }\r\n\r\n // Inject rules\r\n if (baseCss) {\r\n insertRule(`.${uniqueName}{${baseCss}}`)\r\n }\r\n if (specialRules) {\r\n insertRule(specialRules)\r\n }\r\n\r\n if (useCache) {\r\n staticStyleCache.set(hashStyles(styles), uniqueName)\r\n }\r\n\r\n return uniqueName\r\n}\r\n\r\n/**\r\n * Check if a keyframe already exists\r\n */\r\nexport const hasKeyframes = (css: string): boolean => {\r\n return injectedKeyframes.has(css)\r\n}\r\n\r\n/**\r\n * Add a keyframe to the registry\r\n */\r\nexport const addKeyframes = (css: string): void => {\r\n injectedKeyframes.add(css)\r\n}\r\n\r\n/**\r\n * Get the next keyframe ID\r\n */\r\nexport const getNextKeyframeId = (): string => {\r\n return (++keyframeCounter).toString(36)\r\n}\r\n\r\n/**\r\n * Check if a font-face already exists\r\n */\r\nexport const hasFontFace = (css: string): boolean => {\r\n return injectedFontFaces.has(css)\r\n}\r\n\r\n/**\r\n * Add a font-face to the registry\r\n */\r\nexport const addFontFace = (css: string): void => {\r\n injectedFontFaces.add(css)\r\n}\r\n\r\n/**\r\n * Get SSR rules\r\n */\r\nexport const getSSRRulesInternal = (): string[] => {\r\n return ssrRules\r\n}\r\n\r\n/**\r\n * Reset SSR state\r\n */\r\nexport const resetState = (): void => {\r\n ssrRules = []\r\n staticStyleCache.clear()\r\n usedClassNames.clear()\r\n injectedKeyframes.clear()\r\n injectedFontFaces.clear()\r\n keyframeCounter = 0\r\n}\r\n\r\n","import { createContext, useContext, useLayoutEffect, type ReactNode } from 'react'\r\n\r\nimport { setThemeContextGetter } from '@/utils/styles/styleEngine'\r\n\r\nimport type { Theme } from '@/types'\r\n\r\nconst ThemeContext = createContext<Theme | undefined>(undefined)\r\n\r\nexport type ThemeProviderProps<T extends Theme = Theme> = {\r\n theme: T\r\n children?: ReactNode\r\n}\r\n\r\n/**\r\n * Theme provider component\r\n * Provides theme context to all child components\r\n *\r\n * @example\r\n * ```tsx\r\n * // With default theme\r\n * <ThemeProvider theme={defaultTheme}>\r\n * <App />\r\n * </ThemeProvider>\r\n *\r\n * // With custom extended theme\r\n * <ThemeProvider theme={myCustomTheme}>\r\n * <App />\r\n * </ThemeProvider>\r\n * ```\r\n */\r\nexport const ThemeProvider = <T extends Theme>({\r\n theme,\r\n children\r\n}: ThemeProviderProps<T>) => {\r\n const previousGetter = setThemeContextGetter(() => theme)\r\n\r\n useLayoutEffect(() => {\r\n return () => {\r\n setThemeContextGetter(previousGetter)\r\n }\r\n }, [previousGetter])\r\n\r\n return (\r\n <ThemeContext.Provider value={theme}>\r\n {children}\r\n </ThemeContext.Provider>\r\n )\r\n}\r\n\r\n/**\r\n * Hook to access the current theme\r\n * Use the generic parameter to get proper typing for extended themes\r\n *\r\n * @example\r\n * ```tsx\r\n * // Basic usage\r\n * const theme = useTheme()\r\n *\r\n * // With custom theme type\r\n * const theme = useTheme<MyCustomTheme>()\r\n * ```\r\n *\r\n * @throws {Error} If used outside a ThemeProvider\r\n */\r\nexport const useTheme = <T extends Theme = Theme>(): T => {\r\n const theme = useContext(ThemeContext)\r\n\r\n if (!theme) {\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n }\r\n\r\n return theme as T\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const amber: ColorScale = {\r\n 25: '#fffdfb',\r\n 50: '#fffbeb',\r\n 100: '#fef3c7',\r\n 200: '#fde68a',\r\n 300: '#fcd34d',\r\n 400: '#fbbf24',\r\n 500: '#f59e0b',\r\n 600: '#d97706',\r\n 700: '#b45309',\r\n 800: '#92400e',\r\n 900: '#78350f',\r\n 950: '#451a03',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const blue: ColorScale = {\r\n 25: '#f5f8ff',\r\n 50: '#eff6ff',\r\n 100: '#dbeafe',\r\n 200: '#bfdbfe',\r\n 300: '#93c5fd',\r\n 400: '#60a5fa',\r\n 500: '#3b82f6',\r\n 600: '#2563eb',\r\n 700: '#1d4ed8',\r\n 800: '#1e40af',\r\n 900: '#1e3a8a',\r\n 950: '#172554',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const cyan: ColorScale = {\r\n 25: '#f3fefe',\r\n 50: '#ecfeff',\r\n 100: '#cffafe',\r\n 200: '#a5f3fc',\r\n 300: '#67e8f9',\r\n 400: '#22d3ee',\r\n 500: '#06b6d4',\r\n 600: '#0891b2',\r\n 700: '#0e7490',\r\n 800: '#155e75',\r\n 900: '#164e63',\r\n 950: '#083344',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const emerald: ColorScale = {\r\n 25: '#f5fefc',\r\n 50: '#ecfdf5',\r\n 100: '#d1fae5',\r\n 200: '#a7f3d0',\r\n 300: '#6ee7b7',\r\n 400: '#34d399',\r\n 500: '#10b981',\r\n 600: '#059669',\r\n 700: '#047857',\r\n 800: '#065f46',\r\n 900: '#064e3b',\r\n 950: '#022c22',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const fuchsia: ColorScale = {\r\n 25: '#fef5ff',\r\n 50: '#fdf4ff',\r\n 100: '#fae8ff',\r\n 200: '#f5d0fe',\r\n 300: '#f0abfc',\r\n 400: '#e879f9',\r\n 500: '#d946ef',\r\n 600: '#c026d3',\r\n 700: '#a21caf',\r\n 800: '#86198f',\r\n 900: '#701a75',\r\n 950: '#4a044e',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const gray: ColorScale = {\r\n 25: '#fcfcfc',\r\n 50: '#fafafa',\r\n 100: '#f4f4f5',\r\n 200: '#e4e4e7',\r\n 300: '#d4d4d8',\r\n 400: '#a1a1aa',\r\n 500: '#71717a',\r\n 600: '#52525b',\r\n 700: '#3f3f46',\r\n 800: '#27272a',\r\n 900: '#18181b',\r\n 950: '#09090b',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const green: ColorScale = {\r\n 25: '#f6fef9',\r\n 50: '#f0fdf4',\r\n 100: '#dcfce7',\r\n 200: '#bbf7d0',\r\n 300: '#86efac',\r\n 400: '#4ade80',\r\n 500: '#22c55e',\r\n 600: '#16a34a',\r\n 700: '#15803d',\r\n 800: '#166534',\r\n 900: '#14532d',\r\n 950: '#052e16',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const indigo: ColorScale = {\r\n 25: '#f5f7ff',\r\n 50: '#eef2ff',\r\n 100: '#e0e7ff',\r\n 200: '#c7d2fe',\r\n 300: '#a5b4fc',\r\n 400: '#818cf8',\r\n 500: '#6366f1',\r\n 600: '#4f46e5',\r\n 700: '#4338ca',\r\n 800: '#3730a3',\r\n 900: '#312e81',\r\n 950: '#1e1b4b',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const lime: ColorScale = {\r\n 25: '#fbfef8',\r\n 50: '#f7fee7',\r\n 100: '#ecfccb',\r\n 200: '#d9f99d',\r\n 300: '#bef264',\r\n 400: '#a3e635',\r\n 500: '#84cc16',\r\n 600: '#65a30d',\r\n 700: '#4d7c0f',\r\n 800: '#3f6212',\r\n 900: '#365314',\r\n 950: '#1a2e05',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const orange: ColorScale = {\r\n 25: '#fffcfa',\r\n 50: '#fff7ed',\r\n 100: '#ffedd5',\r\n 200: '#fed7aa',\r\n 300: '#fdba74',\r\n 400: '#fb923c',\r\n 500: '#f97316',\r\n 600: '#ea580c',\r\n 700: '#c2410c',\r\n 800: '#9a3412',\r\n 900: '#7c2d12',\r\n 950: '#431407',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const pink: ColorScale = {\r\n 25: '#fef5f9',\r\n 50: '#fdf2f8',\r\n 100: '#fce7f3',\r\n 200: '#fbcfe8',\r\n 300: '#f9a8d4',\r\n 400: '#f472b6',\r\n 500: '#ec4899',\r\n 600: '#db2777',\r\n 700: '#be185d',\r\n 800: '#9d174d',\r\n 900: '#831843',\r\n 950: '#500724',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const purple: ColorScale = {\r\n 25: '#faf5ff',\r\n 50: '#faf5ff',\r\n 100: '#f3e8ff',\r\n 200: '#e9d5ff',\r\n 300: '#d8b4fe',\r\n 400: '#c084fc',\r\n 500: '#a855f7',\r\n 600: '#9333ea',\r\n 700: '#7e22ce',\r\n 800: '#6b21a8',\r\n 900: '#581c87',\r\n 950: '#3b0764',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const red: ColorScale = {\r\n 25: '#fffbfb',\r\n 50: '#fef2f2',\r\n 100: '#fee2e2',\r\n 200: '#fecaca',\r\n 300: '#fca5a5',\r\n 400: '#f87171',\r\n 500: '#ef4444',\r\n 600: '#dc2626',\r\n 700: '#b91c1c',\r\n 800: '#991b1b',\r\n 900: '#7f1d1d',\r\n 950: '#450a0a',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const rose: ColorScale = {\r\n 25: '#fff5f6',\r\n 50: '#fff1f2',\r\n 100: '#ffe4e6',\r\n 200: '#fecdd3',\r\n 300: '#fda4af',\r\n 400: '#fb7185',\r\n 500: '#f43f5e',\r\n 600: '#e11d48',\r\n 700: '#be123c',\r\n 800: '#9f1239',\r\n 900: '#881337',\r\n 950: '#4c0519',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const sky: ColorScale = {\r\n 25: '#f5faff',\r\n 50: '#f0f9ff',\r\n 100: '#e0f2fe',\r\n 200: '#bae6fd',\r\n 300: '#7dd3fc',\r\n 400: '#38bdf8',\r\n 500: '#0ea5e9',\r\n 600: '#0284c7',\r\n 700: '#0369a1',\r\n 800: '#075985',\r\n 900: '#0c4a6e',\r\n 950: '#082f49',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const slate: ColorScale = {\r\n 25: '#fcfcfd',\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const stone: ColorScale = {\r\n 25: '#fcfcfb',\r\n 50: '#fafaf9',\r\n 100: '#f5f5f4',\r\n 200: '#e7e5e4',\r\n 300: '#d6d3d1',\r\n 400: '#a8a29e',\r\n 500: '#78716c',\r\n 600: '#57534e',\r\n 700: '#44403c',\r\n 800: '#292524',\r\n 900: '#1c1917',\r\n 950: '#0c0a09',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const teal: ColorScale = {\r\n 25: '#f4fefe',\r\n 50: '#f0fdfa',\r\n 100: '#ccfbf1',\r\n 200: '#99f6e4',\r\n 300: '#5eead4',\r\n 400: '#2dd4bf',\r\n 500: '#14b8a6',\r\n 600: '#0d9488',\r\n 700: '#0f766e',\r\n 800: '#115e59',\r\n 900: '#134e4a',\r\n 950: '#042f2e',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const violet: ColorScale = {\r\n 25: '#f8f5ff',\r\n 50: '#f5f3ff',\r\n 100: '#ede9fe',\r\n 200: '#ddd6fe',\r\n 300: '#c4b5fd',\r\n 400: '#a78bfa',\r\n 500: '#8b5cf6',\r\n 600: '#7c3aed',\r\n 700: '#6d28d9',\r\n 800: '#5b21b6',\r\n 900: '#4c1d95',\r\n 950: '#2e1065',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const yellow: ColorScale = {\r\n 25: '#fefef9',\r\n 50: '#fefce8',\r\n 100: '#fef9c3',\r\n 200: '#fef08a',\r\n 300: '#fde047',\r\n 400: '#facc15',\r\n 500: '#eab308',\r\n 600: '#ca8a04',\r\n 700: '#a16207',\r\n 800: '#854d0e',\r\n 900: '#713f12',\r\n 950: '#422006',\r\n}\r\n\r\n","/**\r\n * Color Scales - Modern color palettes with shades from 25 to 950\r\n *\r\n * Scales are only accessible via the colors object to maintain consistency\r\n *\r\n * @example\r\n * ```ts\r\n * import { colors } from '@aurora-ui/theme'\r\n *\r\n * colors.indigo[500] // '#6366f1'\r\n * colors.emerald[400] // '#34d399'\r\n * colors.gray[900] // '#18181b'\r\n * ```\r\n */\r\n\r\n// Import all scales for the colors object\r\nimport { amber } from './amber'\r\nimport { blue } from './blue'\r\nimport { cyan } from './cyan'\r\nimport { emerald } from './emerald'\r\nimport { fuchsia } from './fuchsia'\r\nimport { gray } from './gray'\r\nimport { green } from './green'\r\nimport { indigo } from './indigo'\r\nimport { lime } from './lime'\r\nimport { orange } from './orange'\r\nimport { pink } from './pink'\r\nimport { purple } from './purple'\r\nimport { red } from './red'\r\nimport { rose } from './rose'\r\nimport { sky } from './sky'\r\nimport { slate } from './slate'\r\nimport { stone } from './stone'\r\nimport { teal } from './teal'\r\nimport { violet } from './violet'\r\nimport { yellow } from './yellow'\r\n\r\n/**\r\n * All color scales organized by name\r\n * All scales and special values are only accessible via this object\r\n */\r\nexport const colors = {\r\n // Neutrals\r\n gray,\r\n slate,\r\n stone,\r\n // Colors\r\n red,\r\n orange,\r\n amber,\r\n yellow,\r\n lime,\r\n green,\r\n emerald,\r\n teal,\r\n cyan,\r\n sky,\r\n blue,\r\n indigo,\r\n violet,\r\n purple,\r\n fuchsia,\r\n pink,\r\n rose,\r\n // Special\r\n white: '#ffffff',\r\n black: '#000000',\r\n transparent: 'transparent',\r\n current: 'currentColor',\r\n} as const\r\n\r\n","import { colors } from '../colors'\r\n\r\nimport type { BaseColors } from '@/types'\r\n\r\n/**\r\n * Default light theme palette - V2\r\n * A clean, modern palette using Indigo as primary and Slate as neutral\r\n */\r\nexport const defaultPalette: BaseColors = {\r\n // Surface colors\r\n background: colors.slate[25],\r\n surface: colors.white,\r\n surfaceHover: colors.slate[100],\r\n surfaceActive: colors.slate[200],\r\n\r\n // Text colors\r\n text: colors.slate[800],\r\n textSecondary: colors.slate[500],\r\n textTertiary: colors.slate[400],\r\n\r\n // Primary colors\r\n primary: colors.indigo[600],\r\n primaryHover: colors.indigo[700],\r\n primaryActive: colors.indigo[800],\r\n primarySubtle: colors.indigo[50],\r\n primaryDisabled: colors.indigo[300],\r\n onPrimary: colors.white,\r\n\r\n // Secondary colors\r\n secondary: colors.slate[100],\r\n secondaryHover: colors.slate[200],\r\n secondaryActive: colors.slate[300],\r\n secondarySubtle: colors.slate[50],\r\n secondaryDisabled: colors.slate[200],\r\n onSecondary: colors.slate[700],\r\n\r\n // Border colors\r\n border: colors.slate[200],\r\n\r\n // Disabled state\r\n disabledText: colors.slate[400],\r\n disabled: colors.slate[300],\r\n\r\n // Semantic colors - Success\r\n success: colors.emerald[600],\r\n successSubtle: colors.emerald[50],\r\n\r\n // Semantic colors - Warning\r\n warning: colors.amber[500],\r\n warningSubtle: colors.amber[50],\r\n\r\n // Semantic colors - Error\r\n error: colors.red[600],\r\n errorHover: colors.red[700],\r\n errorSubtle: colors.red[50],\r\n onError: colors.white,\r\n\r\n // Semantic colors - Info\r\n info: colors.blue[600],\r\n infoSubtle: colors.blue[50],\r\n\r\n // Link colors\r\n link: colors.indigo[600],\r\n linkHover: colors.indigo[700],\r\n linkActive: colors.indigo[800],\r\n linkDisabled: colors.indigo[300],\r\n}\r\n\r\n","import { defaultPalette } from './palettes'\r\n\r\nimport type { Theme } from '@/types'\r\n\r\n\r\n/**\r\n * Default spacing scale\r\n */\r\nexport const defaultSpacing: Theme['spacing'] = {\r\n none: '0',\r\n '2xs': '0.125rem', // 2px\r\n xs: '0.25rem', // 4px\r\n sm: '0.5rem', // 8px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n '5xl': '8rem', // 128px\r\n}\r\n\r\n/**\r\n * Default border radius scale\r\n */\r\nexport const defaultRadius: Theme['radius'] = {\r\n none: '0',\r\n xs: '0.125rem', // 2px\r\n sm: '0.25rem', // 4px\r\n md: '0.375rem', // 6px\r\n lg: '0.5rem', // 8px\r\n xl: '0.75rem', // 12px\r\n '2xl': '1rem', // 16px\r\n full: '9999px',\r\n}\r\n\r\n/**\r\n * Default shadow scale\r\n */\r\nexport const defaultShadows: Theme['shadows'] = {\r\n none: 'none',\r\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\r\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\r\n focus: '0 0 0 3px rgb(99 102 241 / 0.4)',\r\n}\r\n\r\n/**\r\n * Default font size scale\r\n */\r\nexport const defaultFontSize: Theme['fontSize'] = {\r\n '2xs': '0.625rem', // 10px\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n md: '1rem', // 16px\r\n lg: '1.25rem', // 20px\r\n xl: '1.5rem', // 24px\r\n '2xl': '2rem', // 32px\r\n '3xl': '2.5rem', // 40px\r\n '4xl': '3rem', // 48px\r\n '5xl': '4rem', // 64px\r\n}\r\n\r\n/**\r\n * Default font weight scale\r\n */\r\nexport const defaultFontWeight: Theme['fontWeight'] = {\r\n light: 300,\r\n regular: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n}\r\n\r\n/**\r\n * Default line height scale\r\n */\r\nexport const defaultLineHeight: Theme['lineHeight'] = {\r\n none: 1,\r\n tight: 1.25,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n loose: 2,\r\n}\r\n\r\n/**\r\n * Default z-index scale\r\n */\r\nexport const defaultZIndex: Theme['zIndex'] = {\r\n behind: -1,\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1100,\r\n overlay: 1300,\r\n modal: 1400,\r\n popover: 1500,\r\n tooltip: 1600,\r\n toast: 1700,\r\n}\r\n\r\n/**\r\n * Default transition scale\r\n */\r\nexport const defaultTransition: Theme['transition'] = {\r\n fast: '150ms ease-out',\r\n normal: '250ms ease-out',\r\n slow: '350ms ease-out',\r\n}\r\n\r\n/**\r\n * Default opacity scale\r\n */\r\nexport const defaultOpacity: Theme['opacity'] = {\r\n none: 0,\r\n lowest: 0.05,\r\n low: 0.1,\r\n medium: 0.25,\r\n high: 0.5,\r\n higher: 0.75,\r\n full: 1,\r\n}\r\n\r\n/**\r\n * Default responsive breakpoints\r\n */\r\nexport const defaultBreakpoints: Theme['breakpoints'] = {\r\n xs: '480px', // Extra small devices (phones in landscape)\r\n sm: '640px', // Small devices (large phones, small tablets)\r\n md: '768px', // Medium devices (tablets)\r\n lg: '1024px', // Large devices (desktops)\r\n xl: '1280px', // Extra large devices (large desktops)\r\n '2xl': '1536px', // Extra extra large devices (wide screens)\r\n}\r\n\r\n/**\r\n * Complete default theme V2\r\n */\r\nexport const defaultTheme: Theme = {\r\n colors: defaultPalette,\r\n spacing: defaultSpacing,\r\n radius: defaultRadius,\r\n shadows: defaultShadows,\r\n fontSize: defaultFontSize,\r\n fontWeight: defaultFontWeight,\r\n lineHeight: defaultLineHeight,\r\n zIndex: defaultZIndex,\r\n transition: defaultTransition,\r\n opacity: defaultOpacity,\r\n breakpoints: defaultBreakpoints,\r\n}\r\n\r\n","import {\r\n defaultSpacing,\r\n defaultRadius,\r\n defaultShadows,\r\n defaultFontSize,\r\n defaultFontWeight,\r\n defaultLineHeight,\r\n defaultZIndex,\r\n defaultTransition,\r\n defaultOpacity,\r\n defaultBreakpoints,\r\n} from './defaultTheme'\r\n\r\nimport type { Theme, DeepPartial, CreateThemeOptions, CustomTheme } from '@/types'\r\n\r\n/**\r\n * Simple hash function for objects (djb2)\r\n */\r\nconst hashObject = (obj: unknown): string => {\r\n const str = JSON.stringify(obj)\r\n let hash = 5381\r\n const len = str.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Memoization cache for createTheme\r\n */\r\nconst themeCache = new Map<string, Theme>()\r\n\r\n/**\r\n * Maximum number of themes to cache before eviction\r\n */\r\nexport const MAX_THEME_CACHE_SIZE = 50\r\n\r\n/**\r\n * Clear the theme cache (useful for testing)\r\n */\r\nexport const clearThemeCache = (): void => {\r\n themeCache.clear()\r\n}\r\n\r\n/**\r\n * Get the current theme cache size (useful for testing)\r\n */\r\nexport const getThemeCacheSize = (): number => {\r\n return themeCache.size\r\n}\r\n\r\n/**\r\n * Deep merge two objects\r\n */\r\nconst deepMerge = <T extends Record<string, unknown>>(target: T, source: DeepPartial<T>): T => {\r\n const result = { ...target }\r\n\r\n for (const key in source) {\r\n const sourceValue = source[key]\r\n if (sourceValue === undefined) {\r\n continue\r\n }\r\n\r\n const targetValue = target[key]\r\n\r\n if (\r\n sourceValue !== null &&\r\n typeof sourceValue === 'object' &&\r\n !Array.isArray(sourceValue) &&\r\n targetValue !== null &&\r\n typeof targetValue === 'object'\r\n ) {\r\n result[key] = deepMerge(\r\n targetValue as Record<string, unknown>,\r\n sourceValue as DeepPartial<Record<string, unknown>>\r\n ) as T[Extract<keyof T, string>]\r\n } else {\r\n result[key] = sourceValue as T[Extract<keyof T, string>]\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * Shallow merge that replaces entire categories instead of deep merging\r\n */\r\nconst shallowMerge = <T extends Record<string, unknown>>(target: T, source: DeepPartial<T>): T => {\r\n return { ...target, ...source } as T\r\n}\r\n\r\n/**\r\n * Create a theme by merging a base theme with overrides\r\n *\r\n * @param baseTheme - The base theme to extend\r\n * @param overrides - Partial overrides to apply\r\n * @param options - Optional configuration\r\n * @param options.mode - 'merge' (default) deep merges, 'replace' replaces entire categories\r\n *\r\n * @example\r\n * ```ts\r\n * // Default behavior: deep merge (extends existing tokens)\r\n * const myTheme = createTheme(defaultTheme, {\r\n * colors: {\r\n * primary: '#ff0000',\r\n * // Other color tokens from defaultTheme are preserved\r\n * },\r\n * })\r\n *\r\n * // Replace mode: completely replace categories\r\n * const myTheme = createTheme(defaultTheme, {\r\n * colors: {\r\n * // This becomes the ENTIRE colors object\r\n * brand: '#ff0000',\r\n * surface: '#ffffff',\r\n * text: '#000000',\r\n * },\r\n * }, { mode: 'replace' })\r\n * ```\r\n */\r\nexport const createTheme = <T extends Theme>(\r\n baseTheme: T,\r\n overrides: DeepPartial<T>,\r\n options: CreateThemeOptions = {}\r\n): T => {\r\n const { mode = 'merge' } = options\r\n\r\n // Create cache key from base theme reference + overrides hash + mode\r\n const cacheKey = `${hashObject(baseTheme)}_${hashObject(overrides)}_${mode}`\r\n\r\n const cached = themeCache.get(cacheKey)\r\n if (cached) {\r\n return cached as T\r\n }\r\n\r\n const result = mode === 'replace'\r\n ? shallowMerge(baseTheme, overrides)\r\n : deepMerge(baseTheme, overrides)\r\n\r\n // Evict oldest if cache is full\r\n if (themeCache.size >= MAX_THEME_CACHE_SIZE) {\r\n const firstKey = themeCache.keys().next().value\r\n if (firstKey) {themeCache.delete(firstKey)}\r\n }\r\n\r\n themeCache.set(cacheKey, result)\r\n return result\r\n}\r\n\r\n/**\r\n * Merge multiple theme overrides into one\r\n * Later overrides take precedence\r\n *\r\n * @example\r\n * ```ts\r\n * const theme = mergeThemes(\r\n * baseTheme,\r\n * brandOverrides,\r\n * darkModeOverrides,\r\n * userPreferences\r\n * )\r\n * ```\r\n */\r\nexport const mergeThemes = <T extends Theme>(\r\n baseTheme: T,\r\n ...overrides: DeepPartial<T>[]\r\n): T => {\r\n return overrides.reduce<T>(\r\n (acc, override) => deepMerge(acc, override),\r\n baseTheme\r\n )\r\n}\r\n\r\n/**\r\n * Create a theme extension factory\r\n * Useful for creating theme variants (dark mode, high contrast, etc.)\r\n *\r\n * @example\r\n * ```ts\r\n * const createDarkVariant = createThemeVariant({\r\n * colors: {\r\n * background: '#1a1a1a',\r\n * text: '#ffffff',\r\n * },\r\n * })\r\n *\r\n * const darkTheme = createDarkVariant(lightTheme)\r\n * ```\r\n */\r\nexport const createThemeVariant = <T extends Theme>(\r\n variantOverrides: DeepPartial<T>\r\n) => {\r\n return (baseTheme: T): T => createTheme(baseTheme, variantOverrides)\r\n}\r\n\r\n/**\r\n * Create a fully custom theme with your own color tokens\r\n * This allows you to define a completely different color token structure\r\n * without being constrained by BaseColors\r\n *\r\n * @param config - Full theme configuration with custom colors\r\n *\r\n * @example\r\n * ```ts\r\n * // Define your custom color tokens\r\n * type MyBrandColors = {\r\n * brand: string\r\n * brandHover: string\r\n * brandActive: string\r\n * surface: string\r\n * surfaceElevated: string\r\n * textPrimary: string\r\n * textSecondary: string\r\n * border: string\r\n * }\r\n *\r\n * // Create a theme with ONLY your color tokens\r\n * const myTheme = createCustomTheme<MyBrandColors>({\r\n * colors: {\r\n * brand: '#007bff',\r\n * brandHover: '#0056b3',\r\n * brandActive: '#004085',\r\n * surface: '#ffffff',\r\n * surfaceElevated: '#f8f9fa',\r\n * textPrimary: '#212529',\r\n * textSecondary: '#6c757d',\r\n * border: '#dee2e6',\r\n * },\r\n * // Uses defaults for other tokens, or provide your own:\r\n * // spacing: { ... },\r\n * // radius: { ... },\r\n * })\r\n *\r\n * // TypeScript knows your theme has only YOUR color tokens:\r\n * myTheme.colors.brand // ✅ OK\r\n * myTheme.colors.primary // ❌ Error - doesn't exist\r\n * ```\r\n */\r\nexport const createCustomTheme = <\r\n TColors extends Record<string, string>,\r\n TSpacing extends Record<string, string> = typeof defaultSpacing,\r\n TRadius extends Record<string, string> = typeof defaultRadius,\r\n TShadows extends Record<string, string> = typeof defaultShadows,\r\n TFontSize extends Record<string, string> = typeof defaultFontSize,\r\n TFontWeight extends Record<string, number> = typeof defaultFontWeight,\r\n TLineHeight extends Record<string, number> = typeof defaultLineHeight,\r\n TZIndex extends Record<string, number> = typeof defaultZIndex,\r\n TTransition extends Record<string, string> = typeof defaultTransition,\r\n TOpacity extends Record<string, number> = typeof defaultOpacity,\r\n TBreakpoints extends Record<string, string> = typeof defaultBreakpoints,\r\n>(config: {\r\n colors: TColors\r\n spacing?: TSpacing\r\n radius?: TRadius\r\n shadows?: TShadows\r\n fontSize?: TFontSize\r\n fontWeight?: TFontWeight\r\n lineHeight?: TLineHeight\r\n zIndex?: TZIndex\r\n transition?: TTransition\r\n opacity?: TOpacity\r\n breakpoints?: TBreakpoints\r\n}): CustomTheme<TColors, TSpacing, TRadius, TShadows, TFontSize, TFontWeight, TLineHeight, TZIndex, TTransition, TOpacity, TBreakpoints> => {\r\n return {\r\n colors: config.colors,\r\n spacing: (config.spacing ?? defaultSpacing) as TSpacing,\r\n radius: (config.radius ?? defaultRadius) as TRadius,\r\n shadows: (config.shadows ?? defaultShadows) as TShadows,\r\n fontSize: (config.fontSize ?? defaultFontSize) as TFontSize,\r\n fontWeight: (config.fontWeight ?? defaultFontWeight) as TFontWeight,\r\n lineHeight: (config.lineHeight ?? defaultLineHeight) as TLineHeight,\r\n zIndex: (config.zIndex ?? defaultZIndex) as TZIndex,\r\n transition: (config.transition ?? defaultTransition) as TTransition,\r\n opacity: (config.opacity ?? defaultOpacity) as TOpacity,\r\n breakpoints: (config.breakpoints ?? defaultBreakpoints) as TBreakpoints,\r\n }\r\n}\r\n\r\n","\r\nimport {\r\n cacheKeyToSuffix,\r\n createCacheKey,\r\n createLRUCache,\r\n generateCssClass,\r\n getTheme,\r\n MAX_CACHE_SIZE,\r\n toKebabCaseClassName\r\n} from './styleEngine'\r\n\r\nimport type { StyleFunction, StyleWithPseudos } from './types'\r\nimport type { Theme } from '@/types'\r\n\r\n/**\r\n * Extract component name from stack trace\r\n */\r\nconst getComponentNameFromStack = (): string => {\r\n const stack = new Error().stack || ''\r\n const match = stack.match(/([A-Za-z0-9_]+)\\.styles\\.[tj]s/)\r\n if (match?.[1]) {\r\n return toKebabCaseClassName(match[1])\r\n }\r\n const fileMatch = stack.match(/\\/([A-Za-z0-9_]+)\\.[tj]sx?[:\\d]*\\)?$/m)\r\n if (fileMatch?.[1] && fileMatch[1] !== 'createStyles') {\r\n return toKebabCaseClassName(fileMatch[1])\r\n }\r\n return 'style'\r\n}\r\n\r\n/**\r\n * Process styles and generate CSS classes\r\n */\r\nconst processStyles = <T extends Record<string, StyleWithPseudos | StyleFunction>>(\r\n styles: T,\r\n componentName: string\r\n): Record<string, string | ((...args: unknown[]) => string)> => {\r\n const classes = {} as Record<string, string | ((...args: unknown[]) => string)>\r\n\r\n for (const key in styles) {\r\n const style = styles[key]\r\n if (style) {\r\n const baseName = `${componentName}-${toKebabCaseClassName(key)}`\r\n if (typeof style === 'function') {\r\n const lru = createLRUCache<string>(MAX_CACHE_SIZE)\r\n classes[key] = (...args: unknown[]) => {\r\n const cacheKey = createCacheKey(args)\r\n return lru.getOrSet(cacheKey, () => {\r\n const resolved = (style as (...a: unknown[]) => StyleWithPseudos)(...args)\r\n return generateCssClass(resolved, `${baseName}-${cacheKeyToSuffix(cacheKey)}`)\r\n })\r\n }\r\n } else {\r\n classes[key] = generateCssClass(style, baseName, true)\r\n }\r\n }\r\n }\r\n\r\n return classes\r\n}\r\n\r\n/**\r\n * Create typed styles with support for pseudo-classes, media queries, container queries, feature queries and complex selectors\r\n *\r\n * Supports custom extended themes via generic parameter.\r\n *\r\n * @example\r\n * ```ts\r\n * // Basic usage with default theme\r\n * const STYLES = createStyles((theme) => ({\r\n * root: {\r\n * display: 'flex',\r\n * padding: theme.spacing.md,\r\n * ':hover': { backgroundColor: theme.colors.backgroundHover },\r\n * }\r\n * }))\r\n *\r\n * // With custom extended theme\r\n * type MyTheme = Theme & { colors: BaseColors & { accent: string } }\r\n *\r\n * const STYLES = createStyles<MyTheme>((theme) => ({\r\n * root: {\r\n * backgroundColor: theme.colors.accent, // TypeScript knows about accent!\r\n * }\r\n * }))\r\n * ```\r\n */\r\nexport const createStyles = <\r\n TTheme extends Theme = Theme,\r\n T extends Record<string, StyleWithPseudos | StyleFunction> = Record<string, StyleWithPseudos | StyleFunction>\r\n>(\r\n stylesOrCreator: T | ((theme: TTheme) => T)\r\n ): { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string } => {\r\n type Result = { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string }\r\n const componentName = getComponentNameFromStack()\r\n\r\n // Styles with theme (function)\r\n if (typeof stylesOrCreator === 'function') {\r\n let cached: Result | null = null\r\n let lastTheme: TTheme | undefined\r\n\r\n return new Proxy({} as Result, {\r\n get(_, prop: string | symbol) {\r\n const theme = getTheme() as TTheme | undefined\r\n if (!theme) {\r\n throw new Error('createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.')\r\n }\r\n if (theme !== lastTheme || !cached) {\r\n cached = processStyles(stylesOrCreator(theme), componentName) as Result\r\n lastTheme = theme\r\n }\r\n return cached[prop as keyof T]\r\n }\r\n })\r\n }\r\n\r\n // Styles without theme (direct object)\r\n return processStyles(stylesOrCreator, componentName) as Result\r\n}\r\n\r\n/**\r\n * Create a typed createStyles function pre-configured with your custom theme type.\r\n * This eliminates the need to specify the theme type on every createStyles call.\r\n *\r\n * @example\r\n * ```ts\r\n * // 1. Define your custom theme\r\n * type MyTheme = CustomTheme<{\r\n * brand: string\r\n * brandHover: string\r\n * surface: string\r\n * }>\r\n *\r\n * // 2. Create a pre-typed createStyles function (do this once)\r\n * export const createStyles = createTypedStyles<MyTheme>()\r\n *\r\n * // 3. Use it everywhere without specifying the type!\r\n * const STYLES = createStyles((theme) => ({\r\n * button: {\r\n * backgroundColor: theme.colors.brand, // ✅ TypeScript knows!\r\n * // backgroundColor: theme.colors.primary, // ❌ Error - doesn't exist\r\n * },\r\n * }))\r\n * ```\r\n */\r\nexport const createTypedStyles = <TTheme extends Record<string, unknown>>() => {\r\n return <T extends Record<string, StyleWithPseudos | StyleFunction>>(\r\n stylesOrCreator: T | ((theme: TTheme) => T)\r\n ): { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string } => {\r\n // Cast to Theme for internal processing - the actual theme structure doesn't matter\r\n // as long as it's passed through correctly to the user's callback\r\n return createStyles<Theme, T>(stylesOrCreator as T | ((theme: Theme) => T))\r\n }\r\n}\r\n\r\n","import {\r\n addKeyframes,\r\n getNextKeyframeId,\r\n hashString,\r\n hasKeyframes,\r\n insertRule,\r\n objectToCss\r\n} from './styleEngine'\r\n\r\nimport type { CSSProperties } from 'react'\r\n\r\n\r\n/**\r\n * Create and inject keyframes\r\n *\r\n * @example\r\n * ```ts\r\n * const fadeIn = keyframes({\r\n * from: { opacity: 0 },\r\n * to: { opacity: 1 }\r\n * })\r\n *\r\n * const STYLES = createStyles({\r\n * animated: { animation: `${fadeIn} 0.3s ease-in-out` }\r\n * })\r\n * ```\r\n */\r\nexport const keyframes = (frames: Record<string, CSSProperties>): string => {\r\n // Generate keyframes CSS\r\n let css = ''\r\n for (const key in frames) {\r\n css += `${key}{${objectToCss(frames[key] as Record<string, unknown>)}}`\r\n }\r\n\r\n // Check if these keyframes already exist\r\n if (hasKeyframes(css)) {\r\n const hash = hashString(css)\r\n return `aurora-kf-${hash}`\r\n }\r\n\r\n // Generate a unique name\r\n const name = `aurora-kf-${getNextKeyframeId()}`\r\n\r\n // Inject @keyframes rule\r\n insertRule(`@keyframes ${name}{${css}}`)\r\n addKeyframes(css)\r\n\r\n return name\r\n}\r\n\r\n","import { addFontFace, hasFontFace, insertRule } from './styleEngine'\r\n\r\nimport type { FontFaceOptions } from './types'\r\n\r\n/**\r\n * Inject a @font-face rule\r\n *\r\n * @example\r\n * ```ts\r\n * fontFace({\r\n * fontFamily: 'MyFont',\r\n * src: \"url('/fonts/myfont.woff2') format('woff2')\",\r\n * fontWeight: 400,\r\n * fontStyle: 'normal',\r\n * fontDisplay: 'swap'\r\n * })\r\n * ```\r\n */\r\nexport const fontFace = (options: FontFaceOptions): string => {\r\n const {\r\n fontFamily,\r\n src,\r\n fontStyle = 'normal',\r\n fontWeight = 400,\r\n fontDisplay = 'swap',\r\n unicodeRange\r\n } = options\r\n\r\n // Generate CSS\r\n let css = `font-family:\"${fontFamily}\";`\r\n css += `src:${src};`\r\n css += `font-style:${fontStyle};`\r\n css += `font-weight:${fontWeight};`\r\n css += `font-display:${fontDisplay};`\r\n if (unicodeRange) {\r\n css += `unicode-range:${unicodeRange};`\r\n }\r\n\r\n // Check if already injected\r\n if (!hasFontFace(css)) {\r\n insertRule(`@font-face{${css}}`)\r\n addFontFace(css)\r\n }\r\n\r\n return fontFamily\r\n}\r\n\r\n","import { insertRule, toKebabCase } from './styleEngine'\r\n\r\nimport type { Theme } from '@/types'\r\n\r\n\r\n/**\r\n * Generate CSS variables from a theme object\r\n */\r\nconst generateCssVariables = (obj: Record<string, unknown>, prefix: string): string => {\r\n let css = ''\r\n\r\n for (const key in obj) {\r\n const value = obj[key]\r\n const kebabKey = toKebabCase(key)\r\n\r\n if (value && typeof value === 'object') {\r\n css += generateCssVariables(value as Record<string, unknown>, `${prefix}-${kebabKey}`)\r\n } else if (value != null) {\r\n css += `--${prefix}-${kebabKey}:${value};`\r\n }\r\n }\r\n\r\n return css\r\n}\r\n\r\n/**\r\n * Create CSS variables from the theme\r\n * Injects variables into :root\r\n *\r\n * @example\r\n * ```ts\r\n * // In ThemeProvider\r\n * injectCssVariables(theme, 'aurora')\r\n * // Generates: :root { --aurora-colors-primary: #2563EB; ... }\r\n * ```\r\n */\r\nexport const injectCssVariables = (theme: Theme, prefix = 'theme'): void => {\r\n const variables = generateCssVariables(theme, prefix)\r\n insertRule(`:root{${variables}}`)\r\n}\r\n\r\n/**\r\n * Helper to use a CSS variable from the theme\r\n *\r\n * @example\r\n * ```ts\r\n * const STYLES = createStyles({\r\n * root: { color: cssVar('colors-primary') }\r\n * })\r\n * // Generates: color: var(--theme-colors-primary)\r\n * ```\r\n */\r\nexport const cssVar = (path: string, fallback?: string): string => {\r\n const varName = `--theme-${path.replace(/\\./g, '-')}`\r\n return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`\r\n}\r\n\r\n/**\r\n * Create CSS variable references from a typed object\r\n * Returns an object with the same structure where values are var() references\r\n *\r\n * @example\r\n * ```ts\r\n * const vars = cssVariables({\r\n * primaryColor: '#007bff',\r\n * spacing: '1rem',\r\n * })\r\n * // vars.primaryColor === 'var(--primary-color)'\r\n * ```\r\n */\r\nexport const cssVariables = <T extends Record<string, string | number>>(\r\n variables: T,\r\n options: { prefix?: string; inject?: boolean } = {}\r\n): { [K in keyof T]: string } => {\r\n const { prefix = '', inject = false } = options\r\n const result = {} as { [K in keyof T]: string }\r\n let cssToInject = ''\r\n\r\n for (const key in variables) {\r\n const kebabKey = toKebabCase(key)\r\n const varName = prefix ? `--${prefix}-${kebabKey}` : `--${kebabKey}`\r\n result[key] = `var(${varName})`\r\n\r\n if (inject) {\r\n cssToInject += `${varName}:${variables[key]};`\r\n }\r\n }\r\n\r\n if (inject && cssToInject) {\r\n insertRule(`:root{${cssToInject}}`)\r\n }\r\n\r\n return result\r\n}\r\n\r\n","import { getSSRRulesInternal, resetState } from './styleEngine'\r\n\r\n/**\r\n * SSR: Get all collected CSS rules as a single string\r\n * @returns The CSS content to inject into HTML\r\n */\r\nexport const getSSRStyles = (): string => {\r\n return getSSRRulesInternal().join('')\r\n}\r\n\r\n/**\r\n * SSR: Get styles as a <style> tag ready to inject\r\n * @returns The complete style tag to inject into <head>\r\n */\r\nexport const getSSRStyleTag = (): string => {\r\n const css = getSSRStyles()\r\n if (!css) { return '' }\r\n return `<style id=\"aurora-styles\">${css}</style>`\r\n}\r\n\r\n/**\r\n * SSR: Clear the collected rules buffer\r\n * Call at the beginning of each SSR request to ensure clean state\r\n */\r\nexport const clearSSRRules = (): void => {\r\n resetState()\r\n}\r\n\r\n/**\r\n * SSR: Get raw CSS rules as an array\r\n * @returns Array of CSS rules\r\n */\r\nexport const getSSRRulesArray = (): string[] => {\r\n return [...getSSRRulesInternal()]\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/styles/styleEngine.ts","../src/providers/ThemeProvider.tsx","../src/utils/theme/defaultTheme.ts","../src/utils/theme/colors/amber.ts","../src/utils/theme/colors/blue.ts","../src/utils/theme/colors/cyan.ts","../src/utils/theme/colors/emerald.ts","../src/utils/theme/colors/fuchsia.ts","../src/utils/theme/colors/gray.ts","../src/utils/theme/colors/green.ts","../src/utils/theme/colors/indigo.ts","../src/utils/theme/colors/lime.ts","../src/utils/theme/colors/orange.ts","../src/utils/theme/colors/pink.ts","../src/utils/theme/colors/purple.ts","../src/utils/theme/colors/red.ts","../src/utils/theme/colors/rose.ts","../src/utils/theme/colors/slate.ts","../src/utils/theme/colors/stone.ts","../src/utils/theme/colors/teal.ts","../src/utils/theme/colors/violet.ts","../src/utils/theme/colors/yellow.ts","../src/utils/theme/colors/index.ts","../src/utils/theme/palettes/defaultPalette.ts","../src/utils/theme/createTheme.ts","../src/utils/styles/createStyles.ts","../src/utils/styles/keyframes.ts","../src/utils/styles/fontFace.ts","../src/utils/styles/cssVariables.ts","../src/utils/styles/ssr.ts"],"names":["IS_SERVER","themeContextGetter","styleSheet","ssrRules","cssKeyCache","staticStyleCache","usedClassNames","injectedKeyframes","injectedFontFaces","keyframeCounter","UNITLESS_PROPERTIES","MAX_CACHE_SIZE","existingStyle","style","setThemeContextGetter","getter","previous","getTheme","insertRule","rule","toKebabCase","key","cached","toKebabCaseClassName","name","CSS_INJECTION_PATTERNS","sanitizeCssValue","value","cleaned","toCssValue","objectToCss","obj","result","createCacheKey","args","len","arg","i","t","cacheKeyToSuffix","firstChar","valid","c","hash","createLRUCache","maxSize","cache","factory","existing","firstKey","hashStyles","styles","str","hashString","getUniqueClassName","baseName","counter","generateCssClass","className","useCache","uniqueName","baseCss","innerCss","hasKeyframes","css","addKeyframes","getNextKeyframeId","hasFontFace","addFontFace","getSSRRulesInternal","resetState","ThemeContext","createContext","ThemeProvider","theme","children","previousGetter","useLayoutEffect","jsx","useTheme","useContext","defaultSpacing","defaultRadius","defaultShadows","defaultFontSize","defaultFontWeight","defaultLineHeight","defaultZIndex","defaultTransition","defaultOpacity","defaultBreakpoints","amber","blue","cyan","emerald","fuchsia","gray","green","indigo","lime","orange","pink","purple","red","rose","slate","stone","teal","violet","yellow","colors","defaultPalette","createTheme","config","getComponentNameFromStack","stack","match","fileMatch","processStyles","componentName","classes","lru","cacheKey","resolved","createStyles","stylesOrCreator","lastTheme","_","prop","createTypedStyles","keyframes","frames","fontFace","options","fontFamily","src","fontStyle","fontWeight","fontDisplay","unicodeRange","generateCssVariables","prefix","kebabKey","injectCssVariables","variables","cssVar","path","fallback","varName","cssVariables","inject","cssToInject","getSSRStyles","getSSRStyleTag","clearSSRRules","getSSRRulesArray"],"mappings":"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","file":"index.js","sourcesContent":["import type { StyleWithPseudos } from './types'\r\nimport type { ThemeStructure } from '@/types'\r\n\r\n// Environment detection (constant since it never changes)\r\nconst IS_SERVER = typeof document === 'undefined'\r\n\r\n// Global theme getter - accepts any theme structure\r\nlet themeContextGetter: (() => ThemeStructure | undefined) | null = null\r\n\r\n// Stylesheet for client-side injection\r\nlet styleSheet: CSSStyleSheet | null = null\r\n\r\n// SSR buffer to collect server-side rules\r\nlet ssrRules: string[] = []\r\n\r\n// Cache for camelCase → kebab-case conversion (pre-allocated for common keys)\r\nconst cssKeyCache = new Map<string, string>([\r\n ['backgroundColor', 'background-color'],\r\n ['borderRadius', 'border-radius'],\r\n ['fontSize', 'font-size'],\r\n ['fontWeight', 'font-weight'],\r\n ['lineHeight', 'line-height'],\r\n ['marginTop', 'margin-top'],\r\n ['marginBottom', 'margin-bottom'],\r\n ['marginLeft', 'margin-left'],\r\n ['marginRight', 'margin-right'],\r\n ['paddingTop', 'padding-top'],\r\n ['paddingBottom', 'padding-bottom'],\r\n ['paddingLeft', 'padding-left'],\r\n ['paddingRight', 'padding-right'],\r\n ['textAlign', 'text-align'],\r\n ['justifyContent', 'justify-content'],\r\n ['alignItems', 'align-items'],\r\n ['flexDirection', 'flex-direction'],\r\n ['flexWrap', 'flex-wrap'],\r\n ['boxShadow', 'box-shadow'],\r\n ['zIndex', 'z-index'],\r\n])\r\n\r\n// Global cache for static styles (avoids regenerating the same styles)\r\nconst staticStyleCache = new Map<string, string>()\r\n\r\n// Set to track already used class names\r\nconst usedClassNames = new Set<string>()\r\n\r\n// Set to track already injected keyframes\r\nconst injectedKeyframes = new Set<string>()\r\n\r\n// Set to track already injected font-faces\r\nconst injectedFontFaces = new Set<string>()\r\n\r\n// Counter for unique keyframe names generation\r\nlet keyframeCounter = 0\r\n\r\n// Properties that accept unitless numbers (optimized Set)\r\nconst UNITLESS_PROPERTIES = new Set([\r\n 'animationIterationCount', 'columnCount', 'fillOpacity', 'flexGrow', 'flexShrink',\r\n 'fontWeight', 'lineHeight', 'opacity', 'order', 'orphans', 'widows', 'zIndex', 'zoom'\r\n])\r\n\r\n// Max LRU cache size for dynamic styles\r\nexport const MAX_CACHE_SIZE = 100\r\n\r\n// Initialize stylesheet (client-side only)\r\nif (!IS_SERVER) {\r\n const existingStyle = document.getElementById('aurora-styles') as HTMLStyleElement | null\r\n if (existingStyle) {\r\n styleSheet = existingStyle.sheet as CSSStyleSheet\r\n } else {\r\n const style = document.createElement('style')\r\n style.id = 'aurora-styles'\r\n document.head.appendChild(style)\r\n styleSheet = style.sheet as CSSStyleSheet\r\n }\r\n}\r\n\r\n/**\r\n * Set the theme getter\r\n */\r\nexport const setThemeContextGetter = (\r\n getter: (() => ThemeStructure | undefined) | null\r\n): (() => ThemeStructure | undefined) | null => {\r\n const previous = themeContextGetter\r\n themeContextGetter = getter\r\n return previous\r\n}\r\n\r\n/**\r\n * Get the current theme\r\n */\r\nexport const getTheme = (): ThemeStructure | undefined => {\r\n return themeContextGetter?.()\r\n}\r\n\r\n/**\r\n * Insert a CSS rule\r\n */\r\nexport const insertRule = (rule: string): void => {\r\n if (IS_SERVER) {\r\n ssrRules.push(rule)\r\n } else if (styleSheet) {\r\n try {\r\n styleSheet.insertRule(rule, styleSheet.cssRules.length)\r\n } catch {\r\n // Ignore errors (invalid rules)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Convert camelCase to kebab-case with caching\r\n */\r\nexport const toKebabCase = (key: string): string => {\r\n let cached = cssKeyCache.get(key)\r\n if (!cached) {\r\n cached = key.replace(/([A-Z])/g, '-$1').toLowerCase()\r\n cssKeyCache.set(key, cached)\r\n }\r\n return cached\r\n}\r\n\r\n/**\r\n * Convert PascalCase/camelCase to kebab-case for class names\r\n */\r\nexport const toKebabCaseClassName = (name: string): string => {\r\n return name\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\r\n .toLowerCase()\r\n}\r\n\r\n/**\r\n * Dangerous patterns that could be used for CSS injection attacks\r\n * - expression(): IE-specific, allows JavaScript execution\r\n * - url() with javascript:/data:: can execute scripts or embed malicious content\r\n * - behavior: IE-specific, loads external HTC files\r\n * - -moz-binding: Firefox-specific, loads XBL files\r\n * - @import: could load external malicious stylesheets\r\n * - </style>: could break out of style context\r\n */\r\nconst CSS_INJECTION_PATTERNS = /expression\\s*\\(|javascript\\s*:|data\\s*:\\s*text\\/html|behavior\\s*:|@import|<\\s*\\/?\\s*style/i\r\n\r\n/**\r\n * Sanitize a CSS value to prevent injection attacks\r\n * Returns the sanitized value or 'unset' if the value is dangerous\r\n */\r\nexport const sanitizeCssValue = (value: string): string => {\r\n // Remove any null bytes\r\n const cleaned = value.replace(/\\0/g, '')\r\n\r\n // Check for dangerous patterns\r\n if (CSS_INJECTION_PATTERNS.test(cleaned)) {\r\n return 'unset'\r\n }\r\n\r\n return cleaned\r\n}\r\n\r\n\r\n/**\r\n * Convert values to valid CSS with sanitization\r\n */\r\nexport const toCssValue = (key: string, value: unknown): string => {\r\n if (typeof value === 'number' && !UNITLESS_PROPERTIES.has(key)) {\r\n return `${value}px`\r\n }\r\n return sanitizeCssValue(String(value))\r\n}\r\n\r\n/**\r\n * Convert a styles object to CSS (simple properties only)\r\n * Optimized to avoid unnecessary allocations\r\n */\r\nexport const objectToCss = (obj: Record<string, unknown>): string => {\r\n let result = ''\r\n for (const key in obj) {\r\n const value = obj[key]\r\n if (value != null && typeof value !== 'object') {\r\n result += `${toKebabCase(key)}:${toCssValue(key, value)};`\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * Convert an & selector to a valid CSS selector\r\n */\r\nexport const resolveAmpersandSelector = (selector: string, className: string): string => {\r\n return selector.includes('&') ? selector.replace(/&/g, `.${className}`) : `.${className}${selector}`\r\n}\r\n\r\n/**\r\n * Create a cache key from arguments\r\n */\r\nexport const createCacheKey = (args: unknown[]): string => {\r\n const len = args.length\r\n if (len === 0) {return ''}\r\n if (len === 1) {\r\n const arg = args[0]\r\n if (arg === undefined) {return 'u'}\r\n if (arg === null) {return 'n'}\r\n if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {\r\n return String(arg)\r\n }\r\n }\r\n if (len <= 4) {\r\n let result = ''\r\n for (let i = 0; i < len; i++) {\r\n const arg = args[i]\r\n const t = typeof arg\r\n if (arg === undefined) {\r\n result += i ? '|u' : 'u'\r\n } else if (arg === null) {\r\n result += i ? '|n' : 'n'\r\n } else if (t === 'string' || t === 'number' || t === 'boolean') {\r\n result += i ? '|' + arg : String(arg)\r\n } else {\r\n return JSON.stringify(args)\r\n }\r\n }\r\n return result\r\n }\r\n return JSON.stringify(args)\r\n}\r\n\r\n/**\r\n * Convert cacheKey to a valid CSS suffix\r\n */\r\nexport const cacheKeyToSuffix = (key: string): string => {\r\n // Fast path for simple keys\r\n const firstChar = key.charCodeAt(0)\r\n if (key.length < 20) {\r\n if ((firstChar >= 97 && firstChar <= 122) || (firstChar >= 65 && firstChar <= 90)) {\r\n // Starts with letter, check if alphanumeric\r\n let valid = true\r\n for (let i = 1; i < key.length; i++) {\r\n const c = key.charCodeAt(i)\r\n if (!((c >= 97 && c <= 122) || (c >= 65 && c <= 90) || (c >= 48 && c <= 57))) {\r\n valid = false\r\n break\r\n }\r\n }\r\n if (valid) {return toKebabCaseClassName(key)}\r\n } else if (firstChar === 45 || (firstChar >= 48 && firstChar <= 57)) {\r\n // Number or negative number\r\n let valid = true\r\n for (let i = 1; i < key.length; i++) {\r\n if (key.charCodeAt(i) < 48 || key.charCodeAt(i) > 57) {\r\n valid = false\r\n break\r\n }\r\n }\r\n if (valid) {return key}\r\n }\r\n }\r\n // Hash for complex keys\r\n let hash = 5381\r\n const len = key.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ key.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Optimized LRU cache with O(1) deletion\r\n */\r\nexport const createLRUCache = <V>(maxSize: number): { getOrSet: (key: string, factory: () => V) => V } => {\r\n const cache = new Map<string, V>()\r\n return {\r\n getOrSet(key: string, factory: () => V): V {\r\n const existing = cache.get(key)\r\n if (existing !== undefined) {\r\n // Move to end (most recent) - O(1) with Map\r\n cache.delete(key)\r\n cache.set(key, existing)\r\n return existing\r\n }\r\n const value = factory()\r\n if (cache.size >= maxSize) {\r\n // Remove oldest (first element)\r\n const firstKey = cache.keys().next().value\r\n if (firstKey !== undefined) { cache.delete(firstKey) }\r\n }\r\n cache.set(key, value)\r\n return value\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Hash for static styles cache\r\n */\r\nexport const hashStyles = (styles: StyleWithPseudos): string => {\r\n const str = JSON.stringify(styles)\r\n let hash = 5381\r\n const len = str.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Generic hash for a string\r\n */\r\nexport const hashString = (str: string): string => {\r\n let hash = 5381\r\n const len = str.length\r\n for (let i = 0; i < len; i++) {\r\n hash = ((hash << 5) + hash) ^ str.charCodeAt(i)\r\n }\r\n return (hash >>> 0).toString(36)\r\n}\r\n\r\n/**\r\n * Get a unique class name\r\n */\r\nexport const getUniqueClassName = (baseName: string): string => {\r\n if (!usedClassNames.has(baseName)) {\r\n usedClassNames.add(baseName)\r\n return baseName\r\n }\r\n let counter = 2\r\n while (usedClassNames.has(`${baseName}-${counter}`)) {\r\n counter++\r\n }\r\n const name = `${baseName}-${counter}`\r\n usedClassNames.add(name)\r\n return name\r\n}\r\n\r\n/**\r\n * Generate a CSS class with support for complex selectors\r\n * Optimized to minimize allocations and iterations\r\n */\r\nexport const generateCssClass = (styles: StyleWithPseudos, className: string, useCache = false): string => {\r\n if (useCache) {\r\n const hash = hashStyles(styles)\r\n const cached = staticStyleCache.get(hash)\r\n if (cached) { return cached }\r\n }\r\n\r\n const uniqueName = getUniqueClassName(className)\r\n let baseCss = ''\r\n\r\n for (const key in styles) {\r\n const value = (styles as Record<string, unknown>)[key]\r\n const firstChar = key[0]\r\n\r\n if (firstChar === '@') {\r\n // @media, @container, @supports\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n insertRule(`${key}{.${uniqueName}{${innerCss}}}`)\r\n }\r\n } else if (firstChar === '&') {\r\n // Complex selectors (& > div, &:nth-child, etc.)\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n insertRule(`${key.replace(/&/g, `.${uniqueName}`)}{${innerCss}}`)\r\n }\r\n } else if (firstChar === ':') {\r\n // Pseudo-classes (:hover, :focus, etc.)\r\n const innerCss = objectToCss(value as Record<string, unknown>)\r\n if (innerCss) {\r\n insertRule(`.${uniqueName}${key}{${innerCss}}`)\r\n }\r\n } else if (value != null && typeof value !== 'object') {\r\n // Simple CSS properties\r\n baseCss += `${toKebabCase(key)}:${toCssValue(key, value)};`\r\n }\r\n }\r\n\r\n // Inject base rule\r\n if (baseCss) {\r\n insertRule(`.${uniqueName}{${baseCss}}`)\r\n }\r\n\r\n if (useCache) {\r\n staticStyleCache.set(hashStyles(styles), uniqueName)\r\n }\r\n\r\n return uniqueName\r\n}\r\n\r\n/**\r\n * Check if a keyframe already exists\r\n */\r\nexport const hasKeyframes = (css: string): boolean => {\r\n return injectedKeyframes.has(css)\r\n}\r\n\r\n/**\r\n * Add a keyframe to the registry\r\n */\r\nexport const addKeyframes = (css: string): void => {\r\n injectedKeyframes.add(css)\r\n}\r\n\r\n/**\r\n * Get the next keyframe ID\r\n */\r\nexport const getNextKeyframeId = (): string => {\r\n return (++keyframeCounter).toString(36)\r\n}\r\n\r\n/**\r\n * Check if a font-face already exists\r\n */\r\nexport const hasFontFace = (css: string): boolean => {\r\n return injectedFontFaces.has(css)\r\n}\r\n\r\n/**\r\n * Add a font-face to the registry\r\n */\r\nexport const addFontFace = (css: string): void => {\r\n injectedFontFaces.add(css)\r\n}\r\n\r\n/**\r\n * Get SSR rules\r\n */\r\nexport const getSSRRulesInternal = (): string[] => {\r\n return ssrRules\r\n}\r\n\r\n/**\r\n * Reset SSR state\r\n */\r\nexport const resetState = (): void => {\r\n ssrRules = []\r\n staticStyleCache.clear()\r\n usedClassNames.clear()\r\n injectedKeyframes.clear()\r\n injectedFontFaces.clear()\r\n keyframeCounter = 0\r\n}\r\n\r\n","import { createContext, useContext, useLayoutEffect, type ReactNode } from 'react'\r\n\r\nimport { setThemeContextGetter } from '@/utils/styles/styleEngine'\r\n\r\nimport type { ThemeStructure } from '@/types'\r\n\r\n// Context accepts any theme structure\r\nconst ThemeContext = createContext<ThemeStructure | undefined>(undefined)\r\n\r\nexport type ThemeProviderProps<TTheme extends ThemeStructure = ThemeStructure> = {\r\n theme: TTheme\r\n children?: ReactNode\r\n}\r\n\r\n/**\r\n * Theme provider component\r\n * Provides theme context to all child components\r\n * Accepts any theme structure created with createTheme()\r\n *\r\n * @example\r\n * ```tsx\r\n * const myTheme = createTheme({\r\n * colors: { primary: '#007bff', background: '#fff' }\r\n * })\r\n *\r\n * <ThemeProvider theme={myTheme}>\r\n * <App />\r\n * </ThemeProvider>\r\n * ```\r\n */\r\nexport const ThemeProvider = <TTheme extends ThemeStructure>({\r\n theme,\r\n children\r\n}: ThemeProviderProps<TTheme>) => {\r\n const previousGetter = setThemeContextGetter(() => theme)\r\n\r\n useLayoutEffect(() => {\r\n return () => {\r\n setThemeContextGetter(previousGetter)\r\n }\r\n }, [previousGetter])\r\n\r\n return (\r\n <ThemeContext.Provider value={theme}>\r\n {children}\r\n </ThemeContext.Provider>\r\n )\r\n}\r\n\r\n/**\r\n * Hook to access the current theme\r\n * Returns the theme provided by ThemeProvider with exact inferred types\r\n *\r\n * @example\r\n * ```tsx\r\n * const myTheme = createTheme({ colors: { brand: '#000' } })\r\n *\r\n * function MyComponent() {\r\n * const theme = useTheme() // theme.colors.brand is accessible!\r\n * }\r\n * ```\r\n *\r\n * @throws {Error} If used outside a ThemeProvider\r\n */\r\nexport const useTheme = <TTheme extends ThemeStructure = ThemeStructure>(): TTheme => {\r\n const theme = useContext(ThemeContext)\r\n\r\n if (!theme) {\r\n throw new Error('useTheme must be used within a ThemeProvider')\r\n }\r\n\r\n return theme as TTheme\r\n}\r\n\r\n","/**\r\n * Default token values for theme creation - V3\r\n * TypeScript infers the types automatically from the values using `as const`\r\n * Note: No default colors/palette - colors must be defined by the user\r\n */\r\n\r\n/**\r\n * Default spacing scale\r\n */\r\nexport const defaultSpacing = {\r\n none: '0',\r\n '2xs': '0.125rem', // 2px\r\n xs: '0.25rem', // 4px\r\n sm: '0.5rem', // 8px\r\n md: '1rem', // 16px\r\n lg: '1.5rem', // 24px\r\n xl: '2rem', // 32px\r\n '2xl': '3rem', // 48px\r\n '3xl': '4rem', // 64px\r\n '4xl': '6rem', // 96px\r\n '5xl': '8rem', // 128px\r\n} as const\r\n\r\n/**\r\n * Default border radius scale\r\n */\r\nexport const defaultRadius = {\r\n none: '0',\r\n xs: '0.125rem', // 2px\r\n sm: '0.25rem', // 4px\r\n md: '0.375rem', // 6px\r\n lg: '0.5rem', // 8px\r\n xl: '0.75rem', // 12px\r\n '2xl': '1rem', // 16px\r\n full: '9999px',\r\n} as const\r\n\r\n/**\r\n * Default shadow scale\r\n */\r\nexport const defaultShadows = {\r\n none: 'none',\r\n xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n sm: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\r\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\r\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\r\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\r\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\r\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\r\n focus: '0 0 0 3px rgb(99 102 241 / 0.4)',\r\n} as const\r\n\r\n/**\r\n * Default font size scale\r\n */\r\nexport const defaultFontSize = {\r\n '2xs': '0.625rem', // 10px\r\n xs: '0.75rem', // 12px\r\n sm: '0.875rem', // 14px\r\n md: '1rem', // 16px\r\n lg: '1.25rem', // 20px\r\n xl: '1.5rem', // 24px\r\n '2xl': '2rem', // 32px\r\n '3xl': '2.5rem', // 40px\r\n '4xl': '3rem', // 48px\r\n '5xl': '4rem', // 64px\r\n} as const\r\n\r\n/**\r\n * Default font weight scale\r\n */\r\nexport const defaultFontWeight = {\r\n light: 300,\r\n regular: 400,\r\n medium: 500,\r\n semibold: 600,\r\n bold: 700,\r\n} as const\r\n\r\n/**\r\n * Default line height scale\r\n */\r\nexport const defaultLineHeight = {\r\n none: 1,\r\n tight: 1.25,\r\n normal: 1.5,\r\n relaxed: 1.75,\r\n loose: 2,\r\n} as const\r\n\r\n/**\r\n * Default z-index scale\r\n */\r\nexport const defaultZIndex = {\r\n behind: -1,\r\n base: 0,\r\n dropdown: 1000,\r\n sticky: 1100,\r\n overlay: 1300,\r\n modal: 1400,\r\n popover: 1500,\r\n tooltip: 1600,\r\n toast: 1700,\r\n} as const\r\n\r\n/**\r\n * Default transition scale\r\n */\r\nexport const defaultTransition = {\r\n fast: '150ms ease-out',\r\n normal: '250ms ease-out',\r\n slow: '350ms ease-out',\r\n} as const\r\n\r\n/**\r\n * Default opacity scale\r\n */\r\nexport const defaultOpacity = {\r\n none: 0,\r\n lowest: 0.05,\r\n low: 0.1,\r\n medium: 0.25,\r\n high: 0.5,\r\n higher: 0.75,\r\n full: 1,\r\n} as const\r\n\r\n/**\r\n * Default responsive breakpoints\r\n */\r\nexport const defaultBreakpoints = {\r\n xs: '480px', // Extra small devices (phones in landscape)\r\n sm: '640px', // Small devices (large phones, small tablets)\r\n md: '768px', // Medium devices (tablets)\r\n lg: '1024px', // Large devices (desktops)\r\n xl: '1280px', // Extra large devices (large desktops)\r\n '2xl': '1536px', // Extra extra large devices (wide screens)\r\n} as const\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const amber: ColorScale = {\r\n 25: '#fffdfb',\r\n 50: '#fffbeb',\r\n 100: '#fef3c7',\r\n 200: '#fde68a',\r\n 300: '#fcd34d',\r\n 400: '#fbbf24',\r\n 500: '#f59e0b',\r\n 600: '#d97706',\r\n 700: '#b45309',\r\n 800: '#92400e',\r\n 900: '#78350f',\r\n 950: '#451a03',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const blue: ColorScale = {\r\n 25: '#f5f8ff',\r\n 50: '#eff6ff',\r\n 100: '#dbeafe',\r\n 200: '#bfdbfe',\r\n 300: '#93c5fd',\r\n 400: '#60a5fa',\r\n 500: '#3b82f6',\r\n 600: '#2563eb',\r\n 700: '#1d4ed8',\r\n 800: '#1e40af',\r\n 900: '#1e3a8a',\r\n 950: '#172554',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const cyan: ColorScale = {\r\n 25: '#f3fefe',\r\n 50: '#ecfeff',\r\n 100: '#cffafe',\r\n 200: '#a5f3fc',\r\n 300: '#67e8f9',\r\n 400: '#22d3ee',\r\n 500: '#06b6d4',\r\n 600: '#0891b2',\r\n 700: '#0e7490',\r\n 800: '#155e75',\r\n 900: '#164e63',\r\n 950: '#083344',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const emerald: ColorScale = {\r\n 25: '#f5fefc',\r\n 50: '#ecfdf5',\r\n 100: '#d1fae5',\r\n 200: '#a7f3d0',\r\n 300: '#6ee7b7',\r\n 400: '#34d399',\r\n 500: '#10b981',\r\n 600: '#059669',\r\n 700: '#047857',\r\n 800: '#065f46',\r\n 900: '#064e3b',\r\n 950: '#022c22',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const fuchsia: ColorScale = {\r\n 25: '#fef5ff',\r\n 50: '#fdf4ff',\r\n 100: '#fae8ff',\r\n 200: '#f5d0fe',\r\n 300: '#f0abfc',\r\n 400: '#e879f9',\r\n 500: '#d946ef',\r\n 600: '#c026d3',\r\n 700: '#a21caf',\r\n 800: '#86198f',\r\n 900: '#701a75',\r\n 950: '#4a044e',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const gray: ColorScale = {\r\n 25: '#fcfcfc',\r\n 50: '#fafafa',\r\n 100: '#f4f4f5',\r\n 200: '#e4e4e7',\r\n 300: '#d4d4d8',\r\n 400: '#a1a1aa',\r\n 500: '#71717a',\r\n 600: '#52525b',\r\n 700: '#3f3f46',\r\n 800: '#27272a',\r\n 900: '#18181b',\r\n 950: '#09090b',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const green: ColorScale = {\r\n 25: '#f6fef9',\r\n 50: '#f0fdf4',\r\n 100: '#dcfce7',\r\n 200: '#bbf7d0',\r\n 300: '#86efac',\r\n 400: '#4ade80',\r\n 500: '#22c55e',\r\n 600: '#16a34a',\r\n 700: '#15803d',\r\n 800: '#166534',\r\n 900: '#14532d',\r\n 950: '#052e16',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const indigo: ColorScale = {\r\n 25: '#f5f7ff',\r\n 50: '#eef2ff',\r\n 100: '#e0e7ff',\r\n 200: '#c7d2fe',\r\n 300: '#a5b4fc',\r\n 400: '#818cf8',\r\n 500: '#6366f1',\r\n 600: '#4f46e5',\r\n 700: '#4338ca',\r\n 800: '#3730a3',\r\n 900: '#312e81',\r\n 950: '#1e1b4b',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const lime: ColorScale = {\r\n 25: '#fbfef8',\r\n 50: '#f7fee7',\r\n 100: '#ecfccb',\r\n 200: '#d9f99d',\r\n 300: '#bef264',\r\n 400: '#a3e635',\r\n 500: '#84cc16',\r\n 600: '#65a30d',\r\n 700: '#4d7c0f',\r\n 800: '#3f6212',\r\n 900: '#365314',\r\n 950: '#1a2e05',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const orange: ColorScale = {\r\n 25: '#fffcfa',\r\n 50: '#fff7ed',\r\n 100: '#ffedd5',\r\n 200: '#fed7aa',\r\n 300: '#fdba74',\r\n 400: '#fb923c',\r\n 500: '#f97316',\r\n 600: '#ea580c',\r\n 700: '#c2410c',\r\n 800: '#9a3412',\r\n 900: '#7c2d12',\r\n 950: '#431407',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const pink: ColorScale = {\r\n 25: '#fef5f9',\r\n 50: '#fdf2f8',\r\n 100: '#fce7f3',\r\n 200: '#fbcfe8',\r\n 300: '#f9a8d4',\r\n 400: '#f472b6',\r\n 500: '#ec4899',\r\n 600: '#db2777',\r\n 700: '#be185d',\r\n 800: '#9d174d',\r\n 900: '#831843',\r\n 950: '#500724',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const purple: ColorScale = {\r\n 25: '#faf5ff',\r\n 50: '#faf5ff',\r\n 100: '#f3e8ff',\r\n 200: '#e9d5ff',\r\n 300: '#d8b4fe',\r\n 400: '#c084fc',\r\n 500: '#a855f7',\r\n 600: '#9333ea',\r\n 700: '#7e22ce',\r\n 800: '#6b21a8',\r\n 900: '#581c87',\r\n 950: '#3b0764',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const red: ColorScale = {\r\n 25: '#fffbfb',\r\n 50: '#fef2f2',\r\n 100: '#fee2e2',\r\n 200: '#fecaca',\r\n 300: '#fca5a5',\r\n 400: '#f87171',\r\n 500: '#ef4444',\r\n 600: '#dc2626',\r\n 700: '#b91c1c',\r\n 800: '#991b1b',\r\n 900: '#7f1d1d',\r\n 950: '#450a0a',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const rose: ColorScale = {\r\n 25: '#fff5f6',\r\n 50: '#fff1f2',\r\n 100: '#ffe4e6',\r\n 200: '#fecdd3',\r\n 300: '#fda4af',\r\n 400: '#fb7185',\r\n 500: '#f43f5e',\r\n 600: '#e11d48',\r\n 700: '#be123c',\r\n 800: '#9f1239',\r\n 900: '#881337',\r\n 950: '#4c0519',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const slate: ColorScale = {\r\n 25: '#fcfcfd',\r\n 50: '#f8fafc',\r\n 100: '#f1f5f9',\r\n 200: '#e2e8f0',\r\n 300: '#cbd5e1',\r\n 400: '#94a3b8',\r\n 500: '#64748b',\r\n 600: '#475569',\r\n 700: '#334155',\r\n 800: '#1e293b',\r\n 900: '#0f172a',\r\n 950: '#020617',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const stone: ColorScale = {\r\n 25: '#fcfcfb',\r\n 50: '#fafaf9',\r\n 100: '#f5f5f4',\r\n 200: '#e7e5e4',\r\n 300: '#d6d3d1',\r\n 400: '#a8a29e',\r\n 500: '#78716c',\r\n 600: '#57534e',\r\n 700: '#44403c',\r\n 800: '#292524',\r\n 900: '#1c1917',\r\n 950: '#0c0a09',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const teal: ColorScale = {\r\n 25: '#f4fefe',\r\n 50: '#f0fdfa',\r\n 100: '#ccfbf1',\r\n 200: '#99f6e4',\r\n 300: '#5eead4',\r\n 400: '#2dd4bf',\r\n 500: '#14b8a6',\r\n 600: '#0d9488',\r\n 700: '#0f766e',\r\n 800: '#115e59',\r\n 900: '#134e4a',\r\n 950: '#042f2e',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const violet: ColorScale = {\r\n 25: '#f8f5ff',\r\n 50: '#f5f3ff',\r\n 100: '#ede9fe',\r\n 200: '#ddd6fe',\r\n 300: '#c4b5fd',\r\n 400: '#a78bfa',\r\n 500: '#8b5cf6',\r\n 600: '#7c3aed',\r\n 700: '#6d28d9',\r\n 800: '#5b21b6',\r\n 900: '#4c1d95',\r\n 950: '#2e1065',\r\n}\r\n\r\n","import type { ColorScale } from '@/types'\r\n\r\nexport const yellow: ColorScale = {\r\n 25: '#fefef9',\r\n 50: '#fefce8',\r\n 100: '#fef9c3',\r\n 200: '#fef08a',\r\n 300: '#fde047',\r\n 400: '#facc15',\r\n 500: '#eab308',\r\n 600: '#ca8a04',\r\n 700: '#a16207',\r\n 800: '#854d0e',\r\n 900: '#713f12',\r\n 950: '#422006',\r\n}\r\n\r\n","/**\r\n * Color Scales - Modern color palettes with shades from 25 to 950\r\n *\r\n * Scales are only accessible via the colors object to maintain consistency\r\n *\r\n * @example\r\n * ```ts\r\n * import { colors } from '@aurora-ui/theme'\r\n *\r\n * colors.indigo[500] // '#6366f1'\r\n * colors.emerald[400] // '#34d399'\r\n * colors.gray[900] // '#18181b'\r\n * ```\r\n */\r\n\r\n// Import all scales for the colors object\r\nimport { amber } from './amber'\r\nimport { blue } from './blue'\r\nimport { cyan } from './cyan'\r\nimport { emerald } from './emerald'\r\nimport { fuchsia } from './fuchsia'\r\nimport { gray } from './gray'\r\nimport { green } from './green'\r\nimport { indigo } from './indigo'\r\nimport { lime } from './lime'\r\nimport { orange } from './orange'\r\nimport { pink } from './pink'\r\nimport { purple } from './purple'\r\nimport { red } from './red'\r\nimport { rose } from './rose'\r\nimport { slate } from './slate'\r\nimport { stone } from './stone'\r\nimport { teal } from './teal'\r\nimport { violet } from './violet'\r\nimport { yellow } from './yellow'\r\n\r\n/**\r\n * All color scales organized by name\r\n * All scales and special values are only accessible via this object\r\n */\r\nexport const colors = {\r\n // Neutrals\r\n gray,\r\n slate,\r\n stone,\r\n // Colors\r\n red,\r\n orange,\r\n amber,\r\n yellow,\r\n lime,\r\n green,\r\n emerald,\r\n teal,\r\n cyan,\r\n blue,\r\n indigo,\r\n violet,\r\n purple,\r\n fuchsia,\r\n pink,\r\n rose,\r\n // Special\r\n white: '#ffffff',\r\n black: '#000000',\r\n transparent: 'transparent',\r\n current: 'currentColor',\r\n} as const\r\n\r\n","import { colors } from '../colors'\r\n\r\nimport type { BaseColors } from '@/types'\r\n\r\n/**\r\n * Default palette - V3\r\n * A clean, modern palette using Indigo as primary and Slate as neutral\r\n *\r\n * This palette is optional and serves as a reference/starting point.\r\n * You can use it directly, customize it, or create your own from scratch.\r\n *\r\n * @example\r\n * ```ts\r\n * // Use as-is\r\n * const theme = createTheme({ colors: defaultPalette })\r\n *\r\n * // Customize specific colors\r\n * const theme = createTheme({\r\n * colors: {\r\n * ...defaultPalette,\r\n * primary: '#custom-color',\r\n * }\r\n * })\r\n *\r\n * // Or create your own from scratch\r\n * const theme = createTheme({\r\n * colors: { primary: '#...', background: '#...' }\r\n * })\r\n * ```\r\n */\r\nexport const defaultPalette: BaseColors = {\r\n // Surface colors\r\n background: colors.slate[25],\r\n surface: colors.white,\r\n surfaceHover: colors.slate[100],\r\n surfaceActive: colors.slate[200],\r\n\r\n // Text colors\r\n text: colors.slate[800],\r\n textSecondary: colors.slate[500],\r\n textTertiary: colors.slate[400],\r\n\r\n // Primary colors\r\n primary: colors.indigo[600],\r\n primaryHover: colors.indigo[700],\r\n primaryActive: colors.indigo[800],\r\n primarySubtle: colors.indigo[50],\r\n primaryDisabled: colors.indigo[300],\r\n onPrimary: colors.white,\r\n\r\n // Secondary colors\r\n secondary: colors.slate[100],\r\n secondaryHover: colors.slate[200],\r\n secondaryActive: colors.slate[300],\r\n secondarySubtle: colors.slate[50],\r\n secondaryDisabled: colors.slate[200],\r\n onSecondary: colors.slate[700],\r\n\r\n // Border colors\r\n border: colors.slate[200],\r\n\r\n // Disabled state\r\n disabledText: colors.slate[400],\r\n disabled: colors.slate[300],\r\n\r\n // Semantic colors - Success\r\n success: colors.emerald[600],\r\n successSubtle: colors.emerald[50],\r\n\r\n // Semantic colors - Warning\r\n warning: colors.amber[500],\r\n warningSubtle: colors.amber[50],\r\n\r\n // Semantic colors - Error\r\n error: colors.red[600],\r\n errorHover: colors.red[700],\r\n errorSubtle: colors.red[50],\r\n onError: colors.white,\r\n\r\n // Semantic colors - Info\r\n info: colors.blue[600],\r\n infoSubtle: colors.blue[50],\r\n\r\n // Link colors\r\n link: colors.indigo[600],\r\n linkHover: colors.indigo[700],\r\n linkActive: colors.indigo[800],\r\n linkDisabled: colors.indigo[300],\r\n}\r\n","import {\r\n defaultSpacing,\r\n defaultRadius,\r\n defaultShadows,\r\n defaultFontSize,\r\n defaultFontWeight,\r\n defaultLineHeight,\r\n defaultZIndex,\r\n defaultTransition,\r\n defaultOpacity,\r\n defaultBreakpoints,\r\n} from './defaultTheme'\r\nimport { defaultPalette } from './palettes'\r\n\r\n/**\r\n * Create a theme with custom color tokens - V3\r\n * Colors are optional - if not provided, defaultPalette is used\r\n * All other tokens use defaults and can be optionally overridden\r\n *\r\n * @param config - Theme configuration (all optional)\r\n *\r\n * @example\r\n * ```ts\r\n * // Use defaultPalette (quickest way to start)\r\n * const theme = createTheme()\r\n *\r\n * // Customize defaultPalette\r\n * const theme = createTheme({\r\n * colors: {\r\n * ...defaultPalette,\r\n * primary: '#custom'\r\n * }\r\n * })\r\n *\r\n * // Or create your own colors from scratch\r\n * const theme = createTheme({\r\n * colors: {\r\n * brand: '#007bff',\r\n * surface: '#ffffff',\r\n * text: '#212529',\r\n * }\r\n * })\r\n * ```\r\n */\r\nexport const createTheme = <\r\n const TConfig extends {\r\n colors?: Record<string, string>\r\n spacing?: Record<string, string>\r\n radius?: Record<string, string>\r\n shadows?: Record<string, string>\r\n fontSize?: Record<string, string>\r\n fontWeight?: Record<string, number>\r\n lineHeight?: Record<string, number>\r\n zIndex?: Record<string, number>\r\n transition?: Record<string, string>\r\n opacity?: Record<string, number>\r\n breakpoints?: Record<string, string>\r\n } = object\r\n>(config?: TConfig) => {\r\n return {\r\n colors: (config?.colors ?? defaultPalette) as TConfig['colors'] extends Record<string, string> ? TConfig['colors'] : typeof defaultPalette,\r\n spacing: (config?.spacing ?? defaultSpacing) as TConfig['spacing'] extends Record<string, string> ? TConfig['spacing'] : typeof defaultSpacing,\r\n radius: (config?.radius ?? defaultRadius) as TConfig['radius'] extends Record<string, string> ? TConfig['radius'] : typeof defaultRadius,\r\n shadows: (config?.shadows ?? defaultShadows) as TConfig['shadows'] extends Record<string, string> ? TConfig['shadows'] : typeof defaultShadows,\r\n fontSize: (config?.fontSize ?? defaultFontSize) as TConfig['fontSize'] extends Record<string, string> ? TConfig['fontSize'] : typeof defaultFontSize,\r\n fontWeight: (config?.fontWeight ?? defaultFontWeight) as TConfig['fontWeight'] extends Record<string, number> ? TConfig['fontWeight'] : typeof defaultFontWeight,\r\n lineHeight: (config?.lineHeight ?? defaultLineHeight) as TConfig['lineHeight'] extends Record<string, number> ? TConfig['lineHeight'] : typeof defaultLineHeight,\r\n zIndex: (config?.zIndex ?? defaultZIndex) as TConfig['zIndex'] extends Record<string, number> ? TConfig['zIndex'] : typeof defaultZIndex,\r\n transition: (config?.transition ?? defaultTransition) as TConfig['transition'] extends Record<string, string> ? TConfig['transition'] : typeof defaultTransition,\r\n opacity: (config?.opacity ?? defaultOpacity) as TConfig['opacity'] extends Record<string, number> ? TConfig['opacity'] : typeof defaultOpacity,\r\n breakpoints: (config?.breakpoints ?? defaultBreakpoints) as TConfig['breakpoints'] extends Record<string, string> ? TConfig['breakpoints'] : typeof defaultBreakpoints,\r\n } as const\r\n}\r\n\r\n","\r\nimport {\r\n cacheKeyToSuffix,\r\n createCacheKey,\r\n createLRUCache,\r\n generateCssClass,\r\n getTheme,\r\n MAX_CACHE_SIZE,\r\n toKebabCaseClassName\r\n} from './styleEngine'\r\n\r\nimport type { StyleFunction, StyleWithPseudos } from './types'\r\nimport type { ThemeStructure } from '@/types'\r\n\r\n/**\r\n * Extract component name from stack trace\r\n */\r\nconst getComponentNameFromStack = (): string => {\r\n const stack = new Error().stack || ''\r\n const match = stack.match(/([A-Za-z0-9_]+)\\.styles\\.[tj]s/)\r\n if (match?.[1]) {\r\n return toKebabCaseClassName(match[1])\r\n }\r\n const fileMatch = stack.match(/\\/([A-Za-z0-9_]+)\\.[tj]sx?[:\\d]*\\)?$/m)\r\n if (fileMatch?.[1] && fileMatch[1] !== 'createStyles') {\r\n return toKebabCaseClassName(fileMatch[1])\r\n }\r\n return 'style'\r\n}\r\n\r\n/**\r\n * Process styles and generate CSS classes\r\n */\r\nconst processStyles = <T extends Record<string, StyleWithPseudos | StyleFunction>>(\r\n styles: T,\r\n componentName: string\r\n): Record<string, string | ((...args: unknown[]) => string)> => {\r\n const classes = {} as Record<string, string | ((...args: unknown[]) => string)>\r\n\r\n for (const key in styles) {\r\n const style = styles[key]\r\n if (style) {\r\n const baseName = `${componentName}-${toKebabCaseClassName(key)}`\r\n if (typeof style === 'function') {\r\n const lru = createLRUCache<string>(MAX_CACHE_SIZE)\r\n classes[key] = (...args: unknown[]) => {\r\n const cacheKey = createCacheKey(args)\r\n return lru.getOrSet(cacheKey, () => {\r\n const resolved = (style as (...a: unknown[]) => StyleWithPseudos)(...args)\r\n return generateCssClass(resolved, `${baseName}-${cacheKeyToSuffix(cacheKey)}`)\r\n })\r\n }\r\n } else {\r\n classes[key] = generateCssClass(style, baseName, true)\r\n }\r\n }\r\n }\r\n\r\n return classes\r\n}\r\n\r\n/**\r\n * Create typed styles with support for pseudo-classes, media queries, container queries, feature queries and complex selectors\r\n *\r\n * Supports custom themes via generic parameter.\r\n *\r\n * @example\r\n * ```ts\r\n * // Basic usage\r\n * const STYLES = createStyles((theme) => ({\r\n * root: {\r\n * display: 'flex',\r\n * padding: theme.spacing.md,\r\n * ':hover': { backgroundColor: theme.colors.primary },\r\n * }\r\n * }))\r\n *\r\n * // With explicit theme type\r\n * const myTheme = createTheme({ colors: { brand: '#007bff' } })\r\n *\r\n * const STYLES = createStyles((theme) => ({\r\n * root: {\r\n * backgroundColor: theme.colors.primary, // TypeScript knows the structure!\r\n * }\r\n * }))\r\n * ```\r\n */\r\nexport const createStyles = <\r\n T extends Record<string, StyleWithPseudos | StyleFunction> = Record<string, StyleWithPseudos | StyleFunction>\r\n>(\r\n stylesOrCreator: T | ((theme: ThemeStructure) => T)\r\n ): { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string } => {\r\n type Result = { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string }\r\n const componentName = getComponentNameFromStack()\r\n\r\n // Styles with theme (function)\r\n if (typeof stylesOrCreator === 'function') {\r\n let cached: Result | null = null\r\n let lastTheme: ThemeStructure | undefined\r\n\r\n return new Proxy({} as Result, {\r\n get(_, prop: string | symbol) {\r\n const theme = getTheme()\r\n if (!theme) {\r\n throw new Error('createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.')\r\n }\r\n if (theme !== lastTheme || !cached) {\r\n cached = processStyles(stylesOrCreator(theme), componentName) as Result\r\n lastTheme = theme\r\n }\r\n return cached[prop as keyof T]\r\n }\r\n })\r\n }\r\n\r\n // Styles without theme (direct object)\r\n return processStyles(stylesOrCreator, componentName) as Result\r\n}\r\n\r\n/**\r\n * Create a typed createStyles function pre-configured with your custom theme type.\r\n * This eliminates the need to specify the theme type on every createStyles call.\r\n *\r\n * @example\r\n * ```ts\r\n * // 1. Define your theme\r\n * const myTheme = createTheme({\r\n * colors: {\r\n * brand: '#007bff',\r\n * surface: '#ffffff',\r\n * }\r\n * })\r\n *\r\n * // 2. Create a pre-typed createStyles function (do this once)\r\n * export const createStyles = createTypedStyles<typeof myTheme>()\r\n *\r\n * // 3. Use it everywhere without specifying the type!\r\n * const STYLES = createStyles((theme) => ({\r\n * button: {\r\n * backgroundColor: theme.colors.primary, // ✅ TypeScript knows!\r\n * },\r\n * }))\r\n * ```\r\n */\r\nexport const createTypedStyles = <TTheme extends ThemeStructure = ThemeStructure>() => {\r\n return <T extends Record<string, StyleWithPseudos | StyleFunction>>(\r\n stylesOrCreator: T | ((theme: TTheme) => T)\r\n ): { [K in keyof T]: T[K] extends (...args: infer TArgs) => StyleWithPseudos ? (...args: TArgs) => string : string } => {\r\n return createStyles<T>(stylesOrCreator as T | ((theme: ThemeStructure) => T))\r\n }\r\n}\r\n\r\n","import {\r\n addKeyframes,\r\n getNextKeyframeId,\r\n hashString,\r\n hasKeyframes,\r\n insertRule,\r\n objectToCss\r\n} from './styleEngine'\r\n\r\nimport type { CSSProperties } from 'react'\r\n\r\n\r\n/**\r\n * Create and inject keyframes\r\n *\r\n * @example\r\n * ```ts\r\n * const fadeIn = keyframes({\r\n * from: { opacity: 0 },\r\n * to: { opacity: 1 }\r\n * })\r\n *\r\n * const STYLES = createStyles({\r\n * animated: { animation: `${fadeIn} 0.3s ease-in-out` }\r\n * })\r\n * ```\r\n */\r\nexport const keyframes = (frames: Record<string, CSSProperties>): string => {\r\n // Generate keyframes CSS\r\n let css = ''\r\n for (const key in frames) {\r\n css += `${key}{${objectToCss(frames[key] as Record<string, unknown>)}}`\r\n }\r\n\r\n // Check if these keyframes already exist\r\n if (hasKeyframes(css)) {\r\n const hash = hashString(css)\r\n return `aurora-kf-${hash}`\r\n }\r\n\r\n // Generate a unique name\r\n const name = `aurora-kf-${getNextKeyframeId()}`\r\n\r\n // Inject @keyframes rule\r\n insertRule(`@keyframes ${name}{${css}}`)\r\n addKeyframes(css)\r\n\r\n return name\r\n}\r\n\r\n","import { addFontFace, hasFontFace, insertRule } from './styleEngine'\r\n\r\nimport type { FontFaceOptions } from './types'\r\n\r\n/**\r\n * Inject a @font-face rule\r\n *\r\n * @example\r\n * ```ts\r\n * fontFace({\r\n * fontFamily: 'MyFont',\r\n * src: \"url('/fonts/myfont.woff2') format('woff2')\",\r\n * fontWeight: 400,\r\n * fontStyle: 'normal',\r\n * fontDisplay: 'swap'\r\n * })\r\n * ```\r\n */\r\nexport const fontFace = (options: FontFaceOptions): string => {\r\n const {\r\n fontFamily,\r\n src,\r\n fontStyle = 'normal',\r\n fontWeight = 400,\r\n fontDisplay = 'swap',\r\n unicodeRange\r\n } = options\r\n\r\n // Generate CSS\r\n let css = `font-family:\"${fontFamily}\";`\r\n css += `src:${src};`\r\n css += `font-style:${fontStyle};`\r\n css += `font-weight:${fontWeight};`\r\n css += `font-display:${fontDisplay};`\r\n if (unicodeRange) {\r\n css += `unicode-range:${unicodeRange};`\r\n }\r\n\r\n // Check if already injected\r\n if (!hasFontFace(css)) {\r\n insertRule(`@font-face{${css}}`)\r\n addFontFace(css)\r\n }\r\n\r\n return fontFamily\r\n}\r\n\r\n","import { insertRule, toKebabCase } from './styleEngine'\r\n\r\nimport type { ThemeStructure } from '@/types'\r\n\r\n\r\n/**\r\n * Generate CSS variables from a theme object\r\n */\r\nconst generateCssVariables = (obj: Record<string, unknown>, prefix: string): string => {\r\n let css = ''\r\n\r\n for (const key in obj) {\r\n const value = obj[key]\r\n const kebabKey = toKebabCase(key)\r\n\r\n if (value && typeof value === 'object') {\r\n css += generateCssVariables(value as Record<string, unknown>, `${prefix}-${kebabKey}`)\r\n } else if (value != null) {\r\n css += `--${prefix}-${kebabKey}:${value};`\r\n }\r\n }\r\n\r\n return css\r\n}\r\n\r\n/**\r\n * Create CSS variables from the theme\r\n * Injects variables into :root\r\n *\r\n * @example\r\n * ```ts\r\n * // In ThemeProvider\r\n * injectCssVariables(theme, 'aurora')\r\n * // Generates: :root { --aurora-colors-primary: #2563EB; ... }\r\n * ```\r\n */\r\nexport const injectCssVariables = (\r\n theme: ThemeStructure,\r\n prefix = 'theme'\r\n): void => {\r\n const variables = generateCssVariables(theme, prefix)\r\n insertRule(`:root{${variables}}`)\r\n}\r\n\r\n/**\r\n * Helper to use a CSS variable from the theme\r\n *\r\n * @example\r\n * ```ts\r\n * const STYLES = createStyles({\r\n * root: { color: cssVar('colors-primary') }\r\n * })\r\n * // Generates: color: var(--theme-colors-primary)\r\n * ```\r\n */\r\nexport const cssVar = (path: string, fallback?: string): string => {\r\n const varName = `--theme-${path.replace(/\\./g, '-')}`\r\n return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`\r\n}\r\n\r\n/**\r\n * Create CSS variable references from a typed object\r\n * Returns an object with the same structure where values are var() references\r\n *\r\n * @example\r\n * ```ts\r\n * const vars = cssVariables({\r\n * primaryColor: '#007bff',\r\n * spacing: '1rem',\r\n * })\r\n * // vars.primaryColor === 'var(--primary-color)'\r\n * ```\r\n */\r\nexport const cssVariables = <T extends Record<string, string | number>>(\r\n variables: T,\r\n options: { prefix?: string; inject?: boolean } = {}\r\n): { [K in keyof T]: string } => {\r\n const { prefix = '', inject = false } = options\r\n const result = {} as { [K in keyof T]: string }\r\n let cssToInject = ''\r\n\r\n for (const key in variables) {\r\n const kebabKey = toKebabCase(key)\r\n const varName = prefix ? `--${prefix}-${kebabKey}` : `--${kebabKey}`\r\n result[key] = `var(${varName})`\r\n\r\n if (inject) {\r\n cssToInject += `${varName}:${variables[key]};`\r\n }\r\n }\r\n\r\n if (inject && cssToInject) {\r\n insertRule(`:root{${cssToInject}}`)\r\n }\r\n\r\n return result\r\n}\r\n\r\n","import { getSSRRulesInternal, resetState } from './styleEngine'\r\n\r\n/**\r\n * SSR: Get all collected CSS rules as a single string\r\n * @returns The CSS content to inject into HTML\r\n */\r\nexport const getSSRStyles = (): string => {\r\n return getSSRRulesInternal().join('')\r\n}\r\n\r\n/**\r\n * SSR: Get styles as a <style> tag ready to inject\r\n * @returns The complete style tag to inject into <head>\r\n */\r\nexport const getSSRStyleTag = (): string => {\r\n const css = getSSRStyles()\r\n if (!css) { return '' }\r\n return `<style id=\"aurora-styles\">${css}</style>`\r\n}\r\n\r\n/**\r\n * SSR: Clear the collected rules buffer\r\n * Call at the beginning of each SSR request to ensure clean state\r\n */\r\nexport const clearSSRRules = (): void => {\r\n resetState()\r\n}\r\n\r\n/**\r\n * SSR: Get raw CSS rules as an array\r\n * @returns Array of CSS rules\r\n */\r\nexport const getSSRRulesArray = (): string[] => {\r\n return [...getSSRRulesInternal()]\r\n}\r\n\r\n"]}
|