@clarlabs/ui 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),p=require("react"),Ce="styles-module__accordion__gf0fR",Ie="styles-module__item__KZ8v2",Se="styles-module__header__wApZ8",We="styles-module__title__yCYjK",Re="styles-module__icon__8N04V",Le="styles-module__iconOpen__PXmc8",Te="styles-module__content__WKJF6",Ee="styles-module__contentOpen__l7aJG",ze="styles-module__contentInner__Co6a-",D={accordion:Ce,item:Ie,header:Se,title:We,icon:Re,iconOpen:Le,content:Te,contentOpen:Ee,contentInner:ze};function De({items:s,allowMultiple:t=!1,defaultOpenIds:o=[],className:l=""}){const[n,a]=p.useState(new Set(o)),_=c=>{a(i=>{const d=new Set(i);return d.has(c)?d.delete(c):(t||d.clear(),d.add(c)),d})};return e.jsx("div",{className:`${D.accordion} ${l}`,children:s.map(c=>e.jsx(Be,{item:c,isOpen:n.has(c.id),onToggle:()=>_(c.id)},c.id))})}function Be({item:s,isOpen:t,onToggle:o}){return e.jsxs("div",{className:`${D.item} ${t?D.open:""}`,children:[e.jsxs("button",{className:D.header,onClick:o,"aria-expanded":t,children:[e.jsx("span",{className:D.title,children:s.title}),e.jsx("span",{className:`${D.icon} ${t?D.iconOpen:""}`,children:"▼"})]}),e.jsx("div",{className:`${D.content} ${t?D.contentOpen:""}`,children:e.jsx("div",{className:D.contentInner,children:s.content})})]})}const Ve="styles-module__alert__EMa3w",Me="styles-module__icon__7XvtI",Oe="styles-module__content__qU8OK",Pe="styles-module__title__Jui7D",Fe="styles-module__message__cazZX",Ae="styles-module__dismissButton__RhF19",Ke="styles-module__info__Rb2nq",Ge="styles-module__success__sQGN5",Ze="styles-module__warning__Ev8EY",Je="styles-module__error__plkoU",H={alert:Ve,icon:Me,content:Oe,title:Pe,message:Fe,dismissButton:Ae,info:Ke,success:Ge,warning:Ze,error:Je};function qe({variant:s="info",title:t,message:o,dismissible:l=!1,onDismiss:n,className:a=""}){const _={info:"ℹ",success:"✓",warning:"⚠",error:"✕"};return e.jsxs("div",{className:`${H.alert} ${H[s]} ${a}`,role:"alert",children:[e.jsx("div",{className:H.icon,children:_[s]}),e.jsxs("div",{className:H.content,children:[t&&e.jsx("div",{className:H.title,children:t}),e.jsx("div",{className:H.message,children:o})]}),l&&e.jsx("button",{className:H.dismissButton,onClick:n,"aria-label":"Dismiss alert",children:"✕"})]})}const Xe="styles-module__avatar__xMx8n",Ue="styles-module__image__rl-6T",He="styles-module__initials__d0Z0v",Qe="styles-module__sm__YBcEp",Ye="styles-module__md__4GVi1",es="styles-module__lg__bEtEd",ss="styles-module__xl__WBAtD",ts="styles-module__status__8qwum",ls="styles-module__online__9lOl6",ns="styles-module__offline__pi-XT",os="styles-module__busy__Cer8C",as="styles-module__away__zT9iM",Y={avatar:Xe,image:Ue,initials:He,sm:Qe,md:Ye,lg:es,xl:ss,status:ts,online:ls,offline:ns,busy:os,away:as};function cs({src:s,alt:t="Avatar",initials:o,size:l="md",status:n,className:a=""}){const _=()=>{if(o)return o;if(t){const c=t.split(" ");return c.length>=2?`${c[0][0]}${c[1][0]}`.toUpperCase():t.slice(0,2).toUpperCase()}return"?"};return e.jsxs("div",{className:`${Y.avatar} ${Y[l]} ${a}`,children:[s?e.jsx("img",{src:s,alt:t,className:Y.image}):e.jsx("div",{className:Y.initials,children:_()}),n&&e.jsx("span",{className:`${Y.status} ${Y[n]}`,"aria-label":`Status: ${n}`})]})}const _s="styles-module__badge__d6igj",ds="styles-module__dot__lsgxk",is="styles-module__sm__rstsk",rs="styles-module__md__o-6j3",us="styles-module__lg__EXM1E",ms="styles-module__primary__tHsyl",ps="styles-module__success__okGOk",ys="styles-module__warning__W-psO",hs="styles-module__error__300RS",$s="styles-module__info__Qec-V",ie={badge:_s,dot:ds,sm:is,md:rs,lg:us,default:"styles-module__default__lOwCs",primary:ms,success:ps,warning:ys,error:hs,info:$s};function fs({children:s,variant:t="default",size:o="md",dot:l=!1,className:n=""}){return e.jsxs("span",{className:`${ie.badge} ${ie[t]} ${ie[o]} ${n}`,children:[l&&e.jsx("span",{className:ie.dot}),s]})}const bs="styles-module__breadcrumbs__jVeyK",xs="styles-module__list__IBUYZ",gs="styles-module__item__unpP2",vs="styles-module__link__n-LMO",js="styles-module__button__MamiK",Ns="styles-module__text__xQt-q",ks="styles-module__current__vuaM0",ws="styles-module__separator__81mEk",A={breadcrumbs:bs,list:xs,item:gs,link:vs,button:js,text:Ns,current:ks,separator:ws};function Cs({items:s,separator:t="/",className:o=""}){return e.jsx("nav",{className:`${A.breadcrumbs} ${o}`,"aria-label":"Breadcrumb",children:e.jsx("ol",{className:A.list,children:s.map((l,n)=>{const a=n===s.length-1;return e.jsxs("li",{className:A.item,children:[l.href&&!a?e.jsx("a",{href:l.href,className:A.link,children:l.label}):l.onClick&&!a?e.jsx("button",{onClick:l.onClick,className:A.button,children:l.label}):e.jsx("span",{className:`${A.text} ${a?A.current:""}`,children:l.label}),!a&&e.jsx("span",{className:A.separator,"aria-hidden":"true",children:t})]},n)})})})}const Is="styles-module__button__Sh-fr",Ss="styles-module__sm__TZ7PA",Ws="styles-module__md__MdfAS",Rs="styles-module__lg__zhBVx",Ls="styles-module__fullWidth__KAUu7",Ts="styles-module__loading__jL3RT",Es="styles-module__spinner__cTprF",zs="styles-module__spin__aE1Nk",Ds="styles-module__hiddenContent__lbKDI",Bs="styles-module__primary__TRNPt",Vs="styles-module__secondary__QKgly",Ms="styles-module__success__DI2AT",Os="styles-module__danger__dnMp7",Ps="styles-module__outline__-o6rL",Fs="styles-module__ghost__lca2R",Q={button:Is,sm:Ss,md:Ws,lg:Rs,fullWidth:Ls,loading:Ts,spinner:Es,spin:zs,hiddenContent:Ds,primary:Bs,secondary:Vs,success:Ms,danger:Os,outline:Ps,ghost:Fs};function As({variant:s="primary",size:t="md",fullWidth:o=!1,loading:l=!1,disabled:n,className:a="",children:_,...c}){return e.jsxs("button",{className:`
2
+ ${Q.button}
3
+ ${Q[s]}
4
+ ${Q[t]}
5
+ ${o?Q.fullWidth:""}
6
+ ${l?Q.loading:""}
7
+ ${a}
8
+ `,disabled:n||l,...c,children:[l&&e.jsx("span",{className:Q.spinner}),e.jsx("span",{className:l?Q.hiddenContent:"",children:_})]})}const Ks="styles-module__buttonGroup__Uqp-x",Gs="styles-module__horizontal__oeLpW",Zs="styles-module__vertical__ZrJkT",Js="styles-module__fullWidth__sxqJJ",me={buttonGroup:Ks,horizontal:Gs,vertical:Zs,fullWidth:Js};function qs({children:s,orientation:t="horizontal",fullWidth:o=!1,className:l=""}){return e.jsx("div",{className:`
9
+ ${me.buttonGroup}
10
+ ${me[t]}
11
+ ${o?me.fullWidth:""}
12
+ ${l}
13
+ `,role:"group",children:s})}const Xs="styles-module__card__0iVez",Us="styles-module__hoverable__7-MZP",Hs="styles-module__clickable__WiARM",Qs="styles-module__imageWrapper__LlBXL",Ys="styles-module__image__5KApl",et="styles-module__content__-0XZZ",st="styles-module__header__WVGN7",tt="styles-module__title__-Th-m",lt="styles-module__subtitle__VDwvc",nt="styles-module__body__iaDKl",ot="styles-module__footer__b10VS",W={card:Xs,hoverable:Us,clickable:Hs,imageWrapper:Qs,image:Ys,content:et,header:st,title:tt,subtitle:lt,body:nt,footer:ot};function at({children:s,title:t,subtitle:o,footer:l,image:n,hoverable:a=!1,className:_="",onClick:c}){const i=!!c;return e.jsxs("div",{className:`
14
+ ${W.card}
15
+ ${a?W.hoverable:""}
16
+ ${i?W.clickable:""}
17
+ ${_}
18
+ `,onClick:c,role:i?"button":void 0,tabIndex:i?0:void 0,children:[n&&e.jsx("div",{className:W.imageWrapper,children:e.jsx("img",{src:n,alt:t||"",className:W.image})}),e.jsxs("div",{className:W.content,children:[(t||o)&&e.jsxs("div",{className:W.header,children:[t&&e.jsx("h3",{className:W.title,children:t}),o&&e.jsx("p",{className:W.subtitle,children:o})]}),e.jsx("div",{className:W.body,children:s}),l&&e.jsx("div",{className:W.footer,children:l})]})]})}const ct="styles-module__checkboxWrapper__5ECcg",_t="styles-module__checkbox__AVGTi",dt="styles-module__checkmark__xfDiG",it="styles-module__label__56KkR",rt="styles-module__checkIcon__B246P",ut="styles-module__indeterminateIcon__L9Kf-",ee={checkboxWrapper:ct,checkbox:_t,checkmark:dt,label:it,checkIcon:rt,indeterminateIcon:ut};function mt({label:s,indeterminate:t=!1,className:o="",...l}){const n=p.useRef(null);return p.useEffect(()=>{n.current&&(n.current.indeterminate=t)},[t]),e.jsxs("label",{className:`${ee.checkboxWrapper} ${o}`,children:[e.jsx("input",{ref:n,type:"checkbox",className:ee.checkbox,...l}),e.jsx("span",{className:ee.checkmark,children:t?e.jsx("span",{className:ee.indeterminateIcon,children:"−"}):e.jsx("span",{className:ee.checkIcon,children:"✓"})}),s&&e.jsx("span",{className:ee.label,children:s})]})}const pt="styles-module__combobox__YH03u",yt="styles-module__inputWrapper__UsIYk",ht="styles-module__input__F-6BL",$t="styles-module__disabled__UR9gQ",ft="styles-module__arrow__LV12a",bt="styles-module__open__-bJ28",xt="styles-module__menu__twpPT",gt="styles-module__option__v6IYz",vt="styles-module__optionDisabled__vOMRI",jt="styles-module__highlighted__pxy-X",Nt="styles-module__noResults__-sgTv",R={combobox:pt,inputWrapper:yt,input:ht,disabled:$t,arrow:ft,open:bt,menu:xt,option:gt,optionDisabled:vt,highlighted:jt,noResults:Nt};function kt({options:s,value:t,defaultValue:o="",onChange:l,placeholder:n="Select or type...",disabled:a=!1,className:_="",allowCustomValue:c=!1,filterFunction:i}){const[d,r]=p.useState(o),[u,y]=p.useState(!1),[h,$]=p.useState(-1),m=p.useRef(null),g=p.useRef(null),v=p.useRef(null),ae=t!==void 0,V=ae?t:d,ve=i||((f,j)=>f.label.toLowerCase().includes(j.toLowerCase())),U=s.filter(f=>ve(f,V));p.useEffect(()=>{const f=j=>{v.current&&!v.current.contains(j.target)&&y(!1)};return document.addEventListener("mousedown",f),()=>document.removeEventListener("mousedown",f)},[]),p.useEffect(()=>{if(u&&h>=0&&g.current){const f=g.current.children[h];f&&f.scrollIntoView({block:"nearest"})}},[h,u]);const je=f=>{const j=f.target.value;ae||r(j),l?.(j),y(!0),$(-1)},he=f=>{if(f.disabled)return;const j=f.value;ae||r(f.label),l?.(j),y(!1),$(-1),m.current?.blur()},Ne=f=>{if(!a)switch(f.key){case"ArrowDown":f.preventDefault(),y(!0),$(j=>{const T=U.length-1;if(j>=T)return T;let ce=j+1;for(;ce<=T&&U[ce].disabled;)ce++;return ce<=T?ce:j});break;case"ArrowUp":f.preventDefault(),$(j=>{if(j<=0)return-1;let T=j-1;for(;T>=0&&U[T].disabled;)T--;return T>=0?T:-1});break;case"Enter":f.preventDefault(),u&&h>=0?he(U[h]):c&&(l?.(V),y(!1));break;case"Escape":f.preventDefault(),y(!1),$(-1),m.current?.blur();break;case"Tab":y(!1);break}},ke=()=>{a||y(!0)},$e=s.find(f=>f.value===V),we=$e?$e.label:V;return e.jsxs("div",{ref:v,className:`${R.combobox} ${_}`,children:[e.jsxs("div",{className:R.inputWrapper,children:[e.jsx("input",{ref:m,type:"text",className:`${R.input} ${a?R.disabled:""}`,value:we,onChange:je,onKeyDown:Ne,onFocus:ke,placeholder:n,disabled:a,autoComplete:"off",role:"combobox","aria-expanded":u,"aria-autocomplete":"list","aria-controls":"combobox-listbox"}),e.jsx("span",{className:`${R.arrow} ${u?R.open:""}`,children:"▼"})]}),u&&U.length>0&&e.jsx("ul",{ref:g,id:"combobox-listbox",className:R.menu,role:"listbox",children:U.map((f,j)=>e.jsx("li",{className:`${R.option} ${h===j?R.highlighted:""} ${f.disabled?R.optionDisabled:""}`,onClick:()=>he(f),role:"option","aria-selected":f.value===V,"aria-disabled":f.disabled,children:f.label},f.value))}),u&&U.length===0&&e.jsx("div",{className:R.noResults,children:c?"Press Enter to use custom value":"No results found"})]})}const wt="styles-module__datagridWrapper__rcPKe",Ct="styles-module__datagrid__2KTB3",It="styles-module__thead__VLK3H",St="styles-module__th__GVqEG",Wt="styles-module__tbody__vIVcl",Rt="styles-module__tr__Qn6CH",Lt="styles-module__td__UsBhW",Tt="styles-module__hoverable__6H3Yy",Et="styles-module__clickable__acA9M",zt="styles-module__striped__1a6NP",E={datagridWrapper:wt,datagrid:Ct,thead:It,th:St,tbody:Wt,tr:Rt,td:Lt,hoverable:Tt,clickable:Et,striped:zt};function Dt({columns:s,data:t,onRowClick:o,striped:l=!1,hoverable:n=!0,className:a=""}){return e.jsx("div",{className:`${E.datagridWrapper} ${a}`,children:e.jsxs("table",{className:E.datagrid,children:[e.jsx("thead",{className:E.thead,children:e.jsx("tr",{children:s.map(_=>e.jsx("th",{className:E.th,style:{width:_.width},children:_.header},_.key))})}),e.jsx("tbody",{className:E.tbody,children:t.map((_,c)=>e.jsx("tr",{className:`
19
+ ${E.tr}
20
+ ${l&&c%2===1?E.striped:""}
21
+ ${n?E.hoverable:""}
22
+ ${o?E.clickable:""}
23
+ `,onClick:()=>o?.(_),children:s.map(i=>e.jsx("td",{className:E.td,children:i.render?i.render(_[i.key],_):_[i.key]},i.key))},c))})]})})}const Bt="styles-module__datePicker__uLxOg",Vt="styles-module__input__0m5L3",Mt="styles-module__icon__0-EVW",pe={datePicker:Bt,input:Vt,icon:Mt};function Ot({value:s,onChange:t,minDate:o,maxDate:l,className:n="",...a}){const[_,c]=p.useState(s?ye(s):""),i=d=>{const r=d.target.value;if(c(r),r){const u=new Date(r);isNaN(u.getTime())||t?.(u)}else t?.(null)};return e.jsxs("div",{className:`${pe.datePicker} ${n}`,children:[e.jsx("input",{type:"date",className:pe.input,value:_,onChange:i,min:o?ye(o):void 0,max:l?ye(l):void 0,...a}),e.jsx("span",{className:pe.icon,children:"📅"})]})}function ye(s){const t=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),l=String(s.getDate()).padStart(2,"0");return`${t}-${o}-${l}`}const Pt="styles-module__dateRangePicker__2-ckk",Ft="styles-module__inputWrapper__gXzep",At="styles-module__input__yirN1",Kt="styles-module__icon__k-Xdp",Gt="styles-module__separator__Lxjed",K={dateRangePicker:Pt,inputWrapper:Ft,input:At,icon:Kt,separator:Gt};function Zt({value:s,onChange:t,minDate:o,maxDate:l,className:n=""}){const[a,_]=p.useState(s?.start?se(s.start):""),[c,i]=p.useState(s?.end?se(s.end):""),d=u=>{const y=u.target.value;_(y);const h=y?new Date(y):null,$=c?new Date(c):null;h&&!isNaN(h.getTime())?t?.({start:h,end:$}):t?.({start:null,end:$})},r=u=>{const y=u.target.value;i(y);const h=a?new Date(a):null,$=y?new Date(y):null;$&&!isNaN($.getTime())?t?.({start:h,end:$}):t?.({start:h,end:null})};return e.jsxs("div",{className:`${K.dateRangePicker} ${n}`,children:[e.jsxs("div",{className:K.inputWrapper,children:[e.jsx("input",{type:"date",className:K.input,value:a,onChange:d,min:o?se(o):void 0,max:c||(l?se(l):void 0),placeholder:"Start date"}),e.jsx("span",{className:K.icon,children:"📅"})]}),e.jsx("span",{className:K.separator,children:"→"}),e.jsxs("div",{className:K.inputWrapper,children:[e.jsx("input",{type:"date",className:K.input,value:c,onChange:r,min:a||(o?se(o):void 0),max:l?se(l):void 0,placeholder:"End date"}),e.jsx("span",{className:K.icon,children:"📅"})]})]})}function se(s){const t=s.getFullYear(),o=String(s.getMonth()+1).padStart(2,"0"),l=String(s.getDate()).padStart(2,"0");return`${t}-${o}-${l}`}const Jt="styles-module__divider__I6KTc",qt="styles-module__horizontal__rrjPy",Xt="styles-module__solid__LhHPX",Ut="styles-module__dashed__2ZL2z",Ht="styles-module__dotted__N8tLr",Qt="styles-module__line__ff0dO",Yt="styles-module__label__izE2E",el="styles-module__vertical__RBm03",te={divider:Jt,horizontal:qt,solid:Xt,dashed:Ut,dotted:Ht,line:Qt,label:Yt,vertical:el};function sl({orientation:s="horizontal",variant:t="solid",label:o,className:l=""}){const n=`${te.divider} ${te[s]} ${te[t]} ${l}`;return o&&s==="horizontal"?e.jsxs("div",{className:n,children:[e.jsx("span",{className:te.line}),e.jsx("span",{className:te.label,children:o}),e.jsx("span",{className:te.line})]}):e.jsx("div",{className:n})}const tl="styles-module__dropdown__uiKSF",ll="styles-module__trigger__tVV7I",nl="styles-module__disabled__Xy0oo",ol="styles-module__selected__RnAL-",al="styles-module__placeholder__aePOZ",cl="styles-module__arrow__QYBcO",_l="styles-module__open__huthl",dl="styles-module__menu__Fvg4d",il="styles-module__option__OLwBz",rl="styles-module__optionDisabled__n9Gdm",ul="styles-module__active__W7XbV",L={dropdown:tl,trigger:ll,disabled:nl,selected:ol,placeholder:al,arrow:cl,open:_l,menu:dl,option:il,optionDisabled:rl,active:ul};function ml({options:s,value:t,onChange:o,placeholder:l="Select an option",disabled:n=!1,className:a=""}){const[_,c]=p.useState(!1),[i,d]=p.useState(t||""),r=p.useRef(null);p.useEffect(()=>{const $=m=>{r.current&&!r.current.contains(m.target)&&c(!1)};return document.addEventListener("mousedown",$),()=>document.removeEventListener("mousedown",$)},[]);const u=$=>{n||(d($),c(!1),o?.($))},y=s.find($=>$.value===i),h=y?.label||l;return e.jsxs("div",{className:`${L.dropdown} ${a}`,ref:r,children:[e.jsxs("button",{className:`${L.trigger} ${n?L.disabled:""}`,onClick:()=>!n&&c(!_),disabled:n,type:"button",children:[e.jsx("span",{className:y?L.selected:L.placeholder,children:h}),e.jsx("span",{className:`${L.arrow} ${_?L.open:""}`,children:"▼"})]}),_&&e.jsx("div",{className:L.menu,children:s.map($=>e.jsx("div",{className:`${L.option} ${$.value===i?L.active:""} ${$.disabled?L.optionDisabled:""}`,onClick:()=>!$.disabled&&u($.value),children:$.label},$.value))})]})}const pl="styles-module__filePicker__mq8yj",yl="styles-module__dropzone__DdFZi",hl="styles-module__disabled__PEgD4",$l="styles-module__icon__lgApu",fl="styles-module__text__Djodx",bl="styles-module__input__3Edc4",xl="styles-module__fileList__mG9O1",gl="styles-module__fileItem__NB3Uq",vl="styles-module__processing__R-ZHY",jl="styles-module__uploaded__gJ1od",Nl="styles-module__failed__MlKNj",kl="styles-module__fileIcon__IUNOU",wl="styles-module__fileName__E1M5I",Cl="styles-module__fileSize__Yiown",Il="styles-module__error__KmdmE",Sl="styles-module__remove__JiGmS",k={filePicker:pl,dropzone:yl,disabled:hl,icon:$l,text:fl,input:bl,fileList:xl,fileItem:gl,processing:vl,uploaded:jl,failed:Nl,fileIcon:kl,fileName:wl,fileSize:Cl,error:Il,remove:Sl};function Wl({accept:s,multiple:t=!1,maxSize:o,disabled:l=!1,onChange:n,onUpload:a,className:_=""}){const[c,i]=p.useState([]),d=p.useRef(null),r=async m=>{if(!m||l)return;const g=Array.from(m).map(v=>o&&v.size>o?{file:v,status:"failed",error:"File too large"}:{file:v,status:"idle"});if(i(v=>[...v,...g]),n?.(g),a)for(const v of g)v.status!=="failed"&&await u(v)},u=async m=>{y(m.file.name,"processing");try{await a?.(m.file),y(m.file.name,"uploaded")}catch(g){y(m.file.name,"failed",g.message)}},y=(m,g,v)=>{i(ae=>ae.map(V=>V.file.name===m?{...V,status:g,error:v}:V))},h=m=>{i(g=>g.filter(v=>v.file.name!==m))},$=m=>{switch(m){case"processing":return"⏳";case"uploaded":return"✓";case"failed":return"✗";default:return"📄"}};return e.jsxs("div",{className:`${k.filePicker} ${_}`,children:[e.jsxs("div",{className:`${k.dropzone} ${l?k.disabled:""}`,onClick:()=>!l&&d.current?.click(),children:[e.jsx("span",{className:k.icon,children:"📁"}),e.jsx("span",{className:k.text,children:"Click to select files"})]}),e.jsx("input",{ref:d,type:"file",accept:s,multiple:t,disabled:l,onChange:m=>r(m.target.files),className:k.input}),c.length>0&&e.jsx("div",{className:k.fileList,children:c.map((m,g)=>e.jsxs("div",{className:`${k.fileItem} ${k[m.status]}`,children:[e.jsx("span",{className:k.fileIcon,children:$(m.status)}),e.jsx("span",{className:k.fileName,children:m.file.name}),e.jsxs("span",{className:k.fileSize,children:[(m.file.size/1024).toFixed(1)," KB"]}),m.error&&e.jsx("span",{className:k.error,children:m.error}),e.jsx("button",{className:k.remove,onClick:()=>h(m.file.name),children:"×"})]},`${m.file.name}-${g}`))})]})}const Rl="styles-module__header__9QAJF",Ll="styles-module__sticky__wm-sd",Tl="styles-module__content__ZPdW7",El="styles-module__brand__-0bx7",zl="styles-module__logo__3KpY5",Dl="styles-module__title__yDhEG",Bl="styles-module__nav__6MmHf",Vl="styles-module__actions__yTPsJ",G={header:Rl,sticky:Ll,content:Tl,brand:El,logo:zl,title:Dl,nav:Bl,actions:Vl};function Ml({logo:s,title:t,children:o,actions:l,sticky:n=!1,className:a=""}){return e.jsx("header",{className:`${G.header} ${n?G.sticky:""} ${a}`,children:e.jsxs("div",{className:G.content,children:[(s||t)&&e.jsxs("div",{className:G.brand,children:[s&&e.jsx("div",{className:G.logo,children:s}),t&&e.jsx("h1",{className:G.title,children:t})]}),o&&e.jsx("div",{className:G.nav,children:o}),l&&e.jsx("div",{className:G.actions,children:l})]})})}const Ol="styles-module__inputContainer__KSDK-",Pl="styles-module__fullWidth__rLaUj",Fl="styles-module__label__-uPCz",Al="styles-module__wrapper__JTZMt",Kl="styles-module__input__KRJnF",Gl="styles-module__withIcon__mikvP",Zl="styles-module__disabled__NjJFs",Jl="styles-module__sm__cr6Ko",ql="styles-module__lg__geHP2",Xl="styles-module__error__UCrFp",Ul="styles-module__success__fKUT8",Hl="styles-module__icon__qopq-",Ql="styles-module__helperText__9ULK8",Yl="styles-module__errorText__JTsOi",I={inputContainer:Ol,fullWidth:Pl,label:Fl,wrapper:Al,input:Kl,withIcon:Gl,disabled:Zl,sm:Jl,lg:ql,error:Xl,success:Ul,icon:Hl,helperText:Ql,errorText:Yl},fe=p.forwardRef(({label:s,error:t,helperText:o,size:l="md",variant:n="default",icon:a,fullWidth:_=!1,className:c="",disabled:i=!1,...d},r)=>{const u=t?"error":n,y=`${I.inputContainer} ${_?I.fullWidth:""} ${c}`,h=`${I.input} ${I[l]} ${I[u]} ${a?I.withIcon:""} ${i?I.disabled:""}`;return e.jsxs("div",{className:y,children:[s&&e.jsx("label",{className:I.label,children:s}),e.jsxs("div",{className:I.wrapper,children:[a&&e.jsx("span",{className:I.icon,children:a}),e.jsx("input",{ref:r,className:h,disabled:i,...d})]}),(t||o)&&e.jsx("span",{className:`${I.helperText} ${t?I.errorText:""}`,children:t||o})]})});fe.displayName="Input";const en="styles-module__label__QjEAd",sn="styles-module__disabled__yJ4NK",tn="styles-module__sm__KnRgV",ln="styles-module__md__z8a54",nn="styles-module__lg__KOzy-",on="styles-module__required__ZBqbG",re={label:en,disabled:sn,sm:tn,md:ln,lg:nn,required:on};function an({size:s="md",required:t=!1,disabled:o=!1,className:l="",children:n,...a}){return e.jsxs("label",{className:`${re.label} ${re[s]} ${o?re.disabled:""} ${l}`,...a,children:[n,t&&e.jsx("span",{className:re.required,children:"*"})]})}const cn="styles-module__list__i-PH3",_n="styles-module__dividers__klcR-",dn="styles-module__item__hLR7A",rn="styles-module__hoverable__6FbJF",un="styles-module__clickable__ahnDb",mn="styles-module__disabled__W5Z3Y",pn="styles-module__icon__fSr06",yn="styles-module__content__ujdaE",hn="styles-module__badge__dwlRk",M={list:cn,dividers:_n,item:dn,hoverable:rn,clickable:un,disabled:mn,icon:pn,content:yn,badge:hn};function $n({items:s,hoverable:t=!1,dividers:o=!1,className:l=""}){return e.jsx("ul",{className:`${M.list} ${o?M.dividers:""} ${l}`,children:s.map(n=>e.jsxs("li",{className:`${M.item} ${t&&!n.disabled?M.hoverable:""} ${n.disabled?M.disabled:""} ${n.onClick&&!n.disabled?M.clickable:""}`,onClick:n.disabled?void 0:n.onClick,children:[n.icon&&e.jsx("span",{className:M.icon,children:n.icon}),e.jsx("span",{className:M.content,children:n.content}),n.badge&&e.jsx("span",{className:M.badge,children:n.badge})]},n.id))})}const fn="styles-module__overlay__Ty-He",bn="styles-module__fadeIn__vywQ8",xn="styles-module__modal__bC015",gn="styles-module__slideUp__i-uri",vn="styles-module__sm__HasCZ",jn="styles-module__md__y-51k",Nn="styles-module__lg__bXotd",kn="styles-module__xl__wKYbR",wn="styles-module__header__agEZy",Cn="styles-module__title__91HGo",In="styles-module__closeButton__u-naO",Sn="styles-module__content__1xlis",Wn="styles-module__footer__m3SbZ",Z={overlay:fn,fadeIn:bn,modal:xn,slideUp:gn,sm:vn,md:jn,lg:Nn,xl:kn,header:wn,title:Cn,closeButton:In,content:Sn,footer:Wn};function Rn({isOpen:s,onClose:t,title:o,children:l,footer:n,size:a="md",closeOnOverlayClick:_=!0,showCloseButton:c=!0,className:i=""}){return p.useEffect(()=>(s?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[s]),p.useEffect(()=>{const d=r=>{r.key==="Escape"&&s&&t()};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[s,t]),s?e.jsx("div",{className:Z.overlay,onClick:_?t:void 0,children:e.jsxs("div",{className:`${Z.modal} ${Z[a]} ${i}`,onClick:d=>d.stopPropagation(),children:[(o||c)&&e.jsxs("div",{className:Z.header,children:[o&&e.jsx("h2",{className:Z.title,children:o}),c&&e.jsx("button",{className:Z.closeButton,onClick:t,type:"button",children:"×"})]}),e.jsx("div",{className:Z.content,children:l}),n&&e.jsx("div",{className:Z.footer,children:n})]})}):null}const Ln="styles-module__pagination__P-TuL",Tn="styles-module__pageButton__saWQq",En="styles-module__active__6G9dp",zn="styles-module__dots__HNsj1",J={pagination:Ln,pageButton:Tn,active:En,dots:zn};function Dn({currentPage:s,totalPages:t,onPageChange:o,showFirstLast:l=!0,siblingCount:n=1,className:a=""}){const _=(u,y)=>Array.from({length:y-u+1},(h,$)=>u+$),i=(()=>{const u=n+5;if(t<=u)return _(1,t);const y=Math.max(s-n,1),h=Math.min(s+n,t),$=y>2,m=h<t-1;return!$&&m?[..._(1,3+2*n),"...",t]:$&&!m?[1,"...",..._(t-(2+2*n),t)]:[1,"...",..._(y,h),"...",t]})(),d=()=>{s>1&&o(s-1)},r=()=>{s<t&&o(s+1)};return e.jsxs("nav",{className:`${J.pagination} ${a}`,children:[l&&e.jsx("button",{className:J.pageButton,onClick:()=>o(1),disabled:s===1,children:"«"}),e.jsx("button",{className:J.pageButton,onClick:d,disabled:s===1,children:"‹"}),i.map((u,y)=>u==="..."?e.jsx("span",{className:J.dots,children:"..."},`dots-${y}`):e.jsx("button",{className:`${J.pageButton} ${u===s?J.active:""}`,onClick:()=>o(u),children:u},u)),e.jsx("button",{className:J.pageButton,onClick:r,disabled:s===t,children:"›"}),l&&e.jsx("button",{className:J.pageButton,onClick:()=>o(t),disabled:s===t,children:"»"})]})}const Bn="styles-module__container__u4q5n",Vn="styles-module__progressBar__wAUjD",Mn="styles-module__sm__ZBiyl",On="styles-module__md__oXZzu",Pn="styles-module__lg__JmNO0",Fn="styles-module__fill__bDflZ",An="styles-module__success__drT36",Kn="styles-module__warning__p-mHQ",Gn="styles-module__error__ecpJB",Zn="styles-module__info__vfjga",Jn="styles-module__striped__El9o5",qn="styles-module__animated__9FN7u",Xn="styles-module__progress-stripes__etVVj",Un="styles-module__label__TpB8Q",q={container:Bn,progressBar:Vn,sm:Mn,md:On,lg:Pn,fill:Fn,default:"styles-module__default__7qIAE",success:An,warning:Kn,error:Gn,info:Zn,striped:Jn,animated:qn,"progress-stripes":"styles-module__progress-stripes__etVVj",progressStripes:Xn,label:Un};function Hn({value:s,max:t=100,variant:o="default",size:l="md",showLabel:n=!1,label:a,animated:_=!1,striped:c=!1,className:i=""}){const d=Math.min(Math.max(s/t*100,0),100),r=a||`${Math.round(d)}%`;return e.jsx("div",{className:`${q.container} ${i}`,children:e.jsx("div",{className:`${q.progressBar} ${q[l]}`,children:e.jsx("div",{className:`${q.fill} ${q[o]} ${c?q.striped:""} ${_?q.animated:""}`,style:{width:`${d}%`},children:n&&e.jsx("span",{className:q.label,children:r})})})})}const Qn="styles-module__radioButton__30HVZ",Yn="styles-module__disabled__TuSU6",eo="styles-module__input__-NkgJ",so="styles-module__radio__dKOL5",to="styles-module__label__M94so",_e={radioButton:Qn,disabled:Yn,input:eo,radio:so,label:to};function lo({label:s,value:t,name:o,checked:l=!1,disabled:n=!1,onChange:a,className:_="",...c}){return e.jsxs("label",{className:`${_e.radioButton} ${n?_e.disabled:""} ${_}`,children:[e.jsx("input",{type:"radio",name:o,value:t,checked:l,disabled:n,onChange:a,className:_e.input,...c}),e.jsx("span",{className:_e.radio}),s&&e.jsx("span",{className:_e.label,children:s})]})}const no="styles-module__container__KhKB7",oo="styles-module__label__nGyr8",ao="styles-module__rangeWrapper__dnhOv",co="styles-module__inputWrapper__vVIhy",_o="styles-module__input__C9H5I",io="styles-module__disabled__8xB9M",ro="styles-module__minMax__5jVHq",uo="styles-module__value__4hZJK",O={container:no,label:oo,rangeWrapper:ao,inputWrapper:co,input:_o,disabled:io,minMax:ro,value:uo};function mo({label:s,min:t=0,max:o=100,step:l=1,value:n=50,showValue:a=!1,showMinMax:_=!1,onChange:c,className:i="",disabled:d=!1,...r}){const u=(n-t)/(o-t)*100;return e.jsxs("div",{className:`${O.container} ${i}`,children:[s&&e.jsx("label",{className:O.label,children:s}),e.jsxs("div",{className:O.rangeWrapper,children:[_&&e.jsx("span",{className:O.minMax,children:t}),e.jsx("div",{className:O.inputWrapper,children:e.jsx("input",{type:"range",min:t,max:o,step:l,value:n,onChange:c,disabled:d,className:`${O.input} ${d?O.disabled:""}`,style:{"--percentage":`${u}%`},...r})}),_&&e.jsx("span",{className:O.minMax,children:o})]}),a&&e.jsx("span",{className:O.value,children:n})]})}const po="styles-module__richSelect__xtDdz",yo="styles-module__trigger__nkuFi",ho="styles-module__disabled__aRnNR",$o="styles-module__selectedContent__1YUDI",fo="styles-module__textContent__sVML5",bo="styles-module__label__DYAVs",xo="styles-module__description__-NG4t",go="styles-module__placeholder__83U0w",vo="styles-module__icon__v-J2b",jo="styles-module__arrow__m-D1Y",No="styles-module__open__gZef9",ko="styles-module__menu__zMZHy",wo="styles-module__searchWrapper__yPXor",Co="styles-module__searchInput__Vq3C6",Io="styles-module__optionsList__OAhYK",So="styles-module__option__vTDi0",Wo="styles-module__optionDisabled__spphz",Ro="styles-module__active__FRlKy",Lo="styles-module__noResults__DsPu8",b={richSelect:po,trigger:yo,disabled:ho,selectedContent:$o,textContent:fo,label:bo,description:xo,placeholder:go,icon:vo,arrow:jo,open:No,menu:ko,searchWrapper:wo,searchInput:Co,optionsList:Io,option:So,optionDisabled:Wo,active:Ro,noResults:Lo};function To({options:s,value:t,onChange:o,placeholder:l="Select an option",disabled:n=!1,searchable:a=!1,className:_=""}){const[c,i]=p.useState(!1),[d,r]=p.useState(""),u=p.useRef(null);p.useEffect(()=>{const m=g=>{u.current&&!u.current.contains(g.target)&&(i(!1),r(""))};return document.addEventListener("mousedown",m),()=>document.removeEventListener("mousedown",m)},[]);const y=m=>{n||(o?.(m),i(!1),r(""))},h=s.find(m=>m.value===t),$=a?s.filter(m=>m.label.toLowerCase().includes(d.toLowerCase())):s;return e.jsxs("div",{className:`${b.richSelect} ${_}`,ref:u,children:[e.jsxs("button",{className:`${b.trigger} ${n?b.disabled:""}`,onClick:()=>!n&&i(!c),disabled:n,type:"button",children:[h?e.jsxs("div",{className:b.selectedContent,children:[h.icon&&e.jsx("span",{className:b.icon,children:h.icon}),e.jsxs("div",{className:b.textContent,children:[e.jsx("span",{className:b.label,children:h.label}),h.description&&e.jsx("span",{className:b.description,children:h.description})]})]}):e.jsx("span",{className:b.placeholder,children:l}),e.jsx("span",{className:`${b.arrow} ${c?b.open:""}`,children:"▼"})]}),c&&e.jsxs("div",{className:b.menu,children:[a&&e.jsx("div",{className:b.searchWrapper,children:e.jsx("input",{type:"text",className:b.searchInput,placeholder:"Search...",value:d,onChange:m=>r(m.target.value),autoFocus:!0})}),e.jsxs("div",{className:b.optionsList,children:[$.map(m=>e.jsxs("div",{className:`${b.option} ${m.value===t?b.active:""} ${m.disabled?b.optionDisabled:""}`,onClick:()=>!m.disabled&&y(m.value),children:[m.icon&&e.jsx("span",{className:b.icon,children:m.icon}),e.jsxs("div",{className:b.textContent,children:[e.jsx("span",{className:b.label,children:m.label}),m.description&&e.jsx("span",{className:b.description,children:m.description})]})]},m.value)),$.length===0&&e.jsx("div",{className:b.noResults,children:"No results found"})]})]})]})}const Eo="styles-module__overlay__tP-g3",zo="styles-module__fadeIn__MKn3S",Do="styles-module__sidePanel__bfmoW",Bo="styles-module__left__X7-S4",Vo="styles-module__slideInLeft__nE6Ff",Mo="styles-module__right__Fvefe",Oo="styles-module__slideInRight__bvjTy",Po="styles-module__sm__CHsFH",Fo="styles-module__md__17Q10",Ao="styles-module__lg__8XCJd",Ko="styles-module__header__-AKr-",Go="styles-module__title__8S4yp",Zo="styles-module__closeButton__DQgJe",Jo="styles-module__content__XGAif",qo="styles-module__footer__cX66N",P={overlay:Eo,fadeIn:zo,sidePanel:Do,left:Bo,slideInLeft:Vo,right:Mo,slideInRight:Oo,sm:Po,md:Fo,lg:Ao,header:Ko,title:Go,closeButton:Zo,content:Jo,footer:qo};function Xo({isOpen:s,onClose:t,title:o,children:l,footer:n,position:a="right",size:_="md",closeOnOverlayClick:c=!0,showCloseButton:i=!0,className:d=""}){return p.useEffect(()=>(s?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[s]),p.useEffect(()=>{const r=u=>{u.key==="Escape"&&s&&t()};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[s,t]),s?e.jsx("div",{className:P.overlay,onClick:c?t:void 0,children:e.jsxs("div",{className:`${P.sidePanel} ${P[a]} ${P[_]} ${d}`,onClick:r=>r.stopPropagation(),children:[(o||i)&&e.jsxs("div",{className:P.header,children:[o&&e.jsx("h2",{className:P.title,children:o}),i&&e.jsx("button",{className:P.closeButton,onClick:t,type:"button",children:"×"})]}),e.jsx("div",{className:P.content,children:l}),n&&e.jsx("div",{className:P.footer,children:n})]})}):null}const Uo="styles-module__signpost__tLnmc",Ho="styles-module__trigger__25KnS",Qo="styles-module__content__z4pUG",Yo="styles-module__fadeIn__0jB27",ea="styles-module__top__Jn5XX",sa="styles-module__bottom__CGe3J",ta="styles-module__left__zuDmF",la="styles-module__right__xnSw3",na="styles-module__inner__7euCB",oa="styles-module__arrow__mGVpk",le={signpost:Uo,trigger:Ho,content:Qo,fadeIn:Yo,top:ea,bottom:sa,left:ta,right:la,inner:na,arrow:oa};function aa({trigger:s,children:t,position:o="top",className:l=""}){const[n,a]=p.useState(!1),_=p.useRef(null);return p.useEffect(()=>{const c=i=>{_.current&&!_.current.contains(i.target)&&a(!1)};return n&&document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[n]),e.jsxs("div",{className:`${le.signpost} ${l}`,ref:_,children:[e.jsx("div",{className:le.trigger,onClick:()=>a(!n),children:s}),n&&e.jsxs("div",{className:`${le.content} ${le[o]}`,children:[e.jsx("div",{className:le.arrow}),e.jsx("div",{className:le.inner,children:t})]})]})}const ca="styles-module__spinnerWrapper__ht5E9",_a="styles-module__spinner__D8f-h",da="styles-module__circle__z537L",ia="styles-module__spin__Gt3A-",ra="styles-module__sm__Ukc8Q",ua="styles-module__md__Hg7EK",ma="styles-module__lg__ac6jQ",pa="styles-module__primary__Pah-x",ya="styles-module__secondary__D29qO",ha="styles-module__label__nc2IY",ne={spinnerWrapper:ca,spinner:_a,circle:da,spin:ia,sm:ra,md:ua,lg:ma,default:"styles-module__default__X7JGx",primary:pa,secondary:ya,label:ha};function $a({size:s="md",variant:t="default",className:o="",label:l}){return e.jsxs("div",{className:`${ne.spinnerWrapper} ${o}`,children:[e.jsx("div",{className:`${ne.spinner} ${ne[s]} ${ne[t]}`,role:"status","aria-label":l||"Loading",children:e.jsx("div",{className:ne.circle})}),l&&e.jsx("span",{className:ne.label,children:l})]})}const fa="styles-module__stackView__wGZRw",ba="styles-module__horizontal__MCJ8E",xa="styles-module__vertical__INW6v",ga="styles-module__wrap__wvZPS",va="styles-module__align-start__TeH6Z",ja="styles-module__align-center__DWOt-",Na="styles-module__align-end__9Xsx4",ka="styles-module__align-stretch__raPvB",wa="styles-module__justify-start__YVdZp",Ca="styles-module__justify-center__VKg8-",Ia="styles-module__justify-end__kVPBC",Sa="styles-module__justify-space-between__z5-wE",Wa="styles-module__justify-space-around__FP-0m",Ra="styles-module__justify-space-evenly__v5xco",La="styles-module__spacing-none__M23xt",Ta="styles-module__spacing-xs__zdXjS",Ea="styles-module__spacing-sm__G-5sR",za="styles-module__spacing-md__oa-Jw",Da="styles-module__spacing-lg__5zhiQ",Ba="styles-module__spacing-xl__qSFPT",oe={stackView:fa,horizontal:ba,vertical:xa,wrap:ga,"align-start":"styles-module__align-start__TeH6Z",alignStart:va,"align-center":"styles-module__align-center__DWOt-",alignCenter:ja,"align-end":"styles-module__align-end__9Xsx4",alignEnd:Na,"align-stretch":"styles-module__align-stretch__raPvB",alignStretch:ka,"justify-start":"styles-module__justify-start__YVdZp",justifyStart:wa,"justify-center":"styles-module__justify-center__VKg8-",justifyCenter:Ca,"justify-end":"styles-module__justify-end__kVPBC",justifyEnd:Ia,"justify-space-between":"styles-module__justify-space-between__z5-wE",justifySpaceBetween:Sa,"justify-space-around":"styles-module__justify-space-around__FP-0m",justifySpaceAround:Wa,"justify-space-evenly":"styles-module__justify-space-evenly__v5xco",justifySpaceEvenly:Ra,"spacing-none":"styles-module__spacing-none__M23xt",spacingNone:La,"spacing-xs":"styles-module__spacing-xs__zdXjS",spacingXs:Ta,"spacing-sm":"styles-module__spacing-sm__G-5sR",spacingSm:Ea,"spacing-md":"styles-module__spacing-md__oa-Jw",spacingMd:za,"spacing-lg":"styles-module__spacing-lg__5zhiQ",spacingLg:Da,"spacing-xl":"styles-module__spacing-xl__qSFPT",spacingXl:Ba};function Va({children:s,direction:t="horizontal",align:o="start",justify:l="start",spacing:n="md",wrap:a=!1,className:_="",style:c}){return e.jsx("div",{className:`${oe.stackView} ${oe[t]} ${oe[`align-${o}`]} ${oe[`justify-${l}`]} ${oe[`spacing-${n}`]} ${a?oe.wrap:""} ${_}`,style:c,children:s})}const Ma="styles-module__stepper__NUsL2",Oa="styles-module__horizontal__wW8by",Pa="styles-module__vertical__UqRFo",Fa="styles-module__step__lmR8-",Aa="styles-module__clickable__-O5QE",Ka="styles-module__stepIndicator__GbO4U",Ga="styles-module__current__LW7L4",Za="styles-module__completed__MC9gq",Ja="styles-module__checkmark__GAoUn",qa="styles-module__stepNumber__qLNDJ",Xa="styles-module__stepContent__pKC94",Ua="styles-module__stepLabel__JK-4j",Ha="styles-module__stepDescription__hlARr",Qa="styles-module__connector__76Rsb",w={stepper:Ma,horizontal:Oa,vertical:Pa,step:Fa,clickable:Aa,stepIndicator:Ka,current:Ga,completed:Za,checkmark:Ja,stepNumber:qa,stepContent:Xa,stepLabel:Ua,stepDescription:Ha,connector:Qa};function Ya({steps:s,currentStep:t,orientation:o="horizontal",onStepClick:l,className:n=""}){return e.jsx("div",{className:`${w.stepper} ${w[o]} ${n}`,children:s.map((a,_)=>{const c=_<t,i=_===t,d=l&&(c||i);return e.jsxs(p.Fragment,{children:[e.jsxs("div",{className:`${w.step} ${c?w.completed:""} ${i?w.current:""} ${d?w.clickable:""}`,onClick:()=>d&&l(_),children:[e.jsx("div",{className:w.stepIndicator,children:c?e.jsx("span",{className:w.checkmark,children:"✓"}):a.icon?a.icon:e.jsx("span",{className:w.stepNumber,children:_+1})}),e.jsxs("div",{className:w.stepContent,children:[e.jsx("div",{className:w.stepLabel,children:a.label}),a.description&&e.jsx("div",{className:w.stepDescription,children:a.description})]})]}),_<s.length-1&&e.jsx("div",{className:`${w.connector} ${c?w.completed:""}`})]},_)})})}const ec="styles-module__tableWrapper__7pbjW",sc="styles-module__table__G-UMw",tc="styles-module__thead__uTTEj",lc="styles-module__th__tBFLB",nc="styles-module__tbody__-OiiP",oc="styles-module__tr__ioLC7",ac="styles-module__td__mjOQt",cc="styles-module__striped__iZ3bT",_c="styles-module__hoverable__ewlPb",dc="styles-module__bordered__IB5cr",ic="styles-module__compact__JfcIE",rc="styles-module__clickable__URnJc",uc="styles-module__empty__Xo2NZ",C={tableWrapper:ec,table:sc,thead:tc,th:lc,tbody:nc,tr:oc,td:ac,striped:cc,hoverable:_c,bordered:dc,compact:ic,clickable:rc,empty:uc};function mc({columns:s,data:t,striped:o=!1,hoverable:l=!1,bordered:n=!1,compact:a=!1,onRowClick:_,className:c=""}){return e.jsxs("div",{className:`${C.tableWrapper} ${c}`,children:[e.jsxs("table",{className:`${C.table} ${o?C.striped:""} ${l?C.hoverable:""} ${n?C.bordered:""} ${a?C.compact:""}`,children:[e.jsx("thead",{className:C.thead,children:e.jsx("tr",{children:s.map(i=>e.jsx("th",{className:C.th,style:{width:i.width},children:i.header},i.key))})}),e.jsx("tbody",{className:C.tbody,children:t.map((i,d)=>e.jsx("tr",{className:`${C.tr} ${_?C.clickable:""}`,onClick:()=>_?.(i),children:s.map(r=>e.jsx("td",{className:C.td,children:r.render?r.render(i[r.key],i):String(i[r.key]??"")},r.key))},d))})]}),t.length===0&&e.jsx("div",{className:C.empty,children:"No data available"})]})}const pc="styles-module__tabsContainer__Jv3WS",yc="styles-module__tabsList__G5a9Z",hc="styles-module__fullWidth__IiyGO",$c="styles-module__tab__Veki-",fc="styles-module__disabled__M9qZK",bc="styles-module__active__PVi-W",xc="styles-module__icon__4sTw8",gc="styles-module__pills__VlbD0",vc="styles-module__underline__Jdu1g",jc="styles-module__tabContent__bSDk7",Nc="styles-module__fadeIn__sgbzQ",F={tabsContainer:pc,tabsList:yc,fullWidth:hc,tab:$c,disabled:fc,active:bc,icon:xc,default:"styles-module__default__02SGT",pills:gc,underline:vc,tabContent:jc,fadeIn:Nc};function kc({items:s,defaultActiveId:t,variant:o="default",fullWidth:l=!1,onChange:n,className:a=""}){const[_,c]=p.useState(t||s[0]?.id),i=(r,u)=>{u||(c(r),n?.(r))},d=s.find(r=>r.id===_);return e.jsxs("div",{className:`${F.tabsContainer} ${a}`,children:[e.jsx("div",{className:`${F.tabsList} ${F[o]} ${l?F.fullWidth:""}`,role:"tablist",children:s.map(r=>e.jsxs("button",{role:"tab","aria-selected":r.id===_,"aria-disabled":r.disabled,className:`${F.tab} ${r.id===_?F.active:""} ${r.disabled?F.disabled:""}`,onClick:()=>i(r.id,r.disabled),disabled:r.disabled,children:[r.icon&&e.jsx("span",{className:F.icon,children:r.icon}),e.jsx("span",{children:r.label})]},r.id))}),e.jsx("div",{className:F.tabContent,role:"tabpanel",children:d?.content})]})}const wc="styles-module__textareaWrapper__xo-uo",Cc="styles-module__fullWidth__y5-Ce",Ic="styles-module__label__xONj0",Sc="styles-module__textarea__LmnbQ",Wc="styles-module__sm__uIQkQ",Rc="styles-module__md__qfL-2",Lc="styles-module__lg__s6Iey",Tc="styles-module__success__ehWww",Ec="styles-module__error__h9V4X",zc="styles-module__resize-none__w4h2b",Dc="styles-module__resize-vertical__4lTu1",Bc="styles-module__resize-horizontal__3Fdb7",Vc="styles-module__resize-both__07ghL",Mc="styles-module__helperText__Zaq6O",Oc="styles-module__errorText__RI-rl",z={textareaWrapper:wc,fullWidth:Cc,label:Ic,textarea:Sc,sm:Wc,md:Rc,lg:Lc,default:"styles-module__default__jlE7o",success:Tc,error:Ec,"resize-none":"styles-module__resize-none__w4h2b",resizeNone:zc,"resize-vertical":"styles-module__resize-vertical__4lTu1",resizeVertical:Dc,"resize-horizontal":"styles-module__resize-horizontal__3Fdb7",resizeHorizontal:Bc,"resize-both":"styles-module__resize-both__07ghL",resizeBoth:Vc,helperText:Mc,errorText:Oc},be=p.forwardRef(({label:s,helperText:t,error:o,size:l="md",variant:n="default",fullWidth:a=!1,resize:_="vertical",className:c="",disabled:i,...d},r)=>{const u=o?"error":n;return e.jsxs("div",{className:`${z.textareaWrapper} ${a?z.fullWidth:""} ${c}`,children:[s&&e.jsx("label",{className:z.label,children:s}),e.jsx("textarea",{ref:r,className:`${z.textarea} ${z[l]} ${z[u]} ${z[`resize-${_}`]} ${i?z.disabled:""}`,disabled:i,...d}),o&&e.jsx("span",{className:z.errorText,children:o}),!o&&t&&e.jsx("span",{className:z.helperText,children:t})]})});be.displayName="Textarea";const Pc="styles-module__timeline__khbcN",Fc="styles-module__vertical__EcI8f",Ac="styles-module__horizontal__kv46j",Kc="styles-module__timelineItem__j0IQ5",Gc="styles-module__timelineMarker__qk22j",Zc="styles-module__dot__gfgUf",Jc="styles-module__icon__hWWJd",qc="styles-module__primary__t4Cyx",Xc="styles-module__success__NWp7i",Uc="styles-module__warning__mfRNM",Hc="styles-module__error__AwsC3",Qc="styles-module__info__QaR5w",Yc="styles-module__timelineConnector__deWEH",e_="styles-module__timelineContent__Yzy-t",s_="styles-module__date__OIOdY",t_="styles-module__title__PZb8L",l_="styles-module__description__LesWv",N={timeline:Pc,vertical:Fc,horizontal:Ac,timelineItem:Kc,timelineMarker:Gc,dot:Zc,icon:Jc,default:"styles-module__default__QmROp",primary:qc,success:Xc,warning:Uc,error:Hc,info:Qc,timelineConnector:Yc,timelineContent:e_,date:s_,title:t_,description:l_};function n_({items:s,orientation:t="vertical",className:o=""}){return e.jsx("div",{className:`${N.timeline} ${N[t]} ${o}`,children:s.map((l,n)=>e.jsxs("div",{className:N.timelineItem,children:[e.jsx("div",{className:`${N.timelineMarker} ${l.color?N[l.color]:N.default}`,children:l.icon?e.jsx("span",{className:N.icon,children:l.icon}):e.jsx("span",{className:N.dot})}),n<s.length-1&&e.jsx("div",{className:`${N.timelineConnector} ${l.color?N[l.color]:N.default}`}),e.jsxs("div",{className:N.timelineContent,children:[l.date&&e.jsx("span",{className:N.date,children:l.date}),e.jsx("h4",{className:N.title,children:l.title}),l.description&&e.jsx("p",{className:N.description,children:l.description})]})]},l.id))})}const o_="styles-module__toggleSwitch__HDqFP",a_="styles-module__disabled__tbXNT",c_="styles-module__input__oBVdg",__="styles-module__sm__O8zA8",d_="styles-module__md__2vfHI",i_="styles-module__lg__S65-b",r_="styles-module__slider__gYGJ6",u_="styles-module__checked__-4pJ2",m_="styles-module__label__xIgTV",X={toggleSwitch:o_,disabled:a_,input:c_,switch:"styles-module__switch__4NsVE",sm:__,md:d_,lg:i_,slider:r_,checked:u_,label:m_};function p_({checked:s,defaultChecked:t=!1,onChange:o,label:l,disabled:n=!1,size:a="md",className:_=""}){const[c,i]=p.useState(t),d=s!==void 0,r=d?s:c,u=()=>{if(n)return;const y=!r;d||i(y),o?.(y)};return e.jsxs("label",{className:`${X.toggleSwitch} ${n?X.disabled:""} ${_}`,children:[e.jsx("input",{type:"checkbox",checked:r,onChange:u,disabled:n,className:X.input}),e.jsx("span",{className:`${X.switch} ${X[a]} ${r?X.checked:""}`,children:e.jsx("span",{className:X.slider})}),l&&e.jsx("span",{className:X.label,children:l})]})}const y_="styles-module__tooltipWrapper__jXXEP",h_="styles-module__tooltip__NP2ZM",$_="styles-module__fadeIn__5hHms",f_="styles-module__top__kvf2D",b_="styles-module__bottom__vkl92",x_="styles-module__left__q2e3D",g_="styles-module__right__FRcXP",v_="styles-module__tooltipContent__3R4WL",j_="styles-module__tooltipArrow__11JdT",de={tooltipWrapper:y_,tooltip:h_,fadeIn:$_,top:f_,bottom:b_,left:x_,right:g_,tooltipContent:v_,tooltipArrow:j_};function N_({children:s,content:t,position:o="top",delay:l=200,className:n=""}){const[a,_]=p.useState(!1),c=p.useRef(),i=p.useRef(null),d=()=>{c.current=setTimeout(()=>{_(!0)},l)},r=()=>{c.current&&clearTimeout(c.current),_(!1)};return p.useEffect(()=>()=>{c.current&&clearTimeout(c.current)},[]),e.jsxs("div",{className:`${de.tooltipWrapper} ${n}`,ref:i,onMouseEnter:d,onMouseLeave:r,onFocus:d,onBlur:r,children:[s,a&&e.jsxs("div",{className:`${de.tooltip} ${de[o]}`,role:"tooltip",children:[e.jsx("div",{className:de.tooltipContent,children:t}),e.jsx("div",{className:de.tooltipArrow})]})]})}const k_="styles-module__toastContainer__-uOPe",w_="styles-module__topLeft__MCDhr",C_="styles-module__topCenter__loC-J",I_="styles-module__topRight__alKSR",S_="styles-module__bottomLeft__sPZ6I",W_="styles-module__bottomCenter__12yLT",R_="styles-module__bottomRight__EdLbD",L_="styles-module__toast__q9A3H",T_="styles-module__slideIn__-Mhbw",E_="styles-module__fadeIn__I0huT",z_="styles-module__slideInLeft__Bs5x3",D_="styles-module__slideInDown__OUDGH",B_="styles-module__icon__iRAEt",V_="styles-module__message__id55d",M_="styles-module__closeButton__vnBxf",O_="styles-module__info__RjsXR",P_="styles-module__success__1qQf4",F_="styles-module__warning__UhEF-",A_="styles-module__error__sOYOC",S={toastContainer:k_,topLeft:w_,topCenter:C_,topRight:I_,bottomLeft:S_,bottomCenter:W_,bottomRight:R_,toast:L_,slideIn:T_,fadeIn:E_,slideInLeft:z_,slideInDown:D_,icon:B_,message:V_,closeButton:M_,info:O_,success:P_,warning:F_,error:A_},xe=p.createContext(void 0);function K_({children:s,position:t="top-right",maxToasts:o=5}){const[l,n]=p.useState([]),a=p.useCallback((d,r={})=>{const u=Math.random().toString(36).substring(2,9),y={id:u,message:d,variant:r.variant||"info",duration:r.duration??5e3,dismissible:r.dismissible??!0};n(h=>[...h,y].slice(-o)),y.duration&&y.duration>0&&setTimeout(()=>{_(u)},y.duration)},[o]),_=p.useCallback(d=>{n(r=>r.filter(u=>u.id!==d))},[]),c=()=>({"top-left":S.topLeft,"top-center":S.topCenter,"top-right":S.topRight,"bottom-left":S.bottomLeft,"bottom-center":S.bottomCenter,"bottom-right":S.bottomRight})[t],i=d=>({info:"ℹ",success:"✓",warning:"⚠",error:"✕"})[d];return e.jsxs(xe.Provider,{value:{showToast:a},children:[s,e.jsx("div",{className:`${S.toastContainer} ${c()}`,children:l.map(d=>e.jsxs("div",{className:`${S.toast} ${S[d.variant||"info"]}`,role:"alert","aria-live":"polite",children:[e.jsx("div",{className:S.icon,children:i(d.variant||"info")}),e.jsx("div",{className:S.message,children:d.message}),d.dismissible&&e.jsx("button",{className:S.closeButton,onClick:()=>_(d.id),"aria-label":"Close",children:"✕"})]},d.id))})]})}function G_(){const s=p.useContext(xe);if(!s)throw new Error("useToast must be used within a ToastProvider");return s}const Z_="styles-module__treeView__qtZfC",J_="styles-module__treeNodeWrapper__6m8CE",q_="styles-module__treeNode__xhhOE",X_="styles-module__disabled__-brxQ",U_="styles-module__expandIcon__Zp-Yb",H_="styles-module__expanded__A4kyH",Q_="styles-module__spacer__56WdM",Y_="styles-module__icon__AIE-i",ed="styles-module__label__XDGcT",sd="styles-module__children__N1c5Z",B={treeView:Z_,treeNodeWrapper:J_,treeNode:q_,disabled:X_,expandIcon:U_,expanded:H_,spacer:Q_,icon:Y_,label:ed,children:sd};function ge({node:s,level:t,expandedIds:o,onToggle:l,onNodeClick:n}){const a=s.children&&s.children.length>0,_=o.has(s.id),c=()=>{s.disabled||(a&&l(s.id),n?.(s))};return e.jsxs("div",{className:B.treeNodeWrapper,children:[e.jsxs("div",{className:`${B.treeNode} ${s.disabled?B.disabled:""}`,style:{paddingLeft:`${t*1.5}rem`},onClick:c,children:[a&&e.jsx("span",{className:`${B.expandIcon} ${_?B.expanded:""}`,children:"▶"}),!a&&e.jsx("span",{className:B.spacer}),s.icon&&e.jsx("span",{className:B.icon,children:s.icon}),e.jsx("span",{className:B.label,children:s.label})]}),a&&_&&e.jsx("div",{className:B.children,children:s.children.map(i=>e.jsx(ge,{node:i,level:t+1,expandedIds:o,onToggle:l,onNodeClick:n},i.id))})]})}function td({data:s,defaultExpandedIds:t=[],onNodeClick:o,className:l=""}){const[n,a]=p.useState(new Set(t)),_=c=>{a(i=>{const d=new Set(i);return d.has(c)?d.delete(c):d.add(c),d})};return e.jsx("div",{className:`${B.treeView} ${l}`,children:s.map(c=>e.jsx(ge,{node:c,level:0,expandedIds:n,onToggle:_,onNodeClick:o},c.id))})}const ld="styles-module__nav__sMQSv",nd="styles-module__vertical__6EFeu",od="styles-module__collapsed__eIVC7",ad="styles-module__horizontal__5UU20",cd="styles-module__navItemWrapper__Sc9wi",_d="styles-module__navItem__7O2YX",dd="styles-module__disabled__hvWkN",id="styles-module__nested__oejUs",rd="styles-module__icon__SLdZe",ud="styles-module__label__pji80",md="styles-module__badge__03qDH",pd="styles-module__expandIcon__bGlQG",yd="styles-module__dropdownIcon__uf35v",hd="styles-module__expanded__2R6-v",$d="styles-module__children__sfAGb",fd="styles-module__slideDown__xKrR1",bd="styles-module__dropdown__LuTLW",xd="styles-module__megaMenu__02Wp7",gd="styles-module__megaMenuWrapper__yLvBH",vd="styles-module__megaMenuGrid__4FrxU",jd="styles-module__megaMenuColumn__DI0z2",x={nav:ld,vertical:nd,collapsed:od,horizontal:ad,navItemWrapper:cd,navItem:_d,disabled:dd,nested:id,icon:rd,label:ud,badge:md,expandIcon:pd,dropdownIcon:yd,expanded:hd,children:$d,slideDown:fd,dropdown:bd,megaMenu:xd,megaMenuWrapper:gd,megaMenuGrid:vd,megaMenuColumn:jd};function ue({item:s,level:t,expandedIds:o,onToggle:l,onItemClick:n,orientation:a,collapsed:_}){const c=s.children&&s.children.length>0,i=o.has(s.id),d=s.megaMenu&&c,r=h=>{s.disabled||(c&&a==="vertical"&&(h.preventDefault(),l(s.id)),s.onClick&&s.onClick(),n?.(s))},u=()=>e.jsxs(e.Fragment,{children:[s.icon&&e.jsx("span",{className:x.icon,children:s.icon}),!_&&e.jsx("span",{className:x.label,children:s.label}),!_&&s.badge&&e.jsx("span",{className:x.badge,children:s.badge}),!_&&c&&a==="vertical"&&e.jsx("span",{className:`${x.expandIcon} ${i?x.expanded:""}`,children:"▶"}),!_&&c&&a==="horizontal"&&e.jsx("span",{className:x.dropdownIcon,children:"▼"})]}),y=s.href?e.jsx("a",{href:s.href,className:`${x.navItem} ${s.disabled?x.disabled:""} ${t>0?x.nested:""}`,onClick:r,children:u()}):e.jsx("button",{type:"button",className:`${x.navItem} ${s.disabled?x.disabled:""} ${t>0?x.nested:""}`,onClick:r,children:u()});return e.jsxs("div",{className:`${x.navItemWrapper} ${d?x.megaMenuWrapper:""}`,children:[y,c&&e.jsxs(e.Fragment,{children:[a==="vertical"&&i&&e.jsx("div",{className:x.children,children:s.children.map(h=>e.jsx(ue,{item:h,level:t+1,expandedIds:o,onToggle:l,onItemClick:n,orientation:a,collapsed:_},h.id))}),a==="horizontal"&&e.jsx("div",{className:`${x.dropdown} ${d?x.megaMenu:""}`,children:d?e.jsx("div",{className:x.megaMenuGrid,children:s.children.map(h=>e.jsx("div",{className:x.megaMenuColumn,children:e.jsx(ue,{item:h,level:t+1,expandedIds:o,onToggle:l,onItemClick:n,orientation:a,collapsed:_})},h.id))}):s.children.map(h=>e.jsx(ue,{item:h,level:t+1,expandedIds:o,onToggle:l,onItemClick:n,orientation:a,collapsed:_},h.id))})]})]})}function Nd({items:s,orientation:t="vertical",defaultExpandedIds:o=[],onItemClick:l,className:n="",collapsed:a=!1}){const[_,c]=p.useState(new Set(o)),i=d=>{c(r=>{const u=new Set(r);return u.has(d)?u.delete(d):u.add(d),u})};return e.jsx("nav",{className:`${x.nav} ${x[t]} ${a?x.collapsed:""} ${n}`,children:s.map(d=>e.jsx(ue,{item:d,level:0,expandedIds:_,onToggle:i,onItemClick:l,orientation:t,collapsed:a},d.id))})}exports.Accordion=De;exports.Alert=qe;exports.Avatar=cs;exports.Badge=fs;exports.Breadcrumbs=Cs;exports.Button=As;exports.ButtonGroup=qs;exports.Card=at;exports.Checkbox=mt;exports.Combobox=kt;exports.Datagrid=Dt;exports.DatePicker=Ot;exports.DateRangePicker=Zt;exports.Divider=sl;exports.Dropdown=ml;exports.FilePicker=Wl;exports.Header=Ml;exports.Input=fe;exports.Label=an;exports.List=$n;exports.Modal=Rn;exports.Pagination=Dn;exports.ProgressBar=Hn;exports.RadioButton=lo;exports.RangeInput=mo;exports.RichSelect=To;exports.SidePanel=Xo;exports.Signpost=aa;exports.Spinner=$a;exports.StackView=Va;exports.Stepper=Ya;exports.Table=mc;exports.Tabs=kc;exports.Textarea=be;exports.Timeline=n_;exports.ToastProvider=K_;exports.ToggleSwitch=p_;exports.Tooltip=N_;exports.TreeView=td;exports.VerticalNav=Nd;exports.useToast=G_;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/components/Accordion/index.tsx","../src/components/Alert/index.tsx","../src/components/Avatar/index.tsx","../src/components/Badge/index.tsx","../src/components/Breadcrumbs/index.tsx","../src/components/Button/index.tsx","../src/components/ButtonGroup/index.tsx","../src/components/Card/index.tsx","../src/components/Checkbox/index.tsx","../src/components/Combobox/index.tsx","../src/components/Datagrid/index.tsx","../src/components/DatePicker/index.tsx","../src/components/DateRangePicker/index.tsx","../src/components/Divider/index.tsx","../src/components/Dropdown/index.tsx","../src/components/FilePicker/index.tsx","../src/components/Header/index.tsx","../src/components/Input/index.tsx","../src/components/Label/index.tsx","../src/components/List/index.tsx","../src/components/Modal/index.tsx","../src/components/Pagination/index.tsx","../src/components/ProgressBar/index.tsx","../src/components/RadioButton/index.tsx","../src/components/RangeInput/index.tsx","../src/components/RichSelect/index.tsx","../src/components/SidePanel/index.tsx","../src/components/Signpost/index.tsx","../src/components/Spinner/index.tsx","../src/components/StackView/index.tsx","../src/components/Stepper/index.tsx","../src/components/Table/index.tsx","../src/components/Tabs/index.tsx","../src/components/Textarea/index.tsx","../src/components/Timeline/index.tsx","../src/components/ToggleSwitch/index.tsx","../src/components/Tooltip/index.tsx","../src/components/Toast/index.tsx","../src/components/TreeView/index.tsx","../src/components/VerticalNav/index.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface AccordionItemProps {\n\tid: string\n\ttitle: string\n\tcontent: React.ReactNode\n}\n\nexport interface AccordionProps {\n\titems: AccordionItemProps[]\n\tallowMultiple?: boolean\n\tdefaultOpenIds?: string[]\n\tclassName?: string\n}\n\nexport function Accordion({ items, allowMultiple = false, defaultOpenIds = [], className = '' }: AccordionProps) {\n\tconst [openIds, setOpenIds] = useState<Set<string>>(new Set(defaultOpenIds))\n\n\tconst toggleItem = (id: string) => {\n\t\tsetOpenIds((prev) => {\n\t\t\tconst newSet = new Set(prev)\n\t\t\tif (newSet.has(id)) {\n\t\t\t\tnewSet.delete(id)\n\t\t\t} else {\n\t\t\t\tif (!allowMultiple) {\n\t\t\t\t\tnewSet.clear()\n\t\t\t\t}\n\t\t\t\tnewSet.add(id)\n\t\t\t}\n\t\t\treturn newSet\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.accordion} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<AccordionItem key={item.id} item={item} isOpen={openIds.has(item.id)} onToggle={() => toggleItem(item.id)} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n\ninterface AccordionItemInternalProps {\n\titem: AccordionItemProps\n\tisOpen: boolean\n\tonToggle: () => void\n}\n\nfunction AccordionItem({ item, isOpen, onToggle }: AccordionItemInternalProps) {\n\treturn (\n\t\t<div className={`${styles.item} ${isOpen ? styles.open : ''}`}>\n\t\t\t<button className={styles.header} onClick={onToggle} aria-expanded={isOpen}>\n\t\t\t\t<span className={styles.title}>{item.title}</span>\n\t\t\t\t<span className={`${styles.icon} ${isOpen ? styles.iconOpen : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t<div className={`${styles.content} ${isOpen ? styles.contentOpen : ''}`}>\n\t\t\t\t<div className={styles.contentInner}>{item.content}</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AlertVariant = 'info' | 'success' | 'warning' | 'error'\n\nexport interface AlertProps {\n\tvariant?: AlertVariant\n\ttitle?: string\n\tmessage: string\n\tdismissible?: boolean\n\tonDismiss?: () => void\n\tclassName?: string\n}\n\nexport function Alert({ variant = 'info', title, message, dismissible = false, onDismiss, className = '' }: AlertProps) {\n\tconst icons = {\n\t\tinfo: 'ℹ',\n\t\tsuccess: '✓',\n\t\twarning: '⚠',\n\t\terror: '✕'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.alert} ${styles[variant]} ${className}`} role=\"alert\">\n\t\t\t<div className={styles.icon}>{icons[variant]}</div>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{title && <div className={styles.title}>{title}</div>}\n\t\t\t\t<div className={styles.message}>{message}</div>\n\t\t\t</div>\n\t\t\t{dismissible && (\n\t\t\t\t<button className={styles.dismissButton} onClick={onDismiss} aria-label=\"Dismiss alert\">\n\t\t\t\t\t✕\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type AvatarSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface AvatarProps {\n\tsrc?: string\n\talt?: string\n\tinitials?: string\n\tsize?: AvatarSize\n\tstatus?: 'online' | 'offline' | 'busy' | 'away'\n\tclassName?: string\n}\n\nexport function Avatar({ src, alt = 'Avatar', initials, size = 'md', status, className = '' }: AvatarProps) {\n\tconst getInitials = () => {\n\t\tif (initials) return initials\n\t\tif (alt) {\n\t\t\tconst words = alt.split(' ')\n\t\t\tif (words.length >= 2) {\n\t\t\t\treturn `${words[0][0]}${words[1][0]}`.toUpperCase()\n\t\t\t}\n\t\t\treturn alt.slice(0, 2).toUpperCase()\n\t\t}\n\t\treturn '?'\n\t}\n\n\treturn (\n\t\t<div className={`${styles.avatar} ${styles[size]} ${className}`}>\n\t\t\t{src ? <img src={src} alt={alt} className={styles.image} /> : <div className={styles.initials}>{getInitials()}</div>}\n\t\t\t{status && <span className={`${styles.status} ${styles[status]}`} aria-label={`Status: ${status}`} />}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\nexport type BadgeSize = 'sm' | 'md' | 'lg'\n\nexport interface BadgeProps {\n\tchildren: React.ReactNode\n\tvariant?: BadgeVariant\n\tsize?: BadgeSize\n\tdot?: boolean\n\tclassName?: string\n}\n\nexport function Badge({ children, variant = 'default', size = 'md', dot = false, className = '' }: BadgeProps) {\n\treturn (\n\t\t<span className={`${styles.badge} ${styles[variant]} ${styles[size]} ${className}`}>\n\t\t\t{dot && <span className={styles.dot} />}\n\t\t\t{children}\n\t\t</span>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface BreadcrumbItem {\n\tlabel: string\n\thref?: string\n\tonClick?: () => void\n}\n\nexport interface BreadcrumbsProps {\n\titems: BreadcrumbItem[]\n\tseparator?: string\n\tclassName?: string\n}\n\nexport function Breadcrumbs({ items, separator = '/', className = '' }: BreadcrumbsProps) {\n\treturn (\n\t\t<nav className={`${styles.breadcrumbs} ${className}`} aria-label=\"Breadcrumb\">\n\t\t\t<ol className={styles.list}>\n\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\tconst isLast = index === items.length - 1\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<li key={index} className={styles.item}>\n\t\t\t\t\t\t\t{item.href && !isLast ? (\n\t\t\t\t\t\t\t\t<a href={item.href} className={styles.link}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t) : item.onClick && !isLast ? (\n\t\t\t\t\t\t\t\t<button onClick={item.onClick} className={styles.button}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<span className={`${styles.text} ${isLast ? styles.current : ''}`}>{item.label}</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t<span className={styles.separator} aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t)\n\t\t\t\t})}\n\t\t\t</ol>\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'outline' | 'ghost'\nexport type ButtonSize = 'sm' | 'md' | 'lg'\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n\tvariant?: ButtonVariant\n\tsize?: ButtonSize\n\tfullWidth?: boolean\n\tloading?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Button({ variant = 'primary', size = 'md', fullWidth = false, loading = false, disabled, className = '', children, ...props }: ButtonProps) {\n\treturn (\n\t\t<button\n\t\t\tclassName={`\n ${styles.button}\n ${styles[variant]}\n ${styles[size]}\n ${fullWidth ? styles.fullWidth : ''}\n ${loading ? styles.loading : ''}\n ${className}\n `}\n\t\t\tdisabled={disabled || loading}\n\t\t\t{...props}\n\t\t>\n\t\t\t{loading && <span className={styles.spinner} />}\n\t\t\t<span className={loading ? styles.hiddenContent : ''}>{children}</span>\n\t\t</button>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical'\n\nexport interface ButtonGroupProps {\n\tchildren: React.ReactNode\n\torientation?: ButtonGroupOrientation\n\tfullWidth?: boolean\n\tclassName?: string\n}\n\nexport function ButtonGroup({ children, orientation = 'horizontal', fullWidth = false, className = '' }: ButtonGroupProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.buttonGroup}\n ${styles[orientation]}\n ${fullWidth ? styles.fullWidth : ''}\n ${className}\n `}\n\t\t\trole=\"group\"\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CardProps {\n\tchildren: React.ReactNode\n\ttitle?: string\n\tsubtitle?: string\n\tfooter?: React.ReactNode\n\timage?: string\n\thoverable?: boolean\n\tclassName?: string\n\tonClick?: () => void\n}\n\nexport function Card({ children, title, subtitle, footer, image, hoverable = false, className = '', onClick }: CardProps) {\n\tconst isClickable = !!onClick\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`\n ${styles.card}\n ${hoverable ? styles.hoverable : ''}\n ${isClickable ? styles.clickable : ''}\n ${className}\n `}\n\t\t\tonClick={onClick}\n\t\t\trole={isClickable ? 'button' : undefined}\n\t\t\ttabIndex={isClickable ? 0 : undefined}\n\t\t>\n\t\t\t{image && (\n\t\t\t\t<div className={styles.imageWrapper}>\n\t\t\t\t\t<img src={image} alt={title || ''} className={styles.image} />\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(title || subtitle) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h3 className={styles.title}>{title}</h3>}\n\t\t\t\t\t\t{subtitle && <p className={styles.subtitle}>{subtitle}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.body}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tindeterminate?: boolean\n}\n\nexport function Checkbox({ label, indeterminate = false, className = '', ...props }: CheckboxProps) {\n\tconst checkboxRef = React.useRef<HTMLInputElement>(null)\n\n\tReact.useEffect(() => {\n\t\tif (checkboxRef.current) {\n\t\t\tcheckboxRef.current.indeterminate = indeterminate\n\t\t}\n\t}, [indeterminate])\n\n\treturn (\n\t\t<label className={`${styles.checkboxWrapper} ${className}`}>\n\t\t\t<input ref={checkboxRef} type=\"checkbox\" className={styles.checkbox} {...props} />\n\t\t\t<span className={styles.checkmark}>\n\t\t\t\t{indeterminate ? <span className={styles.indeterminateIcon}>−</span> : <span className={styles.checkIcon}>✓</span>}\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ComboboxOption {\n\tvalue: string\n\tlabel: string\n\tdisabled?: boolean\n}\n\nexport interface ComboboxProps {\n\toptions: ComboboxOption[]\n\tvalue?: string\n\tdefaultValue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n\tallowCustomValue?: boolean\n\tfilterFunction?: (option: ComboboxOption, searchTerm: string) => boolean\n}\n\nexport function Combobox({\n\toptions,\n\tvalue: controlledValue,\n\tdefaultValue = '',\n\tonChange,\n\tplaceholder = 'Select or type...',\n\tdisabled = false,\n\tclassName = '',\n\tallowCustomValue = false,\n\tfilterFunction\n}: ComboboxProps) {\n\tconst [inputValue, setInputValue] = useState(defaultValue)\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [highlightedIndex, setHighlightedIndex] = useState(-1)\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\tconst listRef = useRef<HTMLUListElement>(null)\n\tconst wrapperRef = useRef<HTMLDivElement>(null)\n\n\tconst isControlled = controlledValue !== undefined\n\tconst currentValue = isControlled ? controlledValue : inputValue\n\n\tconst defaultFilter = (option: ComboboxOption, searchTerm: string) => {\n\t\treturn option.label.toLowerCase().includes(searchTerm.toLowerCase())\n\t}\n\n\tconst filterFunc = filterFunction || defaultFilter\n\n\tconst filteredOptions = options.filter((option) => filterFunc(option, currentValue))\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (e: MouseEvent) => {\n\t\t\tif (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (isOpen && highlightedIndex >= 0 && listRef.current) {\n\t\t\tconst highlightedElement = listRef.current.children[highlightedIndex] as HTMLElement\n\t\t\tif (highlightedElement) {\n\t\t\t\thighlightedElement.scrollIntoView({ block: 'nearest' })\n\t\t\t}\n\t\t}\n\t}, [highlightedIndex, isOpen])\n\n\tconst handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = e.target.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(newValue)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(true)\n\t\tsetHighlightedIndex(-1)\n\t}\n\n\tconst handleOptionClick = (option: ComboboxOption) => {\n\t\tif (option.disabled) return\n\n\t\tconst newValue = option.value\n\n\t\tif (!isControlled) {\n\t\t\tsetInputValue(option.label)\n\t\t}\n\n\t\tonChange?.(newValue)\n\t\tsetIsOpen(false)\n\t\tsetHighlightedIndex(-1)\n\t\tinputRef.current?.blur()\n\t}\n\n\tconst handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\tif (disabled) return\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(true)\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tconst maxIndex = filteredOptions.length - 1\n\t\t\t\t\tif (prev >= maxIndex) return maxIndex\n\t\t\t\t\tlet nextIndex = prev + 1\n\t\t\t\t\twhile (nextIndex <= maxIndex && filteredOptions[nextIndex].disabled) {\n\t\t\t\t\t\tnextIndex++\n\t\t\t\t\t}\n\t\t\t\t\treturn nextIndex <= maxIndex ? nextIndex : prev\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetHighlightedIndex((prev) => {\n\t\t\t\t\tif (prev <= 0) return -1\n\t\t\t\t\tlet prevIndex = prev - 1\n\t\t\t\t\twhile (prevIndex >= 0 && filteredOptions[prevIndex].disabled) {\n\t\t\t\t\t\tprevIndex--\n\t\t\t\t\t}\n\t\t\t\t\treturn prevIndex >= 0 ? prevIndex : -1\n\t\t\t\t})\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\t\te.preventDefault()\n\t\t\t\tif (isOpen && highlightedIndex >= 0) {\n\t\t\t\t\thandleOptionClick(filteredOptions[highlightedIndex])\n\t\t\t\t} else if (allowCustomValue) {\n\t\t\t\t\tonChange?.(currentValue)\n\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase 'Escape':\n\t\t\t\te.preventDefault()\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetHighlightedIndex(-1)\n\t\t\t\tinputRef.current?.blur()\n\t\t\t\tbreak\n\n\t\t\tcase 'Tab':\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tconst handleInputFocus = () => {\n\t\tif (!disabled) {\n\t\t\tsetIsOpen(true)\n\t\t}\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === currentValue)\n\tconst displayValue = selectedOption ? selectedOption.label : currentValue\n\n\treturn (\n\t\t<div ref={wrapperRef} className={`${styles.combobox} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tvalue={displayValue}\n\t\t\t\t\tonChange={handleInputChange}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonFocus={handleInputFocus}\n\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\taria-expanded={isOpen}\n\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\taria-controls=\"combobox-listbox\"\n\t\t\t\t/>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</div>\n\n\t\t\t{isOpen && filteredOptions.length > 0 && (\n\t\t\t\t<ul ref={listRef} id=\"combobox-listbox\" className={styles.menu} role=\"listbox\">\n\t\t\t\t\t{filteredOptions.map((option, index) => (\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${highlightedIndex === index ? styles.highlighted : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => handleOptionClick(option)}\n\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\taria-selected={option.value === currentValue}\n\t\t\t\t\t\t\taria-disabled={option.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</li>\n\t\t\t\t\t))}\n\t\t\t\t</ul>\n\t\t\t)}\n\n\t\t\t{isOpen && filteredOptions.length === 0 && (\n\t\t\t\t<div className={styles.noResults}>{allowCustomValue ? 'Press Enter to use custom value' : 'No results found'}</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatagridColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface DatagridProps<T = any> {\n\tcolumns: DatagridColumn<T>[]\n\tdata: T[]\n\tonRowClick?: (row: T) => void\n\tstriped?: boolean\n\thoverable?: boolean\n\tclassName?: string\n}\n\nexport function Datagrid<T extends Record<string, any>>({ columns, data, onRowClick, striped = false, hoverable = true, className = '' }: DatagridProps<T>) {\n\treturn (\n\t\t<div className={`${styles.datagridWrapper} ${className}`}>\n\t\t\t<table className={styles.datagrid}>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, rowIndex) => (\n\t\t\t\t\t\t<tr\n\t\t\t\t\t\t\tkey={rowIndex}\n\t\t\t\t\t\t\tclassName={`\n ${styles.tr}\n ${striped && rowIndex % 2 === 1 ? styles.striped : ''}\n ${hoverable ? styles.hoverable : ''}\n ${onRowClick ? styles.clickable : ''}\n `}\n\t\t\t\t\t\t\tonClick={() => onRowClick?.(row)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key], row) : row[column.key]}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DatePickerProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange'> {\n\tvalue?: Date\n\tonChange?: (date: Date | null) => void\n\tminDate?: Date\n\tmaxDate?: Date\n}\n\nexport function DatePicker({ value, onChange, minDate, maxDate, className = '', ...props }: DatePickerProps) {\n\tconst [inputValue, setInputValue] = useState<string>(value ? formatDate(value) : '')\n\n\tconst handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetInputValue(dateValue)\n\n\t\tif (dateValue) {\n\t\t\tconst date = new Date(dateValue)\n\t\t\tif (!isNaN(date.getTime())) {\n\t\t\t\tonChange?.(date)\n\t\t\t}\n\t\t} else {\n\t\t\tonChange?.(null)\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.datePicker} ${className}`}>\n\t\t\t<input\n\t\t\t\ttype=\"date\"\n\t\t\t\tclassName={styles.input}\n\t\t\t\tvalue={inputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t\t<span className={styles.icon}>📅</span>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DateRange {\n\tstart: Date | null\n\tend: Date | null\n}\n\nexport interface DateRangePickerProps {\n\tvalue?: DateRange\n\tonChange?: (range: DateRange) => void\n\tminDate?: Date\n\tmaxDate?: Date\n\tclassName?: string\n}\n\nexport function DateRangePicker({ value, onChange, minDate, maxDate, className = '' }: DateRangePickerProps) {\n\tconst [startValue, setStartValue] = useState<string>(value?.start ? formatDate(value.start) : '')\n\tconst [endValue, setEndValue] = useState<string>(value?.end ? formatDate(value.end) : '')\n\n\tconst handleStartChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetStartValue(dateValue)\n\n\t\tconst startDate = dateValue ? new Date(dateValue) : null\n\t\tconst endDate = endValue ? new Date(endValue) : null\n\n\t\tif (startDate && !isNaN(startDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: null, end: endDate })\n\t\t}\n\t}\n\n\tconst handleEndChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst dateValue = e.target.value\n\t\tsetEndValue(dateValue)\n\n\t\tconst startDate = startValue ? new Date(startValue) : null\n\t\tconst endDate = dateValue ? new Date(dateValue) : null\n\n\t\tif (endDate && !isNaN(endDate.getTime())) {\n\t\t\tonChange?.({ start: startDate, end: endDate })\n\t\t} else {\n\t\t\tonChange?.({ start: startDate, end: null })\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.dateRangePicker} ${className}`}>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={startValue}\n\t\t\t\t\tonChange={handleStartChange}\n\t\t\t\t\tmin={minDate ? formatDate(minDate) : undefined}\n\t\t\t\t\tmax={endValue || (maxDate ? formatDate(maxDate) : undefined)}\n\t\t\t\t\tplaceholder=\"Start date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t\t<span className={styles.separator}>→</span>\n\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tclassName={styles.input}\n\t\t\t\t\tvalue={endValue}\n\t\t\t\t\tonChange={handleEndChange}\n\t\t\t\t\tmin={startValue || (minDate ? formatDate(minDate) : undefined)}\n\t\t\t\t\tmax={maxDate ? formatDate(maxDate) : undefined}\n\t\t\t\t\tplaceholder=\"End date\"\n\t\t\t\t/>\n\t\t\t\t<span className={styles.icon}>📅</span>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction formatDate(date: Date): string {\n\tconst year = date.getFullYear()\n\tconst month = String(date.getMonth() + 1).padStart(2, '0')\n\tconst day = String(date.getDate()).padStart(2, '0')\n\treturn `${year}-${month}-${day}`\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type DividerOrientation = 'horizontal' | 'vertical'\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted'\n\nexport interface DividerProps {\n\torientation?: DividerOrientation\n\tvariant?: DividerVariant\n\tlabel?: string\n\tclassName?: string\n}\n\nexport function Divider({ orientation = 'horizontal', variant = 'solid', label, className = '' }: DividerProps) {\n\tconst dividerClass = `${styles.divider} ${styles[orientation]} ${styles[variant]} ${className}`\n\n\tif (label && orientation === 'horizontal') {\n\t\treturn (\n\t\t\t<div className={dividerClass}>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t\t<span className={styles.label}>{label}</span>\n\t\t\t\t<span className={styles.line}></span>\n\t\t\t</div>\n\t\t)\n\t}\n\n\treturn <div className={dividerClass}></div>\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface DropdownOption {\n\tlabel: string\n\tvalue: string\n\tdisabled?: boolean\n}\n\nexport interface DropdownProps {\n\toptions: DropdownOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tclassName?: string\n}\n\nexport function Dropdown({ options, value, onChange, placeholder = 'Select an option', disabled = false, className = '' }: DropdownProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [selectedValue, setSelectedValue] = useState(value || '')\n\tconst dropdownRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tsetSelectedValue(optionValue)\n\t\tsetIsOpen(false)\n\t\tonChange?.(optionValue)\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === selectedValue)\n\tconst displayText = selectedOption?.label || placeholder\n\n\treturn (\n\t\t<div className={`${styles.dropdown} ${className}`} ref={dropdownRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t<span className={selectedOption ? styles.selected : styles.placeholder}>{displayText}</span>\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === selectedValue ? styles.active : ''} ${\n\t\t\t\t\t\t\t\toption.disabled ? styles.optionDisabled : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useRef, useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport type FileStatus = 'idle' | 'processing' | 'uploaded' | 'failed'\n\nexport interface FileItem {\n\tfile: File\n\tstatus: FileStatus\n\tprogress?: number\n\terror?: string\n}\n\nexport interface FilePickerProps {\n\taccept?: string\n\tmultiple?: boolean\n\tmaxSize?: number\n\tdisabled?: boolean\n\tonChange?: (files: FileItem[]) => void\n\tonUpload?: (file: File) => Promise<void>\n\tclassName?: string\n}\n\nexport function FilePicker({ accept, multiple = false, maxSize, disabled = false, onChange, onUpload, className = '' }: FilePickerProps) {\n\tconst [files, setFiles] = useState<FileItem[]>([])\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\tconst handleFileSelect = async (selectedFiles: FileList | null) => {\n\t\tif (!selectedFiles || disabled) return\n\n\t\tconst newFiles: FileItem[] = Array.from(selectedFiles).map((file) => {\n\t\t\tif (maxSize && file.size > maxSize) {\n\t\t\t\treturn { file, status: 'failed' as FileStatus, error: 'File too large' }\n\t\t\t}\n\t\t\treturn { file, status: 'idle' as FileStatus }\n\t\t})\n\n\t\tsetFiles((prev) => [...prev, ...newFiles])\n\t\tonChange?.(newFiles)\n\n\t\tif (onUpload) {\n\t\t\tfor (const fileItem of newFiles) {\n\t\t\t\tif (fileItem.status !== 'failed') {\n\t\t\t\t\tawait processFile(fileItem)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst processFile = async (fileItem: FileItem) => {\n\t\tupdateFileStatus(fileItem.file.name, 'processing')\n\n\t\ttry {\n\t\t\tawait onUpload?.(fileItem.file)\n\t\t\tupdateFileStatus(fileItem.file.name, 'uploaded')\n\t\t} catch (error) {\n\t\t\tupdateFileStatus(fileItem.file.name, 'failed', (error as Error).message)\n\t\t}\n\t}\n\n\tconst updateFileStatus = (fileName: string, status: FileStatus, error?: string) => {\n\t\tsetFiles((prev) => prev.map((f) => (f.file.name === fileName ? { ...f, status, error } : f)))\n\t}\n\n\tconst removeFile = (fileName: string) => {\n\t\tsetFiles((prev) => prev.filter((f) => f.file.name !== fileName))\n\t}\n\n\tconst getStatusIcon = (status: FileStatus) => {\n\t\tswitch (status) {\n\t\t\tcase 'processing':\n\t\t\t\treturn '⏳'\n\t\t\tcase 'uploaded':\n\t\t\t\treturn '✓'\n\t\t\tcase 'failed':\n\t\t\t\treturn '✗'\n\t\t\tdefault:\n\t\t\t\treturn '📄'\n\t\t}\n\t}\n\n\treturn (\n\t\t<div className={`${styles.filePicker} ${className}`}>\n\t\t\t<div className={`${styles.dropzone} ${disabled ? styles.disabled : ''}`} onClick={() => !disabled && inputRef.current?.click()}>\n\t\t\t\t<span className={styles.icon}>📁</span>\n\t\t\t\t<span className={styles.text}>Click to select files</span>\n\t\t\t</div>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\taccept={accept}\n\t\t\t\tmultiple={multiple}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonChange={(e) => handleFileSelect(e.target.files)}\n\t\t\t\tclassName={styles.input}\n\t\t\t/>\n\t\t\t{files.length > 0 && (\n\t\t\t\t<div className={styles.fileList}>\n\t\t\t\t\t{files.map((fileItem, index) => (\n\t\t\t\t\t\t<div key={`${fileItem.file.name}-${index}`} className={`${styles.fileItem} ${styles[fileItem.status]}`}>\n\t\t\t\t\t\t\t<span className={styles.fileIcon}>{getStatusIcon(fileItem.status)}</span>\n\t\t\t\t\t\t\t<span className={styles.fileName}>{fileItem.file.name}</span>\n\t\t\t\t\t\t\t<span className={styles.fileSize}>{(fileItem.file.size / 1024).toFixed(1)} KB</span>\n\t\t\t\t\t\t\t{fileItem.error && <span className={styles.error}>{fileItem.error}</span>}\n\t\t\t\t\t\t\t<button className={styles.remove} onClick={() => removeFile(fileItem.file.name)}>\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface HeaderProps {\n\tlogo?: React.ReactNode\n\ttitle?: string\n\tchildren?: React.ReactNode\n\tactions?: React.ReactNode\n\tsticky?: boolean\n\tclassName?: string\n}\n\nexport function Header({ logo, title, children, actions, sticky = false, className = '' }: HeaderProps) {\n\treturn (\n\t\t<header className={`${styles.header} ${sticky ? styles.sticky : ''} ${className}`}>\n\t\t\t<div className={styles.content}>\n\t\t\t\t{(logo || title) && (\n\t\t\t\t\t<div className={styles.brand}>\n\t\t\t\t\t\t{logo && <div className={styles.logo}>{logo}</div>}\n\t\t\t\t\t\t{title && <h1 className={styles.title}>{title}</h1>}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{children && <div className={styles.nav}>{children}</div>}\n\t\t\t\t{actions && <div className={styles.actions}>{actions}</div>}\n\t\t\t</div>\n\t\t</header>\n\t)\n}\n","import React, { forwardRef } from 'react'\nimport styles from './styles.module.scss'\n\nexport type InputSize = 'sm' | 'md' | 'lg'\nexport type InputVariant = 'default' | 'error' | 'success'\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n\tlabel?: string\n\terror?: string\n\thelperText?: string\n\tsize?: InputSize\n\tvariant?: InputVariant\n\ticon?: React.ReactNode\n\tfullWidth?: boolean\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n\t({ label, error, helperText, size = 'md', variant = 'default', icon, fullWidth = false, className = '', disabled = false, ...props }, ref) => {\n\t\tconst finalVariant = error ? 'error' : variant\n\t\tconst containerClass = `${styles.inputContainer} ${fullWidth ? styles.fullWidth : ''} ${className}`\n\t\tconst inputClass = `${styles.input} ${styles[size]} ${styles[finalVariant]} ${icon ? styles.withIcon : ''} ${disabled ? styles.disabled : ''}`\n\n\t\treturn (\n\t\t\t<div className={containerClass}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<div className={styles.wrapper}>\n\t\t\t\t\t{icon && <span className={styles.icon}>{icon}</span>}\n\t\t\t\t\t<input ref={ref} className={inputClass} disabled={disabled} {...props} />\n\t\t\t\t</div>\n\t\t\t\t{(error || helperText) && <span className={`${styles.helperText} ${error ? styles.errorText : ''}`}>{error || helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nInput.displayName = 'Input'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type LabelSize = 'sm' | 'md' | 'lg'\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n\tsize?: LabelSize\n\trequired?: boolean\n\tdisabled?: boolean\n\tchildren: React.ReactNode\n}\n\nexport function Label({ size = 'md', required = false, disabled = false, className = '', children, ...props }: LabelProps) {\n\treturn (\n\t\t<label className={`${styles.label} ${styles[size]} ${disabled ? styles.disabled : ''} ${className}`} {...props}>\n\t\t\t{children}\n\t\t\t{required && <span className={styles.required}>*</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface ListItem {\n\tid: string\n\tcontent: React.ReactNode\n\ticon?: React.ReactNode\n\tbadge?: React.ReactNode\n\tdisabled?: boolean\n\tonClick?: () => void\n}\n\nexport interface ListProps {\n\titems: ListItem[]\n\thoverable?: boolean\n\tdividers?: boolean\n\tclassName?: string\n}\n\nexport function List({ items, hoverable = false, dividers = false, className = '' }: ListProps) {\n\treturn (\n\t\t<ul className={`${styles.list} ${dividers ? styles.dividers : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<li\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\tclassName={`${styles.item} ${hoverable && !item.disabled ? styles.hoverable : ''} ${\n\t\t\t\t\t\titem.disabled ? styles.disabled : ''\n\t\t\t\t\t} ${item.onClick && !item.disabled ? styles.clickable : ''}`}\n\t\t\t\t\tonClick={item.disabled ? undefined : item.onClick}\n\t\t\t\t>\n\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t<span className={styles.content}>{item.content}</span>\n\t\t\t\t\t{item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t\t</li>\n\t\t\t))}\n\t\t</ul>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface ModalProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tsize?: ModalSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function Modal({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: ModalProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.modal} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface PaginationProps {\n\tcurrentPage: number\n\ttotalPages: number\n\tonPageChange: (page: number) => void\n\tshowFirstLast?: boolean\n\tsiblingCount?: number\n\tclassName?: string\n}\n\nexport function Pagination({ currentPage, totalPages, onPageChange, showFirstLast = true, siblingCount = 1, className = '' }: PaginationProps) {\n\tconst range = (start: number, end: number) => {\n\t\treturn Array.from({ length: end - start + 1 }, (_, i) => start + i)\n\t}\n\n\tconst getPaginationRange = () => {\n\t\tconst totalPageNumbers = siblingCount + 5\n\n\t\tif (totalPages <= totalPageNumbers) {\n\t\t\treturn range(1, totalPages)\n\t\t}\n\n\t\tconst leftSiblingIndex = Math.max(currentPage - siblingCount, 1)\n\t\tconst rightSiblingIndex = Math.min(currentPage + siblingCount, totalPages)\n\t\tconst showLeftDots = leftSiblingIndex > 2\n\t\tconst showRightDots = rightSiblingIndex < totalPages - 1\n\n\t\tif (!showLeftDots && showRightDots) {\n\t\t\tconst leftRange = range(1, 3 + 2 * siblingCount)\n\t\t\treturn [...leftRange, '...', totalPages]\n\t\t}\n\n\t\tif (showLeftDots && !showRightDots) {\n\t\t\tconst rightRange = range(totalPages - (2 + 2 * siblingCount), totalPages)\n\t\t\treturn [1, '...', ...rightRange]\n\t\t}\n\n\t\tconst middleRange = range(leftSiblingIndex, rightSiblingIndex)\n\t\treturn [1, '...', ...middleRange, '...', totalPages]\n\t}\n\n\tconst paginationRange = getPaginationRange()\n\n\tconst handlePrevious = () => {\n\t\tif (currentPage > 1) onPageChange(currentPage - 1)\n\t}\n\n\tconst handleNext = () => {\n\t\tif (currentPage < totalPages) onPageChange(currentPage + 1)\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.pagination} ${className}`}>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(1)} disabled={currentPage === 1}>\n\t\t\t\t\t«\n\t\t\t\t</button>\n\t\t\t)}\n\t\t\t<button className={styles.pageButton} onClick={handlePrevious} disabled={currentPage === 1}>\n\t\t\t\t‹\n\t\t\t</button>\n\t\t\t{paginationRange.map((pageNumber, index) => {\n\t\t\t\tif (pageNumber === '...') {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span key={`dots-${index}`} className={styles.dots}>\n\t\t\t\t\t\t\t...\n\t\t\t\t\t\t</span>\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={pageNumber}\n\t\t\t\t\t\tclassName={`${styles.pageButton} ${pageNumber === currentPage ? styles.active : ''}`}\n\t\t\t\t\t\tonClick={() => onPageChange(pageNumber as number)}\n\t\t\t\t\t>\n\t\t\t\t\t\t{pageNumber}\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t})}\n\t\t\t<button className={styles.pageButton} onClick={handleNext} disabled={currentPage === totalPages}>\n\t\t\t\t›\n\t\t\t</button>\n\t\t\t{showFirstLast && (\n\t\t\t\t<button className={styles.pageButton} onClick={() => onPageChange(totalPages)} disabled={currentPage === totalPages}>\n\t\t\t\t\t»\n\t\t\t\t</button>\n\t\t\t)}\n\t\t</nav>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info'\nexport type ProgressBarSize = 'sm' | 'md' | 'lg'\n\nexport interface ProgressBarProps {\n\tvalue: number\n\tmax?: number\n\tvariant?: ProgressBarVariant\n\tsize?: ProgressBarSize\n\tshowLabel?: boolean\n\tlabel?: string\n\tanimated?: boolean\n\tstriped?: boolean\n\tclassName?: string\n}\n\nexport function ProgressBar({\n\tvalue,\n\tmax = 100,\n\tvariant = 'default',\n\tsize = 'md',\n\tshowLabel = false,\n\tlabel,\n\tanimated = false,\n\tstriped = false,\n\tclassName = ''\n}: ProgressBarProps) {\n\tconst percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\tconst displayLabel = label || `${Math.round(percentage)}%`\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t<div className={`${styles.progressBar} ${styles[size]}`}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={`${styles.fill} ${styles[variant]} ${striped ? styles.striped : ''} ${animated ? styles.animated : ''}`}\n\t\t\t\t\tstyle={{ width: `${percentage}%` }}\n\t\t\t\t>\n\t\t\t\t\t{showLabel && <span className={styles.label}>{displayLabel}</span>}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RadioButtonProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tvalue: string\n\tname: string\n\tchecked?: boolean\n\tdisabled?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RadioButton({ label, value, name, checked = false, disabled = false, onChange, className = '', ...props }: RadioButtonProps) {\n\treturn (\n\t\t<label className={`${styles.radioButton} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"radio\" name={name} value={value} checked={checked} disabled={disabled} onChange={onChange} className={styles.input} {...props} />\n\t\t\t<span className={styles.radio}></span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RangeInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n\tlabel?: string\n\tmin?: number\n\tmax?: number\n\tstep?: number\n\tvalue?: number\n\tshowValue?: boolean\n\tshowMinMax?: boolean\n\tonChange?: (event: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport function RangeInput({\n\tlabel,\n\tmin = 0,\n\tmax = 100,\n\tstep = 1,\n\tvalue = 50,\n\tshowValue = false,\n\tshowMinMax = false,\n\tonChange,\n\tclassName = '',\n\tdisabled = false,\n\t...props\n}: RangeInputProps) {\n\tconst percentage = ((value - min) / (max - min)) * 100\n\n\treturn (\n\t\t<div className={`${styles.container} ${className}`}>\n\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t<div className={styles.rangeWrapper}>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{min}</span>}\n\t\t\t\t<div className={styles.inputWrapper}>\n\t\t\t\t\t<input\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={min}\n\t\t\t\t\t\tmax={max}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChange={onChange}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tclassName={`${styles.input} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tstyle={{ '--percentage': `${percentage}%` } as React.CSSProperties}\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{showMinMax && <span className={styles.minMax}>{max}</span>}\n\t\t\t</div>\n\t\t\t{showValue && <span className={styles.value}>{value}</span>}\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface RichSelectOption {\n\tlabel: string\n\tvalue: string\n\tdescription?: string\n\ticon?: React.ReactNode\n\tdisabled?: boolean\n}\n\nexport interface RichSelectProps {\n\toptions: RichSelectOption[]\n\tvalue?: string\n\tonChange?: (value: string) => void\n\tplaceholder?: string\n\tdisabled?: boolean\n\tsearchable?: boolean\n\tclassName?: string\n}\n\nexport function RichSelect({\n\toptions,\n\tvalue,\n\tonChange,\n\tplaceholder = 'Select an option',\n\tdisabled = false,\n\tsearchable = false,\n\tclassName = ''\n}: RichSelectProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst [searchQuery, setSearchQuery] = useState('')\n\tconst selectRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (selectRef.current && !selectRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t\tsetSearchQuery('')\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [])\n\n\tconst handleSelect = (optionValue: string) => {\n\t\tif (disabled) return\n\t\tonChange?.(optionValue)\n\t\tsetIsOpen(false)\n\t\tsetSearchQuery('')\n\t}\n\n\tconst selectedOption = options.find((opt) => opt.value === value)\n\tconst filteredOptions = searchable ? options.filter((opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())) : options\n\n\treturn (\n\t\t<div className={`${styles.richSelect} ${className}`} ref={selectRef}>\n\t\t\t<button\n\t\t\t\tclassName={`${styles.trigger} ${disabled ? styles.disabled : ''}`}\n\t\t\t\tonClick={() => !disabled && setIsOpen(!isOpen)}\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttype=\"button\"\n\t\t\t>\n\t\t\t\t{selectedOption ? (\n\t\t\t\t\t<div className={styles.selectedContent}>\n\t\t\t\t\t\t{selectedOption.icon && <span className={styles.icon}>{selectedOption.icon}</span>}\n\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t<span className={styles.label}>{selectedOption.label}</span>\n\t\t\t\t\t\t\t{selectedOption.description && <span className={styles.description}>{selectedOption.description}</span>}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<span className={styles.placeholder}>{placeholder}</span>\n\t\t\t\t)}\n\t\t\t\t<span className={`${styles.arrow} ${isOpen ? styles.open : ''}`}>▼</span>\n\t\t\t</button>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={styles.menu}>\n\t\t\t\t\t{searchable && (\n\t\t\t\t\t\t<div className={styles.searchWrapper}>\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tclassName={styles.searchInput}\n\t\t\t\t\t\t\t\tplaceholder=\"Search...\"\n\t\t\t\t\t\t\t\tvalue={searchQuery}\n\t\t\t\t\t\t\t\tonChange={(e) => setSearchQuery(e.target.value)}\n\t\t\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className={styles.optionsList}>\n\t\t\t\t\t\t{filteredOptions.map((option) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t\tclassName={`${styles.option} ${option.value === value ? styles.active : ''} ${option.disabled ? styles.optionDisabled : ''}`}\n\t\t\t\t\t\t\t\tonClick={() => !option.disabled && handleSelect(option.value)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{option.icon && <span className={styles.icon}>{option.icon}</span>}\n\t\t\t\t\t\t\t\t<div className={styles.textContent}>\n\t\t\t\t\t\t\t\t\t<span className={styles.label}>{option.label}</span>\n\t\t\t\t\t\t\t\t\t{option.description && <span className={styles.description}>{option.description}</span>}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{filteredOptions.length === 0 && <div className={styles.noResults}>No results found</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SidePanelPosition = 'left' | 'right'\nexport type SidePanelSize = 'sm' | 'md' | 'lg'\n\nexport interface SidePanelProps {\n\tisOpen: boolean\n\tonClose: () => void\n\ttitle?: string\n\tchildren: React.ReactNode\n\tfooter?: React.ReactNode\n\tposition?: SidePanelPosition\n\tsize?: SidePanelSize\n\tcloseOnOverlayClick?: boolean\n\tshowCloseButton?: boolean\n\tclassName?: string\n}\n\nexport function SidePanel({\n\tisOpen,\n\tonClose,\n\ttitle,\n\tchildren,\n\tfooter,\n\tposition = 'right',\n\tsize = 'md',\n\tcloseOnOverlayClick = true,\n\tshowCloseButton = true,\n\tclassName = ''\n}: SidePanelProps) {\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tdocument.body.style.overflow = 'hidden'\n\t\t} else {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t\treturn () => {\n\t\t\tdocument.body.style.overflow = ''\n\t\t}\n\t}, [isOpen])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (e: KeyboardEvent) => {\n\t\t\tif (e.key === 'Escape' && isOpen) {\n\t\t\t\tonClose()\n\t\t\t}\n\t\t}\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [isOpen, onClose])\n\n\tif (!isOpen) return null\n\n\treturn (\n\t\t<div className={styles.overlay} onClick={closeOnOverlayClick ? onClose : undefined}>\n\t\t\t<div className={`${styles.sidePanel} ${styles[position]} ${styles[size]} ${className}`} onClick={(e) => e.stopPropagation()}>\n\t\t\t\t{(title || showCloseButton) && (\n\t\t\t\t\t<div className={styles.header}>\n\t\t\t\t\t\t{title && <h2 className={styles.title}>{title}</h2>}\n\t\t\t\t\t\t{showCloseButton && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={onClose} type=\"button\">\n\t\t\t\t\t\t\t\t×\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t<div className={styles.content}>{children}</div>\n\t\t\t\t{footer && <div className={styles.footer}>{footer}</div>}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type SignpostPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface SignpostProps {\n\ttrigger: React.ReactNode\n\tchildren: React.ReactNode\n\tposition?: SignpostPosition\n\tclassName?: string\n}\n\nexport function Signpost({ trigger, children, position = 'top', className = '' }: SignpostProps) {\n\tconst [isOpen, setIsOpen] = useState(false)\n\tconst signpostRef = useRef<HTMLDivElement>(null)\n\n\tuseEffect(() => {\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tif (signpostRef.current && !signpostRef.current.contains(event.target as Node)) {\n\t\t\t\tsetIsOpen(false)\n\t\t\t}\n\t\t}\n\n\t\tif (isOpen) {\n\t\t\tdocument.addEventListener('mousedown', handleClickOutside)\n\t\t}\n\t\treturn () => document.removeEventListener('mousedown', handleClickOutside)\n\t}, [isOpen])\n\n\treturn (\n\t\t<div className={`${styles.signpost} ${className}`} ref={signpostRef}>\n\t\t\t<div className={styles.trigger} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t{trigger}\n\t\t\t</div>\n\t\t\t{isOpen && (\n\t\t\t\t<div className={`${styles.content} ${styles[position]}`}>\n\t\t\t\t\t<div className={styles.arrow}></div>\n\t\t\t\t\t<div className={styles.inner}>{children}</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg'\nexport type SpinnerVariant = 'default' | 'primary' | 'secondary'\n\nexport interface SpinnerProps {\n\tsize?: SpinnerSize\n\tvariant?: SpinnerVariant\n\tclassName?: string\n\tlabel?: string\n}\n\nexport function Spinner({ size = 'md', variant = 'default', className = '', label }: SpinnerProps) {\n\treturn (\n\t\t<div className={`${styles.spinnerWrapper} ${className}`}>\n\t\t\t<div className={`${styles.spinner} ${styles[size]} ${styles[variant]}`} role=\"status\" aria-label={label || 'Loading'}>\n\t\t\t\t<div className={styles.circle}></div>\n\t\t\t</div>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StackViewDirection = 'horizontal' | 'vertical'\nexport type StackViewAlign = 'start' | 'center' | 'end' | 'stretch'\nexport type StackViewJustify = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly'\nexport type StackViewSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n\nexport interface StackViewProps {\n\tchildren: React.ReactNode\n\tdirection?: StackViewDirection\n\talign?: StackViewAlign\n\tjustify?: StackViewJustify\n\tspacing?: StackViewSpacing\n\twrap?: boolean\n\tclassName?: string\n\tstyle?: React.CSSProperties\n}\n\nexport function StackView({\n\tchildren,\n\tdirection = 'horizontal',\n\talign = 'start',\n\tjustify = 'start',\n\tspacing = 'md',\n\twrap = false,\n\tclassName = '',\n\tstyle\n}: StackViewProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.stackView} ${styles[direction]} ${styles[`align-${align}`]} ${styles[`justify-${justify}`]} ${styles[`spacing-${spacing}`]} ${wrap ? styles.wrap : ''} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{children}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type StepperOrientation = 'horizontal' | 'vertical'\n\nexport interface StepperStep {\n\tlabel: string\n\tdescription?: string\n\ticon?: React.ReactNode\n}\n\nexport interface StepperProps {\n\tsteps: StepperStep[]\n\tcurrentStep: number\n\torientation?: StepperOrientation\n\tonStepClick?: (index: number) => void\n\tclassName?: string\n}\n\nexport function Stepper({ steps, currentStep, orientation = 'horizontal', onStepClick, className = '' }: StepperProps) {\n\treturn (\n\t\t<div className={`${styles.stepper} ${styles[orientation]} ${className}`}>\n\t\t\t{steps.map((step, index) => {\n\t\t\t\tconst isCompleted = index < currentStep\n\t\t\t\tconst isCurrent = index === currentStep\n\t\t\t\tconst isClickable = onStepClick && (isCompleted || isCurrent)\n\n\t\t\t\treturn (\n\t\t\t\t\t<React.Fragment key={index}>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={`${styles.step} ${isCompleted ? styles.completed : ''} ${isCurrent ? styles.current : ''} ${isClickable ? styles.clickable : ''}`}\n\t\t\t\t\t\t\tonClick={() => isClickable && onStepClick(index)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className={styles.stepIndicator}>\n\t\t\t\t\t\t\t\t{isCompleted ? (\n\t\t\t\t\t\t\t\t\t<span className={styles.checkmark}>✓</span>\n\t\t\t\t\t\t\t\t) : step.icon ? (\n\t\t\t\t\t\t\t\t\tstep.icon\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<span className={styles.stepNumber}>{index + 1}</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className={styles.stepContent}>\n\t\t\t\t\t\t\t\t<div className={styles.stepLabel}>{step.label}</div>\n\t\t\t\t\t\t\t\t{step.description && <div className={styles.stepDescription}>{step.description}</div>}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{index < steps.length - 1 && <div className={`${styles.connector} ${isCompleted ? styles.completed : ''}`}></div>}\n\t\t\t\t\t</React.Fragment>\n\t\t\t\t)\n\t\t\t})}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TableColumn<T = any> {\n\tkey: string\n\theader: string\n\twidth?: string\n\trender?: (value: any, row: T) => React.ReactNode\n}\n\nexport interface TableProps<T = any> {\n\tcolumns: TableColumn<T>[]\n\tdata: T[]\n\tstriped?: boolean\n\thoverable?: boolean\n\tbordered?: boolean\n\tcompact?: boolean\n\tonRowClick?: (row: T) => void\n\tclassName?: string\n}\n\nexport function Table<T = any>({\n\tcolumns,\n\tdata,\n\tstriped = false,\n\thoverable = false,\n\tbordered = false,\n\tcompact = false,\n\tonRowClick,\n\tclassName = ''\n}: TableProps<T>) {\n\treturn (\n\t\t<div className={`${styles.tableWrapper} ${className}`}>\n\t\t\t<table\n\t\t\t\tclassName={`${styles.table} ${striped ? styles.striped : ''} ${hoverable ? styles.hoverable : ''} ${bordered ? styles.bordered : ''} ${compact ? styles.compact : ''}`}\n\t\t\t>\n\t\t\t\t<thead className={styles.thead}>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t<th key={column.key} className={styles.th} style={{ width: column.width }}>\n\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody className={styles.tbody}>\n\t\t\t\t\t{data.map((row, index) => (\n\t\t\t\t\t\t<tr key={index} className={`${styles.tr} ${onRowClick ? styles.clickable : ''}`} onClick={() => onRowClick?.(row)}>\n\t\t\t\t\t\t\t{columns.map((column) => (\n\t\t\t\t\t\t\t\t<td key={column.key} className={styles.td}>\n\t\t\t\t\t\t\t\t\t{column.render ? column.render(row[column.key as keyof T], row) : String(row[column.key as keyof T] ?? '')}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t{data.length === 0 && <div className={styles.empty}>No data available</div>}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TabItem {\n\tid: string\n\tlabel: string\n\tcontent: React.ReactNode\n\tdisabled?: boolean\n\ticon?: React.ReactNode\n}\n\nexport type TabsVariant = 'default' | 'pills' | 'underline'\n\nexport interface TabsProps {\n\titems: TabItem[]\n\tdefaultActiveId?: string\n\tvariant?: TabsVariant\n\tfullWidth?: boolean\n\tonChange?: (id: string) => void\n\tclassName?: string\n}\n\nexport function Tabs({ items, defaultActiveId, variant = 'default', fullWidth = false, onChange, className = '' }: TabsProps) {\n\tconst [activeId, setActiveId] = useState(defaultActiveId || items[0]?.id)\n\n\tconst handleTabClick = (id: string, disabled?: boolean) => {\n\t\tif (disabled) return\n\t\tsetActiveId(id)\n\t\tonChange?.(id)\n\t}\n\n\tconst activeItem = items.find((item) => item.id === activeId)\n\n\treturn (\n\t\t<div className={`${styles.tabsContainer} ${className}`}>\n\t\t\t<div className={`${styles.tabsList} ${styles[variant]} ${fullWidth ? styles.fullWidth : ''}`} role=\"tablist\">\n\t\t\t\t{items.map((item) => (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\taria-selected={item.id === activeId}\n\t\t\t\t\t\taria-disabled={item.disabled}\n\t\t\t\t\t\tclassName={`${styles.tab} ${item.id === activeId ? styles.active : ''} ${item.disabled ? styles.disabled : ''}`}\n\t\t\t\t\t\tonClick={() => handleTabClick(item.id, item.disabled)}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t\t\t\t<span>{item.label}</span>\n\t\t\t\t\t</button>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className={styles.tabContent} role=\"tabpanel\">\n\t\t\t\t{activeItem?.content}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type TextareaSize = 'sm' | 'md' | 'lg'\nexport type TextareaVariant = 'default' | 'success' | 'error'\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n\tlabel?: string\n\thelperText?: string\n\terror?: string\n\tsize?: TextareaSize\n\tvariant?: TextareaVariant\n\tfullWidth?: boolean\n\tresize?: 'none' | 'vertical' | 'horizontal' | 'both'\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n\t({ label, helperText, error, size = 'md', variant = 'default', fullWidth = false, resize = 'vertical', className = '', disabled, ...rest }, ref) => {\n\t\tconst computedVariant = error ? 'error' : variant\n\n\t\treturn (\n\t\t\t<div className={`${styles.textareaWrapper} ${fullWidth ? styles.fullWidth : ''} ${className}`}>\n\t\t\t\t{label && <label className={styles.label}>{label}</label>}\n\t\t\t\t<textarea\n\t\t\t\t\tref={ref}\n\t\t\t\t\tclassName={`${styles.textarea} ${styles[size]} ${styles[computedVariant]} ${styles[`resize-${resize}`]} ${disabled ? styles.disabled : ''}`}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t\t{error && <span className={styles.errorText}>{error}</span>}\n\t\t\t\t{!error && helperText && <span className={styles.helperText}>{helperText}</span>}\n\t\t\t</div>\n\t\t)\n\t}\n)\n\nTextarea.displayName = 'Textarea'\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TimelineItem {\n\tid: string\n\ttitle: string\n\tdescription?: string\n\tdate?: string\n\ticon?: React.ReactNode\n\tcolor?: 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info'\n}\n\nexport type TimelineOrientation = 'vertical' | 'horizontal'\n\nexport interface TimelineProps {\n\titems: TimelineItem[]\n\torientation?: TimelineOrientation\n\tclassName?: string\n}\n\nexport function Timeline({ items, orientation = 'vertical', className = '' }: TimelineProps) {\n\treturn (\n\t\t<div className={`${styles.timeline} ${styles[orientation]} ${className}`}>\n\t\t\t{items.map((item, index) => (\n\t\t\t\t<div key={item.id} className={styles.timelineItem}>\n\t\t\t\t\t<div className={`${styles.timelineMarker} ${item.color ? styles[item.color] : styles.default}`}>\n\t\t\t\t\t\t{item.icon ? <span className={styles.icon}>{item.icon}</span> : <span className={styles.dot}></span>}\n\t\t\t\t\t</div>\n\t\t\t\t\t{index < items.length - 1 && <div className={`${styles.timelineConnector} ${item.color ? styles[item.color] : styles.default}`}></div>}\n\t\t\t\t\t<div className={styles.timelineContent}>\n\t\t\t\t\t\t{item.date && <span className={styles.date}>{item.date}</span>}\n\t\t\t\t\t\t<h4 className={styles.title}>{item.title}</h4>\n\t\t\t\t\t\t{item.description && <p className={styles.description}>{item.description}</p>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToggleSwitchSize = 'sm' | 'md' | 'lg'\n\nexport interface ToggleSwitchProps {\n\tchecked?: boolean\n\tdefaultChecked?: boolean\n\tonChange?: (checked: boolean) => void\n\tlabel?: string\n\tdisabled?: boolean\n\tsize?: ToggleSwitchSize\n\tclassName?: string\n}\n\nexport function ToggleSwitch({ checked, defaultChecked = false, onChange, label, disabled = false, size = 'md', className = '' }: ToggleSwitchProps) {\n\tconst [internalChecked, setInternalChecked] = React.useState(defaultChecked)\n\tconst isControlled = checked !== undefined\n\tconst isChecked = isControlled ? checked : internalChecked\n\n\tconst handleChange = () => {\n\t\tif (disabled) return\n\n\t\tconst newChecked = !isChecked\n\t\tif (!isControlled) {\n\t\t\tsetInternalChecked(newChecked)\n\t\t}\n\t\tonChange?.(newChecked)\n\t}\n\n\treturn (\n\t\t<label className={`${styles.toggleSwitch} ${disabled ? styles.disabled : ''} ${className}`}>\n\t\t\t<input type=\"checkbox\" checked={isChecked} onChange={handleChange} disabled={disabled} className={styles.input} />\n\t\t\t<span className={`${styles.switch} ${styles[size]} ${isChecked ? styles.checked : ''}`}>\n\t\t\t\t<span className={styles.slider}></span>\n\t\t\t</span>\n\t\t\t{label && <span className={styles.label}>{label}</span>}\n\t\t</label>\n\t)\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right'\n\nexport interface TooltipProps {\n\tchildren: React.ReactElement\n\tcontent: React.ReactNode\n\tposition?: TooltipPosition\n\tdelay?: number\n\tclassName?: string\n}\n\nexport function Tooltip({ children, content, position = 'top', delay = 200, className = '' }: TooltipProps) {\n\tconst [isVisible, setIsVisible] = useState(false)\n\tconst timeoutRef = useRef<NodeJS.Timeout>()\n\tconst triggerRef = useRef<HTMLDivElement>(null)\n\n\tconst showTooltip = () => {\n\t\ttimeoutRef.current = setTimeout(() => {\n\t\t\tsetIsVisible(true)\n\t\t}, delay)\n\t}\n\n\tconst hideTooltip = () => {\n\t\tif (timeoutRef.current) {\n\t\t\tclearTimeout(timeoutRef.current)\n\t\t}\n\t\tsetIsVisible(false)\n\t}\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (timeoutRef.current) {\n\t\t\t\tclearTimeout(timeoutRef.current)\n\t\t\t}\n\t\t}\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`${styles.tooltipWrapper} ${className}`}\n\t\t\tref={triggerRef}\n\t\t\tonMouseEnter={showTooltip}\n\t\t\tonMouseLeave={hideTooltip}\n\t\t\tonFocus={showTooltip}\n\t\t\tonBlur={hideTooltip}\n\t\t>\n\t\t\t{children}\n\t\t\t{isVisible && (\n\t\t\t\t<div className={`${styles.tooltip} ${styles[position]}`} role=\"tooltip\">\n\t\t\t\t\t<div className={styles.tooltipContent}>{content}</div>\n\t\t\t\t\t<div className={styles.tooltipArrow}></div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n","import React, { createContext, useContext, useState, useCallback, useEffect } from 'react'\nimport styles from './styles.module.scss'\n\nexport type ToastVariant = 'info' | 'success' | 'warning' | 'error'\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'\n\nexport interface ToastOptions {\n\tvariant?: ToastVariant\n\tduration?: number\n\tdismissible?: boolean\n}\n\ninterface ToastItem extends ToastOptions {\n\tid: string\n\tmessage: string\n}\n\ninterface ToastContextValue {\n\tshowToast: (message: string, options?: ToastOptions) => void\n}\n\nconst ToastContext = createContext<ToastContextValue | undefined>(undefined)\n\nexport interface ToastProviderProps {\n\tchildren: React.ReactNode\n\tposition?: ToastPosition\n\tmaxToasts?: number\n}\n\nexport function ToastProvider({ children, position = 'top-right', maxToasts = 5 }: ToastProviderProps) {\n\tconst [toasts, setToasts] = useState<ToastItem[]>([])\n\n\tconst showToast = useCallback(\n\t\t(message: string, options: ToastOptions = {}) => {\n\t\t\tconst id = Math.random().toString(36).substring(2, 9)\n\t\t\tconst newToast: ToastItem = {\n\t\t\t\tid,\n\t\t\t\tmessage,\n\t\t\t\tvariant: options.variant || 'info',\n\t\t\t\tduration: options.duration ?? 5000,\n\t\t\t\tdismissible: options.dismissible ?? true\n\t\t\t}\n\n\t\t\tsetToasts((prev) => {\n\t\t\t\tconst updated = [...prev, newToast]\n\t\t\t\treturn updated.slice(-maxToasts)\n\t\t\t})\n\n\t\t\tif (newToast.duration && newToast.duration > 0) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tremoveToast(id)\n\t\t\t\t}, newToast.duration)\n\t\t\t}\n\t\t},\n\t\t[maxToasts]\n\t)\n\n\tconst removeToast = useCallback((id: string) => {\n\t\tsetToasts((prev) => prev.filter((toast) => toast.id !== id))\n\t}, [])\n\n\tconst getPositionClasses = () => {\n\t\tconst positionMap: Record<ToastPosition, string> = {\n\t\t\t'top-left': styles.topLeft,\n\t\t\t'top-center': styles.topCenter,\n\t\t\t'top-right': styles.topRight,\n\t\t\t'bottom-left': styles.bottomLeft,\n\t\t\t'bottom-center': styles.bottomCenter,\n\t\t\t'bottom-right': styles.bottomRight\n\t\t}\n\t\treturn positionMap[position]\n\t}\n\n\tconst getIcon = (variant: ToastVariant) => {\n\t\tconst icons = {\n\t\t\tinfo: 'ℹ',\n\t\t\tsuccess: '✓',\n\t\t\twarning: '⚠',\n\t\t\terror: '✕'\n\t\t}\n\t\treturn icons[variant]\n\t}\n\n\treturn (\n\t\t<ToastContext.Provider value={{ showToast }}>\n\t\t\t{children}\n\t\t\t<div className={`${styles.toastContainer} ${getPositionClasses()}`}>\n\t\t\t\t{toasts.map((toast) => (\n\t\t\t\t\t<div key={toast.id} className={`${styles.toast} ${styles[toast.variant || 'info']}`} role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t\t<div className={styles.icon}>{getIcon(toast.variant || 'info')}</div>\n\t\t\t\t\t\t<div className={styles.message}>{toast.message}</div>\n\t\t\t\t\t\t{toast.dismissible && (\n\t\t\t\t\t\t\t<button className={styles.closeButton} onClick={() => removeToast(toast.id)} aria-label=\"Close\">\n\t\t\t\t\t\t\t\t✕\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</ToastContext.Provider>\n\t)\n}\n\nexport function useToast() {\n\tconst context = useContext(ToastContext)\n\tif (!context) {\n\t\tthrow new Error('useToast must be used within a ToastProvider')\n\t}\n\treturn context\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface TreeNode {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\tchildren?: TreeNode[]\n\tdisabled?: boolean\n}\n\nexport interface TreeViewProps {\n\tdata: TreeNode[]\n\tdefaultExpandedIds?: string[]\n\tonNodeClick?: (node: TreeNode) => void\n\tclassName?: string\n}\n\ninterface TreeNodeItemProps {\n\tnode: TreeNode\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonNodeClick?: (node: TreeNode) => void\n}\n\nfunction TreeNodeItem({ node, level, expandedIds, onToggle, onNodeClick }: TreeNodeItemProps) {\n\tconst hasChildren = node.children && node.children.length > 0\n\tconst isExpanded = expandedIds.has(node.id)\n\n\tconst handleClick = () => {\n\t\tif (node.disabled) return\n\t\tif (hasChildren) {\n\t\t\tonToggle(node.id)\n\t\t}\n\t\tonNodeClick?.(node)\n\t}\n\n\treturn (\n\t\t<div className={styles.treeNodeWrapper}>\n\t\t\t<div className={`${styles.treeNode} ${node.disabled ? styles.disabled : ''}`} style={{ paddingLeft: `${level * 1.5}rem` }} onClick={handleClick}>\n\t\t\t\t{hasChildren && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t\t{!hasChildren && <span className={styles.spacer}></span>}\n\t\t\t\t{node.icon && <span className={styles.icon}>{node.icon}</span>}\n\t\t\t\t<span className={styles.label}>{node.label}</span>\n\t\t\t</div>\n\t\t\t{hasChildren && isExpanded && (\n\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t{node.children!.map((child) => (\n\t\t\t\t\t\t<TreeNodeItem key={child.id} node={child} level={level + 1} expandedIds={expandedIds} onToggle={onToggle} onNodeClick={onNodeClick} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function TreeView({ data, defaultExpandedIds = [], onNodeClick, className = '' }: TreeViewProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<div className={`${styles.treeView} ${className}`}>\n\t\t\t{data.map((node) => (\n\t\t\t\t<TreeNodeItem key={node.id} node={node} level={0} expandedIds={expandedIds} onToggle={handleToggle} onNodeClick={onNodeClick} />\n\t\t\t))}\n\t\t</div>\n\t)\n}\n","import React, { useState } from 'react'\nimport styles from './styles.module.scss'\n\nexport interface NavItem {\n\tid: string\n\tlabel: string\n\ticon?: React.ReactNode\n\thref?: string\n\tonClick?: () => void\n\tchildren?: NavItem[]\n\tdisabled?: boolean\n\tbadge?: React.ReactNode\n\tmegaMenu?: boolean\n}\n\nexport type NavOrientation = 'vertical' | 'horizontal'\n\nexport interface VerticalNavProps {\n\titems: NavItem[]\n\torientation?: NavOrientation\n\tdefaultExpandedIds?: string[]\n\tonItemClick?: (item: NavItem) => void\n\tclassName?: string\n\tcollapsed?: boolean\n}\n\ninterface NavItemComponentProps {\n\titem: NavItem\n\tlevel: number\n\texpandedIds: Set<string>\n\tonToggle: (id: string) => void\n\tonItemClick?: (item: NavItem) => void\n\torientation: NavOrientation\n\tcollapsed?: boolean\n}\n\nfunction NavItemComponent({ item, level, expandedIds, onToggle, onItemClick, orientation, collapsed }: NavItemComponentProps) {\n\tconst hasChildren = item.children && item.children.length > 0\n\tconst isExpanded = expandedIds.has(item.id)\n\tconst isMegaMenu = item.megaMenu && hasChildren\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\tif (item.disabled) return\n\n\t\tif (hasChildren && orientation === 'vertical') {\n\t\t\te.preventDefault()\n\t\t\tonToggle(item.id)\n\t\t}\n\n\t\tif (item.onClick) {\n\t\t\titem.onClick()\n\t\t}\n\n\t\tonItemClick?.(item)\n\t}\n\n\tconst renderContent = () => (\n\t\t<>\n\t\t\t{item.icon && <span className={styles.icon}>{item.icon}</span>}\n\t\t\t{!collapsed && <span className={styles.label}>{item.label}</span>}\n\t\t\t{!collapsed && item.badge && <span className={styles.badge}>{item.badge}</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'vertical' && <span className={`${styles.expandIcon} ${isExpanded ? styles.expanded : ''}`}>▶</span>}\n\t\t\t{!collapsed && hasChildren && orientation === 'horizontal' && <span className={styles.dropdownIcon}>▼</span>}\n\t\t</>\n\t)\n\n\tconst content = item.href ? (\n\t\t<a href={item.href} className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</a>\n\t) : (\n\t\t<button type=\"button\" className={`${styles.navItem} ${item.disabled ? styles.disabled : ''} ${level > 0 ? styles.nested : ''}`} onClick={handleClick}>\n\t\t\t{renderContent()}\n\t\t</button>\n\t)\n\n\treturn (\n\t\t<div className={`${styles.navItemWrapper} ${isMegaMenu ? styles.megaMenuWrapper : ''}`}>\n\t\t\t{content}\n\t\t\t{hasChildren && (\n\t\t\t\t<>\n\t\t\t\t\t{orientation === 'vertical' && isExpanded && (\n\t\t\t\t\t\t<div className={styles.children}>\n\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{orientation === 'horizontal' && (\n\t\t\t\t\t\t<div className={`${styles.dropdown} ${isMegaMenu ? styles.megaMenu : ''}`}>\n\t\t\t\t\t\t\t{isMegaMenu ? (\n\t\t\t\t\t\t\t\t<div className={styles.megaMenuGrid}>\n\t\t\t\t\t\t\t\t\t{item.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t\t<div key={child.id} className={styles.megaMenuColumn}>\n\t\t\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\titem.children!.map((child) => (\n\t\t\t\t\t\t\t\t\t<NavItemComponent\n\t\t\t\t\t\t\t\t\t\tkey={child.id}\n\t\t\t\t\t\t\t\t\t\titem={child}\n\t\t\t\t\t\t\t\t\t\tlevel={level + 1}\n\t\t\t\t\t\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\t\t\t\t\t\tonToggle={onToggle}\n\t\t\t\t\t\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\t\t\t\t\t\torientation={orientation}\n\t\t\t\t\t\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport function VerticalNav({ items, orientation = 'vertical', defaultExpandedIds = [], onItemClick, className = '', collapsed = false }: VerticalNavProps) {\n\tconst [expandedIds, setExpandedIds] = useState<Set<string>>(new Set(defaultExpandedIds))\n\n\tconst handleToggle = (id: string) => {\n\t\tsetExpandedIds((prev) => {\n\t\t\tconst next = new Set(prev)\n\t\t\tif (next.has(id)) {\n\t\t\t\tnext.delete(id)\n\t\t\t} else {\n\t\t\t\tnext.add(id)\n\t\t\t}\n\t\t\treturn next\n\t\t})\n\t}\n\n\treturn (\n\t\t<nav className={`${styles.nav} ${styles[orientation]} ${collapsed ? styles.collapsed : ''} ${className}`}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<NavItemComponent\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\titem={item}\n\t\t\t\t\tlevel={0}\n\t\t\t\t\texpandedIds={expandedIds}\n\t\t\t\t\tonToggle={handleToggle}\n\t\t\t\t\tonItemClick={onItemClick}\n\t\t\t\t\torientation={orientation}\n\t\t\t\t\tcollapsed={collapsed}\n\t\t\t\t/>\n\t\t\t))}\n\t\t</nav>\n\t)\n}\n"],"names":["Accordion","items","allowMultiple","defaultOpenIds","className","openIds","setOpenIds","useState","toggleItem","id","prev","newSet","jsx","styles","item","AccordionItem","isOpen","onToggle","jsxs","Alert","variant","title","message","dismissible","onDismiss","icons","Avatar","src","alt","initials","size","status","getInitials","words","Badge","children","dot","Breadcrumbs","separator","index","isLast","Button","fullWidth","loading","disabled","props","ButtonGroup","orientation","Card","subtitle","footer","image","hoverable","onClick","isClickable","Checkbox","label","indeterminate","checkboxRef","React","Combobox","options","controlledValue","defaultValue","onChange","placeholder","allowCustomValue","filterFunction","inputValue","setInputValue","setIsOpen","highlightedIndex","setHighlightedIndex","inputRef","useRef","listRef","wrapperRef","isControlled","currentValue","filterFunc","option","searchTerm","filteredOptions","useEffect","handleClickOutside","e","highlightedElement","handleInputChange","newValue","handleOptionClick","handleKeyDown","maxIndex","nextIndex","prevIndex","handleInputFocus","selectedOption","opt","displayValue","Datagrid","columns","data","onRowClick","striped","column","row","rowIndex","DatePicker","value","minDate","maxDate","formatDate","handleChange","dateValue","date","year","month","day","DateRangePicker","startValue","setStartValue","endValue","setEndValue","handleStartChange","startDate","endDate","handleEndChange","Divider","dividerClass","Dropdown","selectedValue","setSelectedValue","dropdownRef","event","handleSelect","optionValue","displayText","FilePicker","accept","multiple","maxSize","onUpload","files","setFiles","handleFileSelect","selectedFiles","newFiles","file","fileItem","processFile","updateFileStatus","error","fileName","f","removeFile","getStatusIcon","Header","logo","actions","sticky","Input","forwardRef","helperText","icon","ref","finalVariant","containerClass","inputClass","Label","required","List","dividers","Modal","onClose","closeOnOverlayClick","showCloseButton","handleEscape","Pagination","currentPage","totalPages","onPageChange","showFirstLast","siblingCount","range","start","end","_","i","paginationRange","totalPageNumbers","leftSiblingIndex","rightSiblingIndex","showLeftDots","showRightDots","handlePrevious","handleNext","pageNumber","ProgressBar","max","showLabel","animated","percentage","displayLabel","RadioButton","name","checked","RangeInput","min","step","showValue","showMinMax","RichSelect","searchable","searchQuery","setSearchQuery","selectRef","SidePanel","position","Signpost","trigger","signpostRef","Spinner","StackView","direction","align","justify","spacing","wrap","style","Stepper","steps","currentStep","onStepClick","isCompleted","isCurrent","Table","bordered","compact","Tabs","defaultActiveId","activeId","setActiveId","handleTabClick","activeItem","Textarea","resize","rest","computedVariant","Timeline","ToggleSwitch","defaultChecked","internalChecked","setInternalChecked","isChecked","newChecked","Tooltip","content","delay","isVisible","setIsVisible","timeoutRef","triggerRef","showTooltip","hideTooltip","ToastContext","createContext","ToastProvider","maxToasts","toasts","setToasts","showToast","useCallback","newToast","removeToast","toast","getPositionClasses","getIcon","useToast","context","useContext","TreeNodeItem","node","level","expandedIds","onNodeClick","hasChildren","isExpanded","handleClick","child","TreeView","defaultExpandedIds","setExpandedIds","handleToggle","next","NavItemComponent","onItemClick","collapsed","isMegaMenu","renderContent","Fragment","VerticalNav"],"mappings":"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"}