@cruxkit/button 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -9
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
10
|
<div align="center">
|
|
11
|
-
<img src="https://img.shields.io/badge/v-0.0.
|
|
11
|
+
<img src="https://img.shields.io/badge/v-0.0.7-black"/>
|
|
12
12
|
<a href="https://github.com/cruxkit-org"><img src="https://img.shields.io/badge/🔥-@cruxkit-black"/></a>
|
|
13
13
|
<br>
|
|
14
|
-
<img src="https://img.shields.io/badge/coverage-
|
|
14
|
+
<img src="https://img.shields.io/badge/coverage-98.12%25-brightgreen" alt="Test Coverage" />
|
|
15
15
|
<img src="https://img.shields.io/github/issues/cruxkit-org/button?style=flat" alt="Github Repo Issues" />
|
|
16
16
|
<img src="https://img.shields.io/github/stars/cruxkit-org/button?style=social" alt="GitHub Repo stars" />
|
|
17
17
|
</div>
|
|
@@ -70,15 +70,13 @@
|
|
|
70
70
|
Save
|
|
71
71
|
</Button>
|
|
72
72
|
|
|
73
|
-
<Button icon={Icon('plus')} variant="ghost" />
|
|
74
|
-
|
|
75
73
|
<Button
|
|
76
74
|
variant="outline"
|
|
77
75
|
color="success"
|
|
78
76
|
size="sm"
|
|
79
77
|
fullWidth
|
|
80
|
-
leftIcon=
|
|
81
|
-
rightIcon={
|
|
78
|
+
leftIcon="check"
|
|
79
|
+
rightIcon={{ name: 'arrow-right' }}
|
|
82
80
|
>
|
|
83
81
|
Continue
|
|
84
82
|
</Button>
|
|
@@ -126,9 +124,8 @@
|
|
|
126
124
|
disabled? : boolean;
|
|
127
125
|
loading? : boolean;
|
|
128
126
|
|
|
129
|
-
leftIcon? :
|
|
130
|
-
rightIcon? :
|
|
131
|
-
icon? : JSXElement;
|
|
127
|
+
leftIcon? : IconProps | IconName;
|
|
128
|
+
rightIcon? : IconProps | IconName;
|
|
132
129
|
|
|
133
130
|
as? : ContainerAs;
|
|
134
131
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
'use strict';var container=require('@cruxkit/container'),text=require('@cruxkit/text'),client=require('@cruxjs/client'),jsxRuntime=require('@minejs/jsx/jsx-runtime');var K={sm:{px:3,py:1},md:{px:4,py:2},lg:{px:6,py:3}},Q={sm:1,md:2,lg:2},U={sm:"sm",md:"md",lg:"lg"};var Z={solid:{brand:["bg-brand","text-inverse","border","border-transparent","hover:bg-brand-hover","active:bg-brand-active","active:scale-95","shadow-sm","hover:shadow-md"],success:["bg-success","text-inverse","border","border-transparent","hover:bg-success-hover","active:bg-success-active","active:scale-95","shadow-sm","hover:shadow-md"],warning:["bg-warning","text-inverse","border","border-transparent","hover:bg-warning-hover","active:bg-warning-active","active:scale-95","shadow-sm","hover:shadow-md"],error:["bg-error","text-inverse","border","border-transparent","hover:bg-error-hover","active:bg-error-active","active:scale-95","shadow-sm","hover:shadow-md"],neutral:["bg-surface","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95","shadow-sm","hover:shadow-md"]},outline:{brand:["bg-transparent","text-brand","border","border-brand","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-success","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-warning","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-error","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95"]},ghost:{brand:["bg-transparent","text-brand","border","border-transparent","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-transparent","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-transparent","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-transparent","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-transparent","hover:bg-raised","active:bg-tertiary","active:scale-95"]},link:{brand:["bg-transparent","text-brand","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],success:["bg-transparent","text-success","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],warning:["bg-transparent","text-warning","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],error:["bg-transparent","text-error","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],neutral:["bg-transparent","text-1","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"]}},z=new WeakSet,R=new WeakSet,L=new WeakSet,$=5,ee=100;function p(a,v){return a?jsxRuntime.jsx("span",{className:"inline-flex shrink-0",children:a}):null}function ae(a){let{variant:v="solid",color:k="brand",size:r="md",fullWidth:C=false,disabled:A=false,loading:N=false,leftIcon:P,rightIcon:q,icon:m,as:f="button",text:t,children:H,className:I,type:X="button",onMount:c,onLoad:d,...J}=a,_=["inline-flex","items-center","justify-center","font-medium","transition-all","duration-150","select-none","focus:outline-none","focus-visible:ring","focus-visible:ring-offset-2"],l=[];(N||A)&&l.push("opacity-50","cursor-not-allowed","pointer-events-none"),C&&l.push("w-full");let W=Z[v][k],j=[..._,...l,...W,I].filter(Boolean).join(" "),b=K[r],F=Q[r],O=U[r],n=[],h=p(P),x=p(q),w=p(m);h&&n.push(h),w&&n.push(w);let y=typeof t=="string"&&t.includes("."),o=H??(y?"--":t);o!=null&&o!==""&&n.push(jsxRuntime.jsx(text.Text,{as:"span",size:O,"data-role":"btn-label",className:"flex items-center",children:o})),x&&n.push(x);let V=f==="button"?{type:X}:{},T=y,S=c||d||T?e=>{if(e){if(c&&!z.has(e)&&(z.add(e),c(e)),d&&!R.has(e)){R.add(e);let i=()=>{d(e);};typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>{requestAnimationFrame(i);}):setTimeout(i,0);}if(T&&!L.has(e)){let i=s=>{typeof queueMicrotask=="function"?queueMicrotask(s):setTimeout(s,0);},B=s=>{let M=e.querySelector('[data-role="btn-label"]');if(!M||typeof t!="string")return;let u=client.t(t,void 0,"--");if(u!==t&&u!=="--"||s>=$){M.textContent=String(u),L.add(e);return}setTimeout(()=>{B(s+1);},ee);};i(()=>{B(0);});}}}:void 0,E={as:f,display:"inline-flex",align:"center",justify:"center",gap:F,px:m?b.py:b.px,py:b.py,radius:"md",className:j,...V,...J};return S&&(E.ref=S),jsxRuntime.jsx(container.Container,{...E,children:n})}exports.Button=ae;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var container=require('@cruxkit/container'),text=require('@cruxkit/text'),jsxRuntime=require('@minejs/jsx/jsx-runtime'),client=require('@cruxjs/client');var Y={"arrow-down":{category:"arrows",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M160 32l0 370.7 32 32 32-32 0-370.7c0-17.7-14.3-32-32-32s-32 14.3-32 32z"/><path fill="currentColor" d="M214.6 502.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 434.7 329.4 297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160z"/>'},"arrow-left":{category:"arrows",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M77.3 256l32 32 370.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0-32 32z"/><path fill="currentColor" d="M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L77.3 256 214.6 393.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160z"/>'}},$={"bars-filter":{category:"bars",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M96 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M512 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32zM320 416c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32z"/>'},"bars-sort":{category:"bars",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM192 416c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32z"/>'},"bars-staggered":{category:"bars",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"/>'},bars:{category:"bars",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"/>'}},G={"chevron-down":{category:"chevron",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M246.6 406.6c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 338.7 393.4 169.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-192 192z"/><path fill="currentColor" d=""/>'},"chevron-left":{category:"chevron",viewBox:"0 0 320 512",svg:'<path opacity=".4" fill="currentColor" d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"/><path fill="currentColor" d=""/>'}},K={a:{category:"letters",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z"/><path fill="currentColor" d=""/>'},ain:{category:"letters",viewBox:"0 0 384 512",svg:'<g transform="translate(49 38) scale(6)"><path opacity=".4" fill="currentColor" d="M25.833,5.083c0,0-3.918-5.083-9.084-5.083S3.999,10.167,3.999,17.417c0,4.333,6.584,7,6.584,7 S0,33.084,0,48.417S14,72.5,26.25,72.5c4.667,0,21.417-8.833,21.417-8.833v-0.75c0,0-6.666,0-15.583,0s-27.25-7.583-27.25-19.75 c0-16.479,20.666-20.75,20.666-20.75s1.334-1.334,3.584-4.917s3.083-5.833,3.083-5.833s-4,1.166-8,3.083S18.001,19,15.834,19 s-8.417-3.582-8.417-5.666s3.917-6.25,9.667-7.5S25.833,5.083,25.833,5.083z"/></g><path fill="currentColor" d=""/>'}},Q={"shield-check":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.4-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.3 1 260.7 0 256.1 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM166.8 293.5c-9.2-9.5-9-24.7 .6-33.9 9.5-9.2 24.7-9 33.9 .6 8.8 9.1 17.7 18.3 26.5 27.4 28.5-39.2 57.1-78.5 85.6-117.7 7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5c-34.1 46.9-68.3 93.9-102.4 140.8-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3c-15.5-16-30.9-32-46.4-48z"/><path fill="currentColor" d="M313.4 169.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L249.8 338.9c-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3l-46.4-48c-9.2-9.5-9-24.7 .6-33.9s24.7-8.9 33.9 .6l26.5 27.4 85.6-117.7z"/>'},"shield-exclamation":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.3-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L268.5 2.5c-3.8-1.6-8.1-2.5-12.2-2.5-4.4 0-8.7 .8-12.8 2.5L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM288 336a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224.7 145.7C223.4 127.5 237.8 112 256 112s32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104z"/><path fill="currentColor" d="M256 368a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.3 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104C223.4 127.5 237.8 112 256 112z"/>'},"shield-halved":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16.2 140c.5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6 9.3 .1 18.6-1.9 27.1-6 172.4-82.5 213.1-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L270.3 2.9C266.1 1 261.6 0 256.9 0l-.4 0c-5.7 .2-9.9 1.2-13.7 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2z"/><path fill="currentColor" d="M256.2 0c-4.6 0-9.2 1-13.3 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6L256.2 0z"/>'},"shield-minus":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z"/><path fill="currentColor" d="M160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z"/>'},"shield-slash":{category:"shield",viewBox:"0 0 576 512",svg:'<path opacity=".4" fill="currentColor" d="M48 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 27.5-13.1 51.6-28.8 72.7-46.2L51 120.8c-2 6-3 12.4-3 19.2z"/><path fill="currentColor" d="M7-24.9c9.4-9.4 24.6-9.4 33.9 0L130.1 64.2 274.7 2.9C278.8 1 283.4 0 288 0s9.2 1 13.4 2.9L489.7 82.8c22 9.3 38.4 31 38.3 57.2-.3 64.1-17.4 162.4-75.9 246.3L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9z"/>'},shield:{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z"/><path fill="currentColor" d=""/>'}},U={asterisk:{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z"/><path fill="currentColor" d=""/>'},door:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M152 216l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-32l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 32l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/><path fill="currentColor" d="M340.5 108.6l35.1-52.6c7.1-10.7 21.5-14 31.8-6.4 20.6 15.1 38.8 33.3 54.1 53.8 7.8 10.5 4.3 25.3-6.9 32.2l-54.1 33.8c-11.4 7.1-26.3 3.3-35.1-6.9-5.5-6.4-11.5-12.3-18-17.7-10.8-8.9-14.8-24.6-7-36.2zM315.6 7c15.1 3.6 20.8 21.2 12.2 34.1l-40 60c-5.2 7.8-14.5 11.7-23.9 11.2-5.2-.3-10.6-.3-15.8 0-9.4 .5-18.7-3.4-23.9-11.2l-40-60c-8.6-12.9-2.9-30.5 12.2-34.1 19.1-4.6 39.1-7 59.6-7s40.4 2.4 59.6 7zM57.4 135.5c-11.2-7-14.7-21.7-6.9-32.2 15.3-20.5 33.5-38.6 54.1-53.8 10.4-7.6 24.7-4.3 31.8 6.4l35.1 52.6c7.8 11.6 3.8 27.3-7 36.2-6.5 5.4-12.5 11.3-18 17.7-8.7 10.2-23.6 14-35.1 6.9L57.4 135.5zM112 256l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-21.2 2.6-41.8 7.5-61.6 3.6-14.7 20.7-20.5 33.6-12.5l59.7 37.3c8.4 5.3 12.6 15.2 11.8 25.1-.3 3.8-.5 7.7-.5 11.6zm299.3-36.8L471 182c12.9-8 29.9-2.3 33.6 12.5 4.9 19.7 7.5 40.3 7.5 61.6l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-3.9-.2-7.8-.5-11.6-.8-9.9 3.3-19.9 11.8-25.1zM112 376l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24L0 376c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24zm400 0l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24z"/>'},flag:{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M64 48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 247.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 352 64 48z"/><path fill="currentColor" d="M32 0C49.7 0 64 14.3 64 32l0 448c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0z"/>'},gear:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M208.3 256a47.7 47.7 0 1 0 95.4 0 47.7 47.7 0 1 0 -95.4 0z"/><path fill="currentColor" d="M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 352a96 96 0 1 0 -.6-192 96 96 0 1 0 .6 192z"/>'},house:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M48 267.7c2-1.2 4-2.6 5.8-4.3L256 75.7 458.2 263.4c1.8 1.7 3.7 3.1 5.8 4.3L464 448c0 35.3-28.7 64-64 64l-80 0 0-128c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 128-80 0c-35.3 0-64-28.7-64-64l0-180.3z"/><path fill="currentColor" d="M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-13 12-13.7 32.3-1.7 45.2s32.3 13.7 45.2 1.7L256 75.7 458.2 263.4c13 12 33.2 11.3 45.2-1.7s11.3-33.2-1.7-45.2l-224-208zM240 336c-26.5 0-48 21.5-48 48l0 128 128 0 0-128c0-26.5-21.5-48-48-48l-32 0z"/>'},"key-skeleton":{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3 137.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 86.1-86.1c-18.3-11.5-33.8-27-45.3-45.3L9.4 393.4z"/><path fill="currentColor" d="M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/>'},key:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M0 408l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7L282.3 343.7 168.3 229.7 7 391c-4.5 4.5-7 10.6-7 17z"/><path fill="currentColor" d="M168.3 229.7L282.3 343.7c16.9 5.4 35 8.3 53.7 8.3 97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7zM336 136a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z"/>'},language:{category:"ui",viewBox:"0 0 576 512",svg:'<path opacity=".4" fill="currentColor" d="M258.8 467c58.2-131 80.2-180.5 128-288 5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2zm106.9-83L466.3 384 416 270.8 365.7 384z"/><path fill="currentColor" d="M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4-26 58.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L71.4 212.5c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l20.3 24.4c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32z"/>'},"lock-keyhole":{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z"/><path fill="currentColor" d="M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM216 296l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z"/>'},lock:{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z"/><path fill="currentColor" d="M64 160l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z"/>'},moon:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z"/><path fill="currentColor" d=""/>'},search:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M64 208a144 144 0 1 0 288 0 144 144 0 1 0 -288 0z"/><path fill="currentColor" d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/>'},sun:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24zM75 75c9.4-9.4 24.6-9.4 33.9 0l39.6 39.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L75 108.9c-9.4-9.4-9.4-24.6 0-33.9zm0 328.1l39.6-39.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L108.9 437c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM232 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zm0 408c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zM363.5 114.6L403.1 75c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39.6 39.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zm0 248.9c9.4-9.4 24.6-9.4 33.9 0L437 403.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39.6-39.6c-9.4-9.4-9.4-24.6 0-33.9zM408 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24z"/><path fill="currentColor" d="M144 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z"/>'},"unlock-keyhole":{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z"/><path fill="currentColor" d="M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM232 360l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z"/>'},unlock:{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z"/><path fill="currentColor" d="M0 224c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224z"/>'},user:{category:"ui",viewBox:"0 0 448 512",svg:'<path fill="currentColor" d="M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z"/>'}},k={...Y,...$,...G,...K,...Q,...U};var Z={xs:"0.75rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"2rem",xxl:"2.5rem"};function b(r){let e=typeof r=="string"?{name:r}:r,o=null;if(e.name&&e.name in k?o=k[e.name]:e.svg&&(o={viewBox:e.viewBox||"0 0 24 24",svg:e.svg}),!o)return e.name?console.warn(`Icon "${e.name}" not found in catalog`):console.warn("Icon configuration is invalid"),null;let t=e.size,n=typeof t=="number"?`${t}px`:Z[t||"md"],i={width:n,height:n,display:"inline-block",verticalAlign:"middle",lineHeight:"1",flexShrink:"0"};return e.color&&(i.color=e.color),jsxRuntime.jsx("svg",{style:i,viewBox:o.viewBox,fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",dangerouslySetInnerHTML:{__html:o.svg}})}var o2={sm:{px:3,py:1},md:{px:4,py:2},lg:{px:6,py:3}},c2={sm:1,md:2,lg:2},l2={sm:"sm",md:"md",lg:"lg"},s2={sm:"sm",md:"md",lg:"lg"},a2={solid:{brand:["bg-brand","text-inverse","border","border-transparent","hover:bg-brand-hover","active:bg-brand-active","active:scale-95","shadow-sm","hover:shadow-md"],success:["bg-success","text-inverse","border","border-transparent","hover:bg-success-hover","active:bg-success-active","active:scale-95","shadow-sm","hover:shadow-md"],warning:["bg-warning","text-inverse","border","border-transparent","hover:bg-warning-hover","active:bg-warning-active","active:scale-95","shadow-sm","hover:shadow-md"],error:["bg-error","text-inverse","border","border-transparent","hover:bg-error-hover","active:bg-error-active","active:scale-95","shadow-sm","hover:shadow-md"],neutral:["bg-surface","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95","shadow-sm","hover:shadow-md"]},outline:{brand:["bg-transparent","text-brand","border","border-brand","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-success","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-warning","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-error","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95"]},ghost:{brand:["bg-transparent","text-brand","border","border-transparent","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-transparent","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-transparent","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-transparent","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-transparent","hover:bg-raised","active:bg-tertiary","active:scale-95"]},link:{brand:["bg-transparent","text-brand","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],success:["bg-transparent","text-success","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],warning:["bg-transparent","text-warning","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],error:["bg-transparent","text-error","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],neutral:["bg-transparent","text-1","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"]}},T=new WeakSet,I=new WeakSet,E=new WeakSet,n2=5,i2=100;function N(r,e){if(!r)return null;let o=s2[e];if(typeof r=="string")return jsxRuntime.jsx("span",{className:"inline-flex shrink-0",children:jsxRuntime.jsx(b,{name:r,size:o})});let t=r.size??o;return jsxRuntime.jsx("span",{className:"inline-flex shrink-0",children:jsxRuntime.jsx(b,{...r,size:t})})}function b2(r){let{variant:e="solid",color:o="brand",size:t="md",fullWidth:n=false,disabled:i=false,loading:R=false,leftIcon:P,rightIcon:A,as:m="button",text:l,children:H,className:_,type:j="button",onMount:g,onLoad:h,...q}=r,X=["inline-flex","items-center","justify-center","font-medium","transition-all","duration-150","select-none","focus:outline-none","focus-visible:ring","focus-visible:ring-offset-2"],v=[];(R||i)&&v.push("opacity-50","cursor-not-allowed","pointer-events-none"),n&&v.push("w-full");let J=a2[e][o],O=[...X,...v,...J,_].filter(Boolean).join(" "),y=o2[t],W=c2[t],F=l2[t],d=[],z=N(P,t),C=N(A,t);z&&d.push(z);let M=typeof l=="string"&&l.includes("."),u=H??(M?"--":l);u!=null&&u!==""&&d.push(jsxRuntime.jsx(text.Text,{as:"span",size:F,"data-role":"btn-label",className:"flex items-center",children:u})),C&&d.push(C);let D=m==="button"?{type:j}:{},x=M,w=g||h||x?c=>{if(c){if(g&&!T.has(c)&&(T.add(c),g(c)),h&&!I.has(c)){I.add(c);let p=()=>{h(c);};typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>{requestAnimationFrame(p);}):setTimeout(p,0);}if(x&&!E.has(c)){let p=a=>{typeof queueMicrotask=="function"?queueMicrotask(a):setTimeout(a,0);},B=a=>{let S=c.querySelector('[data-role="btn-label"]');if(!S||typeof l!="string")return;let f=client.t(l,void 0,"--");if(f!==l&&f!=="--"||a>=n2){S.textContent=String(f),E.add(c);return}setTimeout(()=>{B(a+1);},i2);};p(()=>{B(0);});}}}:void 0,L={as:m,display:"inline-flex",align:"center",justify:"center",gap:W,px:y.px,py:y.py,radius:"md",className:O,...D,...q};return w&&(L.ref=w),jsxRuntime.jsx(container.Container,{...L,children:d})}
|
|
2
|
+
exports.Button=b2;//# sourceMappingURL=index.cjs.map
|
|
2
3
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/kit/button.tsx"],"names":["sizePaddingMap","sizeGapMap","labelSizeMap","variantClasses","mountedElements","loadedElements","translatedElements","MAX_TRANSLATION_ATTEMPTS","TRANSLATION_RETRY_DELAY_MS","renderIcon","icon","size","jsx","Button","props","variant","color","fullWidth","disabled","loading","leftIcon","rightIcon","as","text","children","className","type","onMount","onLoad","restProps","baseClasses","stateClasses","paletteClasses","classes","padding","gap","labelSize","content","left","right","centerIcon","isKeyLikeText","label","Text","elementTypeProps","shouldTranslate","handleRef","element","runLoad","schedule","fn","attemptTranslate","attempt","labelNode","translated","t","containerProps","Container"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/kit/button.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import type { JSXElement } from '@minejs/jsx';\r\n import { Container } from '@cruxkit/container';\r\n import { Text } from '@cruxkit/text';\r\n import type { ButtonProps, ButtonSize, ButtonColor, ButtonVariant } from '../types';\r\n import { t } from '@cruxjs/client';\r\n \r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n const sizePaddingMap: Record<ButtonSize, { px: 3 | 4 | 6; py: 1 | 2 | 3 }> = {\r\n sm: { px: 3, py: 1 },\r\n md: { px: 4, py: 2 },\r\n lg: { px: 6, py: 3 }\r\n };\r\n\r\n const sizeGapMap: Record<ButtonSize, 1 | 2> = {\r\n sm: 1,\r\n md: 2,\r\n lg: 2\r\n };\r\n\r\n const labelSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const iconSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const variantClasses: Record<ButtonVariant, Record<ButtonColor, string[]>> = {\r\n solid: {\r\n brand: [\r\n 'bg-brand',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-hover',\r\n 'active:bg-brand-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n success: [\r\n 'bg-success',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-hover',\r\n 'active:bg-success-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n warning: [\r\n 'bg-warning',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-hover',\r\n 'active:bg-warning-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n error: [\r\n 'bg-error',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-hover',\r\n 'active:bg-error-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n neutral: [\r\n 'bg-surface',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ]\r\n },\r\n outline: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-brand',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-success',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-warning',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-error',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n ghost: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n link: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ]\r\n }\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n const mountedElements = new WeakSet<HTMLElement>();\r\n const loadedElements = new WeakSet<HTMLElement>();\r\n const translatedElements = new WeakSet<HTMLElement>();\r\n const MAX_TRANSLATION_ATTEMPTS = 5;\r\n const TRANSLATION_RETRY_DELAY_MS = 100;\r\n\r\n type ButtonContainerProps = {\r\n as?: unknown;\r\n display?: string;\r\n align?: string;\r\n justify?: string;\r\n gap?: number;\r\n px?: number;\r\n py?: number;\r\n radius?: string;\r\n className?: string;\r\n ref?: (element: HTMLElement | null) => void;\r\n } & Record<string, unknown>;\r\n\r\n function renderIcon(icon: JSXElement | undefined, size: ButtonSize): JSXElement | null {\r\n if (!icon) return null;\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n {icon}\r\n </span>\r\n );\r\n }\r\n\r\n /**\r\n * A polymorphic button component that supports multiple variants, colors, sizes, and states.\r\n *\r\n * @param props - The properties for the Button component.\r\n * @param props.variant - Visual style variant: `'solid' | 'outline' | 'ghost' | 'link'`.\r\n * @param props.color - Color theme: `'brand' | 'success' | 'warning' | 'error' | 'neutral'`.\r\n * @param props.size - Size scale: `'sm' | 'md' | 'lg'`.\r\n * @param props.fullWidth - Whether the button spans the full width of its container.\r\n * @param props.disabled - Whether the button is disabled.\r\n * @param props.loading - Whether the button is in a loading state (disables interaction).\r\n * @param props.leftIcon - Optional icon placed to the left of the label (string name or IconProps).\r\n * @param props.rightIcon - Optional icon placed to the right of the label (string name or IconProps).\r\n * @param props.as - Element type to render: `'button' | 'a' | any polymorphic component`.\r\n * @param props.children - Button label content.\r\n * @param props.className - Additional CSS classes appended to the built-in styles.\r\n * @param props.type - HTML button type attribute (only applied when `as=\"button\"`).\r\n * @param props.restProps - Any other props are forwarded to the underlying element.\r\n *\r\n * @returns A JSX element representing the styled button.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Button variant=\"solid\" color=\"brand\" size=\"md\" onClick={handleClick}>\r\n * Save\r\n * </Button>\r\n * ```\r\n */\r\n export function Button(props: ButtonProps): JSXElement {\r\n const {\r\n variant = 'solid',\r\n color = 'brand',\r\n size = 'md',\r\n fullWidth = false,\r\n disabled = false,\r\n loading = false,\r\n leftIcon,\r\n rightIcon,\r\n icon,\r\n as = 'button',\r\n text,\r\n children,\r\n className,\r\n type = 'button',\r\n onMount,\r\n onLoad,\r\n ...restProps\r\n } = props;\r\n\r\n const baseClasses = [\r\n 'inline-flex',\r\n 'items-center',\r\n 'justify-center',\r\n 'font-medium',\r\n 'transition-all',\r\n 'duration-150',\r\n 'select-none',\r\n 'focus:outline-none',\r\n 'focus-visible:ring',\r\n 'focus-visible:ring-offset-2'\r\n ];\r\n\r\n const stateClasses = [];\r\n\r\n if (loading || disabled) {\r\n stateClasses.push('opacity-50', 'cursor-not-allowed', 'pointer-events-none');\r\n }\r\n\r\n if (fullWidth) {\r\n stateClasses.push('w-full');\r\n }\r\n\r\n const paletteClasses = variantClasses[variant][color];\r\n\r\n const classes = [\r\n ...baseClasses,\r\n ...stateClasses,\r\n ...paletteClasses,\r\n className\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const padding = sizePaddingMap[size];\r\n const gap = sizeGapMap[size];\r\n const labelSize = labelSizeMap[size];\r\n\r\n const content: JSXElement[] = [];\r\n\r\n const left = renderIcon(leftIcon, size);\r\n const right = renderIcon(rightIcon, size);\r\n const centerIcon = renderIcon(icon, size);\r\n\r\n if (left) {\r\n content.push(left);\r\n }\r\n\r\n if (centerIcon) {\r\n content.push(centerIcon);\r\n }\r\n\r\n const isKeyLikeText = typeof text === 'string' && text.includes('.');\r\n const label = children ?? (isKeyLikeText ? '--' : text);\r\n\r\n if (label !== undefined && label !== null && label !== '') {\r\n content.push(\r\n <Text as=\"span\" size={labelSize} data-role=\"btn-label\" className='flex items-center'>\r\n {label}\r\n </Text>\r\n );\r\n }\r\n\r\n if (right) {\r\n content.push(right);\r\n }\r\n\r\n const elementType = as;\r\n\r\n const elementTypeProps =\r\n elementType === 'button'\r\n ? { type }\r\n : {};\r\n\r\n const shouldTranslate = isKeyLikeText;\r\n\r\n const handleRef =\r\n (onMount || onLoad || shouldTranslate)\r\n ? (element: HTMLElement | null) => {\r\n if (!element) return;\r\n\r\n if (onMount && !mountedElements.has(element)) {\r\n mountedElements.add(element);\r\n onMount(element);\r\n }\r\n\r\n if (onLoad && !loadedElements.has(element)) {\r\n loadedElements.add(element);\r\n\r\n const runLoad = () => {\r\n onLoad(element);\r\n };\r\n\r\n if (typeof requestAnimationFrame === 'function') {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(runLoad);\r\n });\r\n } else {\r\n setTimeout(runLoad, 0);\r\n }\r\n }\r\n\r\n if (shouldTranslate && !translatedElements.has(element)) {\r\n const schedule = (fn: () => void) => {\r\n if (typeof queueMicrotask === 'function') {\r\n queueMicrotask(fn);\r\n } else {\r\n setTimeout(fn, 0);\r\n }\r\n };\r\n\r\n const attemptTranslate = (attempt: number) => {\r\n const labelNode = element.querySelector('[data-role=\\\"btn-label\\\"]');\r\n\r\n if (!labelNode || typeof text !== 'string') return;\r\n\r\n let translated = t(text as string, undefined, '--');\r\n\r\n if (translated !== text && translated !== '--' || attempt >= MAX_TRANSLATION_ATTEMPTS) {\r\n (labelNode as HTMLElement).textContent = String(translated);\r\n translatedElements.add(element);\r\n return;\r\n }\r\n\r\n setTimeout(\r\n () => {\r\n attemptTranslate(attempt + 1);\r\n },\r\n TRANSLATION_RETRY_DELAY_MS\r\n );\r\n };\r\n\r\n schedule(() => {\r\n attemptTranslate(0);\r\n });\r\n }\r\n }\r\n : undefined;\r\n\r\n const containerProps: ButtonContainerProps = {\r\n as,\r\n display : 'inline-flex',\r\n align : 'center',\r\n justify : 'center',\r\n gap,\r\n px : icon ? padding.py : padding.px,\r\n py : padding.py,\r\n radius : 'md',\r\n className : classes,\r\n ...elementTypeProps,\r\n ...restProps\r\n };\r\n\r\n if (handleRef) {\r\n containerProps.ref = handleRef;\r\n }\r\n\r\n return (\r\n <Container {...(containerProps as Record<string, unknown>)}>\r\n {content}\r\n </Container>\r\n );\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/@cruxkit/icon/src/kit/categories/arrows.ts","../node_modules/@cruxkit/icon/src/kit/categories/bars.ts","../node_modules/@cruxkit/icon/src/kit/categories/chevron.ts","../node_modules/@cruxkit/icon/src/kit/categories/letters.ts","../node_modules/@cruxkit/icon/src/kit/categories/shield.ts","../node_modules/@cruxkit/icon/src/kit/categories/ui.ts","../node_modules/@cruxkit/icon/src/kit/categories/index.ts","../node_modules/@cruxkit/icon/src/kit/icon.tsx","../src/kit/button.tsx"],"names":["arrowsIcons","barsIcons","chevronIcons","lettersIcons","shieldIcons","uiIcons","iconCatalog","sizeMap","Icon","props","cfg","iconData","sizeValue","size","style","jsx","sizePaddingMap","sizeGapMap","labelSizeMap","iconSizeMap","variantClasses","mountedElements","loadedElements","translatedElements","MAX_TRANSLATION_ATTEMPTS","TRANSLATION_RETRY_DELAY_MS","renderIcon","icon","iconSize","D","resolvedSize","Button","variant","color","fullWidth","disabled","loading","leftIcon","rightIcon","as","text","children","className","type","onMount","onLoad","restProps","baseClasses","stateClasses","paletteClasses","classes","padding","gap","labelSize","content","left","right","isKeyLikeText","label","Text","elementTypeProps","shouldTranslate","handleRef","element","runLoad","schedule","fn","attemptTranslate","attempt","labelNode","translated","t","containerProps","Container"],"mappings":"sKAAO,IAAMA,CAAAA,CAAc,CACzB,YAAA,CAAc,CACZ,QAAA,CAAU,SACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,iUACP,CAAA,CACA,YAAA,CAAc,CACZ,QAAA,CAAU,SACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,gUACP,CACF,CAAA,CCXaC,CAAAA,CAAY,CACvB,aAAA,CAAe,CACb,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,qXACP,CAAA,CACA,WAAA,CAAa,CACX,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,sXACP,CAAA,CACA,gBAAA,CAAkB,CAChB,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,qXACP,CAAA,CACA,IAAA,CAAQ,CACN,QAAA,CAAU,MAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,oXACP,CACF,CAAA,CCrBaC,CAAAA,CAAe,CAC1B,cAAA,CAAgB,CACd,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,yPACP,EACA,cAAA,CAAgB,CACd,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,oPACP,CACF,CAAA,CCXaC,CAAAA,CAAe,CAC1B,CAAA,CAAK,CACH,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,cACT,GAAA,CAAK,oVACP,CAAA,CACA,GAAA,CAAO,CACL,QAAA,CAAU,SAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,shBACP,CACF,CAAA,CCXaC,CAAAA,CAAc,CACzB,cAAA,CAAgB,CACd,QAAA,CAAU,SACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,suBACP,CAAA,CACA,oBAAA,CAAsB,CACpB,QAAA,CAAU,SACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,goBACP,CAAA,CACA,eAAA,CAAiB,CACf,QAAA,CAAU,SACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,mcACP,EACA,cAAA,CAAgB,CACd,QAAA,CAAU,QAAA,CACV,QAAS,aAAA,CACT,GAAA,CAAK,seACP,CAAA,CACA,cAAA,CAAgB,CACd,QAAA,CAAU,QAAA,CACV,QAAS,aAAA,CACT,GAAA,CAAK,kbACP,CAAA,CACA,MAAA,CAAU,CACR,QAAA,CAAU,QAAA,CACV,QAAS,aAAA,CACT,GAAA,CAAK,gSACP,CACF,CAAA,CC/BaC,CAAAA,CAAU,CACrB,QAAA,CAAY,CACV,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,ycACP,CAAA,CACA,IAAA,CAAQ,CACN,SAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,4/CACP,CAAA,CACA,IAAA,CAAQ,CACN,SAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,2YACP,CAAA,CACA,IAAA,CAAQ,CACN,SAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,i5BACP,CAAA,CACA,KAAA,CAAS,CACP,SAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,ghBACP,CAAA,CACA,cAAA,CAAgB,CACd,QAAA,CAAU,KACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,yYACP,CAAA,CACA,GAAA,CAAO,CACL,QAAA,CAAU,KACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,waACP,CAAA,CACA,QAAA,CAAY,CACV,QAAA,CAAU,KACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,+3BACP,CAAA,CACA,cAAA,CAAgB,CACd,QAAA,CAAU,KACV,OAAA,CAAS,aAAA,CACT,GAAA,CAAK,6YACP,EACA,IAAA,CAAQ,CACN,QAAA,CAAU,IAAA,CACV,QAAS,aAAA,CACT,GAAA,CAAK,mTACP,CAAA,CACA,IAAA,CAAQ,CACN,QAAA,CAAU,IAAA,CACV,QAAS,aAAA,CACT,GAAA,CAAK,8VACP,CAAA,CACA,OAAU,CACR,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,cACT,GAAA,CAAK,0WACP,CAAA,CACA,GAAA,CAAO,CACL,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,cACT,GAAA,CAAK,o8BACP,CAAA,CACA,gBAAA,CAAkB,CAChB,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,scACP,CAAA,CACA,MAAA,CAAU,CACR,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,yWACP,CAAA,CACA,IAAA,CAAQ,CACN,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,aAAA,CACT,IAAK,4NACP,CACF,CAAA,CC1EaC,CAAAA,CAAc,CACzB,GAAGN,CAAAA,CACH,GAAGC,EACH,GAAGC,CAAAA,CACH,GAAGC,CAAAA,CACH,GAAGC,CAAAA,CACH,GAAGC,CACL,CAAA,CCIW,IAAME,CAAAA,CAAkC,CAC3C,EAAA,CAAU,SAAA,CACV,EAAA,CAAU,MAAA,CACV,EAAA,CAAU,SAAA,CACV,GAAU,QAAA,CACV,EAAA,CAAU,MAAA,CACV,GAAA,CAAU,QACd,CAAA,CAgBO,SAASC,CAAAA,CAAKC,EAAsC,CAWvD,IAAMC,CAAAA,CADS,OAAOD,CAAAA,EAAU,QAAA,CAAW,CAAE,IAAA,CAAMA,CAAM,CAAA,CAAIA,CAAAA,CAGzDE,CAAAA,CAAoD,IAAA,CAWxD,GATID,CAAAA,CAAI,IAAA,EAAQA,CAAAA,CAAI,IAAA,IAAQJ,EACxBK,CAAAA,CAAWL,CAAAA,CAAYI,CAAAA,CAAI,IAAgB,CAAA,CACpCA,CAAAA,CAAI,GAAA,GACXC,CAAAA,CAAW,CACP,OAAA,CAAUD,CAAAA,CAAI,OAAA,EAAW,WAAA,CACzB,GAAA,CAAUA,CAAAA,CAAI,GAClB,CAAA,CAAA,CAGA,CAACC,CAAAA,CACD,OAAID,CAAAA,CAAI,IAAA,CACJ,OAAA,CAAQ,IAAA,CAAK,CAAA,MAAA,EAASA,CAAAA,CAAI,IAAI,CAAA,sBAAA,CAAwB,CAAA,CAEtD,OAAA,CAAQ,IAAA,CAAK,+BAA+B,CAAA,CAEzC,IAAA,CAGX,IAAME,CAAAA,CAAYF,EAAI,IAAA,CAEhBG,CAAAA,CAAO,OAAOD,CAAAA,EAAc,QAAA,CAC5B,CAAA,EAAGA,CAAS,CAAA,EAAA,CAAA,CACZL,EAAQK,CAAAA,EAAa,IAAI,CAAA,CAEzBE,CAAAA,CAAgC,CAClC,KAAA,CAA0BD,CAAAA,CAC1B,MAAA,CAA0BA,EAC1B,OAAA,CAA0B,cAAA,CAC1B,aAAA,CAA0B,QAAA,CAC1B,UAAA,CAA0B,GAAA,CAC1B,UAAA,CAA0B,GAC9B,EAEA,OAAIH,CAAAA,CAAI,KAAA,GAAOI,CAAAA,CAAM,MAAQJ,CAAAA,CAAI,KAAA,CAAA,CAG7BK,cAAAA,CAAC,KAAA,CAAA,CACG,KAAA,CAAuBD,CAAAA,CACvB,OAAA,CAAuBH,CAAAA,CAAS,OAAA,CAChC,IAAA,CAAsB,cAAA,CACtB,KAAA,CAAsB,6BACtB,aAAA,CAAsB,MAAA,CACtB,IAAA,CAAsB,KAAA,CACtB,uBAAA,CAA2B,CACvB,MAAA,CAAkBA,CAAAA,CAAS,GAC/B,CAAA,CACJ,CAER,CCnFA,IAAMK,EAAAA,CAAuE,CACzE,EAAA,CAAI,CAAE,EAAA,CAAI,CAAA,CAAG,GAAI,CAAE,CAAA,CACnB,EAAA,CAAI,CAAE,EAAA,CAAI,CAAA,CAAG,EAAA,CAAI,CAAE,EACnB,EAAA,CAAI,CAAE,EAAA,CAAI,CAAA,CAAG,EAAA,CAAI,CAAE,CACvB,CAAA,CAEMC,GAAwC,CAC1C,EAAA,CAAI,CAAA,CACJ,EAAA,CAAI,CAAA,CACJ,EAAA,CAAI,CACR,CAAA,CAEMC,GAAuD,CACzD,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,KACJ,EAAA,CAAI,IACR,CAAA,CAEMC,EAAAA,CAAsD,CACxD,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IAAA,CACJ,EAAA,CAAI,IACR,CAAA,CAEMC,EAAAA,CAAuE,CACzE,KAAA,CAAO,CACH,KAAA,CAAO,CACH,UAAA,CACA,cAAA,CACA,QAAA,CACA,oBAAA,CACA,uBACA,wBAAA,CACA,iBAAA,CACA,WAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,YAAA,CACA,eACA,QAAA,CACA,oBAAA,CACA,wBAAA,CACA,0BAAA,CACA,kBACA,WAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,YAAA,CACA,cAAA,CACA,QAAA,CACA,oBAAA,CACA,wBAAA,CACA,0BAAA,CACA,iBAAA,CACA,WAAA,CACA,iBACJ,CAAA,CACA,KAAA,CAAO,CACH,UAAA,CACA,eACA,QAAA,CACA,oBAAA,CACA,sBAAA,CACA,wBAAA,CACA,kBACA,WAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,YAAA,CACA,QAAA,CACA,QAAA,CACA,WACA,iBAAA,CACA,oBAAA,CACA,iBAAA,CACA,WAAA,CACA,iBACJ,CACJ,CAAA,CACA,OAAA,CAAS,CACL,MAAO,CACH,gBAAA,CACA,YAAA,CACA,QAAA,CACA,cAAA,CACA,uBAAA,CACA,wBAAA,CACA,iBACJ,EACA,OAAA,CAAS,CACL,gBAAA,CACA,cAAA,CACA,QAAA,CACA,gBAAA,CACA,yBAAA,CACA,0BAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,cAAA,CACA,QAAA,CACA,gBAAA,CACA,yBAAA,CACA,2BACA,iBACJ,CAAA,CACA,KAAA,CAAO,CACH,iBACA,YAAA,CACA,QAAA,CACA,cAAA,CACA,uBAAA,CACA,yBACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,QAAA,CACA,QAAA,CACA,UAAA,CACA,kBACA,oBAAA,CACA,iBACJ,CACJ,CAAA,CACA,KAAA,CAAO,CACH,KAAA,CAAO,CACH,iBACA,YAAA,CACA,QAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,cAAA,CACA,QAAA,CACA,oBAAA,CACA,0BACA,0BAAA,CACA,iBACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,cAAA,CACA,QAAA,CACA,oBAAA,CACA,yBAAA,CACA,0BAAA,CACA,iBACJ,CAAA,CACA,MAAO,CACH,gBAAA,CACA,YAAA,CACA,QAAA,CACA,oBAAA,CACA,uBAAA,CACA,wBAAA,CACA,iBACJ,EACA,OAAA,CAAS,CACL,gBAAA,CACA,QAAA,CACA,QAAA,CACA,oBAAA,CACA,iBAAA,CACA,oBAAA,CACA,iBACJ,CACJ,CAAA,CACA,IAAA,CAAM,CACF,MAAO,CACH,gBAAA,CACA,YAAA,CACA,QAAA,CACA,qBACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,MACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,eACA,QAAA,CACA,oBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,MACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,cAAA,CACA,QAAA,CACA,oBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,MACJ,EACA,KAAA,CAAO,CACH,gBAAA,CACA,YAAA,CACA,SACA,oBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,MACJ,CAAA,CACA,OAAA,CAAS,CACL,gBAAA,CACA,QAAA,CACA,QAAA,CACA,oBAAA,CACA,iBAAA,CACA,qBACA,cAAA,CACA,MACJ,CACJ,CACJ,CAAA,CAQMC,CAAAA,CAA6B,IAAI,OAAA,CACjCC,EAA6B,IAAI,OAAA,CACjCC,CAAAA,CAA6B,IAAI,OAAA,CACjCC,EAAAA,CAA6B,CAAA,CAC7BC,EAAAA,CAA6B,IAenC,SAASC,CAAAA,CAAWC,CAAAA,CAAwCd,CAAAA,CAAqC,CAC7F,GAAI,CAACc,CAAAA,CAAM,OAAO,KAElB,IAAMC,CAAAA,CAAWT,EAAAA,CAAYN,CAAI,CAAA,CAEjC,GAAI,OAAOc,CAAAA,EAAS,SAChB,OACIZ,cAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,sBAAA,CACZ,QAAA,CAAAA,cAAAA,CAACc,CAAAA,CAAA,CAAK,IAAA,CAAMF,CAAAA,CAAkB,IAAA,CAAMC,CAAAA,CAAU,CAAA,CAClD,CAAA,CAIR,IAAME,CAAAA,CAAiBH,EAAkC,IAAA,EAAQC,CAAAA,CAEjE,OACIb,cAAAA,CAAC,QAAK,SAAA,CAAU,sBAAA,CACZ,QAAA,CAAAA,cAAAA,CAACc,EAAA,CAAM,GAAGF,CAAAA,CAAM,IAAA,CAAMG,CAAAA,CAAc,CAAA,CACxC,CAER,CA6BO,SAASC,EAAAA,CAAOtB,CAAAA,CAAgC,CACnD,GAAM,CACF,OAAA,CAAAuB,CAAAA,CAAc,OAAA,CACd,MAAAC,CAAAA,CAAc,OAAA,CACd,IAAA,CAAApB,CAAAA,CAAc,IAAA,CACd,SAAA,CAAAqB,CAAAA,CAAc,KAAA,CACd,SAAAC,CAAAA,CAAc,KAAA,CACd,OAAA,CAAAC,CAAAA,CAAc,MACd,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,GAAAC,CAAAA,CAAc,QAAA,CACd,IAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,KAAAC,CAAAA,CAAc,QAAA,CACd,OAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CACA,GAAGC,CACP,CAAA,CAAIrC,EAEEsC,CAAAA,CAAc,CAChB,aAAA,CACA,cAAA,CACA,gBAAA,CACA,aAAA,CACA,gBAAA,CACA,cAAA,CACA,cACA,oBAAA,CACA,oBAAA,CACA,6BACJ,CAAA,CAEMC,EAAe,EAAC,CAAA,CAElBZ,CAAAA,EAAWD,CAAAA,GACXa,EAAa,IAAA,CAAK,YAAA,CAAc,oBAAA,CAAsB,qBAAqB,CAAA,CAG3Ed,CAAAA,EACAc,CAAAA,CAAa,IAAA,CAAK,QAAQ,CAAA,CAG9B,IAAMC,CAAAA,CAAiB7B,EAAAA,CAAeY,CAAO,CAAA,CAAEC,CAAK,CAAA,CAE9CiB,EAAU,CACZ,GAAGH,CAAAA,CACH,GAAGC,CAAAA,CACH,GAAGC,CAAAA,CACHP,CACJ,EACK,MAAA,CAAO,OAAO,CAAA,CACd,IAAA,CAAK,GAAG,CAAA,CAEPS,CAAAA,CAAYnC,EAAAA,CAAeH,CAAI,EAC/BuC,CAAAA,CAAYnC,EAAAA,CAAWJ,CAAI,CAAA,CAC3BwC,CAAAA,CAAYnC,EAAAA,CAAaL,CAAI,CAAA,CAE7ByC,EAAwB,EAAC,CAEzBC,CAAAA,CAAQ7B,CAAAA,CAAWW,CAAAA,CAAUxB,CAAI,CAAA,CACjC2C,CAAAA,CAAQ9B,EAAWY,CAAAA,CAAWzB,CAAI,CAAA,CAEpC0C,CAAAA,EACAD,CAAAA,CAAQ,IAAA,CAAKC,CAAI,CAAA,CAGrB,IAAME,CAAAA,CAAgB,OAAOjB,CAAAA,EAAS,QAAA,EAAYA,EAAK,QAAA,CAAS,GAAG,CAAA,CAC7DkB,CAAAA,CAAgBjB,IAAagB,CAAAA,CAAgB,IAAA,CAAOjB,CAAAA,CAAAA,CAE/BkB,CAAAA,EAAU,IAAA,EAAQA,CAAAA,GAAU,EAAA,EACnDJ,CAAAA,CAAQ,KACJvC,cAAAA,CAAC4C,SAAAA,CAAA,CAAK,EAAA,CAAG,MAAA,CAAO,IAAA,CAAMN,CAAAA,CAAW,WAAA,CAAU,YAAY,SAAA,CAAU,mBAAA,CAC5D,QAAA,CAAAK,CAAAA,CACL,CACJ,CAAA,CAGAF,CAAAA,EACAF,CAAAA,CAAQ,KAAKE,CAAK,CAAA,CAKtB,IAAMI,CAAAA,CAFcrB,IAGA,QAAA,CACV,CAAE,IAAA,CAAAI,CAAK,EACP,EAAC,CAELkB,CAAAA,CAAkBJ,CAAAA,CAElBK,CAAAA,CACDlB,CAAAA,EAAWC,CAAAA,EAAUgB,CAAAA,CACfE,GAAgC,CAC/B,GAAKA,CAAAA,CAOL,CAAA,GALInB,GAAW,CAACvB,CAAAA,CAAgB,GAAA,CAAI0C,CAAO,IACvC1C,CAAAA,CAAgB,GAAA,CAAI0C,CAAO,CAAA,CAC3BnB,CAAAA,CAAQmB,CAAO,CAAA,CAAA,CAGflB,CAAAA,EAAU,CAACvB,CAAAA,CAAe,GAAA,CAAIyC,CAAO,CAAA,CAAG,CACxCzC,CAAAA,CAAe,GAAA,CAAIyC,CAAO,CAAA,CAE1B,IAAMC,CAAAA,CAAU,IAAM,CAClBnB,CAAAA,CAAOkB,CAAO,EAClB,CAAA,CAEI,OAAO,uBAA0B,UAAA,CACjC,qBAAA,CAAsB,IAAM,CACxB,qBAAA,CAAsBC,CAAO,EACjC,CAAC,EAED,UAAA,CAAWA,CAAAA,CAAS,CAAC,EAE7B,CAEA,GAAIH,CAAAA,EAAmB,CAACtC,EAAmB,GAAA,CAAIwC,CAAO,CAAA,CAAG,CACrD,IAAME,CAAAA,CAAYC,CAAAA,EAAmB,CAC7B,OAAO,gBAAmB,UAAA,CAC1B,cAAA,CAAeA,CAAE,CAAA,CAEjB,UAAA,CAAWA,CAAAA,CAAI,CAAC,EAExB,EAEMC,CAAAA,CAAoBC,CAAAA,EAAoB,CAC1C,IAAMC,CAAAA,CAAYN,CAAAA,CAAQ,aAAA,CAAc,yBAA2B,EAEnE,GAAI,CAACM,CAAAA,EAAa,OAAO7B,CAAAA,EAAS,QAAA,CAAU,OAE5C,IAAI8B,EAAaC,QAAAA,CAAE/B,CAAAA,CAAgB,MAAA,CAAW,IAAI,EAElD,GAAI8B,CAAAA,GAAe9B,CAAAA,EAAQ8B,CAAAA,GAAe,MAAQF,CAAAA,EAAW5C,EAAAA,CAA0B,CAClF6C,CAAAA,CAA0B,WAAA,CAAc,MAAA,CAAOC,CAAU,CAAA,CAC1D/C,EAAmB,GAAA,CAAIwC,CAAO,CAAA,CAC9B,MACJ,CAEA,UAAA,CACI,IAAM,CACFI,EAAiBC,CAAAA,CAAU,CAAC,EAChC,CAAA,CACA3C,EACJ,EACJ,CAAA,CAEAwC,CAAAA,CAAS,IAAM,CACXE,CAAAA,CAAiB,CAAC,EACtB,CAAC,EACL,CAAA,CACJ,CAAA,CACE,MAAA,CAEJK,EAAuC,CACzC,EAAA,CAAAjC,CAAAA,CACA,OAAA,CAAY,aAAA,CACZ,KAAA,CAAY,QAAA,CACZ,OAAA,CAAY,SACZ,GAAA,CAAAa,CAAAA,CACA,EAAA,CAAYD,CAAAA,CAAQ,GACpB,EAAA,CAAYA,CAAAA,CAAQ,EAAA,CACpB,MAAA,CAAY,KACZ,SAAA,CAAYD,CAAAA,CACZ,GAAGU,CAAAA,CACH,GAAGd,CACP,CAAA,CAEA,OAAIgB,IACAU,CAAAA,CAAe,GAAA,CAAMV,CAAAA,CAAAA,CAIrB/C,cAAAA,CAAC0D,oBAAA,CAAW,GAAID,CAAAA,CACX,QAAA,CAAAlB,EACL,CAER","file":"index.cjs","sourcesContent":["export const arrowsIcons = {\n 'arrow-down': {\n category: 'arrows',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M160 32l0 370.7 32 32 32-32 0-370.7c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"/><path fill=\"currentColor\" d=\"M214.6 502.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 434.7 329.4 297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160z\"/>`,\n },\n 'arrow-left': {\n category: 'arrows',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M77.3 256l32 32 370.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0-32 32z\"/><path fill=\"currentColor\" d=\"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L77.3 256 214.6 393.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160z\"/>`,\n },\n} as const;\n\nexport type ArrowsIconName = keyof typeof arrowsIcons;\n","export const barsIcons = {\n 'bars-filter': {\n category: 'bars',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M96 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M512 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32zM320 416c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars-sort': {\n category: 'bars',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM192 416c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars-staggered': {\n category: 'bars',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars': {\n category: 'bars',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n} as const;\n\nexport type BarsIconName = keyof typeof barsIcons;\n","export const chevronIcons = {\n 'chevron-down': {\n category: 'chevron',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M246.6 406.6c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 338.7 393.4 169.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-192 192z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'chevron-left': {\n category: 'chevron',\n viewBox: '0 0 320 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type ChevronIconName = keyof typeof chevronIcons;\n","export const lettersIcons = {\n 'a': {\n category: 'letters',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'ain': {\n category: 'letters',\n viewBox: '0 0 384 512',\n svg: `<g transform=\"translate(49 38) scale(6)\"><path opacity=\".4\" fill=\"currentColor\" d=\"M25.833,5.083c0,0-3.918-5.083-9.084-5.083S3.999,10.167,3.999,17.417c0,4.333,6.584,7,6.584,7 S0,33.084,0,48.417S14,72.5,26.25,72.5c4.667,0,21.417-8.833,21.417-8.833v-0.75c0,0-6.666,0-15.583,0s-27.25-7.583-27.25-19.75 c0-16.479,20.666-20.75,20.666-20.75s1.334-1.334,3.584-4.917s3.083-5.833,3.083-5.833s-4,1.166-8,3.083S18.001,19,15.834,19 s-8.417-3.582-8.417-5.666s3.917-6.25,9.667-7.5S25.833,5.083,25.833,5.083z\"/></g><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type LettersIconName = keyof typeof lettersIcons;\n","export const shieldIcons = {\n 'shield-check': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.4-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.3 1 260.7 0 256.1 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM166.8 293.5c-9.2-9.5-9-24.7 .6-33.9 9.5-9.2 24.7-9 33.9 .6 8.8 9.1 17.7 18.3 26.5 27.4 28.5-39.2 57.1-78.5 85.6-117.7 7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5c-34.1 46.9-68.3 93.9-102.4 140.8-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3c-15.5-16-30.9-32-46.4-48z\"/><path fill=\"currentColor\" d=\"M313.4 169.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L249.8 338.9c-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3l-46.4-48c-9.2-9.5-9-24.7 .6-33.9s24.7-8.9 33.9 .6l26.5 27.4 85.6-117.7z\"/>`,\n },\n 'shield-exclamation': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.3-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L268.5 2.5c-3.8-1.6-8.1-2.5-12.2-2.5-4.4 0-8.7 .8-12.8 2.5L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM288 336a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224.7 145.7C223.4 127.5 237.8 112 256 112s32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104z\"/><path fill=\"currentColor\" d=\"M256 368a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.3 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104C223.4 127.5 237.8 112 256 112z\"/>`,\n },\n 'shield-halved': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16.2 140c.5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6 9.3 .1 18.6-1.9 27.1-6 172.4-82.5 213.1-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L270.3 2.9C266.1 1 261.6 0 256.9 0l-.4 0c-5.7 .2-9.9 1.2-13.7 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2z\"/><path fill=\"currentColor\" d=\"M256.2 0c-4.6 0-9.2 1-13.3 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6L256.2 0z\"/>`,\n },\n 'shield-minus': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z\"/><path fill=\"currentColor\" d=\"M160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z\"/>`,\n },\n 'shield-slash': {\n category: 'shield',\n viewBox: '0 0 576 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M48 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 27.5-13.1 51.6-28.8 72.7-46.2L51 120.8c-2 6-3 12.4-3 19.2z\"/><path fill=\"currentColor\" d=\"M7-24.9c9.4-9.4 24.6-9.4 33.9 0L130.1 64.2 274.7 2.9C278.8 1 283.4 0 288 0s9.2 1 13.4 2.9L489.7 82.8c22 9.3 38.4 31 38.3 57.2-.3 64.1-17.4 162.4-75.9 246.3L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9z\"/>`,\n },\n 'shield': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type ShieldIconName = keyof typeof shieldIcons;\n","export const uiIcons = {\n 'asterisk': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'door': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M152 216l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-32l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 32l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"/><path fill=\"currentColor\" d=\"M340.5 108.6l35.1-52.6c7.1-10.7 21.5-14 31.8-6.4 20.6 15.1 38.8 33.3 54.1 53.8 7.8 10.5 4.3 25.3-6.9 32.2l-54.1 33.8c-11.4 7.1-26.3 3.3-35.1-6.9-5.5-6.4-11.5-12.3-18-17.7-10.8-8.9-14.8-24.6-7-36.2zM315.6 7c15.1 3.6 20.8 21.2 12.2 34.1l-40 60c-5.2 7.8-14.5 11.7-23.9 11.2-5.2-.3-10.6-.3-15.8 0-9.4 .5-18.7-3.4-23.9-11.2l-40-60c-8.6-12.9-2.9-30.5 12.2-34.1 19.1-4.6 39.1-7 59.6-7s40.4 2.4 59.6 7zM57.4 135.5c-11.2-7-14.7-21.7-6.9-32.2 15.3-20.5 33.5-38.6 54.1-53.8 10.4-7.6 24.7-4.3 31.8 6.4l35.1 52.6c7.8 11.6 3.8 27.3-7 36.2-6.5 5.4-12.5 11.3-18 17.7-8.7 10.2-23.6 14-35.1 6.9L57.4 135.5zM112 256l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-21.2 2.6-41.8 7.5-61.6 3.6-14.7 20.7-20.5 33.6-12.5l59.7 37.3c8.4 5.3 12.6 15.2 11.8 25.1-.3 3.8-.5 7.7-.5 11.6zm299.3-36.8L471 182c12.9-8 29.9-2.3 33.6 12.5 4.9 19.7 7.5 40.3 7.5 61.6l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-3.9-.2-7.8-.5-11.6-.8-9.9 3.3-19.9 11.8-25.1zM112 376l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24L0 376c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24zm400 0l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24z\"/>`,\n },\n 'flag': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 247.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 352 64 48z\"/><path fill=\"currentColor\" d=\"M32 0C49.7 0 64 14.3 64 32l0 448c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0z\"/>`,\n },\n 'gear': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M208.3 256a47.7 47.7 0 1 0 95.4 0 47.7 47.7 0 1 0 -95.4 0z\"/><path fill=\"currentColor\" d=\"M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 352a96 96 0 1 0 -.6-192 96 96 0 1 0 .6 192z\"/>`,\n },\n 'house': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M48 267.7c2-1.2 4-2.6 5.8-4.3L256 75.7 458.2 263.4c1.8 1.7 3.7 3.1 5.8 4.3L464 448c0 35.3-28.7 64-64 64l-80 0 0-128c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 128-80 0c-35.3 0-64-28.7-64-64l0-180.3z\"/><path fill=\"currentColor\" d=\"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-13 12-13.7 32.3-1.7 45.2s32.3 13.7 45.2 1.7L256 75.7 458.2 263.4c13 12 33.2 11.3 45.2-1.7s11.3-33.2-1.7-45.2l-224-208zM240 336c-26.5 0-48 21.5-48 48l0 128 128 0 0-128c0-26.5-21.5-48-48-48l-32 0z\"/>`,\n },\n 'key-skeleton': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3 137.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 86.1-86.1c-18.3-11.5-33.8-27-45.3-45.3L9.4 393.4z\"/><path fill=\"currentColor\" d=\"M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"/>`,\n },\n 'key': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 408l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7L282.3 343.7 168.3 229.7 7 391c-4.5 4.5-7 10.6-7 17z\"/><path fill=\"currentColor\" d=\"M168.3 229.7L282.3 343.7c16.9 5.4 35 8.3 53.7 8.3 97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7zM336 136a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"/>`,\n },\n 'language': {\n category: 'ui',\n viewBox: '0 0 576 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M258.8 467c58.2-131 80.2-180.5 128-288 5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2zm106.9-83L466.3 384 416 270.8 365.7 384z\"/><path fill=\"currentColor\" d=\"M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4-26 58.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L71.4 212.5c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l20.3 24.4c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32z\"/>`,\n },\n 'lock-keyhole': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM216 296l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"/>`,\n },\n 'lock': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\"/>`,\n },\n 'moon': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'search': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 208a144 144 0 1 0 288 0 144 144 0 1 0 -288 0z\"/><path fill=\"currentColor\" d=\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"/>`,\n },\n 'sun': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24zM75 75c9.4-9.4 24.6-9.4 33.9 0l39.6 39.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L75 108.9c-9.4-9.4-9.4-24.6 0-33.9zm0 328.1l39.6-39.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L108.9 437c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM232 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zm0 408c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zM363.5 114.6L403.1 75c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39.6 39.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zm0 248.9c9.4-9.4 24.6-9.4 33.9 0L437 403.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39.6-39.6c-9.4-9.4-9.4-24.6 0-33.9zM408 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24z\"/><path fill=\"currentColor\" d=\"M144 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z\"/>`,\n },\n 'unlock-keyhole': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM232 360l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"/>`,\n },\n 'unlock': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M0 224c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224z\"/>`,\n },\n 'user': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path fill=\"currentColor\" d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\"/>`,\n },\n} as const;\n\nexport type UiIconName = keyof typeof uiIcons;\n","import { arrowsIcons } from './arrows';\nimport { barsIcons } from './bars';\nimport { chevronIcons } from './chevron';\nimport { lettersIcons } from './letters';\nimport { shieldIcons } from './shield';\nimport { uiIcons } from './ui';\n\nexport const iconCatalog = {\n ...arrowsIcons,\n ...barsIcons,\n ...chevronIcons,\n ...lettersIcons,\n ...shieldIcons,\n ...uiIcons,\n} as const;\n\nexport type IconName = keyof typeof iconCatalog;\n\nexport const iconsByCategory = {\n 'arrows': ['arrow-down', 'arrow-left'],\n 'bars': ['bars-filter', 'bars-sort', 'bars-staggered', 'bars'],\n 'chevron': ['chevron-down', 'chevron-left'],\n 'letters': ['a', 'ain'],\n 'shield': ['shield-check', 'shield-exclamation', 'shield-halved', 'shield-minus', 'shield-slash', 'shield'],\n 'ui': ['asterisk', 'door', 'flag', 'gear', 'house', 'key-skeleton', 'key', 'language', 'lock-keyhole', 'lock', 'moon', 'search', 'sun', 'unlock-keyhole', 'unlock', 'user'],\n} as const;\n","// src/kit/icon.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { JSXElement } from '@minejs/jsx';\r\n import { IconProps, iconCatalog, type IconName } from '../types';\r\n import { iconsByCategory } from './categories';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n export const sizeMap: Record<string, string> = {\r\n xs : '0.75rem',\r\n sm : '1rem',\r\n md : '1.25rem',\r\n lg : '1.5rem',\r\n xl : '2rem',\r\n 'xxl' : '2.5rem'\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n /**\r\n * Icon Component\r\n * Renders inline SVG icons with various options\r\n *\r\n * @example\r\n * Icon('check')\r\n * Icon({ name: 'spinner', spin: true, size: 'lg' })\r\n */\r\n export function Icon(props: IconProps) : JSXElement | null {\r\n\r\n interface IconLikeConfig {\r\n name? : string\r\n size? : number | string\r\n color? : string\r\n svg? : string\r\n viewBox? : string\r\n }\r\n\r\n const config = typeof props === 'string' ? { name: props } : props;\r\n const cfg = config as IconLikeConfig;\r\n\r\n let iconData: { viewBox: string; svg: string } | null = null;\r\n\r\n if (cfg.name && cfg.name in iconCatalog) {\r\n iconData = iconCatalog[cfg.name as IconName] as { viewBox: string; svg: string };\r\n } else if (cfg.svg) {\r\n iconData = {\r\n viewBox : cfg.viewBox || '0 0 24 24',\r\n svg : cfg.svg\r\n };\r\n }\r\n\r\n if (!iconData) {\r\n if (cfg.name) {\r\n console.warn(`Icon \"${cfg.name}\" not found in catalog`);\r\n } else {\r\n console.warn('Icon configuration is invalid');\r\n }\r\n return null;\r\n }\r\n\r\n const sizeValue = cfg.size;\r\n\r\n const size = typeof sizeValue === 'number'\r\n ? `${sizeValue}px`\r\n : sizeMap[sizeValue || 'md'];\r\n\r\n const style: Record<string, string> = {\r\n width : size,\r\n height : size,\r\n display : 'inline-block',\r\n verticalAlign : 'middle',\r\n lineHeight : '1',\r\n flexShrink : '0'\r\n };\r\n\r\n if (cfg.color) style.color = cfg.color;\r\n\r\n return (\r\n <svg\r\n style = {style}\r\n viewBox = {iconData.viewBox}\r\n fill = \"currentColor\"\r\n xmlns = \"http://www.w3.org/2000/svg\"\r\n aria-hidden = \"true\"\r\n role = \"img\"\r\n dangerouslySetInnerHTML = {{\r\n __html : iconData.svg\r\n }}\r\n />\r\n );\r\n }\r\n\r\n /**\r\n * Utility function to check if an icon exists\r\n */\r\n export function iconExists(name: string): name is IconName {\r\n return name in iconCatalog;\r\n }\r\n\r\n /**\r\n * Get all available icon names\r\n */\r\n export function getIconNames(): IconName[] {\r\n return Object.keys(iconCatalog) as IconName[];\r\n }\r\n\r\n /**\r\n * Get icons by category\r\n */\r\n export function getIconsByCategory(category: string): IconName[] {\r\n return (iconsByCategory[category as keyof typeof iconsByCategory] || []) as unknown as IconName[];\r\n }\r\n\r\n /**\r\n * Get all available categories\r\n */\r\n export function getIconCategories(): string[] {\r\n return Object.keys(iconsByCategory);\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n","// src/kit/button.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import type { JSXElement } from '@minejs/jsx';\r\n import { Container } from '@cruxkit/container';\r\n import { Text } from '@cruxkit/text';\r\n import { Icon, type IconProps, type IconName, type IconConfig } from '@cruxkit/icon';\r\n import type { ButtonProps, ButtonSize, ButtonColor, ButtonVariant } from '../types';\r\n import { t } from '@cruxjs/client';\r\n \r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n const sizePaddingMap: Record<ButtonSize, { px: 3 | 4 | 6; py: 1 | 2 | 3 }> = {\r\n sm: { px: 3, py: 1 },\r\n md: { px: 4, py: 2 },\r\n lg: { px: 6, py: 3 }\r\n };\r\n\r\n const sizeGapMap: Record<ButtonSize, 1 | 2> = {\r\n sm: 1,\r\n md: 2,\r\n lg: 2\r\n };\r\n\r\n const labelSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const iconSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const variantClasses: Record<ButtonVariant, Record<ButtonColor, string[]>> = {\r\n solid: {\r\n brand: [\r\n 'bg-brand',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-hover',\r\n 'active:bg-brand-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n success: [\r\n 'bg-success',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-hover',\r\n 'active:bg-success-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n warning: [\r\n 'bg-warning',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-hover',\r\n 'active:bg-warning-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n error: [\r\n 'bg-error',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-hover',\r\n 'active:bg-error-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n neutral: [\r\n 'bg-surface',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ]\r\n },\r\n outline: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-brand',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-success',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-warning',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-error',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n ghost: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n link: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ]\r\n }\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n const mountedElements = new WeakSet<HTMLElement>();\r\n const loadedElements = new WeakSet<HTMLElement>();\r\n const translatedElements = new WeakSet<HTMLElement>();\r\n const MAX_TRANSLATION_ATTEMPTS = 5;\r\n const TRANSLATION_RETRY_DELAY_MS = 100;\r\n\r\n type ButtonContainerProps = {\r\n as?: unknown;\r\n display?: string;\r\n align?: string;\r\n justify?: string;\r\n gap?: number;\r\n px?: number;\r\n py?: number;\r\n radius?: string;\r\n className?: string;\r\n ref?: (element: HTMLElement | null) => void;\r\n } & Record<string, unknown>;\r\n\r\n function renderIcon(icon: IconProps | IconName | undefined, size: ButtonSize): JSXElement | null {\r\n if (!icon) return null;\r\n\r\n const iconSize = iconSizeMap[size];\r\n\r\n if (typeof icon === 'string') {\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n <Icon name={icon as IconName} size={iconSize} />\r\n </span>\r\n );\r\n }\r\n\r\n const resolvedSize = ((icon as IconProps) as IconConfig).size ?? iconSize;\r\n\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n <Icon {...icon} size={resolvedSize} />\r\n </span>\r\n );\r\n }\r\n\r\n /**\r\n * A polymorphic button component that supports multiple variants, colors, sizes, and states.\r\n *\r\n * @param props - The properties for the Button component.\r\n * @param props.variant - Visual style variant: `'solid' | 'outline' | 'ghost' | 'link'`.\r\n * @param props.color - Color theme: `'brand' | 'success' | 'warning' | 'error' | 'neutral'`.\r\n * @param props.size - Size scale: `'sm' | 'md' | 'lg'`.\r\n * @param props.fullWidth - Whether the button spans the full width of its container.\r\n * @param props.disabled - Whether the button is disabled.\r\n * @param props.loading - Whether the button is in a loading state (disables interaction).\r\n * @param props.leftIcon - Optional icon placed to the left of the label (string name or IconProps).\r\n * @param props.rightIcon - Optional icon placed to the right of the label (string name or IconProps).\r\n * @param props.as - Element type to render: `'button' | 'a' | any polymorphic component`.\r\n * @param props.children - Button label content.\r\n * @param props.className - Additional CSS classes appended to the built-in styles.\r\n * @param props.type - HTML button type attribute (only applied when `as=\"button\"`).\r\n * @param props.restProps - Any other props are forwarded to the underlying element.\r\n *\r\n * @returns A JSX element representing the styled button.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Button variant=\"solid\" color=\"brand\" size=\"md\" onClick={handleClick}>\r\n * Save\r\n * </Button>\r\n * ```\r\n */\r\n export function Button(props: ButtonProps): JSXElement {\r\n const {\r\n variant = 'solid',\r\n color = 'brand',\r\n size = 'md',\r\n fullWidth = false,\r\n disabled = false,\r\n loading = false,\r\n leftIcon,\r\n rightIcon,\r\n as = 'button',\r\n text,\r\n children,\r\n className,\r\n type = 'button',\r\n onMount,\r\n onLoad,\r\n ...restProps\r\n } = props;\r\n\r\n const baseClasses = [\r\n 'inline-flex',\r\n 'items-center',\r\n 'justify-center',\r\n 'font-medium',\r\n 'transition-all',\r\n 'duration-150',\r\n 'select-none',\r\n 'focus:outline-none',\r\n 'focus-visible:ring',\r\n 'focus-visible:ring-offset-2'\r\n ];\r\n\r\n const stateClasses = [];\r\n\r\n if (loading || disabled) {\r\n stateClasses.push('opacity-50', 'cursor-not-allowed', 'pointer-events-none');\r\n }\r\n\r\n if (fullWidth) {\r\n stateClasses.push('w-full');\r\n }\r\n\r\n const paletteClasses = variantClasses[variant][color];\r\n\r\n const classes = [\r\n ...baseClasses,\r\n ...stateClasses,\r\n ...paletteClasses,\r\n className\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const padding = sizePaddingMap[size];\r\n const gap = sizeGapMap[size];\r\n const labelSize = labelSizeMap[size];\r\n\r\n const content: JSXElement[] = [];\r\n\r\n const left = renderIcon(leftIcon, size);\r\n const right = renderIcon(rightIcon, size);\r\n\r\n if (left) {\r\n content.push(left);\r\n }\r\n\r\n const isKeyLikeText = typeof text === 'string' && text.includes('.');\r\n const label = children ?? (isKeyLikeText ? '--' : text);\r\n\r\n if (label !== undefined && label !== null && label !== '') {\r\n content.push(\r\n <Text as=\"span\" size={labelSize} data-role=\"btn-label\" className='flex items-center'>\r\n {label}\r\n </Text>\r\n );\r\n }\r\n\r\n if (right) {\r\n content.push(right);\r\n }\r\n\r\n const elementType = as;\r\n\r\n const elementTypeProps =\r\n elementType === 'button'\r\n ? { type }\r\n : {};\r\n\r\n const shouldTranslate = isKeyLikeText;\r\n\r\n const handleRef =\r\n (onMount || onLoad || shouldTranslate)\r\n ? (element: HTMLElement | null) => {\r\n if (!element) return;\r\n\r\n if (onMount && !mountedElements.has(element)) {\r\n mountedElements.add(element);\r\n onMount(element);\r\n }\r\n\r\n if (onLoad && !loadedElements.has(element)) {\r\n loadedElements.add(element);\r\n\r\n const runLoad = () => {\r\n onLoad(element);\r\n };\r\n\r\n if (typeof requestAnimationFrame === 'function') {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(runLoad);\r\n });\r\n } else {\r\n setTimeout(runLoad, 0);\r\n }\r\n }\r\n\r\n if (shouldTranslate && !translatedElements.has(element)) {\r\n const schedule = (fn: () => void) => {\r\n if (typeof queueMicrotask === 'function') {\r\n queueMicrotask(fn);\r\n } else {\r\n setTimeout(fn, 0);\r\n }\r\n };\r\n\r\n const attemptTranslate = (attempt: number) => {\r\n const labelNode = element.querySelector('[data-role=\\\"btn-label\\\"]');\r\n\r\n if (!labelNode || typeof text !== 'string') return;\r\n\r\n let translated = t(text as string, undefined, '--');\r\n\r\n if (translated !== text && translated !== '--' || attempt >= MAX_TRANSLATION_ATTEMPTS) {\r\n (labelNode as HTMLElement).textContent = String(translated);\r\n translatedElements.add(element);\r\n return;\r\n }\r\n\r\n setTimeout(\r\n () => {\r\n attemptTranslate(attempt + 1);\r\n },\r\n TRANSLATION_RETRY_DELAY_MS\r\n );\r\n };\r\n\r\n schedule(() => {\r\n attemptTranslate(0);\r\n });\r\n }\r\n }\r\n : undefined;\r\n\r\n const containerProps: ButtonContainerProps = {\r\n as,\r\n display : 'inline-flex',\r\n align : 'center',\r\n justify : 'center',\r\n gap,\r\n px : padding.px,\r\n py : padding.py,\r\n radius : 'md',\r\n className : classes,\r\n ...elementTypeProps,\r\n ...restProps\r\n };\r\n\r\n if (handleRef) {\r\n containerProps.ref = handleRef;\r\n }\r\n\r\n return (\r\n <Container {...(containerProps as Record<string, unknown>)}>\r\n {content}\r\n </Container>\r\n );\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JSXElement } from '@minejs/jsx';
|
|
2
2
|
import { ContainerAs } from '@cruxkit/container';
|
|
3
|
+
import { IconProps, IconName } from '@cruxkit/icon';
|
|
3
4
|
|
|
4
5
|
type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
|
|
5
6
|
type ButtonColor = 'brand' | 'success' | 'warning' | 'error' | 'neutral';
|
|
@@ -11,9 +12,8 @@ interface ButtonProps {
|
|
|
11
12
|
fullWidth?: boolean;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
loading?: boolean;
|
|
14
|
-
leftIcon?:
|
|
15
|
-
rightIcon?:
|
|
16
|
-
icon?: JSXElement;
|
|
15
|
+
leftIcon?: IconProps | IconName;
|
|
16
|
+
rightIcon?: IconProps | IconName;
|
|
17
17
|
as?: ContainerAs;
|
|
18
18
|
text?: string | number;
|
|
19
19
|
children?: JSXElement | string | number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { JSXElement } from '@minejs/jsx';
|
|
2
2
|
import { ContainerAs } from '@cruxkit/container';
|
|
3
|
+
import { IconProps, IconName } from '@cruxkit/icon';
|
|
3
4
|
|
|
4
5
|
type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link';
|
|
5
6
|
type ButtonColor = 'brand' | 'success' | 'warning' | 'error' | 'neutral';
|
|
@@ -11,9 +12,8 @@ interface ButtonProps {
|
|
|
11
12
|
fullWidth?: boolean;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
loading?: boolean;
|
|
14
|
-
leftIcon?:
|
|
15
|
-
rightIcon?:
|
|
16
|
-
icon?: JSXElement;
|
|
15
|
+
leftIcon?: IconProps | IconName;
|
|
16
|
+
rightIcon?: IconProps | IconName;
|
|
17
17
|
as?: ContainerAs;
|
|
18
18
|
text?: string | number;
|
|
19
19
|
children?: JSXElement | string | number;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import {Container}from'@cruxkit/container';import {Text}from'@cruxkit/text';import {t}from'@cruxjs/client';import {jsx}from'@minejs/jsx/jsx-runtime';var K={sm:{px:3,py:1},md:{px:4,py:2},lg:{px:6,py:3}},Q={sm:1,md:2,lg:2},U={sm:"sm",md:"md",lg:"lg"};var Z={solid:{brand:["bg-brand","text-inverse","border","border-transparent","hover:bg-brand-hover","active:bg-brand-active","active:scale-95","shadow-sm","hover:shadow-md"],success:["bg-success","text-inverse","border","border-transparent","hover:bg-success-hover","active:bg-success-active","active:scale-95","shadow-sm","hover:shadow-md"],warning:["bg-warning","text-inverse","border","border-transparent","hover:bg-warning-hover","active:bg-warning-active","active:scale-95","shadow-sm","hover:shadow-md"],error:["bg-error","text-inverse","border","border-transparent","hover:bg-error-hover","active:bg-error-active","active:scale-95","shadow-sm","hover:shadow-md"],neutral:["bg-surface","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95","shadow-sm","hover:shadow-md"]},outline:{brand:["bg-transparent","text-brand","border","border-brand","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-success","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-warning","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-error","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95"]},ghost:{brand:["bg-transparent","text-brand","border","border-transparent","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-transparent","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-transparent","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-transparent","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-transparent","hover:bg-raised","active:bg-tertiary","active:scale-95"]},link:{brand:["bg-transparent","text-brand","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],success:["bg-transparent","text-success","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],warning:["bg-transparent","text-warning","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],error:["bg-transparent","text-error","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],neutral:["bg-transparent","text-1","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"]}},z=new WeakSet,R=new WeakSet,L=new WeakSet,$=5,ee=100;function p(a,v){return a?jsx("span",{className:"inline-flex shrink-0",children:a}):null}function ae(a){let{variant:v="solid",color:k="brand",size:r="md",fullWidth:C=false,disabled:A=false,loading:N=false,leftIcon:P,rightIcon:q,icon:m,as:f="button",text:t$1,children:H,className:I,type:X="button",onMount:c,onLoad:d,...J}=a,_=["inline-flex","items-center","justify-center","font-medium","transition-all","duration-150","select-none","focus:outline-none","focus-visible:ring","focus-visible:ring-offset-2"],l=[];(N||A)&&l.push("opacity-50","cursor-not-allowed","pointer-events-none"),C&&l.push("w-full");let W=Z[v][k],j=[..._,...l,...W,I].filter(Boolean).join(" "),b=K[r],F=Q[r],O=U[r],n=[],h=p(P),x=p(q),w=p(m);h&&n.push(h),w&&n.push(w);let y=typeof t$1=="string"&&t$1.includes("."),o=H??(y?"--":t$1);o!=null&&o!==""&&n.push(jsx(Text,{as:"span",size:O,"data-role":"btn-label",className:"flex items-center",children:o})),x&&n.push(x);let V=f==="button"?{type:X}:{},T=y,S=c||d||T?e=>{if(e){if(c&&!z.has(e)&&(z.add(e),c(e)),d&&!R.has(e)){R.add(e);let i=()=>{d(e);};typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>{requestAnimationFrame(i);}):setTimeout(i,0);}if(T&&!L.has(e)){let i=s=>{typeof queueMicrotask=="function"?queueMicrotask(s):setTimeout(s,0);},B=s=>{let M=e.querySelector('[data-role="btn-label"]');if(!M||typeof t$1!="string")return;let u=t(t$1,void 0,"--");if(u!==t$1&&u!=="--"||s>=$){M.textContent=String(u),L.add(e);return}setTimeout(()=>{B(s+1);},ee);};i(()=>{B(0);});}}}:void 0,E={as:f,display:"inline-flex",align:"center",justify:"center",gap:F,px:m?b.py:b.px,py:b.py,radius:"md",className:j,...V,...J};return S&&(E.ref=S),jsx(Container,{...E,children:n})}export{ae as Button};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {Container}from'@cruxkit/container';import {Text}from'@cruxkit/text';import {jsx}from'@minejs/jsx/jsx-runtime';import {t}from'@cruxjs/client';var Y={"arrow-down":{category:"arrows",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M160 32l0 370.7 32 32 32-32 0-370.7c0-17.7-14.3-32-32-32s-32 14.3-32 32z"/><path fill="currentColor" d="M214.6 502.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 434.7 329.4 297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160z"/>'},"arrow-left":{category:"arrows",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M77.3 256l32 32 370.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0-32 32z"/><path fill="currentColor" d="M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L77.3 256 214.6 393.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160z"/>'}},$={"bars-filter":{category:"bars",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M96 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M512 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32zM320 416c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32z"/>'},"bars-sort":{category:"bars",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM192 416c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32z"/>'},"bars-staggered":{category:"bars",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"/>'},bars:{category:"bars",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"/><path fill="currentColor" d="M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"/>'}},G={"chevron-down":{category:"chevron",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M246.6 406.6c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 338.7 393.4 169.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-192 192z"/><path fill="currentColor" d=""/>'},"chevron-left":{category:"chevron",viewBox:"0 0 320 512",svg:'<path opacity=".4" fill="currentColor" d="M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z"/><path fill="currentColor" d=""/>'}},K={a:{category:"letters",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z"/><path fill="currentColor" d=""/>'},ain:{category:"letters",viewBox:"0 0 384 512",svg:'<g transform="translate(49 38) scale(6)"><path opacity=".4" fill="currentColor" d="M25.833,5.083c0,0-3.918-5.083-9.084-5.083S3.999,10.167,3.999,17.417c0,4.333,6.584,7,6.584,7 S0,33.084,0,48.417S14,72.5,26.25,72.5c4.667,0,21.417-8.833,21.417-8.833v-0.75c0,0-6.666,0-15.583,0s-27.25-7.583-27.25-19.75 c0-16.479,20.666-20.75,20.666-20.75s1.334-1.334,3.584-4.917s3.083-5.833,3.083-5.833s-4,1.166-8,3.083S18.001,19,15.834,19 s-8.417-3.582-8.417-5.666s3.917-6.25,9.667-7.5S25.833,5.083,25.833,5.083z"/></g><path fill="currentColor" d=""/>'}},Q={"shield-check":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.4-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.3 1 260.7 0 256.1 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM166.8 293.5c-9.2-9.5-9-24.7 .6-33.9 9.5-9.2 24.7-9 33.9 .6 8.8 9.1 17.7 18.3 26.5 27.4 28.5-39.2 57.1-78.5 85.6-117.7 7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5c-34.1 46.9-68.3 93.9-102.4 140.8-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3c-15.5-16-30.9-32-46.4-48z"/><path fill="currentColor" d="M313.4 169.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L249.8 338.9c-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3l-46.4-48c-9.2-9.5-9-24.7 .6-33.9s24.7-8.9 33.9 .6l26.5 27.4 85.6-117.7z"/>'},"shield-exclamation":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.3-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L268.5 2.5c-3.8-1.6-8.1-2.5-12.2-2.5-4.4 0-8.7 .8-12.8 2.5L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM288 336a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224.7 145.7C223.4 127.5 237.8 112 256 112s32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104z"/><path fill="currentColor" d="M256 368a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.3 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104C223.4 127.5 237.8 112 256 112z"/>'},"shield-halved":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16.2 140c.5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6 9.3 .1 18.6-1.9 27.1-6 172.4-82.5 213.1-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L270.3 2.9C266.1 1 261.6 0 256.9 0l-.4 0c-5.7 .2-9.9 1.2-13.7 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2z"/><path fill="currentColor" d="M256.2 0c-4.6 0-9.2 1-13.3 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6L256.2 0z"/>'},"shield-minus":{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z"/><path fill="currentColor" d="M160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z"/>'},"shield-slash":{category:"shield",viewBox:"0 0 576 512",svg:'<path opacity=".4" fill="currentColor" d="M48 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 27.5-13.1 51.6-28.8 72.7-46.2L51 120.8c-2 6-3 12.4-3 19.2z"/><path fill="currentColor" d="M7-24.9c9.4-9.4 24.6-9.4 33.9 0L130.1 64.2 274.7 2.9C278.8 1 283.4 0 288 0s9.2 1 13.4 2.9L489.7 82.8c22 9.3 38.4 31 38.3 57.2-.3 64.1-17.4 162.4-75.9 246.3L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9z"/>'},shield:{category:"shield",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z"/><path fill="currentColor" d=""/>'}},U={asterisk:{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z"/><path fill="currentColor" d=""/>'},door:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M152 216l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-32l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 32l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24z"/><path fill="currentColor" d="M340.5 108.6l35.1-52.6c7.1-10.7 21.5-14 31.8-6.4 20.6 15.1 38.8 33.3 54.1 53.8 7.8 10.5 4.3 25.3-6.9 32.2l-54.1 33.8c-11.4 7.1-26.3 3.3-35.1-6.9-5.5-6.4-11.5-12.3-18-17.7-10.8-8.9-14.8-24.6-7-36.2zM315.6 7c15.1 3.6 20.8 21.2 12.2 34.1l-40 60c-5.2 7.8-14.5 11.7-23.9 11.2-5.2-.3-10.6-.3-15.8 0-9.4 .5-18.7-3.4-23.9-11.2l-40-60c-8.6-12.9-2.9-30.5 12.2-34.1 19.1-4.6 39.1-7 59.6-7s40.4 2.4 59.6 7zM57.4 135.5c-11.2-7-14.7-21.7-6.9-32.2 15.3-20.5 33.5-38.6 54.1-53.8 10.4-7.6 24.7-4.3 31.8 6.4l35.1 52.6c7.8 11.6 3.8 27.3-7 36.2-6.5 5.4-12.5 11.3-18 17.7-8.7 10.2-23.6 14-35.1 6.9L57.4 135.5zM112 256l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-21.2 2.6-41.8 7.5-61.6 3.6-14.7 20.7-20.5 33.6-12.5l59.7 37.3c8.4 5.3 12.6 15.2 11.8 25.1-.3 3.8-.5 7.7-.5 11.6zm299.3-36.8L471 182c12.9-8 29.9-2.3 33.6 12.5 4.9 19.7 7.5 40.3 7.5 61.6l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-3.9-.2-7.8-.5-11.6-.8-9.9 3.3-19.9 11.8-25.1zM112 376l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24L0 376c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24zm400 0l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24z"/>'},flag:{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M64 48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 247.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 352 64 48z"/><path fill="currentColor" d="M32 0C49.7 0 64 14.3 64 32l0 448c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0z"/>'},gear:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M208.3 256a47.7 47.7 0 1 0 95.4 0 47.7 47.7 0 1 0 -95.4 0z"/><path fill="currentColor" d="M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 352a96 96 0 1 0 -.6-192 96 96 0 1 0 .6 192z"/>'},house:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M48 267.7c2-1.2 4-2.6 5.8-4.3L256 75.7 458.2 263.4c1.8 1.7 3.7 3.1 5.8 4.3L464 448c0 35.3-28.7 64-64 64l-80 0 0-128c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 128-80 0c-35.3 0-64-28.7-64-64l0-180.3z"/><path fill="currentColor" d="M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-13 12-13.7 32.3-1.7 45.2s32.3 13.7 45.2 1.7L256 75.7 458.2 263.4c13 12 33.2 11.3 45.2-1.7s11.3-33.2-1.7-45.2l-224-208zM240 336c-26.5 0-48 21.5-48 48l0 128 128 0 0-128c0-26.5-21.5-48-48-48l-32 0z"/>'},"key-skeleton":{category:"ui",viewBox:"0 0 448 512",svg:'<path opacity=".4" fill="currentColor" d="M9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3 137.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 86.1-86.1c-18.3-11.5-33.8-27-45.3-45.3L9.4 393.4z"/><path fill="currentColor" d="M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/>'},key:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M0 408l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7L282.3 343.7 168.3 229.7 7 391c-4.5 4.5-7 10.6-7 17z"/><path fill="currentColor" d="M168.3 229.7L282.3 343.7c16.9 5.4 35 8.3 53.7 8.3 97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7zM336 136a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z"/>'},language:{category:"ui",viewBox:"0 0 576 512",svg:'<path opacity=".4" fill="currentColor" d="M258.8 467c58.2-131 80.2-180.5 128-288 5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2zm106.9-83L466.3 384 416 270.8 365.7 384z"/><path fill="currentColor" d="M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4-26 58.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L71.4 212.5c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l20.3 24.4c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32z"/>'},"lock-keyhole":{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z"/><path fill="currentColor" d="M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM216 296l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z"/>'},lock:{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z"/><path fill="currentColor" d="M64 160l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z"/>'},moon:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z"/><path fill="currentColor" d=""/>'},search:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M64 208a144 144 0 1 0 288 0 144 144 0 1 0 -288 0z"/><path fill="currentColor" d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"/>'},sun:{category:"ui",viewBox:"0 0 512 512",svg:'<path opacity=".4" fill="currentColor" d="M0 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24zM75 75c9.4-9.4 24.6-9.4 33.9 0l39.6 39.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L75 108.9c-9.4-9.4-9.4-24.6 0-33.9zm0 328.1l39.6-39.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L108.9 437c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM232 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zm0 408c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zM363.5 114.6L403.1 75c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39.6 39.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zm0 248.9c9.4-9.4 24.6-9.4 33.9 0L437 403.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39.6-39.6c-9.4-9.4-9.4-24.6 0-33.9zM408 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24z"/><path fill="currentColor" d="M144 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z"/>'},"unlock-keyhole":{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z"/><path fill="currentColor" d="M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM232 360l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z"/>'},unlock:{category:"ui",viewBox:"0 0 384 512",svg:'<path opacity=".4" fill="currentColor" d="M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z"/><path fill="currentColor" d="M0 224c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224z"/>'},user:{category:"ui",viewBox:"0 0 448 512",svg:'<path fill="currentColor" d="M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z"/>'}},k={...Y,...$,...G,...K,...Q,...U};var Z={xs:"0.75rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"2rem",xxl:"2.5rem"};function b(r){let e=typeof r=="string"?{name:r}:r,o=null;if(e.name&&e.name in k?o=k[e.name]:e.svg&&(o={viewBox:e.viewBox||"0 0 24 24",svg:e.svg}),!o)return e.name?console.warn(`Icon "${e.name}" not found in catalog`):console.warn("Icon configuration is invalid"),null;let t=e.size,n=typeof t=="number"?`${t}px`:Z[t||"md"],i={width:n,height:n,display:"inline-block",verticalAlign:"middle",lineHeight:"1",flexShrink:"0"};return e.color&&(i.color=e.color),jsx("svg",{style:i,viewBox:o.viewBox,fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",dangerouslySetInnerHTML:{__html:o.svg}})}var o2={sm:{px:3,py:1},md:{px:4,py:2},lg:{px:6,py:3}},c2={sm:1,md:2,lg:2},l2={sm:"sm",md:"md",lg:"lg"},s2={sm:"sm",md:"md",lg:"lg"},a2={solid:{brand:["bg-brand","text-inverse","border","border-transparent","hover:bg-brand-hover","active:bg-brand-active","active:scale-95","shadow-sm","hover:shadow-md"],success:["bg-success","text-inverse","border","border-transparent","hover:bg-success-hover","active:bg-success-active","active:scale-95","shadow-sm","hover:shadow-md"],warning:["bg-warning","text-inverse","border","border-transparent","hover:bg-warning-hover","active:bg-warning-active","active:scale-95","shadow-sm","hover:shadow-md"],error:["bg-error","text-inverse","border","border-transparent","hover:bg-error-hover","active:bg-error-active","active:scale-95","shadow-sm","hover:shadow-md"],neutral:["bg-surface","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95","shadow-sm","hover:shadow-md"]},outline:{brand:["bg-transparent","text-brand","border","border-brand","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-success","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-warning","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-error","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-1","hover:bg-raised","active:bg-tertiary","active:scale-95"]},ghost:{brand:["bg-transparent","text-brand","border","border-transparent","hover:bg-brand-subtle","active:bg-brand-subtle","active:scale-95"],success:["bg-transparent","text-success","border","border-transparent","hover:bg-success-subtle","active:bg-success-subtle","active:scale-95"],warning:["bg-transparent","text-warning","border","border-transparent","hover:bg-warning-subtle","active:bg-warning-subtle","active:scale-95"],error:["bg-transparent","text-error","border","border-transparent","hover:bg-error-subtle","active:bg-error-subtle","active:scale-95"],neutral:["bg-transparent","text-1","border","border-transparent","hover:bg-raised","active:bg-tertiary","active:scale-95"]},link:{brand:["bg-transparent","text-brand","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],success:["bg-transparent","text-success","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],warning:["bg-transparent","text-warning","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],error:["bg-transparent","text-error","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"],neutral:["bg-transparent","text-1","border","border-transparent","hover:underline","underline-offset-4","decoration-2","px-1"]}},T=new WeakSet,I=new WeakSet,E=new WeakSet,n2=5,i2=100;function N(r,e){if(!r)return null;let o=s2[e];if(typeof r=="string")return jsx("span",{className:"inline-flex shrink-0",children:jsx(b,{name:r,size:o})});let t=r.size??o;return jsx("span",{className:"inline-flex shrink-0",children:jsx(b,{...r,size:t})})}function b2(r){let{variant:e="solid",color:o="brand",size:t$1="md",fullWidth:n=false,disabled:i=false,loading:R=false,leftIcon:P,rightIcon:A,as:m="button",text:l,children:H,className:_,type:j="button",onMount:g,onLoad:h,...q}=r,X=["inline-flex","items-center","justify-center","font-medium","transition-all","duration-150","select-none","focus:outline-none","focus-visible:ring","focus-visible:ring-offset-2"],v=[];(R||i)&&v.push("opacity-50","cursor-not-allowed","pointer-events-none"),n&&v.push("w-full");let J=a2[e][o],O=[...X,...v,...J,_].filter(Boolean).join(" "),y=o2[t$1],W=c2[t$1],F=l2[t$1],d=[],z=N(P,t$1),C=N(A,t$1);z&&d.push(z);let M=typeof l=="string"&&l.includes("."),u=H??(M?"--":l);u!=null&&u!==""&&d.push(jsx(Text,{as:"span",size:F,"data-role":"btn-label",className:"flex items-center",children:u})),C&&d.push(C);let D=m==="button"?{type:j}:{},x=M,w=g||h||x?c=>{if(c){if(g&&!T.has(c)&&(T.add(c),g(c)),h&&!I.has(c)){I.add(c);let p=()=>{h(c);};typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>{requestAnimationFrame(p);}):setTimeout(p,0);}if(x&&!E.has(c)){let p=a=>{typeof queueMicrotask=="function"?queueMicrotask(a):setTimeout(a,0);},B=a=>{let S=c.querySelector('[data-role="btn-label"]');if(!S||typeof l!="string")return;let f=t(l,void 0,"--");if(f!==l&&f!=="--"||a>=n2){S.textContent=String(f),E.add(c);return}setTimeout(()=>{B(a+1);},i2);};p(()=>{B(0);});}}}:void 0,L={as:m,display:"inline-flex",align:"center",justify:"center",gap:W,px:y.px,py:y.py,radius:"md",className:O,...D,...q};return w&&(L.ref=w),jsx(Container,{...L,children:d})}
|
|
2
|
+
export{b2 as Button};//# sourceMappingURL=index.js.map
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/kit/button.tsx"],"names":["sizePaddingMap","sizeGapMap","labelSizeMap","variantClasses","mountedElements","loadedElements","translatedElements","MAX_TRANSLATION_ATTEMPTS","TRANSLATION_RETRY_DELAY_MS","renderIcon","icon","size","jsx","Button","props","variant","color","fullWidth","disabled","loading","leftIcon","rightIcon","as","text","children","className","type","onMount","onLoad","restProps","baseClasses","stateClasses","paletteClasses","classes","padding","gap","labelSize","content","left","right","centerIcon","isKeyLikeText","label","Text","elementTypeProps","shouldTranslate","handleRef","element","runLoad","schedule","fn","attemptTranslate","attempt","labelNode","translated","t","containerProps","Container"],"mappings":"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","file":"index.js","sourcesContent":["// src/kit/button.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import type { JSXElement } from '@minejs/jsx';\r\n import { Container } from '@cruxkit/container';\r\n import { Text } from '@cruxkit/text';\r\n import type { ButtonProps, ButtonSize, ButtonColor, ButtonVariant } from '../types';\r\n import { t } from '@cruxjs/client';\r\n \r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n const sizePaddingMap: Record<ButtonSize, { px: 3 | 4 | 6; py: 1 | 2 | 3 }> = {\r\n sm: { px: 3, py: 1 },\r\n md: { px: 4, py: 2 },\r\n lg: { px: 6, py: 3 }\r\n };\r\n\r\n const sizeGapMap: Record<ButtonSize, 1 | 2> = {\r\n sm: 1,\r\n md: 2,\r\n lg: 2\r\n };\r\n\r\n const labelSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const iconSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const variantClasses: Record<ButtonVariant, Record<ButtonColor, string[]>> = {\r\n solid: {\r\n brand: [\r\n 'bg-brand',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-hover',\r\n 'active:bg-brand-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n success: [\r\n 'bg-success',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-hover',\r\n 'active:bg-success-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n warning: [\r\n 'bg-warning',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-hover',\r\n 'active:bg-warning-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n error: [\r\n 'bg-error',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-hover',\r\n 'active:bg-error-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n neutral: [\r\n 'bg-surface',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ]\r\n },\r\n outline: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-brand',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-success',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-warning',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-error',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n ghost: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n link: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ]\r\n }\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n const mountedElements = new WeakSet<HTMLElement>();\r\n const loadedElements = new WeakSet<HTMLElement>();\r\n const translatedElements = new WeakSet<HTMLElement>();\r\n const MAX_TRANSLATION_ATTEMPTS = 5;\r\n const TRANSLATION_RETRY_DELAY_MS = 100;\r\n\r\n type ButtonContainerProps = {\r\n as?: unknown;\r\n display?: string;\r\n align?: string;\r\n justify?: string;\r\n gap?: number;\r\n px?: number;\r\n py?: number;\r\n radius?: string;\r\n className?: string;\r\n ref?: (element: HTMLElement | null) => void;\r\n } & Record<string, unknown>;\r\n\r\n function renderIcon(icon: JSXElement | undefined, size: ButtonSize): JSXElement | null {\r\n if (!icon) return null;\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n {icon}\r\n </span>\r\n );\r\n }\r\n\r\n /**\r\n * A polymorphic button component that supports multiple variants, colors, sizes, and states.\r\n *\r\n * @param props - The properties for the Button component.\r\n * @param props.variant - Visual style variant: `'solid' | 'outline' | 'ghost' | 'link'`.\r\n * @param props.color - Color theme: `'brand' | 'success' | 'warning' | 'error' | 'neutral'`.\r\n * @param props.size - Size scale: `'sm' | 'md' | 'lg'`.\r\n * @param props.fullWidth - Whether the button spans the full width of its container.\r\n * @param props.disabled - Whether the button is disabled.\r\n * @param props.loading - Whether the button is in a loading state (disables interaction).\r\n * @param props.leftIcon - Optional icon placed to the left of the label (string name or IconProps).\r\n * @param props.rightIcon - Optional icon placed to the right of the label (string name or IconProps).\r\n * @param props.as - Element type to render: `'button' | 'a' | any polymorphic component`.\r\n * @param props.children - Button label content.\r\n * @param props.className - Additional CSS classes appended to the built-in styles.\r\n * @param props.type - HTML button type attribute (only applied when `as=\"button\"`).\r\n * @param props.restProps - Any other props are forwarded to the underlying element.\r\n *\r\n * @returns A JSX element representing the styled button.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Button variant=\"solid\" color=\"brand\" size=\"md\" onClick={handleClick}>\r\n * Save\r\n * </Button>\r\n * ```\r\n */\r\n export function Button(props: ButtonProps): JSXElement {\r\n const {\r\n variant = 'solid',\r\n color = 'brand',\r\n size = 'md',\r\n fullWidth = false,\r\n disabled = false,\r\n loading = false,\r\n leftIcon,\r\n rightIcon,\r\n icon,\r\n as = 'button',\r\n text,\r\n children,\r\n className,\r\n type = 'button',\r\n onMount,\r\n onLoad,\r\n ...restProps\r\n } = props;\r\n\r\n const baseClasses = [\r\n 'inline-flex',\r\n 'items-center',\r\n 'justify-center',\r\n 'font-medium',\r\n 'transition-all',\r\n 'duration-150',\r\n 'select-none',\r\n 'focus:outline-none',\r\n 'focus-visible:ring',\r\n 'focus-visible:ring-offset-2'\r\n ];\r\n\r\n const stateClasses = [];\r\n\r\n if (loading || disabled) {\r\n stateClasses.push('opacity-50', 'cursor-not-allowed', 'pointer-events-none');\r\n }\r\n\r\n if (fullWidth) {\r\n stateClasses.push('w-full');\r\n }\r\n\r\n const paletteClasses = variantClasses[variant][color];\r\n\r\n const classes = [\r\n ...baseClasses,\r\n ...stateClasses,\r\n ...paletteClasses,\r\n className\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const padding = sizePaddingMap[size];\r\n const gap = sizeGapMap[size];\r\n const labelSize = labelSizeMap[size];\r\n\r\n const content: JSXElement[] = [];\r\n\r\n const left = renderIcon(leftIcon, size);\r\n const right = renderIcon(rightIcon, size);\r\n const centerIcon = renderIcon(icon, size);\r\n\r\n if (left) {\r\n content.push(left);\r\n }\r\n\r\n if (centerIcon) {\r\n content.push(centerIcon);\r\n }\r\n\r\n const isKeyLikeText = typeof text === 'string' && text.includes('.');\r\n const label = children ?? (isKeyLikeText ? '--' : text);\r\n\r\n if (label !== undefined && label !== null && label !== '') {\r\n content.push(\r\n <Text as=\"span\" size={labelSize} data-role=\"btn-label\" className='flex items-center'>\r\n {label}\r\n </Text>\r\n );\r\n }\r\n\r\n if (right) {\r\n content.push(right);\r\n }\r\n\r\n const elementType = as;\r\n\r\n const elementTypeProps =\r\n elementType === 'button'\r\n ? { type }\r\n : {};\r\n\r\n const shouldTranslate = isKeyLikeText;\r\n\r\n const handleRef =\r\n (onMount || onLoad || shouldTranslate)\r\n ? (element: HTMLElement | null) => {\r\n if (!element) return;\r\n\r\n if (onMount && !mountedElements.has(element)) {\r\n mountedElements.add(element);\r\n onMount(element);\r\n }\r\n\r\n if (onLoad && !loadedElements.has(element)) {\r\n loadedElements.add(element);\r\n\r\n const runLoad = () => {\r\n onLoad(element);\r\n };\r\n\r\n if (typeof requestAnimationFrame === 'function') {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(runLoad);\r\n });\r\n } else {\r\n setTimeout(runLoad, 0);\r\n }\r\n }\r\n\r\n if (shouldTranslate && !translatedElements.has(element)) {\r\n const schedule = (fn: () => void) => {\r\n if (typeof queueMicrotask === 'function') {\r\n queueMicrotask(fn);\r\n } else {\r\n setTimeout(fn, 0);\r\n }\r\n };\r\n\r\n const attemptTranslate = (attempt: number) => {\r\n const labelNode = element.querySelector('[data-role=\\\"btn-label\\\"]');\r\n\r\n if (!labelNode || typeof text !== 'string') return;\r\n\r\n let translated = t(text as string, undefined, '--');\r\n\r\n if (translated !== text && translated !== '--' || attempt >= MAX_TRANSLATION_ATTEMPTS) {\r\n (labelNode as HTMLElement).textContent = String(translated);\r\n translatedElements.add(element);\r\n return;\r\n }\r\n\r\n setTimeout(\r\n () => {\r\n attemptTranslate(attempt + 1);\r\n },\r\n TRANSLATION_RETRY_DELAY_MS\r\n );\r\n };\r\n\r\n schedule(() => {\r\n attemptTranslate(0);\r\n });\r\n }\r\n }\r\n : undefined;\r\n\r\n const containerProps: ButtonContainerProps = {\r\n as,\r\n display : 'inline-flex',\r\n align : 'center',\r\n justify : 'center',\r\n gap,\r\n px : icon ? padding.py : padding.px,\r\n py : padding.py,\r\n radius : 'md',\r\n className : classes,\r\n ...elementTypeProps,\r\n ...restProps\r\n };\r\n\r\n if (handleRef) {\r\n containerProps.ref = handleRef;\r\n }\r\n\r\n return (\r\n <Container {...(containerProps as Record<string, unknown>)}>\r\n {content}\r\n </Container>\r\n );\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../node_modules/@cruxkit/icon/src/kit/categories/arrows.ts","../node_modules/@cruxkit/icon/src/kit/categories/bars.ts","../node_modules/@cruxkit/icon/src/kit/categories/chevron.ts","../node_modules/@cruxkit/icon/src/kit/categories/letters.ts","../node_modules/@cruxkit/icon/src/kit/categories/shield.ts","../node_modules/@cruxkit/icon/src/kit/categories/ui.ts","../node_modules/@cruxkit/icon/src/kit/categories/index.ts","../node_modules/@cruxkit/icon/src/kit/icon.tsx","../src/kit/button.tsx"],"names":["arrowsIcons","barsIcons","chevronIcons","lettersIcons","shieldIcons","uiIcons","iconCatalog","sizeMap","Icon","props","cfg","iconData","sizeValue","size","style","jsx","sizePaddingMap","sizeGapMap","labelSizeMap","iconSizeMap","variantClasses","mountedElements","loadedElements","translatedElements","MAX_TRANSLATION_ATTEMPTS","TRANSLATION_RETRY_DELAY_MS","renderIcon","icon","iconSize","D","resolvedSize","Button","variant","color","fullWidth","disabled","loading","leftIcon","rightIcon","as","text","children","className","type","onMount","onLoad","restProps","baseClasses","stateClasses","paletteClasses","classes","padding","gap","labelSize","content","left","right","isKeyLikeText","label","Text","elementTypeProps","shouldTranslate","handleRef","element","runLoad","schedule","fn","attemptTranslate","attempt","labelNode","translated","t","containerProps","Container"],"mappings":"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","file":"index.js","sourcesContent":["export const arrowsIcons = {\n 'arrow-down': {\n category: 'arrows',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M160 32l0 370.7 32 32 32-32 0-370.7c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"/><path fill=\"currentColor\" d=\"M214.6 502.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L192 434.7 329.4 297.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160z\"/>`,\n },\n 'arrow-left': {\n category: 'arrows',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M77.3 256l32 32 370.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0-32 32z\"/><path fill=\"currentColor\" d=\"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L77.3 256 214.6 393.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-160-160z\"/>`,\n },\n} as const;\n\nexport type ArrowsIconName = keyof typeof arrowsIcons;\n","export const barsIcons = {\n 'bars-filter': {\n category: 'bars',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M96 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M512 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32zM320 416c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars-sort': {\n category: 'bars',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM192 416c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars-staggered': {\n category: 'bars',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n 'bars': {\n category: 'bars',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z\"/><path fill=\"currentColor\" d=\"M448 96c0-17.7-14.3-32-32-32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zm0 320c0-17.7-14.3-32-32-32L32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"/>`,\n },\n} as const;\n\nexport type BarsIconName = keyof typeof barsIcons;\n","export const chevronIcons = {\n 'chevron-down': {\n category: 'chevron',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M246.6 406.6c-12.5 12.5-32.8 12.5-45.3 0l-192-192c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 338.7 393.4 169.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-192 192z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'chevron-left': {\n category: 'chevron',\n viewBox: '0 0 320 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type ChevronIconName = keyof typeof chevronIcons;\n","export const lettersIcons = {\n 'a': {\n category: 'letters',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7c-93.3 224-146.7 352-160 384-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2l31.8-76.3 197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8c-13.3-32-66.7-160-160-384zM264 320l-144 0 72-172.8 72 172.8z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'ain': {\n category: 'letters',\n viewBox: '0 0 384 512',\n svg: `<g transform=\"translate(49 38) scale(6)\"><path opacity=\".4\" fill=\"currentColor\" d=\"M25.833,5.083c0,0-3.918-5.083-9.084-5.083S3.999,10.167,3.999,17.417c0,4.333,6.584,7,6.584,7 S0,33.084,0,48.417S14,72.5,26.25,72.5c4.667,0,21.417-8.833,21.417-8.833v-0.75c0,0-6.666,0-15.583,0s-27.25-7.583-27.25-19.75 c0-16.479,20.666-20.75,20.666-20.75s1.334-1.334,3.584-4.917s3.083-5.833,3.083-5.833s-4,1.166-8,3.083S18.001,19,15.834,19 s-8.417-3.582-8.417-5.666s3.917-6.25,9.667-7.5S25.833,5.083,25.833,5.083z\"/></g><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type LettersIconName = keyof typeof lettersIcons;\n","export const shieldIcons = {\n 'shield-check': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.4-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.3 1 260.7 0 256.1 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM166.8 293.5c-9.2-9.5-9-24.7 .6-33.9 9.5-9.2 24.7-9 33.9 .6 8.8 9.1 17.7 18.3 26.5 27.4 28.5-39.2 57.1-78.5 85.6-117.7 7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5c-34.1 46.9-68.3 93.9-102.4 140.8-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3c-15.5-16-30.9-32-46.4-48z\"/><path fill=\"currentColor\" d=\"M313.4 169.9c7.8-10.7 22.8-13.1 33.5-5.3s13.1 22.8 5.3 33.5L249.8 338.9c-4.2 5.7-10.7 9.4-17.8 9.8s-14-2.2-18.9-7.3l-46.4-48c-9.2-9.5-9-24.7 .6-33.9s24.7-8.9 33.9 .6l26.5 27.4 85.6-117.7z\"/>`,\n },\n 'shield-exclamation': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.7 0 172.3-82.5 213.2-263.9 213.7-363.2 .1-26.2-16.3-47.9-38.3-57.2L268.5 2.5c-3.8-1.6-8.1-2.5-12.2-2.5-4.4 0-8.7 .8-12.8 2.5L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM288 336a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM224.7 145.7C223.4 127.5 237.8 112 256 112s32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104z\"/><path fill=\"currentColor\" d=\"M256 368a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-256c18.3 0 32.7 15.5 31.4 33.7l-7.4 104c-.9 12.6-11.4 22.3-23.9 22.3s-23-9.7-23.9-22.3l-7.4-104C223.4 127.5 237.8 112 256 112z\"/>`,\n },\n 'shield-halved': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16.2 140c.5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6 9.3 .1 18.6-1.9 27.1-6 172.4-82.5 213.1-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L270.3 2.9C266.1 1 261.6 0 256.9 0l-.4 0c-5.7 .2-9.9 1.2-13.7 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2z\"/><path fill=\"currentColor\" d=\"M256.2 0c-4.6 0-9.2 1-13.3 2.9L54.5 82.8c-22 9.3-38.4 31-38.3 57.2 .5 99.2 41.3 280.7 213.6 363.2 8.3 4 17.4 6 26.4 6L256.2 0z\"/>`,\n },\n 'shield-minus': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M16 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 172.4-82.5 213.2-264 213.6-363.2 .1-26.2-16.3-47.9-38.3-57.2L269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2zM160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z\"/><path fill=\"currentColor\" d=\"M160 240c0-13.3 10.7-24 24-24l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24z\"/>`,\n },\n 'shield-slash': {\n category: 'shield',\n viewBox: '0 0 576 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M48 140c.5 99.2 41.3 280.7 213.6 363.2 16.7 8 36.1 8 52.8 0 27.5-13.1 51.6-28.8 72.7-46.2L51 120.8c-2 6-3 12.4-3 19.2z\"/><path fill=\"currentColor\" d=\"M7-24.9c9.4-9.4 24.6-9.4 33.9 0L130.1 64.2 274.7 2.9C278.8 1 283.4 0 288 0s9.2 1 13.4 2.9L489.7 82.8c22 9.3 38.4 31 38.3 57.2-.3 64.1-17.4 162.4-75.9 246.3L569 503.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 9.1C-2.3-.3-2.3-15.5 7-24.9z\"/>`,\n },\n 'shield': {\n category: 'shield',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M256 0c4.6 0 9.2 1 13.4 2.9L457.8 82.8c22 9.3 38.4 31 38.3 57.2-.5 99.2-41.3 280.7-213.6 363.2-16.7 8-36.1 8-52.8 0-172.4-82.5-213.1-264-213.6-363.2-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.9 1 251.4 0 256 0z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n} as const;\n\nexport type ShieldIconName = keyof typeof shieldIcons;\n","export const uiIcons = {\n 'asterisk': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M224 0c17.7 0 32 14.3 32 32l0 168.6 144-83.1c15.3-8.8 34.9-3.6 43.7 11.7s3.6 34.9-11.7 43.7L288 256 432 339.1c15.3 8.8 20.6 28.4 11.7 43.7s-28.4 20.6-43.7 11.7L256 311.4 256 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-168.6-144 83.1c-15.3 8.8-34.9 3.6-43.7-11.7S.7 348 16 339.1L160 256 16 172.9C.7 164-4.5 144.5 4.3 129.1S32.7 108.6 48 117.4L192 200.6 192 32c0-17.7 14.3-32 32-32z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'door': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M152 216l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-32l0 304c0 13.3 10.7 24 24 24s24-10.7 24-24l0-304c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 32l0 272c0 13.3 10.7 24 24 24s24-10.7 24-24l0-272c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"/><path fill=\"currentColor\" d=\"M340.5 108.6l35.1-52.6c7.1-10.7 21.5-14 31.8-6.4 20.6 15.1 38.8 33.3 54.1 53.8 7.8 10.5 4.3 25.3-6.9 32.2l-54.1 33.8c-11.4 7.1-26.3 3.3-35.1-6.9-5.5-6.4-11.5-12.3-18-17.7-10.8-8.9-14.8-24.6-7-36.2zM315.6 7c15.1 3.6 20.8 21.2 12.2 34.1l-40 60c-5.2 7.8-14.5 11.7-23.9 11.2-5.2-.3-10.6-.3-15.8 0-9.4 .5-18.7-3.4-23.9-11.2l-40-60c-8.6-12.9-2.9-30.5 12.2-34.1 19.1-4.6 39.1-7 59.6-7s40.4 2.4 59.6 7zM57.4 135.5c-11.2-7-14.7-21.7-6.9-32.2 15.3-20.5 33.5-38.6 54.1-53.8 10.4-7.6 24.7-4.3 31.8 6.4l35.1 52.6c7.8 11.6 3.8 27.3-7 36.2-6.5 5.4-12.5 11.3-18 17.7-8.7 10.2-23.6 14-35.1 6.9L57.4 135.5zM112 256l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-21.2 2.6-41.8 7.5-61.6 3.6-14.7 20.7-20.5 33.6-12.5l59.7 37.3c8.4 5.3 12.6 15.2 11.8 25.1-.3 3.8-.5 7.7-.5 11.6zm299.3-36.8L471 182c12.9-8 29.9-2.3 33.6 12.5 4.9 19.7 7.5 40.3 7.5 61.6l0 24c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-24c0-3.9-.2-7.8-.5-11.6-.8-9.9 3.3-19.9 11.8-25.1zM112 376l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24L0 376c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24zm400 0l0 112c0 13.3-10.7 24-24 24l-64 0c-13.3 0-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24l64 0c13.3 0 24 10.7 24 24z\"/>`,\n },\n 'flag': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 48l69-17.2c38.1-9.5 78.3-5.1 113.5 12.5 46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 247.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4-37.9-19-81.4-23.7-122.5-13.4L64 352 64 48z\"/><path fill=\"currentColor\" d=\"M32 0C49.7 0 64 14.3 64 32l0 448c0 17.7-14.3 32-32 32S0 497.7 0 480L0 32C0 14.3 14.3 0 32 0z\"/>`,\n },\n 'gear': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M208.3 256a47.7 47.7 0 1 0 95.4 0 47.7 47.7 0 1 0 -95.4 0z\"/><path fill=\"currentColor\" d=\"M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 352a96 96 0 1 0 -.6-192 96 96 0 1 0 .6 192z\"/>`,\n },\n 'house': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M48 267.7c2-1.2 4-2.6 5.8-4.3L256 75.7 458.2 263.4c1.8 1.7 3.7 3.1 5.8 4.3L464 448c0 35.3-28.7 64-64 64l-80 0 0-128c0-26.5-21.5-48-48-48l-32 0c-26.5 0-48 21.5-48 48l0 128-80 0c-35.3 0-64-28.7-64-64l0-180.3z\"/><path fill=\"currentColor\" d=\"M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-13 12-13.7 32.3-1.7 45.2s32.3 13.7 45.2 1.7L256 75.7 458.2 263.4c13 12 33.2 11.3 45.2-1.7s11.3-33.2-1.7-45.2l-224-208zM240 336c-26.5 0-48 21.5-48 48l0 128 128 0 0-128c0-26.5-21.5-48-48-48l-32 0z\"/>`,\n },\n 'key-skeleton': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M9.4 393.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 416 96 397.3 137.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-41.4-41.4 86.1-86.1c-18.3-11.5-33.8-27-45.3-45.3L9.4 393.4z\"/><path fill=\"currentColor\" d=\"M304 64a80 80 0 1 1 0 160 80 80 0 1 1 0-160zm0 224a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"/>`,\n },\n 'key': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 408l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7L282.3 343.7 168.3 229.7 7 391c-4.5 4.5-7 10.6-7 17z\"/><path fill=\"currentColor\" d=\"M168.3 229.7L282.3 343.7c16.9 5.4 35 8.3 53.7 8.3 97.2 0 176-78.8 176-176S433.2 0 336 0 160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7zM336 136a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"/>`,\n },\n 'language': {\n category: 'ui',\n viewBox: '0 0 576 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M258.8 467c58.2-131 80.2-180.5 128-288 5.1-11.6 16.6-19 29.2-19s24.1 7.4 29.2 19l128 288c7.2 16.2-.1 35.1-16.2 42.2s-35.1-.1-42.2-16.2l-20-45-157.5 0-20 45c-7.2 16.2-26.1 23.4-42.2 16.2s-23.4-26.1-16.2-42.2zm106.9-83L466.3 384 416 270.8 365.7 384z\"/><path fill=\"currentColor\" d=\"M160 0c17.7 0 32 14.3 32 32l0 32 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-9.6 0-8.4 23.1c-16.4 45.2-41.1 86.5-72.2 122 14.2 8.8 29 16.6 44.4 23.5l50.4 22.4-26 58.5-50.4-22.4c-23-10.2-45-22.4-65.8-36.4-21.3 17.2-44.6 32.2-69.5 44.7L78.3 380.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9l34.5-17.3c16.3-8.2 31.8-17.7 46.4-28.3-13.8-12.7-26.8-26.4-38.9-40.9L71.4 212.5c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l20.3 24.4c11.5 13.9 24.1 26.8 37.4 38.7 27.5-30.4 49.2-66.1 63.5-105.4l.5-1.2-210.3 0C14.3 128 0 113.7 0 96S14.3 64 32 64l96 0 0-32c0-17.7 14.3-32 32-32z\"/>`,\n },\n 'lock-keyhole': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM216 296l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"/>`,\n },\n 'lock': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64s64 28.7 64 64l0 64 64 0 0-64c0-70.7-57.3-128-128-128S64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64z\"/>`,\n },\n 'moon': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M256 0C114.6 0 0 114.6 0 256S114.6 512 256 512c68.8 0 131.3-27.2 177.3-71.4 7.3-7 9.4-17.9 5.3-27.1s-13.7-14.9-23.8-14.1c-4.9 .4-9.8 .6-14.8 .6-101.6 0-184-82.4-184-184 0-72.1 41.5-134.6 102.1-164.8 9.1-4.5 14.3-14.3 13.1-24.4S322.6 8.5 312.7 6.3C294.4 2.2 275.4 0 256 0z\"/><path fill=\"currentColor\" d=\"\"/>`,\n },\n 'search': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 208a144 144 0 1 0 288 0 144 144 0 1 0 -288 0z\"/><path fill=\"currentColor\" d=\"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376C296.3 401.1 253.9 416 208 416 93.1 416 0 322.9 0 208S93.1 0 208 0 416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"/>`,\n },\n 'sun': {\n category: 'ui',\n viewBox: '0 0 512 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M0 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24zM75 75c9.4-9.4 24.6-9.4 33.9 0l39.6 39.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L75 108.9c-9.4-9.4-9.4-24.6 0-33.9zm0 328.1l39.6-39.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L108.9 437c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zM232 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zm0 408c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56zM363.5 114.6L403.1 75c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-39.6 39.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9zm0 248.9c9.4-9.4 24.6-9.4 33.9 0L437 403.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-39.6-39.6c-9.4-9.4-9.4-24.6 0-33.9zM408 256c0-13.3 10.7-24 24-24l56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0c-13.3 0-24-10.7-24-24z\"/><path fill=\"currentColor\" d=\"M144 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0z\"/>`,\n },\n 'unlock-keyhole': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M64 160c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 160zM232 360l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24z\"/>`,\n },\n 'unlock': {\n category: 'ui',\n viewBox: '0 0 384 512',\n svg: `<path opacity=\".4\" fill=\"currentColor\" d=\"M64 96l0 64 64 0 0-64c0-35.3 28.7-64 64-64 31.7 0 58 23 63.1 53.3 2.9 17.4 19.4 29.2 36.9 26.3s29.2-19.4 26.3-36.9C308.1 14.1 255.5-32 192-32 121.3-32 64 25.3 64 96z\"/><path fill=\"currentColor\" d=\"M0 224c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224z\"/>`,\n },\n 'user': {\n category: 'ui',\n viewBox: '0 0 448 512',\n svg: `<path fill=\"currentColor\" d=\"M224 248a120 120 0 1 0 0-240 120 120 0 1 0 0 240zm-29.7 56C95.8 304 16 383.8 16 482.3 16 498.7 29.3 512 45.7 512l356.6 0c16.4 0 29.7-13.3 29.7-29.7 0-98.5-79.8-178.3-178.3-178.3l-59.4 0z\"/>`,\n },\n} as const;\n\nexport type UiIconName = keyof typeof uiIcons;\n","import { arrowsIcons } from './arrows';\nimport { barsIcons } from './bars';\nimport { chevronIcons } from './chevron';\nimport { lettersIcons } from './letters';\nimport { shieldIcons } from './shield';\nimport { uiIcons } from './ui';\n\nexport const iconCatalog = {\n ...arrowsIcons,\n ...barsIcons,\n ...chevronIcons,\n ...lettersIcons,\n ...shieldIcons,\n ...uiIcons,\n} as const;\n\nexport type IconName = keyof typeof iconCatalog;\n\nexport const iconsByCategory = {\n 'arrows': ['arrow-down', 'arrow-left'],\n 'bars': ['bars-filter', 'bars-sort', 'bars-staggered', 'bars'],\n 'chevron': ['chevron-down', 'chevron-left'],\n 'letters': ['a', 'ain'],\n 'shield': ['shield-check', 'shield-exclamation', 'shield-halved', 'shield-minus', 'shield-slash', 'shield'],\n 'ui': ['asterisk', 'door', 'flag', 'gear', 'house', 'key-skeleton', 'key', 'language', 'lock-keyhole', 'lock', 'moon', 'search', 'sun', 'unlock-keyhole', 'unlock', 'user'],\n} as const;\n","// src/kit/icon.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { JSXElement } from '@minejs/jsx';\r\n import { IconProps, iconCatalog, type IconName } from '../types';\r\n import { iconsByCategory } from './categories';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n export const sizeMap: Record<string, string> = {\r\n xs : '0.75rem',\r\n sm : '1rem',\r\n md : '1.25rem',\r\n lg : '1.5rem',\r\n xl : '2rem',\r\n 'xxl' : '2.5rem'\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n /**\r\n * Icon Component\r\n * Renders inline SVG icons with various options\r\n *\r\n * @example\r\n * Icon('check')\r\n * Icon({ name: 'spinner', spin: true, size: 'lg' })\r\n */\r\n export function Icon(props: IconProps) : JSXElement | null {\r\n\r\n interface IconLikeConfig {\r\n name? : string\r\n size? : number | string\r\n color? : string\r\n svg? : string\r\n viewBox? : string\r\n }\r\n\r\n const config = typeof props === 'string' ? { name: props } : props;\r\n const cfg = config as IconLikeConfig;\r\n\r\n let iconData: { viewBox: string; svg: string } | null = null;\r\n\r\n if (cfg.name && cfg.name in iconCatalog) {\r\n iconData = iconCatalog[cfg.name as IconName] as { viewBox: string; svg: string };\r\n } else if (cfg.svg) {\r\n iconData = {\r\n viewBox : cfg.viewBox || '0 0 24 24',\r\n svg : cfg.svg\r\n };\r\n }\r\n\r\n if (!iconData) {\r\n if (cfg.name) {\r\n console.warn(`Icon \"${cfg.name}\" not found in catalog`);\r\n } else {\r\n console.warn('Icon configuration is invalid');\r\n }\r\n return null;\r\n }\r\n\r\n const sizeValue = cfg.size;\r\n\r\n const size = typeof sizeValue === 'number'\r\n ? `${sizeValue}px`\r\n : sizeMap[sizeValue || 'md'];\r\n\r\n const style: Record<string, string> = {\r\n width : size,\r\n height : size,\r\n display : 'inline-block',\r\n verticalAlign : 'middle',\r\n lineHeight : '1',\r\n flexShrink : '0'\r\n };\r\n\r\n if (cfg.color) style.color = cfg.color;\r\n\r\n return (\r\n <svg\r\n style = {style}\r\n viewBox = {iconData.viewBox}\r\n fill = \"currentColor\"\r\n xmlns = \"http://www.w3.org/2000/svg\"\r\n aria-hidden = \"true\"\r\n role = \"img\"\r\n dangerouslySetInnerHTML = {{\r\n __html : iconData.svg\r\n }}\r\n />\r\n );\r\n }\r\n\r\n /**\r\n * Utility function to check if an icon exists\r\n */\r\n export function iconExists(name: string): name is IconName {\r\n return name in iconCatalog;\r\n }\r\n\r\n /**\r\n * Get all available icon names\r\n */\r\n export function getIconNames(): IconName[] {\r\n return Object.keys(iconCatalog) as IconName[];\r\n }\r\n\r\n /**\r\n * Get icons by category\r\n */\r\n export function getIconsByCategory(category: string): IconName[] {\r\n return (iconsByCategory[category as keyof typeof iconsByCategory] || []) as unknown as IconName[];\r\n }\r\n\r\n /**\r\n * Get all available categories\r\n */\r\n export function getIconCategories(): string[] {\r\n return Object.keys(iconsByCategory);\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n","// src/kit/button.tsx\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import type { JSXElement } from '@minejs/jsx';\r\n import { Container } from '@cruxkit/container';\r\n import { Text } from '@cruxkit/text';\r\n import { Icon, type IconProps, type IconName, type IconConfig } from '@cruxkit/icon';\r\n import type { ButtonProps, ButtonSize, ButtonColor, ButtonVariant } from '../types';\r\n import { t } from '@cruxjs/client';\r\n \r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ INIT ════════════════════════════════════════╗\r\n\r\n const sizePaddingMap: Record<ButtonSize, { px: 3 | 4 | 6; py: 1 | 2 | 3 }> = {\r\n sm: { px: 3, py: 1 },\r\n md: { px: 4, py: 2 },\r\n lg: { px: 6, py: 3 }\r\n };\r\n\r\n const sizeGapMap: Record<ButtonSize, 1 | 2> = {\r\n sm: 1,\r\n md: 2,\r\n lg: 2\r\n };\r\n\r\n const labelSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const iconSizeMap: Record<ButtonSize, 'sm' | 'md' | 'lg'> = {\r\n sm: 'sm',\r\n md: 'md',\r\n lg: 'lg'\r\n };\r\n\r\n const variantClasses: Record<ButtonVariant, Record<ButtonColor, string[]>> = {\r\n solid: {\r\n brand: [\r\n 'bg-brand',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-hover',\r\n 'active:bg-brand-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n success: [\r\n 'bg-success',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-hover',\r\n 'active:bg-success-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n warning: [\r\n 'bg-warning',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-hover',\r\n 'active:bg-warning-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n error: [\r\n 'bg-error',\r\n 'text-inverse',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-hover',\r\n 'active:bg-error-active',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ],\r\n neutral: [\r\n 'bg-surface',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95',\r\n 'shadow-sm',\r\n 'hover:shadow-md'\r\n ]\r\n },\r\n outline: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-brand',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-success',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-warning',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-error',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-1',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n ghost: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-brand-subtle',\r\n 'active:bg-brand-subtle',\r\n 'active:scale-95'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-success-subtle',\r\n 'active:bg-success-subtle',\r\n 'active:scale-95'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-warning-subtle',\r\n 'active:bg-warning-subtle',\r\n 'active:scale-95'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-error-subtle',\r\n 'active:bg-error-subtle',\r\n 'active:scale-95'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:bg-raised',\r\n 'active:bg-tertiary',\r\n 'active:scale-95'\r\n ]\r\n },\r\n link: {\r\n brand: [\r\n 'bg-transparent',\r\n 'text-brand',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n success: [\r\n 'bg-transparent',\r\n 'text-success',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n warning: [\r\n 'bg-transparent',\r\n 'text-warning',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n error: [\r\n 'bg-transparent',\r\n 'text-error',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ],\r\n neutral: [\r\n 'bg-transparent',\r\n 'text-1',\r\n 'border',\r\n 'border-transparent',\r\n 'hover:underline',\r\n 'underline-offset-4',\r\n 'decoration-2',\r\n 'px-1'\r\n ]\r\n }\r\n };\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n const mountedElements = new WeakSet<HTMLElement>();\r\n const loadedElements = new WeakSet<HTMLElement>();\r\n const translatedElements = new WeakSet<HTMLElement>();\r\n const MAX_TRANSLATION_ATTEMPTS = 5;\r\n const TRANSLATION_RETRY_DELAY_MS = 100;\r\n\r\n type ButtonContainerProps = {\r\n as?: unknown;\r\n display?: string;\r\n align?: string;\r\n justify?: string;\r\n gap?: number;\r\n px?: number;\r\n py?: number;\r\n radius?: string;\r\n className?: string;\r\n ref?: (element: HTMLElement | null) => void;\r\n } & Record<string, unknown>;\r\n\r\n function renderIcon(icon: IconProps | IconName | undefined, size: ButtonSize): JSXElement | null {\r\n if (!icon) return null;\r\n\r\n const iconSize = iconSizeMap[size];\r\n\r\n if (typeof icon === 'string') {\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n <Icon name={icon as IconName} size={iconSize} />\r\n </span>\r\n );\r\n }\r\n\r\n const resolvedSize = ((icon as IconProps) as IconConfig).size ?? iconSize;\r\n\r\n return (\r\n <span className=\"inline-flex shrink-0\">\r\n <Icon {...icon} size={resolvedSize} />\r\n </span>\r\n );\r\n }\r\n\r\n /**\r\n * A polymorphic button component that supports multiple variants, colors, sizes, and states.\r\n *\r\n * @param props - The properties for the Button component.\r\n * @param props.variant - Visual style variant: `'solid' | 'outline' | 'ghost' | 'link'`.\r\n * @param props.color - Color theme: `'brand' | 'success' | 'warning' | 'error' | 'neutral'`.\r\n * @param props.size - Size scale: `'sm' | 'md' | 'lg'`.\r\n * @param props.fullWidth - Whether the button spans the full width of its container.\r\n * @param props.disabled - Whether the button is disabled.\r\n * @param props.loading - Whether the button is in a loading state (disables interaction).\r\n * @param props.leftIcon - Optional icon placed to the left of the label (string name or IconProps).\r\n * @param props.rightIcon - Optional icon placed to the right of the label (string name or IconProps).\r\n * @param props.as - Element type to render: `'button' | 'a' | any polymorphic component`.\r\n * @param props.children - Button label content.\r\n * @param props.className - Additional CSS classes appended to the built-in styles.\r\n * @param props.type - HTML button type attribute (only applied when `as=\"button\"`).\r\n * @param props.restProps - Any other props are forwarded to the underlying element.\r\n *\r\n * @returns A JSX element representing the styled button.\r\n *\r\n * @example\r\n * ```tsx\r\n * <Button variant=\"solid\" color=\"brand\" size=\"md\" onClick={handleClick}>\r\n * Save\r\n * </Button>\r\n * ```\r\n */\r\n export function Button(props: ButtonProps): JSXElement {\r\n const {\r\n variant = 'solid',\r\n color = 'brand',\r\n size = 'md',\r\n fullWidth = false,\r\n disabled = false,\r\n loading = false,\r\n leftIcon,\r\n rightIcon,\r\n as = 'button',\r\n text,\r\n children,\r\n className,\r\n type = 'button',\r\n onMount,\r\n onLoad,\r\n ...restProps\r\n } = props;\r\n\r\n const baseClasses = [\r\n 'inline-flex',\r\n 'items-center',\r\n 'justify-center',\r\n 'font-medium',\r\n 'transition-all',\r\n 'duration-150',\r\n 'select-none',\r\n 'focus:outline-none',\r\n 'focus-visible:ring',\r\n 'focus-visible:ring-offset-2'\r\n ];\r\n\r\n const stateClasses = [];\r\n\r\n if (loading || disabled) {\r\n stateClasses.push('opacity-50', 'cursor-not-allowed', 'pointer-events-none');\r\n }\r\n\r\n if (fullWidth) {\r\n stateClasses.push('w-full');\r\n }\r\n\r\n const paletteClasses = variantClasses[variant][color];\r\n\r\n const classes = [\r\n ...baseClasses,\r\n ...stateClasses,\r\n ...paletteClasses,\r\n className\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const padding = sizePaddingMap[size];\r\n const gap = sizeGapMap[size];\r\n const labelSize = labelSizeMap[size];\r\n\r\n const content: JSXElement[] = [];\r\n\r\n const left = renderIcon(leftIcon, size);\r\n const right = renderIcon(rightIcon, size);\r\n\r\n if (left) {\r\n content.push(left);\r\n }\r\n\r\n const isKeyLikeText = typeof text === 'string' && text.includes('.');\r\n const label = children ?? (isKeyLikeText ? '--' : text);\r\n\r\n if (label !== undefined && label !== null && label !== '') {\r\n content.push(\r\n <Text as=\"span\" size={labelSize} data-role=\"btn-label\" className='flex items-center'>\r\n {label}\r\n </Text>\r\n );\r\n }\r\n\r\n if (right) {\r\n content.push(right);\r\n }\r\n\r\n const elementType = as;\r\n\r\n const elementTypeProps =\r\n elementType === 'button'\r\n ? { type }\r\n : {};\r\n\r\n const shouldTranslate = isKeyLikeText;\r\n\r\n const handleRef =\r\n (onMount || onLoad || shouldTranslate)\r\n ? (element: HTMLElement | null) => {\r\n if (!element) return;\r\n\r\n if (onMount && !mountedElements.has(element)) {\r\n mountedElements.add(element);\r\n onMount(element);\r\n }\r\n\r\n if (onLoad && !loadedElements.has(element)) {\r\n loadedElements.add(element);\r\n\r\n const runLoad = () => {\r\n onLoad(element);\r\n };\r\n\r\n if (typeof requestAnimationFrame === 'function') {\r\n requestAnimationFrame(() => {\r\n requestAnimationFrame(runLoad);\r\n });\r\n } else {\r\n setTimeout(runLoad, 0);\r\n }\r\n }\r\n\r\n if (shouldTranslate && !translatedElements.has(element)) {\r\n const schedule = (fn: () => void) => {\r\n if (typeof queueMicrotask === 'function') {\r\n queueMicrotask(fn);\r\n } else {\r\n setTimeout(fn, 0);\r\n }\r\n };\r\n\r\n const attemptTranslate = (attempt: number) => {\r\n const labelNode = element.querySelector('[data-role=\\\"btn-label\\\"]');\r\n\r\n if (!labelNode || typeof text !== 'string') return;\r\n\r\n let translated = t(text as string, undefined, '--');\r\n\r\n if (translated !== text && translated !== '--' || attempt >= MAX_TRANSLATION_ATTEMPTS) {\r\n (labelNode as HTMLElement).textContent = String(translated);\r\n translatedElements.add(element);\r\n return;\r\n }\r\n\r\n setTimeout(\r\n () => {\r\n attemptTranslate(attempt + 1);\r\n },\r\n TRANSLATION_RETRY_DELAY_MS\r\n );\r\n };\r\n\r\n schedule(() => {\r\n attemptTranslate(0);\r\n });\r\n }\r\n }\r\n : undefined;\r\n\r\n const containerProps: ButtonContainerProps = {\r\n as,\r\n display : 'inline-flex',\r\n align : 'center',\r\n justify : 'center',\r\n gap,\r\n px : padding.px,\r\n py : padding.py,\r\n radius : 'md',\r\n className : classes,\r\n ...elementTypeProps,\r\n ...restProps\r\n };\r\n\r\n if (handleRef) {\r\n containerProps.ref = handleRef;\r\n }\r\n\r\n return (\r\n <Container {...(containerProps as Record<string, unknown>)}>\r\n {content}\r\n </Container>\r\n );\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n"]}
|
package/package.json
CHANGED