@aurora-ds/theme 2.0.1 → 3.1.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/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import {createContext,useLayoutEffect,useContext}from'react';import {jsx}from'react/jsx-runtime';var j=typeof document>"u",F=null,p=null,z=[],O=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"]]),A=new Map,d=new Set,I=new Set,W=new Set,L=0,Fe=new Set(["animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","fontWeight","lineHeight","opacity","order","orphans","widows","zIndex","zoom"]),N=100;if(!j){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=F;return F=e,t},K=()=>F?.(),l=e=>{if(j)z.push(e);else if(p)try{p.insertRule(e,p.cssRules.length);}catch{}},u=e=>{let t=O.get(e);return t||(t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),O.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(),Ae=/expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|@import|<\s*\/?\s*style/i,Z=e=>{let t=e.replace(/\0/g,"");return Ae.test(t)?"unset":t},_=(e,t)=>typeof t=="number"&&!Fe.has(e)?`${t}px`:Z(String(t)),m=e=>{let t="";for(let r in e){let o=e[r];o!=null&&typeof o!="object"&&(t+=`${u(r)}:${_(r,o)};`);}return t};var D=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)},M=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 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)},G=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}}},V=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)},J=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(!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=(e,t,r=false)=>{if(r){let s=V(e),i=A.get(s);if(i)return i}let o=ze(t),n="";for(let s in e){let i=e[s],f=s[0];if(f==="@"){let c=m(i);c&&l(`${s}{.${o}{${c}}}`);}else if(f==="&"){let c=m(i);c&&l(`${s.replace(/&/g,`.${o}`)}{${c}}`);}else if(f===":"){let c=m(i);c&&l(`.${o}${s}{${c}}`);}else i!=null&&typeof i!="object"&&(n+=`${u(s)}:${_(s,i)};`);}return n&&l(`.${o}{${n}}`),r&&A.set(V(e),o),o},U=e=>I.has(e),X=e=>{I.add(e);},q=()=>(++L).toString(36),Q=e=>W.has(e),Y=e=>{W.add(e);},B=()=>z,ee=()=>{z=[],A.clear(),d.clear(),I.clear(),W.clear(),L=0;};var te=createContext(void 0),Ee=({theme:e,children:t})=>{let r=x(()=>e);return useLayoutEffect(()=>()=>{x(r);},[r]),jsx(te.Provider,{value:e,children:t})},Be=()=>{let e=useContext(te);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e};var re={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 oe={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 ne={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 se={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 ae={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 ie={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 fe={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 ce={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 le={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 de={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 pe={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 me={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 ue={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 ge={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 he={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 xe={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 ye={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 Te={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 Se={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 be={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:ie,slate:xe,stone:ye,red:ue,orange:de,amber:re,yellow:be,lime:le,green:fe,emerald:se,teal:Te,cyan:ne,sky:he,blue:oe,indigo:ce,violet:Se,purple:me,fuchsia:ae,pink:pe,rose:ge,white:"#ffffff",black:"#000000",transparent:"transparent",current:"currentColor"};var y={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 T={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"},S={none:"0",xs:"0.125rem",sm:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem",full:"9999px"},b={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)"},C={"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"},R={light:300,regular:400,medium:500,semibold:600,bold:700},w={none:1,tight:1.25,normal:1.5,relaxed:1.75,loose:2},$={behind:-1,base:0,dropdown:1e3,sticky:1100,overlay:1300,modal:1400,popover:1500,tooltip:1600,toast:1700},k={fast:"150ms ease-out",normal:"250ms ease-out",slow:"350ms ease-out"},v={none:0,lowest:.05,low:.1,medium:.25,high:.5,higher:.75,full:1},P={xs:"480px",sm:"640px",md:"768px",lg:"1024px",xl:"1280px","2xl":"1536px"},Oe={colors:y,spacing:T,radius:S,shadows:b,fontSize:C,fontWeight:R,lineHeight:w,zIndex:$,transition:k,opacity:v,breakpoints:P};var Ce=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)},h=new Map,Ve=50;var H=(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]=H(s,n):r[o]=n;}return r},je=(e,t)=>({...e,...t}),Re=(e,t,r={})=>{let{mode:o="merge"}=r,n=`${Ce(e)}_${Ce(t)}_${o}`,s=h.get(n);if(s)return s;let i=o==="replace"?je(e,t):H(e,t);if(h.size>=Ve){let f=h.keys().next().value;f&&h.delete(f);}return h.set(n,i),i},Le=(e,...t)=>t.reduce((r,o)=>H(r,o),e),Ne=e=>t=>Re(t,e),Ze=e=>({colors:e.colors,spacing:e.spacing??T,radius:e.radius??S,shadows:e.shadows??b,fontSize:e.fontSize??C,fontWeight:e.fontWeight??R,lineHeight:e.lineHeight??w,zIndex:e.zIndex??$,transition:e.transition??k,opacity:e.opacity??v,breakpoints:e.breakpoints??P});var _e=()=>{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"},we=(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 i=G(N);r[o]=(...f)=>{let c=D(f);return i.getOrSet(c,()=>{let Pe=n(...f);return E(Pe,`${s}-${M(c)}`)})};}else r[o]=E(n,s,true);}}return r},$e=e=>{let t=_e();if(typeof e=="function"){let r=null,o;return new Proxy({},{get(n,s){let i=K();if(!i)throw new Error("createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.");return (i!==o||!r)&&(r=we(e(i),t),o=i),r[s]}})}return we(e,t)},De=()=>e=>$e(e);var Me=e=>{let t="";for(let o in e)t+=`${o}{${m(e[o])}}`;if(U(t))return `aurora-kf-${J(t)}`;let r=`aurora-kf-${q()}`;return l(`@keyframes ${r}{${t}}`),X(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};`),Q(f)||(l(`@font-face{${f}}`),Y(f)),t};var ke=(e,t)=>{let r="";for(let o in e){let n=e[o],s=u(o);n&&typeof n=="object"?r+=ke(n,`${t}-${s}`):n!=null&&(r+=`--${t}-${s}:${n};`);}return r},Je=(e,t="theme")=>{let r=ke(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=u(i),c=r?`--${r}-${f}`:`--${f}`;n[i]=`var(${c})`,o&&(s+=`${c}:${e[i]};`);}return o&&s&&l(`:root{${s}}`),n};var ve=()=>B().join(""),qe=()=>{let e=ve();return e?`<style id="aurora-styles">${e}</style>`:""},Qe=()=>{ee();},Ye=()=>[...B()];export{Ee as ThemeProvider,Qe as clearSSRRules,a as colors,Ze as createCustomTheme,$e as createStyles,Re as createTheme,Ne as createThemeVariant,De as createTypedStyles,Ue as cssVar,Xe as cssVariables,P as defaultBreakpoints,C as defaultFontSize,R as defaultFontWeight,w as defaultLineHeight,v as defaultOpacity,y as defaultPalette,S as defaultRadius,b as defaultShadows,T as defaultSpacing,Oe as defaultTheme,k as defaultTransition,$ as defaultZIndex,Ge as fontFace,Ye as getSSRRulesArray,qe as getSSRStyleTag,ve as getSSRStyles,K as getTheme,Je as injectCssVariables,l as insertRule,Me as keyframes,Le as mergeThemes,Z as sanitizeCssValue,x as setThemeContextGetter,Be as useTheme};//# sourceMappingURL=index.js.map
1
+ import {createContext,useLayoutEffect,useContext}from'react';import {jsx}from'react/jsx-runtime';var $=e=>e;var R={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 w={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 v={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 k={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 P={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 A={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 K={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 F={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 E={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 I={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 N={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 V={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 j={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 W={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 z={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 _={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 O={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 L={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 M={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 de={gray:A,slate:z,stone:_,red:j,orange:I,amber:R,yellow:M,lime:E,green:K,emerald:k,teal:O,cyan:v,blue:w,indigo:F,violet:L,purple:V,fuchsia:P,pink:N,rose:W,white:"#ffffff",black:"#000000",transparent:"transparent",current:"currentColor"};var H=typeof document>"u",g=null,d=null,S=[],Z=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"]]),h=new Map,l=new Set,y=new Set,x=new Set,J=0,me=new Set(["animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","fontWeight","lineHeight","opacity","order","orphans","widows","zIndex","zoom"]),U=100;if(!H){let e=document.getElementById("aurora-styles");if(e)d=e.sheet;else {let t=document.createElement("style");t.id="aurora-styles",document.head.appendChild(t),d=t.sheet;}}var b=e=>{let t=g;return g=e,t},B=()=>g?.(),c=e=>{if(H)S.push(e);else if(d)try{d.insertRule(e,d.cssRules.length);}catch{}},p=e=>{let t=Z.get(e);return t||(t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),Z.set(e,t)),t},u=e=>e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase(),pe=/expression\s*\(|javascript\s*:|data\s*:\s*text\/html|behavior\s*:|@import|<\s*\/?\s*style/i,ue=e=>{let t=e.replace(/\0/g,"");return pe.test(t)?"unset":t},q=(e,t)=>typeof t=="number"&&!me.has(e)?`${t}px`:ue(String(t)),m=e=>{let t="";for(let r in e){let o=e[r];o!=null&&typeof o!="object"&&(t+=`${p(r)}:${q(r,o)};`);}return t};var D=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)},X=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 f=e.charCodeAt(s);if(!(f>=97&&f<=122||f>=65&&f<=90||f>=48&&f<=57)){n=false;break}}if(n)return u(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)},Q=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 f=t.keys().next().value;f!==void 0&&t.delete(f);}return t.set(r,s),s}}},G=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)},Y=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)},ge=e=>{if(!l.has(e))return l.add(e),e;let t=2;for(;l.has(`${e}-${t}`);)t++;let r=`${e}-${t}`;return l.add(r),r},C=(e,t,r=false)=>{if(r){let s=G(e),f=h.get(s);if(f)return f}let o=ge(t),n="";for(let s in e){let f=e[s],i=s[0];if(i==="@"){let a=m(f);a&&c(`${s}{.${o}{${a}}}`);}else if(i==="&"){let a=m(f);a&&c(`${s.replace(/&/g,`.${o}`)}{${a}}`);}else if(i===":"){let a=m(f);a&&c(`.${o}${s}{${a}}`);}else f!=null&&typeof f!="object"&&(n+=`${p(s)}:${q(s,f)};`);}return n&&c(`.${o}{${n}}`),r&&h.set(G(e),o),o},ee=e=>y.has(e),te=e=>{y.add(e);},re=()=>(++J).toString(36),oe=e=>x.has(e),ne=e=>{x.add(e);},T=()=>S,se=()=>{S=[],h.clear(),l.clear(),y.clear(),x.clear(),J=0;};var fe=createContext(void 0),xe=({theme:e,children:t})=>{let r=b(()=>e);return useLayoutEffect(()=>()=>{b(r);},[r]),jsx(fe.Provider,{value:e,children:t})},be=()=>{let e=useContext(fe);if(!e)throw new Error("useTheme must be used within a ThemeProvider");return e};var Te=()=>{let e=new Error().stack||"",t=e.match(/([A-Za-z0-9_]+)\.styles\.[tj]s/);if(t?.[1])return u(t[1]);let r=e.match(/\/([A-Za-z0-9_]+)\.[tj]sx?[:\d]*\)?$/m);return r?.[1]&&r[1]!=="createStyles"?u(r[1]):"style"},ie=(e,t)=>{let r={};for(let o in e){let n=e[o];if(n){let s=`${t}-${u(o)}`;if(typeof n=="function"){let f=Q(U);r[o]=(...i)=>{let a=D(i);return f.getOrSet(a,()=>{let le=n(...i);return C(le,`${s}-${X(a)}`)})};}else r[o]=C(n,s,true);}}return r},$e=e=>{let t=Te();if(typeof e=="function"){let r=null,o;return new Proxy({},{get(n,s){let f=B();if(!f)throw new Error("createStyles: Theme context not found. Make sure you are using this inside a ThemeProvider.");return (f!==o||!r)&&(r=ie(e(f),t),o=f),r[s]}})}return ie(e,t)};var Re=e=>{let t="";for(let o in e)t+=`${o}{${m(e[o])}}`;if(ee(t))return `aurora-kf-${Y(t)}`;let r=`aurora-kf-${re()}`;return c(`@keyframes ${r}{${t}}`),te(t),r};var we=e=>{let{fontFamily:t,src:r,fontStyle:o="normal",fontWeight:n=400,fontDisplay:s="swap",unicodeRange:f}=e,i=`font-family:"${t}";`;return i+=`src:${r};`,i+=`font-style:${o};`,i+=`font-weight:${n};`,i+=`font-display:${s};`,f&&(i+=`unicode-range:${f};`),oe(i)||(c(`@font-face{${i}}`),ne(i)),t};var ae=(e,t)=>{let r="";for(let o in e){let n=e[o],s=p(o);n&&typeof n=="object"?r+=ae(n,`${t}-${s}`):n!=null&&(r+=`--${t}-${s}:${n};`);}return r},ve=(e,t="theme")=>{let r=ae(e,t);c(`:root{${r}}`);},ke=(e,t)=>{let r=`--theme-${e.replace(/\./g,"-")}`;return t?`var(${r}, ${t})`:`var(${r})`},Pe=(e,t={})=>{let{prefix:r="",inject:o=false}=t,n={},s="";for(let f in e){let i=p(f),a=r?`--${r}-${i}`:`--${i}`;n[f]=`var(${a})`,o&&(s+=`${a}:${e[f]};`);}return o&&s&&c(`:root{${s}}`),n};var ce=()=>T().join(""),Ae=()=>{let e=ce();return e?`<style id="aurora-styles">${e}</style>`:""},Ke=()=>{se();},Fe=()=>[...T()];export{xe as ThemeProvider,Ke as clearSSRRules,de as colors,$e as createStyles,$ as createTheme,ke as cssVar,Pe as cssVariables,we as fontFace,Fe as getSSRRulesArray,Ae as getSSRStyleTag,ce as getSSRStyles,ve as injectCssVariables,Re as keyframes,be 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","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\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 { 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/theme/createTheme.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/styles/styleEngine.ts","../src/providers/ThemeProvider.tsx","../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":["createTheme","values","amber","blue","cyan","emerald","fuchsia","gray","green","indigo","lime","orange","pink","purple","red","rose","slate","stone","teal","violet","yellow","colors","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","getComponentNameFromStack","stack","match","fileMatch","processStyles","componentName","classes","lru","cacheKey","resolved","createStyles","stylesOrCreator","lastTheme","_","prop","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 { Theme } from '@/types/theme/Theme'\r\n\r\n/**\r\n * Creates a typed theme. Type is inferred from ThemeRegistry.\r\n */\r\nexport const createTheme = <T extends Record<string, unknown>>(\r\n values: T\r\n): Theme<T> => {\r\n return values as Theme<T>\r\n}\r\n","import { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\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 { ColorScale } from '@/types/colors'\r\n\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","import { 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/** All color scales (19 scales with 12 shades each) */\r\nexport const colors = {\r\n gray,\r\n slate,\r\n stone,\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 white: '#ffffff',\r\n black: '#000000',\r\n transparent: 'transparent',\r\n current: 'currentColor',\r\n} as const\r\n","import type { StyleWithPseudos } from './types'\r\nimport type { Theme } from '@/types'\r\n\r\nconst IS_SERVER = typeof document === 'undefined'\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nlet themeContextGetter: (() => any) | null = null\r\nlet styleSheet: CSSStyleSheet | null = null\r\nlet ssrRules: string[] = []\r\n\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\nconst staticStyleCache = new Map<string, string>()\r\nconst usedClassNames = new Set<string>()\r\nconst injectedKeyframes = new Set<string>()\r\nconst injectedFontFaces = new Set<string>()\r\nlet keyframeCounter = 0\r\n\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/**\r\n * Max LRU cache size for dynamic styles.\r\n * @internal\r\n */\r\nexport const MAX_CACHE_SIZE = 100\r\n\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 * Sets the theme getter function used by createStyles.\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nexport const setThemeContextGetter = <T extends Theme>(getter: (() => T | undefined) | null): (() => any) | null => {\r\n const previous = themeContextGetter\r\n themeContextGetter = getter\r\n return previous\r\n}\r\n\r\n/**\r\n * Returns the current theme from the context.\r\n * @internal\r\n */\r\nexport const getTheme = (): Theme | undefined => {\r\n return themeContextGetter?.()\r\n}\r\n\r\n/**\r\n * Inserts a CSS rule into the stylesheet (or SSR buffer).\r\n * @internal\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 * Converts camelCase to kebab-case with caching.\r\n * @internal\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 * Converts PascalCase/camelCase to kebab-case for class names.\r\n * @internal\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\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 * Sanitizes CSS value to prevent injection attacks.\r\n * @internal\r\n */\r\nexport const sanitizeCssValue = (value: string): string => {\r\n const cleaned = value.replace(/\\0/g, '')\r\n if (CSS_INJECTION_PATTERNS.test(cleaned)) {\r\n return 'unset'\r\n }\r\n return cleaned\r\n}\r\n\r\n/**\r\n * Converts a value to valid CSS (adds px for numbers).\r\n * @internal\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 * Converts a styles object to a CSS string.\r\n * @internal\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 * Resolves & selectors to actual class selectors.\r\n * @internal\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 * Creates a cache key from function arguments.\r\n * @internal\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 * Converts a cache key to a valid CSS class suffix.\r\n * @internal\r\n */\r\nexport const cacheKeyToSuffix = (key: string): string => {\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 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 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 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 * Creates an LRU cache with O(1) operations.\r\n * @internal\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 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 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 * Generates a hash from a styles object.\r\n * @internal\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 * Generates a hash from a string.\r\n * @internal\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 * Returns a unique class name, adding suffix if needed.\r\n * @internal\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 * Generates CSS class with support for pseudo-classes, media queries, etc.\r\n * @internal\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 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 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 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 baseCss += `${toKebabCase(key)}:${toCssValue(key, value)};`\r\n }\r\n }\r\n\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 * Checks if keyframes CSS has already been injected.\r\n * @internal\r\n */\r\nexport const hasKeyframes = (css: string): boolean => {\r\n return injectedKeyframes.has(css)\r\n}\r\n\r\n/**\r\n * Registers keyframes CSS as injected.\r\n * @internal\r\n */\r\nexport const addKeyframes = (css: string): void => {\r\n injectedKeyframes.add(css)\r\n}\r\n\r\n/**\r\n * Returns next unique keyframe ID.\r\n * @internal\r\n */\r\nexport const getNextKeyframeId = (): string => {\r\n return (++keyframeCounter).toString(36)\r\n}\r\n\r\n/**\r\n * Checks if font-face CSS has already been injected.\r\n * @internal\r\n */\r\nexport const hasFontFace = (css: string): boolean => {\r\n return injectedFontFaces.has(css)\r\n}\r\n\r\n/**\r\n * Registers font-face CSS as injected.\r\n * @internal\r\n */\r\nexport const addFontFace = (css: string): void => {\r\n injectedFontFaces.add(css)\r\n}\r\n\r\n/**\r\n * Returns SSR rules array.\r\n * @internal\r\n */\r\nexport const getSSRRulesInternal = (): string[] => {\r\n return ssrRules\r\n}\r\n\r\n/**\r\n * Resets all internal state (for SSR).\r\n * @internal\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","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\n\r\nconst ThemeContext = createContext<Theme | undefined>(undefined)\r\n\r\nexport type ThemeProviderProps = {\r\n theme: Theme\r\n children?: ReactNode\r\n}\r\n\r\n/**\r\n * Provides the theme to all child components.\r\n *\r\n * @example\r\n * ```tsx\r\n * <ThemeProvider theme={lightTheme}>\r\n * <App />\r\n * </ThemeProvider>\r\n * ```\r\n */\r\nexport const ThemeProvider = ({\r\n theme,\r\n children\r\n}: ThemeProviderProps) => {\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 *\r\n * Type is automatically inferred from ThemeRegistry (module augmentation).\r\n *\r\n * @example\r\n * ```tsx\r\n * function MyComponent() {\r\n * const theme = useTheme()\r\n * return <div style={{ color: theme.colors.primary }} />\r\n * }\r\n * ```\r\n *\r\n * @throws {Error} If used outside a ThemeProvider\r\n */\r\nexport const useTheme = (): Theme => {\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\r\n}\r\n\r\n","import {\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 * Extracts component name from stack trace for class naming.\r\n * @internal\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 * Processes styles object and generates CSS classes.\r\n * @internal\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 * Creates styles with theme support. Type is inferred from ThemeRegistry.\r\n * Supports pseudo-classes, media queries, and complex selectors.\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: Theme) => 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: Theme | undefined\r\n\r\n return new Proxy({} as Result, {\r\n get(_, prop: string | symbol) {\r\n const theme = getTheme() as Theme | 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","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/** Creates and injects a @keyframes rule, returns the animation name */\r\nexport const keyframes = (frames: Record<string, CSSProperties>): string => {\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 if (hasKeyframes(css)) {\r\n const hash = hashString(css)\r\n return `aurora-kf-${hash}`\r\n }\r\n\r\n const name = `aurora-kf-${getNextKeyframeId()}`\r\n insertRule(`@keyframes ${name}{${css}}`)\r\n addKeyframes(css)\r\n\r\n return name\r\n}\r\n","import { addFontFace, hasFontFace, insertRule } from './styleEngine'\r\n\r\nimport type { FontFaceOptions } from './types'\r\n\r\n/** Injects a @font-face rule and returns the font family name */\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/** Generate CSS variables from a theme object */\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/** Injects CSS variables from theme into :root */\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/** Returns a CSS var() reference for a theme path */\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/** Creates CSS variable references from an object */\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","import { getSSRRulesInternal, resetState } from './styleEngine'\r\n\r\n/** SSR: Returns all collected CSS rules as a single string */\r\nexport const getSSRStyles = (): string => {\r\n return getSSRRulesInternal().join('')\r\n}\r\n\r\n/** SSR: Returns styles wrapped in a style tag */\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/** SSR: Clears the collected rules buffer */\r\nexport const clearSSRRules = (): void => {\r\n resetState()\r\n}\r\n\r\n/** SSR: Returns raw CSS rules as an array */\r\nexport const getSSRRulesArray = (): string[] => {\r\n return [...getSSRRulesInternal()]\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aurora-ds/theme",
3
- "version": "2.0.1",
3
+ "version": "3.1.0",
4
4
  "description": "A performant CSS-in-JS theme management library for React",
5
5
  "author": "Lilian MARZET <lilian.marzet@gmail.com>",
6
6
  "license": "MIT",