@africode/core 5.0.6 → 5.0.8

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.
Files changed (49) hide show
  1. package/AGENTS.md +2 -0
  2. package/COMPONENT_SCHEMA.json +1 -0
  3. package/README.md +2 -0
  4. package/components/breadcrumb.js +72 -0
  5. package/components/carousel.js +32 -0
  6. package/components/cart-drawer.js +28 -0
  7. package/components/code-block.js +20 -0
  8. package/components/contact-form.js +25 -0
  9. package/components/cookie-consent.js +23 -0
  10. package/components/cta-banner.js +38 -0
  11. package/components/dashboard-activity-list.js +103 -0
  12. package/components/dashboard-card.js +85 -0
  13. package/components/dashboard-metric.js +81 -0
  14. package/components/dashboard-shell.js +85 -0
  15. package/components/dashboard-topbar.js +84 -0
  16. package/components/faq-accordion.js +23 -0
  17. package/components/feature-grid.js +85 -0
  18. package/components/file-uploader.js +22 -0
  19. package/components/filter-bar.js +19 -0
  20. package/components/footer.js +113 -0
  21. package/components/gallery.js +22 -0
  22. package/components/index.js +47 -0
  23. package/components/newsletter-signup.js +24 -0
  24. package/components/pagination.js +31 -0
  25. package/components/pricing-card.js +100 -0
  26. package/components/product-card.js +41 -0
  27. package/components/search-box.js +24 -0
  28. package/components/simple-chart.js +22 -0
  29. package/components/stepper.js +28 -0
  30. package/components/team-grid.js +23 -0
  31. package/components/testimonial.js +94 -0
  32. package/components/ui-avatar.js +79 -0
  33. package/components/ui-chip.js +87 -0
  34. package/components/ui-popover.js +84 -0
  35. package/components/ui-progress-ring.js +60 -0
  36. package/components/ui-select.js +85 -0
  37. package/components/ui-stat.js +75 -0
  38. package/components/ui-table.js +69 -0
  39. package/components/ui-tabs.js +99 -0
  40. package/components/ui-tag.js +64 -0
  41. package/components/ui-textarea.js +84 -0
  42. package/components/ui-tooltip.js +66 -0
  43. package/components/video-player.js +22 -0
  44. package/dist/africode.js +1480 -549
  45. package/dist/africode.js.map +25 -4
  46. package/dist/build-info.json +3 -3
  47. package/dist/components.js +1506 -575
  48. package/dist/components.js.map +25 -4
  49. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null,n)}var H=(t,n)=>{for(var a in n)Va(t,a,{get:n[a],enumerable:!0,configurable:!0,set:ea.bind(n,a)})};var A=(t,n)=>()=>(t&&(n=t(t=0)),n);class xn{constructor(t){this.value=t,this.__type="RawHtml",Object.freeze(this)}toString(){return this.value}valueOf(){return this.value}}function Na(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function bo(t){if(t instanceof xn)return t.toString();if(Array.isArray(t))return t.map(bo).join("");if(t===null||t===void 0||t===!1)return"";if(t===!0)return"true";return Na(t)}var Y=(t,...n)=>{let a="";for(let o=0;o<t.length;o++)if(a+=t[o],o<n.length)a+=bo(n[o]);return new xn(a)};function d(t,n){if(typeof customElements>"u")return;if(!customElements.get(t))customElements.define(t,n)}var Ka,ro,c;var q=A(()=>{Ka=globalThis.HTMLElement??class{},ro=typeof CSSStyleSheet<"u";c=class c extends Ka{constructor(){super();this.attachShadow({mode:"open"});let t=this.render;if(t&&typeof t==="function")this.render=()=>{try{t.call(this),this.removeAttribute("has-error")}catch(n){console.error(`[AfriCode] Rendering error in <${this.localName}>:`,n),this.setAttribute("has-error","true"),this.shadowRoot.innerHTML=`
1
+ var Ta=Object.defineProperty;var Za=(t)=>t;function za(t,n){this[t]=Za.bind(null,n)}var w=(t,n)=>{for(var o in n)Ta(t,o,{get:n[o],enumerable:!0,configurable:!0,set:za.bind(n,o)})};var s=(t,n)=>()=>(t&&(n=t(t=0)),n);class On{constructor(t){this.value=t,this.__type="RawHtml",Object.freeze(this)}toString(){return this.value}valueOf(){return this.value}}function te(t){return String(t).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function Io(t){if(t instanceof On)return t.toString();if(Array.isArray(t))return t.map(Io).join("");if(t===null||t===void 0||t===!1)return"";if(t===!0)return"true";return te(t)}var g=(t,...n)=>{let o="";for(let r=0;r<t.length;r++)if(o+=t[r],r<n.length)o+=Io(n[r]);return new On(o)};function f(t,n){if(typeof customElements>"u")return;if(!customElements.get(t))customElements.define(t,n)}var ne,Po,b;var u=s(()=>{ne=globalThis.HTMLElement??class{},Po=typeof CSSStyleSheet<"u";b=class b extends ne{constructor(){super();this.attachShadow({mode:"open"});let t=this.render;if(t&&typeof t==="function")this.render=()=>{try{t.call(this),this.removeAttribute("has-error")}catch(n){console.error(`[AfriCode] Rendering error in <${this.localName}>:`,n),this.setAttribute("has-error","true"),this.shadowRoot.innerHTML=`
2
2
  <style>
3
3
  .af-local-error {
4
4
  padding: 1rem;
@@ -17,7 +17,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
17
17
  <span aria-hidden="true">⚠️</span>
18
18
  <span>Failed to render</span>
19
19
  </div>
20
- `,this.emit("af-component-error",{component:this.localName,message:n.message,stack:n.stack})}}}connectedCallback(){}static styleCache=new Map;static globalSheets=[];static injectGlobalSheet(t){if(!ro)return;if(!(t instanceof CSSStyleSheet))return;if(!c.globalSheets.includes(t))c.globalSheets.push(t)}async loadStyles(t=""){if(!this.shadowRoot)return;let a=ro&&"adoptedStyleSheets"in this.shadowRoot,o=typeof t==="string"&&t.length>0?t:"/styles/africanity.css",l=typeof t==="string"&&t.length>0?t:null;if(c.styleCache.has(o)){let b=c.styleCache.get(o);if(a)this.shadowRoot.adoptedStyleSheets=[b,...c.globalSheets];else this._applyFallbackStyle(b?.cssText||b?.text||b||"");return}try{let b=l;if(!b){let r=await fetch("/styles/africanity.css");if(!r.ok)throw Error(`Unable to load stylesheet: ${r.status}`);b=await r.text()}if(a){let r=new CSSStyleSheet;r.replaceSync(b),c.styleCache.set(o,r),this.shadowRoot.adoptedStyleSheets=[r,...c.globalSheets];return}this._applyFallbackStyle(b),c.styleCache.set(o,{text:b})}catch(b){this._applyFallbackStyle(l||"")}}_applyFallbackStyle(t){if(!this.shadowRoot)return;let n=this.shadowRoot.querySelector("style[data-africode-core-styles]");if(!n)n=document.createElement("style"),n.setAttribute("data-africode-core-styles",""),this.shadowRoot.prepend(n);n.textContent=t}spacing(t){return`var(--space-${t})`}createElement(t,{classes:n=[],attributes:a={},text:o=""}={}){let l=document.createElement(t);if(n.length)l.classList.add(...n);if(Object.entries(a).forEach(([b,r])=>l.setAttribute(b,r)),o)l.textContent=o;return l}emit(t,n){this.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}}});var ho={};H(ho,{default:()=>Ia,AfriUIButton:()=>At});var At,Ia;var qn=A(()=>{q();At=class At extends c{static get observedAttributes(){return["variant","size","disabled","loading","full-width","aria-label"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(n)=>{if(this.hasAttribute("disabled")||this.hasAttribute("loading")){n.preventDefault();return}this.emit("af-ui-button-click",{originalEvent:n})})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"primary",n=this.getAttribute("size")||"md",a=this.hasAttribute("disabled"),o=this.hasAttribute("loading"),l=this.getAttribute("aria-label")||"";this.shadowRoot.innerHTML=Y`
20
+ `,this.emit("af-component-error",{component:this.localName,message:n.message,stack:n.stack})}}}connectedCallback(){}static styleCache=new Map;static globalSheets=[];static injectGlobalSheet(t){if(!Po)return;if(!(t instanceof CSSStyleSheet))return;if(!b.globalSheets.includes(t))b.globalSheets.push(t)}async loadStyles(t=""){if(!this.shadowRoot)return;let o=Po&&"adoptedStyleSheets"in this.shadowRoot,r=typeof t==="string"&&t.length>0?t:"/styles/africanity.css",a=typeof t==="string"&&t.length>0?t:null;if(b.styleCache.has(r)){let e=b.styleCache.get(r);if(o)this.shadowRoot.adoptedStyleSheets=[e,...b.globalSheets];else this._applyFallbackStyle(e?.cssText||e?.text||e||"");return}try{let e=a;if(!e){let l=await fetch("/styles/africanity.css");if(!l.ok)throw Error(`Unable to load stylesheet: ${l.status}`);e=await l.text()}if(o){let l=new CSSStyleSheet;l.replaceSync(e),b.styleCache.set(r,l),this.shadowRoot.adoptedStyleSheets=[l,...b.globalSheets];return}this._applyFallbackStyle(e),b.styleCache.set(r,{text:e})}catch(e){this._applyFallbackStyle(a||"")}}_applyFallbackStyle(t){if(!this.shadowRoot)return;let n=this.shadowRoot.querySelector("style[data-africode-core-styles]");if(!n)n=document.createElement("style"),n.setAttribute("data-africode-core-styles",""),this.shadowRoot.prepend(n);n.textContent=t}spacing(t){return`var(--space-${t})`}createElement(t,{classes:n=[],attributes:o={},text:r=""}={}){let a=document.createElement(t);if(n.length)a.classList.add(...n);if(Object.entries(o).forEach(([e,l])=>a.setAttribute(e,l)),r)a.textContent=r;return a}emit(t,n){this.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}}});var To={};w(To,{default:()=>oe,AfriUIButton:()=>vt});var vt,oe;var Un=s(()=>{u();vt=class vt extends b{static get observedAttributes(){return["variant","size","disabled","loading","full-width","aria-label"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(n)=>{if(this.hasAttribute("disabled")||this.hasAttribute("loading")){n.preventDefault();return}this.emit("af-ui-button-click",{originalEvent:n})})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"primary",n=this.getAttribute("size")||"md",o=this.hasAttribute("disabled"),r=this.hasAttribute("loading"),a=this.getAttribute("aria-label")||"";this.shadowRoot.innerHTML=g`
21
21
  <style>
22
22
  :host { display: inline-block; }
23
23
 
@@ -110,164 +110,1095 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
110
110
 
111
111
  <button
112
112
  class="${t} ${n}"
113
- ${a?"disabled":""}
114
- ${l?`aria-label="${l}"`:""}
115
- ${o?'aria-busy="true"':""}
113
+ ${o?"disabled":""}
114
+ ${a?`aria-label="${a}"`:""}
115
+ ${r?'aria-busy="true"':""}
116
116
  >
117
- ${o?Y`<span class="spinner"></span>`:""}
117
+ ${r?g`<span class="spinner"></span>`:""}
118
+ <slot></slot>
119
+ </button>
120
+ `}};f("af-ui-button",vt);oe=vt});var Zo={};w(Zo,{default:()=>re,AfriUICard:()=>$t});var $t,re;var Vn=s(()=>{u();$t=class $t extends b{static get observedAttributes(){return["variant","bordered","clickable"]}constructor(){super();this.render()}connectedCallback(){if(this.loadStyles(),this.hasAttribute("clickable"))this.shadowRoot.querySelector(".card")?.addEventListener("click",()=>{this.emit("af-ui-card-click")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"elevated",n=this.hasAttribute("bordered"),o=this.hasAttribute("clickable");this.shadowRoot.innerHTML=g`
121
+ <style>
122
+ :host { display: block; }
123
+
124
+ .card {
125
+ border-radius: 1rem;
126
+ padding: 1.5rem;
127
+ background: #ffffff;
128
+ color: #0f172a;
129
+ transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
130
+ border: 1px solid transparent;
131
+ box-shadow: 0 16px 32px rgba(15, 23, 42, 0.08);
132
+ }
133
+
134
+ .card.elevated { background: #fff; }
135
+ .card.flat { background: #f8fafc; box-shadow: none; }
136
+ .card.outlined { background: #fff; border-color: #e2e8f0; box-shadow: none; }
137
+
138
+ .card:hover:not(.disabled) {
139
+ transform: translateY(-2px);
140
+ }
141
+
142
+ :host([bordered]) .card { border-color: #cbd5e1; }
143
+
144
+ :host([clickable]) .card { cursor: pointer; }
145
+ </style>
146
+
147
+ <article class="card ${t}">
118
148
  <slot></slot>
149
+ </article>
150
+ `}};f("af-ui-card",$t);re=$t});var zo={};w(zo,{default:()=>ae,AfriUIInput:()=>ut});var ut,ae;var Nn=s(()=>{u();ut=class ut extends b{static get observedAttributes(){return["label","placeholder","type","value","disabled","error"]}constructor(){super();this.render()}connectedCallback(){this._attachListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector("input");if(!t)return;t.addEventListener("input",()=>{this.emit("af-ui-input",{value:t.value})})}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"",o=this.getAttribute("type")||"text",r=this.getAttribute("value")||"",a=this.hasAttribute("disabled"),e=this.getAttribute("error")||"";this.shadowRoot.innerHTML=g`
151
+ <style>
152
+ :host { display: block; font-family: 'Inter', system-ui, sans-serif; }
153
+
154
+ label {
155
+ display: block;
156
+ font-size: 0.85rem;
157
+ font-weight: 600;
158
+ margin-bottom: 0.5rem;
159
+ color: #111827;
160
+ }
161
+
162
+ .field {
163
+ display: grid;
164
+ gap: 0.45rem;
165
+ }
166
+
167
+ input {
168
+ width: 100%;
169
+ border: 1px solid #d1d5db;
170
+ border-radius: 0.75rem;
171
+ padding: 0.95rem 1rem;
172
+ font-size: 0.95rem;
173
+ color: #111827;
174
+ background: #ffffff;
175
+ transition: border-color 150ms ease, box-shadow 150ms ease;
176
+ }
177
+
178
+ input:focus {
179
+ outline: none;
180
+ border-color: #2563eb;
181
+ box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
182
+ }
183
+
184
+ input:disabled {
185
+ opacity: 0.65;
186
+ cursor: not-allowed;
187
+ background: #f8fafc;
188
+ }
189
+
190
+ .error {
191
+ color: #dc2626;
192
+ font-size: 0.8rem;
193
+ min-height: 1rem;
194
+ }
195
+ </style>
196
+
197
+ <div class="field">
198
+ ${t?g`<label>${t}</label>`:""}
199
+ <input
200
+ type="${o}"
201
+ placeholder="${n}"
202
+ value="${r}"
203
+ ${a?"disabled":""}
204
+ aria-invalid="${Boolean(e)}"
205
+ />
206
+ <div class="error">${e}</div>
207
+ </div>
208
+ `}};f("af-ui-input",ut);ae=ut});var tr={};w(tr,{default:()=>ee,AfriUIBadge:()=>wt});var wt,ee;var Kn=s(()=>{u();wt=class wt extends b{static get observedAttributes(){return["variant","size","pill"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"secondary",n=this.getAttribute("size")||"md",o=this.hasAttribute("pill");this.shadowRoot.innerHTML=g`
209
+ <style>
210
+ :host { display: inline-block; font-family: 'Inter', system-ui, sans-serif; }
211
+
212
+ .badge {
213
+ display: inline-flex;
214
+ align-items: center;
215
+ justify-content: center;
216
+ gap: 0.4rem;
217
+ border-radius: ${o?"999px":"0.6rem"};
218
+ padding: ${n==="sm"?"0.25rem 0.65rem":n==="lg"?"0.55rem 1rem":"0.4rem 0.8rem"};
219
+ font-size: ${n==="sm"?"0.75rem":n==="lg"?"0.95rem":"0.85rem"};
220
+ font-weight: 700;
221
+ color: #111827;
222
+ background: var(--af-ui-badge-bg, #e2e8f0);
223
+ border: 1px solid transparent;
224
+ white-space: nowrap;
225
+ }
226
+
227
+ .badge.primary { background: #2563eb; color: #ffffff; }
228
+ .badge.success { background: #16a34a; color: #ffffff; }
229
+ .badge.warning { background: #f59e0b; color: #0f172a; }
230
+ .badge.danger { background: #dc2626; color: #ffffff; }
231
+ .badge.secondary { background: #f8fafc; color: #0f172a; }
232
+ </style>
233
+
234
+ <span class="badge ${t}"><slot></slot></span>
235
+ `}};f("af-ui-badge",wt);ee=wt});var nr={};w(nr,{default:()=>le,AfriUISwitch:()=>xt});var xt,le;var jn=s(()=>{u();xt=class xt extends b{static get observedAttributes(){return["checked","disabled","size"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(t)=>{if(this.hasAttribute("disabled"))return;let n=!this.hasAttribute("checked");if(n)this.setAttribute("checked","");else this.removeAttribute("checked");this.emit("af-ui-switch-toggle",{checked:n,originalEvent:t})})}attributeChangedCallback(){this.render()}render(){let t=this.hasAttribute("checked"),n=this.hasAttribute("disabled"),o=this.getAttribute("size")||"md",r=o==="sm"?{width:36,height:20,knob:14}:o==="lg"?{width:56,height:32,knob:24}:{width:48,height:28,knob:20},a=t?"true":"false";this.shadowRoot.innerHTML=g`
236
+ <style>
237
+ :host { display: inline-block; }
238
+
239
+ button {
240
+ all: unset;
241
+ position: relative;
242
+ width: ${r.width}px;
243
+ height: ${r.height}px;
244
+ border-radius: ${r.height/2}px;
245
+ background: ${t?"#2563eb":"#e5e7eb"};
246
+ cursor: ${n?"not-allowed":"pointer"};
247
+ transition: background 180ms ease;
248
+ box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
249
+ }
250
+
251
+ .knob {
252
+ position: absolute;
253
+ top: 50%;
254
+ left: ${t?`${r.width-r.knob-4}px`:"4px"};
255
+ transform: translateY(-50%);
256
+ width: ${r.knob}px;
257
+ height: ${r.knob}px;
258
+ border-radius: 999px;
259
+ background: #ffffff;
260
+ transition: left 180ms ease;
261
+ box-shadow: 0 2px 6px rgba(15, 23, 42, 0.16);
262
+ }
263
+
264
+ button:disabled { opacity: 0.65; }
265
+ </style>
266
+
267
+ <button role="switch" aria-checked="${a}" ${n?"disabled":""}>
268
+ <span class="knob"></span>
119
269
  </button>
120
- `}};d("af-ui-button",At);Ia=At});var fo={};H(fo,{default:()=>Pa,AfriUICard:()=>mt});var mt,Pa;var pn=A(()=>{q();mt=class mt extends c{static get observedAttributes(){return["variant","bordered","clickable"]}constructor(){super();this.render()}connectedCallback(){if(this.loadStyles(),this.hasAttribute("clickable"))this.shadowRoot.querySelector(".card")?.addEventListener("click",()=>{this.emit("af-ui-card-click")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"elevated",n=this.hasAttribute("bordered"),a=this.hasAttribute("clickable");this.shadowRoot.innerHTML=Y`
270
+ `}};f("af-ui-switch",xt);le=xt});var or={};w(or,{default:()=>ie,AfriUISelect:()=>At});var At,ie;var yn=s(()=>{u();At=class At extends b{static get observedAttributes(){return["label","placeholder","disabled","error"]}constructor(){super();this.render()}connectedCallback(){this._attachListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector("select");if(!t)return;t.addEventListener("change",()=>{this.emit("af-ui-select",{value:t.value})})}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"Select an option",o=this.hasAttribute("disabled"),r=this.getAttribute("error")||"";this.shadowRoot.innerHTML=g`
271
+ <style>
272
+ :host { display: block; font-family: 'Inter', system-ui, sans-serif; }
273
+
274
+ .field { display: grid; gap: 0.5rem; }
275
+ label { font-size: 0.85rem; font-weight: 600; color: #111827; }
276
+ select {
277
+ width: 100%;
278
+ border: 1px solid #d1d5db;
279
+ border-radius: 0.75rem;
280
+ padding: 0.9rem 1rem;
281
+ background: #fff;
282
+ color: #111827;
283
+ appearance: none;
284
+ font-size: 0.95rem;
285
+ outline: none;
286
+ transition: border-color 150ms ease, box-shadow 150ms ease;
287
+ }
288
+ select:focus {
289
+ border-color: #2563eb;
290
+ box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
291
+ }
292
+ select:disabled { background: #f8fafc; cursor: not-allowed; }
293
+
294
+ .hint { font-size: 0.85rem; color: #6b7280; }
295
+ .error { color: #dc2626; font-size: 0.8rem; min-height: 1rem; }
296
+ </style>
297
+
298
+ <div class="field">
299
+ ${t?g`<label>${t}</label>`:""}
300
+ <select ${o?"disabled":""}>
301
+ <option disabled selected hidden>${n}</option>
302
+ <slot></slot>
303
+ </select>
304
+ <div class="error">${r}</div>
305
+ </div>
306
+ `}};f("af-ui-select",At);ie=At});var rr={};w(rr,{default:()=>be,AfriUITextarea:()=>_t});var _t,be;var Cn=s(()=>{u();_t=class _t extends b{static get observedAttributes(){return["label","placeholder","rows","disabled","error"]}constructor(){super();this.render()}connectedCallback(){this._attachListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector("textarea");if(!t)return;t.addEventListener("input",()=>{this.emit("af-ui-textarea",{value:t.value})})}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"",o=this.getAttribute("rows")||"4",r=this.hasAttribute("disabled"),a=this.getAttribute("error")||"";this.shadowRoot.innerHTML=g`
307
+ <style>
308
+ :host { display: block; font-family: 'Inter', system-ui, sans-serif; }
309
+
310
+ .field { display: grid; gap: 0.5rem; }
311
+ label { font-size: 0.85rem; font-weight: 600; color: #111827; }
312
+ textarea {
313
+ width: 100%;
314
+ min-height: 120px;
315
+ border: 1px solid #d1d5db;
316
+ border-radius: 0.75rem;
317
+ padding: 1rem;
318
+ font-size: 0.95rem;
319
+ font-family: inherit;
320
+ color: #111827;
321
+ resize: vertical;
322
+ background: #fff;
323
+ transition: border-color 150ms ease, box-shadow 150ms ease;
324
+ }
325
+ textarea:focus {
326
+ border-color: #2563eb;
327
+ box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
328
+ outline: none;
329
+ }
330
+ textarea:disabled { background: #f8fafc; cursor: not-allowed; }
331
+
332
+ .error { color: #dc2626; font-size: 0.8rem; min-height: 1rem; }
333
+ </style>
334
+
335
+ <div class="field">
336
+ ${t?g`<label>${t}</label>`:""}
337
+ <textarea rows="${o}" placeholder="${n}" ${r?"disabled":""}></textarea>
338
+ <div class="error">${a}</div>
339
+ </div>
340
+ `}};f("af-ui-textarea",_t);be=_t});var ar={};w(ar,{default:()=>ce,AfriUIChip:()=>kt});var kt,ce;var In=s(()=>{u();kt=class kt extends b{static get observedAttributes(){return["variant","size","dismissible"]}constructor(){super();this.render()}connectedCallback(){this.render(),this._attachListeners()}attributeChangedCallback(){this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector(".chip button");if(!t)return;t.addEventListener("click",(n)=>{n.stopPropagation(),this.emit("af-ui-chip-dismiss",{})})}render(){let t=this.getAttribute("variant")||"neutral",n=this.getAttribute("size")||"md",o=this.hasAttribute("dismissible");this.shadowRoot.innerHTML=g`
341
+ <style>
342
+ :host { display: inline-flex; }
343
+
344
+ .chip {
345
+ display: inline-flex;
346
+ align-items: center;
347
+ gap: 0.5rem;
348
+ border-radius: 999px;
349
+ padding: ${n==="sm"?"0.35rem 0.75rem":"0.45rem 1rem"};
350
+ font-size: ${n==="sm"?"0.75rem":"0.85rem"};
351
+ font-weight: 600;
352
+ background: #f8fafc;
353
+ color: #0f172a;
354
+ border: 1px solid rgba(15, 23, 42, 0.08);
355
+ }
356
+
357
+ .chip.primary { background: #eff6ff; color: #1d4ed8; }
358
+ .chip.success { background: #dcfce7; color: #166534; }
359
+ .chip.warning { background: #fef3c7; color: #92400e; }
360
+ .chip.danger { background: #fee2e2; color: #991b1b; }
361
+ .chip.neutral { background: #f8fafc; color: #0f172a; }
362
+
363
+ button {
364
+ border: none;
365
+ background: transparent;
366
+ color: inherit;
367
+ cursor: pointer;
368
+ font-size: 0.95rem;
369
+ padding: 0;
370
+ line-height: 1;
371
+ }
372
+ </style>
373
+
374
+ <span class="chip ${t}">
375
+ <slot></slot>
376
+ ${o?g`<button aria-label="Remove">×</button>`:""}
377
+ </span>
378
+ `}};f("af-ui-chip",kt);ce=kt});var er={};w(er,{default:()=>fe,AfriUITag:()=>qt});var qt,fe;var Pn=s(()=>{u();qt=class qt extends b{static get observedAttributes(){return["variant","size"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"secondary",n=this.getAttribute("size")||"md",o={sm:"0.25rem 0.6rem",md:"0.35rem 0.8rem",lg:"0.5rem 1rem"};this.shadowRoot.innerHTML=g`
379
+ <style>
380
+ :host { display: inline-block; font-family: 'Inter', sans-serif; }
381
+
382
+ .tag {
383
+ display: inline-flex;
384
+ align-items: center;
385
+ justify-content: center;
386
+ gap: 0.35rem;
387
+ padding: ${o[n]};
388
+ border-radius: 999px;
389
+ font-size: ${n==="sm"?"0.75rem":n==="lg"?"0.95rem":"0.85rem"};
390
+ font-weight: 600;
391
+ color: #111827;
392
+ background: #f8fafc;
393
+ border: 1px solid rgba(15, 23, 42, 0.08);
394
+ }
395
+
396
+ .tag.primary { background: #dbeafe; color: #1e40af; }
397
+ .tag.success { background: #d1fae5; color: #14532d; }
398
+ .tag.warning { background: #fde68a; color: #92400e; }
399
+ .tag.danger { background: #fecaca; color: #991b1b; }
400
+ .tag.secondary { background: #f3f4f6; color: #1f2937; }
401
+ </style>
402
+
403
+ <span class="tag ${t}"><slot></slot></span>
404
+ `}};f("af-ui-tag",qt);fe=qt});var lr={};w(lr,{default:()=>de,AfriUIAvatar:()=>Ht});var Ht,de;var Tn=s(()=>{u();Ht=class Ht extends b{static get observedAttributes(){return["src","initials","size","badge"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("src"),n=this.getAttribute("initials")||"AC",o=this.getAttribute("size")||"md",r=o==="sm"?"32px":o==="lg"?"64px":"48px",a=this.getAttribute("badge");this.shadowRoot.innerHTML=g`
405
+ <style>
406
+ :host { display: inline-flex; }
407
+
408
+ .avatar {
409
+ position: relative;
410
+ width: ${r};
411
+ height: ${r};
412
+ border-radius: 999px;
413
+ overflow: hidden;
414
+ background: linear-gradient(135deg, #1eb53a, #fcd116);
415
+ color: #fff;
416
+ display: inline-flex;
417
+ align-items: center;
418
+ justify-content: center;
419
+ font-weight: 700;
420
+ font-size: ${o==="sm"?"0.85rem":o==="lg"?"1.25rem":"1rem"};
421
+ }
422
+
423
+ img {
424
+ width: 100%;
425
+ height: 100%;
426
+ object-fit: cover;
427
+ display: block;
428
+ }
429
+
430
+ .badge {
431
+ position: absolute;
432
+ bottom: -2px;
433
+ right: -2px;
434
+ background: #2563eb;
435
+ color: #fff;
436
+ border-radius: 999px;
437
+ padding: 0.15rem 0.45rem;
438
+ font-size: 0.65rem;
439
+ font-weight: 700;
440
+ }
441
+ </style>
442
+
443
+ <div class="avatar">
444
+ ${t?g`<img src="${t}" alt="Avatar" />`:g`<span>${n}</span>`}
445
+ ${a?g`<span class="badge">${a}</span>`:""}
446
+ </div>
447
+ `}};f("af-ui-avatar",Ht);de=Ht});var ir={};w(ir,{default:()=>he,AfriUIProgressRing:()=>Lt});var Lt,he;var Zn=s(()=>{u();Lt=class Lt extends b{static get observedAttributes(){return["value","size","stroke","label"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=Number(this.getAttribute("value")||0),n=Number(this.getAttribute("size")||96),o=Number(this.getAttribute("stroke")||10),r=this.getAttribute("label")||"",a=(n-o)/2,e=2*Math.PI*a,l=e-t/100*e;this.shadowRoot.innerHTML=g`
448
+ <style>
449
+ :host { display: inline-flex; align-items: center; justify-content: center; }
450
+ .ring { position: relative; width: ${n}px; height: ${n}px; }
451
+ svg { transform: rotate(-90deg); width: 100%; height: 100%; }
452
+ circle { fill: none; stroke-width: ${o}; stroke-linecap: round; }
453
+ .bg { stroke: rgba(15, 23, 42, 0.12); }
454
+ .progress { stroke: #2563eb; stroke-dasharray: ${e}; stroke-dashoffset: ${l}; transition: stroke-dashoffset 0.35s ease; }
455
+ .label { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #111827; font-family: 'Inter', sans-serif; }
456
+ .value { font-size: 1rem; font-weight: 700; }
457
+ .subtitle { font-size: 0.75rem; color: #6b7280; }
458
+ </style>
459
+ <div class="ring" role="progressbar" aria-valuenow="${t}" aria-valuemin="0" aria-valuemax="100">
460
+ <svg viewBox="0 0 ${n} ${n}">
461
+ <circle class="bg" cx="${n/2}" cy="${n/2}" r="${a}" />
462
+ <circle class="progress" cx="${n/2}" cy="${n/2}" r="${a}" />
463
+ </svg>
464
+ <div class="label">
465
+ <div class="value">${t}%</div>
466
+ ${r?g`<div class="subtitle">${r}</div>`:""}
467
+ </div>
468
+ </div>
469
+ `}};f("af-ui-progress-ring",Lt);he=Lt});var br={};w(br,{default:()=>ge,AfriUITooltip:()=>Mt});var Mt,ge;var zn=s(()=>{u();Mt=class Mt extends b{static get observedAttributes(){return["text","position"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("text")||"",n=this.getAttribute("position")||"top";this.shadowRoot.innerHTML=g`
470
+ <style>
471
+ :host { position: relative; display: inline-flex; }
472
+
473
+ .tooltip {
474
+ position: absolute;
475
+ white-space: nowrap;
476
+ padding: 0.55rem 0.75rem;
477
+ background: rgba(15, 23, 42, 0.95);
478
+ color: #fff;
479
+ border-radius: 0.65rem;
480
+ font-size: 0.75rem;
481
+ transform: translateY(-8px);
482
+ opacity: 0;
483
+ pointer-events: none;
484
+ transition: opacity 0.2s ease, transform 0.2s ease;
485
+ z-index: 100;
486
+ }
487
+ :host(:hover) .tooltip { opacity: 1; transform: translateY(0); }
488
+ .tooltip::after {
489
+ content: '';
490
+ position: absolute;
491
+ width: 0;
492
+ height: 0;
493
+ border-style: solid;
494
+ }
495
+ .tooltip.top { bottom: 100%; left: 50%; transform: translate(-50%, -8px); }
496
+ .tooltip.top::after { top: 100%; left: 50%; transform: translateX(-50%); border-width: 6px 6px 0 6px; border-color: rgba(15,23,42,0.95) transparent transparent transparent; }
497
+ .tooltip.bottom { top: 100%; left: 50%; transform: translate(-50%, 8px); }
498
+ .tooltip.bottom::after { bottom: 100%; left: 50%; transform: translateX(-50%); border-width: 0 6px 6px 6px; border-color: transparent transparent rgba(15,23,42,0.95) transparent; }
499
+ </style>
500
+ <slot></slot>
501
+ <div class="tooltip ${n}" role="tooltip">${t}</div>
502
+ `}};f("af-ui-tooltip",Mt);ge=Mt});var cr={};w(cr,{default:()=>me,AfriUIPopover:()=>Et});var Et,me;var to=s(()=>{u();Et=class Et extends b{static get observedAttributes(){return["label","open"]}constructor(){super();this._open=this.hasAttribute("open"),this.render()}connectedCallback(){this._attachListeners()}attributeChangedCallback(){this._open=this.hasAttribute("open"),this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector(".trigger");if(!t)return;t.addEventListener("click",()=>{if(this._open=!this._open,this._open)this.setAttribute("open","");else this.removeAttribute("open");this.render(),this._attachListeners()})}render(){let t=this.getAttribute("label")||"Open",n=this._open;this.shadowRoot.innerHTML=g`
503
+ <style>
504
+ :host { position: relative; display: inline-flex; }
505
+ .trigger {
506
+ border: 1px solid #cbd5e1;
507
+ border-radius: 0.75rem;
508
+ padding: 0.75rem 1rem;
509
+ background: #fff;
510
+ color: #111827;
511
+ cursor: pointer;
512
+ font-family: 'Inter', sans-serif;
513
+ font-weight: 600;
514
+ }
515
+ .panel {
516
+ position: absolute;
517
+ top: calc(100% + 0.5rem);
518
+ right: 0;
519
+ min-width: 220px;
520
+ background: #ffffff;
521
+ border: 1px solid #e5e7eb;
522
+ box-shadow: 0 20px 40px rgba(15, 23, 42, 0.08);
523
+ border-radius: 1rem;
524
+ padding: 1rem;
525
+ opacity: ${n?"1":"0"};
526
+ visibility: ${n?"visible":"hidden"};
527
+ transform: ${n?"translateY(0)":"translateY(-10px)"};
528
+ transition: opacity 180ms ease, transform 180ms ease;
529
+ z-index: 10;
530
+ }
531
+ </style>
532
+ <button class="trigger" type="button">${t}</button>
533
+ <div class="panel"><slot></slot></div>
534
+ `}};f("af-ui-popover",Et);me=Et});var fr={};w(fr,{default:()=>pe,AfriUITabs:()=>St,AfriUITabPanel:()=>no});var St,no,pe;var oo=s(()=>{u();St=class St extends b{static get observedAttributes(){return["active"]}constructor(){super();this._active=this.getAttribute("active")||"0",this.render()}connectedCallback(){this._attachListeners()}attributeChangedCallback(){this._active=this.getAttribute("active")||"0",this.render(),this._attachListeners()}_attachListeners(){this.shadowRoot.querySelectorAll('[role="tab"]').forEach((n)=>{n.addEventListener("click",()=>{let o=n.getAttribute("data-index");this.setAttribute("active",o)})})}render(){let t=this._active,n=Array.from(this.children).filter((o)=>o.tagName.toLowerCase()==="ui-tab-panel");this.shadowRoot.innerHTML=g`
535
+ <style>
536
+ :host { display: block; font-family: 'Inter', system-ui, sans-serif; }
537
+
538
+ .tab-list {
539
+ display: flex;
540
+ gap: 0.5rem;
541
+ border-bottom: 1px solid #e5e7eb;
542
+ margin-bottom: 1rem;
543
+ }
544
+ button {
545
+ all: unset;
546
+ cursor: pointer;
547
+ padding: 0.75rem 1rem;
548
+ border-radius: 999px;
549
+ color: #334155;
550
+ font-weight: 600;
551
+ }
552
+ button.active {
553
+ background: #2563eb;
554
+ color: #fff;
555
+ }
556
+ .panel { display: none; }
557
+ .panel.active { display: block; }
558
+ </style>
559
+ <div class="tab-list" role="tablist">
560
+ ${n.map((o,r)=>g`
561
+ <button
562
+ role="tab"
563
+ data-index="${r}"
564
+ class="${String(r)===String(t)?"active":""}"
565
+ aria-selected="${String(r)===String(t)}"
566
+ >
567
+ ${o.getAttribute("label")||`Tab ${r+1}`}
568
+ </button>
569
+ `).join("")}
570
+ </div>
571
+ ${n.map((o,r)=>g`
572
+ <div class="panel ${String(r)===String(t)?"active":""}" role="tabpanel">
573
+ ${o.innerHTML}
574
+ </div>
575
+ `).join("")}
576
+ `}};no=class no extends b{render(){this.shadowRoot.innerHTML=g`<slot></slot>`}};f("af-ui-tabs",St);f("ui-tab-panel",no);pe=St});var dr={};w(dr,{default:()=>se,AfriUITable:()=>Yt});var Yt,se;var ro=s(()=>{u();Yt=class Yt extends b{static get observedAttributes(){return["striped","bordered","compact"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.hasAttribute("striped"),n=this.hasAttribute("bordered"),o=this.hasAttribute("compact");this.shadowRoot.innerHTML=g`
577
+ <style>
578
+ :host { display: block; overflow-x: auto; }
579
+ table {
580
+ width: 100%;
581
+ border-collapse: collapse;
582
+ min-width: 100%;
583
+ font-family: 'Inter', system-ui, sans-serif;
584
+ color: #0f172a;
585
+ }
586
+ th, td {
587
+ padding: ${o?"0.75rem":"1rem"};
588
+ text-align: left;
589
+ border-bottom: 1px solid #e5e7eb;
590
+ }
591
+ th {
592
+ font-size: 0.85rem;
593
+ font-weight: 700;
594
+ color: #334155;
595
+ text-transform: uppercase;
596
+ letter-spacing: 0.04em;
597
+ }
598
+ tbody tr {
599
+ background: #fff;
600
+ }
601
+ tbody tr:nth-child(even) {
602
+ background: ${t?"#f8fafc":"#fff"};
603
+ }
604
+ table.bordered th, table.bordered td {
605
+ border: 1px solid #e5e7eb;
606
+ }
607
+ </style>
608
+ <table class="${n?"bordered":""}">
609
+ <slot></slot>
610
+ </table>
611
+ `}};f("af-ui-table",Yt);se=Yt});var hr={};w(hr,{default:()=>ve,AfriUIStat:()=>Rt});var Rt,ve;var ao=s(()=>{u();Rt=class Rt extends b{static get observedAttributes(){return["label","value","delta","trend"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("label")||"Metric",n=this.getAttribute("value")||"0",o=this.getAttribute("delta")||"",r=this.getAttribute("trend")||"neutral",a=r==="positive"?"#16a34a":r==="negative"?"#dc2626":"#475569";this.shadowRoot.innerHTML=g`
612
+ <style>
613
+ :host { display: block; font-family: 'Inter', sans-serif; }
614
+ .stat {
615
+ display: grid;
616
+ gap: 0.5rem;
617
+ padding: 1.25rem;
618
+ border-radius: 1rem;
619
+ background: #ffffff;
620
+ border: 1px solid #e5e7eb;
621
+ box-shadow: 0 12px 24px rgba(15, 23, 42, 0.06);
622
+ }
623
+ .label {
624
+ font-size: 0.85rem;
625
+ font-weight: 700;
626
+ color: #475569;
627
+ text-transform: uppercase;
628
+ letter-spacing: 0.08em;
629
+ }
630
+ .value {
631
+ font-size: 2.25rem;
632
+ font-weight: 800;
633
+ color: #0f172a;
634
+ }
635
+ .delta {
636
+ display: inline-flex;
637
+ align-items: center;
638
+ gap: 0.35rem;
639
+ color: ${a};
640
+ font-size: 0.95rem;
641
+ font-weight: 700;
642
+ }
643
+ </style>
644
+ <div class="stat">
645
+ <div class="label">${t}</div>
646
+ <div class="value">${n}</div>
647
+ ${o?g`<div class="delta">${o}</div>`:""}
648
+ </div>
649
+ `}};f("af-ui-stat",Rt);ve=Rt});var gr={};w(gr,{default:()=>$e,AfriFooter:()=>Xt});var Xt,$e;var eo=s(()=>{u();Xt=class Xt extends b{static get observedAttributes(){return["company","year"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("company")||"AfriCode",n=this.getAttribute("year")||new Date().getFullYear();this.shadowRoot.innerHTML=g`
650
+ <style>
651
+ :host {
652
+ display: block;
653
+ width: 100%;
654
+ box-sizing: border-box;
655
+ background: #0f172a;
656
+ color: #e2e8f0;
657
+ font-family: 'Inter', system-ui, sans-serif;
658
+ }
659
+
660
+ .footer {
661
+ padding: 48px 5%;
662
+ max-width: 1280px;
663
+ margin: 0 auto;
664
+ display: grid;
665
+ gap: 2rem;
666
+ grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
667
+ }
668
+
669
+ .brand {
670
+ display: grid;
671
+ gap: 0.75rem;
672
+ }
673
+
674
+ .brand h3 {
675
+ margin: 0;
676
+ font-size: 1.25rem;
677
+ color: #ffffff;
678
+ }
679
+
680
+ .links {
681
+ display: grid;
682
+ gap: 0.5rem;
683
+ }
684
+
685
+ .links slot {
686
+ display: grid;
687
+ gap: 0.5rem;
688
+ }
689
+
690
+ a {
691
+ color: #94a3b8;
692
+ text-decoration: none;
693
+ }
694
+
695
+ a:hover {
696
+ color: #ffffff;
697
+ }
698
+
699
+ .bottom {
700
+ grid-column: 1 / -1;
701
+ display: flex;
702
+ flex-wrap: wrap;
703
+ align-items: center;
704
+ justify-content: space-between;
705
+ gap: 1rem;
706
+ padding-top: 1.5rem;
707
+ border-top: 1px solid rgba(226, 232, 240, 0.12);
708
+ color: #94a3b8;
709
+ font-size: 0.95rem;
710
+ }
711
+ </style>
712
+
713
+ <footer class="footer">
714
+ <div class="brand">
715
+ <h3>${t}</h3>
716
+ <slot name="description"></slot>
717
+ </div>
718
+ <div class="links">
719
+ <slot name="links"></slot>
720
+ </div>
721
+ <div class="links">
722
+ <slot name="resources"></slot>
723
+ </div>
724
+ <div class="bottom">
725
+ <span>© ${n} ${t}. All rights reserved.</span>
726
+ <slot name="legal"></slot>
727
+ </div>
728
+ </footer>
729
+ `}};f("af-footer",Xt);$e=Xt});var mr={};w(mr,{default:()=>ue,AfriBreadcrumb:()=>Qt});var Qt,ue;var lo=s(()=>{u();Qt=class Qt extends b{static get observedAttributes(){return["separator"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("separator")||"/";this.shadowRoot.innerHTML=g`
730
+ <style>
731
+ :host {
732
+ display: block;
733
+ font-family: 'Inter', system-ui, sans-serif;
734
+ color: #475569;
735
+ font-size: 0.9rem;
736
+ }
737
+
738
+ nav {
739
+ display: flex;
740
+ flex-wrap: wrap;
741
+ gap: 0.5rem;
742
+ align-items: center;
743
+ }
744
+
745
+ .crumb {
746
+ display: inline-flex;
747
+ align-items: center;
748
+ gap: 0.35rem;
749
+ }
750
+
751
+ .separator {
752
+ color: #cbd5e1;
753
+ }
754
+
755
+ ::slotted(a) {
756
+ color: #0f172a;
757
+ text-decoration: none;
758
+ font-weight: 600;
759
+ }
760
+
761
+ ::slotted(a:hover) {
762
+ text-decoration: underline;
763
+ }
764
+ </style>
765
+
766
+ <nav aria-label="Breadcrumb">
767
+ <slot></slot>
768
+ </nav>
769
+ `}};f("af-breadcrumb",Qt);ue=Qt});var pr={};w(pr,{default:()=>we,AfriFeatureGrid:()=>Jt});var Jt,we;var io=s(()=>{u();Jt=class Jt extends b{static get observedAttributes(){return["columns"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("columns")||"3";this.shadowRoot.innerHTML=g`
770
+ <style>
771
+ :host {
772
+ display: block;
773
+ width: 100%;
774
+ box-sizing: border-box;
775
+ font-family: 'Inter', system-ui, sans-serif;
776
+ }
777
+
778
+ .grid {
779
+ display: grid;
780
+ gap: 1.5rem;
781
+ grid-template-columns: repeat(${t}, minmax(0, 1fr));
782
+ }
783
+
784
+ @media (max-width: 1024px) {
785
+ .grid {
786
+ grid-template-columns: repeat(2, minmax(0, 1fr));
787
+ }
788
+ }
789
+
790
+ @media (max-width: 640px) {
791
+ .grid {
792
+ grid-template-columns: 1fr;
793
+ }
794
+ }
795
+
796
+ ::slotted(.feature-card) {
797
+ display: grid;
798
+ gap: 0.75rem;
799
+ padding: 1.5rem;
800
+ border-radius: 24px;
801
+ background: #ffffff;
802
+ border: 1px solid rgba(15, 23, 42, 0.08);
803
+ box-shadow: 0 12px 32px rgba(15, 23, 42, 0.04);
804
+ }
805
+
806
+ ::slotted(.feature-card h3) {
807
+ margin: 0;
808
+ font-size: 1.1rem;
809
+ color: #0f172a;
810
+ }
811
+
812
+ ::slotted(.feature-card p) {
813
+ margin: 0;
814
+ color: #475569;
815
+ line-height: 1.7;
816
+ }
817
+ </style>
818
+
819
+ <div class="grid">
820
+ <slot></slot>
821
+ </div>
822
+ `}};f("af-feature-grid",Jt);we=Jt});var sr={};w(sr,{default:()=>xe,AfriPricingCard:()=>Gt});var Gt,xe;var bo=s(()=>{u();Gt=class Gt extends b{static get observedAttributes(){return["title","price","frequency","highlight"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("title")||"Standard",n=this.getAttribute("price")||"$49",o=this.getAttribute("frequency")||"per month",r=this.hasAttribute("highlight");this.shadowRoot.innerHTML=g`
823
+ <style>
824
+ :host {
825
+ display: block;
826
+ font-family: 'Inter', system-ui, sans-serif;
827
+ }
828
+
829
+ .card {
830
+ display: grid;
831
+ gap: 1rem;
832
+ padding: 1.75rem;
833
+ border-radius: 28px;
834
+ background: ${r?"linear-gradient(180deg, #1EB53A, #0f172a)":"#ffffff"};
835
+ color: ${r?"#ffffff":"#0f172a"};
836
+ border: 1px solid rgba(15, 23, 42, 0.08);
837
+ box-shadow: 0 20px 50px rgba(15, 23, 42, 0.08);
838
+ }
839
+
840
+ .title {
841
+ margin: 0;
842
+ font-size: 1.2rem;
843
+ font-weight: 700;
844
+ }
845
+
846
+ .price {
847
+ font-size: 2.75rem;
848
+ font-weight: 800;
849
+ line-height: 1;
850
+ }
851
+
852
+ .frequency {
853
+ color: ${r?"rgba(255,255,255,0.8)":"#64748b"};
854
+ font-size: 0.95rem;
855
+ margin-top: -0.25rem;
856
+ }
857
+
858
+ .features {
859
+ display: grid;
860
+ gap: 0.75rem;
861
+ }
862
+
863
+ ::slotted(.feature) {
864
+ color: ${r?"#e2e8f0":"#475569"};
865
+ font-size: 0.95rem;
866
+ display: flex;
867
+ align-items: center;
868
+ gap: 0.5rem;
869
+ }
870
+
871
+ .footer {
872
+ margin-top: 1rem;
873
+ }
874
+ </style>
875
+
876
+ <div class="card">
877
+ <div>
878
+ <h3 class="title">${t}</h3>
879
+ <div class="price">${n}</div>
880
+ <div class="frequency">${o}</div>
881
+ </div>
882
+ <div class="features">
883
+ <slot></slot>
884
+ </div>
885
+ <div class="footer"><slot name="action"></slot></div>
886
+ </div>
887
+ `}};f("af-pricing-card",Gt);xe=Gt});var vr={};w(vr,{default:()=>Ae,AfriTestimonial:()=>Ft});var Ft,Ae;var co=s(()=>{u();Ft=class Ft extends b{static get observedAttributes(){return["author","role","company"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("author")||"Customer",n=this.getAttribute("role")||"Founder",o=this.getAttribute("company")||"";this.shadowRoot.innerHTML=g`
888
+ <style>
889
+ :host {
890
+ display: block;
891
+ font-family: 'Inter', system-ui, sans-serif;
892
+ color: #0f172a;
893
+ }
894
+
895
+ .testimonial {
896
+ display: grid;
897
+ gap: 1rem;
898
+ padding: 1.75rem;
899
+ border-radius: 24px;
900
+ background: #ffffff;
901
+ border: 1px solid rgba(15, 23, 42, 0.08);
902
+ box-shadow: 0 16px 32px rgba(15, 23, 42, 0.06);
903
+ }
904
+
905
+ .quote {
906
+ font-size: 1rem;
907
+ line-height: 1.8;
908
+ color: #475569;
909
+ position: relative;
910
+ padding-left: 1rem;
911
+ }
912
+
913
+ .quote::before {
914
+ content: '“';
915
+ position: absolute;
916
+ left: 0;
917
+ top: 0;
918
+ font-size: 3rem;
919
+ color: #1EB53A;
920
+ line-height: 1;
921
+ }
922
+
923
+ .author {
924
+ display: flex;
925
+ flex-direction: column;
926
+ gap: 0.125rem;
927
+ color: #0f172a;
928
+ }
929
+
930
+ .name {
931
+ font-weight: 700;
932
+ }
933
+
934
+ .meta {
935
+ color: #64748b;
936
+ font-size: 0.9rem;
937
+ }
938
+ </style>
939
+
940
+ <article class="testimonial">
941
+ <div class="quote"><slot></slot></div>
942
+ <div class="author">
943
+ <span class="name">${t}</span>
944
+ <span class="meta">${n}${o?` · ${o}`:""}</span>
945
+ </div>
946
+ </article>
947
+ `}};f("af-testimonial",Ft);Ae=Ft});var $r={};w($r,{default:()=>_e,AfriDashboardShell:()=>Bt});var Bt,_e;var fo=s(()=>{u();Bt=class Bt extends b{static get observedAttributes(){return["sidebar-width","topbar-height"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("sidebar-width")||"280px",n=this.getAttribute("topbar-height")||"72px";this.shadowRoot.innerHTML=g`
121
948
  <style>
122
- :host { display: block; }
949
+ :host {
950
+ display: block;
951
+ min-height: 100vh;
952
+ font-family: 'Inter', system-ui, sans-serif;
953
+ color: var(--af-text, #0f172a);
954
+ background: var(--af-bg, #f8fafc);
955
+ }
123
956
 
124
- .card {
125
- border-radius: 1rem;
126
- padding: 1.5rem;
127
- background: #ffffff;
128
- color: #0f172a;
129
- transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
130
- border: 1px solid transparent;
131
- box-shadow: 0 16px 32px rgba(15, 23, 42, 0.08);
957
+ .dashboard-shell {
958
+ display: grid;
959
+ grid-template-columns: ${t} minmax(0, 1fr);
960
+ grid-template-rows: ${n} minmax(0, 1fr);
961
+ min-height: 100vh;
962
+ gap: 1rem;
132
963
  }
133
964
 
134
- .card.elevated { background: #fff; }
135
- .card.flat { background: #f8fafc; box-shadow: none; }
136
- .card.outlined { background: #fff; border-color: #e2e8f0; box-shadow: none; }
965
+ .sidebar {
966
+ grid-row: 1 / span 2;
967
+ background: transparent;
968
+ }
137
969
 
138
- .card:hover:not(.disabled) {
139
- transform: translateY(-2px);
970
+ .topbar {
971
+ grid-column: 2 / 3;
972
+ position: sticky;
973
+ top: 0;
974
+ z-index: 10;
975
+ background: var(--af-surface, #ffffff);
976
+ border-bottom: 1px solid rgba(15, 23, 42, 0.08);
977
+ box-shadow: 0 4px 18px rgba(15, 23, 42, 0.04);
140
978
  }
141
979
 
142
- :host([bordered]) .card { border-color: #cbd5e1; }
980
+ .content {
981
+ grid-column: 2 / 3;
982
+ padding: 24px;
983
+ min-height: calc(100vh - ${n});
984
+ background: transparent;
985
+ overflow: hidden;
986
+ }
143
987
 
144
- :host([clickable]) .card { cursor: pointer; }
988
+ ::slotted([slot="sidebar"]) {
989
+ height: 100%;
990
+ }
145
991
  </style>
146
992
 
147
- <article class="card ${t}">
148
- <slot></slot>
149
- </article>
150
- `}};d("af-ui-card",mt);Pa=mt});var go={};H(go,{default:()=>Ca,AfriUIInput:()=>xt});var xt,Ca;var Hn=A(()=>{q();xt=class xt extends c{static get observedAttributes(){return["label","placeholder","type","value","disabled","error"]}constructor(){super();this.render()}connectedCallback(){this._attachListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachListeners()}_attachListeners(){let t=this.shadowRoot.querySelector("input");if(!t)return;t.addEventListener("input",()=>{this.emit("af-ui-input",{value:t.value})})}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"",a=this.getAttribute("type")||"text",o=this.getAttribute("value")||"",l=this.hasAttribute("disabled"),b=this.getAttribute("error")||"";this.shadowRoot.innerHTML=Y`
993
+ <div class="dashboard-shell">
994
+ <aside class="sidebar"><slot name="sidebar"></slot></aside>
995
+ <header class="topbar"><slot name="topbar"></slot></header>
996
+ <main class="content"><slot></slot></main>
997
+ </div>
998
+ `}};f("af-dashboard-shell",Bt);_e=Bt});var ur={};w(ur,{default:()=>ke,AfriDashboardTopbar:()=>Dt});var Dt,ke;var ho=s(()=>{u();Dt=class Dt extends b{static get observedAttributes(){return["title","description"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("title")||"Dashboard",n=this.getAttribute("description")||"";this.shadowRoot.innerHTML=g`
151
999
  <style>
152
- :host { display: block; font-family: 'Inter', system-ui, sans-serif; }
153
-
154
- label {
1000
+ :host {
155
1001
  display: block;
156
- font-size: 0.85rem;
157
- font-weight: 600;
158
- margin-bottom: 0.5rem;
159
- color: #111827;
1002
+ width: 100%;
1003
+ font-family: 'Inter', system-ui, sans-serif;
160
1004
  }
161
1005
 
162
- .field {
1006
+ .topbar {
1007
+ display: flex;
1008
+ align-items: center;
1009
+ justify-content: space-between;
1010
+ padding: 1rem 1.5rem;
1011
+ gap: 1rem;
1012
+ min-height: 72px;
1013
+ box-sizing: border-box;
1014
+ }
1015
+
1016
+ .heading {
163
1017
  display: grid;
164
- gap: 0.45rem;
1018
+ gap: 0.25rem;
165
1019
  }
166
1020
 
167
- input {
168
- width: 100%;
169
- border: 1px solid #d1d5db;
170
- border-radius: 0.75rem;
171
- padding: 0.95rem 1rem;
1021
+ .title {
1022
+ margin: 0;
1023
+ font-size: 1.1rem;
1024
+ font-weight: 700;
1025
+ color: #0f172a;
1026
+ }
1027
+
1028
+ .description {
1029
+ margin: 0;
1030
+ color: #475569;
172
1031
  font-size: 0.95rem;
173
- color: #111827;
174
- background: #ffffff;
175
- transition: border-color 150ms ease, box-shadow 150ms ease;
176
1032
  }
177
1033
 
178
- input:focus {
179
- outline: none;
180
- border-color: #2563eb;
181
- box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
1034
+ .actions {
1035
+ display: flex;
1036
+ gap: 0.75rem;
1037
+ align-items: center;
1038
+ flex-wrap: wrap;
182
1039
  }
1040
+ </style>
183
1041
 
184
- input:disabled {
185
- opacity: 0.65;
186
- cursor: not-allowed;
187
- background: #f8fafc;
1042
+ <div class="topbar">
1043
+ <div class="heading">
1044
+ <div class="title">${t}</div>
1045
+ ${n?g`<div class="description">${n}</div>`:""}
1046
+ </div>
1047
+ <div class="actions"><slot name="actions"></slot></div>
1048
+ </div>
1049
+ `}};f("af-dashboard-topbar",Dt);ke=Dt});var wr={};w(wr,{default:()=>qe,AfriDashboardCard:()=>Ot});var Ot,qe;var go=s(()=>{u();Ot=class Ot extends b{static get observedAttributes(){return["title","variant"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("title")||"",n=this.getAttribute("variant")||"surface",o={surface:{background:"#ffffff",border:"1px solid rgba(15, 23, 42, 0.08)",shadow:"0 18px 36px rgba(15, 23, 42, 0.04)"},elevated:{background:"linear-gradient(180deg, #ffffff 0%, #f8fafc 100%)",border:"1px solid rgba(15, 23, 42, 0.12)",shadow:"0 24px 48px rgba(15, 23, 42, 0.08)"}},r=o[n]||o.surface;this.shadowRoot.innerHTML=g`
1050
+ <style>
1051
+ :host {
1052
+ display: block;
1053
+ font-family: 'Inter', system-ui, sans-serif;
188
1054
  }
189
1055
 
190
- .error {
191
- color: #dc2626;
192
- font-size: 0.8rem;
193
- min-height: 1rem;
1056
+ .card {
1057
+ background: ${r.background};
1058
+ border: ${r.border};
1059
+ border-radius: 24px;
1060
+ box-shadow: ${r.shadow};
1061
+ padding: 1.5rem;
1062
+ min-height: 100px;
1063
+ overflow: hidden;
1064
+ }
1065
+
1066
+ .header {
1067
+ display: flex;
1068
+ align-items: center;
1069
+ justify-content: space-between;
1070
+ gap: 0.75rem;
1071
+ margin-bottom: 1rem;
1072
+ }
1073
+
1074
+ .title {
1075
+ margin: 0;
1076
+ font-size: 1rem;
1077
+ font-weight: 700;
1078
+ color: #0f172a;
194
1079
  }
195
1080
  </style>
196
1081
 
197
- <div class="field">
198
- ${t?Y`<label>${t}</label>`:""}
199
- <input
200
- type="${a}"
201
- placeholder="${n}"
202
- value="${o}"
203
- ${l?"disabled":""}
204
- aria-invalid="${Boolean(b)}"
205
- />
206
- <div class="error">${b}</div>
1082
+ <div class="card">
1083
+ ${t?g`<div class="header"><h3 class="title">${t}</h3><slot name="header"></slot></div>`:""}
1084
+ <div class="body"><slot></slot></div>
207
1085
  </div>
208
- `}};d("af-ui-input",xt);Ca=xt});var co={};H(co,{default:()=>Ta,AfriUIBadge:()=>kt});var kt,Ta;var En=A(()=>{q();kt=class kt extends c{static get observedAttributes(){return["variant","size","pill"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"secondary",n=this.getAttribute("size")||"md",a=this.hasAttribute("pill");this.shadowRoot.innerHTML=Y`
1086
+ `}};f("af-dashboard-card",Ot);qe=Ot});var xr={};w(xr,{default:()=>He,AfriDashboardMetric:()=>Wt});var Wt,He;var mo=s(()=>{u();Wt=class Wt extends b{static get observedAttributes(){return["label","value","delta","trend"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("label")||"Metric",n=this.getAttribute("value")||"0",o=this.getAttribute("delta")||"",r=this.getAttribute("trend")||"neutral",a=r==="positive"?"#16a34a":r==="negative"?"#dc2626":"#475569";this.shadowRoot.innerHTML=g`
209
1087
  <style>
210
- :host { display: inline-block; font-family: 'Inter', system-ui, sans-serif; }
1088
+ :host {
1089
+ display: block;
1090
+ font-family: 'Inter', system-ui, sans-serif;
1091
+ }
211
1092
 
212
- .badge {
1093
+ .metric {
1094
+ display: grid;
1095
+ gap: 0.5rem;
1096
+ padding: 1.25rem;
1097
+ border-radius: 24px;
1098
+ background: #ffffff;
1099
+ border: 1px solid rgba(15, 23, 42, 0.08);
1100
+ }
1101
+
1102
+ .label {
1103
+ color: #6b7280;
1104
+ text-transform: uppercase;
1105
+ letter-spacing: 0.14em;
1106
+ font-size: 0.75rem;
1107
+ font-weight: 700;
1108
+ }
1109
+
1110
+ .value {
1111
+ font-size: 2rem;
1112
+ font-weight: 800;
1113
+ color: #0f172a;
1114
+ }
1115
+
1116
+ .delta {
213
1117
  display: inline-flex;
214
1118
  align-items: center;
215
- justify-content: center;
216
1119
  gap: 0.4rem;
217
- border-radius: ${a?"999px":"0.6rem"};
218
- padding: ${n==="sm"?"0.25rem 0.65rem":n==="lg"?"0.55rem 1rem":"0.4rem 0.8rem"};
219
- font-size: ${n==="sm"?"0.75rem":n==="lg"?"0.95rem":"0.85rem"};
220
1120
  font-weight: 700;
221
- color: #111827;
222
- background: var(--af-ui-badge-bg, #e2e8f0);
223
- border: 1px solid transparent;
224
- white-space: nowrap;
1121
+ color: ${a};
1122
+ font-size: 0.92rem;
225
1123
  }
226
-
227
- .badge.primary { background: #2563eb; color: #ffffff; }
228
- .badge.success { background: #16a34a; color: #ffffff; }
229
- .badge.warning { background: #f59e0b; color: #0f172a; }
230
- .badge.danger { background: #dc2626; color: #ffffff; }
231
- .badge.secondary { background: #f8fafc; color: #0f172a; }
232
1124
  </style>
233
1125
 
234
- <span class="badge ${t}"><slot></slot></span>
235
- `}};d("af-ui-badge",kt);Ta=kt});var $o={};H($o,{default:()=>ya,AfriUISwitch:()=>qt});var qt,ya;var Mn=A(()=>{q();qt=class qt extends c{static get observedAttributes(){return["checked","disabled","size"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(t)=>{if(this.hasAttribute("disabled"))return;let n=!this.hasAttribute("checked");if(n)this.setAttribute("checked","");else this.removeAttribute("checked");this.emit("af-ui-switch-toggle",{checked:n,originalEvent:t})})}attributeChangedCallback(){this.render()}render(){let t=this.hasAttribute("checked"),n=this.hasAttribute("disabled"),a=this.getAttribute("size")||"md",o=a==="sm"?{width:36,height:20,knob:14}:a==="lg"?{width:56,height:32,knob:24}:{width:48,height:28,knob:20},l=t?"true":"false";this.shadowRoot.innerHTML=Y`
1126
+ <div class="metric">
1127
+ <div class="label">${t}</div>
1128
+ <div class="value">${n}</div>
1129
+ ${o?g`<div class="delta">${o}</div>`:""}
1130
+ </div>
1131
+ `}};f("af-dashboard-metric",Wt);He=Wt});var Ar={};w(Ar,{default:()=>Le,AfriDashboardActivityList:()=>Ut});var Ut,Le;var po=s(()=>{u();Ut=class Ut extends b{static get observedAttributes(){return["title","empty-text"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("title")||"Recent Activity",n=this.getAttribute("empty-text")||"No recent activity available.";this.shadowRoot.innerHTML=g`
236
1132
  <style>
237
- :host { display: inline-block; }
238
-
239
- button {
240
- all: unset;
241
- position: relative;
242
- width: ${o.width}px;
243
- height: ${o.height}px;
244
- border-radius: ${o.height/2}px;
245
- background: ${t?"#2563eb":"#e5e7eb"};
246
- cursor: ${n?"not-allowed":"pointer"};
247
- transition: background 180ms ease;
248
- box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
1133
+ :host {
1134
+ display: block;
1135
+ font-family: 'Inter', system-ui, sans-serif;
249
1136
  }
250
1137
 
251
- .knob {
252
- position: absolute;
253
- top: 50%;
254
- left: ${t?`${o.width-o.knob-4}px`:"4px"};
255
- transform: translateY(-50%);
256
- width: ${o.knob}px;
257
- height: ${o.knob}px;
258
- border-radius: 999px;
1138
+ .activity-card {
1139
+ display: grid;
1140
+ gap: 1rem;
1141
+ padding: 1.5rem;
1142
+ border-radius: 24px;
259
1143
  background: #ffffff;
260
- transition: left 180ms ease;
261
- box-shadow: 0 2px 6px rgba(15, 23, 42, 0.16);
1144
+ border: 1px solid rgba(15, 23, 42, 0.08);
262
1145
  }
263
1146
 
264
- button:disabled { opacity: 0.65; }
1147
+ .header {
1148
+ display: flex;
1149
+ align-items: center;
1150
+ justify-content: space-between;
1151
+ gap: 0.75rem;
1152
+ }
1153
+
1154
+ .title {
1155
+ margin: 0;
1156
+ font-size: 1rem;
1157
+ font-weight: 700;
1158
+ color: #0f172a;
1159
+ }
1160
+
1161
+ .list {
1162
+ display: grid;
1163
+ gap: 0.5rem;
1164
+ }
1165
+
1166
+ .item {
1167
+ padding: 0.95rem 1rem;
1168
+ border-radius: 18px;
1169
+ background: #f8fafc;
1170
+ border: 1px solid rgba(15, 23, 42, 0.04);
1171
+ }
1172
+
1173
+ .item-title {
1174
+ font-size: 0.95rem;
1175
+ font-weight: 600;
1176
+ color: #0f172a;
1177
+ margin: 0 0 0.25rem;
1178
+ }
1179
+
1180
+ .item-meta {
1181
+ margin: 0;
1182
+ color: #6b7280;
1183
+ font-size: 0.85rem;
1184
+ }
1185
+
1186
+ .empty {
1187
+ color: #6b7280;
1188
+ font-size: 0.95rem;
1189
+ padding: 1rem 0;
1190
+ }
265
1191
  </style>
266
1192
 
267
- <button role="switch" aria-checked="${l}" ${n?"disabled":""}>
268
- <span class="knob"></span>
269
- </button>
270
- `}};d("af-ui-switch",qt);ya=qt});var vo={};H(vo,{default:()=>Za,AfriButton:()=>Rt});var Rt,Za;var wo=A(()=>{q();Rt=class Rt extends c{static get observedAttributes(){return["variant","size","theme","disabled","loading","icon","aria-label"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(n)=>{if(this.hasAttribute("disabled")||this.hasAttribute("loading")){n.preventDefault();return}this.emit("af-click",{originalEvent:n})})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"primary",n=this.getAttribute("size")||"md",a=this.getAttribute("theme")||"tanzania",o=this.hasAttribute("disabled"),l=this.hasAttribute("loading"),b=this.getAttribute("icon"),r=this.getAttribute("aria-label"),h={tanzania:{primary:"#1EB53A",accent:"#FCD116",text:"#FFFFFF"},maasai:{primary:"#FF0000",accent:"#8B0000",text:"#FFFFFF"},ndebele:{primary:"#4169E1",accent:"#FFD700",text:"#FFFFFF"},ocean:{primary:"#00A3DD",accent:"#0077BE",text:"#FFFFFF"}},f=h[a]||h.tanzania;this.shadowRoot.innerHTML=`
1193
+ <div class="activity-card">
1194
+ <div class="header"><h3 class="title">${t}</h3></div>
1195
+ <div class="list">
1196
+ <slot>
1197
+ <div class="empty">${n}</div>
1198
+ </slot>
1199
+ </div>
1200
+ </div>
1201
+ `}};f("af-dashboard-activity-list",Ut);Le=Ut});var _r={};w(_r,{default:()=>Me,AfriButton:()=>tn});var tn,Me;var kr=s(()=>{u();tn=class tn extends b{static get observedAttributes(){return["variant","size","theme","disabled","loading","icon","aria-label"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector("button")?.addEventListener("click",(n)=>{if(this.hasAttribute("disabled")||this.hasAttribute("loading")){n.preventDefault();return}this.emit("af-click",{originalEvent:n})})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"primary",n=this.getAttribute("size")||"md",o=this.getAttribute("theme")||"tanzania",r=this.hasAttribute("disabled"),a=this.hasAttribute("loading"),e=this.getAttribute("icon"),l=this.getAttribute("aria-label"),i={tanzania:{primary:"#1EB53A",accent:"#FCD116",text:"#FFFFFF"},maasai:{primary:"#FF0000",accent:"#8B0000",text:"#FFFFFF"},ndebele:{primary:"#4169E1",accent:"#FFD700",text:"#FFFFFF"},ocean:{primary:"#00A3DD",accent:"#0077BE",text:"#FFFFFF"}},c=i[o]||i.tanzania;this.shadowRoot.innerHTML=`
271
1202
  <style>
272
1203
  :host {
273
1204
  display: inline-block;
@@ -295,8 +1226,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
295
1226
 
296
1227
  /* Variants */
297
1228
  .variant-primary {
298
- background: ${f.primary};
299
- color: ${f.text};
1229
+ background: ${c.primary};
1230
+ color: ${c.text};
300
1231
  }
301
1232
  .variant-primary:hover:not(:disabled) {
302
1233
  filter: brightness(1.1);
@@ -306,25 +1237,25 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
306
1237
 
307
1238
  .variant-secondary {
308
1239
  background: transparent;
309
- color: ${f.primary};
310
- border: 2px solid ${f.primary};
1240
+ color: ${c.primary};
1241
+ border: 2px solid ${c.primary};
311
1242
  }
312
1243
  .variant-secondary:hover:not(:disabled) {
313
- background: ${f.primary};
314
- color: ${f.text};
1244
+ background: ${c.primary};
1245
+ color: ${c.text};
315
1246
  }
316
1247
 
317
1248
  .variant-ghost {
318
1249
  background: transparent;
319
- color: ${f.primary};
1250
+ color: ${c.primary};
320
1251
  }
321
1252
  .variant-ghost:hover:not(:disabled) {
322
1253
  background: rgba(0,0,0,0.05);
323
1254
  }
324
1255
 
325
1256
  .variant-gradient {
326
- background: linear-gradient(135deg, ${f.primary} 0%, ${f.accent} 100%);
327
- color: ${f.text};
1257
+ background: linear-gradient(135deg, ${c.primary} 0%, ${c.accent} 100%);
1258
+ color: ${c.text};
328
1259
  }
329
1260
  .variant-gradient:hover:not(:disabled) {
330
1261
  transform: translateY(-2px);
@@ -363,15 +1294,15 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
363
1294
 
364
1295
  <button
365
1296
  class="variant-${t} size-${n}"
366
- ${o?"disabled":""}
367
- ${r?`aria-label="${r}"`:""}
368
- ${l?'aria-busy="true"':""}
1297
+ ${r?"disabled":""}
1298
+ ${l?`aria-label="${l}"`:""}
1299
+ ${a?'aria-busy="true"':""}
369
1300
  >
370
- ${l?'<span class="spinner"></span>':""}
371
- ${b&&!l?`<span class="icon">${b}</span>`:""}
1301
+ ${a?'<span class="spinner"></span>':""}
1302
+ ${e&&!a?`<span class="icon">${e}</span>`:""}
372
1303
  <slot></slot>
373
1304
  </button>
374
- `}};d("af-button",Rt);Za=Rt});var _o={};H(_o,{default:()=>sa,AfriCard:()=>Ft});var Ft,sa;var io=A(()=>{q();Ft=class Ft extends c{static get observedAttributes(){return["theme","variant","clickable","image"]}constructor(){super();this.render()}connectedCallback(){if(this.hasAttribute("clickable"))this.shadowRoot.querySelector(".card").addEventListener("click",()=>{this.emit("af-click")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"default",n=this.getAttribute("variant")||"elevated",a=this.hasAttribute("clickable"),o=this.getAttribute("image"),l={default:{accent:"#333",border:"#eee"},tanzania:{accent:"#1EB53A",border:"#1EB53A"},maasai:{accent:"#FF0000",border:"#8B0000"},ndebele:{accent:"#4169E1",border:"#4169E1"}},r={elevated:"box-shadow: 0 2px 12px rgba(0,0,0,0.1);",outlined:`border: 2px solid ${(l[t]||l.default).border};`,flat:"background: #f8f9fa;"};this.shadowRoot.innerHTML=html`
1305
+ `}};f("af-button",tn);Me=tn});var qr={};w(qr,{default:()=>Ee,AfriCard:()=>nn});var nn,Ee;var Hr=s(()=>{u();nn=class nn extends b{static get observedAttributes(){return["theme","variant","clickable","image"]}constructor(){super();this.render()}connectedCallback(){if(this.hasAttribute("clickable"))this.shadowRoot.querySelector(".card").addEventListener("click",()=>{this.emit("af-click")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"default",n=this.getAttribute("variant")||"elevated",o=this.hasAttribute("clickable"),r=this.getAttribute("image"),a={default:{accent:"#333",border:"#eee"},tanzania:{accent:"#1EB53A",border:"#1EB53A"},maasai:{accent:"#FF0000",border:"#8B0000"},ndebele:{accent:"#4169E1",border:"#4169E1"}},l={elevated:"box-shadow: 0 2px 12px rgba(0,0,0,0.1);",outlined:`border: 2px solid ${(a[t]||a.default).border};`,flat:"background: #f8f9fa;"};this.shadowRoot.innerHTML=html`
375
1306
  <style>
376
1307
  :host {
377
1308
  display: block;
@@ -386,7 +1317,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
386
1317
  overflow: hidden;
387
1318
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
388
1319
  position: relative;
389
- ${a?"cursor: pointer;":""}
1320
+ ${o?"cursor: pointer;":""}
390
1321
  }
391
1322
 
392
1323
  .card::before {
@@ -397,7 +1328,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
397
1328
  pointer-events: none;
398
1329
  }
399
1330
 
400
- ${a?`
1331
+ ${o?`
401
1332
  .card:hover {
402
1333
  transform: translateY(-8px);
403
1334
  border-color: rgba(252, 209, 22, 0.4);
@@ -439,7 +1370,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
439
1370
  </style>
440
1371
 
441
1372
  <article class="card">
442
- ${o?`<img class="card-image" src="${o}" alt="" />`:""}
1373
+ ${r?`<img class="card-image" src="${r}" alt="" />`:""}
443
1374
  <div class="card-body">
444
1375
  <slot></slot>
445
1376
  </div>
@@ -449,7 +1380,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
449
1380
  </div>
450
1381
  `:""}
451
1382
  </article>
452
- `}};d("af-card",Ft);sa=Ft});function Yn(t){if(ut.has(t))return ut.get(t);let a=new Proxy(t,{get(o,l,b){let r=Reflect.get(o,l,b);if(r!==null&&typeof r==="object")return Yn(r);return r},set(o,l,b,r){let h=Reflect.get(o,l,r);if(h!==b){let f=Reflect.set(o,l,b,r);if(f)Ao(r,b,h,l);return f}return!0},deleteProperty(o,l){let b=Reflect.get(o,l),r=Reflect.deleteProperty(o,l);if(r){let h=ut.get(o);Ao(h,void 0,b,l)}return r}});return ut.set(t,a),a}function Dt(t,n){if(!Bt.has(t))Bt.set(t,new Set);let a=Bt.get(t);return a.add(n),()=>{a.delete(n)}}function Ao(t,n,a,o){let l=Bt.get(t);if(!l)return;l.forEach((b)=>{try{b(n,a,o)}catch(r){console.error("[AfriCode State] Subscriber error:",r)}})}class mo{constructor(){this.store={}}get(t){return t.split("/").reduce((n,a)=>n?.[a],this.store)}set(t,n){let a=t.split("/"),o=this.store;while(a.length>1){let l=a.shift();if(!o[l]||typeof o[l]!=="object")o[l]={};o=o[l]}o[a[0]]=n}getAll(){return this.store}}var Bt,ut,gr;var pt=A(()=>{Bt=new WeakMap,ut=new WeakMap;gr=new mo});var za,Ht;var Ot=A(()=>{pt();za={theme:"light",language:"en",ui:{sidebarCollapsed:!1,theme:"dark",activePage:"home"},user:{name:"Guest",permissions:[]},config:{animationsEnabled:!0,soundEnabled:!1}},Ht=Yn(za)});var xo={};H(xo,{default:()=>tl,AfriNavbar:()=>Wt});var Wt,tl;var ko=A(()=>{q();Ot();pt();Wt=class Wt extends c{static get observedAttributes(){return["theme","logo","sticky"]}constructor(){super();this._isOpen=!1,this._unsubscribe=null,this.render()}connectedCallback(){super.connectedCallback(),this.shadowRoot.querySelector(".menu-toggle")?.addEventListener("click",()=>{this._isOpen=!this._isOpen;let t=this.shadowRoot.querySelector(".nav-links"),n=this.shadowRoot.querySelector(".menu-toggle");if(t)t.classList.toggle("open",this._isOpen);if(n)n.classList.toggle("open",this._isOpen),n.setAttribute("aria-expanded",String(this._isOpen))})}disconnectedCallback(){if(this._unsubscribe)this._unsubscribe()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"dark",n=this.getAttribute("logo")||"AfriCode",a=this.hasAttribute("sticky");this.shadowRoot.innerHTML=`
1383
+ `}};f("af-card",nn);Ee=nn});function so(t){if(on.has(t))return on.get(t);let o=new Proxy(t,{get(r,a,e){let l=Reflect.get(r,a,e);if(l!==null&&typeof l==="object")return so(l);return l},set(r,a,e,l){let i=Reflect.get(r,a,l);if(i!==e){let c=Reflect.set(r,a,e,l);if(c)Lr(l,e,i,a);return c}return!0},deleteProperty(r,a){let e=Reflect.get(r,a),l=Reflect.deleteProperty(r,a);if(l){let i=on.get(r);Lr(i,void 0,e,a)}return l}});return on.set(t,o),o}function an(t,n){if(!rn.has(t))rn.set(t,new Set);let o=rn.get(t);return o.add(n),()=>{o.delete(n)}}function Lr(t,n,o,r){let a=rn.get(t);if(!a)return;a.forEach((e)=>{try{e(n,o,r)}catch(l){console.error("[AfriCode State] Subscriber error:",l)}})}class Mr{constructor(){this.store={}}get(t){return t.split("/").reduce((n,o)=>n?.[o],this.store)}set(t,n){let o=t.split("/"),r=this.store;while(o.length>1){let a=o.shift();if(!r[a]||typeof r[a]!=="object")r[a]={};r=r[a]}r[o[0]]=n}getAll(){return this.store}}var rn,on,ib;var Vt=s(()=>{rn=new WeakMap,on=new WeakMap;ib=new Mr});var Se,Nt;var en=s(()=>{Vt();Se={theme:"light",language:"en",ui:{sidebarCollapsed:!1,theme:"dark",activePage:"home"},user:{name:"Guest",permissions:[]},config:{animationsEnabled:!0,soundEnabled:!1}},Nt=so(Se)});var Er={};w(Er,{default:()=>Ye,AfriNavbar:()=>ln});var ln,Ye;var Sr=s(()=>{u();en();Vt();ln=class ln extends b{static get observedAttributes(){return["theme","logo","sticky"]}constructor(){super();this._isOpen=!1,this._unsubscribe=null,this.render()}connectedCallback(){super.connectedCallback(),this.shadowRoot.querySelector(".menu-toggle")?.addEventListener("click",()=>{this._isOpen=!this._isOpen;let t=this.shadowRoot.querySelector(".nav-links"),n=this.shadowRoot.querySelector(".menu-toggle");if(t)t.classList.toggle("open",this._isOpen);if(n)n.classList.toggle("open",this._isOpen),n.setAttribute("aria-expanded",String(this._isOpen))})}disconnectedCallback(){if(this._unsubscribe)this._unsubscribe()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"dark",n=this.getAttribute("logo")||"AfriCode",o=this.hasAttribute("sticky");this.shadowRoot.innerHTML=`
453
1384
  <style>
454
1385
  :host {
455
1386
  display: block;
@@ -625,7 +1556,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
625
1556
  <slot></slot>
626
1557
  </div>
627
1558
  </nav>
628
- `}};d("af-navbar",Wt);tl=Wt});var E,Sn,$,W=(t)=>{switch(typeof t){case"undefined":return $.undefined;case"string":return $.string;case"number":return Number.isNaN(t)?$.nan:$.number;case"boolean":return $.boolean;case"function":return $.function;case"bigint":return $.bigint;case"symbol":return $.symbol;case"object":if(Array.isArray(t))return $.array;if(t===null)return $.null;if(t.then&&typeof t.then==="function"&&t.catch&&typeof t.catch==="function")return $.promise;if(typeof Map<"u"&&t instanceof Map)return $.map;if(typeof Set<"u"&&t instanceof Set)return $.set;if(typeof Date<"u"&&t instanceof Date)return $.date;return $.object;default:return $.unknown}};var Et=A(()=>{(function(t){t.assertEqual=(l)=>{};function n(l){}t.assertIs=n;function a(l){throw Error()}t.assertNever=a,t.arrayToEnum=(l)=>{let b={};for(let r of l)b[r]=r;return b},t.getValidEnumValues=(l)=>{let b=t.objectKeys(l).filter((h)=>typeof l[l[h]]!=="number"),r={};for(let h of b)r[h]=l[h];return t.objectValues(r)},t.objectValues=(l)=>{return t.objectKeys(l).map(function(b){return l[b]})},t.objectKeys=typeof Object.keys==="function"?(l)=>Object.keys(l):(l)=>{let b=[];for(let r in l)if(Object.prototype.hasOwnProperty.call(l,r))b.push(r);return b},t.find=(l,b)=>{for(let r of l)if(b(r))return r;return},t.isInteger=typeof Number.isInteger==="function"?(l)=>Number.isInteger(l):(l)=>typeof l==="number"&&Number.isFinite(l)&&Math.floor(l)===l;function o(l,b=" | "){return l.map((r)=>typeof r==="string"?`'${r}'`:r).join(b)}t.joinValues=o,t.jsonStringifyReplacer=(l,b)=>{if(typeof b==="bigint")return b.toString();return b}})(E||(E={}));(function(t){t.mergeShapes=(n,a)=>{return{...n,...a}}})(Sn||(Sn={}));$=E.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var g,nl=(t)=>{return JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:")},G;var Ut=A(()=>{Et();g=E.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);G=class G extends Error{get errors(){return this.issues}constructor(t){super();this.issues=[],this.addIssue=(a)=>{this.issues=[...this.issues,a]},this.addIssues=(a=[])=>{this.issues=[...this.issues,...a]};let n=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,n);else this.__proto__=n;this.name="ZodError",this.issues=t}format(t){let n=t||function(l){return l.message},a={_errors:[]},o=(l)=>{for(let b of l.issues)if(b.code==="invalid_union")b.unionErrors.map(o);else if(b.code==="invalid_return_type")o(b.returnTypeError);else if(b.code==="invalid_arguments")o(b.argumentsError);else if(b.path.length===0)a._errors.push(n(b));else{let r=a,h=0;while(h<b.path.length){let f=b.path[h];if(h!==b.path.length-1)r[f]=r[f]||{_errors:[]};else r[f]=r[f]||{_errors:[]},r[f]._errors.push(n(b));r=r[f],h++}}};return o(this),a}static assert(t){if(!(t instanceof G))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,E.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=(n)=>n.message){let n={},a=[];for(let o of this.issues)if(o.path.length>0){let l=o.path[0];n[l]=n[l]||[],n[l].push(t(o))}else a.push(t(o));return{formErrors:a,fieldErrors:n}}get formErrors(){return this.flatten()}};G.create=(t)=>{return new G(t)}});var ol=(t,n)=>{let a;switch(t.code){case g.invalid_type:if(t.received===$.undefined)a="Required";else a=`Expected ${t.expected}, received ${t.received}`;break;case g.invalid_literal:a=`Invalid literal value, expected ${JSON.stringify(t.expected,E.jsonStringifyReplacer)}`;break;case g.unrecognized_keys:a=`Unrecognized key(s) in object: ${E.joinValues(t.keys,", ")}`;break;case g.invalid_union:a="Invalid input";break;case g.invalid_union_discriminator:a=`Invalid discriminator value. Expected ${E.joinValues(t.options)}`;break;case g.invalid_enum_value:a=`Invalid enum value. Expected ${E.joinValues(t.options)}, received '${t.received}'`;break;case g.invalid_arguments:a="Invalid function arguments";break;case g.invalid_return_type:a="Invalid function return type";break;case g.invalid_date:a="Invalid date";break;case g.invalid_string:if(typeof t.validation==="object")if("includes"in t.validation){if(a=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position==="number")a=`${a} at one or more positions greater than or equal to ${t.validation.position}`}else if("startsWith"in t.validation)a=`Invalid input: must start with "${t.validation.startsWith}"`;else if("endsWith"in t.validation)a=`Invalid input: must end with "${t.validation.endsWith}"`;else E.assertNever(t.validation);else if(t.validation!=="regex")a=`Invalid ${t.validation}`;else a="Invalid";break;case g.too_small:if(t.type==="array")a=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`;else if(t.type==="string")a=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`;else if(t.type==="number")a=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`;else if(t.type==="bigint")a=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`;else if(t.type==="date")a=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`;else a="Invalid input";break;case g.too_big:if(t.type==="array")a=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`;else if(t.type==="string")a=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`;else if(t.type==="number")a=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`;else if(t.type==="bigint")a=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`;else if(t.type==="date")a=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`;else a="Invalid input";break;case g.custom:a="Invalid input";break;case g.invalid_intersection_types:a="Intersection results could not be merged";break;case g.not_multiple_of:a=`Number must be a multiple of ${t.multipleOf}`;break;case g.not_finite:a="Number must be finite";break;default:a=n.defaultError,E.assertNever(t)}return{message:a}},j;var Ln=A(()=>{Ut();Et();j=ol});function al(t){qo=t}function ot(){return qo}var qo;var Vt=A(()=>{Ln();qo=j});function v(t,n){let a=ot(),o=Mt({issueData:n,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,a,a===j?void 0:j].filter((l)=>!!l)});t.common.issues.push(o)}class Q{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(t,n){let a=[];for(let o of n){if(o.status==="aborted")return m;if(o.status==="dirty")t.dirty();a.push(o.value)}return{status:t.value,value:a}}static async mergeObjectAsync(t,n){let a=[];for(let o of n){let l=await o.key,b=await o.value;a.push({key:l,value:b})}return Q.mergeObjectSync(t,a)}static mergeObjectSync(t,n){let a={};for(let o of n){let{key:l,value:b}=o;if(l.status==="aborted")return m;if(b.status==="aborted")return m;if(l.status==="dirty")t.dirty();if(b.status==="dirty")t.dirty();if(l.value!=="__proto__"&&(typeof b.value<"u"||o.alwaysSet))a[l.value]=b.value}return{status:t.value,value:a}}}var Mt=(t)=>{let{data:n,path:a,errorMaps:o,issueData:l}=t,b=[...a,...l.path||[]],r={...l,path:b};if(l.message!==void 0)return{...l,path:b,message:l.message};let h="",f=o.filter((_)=>!!_).slice().reverse();for(let _ of f)h=_(r,{data:n,defaultError:h}).message;return{...l,path:b,message:h}},ll,m,Z=(t)=>({status:"dirty",value:t}),J=(t)=>({status:"valid",value:t}),jt=(t)=>t.status==="aborted",et=(t)=>t.status==="dirty",I=(t)=>t.status==="valid",at=(t)=>typeof Promise<"u"&&t instanceof Promise;var Xn=A(()=>{Vt();Ln();ll=[];m=Object.freeze({status:"aborted"})});var po=()=>{};var i;var Ho=A(()=>{(function(t){t.errToObj=(n)=>typeof n==="string"?{message:n}:n||{},t.toString=(n)=>typeof n==="string"?n:n?.message})(i||(i={}))});class D{constructor(t,n,a,o){this._cachedPath=[],this.parent=t,this.data=n,this._path=a,this._key=o}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}function k(t){if(!t)return{};let{errorMap:n,invalid_type_error:a,required_error:o,description:l}=t;if(n&&(a||o))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(n)return{errorMap:n,description:l};return{errorMap:(r,h)=>{let{message:f}=t;if(r.code==="invalid_enum_value")return{message:f??h.defaultError};if(typeof h.data>"u")return{message:f??o??h.defaultError};if(r.code!=="invalid_type")return{message:h.defaultError};return{message:f??a??h.defaultError}},description:l}}class p{get description(){return this._def.description}_getType(t){return W(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:W(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Q,ctx:{common:t.parent.common,data:t.data,parsedType:W(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let n=this._parse(t);if(at(n))throw Error("Synchronous parse encountered promise.");return n}_parseAsync(t){let n=this._parse(t);return Promise.resolve(n)}parse(t,n){let a=this.safeParse(t,n);if(a.success)return a.data;throw a.error}safeParse(t,n){let a={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:W(t)},o=this._parseSync({data:t,path:a.path,parent:a});return Eo(a,o)}"~validate"(t){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:W(t)};if(!this["~standard"].async)try{let a=this._parseSync({data:t,path:[],parent:n});return I(a)?{value:a.value}:{issues:n.common.issues}}catch(a){if(a?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then((a)=>I(a)?{value:a.value}:{issues:n.common.issues})}async parseAsync(t,n){let a=await this.safeParseAsync(t,n);if(a.success)return a.data;throw a.error}async safeParseAsync(t,n){let a={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:W(t)},o=this._parse({data:t,path:a.path,parent:a}),l=await(at(o)?o:Promise.resolve(o));return Eo(a,l)}refine(t,n){let a=(o)=>{if(typeof n==="string"||typeof n>"u")return{message:n};else if(typeof n==="function")return n(o);else return n};return this._refinement((o,l)=>{let b=t(o),r=()=>l.addIssue({code:g.custom,...a(o)});if(typeof Promise<"u"&&b instanceof Promise)return b.then((h)=>{if(!h)return r(),!1;else return!0});if(!b)return r(),!1;else return!0})}refinement(t,n){return this._refinement((a,o)=>{if(!t(a))return o.addIssue(typeof n==="function"?n(a,o):n),!1;else return!0})}_refinement(t){return new O({schema:this,typeName:x.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(n)=>this["~validate"](n)}}optional(){return B.create(this,this._def)}nullable(){return N.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return u.create(this)}promise(){return nt.create(this,this._def)}or(t){return gt.create([this,t],this._def)}and(t){return ct.create(this,t,this._def)}transform(t){return new O({...k(this._def),schema:this,typeName:x.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let n=typeof t==="function"?t:()=>t;return new dt({...k(this._def),innerType:this,defaultValue:n,typeName:x.ZodDefault})}brand(){return new Kt({typeName:x.ZodBranded,type:this,...k(this._def)})}catch(t){let n=typeof t==="function"?t:()=>t;return new _t({...k(this._def),innerType:this,catchValue:n,typeName:x.ZodCatch})}describe(t){return new this.constructor({...this._def,description:t})}pipe(t){return Jt.create(this,t)}readonly(){return it.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function So(t){let n="[0-5]\\d";if(t.precision)n=`${n}\\.\\d{${t.precision}}`;else if(t.precision==null)n=`${n}(\\.\\d+)?`;let a=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${n})${a}`}function ql(t){return new RegExp(`^${So(t)}$`)}function Lo(t){let n=`${Yo}T${So(t)}`,a=[];if(a.push(t.local?"Z?":"Z"),t.offset)a.push("([+-]\\d{2}:?\\d{2})");return n=`${n}(${a.join("|")})`,new RegExp(`^${n}$`)}function pl(t,n){if((n==="v4"||!n)&&dl.test(t))return!0;if((n==="v6"||!n)&&il.test(t))return!0;return!1}function Hl(t,n){if(!cl.test(t))return!1;try{let[a]=t.split(".");if(!a)return!1;let o=a.replace(/-/g,"+").replace(/_/g,"/").padEnd(a.length+(4-a.length%4)%4,"="),l=JSON.parse(atob(o));if(typeof l!=="object"||l===null)return!1;if("typ"in l&&l?.typ!=="JWT")return!1;if(!l.alg)return!1;if(n&&l.alg!==n)return!1;return!0}catch{return!1}}function El(t,n){if((n==="v4"||!n)&&_l.test(t))return!0;if((n==="v6"||!n)&&Al.test(t))return!0;return!1}function Ml(t,n){let a=(t.toString().split(".")[1]||"").length,o=(n.toString().split(".")[1]||"").length,l=a>o?a:o,b=Number.parseInt(t.toFixed(l).replace(".","")),r=Number.parseInt(n.toFixed(l).replace(".",""));return b%r/10**l}function lt(t){if(t instanceof S){let n={};for(let a in t.shape){let o=t.shape[a];n[a]=B.create(lt(o))}return new S({...t._def,shape:()=>n})}else if(t instanceof u)return new u({...t._def,type:lt(t.element)});else if(t instanceof B)return B.create(lt(t.unwrap()));else if(t instanceof N)return N.create(lt(t.unwrap()));else if(t instanceof V)return V.create(t.items.map((n)=>lt(n)));else return t}function Jn(t,n){let a=W(t),o=W(n);if(t===n)return{valid:!0,data:t};else if(a===$.object&&o===$.object){let l=E.objectKeys(n),b=E.objectKeys(t).filter((h)=>l.indexOf(h)!==-1),r={...t,...n};for(let h of b){let f=Jn(t[h],n[h]);if(!f.valid)return{valid:!1};r[h]=f.data}return{valid:!0,data:r}}else if(a===$.array&&o===$.array){if(t.length!==n.length)return{valid:!1};let l=[];for(let b=0;b<t.length;b++){let r=t[b],h=n[b],f=Jn(r,h);if(!f.valid)return{valid:!1};l.push(f.data)}return{valid:!0,data:l}}else if(a===$.date&&o===$.date&&+t===+n)return{valid:!0,data:t};else return{valid:!1}}function Xo(t,n){return new y({values:t,typeName:x.ZodEnum,...k(n)})}function Mo(t,n){let a=typeof t==="function"?t(n):typeof t==="string"?{message:t}:t;return typeof a==="string"?{message:a}:a}function Qo(t,n={},a){if(t)return z.create().superRefine((o,l)=>{let b=t(o);if(b instanceof Promise)return b.then((r)=>{if(!r){let h=Mo(n,o),f=h.fatal??a??!0;l.addIssue({code:"custom",...h,fatal:f})}});if(!b){let r=Mo(n,o),h=r.fatal??a??!0;l.addIssue({code:"custom",...r,fatal:h})}return});return z.create()}var Eo=(t,n)=>{if(I(n))return{success:!0,data:n.value};else{if(!t.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let a=new G(t.common.issues);return this._error=a,this._error}}}},bl,rl,hl,fl,gl,cl,$l,vl,wl="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Qn,dl,_l,il,Al,ml,xl,Yo="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",kl,F,C,T,rt,s,Yt,ht,ft,z,P,U,St,u,S,gt,e=(t)=>{if(t instanceof $t)return e(t.schema);else if(t instanceof O)return e(t.innerType());else if(t instanceof vt)return[t.value];else if(t instanceof y)return t.options;else if(t instanceof wt)return E.objectValues(t.enum);else if(t instanceof dt)return e(t._def.innerType);else if(t instanceof ht)return[void 0];else if(t instanceof ft)return[null];else if(t instanceof B)return[void 0,...e(t.unwrap())];else if(t instanceof N)return[null,...e(t.unwrap())];else if(t instanceof Kt)return e(t.unwrap());else if(t instanceof it)return e(t.unwrap());else if(t instanceof _t)return e(t._def.innerType);else return[]},Nt,ct,V,Lt,Xt,tt,bt,$t,vt,y,wt,nt,O,B,N,dt,_t,Qt,Yl,Kt,Jt,it,Sl,x,Ll=(t,n={message:`Input not instance of ${t.name}`})=>Qo((a)=>a instanceof t,n),Jo,Go,Xl,Ql,Ro,Jl,Gl,Rl,Fl,ul,Bl,Dl,Ol,Wl,Ul,Vl,jl,el,Nl,Kl,Il,Pl,Cl,Tl,yl,Zl,sl,zl,tb,nb,ob,ab,lb,bb,rb=()=>Jo().optional(),hb=()=>Go().optional(),fb=()=>Ro().optional(),gb,cb;var Fo=A(()=>{Ut();Vt();Ho();Xn();Et();bl=/^c[^\s-]{8,}$/i,rl=/^[0-9a-z]+$/,hl=/^[0-9A-HJKMNP-TV-Z]{26}$/i,fl=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,gl=/^[a-z0-9_-]{21}$/i,cl=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,$l=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,vl=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,dl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,_l=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,il=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Al=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ml=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,xl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,kl=new RegExp(`^${Yo}$`);F=class F extends p{_parse(t){if(this._def.coerce)t.data=String(t.data);if(this._getType(t)!==$.string){let l=this._getOrReturnCtx(t);return v(l,{code:g.invalid_type,expected:$.string,received:l.parsedType}),m}let a=new Q,o=void 0;for(let l of this._def.checks)if(l.kind==="min"){if(t.data.length<l.value)o=this._getOrReturnCtx(t,o),v(o,{code:g.too_small,minimum:l.value,type:"string",inclusive:!0,exact:!1,message:l.message}),a.dirty()}else if(l.kind==="max"){if(t.data.length>l.value)o=this._getOrReturnCtx(t,o),v(o,{code:g.too_big,maximum:l.value,type:"string",inclusive:!0,exact:!1,message:l.message}),a.dirty()}else if(l.kind==="length"){let b=t.data.length>l.value,r=t.data.length<l.value;if(b||r){if(o=this._getOrReturnCtx(t,o),b)v(o,{code:g.too_big,maximum:l.value,type:"string",inclusive:!0,exact:!0,message:l.message});else if(r)v(o,{code:g.too_small,minimum:l.value,type:"string",inclusive:!0,exact:!0,message:l.message});a.dirty()}}else if(l.kind==="email"){if(!vl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"email",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="emoji"){if(!Qn)Qn=new RegExp(wl,"u");if(!Qn.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"emoji",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="uuid"){if(!fl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"uuid",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="nanoid"){if(!gl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"nanoid",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="cuid"){if(!bl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"cuid",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="cuid2"){if(!rl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"cuid2",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="ulid"){if(!hl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"ulid",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="url")try{new URL(t.data)}catch{o=this._getOrReturnCtx(t,o),v(o,{validation:"url",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="regex"){if(l.regex.lastIndex=0,!l.regex.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"regex",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="trim")t.data=t.data.trim();else if(l.kind==="includes"){if(!t.data.includes(l.value,l.position))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:{includes:l.value,position:l.position},message:l.message}),a.dirty()}else if(l.kind==="toLowerCase")t.data=t.data.toLowerCase();else if(l.kind==="toUpperCase")t.data=t.data.toUpperCase();else if(l.kind==="startsWith"){if(!t.data.startsWith(l.value))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:{startsWith:l.value},message:l.message}),a.dirty()}else if(l.kind==="endsWith"){if(!t.data.endsWith(l.value))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:{endsWith:l.value},message:l.message}),a.dirty()}else if(l.kind==="datetime"){if(!Lo(l).test(t.data))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:"datetime",message:l.message}),a.dirty()}else if(l.kind==="date"){if(!kl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:"date",message:l.message}),a.dirty()}else if(l.kind==="time"){if(!ql(l).test(t.data))o=this._getOrReturnCtx(t,o),v(o,{code:g.invalid_string,validation:"time",message:l.message}),a.dirty()}else if(l.kind==="duration"){if(!$l.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"duration",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="ip"){if(!pl(t.data,l.version))o=this._getOrReturnCtx(t,o),v(o,{validation:"ip",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="jwt"){if(!Hl(t.data,l.alg))o=this._getOrReturnCtx(t,o),v(o,{validation:"jwt",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="cidr"){if(!El(t.data,l.version))o=this._getOrReturnCtx(t,o),v(o,{validation:"cidr",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="base64"){if(!ml.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"base64",code:g.invalid_string,message:l.message}),a.dirty()}else if(l.kind==="base64url"){if(!xl.test(t.data))o=this._getOrReturnCtx(t,o),v(o,{validation:"base64url",code:g.invalid_string,message:l.message}),a.dirty()}else E.assertNever(l);return{status:a.value,value:t.data}}_regex(t,n,a){return this.refinement((o)=>t.test(o),{validation:n,code:g.invalid_string,...i.errToObj(a)})}_addCheck(t){return new F({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...i.errToObj(t)})}url(t){return this._addCheck({kind:"url",...i.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...i.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...i.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...i.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...i.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...i.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...i.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...i.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...i.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...i.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...i.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...i.errToObj(t)})}datetime(t){if(typeof t==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t});return this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...i.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){if(typeof t==="string")return this._addCheck({kind:"time",precision:null,message:t});return this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...i.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...i.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...i.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...i.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...i.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...i.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...i.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...i.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...i.errToObj(n)})}nonempty(t){return this.min(1,i.errToObj(t))}trim(){return new F({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new F({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new F({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((t)=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find((t)=>t.kind==="date")}get isTime(){return!!this._def.checks.find((t)=>t.kind==="time")}get isDuration(){return!!this._def.checks.find((t)=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find((t)=>t.kind==="email")}get isURL(){return!!this._def.checks.find((t)=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find((t)=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find((t)=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((t)=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((t)=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((t)=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find((t)=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find((t)=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find((t)=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find((t)=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find((t)=>t.kind==="base64url")}get minLength(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxLength(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}};F.create=(t)=>{return new F({checks:[],typeName:x.ZodString,coerce:t?.coerce??!1,...k(t)})};C=class C extends p{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce)t.data=Number(t.data);if(this._getType(t)!==$.number){let l=this._getOrReturnCtx(t);return v(l,{code:g.invalid_type,expected:$.number,received:l.parsedType}),m}let a=void 0,o=new Q;for(let l of this._def.checks)if(l.kind==="int"){if(!E.isInteger(t.data))a=this._getOrReturnCtx(t,a),v(a,{code:g.invalid_type,expected:"integer",received:"float",message:l.message}),o.dirty()}else if(l.kind==="min"){if(l.inclusive?t.data<l.value:t.data<=l.value)a=this._getOrReturnCtx(t,a),v(a,{code:g.too_small,minimum:l.value,type:"number",inclusive:l.inclusive,exact:!1,message:l.message}),o.dirty()}else if(l.kind==="max"){if(l.inclusive?t.data>l.value:t.data>=l.value)a=this._getOrReturnCtx(t,a),v(a,{code:g.too_big,maximum:l.value,type:"number",inclusive:l.inclusive,exact:!1,message:l.message}),o.dirty()}else if(l.kind==="multipleOf"){if(Ml(t.data,l.value)!==0)a=this._getOrReturnCtx(t,a),v(a,{code:g.not_multiple_of,multipleOf:l.value,message:l.message}),o.dirty()}else if(l.kind==="finite"){if(!Number.isFinite(t.data))a=this._getOrReturnCtx(t,a),v(a,{code:g.not_finite,message:l.message}),o.dirty()}else E.assertNever(l);return{status:o.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,i.toString(n))}gt(t,n){return this.setLimit("min",t,!1,i.toString(n))}lte(t,n){return this.setLimit("max",t,!0,i.toString(n))}lt(t,n){return this.setLimit("max",t,!1,i.toString(n))}setLimit(t,n,a,o){return new C({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:a,message:i.toString(o)}]})}_addCheck(t){return new C({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:i.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:i.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:i.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:i.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:i.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:i.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:i.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:i.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:i.toString(t)})}get minValue(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxValue(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}get isInt(){return!!this._def.checks.find((t)=>t.kind==="int"||t.kind==="multipleOf"&&E.isInteger(t.value))}get isFinite(){let t=null,n=null;for(let a of this._def.checks)if(a.kind==="finite"||a.kind==="int"||a.kind==="multipleOf")return!0;else if(a.kind==="min"){if(n===null||a.value>n)n=a.value}else if(a.kind==="max"){if(t===null||a.value<t)t=a.value}return Number.isFinite(n)&&Number.isFinite(t)}};C.create=(t)=>{return new C({checks:[],typeName:x.ZodNumber,coerce:t?.coerce||!1,...k(t)})};T=class T extends p{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==$.bigint)return this._getInvalidInput(t);let a=void 0,o=new Q;for(let l of this._def.checks)if(l.kind==="min"){if(l.inclusive?t.data<l.value:t.data<=l.value)a=this._getOrReturnCtx(t,a),v(a,{code:g.too_small,type:"bigint",minimum:l.value,inclusive:l.inclusive,message:l.message}),o.dirty()}else if(l.kind==="max"){if(l.inclusive?t.data>l.value:t.data>=l.value)a=this._getOrReturnCtx(t,a),v(a,{code:g.too_big,type:"bigint",maximum:l.value,inclusive:l.inclusive,message:l.message}),o.dirty()}else if(l.kind==="multipleOf"){if(t.data%l.value!==BigInt(0))a=this._getOrReturnCtx(t,a),v(a,{code:g.not_multiple_of,multipleOf:l.value,message:l.message}),o.dirty()}else E.assertNever(l);return{status:o.value,value:t.data}}_getInvalidInput(t){let n=this._getOrReturnCtx(t);return v(n,{code:g.invalid_type,expected:$.bigint,received:n.parsedType}),m}gte(t,n){return this.setLimit("min",t,!0,i.toString(n))}gt(t,n){return this.setLimit("min",t,!1,i.toString(n))}lte(t,n){return this.setLimit("max",t,!0,i.toString(n))}lt(t,n){return this.setLimit("max",t,!1,i.toString(n))}setLimit(t,n,a,o){return new T({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:a,message:i.toString(o)}]})}_addCheck(t){return new T({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:i.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:i.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:i.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:i.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:i.toString(n)})}get minValue(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxValue(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}};T.create=(t)=>{return new T({checks:[],typeName:x.ZodBigInt,coerce:t?.coerce??!1,...k(t)})};rt=class rt extends p{_parse(t){if(this._def.coerce)t.data=Boolean(t.data);if(this._getType(t)!==$.boolean){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.boolean,received:a.parsedType}),m}return J(t.data)}};rt.create=(t)=>{return new rt({typeName:x.ZodBoolean,coerce:t?.coerce||!1,...k(t)})};s=class s extends p{_parse(t){if(this._def.coerce)t.data=new Date(t.data);if(this._getType(t)!==$.date){let l=this._getOrReturnCtx(t);return v(l,{code:g.invalid_type,expected:$.date,received:l.parsedType}),m}if(Number.isNaN(t.data.getTime())){let l=this._getOrReturnCtx(t);return v(l,{code:g.invalid_date}),m}let a=new Q,o=void 0;for(let l of this._def.checks)if(l.kind==="min"){if(t.data.getTime()<l.value)o=this._getOrReturnCtx(t,o),v(o,{code:g.too_small,message:l.message,inclusive:!0,exact:!1,minimum:l.value,type:"date"}),a.dirty()}else if(l.kind==="max"){if(t.data.getTime()>l.value)o=this._getOrReturnCtx(t,o),v(o,{code:g.too_big,message:l.message,inclusive:!0,exact:!1,maximum:l.value,type:"date"}),a.dirty()}else E.assertNever(l);return{status:a.value,value:new Date(t.data.getTime())}}_addCheck(t){return new s({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:i.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:i.toString(n)})}get minDate(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t!=null?new Date(t):null}get maxDate(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t!=null?new Date(t):null}};s.create=(t)=>{return new s({checks:[],coerce:t?.coerce||!1,typeName:x.ZodDate,...k(t)})};Yt=class Yt extends p{_parse(t){if(this._getType(t)!==$.symbol){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.symbol,received:a.parsedType}),m}return J(t.data)}};Yt.create=(t)=>{return new Yt({typeName:x.ZodSymbol,...k(t)})};ht=class ht extends p{_parse(t){if(this._getType(t)!==$.undefined){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.undefined,received:a.parsedType}),m}return J(t.data)}};ht.create=(t)=>{return new ht({typeName:x.ZodUndefined,...k(t)})};ft=class ft extends p{_parse(t){if(this._getType(t)!==$.null){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.null,received:a.parsedType}),m}return J(t.data)}};ft.create=(t)=>{return new ft({typeName:x.ZodNull,...k(t)})};z=class z extends p{constructor(){super(...arguments);this._any=!0}_parse(t){return J(t.data)}};z.create=(t)=>{return new z({typeName:x.ZodAny,...k(t)})};P=class P extends p{constructor(){super(...arguments);this._unknown=!0}_parse(t){return J(t.data)}};P.create=(t)=>{return new P({typeName:x.ZodUnknown,...k(t)})};U=class U extends p{_parse(t){let n=this._getOrReturnCtx(t);return v(n,{code:g.invalid_type,expected:$.never,received:n.parsedType}),m}};U.create=(t)=>{return new U({typeName:x.ZodNever,...k(t)})};St=class St extends p{_parse(t){if(this._getType(t)!==$.undefined){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.void,received:a.parsedType}),m}return J(t.data)}};St.create=(t)=>{return new St({typeName:x.ZodVoid,...k(t)})};u=class u extends p{_parse(t){let{ctx:n,status:a}=this._processInputParams(t),o=this._def;if(n.parsedType!==$.array)return v(n,{code:g.invalid_type,expected:$.array,received:n.parsedType}),m;if(o.exactLength!==null){let b=n.data.length>o.exactLength.value,r=n.data.length<o.exactLength.value;if(b||r)v(n,{code:b?g.too_big:g.too_small,minimum:r?o.exactLength.value:void 0,maximum:b?o.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:o.exactLength.message}),a.dirty()}if(o.minLength!==null){if(n.data.length<o.minLength.value)v(n,{code:g.too_small,minimum:o.minLength.value,type:"array",inclusive:!0,exact:!1,message:o.minLength.message}),a.dirty()}if(o.maxLength!==null){if(n.data.length>o.maxLength.value)v(n,{code:g.too_big,maximum:o.maxLength.value,type:"array",inclusive:!0,exact:!1,message:o.maxLength.message}),a.dirty()}if(n.common.async)return Promise.all([...n.data].map((b,r)=>{return o.type._parseAsync(new D(n,b,n.path,r))})).then((b)=>{return Q.mergeArray(a,b)});let l=[...n.data].map((b,r)=>{return o.type._parseSync(new D(n,b,n.path,r))});return Q.mergeArray(a,l)}get element(){return this._def.type}min(t,n){return new u({...this._def,minLength:{value:t,message:i.toString(n)}})}max(t,n){return new u({...this._def,maxLength:{value:t,message:i.toString(n)}})}length(t,n){return new u({...this._def,exactLength:{value:t,message:i.toString(n)}})}nonempty(t){return this.min(1,t)}};u.create=(t,n)=>{return new u({type:t,minLength:null,maxLength:null,exactLength:null,typeName:x.ZodArray,...k(n)})};S=class S extends p{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),n=E.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==$.object){let f=this._getOrReturnCtx(t);return v(f,{code:g.invalid_type,expected:$.object,received:f.parsedType}),m}let{status:a,ctx:o}=this._processInputParams(t),{shape:l,keys:b}=this._getCached(),r=[];if(!(this._def.catchall instanceof U&&this._def.unknownKeys==="strip")){for(let f in o.data)if(!b.includes(f))r.push(f)}let h=[];for(let f of b){let _=l[f],M=o.data[f];h.push({key:{status:"valid",value:f},value:_._parse(new D(o,M,o.path,f)),alwaysSet:f in o.data})}if(this._def.catchall instanceof U){let f=this._def.unknownKeys;if(f==="passthrough")for(let _ of r)h.push({key:{status:"valid",value:_},value:{status:"valid",value:o.data[_]}});else if(f==="strict"){if(r.length>0)v(o,{code:g.unrecognized_keys,keys:r}),a.dirty()}else if(f==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let f=this._def.catchall;for(let _ of r){let M=o.data[_];h.push({key:{status:"valid",value:_},value:f._parse(new D(o,M,o.path,_)),alwaysSet:_ in o.data})}}if(o.common.async)return Promise.resolve().then(async()=>{let f=[];for(let _ of h){let M=await _.key,X=await _.value;f.push({key:M,value:X,alwaysSet:_.alwaysSet})}return f}).then((f)=>{return Q.mergeObjectSync(a,f)});else return Q.mergeObjectSync(a,h)}get shape(){return this._def.shape()}strict(t){return i.errToObj,new S({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,a)=>{let o=this._def.errorMap?.(n,a).message??a.defaultError;if(n.code==="unrecognized_keys")return{message:i.errToObj(t).message??o};return{message:o}}}:{}})}strip(){return new S({...this._def,unknownKeys:"strip"})}passthrough(){return new S({...this._def,unknownKeys:"passthrough"})}extend(t){return new S({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new S({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:x.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new S({...this._def,catchall:t})}pick(t){let n={};for(let a of E.objectKeys(t))if(t[a]&&this.shape[a])n[a]=this.shape[a];return new S({...this._def,shape:()=>n})}omit(t){let n={};for(let a of E.objectKeys(this.shape))if(!t[a])n[a]=this.shape[a];return new S({...this._def,shape:()=>n})}deepPartial(){return lt(this)}partial(t){let n={};for(let a of E.objectKeys(this.shape)){let o=this.shape[a];if(t&&!t[a])n[a]=o;else n[a]=o.optional()}return new S({...this._def,shape:()=>n})}required(t){let n={};for(let a of E.objectKeys(this.shape))if(t&&!t[a])n[a]=this.shape[a];else{let l=this.shape[a];while(l instanceof B)l=l._def.innerType;n[a]=l}return new S({...this._def,shape:()=>n})}keyof(){return Xo(E.objectKeys(this.shape))}};S.create=(t,n)=>{return new S({shape:()=>t,unknownKeys:"strip",catchall:U.create(),typeName:x.ZodObject,...k(n)})};S.strictCreate=(t,n)=>{return new S({shape:()=>t,unknownKeys:"strict",catchall:U.create(),typeName:x.ZodObject,...k(n)})};S.lazycreate=(t,n)=>{return new S({shape:t,unknownKeys:"strip",catchall:U.create(),typeName:x.ZodObject,...k(n)})};gt=class gt extends p{_parse(t){let{ctx:n}=this._processInputParams(t),a=this._def.options;function o(l){for(let r of l)if(r.result.status==="valid")return r.result;for(let r of l)if(r.result.status==="dirty")return n.common.issues.push(...r.ctx.common.issues),r.result;let b=l.map((r)=>new G(r.ctx.common.issues));return v(n,{code:g.invalid_union,unionErrors:b}),m}if(n.common.async)return Promise.all(a.map(async(l)=>{let b={...n,common:{...n.common,issues:[]},parent:null};return{result:await l._parseAsync({data:n.data,path:n.path,parent:b}),ctx:b}})).then(o);else{let l=void 0,b=[];for(let h of a){let f={...n,common:{...n.common,issues:[]},parent:null},_=h._parseSync({data:n.data,path:n.path,parent:f});if(_.status==="valid")return _;else if(_.status==="dirty"&&!l)l={result:_,ctx:f};if(f.common.issues.length)b.push(f.common.issues)}if(l)return n.common.issues.push(...l.ctx.common.issues),l.result;let r=b.map((h)=>new G(h));return v(n,{code:g.invalid_union,unionErrors:r}),m}}get options(){return this._def.options}};gt.create=(t,n)=>{return new gt({options:t,typeName:x.ZodUnion,...k(n)})};Nt=class Nt extends p{_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==$.object)return v(n,{code:g.invalid_type,expected:$.object,received:n.parsedType}),m;let a=this.discriminator,o=n.data[a],l=this.optionsMap.get(o);if(!l)return v(n,{code:g.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[a]}),m;if(n.common.async)return l._parseAsync({data:n.data,path:n.path,parent:n});else return l._parseSync({data:n.data,path:n.path,parent:n})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,a){let o=new Map;for(let l of n){let b=e(l.shape[t]);if(!b.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of b){if(o.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);o.set(r,l)}}return new Nt({typeName:x.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:o,...k(a)})}};ct=class ct extends p{_parse(t){let{status:n,ctx:a}=this._processInputParams(t),o=(l,b)=>{if(jt(l)||jt(b))return m;let r=Jn(l.value,b.value);if(!r.valid)return v(a,{code:g.invalid_intersection_types}),m;if(et(l)||et(b))n.dirty();return{status:n.value,value:r.data}};if(a.common.async)return Promise.all([this._def.left._parseAsync({data:a.data,path:a.path,parent:a}),this._def.right._parseAsync({data:a.data,path:a.path,parent:a})]).then(([l,b])=>o(l,b));else return o(this._def.left._parseSync({data:a.data,path:a.path,parent:a}),this._def.right._parseSync({data:a.data,path:a.path,parent:a}))}};ct.create=(t,n,a)=>{return new ct({left:t,right:n,typeName:x.ZodIntersection,...k(a)})};V=class V extends p{_parse(t){let{status:n,ctx:a}=this._processInputParams(t);if(a.parsedType!==$.array)return v(a,{code:g.invalid_type,expected:$.array,received:a.parsedType}),m;if(a.data.length<this._def.items.length)return v(a,{code:g.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),m;if(!this._def.rest&&a.data.length>this._def.items.length)v(a,{code:g.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty();let l=[...a.data].map((b,r)=>{let h=this._def.items[r]||this._def.rest;if(!h)return null;return h._parse(new D(a,b,a.path,r))}).filter((b)=>!!b);if(a.common.async)return Promise.all(l).then((b)=>{return Q.mergeArray(n,b)});else return Q.mergeArray(n,l)}get items(){return this._def.items}rest(t){return new V({...this._def,rest:t})}};V.create=(t,n)=>{if(!Array.isArray(t))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new V({items:t,typeName:x.ZodTuple,rest:null,...k(n)})};Lt=class Lt extends p{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:a}=this._processInputParams(t);if(a.parsedType!==$.object)return v(a,{code:g.invalid_type,expected:$.object,received:a.parsedType}),m;let o=[],l=this._def.keyType,b=this._def.valueType;for(let r in a.data)o.push({key:l._parse(new D(a,r,a.path,r)),value:b._parse(new D(a,a.data[r],a.path,r)),alwaysSet:r in a.data});if(a.common.async)return Q.mergeObjectAsync(n,o);else return Q.mergeObjectSync(n,o)}get element(){return this._def.valueType}static create(t,n,a){if(n instanceof p)return new Lt({keyType:t,valueType:n,typeName:x.ZodRecord,...k(a)});return new Lt({keyType:F.create(),valueType:t,typeName:x.ZodRecord,...k(n)})}};Xt=class Xt extends p{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:a}=this._processInputParams(t);if(a.parsedType!==$.map)return v(a,{code:g.invalid_type,expected:$.map,received:a.parsedType}),m;let o=this._def.keyType,l=this._def.valueType,b=[...a.data.entries()].map(([r,h],f)=>{return{key:o._parse(new D(a,r,a.path,[f,"key"])),value:l._parse(new D(a,h,a.path,[f,"value"]))}});if(a.common.async){let r=new Map;return Promise.resolve().then(async()=>{for(let h of b){let f=await h.key,_=await h.value;if(f.status==="aborted"||_.status==="aborted")return m;if(f.status==="dirty"||_.status==="dirty")n.dirty();r.set(f.value,_.value)}return{status:n.value,value:r}})}else{let r=new Map;for(let h of b){let{key:f,value:_}=h;if(f.status==="aborted"||_.status==="aborted")return m;if(f.status==="dirty"||_.status==="dirty")n.dirty();r.set(f.value,_.value)}return{status:n.value,value:r}}}};Xt.create=(t,n,a)=>{return new Xt({valueType:n,keyType:t,typeName:x.ZodMap,...k(a)})};tt=class tt extends p{_parse(t){let{status:n,ctx:a}=this._processInputParams(t);if(a.parsedType!==$.set)return v(a,{code:g.invalid_type,expected:$.set,received:a.parsedType}),m;let o=this._def;if(o.minSize!==null){if(a.data.size<o.minSize.value)v(a,{code:g.too_small,minimum:o.minSize.value,type:"set",inclusive:!0,exact:!1,message:o.minSize.message}),n.dirty()}if(o.maxSize!==null){if(a.data.size>o.maxSize.value)v(a,{code:g.too_big,maximum:o.maxSize.value,type:"set",inclusive:!0,exact:!1,message:o.maxSize.message}),n.dirty()}let l=this._def.valueType;function b(h){let f=new Set;for(let _ of h){if(_.status==="aborted")return m;if(_.status==="dirty")n.dirty();f.add(_.value)}return{status:n.value,value:f}}let r=[...a.data.values()].map((h,f)=>l._parse(new D(a,h,a.path,f)));if(a.common.async)return Promise.all(r).then((h)=>b(h));else return b(r)}min(t,n){return new tt({...this._def,minSize:{value:t,message:i.toString(n)}})}max(t,n){return new tt({...this._def,maxSize:{value:t,message:i.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}};tt.create=(t,n)=>{return new tt({valueType:t,minSize:null,maxSize:null,typeName:x.ZodSet,...k(n)})};bt=class bt extends p{constructor(){super(...arguments);this.validate=this.implement}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==$.function)return v(n,{code:g.invalid_type,expected:$.function,received:n.parsedType}),m;function a(r,h){return Mt({data:r,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,ot(),j].filter((f)=>!!f),issueData:{code:g.invalid_arguments,argumentsError:h}})}function o(r,h){return Mt({data:r,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,ot(),j].filter((f)=>!!f),issueData:{code:g.invalid_return_type,returnTypeError:h}})}let l={errorMap:n.common.contextualErrorMap},b=n.data;if(this._def.returns instanceof nt){let r=this;return J(async function(...h){let f=new G([]),_=await r._def.args.parseAsync(h,l).catch((L)=>{throw f.addIssue(a(h,L)),f}),M=await Reflect.apply(b,this,_);return await r._def.returns._def.type.parseAsync(M,l).catch((L)=>{throw f.addIssue(o(M,L)),f})})}else{let r=this;return J(function(...h){let f=r._def.args.safeParse(h,l);if(!f.success)throw new G([a(h,f.error)]);let _=Reflect.apply(b,this,f.data),M=r._def.returns.safeParse(_,l);if(!M.success)throw new G([o(_,M.error)]);return M.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new bt({...this._def,args:V.create(t).rest(P.create())})}returns(t){return new bt({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,a){return new bt({args:t?t:V.create([]).rest(P.create()),returns:n||P.create(),typeName:x.ZodFunction,...k(a)})}};$t=class $t extends p{get schema(){return this._def.getter()}_parse(t){let{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};$t.create=(t,n)=>{return new $t({getter:t,typeName:x.ZodLazy,...k(n)})};vt=class vt extends p{_parse(t){if(t.data!==this._def.value){let n=this._getOrReturnCtx(t);return v(n,{received:n.data,code:g.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:t.data}}get value(){return this._def.value}};vt.create=(t,n)=>{return new vt({value:t,typeName:x.ZodLiteral,...k(n)})};y=class y extends p{_parse(t){if(typeof t.data!=="string"){let n=this._getOrReturnCtx(t),a=this._def.values;return v(n,{expected:E.joinValues(a),received:n.parsedType,code:g.invalid_type}),m}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(t.data)){let n=this._getOrReturnCtx(t),a=this._def.values;return v(n,{received:n.data,code:g.invalid_enum_value,options:a}),m}return J(t.data)}get options(){return this._def.values}get enum(){let t={};for(let n of this._def.values)t[n]=n;return t}get Values(){let t={};for(let n of this._def.values)t[n]=n;return t}get Enum(){let t={};for(let n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return y.create(t,{...this._def,...n})}exclude(t,n=this._def){return y.create(this.options.filter((a)=>!t.includes(a)),{...this._def,...n})}};y.create=Xo;wt=class wt extends p{_parse(t){let n=E.getValidEnumValues(this._def.values),a=this._getOrReturnCtx(t);if(a.parsedType!==$.string&&a.parsedType!==$.number){let o=E.objectValues(n);return v(a,{expected:E.joinValues(o),received:a.parsedType,code:g.invalid_type}),m}if(!this._cache)this._cache=new Set(E.getValidEnumValues(this._def.values));if(!this._cache.has(t.data)){let o=E.objectValues(n);return v(a,{received:a.data,code:g.invalid_enum_value,options:o}),m}return J(t.data)}get enum(){return this._def.values}};wt.create=(t,n)=>{return new wt({values:t,typeName:x.ZodNativeEnum,...k(n)})};nt=class nt extends p{unwrap(){return this._def.type}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==$.promise&&n.common.async===!1)return v(n,{code:g.invalid_type,expected:$.promise,received:n.parsedType}),m;let a=n.parsedType===$.promise?n.data:Promise.resolve(n.data);return J(a.then((o)=>{return this._def.type.parseAsync(o,{path:n.path,errorMap:n.common.contextualErrorMap})}))}};nt.create=(t,n)=>{return new nt({type:t,typeName:x.ZodPromise,...k(n)})};O=class O extends p{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===x.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:n,ctx:a}=this._processInputParams(t),o=this._def.effect||null,l={addIssue:(b)=>{if(v(a,b),b.fatal)n.abort();else n.dirty()},get path(){return a.path}};if(l.addIssue=l.addIssue.bind(l),o.type==="preprocess"){let b=o.transform(a.data,l);if(a.common.async)return Promise.resolve(b).then(async(r)=>{if(n.value==="aborted")return m;let h=await this._def.schema._parseAsync({data:r,path:a.path,parent:a});if(h.status==="aborted")return m;if(h.status==="dirty")return Z(h.value);if(n.value==="dirty")return Z(h.value);return h});else{if(n.value==="aborted")return m;let r=this._def.schema._parseSync({data:b,path:a.path,parent:a});if(r.status==="aborted")return m;if(r.status==="dirty")return Z(r.value);if(n.value==="dirty")return Z(r.value);return r}}if(o.type==="refinement"){let b=(r)=>{let h=o.refinement(r,l);if(a.common.async)return Promise.resolve(h);if(h instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return r};if(a.common.async===!1){let r=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(r.status==="aborted")return m;if(r.status==="dirty")n.dirty();return b(r.value),{status:n.value,value:r.value}}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then((r)=>{if(r.status==="aborted")return m;if(r.status==="dirty")n.dirty();return b(r.value).then(()=>{return{status:n.value,value:r.value}})})}if(o.type==="transform")if(a.common.async===!1){let b=this._def.schema._parseSync({data:a.data,path:a.path,parent:a});if(!I(b))return m;let r=o.transform(b.value,l);if(r instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:r}}else return this._def.schema._parseAsync({data:a.data,path:a.path,parent:a}).then((b)=>{if(!I(b))return m;return Promise.resolve(o.transform(b.value,l)).then((r)=>({status:n.value,value:r}))});E.assertNever(o)}};O.create=(t,n,a)=>{return new O({schema:t,typeName:x.ZodEffects,effect:n,...k(a)})};O.createWithPreprocess=(t,n,a)=>{return new O({schema:n,effect:{type:"preprocess",transform:t},typeName:x.ZodEffects,...k(a)})};B=class B extends p{_parse(t){if(this._getType(t)===$.undefined)return J(void 0);return this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};B.create=(t,n)=>{return new B({innerType:t,typeName:x.ZodOptional,...k(n)})};N=class N extends p{_parse(t){if(this._getType(t)===$.null)return J(null);return this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};N.create=(t,n)=>{return new N({innerType:t,typeName:x.ZodNullable,...k(n)})};dt=class dt extends p{_parse(t){let{ctx:n}=this._processInputParams(t),a=n.data;if(n.parsedType===$.undefined)a=this._def.defaultValue();return this._def.innerType._parse({data:a,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};dt.create=(t,n)=>{return new dt({innerType:t,typeName:x.ZodDefault,defaultValue:typeof n.default==="function"?n.default:()=>n.default,...k(n)})};_t=class _t extends p{_parse(t){let{ctx:n}=this._processInputParams(t),a={...n,common:{...n.common,issues:[]}},o=this._def.innerType._parse({data:a.data,path:a.path,parent:{...a}});if(at(o))return o.then((l)=>{return{status:"valid",value:l.status==="valid"?l.value:this._def.catchValue({get error(){return new G(a.common.issues)},input:a.data})}});else return{status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new G(a.common.issues)},input:a.data})}}removeCatch(){return this._def.innerType}};_t.create=(t,n)=>{return new _t({innerType:t,typeName:x.ZodCatch,catchValue:typeof n.catch==="function"?n.catch:()=>n.catch,...k(n)})};Qt=class Qt extends p{_parse(t){if(this._getType(t)!==$.nan){let a=this._getOrReturnCtx(t);return v(a,{code:g.invalid_type,expected:$.nan,received:a.parsedType}),m}return{status:"valid",value:t.data}}};Qt.create=(t)=>{return new Qt({typeName:x.ZodNaN,...k(t)})};Yl=Symbol("zod_brand");Kt=class Kt extends p{_parse(t){let{ctx:n}=this._processInputParams(t),a=n.data;return this._def.type._parse({data:a,path:n.path,parent:n})}unwrap(){return this._def.type}};Jt=class Jt extends p{_parse(t){let{status:n,ctx:a}=this._processInputParams(t);if(a.common.async)return(async()=>{let l=await this._def.in._parseAsync({data:a.data,path:a.path,parent:a});if(l.status==="aborted")return m;if(l.status==="dirty")return n.dirty(),Z(l.value);else return this._def.out._parseAsync({data:l.value,path:a.path,parent:a})})();else{let o=this._def.in._parseSync({data:a.data,path:a.path,parent:a});if(o.status==="aborted")return m;if(o.status==="dirty")return n.dirty(),{status:"dirty",value:o.value};else return this._def.out._parseSync({data:o.value,path:a.path,parent:a})}}static create(t,n){return new Jt({in:t,out:n,typeName:x.ZodPipeline})}};it=class it extends p{_parse(t){let n=this._def.innerType._parse(t),a=(o)=>{if(I(o))o.value=Object.freeze(o.value);return o};return at(n)?n.then((o)=>a(o)):a(n)}unwrap(){return this._def.innerType}};it.create=(t,n)=>{return new it({innerType:t,typeName:x.ZodReadonly,...k(n)})};Sl={object:S.lazycreate};(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(x||(x={}));Jo=F.create,Go=C.create,Xl=Qt.create,Ql=T.create,Ro=rt.create,Jl=s.create,Gl=Yt.create,Rl=ht.create,Fl=ft.create,ul=z.create,Bl=P.create,Dl=U.create,Ol=St.create,Wl=u.create,Ul=S.create,Vl=S.strictCreate,jl=gt.create,el=Nt.create,Nl=ct.create,Kl=V.create,Il=Lt.create,Pl=Xt.create,Cl=tt.create,Tl=bt.create,yl=$t.create,Zl=vt.create,sl=y.create,zl=wt.create,tb=nt.create,nb=O.create,ob=B.create,ab=N.create,lb=O.createWithPreprocess,bb=Jt.create,gb={string:(t)=>F.create({...t,coerce:!0}),number:(t)=>C.create({...t,coerce:!0}),boolean:(t)=>rt.create({...t,coerce:!0}),bigint:(t)=>T.create({...t,coerce:!0}),date:(t)=>s.create({...t,coerce:!0})},cb=m});var w={};H(w,{void:()=>Ol,util:()=>E,unknown:()=>Bl,union:()=>jl,undefined:()=>Rl,tuple:()=>Kl,transformer:()=>nb,symbol:()=>Gl,string:()=>Jo,strictObject:()=>Vl,setErrorMap:()=>al,set:()=>Cl,record:()=>Il,quotelessJson:()=>nl,promise:()=>tb,preprocess:()=>lb,pipeline:()=>bb,ostring:()=>rb,optional:()=>ob,onumber:()=>hb,oboolean:()=>fb,objectUtil:()=>Sn,object:()=>Ul,number:()=>Go,nullable:()=>ab,null:()=>Fl,never:()=>Dl,nativeEnum:()=>zl,nan:()=>Xl,map:()=>Pl,makeIssue:()=>Mt,literal:()=>Zl,lazy:()=>yl,late:()=>Sl,isValid:()=>I,isDirty:()=>et,isAsync:()=>at,isAborted:()=>jt,intersection:()=>Nl,instanceof:()=>Ll,getParsedType:()=>W,getErrorMap:()=>ot,function:()=>Tl,enum:()=>sl,effect:()=>nb,discriminatedUnion:()=>el,defaultErrorMap:()=>j,datetimeRegex:()=>Lo,date:()=>Jl,custom:()=>Qo,coerce:()=>gb,boolean:()=>Ro,bigint:()=>Ql,array:()=>Wl,any:()=>ul,addIssueToContext:()=>v,ZodVoid:()=>St,ZodUnknown:()=>P,ZodUnion:()=>gt,ZodUndefined:()=>ht,ZodType:()=>p,ZodTuple:()=>V,ZodTransformer:()=>O,ZodSymbol:()=>Yt,ZodString:()=>F,ZodSet:()=>tt,ZodSchema:()=>p,ZodRecord:()=>Lt,ZodReadonly:()=>it,ZodPromise:()=>nt,ZodPipeline:()=>Jt,ZodParsedType:()=>$,ZodOptional:()=>B,ZodObject:()=>S,ZodNumber:()=>C,ZodNullable:()=>N,ZodNull:()=>ft,ZodNever:()=>U,ZodNativeEnum:()=>wt,ZodNaN:()=>Qt,ZodMap:()=>Xt,ZodLiteral:()=>vt,ZodLazy:()=>$t,ZodIssueCode:()=>g,ZodIntersection:()=>ct,ZodFunction:()=>bt,ZodFirstPartyTypeKind:()=>x,ZodError:()=>G,ZodEnum:()=>y,ZodEffects:()=>O,ZodDiscriminatedUnion:()=>Nt,ZodDefault:()=>dt,ZodDate:()=>s,ZodCatch:()=>_t,ZodBranded:()=>Kt,ZodBoolean:()=>rt,ZodBigInt:()=>T,ZodArray:()=>u,ZodAny:()=>z,Schema:()=>p,ParseStatus:()=>Q,OK:()=>J,NEVER:()=>cb,INVALID:()=>m,EMPTY_PATH:()=>ll,DIRTY:()=>Z,BRAND:()=>Yl});var Gn=A(()=>{Vt();Xn();po();Et();Fo();Ut()});var uo=A(()=>{Gn();Gn()});function Rn(t){if(t===null||typeof t!=="object")return t;if(Array.isArray(t))return t.map(Rn);let n={};for(let a of Object.keys(t))n[a]=Rn(t[a]);return n}var $b,Kr;var Bo=A(()=>{$b={validation:{trimStrings:!1,emptyAsNullDefault:!1},security:{csrf:{enabled:!0,excludePaths:[],sameSite:"Strict",secure:!1},rateLimit:{enabled:!0,windowMs:60000,maxRequests:60,excludePaths:[]}},hooks:{onValidationError:null,onSecurityViolation:null,onRateLimit:null,onDatabaseError:null,onRequest:null}},Kr=Rn($b)});class Gt{static validate(t,n){try{return{success:!0,data:t.parse(n)}}catch(a){if(a instanceof w.ZodError){let o={};return a.errors.forEach((l)=>{let b=l.path.join(".");o[b]=l.message}),{success:!1,errors:o}}return{success:!1,errors:{general:"Validation failed"}}}}static validateField(t,n){try{return t.parse(n),{success:!0}}catch(a){if(a instanceof w.ZodError)return{success:!1,error:a.errors[0]?.message||"Invalid value"};return{success:!1,error:"Validation failed"}}}static getFieldError(t,n){if(t.success)return null;return t.errors?.[n]||null}static hasFieldError(t,n){return!!this.getFieldError(t,n)}}var Do,K;var Fn=A(()=>{uo();Bo();Do={login:w.object({email:w.string().min(1,"Email is required").email("Please enter a valid email address"),password:w.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/,"Password must contain at least one uppercase letter, one lowercase letter, and one number")}),register:w.object({name:w.string().min(2,"Name must be at least 2 characters").max(50,"Name must be less than 50 characters").regex(/^[a-zA-Z\s'-]+$/,"Name can only contain letters, spaces, hyphens, and apostrophes"),email:w.string().min(1,"Email is required").email("Please enter a valid email address"),password:w.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])/,"Password must contain uppercase, lowercase, number, and special character"),confirmPassword:w.string()}).refine((t)=>t.password===t.confirmPassword,{message:"Passwords don't match",path:["confirmPassword"]}),auth:{register:w.object({action:w.literal("register"),email:w.string().min(1,"Email is required").email("Please enter a valid email address"),username:w.string().min(3,"Username must be at least 3 characters").max(30,"Username must be less than 30 characters"),password:w.string().min(8,"Password must be at least 8 characters"),full_name:w.string().min(2,"Full name is required").max(100,"Full name is too long")}),login:w.object({action:w.literal("login"),email:w.string().min(1,"Email is required").email("Please enter a valid email address"),password:w.string().min(8,"Password must be at least 8 characters")}),logout:w.object({action:w.literal("logout")}),action:w.discriminatedUnion("action",[w.object({action:w.literal("register")}).merge(w.object({email:w.string().min(1,"Email is required").email("Please enter a valid email address"),username:w.string().min(3,"Username must be at least 3 characters").max(30,"Username must be less than 30 characters"),password:w.string().min(8,"Password must be at least 8 characters"),full_name:w.string().min(2,"Full name is required").max(100,"Full name is too long")})),w.object({action:w.literal("login")}).merge(w.object({email:w.string().min(1,"Email is required").email("Please enter a valid email address"),password:w.string().min(8,"Password must be at least 8 characters")})),w.object({action:w.literal("logout")})])},contact:w.object({name:w.string().min(2,"Name must be at least 2 characters").max(100,"Name is too long"),email:w.string().email("Please enter a valid email address"),message:w.string().min(10,"Message must be at least 10 characters").max(1000,"Message is too long")}),email:w.string().min(1,"Email is required").email("Please enter a valid email address"),password:w.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/,"Password must contain uppercase, lowercase, and number"),phone:w.string().regex(/^[\+]?[1-9][\d]{0,15}$/,"Please enter a valid phone number"),url:w.string().min(1,"URL is required").url("Please enter a valid URL"),required:w.string().min(1,"This field is required"),positiveNumber:w.number().positive("Must be a positive number"),integer:w.number().int("Must be a whole number"),futureDate:w.date().min(new Date,"Date must be in the future"),imageFile:w.instanceof(File).refine((t)=>t.size<=5242880,"File size must be less than 5MB").refine((t)=>["image/jpeg","image/png","image/gif","image/webp"].includes(t.type),"File must be a JPEG, PNG, GIF, or WebP image"),userProfile:w.object({full_name:w.string().min(2,"Full name must be at least 2 characters").max(100,"Full name is too long").optional(),bio:w.string().max(500,"Bio must be less than 500 characters").nullable().optional(),avatar_url:w.string().url("Please enter a valid URL").nullable().optional(),theme:w.enum(["africanity","dark","light","system"]).optional(),language:w.string().min(2).max(10).optional()}),project:w.object({name:w.string().min(1,"Project name is required").max(100,"Project name is too long"),description:w.string().max(1000,"Description is too long").nullable().optional(),repository_url:w.string().url("Please enter a valid repository URL").nullable().optional(),demo_url:w.string().url("Please enter a valid demo URL").nullable().optional(),tags:w.array(w.string()).optional(),is_public:w.boolean().optional()})};K={required:(t="This field is required")=>w.string().min(1,t),email:(t="Please enter a valid email address")=>w.string().email(t),minLength:(t,n)=>w.string().min(t,n||`Must be at least ${t} characters`),maxLength:(t,n)=>w.string().max(t,n||`Must be less than ${t} characters`),pattern:(t,n)=>w.string().regex(t,n),numeric:(t="Must be a number")=>w.string().regex(/^\d+$/,t),phone:(t="Please enter a valid phone number")=>w.string().regex(/^[\+]?[1-9][\d]{0,15}$/,t),url:(t="Please enter a valid URL")=>w.string().min(1,"URL is required").url(t)}});var Oo={};H(Oo,{default:()=>vb,AfriInput:()=>It});var It,vb;var Wo=A(()=>{q();Fn();It=class It extends c{static get observedAttributes(){return["type","name","label","placeholder","error","helper","theme","icon","required","aria-label","aria-describedby","validation"]}constructor(){super();this._uniqueId=Math.random().toString(36).substr(2,9),this.render()}get value(){return this.shadowRoot.querySelector("input")?.value||""}set value(t){let n=this.shadowRoot.querySelector("input");if(n)n.value=t}connectedCallback(){this._attachInputListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachInputListeners()}_attachInputListeners(){let t=this.shadowRoot.querySelector("input");if(!t)return;t.addEventListener("input",(n)=>{if(this.emit("af-input",{value:n.target.value}),this.hasAttribute("error"))this.removeAttribute("error")}),t.addEventListener("blur",()=>{this.emit("af-blur",{value:this.value}),this._validateInput()})}_setupValidation(){if(!this.getAttribute("validation"))return;let n=this.shadowRoot.querySelector("input");if(!n)return;n.addEventListener("input",()=>{if(this.hasAttribute("error"))this.removeAttribute("error")})}_validateInput(){let t=this.shadowRoot.querySelector("input");if(!t)return;let n=this.getAttribute("validation"),a=t.value;if(this.hasAttribute("required")&&!a.trim()){this.setAttribute("error","This field is required");return}if(n&&a.trim()){let l=this._getValidationSchema(n);if(l){let b=Gt.validateField(l,a);if(!b.success)this.setAttribute("error",b.error);else this.removeAttribute("error")}}}_getValidationSchema(t){let n={email:K.email(),password:K.password(),phone:K.phone(),url:K.url(),required:K.required()};if(t.includes(":")){let[a,o]=t.split(":"),l=parseInt(o);switch(a){case"minLength":return K.minLength(l);case"maxLength":return K.maxLength(l);case"pattern":return K.pattern(new RegExp(o),"Invalid format")}}return n[t]||null}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("type")||"text",n=this.getAttribute("name")||"",a=this.getAttribute("label")||"",o=this.getAttribute("placeholder")||"",l=this.getAttribute("error")||"",b=this.getAttribute("helper")||"",r=this.getAttribute("theme")||"tanzania",h=this.getAttribute("icon")||"",f=this.hasAttribute("required"),_=this.getAttribute("aria-label"),M=this.getAttribute("aria-describedby"),X={tanzania:{focus:"#1EB53A",error:"#DC3545"},maasai:{focus:"#FF0000",error:"#8B0000"},ndebele:{focus:"#4169E1",error:"#DC143C"}},L=X[r]||X.tanzania,R=[];if(l)R.push(`error-${this._uniqueId}`);else if(b)R.push(`helper-${this._uniqueId}`);if(M)R.push(...M.split(" "));let An=R.length>0?`aria-describedby="${R.join(" ")}"`:"";this.shadowRoot.innerHTML=`
1559
+ `}};f("af-navbar",ln);Ye=ln});var q,vo,h,D=(t)=>{switch(typeof t){case"undefined":return h.undefined;case"string":return h.string;case"number":return Number.isNaN(t)?h.nan:h.number;case"boolean":return h.boolean;case"function":return h.function;case"bigint":return h.bigint;case"symbol":return h.symbol;case"object":if(Array.isArray(t))return h.array;if(t===null)return h.null;if(t.then&&typeof t.then==="function"&&t.catch&&typeof t.catch==="function")return h.promise;if(typeof Map<"u"&&t instanceof Map)return h.map;if(typeof Set<"u"&&t instanceof Set)return h.set;if(typeof Date<"u"&&t instanceof Date)return h.date;return h.object;default:return h.unknown}};var Kt=s(()=>{(function(t){t.assertEqual=(a)=>{};function n(a){}t.assertIs=n;function o(a){throw Error()}t.assertNever=o,t.arrayToEnum=(a)=>{let e={};for(let l of a)e[l]=l;return e},t.getValidEnumValues=(a)=>{let e=t.objectKeys(a).filter((i)=>typeof a[a[i]]!=="number"),l={};for(let i of e)l[i]=a[i];return t.objectValues(l)},t.objectValues=(a)=>{return t.objectKeys(a).map(function(e){return a[e]})},t.objectKeys=typeof Object.keys==="function"?(a)=>Object.keys(a):(a)=>{let e=[];for(let l in a)if(Object.prototype.hasOwnProperty.call(a,l))e.push(l);return e},t.find=(a,e)=>{for(let l of a)if(e(l))return l;return},t.isInteger=typeof Number.isInteger==="function"?(a)=>Number.isInteger(a):(a)=>typeof a==="number"&&Number.isFinite(a)&&Math.floor(a)===a;function r(a,e=" | "){return a.map((l)=>typeof l==="string"?`'${l}'`:l).join(e)}t.joinValues=r,t.jsonStringifyReplacer=(a,e)=>{if(typeof e==="bigint")return e.toString();return e}})(q||(q={}));(function(t){t.mergeShapes=(n,o)=>{return{...n,...o}}})(vo||(vo={}));h=q.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var d,Re=(t)=>{return JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:")},R;var bn=s(()=>{Kt();d=q.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);R=class R extends Error{get errors(){return this.issues}constructor(t){super();this.issues=[],this.addIssue=(o)=>{this.issues=[...this.issues,o]},this.addIssues=(o=[])=>{this.issues=[...this.issues,...o]};let n=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,n);else this.__proto__=n;this.name="ZodError",this.issues=t}format(t){let n=t||function(a){return a.message},o={_errors:[]},r=(a)=>{for(let e of a.issues)if(e.code==="invalid_union")e.unionErrors.map(r);else if(e.code==="invalid_return_type")r(e.returnTypeError);else if(e.code==="invalid_arguments")r(e.argumentsError);else if(e.path.length===0)o._errors.push(n(e));else{let l=o,i=0;while(i<e.path.length){let c=e.path[i];if(i!==e.path.length-1)l[c]=l[c]||{_errors:[]};else l[c]=l[c]||{_errors:[]},l[c]._errors.push(n(e));l=l[c],i++}}};return r(this),o}static assert(t){if(!(t instanceof R))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,q.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(t=(n)=>n.message){let n={},o=[];for(let r of this.issues)if(r.path.length>0){let a=r.path[0];n[a]=n[a]||[],n[a].push(t(r))}else o.push(t(r));return{formErrors:o,fieldErrors:n}}get formErrors(){return this.flatten()}};R.create=(t)=>{return new R(t)}});var Xe=(t,n)=>{let o;switch(t.code){case d.invalid_type:if(t.received===h.undefined)o="Required";else o=`Expected ${t.expected}, received ${t.received}`;break;case d.invalid_literal:o=`Invalid literal value, expected ${JSON.stringify(t.expected,q.jsonStringifyReplacer)}`;break;case d.unrecognized_keys:o=`Unrecognized key(s) in object: ${q.joinValues(t.keys,", ")}`;break;case d.invalid_union:o="Invalid input";break;case d.invalid_union_discriminator:o=`Invalid discriminator value. Expected ${q.joinValues(t.options)}`;break;case d.invalid_enum_value:o=`Invalid enum value. Expected ${q.joinValues(t.options)}, received '${t.received}'`;break;case d.invalid_arguments:o="Invalid function arguments";break;case d.invalid_return_type:o="Invalid function return type";break;case d.invalid_date:o="Invalid date";break;case d.invalid_string:if(typeof t.validation==="object")if("includes"in t.validation){if(o=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position==="number")o=`${o} at one or more positions greater than or equal to ${t.validation.position}`}else if("startsWith"in t.validation)o=`Invalid input: must start with "${t.validation.startsWith}"`;else if("endsWith"in t.validation)o=`Invalid input: must end with "${t.validation.endsWith}"`;else q.assertNever(t.validation);else if(t.validation!=="regex")o=`Invalid ${t.validation}`;else o="Invalid";break;case d.too_small:if(t.type==="array")o=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`;else if(t.type==="string")o=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`;else if(t.type==="number")o=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`;else if(t.type==="bigint")o=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`;else if(t.type==="date")o=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`;else o="Invalid input";break;case d.too_big:if(t.type==="array")o=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`;else if(t.type==="string")o=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`;else if(t.type==="number")o=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`;else if(t.type==="bigint")o=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`;else if(t.type==="date")o=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`;else o="Invalid input";break;case d.custom:o="Invalid input";break;case d.invalid_intersection_types:o="Intersection results could not be merged";break;case d.not_multiple_of:o=`Number must be a multiple of ${t.multipleOf}`;break;case d.not_finite:o="Number must be finite";break;default:o=n.defaultError,q.assertNever(t)}return{message:o}},U;var $o=s(()=>{bn();Kt();U=Xe});function Qe(t){Yr=t}function ot(){return Yr}var Yr;var cn=s(()=>{$o();Yr=U});function m(t,n){let o=ot(),r=jt({issueData:n,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,o,o===U?void 0:U].filter((a)=>!!a)});t.common.issues.push(r)}class S{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(t,n){let o=[];for(let r of n){if(r.status==="aborted")return x;if(r.status==="dirty")t.dirty();o.push(r.value)}return{status:t.value,value:o}}static async mergeObjectAsync(t,n){let o=[];for(let r of n){let a=await r.key,e=await r.value;o.push({key:a,value:e})}return S.mergeObjectSync(t,o)}static mergeObjectSync(t,n){let o={};for(let r of n){let{key:a,value:e}=r;if(a.status==="aborted")return x;if(e.status==="aborted")return x;if(a.status==="dirty")t.dirty();if(e.status==="dirty")t.dirty();if(a.value!=="__proto__"&&(typeof e.value<"u"||r.alwaysSet))o[a.value]=e.value}return{status:t.value,value:o}}}var jt=(t)=>{let{data:n,path:o,errorMaps:r,issueData:a}=t,e=[...o,...a.path||[]],l={...a,path:e};if(a.message!==void 0)return{...a,path:e,message:a.message};let i="",c=r.filter((v)=>!!v).slice().reverse();for(let v of c)i=v(l,{data:n,defaultError:i}).message;return{...a,path:e,message:i}},Je,x,T=(t)=>({status:"dirty",value:t}),Y=(t)=>({status:"valid",value:t}),fn=(t)=>t.status==="aborted",dn=(t)=>t.status==="dirty",j=(t)=>t.status==="valid",rt=(t)=>typeof Promise<"u"&&t instanceof Promise;var uo=s(()=>{cn();$o();Je=[];x=Object.freeze({status:"aborted"})});var Rr=()=>{};var $;var Xr=s(()=>{(function(t){t.errToObj=(n)=>typeof n==="string"?{message:n}:n||{},t.toString=(n)=>typeof n==="string"?n:n?.message})($||($={}))});class F{constructor(t,n,o,r){this._cachedPath=[],this.parent=t,this.data=n,this._path=o,this._key=r}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}function _(t){if(!t)return{};let{errorMap:n,invalid_type_error:o,required_error:r,description:a}=t;if(n&&(o||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(n)return{errorMap:n,description:a};return{errorMap:(l,i)=>{let{message:c}=t;if(l.code==="invalid_enum_value")return{message:c??i.defaultError};if(typeof i.data>"u")return{message:c??r??i.defaultError};if(l.code!=="invalid_type")return{message:i.defaultError};return{message:c??o??i.defaultError}},description:a}}class k{get description(){return this._def.description}_getType(t){return D(t.data)}_getOrReturnCtx(t,n){return n||{common:t.parent.common,data:t.data,parsedType:D(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new S,ctx:{common:t.parent.common,data:t.data,parsedType:D(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){let n=this._parse(t);if(rt(n))throw Error("Synchronous parse encountered promise.");return n}_parseAsync(t){let n=this._parse(t);return Promise.resolve(n)}parse(t,n){let o=this.safeParse(t,n);if(o.success)return o.data;throw o.error}safeParse(t,n){let o={common:{issues:[],async:n?.async??!1,contextualErrorMap:n?.errorMap},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:D(t)},r=this._parseSync({data:t,path:o.path,parent:o});return Qr(o,r)}"~validate"(t){let n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:D(t)};if(!this["~standard"].async)try{let o=this._parseSync({data:t,path:[],parent:n});return j(o)?{value:o.value}:{issues:n.common.issues}}catch(o){if(o?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;n.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:n}).then((o)=>j(o)?{value:o.value}:{issues:n.common.issues})}async parseAsync(t,n){let o=await this.safeParseAsync(t,n);if(o.success)return o.data;throw o.error}async safeParseAsync(t,n){let o={common:{issues:[],contextualErrorMap:n?.errorMap,async:!0},path:n?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:D(t)},r=this._parse({data:t,path:o.path,parent:o}),a=await(rt(r)?r:Promise.resolve(r));return Qr(o,a)}refine(t,n){let o=(r)=>{if(typeof n==="string"||typeof n>"u")return{message:n};else if(typeof n==="function")return n(r);else return n};return this._refinement((r,a)=>{let e=t(r),l=()=>a.addIssue({code:d.custom,...o(r)});if(typeof Promise<"u"&&e instanceof Promise)return e.then((i)=>{if(!i)return l(),!1;else return!0});if(!e)return l(),!1;else return!0})}refinement(t,n){return this._refinement((o,r)=>{if(!t(o))return r.addIssue(typeof n==="function"?n(o,r):n),!1;else return!0})}_refinement(t){return new B({schema:this,typeName:A.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(n)=>this["~validate"](n)}}optional(){return G.create(this,this._def)}nullable(){return N.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return J.create(this)}promise(){return nt.create(this,this._def)}or(t){return ct.create([this,t],this._def)}and(t){return ft.create(this,t,this._def)}transform(t){return new B({..._(this._def),schema:this,typeName:A.ZodEffects,effect:{type:"transform",transform:t}})}default(t){let n=typeof t==="function"?t:()=>t;return new mt({..._(this._def),innerType:this,defaultValue:n,typeName:A.ZodDefault})}brand(){return new gn({typeName:A.ZodBranded,type:this,..._(this._def)})}catch(t){let n=typeof t==="function"?t:()=>t;return new pt({..._(this._def),innerType:this,catchValue:n,typeName:A.ZodCatch})}describe(t){return new this.constructor({...this._def,description:t})}pipe(t){return Zt.create(this,t)}readonly(){return st.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function Fr(t){let n="[0-5]\\d";if(t.precision)n=`${n}\\.\\d{${t.precision}}`;else if(t.precision==null)n=`${n}(\\.\\d+)?`;let o=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${n})${o}`}function Ze(t){return new RegExp(`^${Fr(t)}$`)}function Br(t){let n=`${Gr}T${Fr(t)}`,o=[];if(o.push(t.local?"Z?":"Z"),t.offset)o.push("([+-]\\d{2}:?\\d{2})");return n=`${n}(${o.join("|")})`,new RegExp(`^${n}$`)}function ze(t,n){if((n==="v4"||!n)&&Ke.test(t))return!0;if((n==="v6"||!n)&&ye.test(t))return!0;return!1}function tl(t,n){if(!We.test(t))return!1;try{let[o]=t.split(".");if(!o)return!1;let r=o.replace(/-/g,"+").replace(/_/g,"/").padEnd(o.length+(4-o.length%4)%4,"="),a=JSON.parse(atob(r));if(typeof a!=="object"||a===null)return!1;if("typ"in a&&a?.typ!=="JWT")return!1;if(!a.alg)return!1;if(n&&a.alg!==n)return!1;return!0}catch{return!1}}function nl(t,n){if((n==="v4"||!n)&&je.test(t))return!0;if((n==="v6"||!n)&&Ce.test(t))return!0;return!1}function ol(t,n){let o=(t.toString().split(".")[1]||"").length,r=(n.toString().split(".")[1]||"").length,a=o>r?o:r,e=Number.parseInt(t.toFixed(a).replace(".","")),l=Number.parseInt(n.toFixed(a).replace(".",""));return e%l/10**a}function at(t){if(t instanceof L){let n={};for(let o in t.shape){let r=t.shape[o];n[o]=G.create(at(r))}return new L({...t._def,shape:()=>n})}else if(t instanceof J)return new J({...t._def,type:at(t.element)});else if(t instanceof G)return G.create(at(t.unwrap()));else if(t instanceof N)return N.create(at(t.unwrap()));else if(t instanceof W)return W.create(t.items.map((n)=>at(n)));else return t}function xo(t,n){let o=D(t),r=D(n);if(t===n)return{valid:!0,data:t};else if(o===h.object&&r===h.object){let a=q.objectKeys(n),e=q.objectKeys(t).filter((i)=>a.indexOf(i)!==-1),l={...t,...n};for(let i of e){let c=xo(t[i],n[i]);if(!c.valid)return{valid:!1};l[i]=c.data}return{valid:!0,data:l}}else if(o===h.array&&r===h.array){if(t.length!==n.length)return{valid:!1};let a=[];for(let e=0;e<t.length;e++){let l=t[e],i=n[e],c=xo(l,i);if(!c.valid)return{valid:!1};a.push(c.data)}return{valid:!0,data:a}}else if(o===h.date&&r===h.date&&+t===+n)return{valid:!0,data:t};else return{valid:!1}}function Dr(t,n){return new P({values:t,typeName:A.ZodEnum,..._(n)})}function Jr(t,n){let o=typeof t==="function"?t(n):typeof t==="string"?{message:t}:t;return typeof o==="string"?{message:o}:o}function Or(t,n={},o){if(t)return z.create().superRefine((r,a)=>{let e=t(r);if(e instanceof Promise)return e.then((l)=>{if(!l){let i=Jr(n,r),c=i.fatal??o??!0;a.addIssue({code:"custom",...i,fatal:c})}});if(!e){let l=Jr(n,r),i=l.fatal??o??!0;a.addIssue({code:"custom",...l,fatal:i})}return});return z.create()}var Qr=(t,n)=>{if(j(n))return{success:!0,data:n.value};else{if(!t.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let o=new R(t.common.issues);return this._error=o,this._error}}}},Ge,Fe,Be,De,Oe,We,Ue,Ve,Ne="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wo,Ke,je,ye,Ce,Ie,Pe,Gr="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Te,Q,C,I,lt,Z,yt,it,bt,z,y,O,Ct,J,L,ct,V=(t)=>{if(t instanceof dt)return V(t.schema);else if(t instanceof B)return V(t.innerType());else if(t instanceof ht)return[t.value];else if(t instanceof P)return t.options;else if(t instanceof gt)return q.objectValues(t.enum);else if(t instanceof mt)return V(t._def.innerType);else if(t instanceof it)return[void 0];else if(t instanceof bt)return[null];else if(t instanceof G)return[void 0,...V(t.unwrap())];else if(t instanceof N)return[null,...V(t.unwrap())];else if(t instanceof gn)return V(t.unwrap());else if(t instanceof st)return V(t.unwrap());else if(t instanceof pt)return V(t._def.innerType);else return[]},hn,ft,W,It,Pt,tt,et,dt,ht,P,gt,nt,B,G,N,mt,pt,Tt,rl,gn,Zt,st,al,A,el=(t,n={message:`Input not instance of ${t.name}`})=>Or((o)=>o instanceof t,n),Wr,Ur,ll,il,Vr,bl,cl,fl,dl,hl,gl,ml,pl,sl,vl,$l,ul,wl,xl,Al,_l,kl,ql,Hl,Ll,Ml,El,Sl,Yl,Rl,Xl,Ql,Jl,Gl,Fl=()=>Wr().optional(),Bl=()=>Ur().optional(),Dl=()=>Vr().optional(),Ol,Wl;var Nr=s(()=>{bn();cn();Xr();uo();Kt();Ge=/^c[^\s-]{8,}$/i,Fe=/^[0-9a-z]+$/,Be=/^[0-9A-HJKMNP-TV-Z]{26}$/i,De=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Oe=/^[a-z0-9_-]{21}$/i,We=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Ue=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ve=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Ke=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,je=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ye=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Ce=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ie=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Pe=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Te=new RegExp(`^${Gr}$`);Q=class Q extends k{_parse(t){if(this._def.coerce)t.data=String(t.data);if(this._getType(t)!==h.string){let a=this._getOrReturnCtx(t);return m(a,{code:d.invalid_type,expected:h.string,received:a.parsedType}),x}let o=new S,r=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(t.data.length<a.value)r=this._getOrReturnCtx(t,r),m(r,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="max"){if(t.data.length>a.value)r=this._getOrReturnCtx(t,r),m(r,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),o.dirty()}else if(a.kind==="length"){let e=t.data.length>a.value,l=t.data.length<a.value;if(e||l){if(r=this._getOrReturnCtx(t,r),e)m(r,{code:d.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});else if(l)m(r,{code:d.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message});o.dirty()}}else if(a.kind==="email"){if(!Ve.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"email",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="emoji"){if(!wo)wo=new RegExp(Ne,"u");if(!wo.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"emoji",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="uuid"){if(!De.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"uuid",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="nanoid"){if(!Oe.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"nanoid",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="cuid"){if(!Ge.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"cuid",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="cuid2"){if(!Fe.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"cuid2",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="ulid"){if(!Be.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"ulid",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="url")try{new URL(t.data)}catch{r=this._getOrReturnCtx(t,r),m(r,{validation:"url",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="regex"){if(a.regex.lastIndex=0,!a.regex.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"regex",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="trim")t.data=t.data.trim();else if(a.kind==="includes"){if(!t.data.includes(a.value,a.position))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),o.dirty()}else if(a.kind==="toLowerCase")t.data=t.data.toLowerCase();else if(a.kind==="toUpperCase")t.data=t.data.toUpperCase();else if(a.kind==="startsWith"){if(!t.data.startsWith(a.value))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:{startsWith:a.value},message:a.message}),o.dirty()}else if(a.kind==="endsWith"){if(!t.data.endsWith(a.value))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:{endsWith:a.value},message:a.message}),o.dirty()}else if(a.kind==="datetime"){if(!Br(a).test(t.data))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:"datetime",message:a.message}),o.dirty()}else if(a.kind==="date"){if(!Te.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:"date",message:a.message}),o.dirty()}else if(a.kind==="time"){if(!Ze(a).test(t.data))r=this._getOrReturnCtx(t,r),m(r,{code:d.invalid_string,validation:"time",message:a.message}),o.dirty()}else if(a.kind==="duration"){if(!Ue.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"duration",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="ip"){if(!ze(t.data,a.version))r=this._getOrReturnCtx(t,r),m(r,{validation:"ip",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="jwt"){if(!tl(t.data,a.alg))r=this._getOrReturnCtx(t,r),m(r,{validation:"jwt",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="cidr"){if(!nl(t.data,a.version))r=this._getOrReturnCtx(t,r),m(r,{validation:"cidr",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="base64"){if(!Ie.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"base64",code:d.invalid_string,message:a.message}),o.dirty()}else if(a.kind==="base64url"){if(!Pe.test(t.data))r=this._getOrReturnCtx(t,r),m(r,{validation:"base64url",code:d.invalid_string,message:a.message}),o.dirty()}else q.assertNever(a);return{status:o.value,value:t.data}}_regex(t,n,o){return this.refinement((r)=>t.test(r),{validation:n,code:d.invalid_string,...$.errToObj(o)})}_addCheck(t){return new Q({...this._def,checks:[...this._def.checks,t]})}email(t){return this._addCheck({kind:"email",...$.errToObj(t)})}url(t){return this._addCheck({kind:"url",...$.errToObj(t)})}emoji(t){return this._addCheck({kind:"emoji",...$.errToObj(t)})}uuid(t){return this._addCheck({kind:"uuid",...$.errToObj(t)})}nanoid(t){return this._addCheck({kind:"nanoid",...$.errToObj(t)})}cuid(t){return this._addCheck({kind:"cuid",...$.errToObj(t)})}cuid2(t){return this._addCheck({kind:"cuid2",...$.errToObj(t)})}ulid(t){return this._addCheck({kind:"ulid",...$.errToObj(t)})}base64(t){return this._addCheck({kind:"base64",...$.errToObj(t)})}base64url(t){return this._addCheck({kind:"base64url",...$.errToObj(t)})}jwt(t){return this._addCheck({kind:"jwt",...$.errToObj(t)})}ip(t){return this._addCheck({kind:"ip",...$.errToObj(t)})}cidr(t){return this._addCheck({kind:"cidr",...$.errToObj(t)})}datetime(t){if(typeof t==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:t});return this._addCheck({kind:"datetime",precision:typeof t?.precision>"u"?null:t?.precision,offset:t?.offset??!1,local:t?.local??!1,...$.errToObj(t?.message)})}date(t){return this._addCheck({kind:"date",message:t})}time(t){if(typeof t==="string")return this._addCheck({kind:"time",precision:null,message:t});return this._addCheck({kind:"time",precision:typeof t?.precision>"u"?null:t?.precision,...$.errToObj(t?.message)})}duration(t){return this._addCheck({kind:"duration",...$.errToObj(t)})}regex(t,n){return this._addCheck({kind:"regex",regex:t,...$.errToObj(n)})}includes(t,n){return this._addCheck({kind:"includes",value:t,position:n?.position,...$.errToObj(n?.message)})}startsWith(t,n){return this._addCheck({kind:"startsWith",value:t,...$.errToObj(n)})}endsWith(t,n){return this._addCheck({kind:"endsWith",value:t,...$.errToObj(n)})}min(t,n){return this._addCheck({kind:"min",value:t,...$.errToObj(n)})}max(t,n){return this._addCheck({kind:"max",value:t,...$.errToObj(n)})}length(t,n){return this._addCheck({kind:"length",value:t,...$.errToObj(n)})}nonempty(t){return this.min(1,$.errToObj(t))}trim(){return new Q({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Q({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Q({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((t)=>t.kind==="datetime")}get isDate(){return!!this._def.checks.find((t)=>t.kind==="date")}get isTime(){return!!this._def.checks.find((t)=>t.kind==="time")}get isDuration(){return!!this._def.checks.find((t)=>t.kind==="duration")}get isEmail(){return!!this._def.checks.find((t)=>t.kind==="email")}get isURL(){return!!this._def.checks.find((t)=>t.kind==="url")}get isEmoji(){return!!this._def.checks.find((t)=>t.kind==="emoji")}get isUUID(){return!!this._def.checks.find((t)=>t.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((t)=>t.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((t)=>t.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((t)=>t.kind==="cuid2")}get isULID(){return!!this._def.checks.find((t)=>t.kind==="ulid")}get isIP(){return!!this._def.checks.find((t)=>t.kind==="ip")}get isCIDR(){return!!this._def.checks.find((t)=>t.kind==="cidr")}get isBase64(){return!!this._def.checks.find((t)=>t.kind==="base64")}get isBase64url(){return!!this._def.checks.find((t)=>t.kind==="base64url")}get minLength(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxLength(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}};Q.create=(t)=>{return new Q({checks:[],typeName:A.ZodString,coerce:t?.coerce??!1,..._(t)})};C=class C extends k{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(t){if(this._def.coerce)t.data=Number(t.data);if(this._getType(t)!==h.number){let a=this._getOrReturnCtx(t);return m(a,{code:d.invalid_type,expected:h.number,received:a.parsedType}),x}let o=void 0,r=new S;for(let a of this._def.checks)if(a.kind==="int"){if(!q.isInteger(t.data))o=this._getOrReturnCtx(t,o),m(o,{code:d.invalid_type,expected:"integer",received:"float",message:a.message}),r.dirty()}else if(a.kind==="min"){if(a.inclusive?t.data<a.value:t.data<=a.value)o=this._getOrReturnCtx(t,o),m(o,{code:d.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()}else if(a.kind==="max"){if(a.inclusive?t.data>a.value:t.data>=a.value)o=this._getOrReturnCtx(t,o),m(o,{code:d.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()}else if(a.kind==="multipleOf"){if(ol(t.data,a.value)!==0)o=this._getOrReturnCtx(t,o),m(o,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()}else if(a.kind==="finite"){if(!Number.isFinite(t.data))o=this._getOrReturnCtx(t,o),m(o,{code:d.not_finite,message:a.message}),r.dirty()}else q.assertNever(a);return{status:r.value,value:t.data}}gte(t,n){return this.setLimit("min",t,!0,$.toString(n))}gt(t,n){return this.setLimit("min",t,!1,$.toString(n))}lte(t,n){return this.setLimit("max",t,!0,$.toString(n))}lt(t,n){return this.setLimit("max",t,!1,$.toString(n))}setLimit(t,n,o,r){return new C({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:o,message:$.toString(r)}]})}_addCheck(t){return new C({...this._def,checks:[...this._def.checks,t]})}int(t){return this._addCheck({kind:"int",message:$.toString(t)})}positive(t){return this._addCheck({kind:"min",value:0,inclusive:!1,message:$.toString(t)})}negative(t){return this._addCheck({kind:"max",value:0,inclusive:!1,message:$.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:0,inclusive:!0,message:$.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:0,inclusive:!0,message:$.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:$.toString(n)})}finite(t){return this._addCheck({kind:"finite",message:$.toString(t)})}safe(t){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:$.toString(t)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:$.toString(t)})}get minValue(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxValue(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}get isInt(){return!!this._def.checks.find((t)=>t.kind==="int"||t.kind==="multipleOf"&&q.isInteger(t.value))}get isFinite(){let t=null,n=null;for(let o of this._def.checks)if(o.kind==="finite"||o.kind==="int"||o.kind==="multipleOf")return!0;else if(o.kind==="min"){if(n===null||o.value>n)n=o.value}else if(o.kind==="max"){if(t===null||o.value<t)t=o.value}return Number.isFinite(n)&&Number.isFinite(t)}};C.create=(t)=>{return new C({checks:[],typeName:A.ZodNumber,coerce:t?.coerce||!1,..._(t)})};I=class I extends k{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(t){if(this._def.coerce)try{t.data=BigInt(t.data)}catch{return this._getInvalidInput(t)}if(this._getType(t)!==h.bigint)return this._getInvalidInput(t);let o=void 0,r=new S;for(let a of this._def.checks)if(a.kind==="min"){if(a.inclusive?t.data<a.value:t.data<=a.value)o=this._getOrReturnCtx(t,o),m(o,{code:d.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()}else if(a.kind==="max"){if(a.inclusive?t.data>a.value:t.data>=a.value)o=this._getOrReturnCtx(t,o),m(o,{code:d.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()}else if(a.kind==="multipleOf"){if(t.data%a.value!==BigInt(0))o=this._getOrReturnCtx(t,o),m(o,{code:d.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()}else q.assertNever(a);return{status:r.value,value:t.data}}_getInvalidInput(t){let n=this._getOrReturnCtx(t);return m(n,{code:d.invalid_type,expected:h.bigint,received:n.parsedType}),x}gte(t,n){return this.setLimit("min",t,!0,$.toString(n))}gt(t,n){return this.setLimit("min",t,!1,$.toString(n))}lte(t,n){return this.setLimit("max",t,!0,$.toString(n))}lt(t,n){return this.setLimit("max",t,!1,$.toString(n))}setLimit(t,n,o,r){return new I({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:o,message:$.toString(r)}]})}_addCheck(t){return new I({...this._def,checks:[...this._def.checks,t]})}positive(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:$.toString(t)})}negative(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:$.toString(t)})}nonpositive(t){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:$.toString(t)})}nonnegative(t){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:$.toString(t)})}multipleOf(t,n){return this._addCheck({kind:"multipleOf",value:t,message:$.toString(n)})}get minValue(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t}get maxValue(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t}};I.create=(t)=>{return new I({checks:[],typeName:A.ZodBigInt,coerce:t?.coerce??!1,..._(t)})};lt=class lt extends k{_parse(t){if(this._def.coerce)t.data=Boolean(t.data);if(this._getType(t)!==h.boolean){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.boolean,received:o.parsedType}),x}return Y(t.data)}};lt.create=(t)=>{return new lt({typeName:A.ZodBoolean,coerce:t?.coerce||!1,..._(t)})};Z=class Z extends k{_parse(t){if(this._def.coerce)t.data=new Date(t.data);if(this._getType(t)!==h.date){let a=this._getOrReturnCtx(t);return m(a,{code:d.invalid_type,expected:h.date,received:a.parsedType}),x}if(Number.isNaN(t.data.getTime())){let a=this._getOrReturnCtx(t);return m(a,{code:d.invalid_date}),x}let o=new S,r=void 0;for(let a of this._def.checks)if(a.kind==="min"){if(t.data.getTime()<a.value)r=this._getOrReturnCtx(t,r),m(r,{code:d.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),o.dirty()}else if(a.kind==="max"){if(t.data.getTime()>a.value)r=this._getOrReturnCtx(t,r),m(r,{code:d.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),o.dirty()}else q.assertNever(a);return{status:o.value,value:new Date(t.data.getTime())}}_addCheck(t){return new Z({...this._def,checks:[...this._def.checks,t]})}min(t,n){return this._addCheck({kind:"min",value:t.getTime(),message:$.toString(n)})}max(t,n){return this._addCheck({kind:"max",value:t.getTime(),message:$.toString(n)})}get minDate(){let t=null;for(let n of this._def.checks)if(n.kind==="min"){if(t===null||n.value>t)t=n.value}return t!=null?new Date(t):null}get maxDate(){let t=null;for(let n of this._def.checks)if(n.kind==="max"){if(t===null||n.value<t)t=n.value}return t!=null?new Date(t):null}};Z.create=(t)=>{return new Z({checks:[],coerce:t?.coerce||!1,typeName:A.ZodDate,..._(t)})};yt=class yt extends k{_parse(t){if(this._getType(t)!==h.symbol){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.symbol,received:o.parsedType}),x}return Y(t.data)}};yt.create=(t)=>{return new yt({typeName:A.ZodSymbol,..._(t)})};it=class it extends k{_parse(t){if(this._getType(t)!==h.undefined){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.undefined,received:o.parsedType}),x}return Y(t.data)}};it.create=(t)=>{return new it({typeName:A.ZodUndefined,..._(t)})};bt=class bt extends k{_parse(t){if(this._getType(t)!==h.null){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.null,received:o.parsedType}),x}return Y(t.data)}};bt.create=(t)=>{return new bt({typeName:A.ZodNull,..._(t)})};z=class z extends k{constructor(){super(...arguments);this._any=!0}_parse(t){return Y(t.data)}};z.create=(t)=>{return new z({typeName:A.ZodAny,..._(t)})};y=class y extends k{constructor(){super(...arguments);this._unknown=!0}_parse(t){return Y(t.data)}};y.create=(t)=>{return new y({typeName:A.ZodUnknown,..._(t)})};O=class O extends k{_parse(t){let n=this._getOrReturnCtx(t);return m(n,{code:d.invalid_type,expected:h.never,received:n.parsedType}),x}};O.create=(t)=>{return new O({typeName:A.ZodNever,..._(t)})};Ct=class Ct extends k{_parse(t){if(this._getType(t)!==h.undefined){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.void,received:o.parsedType}),x}return Y(t.data)}};Ct.create=(t)=>{return new Ct({typeName:A.ZodVoid,..._(t)})};J=class J extends k{_parse(t){let{ctx:n,status:o}=this._processInputParams(t),r=this._def;if(n.parsedType!==h.array)return m(n,{code:d.invalid_type,expected:h.array,received:n.parsedType}),x;if(r.exactLength!==null){let e=n.data.length>r.exactLength.value,l=n.data.length<r.exactLength.value;if(e||l)m(n,{code:e?d.too_big:d.too_small,minimum:l?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),o.dirty()}if(r.minLength!==null){if(n.data.length<r.minLength.value)m(n,{code:d.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),o.dirty()}if(r.maxLength!==null){if(n.data.length>r.maxLength.value)m(n,{code:d.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),o.dirty()}if(n.common.async)return Promise.all([...n.data].map((e,l)=>{return r.type._parseAsync(new F(n,e,n.path,l))})).then((e)=>{return S.mergeArray(o,e)});let a=[...n.data].map((e,l)=>{return r.type._parseSync(new F(n,e,n.path,l))});return S.mergeArray(o,a)}get element(){return this._def.type}min(t,n){return new J({...this._def,minLength:{value:t,message:$.toString(n)}})}max(t,n){return new J({...this._def,maxLength:{value:t,message:$.toString(n)}})}length(t,n){return new J({...this._def,exactLength:{value:t,message:$.toString(n)}})}nonempty(t){return this.min(1,t)}};J.create=(t,n)=>{return new J({type:t,minLength:null,maxLength:null,exactLength:null,typeName:A.ZodArray,..._(n)})};L=class L extends k{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let t=this._def.shape(),n=q.objectKeys(t);return this._cached={shape:t,keys:n},this._cached}_parse(t){if(this._getType(t)!==h.object){let c=this._getOrReturnCtx(t);return m(c,{code:d.invalid_type,expected:h.object,received:c.parsedType}),x}let{status:o,ctx:r}=this._processInputParams(t),{shape:a,keys:e}=this._getCached(),l=[];if(!(this._def.catchall instanceof O&&this._def.unknownKeys==="strip")){for(let c in r.data)if(!e.includes(c))l.push(c)}let i=[];for(let c of e){let v=a[c],H=r.data[c];i.push({key:{status:"valid",value:c},value:v._parse(new F(r,H,r.path,c)),alwaysSet:c in r.data})}if(this._def.catchall instanceof O){let c=this._def.unknownKeys;if(c==="passthrough")for(let v of l)i.push({key:{status:"valid",value:v},value:{status:"valid",value:r.data[v]}});else if(c==="strict"){if(l.length>0)m(r,{code:d.unrecognized_keys,keys:l}),o.dirty()}else if(c==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let c=this._def.catchall;for(let v of l){let H=r.data[v];i.push({key:{status:"valid",value:v},value:c._parse(new F(r,H,r.path,v)),alwaysSet:v in r.data})}}if(r.common.async)return Promise.resolve().then(async()=>{let c=[];for(let v of i){let H=await v.key,E=await v.value;c.push({key:H,value:E,alwaysSet:v.alwaysSet})}return c}).then((c)=>{return S.mergeObjectSync(o,c)});else return S.mergeObjectSync(o,i)}get shape(){return this._def.shape()}strict(t){return $.errToObj,new L({...this._def,unknownKeys:"strict",...t!==void 0?{errorMap:(n,o)=>{let r=this._def.errorMap?.(n,o).message??o.defaultError;if(n.code==="unrecognized_keys")return{message:$.errToObj(t).message??r};return{message:r}}}:{}})}strip(){return new L({...this._def,unknownKeys:"strip"})}passthrough(){return new L({...this._def,unknownKeys:"passthrough"})}extend(t){return new L({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new L({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:A.ZodObject})}setKey(t,n){return this.augment({[t]:n})}catchall(t){return new L({...this._def,catchall:t})}pick(t){let n={};for(let o of q.objectKeys(t))if(t[o]&&this.shape[o])n[o]=this.shape[o];return new L({...this._def,shape:()=>n})}omit(t){let n={};for(let o of q.objectKeys(this.shape))if(!t[o])n[o]=this.shape[o];return new L({...this._def,shape:()=>n})}deepPartial(){return at(this)}partial(t){let n={};for(let o of q.objectKeys(this.shape)){let r=this.shape[o];if(t&&!t[o])n[o]=r;else n[o]=r.optional()}return new L({...this._def,shape:()=>n})}required(t){let n={};for(let o of q.objectKeys(this.shape))if(t&&!t[o])n[o]=this.shape[o];else{let a=this.shape[o];while(a instanceof G)a=a._def.innerType;n[o]=a}return new L({...this._def,shape:()=>n})}keyof(){return Dr(q.objectKeys(this.shape))}};L.create=(t,n)=>{return new L({shape:()=>t,unknownKeys:"strip",catchall:O.create(),typeName:A.ZodObject,..._(n)})};L.strictCreate=(t,n)=>{return new L({shape:()=>t,unknownKeys:"strict",catchall:O.create(),typeName:A.ZodObject,..._(n)})};L.lazycreate=(t,n)=>{return new L({shape:t,unknownKeys:"strip",catchall:O.create(),typeName:A.ZodObject,..._(n)})};ct=class ct extends k{_parse(t){let{ctx:n}=this._processInputParams(t),o=this._def.options;function r(a){for(let l of a)if(l.result.status==="valid")return l.result;for(let l of a)if(l.result.status==="dirty")return n.common.issues.push(...l.ctx.common.issues),l.result;let e=a.map((l)=>new R(l.ctx.common.issues));return m(n,{code:d.invalid_union,unionErrors:e}),x}if(n.common.async)return Promise.all(o.map(async(a)=>{let e={...n,common:{...n.common,issues:[]},parent:null};return{result:await a._parseAsync({data:n.data,path:n.path,parent:e}),ctx:e}})).then(r);else{let a=void 0,e=[];for(let i of o){let c={...n,common:{...n.common,issues:[]},parent:null},v=i._parseSync({data:n.data,path:n.path,parent:c});if(v.status==="valid")return v;else if(v.status==="dirty"&&!a)a={result:v,ctx:c};if(c.common.issues.length)e.push(c.common.issues)}if(a)return n.common.issues.push(...a.ctx.common.issues),a.result;let l=e.map((i)=>new R(i));return m(n,{code:d.invalid_union,unionErrors:l}),x}}get options(){return this._def.options}};ct.create=(t,n)=>{return new ct({options:t,typeName:A.ZodUnion,..._(n)})};hn=class hn extends k{_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==h.object)return m(n,{code:d.invalid_type,expected:h.object,received:n.parsedType}),x;let o=this.discriminator,r=n.data[o],a=this.optionsMap.get(r);if(!a)return m(n,{code:d.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[o]}),x;if(n.common.async)return a._parseAsync({data:n.data,path:n.path,parent:n});else return a._parseSync({data:n.data,path:n.path,parent:n})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,o){let r=new Map;for(let a of n){let e=V(a.shape[t]);if(!e.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let l of e){if(r.has(l))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(l)}`);r.set(l,a)}}return new hn({typeName:A.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:r,..._(o)})}};ft=class ft extends k{_parse(t){let{status:n,ctx:o}=this._processInputParams(t),r=(a,e)=>{if(fn(a)||fn(e))return x;let l=xo(a.value,e.value);if(!l.valid)return m(o,{code:d.invalid_intersection_types}),x;if(dn(a)||dn(e))n.dirty();return{status:n.value,value:l.data}};if(o.common.async)return Promise.all([this._def.left._parseAsync({data:o.data,path:o.path,parent:o}),this._def.right._parseAsync({data:o.data,path:o.path,parent:o})]).then(([a,e])=>r(a,e));else return r(this._def.left._parseSync({data:o.data,path:o.path,parent:o}),this._def.right._parseSync({data:o.data,path:o.path,parent:o}))}};ft.create=(t,n,o)=>{return new ft({left:t,right:n,typeName:A.ZodIntersection,..._(o)})};W=class W extends k{_parse(t){let{status:n,ctx:o}=this._processInputParams(t);if(o.parsedType!==h.array)return m(o,{code:d.invalid_type,expected:h.array,received:o.parsedType}),x;if(o.data.length<this._def.items.length)return m(o,{code:d.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),x;if(!this._def.rest&&o.data.length>this._def.items.length)m(o,{code:d.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty();let a=[...o.data].map((e,l)=>{let i=this._def.items[l]||this._def.rest;if(!i)return null;return i._parse(new F(o,e,o.path,l))}).filter((e)=>!!e);if(o.common.async)return Promise.all(a).then((e)=>{return S.mergeArray(n,e)});else return S.mergeArray(n,a)}get items(){return this._def.items}rest(t){return new W({...this._def,rest:t})}};W.create=(t,n)=>{if(!Array.isArray(t))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new W({items:t,typeName:A.ZodTuple,rest:null,..._(n)})};It=class It extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:o}=this._processInputParams(t);if(o.parsedType!==h.object)return m(o,{code:d.invalid_type,expected:h.object,received:o.parsedType}),x;let r=[],a=this._def.keyType,e=this._def.valueType;for(let l in o.data)r.push({key:a._parse(new F(o,l,o.path,l)),value:e._parse(new F(o,o.data[l],o.path,l)),alwaysSet:l in o.data});if(o.common.async)return S.mergeObjectAsync(n,r);else return S.mergeObjectSync(n,r)}get element(){return this._def.valueType}static create(t,n,o){if(n instanceof k)return new It({keyType:t,valueType:n,typeName:A.ZodRecord,..._(o)});return new It({keyType:Q.create(),valueType:t,typeName:A.ZodRecord,..._(n)})}};Pt=class Pt extends k{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){let{status:n,ctx:o}=this._processInputParams(t);if(o.parsedType!==h.map)return m(o,{code:d.invalid_type,expected:h.map,received:o.parsedType}),x;let r=this._def.keyType,a=this._def.valueType,e=[...o.data.entries()].map(([l,i],c)=>{return{key:r._parse(new F(o,l,o.path,[c,"key"])),value:a._parse(new F(o,i,o.path,[c,"value"]))}});if(o.common.async){let l=new Map;return Promise.resolve().then(async()=>{for(let i of e){let c=await i.key,v=await i.value;if(c.status==="aborted"||v.status==="aborted")return x;if(c.status==="dirty"||v.status==="dirty")n.dirty();l.set(c.value,v.value)}return{status:n.value,value:l}})}else{let l=new Map;for(let i of e){let{key:c,value:v}=i;if(c.status==="aborted"||v.status==="aborted")return x;if(c.status==="dirty"||v.status==="dirty")n.dirty();l.set(c.value,v.value)}return{status:n.value,value:l}}}};Pt.create=(t,n,o)=>{return new Pt({valueType:n,keyType:t,typeName:A.ZodMap,..._(o)})};tt=class tt extends k{_parse(t){let{status:n,ctx:o}=this._processInputParams(t);if(o.parsedType!==h.set)return m(o,{code:d.invalid_type,expected:h.set,received:o.parsedType}),x;let r=this._def;if(r.minSize!==null){if(o.data.size<r.minSize.value)m(o,{code:d.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),n.dirty()}if(r.maxSize!==null){if(o.data.size>r.maxSize.value)m(o,{code:d.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),n.dirty()}let a=this._def.valueType;function e(i){let c=new Set;for(let v of i){if(v.status==="aborted")return x;if(v.status==="dirty")n.dirty();c.add(v.value)}return{status:n.value,value:c}}let l=[...o.data.values()].map((i,c)=>a._parse(new F(o,i,o.path,c)));if(o.common.async)return Promise.all(l).then((i)=>e(i));else return e(l)}min(t,n){return new tt({...this._def,minSize:{value:t,message:$.toString(n)}})}max(t,n){return new tt({...this._def,maxSize:{value:t,message:$.toString(n)}})}size(t,n){return this.min(t,n).max(t,n)}nonempty(t){return this.min(1,t)}};tt.create=(t,n)=>{return new tt({valueType:t,minSize:null,maxSize:null,typeName:A.ZodSet,..._(n)})};et=class et extends k{constructor(){super(...arguments);this.validate=this.implement}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==h.function)return m(n,{code:d.invalid_type,expected:h.function,received:n.parsedType}),x;function o(l,i){return jt({data:l,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,ot(),U].filter((c)=>!!c),issueData:{code:d.invalid_arguments,argumentsError:i}})}function r(l,i){return jt({data:l,path:n.path,errorMaps:[n.common.contextualErrorMap,n.schemaErrorMap,ot(),U].filter((c)=>!!c),issueData:{code:d.invalid_return_type,returnTypeError:i}})}let a={errorMap:n.common.contextualErrorMap},e=n.data;if(this._def.returns instanceof nt){let l=this;return Y(async function(...i){let c=new R([]),v=await l._def.args.parseAsync(i,a).catch((M)=>{throw c.addIssue(o(i,M)),c}),H=await Reflect.apply(e,this,v);return await l._def.returns._def.type.parseAsync(H,a).catch((M)=>{throw c.addIssue(r(H,M)),c})})}else{let l=this;return Y(function(...i){let c=l._def.args.safeParse(i,a);if(!c.success)throw new R([o(i,c.error)]);let v=Reflect.apply(e,this,c.data),H=l._def.returns.safeParse(v,a);if(!H.success)throw new R([r(v,H.error)]);return H.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new et({...this._def,args:W.create(t).rest(y.create())})}returns(t){return new et({...this._def,returns:t})}implement(t){return this.parse(t)}strictImplement(t){return this.parse(t)}static create(t,n,o){return new et({args:t?t:W.create([]).rest(y.create()),returns:n||y.create(),typeName:A.ZodFunction,..._(o)})}};dt=class dt extends k{get schema(){return this._def.getter()}_parse(t){let{ctx:n}=this._processInputParams(t);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}};dt.create=(t,n)=>{return new dt({getter:t,typeName:A.ZodLazy,..._(n)})};ht=class ht extends k{_parse(t){if(t.data!==this._def.value){let n=this._getOrReturnCtx(t);return m(n,{received:n.data,code:d.invalid_literal,expected:this._def.value}),x}return{status:"valid",value:t.data}}get value(){return this._def.value}};ht.create=(t,n)=>{return new ht({value:t,typeName:A.ZodLiteral,..._(n)})};P=class P extends k{_parse(t){if(typeof t.data!=="string"){let n=this._getOrReturnCtx(t),o=this._def.values;return m(n,{expected:q.joinValues(o),received:n.parsedType,code:d.invalid_type}),x}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(t.data)){let n=this._getOrReturnCtx(t),o=this._def.values;return m(n,{received:n.data,code:d.invalid_enum_value,options:o}),x}return Y(t.data)}get options(){return this._def.values}get enum(){let t={};for(let n of this._def.values)t[n]=n;return t}get Values(){let t={};for(let n of this._def.values)t[n]=n;return t}get Enum(){let t={};for(let n of this._def.values)t[n]=n;return t}extract(t,n=this._def){return P.create(t,{...this._def,...n})}exclude(t,n=this._def){return P.create(this.options.filter((o)=>!t.includes(o)),{...this._def,...n})}};P.create=Dr;gt=class gt extends k{_parse(t){let n=q.getValidEnumValues(this._def.values),o=this._getOrReturnCtx(t);if(o.parsedType!==h.string&&o.parsedType!==h.number){let r=q.objectValues(n);return m(o,{expected:q.joinValues(r),received:o.parsedType,code:d.invalid_type}),x}if(!this._cache)this._cache=new Set(q.getValidEnumValues(this._def.values));if(!this._cache.has(t.data)){let r=q.objectValues(n);return m(o,{received:o.data,code:d.invalid_enum_value,options:r}),x}return Y(t.data)}get enum(){return this._def.values}};gt.create=(t,n)=>{return new gt({values:t,typeName:A.ZodNativeEnum,..._(n)})};nt=class nt extends k{unwrap(){return this._def.type}_parse(t){let{ctx:n}=this._processInputParams(t);if(n.parsedType!==h.promise&&n.common.async===!1)return m(n,{code:d.invalid_type,expected:h.promise,received:n.parsedType}),x;let o=n.parsedType===h.promise?n.data:Promise.resolve(n.data);return Y(o.then((r)=>{return this._def.type.parseAsync(r,{path:n.path,errorMap:n.common.contextualErrorMap})}))}};nt.create=(t,n)=>{return new nt({type:t,typeName:A.ZodPromise,..._(n)})};B=class B extends k{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===A.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){let{status:n,ctx:o}=this._processInputParams(t),r=this._def.effect||null,a={addIssue:(e)=>{if(m(o,e),e.fatal)n.abort();else n.dirty()},get path(){return o.path}};if(a.addIssue=a.addIssue.bind(a),r.type==="preprocess"){let e=r.transform(o.data,a);if(o.common.async)return Promise.resolve(e).then(async(l)=>{if(n.value==="aborted")return x;let i=await this._def.schema._parseAsync({data:l,path:o.path,parent:o});if(i.status==="aborted")return x;if(i.status==="dirty")return T(i.value);if(n.value==="dirty")return T(i.value);return i});else{if(n.value==="aborted")return x;let l=this._def.schema._parseSync({data:e,path:o.path,parent:o});if(l.status==="aborted")return x;if(l.status==="dirty")return T(l.value);if(n.value==="dirty")return T(l.value);return l}}if(r.type==="refinement"){let e=(l)=>{let i=r.refinement(l,a);if(o.common.async)return Promise.resolve(i);if(i instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return l};if(o.common.async===!1){let l=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});if(l.status==="aborted")return x;if(l.status==="dirty")n.dirty();return e(l.value),{status:n.value,value:l.value}}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then((l)=>{if(l.status==="aborted")return x;if(l.status==="dirty")n.dirty();return e(l.value).then(()=>{return{status:n.value,value:l.value}})})}if(r.type==="transform")if(o.common.async===!1){let e=this._def.schema._parseSync({data:o.data,path:o.path,parent:o});if(!j(e))return x;let l=r.transform(e.value,a);if(l instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:l}}else return this._def.schema._parseAsync({data:o.data,path:o.path,parent:o}).then((e)=>{if(!j(e))return x;return Promise.resolve(r.transform(e.value,a)).then((l)=>({status:n.value,value:l}))});q.assertNever(r)}};B.create=(t,n,o)=>{return new B({schema:t,typeName:A.ZodEffects,effect:n,..._(o)})};B.createWithPreprocess=(t,n,o)=>{return new B({schema:n,effect:{type:"preprocess",transform:t},typeName:A.ZodEffects,..._(o)})};G=class G extends k{_parse(t){if(this._getType(t)===h.undefined)return Y(void 0);return this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};G.create=(t,n)=>{return new G({innerType:t,typeName:A.ZodOptional,..._(n)})};N=class N extends k{_parse(t){if(this._getType(t)===h.null)return Y(null);return this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};N.create=(t,n)=>{return new N({innerType:t,typeName:A.ZodNullable,..._(n)})};mt=class mt extends k{_parse(t){let{ctx:n}=this._processInputParams(t),o=n.data;if(n.parsedType===h.undefined)o=this._def.defaultValue();return this._def.innerType._parse({data:o,path:n.path,parent:n})}removeDefault(){return this._def.innerType}};mt.create=(t,n)=>{return new mt({innerType:t,typeName:A.ZodDefault,defaultValue:typeof n.default==="function"?n.default:()=>n.default,..._(n)})};pt=class pt extends k{_parse(t){let{ctx:n}=this._processInputParams(t),o={...n,common:{...n.common,issues:[]}},r=this._def.innerType._parse({data:o.data,path:o.path,parent:{...o}});if(rt(r))return r.then((a)=>{return{status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new R(o.common.issues)},input:o.data})}});else return{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new R(o.common.issues)},input:o.data})}}removeCatch(){return this._def.innerType}};pt.create=(t,n)=>{return new pt({innerType:t,typeName:A.ZodCatch,catchValue:typeof n.catch==="function"?n.catch:()=>n.catch,..._(n)})};Tt=class Tt extends k{_parse(t){if(this._getType(t)!==h.nan){let o=this._getOrReturnCtx(t);return m(o,{code:d.invalid_type,expected:h.nan,received:o.parsedType}),x}return{status:"valid",value:t.data}}};Tt.create=(t)=>{return new Tt({typeName:A.ZodNaN,..._(t)})};rl=Symbol("zod_brand");gn=class gn extends k{_parse(t){let{ctx:n}=this._processInputParams(t),o=n.data;return this._def.type._parse({data:o,path:n.path,parent:n})}unwrap(){return this._def.type}};Zt=class Zt extends k{_parse(t){let{status:n,ctx:o}=this._processInputParams(t);if(o.common.async)return(async()=>{let a=await this._def.in._parseAsync({data:o.data,path:o.path,parent:o});if(a.status==="aborted")return x;if(a.status==="dirty")return n.dirty(),T(a.value);else return this._def.out._parseAsync({data:a.value,path:o.path,parent:o})})();else{let r=this._def.in._parseSync({data:o.data,path:o.path,parent:o});if(r.status==="aborted")return x;if(r.status==="dirty")return n.dirty(),{status:"dirty",value:r.value};else return this._def.out._parseSync({data:r.value,path:o.path,parent:o})}}static create(t,n){return new Zt({in:t,out:n,typeName:A.ZodPipeline})}};st=class st extends k{_parse(t){let n=this._def.innerType._parse(t),o=(r)=>{if(j(r))r.value=Object.freeze(r.value);return r};return rt(n)?n.then((r)=>o(r)):o(n)}unwrap(){return this._def.innerType}};st.create=(t,n)=>{return new st({innerType:t,typeName:A.ZodReadonly,..._(n)})};al={object:L.lazycreate};(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(A||(A={}));Wr=Q.create,Ur=C.create,ll=Tt.create,il=I.create,Vr=lt.create,bl=Z.create,cl=yt.create,fl=it.create,dl=bt.create,hl=z.create,gl=y.create,ml=O.create,pl=Ct.create,sl=J.create,vl=L.create,$l=L.strictCreate,ul=ct.create,wl=hn.create,xl=ft.create,Al=W.create,_l=It.create,kl=Pt.create,ql=tt.create,Hl=et.create,Ll=dt.create,Ml=ht.create,El=P.create,Sl=gt.create,Yl=nt.create,Rl=B.create,Xl=G.create,Ql=N.create,Jl=B.createWithPreprocess,Gl=Zt.create,Ol={string:(t)=>Q.create({...t,coerce:!0}),number:(t)=>C.create({...t,coerce:!0}),boolean:(t)=>lt.create({...t,coerce:!0}),bigint:(t)=>I.create({...t,coerce:!0}),date:(t)=>Z.create({...t,coerce:!0})},Wl=x});var p={};w(p,{void:()=>pl,util:()=>q,unknown:()=>gl,union:()=>ul,undefined:()=>fl,tuple:()=>Al,transformer:()=>Rl,symbol:()=>cl,string:()=>Wr,strictObject:()=>$l,setErrorMap:()=>Qe,set:()=>ql,record:()=>_l,quotelessJson:()=>Re,promise:()=>Yl,preprocess:()=>Jl,pipeline:()=>Gl,ostring:()=>Fl,optional:()=>Xl,onumber:()=>Bl,oboolean:()=>Dl,objectUtil:()=>vo,object:()=>vl,number:()=>Ur,nullable:()=>Ql,null:()=>dl,never:()=>ml,nativeEnum:()=>Sl,nan:()=>ll,map:()=>kl,makeIssue:()=>jt,literal:()=>Ml,lazy:()=>Ll,late:()=>al,isValid:()=>j,isDirty:()=>dn,isAsync:()=>rt,isAborted:()=>fn,intersection:()=>xl,instanceof:()=>el,getParsedType:()=>D,getErrorMap:()=>ot,function:()=>Hl,enum:()=>El,effect:()=>Rl,discriminatedUnion:()=>wl,defaultErrorMap:()=>U,datetimeRegex:()=>Br,date:()=>bl,custom:()=>Or,coerce:()=>Ol,boolean:()=>Vr,bigint:()=>il,array:()=>sl,any:()=>hl,addIssueToContext:()=>m,ZodVoid:()=>Ct,ZodUnknown:()=>y,ZodUnion:()=>ct,ZodUndefined:()=>it,ZodType:()=>k,ZodTuple:()=>W,ZodTransformer:()=>B,ZodSymbol:()=>yt,ZodString:()=>Q,ZodSet:()=>tt,ZodSchema:()=>k,ZodRecord:()=>It,ZodReadonly:()=>st,ZodPromise:()=>nt,ZodPipeline:()=>Zt,ZodParsedType:()=>h,ZodOptional:()=>G,ZodObject:()=>L,ZodNumber:()=>C,ZodNullable:()=>N,ZodNull:()=>bt,ZodNever:()=>O,ZodNativeEnum:()=>gt,ZodNaN:()=>Tt,ZodMap:()=>Pt,ZodLiteral:()=>ht,ZodLazy:()=>dt,ZodIssueCode:()=>d,ZodIntersection:()=>ft,ZodFunction:()=>et,ZodFirstPartyTypeKind:()=>A,ZodError:()=>R,ZodEnum:()=>P,ZodEffects:()=>B,ZodDiscriminatedUnion:()=>hn,ZodDefault:()=>mt,ZodDate:()=>Z,ZodCatch:()=>pt,ZodBranded:()=>gn,ZodBoolean:()=>lt,ZodBigInt:()=>I,ZodArray:()=>J,ZodAny:()=>z,Schema:()=>k,ParseStatus:()=>S,OK:()=>Y,NEVER:()=>Wl,INVALID:()=>x,EMPTY_PATH:()=>Je,DIRTY:()=>T,BRAND:()=>rl});var Ao=s(()=>{cn();uo();Rr();Kt();Nr();bn()});var Kr=s(()=>{Ao();Ao()});function _o(t){if(t===null||typeof t!=="object")return t;if(Array.isArray(t))return t.map(_o);let n={};for(let o of Object.keys(t))n[o]=_o(t[o]);return n}var Ul,Vb;var jr=s(()=>{Ul={validation:{trimStrings:!1,emptyAsNullDefault:!1},security:{csrf:{enabled:!0,excludePaths:[],sameSite:"Strict",secure:!1},rateLimit:{enabled:!0,windowMs:60000,maxRequests:60,excludePaths:[]}},hooks:{onValidationError:null,onSecurityViolation:null,onRateLimit:null,onDatabaseError:null,onRequest:null}},Vb=_o(Ul)});class zt{static validate(t,n){try{return{success:!0,data:t.parse(n)}}catch(o){if(o instanceof p.ZodError){let r={};return o.errors.forEach((a)=>{let e=a.path.join(".");r[e]=a.message}),{success:!1,errors:r}}return{success:!1,errors:{general:"Validation failed"}}}}static validateField(t,n){try{return t.parse(n),{success:!0}}catch(o){if(o instanceof p.ZodError)return{success:!1,error:o.errors[0]?.message||"Invalid value"};return{success:!1,error:"Validation failed"}}}static getFieldError(t,n){if(t.success)return null;return t.errors?.[n]||null}static hasFieldError(t,n){return!!this.getFieldError(t,n)}}var yr,K;var ko=s(()=>{Kr();jr();yr={login:p.object({email:p.string().min(1,"Email is required").email("Please enter a valid email address"),password:p.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/,"Password must contain at least one uppercase letter, one lowercase letter, and one number")}),register:p.object({name:p.string().min(2,"Name must be at least 2 characters").max(50,"Name must be less than 50 characters").regex(/^[a-zA-Z\s'-]+$/,"Name can only contain letters, spaces, hyphens, and apostrophes"),email:p.string().min(1,"Email is required").email("Please enter a valid email address"),password:p.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])/,"Password must contain uppercase, lowercase, number, and special character"),confirmPassword:p.string()}).refine((t)=>t.password===t.confirmPassword,{message:"Passwords don't match",path:["confirmPassword"]}),auth:{register:p.object({action:p.literal("register"),email:p.string().min(1,"Email is required").email("Please enter a valid email address"),username:p.string().min(3,"Username must be at least 3 characters").max(30,"Username must be less than 30 characters"),password:p.string().min(8,"Password must be at least 8 characters"),full_name:p.string().min(2,"Full name is required").max(100,"Full name is too long")}),login:p.object({action:p.literal("login"),email:p.string().min(1,"Email is required").email("Please enter a valid email address"),password:p.string().min(8,"Password must be at least 8 characters")}),logout:p.object({action:p.literal("logout")}),action:p.discriminatedUnion("action",[p.object({action:p.literal("register")}).merge(p.object({email:p.string().min(1,"Email is required").email("Please enter a valid email address"),username:p.string().min(3,"Username must be at least 3 characters").max(30,"Username must be less than 30 characters"),password:p.string().min(8,"Password must be at least 8 characters"),full_name:p.string().min(2,"Full name is required").max(100,"Full name is too long")})),p.object({action:p.literal("login")}).merge(p.object({email:p.string().min(1,"Email is required").email("Please enter a valid email address"),password:p.string().min(8,"Password must be at least 8 characters")})),p.object({action:p.literal("logout")})])},contact:p.object({name:p.string().min(2,"Name must be at least 2 characters").max(100,"Name is too long"),email:p.string().email("Please enter a valid email address"),message:p.string().min(10,"Message must be at least 10 characters").max(1000,"Message is too long")}),email:p.string().min(1,"Email is required").email("Please enter a valid email address"),password:p.string().min(8,"Password must be at least 8 characters").regex(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/,"Password must contain uppercase, lowercase, and number"),phone:p.string().regex(/^[\+]?[1-9][\d]{0,15}$/,"Please enter a valid phone number"),url:p.string().min(1,"URL is required").url("Please enter a valid URL"),required:p.string().min(1,"This field is required"),positiveNumber:p.number().positive("Must be a positive number"),integer:p.number().int("Must be a whole number"),futureDate:p.date().min(new Date,"Date must be in the future"),imageFile:p.instanceof(File).refine((t)=>t.size<=5242880,"File size must be less than 5MB").refine((t)=>["image/jpeg","image/png","image/gif","image/webp"].includes(t.type),"File must be a JPEG, PNG, GIF, or WebP image"),userProfile:p.object({full_name:p.string().min(2,"Full name must be at least 2 characters").max(100,"Full name is too long").optional(),bio:p.string().max(500,"Bio must be less than 500 characters").nullable().optional(),avatar_url:p.string().url("Please enter a valid URL").nullable().optional(),theme:p.enum(["africanity","dark","light","system"]).optional(),language:p.string().min(2).max(10).optional()}),project:p.object({name:p.string().min(1,"Project name is required").max(100,"Project name is too long"),description:p.string().max(1000,"Description is too long").nullable().optional(),repository_url:p.string().url("Please enter a valid repository URL").nullable().optional(),demo_url:p.string().url("Please enter a valid demo URL").nullable().optional(),tags:p.array(p.string()).optional(),is_public:p.boolean().optional()})};K={required:(t="This field is required")=>p.string().min(1,t),email:(t="Please enter a valid email address")=>p.string().email(t),minLength:(t,n)=>p.string().min(t,n||`Must be at least ${t} characters`),maxLength:(t,n)=>p.string().max(t,n||`Must be less than ${t} characters`),pattern:(t,n)=>p.string().regex(t,n),numeric:(t="Must be a number")=>p.string().regex(/^\d+$/,t),phone:(t="Please enter a valid phone number")=>p.string().regex(/^[\+]?[1-9][\d]{0,15}$/,t),url:(t="Please enter a valid URL")=>p.string().min(1,"URL is required").url(t)}});var Cr={};w(Cr,{default:()=>Vl,AfriInput:()=>mn});var mn,Vl;var Ir=s(()=>{u();ko();mn=class mn extends b{static get observedAttributes(){return["type","name","label","placeholder","error","helper","theme","icon","required","aria-label","aria-describedby","validation"]}constructor(){super();this._uniqueId=Math.random().toString(36).substr(2,9),this.render()}get value(){return this.shadowRoot.querySelector("input")?.value||""}set value(t){let n=this.shadowRoot.querySelector("input");if(n)n.value=t}connectedCallback(){this._attachInputListeners(),this.loadStyles()}attributeChangedCallback(){this.render(),this._attachInputListeners()}_attachInputListeners(){let t=this.shadowRoot.querySelector("input");if(!t)return;t.addEventListener("input",(n)=>{if(this.emit("af-input",{value:n.target.value}),this.hasAttribute("error"))this.removeAttribute("error")}),t.addEventListener("blur",()=>{this.emit("af-blur",{value:this.value}),this._validateInput()})}_setupValidation(){if(!this.getAttribute("validation"))return;let n=this.shadowRoot.querySelector("input");if(!n)return;n.addEventListener("input",()=>{if(this.hasAttribute("error"))this.removeAttribute("error")})}_validateInput(){let t=this.shadowRoot.querySelector("input");if(!t)return;let n=this.getAttribute("validation"),o=t.value;if(this.hasAttribute("required")&&!o.trim()){this.setAttribute("error","This field is required");return}if(n&&o.trim()){let a=this._getValidationSchema(n);if(a){let e=zt.validateField(a,o);if(!e.success)this.setAttribute("error",e.error);else this.removeAttribute("error")}}}_getValidationSchema(t){let n={email:K.email(),password:K.password(),phone:K.phone(),url:K.url(),required:K.required()};if(t.includes(":")){let[o,r]=t.split(":"),a=parseInt(r);switch(o){case"minLength":return K.minLength(a);case"maxLength":return K.maxLength(a);case"pattern":return K.pattern(new RegExp(r),"Invalid format")}}return n[t]||null}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("type")||"text",n=this.getAttribute("name")||"",o=this.getAttribute("label")||"",r=this.getAttribute("placeholder")||"",a=this.getAttribute("error")||"",e=this.getAttribute("helper")||"",l=this.getAttribute("theme")||"tanzania",i=this.getAttribute("icon")||"",c=this.hasAttribute("required"),v=this.getAttribute("aria-label"),H=this.getAttribute("aria-describedby"),E={tanzania:{focus:"#1EB53A",error:"#DC3545"},maasai:{focus:"#FF0000",error:"#8B0000"},ndebele:{focus:"#4169E1",error:"#DC143C"}},M=E[l]||E.tanzania,X=[];if(a)X.push(`error-${this._uniqueId}`);else if(e)X.push(`helper-${this._uniqueId}`);if(H)X.push(...H.split(" "));let Bn=X.length>0?`aria-describedby="${X.join(" ")}"`:"";this.shadowRoot.innerHTML=`
629
1560
  <style>
630
1561
  :host {
631
1562
  display: block;
@@ -645,7 +1576,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
645
1576
  }
646
1577
 
647
1578
  .required-star {
648
- color: ${L.error};
1579
+ color: ${M.error};
649
1580
  margin-left: 2px;
650
1581
  }
651
1582
 
@@ -658,7 +1589,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
658
1589
  input {
659
1590
  width: 100%;
660
1591
  padding: 10px 13px;
661
- ${h?"padding-left: 40px;":""}
1592
+ ${i?"padding-left: 40px;":""}
662
1593
  font-size: 15px;
663
1594
  border: 2px solid #ddd;
664
1595
  border-radius: 5px;
@@ -669,12 +1600,12 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
669
1600
 
670
1601
  input:focus {
671
1602
  outline: none;
672
- border-color: ${l?L.error:L.focus};
673
- box-shadow: 0 0 0 3px ${l?L.error+"20":L.focus+"20"};
1603
+ border-color: ${a?M.error:M.focus};
1604
+ box-shadow: 0 0 0 3px ${a?M.error+"20":M.focus+"20"};
674
1605
  }
675
1606
 
676
1607
  input.has-error {
677
- border-color: ${L.error};
1608
+ border-color: ${M.error};
678
1609
  }
679
1610
 
680
1611
  .icon {
@@ -694,30 +1625,30 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
694
1625
  .error-text {
695
1626
  font-size: 12px;
696
1627
  margin-top: 4px;
697
- color: ${L.error};
1628
+ color: ${M.error};
698
1629
  }
699
1630
  </style>
700
1631
 
701
1632
  <div class="input-wrapper">
702
- ${a?`<label for="input-${this._uniqueId}">${a}${f?'<span class="required-star">*</span>':""}</label>`:""}
1633
+ ${o?`<label for="input-${this._uniqueId}">${o}${c?'<span class="required-star">*</span>':""}</label>`:""}
703
1634
  <div class="input-container">
704
- ${h?`<span class="icon">${h}</span>`:""}
1635
+ ${i?`<span class="icon">${i}</span>`:""}
705
1636
  <input
706
1637
  id="input-${this._uniqueId}"
707
1638
  name="${n}"
708
1639
  type="${t}"
709
- placeholder="${o}"
710
- class="${l?"has-error":""}"
711
- ${f?"required":""}
712
- ${_?`aria-label="${_}"`:""}
713
- ${l?'aria-invalid="true"':""}
714
- ${An}
1640
+ placeholder="${r}"
1641
+ class="${a?"has-error":""}"
1642
+ ${c?"required":""}
1643
+ ${v?`aria-label="${v}"`:""}
1644
+ ${a?'aria-invalid="true"':""}
1645
+ ${Bn}
715
1646
  />
716
1647
  </div>
717
- ${l?`<div id="error-${this._uniqueId}" class="error-text" role="alert">${l}</div>`:""}
718
- ${b&&!l?`<div id="helper-${this._uniqueId}" class="helper-text">${b}</div>`:""}
1648
+ ${a?`<div id="error-${this._uniqueId}" class="error-text" role="alert">${a}</div>`:""}
1649
+ ${e&&!a?`<div id="helper-${this._uniqueId}" class="helper-text">${e}</div>`:""}
719
1650
  </div>
720
- `}};d("af-input",It);vb=It});var Uo={};H(Uo,{default:()=>wb,AfriAlert:()=>Pt});var Pt,wb;var Vo=A(()=>{q();Pt=class Pt extends c{static get observedAttributes(){return["type","title","dismissible"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector(".close-btn")?.addEventListener("click",()=>{this.remove(),this.emit("af-dismiss")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("type")||"info",n=this.getAttribute("title")||"",a=this.hasAttribute("dismissible"),o={success:{bg:"#d4edda",border:"#1EB53A",text:"#155724",icon:"✓"},warning:{bg:"#fff3cd",border:"#FCD116",text:"#856404",icon:"⚠"},error:{bg:"#f8d7da",border:"#DC3545",text:"#721c24",icon:"✕"},info:{bg:"#d1ecf1",border:"#00A3DD",text:"#0c5460",icon:"ℹ"}},l=o[t]||o.info;this.shadowRoot.innerHTML=`
1651
+ `}};f("af-input",mn);Vl=mn});var Pr={};w(Pr,{default:()=>Nl,AfriAlert:()=>pn});var pn,Nl;var Tr=s(()=>{u();pn=class pn extends b{static get observedAttributes(){return["type","title","dismissible"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector(".close-btn")?.addEventListener("click",()=>{this.remove(),this.emit("af-dismiss")})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("type")||"info",n=this.getAttribute("title")||"",o=this.hasAttribute("dismissible"),r={success:{bg:"#d4edda",border:"#1EB53A",text:"#155724",icon:"✓"},warning:{bg:"#fff3cd",border:"#FCD116",text:"#856404",icon:"⚠"},error:{bg:"#f8d7da",border:"#DC3545",text:"#721c24",icon:"✕"},info:{bg:"#d1ecf1",border:"#00A3DD",text:"#0c5460",icon:"ℹ"}},a=r[t]||r.info;this.shadowRoot.innerHTML=`
721
1652
  <style>
722
1653
  :host {
723
1654
  display: block;
@@ -727,9 +1658,9 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
727
1658
  .alert {
728
1659
  padding: 13px 21px;
729
1660
  border-radius: 5px;
730
- border-left: 4px solid ${l.border};
731
- background: ${l.bg};
732
- color: ${l.text};
1661
+ border-left: 4px solid ${a.border};
1662
+ background: ${a.bg};
1663
+ color: ${a.text};
733
1664
  display: flex;
734
1665
  align-items: flex-start;
735
1666
  gap: 13px;
@@ -755,7 +1686,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
755
1686
  display: flex;
756
1687
  align-items: center;
757
1688
  justify-content: center;
758
- background: ${l.border};
1689
+ background: ${a.border};
759
1690
  color: white;
760
1691
  border-radius: 50%;
761
1692
  }
@@ -774,7 +1705,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
774
1705
  border: none;
775
1706
  font-size: 18px;
776
1707
  cursor: pointer;
777
- color: ${l.text};
1708
+ color: ${a.text};
778
1709
  opacity: 0.7;
779
1710
  padding: 0;
780
1711
  line-height: 1;
@@ -790,41 +1721,41 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
790
1721
  </style>
791
1722
 
792
1723
  <div class="alert" role="alert">
793
- <span class="icon">${l.icon}</span>
1724
+ <span class="icon">${a.icon}</span>
794
1725
  <div class="content">
795
1726
  ${n?`<div class="title">${n}</div>`:""}
796
1727
  <slot></slot>
797
1728
  </div>
798
- ${a?'<button class="close-btn" aria-label="Dismiss">×</button>':""}
1729
+ ${o?'<button class="close-btn" aria-label="Dismiss">×</button>':""}
799
1730
  </div>
800
- `}};d("af-alert",Pt);wb=Pt});var jo={};H(jo,{AfriGrid:()=>un});function db(t,n){let{sidebarSide:a="left",sidebarWidth:o="280px",minWidth:l="280px",gap:b="24px",columns:r,rows:h,align:f="stretch",justify:_="stretch",dense:M=!1}=n,X=M?"dense":"",L=`
801
- align-items: ${f};
802
- justify-items: ${_};
803
- gap: ${b};
804
- `;switch(t){case"sidebar":return a==="right"?`display: grid; grid-template-columns: 1fr ${o}; ${L}`:`display: grid; grid-template-columns: ${o} 1fr; ${L}`;case"holy-grail":return`
1731
+ `}};f("af-alert",pn);Nl=pn});var Zr={};w(Zr,{AfriGrid:()=>qo});function Kl(t,n){let{sidebarSide:o="left",sidebarWidth:r="280px",minWidth:a="280px",gap:e="24px",columns:l,rows:i,align:c="stretch",justify:v="stretch",dense:H=!1}=n,E=H?"dense":"",M=`
1732
+ align-items: ${c};
1733
+ justify-items: ${v};
1734
+ gap: ${e};
1735
+ `;switch(t){case"sidebar":return o==="right"?`display: grid; grid-template-columns: 1fr ${r}; ${M}`:`display: grid; grid-template-columns: ${r} 1fr; ${M}`;case"holy-grail":return`
805
1736
  display: grid;
806
- grid-template-columns: ${o} 1fr ${o};
1737
+ grid-template-columns: ${r} 1fr ${r};
807
1738
  grid-template-rows: auto 1fr auto;
808
- ${L}
1739
+ ${M}
809
1740
  `;case"bento":return`
810
1741
  display: grid;
811
1742
  grid-template-columns: repeat(12, 1fr);
812
1743
  grid-auto-rows: minmax(120px, auto);
813
- grid-auto-flow: row ${X};
814
- ${L}
1744
+ grid-auto-flow: row ${E};
1745
+ ${M}
815
1746
  `;case"masonry":return`
816
1747
  display: grid;
817
- grid-template-columns: repeat(auto-fill, minmax(${l}, 1fr));
1748
+ grid-template-columns: repeat(auto-fill, minmax(${a}, 1fr));
818
1749
  grid-template-rows: masonry;
819
- grid-auto-flow: row ${X};
820
- ${L}
821
- `;case"auto":default:{let R=r?`repeat(${r}, 1fr)`:`repeat(auto-fit, minmax(${l}, 1fr))`,An=h?`repeat(${h}, 1fr)`:"auto";return`
1750
+ grid-auto-flow: row ${E};
1751
+ ${M}
1752
+ `;case"auto":default:{let X=l?`repeat(${l}, 1fr)`:`repeat(auto-fit, minmax(${a}, 1fr))`,Bn=i?`repeat(${i}, 1fr)`:"auto";return`
822
1753
  display: grid;
823
- grid-template-columns: ${R};
824
- ${h?`grid-template-rows: ${An};`:""}
825
- grid-auto-flow: row ${X};
826
- ${L}
827
- `}}}var un;var eo=A(()=>{q();un=class un extends c{static get observedAttributes(){return["min-width","gap","columns","rows","layout","align","justify","dense","sidebar-side","sidebar-width"]}attributeChangedCallback(){if(this.isConnected)this.render()}_getAttrs(){return{minWidth:this.getAttribute("min-width")||"280px",gap:this.getAttribute("gap")||"24px",columns:this.getAttribute("columns")||null,rows:this.getAttribute("rows")||null,layout:this.getAttribute("layout")||"auto",align:this.getAttribute("align")||"stretch",justify:this.getAttribute("justify")||"stretch",dense:this.hasAttribute("dense"),sidebarSide:this.getAttribute("sidebar-side")||"left",sidebarWidth:this.getAttribute("sidebar-width")||"280px"}}_buildResponsiveBreakpoints(t){if(t.layout!=="auto"&&t.layout!=="masonry")return"";return`
1754
+ grid-template-columns: ${X};
1755
+ ${i?`grid-template-rows: ${Bn};`:""}
1756
+ grid-auto-flow: row ${E};
1757
+ ${M}
1758
+ `}}}var qo;var zr=s(()=>{u();qo=class qo extends b{static get observedAttributes(){return["min-width","gap","columns","rows","layout","align","justify","dense","sidebar-side","sidebar-width"]}attributeChangedCallback(){if(this.isConnected)this.render()}_getAttrs(){return{minWidth:this.getAttribute("min-width")||"280px",gap:this.getAttribute("gap")||"24px",columns:this.getAttribute("columns")||null,rows:this.getAttribute("rows")||null,layout:this.getAttribute("layout")||"auto",align:this.getAttribute("align")||"stretch",justify:this.getAttribute("justify")||"stretch",dense:this.hasAttribute("dense"),sidebarSide:this.getAttribute("sidebar-side")||"left",sidebarWidth:this.getAttribute("sidebar-width")||"280px"}}_buildResponsiveBreakpoints(t){if(t.layout!=="auto"&&t.layout!=="masonry")return"";return`
828
1759
  @media (max-width: 768px) {
829
1760
  .grid {
830
1761
  grid-template-columns: repeat(auto-fit, minmax(min(${t.minWidth}, 100%), 1fr));
@@ -841,7 +1772,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
841
1772
  grid-template-columns: 1fr;
842
1773
  }
843
1774
  }
844
- `}render(){let t=this._getAttrs(),n=db(t.layout,t),a=this._buildResponsiveBreakpoints(t)+this._buildSidebarResponsive(t);this.shadowRoot.innerHTML=Y`
1775
+ `}render(){let t=this._getAttrs(),n=Kl(t.layout,t),o=this._buildResponsiveBreakpoints(t)+this._buildSidebarResponsive(t);this.shadowRoot.innerHTML=g`
845
1776
  <style>
846
1777
  :host {
847
1778
  display: block;
@@ -860,7 +1791,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
860
1791
  min-width: 0; /* Prevent overflow in grid context */
861
1792
  }
862
1793
 
863
- ${a}
1794
+ ${o}
864
1795
  </style>
865
1796
 
866
1797
  <div
@@ -871,7 +1802,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
871
1802
  >
872
1803
  <slot></slot>
873
1804
  </div>
874
- `}connectedCallback(){this.render(),this._setupResizeObserver()}disconnectedCallback(){if(this._resizeObserver)this._resizeObserver.disconnect()}_setupResizeObserver(){if(typeof ResizeObserver>"u")return;let t=this.offsetWidth;this._resizeObserver=new ResizeObserver((n)=>{for(let a of n){let o=a.contentRect.width;if(Math.abs(o-t)>10)t=o,this.emit("af-grid-resize",{width:o,height:a.contentRect.height,layout:this.getAttribute("layout")||"auto"})}}),this._resizeObserver.observe(this)}setLayout(t){this.setAttribute("layout",t)}setColumns(t){this.setAttribute("columns",String(t))}setDense(t){if(t)this.setAttribute("dense","");else this.removeAttribute("dense")}};d("af-grid",un)});var No={};H(No,{AfriSection:()=>Bn});var Bn;var Ko=A(()=>{q();Bn=class Bn extends c{render(){let t=this.getAttribute("variant")||"default",n=this.getAttribute("title");this.shadowRoot.innerHTML=Y`
1805
+ `}connectedCallback(){this.render(),this._setupResizeObserver()}disconnectedCallback(){if(this._resizeObserver)this._resizeObserver.disconnect()}_setupResizeObserver(){if(typeof ResizeObserver>"u")return;let t=this.offsetWidth;this._resizeObserver=new ResizeObserver((n)=>{for(let o of n){let r=o.contentRect.width;if(Math.abs(r-t)>10)t=r,this.emit("af-grid-resize",{width:r,height:o.contentRect.height,layout:this.getAttribute("layout")||"auto"})}}),this._resizeObserver.observe(this)}setLayout(t){this.setAttribute("layout",t)}setColumns(t){this.setAttribute("columns",String(t))}setDense(t){if(t)this.setAttribute("dense","");else this.removeAttribute("dense")}};f("af-grid",qo)});var ta={};w(ta,{AfriSection:()=>Ho});var Ho;var na=s(()=>{u();Ho=class Ho extends b{render(){let t=this.getAttribute("variant")||"default",n=this.getAttribute("title");this.shadowRoot.innerHTML=g`
875
1806
  <style>
876
1807
  :host { display: block; width: 100%; }
877
1808
  .section {
@@ -898,20 +1829,20 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
898
1829
  }
899
1830
  </style>
900
1831
  <section class="section">
901
- ${n?Y`
1832
+ ${n?g`
902
1833
  <div class="section-header">
903
1834
  <h2>${n}</h2>
904
1835
  </div>
905
1836
  `:""}
906
1837
  <slot></slot>
907
1838
  </section>
908
- `}connectedCallback(){this.render()}};d("af-section",Bn)});var Io={};H(Io,{default:()=>_b,AfriIcon:()=>Ct});var Ct,_b;var Po=A(()=>{q();Ct=class Ct extends c{static get observedAttributes(){return["name","size"]}connectedCallback(){this.render()}render(){let t=this.getAttribute("name")||"circle",n=this.getAttribute("size")||"24",o={check:'<path d="M20 6L9 17l-5-5" />',x:'<path d="M18 6L6 18M6 6l12 12" />',"arrow-right":'<path d="M5 12h14M12 5l7 7-7 7" />',menu:'<path d="M3 12h18M3 6h18M3 18h18" />',search:'<circle cx="11" cy="11" r="8" /><path d="M21 21l-4.35-4.35" />'}[t]||"";this.shadowRoot.innerHTML=`
1839
+ `}connectedCallback(){this.render()}};f("af-section",Ho)});var oa={};w(oa,{default:()=>jl,AfriIcon:()=>sn});var sn,jl;var ra=s(()=>{u();sn=class sn extends b{static get observedAttributes(){return["name","size"]}connectedCallback(){this.render()}render(){let t=this.getAttribute("name")||"circle",n=this.getAttribute("size")||"24",r={check:'<path d="M20 6L9 17l-5-5" />',x:'<path d="M18 6L6 18M6 6l12 12" />',"arrow-right":'<path d="M5 12h14M12 5l7 7-7 7" />',menu:'<path d="M3 12h18M3 6h18M3 18h18" />',search:'<circle cx="11" cy="11" r="8" /><path d="M21 21l-4.35-4.35" />'}[t]||"";this.shadowRoot.innerHTML=`
909
1840
  <style>
910
1841
  :host { display: inline-flex; vertical-align: middle; }
911
1842
  svg { width: ${n}px; height: ${n}px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
912
1843
  </style>
913
- <svg viewBox="0 0 24 24">${o}</svg>
914
- `}};d("af-icon",Ct);_b=Ct});var Co={};H(Co,{default:()=>ib,AfriAccordion:()=>Tt});var Tt,ib;var To=A(()=>{q();Tt=class Tt extends c{static get observedAttributes(){return["theme","multiple"]}constructor(){super();this._openItems=new Set,this._uniqueId=Math.random().toString(36).substr(2,9),this.render()}connectedCallback(){this._setupAccordion()}_setupAccordion(){this.shadowRoot.querySelectorAll(".accordion-header").forEach((n,a)=>{n.addEventListener("click",()=>{this._toggleItem(a)})})}_toggleItem(t){let n=this.hasAttribute("multiple");if(this._openItems.has(t))this._openItems.delete(t);else{if(!n)this._openItems.clear();this._openItems.add(t)}this.render(),this._setupAccordion(),this.emit("af-toggle",{index:t,open:this._openItems.has(t)})}attributeChangedCallback(){this.render(),this._setupAccordion()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.querySelector('[slot="items"]'),a=n?Array.from(n.children):[],o={tanzania:{accent:"#1EB53A"},maasai:{accent:"#FF0000"},ndebele:{accent:"#4169E1"}},l=o[t]||o.tanzania;this.shadowRoot.innerHTML=`
1844
+ <svg viewBox="0 0 24 24">${r}</svg>
1845
+ `}};f("af-icon",sn);jl=sn});var aa={};w(aa,{default:()=>yl,AfriAccordion:()=>vn});var vn,yl;var ea=s(()=>{u();vn=class vn extends b{static get observedAttributes(){return["theme","multiple"]}constructor(){super();this._openItems=new Set,this._uniqueId=Math.random().toString(36).substr(2,9),this.render()}connectedCallback(){this._setupAccordion()}_setupAccordion(){this.shadowRoot.querySelectorAll(".accordion-header").forEach((n,o)=>{n.addEventListener("click",()=>{this._toggleItem(o)})})}_toggleItem(t){let n=this.hasAttribute("multiple");if(this._openItems.has(t))this._openItems.delete(t);else{if(!n)this._openItems.clear();this._openItems.add(t)}this.render(),this._setupAccordion(),this.emit("af-toggle",{index:t,open:this._openItems.has(t)})}attributeChangedCallback(){this.render(),this._setupAccordion()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.querySelector('[slot="items"]'),o=n?Array.from(n.children):[],r={tanzania:{accent:"#1EB53A"},maasai:{accent:"#FF0000"},ndebele:{accent:"#4169E1"}},a=r[t]||r.tanzania;this.shadowRoot.innerHTML=`
915
1846
  <style>
916
1847
  :host {
917
1848
  display: block;
@@ -954,7 +1885,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
954
1885
  }
955
1886
 
956
1887
  .accordion-header.active {
957
- color: ${l.accent};
1888
+ color: ${a.accent};
958
1889
  }
959
1890
 
960
1891
  .accordion-icon {
@@ -989,32 +1920,32 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
989
1920
  </style>
990
1921
 
991
1922
  <div class="accordion">
992
- ${a.map((b,r)=>{let h=this._openItems.has(r),f=`accordion-header-${this._uniqueId}-${r}`,_=`accordion-panel-${this._uniqueId}-${r}`;return`
1923
+ ${o.map((e,l)=>{let i=this._openItems.has(l),c=`accordion-header-${this._uniqueId}-${l}`,v=`accordion-panel-${this._uniqueId}-${l}`;return`
993
1924
  <div class="accordion-item">
994
1925
  <button
995
- class="accordion-header ${h?"active":""}"
996
- aria-expanded="${h}"
997
- aria-controls="${_}"
998
- id="${f}"
1926
+ class="accordion-header ${i?"active":""}"
1927
+ aria-expanded="${i}"
1928
+ aria-controls="${v}"
1929
+ id="${c}"
999
1930
  >
1000
- <span>${b.getAttribute("title")||`Item ${r+1}`}</span>
1931
+ <span>${e.getAttribute("title")||`Item ${l+1}`}</span>
1001
1932
  <span class="accordion-icon">▼</span>
1002
1933
  </button>
1003
1934
  <div
1004
- class="accordion-content ${h?"open":""}"
1005
- id="${_}"
1935
+ class="accordion-content ${i?"open":""}"
1936
+ id="${v}"
1006
1937
  role="region"
1007
- aria-labelledby="${f}"
1938
+ aria-labelledby="${c}"
1008
1939
  >
1009
1940
  <div class="accordion-body">
1010
- ${b.innerHTML}
1941
+ ${e.innerHTML}
1011
1942
  </div>
1012
1943
  </div>
1013
1944
  </div>
1014
1945
  `}).join("")}
1015
1946
  </div>
1016
1947
  <slot name="items"></slot>
1017
- `}};d("af-accordion",Tt);ib=Tt});var yo={};H(yo,{default:()=>Ab,AfriHero:()=>yt});var yt,Ab;var Zo=A(()=>{q();Ot();pt();yt=class yt extends c{static get observedAttributes(){return["title","subtitle","pattern","overlay"]}connectedCallback(){super.connectedCallback(),this.render(),this.loadStyles()}render(){let t=this.getAttribute("title")||"AfriCode",n=this.getAttribute("subtitle")||"",a=this.getAttribute("pattern")||"",o=this.getAttribute("variant")||"default";this.shadowRoot.innerHTML=`
1948
+ `}};f("af-accordion",vn);yl=vn});var la={};w(la,{default:()=>Cl,AfriHero:()=>$n});var $n,Cl;var ia=s(()=>{u();en();Vt();$n=class $n extends b{static get observedAttributes(){return["title","subtitle","pattern","overlay"]}connectedCallback(){super.connectedCallback(),this.render(),this.loadStyles()}render(){let t=this.getAttribute("title")||"AfriCode",n=this.getAttribute("subtitle")||"",o=this.getAttribute("pattern")||"",r=this.getAttribute("variant")||"default";this.shadowRoot.innerHTML=`
1018
1949
  <style>
1019
1950
  :host {
1020
1951
  display: flex;
@@ -1082,11 +2013,11 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1082
2013
  z-index: 2;
1083
2014
  }
1084
2015
 
1085
- ${a?`
2016
+ ${o?`
1086
2017
  .pattern-bg {
1087
2018
  position: absolute;
1088
2019
  inset: 0;
1089
- background-image: url('${a}');
2020
+ background-image: url('${o}');
1090
2021
  background-size: cover;
1091
2022
  background-position: center;
1092
2023
  opacity: 0.15;
@@ -1104,7 +2035,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1104
2035
 
1105
2036
  <div class="aura"></div>
1106
2037
  <div class="mesh"></div>
1107
- ${a?'<div class="pattern-bg"></div>':""}
2038
+ ${o?'<div class="pattern-bg"></div>':""}
1108
2039
 
1109
2040
  <div class="content">
1110
2041
  <h1>${t}</h1>
@@ -1114,7 +2045,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1114
2045
  </div>
1115
2046
  <slot></slot>
1116
2047
  </div>
1117
- `}};d("af-hero",yt);Ab=yt});var so={};H(so,{default:()=>mb,AfriTable:()=>Zt});var Zt,mb;var zo=A(()=>{q();Zt=class Zt extends c{static get observedAttributes(){return["theme","striped","hoverable"]}constructor(){super();this._columns=[],this._data=[],this._sortColumn=null,this._sortDirection="asc",this.render()}set columns(t){this._columns=t,this.render()}set data(t){this._data=t,this.render()}attributeChangedCallback(){this.render()}_handleSort(t){if(this._sortColumn===t)this._sortDirection=this._sortDirection==="asc"?"desc":"asc";else this._sortColumn=t,this._sortDirection="asc";this.emit("af-sort",{column:t,direction:this._sortDirection}),this.render()}_getSortedData(){if(!this._sortColumn)return this._data;return[...this._data].sort((t,n)=>{let a=t[this._sortColumn],o=n[this._sortColumn],l=this._sortDirection==="asc"?1:-1;if(typeof a==="number")return(a-o)*l;return String(a).localeCompare(String(o))*l})}render(){let t=this.getAttribute("theme")||"tanzania",n=this.hasAttribute("striped"),a=this.hasAttribute("hoverable"),o={tanzania:{header:"#1EB53A",text:"#FFFFFF",accent:"#FCD116"},maasai:{header:"#8B0000",text:"#FFFFFF",accent:"#FF0000"},ndebele:{header:"#4169E1",text:"#FFFFFF",accent:"#FFD700"}},l=o[t]||o.tanzania,b=this._getSortedData();this.shadowRoot.innerHTML=`
2048
+ `}};f("af-hero",$n);Cl=$n});var ba={};w(ba,{default:()=>Il,AfriTable:()=>un});var un,Il;var ca=s(()=>{u();un=class un extends b{static get observedAttributes(){return["theme","striped","hoverable"]}constructor(){super();this._columns=[],this._data=[],this._sortColumn=null,this._sortDirection="asc",this.render()}set columns(t){this._columns=t,this.render()}set data(t){this._data=t,this.render()}attributeChangedCallback(){this.render()}_handleSort(t){if(this._sortColumn===t)this._sortDirection=this._sortDirection==="asc"?"desc":"asc";else this._sortColumn=t,this._sortDirection="asc";this.emit("af-sort",{column:t,direction:this._sortDirection}),this.render()}_getSortedData(){if(!this._sortColumn)return this._data;return[...this._data].sort((t,n)=>{let o=t[this._sortColumn],r=n[this._sortColumn],a=this._sortDirection==="asc"?1:-1;if(typeof o==="number")return(o-r)*a;return String(o).localeCompare(String(r))*a})}render(){let t=this.getAttribute("theme")||"tanzania",n=this.hasAttribute("striped"),o=this.hasAttribute("hoverable"),r={tanzania:{header:"#1EB53A",text:"#FFFFFF",accent:"#FCD116"},maasai:{header:"#8B0000",text:"#FFFFFF",accent:"#FF0000"},ndebele:{header:"#4169E1",text:"#FFFFFF",accent:"#FFD700"}},a=r[t]||r.tanzania,e=this._getSortedData();this.shadowRoot.innerHTML=`
1118
2049
  <style>
1119
2050
  :host {
1120
2051
  display: block;
@@ -1134,8 +2065,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1134
2065
  }
1135
2066
 
1136
2067
  th {
1137
- background: ${l.header};
1138
- color: ${l.text};
2068
+ background: ${a.header};
2069
+ color: ${a.text};
1139
2070
  padding: 13px;
1140
2071
  text-align: left;
1141
2072
  font-weight: 600;
@@ -1164,9 +2095,9 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1164
2095
  }
1165
2096
  `:""}
1166
2097
 
1167
- ${a?`
2098
+ ${o?`
1168
2099
  tbody tr:hover {
1169
- background: ${l.accent}20;
2100
+ background: ${a.accent}20;
1170
2101
  }
1171
2102
  `:""}
1172
2103
 
@@ -1181,20 +2112,20 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1181
2112
  <table>
1182
2113
  <thead>
1183
2114
  <tr>
1184
- ${this._columns.map((r)=>`
1185
- <th data-column="${r.key}">
1186
- ${r.label}
2115
+ ${this._columns.map((l)=>`
2116
+ <th data-column="${l.key}">
2117
+ ${l.label}
1187
2118
  <span class="sort-icon">
1188
- ${this._sortColumn===r.key?this._sortDirection==="asc"?"↑":"↓":"↕"}
2119
+ ${this._sortColumn===l.key?this._sortDirection==="asc"?"↑":"↓":"↕"}
1189
2120
  </span>
1190
2121
  </th>
1191
2122
  `).join("")}
1192
2123
  </tr>
1193
2124
  </thead>
1194
2125
  <tbody>
1195
- ${b.length?b.map((r)=>`
2126
+ ${e.length?e.map((l)=>`
1196
2127
  <tr>
1197
- ${this._columns.map((h)=>`<td>${r[h.key]??""}</td>`).join("")}
2128
+ ${this._columns.map((i)=>`<td>${l[i.key]??""}</td>`).join("")}
1198
2129
  </tr>
1199
2130
  `).join(""):`
1200
2131
  <tr>
@@ -1204,7 +2135,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1204
2135
  </tbody>
1205
2136
  </table>
1206
2137
  </div>
1207
- `,this.shadowRoot.querySelectorAll("th").forEach((r)=>{r.addEventListener("click",()=>{this._handleSort(r.dataset.column)})})}};d("af-table",Zt);mb=Zt});var ta={};H(ta,{default:()=>xb,AfriModal:()=>st});var st,xb;var na=A(()=>{q();st=class st extends c{static get observedAttributes(){return["open","theme","size","aria-label","aria-labelledby"]}constructor(){super();this.render()}connectedCallback(){this._setupListeners()}_setupListeners(){this.shadowRoot.querySelector(".backdrop")?.addEventListener("click",(t)=>{if(t.target.classList.contains("backdrop"))this.close()}),this.shadowRoot.querySelector(".close-btn")?.addEventListener("click",()=>{this.close()}),document.addEventListener("keydown",(t)=>{if(t.key==="Escape"&&this.hasAttribute("open"))this.close()}),this.shadowRoot.addEventListener("keydown",(t)=>{if(t.key==="Tab"&&this.hasAttribute("open"))this._handleTabKey(t)})}_getFocusableElements(){let t=this.shadowRoot.querySelector(".modal"),n='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])',a=Array.from(t?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')||[]),o=Array.from(this.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'));return[...a,...o]}_focusFirstFocusableElement(){let t=this._getFocusableElements();if(t.length>0)t[0].focus();else this.shadowRoot.querySelector(".close-btn")?.focus()}_handleTabKey(t){let n=this._getFocusableElements();if(n.length===0){t.preventDefault();return}let a=n[0],o=n[n.length-1];if(t.shiftKey){if(document.activeElement===a)t.preventDefault(),o.focus()}else if(document.activeElement===o)t.preventDefault(),a.focus()}open(){this.setAttribute("open",""),document.body.style.overflow="hidden",this._previousFocus=document.activeElement,this._focusFirstFocusableElement(),this.emit("af-open")}close(){if(this.removeAttribute("open"),document.body.style.overflow="",this._previousFocus&&this._previousFocus.focus)this._previousFocus.focus();this.emit("af-close")}attributeChangedCallback(t,n,a){if(this.render(),t==="open")this._setupListeners()}render(){let t=this.hasAttribute("open"),n=this.getAttribute("theme")||"tanzania",a=this.getAttribute("size")||"md",o={tanzania:{accent:"#1EB53A"},maasai:{accent:"#FF0000"},ndebele:{accent:"#4169E1"}},l=o[n]||o.tanzania,b={sm:"400px",md:"560px",lg:"720px",full:"95vw"},r=this.getAttribute("aria-label"),h=this.getAttribute("aria-labelledby")||"modal-title";this.shadowRoot.innerHTML=`
2138
+ `,this.shadowRoot.querySelectorAll("th").forEach((l)=>{l.addEventListener("click",()=>{this._handleSort(l.dataset.column)})})}};f("af-table",un);Il=un});var fa={};w(fa,{default:()=>Pl,AfriModal:()=>wn});var wn,Pl;var da=s(()=>{u();wn=class wn extends b{static get observedAttributes(){return["open","theme","size","aria-label","aria-labelledby"]}constructor(){super();this.render()}connectedCallback(){this._setupListeners()}_setupListeners(){this.shadowRoot.querySelector(".backdrop")?.addEventListener("click",(t)=>{if(t.target.classList.contains("backdrop"))this.close()}),this.shadowRoot.querySelector(".close-btn")?.addEventListener("click",()=>{this.close()}),document.addEventListener("keydown",(t)=>{if(t.key==="Escape"&&this.hasAttribute("open"))this.close()}),this.shadowRoot.addEventListener("keydown",(t)=>{if(t.key==="Tab"&&this.hasAttribute("open"))this._handleTabKey(t)})}_getFocusableElements(){let t=this.shadowRoot.querySelector(".modal"),n='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])',o=Array.from(t?.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')||[]),r=Array.from(this.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'));return[...o,...r]}_focusFirstFocusableElement(){let t=this._getFocusableElements();if(t.length>0)t[0].focus();else this.shadowRoot.querySelector(".close-btn")?.focus()}_handleTabKey(t){let n=this._getFocusableElements();if(n.length===0){t.preventDefault();return}let o=n[0],r=n[n.length-1];if(t.shiftKey){if(document.activeElement===o)t.preventDefault(),r.focus()}else if(document.activeElement===r)t.preventDefault(),o.focus()}open(){this.setAttribute("open",""),document.body.style.overflow="hidden",this._previousFocus=document.activeElement,this._focusFirstFocusableElement(),this.emit("af-open")}close(){if(this.removeAttribute("open"),document.body.style.overflow="",this._previousFocus&&this._previousFocus.focus)this._previousFocus.focus();this.emit("af-close")}attributeChangedCallback(t,n,o){if(this.render(),t==="open")this._setupListeners()}render(){let t=this.hasAttribute("open"),n=this.getAttribute("theme")||"tanzania",o=this.getAttribute("size")||"md",r={tanzania:{accent:"#1EB53A"},maasai:{accent:"#FF0000"},ndebele:{accent:"#4169E1"}},a=r[n]||r.tanzania,e={sm:"400px",md:"560px",lg:"720px",full:"95vw"},l=this.getAttribute("aria-label"),i=this.getAttribute("aria-labelledby")||"modal-title";this.shadowRoot.innerHTML=`
1208
2139
  <style>
1209
2140
  :host {
1210
2141
  font-family: 'Inter', system-ui, sans-serif;
@@ -1231,7 +2162,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1231
2162
  background: white;
1232
2163
  border-radius: 8px;
1233
2164
  width: 100%;
1234
- max-width: ${b[a]||b.md};
2165
+ max-width: ${e[o]||e.md};
1235
2166
  max-height: 90vh;
1236
2167
  overflow: hidden;
1237
2168
  display: flex;
@@ -1276,7 +2207,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1276
2207
  }
1277
2208
 
1278
2209
  .close-btn:hover {
1279
- color: ${l.accent};
2210
+ color: ${a.accent};
1280
2211
  }
1281
2212
 
1282
2213
  .modal-body {
@@ -1295,7 +2226,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1295
2226
  </style>
1296
2227
 
1297
2228
  <div class="backdrop">
1298
- <div class="modal" role="dialog" aria-modal="true" ${r?`aria-label="${r}"`:`aria-labelledby="${h}"`}>
2229
+ <div class="modal" role="dialog" aria-modal="true" ${l?`aria-label="${l}"`:`aria-labelledby="${i}"`}>
1299
2230
  <div class="modal-header">
1300
2231
  <slot name="header" id="modal-title"></slot>
1301
2232
  <button class="close-btn" aria-label="Close modal">×</button>
@@ -1308,7 +2239,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1308
2239
  </div>
1309
2240
  </div>
1310
2241
  </div>
1311
- `}};d("af-modal",st);xb=st});var oa={};H(oa,{default:()=>kb,AfriTabs:()=>zt});var zt,kb;var aa=A(()=>{q();zt=class zt extends c{static get observedAttributes(){return["theme"]}constructor(){super();this._activeTab=0,this.render()}connectedCallback(){this._setupTabs(),this.addEventListener("keydown",this._handleKeydown.bind(this))}_handleKeydown(t){let n=this.querySelector('[slot="tabs"]'),a=n?Array.from(n.children):[];if(a.length===0)return;switch(t.key){case"ArrowLeft":t.preventDefault(),this._activeTab=this._activeTab>0?this._activeTab-1:a.length-1,this.render(),this._setupTabs(),this._focusActiveTab();break;case"ArrowRight":t.preventDefault(),this._activeTab=this._activeTab<a.length-1?this._activeTab+1:0,this.render(),this._setupTabs(),this._focusActiveTab();break;case"Home":t.preventDefault(),this._activeTab=0,this.render(),this._setupTabs(),this._focusActiveTab();break;case"End":t.preventDefault(),this._activeTab=a.length-1,this.render(),this._setupTabs(),this._focusActiveTab();break}}_focusActiveTab(){let t=this.shadowRoot.querySelectorAll(".tab-button");if(t[this._activeTab])t[this._activeTab].focus()}_setupTabs(){this.shadowRoot.querySelectorAll(".tab-button").forEach((n,a)=>{n.addEventListener("click",()=>{this._activeTab=a,this.render(),this._setupTabs(),this.emit("af-tab-change",{index:a,tab:n.textContent})})})}attributeChangedCallback(){this.render(),this._setupTabs()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.querySelector('[slot="tabs"]'),a=n?Array.from(n.children):[],o={tanzania:{active:"#1EB53A",text:"#FFFFFF"},maasai:{active:"#FF0000",text:"#FFFFFF"},ndebele:{active:"#4169E1",text:"#FFFFFF"}},l=o[t]||o.tanzania;this.shadowRoot.innerHTML=`
2242
+ `}};f("af-modal",wn);Pl=wn});var ha={};w(ha,{default:()=>Tl,AfriTabs:()=>xn});var xn,Tl;var ga=s(()=>{u();xn=class xn extends b{static get observedAttributes(){return["theme"]}constructor(){super();this._activeTab=0,this.render()}connectedCallback(){this._setupTabs(),this.addEventListener("keydown",this._handleKeydown.bind(this))}_handleKeydown(t){let n=this.querySelector('[slot="tabs"]'),o=n?Array.from(n.children):[];if(o.length===0)return;switch(t.key){case"ArrowLeft":t.preventDefault(),this._activeTab=this._activeTab>0?this._activeTab-1:o.length-1,this.render(),this._setupTabs(),this._focusActiveTab();break;case"ArrowRight":t.preventDefault(),this._activeTab=this._activeTab<o.length-1?this._activeTab+1:0,this.render(),this._setupTabs(),this._focusActiveTab();break;case"Home":t.preventDefault(),this._activeTab=0,this.render(),this._setupTabs(),this._focusActiveTab();break;case"End":t.preventDefault(),this._activeTab=o.length-1,this.render(),this._setupTabs(),this._focusActiveTab();break}}_focusActiveTab(){let t=this.shadowRoot.querySelectorAll(".tab-button");if(t[this._activeTab])t[this._activeTab].focus()}_setupTabs(){this.shadowRoot.querySelectorAll(".tab-button").forEach((n,o)=>{n.addEventListener("click",()=>{this._activeTab=o,this.render(),this._setupTabs(),this.emit("af-tab-change",{index:o,tab:n.textContent})})})}attributeChangedCallback(){this.render(),this._setupTabs()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.querySelector('[slot="tabs"]'),o=n?Array.from(n.children):[],r={tanzania:{active:"#1EB53A",text:"#FFFFFF"},maasai:{active:"#FF0000",text:"#FFFFFF"},ndebele:{active:"#4169E1",text:"#FFFFFF"}},a=r[t]||r.tanzania;this.shadowRoot.innerHTML=`
1312
2243
  <style>
1313
2244
  :host {
1314
2245
  display: block;
@@ -1344,13 +2275,13 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1344
2275
  }
1345
2276
 
1346
2277
  .tab-button:hover {
1347
- color: ${l.active};
2278
+ color: ${a.active};
1348
2279
  background: rgba(0,0,0,0.03);
1349
2280
  }
1350
2281
 
1351
2282
  .tab-button.active {
1352
- color: ${l.active};
1353
- border-bottom-color: ${l.active};
2283
+ color: ${a.active};
2284
+ border-bottom-color: ${a.active};
1354
2285
  background: white;
1355
2286
  }
1356
2287
 
@@ -1380,30 +2311,30 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1380
2311
 
1381
2312
  <div class="tabs-container">
1382
2313
  <div class="tab-list" role="tablist">
1383
- ${a.map((b,r)=>`
1384
- <button class="tab-button ${r===this._activeTab?"active":""}"
2314
+ ${o.map((e,l)=>`
2315
+ <button class="tab-button ${l===this._activeTab?"active":""}"
1385
2316
  role="tab"
1386
- aria-selected="${r===this._activeTab}"
1387
- aria-controls="panel-${r}"
1388
- tabindex="${r===this._activeTab?"0":"-1"}"
1389
- id="tab-${r}">
1390
- ${b.getAttribute("label")||`Tab ${r+1}`}
2317
+ aria-selected="${l===this._activeTab}"
2318
+ aria-controls="panel-${l}"
2319
+ tabindex="${l===this._activeTab?"0":"-1"}"
2320
+ id="tab-${l}">
2321
+ ${e.getAttribute("label")||`Tab ${l+1}`}
1391
2322
  </button>
1392
2323
  `).join("")}
1393
2324
  </div>
1394
2325
  <div class="tab-panels">
1395
- ${a.map((b,r)=>`
1396
- <div class="tab-panel ${r===this._activeTab?"active":""}"
2326
+ ${o.map((e,l)=>`
2327
+ <div class="tab-panel ${l===this._activeTab?"active":""}"
1397
2328
  role="tabpanel"
1398
- id="panel-${r}"
1399
- aria-labelledby="tab-${r}">
1400
- ${b.innerHTML}
2329
+ id="panel-${l}"
2330
+ aria-labelledby="tab-${l}">
2331
+ ${e.innerHTML}
1401
2332
  </div>
1402
2333
  `).join("")}
1403
2334
  </div>
1404
2335
  </div>
1405
2336
  <slot name="tabs"></slot>
1406
- `}};d("af-tabs",zt);kb=zt});var la={};H(la,{default:()=>qb,AfriSidebar:()=>tn});var tn,qb;var ba=A(()=>{q();Ot();pt();tn=class tn extends c{static get observedAttributes(){return["position"]}constructor(){super();this._unsubscribe=null}connectedCallback(){super.connectedCallback(),this._unsubscribe=Dt(()=>{this.updateUI()}),this.render()}disconnectedCallback(){if(this._unsubscribe)this._unsubscribe()}updateUI(){let t=Ht.ui.sidebarCollapsed,n=this.shadowRoot.querySelector(".sidebar"),a=this.shadowRoot.querySelector(".sidebar-title"),o=this.shadowRoot.getElementById("toggle"),l=this.shadowRoot.querySelector(".sidebar-content");if(n)n.style.width=t?"60px":"260px";if(a)a.style.opacity=t?"0":"1";if(l)l.style.padding=t?"12px":"20px";if(o)o.innerHTML=t?"→":"← Collapse"}render(){let t=this.getAttribute("position")||"left",n=Ht.ui.sidebarCollapsed;this.shadowRoot.innerHTML=`
2337
+ `}};f("af-tabs",xn);Tl=xn});var ma={};w(ma,{default:()=>Zl,AfriSidebar:()=>An});var An,Zl;var pa=s(()=>{u();en();Vt();An=class An extends b{static get observedAttributes(){return["position"]}constructor(){super();this._unsubscribe=null}connectedCallback(){super.connectedCallback(),this._unsubscribe=an(()=>{this.updateUI()}),this.render()}disconnectedCallback(){if(this._unsubscribe)this._unsubscribe()}updateUI(){let t=Nt.ui.sidebarCollapsed,n=this.shadowRoot.querySelector(".sidebar"),o=this.shadowRoot.querySelector(".sidebar-title"),r=this.shadowRoot.getElementById("toggle"),a=this.shadowRoot.querySelector(".sidebar-content");if(n)n.style.width=t?"60px":"260px";if(o)o.style.opacity=t?"0":"1";if(a)a.style.padding=t?"12px":"20px";if(r)r.innerHTML=t?"→":"← Collapse"}render(){let t=this.getAttribute("position")||"left",n=Nt.ui.sidebarCollapsed;this.shadowRoot.innerHTML=`
1407
2338
  <style>
1408
2339
  :host {
1409
2340
  display: block;
@@ -1512,7 +2443,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1512
2443
  </button>
1513
2444
  </div>
1514
2445
  </aside>
1515
- `,this.shadowRoot.getElementById("toggle").addEventListener("click",()=>{actions.toggleSidebar()})}};d("af-sidebar",tn);qb=tn});var ra={};H(ra,{default:()=>pb,AfriDropdown:()=>nn});var nn,pb;var ha=A(()=>{q();nn=class nn extends c{static get observedAttributes(){return["label","open"]}constructor(){super();this._open=!1,this.render()}toggle(){if(this._open=!this._open,this._open)this.setAttribute("open","");else this.removeAttribute("open");this.render()}close(){this._open=!1,this.removeAttribute("open"),this.render()}connectedCallback(){document.addEventListener("click",(t)=>{if(!this.contains(t.target))this.close()}),this.addEventListener("keydown",this._handleKeydown.bind(this))}_handleKeydown(t){let n=this.shadowRoot.getElementById("trigger");switch(t.key){case"Enter":case" ":t.preventDefault(),this.toggle();break;case"Escape":if(this._open)t.preventDefault(),this.close(),n.focus();break;case"ArrowDown":if(!this._open)t.preventDefault(),this.toggle();break}}render(){let t=this.getAttribute("label")||"Menu",n=this.hasAttribute("open");this.shadowRoot.innerHTML=`
2446
+ `,this.shadowRoot.getElementById("toggle").addEventListener("click",()=>{actions.toggleSidebar()})}};f("af-sidebar",An);Zl=An});var sa={};w(sa,{default:()=>zl,AfriDropdown:()=>_n});var _n,zl;var va=s(()=>{u();_n=class _n extends b{static get observedAttributes(){return["label","open"]}constructor(){super();this._open=!1,this.render()}toggle(){if(this._open=!this._open,this._open)this.setAttribute("open","");else this.removeAttribute("open");this.render()}close(){this._open=!1,this.removeAttribute("open"),this.render()}connectedCallback(){document.addEventListener("click",(t)=>{if(!this.contains(t.target))this.close()}),this.addEventListener("keydown",this._handleKeydown.bind(this))}_handleKeydown(t){let n=this.shadowRoot.getElementById("trigger");switch(t.key){case"Enter":case" ":t.preventDefault(),this.toggle();break;case"Escape":if(this._open)t.preventDefault(),this.close(),n.focus();break;case"ArrowDown":if(!this._open)t.preventDefault(),this.toggle();break}}render(){let t=this.getAttribute("label")||"Menu",n=this.hasAttribute("open");this.shadowRoot.innerHTML=`
1516
2447
  <style>
1517
2448
  :host {
1518
2449
  display: inline-block;
@@ -1594,7 +2525,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1594
2525
  <div class="dropdown-menu" role="menu" ${n?"":'aria-hidden="true"'}>
1595
2526
  <slot></slot>
1596
2527
  </div>
1597
- `,this.shadowRoot.getElementById("trigger").addEventListener("click",(a)=>{a.stopPropagation(),this.toggle()})}};d("af-dropdown",nn);pb=nn});var fa={};H(fa,{default:()=>Hb,AfriSelect:()=>on});var on,Hb;var ga=A(()=>{q();on=class on extends c{static get observedAttributes(){return["label","placeholder","theme","error","required","aria-label","aria-describedby"]}constructor(){super();this._uniqueId=Math.random().toString(36).substr(2,9),this._isOpen=!1,this._selectedIndex=-1,this._options=[],this.render()}get value(){return this._selectedIndex>=0?this._options[this._selectedIndex]?.value:""}connectedCallback(){this._options=Array.from(this.querySelectorAll("option")).map((t)=>({value:t.value,label:t.textContent})),this.render(),this._setupListeners()}_setupListeners(){let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");t?.addEventListener("click",()=>{this._toggleDropdown()}),t?.addEventListener("keydown",(a)=>{this._handleKeydown(a)}),this.shadowRoot.querySelectorAll(".select-option").forEach((a,o)=>{a.addEventListener("click",()=>{this._selectOption(o)})}),document.addEventListener("click",(a)=>{if(!this.contains(a.target)&&this._isOpen)this._closeDropdown()})}_toggleDropdown(){this._isOpen=!this._isOpen;let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");if(n?.classList.toggle("open",this._isOpen),t?.classList.toggle("open",this._isOpen),this._isOpen)t?.setAttribute("aria-expanded","true"),n?.setAttribute("aria-hidden","false");else t?.setAttribute("aria-expanded","false"),n?.setAttribute("aria-hidden","true")}_closeDropdown(){this._isOpen=!1;let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");n?.classList.remove("open"),t?.classList.remove("open"),t?.setAttribute("aria-expanded","false"),n?.setAttribute("aria-hidden","true")}_selectOption(t){this._selectedIndex=t,this._closeDropdown(),this.render(),this._setupListeners(),this.emit("af-change",{value:this.value,label:this._options[t].label})}_handleKeydown(t){let n=this.shadowRoot.querySelector(".select-trigger");switch(t.key){case"Enter":case" ":t.preventDefault(),this._toggleDropdown();break;case"Escape":if(this._isOpen)t.preventDefault(),this._closeDropdown(),n.focus();break;case"ArrowDown":if(!this._isOpen)t.preventDefault(),this._toggleDropdown();else t.preventDefault(),this._navigateOptions(1);break;case"ArrowUp":if(this._isOpen)t.preventDefault(),this._navigateOptions(-1);break}}_navigateOptions(t){let n=this.shadowRoot.querySelectorAll(".select-option");if(n.length===0)return;let a=this._selectedIndex+t;if(a<0)a=n.length-1;if(a>=n.length)a=0;this._selectedIndex=a,this.render(),this._setupListeners(),this.shadowRoot.querySelector(".select-option.selected")?.scrollIntoView({block:"nearest"})}attributeChangedCallback(){this.render(),this._setupListeners()}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"Select an option",a=this.getAttribute("theme")||"tanzania",o=this.getAttribute("error")||"",l=this.hasAttribute("required"),b=this.getAttribute("aria-label"),r=this.getAttribute("aria-describedby"),h={tanzania:{focus:"#1EB53A",error:"#DC3545"},maasai:{focus:"#FF0000",error:"#8B0000"},ndebele:{focus:"#4169E1",error:"#DC143C"}},f=h[a]||h.tanzania,_=[];if(o)_.push(`error-${this._uniqueId}`);if(r)_.push(...r.split(" "));let M=_.length>0?`aria-describedby="${_.join(" ")}"`:"",X=this._selectedIndex>=0?this._options[this._selectedIndex]?.label:n;this.shadowRoot.innerHTML=`
2528
+ `,this.shadowRoot.getElementById("trigger").addEventListener("click",(o)=>{o.stopPropagation(),this.toggle()})}};f("af-dropdown",_n);zl=_n});var $a={};w($a,{default:()=>ti,AfriSelect:()=>kn});var kn,ti;var ua=s(()=>{u();kn=class kn extends b{static get observedAttributes(){return["label","placeholder","theme","error","required","aria-label","aria-describedby"]}constructor(){super();this._uniqueId=Math.random().toString(36).substr(2,9),this._isOpen=!1,this._selectedIndex=-1,this._options=[],this.render()}get value(){return this._selectedIndex>=0?this._options[this._selectedIndex]?.value:""}connectedCallback(){this._options=Array.from(this.querySelectorAll("option")).map((t)=>({value:t.value,label:t.textContent})),this.render(),this._setupListeners()}_setupListeners(){let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");t?.addEventListener("click",()=>{this._toggleDropdown()}),t?.addEventListener("keydown",(o)=>{this._handleKeydown(o)}),this.shadowRoot.querySelectorAll(".select-option").forEach((o,r)=>{o.addEventListener("click",()=>{this._selectOption(r)})}),document.addEventListener("click",(o)=>{if(!this.contains(o.target)&&this._isOpen)this._closeDropdown()})}_toggleDropdown(){this._isOpen=!this._isOpen;let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");if(n?.classList.toggle("open",this._isOpen),t?.classList.toggle("open",this._isOpen),this._isOpen)t?.setAttribute("aria-expanded","true"),n?.setAttribute("aria-hidden","false");else t?.setAttribute("aria-expanded","false"),n?.setAttribute("aria-hidden","true")}_closeDropdown(){this._isOpen=!1;let t=this.shadowRoot.querySelector(".select-trigger"),n=this.shadowRoot.querySelector(".select-dropdown");n?.classList.remove("open"),t?.classList.remove("open"),t?.setAttribute("aria-expanded","false"),n?.setAttribute("aria-hidden","true")}_selectOption(t){this._selectedIndex=t,this._closeDropdown(),this.render(),this._setupListeners(),this.emit("af-change",{value:this.value,label:this._options[t].label})}_handleKeydown(t){let n=this.shadowRoot.querySelector(".select-trigger");switch(t.key){case"Enter":case" ":t.preventDefault(),this._toggleDropdown();break;case"Escape":if(this._isOpen)t.preventDefault(),this._closeDropdown(),n.focus();break;case"ArrowDown":if(!this._isOpen)t.preventDefault(),this._toggleDropdown();else t.preventDefault(),this._navigateOptions(1);break;case"ArrowUp":if(this._isOpen)t.preventDefault(),this._navigateOptions(-1);break}}_navigateOptions(t){let n=this.shadowRoot.querySelectorAll(".select-option");if(n.length===0)return;let o=this._selectedIndex+t;if(o<0)o=n.length-1;if(o>=n.length)o=0;this._selectedIndex=o,this.render(),this._setupListeners(),this.shadowRoot.querySelector(".select-option.selected")?.scrollIntoView({block:"nearest"})}attributeChangedCallback(){this.render(),this._setupListeners()}render(){let t=this.getAttribute("label")||"",n=this.getAttribute("placeholder")||"Select an option",o=this.getAttribute("theme")||"tanzania",r=this.getAttribute("error")||"",a=this.hasAttribute("required"),e=this.getAttribute("aria-label"),l=this.getAttribute("aria-describedby"),i={tanzania:{focus:"#1EB53A",error:"#DC3545"},maasai:{focus:"#FF0000",error:"#8B0000"},ndebele:{focus:"#4169E1",error:"#DC143C"}},c=i[o]||i.tanzania,v=[];if(r)v.push(`error-${this._uniqueId}`);if(l)v.push(...l.split(" "));let H=v.length>0?`aria-describedby="${v.join(" ")}"`:"",E=this._selectedIndex>=0?this._options[this._selectedIndex]?.label:n;this.shadowRoot.innerHTML=`
1598
2529
  <style>
1599
2530
  :host {
1600
2531
  display: block;
@@ -1611,7 +2542,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1611
2542
  }
1612
2543
 
1613
2544
  .required-star {
1614
- color: ${f.error};
2545
+ color: ${c.error};
1615
2546
  margin-left: 2px;
1616
2547
  }
1617
2548
 
@@ -1623,7 +2554,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1623
2554
  width: 100%;
1624
2555
  padding: 10px 40px 10px 13px;
1625
2556
  font-size: 15px;
1626
- border: 2px solid ${o?f.error:"#ddd"};
2557
+ border: 2px solid ${r?c.error:"#ddd"};
1627
2558
  border-radius: 5px;
1628
2559
  background: white;
1629
2560
  cursor: pointer;
@@ -1636,8 +2567,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1636
2567
  .select-trigger:focus,
1637
2568
  .select-trigger.open {
1638
2569
  outline: none;
1639
- border-color: ${o?f.error:f.focus};
1640
- box-shadow: 0 0 0 3px ${o?f.error+"20":f.focus+"20"};
2570
+ border-color: ${r?c.error:c.focus};
2571
+ box-shadow: 0 0 0 3px ${r?c.error+"20":c.focus+"20"};
1641
2572
  }
1642
2573
 
1643
2574
  .select-arrow {
@@ -1683,18 +2614,18 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1683
2614
  }
1684
2615
 
1685
2616
  .select-option:hover {
1686
- background: ${f.focus}15;
2617
+ background: ${c.focus}15;
1687
2618
  }
1688
2619
 
1689
2620
  .select-option.selected {
1690
- background: ${f.focus};
2621
+ background: ${c.focus};
1691
2622
  color: white;
1692
2623
  }
1693
2624
 
1694
2625
  .error-text {
1695
2626
  font-size: 12px;
1696
2627
  margin-top: 4px;
1697
- color: ${f.error};
2628
+ color: ${c.error};
1698
2629
  }
1699
2630
 
1700
2631
  ::slotted(option) {
@@ -1702,35 +2633,35 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1702
2633
  }
1703
2634
  </style>
1704
2635
 
1705
- ${t?`<label for="select-${this._uniqueId}">${t}${l?'<span class="required-star">*</span>':""}</label>`:""}
2636
+ ${t?`<label for="select-${this._uniqueId}">${t}${a?'<span class="required-star">*</span>':""}</label>`:""}
1706
2637
  <div class="select-container">
1707
2638
  <button type="button"
1708
2639
  id="select-${this._uniqueId}"
1709
2640
  class="select-trigger ${this._isOpen?"open":""}"
1710
2641
  aria-expanded="${this._isOpen}"
1711
2642
  aria-haspopup="listbox"
1712
- ${b?`aria-label="${b}"`:""}
1713
- ${o?'aria-invalid="true"':""}
1714
- ${M}>
1715
- ${X}
2643
+ ${e?`aria-label="${e}"`:""}
2644
+ ${r?'aria-invalid="true"':""}
2645
+ ${H}>
2646
+ ${E}
1716
2647
  </button>
1717
2648
  <span class="select-arrow" aria-hidden="true">▼</span>
1718
2649
  <div class="select-dropdown ${this._isOpen?"open":""}"
1719
2650
  role="listbox"
1720
2651
  aria-hidden="${!this._isOpen}">
1721
- ${this._options.map((L,R)=>`
1722
- <div class="select-option ${R===this._selectedIndex?"selected":""}"
1723
- data-index="${R}"
2652
+ ${this._options.map((M,X)=>`
2653
+ <div class="select-option ${X===this._selectedIndex?"selected":""}"
2654
+ data-index="${X}"
1724
2655
  role="option"
1725
- aria-selected="${R===this._selectedIndex}">
1726
- ${L.label}
2656
+ aria-selected="${X===this._selectedIndex}">
2657
+ ${M.label}
1727
2658
  </div>
1728
2659
  `).join("")}
1729
2660
  </div>
1730
2661
  </div>
1731
- ${o?`<div id="error-${this._uniqueId}" class="error-text" role="alert">${o}</div>`:""}
2662
+ ${r?`<div id="error-${this._uniqueId}" class="error-text" role="alert">${r}</div>`:""}
1732
2663
  <slot></slot>
1733
- `}};d("af-select",on);Hb=on});var ca={};H(ca,{default:()=>Eb,AfriForm:()=>an});var an,Eb;var $a=A(()=>{q();Fn();an=class an extends c{static get observedAttributes(){return["action","method","error","success","schema"]}constructor(){super();this.handleSubmit=this.handleSubmit.bind(this)}connectedCallback(){this.render(),this.shadowRoot.querySelector("form").addEventListener("submit",this.handleSubmit),this.loadStyles()}async handleSubmit(t){t.preventDefault();let n=t.target,a=this.querySelector('[type="submit"]')||this.shadowRoot.querySelector('button[type="submit"]'),o=this.getAttribute("schema"),l=o?this._getSchema(o):null,b=this.getAttribute("action"),r=this.getAttribute("method")||"GET",h=new FormData(n),f=Object.fromEntries(h.entries());if(Array.from(this.querySelectorAll("af-input")).forEach((M)=>{let X=M.getAttribute("name");if(X)f[X]=M.value}),l){let M=Gt.validate(l,f);if(!M.success){this._showValidationErrors(M.errors),this.emit("af-validation-error",{errors:M.errors});return}}if(!b)return;if(a){var _=a.textContent;a.textContent="Wait...",a.disabled=!0}try{let M=await fetch(b,{method:r,headers:{"Content-Type":"application/json"},body:JSON.stringify(f)});if(M.ok)this.emit("success",await M.json()),this.setAttribute("success","Form submitted successfully!"),this.removeAttribute("error");else{let X=await M.text();this.emit("error",X),this.setAttribute("error",X),this.removeAttribute("success")}}catch(M){this.emit("error",M.message),this.setAttribute("error",M.message),this.removeAttribute("success")}finally{if(a)a.textContent=_,a.disabled=!1}}_getSchema(t){return Do[t]||null}_showValidationErrors(t){this.shadowRoot.querySelectorAll(".field-error").forEach((n)=>n.remove()),Object.entries(t).forEach(([n,a])=>{let o=this.querySelector(`[name="${n}"]`);if(o)if(o.tagName==="AF-INPUT")o.setAttribute("error",a);else{let l=document.createElement("div");l.className="field-error",l.textContent=a,l.style.color="red",l.style.fontSize="12px",l.style.marginTop="4px",o.parentNode.insertBefore(l,o.nextSibling)}})}};d("af-form",an);Eb=an});var va={};H(va,{default:()=>Mb,AfriTooltip:()=>ln});var ln,Mb;var wa=A(()=>{q();ln=class ln extends c{static get observedAttributes(){return["text","position"]}constructor(){super();this._tooltipId=`af-tooltip-${Math.random().toString(36).substr(2,9)}`,this.render()}connectedCallback(){this._setupTooltipListeners()}attributeChangedCallback(){this.render(),this._setupTooltipListeners()}_setupTooltipListeners(){let t=this.shadowRoot.querySelector(".tooltip-trigger"),n=this.shadowRoot.querySelector(".tooltip-content");if(!t||!n)return;t.addEventListener("focus",()=>{n.style.opacity="1",n.style.visibility="visible",n.setAttribute("aria-hidden","false")}),t.addEventListener("blur",()=>{n.style.opacity="0",n.style.visibility="hidden",n.setAttribute("aria-hidden","true")}),t.addEventListener("mouseenter",()=>{n.style.opacity="1",n.style.visibility="visible",n.setAttribute("aria-hidden","false")}),t.addEventListener("mouseleave",()=>{n.style.opacity="0",n.style.visibility="hidden",n.setAttribute("aria-hidden","true")})}render(){let t=this.getAttribute("text")||"Tooltip",n=this.getAttribute("position")||"top",a={top:`
2664
+ `}};f("af-select",kn);ti=kn});var wa={};w(wa,{default:()=>ni,AfriForm:()=>qn});var qn,ni;var xa=s(()=>{u();ko();qn=class qn extends b{static get observedAttributes(){return["action","method","error","success","schema"]}constructor(){super();this.handleSubmit=this.handleSubmit.bind(this)}connectedCallback(){this.render(),this.shadowRoot.querySelector("form").addEventListener("submit",this.handleSubmit),this.loadStyles()}async handleSubmit(t){t.preventDefault();let n=t.target,o=this.querySelector('[type="submit"]')||this.shadowRoot.querySelector('button[type="submit"]'),r=this.getAttribute("schema"),a=r?this._getSchema(r):null,e=this.getAttribute("action"),l=this.getAttribute("method")||"GET",i=new FormData(n),c=Object.fromEntries(i.entries());if(Array.from(this.querySelectorAll("af-input")).forEach((H)=>{let E=H.getAttribute("name");if(E)c[E]=H.value}),a){let H=zt.validate(a,c);if(!H.success){this._showValidationErrors(H.errors),this.emit("af-validation-error",{errors:H.errors});return}}if(!e)return;if(o){var v=o.textContent;o.textContent="Wait...",o.disabled=!0}try{let H=await fetch(e,{method:l,headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(H.ok)this.emit("success",await H.json()),this.setAttribute("success","Form submitted successfully!"),this.removeAttribute("error");else{let E=await H.text();this.emit("error",E),this.setAttribute("error",E),this.removeAttribute("success")}}catch(H){this.emit("error",H.message),this.setAttribute("error",H.message),this.removeAttribute("success")}finally{if(o)o.textContent=v,o.disabled=!1}}_getSchema(t){return yr[t]||null}_showValidationErrors(t){this.shadowRoot.querySelectorAll(".field-error").forEach((n)=>n.remove()),Object.entries(t).forEach(([n,o])=>{let r=this.querySelector(`[name="${n}"]`);if(r)if(r.tagName==="AF-INPUT")r.setAttribute("error",o);else{let a=document.createElement("div");a.className="field-error",a.textContent=o,a.style.color="red",a.style.fontSize="12px",a.style.marginTop="4px",r.parentNode.insertBefore(a,r.nextSibling)}})}};f("af-form",qn);ni=qn});var Aa={};w(Aa,{default:()=>oi,AfriTooltip:()=>Hn});var Hn,oi;var _a=s(()=>{u();Hn=class Hn extends b{static get observedAttributes(){return["text","position"]}constructor(){super();this._tooltipId=`af-tooltip-${Math.random().toString(36).substr(2,9)}`,this.render()}connectedCallback(){this._setupTooltipListeners()}attributeChangedCallback(){this.render(),this._setupTooltipListeners()}_setupTooltipListeners(){let t=this.shadowRoot.querySelector(".tooltip-trigger"),n=this.shadowRoot.querySelector(".tooltip-content");if(!t||!n)return;t.addEventListener("focus",()=>{n.style.opacity="1",n.style.visibility="visible",n.setAttribute("aria-hidden","false")}),t.addEventListener("blur",()=>{n.style.opacity="0",n.style.visibility="hidden",n.setAttribute("aria-hidden","true")}),t.addEventListener("mouseenter",()=>{n.style.opacity="1",n.style.visibility="visible",n.setAttribute("aria-hidden","false")}),t.addEventListener("mouseleave",()=>{n.style.opacity="0",n.style.visibility="hidden",n.setAttribute("aria-hidden","true")})}render(){let t=this.getAttribute("text")||"Tooltip",n=this.getAttribute("position")||"top",o={top:`
1734
2665
  bottom: 100%;
1735
2666
  left: 50%;
1736
2667
  transform: translateX(-50%) translateY(-8px);
@@ -1761,7 +2692,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1761
2692
 
1762
2693
  .tooltip-content {
1763
2694
  position: absolute;
1764
- ${a[n]}
2695
+ ${o[n]}
1765
2696
  padding: 8px 12px;
1766
2697
  background: #1e1e1e;
1767
2698
  border: 1px solid #2a2a2a;
@@ -1819,7 +2750,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1819
2750
  <slot></slot>
1820
2751
  </span>
1821
2752
  <div class="tooltip-content" id="${this._tooltipId}" role="tooltip" aria-hidden="true">${t}</div>
1822
- `}};d("af-tooltip",ln);Mb=ln});var da={};H(da,{default:()=>Yb,AfriToast:()=>bn});var bn,Yb;var _a=A(()=>{q();bn=class bn extends c{static get observedAttributes(){return["type","message","duration"]}constructor(){super();this.render()}show(t,n="info",a=4000){if(this.setAttribute("message",t),this.setAttribute("type",n),this.render(),this.shadowRoot.querySelector(".toast").classList.add("show"),a>0)setTimeout(()=>this.hide(),a)}hide(){this.shadowRoot.querySelector(".toast").classList.remove("show"),setTimeout(()=>this.emit("af-toast-close"),300)}render(){let t=this.getAttribute("type")||"info",n=this.getAttribute("message")||"",a={success:"✓",error:"✗",warning:"⚠",info:"ℹ"},o={success:"#1EB53A",error:"#EF3340",warning:"#FCD116",info:"#00A3DD"};this.shadowRoot.innerHTML=`
2753
+ `}};f("af-tooltip",Hn);oi=Hn});var ka={};w(ka,{default:()=>ri,AfriToast:()=>Ln});var Ln,ri;var qa=s(()=>{u();Ln=class Ln extends b{static get observedAttributes(){return["type","message","duration"]}constructor(){super();this.render()}show(t,n="info",o=4000){if(this.setAttribute("message",t),this.setAttribute("type",n),this.render(),this.shadowRoot.querySelector(".toast").classList.add("show"),o>0)setTimeout(()=>this.hide(),o)}hide(){this.shadowRoot.querySelector(".toast").classList.remove("show"),setTimeout(()=>this.emit("af-toast-close"),300)}render(){let t=this.getAttribute("type")||"info",n=this.getAttribute("message")||"",o={success:"✓",error:"✗",warning:"⚠",info:"ℹ"},r={success:"#1EB53A",error:"#EF3340",warning:"#FCD116",info:"#00A3DD"};this.shadowRoot.innerHTML=`
1823
2754
  <style>
1824
2755
  :host {
1825
2756
  position: fixed;
@@ -1836,7 +2767,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1836
2767
  padding: 16px 20px;
1837
2768
  background: #121212;
1838
2769
  border: 1px solid #1e1e1e;
1839
- border-left: 4px solid ${o[t]};
2770
+ border-left: 4px solid ${r[t]};
1840
2771
  border-radius: 8px;
1841
2772
  box-shadow: 0 10px 40px rgba(0,0,0,0.5);
1842
2773
  transform: translateX(120%);
@@ -1853,8 +2784,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1853
2784
  width: 28px;
1854
2785
  height: 28px;
1855
2786
  border-radius: 50%;
1856
- background: ${o[t]}20;
1857
- color: ${o[t]};
2787
+ background: ${r[t]}20;
2788
+ color: ${r[t]};
1858
2789
  display: flex;
1859
2790
  align-items: center;
1860
2791
  justify-content: center;
@@ -1887,13 +2818,13 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1887
2818
  </style>
1888
2819
 
1889
2820
  <div class="toast">
1890
- <span class="toast-icon">${a[t]}</span>
2821
+ <span class="toast-icon">${o[t]}</span>
1891
2822
  <div class="toast-content">
1892
2823
  <div class="toast-message">${n}</div>
1893
2824
  </div>
1894
2825
  <button class="toast-close" id="close">×</button>
1895
2826
  </div>
1896
- `,this.shadowRoot.getElementById("close")?.addEventListener("click",()=>this.hide())}};d("af-toast",bn);Yb=bn});var ia={};H(ia,{default:()=>Sb,AfriBadge:()=>rn});var rn,Sb;var Aa=A(()=>{q();rn=class rn extends c{static get observedAttributes(){return["variant","size","removable"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector(".remove-btn")?.addEventListener("click",()=>{this.emit("af-remove"),this.remove()})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"default",n=this.getAttribute("size")||"md",a=this.hasAttribute("removable"),o={default:{bg:"#e9ecef",text:"#495057"},success:{bg:"#d4edda",text:"#155724"},warning:{bg:"#fff3cd",text:"#856404"},error:{bg:"#f8d7da",text:"#721c24"},info:{bg:"#d1ecf1",text:"#0c5460"},tanzania:{bg:"#1EB53A",text:"#FFFFFF"},maasai:{bg:"#FF0000",text:"#FFFFFF"},ndebele:{bg:"#4169E1",text:"#FFFFFF"},gold:{bg:"#FCD116",text:"#000000"}},l=o[t]||o.default,b={sm:{padding:"2px 6px",fontSize:"11px"},md:{padding:"4px 10px",fontSize:"13px"},lg:{padding:"6px 14px",fontSize:"15px"}},r=b[n]||b.md;this.shadowRoot.innerHTML=`
2827
+ `,this.shadowRoot.getElementById("close")?.addEventListener("click",()=>this.hide())}};f("af-toast",Ln);ri=Ln});var Ha={};w(Ha,{default:()=>ai,AfriBadge:()=>Mn});var Mn,ai;var La=s(()=>{u();Mn=class Mn extends b{static get observedAttributes(){return["variant","size","removable"]}constructor(){super();this.render()}connectedCallback(){this.shadowRoot.querySelector(".remove-btn")?.addEventListener("click",()=>{this.emit("af-remove"),this.remove()})}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"default",n=this.getAttribute("size")||"md",o=this.hasAttribute("removable"),r={default:{bg:"#e9ecef",text:"#495057"},success:{bg:"#d4edda",text:"#155724"},warning:{bg:"#fff3cd",text:"#856404"},error:{bg:"#f8d7da",text:"#721c24"},info:{bg:"#d1ecf1",text:"#0c5460"},tanzania:{bg:"#1EB53A",text:"#FFFFFF"},maasai:{bg:"#FF0000",text:"#FFFFFF"},ndebele:{bg:"#4169E1",text:"#FFFFFF"},gold:{bg:"#FCD116",text:"#000000"}},a=r[t]||r.default,e={sm:{padding:"2px 6px",fontSize:"11px"},md:{padding:"4px 10px",fontSize:"13px"},lg:{padding:"6px 14px",fontSize:"15px"}},l=e[n]||e.md;this.shadowRoot.innerHTML=`
1897
2828
  <style>
1898
2829
  :host {
1899
2830
  display: inline-block;
@@ -1904,11 +2835,11 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1904
2835
  display: inline-flex;
1905
2836
  align-items: center;
1906
2837
  gap: 5px;
1907
- padding: ${r.padding};
1908
- font-size: ${r.fontSize};
2838
+ padding: ${l.padding};
2839
+ font-size: ${l.fontSize};
1909
2840
  font-weight: 600;
1910
- background: ${l.bg};
1911
- color: ${l.text};
2841
+ background: ${a.bg};
2842
+ color: ${a.text};
1912
2843
  border-radius: 100px;
1913
2844
  white-space: nowrap;
1914
2845
  }
@@ -1932,9 +2863,9 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1932
2863
 
1933
2864
  <span class="badge">
1934
2865
  <slot></slot>
1935
- ${a?'<button class="remove-btn" aria-label="Remove">×</button>':""}
2866
+ ${o?'<button class="remove-btn" aria-label="Remove">×</button>':""}
1936
2867
  </span>
1937
- `}};d("af-badge",rn);Sb=rn});var ma={};H(ma,{default:()=>Lb,AfriAvatar:()=>hn});var hn,Lb;var xa=A(()=>{q();hn=class hn extends c{static get observedAttributes(){return["src","name","size","status","theme"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}_getInitials(t){if(!t)return"?";let n=t.trim().split(" ");if(n.length>=2)return(n[0][0]+n[n.length-1][0]).toUpperCase();return t.substring(0,2).toUpperCase()}render(){let t=this.getAttribute("src"),n=this.getAttribute("name")||"",a=this.getAttribute("size")||"md",o=this.getAttribute("status"),l=this.getAttribute("theme")||"tanzania",b={tanzania:"#1EB53A",maasai:"#FF0000",ndebele:"#4169E1",gold:"#FCD116"},r=b[l]||b.tanzania,h={sm:{size:"32px",font:"12px",status:"8px"},md:{size:"44px",font:"16px",status:"10px"},lg:{size:"64px",font:"22px",status:"14px"},xl:{size:"96px",font:"32px",status:"18px"}},f=h[a]||h.md,_={online:"#28a745",offline:"#6c757d",busy:"#dc3545",away:"#ffc107"};this.shadowRoot.innerHTML=`
2868
+ `}};f("af-badge",Mn);ai=Mn});var Ma={};w(Ma,{default:()=>ei,AfriAvatar:()=>En});var En,ei;var Ea=s(()=>{u();En=class En extends b{static get observedAttributes(){return["src","name","size","status","theme"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}_getInitials(t){if(!t)return"?";let n=t.trim().split(" ");if(n.length>=2)return(n[0][0]+n[n.length-1][0]).toUpperCase();return t.substring(0,2).toUpperCase()}render(){let t=this.getAttribute("src"),n=this.getAttribute("name")||"",o=this.getAttribute("size")||"md",r=this.getAttribute("status"),a=this.getAttribute("theme")||"tanzania",e={tanzania:"#1EB53A",maasai:"#FF0000",ndebele:"#4169E1",gold:"#FCD116"},l=e[a]||e.tanzania,i={sm:{size:"32px",font:"12px",status:"8px"},md:{size:"44px",font:"16px",status:"10px"},lg:{size:"64px",font:"22px",status:"14px"},xl:{size:"96px",font:"32px",status:"18px"}},c=i[o]||i.md,v={online:"#28a745",offline:"#6c757d",busy:"#dc3545",away:"#ffc107"};this.shadowRoot.innerHTML=`
1938
2869
  <style>
1939
2870
  :host {
1940
2871
  display: inline-block;
@@ -1943,16 +2874,16 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1943
2874
 
1944
2875
  .avatar {
1945
2876
  position: relative;
1946
- width: ${f.size};
1947
- height: ${f.size};
2877
+ width: ${c.size};
2878
+ height: ${c.size};
1948
2879
  border-radius: 50%;
1949
2880
  display: flex;
1950
2881
  align-items: center;
1951
2882
  justify-content: center;
1952
- background: ${r};
2883
+ background: ${l};
1953
2884
  color: white;
1954
2885
  font-weight: 600;
1955
- font-size: ${f.font};
2886
+ font-size: ${c.font};
1956
2887
  overflow: hidden;
1957
2888
  }
1958
2889
 
@@ -1966,19 +2897,19 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
1966
2897
  position: absolute;
1967
2898
  bottom: 0;
1968
2899
  right: 0;
1969
- width: ${f.status};
1970
- height: ${f.status};
2900
+ width: ${c.status};
2901
+ height: ${c.status};
1971
2902
  border-radius: 50%;
1972
2903
  border: 2px solid white;
1973
- background: ${o?_[o]||_.offline:"transparent"};
2904
+ background: ${r?v[r]||v.offline:"transparent"};
1974
2905
  }
1975
2906
  </style>
1976
2907
 
1977
2908
  <div class="avatar" title="${n}">
1978
2909
  ${t?`<img src="${t}" alt="${n}" />`:this._getInitials(n)}
1979
- ${o?'<span class="status"></span>':""}
2910
+ ${r?'<span class="status"></span>':""}
1980
2911
  </div>
1981
- `}};d("af-avatar",hn);Lb=hn});var ka={};H(ka,{default:()=>Xb,AfriProgress:()=>fn});var fn,Xb;var qa=A(()=>{q();fn=class fn extends c{static get observedAttributes(){return["value","max","theme","size","label","animated"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=parseFloat(this.getAttribute("value"))||0,n=parseFloat(this.getAttribute("max"))||100,a=this.getAttribute("theme")||"tanzania",o=this.getAttribute("size")||"md",l=this.getAttribute("label"),b=this.hasAttribute("animated"),r=Math.min(100,Math.max(0,t/n*100)),h={tanzania:{bar:"#1EB53A",track:"#e9ecef"},maasai:{bar:"#FF0000",track:"#e9ecef"},ndebele:{bar:"#4169E1",track:"#e9ecef"},gold:{bar:"#FCD116",track:"#e9ecef"},gradient:{bar:"linear-gradient(90deg, #1EB53A 0%, #FCD116 50%, #00A3DD 100%)",track:"#e9ecef"}},f=h[a]||h.tanzania,_={sm:"6px",md:"10px",lg:"16px"},M=_[o]||_.md;this.shadowRoot.innerHTML=`
2912
+ `}};f("af-avatar",En);ei=En});var Sa={};w(Sa,{default:()=>li,AfriProgress:()=>Sn});var Sn,li;var Ya=s(()=>{u();Sn=class Sn extends b{static get observedAttributes(){return["value","max","theme","size","label","animated"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=parseFloat(this.getAttribute("value"))||0,n=parseFloat(this.getAttribute("max"))||100,o=this.getAttribute("theme")||"tanzania",r=this.getAttribute("size")||"md",a=this.getAttribute("label"),e=this.hasAttribute("animated"),l=Math.min(100,Math.max(0,t/n*100)),i={tanzania:{bar:"#1EB53A",track:"#e9ecef"},maasai:{bar:"#FF0000",track:"#e9ecef"},ndebele:{bar:"#4169E1",track:"#e9ecef"},gold:{bar:"#FCD116",track:"#e9ecef"},gradient:{bar:"linear-gradient(90deg, #1EB53A 0%, #FCD116 50%, #00A3DD 100%)",track:"#e9ecef"}},c=i[o]||i.tanzania,v={sm:"6px",md:"10px",lg:"16px"},H=v[r]||v.md;this.shadowRoot.innerHTML=`
1982
2913
  <style>
1983
2914
  :host {
1984
2915
  display: block;
@@ -2007,19 +2938,19 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2007
2938
 
2008
2939
  .progress-track {
2009
2940
  width: 100%;
2010
- height: ${M};
2011
- background: ${f.track};
2941
+ height: ${H};
2942
+ background: ${c.track};
2012
2943
  border-radius: 100px;
2013
2944
  overflow: hidden;
2014
2945
  }
2015
2946
 
2016
2947
  .progress-bar {
2017
2948
  height: 100%;
2018
- width: ${r}%;
2019
- background: ${f.bar};
2949
+ width: ${l}%;
2950
+ background: ${c.bar};
2020
2951
  border-radius: 100px;
2021
2952
  transition: width 500ms ease-out;
2022
- ${b?`
2953
+ ${e?`
2023
2954
  background-size: 30px 30px;
2024
2955
  background-image: linear-gradient(
2025
2956
  135deg,
@@ -2044,8 +2975,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2044
2975
  <div class="progress-container">
2045
2976
  ${`
2046
2977
  <div class="progress-header">
2047
- <span class="progress-label">${l||""}</span>
2048
- <span class="progress-value">${r.toFixed(0)}%</span>
2978
+ <span class="progress-label">${a||""}</span>
2979
+ <span class="progress-value">${l.toFixed(0)}%</span>
2049
2980
  </div>
2050
2981
  `}
2051
2982
  <div class="progress-track">
@@ -2055,7 +2986,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2055
2986
  aria-valuemax="${n}"></div>
2056
2987
  </div>
2057
2988
  </div>
2058
- `}};d("af-progress",fn);Xb=fn});var pa={};H(pa,{default:()=>Qb,AfriLoader:()=>gn});var gn,Qb;var Ha=A(()=>{q();gn=class gn extends c{static get observedAttributes(){return["size","color","type"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("size")||"40",n=this.getAttribute("color")||"currentColor",a=this.getAttribute("type")||"spiral",o={spiral:`M25,25 m0,-20 a20,20 0 1,1 0,40 a20,20 0 1,1 0,-40
2989
+ `}};f("af-progress",Sn);li=Sn});var Ra={};w(Ra,{default:()=>ii,AfriLoader:()=>Yn});var Yn,ii;var Xa=s(()=>{u();Yn=class Yn extends b{static get observedAttributes(){return["size","color","type"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("size")||"40",n=this.getAttribute("color")||"currentColor",o=this.getAttribute("type")||"spiral",r={spiral:`M25,25 m0,-20 a20,20 0 1,1 0,40 a20,20 0 1,1 0,-40
2059
2990
  M25,25 m0,-15 a15,15 0 1,0 0,30 a15,15 0 1,0 0,-30`,sun:"M25,5 L25,45 M5,25 L45,25 M11,11 L39,39 M39,11 L11,39",diamond:"M25,5 L45,25 L25,45 L5,25 Z"};this.shadowRoot.innerHTML=`
2060
2991
  <style>
2061
2992
  :host {
@@ -2083,10 +3014,10 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2083
3014
  </style>
2084
3015
  <div class="loader">
2085
3016
  <svg viewBox="0 0 50 50">
2086
- ${a==="spiral"?`<path d="${o.spiral}" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" />`:a==="sun"?`<path d="${o.sun}" stroke="currentColor" stroke-width="4" stroke-linecap="round" />`:`<path d="${o.diamond}" fill="none" stroke="currentColor" stroke-width="4" />`}
3017
+ ${o==="spiral"?`<path d="${r.spiral}" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" />`:o==="sun"?`<path d="${r.sun}" stroke="currentColor" stroke-width="4" stroke-linecap="round" />`:`<path d="${r.diamond}" fill="none" stroke="currentColor" stroke-width="4" />`}
2087
3018
  </svg>
2088
3019
  </div>
2089
- `}};d("af-loader",gn);Qb=gn});var Ea={};H(Ea,{default:()=>Jb,AfriSkeleton:()=>cn});var cn,Jb;var Ma=A(()=>{q();cn=class cn extends c{static get observedAttributes(){return["variant","width","height","lines"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"text",n=this.getAttribute("width")||"100%",a=this.getAttribute("height")||"auto",o=parseInt(this.getAttribute("lines"))||1,l={text:{height:"16px",borderRadius:"4px"},title:{height:"28px",borderRadius:"4px"},avatar:{width:"48px",height:"48px",borderRadius:"50%"},card:{height:"200px",borderRadius:"12px"},button:{height:"40px",borderRadius:"6px",width:"120px"}},b=l[t]||l.text;this.shadowRoot.innerHTML=`
3020
+ `}};f("af-loader",Yn);ii=Yn});var Qa={};w(Qa,{default:()=>bi,AfriSkeleton:()=>Rn});var Rn,bi;var Ja=s(()=>{u();Rn=class Rn extends b{static get observedAttributes(){return["variant","width","height","lines"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("variant")||"text",n=this.getAttribute("width")||"100%",o=this.getAttribute("height")||"auto",r=parseInt(this.getAttribute("lines"))||1,a={text:{height:"16px",borderRadius:"4px"},title:{height:"28px",borderRadius:"4px"},avatar:{width:"48px",height:"48px",borderRadius:"50%"},card:{height:"200px",borderRadius:"12px"},button:{height:"40px",borderRadius:"6px",width:"120px"}},e=a[t]||a.text;this.shadowRoot.innerHTML=`
2090
3021
  <style>
2091
3022
  :host {
2092
3023
  display: block;
@@ -2101,7 +3032,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2101
3032
  );
2102
3033
  background-size: 200% 100%;
2103
3034
  animation: shimmer 1.5s infinite;
2104
- border-radius: ${b.borderRadius};
3035
+ border-radius: ${e.borderRadius};
2105
3036
  }
2106
3037
 
2107
3038
  @keyframes shimmer {
@@ -2110,8 +3041,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2110
3041
  }
2111
3042
 
2112
3043
  .skeleton-line {
2113
- width: ${t==="text"?n:b.width||n};
2114
- height: ${b.height};
3044
+ width: ${t==="text"?n:e.width||n};
3045
+ height: ${e.height};
2115
3046
  margin-bottom: 8px;
2116
3047
  }
2117
3048
 
@@ -2121,382 +3052,382 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2121
3052
  }
2122
3053
  </style>
2123
3054
 
2124
- ${t==="text"||t==="title"?Array(o).fill(0).map(()=>'<div class="skeleton skeleton-line"></div>').join(""):`<div class="skeleton" style="width: ${b.width||n}; height: ${b.height||a};"></div>`}
2125
- `}};d("af-skeleton",cn);Jb=cn});var Ya={};H(Ya,{default:()=>Gb,AfriDivider:()=>$n});var $n,Gb;var Sa=A(()=>{q();$n=class $n extends c{static get observedAttributes(){return["pattern","height","color","flip"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}_getPatternPath(t,n,a){switch(t||"zigzag"){case"zigzag":return`M0,${a} L${n/4},0 L${n/2},${a} L${n*0.75},0 L${n},${a} V${a+10} H0 Z`;case"waves":return`M0,${a/2} Q${n/4},0 ${n/2},${a/2} T${n},${a/2} V${a} H0 Z`;case"triangles":return`M0,${a} L${n/8},0 L${n/4},${a} L${n*0.375},0 L${n/2},${a}
2126
- L${n*0.625},0 L${n*0.75},${a} L${n*0.875},0 L${n},${a} V${a+10} H0 Z`;case"diamonds":return`M0,0 H${n} V${a/2}
2127
- L${n*0.9},${a} L${n*0.8},${a/2}
2128
- L${n*0.7},${a} L${n*0.6},${a/2}
2129
- L${n*0.5},${a} L${n*0.4},${a/2}
2130
- L${n*0.3},${a} L${n*0.2},${a/2}
2131
- L${n*0.1},${a} L0,${a/2} Z`;default:return`M0,0 H${n} V${a} H0 Z`}}render(){let t=this.getAttribute("pattern")||"zigzag",n=this.getAttribute("height")||"50",a=this.getAttribute("color")||"currentColor",o=this.hasAttribute("flip");this.shadowRoot.innerHTML=`
3055
+ ${t==="text"||t==="title"?Array(r).fill(0).map(()=>'<div class="skeleton skeleton-line"></div>').join(""):`<div class="skeleton" style="width: ${e.width||n}; height: ${e.height||o};"></div>`}
3056
+ `}};f("af-skeleton",Rn);bi=Rn});var Ga={};w(Ga,{default:()=>ci,AfriDivider:()=>Xn});var Xn,ci;var Fa=s(()=>{u();Xn=class Xn extends b{static get observedAttributes(){return["pattern","height","color","flip"]}constructor(){super();this.render()}attributeChangedCallback(){this.render()}_getPatternPath(t,n,o){switch(t||"zigzag"){case"zigzag":return`M0,${o} L${n/4},0 L${n/2},${o} L${n*0.75},0 L${n},${o} V${o+10} H0 Z`;case"waves":return`M0,${o/2} Q${n/4},0 ${n/2},${o/2} T${n},${o/2} V${o} H0 Z`;case"triangles":return`M0,${o} L${n/8},0 L${n/4},${o} L${n*0.375},0 L${n/2},${o}
3057
+ L${n*0.625},0 L${n*0.75},${o} L${n*0.875},0 L${n},${o} V${o+10} H0 Z`;case"diamonds":return`M0,0 H${n} V${o/2}
3058
+ L${n*0.9},${o} L${n*0.8},${o/2}
3059
+ L${n*0.7},${o} L${n*0.6},${o/2}
3060
+ L${n*0.5},${o} L${n*0.4},${o/2}
3061
+ L${n*0.3},${o} L${n*0.2},${o/2}
3062
+ L${n*0.1},${o} L0,${o/2} Z`;default:return`M0,0 H${n} V${o} H0 Z`}}render(){let t=this.getAttribute("pattern")||"zigzag",n=this.getAttribute("height")||"50",o=this.getAttribute("color")||"currentColor",r=this.hasAttribute("flip");this.shadowRoot.innerHTML=`
2132
3063
  <style>
2133
3064
  :host {
2134
3065
  display: block;
2135
3066
  line-height: 0;
2136
3067
  width: 100%;
2137
3068
  overflow: hidden;
2138
- color: ${a};
3069
+ color: ${o};
2139
3070
  }
2140
3071
  svg {
2141
3072
  display: block;
2142
3073
  width: 100%;
2143
3074
  height: ${n}px;
2144
- ${o?"transform: rotate(180deg);":""}
3075
+ ${r?"transform: rotate(180deg);":""}
2145
3076
  }
2146
3077
  </style>
2147
3078
  <svg viewBox="0 0 100 ${n}" preserveAspectRatio="none">
2148
3079
  <path d="${this._getPatternPath(t,100,parseInt(n))}" fill="currentColor" />
2149
3080
  </svg>
2150
- `}};d("af-divider",$n);Gb=$n});function Rb(t,n,a=50,o=50){let l=[];for(let b=0;b<t;b++){let r=2*Math.PI*b/t-Math.PI/2,h=a+n*Math.cos(r),f=o+n*Math.sin(r);l.push(`${h.toFixed(2)},${f.toFixed(2)}`)}return l.join(" ")}function Dn({primaryColor:t="#FF0000",secondaryColor:n="#000000",backgroundColor:a="#8B0000",stripeWidth:o=4,size:l=40}={}){let b=`
2151
- <svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${l}" viewBox="0 0 ${l} ${l}">
2152
- <rect width="${l}" height="${l}" fill="${a}"/>
2153
- <rect x="0" y="0" width="${l}" height="${o}" fill="${t}" opacity="0.8"/>
2154
- <rect x="0" y="${l/2-o/2}" width="${l}" height="${o}" fill="${n}" opacity="0.6"/>
2155
- <rect x="0" y="${l-o}" width="${l}" height="${o}" fill="${t}" opacity="0.8"/>
2156
- <rect x="0" y="0" width="${o}" height="${l}" fill="${t}" opacity="0.5"/>
2157
- <rect x="${l/2-o/2}" y="0" width="${o}" height="${l}" fill="${n}" opacity="0.4"/>
2158
- <rect x="${l-o}" y="0" width="${o}" height="${l}" fill="${t}" opacity="0.5"/>
3081
+ `}};f("af-divider",Xn);ci=Xn});function fi(t,n,o=50,r=50){let a=[];for(let e=0;e<t;e++){let l=2*Math.PI*e/t-Math.PI/2,i=o+n*Math.cos(l),c=r+n*Math.sin(l);a.push(`${i.toFixed(2)},${c.toFixed(2)}`)}return a.join(" ")}function Lo({primaryColor:t="#FF0000",secondaryColor:n="#000000",backgroundColor:o="#8B0000",stripeWidth:r=4,size:a=40}={}){let e=`
3082
+ <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
3083
+ <rect width="${a}" height="${a}" fill="${o}"/>
3084
+ <rect x="0" y="0" width="${a}" height="${r}" fill="${t}" opacity="0.8"/>
3085
+ <rect x="0" y="${a/2-r/2}" width="${a}" height="${r}" fill="${n}" opacity="0.6"/>
3086
+ <rect x="0" y="${a-r}" width="${a}" height="${r}" fill="${t}" opacity="0.8"/>
3087
+ <rect x="0" y="0" width="${r}" height="${a}" fill="${t}" opacity="0.5"/>
3088
+ <rect x="${a/2-r/2}" y="0" width="${r}" height="${a}" fill="${n}" opacity="0.4"/>
3089
+ <rect x="${a-r}" y="0" width="${r}" height="${a}" fill="${t}" opacity="0.5"/>
2159
3090
  </svg>
2160
- `;return`data:image/svg+xml,${encodeURIComponent(b.trim())}`}function On({earthColor:t="#8B4513",ochreColor:n="#CD853F",charcoalColor:a="#2F2F2F",size:o=50}={}){let l=`
2161
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2162
- <rect width="${o}" height="${o}" fill="${t}"/>
3091
+ `;return`data:image/svg+xml,${encodeURIComponent(e.trim())}`}function Mo({earthColor:t="#8B4513",ochreColor:n="#CD853F",charcoalColor:o="#2F2F2F",size:r=50}={}){let a=`
3092
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3093
+ <rect width="${r}" height="${r}" fill="${t}"/>
2163
3094
  <!-- Cave art inspired figures -->
2164
- <circle cx="${o*0.3}" cy="${o*0.3}" r="${o*0.08}" fill="${n}"/>
2165
- <line x1="${o*0.3}" y1="${o*0.38}" x2="${o*0.3}" y2="${o*0.6}" stroke="${a}" stroke-width="2"/>
2166
- <line x1="${o*0.2}" y1="${o*0.45}" x2="${o*0.4}" y2="${o*0.45}" stroke="${a}" stroke-width="2"/>
3095
+ <circle cx="${r*0.3}" cy="${r*0.3}" r="${r*0.08}" fill="${n}"/>
3096
+ <line x1="${r*0.3}" y1="${r*0.38}" x2="${r*0.3}" y2="${r*0.6}" stroke="${o}" stroke-width="2"/>
3097
+ <line x1="${r*0.2}" y1="${r*0.45}" x2="${r*0.4}" y2="${r*0.45}" stroke="${o}" stroke-width="2"/>
2167
3098
  <!-- Animal figure -->
2168
- <ellipse cx="${o*0.7}" cy="${o*0.5}" rx="${o*0.15}" ry="${o*0.08}" fill="${n}"/>
2169
- <line x1="${o*0.6}" y1="${o*0.58}" x2="${o*0.6}" y2="${o*0.7}" stroke="${a}" stroke-width="2"/>
2170
- <line x1="${o*0.8}" y1="${o*0.58}" x2="${o*0.8}" y2="${o*0.7}" stroke="${a}" stroke-width="2"/>
3099
+ <ellipse cx="${r*0.7}" cy="${r*0.5}" rx="${r*0.15}" ry="${r*0.08}" fill="${n}"/>
3100
+ <line x1="${r*0.6}" y1="${r*0.58}" x2="${r*0.6}" y2="${r*0.7}" stroke="${o}" stroke-width="2"/>
3101
+ <line x1="${r*0.8}" y1="${r*0.58}" x2="${r*0.8}" y2="${r*0.7}" stroke="${o}" stroke-width="2"/>
2171
3102
  <!-- Dots like ancient markings -->
2172
- <circle cx="${o*0.15}" cy="${o*0.8}" r="3" fill="${n}"/>
2173
- <circle cx="${o*0.85}" cy="${o*0.2}" r="3" fill="${n}"/>
3103
+ <circle cx="${r*0.15}" cy="${r*0.8}" r="3" fill="${n}"/>
3104
+ <circle cx="${r*0.85}" cy="${r*0.2}" r="3" fill="${n}"/>
2174
3105
  </svg>
2175
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Wn({primaryColor:t="#1EB53A",accentColor:n="#FCD116",size:a=30}={}){let o=`
2176
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
2177
- <rect width="${a}" height="${a}" fill="${t}"/>
3106
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function Eo({primaryColor:t="#1EB53A",accentColor:n="#FCD116",size:o=30}={}){let r=`
3107
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
3108
+ <rect width="${o}" height="${o}" fill="${t}"/>
2178
3109
  <!-- Pindo (Border) Motifs: Cashew/Triangle -->
2179
- <path d="M0,0 L${a/2},${a/2} L0,${a} Z" fill="${n}"/>
2180
- <path d="M${a},0 L${a/2},${a/2} L${a},${a} Z" fill="${n}"/>
2181
- <circle cx="${a/2}" cy="${a/2}" r="${a*0.15}" fill="none" stroke="${n}" stroke-width="2"/>
3110
+ <path d="M0,0 L${o/2},${o/2} L0,${o} Z" fill="${n}"/>
3111
+ <path d="M${o},0 L${o/2},${o/2} L${o},${o} Z" fill="${n}"/>
3112
+ <circle cx="${o/2}" cy="${o/2}" r="${o*0.15}" fill="none" stroke="${n}" stroke-width="2"/>
2182
3113
  </svg>
2183
- `;return`data:image/svg+xml,${encodeURIComponent(o.trim())}`}function Fb({primaryColor:t="#FF6B00",secondaryColor:n="#002B5C",backgroundColor:a="#FFFFFF",size:o=40}={}){let l=`
2184
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2185
- <rect width="${o}" height="${o}" fill="${a}"/>
3114
+ `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function di({primaryColor:t="#FF6B00",secondaryColor:n="#002B5C",backgroundColor:o="#FFFFFF",size:r=40}={}){let a=`
3115
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3116
+ <rect width="${r}" height="${r}" fill="${o}"/>
2186
3117
  <!-- Border pattern -->
2187
- <rect x="0" y="0" width="${o}" height="${o*0.1}" fill="${t}"/>
2188
- <rect x="0" y="${o*0.9}" width="${o}" height="${o*0.1}" fill="${t}"/>
2189
- <rect x="0" y="0" width="${o*0.1}" height="${o}" fill="${t}"/>
2190
- <rect x="${o*0.9}" y="0" width="${o*0.1}" height="${o}" fill="${t}"/>
3118
+ <rect x="0" y="0" width="${r}" height="${r*0.1}" fill="${t}"/>
3119
+ <rect x="0" y="${r*0.9}" width="${r}" height="${r*0.1}" fill="${t}"/>
3120
+ <rect x="0" y="0" width="${r*0.1}" height="${r}" fill="${t}"/>
3121
+ <rect x="${r*0.9}" y="0" width="${r*0.1}" height="${r}" fill="${t}"/>
2191
3122
  <!-- Center motif -->
2192
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.15}" fill="${n}"/>
2193
- <text x="${o*0.5}" y="${o*0.55}" text-anchor="middle" fill="${t}" font-size="${o*0.08}">KANGA</text>
3123
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.15}" fill="${n}"/>
3124
+ <text x="${r*0.5}" y="${r*0.55}" text-anchor="middle" fill="${t}" font-size="${r*0.08}">KANGA</text>
2194
3125
  </svg>
2195
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function ub({primaryColor:t="#8B4513",secondaryColor:n="#DAA520",backgroundColor:a="#F5F5DC",size:o=30}={}){let l=`
2196
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2197
- <rect width="${o}" height="${o}" fill="${a}"/>
3126
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function hi({primaryColor:t="#8B4513",secondaryColor:n="#DAA520",backgroundColor:o="#F5F5DC",size:r=30}={}){let a=`
3127
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3128
+ <rect width="${r}" height="${r}" fill="${o}"/>
2198
3129
  <!-- Kuba geometric border -->
2199
- <polygon points="0,0 ${o*0.3},0 0,${o*0.3}" fill="${t}"/>
2200
- <polygon points="${o},0 ${o*0.7},0 ${o},${o*0.3}" fill="${t}"/>
2201
- <polygon points="0,${o} ${o*0.3},${o} 0,${o*0.7}" fill="${t}"/>
2202
- <polygon points="${o},${o} ${o*0.7},${o} ${o},${o*0.7}" fill="${t}"/>
3130
+ <polygon points="0,0 ${r*0.3},0 0,${r*0.3}" fill="${t}"/>
3131
+ <polygon points="${r},0 ${r*0.7},0 ${r},${r*0.3}" fill="${t}"/>
3132
+ <polygon points="0,${r} ${r*0.3},${r} 0,${r*0.7}" fill="${t}"/>
3133
+ <polygon points="${r},${r} ${r*0.7},${r} ${r},${r*0.7}" fill="${t}"/>
2203
3134
  <!-- Center diamond -->
2204
- <polygon points="${o*0.5},${o*0.3} ${o*0.7},${o*0.5} ${o*0.5},${o*0.7} ${o*0.3},${o*0.5}" fill="${n}"/>
3135
+ <polygon points="${r*0.5},${r*0.3} ${r*0.7},${r*0.5} ${r*0.5},${r*0.7} ${r*0.3},${r*0.5}" fill="${n}"/>
2205
3136
  </svg>
2206
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Bb({primaryColor:t="#FF0000",secondaryColor:n="#000000",accentColor:a="#FFFFFF",size:o=40}={}){let l=`
2207
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2208
- <rect width="${o}" height="${o}" fill="${a}"/>
3137
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function gi({primaryColor:t="#FF0000",secondaryColor:n="#000000",accentColor:o="#FFFFFF",size:r=40}={}){let a=`
3138
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3139
+ <rect width="${r}" height="${r}" fill="${o}"/>
2209
3140
  <!-- Bead pattern -->
2210
- <circle cx="${o*0.2}" cy="${o*0.2}" r="${o*0.08}" fill="${t}"/>
2211
- <circle cx="${o*0.5}" cy="${o*0.2}" r="${o*0.08}" fill="${n}"/>
2212
- <circle cx="${o*0.8}" cy="${o*0.2}" r="${o*0.08}" fill="${t}"/>
2213
- <circle cx="${o*0.2}" cy="${o*0.5}" r="${o*0.08}" fill="${n}"/>
2214
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.08}" fill="${t}"/>
2215
- <circle cx="${o*0.8}" cy="${o*0.5}" r="${o*0.08}" fill="${n}"/>
2216
- <circle cx="${o*0.2}" cy="${o*0.8}" r="${o*0.08}" fill="${t}"/>
2217
- <circle cx="${o*0.5}" cy="${o*0.8}" r="${o*0.08}" fill="${n}"/>
2218
- <circle cx="${o*0.8}" cy="${o*0.8}" r="${o*0.08}" fill="${t}"/>
3141
+ <circle cx="${r*0.2}" cy="${r*0.2}" r="${r*0.08}" fill="${t}"/>
3142
+ <circle cx="${r*0.5}" cy="${r*0.2}" r="${r*0.08}" fill="${n}"/>
3143
+ <circle cx="${r*0.8}" cy="${r*0.2}" r="${r*0.08}" fill="${t}"/>
3144
+ <circle cx="${r*0.2}" cy="${r*0.5}" r="${r*0.08}" fill="${n}"/>
3145
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.08}" fill="${t}"/>
3146
+ <circle cx="${r*0.8}" cy="${r*0.5}" r="${r*0.08}" fill="${n}"/>
3147
+ <circle cx="${r*0.2}" cy="${r*0.8}" r="${r*0.08}" fill="${t}"/>
3148
+ <circle cx="${r*0.5}" cy="${r*0.8}" r="${r*0.08}" fill="${n}"/>
3149
+ <circle cx="${r*0.8}" cy="${r*0.8}" r="${r*0.08}" fill="${t}"/>
2219
3150
  </svg>
2220
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Db({primaryColor:t="#8B0000",secondaryColor:n="#FFD700",backgroundColor:a="#654321",size:o=50}={}){let l=`
2221
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2222
- <ellipse cx="${o*0.5}" cy="${o*0.5}" rx="${o*0.4}" ry="${o*0.45}" fill="${a}"/>
3151
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function mi({primaryColor:t="#8B0000",secondaryColor:n="#FFD700",backgroundColor:o="#654321",size:r=50}={}){let a=`
3152
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3153
+ <ellipse cx="${r*0.5}" cy="${r*0.5}" rx="${r*0.4}" ry="${r*0.45}" fill="${o}"/>
2223
3154
  <!-- Shield patterns -->
2224
- <ellipse cx="${o*0.5}" cy="${o*0.3}" rx="${o*0.2}" ry="${o*0.15}" fill="${t}"/>
2225
- <rect x="${o*0.4}" y="${o*0.5}" width="${o*0.2}" height="${o*0.3}" fill="${n}"/>
3155
+ <ellipse cx="${r*0.5}" cy="${r*0.3}" rx="${r*0.2}" ry="${r*0.15}" fill="${t}"/>
3156
+ <rect x="${r*0.4}" y="${r*0.5}" width="${r*0.2}" height="${r*0.3}" fill="${n}"/>
2226
3157
  <!-- Decorative lines -->
2227
- <line x1="${o*0.3}" y1="${o*0.2}" x2="${o*0.7}" y2="${o*0.2}" stroke="${t}" stroke-width="3"/>
2228
- <line x1="${o*0.3}" y1="${o*0.8}" x2="${o*0.7}" y2="${o*0.8}" stroke="${t}" stroke-width="3"/>
3158
+ <line x1="${r*0.3}" y1="${r*0.2}" x2="${r*0.7}" y2="${r*0.2}" stroke="${t}" stroke-width="3"/>
3159
+ <line x1="${r*0.3}" y1="${r*0.8}" x2="${r*0.7}" y2="${r*0.8}" stroke="${t}" stroke-width="3"/>
2229
3160
  </svg>
2230
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Ob({primaryColor:t="#FF1493",secondaryColor:n="#00FF00",accentColor:a="#FFFF00",backgroundColor:o="#FFFFFF",size:l=50}={}){let b=`
2231
- <svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${l}" viewBox="0 0 ${l} ${l}">
2232
- <rect width="${l}" height="${l}" fill="${o}"/>
3161
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function pi({primaryColor:t="#FF1493",secondaryColor:n="#00FF00",accentColor:o="#FFFF00",backgroundColor:r="#FFFFFF",size:a=50}={}){let e=`
3162
+ <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
3163
+ <rect width="${a}" height="${a}" fill="${r}"/>
2233
3164
  <!-- Ndebele geometric patterns -->
2234
- <polygon points="${l*0.2},${l*0.2} ${l*0.4},${l*0.2} ${l*0.3},${l*0.4}" fill="${t}"/>
2235
- <polygon points="${l*0.6},${l*0.2} ${l*0.8},${l*0.2} ${l*0.7},${l*0.4}" fill="${n}"/>
2236
- <polygon points="${l*0.2},${l*0.6} ${l*0.4},${l*0.6} ${l*0.3},${l*0.8}" fill="${a}"/>
2237
- <polygon points="${l*0.6},${l*0.6} ${l*0.8},${l*0.6} ${l*0.7},${l*0.8}" fill="${t}"/>
3165
+ <polygon points="${a*0.2},${a*0.2} ${a*0.4},${a*0.2} ${a*0.3},${a*0.4}" fill="${t}"/>
3166
+ <polygon points="${a*0.6},${a*0.2} ${a*0.8},${a*0.2} ${a*0.7},${a*0.4}" fill="${n}"/>
3167
+ <polygon points="${a*0.2},${a*0.6} ${a*0.4},${a*0.6} ${a*0.3},${a*0.8}" fill="${o}"/>
3168
+ <polygon points="${a*0.6},${a*0.6} ${a*0.8},${a*0.6} ${a*0.7},${a*0.8}" fill="${t}"/>
2238
3169
  <!-- Center design -->
2239
- <circle cx="${l*0.5}" cy="${l*0.5}" r="${l*0.15}" fill="${n}"/>
2240
- <rect x="${l*0.45}" y="${l*0.45}" width="${l*0.1}" height="${l*0.1}" fill="${a}"/>
3170
+ <circle cx="${a*0.5}" cy="${a*0.5}" r="${a*0.15}" fill="${n}"/>
3171
+ <rect x="${a*0.45}" y="${a*0.45}" width="${a*0.1}" height="${a*0.1}" fill="${o}"/>
2241
3172
  </svg>
2242
- `;return`data:image/svg+xml,${encodeURIComponent(b.trim())}`}function Un({primaryColor:t="#00A3DD",secondaryColor:n="#FCD116",backgroundColor:a="#1EB53A",size:o=50}={}){let l=`
2243
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2244
- <rect width="${o}" height="${o}" fill="${a}"/>
2245
- <circle cx="${o*0.25}" cy="${o*0.25}" r="${o*0.2}" fill="${t}" opacity="0.8"/>
2246
- <circle cx="${o*0.75}" cy="${o*0.75}" r="${o*0.2}" fill="${t}" opacity="0.8"/>
2247
- <circle cx="${o*0.25}" cy="${o*0.25}" r="${o*0.1}" fill="${n}"/>
2248
- <circle cx="${o*0.75}" cy="${o*0.75}" r="${o*0.1}" fill="${n}"/>
2249
- <circle cx="${o*0.75}" cy="${o*0.25}" r="${o*0.08}" fill="${n}" opacity="0.6"/>
2250
- <circle cx="${o*0.25}" cy="${o*0.75}" r="${o*0.08}" fill="${n}" opacity="0.6"/>
3173
+ `;return`data:image/svg+xml,${encodeURIComponent(e.trim())}`}function So({primaryColor:t="#00A3DD",secondaryColor:n="#FCD116",backgroundColor:o="#1EB53A",size:r=50}={}){let a=`
3174
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3175
+ <rect width="${r}" height="${r}" fill="${o}"/>
3176
+ <circle cx="${r*0.25}" cy="${r*0.25}" r="${r*0.2}" fill="${t}" opacity="0.8"/>
3177
+ <circle cx="${r*0.75}" cy="${r*0.75}" r="${r*0.2}" fill="${t}" opacity="0.8"/>
3178
+ <circle cx="${r*0.25}" cy="${r*0.25}" r="${r*0.1}" fill="${n}"/>
3179
+ <circle cx="${r*0.75}" cy="${r*0.75}" r="${r*0.1}" fill="${n}"/>
3180
+ <circle cx="${r*0.75}" cy="${r*0.25}" r="${r*0.08}" fill="${n}" opacity="0.6"/>
3181
+ <circle cx="${r*0.25}" cy="${r*0.75}" r="${r*0.08}" fill="${n}" opacity="0.6"/>
2251
3182
  </svg>
2252
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Vn({colors:t=["#FFD700","#228B22","#DC143C","#000000"],size:n=60}={}){let[a,o,l,b]=t,r=n/6,h=`
3183
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function Yo({colors:t=["#FFD700","#228B22","#DC143C","#000000"],size:n=60}={}){let[o,r,a,e]=t,l=n/6,i=`
2253
3184
  <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${n}" viewBox="0 0 ${n} ${n}">
2254
- <rect width="${n}" height="${n}" fill="${b}"/>
3185
+ <rect width="${n}" height="${n}" fill="${e}"/>
2255
3186
  <!-- Horizontal bands -->
2256
- <rect x="0" y="0" width="${n}" height="${r}" fill="${a}"/>
2257
- <rect x="0" y="${r}" width="${n}" height="${r}" fill="${o}"/>
2258
- <rect x="0" y="${r*2}" width="${n}" height="${r}" fill="${l}"/>
2259
- <rect x="0" y="${r*3}" width="${n}" height="${r}" fill="${a}"/>
2260
- <rect x="0" y="${r*4}" width="${n}" height="${r}" fill="${o}"/>
2261
- <rect x="0" y="${r*5}" width="${n}" height="${r}" fill="${l}"/>
3187
+ <rect x="0" y="0" width="${n}" height="${l}" fill="${o}"/>
3188
+ <rect x="0" y="${l}" width="${n}" height="${l}" fill="${r}"/>
3189
+ <rect x="0" y="${l*2}" width="${n}" height="${l}" fill="${a}"/>
3190
+ <rect x="0" y="${l*3}" width="${n}" height="${l}" fill="${o}"/>
3191
+ <rect x="0" y="${l*4}" width="${n}" height="${l}" fill="${r}"/>
3192
+ <rect x="0" y="${l*5}" width="${n}" height="${l}" fill="${a}"/>
2262
3193
  <!-- Vertical accents -->
2263
- <rect x="${n*0.2}" y="0" width="3" height="${n}" fill="${b}" opacity="0.5"/>
2264
- <rect x="${n*0.4}" y="0" width="3" height="${n}" fill="${b}" opacity="0.5"/>
2265
- <rect x="${n*0.6}" y="0" width="3" height="${n}" fill="${b}" opacity="0.5"/>
2266
- <rect x="${n*0.8}" y="0" width="3" height="${n}" fill="${b}" opacity="0.5"/>
3194
+ <rect x="${n*0.2}" y="0" width="3" height="${n}" fill="${e}" opacity="0.5"/>
3195
+ <rect x="${n*0.4}" y="0" width="3" height="${n}" fill="${e}" opacity="0.5"/>
3196
+ <rect x="${n*0.6}" y="0" width="3" height="${n}" fill="${e}" opacity="0.5"/>
3197
+ <rect x="${n*0.8}" y="0" width="3" height="${n}" fill="${e}" opacity="0.5"/>
2267
3198
  <!-- Kente squares -->
2268
- <rect x="${n*0.1}" y="${n*0.1}" width="${n*0.15}" height="${n*0.15}" fill="${a}" stroke="${b}" stroke-width="1"/>
2269
- <rect x="${n*0.75}" y="${n*0.75}" width="${n*0.15}" height="${n*0.15}" fill="${l}" stroke="${b}" stroke-width="1"/>
3199
+ <rect x="${n*0.1}" y="${n*0.1}" width="${n*0.15}" height="${n*0.15}" fill="${o}" stroke="${e}" stroke-width="1"/>
3200
+ <rect x="${n*0.75}" y="${n*0.75}" width="${n*0.15}" height="${n*0.15}" fill="${a}" stroke="${e}" stroke-width="1"/>
2270
3201
  </svg>
2271
- `;return`data:image/svg+xml,${encodeURIComponent(h.trim())}`}function jn({symbolColor:t="#000000",backgroundColor:n="#CD853F",size:a=50}={}){let o=`
2272
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
2273
- <rect width="${a}" height="${a}" fill="${n}"/>
3202
+ `;return`data:image/svg+xml,${encodeURIComponent(i.trim())}`}function Ro({symbolColor:t="#000000",backgroundColor:n="#CD853F",size:o=50}={}){let r=`
3203
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
3204
+ <rect width="${o}" height="${o}" fill="${n}"/>
2274
3205
  <!-- Sankofa-inspired heart shape (go back and get it) -->
2275
- <path d="M${a*0.5} ${a*0.2}
2276
- C${a*0.3} ${a*0.1} ${a*0.15} ${a*0.3} ${a*0.25} ${a*0.5}
2277
- L${a*0.5} ${a*0.8}
2278
- L${a*0.75} ${a*0.5}
2279
- C${a*0.85} ${a*0.3} ${a*0.7} ${a*0.1} ${a*0.5} ${a*0.2}"
3206
+ <path d="M${o*0.5} ${o*0.2}
3207
+ C${o*0.3} ${o*0.1} ${o*0.15} ${o*0.3} ${o*0.25} ${o*0.5}
3208
+ L${o*0.5} ${o*0.8}
3209
+ L${o*0.75} ${o*0.5}
3210
+ C${o*0.85} ${o*0.3} ${o*0.7} ${o*0.1} ${o*0.5} ${o*0.2}"
2280
3211
  fill="none" stroke="${t}" stroke-width="3"/>
2281
3212
  <!-- Spiral detail -->
2282
- <circle cx="${a*0.35}" cy="${a*0.45}" r="${a*0.08}" fill="none" stroke="${t}" stroke-width="2"/>
2283
- <circle cx="${a*0.65}" cy="${a*0.45}" r="${a*0.08}" fill="none" stroke="${t}" stroke-width="2"/>
3213
+ <circle cx="${o*0.35}" cy="${o*0.45}" r="${o*0.08}" fill="none" stroke="${t}" stroke-width="2"/>
3214
+ <circle cx="${o*0.65}" cy="${o*0.45}" r="${o*0.08}" fill="none" stroke="${t}" stroke-width="2"/>
2284
3215
  </svg>
2285
- `;return`data:image/svg+xml,${encodeURIComponent(o.trim())}`}function en({colors:t=["#4B0082","#FFD700","#FFFFFF"],size:n=50}={}){let[a,o,l]=t,b=n/10,r=`
3216
+ `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function Xo({colors:t=["#4B0082","#FFD700","#FFFFFF"],size:n=50}={}){let[o,r,a]=t,e=n/10,l=`
2286
3217
  <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${n}" viewBox="0 0 ${n} ${n}">
2287
- <rect width="${n}" height="${n}" fill="${a}"/>
3218
+ <rect width="${n}" height="${n}" fill="${o}"/>
2288
3219
  <!-- Horizontal stripes -->
2289
- <rect x="0" y="${b}" width="${n}" height="${b*0.5}" fill="${o}"/>
2290
- <rect x="0" y="${b*3}" width="${n}" height="${b*0.5}" fill="${l}"/>
2291
- <rect x="0" y="${b*5}" width="${n}" height="${b*0.5}" fill="${o}"/>
2292
- <rect x="0" y="${b*7}" width="${n}" height="${b*0.5}" fill="${l}"/>
2293
- <rect x="0" y="${b*9}" width="${n}" height="${b*0.5}" fill="${o}"/>
3220
+ <rect x="0" y="${e}" width="${n}" height="${e*0.5}" fill="${r}"/>
3221
+ <rect x="0" y="${e*3}" width="${n}" height="${e*0.5}" fill="${a}"/>
3222
+ <rect x="0" y="${e*5}" width="${n}" height="${e*0.5}" fill="${r}"/>
3223
+ <rect x="0" y="${e*7}" width="${n}" height="${e*0.5}" fill="${a}"/>
3224
+ <rect x="0" y="${e*9}" width="${n}" height="${e*0.5}" fill="${r}"/>
2294
3225
  <!-- Vertical accent lines -->
2295
- <rect x="${n*0.48}" y="0" width="${b*0.4}" height="${n}" fill="${o}" opacity="0.7"/>
3226
+ <rect x="${n*0.48}" y="0" width="${e*0.4}" height="${n}" fill="${r}" opacity="0.7"/>
2296
3227
  <!-- Diamond motifs -->
2297
3228
  <polygon points="${n*0.25},${n*0.3} ${n*0.35},${n*0.5} ${n*0.25},${n*0.7} ${n*0.15},${n*0.5}"
2298
- fill="${o}" stroke="${l}" stroke-width="1"/>
3229
+ fill="${r}" stroke="${a}" stroke-width="1"/>
2299
3230
  <polygon points="${n*0.75},${n*0.3} ${n*0.85},${n*0.5} ${n*0.75},${n*0.7} ${n*0.65},${n*0.5}"
2300
- fill="${o}" stroke="${l}" stroke-width="1"/>
3231
+ fill="${r}" stroke="${a}" stroke-width="1"/>
2301
3232
  </svg>
2302
- `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function Nn({primaryColor:t="#FF6B00",secondaryColor:n="#00A86B",accentColor:a="#FFD700",backgroundColor:o="#FFFFFF",size:l=60}={}){let b=`
2303
- <svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${l}" viewBox="0 0 ${l} ${l}">
2304
- <rect width="${l}" height="${l}" fill="${o}"/>
3233
+ `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Qo({primaryColor:t="#FF6B00",secondaryColor:n="#00A86B",accentColor:o="#FFD700",backgroundColor:r="#FFFFFF",size:a=60}={}){let e=`
3234
+ <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
3235
+ <rect width="${a}" height="${a}" fill="${r}"/>
2305
3236
  <!-- Bold circular motifs -->
2306
- <circle cx="${l*0.3}" cy="${l*0.3}" r="${l*0.25}" fill="${t}"/>
2307
- <circle cx="${l*0.3}" cy="${l*0.3}" r="${l*0.15}" fill="${n}"/>
2308
- <circle cx="${l*0.3}" cy="${l*0.3}" r="${l*0.08}" fill="${a}"/>
3237
+ <circle cx="${a*0.3}" cy="${a*0.3}" r="${a*0.25}" fill="${t}"/>
3238
+ <circle cx="${a*0.3}" cy="${a*0.3}" r="${a*0.15}" fill="${n}"/>
3239
+ <circle cx="${a*0.3}" cy="${a*0.3}" r="${a*0.08}" fill="${o}"/>
2309
3240
 
2310
- <circle cx="${l*0.8}" cy="${l*0.8}" r="${l*0.2}" fill="${n}"/>
2311
- <circle cx="${l*0.8}" cy="${l*0.8}" r="${l*0.1}" fill="${t}"/>
3241
+ <circle cx="${a*0.8}" cy="${a*0.8}" r="${a*0.2}" fill="${n}"/>
3242
+ <circle cx="${a*0.8}" cy="${a*0.8}" r="${a*0.1}" fill="${t}"/>
2312
3243
 
2313
3244
  <!-- Connecting lines -->
2314
- <line x1="${l*0.45}" y1="${l*0.45}" x2="${l*0.65}" y2="${l*0.65}"
3245
+ <line x1="${a*0.45}" y1="${a*0.45}" x2="${a*0.65}" y2="${a*0.65}"
2315
3246
  stroke="${t}" stroke-width="4"/>
2316
3247
 
2317
3248
  <!-- Small dots -->
2318
- <circle cx="${l*0.1}" cy="${l*0.8}" r="${l*0.05}" fill="${a}"/>
2319
- <circle cx="${l*0.9}" cy="${l*0.2}" r="${l*0.05}" fill="${a}"/>
3249
+ <circle cx="${a*0.1}" cy="${a*0.8}" r="${a*0.05}" fill="${o}"/>
3250
+ <circle cx="${a*0.9}" cy="${a*0.2}" r="${a*0.05}" fill="${o}"/>
2320
3251
  </svg>
2321
- `;return`data:image/svg+xml,${encodeURIComponent(b.trim())}`}function Kn({primaryColor:t="#000000",secondaryColor:n="#FFFFFF",accentColor:a="#8B4513",size:o=60}={}){let l=`
2322
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2323
- <rect width="${o}" height="${o}" fill="${t}"/>
3252
+ `;return`data:image/svg+xml,${encodeURIComponent(e.trim())}`}function Jo({primaryColor:t="#000000",secondaryColor:n="#FFFFFF",accentColor:o="#8B4513",size:r=60}={}){let a=`
3253
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3254
+ <rect width="${r}" height="${r}" fill="${t}"/>
2324
3255
  <!-- Zigzags -->
2325
- <polyline points="0,${o*0.2} ${o*0.25},0 ${o*0.5},${o*0.2} ${o*0.75},0 ${o},${o*0.2}"
3256
+ <polyline points="0,${r*0.2} ${r*0.25},0 ${r*0.5},${r*0.2} ${r*0.75},0 ${r},${r*0.2}"
2326
3257
  fill="none" stroke="${n}" stroke-width="3"/>
2327
- <polyline points="0,${o*0.8} ${o*0.25},${o} ${o*0.5},${o*0.8} ${o*0.75},${o} ${o},${o*0.8}"
3258
+ <polyline points="0,${r*0.8} ${r*0.25},${r} ${r*0.5},${r*0.8} ${r*0.75},${r} ${r},${r*0.8}"
2328
3259
  fill="none" stroke="${n}" stroke-width="3"/>
2329
3260
  <!-- Crosses -->
2330
- <line x1="${o*0.25}" y1="${o*0.4}" x2="${o*0.25}" y2="${o*0.6}" stroke="${n}" stroke-width="2"/>
2331
- <line x1="${o*0.15}" y1="${o*0.5}" x2="${o*0.35}" y2="${o*0.5}" stroke="${n}" stroke-width="2"/>
2332
- <line x1="${o*0.75}" y1="${o*0.4}" x2="${o*0.75}" y2="${o*0.6}" stroke="${n}" stroke-width="2"/>
2333
- <line x1="${o*0.65}" y1="${o*0.5}" x2="${o*0.85}" y2="${o*0.5}" stroke="${n}" stroke-width="2"/>
3261
+ <line x1="${r*0.25}" y1="${r*0.4}" x2="${r*0.25}" y2="${r*0.6}" stroke="${n}" stroke-width="2"/>
3262
+ <line x1="${r*0.15}" y1="${r*0.5}" x2="${r*0.35}" y2="${r*0.5}" stroke="${n}" stroke-width="2"/>
3263
+ <line x1="${r*0.75}" y1="${r*0.4}" x2="${r*0.75}" y2="${r*0.6}" stroke="${n}" stroke-width="2"/>
3264
+ <line x1="${r*0.65}" y1="${r*0.5}" x2="${r*0.85}" y2="${r*0.5}" stroke="${n}" stroke-width="2"/>
2334
3265
  <!-- Dots -->
2335
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.08}" fill="${a}"/>
3266
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.08}" fill="${o}"/>
2336
3267
  </svg>
2337
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function In({primaryColor:t="#D2B48C",secondaryColor:n="#3E2723",size:a=60}={}){let o=`
2338
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
2339
- <rect width="${a}" height="${a}" fill="${t}"/>
3268
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function Go({primaryColor:t="#D2B48C",secondaryColor:n="#3E2723",size:o=60}={}){let r=`
3269
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
3270
+ <rect width="${o}" height="${o}" fill="${t}"/>
2340
3271
  <!-- Interlocking diamonds/rectangles -->
2341
- <rect x="${a*0.1}" y="${a*0.1}" width="${a*0.3}" height="${a*0.3}" fill="${n}"/>
2342
- <rect x="${a*0.6}" y="${a*0.6}" width="${a*0.3}" height="${a*0.3}" fill="${n}"/>
2343
- <rect x="${a*0.6}" y="${a*0.1}" width="${a*0.3}" height="${a*0.3}"
3272
+ <rect x="${o*0.1}" y="${o*0.1}" width="${o*0.3}" height="${o*0.3}" fill="${n}"/>
3273
+ <rect x="${o*0.6}" y="${o*0.6}" width="${o*0.3}" height="${o*0.3}" fill="${n}"/>
3274
+ <rect x="${o*0.6}" y="${o*0.1}" width="${o*0.3}" height="${o*0.3}"
2344
3275
  fill="none" stroke="${n}" stroke-width="4"/>
2345
- <rect x="${a*0.1}" y="${a*0.6}" width="${a*0.3}" height="${a*0.3}"
3276
+ <rect x="${o*0.1}" y="${o*0.6}" width="${o*0.3}" height="${o*0.3}"
2346
3277
  fill="none" stroke="${n}" stroke-width="4"/>
2347
3278
  <!-- Center lines -->
2348
- <line x1="${a*0.4}" y1="${a*0.5}" x2="${a*0.6}" y2="${a*0.5}" stroke="${n}" stroke-width="2"/>
2349
- <line x1="${a*0.5}" y1="${a*0.4}" x2="${a*0.5}" y2="${a*0.6}" stroke="${n}" stroke-width="2"/>
3279
+ <line x1="${o*0.4}" y1="${o*0.5}" x2="${o*0.6}" y2="${o*0.5}" stroke="${n}" stroke-width="2"/>
3280
+ <line x1="${o*0.5}" y1="${o*0.4}" x2="${o*0.5}" y2="${o*0.6}" stroke="${n}" stroke-width="2"/>
2350
3281
  </svg>
2351
- `;return`data:image/svg+xml,${encodeURIComponent(o.trim())}`}function Pn({primaryColor:t="#000000",secondaryColor:n="#FFFFFF",accentColor:a="#B22222",size:o=60}={}){let l=`
2352
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2353
- <rect width="${o}" height="${o}" fill="${n}"/>
3282
+ `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function Fo({primaryColor:t="#000000",secondaryColor:n="#FFFFFF",accentColor:o="#B22222",size:r=60}={}){let a=`
3283
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3284
+ <rect width="${r}" height="${r}" fill="${n}"/>
2354
3285
  <!-- Spiral/Diamond Motif -->
2355
- <path d="M${o*0.5} ${o*0.1}
2356
- L${o*0.9} ${o*0.5}
2357
- L${o*0.5} ${o*0.9}
2358
- L${o*0.1} ${o*0.5} Z"
3286
+ <path d="M${r*0.5} ${r*0.1}
3287
+ L${r*0.9} ${r*0.5}
3288
+ L${r*0.5} ${r*0.9}
3289
+ L${r*0.1} ${r*0.5} Z"
2359
3290
  fill="${t}"/>
2360
- <path d="M${o*0.5} ${o*0.3}
2361
- L${o*0.7} ${o*0.5}
2362
- L${o*0.5} ${o*0.7}
2363
- L${o*0.3} ${o*0.5} Z"
3291
+ <path d="M${r*0.5} ${r*0.3}
3292
+ L${r*0.7} ${r*0.5}
3293
+ L${r*0.5} ${r*0.7}
3294
+ L${r*0.3} ${r*0.5} Z"
2364
3295
  fill="${n}"/>
2365
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.1}" fill="${a}"/>
3296
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.1}" fill="${o}"/>
2366
3297
  </svg>
2367
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Cn({colors:t=["#009E60","#FCDD09","#EF3340"],backgroundColor:n="#FFFFFF",size:a=40}={}){let[o,l,b]=t,r=`
2368
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
2369
- <rect width="${a}" height="${a}" fill="${n}"/>
3298
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function Bo({colors:t=["#009E60","#FCDD09","#EF3340"],backgroundColor:n="#FFFFFF",size:o=40}={}){let[r,a,e]=t,l=`
3299
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
3300
+ <rect width="${o}" height="${o}" fill="${n}"/>
2370
3301
  <!-- Diamond Chain -->
2371
- <polygon points="${a*0.5},0 ${a},${a*0.5} ${a*0.5},${a} 0,${a*0.5}"
2372
- fill="${o}" opacity="0.2"/>
2373
- <polygon points="${a*0.5},${a*0.2} ${a*0.8},${a*0.5} ${a*0.5},${a*0.8} ${a*0.2},${a*0.5}"
2374
- fill="${l}"/>
2375
- <rect x="${a*0.4}" y="${a*0.4}" width="${a*0.2}" height="${a*0.2}" fill="${b}"/>
3302
+ <polygon points="${o*0.5},0 ${o},${o*0.5} ${o*0.5},${o} 0,${o*0.5}"
3303
+ fill="${r}" opacity="0.2"/>
3304
+ <polygon points="${o*0.5},${o*0.2} ${o*0.8},${o*0.5} ${o*0.5},${o*0.8} ${o*0.2},${o*0.5}"
3305
+ fill="${a}"/>
3306
+ <rect x="${o*0.4}" y="${o*0.4}" width="${o*0.2}" height="${o*0.2}" fill="${e}"/>
2376
3307
  <!-- Side accents -->
2377
- <line x1="0" y1="0" x2="0" y2="${a}" stroke="${o}" stroke-width="4"/>
2378
- <line x1="${a}" y1="0" x2="${a}" y2="${a}" stroke="${o}" stroke-width="4"/>
3308
+ <line x1="0" y1="0" x2="0" y2="${o}" stroke="${r}" stroke-width="4"/>
3309
+ <line x1="${o}" y1="0" x2="${o}" y2="${o}" stroke="${r}" stroke-width="4"/>
2379
3310
  </svg>
2380
- `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function Tn({colors:t=["#FFD700","#4169E1","#FF69B4","#228B22"],size:n=60,strokeWidth:a=2}={}){let[o,l,b,r]=t,h=`
3311
+ `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Do({colors:t=["#FFD700","#4169E1","#FF69B4","#228B22"],size:n=60,strokeWidth:o=2}={}){let[r,a,e,l]=t,i=`
2381
3312
  <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${n}" viewBox="0 0 ${n} ${n}">
2382
3313
  <rect width="${n}" height="${n}" fill="#FFFFFF"/>
2383
- <rect x="${a}" y="${a}"
2384
- width="${n-a*2}" height="${n-a*2}"
2385
- fill="none" stroke="#000000" stroke-width="${a}"/>
3314
+ <rect x="${o}" y="${o}"
3315
+ width="${n-o*2}" height="${n-o*2}"
3316
+ fill="none" stroke="#000000" stroke-width="${o}"/>
2386
3317
  <rect x="${n*0.15}" y="${n*0.15}" width="${n*0.35}" height="${n*0.35}"
2387
- fill="${o}" stroke="#000000" stroke-width="${a/2}"/>
3318
+ fill="${r}" stroke="#000000" stroke-width="${o/2}"/>
2388
3319
  <rect x="${n*0.5}" y="${n*0.15}" width="${n*0.35}" height="${n*0.35}"
2389
- fill="${l}" stroke="#000000" stroke-width="${a/2}"/>
3320
+ fill="${a}" stroke="#000000" stroke-width="${o/2}"/>
2390
3321
  <rect x="${n*0.15}" y="${n*0.5}" width="${n*0.35}" height="${n*0.35}"
2391
- fill="${b}" stroke="#000000" stroke-width="${a/2}"/>
3322
+ fill="${e}" stroke="#000000" stroke-width="${o/2}"/>
2392
3323
  <rect x="${n*0.5}" y="${n*0.5}" width="${n*0.35}" height="${n*0.35}"
2393
- fill="${r}" stroke="#000000" stroke-width="${a/2}"/>
3324
+ fill="${l}" stroke="#000000" stroke-width="${o/2}"/>
2394
3325
  <polygon points="${n/2},${n*0.3} ${n*0.7},${n/2} ${n/2},${n*0.7} ${n*0.3},${n/2}"
2395
- fill="#FFFFFF" stroke="#000000" stroke-width="${a}"/>
3326
+ fill="#FFFFFF" stroke="#000000" stroke-width="${o}"/>
2396
3327
  </svg>
2397
- `;return`data:image/svg+xml,${encodeURIComponent(h.trim())}`}function yn({colors:t=["#FFFFFF","#000000","#FF0000","#00A86B","#FFD700"],size:n=50}={}){let[a,o,l,b,r]=t,h=n/10,f=`
3328
+ `;return`data:image/svg+xml,${encodeURIComponent(i.trim())}`}function Oo({colors:t=["#FFFFFF","#000000","#FF0000","#00A86B","#FFD700"],size:n=50}={}){let[o,r,a,e,l]=t,i=n/10,c=`
2398
3329
  <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${n}" viewBox="0 0 ${n} ${n}">
2399
- <rect width="${n}" height="${n}" fill="${o}"/>
3330
+ <rect width="${n}" height="${n}" fill="${r}"/>
2400
3331
  <!-- Triangle pattern (isivivane - sacred cairn) -->
2401
3332
  <polygon points="${n*0.5},${n*0.1} ${n*0.9},${n*0.9} ${n*0.1},${n*0.9}"
2402
- fill="none" stroke="${a}" stroke-width="2"/>
3333
+ fill="none" stroke="${o}" stroke-width="2"/>
2403
3334
  <polygon points="${n*0.5},${n*0.25} ${n*0.75},${n*0.75} ${n*0.25},${n*0.75}"
2404
- fill="${l}"/>
3335
+ fill="${a}"/>
2405
3336
  <!-- Beadwork dots -->
2406
- <circle cx="${n*0.5}" cy="${n*0.35}" r="${h}" fill="${a}"/>
2407
- <circle cx="${n*0.35}" cy="${n*0.6}" r="${h}" fill="${b}"/>
2408
- <circle cx="${n*0.65}" cy="${n*0.6}" r="${h}" fill="${r}"/>
2409
- <circle cx="${n*0.5}" cy="${n*0.8}" r="${h}" fill="${a}"/>
3337
+ <circle cx="${n*0.5}" cy="${n*0.35}" r="${i}" fill="${o}"/>
3338
+ <circle cx="${n*0.35}" cy="${n*0.6}" r="${i}" fill="${e}"/>
3339
+ <circle cx="${n*0.65}" cy="${n*0.6}" r="${i}" fill="${l}"/>
3340
+ <circle cx="${n*0.5}" cy="${n*0.8}" r="${i}" fill="${o}"/>
2410
3341
  <!-- Border dots -->
2411
- <circle cx="${n*0.1}" cy="${n*0.1}" r="${h*0.7}" fill="${l}"/>
2412
- <circle cx="${n*0.9}" cy="${n*0.1}" r="${h*0.7}" fill="${b}"/>
3342
+ <circle cx="${n*0.1}" cy="${n*0.1}" r="${i*0.7}" fill="${a}"/>
3343
+ <circle cx="${n*0.9}" cy="${n*0.1}" r="${i*0.7}" fill="${e}"/>
2413
3344
  </svg>
2414
- `;return`data:image/svg+xml,${encodeURIComponent(f.trim())}`}function Zn({colors:t=["#3E5EB9","#FECD00","#B10C0C","#FFFFFF"],size:n=50}={}){let[a,o,l,b]=t,r=`
3345
+ `;return`data:image/svg+xml,${encodeURIComponent(c.trim())}`}function Wo({colors:t=["#3E5EB9","#FECD00","#B10C0C","#FFFFFF"],size:n=50}={}){let[o,r,a,e]=t,l=`
2415
3346
  <svg xmlns="http://www.w3.org/2000/svg" width="${n}" height="${n}" viewBox="0 0 ${n} ${n}">
2416
- <rect width="${n}" height="${n}" fill="${a}"/>
3347
+ <rect width="${n}" height="${n}" fill="${o}"/>
2417
3348
  <!-- Shield shape (central to Eswatini culture) -->
2418
3349
  <ellipse cx="${n*0.5}" cy="${n*0.45}" rx="${n*0.35}" ry="${n*0.4}"
2419
- fill="${o}" stroke="${l}" stroke-width="3"/>
3350
+ fill="${r}" stroke="${a}" stroke-width="3"/>
2420
3351
  <!-- Inner pattern -->
2421
3352
  <ellipse cx="${n*0.5}" cy="${n*0.45}" rx="${n*0.2}" ry="${n*0.25}"
2422
- fill="${l}"/>
3353
+ fill="${a}"/>
2423
3354
  <!-- Feather accents -->
2424
3355
  <line x1="${n*0.5}" y1="${n*0.05}" x2="${n*0.5}" y2="${n*0.2}"
2425
- stroke="${b}" stroke-width="3"/>
3356
+ stroke="${e}" stroke-width="3"/>
2426
3357
  <line x1="${n*0.4}" y1="${n*0.08}" x2="${n*0.45}" y2="${n*0.15}"
2427
- stroke="${b}" stroke-width="2"/>
3358
+ stroke="${e}" stroke-width="2"/>
2428
3359
  <line x1="${n*0.6}" y1="${n*0.08}" x2="${n*0.55}" y2="${n*0.15}"
2429
- stroke="${b}" stroke-width="2"/>
3360
+ stroke="${e}" stroke-width="2"/>
2430
3361
  <!-- Spear points -->
2431
- <polygon points="${n*0.1},${n*0.3} ${n*0.05},${n*0.5} ${n*0.15},${n*0.5}" fill="${b}"/>
2432
- <polygon points="${n*0.9},${n*0.3} ${n*0.85},${n*0.5} ${n*0.95},${n*0.5}" fill="${b}"/>
3362
+ <polygon points="${n*0.1},${n*0.3} ${n*0.05},${n*0.5} ${n*0.15},${n*0.5}" fill="${e}"/>
3363
+ <polygon points="${n*0.9},${n*0.3} ${n*0.85},${n*0.5} ${n*0.95},${n*0.5}" fill="${e}"/>
2433
3364
  </svg>
2434
- `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function sn({primaryColor:t="#FFFFFF",accentColor:n="#00A86B",backgroundColor:a="#1a1a2e",size:o=50}={}){let l=`
2435
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2436
- <rect width="${o}" height="${o}" fill="${a}"/>
3365
+ `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Uo({primaryColor:t="#FFFFFF",accentColor:n="#00A86B",backgroundColor:o="#1a1a2e",size:r=50}={}){let a=`
3366
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3367
+ <rect width="${r}" height="${r}" fill="${o}"/>
2437
3368
  <!-- Horizontal bands -->
2438
- <rect x="0" y="${o*0.2}" width="${o}" height="${o*0.1}" fill="${t}"/>
2439
- <rect x="0" y="${o*0.7}" width="${o}" height="${o*0.1}" fill="${t}"/>
3369
+ <rect x="0" y="${r*0.2}" width="${r}" height="${r*0.1}" fill="${t}"/>
3370
+ <rect x="0" y="${r*0.7}" width="${r}" height="${r*0.1}" fill="${t}"/>
2440
3371
  <!-- Vertical bands -->
2441
- <rect x="${o*0.2}" y="0" width="${o*0.1}" height="${o}" fill="${n}"/>
2442
- <rect x="${o*0.7}" y="0" width="${o*0.1}" height="${o}" fill="${n}"/>
3372
+ <rect x="${r*0.2}" y="0" width="${r*0.1}" height="${r}" fill="${n}"/>
3373
+ <rect x="${r*0.7}" y="0" width="${r*0.1}" height="${r}" fill="${n}"/>
2443
3374
  <!-- Central diamond -->
2444
- <polygon points="${o*0.5},${o*0.35} ${o*0.65},${o*0.5} ${o*0.5},${o*0.65} ${o*0.35},${o*0.5}"
3375
+ <polygon points="${r*0.5},${r*0.35} ${r*0.65},${r*0.5} ${r*0.5},${r*0.65} ${r*0.35},${r*0.5}"
2445
3376
  fill="${n}" stroke="${t}" stroke-width="2"/>
2446
3377
  <!-- Corner triangles -->
2447
- <polygon points="0,0 ${o*0.15},0 0,${o*0.15}" fill="${n}"/>
2448
- <polygon points="${o},0 ${o*0.85},0 ${o},${o*0.15}" fill="${n}"/>
2449
- <polygon points="0,${o} ${o*0.15},${o} 0,${o*0.85}" fill="${n}"/>
2450
- <polygon points="${o},${o} ${o*0.85},${o} ${o},${o*0.85}" fill="${n}"/>
3378
+ <polygon points="0,0 ${r*0.15},0 0,${r*0.15}" fill="${n}"/>
3379
+ <polygon points="${r},0 ${r*0.85},0 ${r},${r*0.15}" fill="${n}"/>
3380
+ <polygon points="0,${r} ${r*0.15},${r} 0,${r*0.85}" fill="${n}"/>
3381
+ <polygon points="${r},${r} ${r*0.85},${r} ${r},${r*0.85}" fill="${n}"/>
2451
3382
  </svg>
2452
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Wb(t,n){t.style.backgroundImage=`url("${n}")`,t.style.backgroundRepeat="repeat"}function zn({primaryColor:t="#8B0000",secondaryColor:n="#000000",accentColor:a="#FFD700",backgroundColor:o="#F5F5DC",size:l=60}={}){let b=`
2453
- <svg xmlns="http://www.w3.org/2000/svg" width="${l}" height="${l}" viewBox="0 0 ${l} ${l}">
2454
- <rect width="${l}" height="${l}" fill="${o}"/>
3383
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function si(t,n){t.style.backgroundImage=`url("${n}")`,t.style.backgroundRepeat="repeat"}function Vo({primaryColor:t="#8B0000",secondaryColor:n="#000000",accentColor:o="#FFD700",backgroundColor:r="#F5F5DC",size:a=60}={}){let e=`
3384
+ <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
3385
+ <rect width="${a}" height="${a}" fill="${r}"/>
2455
3386
  <!-- Lozenge (Diamond) - universal protective symbol -->
2456
- <polygon points="${l*0.5},${l*0.1} ${l*0.9},${l*0.5} ${l*0.5},${l*0.9} ${l*0.1},${l*0.5}"
3387
+ <polygon points="${a*0.5},${a*0.1} ${a*0.9},${a*0.5} ${a*0.5},${a*0.9} ${a*0.1},${a*0.5}"
2457
3388
  fill="${t}" stroke="${n}" stroke-width="2"/>
2458
3389
  <!-- Inner geometric details -->
2459
- <line x1="${l*0.5}" y1="${l*0.1}" x2="${l*0.5}" y2="${l*0.9}" stroke="${a}" stroke-width="2"/>
2460
- <line x1="${l*0.1}" y1="${l*0.5}" x2="${l*0.9}" y2="${l*0.5}" stroke="${a}" stroke-width="2"/>
3390
+ <line x1="${a*0.5}" y1="${a*0.1}" x2="${a*0.5}" y2="${a*0.9}" stroke="${o}" stroke-width="2"/>
3391
+ <line x1="${a*0.1}" y1="${a*0.5}" x2="${a*0.9}" y2="${a*0.5}" stroke="${o}" stroke-width="2"/>
2461
3392
  <!-- X symbols (Fibula/Cross) -->
2462
- <line x1="${l*0.4}" y1="${l*0.4}" x2="${l*0.6}" y2="${l*0.6}" stroke="${n}" stroke-width="2"/>
2463
- <line x1="${l*0.6}" y1="${l*0.4}" x2="${l*0.4}" y2="${l*0.6}" stroke="${n}" stroke-width="2"/>
3393
+ <line x1="${a*0.4}" y1="${a*0.4}" x2="${a*0.6}" y2="${a*0.6}" stroke="${n}" stroke-width="2"/>
3394
+ <line x1="${a*0.6}" y1="${a*0.4}" x2="${a*0.4}" y2="${a*0.6}" stroke="${n}" stroke-width="2"/>
2464
3395
  </svg>
2465
- `;return`data:image/svg+xml,${encodeURIComponent(b.trim())}`}function to({primaryColor:t="#4B0082",secondaryColor:n="#8A2BE2",accentColor:a="#FFFFFF",size:o=50}={}){let l=`
2466
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2467
- <rect width="${o}" height="${o}" fill="${t}"/>
3396
+ `;return`data:image/svg+xml,${encodeURIComponent(e.trim())}`}function No({primaryColor:t="#4B0082",secondaryColor:n="#8A2BE2",accentColor:o="#FFFFFF",size:r=50}={}){let a=`
3397
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3398
+ <rect width="${r}" height="${r}" fill="${t}"/>
2468
3399
  <!-- Resist circles (Oniko) -->
2469
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.35}" fill="none" stroke="${n}" stroke-width="3"/>
2470
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.25}" fill="none" stroke="${a}" stroke-width="2" stroke-dasharray="4 2"/>
2471
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.1}" fill="${a}" opacity="0.8"/>
3400
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.35}" fill="none" stroke="${n}" stroke-width="3"/>
3401
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.25}" fill="none" stroke="${o}" stroke-width="2" stroke-dasharray="4 2"/>
3402
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.1}" fill="${o}" opacity="0.8"/>
2472
3403
  <!-- Corner ripples -->
2473
- <path d="M0,0 Q${o*0.2},0 ${o*0.2},${o*0.2} Q0,${o*0.2} 0,0" fill="${n}"/>
2474
- <path d="M${o},${o} Q${o*0.8},${o} ${o*0.8},${o*0.8} Q${o},${o*0.8} ${o},${o}" fill="${n}"/>
3404
+ <path d="M0,0 Q${r*0.2},0 ${r*0.2},${r*0.2} Q0,${r*0.2} 0,0" fill="${n}"/>
3405
+ <path d="M${r},${r} Q${r*0.8},${r} ${r*0.8},${r*0.8} Q${r},${r*0.8} ${r},${r}" fill="${n}"/>
2475
3406
  </svg>
2476
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Ub({primaryColor:t="#2D3D6B",secondaryColor:n="#6B8CC7",accentColor:a="#FFFFFF",size:o=60}={}){let l=`
2477
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2478
- <rect width="${o}" height="${o}" fill="${t}"/>
3407
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function vi({primaryColor:t="#2D3D6B",secondaryColor:n="#6B8CC7",accentColor:o="#FFFFFF",size:r=60}={}){let a=`
3408
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3409
+ <rect width="${r}" height="${r}" fill="${t}"/>
2479
3410
  <!-- Southern Cross / Tuareg Star -->
2480
- <path d="M${o*0.5} 0 L${o*0.6} ${o*0.4} L${o} ${o*0.5} L${o*0.6} ${o*0.6} L${o*0.5} ${o} L${o*0.4} ${o*0.6} L0 ${o*0.5} L${o*0.4} ${o*0.4} Z"
2481
- fill="none" stroke="${a}" stroke-width="2"/>
2482
- <circle cx="${o*0.5}" cy="${o*0.5}" r="${o*0.1}" fill="${n}"/>
3411
+ <path d="M${r*0.5} 0 L${r*0.6} ${r*0.4} L${r} ${r*0.5} L${r*0.6} ${r*0.6} L${r*0.5} ${r} L${r*0.4} ${r*0.6} L0 ${r*0.5} L${r*0.4} ${r*0.4} Z"
3412
+ fill="none" stroke="${o}" stroke-width="2"/>
3413
+ <circle cx="${r*0.5}" cy="${r*0.5}" r="${r*0.1}" fill="${n}"/>
2483
3414
  </svg>
2484
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function Vb({inkColor:t="#3A2E2C",parchmentColor:n="#F4E4BC",size:a=50}={}){let o=`
2485
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 ${a} ${a}">
2486
- <rect width="${a}" height="${a}" fill="${n}"/>
2487
- <path d="M${a*0.2} ${a*0.2} L${a*0.4} ${a*0.2} M${a*0.3} ${a*0.2} L${a*0.3} ${a*0.5} Q${a*0.4} ${a*0.6} ${a*0.2} ${a*0.7}"
3415
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function $i({inkColor:t="#3A2E2C",parchmentColor:n="#F4E4BC",size:o=50}={}){let r=`
3416
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
3417
+ <rect width="${o}" height="${o}" fill="${n}"/>
3418
+ <path d="M${o*0.2} ${o*0.2} L${o*0.4} ${o*0.2} M${o*0.3} ${o*0.2} L${o*0.3} ${o*0.5} Q${o*0.4} ${o*0.6} ${o*0.2} ${o*0.7}"
2488
3419
  fill="none" stroke="${t}" stroke-width="3" stroke-linecap="round"/>
2489
- <path d="M${a*0.6} ${a*0.3} C${a*0.8} ${a*0.3} ${a*0.8} ${a*0.6} ${a*0.6} ${a*0.6} L${a*0.8} ${a*0.8}"
3420
+ <path d="M${o*0.6} ${o*0.3} C${o*0.8} ${o*0.3} ${o*0.8} ${o*0.6} ${o*0.6} ${o*0.6} L${o*0.8} ${o*0.8}"
2490
3421
  fill="none" stroke="${t}" stroke-width="3" stroke-linecap="round"/>
2491
3422
  </svg>
2492
- `;return`data:image/svg+xml,${encodeURIComponent(o.trim())}`}function jb({clayColor:t="#4E342E",earthColor:n="#3E2723",accentColor:a="#BCAAA4",size:o=60}={}){let l=`
2493
- <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 ${o} ${o}">
2494
- <rect width="${o}" height="${o}" fill="${n}"/>
2495
- <path d="M${o*0.2} ${o*0.5} Q${o*0.3} ${o*0.2} ${o*0.5} ${o*0.3} T${o*0.8} ${o*0.5} Q${o*0.7} ${o*0.8} ${o*0.5} ${o*0.7} T${o*0.2} ${o*0.5}"
2496
- fill="${t}" stroke="${a}" stroke-width="2"/>
3423
+ `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}function ui({clayColor:t="#4E342E",earthColor:n="#3E2723",accentColor:o="#BCAAA4",size:r=60}={}){let a=`
3424
+ <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">
3425
+ <rect width="${r}" height="${r}" fill="${n}"/>
3426
+ <path d="M${r*0.2} ${r*0.5} Q${r*0.3} ${r*0.2} ${r*0.5} ${r*0.3} T${r*0.8} ${r*0.5} Q${r*0.7} ${r*0.8} ${r*0.5} ${r*0.7} T${r*0.2} ${r*0.5}"
3427
+ fill="${t}" stroke="${o}" stroke-width="2"/>
2497
3428
  </svg>
2498
- `;return`data:image/svg+xml,${encodeURIComponent(l.trim())}`}function La({primaryColor:t="#334155",secondaryColor:n="#1e293b",size:a=100}={}){let o=`
2499
- <svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${a}" viewBox="0 0 100 100">
3429
+ `;return`data:image/svg+xml,${encodeURIComponent(a.trim())}`}function Ba({primaryColor:t="#334155",secondaryColor:n="#1e293b",size:o=100}={}){let r=`
3430
+ <svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${o}" viewBox="0 0 100 100">
2500
3431
  <rect width="100" height="100" fill="${n}"/>
2501
3432
  <path d="M10 10 H90 V90 H10 Z" fill="none" stroke="${t}" stroke-width="0.5" opacity="0.3"/>
2502
3433
  <path d="M20 20 V50 H50 V80 H80" fill="none" stroke="${t}" stroke-width="1"/>
@@ -2504,7 +3435,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2504
3435
  <circle cx="80" cy="80" r="2" fill="${t}"/>
2505
3436
  <circle cx="50" cy="50" r="1.5" fill="${t}"/>
2506
3437
  </svg>
2507
- `;return`data:image/svg+xml,${encodeURIComponent(o.trim())}`}var no;var vn=A(()=>{no={generatePolygon:Rb,generateShuka:Dn,generateHadzabe:On,generateKanga:Fb,generateKangaBorder:Wn,generateKitenge:Un,generateMasaiShield:Db,generateTibeb:Cn,generateImigongo:Pn,generateKente:Vn,generateAdinkra:jn,generateAsoOke:en,generateAnkara:Nn,generateBogolan:Kn,generateAdire:to,generateKuba:In,generateKubaBorder:ub,generateBerber:zn,generateNdebele:Tn,generateNdebelePaint:Ob,generateZulu:yn,generateZuluBeads:Bb,generateSwazi:Zn,generateXhosa:sn,applyPattern:Wb,generateTuareg:Ub,generateGeez:Vb,generateBoli:jb,generateCircuit:La,circuit:La}});var Xa={};H(Xa,{default:()=>Nb,KangaCard:()=>wn});var wn,Nb;var Qa=A(()=>{q();vn();wn=class wn extends c{static get observedAttributes(){return["theme","proverb","proverb-translation"]}constructor(){super();this.render()}connectedCallback(){this.loadStyles(),this.applyTheme()}attributeChangedCallback(t,n,a){if(n!==a)if(t==="theme")this.applyTheme();else this.render()}getThemeColors(){let t=this.getAttribute("theme")||"tanzania",n={tanzania:{primary:"#1EB53A",accent:"#FCD116",border:"#00A3DD",text:"#000000"},maasai:{primary:"#8B0000",accent:"#FF0000",border:"#000000",text:"#FFFFFF"},ndebele:{primary:"#4169E1",accent:"#FFD700",border:"#FF69B4",text:"#000000"}};return n[t]||n.tanzania}applyTheme(){let t=this.getThemeColors(),n=this.shadowRoot.querySelector(".pindo");if(n){let a=generateKangaBorder({primaryColor:t.primary,accentColor:t.accent});n.style.backgroundImage=`url("${a}")`,n.style.backgroundRepeat="repeat"}}render(){let t=this.getAttribute("proverb")||"",n=this.getAttribute("proverb-translation")||"",a=this.getThemeColors();this.shadowRoot.innerHTML=`
3438
+ `;return`data:image/svg+xml,${encodeURIComponent(r.trim())}`}var Ko;var Qn=s(()=>{Ko={generatePolygon:fi,generateShuka:Lo,generateHadzabe:Mo,generateKanga:di,generateKangaBorder:Eo,generateKitenge:So,generateMasaiShield:mi,generateTibeb:Bo,generateImigongo:Fo,generateKente:Yo,generateAdinkra:Ro,generateAsoOke:Xo,generateAnkara:Qo,generateBogolan:Jo,generateAdire:No,generateKuba:Go,generateKubaBorder:hi,generateBerber:Vo,generateNdebele:Do,generateNdebelePaint:pi,generateZulu:Oo,generateZuluBeads:gi,generateSwazi:Wo,generateXhosa:Uo,applyPattern:si,generateTuareg:vi,generateGeez:$i,generateBoli:ui,generateCircuit:Ba,circuit:Ba}});var Da={};w(Da,{default:()=>xi,KangaCard:()=>Jn});var Jn,xi;var Oa=s(()=>{u();Qn();Jn=class Jn extends b{static get observedAttributes(){return["theme","proverb","proverb-translation"]}constructor(){super();this.render()}connectedCallback(){this.loadStyles(),this.applyTheme()}attributeChangedCallback(t,n,o){if(n!==o)if(t==="theme")this.applyTheme();else this.render()}getThemeColors(){let t=this.getAttribute("theme")||"tanzania",n={tanzania:{primary:"#1EB53A",accent:"#FCD116",border:"#00A3DD",text:"#000000"},maasai:{primary:"#8B0000",accent:"#FF0000",border:"#000000",text:"#FFFFFF"},ndebele:{primary:"#4169E1",accent:"#FFD700",border:"#FF69B4",text:"#000000"}};return n[t]||n.tanzania}applyTheme(){let t=this.getThemeColors(),n=this.shadowRoot.querySelector(".pindo");if(n){let o=generateKangaBorder({primaryColor:t.primary,accentColor:t.accent});n.style.backgroundImage=`url("${o}")`,n.style.backgroundRepeat="repeat"}}render(){let t=this.getAttribute("proverb")||"",n=this.getAttribute("proverb-translation")||"",o=this.getThemeColors();this.shadowRoot.innerHTML=`
2508
3439
  <style>
2509
3440
  :host {
2510
3441
  display: block;
@@ -2527,7 +3458,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2527
3458
  /* Pindo - Decorative Border */
2528
3459
  .pindo {
2529
3460
  padding: var(--space-13, 13px);
2530
- background-color: ${a.primary};
3461
+ background-color: ${o.primary};
2531
3462
  }
2532
3463
 
2533
3464
  /* Mji - Central Content Area */
@@ -2539,8 +3470,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2539
3470
 
2540
3471
  /* Jina - Proverb Inscription */
2541
3472
  .jina {
2542
- background-color: ${a.border};
2543
- color: ${a.text};
3473
+ background-color: ${o.border};
3474
+ color: ${o.text};
2544
3475
  padding: var(--space-8, 8px) var(--space-13, 13px);
2545
3476
  text-align: center;
2546
3477
  font-style: italic;
@@ -2567,7 +3498,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2567
3498
  }
2568
3499
 
2569
3500
  ::slotted(h1), ::slotted(h2), ::slotted(h3) {
2570
- color: ${a.primary};
3501
+ color: ${o.primary};
2571
3502
  margin-bottom: var(--space-8, 8px);
2572
3503
  }
2573
3504
  </style>
@@ -2586,7 +3517,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2586
3517
  </div>
2587
3518
  `:'<div class="jina"><slot name="proverb"></slot></div>'}
2588
3519
  </article>
2589
- `,this.applyTheme()}};d("af-kanga-card",wn);Nb=wn});var Ja={};H(Ja,{default:()=>Kb,CulturalCard:()=>dn});var dn,Kb;var Ga=A(()=>{q();vn();dn=class dn extends c{static get observedAttributes(){return["culture","interactive"]}constructor(){super();this._cultures={maasai:{name:"Maasai",region:"Tanzania/Kenya",pattern:"generateShuka",colors:{primary:"#FF0000",accent:"#000000"}},hadzabe:{name:"Hadzabe",region:"Tanzania",pattern:"generateHadzabe",colors:{primary:"#8B4513",accent:"#CD853F"}},swahili:{name:"Swahili",region:"East Africa",pattern:"generateKangaBorder",colors:{primary:"#1EB53A",accent:"#FCD116"}},kitenge:{name:"Kitenge",region:"East Africa",pattern:"generateKitenge",colors:{primary:"#00A3DD",accent:"#1EB53A"}},tibeb:{name:"Tibeb",region:"Ethiopia",pattern:"generateTibeb",colors:{primary:"#009E60",accent:"#FCDD09"}},ashanti:{name:"Ashanti/Akan",region:"Ghana",pattern:"generateKente",colors:{primary:"#FFD700",accent:"#228B22"}},adinkra:{name:"Adinkra",region:"Ghana",pattern:"generateAdinkra",colors:{primary:"#000000",accent:"#CD853F"}},bogolan:{name:"Bogolan",region:"Mali",pattern:"generateBogolan",colors:{primary:"#3E2723",accent:"#D7CCC8"}},yoruba:{name:"Yoruba",region:"Nigeria",pattern:"generateAsoOke",colors:{primary:"#4B0082",accent:"#FFD700"}},ankara:{name:"Ankara",region:"West Africa",pattern:"generateAnkara",colors:{primary:"#FF6B00",accent:"#00A86B"}},kuba:{name:"Kuba Shoowa",region:"DRC",pattern:"generateKuba",colors:{primary:"#D2B48C",accent:"#3E2723"}},imigongo:{name:"Imigongo",region:"Rwanda",pattern:"generateImigongo",colors:{primary:"#000000",accent:"#B22222"}},ndebele:{name:"Ndebele",region:"South Africa",pattern:"generateNdebele",colors:{primary:"#4169E1",accent:"#FFD700"}},zulu:{name:"Zulu",region:"South Africa",pattern:"generateZulu",colors:{primary:"#FF0000",accent:"#000000"}},swazi:{name:"Swazi",region:"Eswatini",pattern:"generateSwazi",colors:{primary:"#3E5EB9",accent:"#FECD00"}},xhosa:{name:"Xhosa",region:"South Africa",pattern:"generateXhosa",colors:{primary:"#00A86B",accent:"#1a1a2e"}}},this.render()}connectedCallback(){this._setupInteraction()}_setupInteraction(){if(!this.hasAttribute("interactive"))return;this.shadowRoot.querySelector(".culture-selector")?.addEventListener("change",(n)=>{this.setAttribute("culture",n.target.value),this.emit("af-culture-change",{culture:n.target.value})})}attributeChangedCallback(){this.render(),this._setupInteraction()}render(){let t=this.getAttribute("culture")||"maasai",n=this.hasAttribute("interactive"),a=this._cultures[t]||this._cultures.maasai,o=no[a.pattern],l=o?o():"";this.shadowRoot.innerHTML=`
3520
+ `,this.applyTheme()}};f("af-kanga-card",Jn);xi=Jn});var Wa={};w(Wa,{default:()=>Ai,CulturalCard:()=>Gn});var Gn,Ai;var Ua=s(()=>{u();Qn();Gn=class Gn extends b{static get observedAttributes(){return["culture","interactive"]}constructor(){super();this._cultures={maasai:{name:"Maasai",region:"Tanzania/Kenya",pattern:"generateShuka",colors:{primary:"#FF0000",accent:"#000000"}},hadzabe:{name:"Hadzabe",region:"Tanzania",pattern:"generateHadzabe",colors:{primary:"#8B4513",accent:"#CD853F"}},swahili:{name:"Swahili",region:"East Africa",pattern:"generateKangaBorder",colors:{primary:"#1EB53A",accent:"#FCD116"}},kitenge:{name:"Kitenge",region:"East Africa",pattern:"generateKitenge",colors:{primary:"#00A3DD",accent:"#1EB53A"}},tibeb:{name:"Tibeb",region:"Ethiopia",pattern:"generateTibeb",colors:{primary:"#009E60",accent:"#FCDD09"}},ashanti:{name:"Ashanti/Akan",region:"Ghana",pattern:"generateKente",colors:{primary:"#FFD700",accent:"#228B22"}},adinkra:{name:"Adinkra",region:"Ghana",pattern:"generateAdinkra",colors:{primary:"#000000",accent:"#CD853F"}},bogolan:{name:"Bogolan",region:"Mali",pattern:"generateBogolan",colors:{primary:"#3E2723",accent:"#D7CCC8"}},yoruba:{name:"Yoruba",region:"Nigeria",pattern:"generateAsoOke",colors:{primary:"#4B0082",accent:"#FFD700"}},ankara:{name:"Ankara",region:"West Africa",pattern:"generateAnkara",colors:{primary:"#FF6B00",accent:"#00A86B"}},kuba:{name:"Kuba Shoowa",region:"DRC",pattern:"generateKuba",colors:{primary:"#D2B48C",accent:"#3E2723"}},imigongo:{name:"Imigongo",region:"Rwanda",pattern:"generateImigongo",colors:{primary:"#000000",accent:"#B22222"}},ndebele:{name:"Ndebele",region:"South Africa",pattern:"generateNdebele",colors:{primary:"#4169E1",accent:"#FFD700"}},zulu:{name:"Zulu",region:"South Africa",pattern:"generateZulu",colors:{primary:"#FF0000",accent:"#000000"}},swazi:{name:"Swazi",region:"Eswatini",pattern:"generateSwazi",colors:{primary:"#3E5EB9",accent:"#FECD00"}},xhosa:{name:"Xhosa",region:"South Africa",pattern:"generateXhosa",colors:{primary:"#00A86B",accent:"#1a1a2e"}}},this.render()}connectedCallback(){this._setupInteraction()}_setupInteraction(){if(!this.hasAttribute("interactive"))return;this.shadowRoot.querySelector(".culture-selector")?.addEventListener("change",(n)=>{this.setAttribute("culture",n.target.value),this.emit("af-culture-change",{culture:n.target.value})})}attributeChangedCallback(){this.render(),this._setupInteraction()}render(){let t=this.getAttribute("culture")||"maasai",n=this.hasAttribute("interactive"),o=this._cultures[t]||this._cultures.maasai,r=Ko[o.pattern],a=r?r():"";this.shadowRoot.innerHTML=`
2590
3521
  <style>
2591
3522
  :host {
2592
3523
  display: block;
@@ -2607,7 +3538,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2607
3538
 
2608
3539
  .pattern-header {
2609
3540
  height: 120px;
2610
- background-image: url("${l}");
3541
+ background-image: url("${a}");
2611
3542
  background-repeat: repeat;
2612
3543
  position: relative;
2613
3544
  animation: patternShift 20s linear infinite;
@@ -2628,7 +3559,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2628
3559
  position: absolute;
2629
3560
  bottom: 10px;
2630
3561
  left: 10px;
2631
- background: ${a.colors.primary};
3562
+ background: ${o.colors.primary};
2632
3563
  color: white;
2633
3564
  padding: 4px 12px;
2634
3565
  border-radius: 20px;
@@ -2663,16 +3594,16 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2663
3594
  .card-title h3 {
2664
3595
  margin: 0;
2665
3596
  font-size: 18px;
2666
- color: ${a.colors.primary};
3597
+ color: ${o.colors.primary};
2667
3598
  }
2668
3599
 
2669
3600
  .culture-icon {
2670
3601
  width: 40px;
2671
3602
  height: 40px;
2672
3603
  border-radius: 50%;
2673
- background-image: url("${l}");
3604
+ background-image: url("${a}");
2674
3605
  background-size: cover;
2675
- border: 2px solid ${a.colors.accent};
3606
+ border: 2px solid ${o.colors.accent};
2676
3607
  }
2677
3608
 
2678
3609
  .card-content {
@@ -2684,7 +3615,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2684
3615
  width: 100%;
2685
3616
  padding: 10px;
2686
3617
  margin-top: 15px;
2687
- border: 2px solid ${a.colors.primary};
3618
+ border: 2px solid ${o.colors.primary};
2688
3619
  border-radius: 6px;
2689
3620
  font-family: inherit;
2690
3621
  font-size: 14px;
@@ -2694,7 +3625,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2694
3625
 
2695
3626
  .culture-selector:focus {
2696
3627
  outline: none;
2697
- box-shadow: 0 0 0 3px ${a.colors.primary}30;
3628
+ box-shadow: 0 0 0 3px ${o.colors.primary}30;
2698
3629
  }
2699
3630
 
2700
3631
  select option {
@@ -2710,13 +3641,13 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2710
3641
  <article class="cultural-card">
2711
3642
  <div class="pattern-header">
2712
3643
  <div class="pattern-overlay"></div>
2713
- <span class="culture-badge">${a.name}</span>
2714
- <span class="region-badge">\uD83D\uDCCD ${a.region}</span>
3644
+ <span class="culture-badge">${o.name}</span>
3645
+ <span class="region-badge">\uD83D\uDCCD ${o.region}</span>
2715
3646
  </div>
2716
3647
  <div class="card-body">
2717
3648
  <div class="card-title">
2718
3649
  <div class="culture-icon"></div>
2719
- <h3>${a.name} Pattern</h3>
3650
+ <h3>${o.name} Pattern</h3>
2720
3651
  </div>
2721
3652
  <div class="card-content">
2722
3653
  <slot></slot>
@@ -2751,7 +3682,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2751
3682
  `:""}
2752
3683
  </div>
2753
3684
  </article>
2754
- `}};d("af-cultural-card",dn);Kb=dn});var Ra={};H(Ra,{default:()=>Ib,PatternShowcase:()=>_n});var _n,Ib;var Fa=A(()=>{q();vn();_n=class _n extends c{static get observedAttributes(){return["region","size"]}constructor(){super();this._allPatterns=[{key:"shuka",name:"Maasai Shuka",region:"east",country:"Tanzania/Kenya",fn:Dn,meaning:"Bravery, Unity, Identity"},{key:"hadzabe",name:"Hadzabe",region:"east",country:"Tanzania",fn:On,meaning:"Ancient traditions, Hunter-gatherer heritage"},{key:"kanga",name:"Kanga",region:"east",country:"Tanzania/Kenya",fn:Wn,meaning:"Communication, Proverbs, Femininity"},{key:"kitenge",name:"Kitenge",region:"east",country:"East Africa",fn:Un,meaning:"Celebration, African identity"},{key:"tibeb",name:"Tibeb",region:"east",country:"Ethiopia",fn:Cn,meaning:"Faith, Tradition, Celebration"},{key:"kente",name:"Kente",region:"west",country:"Ghana",fn:Vn,meaning:"Royalty, Wisdom, Celebration"},{key:"adinkra",name:"Adinkra",region:"west",country:"Ghana",fn:jn,meaning:"Philosophy, Proverbs, Wisdom"},{key:"bogolan",name:"Bogolan",region:"west",country:"Mali",fn:Kn,meaning:"Earth energy, Protection, Healing"},{key:"asooke",name:"Aso-Oke",region:"west",country:"Nigeria",fn:en,meaning:"Prestige, Celebration, Heritage"},{key:"adire",name:"Adire (Indigo)",region:"west",country:"Nigeria",fn:to,meaning:"Creativity, Uniqueness, Depth"},{key:"ankara",name:"Ankara",region:"west",country:"West Africa",fn:Nn,meaning:"Boldness, Pan-African pride"},{key:"kuba",name:"Kuba Shoowa",region:"central",country:"DRC",fn:In,meaning:"Status, Mathematics, Eternity"},{key:"imigongo",name:"Imigongo",region:"central",country:"Rwanda",fn:Pn,meaning:"Resilience, Strength, Artistry"},{key:"berber",name:"Berber",region:"north",country:"North Africa",fn:zn,meaning:"Protection, Nature, Identity"},{key:"ndebele",name:"Ndebele",region:"south",country:"South Africa",fn:Tn,meaning:"Artistry, Marriage, Status"},{key:"zulu",name:"Zulu Beadwork",region:"south",country:"South Africa",fn:yn,meaning:"Love letters, Community"},{key:"swazi",name:"Swazi",region:"south",country:"Eswatini",fn:Zn,meaning:"Monarchy, Warriors, Pride"},{key:"xhosa",name:"Xhosa",region:"south",country:"South Africa",fn:sn,meaning:"Dignity, Coming of age"}],this.render()}connectedCallback(){this._setupHovers()}_setupHovers(){this.shadowRoot.querySelectorAll(".pattern-item").forEach((t)=>{t.addEventListener("click",()=>{let n=t.dataset.key,a=this._allPatterns.find((o)=>o.key===n);if(a)this.emit("af-pattern-select",{pattern:a})})})}attributeChangedCallback(){this.render(),this._setupHovers()}render(){let t=this.getAttribute("region")||"all",n=this.getAttribute("size")||"md",a=t==="all"?this._allPatterns:this._allPatterns.filter((b)=>b.region===t),o={sm:80,md:120,lg:160},l=o[n]||o.md;this.shadowRoot.innerHTML=`
3685
+ `}};f("af-cultural-card",Gn);Ai=Gn});var Va={};w(Va,{default:()=>_i,PatternShowcase:()=>Fn});var Fn,_i;var Na=s(()=>{u();Qn();Fn=class Fn extends b{static get observedAttributes(){return["region","size"]}constructor(){super();this._allPatterns=[{key:"shuka",name:"Maasai Shuka",region:"east",country:"Tanzania/Kenya",fn:Lo,meaning:"Bravery, Unity, Identity"},{key:"hadzabe",name:"Hadzabe",region:"east",country:"Tanzania",fn:Mo,meaning:"Ancient traditions, Hunter-gatherer heritage"},{key:"kanga",name:"Kanga",region:"east",country:"Tanzania/Kenya",fn:Eo,meaning:"Communication, Proverbs, Femininity"},{key:"kitenge",name:"Kitenge",region:"east",country:"East Africa",fn:So,meaning:"Celebration, African identity"},{key:"tibeb",name:"Tibeb",region:"east",country:"Ethiopia",fn:Bo,meaning:"Faith, Tradition, Celebration"},{key:"kente",name:"Kente",region:"west",country:"Ghana",fn:Yo,meaning:"Royalty, Wisdom, Celebration"},{key:"adinkra",name:"Adinkra",region:"west",country:"Ghana",fn:Ro,meaning:"Philosophy, Proverbs, Wisdom"},{key:"bogolan",name:"Bogolan",region:"west",country:"Mali",fn:Jo,meaning:"Earth energy, Protection, Healing"},{key:"asooke",name:"Aso-Oke",region:"west",country:"Nigeria",fn:Xo,meaning:"Prestige, Celebration, Heritage"},{key:"adire",name:"Adire (Indigo)",region:"west",country:"Nigeria",fn:No,meaning:"Creativity, Uniqueness, Depth"},{key:"ankara",name:"Ankara",region:"west",country:"West Africa",fn:Qo,meaning:"Boldness, Pan-African pride"},{key:"kuba",name:"Kuba Shoowa",region:"central",country:"DRC",fn:Go,meaning:"Status, Mathematics, Eternity"},{key:"imigongo",name:"Imigongo",region:"central",country:"Rwanda",fn:Fo,meaning:"Resilience, Strength, Artistry"},{key:"berber",name:"Berber",region:"north",country:"North Africa",fn:Vo,meaning:"Protection, Nature, Identity"},{key:"ndebele",name:"Ndebele",region:"south",country:"South Africa",fn:Do,meaning:"Artistry, Marriage, Status"},{key:"zulu",name:"Zulu Beadwork",region:"south",country:"South Africa",fn:Oo,meaning:"Love letters, Community"},{key:"swazi",name:"Swazi",region:"south",country:"Eswatini",fn:Wo,meaning:"Monarchy, Warriors, Pride"},{key:"xhosa",name:"Xhosa",region:"south",country:"South Africa",fn:Uo,meaning:"Dignity, Coming of age"}],this.render()}connectedCallback(){this._setupHovers()}_setupHovers(){this.shadowRoot.querySelectorAll(".pattern-item").forEach((t)=>{t.addEventListener("click",()=>{let n=t.dataset.key,o=this._allPatterns.find((r)=>r.key===n);if(o)this.emit("af-pattern-select",{pattern:o})})})}attributeChangedCallback(){this.render(),this._setupHovers()}render(){let t=this.getAttribute("region")||"all",n=this.getAttribute("size")||"md",o=t==="all"?this._allPatterns:this._allPatterns.filter((e)=>e.region===t),r={sm:80,md:120,lg:160},a=r[n]||r.md;this.shadowRoot.innerHTML=`
2755
3686
  <style>
2756
3687
  :host {
2757
3688
  display: block;
@@ -2793,7 +3724,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2793
3724
 
2794
3725
  .pattern-grid {
2795
3726
  display: grid;
2796
- grid-template-columns: repeat(auto-fill, minmax(${l+40}px, 1fr));
3727
+ grid-template-columns: repeat(auto-fill, minmax(${a+40}px, 1fr));
2797
3728
  gap: 16px;
2798
3729
  }
2799
3730
 
@@ -2813,7 +3744,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2813
3744
 
2814
3745
  .pattern-preview {
2815
3746
  inline-size: 100%;
2816
- block-size: ${l}px;
3747
+ block-size: ${a}px;
2817
3748
  background-repeat: repeat;
2818
3749
  transition: background-position 10s linear;
2819
3750
  }
@@ -2871,20 +3802,20 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2871
3802
  </div>
2872
3803
 
2873
3804
  <div class="pattern-grid">
2874
- ${a.map((b)=>`
2875
- <div class="pattern-item" data-key="${b.key}">
2876
- <div class="pattern-preview" style="background-image: url('${b.fn()}')"></div>
3805
+ ${o.map((e)=>`
3806
+ <div class="pattern-item" data-key="${e.key}">
3807
+ <div class="pattern-preview" style="background-image: url('${e.fn()}')"></div>
2877
3808
  <div class="pattern-info">
2878
- <span class="region-label region-${b.region}">${b.region.charAt(0).toUpperCase()+b.region.slice(1)}</span>
2879
- <div class="pattern-name">${b.name}</div>
2880
- <div class="pattern-country">${b.country}</div>
2881
- <div class="pattern-meaning">${b.meaning}</div>
3809
+ <span class="region-label region-${e.region}">${e.region.charAt(0).toUpperCase()+e.region.slice(1)}</span>
3810
+ <div class="pattern-name">${e.name}</div>
3811
+ <div class="pattern-country">${e.country}</div>
3812
+ <div class="pattern-meaning">${e.meaning}</div>
2882
3813
  </div>
2883
3814
  </div>
2884
3815
  `).join("")}
2885
3816
  </div>
2886
3817
  </div>
2887
- `,this.shadowRoot.querySelectorAll(".region-tab").forEach((b)=>{b.addEventListener("click",()=>{this.setAttribute("region",b.dataset.region)})})}};d("af-pattern-showcase",_n);Ib=_n});var ua={};H(ua,{AfriLanguageSwitcher:()=>oo});var oo;var Ba=A(()=>{q();oo=class oo extends c{static get observedAttributes(){return["current"]}render(){let t=[{code:"en",name:"English"},{code:"sw",name:"Kiswahili"},{code:"fr",name:"Français"},{code:"ar",name:"العربية",dir:"rtl"},{code:"am",name:"አማርኛ"},{code:"yo",name:"Yorùbá"}],n=this.getAttribute("current")||"en",a=t.find((o)=>o.code===n)||t[0];this.shadowRoot.innerHTML=Y`
3818
+ `,this.shadowRoot.querySelectorAll(".region-tab").forEach((e)=>{e.addEventListener("click",()=>{this.setAttribute("region",e.dataset.region)})})}};f("af-pattern-showcase",Fn);_i=Fn});var Ka={};w(Ka,{AfriLanguageSwitcher:()=>jo});var jo;var ja=s(()=>{u();jo=class jo extends b{static get observedAttributes(){return["current"]}render(){let t=[{code:"en",name:"English"},{code:"sw",name:"Kiswahili"},{code:"fr",name:"Français"},{code:"ar",name:"العربية",dir:"rtl"},{code:"am",name:"አማርኛ"},{code:"yo",name:"Yorùbá"}],n=this.getAttribute("current")||"en",o=t.find((r)=>r.code===n)||t[0];this.shadowRoot.innerHTML=g`
2888
3819
  <style>
2889
3820
  :host { display: inline-block; position: relative; font-family: var(--font-body); }
2890
3821
  .switcher-btn {
@@ -2925,17 +3856,17 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
2925
3856
 
2926
3857
  <button class="switcher-btn">
2927
3858
  <span>🌍</span>
2928
- <span>${a.name}</span>
3859
+ <span>${o.name}</span>
2929
3860
  </button>
2930
3861
 
2931
3862
  <div class="dropdown">
2932
- ${t.map((o)=>Y`
2933
- <div class="lang-option" data-code="${o.code}" dir="${o.dir||"ltr"}">
2934
- ${o.name}
3863
+ ${t.map((r)=>g`
3864
+ <div class="lang-option" data-code="${r.code}" dir="${r.dir||"ltr"}">
3865
+ ${r.name}
2935
3866
  </div>
2936
3867
  `)}
2937
3868
  </div>
2938
- `,this.shadowRoot.querySelector(".switcher-btn").onclick=()=>{this.toggleAttribute("open")},this.shadowRoot.querySelectorAll(".lang-option").forEach((o)=>{o.onclick=()=>{let l=o.dataset.code;if(this.setAttribute("current",l),this.removeAttribute("open"),this.emit("lang-change",{code:l}),l==="ar")document.documentElement.dir="rtl";else document.documentElement.dir="ltr"}})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}};d("af-language-switcher",oo)});var Da={};H(Da,{AfriAuth:()=>ao});var ao;var Oa=A(()=>{q();ao=class ao extends c{constructor(){super();this.mode="login"}connectedCallback(){this.render(),this.setupEvents()}setupEvents(){let t=this.shadowRoot.querySelector("form"),n=this.shadowRoot.querySelector(".toggle-mode");if(n)n.addEventListener("click",(a)=>{a.preventDefault(),this.mode=this.mode==="login"?"register":"login",this.render(),this.setupEvents()});if(t)t.addEventListener("submit",async(a)=>{a.preventDefault();let o=this.shadowRoot.querySelector("#email").value,l=this.shadowRoot.querySelector("#password").value,b=this.shadowRoot.querySelector(".feedback");b.textContent="Processing...";try{let h=await(await fetch("/api/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:this.mode,email:o,password:l})})).json();if(h.error)b.textContent=h.error,b.style.color="#ef4444";else b.textContent="Success! Redirecting...",b.style.color="#22c55e",setTimeout(()=>window.location.href="/",1000)}catch(r){b.textContent="Network Error"}})}render(){let t=this.mode==="login";this.shadowRoot.innerHTML=`
3869
+ `,this.shadowRoot.querySelector(".switcher-btn").onclick=()=>{this.toggleAttribute("open")},this.shadowRoot.querySelectorAll(".lang-option").forEach((r)=>{r.onclick=()=>{let a=r.dataset.code;if(this.setAttribute("current",a),this.removeAttribute("open"),this.emit("lang-change",{code:a}),a==="ar")document.documentElement.dir="rtl";else document.documentElement.dir="ltr"}})}connectedCallback(){this.render()}attributeChangedCallback(){this.render()}};f("af-language-switcher",jo)});var ya={};w(ya,{AfriAuth:()=>yo});var yo;var Ca=s(()=>{u();yo=class yo extends b{constructor(){super();this.mode="login"}connectedCallback(){this.render(),this.setupEvents()}setupEvents(){let t=this.shadowRoot.querySelector("form"),n=this.shadowRoot.querySelector(".toggle-mode");if(n)n.addEventListener("click",(o)=>{o.preventDefault(),this.mode=this.mode==="login"?"register":"login",this.render(),this.setupEvents()});if(t)t.addEventListener("submit",async(o)=>{o.preventDefault();let r=this.shadowRoot.querySelector("#email").value,a=this.shadowRoot.querySelector("#password").value,e=this.shadowRoot.querySelector(".feedback");e.textContent="Processing...";try{let i=await(await fetch("/api/auth",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:this.mode,email:r,password:a})})).json();if(i.error)e.textContent=i.error,e.style.color="#ef4444";else e.textContent="Success! Redirecting...",e.style.color="#22c55e",setTimeout(()=>window.location.href="/",1000)}catch(l){e.textContent="Network Error"}})}render(){let t=this.mode==="login";this.shadowRoot.innerHTML=`
2939
3870
  <style>
2940
3871
  :host {
2941
3872
  display: block;
@@ -3033,7 +3964,7 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
3033
3964
  <span class="toggle-mode">${t?"Create an account":"Sign in"}</span>
3034
3965
  </div>
3035
3966
  </div>
3036
- `}};d("af-auth",ao)});var Wa={};H(Wa,{default:()=>Pb});var lo,Pb;var Ua=A(()=>{q();lo=class lo extends c{constructor(){super();this.currentTheme="dark"}connectedCallback(){this.loadStyles();let t=localStorage.getItem("africode-theme");if(t)this.currentTheme=t,document.documentElement.setAttribute("data-theme",t);else{let n=window.matchMedia("(prefers-color-scheme: light)").matches;this.currentTheme=n?"light":"dark",document.documentElement.setAttribute("data-theme",this.currentTheme)}this.render()}toggleTheme(){this.currentTheme=this.currentTheme==="dark"?"light":"dark",document.documentElement.setAttribute("data-theme",this.currentTheme),localStorage.setItem("africode-theme",this.currentTheme),window.dispatchEvent(new CustomEvent("theme-changed",{detail:{theme:this.currentTheme}})),this.render()}render(){let t=this.currentTheme==="dark";this.shadowRoot.innerHTML=Y`
3967
+ `}};f("af-auth",yo)});var Ia={};w(Ia,{default:()=>ki});var Co,ki;var Pa=s(()=>{u();Co=class Co extends b{constructor(){super();this.currentTheme="dark"}connectedCallback(){this.loadStyles();let t=localStorage.getItem("africode-theme");if(t)this.currentTheme=t,document.documentElement.setAttribute("data-theme",t);else{let n=window.matchMedia("(prefers-color-scheme: light)").matches;this.currentTheme=n?"light":"dark",document.documentElement.setAttribute("data-theme",this.currentTheme)}this.render()}toggleTheme(){this.currentTheme=this.currentTheme==="dark"?"light":"dark",document.documentElement.setAttribute("data-theme",this.currentTheme),localStorage.setItem("africode-theme",this.currentTheme),window.dispatchEvent(new CustomEvent("theme-changed",{detail:{theme:this.currentTheme}})),this.render()}render(){let t=this.currentTheme==="dark";this.shadowRoot.innerHTML=g`
3037
3968
  <style>
3038
3969
  .toggle-btn {
3039
3970
  background: var(--bg-surface-elevated, var(--afri-obsidian));
@@ -3062,13 +3993,13 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
3062
3993
  <span class="icon">\${isDark ? '🌙' : '☀️'}</span>
3063
3994
  <span>\${isDark ? 'Dark Mode' : 'Light Mode'}</span>
3064
3995
  </button>
3065
- `;let n=this.shadowRoot.querySelector(".toggle-btn");if(n)n.addEventListener("click",()=>this.toggleTheme())}};d("af-theme-toggle",lo);Pb=lo});q();q();class kn extends c{static get observedAttributes(){return["theme","fallback-message"]}constructor(){super();this._hasError=!1,this._errorDetail=null,this.render()}connectedCallback(){this.addEventListener("af-component-error",this._handleError.bind(this))}disconnectedCallback(){this.removeEventListener("af-component-error",this._handleError.bind(this))}_handleError(t){t.stopPropagation(),this._hasError=!0,this._errorDetail=t.detail,console.warn("[AfriCode Boundary] Caught error:",this._errorDetail),this.render()}reset(){this._hasError=!1,this._errorDetail=null,this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.getAttribute("fallback-message")||"A part of this page failed to load.",a={tanzania:{bg:"#FFF9E6",border:"#FCD116",text:"#5A4A00"},maasai:{bg:"#FFEEEE",border:"#FF0000",text:"#8B0000"},ndebele:{bg:"#EBF0FF",border:"#4169E1",text:"#002B5C"},ocean:{bg:"#E6FAFF",border:"#00A3DD",text:"#004A66"}},o=a[t]||a.tanzania;if(this._hasError){this.shadowRoot.innerHTML=`
3996
+ `;let n=this.shadowRoot.querySelector(".toggle-btn");if(n)n.addEventListener("click",()=>this.toggleTheme())}};f("af-theme-toggle",Co);ki=Co});u();u();class Wn extends b{static get observedAttributes(){return["theme","fallback-message"]}constructor(){super();this._hasError=!1,this._errorDetail=null,this.render()}connectedCallback(){this.addEventListener("af-component-error",this._handleError.bind(this))}disconnectedCallback(){this.removeEventListener("af-component-error",this._handleError.bind(this))}_handleError(t){t.stopPropagation(),this._hasError=!0,this._errorDetail=t.detail,console.warn("[AfriCode Boundary] Caught error:",this._errorDetail),this.render()}reset(){this._hasError=!1,this._errorDetail=null,this.render()}attributeChangedCallback(){this.render()}render(){let t=this.getAttribute("theme")||"tanzania",n=this.getAttribute("fallback-message")||"A part of this page failed to load.",o={tanzania:{bg:"#FFF9E6",border:"#FCD116",text:"#5A4A00"},maasai:{bg:"#FFEEEE",border:"#FF0000",text:"#8B0000"},ndebele:{bg:"#EBF0FF",border:"#4169E1",text:"#002B5C"},ocean:{bg:"#E6FAFF",border:"#00A3DD",text:"#004A66"}},r=o[t]||o.tanzania;if(this._hasError){this.shadowRoot.innerHTML=`
3066
3997
  <style>
3067
3998
  :host { display: block; width: 100%; font-family: 'Inter', system-ui, sans-serif; }
3068
3999
  .boundary-error {
3069
- background: ${o.bg};
3070
- border-left: 4px solid ${o.border};
3071
- color: ${o.text};
4000
+ background: ${r.bg};
4001
+ border-left: 4px solid ${r.border};
4002
+ color: ${r.text};
3072
4003
  padding: 16px 20px;
3073
4004
  border-radius: 4px;
3074
4005
  margin: 12px 0;
@@ -3101,8 +4032,8 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
3101
4032
  }
3102
4033
  button {
3103
4034
  background: transparent;
3104
- border: 1px solid ${o.border};
3105
- color: ${o.text};
4035
+ border: 1px solid ${r.border};
4036
+ color: ${r.text};
3106
4037
  padding: 6px 12px;
3107
4038
  border-radius: 4px;
3108
4039
  cursor: pointer;
@@ -3133,6 +4064,6 @@ var Va=Object.defineProperty;var ja=(t)=>t;function ea(t,n){this[t]=ja.bind(null
3133
4064
  `,this.shadowRoot.getElementById("retry-btn").addEventListener("click",()=>{this.reset()});return}this.shadowRoot.innerHTML=`
3134
4065
  <style>:host { display: block; }</style>
3135
4066
  <slot></slot>
3136
- `}}d("af-error-boundary",kn);qn();pn();Hn();En();Mn();var Cb={"af-button":()=>Promise.resolve().then(() => (wo(),vo)),"af-card":()=>Promise.resolve().then(() => (io(),_o)),"af-navbar":()=>Promise.resolve().then(() => (ko(),xo)),"af-input":()=>Promise.resolve().then(() => (Wo(),Oo)),"af-alert":()=>Promise.resolve().then(() => (Vo(),Uo)),"af-grid":()=>Promise.resolve().then(() => (eo(),jo)),"af-section":()=>Promise.resolve().then(() => (Ko(),No)),"af-icon":()=>Promise.resolve().then(() => (Po(),Io)),"af-ui-button":()=>Promise.resolve().then(() => (qn(),ho)),"af-ui-card":()=>Promise.resolve().then(() => (pn(),fo)),"af-ui-input":()=>Promise.resolve().then(() => (Hn(),go)),"af-ui-badge":()=>Promise.resolve().then(() => (En(),co)),"af-ui-switch":()=>Promise.resolve().then(() => (Mn(),$o)),"af-accordion":()=>Promise.resolve().then(() => (To(),Co)),"af-hero":()=>Promise.resolve().then(() => (Zo(),yo)),"af-table":()=>Promise.resolve().then(() => (zo(),so)),"af-modal":()=>Promise.resolve().then(() => (na(),ta)),"af-tabs":()=>Promise.resolve().then(() => (aa(),oa)),"af-sidebar":()=>Promise.resolve().then(() => (ba(),la)),"af-dropdown":()=>Promise.resolve().then(() => (ha(),ra)),"af-select":()=>Promise.resolve().then(() => (ga(),fa)),"af-form":()=>Promise.resolve().then(() => ($a(),ca)),"af-tooltip":()=>Promise.resolve().then(() => (wa(),va)),"af-toast":()=>Promise.resolve().then(() => (_a(),da)),"af-badge":()=>Promise.resolve().then(() => (Aa(),ia)),"af-avatar":()=>Promise.resolve().then(() => (xa(),ma)),"af-progress":()=>Promise.resolve().then(() => (qa(),ka)),"af-loader":()=>Promise.resolve().then(() => (Ha(),pa)),"af-skeleton":()=>Promise.resolve().then(() => (Ma(),Ea)),"af-divider":()=>Promise.resolve().then(() => (Sa(),Ya)),"af-kanga-card":()=>Promise.resolve().then(() => (Qa(),Xa)),"af-cultural-card":()=>Promise.resolve().then(() => (Ga(),Ja)),"af-pattern-showcase":()=>Promise.resolve().then(() => (Fa(),Ra)),"af-language-switcher":()=>Promise.resolve().then(() => (Ba(),ua)),"af-auth":()=>Promise.resolve().then(() => (Oa(),Da)),"af-theme-toggle":()=>Promise.resolve().then(() => (Ua(),Wa))},j0=Cb;export{j0 as default,Cb as componentMap,qt as AfriUISwitch,xt as AfriUIInput,mt as AfriUICard,At as AfriUIButton,kt as AfriUIBadge,kn as AfriErrorBoundary,c as AfriCodeComponent};
4067
+ `}}f("af-error-boundary",Wn);Un();Vn();Nn();Kn();jn();yn();Cn();In();Pn();Tn();Zn();zn();to();oo();ro();ao();eo();lo();io();bo();co();fo();ho();go();mo();po();var qi={"af-button":()=>Promise.resolve().then(() => (kr(),_r)),"af-card":()=>Promise.resolve().then(() => (Hr(),qr)),"af-navbar":()=>Promise.resolve().then(() => (Sr(),Er)),"af-input":()=>Promise.resolve().then(() => (Ir(),Cr)),"af-alert":()=>Promise.resolve().then(() => (Tr(),Pr)),"af-grid":()=>Promise.resolve().then(() => (zr(),Zr)),"af-section":()=>Promise.resolve().then(() => (na(),ta)),"af-icon":()=>Promise.resolve().then(() => (ra(),oa)),"af-ui-button":()=>Promise.resolve().then(() => (Un(),To)),"af-ui-card":()=>Promise.resolve().then(() => (Vn(),Zo)),"af-ui-input":()=>Promise.resolve().then(() => (Nn(),zo)),"af-ui-badge":()=>Promise.resolve().then(() => (Kn(),tr)),"af-ui-switch":()=>Promise.resolve().then(() => (jn(),nr)),"af-ui-select":()=>Promise.resolve().then(() => (yn(),or)),"af-ui-textarea":()=>Promise.resolve().then(() => (Cn(),rr)),"af-ui-chip":()=>Promise.resolve().then(() => (In(),ar)),"af-ui-tag":()=>Promise.resolve().then(() => (Pn(),er)),"af-ui-avatar":()=>Promise.resolve().then(() => (Tn(),lr)),"af-ui-progress-ring":()=>Promise.resolve().then(() => (Zn(),ir)),"af-ui-tooltip":()=>Promise.resolve().then(() => (zn(),br)),"af-ui-popover":()=>Promise.resolve().then(() => (to(),cr)),"af-ui-tabs":()=>Promise.resolve().then(() => (oo(),fr)),"af-ui-table":()=>Promise.resolve().then(() => (ro(),dr)),"af-ui-stat":()=>Promise.resolve().then(() => (ao(),hr)),"af-footer":()=>Promise.resolve().then(() => (eo(),gr)),"af-breadcrumb":()=>Promise.resolve().then(() => (lo(),mr)),"af-feature-grid":()=>Promise.resolve().then(() => (io(),pr)),"af-pricing-card":()=>Promise.resolve().then(() => (bo(),sr)),"af-testimonial":()=>Promise.resolve().then(() => (co(),vr)),"af-dashboard-shell":()=>Promise.resolve().then(() => (fo(),$r)),"af-dashboard-topbar":()=>Promise.resolve().then(() => (ho(),ur)),"af-dashboard-card":()=>Promise.resolve().then(() => (go(),wr)),"af-dashboard-metric":()=>Promise.resolve().then(() => (mo(),xr)),"af-dashboard-activity-list":()=>Promise.resolve().then(() => (po(),Ar)),"af-accordion":()=>Promise.resolve().then(() => (ea(),aa)),"af-hero":()=>Promise.resolve().then(() => (ia(),la)),"af-table":()=>Promise.resolve().then(() => (ca(),ba)),"af-modal":()=>Promise.resolve().then(() => (da(),fa)),"af-tabs":()=>Promise.resolve().then(() => (ga(),ha)),"af-sidebar":()=>Promise.resolve().then(() => (pa(),ma)),"af-dropdown":()=>Promise.resolve().then(() => (va(),sa)),"af-select":()=>Promise.resolve().then(() => (ua(),$a)),"af-form":()=>Promise.resolve().then(() => (xa(),wa)),"af-tooltip":()=>Promise.resolve().then(() => (_a(),Aa)),"af-toast":()=>Promise.resolve().then(() => (qa(),ka)),"af-badge":()=>Promise.resolve().then(() => (La(),Ha)),"af-avatar":()=>Promise.resolve().then(() => (Ea(),Ma)),"af-progress":()=>Promise.resolve().then(() => (Ya(),Sa)),"af-loader":()=>Promise.resolve().then(() => (Xa(),Ra)),"af-skeleton":()=>Promise.resolve().then(() => (Ja(),Qa)),"af-divider":()=>Promise.resolve().then(() => (Fa(),Ga)),"af-kanga-card":()=>Promise.resolve().then(() => (Oa(),Da)),"af-cultural-card":()=>Promise.resolve().then(() => (Ua(),Wa)),"af-pattern-showcase":()=>Promise.resolve().then(() => (Na(),Va)),"af-language-switcher":()=>Promise.resolve().then(() => (ja(),Ka)),"af-auth":()=>Promise.resolve().then(() => (Ca(),ya)),"af-theme-toggle":()=>Promise.resolve().then(() => (Pa(),Ia))},ic=qi;export{ic as default,qi as componentMap,Mt as AfriUITooltip,_t as AfriUITextarea,qt as AfriUITag,St as AfriUITabs,Yt as AfriUITable,xt as AfriUISwitch,Rt as AfriUIStat,At as AfriUISelect,Lt as AfriUIProgressRing,Et as AfriUIPopover,ut as AfriUIInput,kt as AfriUIChip,$t as AfriUICard,vt as AfriUIButton,wt as AfriUIBadge,Ht as AfriUIAvatar,Ft as AfriTestimonial,Gt as AfriPricingCard,Xt as AfriFooter,Jt as AfriFeatureGrid,Wn as AfriErrorBoundary,Dt as AfriDashboardTopbar,Bt as AfriDashboardShell,Wt as AfriDashboardMetric,Ot as AfriDashboardCard,Ut as AfriDashboardActivityList,b as AfriCodeComponent,Qt as AfriBreadcrumb};
3137
4068
 
3138
- //# debugId=0BB2E5F17B5C61C964756E2164756E21
4069
+ //# debugId=ADB9A23861F887D464756E2164756E21