@nice2dev/ui 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +253 -207
  2. package/dist/NiceButton-B5RXLDwI.cjs +1 -0
  3. package/dist/NiceButton-DmTHNHet.js +450 -0
  4. package/dist/NiceErrorBoundary-D1hh5GGe.js +732 -0
  5. package/dist/NiceErrorBoundary-Dta4TGee.cjs +1 -0
  6. package/dist/NiceModuleLifecyclePanel-BapdidD6.js +4776 -0
  7. package/dist/NiceModuleLifecyclePanel-CsFsm534.cjs +1 -0
  8. package/dist/NicePinCodeInput-4q8yULuo.js +13359 -0
  9. package/dist/NicePinCodeInput-eD2q8nGa.cjs +692 -0
  10. package/dist/NicePinCodeInput.css +1 -0
  11. package/dist/NiceSavedQueryPanel-DUw8plYP.js +5666 -0
  12. package/dist/NiceSavedQueryPanel-xpk09zy1.cjs +596 -0
  13. package/dist/NiceSavedQueryPanel.css +1 -0
  14. package/dist/NiceStockChart-CHlOnWzN.cjs +287 -0
  15. package/dist/NiceStockChart-Cpmv9_Cc.js +2341 -0
  16. package/dist/NiceStockChart.css +1 -0
  17. package/dist/NiceToggle-C1UKGXmJ.js +209 -0
  18. package/dist/NiceToggle-lVi-ETi0.cjs +1 -0
  19. package/dist/NiceWindow-D1awkyFl.js +1636 -0
  20. package/dist/NiceWindow-yARTUJsg.cjs +1 -0
  21. package/dist/charts.cjs +1 -0
  22. package/dist/charts.d.ts +1043 -0
  23. package/dist/charts.mjs +23 -0
  24. package/dist/core-CfXsl755.js +16305 -0
  25. package/dist/core-DGJSUW64.cjs +96 -0
  26. package/dist/data.cjs +1 -0
  27. package/dist/data.d.ts +2003 -0
  28. package/dist/data.mjs +21 -0
  29. package/dist/editors.cjs +1 -0
  30. package/dist/editors.d.ts +2728 -0
  31. package/dist/editors.mjs +66 -0
  32. package/dist/feedback.cjs +1 -0
  33. package/dist/feedback.d.ts +339 -0
  34. package/dist/feedback.mjs +16 -0
  35. package/dist/index-C853adw1.cjs +6199 -0
  36. package/dist/index-CNwVELPJ.js +62857 -0
  37. package/dist/index-CUx_-gKK.cjs +1 -0
  38. package/dist/index-x8mRM4Jc.js +17 -0
  39. package/dist/index.cjs +1 -7866
  40. package/dist/index.css +1 -0
  41. package/dist/index.d.ts +1160 -2
  42. package/dist/index.mjs +972 -105889
  43. package/dist/navigation.cjs +1 -0
  44. package/dist/navigation.d.ts +1862 -0
  45. package/dist/navigation.mjs +519 -0
  46. package/dist/overlays.cjs +1 -0
  47. package/dist/overlays.d.ts +706 -0
  48. package/dist/overlays.mjs +26 -0
  49. package/package.json +31 -1
@@ -0,0 +1,692 @@
1
+ "use strict";const e=require("react/jsx-runtime"),n=require("react"),K=require("./core-DGJSUW64.cjs"),ke=require("./NiceButton-B5RXLDwI.cjs"),Ft=require("./index-CUx_-gKK.cjs"),Bt=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,displayStyle:x,value:O,defaultValue:z,onChange:L,onBlur:I,onKeyDown:F,placeholder:S,rows:m=3,maxLength:f,resize:w="vertical",autoFocus:b,showCount:j,submitOnEnter:h,onSubmit:N,showKeyboardHints:T},P)=>{const _=K.useNiceAccessMode(k,M);if(_==="hidden")return null;_==="disabled"&&(r=!0),_==="readOnly"&&(d=!0);const{t:C}=K.useNiceTranslation(),u=K.useControlId(M),B=K.useComponentDisplayStyle("input",x),g=K.useComponentDisplayClass("input",x),p=O?.length??0,s=f?p>f:!1,l={key:"Enter",ctrl:!0,description:C("shortcuts.submit","Submit")},c=n.useCallback(D=>{h&&K.matchesShortcut(D,l)&&(D.preventDefault(),N?.()),F?.(D)},[h,N,F,l]),E=n.useMemo(()=>{const D=[];return h&&D.push(l),D.push({key:"Tab",description:C("shortcuts.indent","Indent (when supported)")}),D},[h,C,l]);return e.jsxs("div",{className:`nice-field ${A||""}`,style:H,children:[t&&e.jsxs("label",{htmlFor:u,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:[t,T&&E.length>0&&e.jsx(K.NiceKeyboardHint,{shortcuts:E,size:"sm"})]}),e.jsx("textarea",{ref:P,id:u,className:`nice-textarea nice-input--${$} nice-textarea--ds-${g} ${i?"nice-textarea--error":""} ${r?"nice-textarea--disabled":""}`,style:{...B,resize:w},name:y,value:O,defaultValue:z,placeholder:S,rows:m,maxLength:f,disabled:r,readOnly:d,autoFocus:b,"aria-invalid":!!i,"aria-describedby":i?`${u}-error`:a?`${u}-helper`:void 0,onChange:D=>L?.(D.target.value),onBlur:I,onKeyDown:c}),(j||f)&&e.jsxs("div",{className:`nice-textarea__counter ${s?"nice-textarea__counter--over":""}`,children:[p,f?` / ${f}`:""]}),i&&e.jsx("div",{id:`${u}-error`,className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{id:`${u}-helper`,className:"nice-field__helper",children:a})]})});Bt.displayName="NiceTextArea";const Ot=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x,onChange:O,onBlur:z,onKeyDown:L,min:I,max:F,type:S="date",submitOnEnter:m,onSubmit:f,showKeyboardHints:w,displayStyle:b},j)=>{K.useComponentDisplayStyle("input",b),K.useComponentDisplayClass("input",b);const h=K.useNiceAccessMode(k,M);if(h==="hidden")return null;h==="disabled"&&(r=!0),h==="readOnly"&&(d=!0);const{t:N}=K.useNiceTranslation(),T=K.useControlId(M),P=K.useSubmitOnEnter({enabled:m,onSubmit:f}),_=n.useCallback(u=>{P(u),L?.(u)},[P,L]),C=n.useMemo(()=>{const u=[];return m&&u.push(K.COMMON_SHORTCUTS.submit),u.push({key:"ArrowUp",description:N("shortcuts.increaseDate","Increase value")}),u.push({key:"ArrowDown",description:N("shortcuts.decreaseDate","Decrease value")}),u},[m,N]);return e.jsxs("div",{className:`nice-field ${A||""}`,style:H,children:[t&&e.jsxs("label",{htmlFor:T,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:[t,w&&C.length>0&&e.jsx(K.NiceKeyboardHint,{shortcuts:C,size:"sm"})]}),e.jsx("div",{className:`nice-input nice-input--${$} ${i?"nice-input--error":""} ${r?"nice-input--disabled":""} ${d?"nice-input--readonly":""}`,children:e.jsx("input",{ref:j,id:T,className:"nice-input__native",type:S,name:y,value:x??"",min:I,max:F,disabled:r,readOnly:d,"aria-invalid":!!i,onChange:u=>O?.(u.target.value),onBlur:z,onKeyDown:_})}),i&&e.jsx("div",{className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{className:"nice-field__helper",children:a})]})});Ot.displayName="NiceDatePicker";const ea=({label:t,helperText:a,error:i,required:o,disabled:r,size:d="md",name:$,id:y,className:M,style:A,accessMode:H,options:k,value:x,onChange:O,direction:z="horizontal",showKeyboardHints:L,displayStyle:I})=>{K.useComponentDisplayClass("toggle",I);const F=K.useNiceAccessMode(H,y);if(F==="hidden")return null;(F==="disabled"||F==="readOnly")&&(r=!0);const{t:S}=K.useNiceTranslation(),m=K.useControlId(y),f=$||m,w=n.useMemo(()=>[{key:"ArrowUp",description:S("shortcuts.previousOption","Previous option")},{key:"ArrowDown",description:S("shortcuts.nextOption","Next option")},{key:"Space",description:S("shortcuts.select","Select")}],[S]);return e.jsxs("div",{className:`nice-field ${M||""}`,style:A,role:"radiogroup","aria-labelledby":`${m}-label`,children:[t&&e.jsxs("span",{id:`${m}-label`,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:[t,L&&e.jsx(K.NiceKeyboardHint,{shortcuts:w,size:"sm"})]}),e.jsx("div",{className:`nice-radio-group ${z==="vertical"?"nice-radio-group--vertical":""}`,children:k.map(b=>e.jsxs("label",{className:`nice-radio ${r||b.disabled?"nice-radio--disabled":""}`,children:[e.jsx("input",{type:"radio",className:"nice-radio__input",name:f,value:b.value,checked:x===b.value,disabled:r||b.disabled,onChange:()=>O?.(b.value)}),e.jsx("span",{className:"nice-radio__circle",children:e.jsx("span",{className:"nice-radio__dot"})}),e.jsx("span",{children:b.label})]},b.value))}),i&&e.jsx("div",{className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{className:"nice-field__helper",children:a})]})},Ht=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,id:d,className:$,style:y,accessMode:M,value:A=0,onChange:H,min:k=0,max:x=100,step:O=1,showValue:z=!0,showMinMax:L=!1,formatValue:I,showKeyboardHints:F,displayStyle:S},m)=>{K.useComponentDisplayClass("input",S);const f=K.useNiceAccessMode(M,d);if(f==="hidden")return null;(f==="disabled"||f==="readOnly")&&(r=!0);const{t:w}=K.useNiceTranslation(),b=K.useControlId(d),j=n.useMemo(()=>(A-k)/(x-k)*100,[A,k,x]),h=I?I(A):A.toString(),N=n.useMemo(()=>[K.COMMON_SHORTCUTS.increment,K.COMMON_SHORTCUTS.decrement,K.COMMON_SHORTCUTS.first,K.COMMON_SHORTCUTS.last,K.COMMON_SHORTCUTS.incrementBig,K.COMMON_SHORTCUTS.decrementBig],[]);return e.jsxs("div",{className:`nice-field ${$||""}`,style:y,children:[(t||z||F)&&e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[t&&e.jsxs("label",{htmlFor:b,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:[t,F&&e.jsx(K.NiceKeyboardHint,{shortcuts:N,size:"sm"})]}),z&&e.jsx("span",{className:"nice-slider__value",children:h})]}),e.jsxs("div",{className:`nice-slider ${r?"nice-slider--disabled":""}`,children:[e.jsxs("div",{className:"nice-slider__track-wrapper",children:[e.jsx("div",{className:"nice-slider__track",children:e.jsx("div",{className:"nice-slider__fill",style:{width:`${j}%`}})}),e.jsx("input",{ref:m,id:b,type:"range",className:"nice-slider__native",min:k,max:x,step:O,value:A,disabled:r,"aria-valuenow":A,"aria-valuemin":k,"aria-valuemax":x,onChange:T=>H?.(parseFloat(T.target.value))}),e.jsx("div",{className:"nice-slider__thumb-visual",style:{left:`${j}%`}})]}),L&&e.jsxs("div",{className:"nice-slider__labels",children:[e.jsx("span",{children:I?I(k):k}),e.jsx("span",{children:I?I(x):x})]})]}),i&&e.jsx("div",{className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{className:"nice-field__helper",children:a})]})});Ht.displayName="NiceSlider";function bt(t,a,i){return Math.max(a,Math.min(i,t))}function Ut({h:t,s:a,v:i}){t=(t%360+360)%360;const o=i*a,r=o*(1-Math.abs(t/60%2-1)),d=i-o;let $=0,y=0,M=0;return t<60?($=o,y=r):t<120?($=r,y=o):t<180?(y=o,M=r):t<240?(y=r,M=o):t<300?($=r,M=o):($=o,M=r),{r:Math.round(($+d)*255),g:Math.round((y+d)*255),b:Math.round((M+d)*255)}}function pt({r:t,g:a,b:i}){t/=255,a/=255,i/=255;const o=Math.max(t,a,i),r=Math.min(t,a,i),d=o-r;let $=0;return d!==0&&(o===t?$=(a-i)/d%6:o===a?$=(i-t)/d+2:$=(t-a)/d+4,$=($*60+360)%360),{h:$,s:o===0?0:d/o,v:o}}function Kt({r:t,g:a,b:i}){t/=255,a/=255,i/=255;const o=Math.max(t,a,i),r=Math.min(t,a,i),d=(o+r)/2;if(o===r)return{h:0,s:0,l:d};const $=o-r,y=d>.5?$/(2-o-r):$/(o+r);let M=0;return o===t?M=((a-i)/$+(a<i?6:0))/6:o===a?M=((i-t)/$+2)/6:M=((t-a)/$+4)/6,{h:M*360,s:y,l:d}}function Xe(t){const a=t.replace("#",""),i=a.length===3?a[0]+a[0]+a[1]+a[1]+a[2]+a[2]:a,o=parseInt(i,16);return{r:o>>16&255,g:o>>8&255,b:o&255}}function Wt({r:t,g:a,b:i}){return"#"+[t,a,i].map(o=>o.toString(16).padStart(2,"0")).join("")}function Re(t){return Wt(Ut(t))}function We(t){return pt(Xe(t))}function Vt(t,a){const i=[];for(let o=0;o<a;o++){const r=a<=1?.5:o/(a-1),d=bt(t.s*(.3+r*.7),0,1),$=bt(t.v*(1.2-r*.7),0,1);i.push(Re({h:t.h,s:d,v:$}))}return i}function ht(t,a){const i=a??30;switch(t){case"monochromatic":return[0];case"complementary":return[0,180];case"split-complementary":return[0,180-i,180+i];case"analogous":return[0,-i,i];case"triadic":return[0,120,240];case"tetradic":return[0,60,180,240];case"square":return[0,90,180,270]}}function Ye(t,a,i){return ht(a,i).map(o=>((t+o)%360+360)%360)}function jt({r:t,g:a,b:i}){const[o,r,d]=[t,a,i].map($=>{const y=$/255;return y<=.03928?y/12.92:Math.pow((y+.055)/1.055,2.4)});return .2126*o+.7152*r+.0722*d}function Qe(t,a){const i=jt(Xe(t)),o=jt(Xe(a)),r=Math.max(i,o),d=Math.min(i,o);return(r+.05)/(d+.05)}function et(t){return t>=7?"AAA":t>=4.5?"AA":t>=3?"AA-lg":"Fail"}const Yt={"lightest-pastel":{sRange:[.1,.25],vRange:[.92,1]},"bright-pastel":{sRange:[.25,.45],vRange:[.9,1]},shiny:{sRange:[.7,.95],vRange:[.9,1]},pastel:{sRange:[.3,.55],vRange:[.75,.92]},full:{sRange:[.75,1],vRange:[.75,1]},dark:{sRange:[.6,.9],vRange:[.3,.55]},deep:{sRange:[.85,1],vRange:[.45,.65]},muted:{sRange:[.15,.35],vRange:[.5,.7]},earth:{sRange:[.3,.6],vRange:[.4,.65]}};function tt(t,a){const i=Yt[a];return t.map(o=>{const r=(i.sRange[0]+i.sRange[1])/2,d=(i.vRange[0]+i.vRange[1])/2;return Re({h:o,s:r,v:d})})}function ta(){return Math.floor(Math.random()*360)}function Gt(t,a,i){const o=ta(),r=Ye(o,t,i),d=[];for(let $=0;$<a;$++){const y=r[$%r.length],M=.55+Math.random()*.4,A=.5+Math.random()*.45;d.push(Re({h:y+(Math.random()-.5)*8,s:M,v:A}))}return d}const na=({hues:t,baseHue:a,onBaseHueChange:i,mode:o,distance:r,disabled:d})=>{const k=n.useCallback(I=>{if(d)return;const S=I.currentTarget.getBoundingClientRect(),m=I.clientX-S.left-120,f=I.clientY-S.top-120,w=(Math.atan2(f,m)*180/Math.PI+360)%360;i(Math.round(w))},[120,120,d,i]),x=[];for(let I=0;I<360;I+=2){const F=(I-1)*Math.PI/180,S=(I+1)*Math.PI/180,m=Re({h:I,s:1,v:1});x.push(e.jsx("path",{d:`M${120+55*Math.cos(F)},${120+55*Math.sin(F)} L${120+110*Math.cos(F)},${120+110*Math.sin(F)} A110,110 0 0,1 ${120+110*Math.cos(S)},${120+110*Math.sin(S)} L${120+55*Math.cos(S)},${120+55*Math.sin(S)} A55,55 0 0,0 ${120+55*Math.cos(F)},${120+55*Math.sin(F)} Z`,fill:m},I))}const O=`wheel-center-${o}`,z=t.map((I,F)=>{const m=I*Math.PI/180;return e.jsx("circle",{cx:120+82.5*Math.cos(m),cy:120+82.5*Math.sin(m),r:F===0?8:6,fill:Re({h:I,s:.85,v:.9}),stroke:F===0?"#fff":"#ccc",strokeWidth:F===0?3:2},F)});let L=null;if(o==="analogous"||o==="split-complementary"){const S=ht(o,r).slice(1).map((m,f)=>{const w=(a+m)*Math.PI/180;return e.jsx("line",{x1:120,y1:120,x2:120+82.5*Math.cos(w),y2:120+82.5*Math.sin(w),stroke:"rgba(255,255,255,0.3)",strokeWidth:1,strokeDasharray:"3,3"},`dline-${f}`)});L=e.jsx(e.Fragment,{children:S})}return e.jsxs("svg",{className:"nice-palette__wheel",viewBox:"0 0 240 240",width:240,height:240,onClick:k,style:{cursor:d?"default":"crosshair"},children:[e.jsx("defs",{children:e.jsxs("radialGradient",{id:O,children:[e.jsx("stop",{offset:"0%",stopColor:"#fff"}),e.jsx("stop",{offset:"100%",stopColor:"transparent"})]})}),x,e.jsx("circle",{cx:120,cy:120,r:53,fill:Re({h:a,s:.6,v:.85})}),e.jsx("circle",{cx:120,cy:120,r:53,fill:`url(#${O})`,opacity:.4}),L,z]})},aa=({colors:t})=>{if(t.length<2)return null;const a=[];for(let i=0;i<t.length;i++){const o=Qe(t[i],"#ffffff"),r=Qe(t[i],"#000000");a.push({a:t[i],b:"#ffffff",ratio:o,level:et(o)}),a.push({a:t[i],b:"#000000",ratio:r,level:et(r)});for(let d=i+1;d<t.length;d++){const $=Qe(t[i],t[d]);a.push({a:t[i],b:t[d],ratio:$,level:et($)})}}return e.jsxs("div",{className:"nice-palette__contrast",children:[e.jsx("div",{className:"nice-palette__section-title",children:"Contrast Analysis (WCAG 2.1)"}),e.jsx("div",{className:"nice-palette__contrast-grid",children:a.map((i,o)=>e.jsxs("div",{className:"nice-palette__contrast-pair",children:[e.jsxs("div",{className:"nice-palette__contrast-swatches",children:[e.jsx("span",{className:"nice-palette__contrast-dot",style:{background:i.a}}),e.jsx("span",{className:"nice-palette__contrast-vs",children:"vs"}),e.jsx("span",{className:"nice-palette__contrast-dot",style:{background:i.b}})]}),e.jsxs("span",{className:"nice-palette__contrast-ratio",children:[i.ratio.toFixed(1),":1"]}),e.jsx("span",{className:`nice-palette__contrast-level nice-palette__contrast-level--${i.level.toLowerCase().replace("-","")}`,children:i.level})]},o))})]})},ia=({hex:t})=>{const a=Xe(t),i=Kt(a),o=pt(a);return e.jsxs("div",{className:"nice-palette__color-info",children:[e.jsxs("div",{children:[e.jsx("strong",{children:"HEX"})," ",t.toUpperCase()]}),e.jsxs("div",{children:[e.jsx("strong",{children:"RGB"})," ",a.r,", ",a.g,", ",a.b]}),e.jsxs("div",{children:[e.jsx("strong",{children:"HSL"})," ",Math.round(i.h),"°, ",Math.round(i.s*100),"%, ",Math.round(i.l*100),"%"]}),e.jsxs("div",{children:[e.jsx("strong",{children:"HSV"})," ",Math.round(o.h),"°, ",Math.round(o.s*100),"%, ",Math.round(o.v*100),"%"]})]})},_t={monochromatic:"Monochromatic",complementary:"Complementary","split-complementary":"Split-Complementary",analogous:"Analogous",triadic:"Triadic",tetradic:"Tetradic (Rectangle)",square:"Square"},sa={"lightest-pastel":"Lightest Pastel","bright-pastel":"Bright Pastel",shiny:"Shiny",pastel:"Pastel",full:"Full Colors",dark:"Dark",deep:"Deep Colors",muted:"Muted",earth:"Earth Tones"},oa=["monochromatic","complementary","split-complementary","analogous","triadic","tetradic","square"],ra=["lightest-pastel","bright-pastel","shiny","pastel","full","dark","deep","muted","earth"],Xt=n.forwardRef(({id:t,className:a,style:i,accessMode:o,value:r,onChange:d,minColors:$=1,maxColors:y=8,harmonyMode:M,onHarmonyModeChange:A,distance:H,onDistanceChange:k,preset:x,onPresetChange:O,showWheel:z=!0,showContrast:L=!0,showInfo:I=!0,showPresets:F=!0,showVariations:S=!0,showRandom:m=!0,variationCount:f=5,label:w,disabled:b},j)=>{const h=K.useNiceAccessMode(o,t);if(h==="hidden")return null;(h==="disabled"||h==="readOnly")&&(b=!0);const N=K.useControlId(t),[T,P]=n.useState("analogous"),[_,C]=n.useState(30),[u,B]=n.useState(""),[g,p]=n.useState(0),s=M??T,l=H??_,c=x??u,E=n.useCallback(Y=>{P(Y),A?.(Y)},[A]),D=n.useCallback(Y=>{C(Y),k?.(Y)},[k]),R=n.useCallback(Y=>{B(Y),Y&&O?.(Y)},[O]),U=n.useMemo(()=>["#3b82f6","#ef4444","#22c55e"],[]),q=r&&r.length>0?r:U,Q=q[0],W=n.useMemo(()=>We(Q),[Q]),ae=n.useMemo(()=>Ye(W.h,s,l),[W.h,s,l]),oe=n.useCallback((Y,te,he,se)=>{const ne=Ye(Y,te,he);let Z;for(se&&Yt[se]?Z=tt(ne,se):Z=ne.map(de=>Re({h:de,s:W.s||.7,v:W.v||.85}));Z.length<$;)Z.push(Z[Z.length-1]||"#888888");Z.length>y&&(Z=Z.slice(0,y)),d?.(Z)},[W.s,W.v,$,y,d]),me=n.useCallback(Y=>{b||oe(Y,s,l,c)},[b,s,l,c,oe]),ye=n.useCallback(Y=>{b||(E(Y),oe(W.h,Y,l,c))},[b,W.h,l,c,E,oe]),xe=n.useCallback(Y=>{b||(D(Y),oe(W.h,s,Y,c))},[b,W.h,s,c,D,oe]),ee=n.useCallback(Y=>{if(b)return;R(Y);const te=Ye(W.h,s,l),he=tt(te,Y);d?.(he.slice(0,y))},[b,W.h,s,l,y,R,d]),ge=n.useCallback((Y,te)=>{if(b)return;const he=[...q];he[Y]=te,d?.(he)},[b,q,d]),ce=n.useCallback(()=>{if(b||q.length>=y)return;const Y=We(q[q.length-1]),te=Re({h:(Y.h+30)%360,s:Y.s,v:Y.v});d?.([...q,te])},[b,q,y,d]),ue=n.useCallback(Y=>{if(b||q.length<=$)return;const te=q.filter((he,se)=>se!==Y);d?.(te),g>=te.length&&p(Math.max(0,te.length-1))},[b,q,$,d,g]),re=n.useCallback(()=>{if(b)return;const Y=Math.max($,Math.min(y,ht(s).length)),te=Gt(s,Y,l);d?.(te)},[b,$,y,s,l,d]),le=n.useMemo(()=>{if(!S)return[];const Y=q[g]||q[0];return Vt(We(Y),f)},[S,q,g,f]),J=q[g]||q[0],V=n.useMemo(()=>{const Y=We(J);return Re({h:(Y.h+180)%360,s:Y.s,v:Y.v})},[J]);return e.jsxs("div",{ref:j,id:N,className:`nice-palette ${b?"nice-palette--disabled":""} ${a||""}`,style:i,children:[w&&e.jsx("div",{className:"nice-palette__label",children:w}),e.jsx("div",{className:"nice-palette__modes",children:oa.map(Y=>e.jsx("button",{type:"button",className:`nice-palette__mode-btn ${s===Y?"nice-palette__mode-btn--active":""}`,onClick:()=>ye(Y),disabled:b,title:_t[Y],children:_t[Y]},Y))}),e.jsxs("div",{className:"nice-palette__main",children:[z&&e.jsxs("div",{className:"nice-palette__wheel-container",children:[e.jsx(na,{hues:ae,baseHue:W.h,onBaseHueChange:me,mode:s,distance:l,disabled:b}),(s==="analogous"||s==="split-complementary")&&e.jsxs("div",{className:"nice-palette__distance",children:[e.jsxs("label",{children:["Distance: ",l,"°"]}),e.jsx("input",{type:"range",min:10,max:90,value:l,onChange:Y=>xe(Number(Y.target.value)),disabled:b,className:"nice-palette__distance-slider"})]})]}),e.jsxs("div",{className:"nice-palette__strips",children:[e.jsxs("div",{className:"nice-palette__swatches",children:[q.map((Y,te)=>e.jsxs("div",{className:`nice-palette__swatch-wrapper ${g===te?"nice-palette__swatch-wrapper--selected":""}`,onClick:()=>p(te),children:[e.jsx("div",{className:"nice-palette__swatch",style:{background:Y},children:q.length>$&&e.jsx("button",{type:"button",className:"nice-palette__swatch-remove",onClick:he=>{he.stopPropagation(),ue(te)},disabled:b,"aria-label":"Remove color",children:"×"})}),e.jsx("input",{type:"text",className:"nice-palette__hex-input",value:Y.toUpperCase(),maxLength:7,disabled:b,onChange:he=>ge(te,he.target.value)})]},te)),q.length<y&&e.jsx("button",{type:"button",className:"nice-palette__add-btn",onClick:ce,disabled:b,title:"Add color",children:"+"})]}),e.jsxs("div",{className:"nice-palette__complementary",children:[e.jsx("span",{className:"nice-palette__section-tag",children:"Complementary"}),e.jsx("div",{className:"nice-palette__swatch nice-palette__swatch--sm",style:{background:V},title:V.toUpperCase()}),e.jsx("span",{className:"nice-palette__hex-label",children:V.toUpperCase()})]}),S&&le.length>0&&e.jsxs("div",{className:"nice-palette__variations",children:[e.jsx("span",{className:"nice-palette__section-tag",children:"Tints & Shades"}),e.jsx("div",{className:"nice-palette__variation-strip",children:le.map((Y,te)=>e.jsx("div",{className:"nice-palette__variation-chip",style:{background:Y},title:Y.toUpperCase(),onClick:()=>{b||ge(g,Y)},role:"button",tabIndex:0},te))})]}),m&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm nice-palette__random-btn",onClick:re,disabled:b,title:"Random palette","aria-label":"Random palette",children:"🎲 Random Palette"})]})]}),F&&e.jsxs("div",{className:"nice-palette__presets",children:[e.jsx("div",{className:"nice-palette__section-title",children:"Style Presets"}),e.jsx("div",{className:"nice-palette__preset-grid",children:ra.map(Y=>{const te=tt(ae,Y);return e.jsxs("button",{type:"button",className:`nice-palette__preset-card ${c===Y?"nice-palette__preset-card--active":""}`,onClick:()=>ee(Y),disabled:b,children:[e.jsx("div",{className:"nice-palette__preset-strip",children:te.map((he,se)=>e.jsx("span",{className:"nice-palette__preset-dot",style:{background:he}},se))}),e.jsx("span",{className:"nice-palette__preset-label",children:sa[Y]})]},Y)})})]}),I&&e.jsxs("div",{className:"nice-palette__info-panel",children:[e.jsx("div",{className:"nice-palette__section-title",children:"Selected Color Info"}),e.jsx(ia,{hex:J})]}),L&&e.jsx(aa,{colors:q})]})});Xt.displayName="NiceColorPalette";function dt(){return{type:"linear",angle:90,stops:[{color:"#3b82f6",position:0},{color:"#8b5cf6",position:100}]}}function ut(t){const a=t.stops.slice().sort((o,r)=>o.position-r.position).map(o=>`${o.color} ${o.position}%`).join(", "),i=t.repeating?"repeating-":"";switch(t.type){case"linear":return`${i}linear-gradient(${t.angle}deg, ${a})`;case"radial":{const o=t.shape||"ellipse",r=t.size||"farthest-corner",d=t.positionX??50,$=t.positionY??50;return`${i}radial-gradient(${o} ${r} at ${d}% ${$}%, ${a})`}case"conic":{const o=t.angle??0,r=t.positionX??50,d=t.positionY??50;return`${i}conic-gradient(from ${o}deg at ${r}% ${d}%, ${a})`}}}function qt(t){const a=t.trim(),i=a.startsWith("repeating-");if(a.includes("linear-gradient")){const o=a.match(/linear-gradient\((.+)\)/)?.[1];if(!o)return null;const r=o.split(",").map(A=>A.trim());let d=90,$=0;const y=r[0].match(/^(\d+)deg$/);y&&(d=parseInt(y[1]),$=1);const M=it(r.slice($));return{type:"linear",angle:d,repeating:i,stops:M}}if(a.includes("radial-gradient")){const o=a.match(/radial-gradient\((.+)\)/)?.[1];if(!o)return null;const r=o.split(",").map($=>$.trim()),d=it(r.filter($=>$.includes("#")||$.includes("rgb")));return{type:"radial",angle:0,repeating:i,stops:d.length>=2?d:dt().stops}}if(a.includes("conic-gradient")){const o=a.match(/conic-gradient\((.+)\)/)?.[1];if(!o)return null;const r=o.split(",").map($=>$.trim()),d=it(r.filter($=>$.includes("#")||$.includes("rgb")));return{type:"conic",angle:0,repeating:i,stops:d.length>=2?d:dt().stops}}return null}function it(t){return t.map((a,i,o)=>{const r=a.match(/^(#[0-9a-fA-F]{3,8}|rgba?\([^)]+\))\s*(\d+%?)?$/);if(r){const d=r[2]?parseFloat(r[2]):i/Math.max(1,o.length-1)*100;return{color:r[1],position:d}}return{color:a,position:i/Math.max(1,o.length-1)*100}})}function ca(){return"#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}function la(t=2){const a=["linear","radial","conic"],i=a[Math.floor(Math.random()*a.length)],o=[];for(let r=0;r<t;r++)o.push({color:ca(),position:Math.round(r/(t-1)*100)});return{type:i,angle:Math.floor(Math.random()*360),stops:o,shape:i==="radial"?Math.random()>.5?"circle":"ellipse":void 0,positionX:i!=="linear"?Math.round(Math.random()*100):void 0,positionY:i!=="linear"?Math.round(Math.random()*100):void 0}}const Zt=[{name:"Sunset",value:{type:"linear",angle:135,stops:[{color:"#ff6b6b",position:0},{color:"#feca57",position:100}]}},{name:"Ocean",value:{type:"linear",angle:180,stops:[{color:"#667eea",position:0},{color:"#764ba2",position:100}]}},{name:"Forest",value:{type:"linear",angle:120,stops:[{color:"#11998e",position:0},{color:"#38ef7d",position:100}]}},{name:"Fire",value:{type:"linear",angle:90,stops:[{color:"#f12711",position:0},{color:"#f5af19",position:100}]}},{name:"Aurora",value:{type:"linear",angle:135,stops:[{color:"#a18cd1",position:0},{color:"#fbc2eb",position:50},{color:"#a6c1ee",position:100}]}},{name:"Midnight",value:{type:"linear",angle:180,stops:[{color:"#0f0c29",position:0},{color:"#302b63",position:50},{color:"#24243e",position:100}]}},{name:"Candy",value:{type:"linear",angle:45,stops:[{color:"#fc5c7d",position:0},{color:"#6a82fb",position:100}]}},{name:"Radial Glow",value:{type:"radial",angle:0,shape:"circle",stops:[{color:"#ffecd2",position:0},{color:"#fcb69f",position:100}],positionX:50,positionY:50}},{name:"Rainbow",value:{type:"conic",angle:0,stops:[{color:"#ff0000",position:0},{color:"#ff8800",position:17},{color:"#ffff00",position:33},{color:"#00ff00",position:50},{color:"#0088ff",position:67},{color:"#8800ff",position:83},{color:"#ff0000",position:100}],positionX:50,positionY:50}}],Jt=n.forwardRef(({id:t,className:a,style:i,accessMode:o,value:r,onChange:d,showCssOutput:$=!0,showPresets:y=!0,showRandom:M=!0,maxStops:A=10,label:H,disabled:k},x)=>{const O=K.useNiceAccessMode(o,t);if(O==="hidden")return null;(O==="disabled"||O==="readOnly")&&(k=!0);const z=K.useControlId(t),L=r??dt(),I=n.useMemo(()=>ut(L),[L]),[F,S]=n.useState(0),[m,f]=n.useState(""),w=n.useRef(null),b=n.useCallback(s=>{d?.(s)},[d]),j=n.useCallback(s=>{k||b({...L,type:s})},[k,L,b]),h=n.useCallback(s=>{k||b({...L,angle:s})},[k,L,b]),N=n.useCallback(s=>{k||b({...L,repeating:s})},[k,L,b]),T=n.useCallback(s=>{k||b({...L,shape:s})},[k,L,b]),P=n.useCallback((s,l)=>{if(k)return;const c=L.stops.map((E,D)=>D===s?{...E,...l}:E);b({...L,stops:c})},[k,L,b]),_=n.useCallback(()=>{if(k||L.stops.length>=A)return;const s=L.stops.slice().sort((R,U)=>R.position-U.position);let l=0,c=s[0];for(let R=0;R<s.length-1;R++){const U=s[R+1].position-s[R].position;U>l&&(l=U,c=s[R])}const E=Math.round(c.position+l/2),D="#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0");b({...L,stops:[...L.stops,{color:D,position:E}]})},[k,L,A,b]),C=n.useCallback(s=>{if(k||L.stops.length<=2)return;const l=L.stops.filter((c,E)=>E!==s);b({...L,stops:l}),F>=l.length&&S(l.length-1)},[k,L,F,b]),u=n.useCallback(()=>{if(k)return;const s=2+Math.floor(Math.random()*3);b(la(s))},[k,b]),B=n.useCallback(()=>{if(k||!m.trim())return;const s=qt(m);s&&b(s)},[k,m,b]),g=n.useCallback(s=>{if(k||!w.current||L.stops.length>=A)return;const l=w.current.getBoundingClientRect(),c=Math.round((s.clientX-l.left)/l.width*100),E="#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0"),D=[...L.stops,{color:E,position:c}];b({...L,stops:D}),S(D.length-1)},[k,L,A,b]),p=n.useMemo(()=>L.stops.slice().sort((s,l)=>s.position-l.position),[L.stops]);return e.jsxs("div",{ref:x,id:z,className:`nice-gradient ${k?"nice-gradient--disabled":""} ${a||""}`,style:i,children:[H&&e.jsx("div",{className:"nice-gradient__label",children:H}),e.jsx("div",{className:"nice-gradient__preview",style:{background:I}}),e.jsxs("div",{className:"nice-gradient__type-row",children:[["linear","radial","conic"].map(s=>e.jsx("button",{type:"button",className:`nice-gradient__type-btn ${L.type===s?"nice-gradient__type-btn--active":""}`,onClick:()=>j(s),disabled:k,children:s.charAt(0).toUpperCase()+s.slice(1)},s)),e.jsxs("label",{className:"nice-gradient__repeat-label",children:[e.jsx("input",{type:"checkbox",checked:L.repeating??!1,onChange:s=>N(s.target.checked),disabled:k}),"Repeating"]})]}),e.jsxs("div",{className:"nice-gradient__controls",children:[L.type==="linear"&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Angle: ",L.angle,"°"]}),e.jsx("input",{type:"range",min:0,max:360,value:L.angle,onChange:s=>h(Number(s.target.value)),disabled:k,className:"nice-gradient__slider"}),e.jsx("div",{className:"nice-gradient__angle-presets",children:[0,45,90,135,180,225,270,315].map(s=>e.jsx("button",{type:"button",className:`nice-gradient__angle-btn ${L.angle===s?"nice-gradient__angle-btn--active":""}`,onClick:()=>h(s),disabled:k,title:`${s}°`,children:e.jsx("span",{style:{transform:`rotate(${s}deg)`,display:"inline-block"},children:"→"})},s))})]}),L.type==="radial"&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsx("label",{children:"Shape:"}),e.jsx("div",{className:"nice-gradient__shape-btns",children:["circle","ellipse"].map(s=>e.jsx("button",{type:"button",className:`nice-gradient__shape-btn ${(L.shape||"ellipse")===s?"nice-gradient__shape-btn--active":""}`,onClick:()=>T(s),disabled:k,children:s},s))})]}),(L.type==="radial"||L.type==="conic")&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Center: ",L.positionX??50,"%, ",L.positionY??50,"%"]}),e.jsxs("div",{className:"nice-gradient__center-inputs",children:[e.jsx("input",{type:"range",min:0,max:100,value:L.positionX??50,onChange:s=>b({...L,positionX:Number(s.target.value)}),disabled:k,className:"nice-gradient__slider"}),e.jsx("input",{type:"range",min:0,max:100,value:L.positionY??50,onChange:s=>b({...L,positionY:Number(s.target.value)}),disabled:k,className:"nice-gradient__slider"})]})]}),L.type==="conic"&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Start angle: ",L.angle,"°"]}),e.jsx("input",{type:"range",min:0,max:360,value:L.angle,onChange:s=>h(Number(s.target.value)),disabled:k,className:"nice-gradient__slider"})]})]}),e.jsxs("div",{className:"nice-gradient__bar-container",children:[e.jsx("div",{ref:w,className:"nice-gradient__bar",style:{background:I},onClick:g,children:L.stops.map((s,l)=>e.jsx("div",{className:`nice-gradient__stop-marker ${F===l?"nice-gradient__stop-marker--active":""}`,style:{left:`${s.position}%`},onClick:c=>{c.stopPropagation(),S(l)},title:`${s.color} @ ${s.position}%`,children:e.jsx("div",{className:"nice-gradient__stop-dot",style:{background:s.color}})},l))}),e.jsx("button",{type:"button",className:"nice-gradient__add-stop",onClick:_,disabled:k||L.stops.length>=A,title:"Add stop",children:"+"})]}),e.jsx("div",{className:"nice-gradient__stop-editor",children:e.jsx("div",{className:"nice-gradient__stop-list",children:p.map((s,l)=>{const c=L.stops.indexOf(s);return e.jsxs("div",{className:`nice-gradient__stop-row ${F===c?"nice-gradient__stop-row--active":""}`,onClick:()=>S(c),children:[e.jsx("input",{type:"color",value:s.color,onChange:E=>P(c,{color:E.target.value}),disabled:k,className:"nice-gradient__stop-color"}),e.jsx("input",{type:"text",value:s.color.toUpperCase(),maxLength:7,onChange:E=>P(c,{color:E.target.value}),disabled:k,className:"nice-gradient__stop-hex"}),e.jsx("input",{type:"number",min:0,max:100,value:s.position,onChange:E=>P(c,{position:Number(E.target.value)}),disabled:k,className:"nice-gradient__stop-pos"}),e.jsx("span",{className:"nice-gradient__stop-pct",children:"%"}),L.stops.length>2&&e.jsx("button",{type:"button",className:"nice-gradient__stop-del",onClick:()=>C(c),disabled:k,"aria-label":"Remove stop",children:"×"})]},c)})})}),M&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm nice-gradient__random-btn",onClick:u,disabled:k,title:"Random gradient","aria-label":"Random gradient",children:"🎲 Random Gradient"}),y&&e.jsxs("div",{className:"nice-gradient__presets",children:[e.jsx("div",{className:"nice-gradient__section-title",children:"Presets"}),e.jsx("div",{className:"nice-gradient__preset-grid",children:Zt.map((s,l)=>e.jsxs("button",{type:"button",className:"nice-gradient__preset-card",onClick:()=>{k||b(s.value)},disabled:k,title:s.name,children:[e.jsx("div",{className:"nice-gradient__preset-preview",style:{background:ut(s.value)}}),e.jsx("span",{className:"nice-gradient__preset-name",children:s.name})]},l))})]}),$&&e.jsxs("div",{className:"nice-gradient__css",children:[e.jsx("div",{className:"nice-gradient__section-title",children:"CSS Output"}),e.jsxs("div",{className:"nice-gradient__css-output",children:[e.jsx("code",{children:`background: ${I};`}),e.jsx("button",{type:"button",className:"nice-gradient__copy-btn",onClick:()=>navigator.clipboard?.writeText(`background: ${I};`),title:"Copy CSS",children:"📋"})]}),e.jsxs("div",{className:"nice-gradient__css-import",children:[e.jsx("input",{type:"text",className:"nice-gradient__css-input",placeholder:"Paste CSS gradient to import...",value:m,onChange:s=>f(s.target.value),disabled:k}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",onClick:B,disabled:k,children:"Import"})]})]})]})});Jt.displayName="NiceGradientPicker";function da({text:t,query:a}){if(!a)return e.jsx(e.Fragment,{children:t});const i=t.toLowerCase().indexOf(a.toLowerCase());return i<0?e.jsx(e.Fragment,{children:t}):e.jsxs(e.Fragment,{children:[t.slice(0,i),e.jsx("strong",{children:t.slice(i,i+a.length)}),t.slice(i+a.length)]})}const ua=({options:t,value:a,onChange:i,minSearchLength:o=1,maxResults:r=10,onSearch:d,clearable:$,loading:y,multiple:M,renderOption:A,highlightMatch:H=!0,label:k,error:x,helperText:O,required:z,disabled:L,size:I="md",id:F,className:S,style:m,accessMode:f,showKeyboardHints:w,displayStyle:b})=>{K.useComponentDisplayStyle("input",b),K.useComponentDisplayClass("input",b);const j=K.useNiceAccessMode(f,F);if(j==="hidden")return null;(j==="disabled"||j==="readOnly")&&(L=!0);const h=K.useControlId(F),{t:N}=K.useNiceTranslation(),T=n.useMemo(()=>M?Array.isArray(a)?a:a?[a]:[]:[],[a,M]),[P,_]=n.useState(M||Array.isArray(a)?"":a),[C,u]=n.useState(!1),[B,g]=n.useState(-1),p=n.useRef(null),s=n.useRef(null);K.useClickOutside(p,()=>u(!1));const l=n.useMemo(()=>{const Q=[K.COMMON_SHORTCUTS.moveDown,K.COMMON_SHORTCUTS.moveUp,K.COMMON_SHORTCUTS.submit,K.COMMON_SHORTCUTS.cancel];return M&&Q.push({key:"Backspace",description:N("shortcuts.removeLastTag","Remove last tag")}),Q},[M,N]);n.useEffect(()=>{M||_(Array.isArray(a)?"":a)},[a,M]);const c=n.useMemo(()=>{if(P.length<o)return[];if(d)return t.slice(0,r);const Q=P.toLowerCase();return t.filter(W=>W.label.toLowerCase().includes(Q)).slice(0,r)},[t,P,o,r,d]),E=n.useMemo(()=>{const Q=new Map;for(const W of c){const ae=W.group||"";Q.has(ae)||Q.set(ae,[]),Q.get(ae).push(W)}return Q},[c]),D=n.useCallback(Q=>{_(Q),u(Q.length>=o),g(-1),d?.(Q)},[o,d]),R=n.useCallback(Q=>{if(M){const W=String(Q.value),ae=T.includes(W)?T.filter(oe=>oe!==W):[...T,W];i?.(ae),_("")}else _(Q.label),i?.(String(Q.value)),u(!1)},[i,M,T]),U=Q=>{if(M&&Q.key==="Backspace"&&!P&&T.length>0){i?.(T.slice(0,-1));return}C&&(Q.key==="ArrowDown"?(Q.preventDefault(),g(W=>Math.min(W+1,c.length-1))):Q.key==="ArrowUp"?(Q.preventDefault(),g(W=>Math.max(W-1,0))):Q.key==="Enter"&&B>=0?(Q.preventDefault(),R(c[B])):Q.key==="Escape"&&u(!1))},q=n.useCallback(Q=>{i?.(T.filter(W=>W!==Q))},[T,i]);return e.jsxs("div",{className:`nice-field nice-field--${I} ${x?"nice-field--error":""} ${S||""}`,style:m,ref:p,children:[k&&e.jsxs("label",{className:"nice-field__label",htmlFor:h,children:[k,z&&e.jsx("span",{className:"nice-field__required",children:"*"}),w&&e.jsx(K.NiceKeyboardHint,{shortcuts:l,size:"sm"})]}),e.jsxs("div",{className:"nice-field__input-wrap",style:M?{display:"flex",flexWrap:"wrap",gap:4,alignItems:"center"}:void 0,children:[M&&T.map(Q=>{const W=t.find(ae=>String(ae.value)===Q);return e.jsxs("span",{className:"nice-autocomplete__tag",children:[W?.label||Q,e.jsx("button",{type:"button",className:"nice-autocomplete__tag-remove",onClick:()=>q(Q),children:"✕"})]},Q)}),e.jsx("input",{ref:s,id:h,type:"text",className:"nice-input",value:P,onChange:Q=>D(Q.target.value),onFocus:()=>P.length>=o&&u(!0),onKeyDown:U,disabled:L,required:z,role:"combobox","aria-expanded":C,"aria-autocomplete":"list",autoComplete:"off",style:M?{flex:1,minWidth:60,border:"none",outline:"none"}:void 0}),$&&!M&&P&&!L&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>{_(""),i?.("")},"aria-label":N("controls.clear","Clear"),children:"✕"}),y&&e.jsx("div",{className:"nice-spinner nice-spinner--sm",style:{position:"absolute",right:8,top:"50%",transform:"translateY(-50%)"}})]}),C&&c.length>0&&e.jsx("ul",{className:"nice-dropdown__list",role:"listbox",children:Array.from(E.entries()).map(([Q,W])=>e.jsxs(n.Fragment,{children:[Q&&e.jsx("li",{className:"nice-dropdown__group-label",children:Q}),W.map(ae=>{const me=c.indexOf(ae)===B,ye=M&&T.includes(String(ae.value));return e.jsx("li",{role:"option",className:`nice-dropdown__option ${me?"nice-dropdown__option--active":""} ${ye?"nice-dropdown__option--selected":""}`,onMouseDown:xe=>{xe.preventDefault(),R(ae)},"aria-selected":me,children:A?A(ae,P):H?e.jsx(da,{text:ae.label,query:P}):ae.label},String(ae.value))})]},Q))}),x&&e.jsx("div",{className:"nice-field__error",children:x}),O&&!x&&e.jsx("div",{className:"nice-field__hint",children:O})]})},ma=({options:t,value:a,onChange:i,searchable:o=!0,clearable:r,loading:d,placeholder:$,label:y,error:M,helperText:A,required:H,disabled:k,size:x="md",id:O,className:z,style:L})=>{const I=K.useControlId(O),{t:F}=K.useNiceTranslation(),[S,m]=n.useState(!1),[f,w]=n.useState(""),b=n.useRef(null);K.useClickOutside(b,()=>m(!1));const j=t.find(N=>String(N.value)===a),h=n.useMemo(()=>{if(!f)return t;const N=f.toLowerCase();return t.filter(T=>T.label.toLowerCase().includes(N))},[t,f]);return e.jsxs("div",{className:`nice-field nice-field--${x} ${M?"nice-field--error":""} ${z||""}`,style:L,ref:b,children:[y&&e.jsxs("label",{className:"nice-field__label",htmlFor:I,children:[y,H&&e.jsx("span",{className:"nice-field__required",children:"*"})]}),e.jsxs("div",{className:"nice-field__input-wrap",children:[e.jsxs("button",{type:"button",id:I,className:"nice-select__trigger",onClick:()=>!k&&m(!S),disabled:k,children:[e.jsx("span",{children:j?.label||$||F("controls.select","Select...")}),e.jsx("span",{className:"nice-select__arrow",children:"▾"})]}),r&&a&&!k&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>i(""),"aria-label":F("controls.clear","Clear"),children:"✕"})]}),S&&e.jsxs("div",{className:"nice-dropdown",children:[o&&e.jsx("div",{className:"nice-dropdown__search",children:e.jsx("input",{type:"text",value:f,onChange:N=>w(N.target.value),placeholder:F("controls.search","Search..."),autoFocus:!0})}),e.jsx("ul",{className:"nice-dropdown__list",role:"listbox",children:h.length===0?e.jsx("li",{className:"nice-dropdown__empty",children:F("controls.noResults","No results")}):h.map(N=>e.jsx("li",{role:"option",className:`nice-dropdown__option ${String(N.value)===a?"nice-dropdown__option--selected":""}`,onClick:()=>{i(String(N.value)),m(!1),w("")},"aria-selected":String(N.value)===a,children:N.label},String(N.value)))})]}),M&&e.jsx("div",{className:"nice-field__error",children:M}),A&&!M&&e.jsx("div",{className:"nice-field__hint",children:A})]})},pa=["Su","Mo","Tu","We","Th","Fr","Sa"];function ha(t,a){return new Date(t,a+1,0).getDate()}function ga(t,a){return new Date(t,a,1).getDay()}function kt(t,a,i){return`${t}-${String(a+1).padStart(2,"0")}-${String(i).padStart(2,"0")}`}function fa(t){const a=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()));a.setUTCDate(a.getUTCDate()+4-(a.getUTCDay()||7));const i=new Date(Date.UTC(a.getUTCFullYear(),0,1));return Math.ceil(((a.getTime()-i.getTime())/864e5+1)/7)}const vt=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=({value:t,onChange:a,min:i,max:o,disabledDates:r=[],firstDayOfWeek:d=1,size:$="md",showWeekNumbers:y,onMonthChange:M,className:A,style:H,accessMode:k,id:x,multiple:O,selectedDates:z=[],onSelectedDatesChange:L,renderDay:I,showKeyboardHints:F,persistPreferences:S=!1,cookies:m=!1,localStorage:f=!0,sessionStorage:w=!1,storageMode:b,storageKey:j})=>{const h=K.useNiceAccessMode(k,x);if(h==="hidden")return null;const N=h==="disabled"||h==="readOnly",{t:T}=K.useNiceTranslation(),P=new Date,_=t?new Date(t):P,C=K.useStorageAdapter(j??"nice-calendar"),u=n.useMemo(()=>S?C.get("prefs")??{}:{},[S,C]),B=u.firstDayOfWeek??d,[g,p]=n.useState(u.lastViewYear??_.getFullYear()),[s,l]=n.useState(u.lastViewMonth??_.getMonth()),[c,E]=n.useState(u.preferredView??"days"),D=n.useCallback(te=>{if(!S)return;const he=C.get("prefs")??{};C.set("prefs",{...he,...te})},[S,C]),R=n.useCallback(te=>{E(te),D({preferredView:te})},[D]),U=n.useCallback((te,he)=>{D({lastViewYear:te,lastViewMonth:he})},[D]),q=n.useMemo(()=>[K.COMMON_SHORTCUTS.moveUp,K.COMMON_SHORTCUTS.moveDown,K.COMMON_SHORTCUTS.moveLeft,K.COMMON_SHORTCUTS.moveRight,{key:"Enter",description:T("shortcuts.selectDate","Select date")},K.COMMON_SHORTCUTS.pageUp,K.COMMON_SHORTCUTS.pageDown],[T]),Q=n.useMemo(()=>ha(g,s),[g,s]),W=n.useMemo(()=>(ga(g,s)-B+7)%7,[g,s,B]),ae=n.useMemo(()=>{const te=[...pa];for(let he=0;he<B;he++)te.push(te.shift());return te},[B]),oe=n.useCallback(te=>i&&te<i||o&&te>o?!0:r.includes(te),[i,o,r]),me=n.useCallback(te=>{if(c==="years"){p(ne=>ne+te*10);return}if(c==="months"){p(ne=>ne+te);return}let he=s+te,se=g;he<0&&(he=11,se--),he>11&&(he=0,se++),l(he),p(se),U(se,he),M?.(se,he)},[s,g,M,c,U]),ye=kt(P.getFullYear(),P.getMonth(),P.getDate()),xe=n.useCallback(te=>O?z.includes(te):te===t,[O,z,t]),ee=n.useCallback(te=>{if(!N){if(O){const he=z.includes(te)?z.filter(se=>se!==te):[...z,te];L?.(he)}a?.(te)}},[O,z,a,L]),ge=n.useCallback(()=>{c==="days"?R("months"):c==="months"&&R("years")},[c,R]),ce=n.useCallback(te=>{l(te),R("days"),U(g,te),M?.(g,te)},[g,M,R,U]),ue=n.useCallback(te=>{p(te),R("months")},[R]),re=c==="years"?`${g-g%10} – ${g-g%10+9}`:c==="months"?`${g}`:`${vt[s]} ${g}`,le=c==="years"?"decade":c==="months"?"year":"month",J=[];for(let te=0;te<W;te++)J.push(null);for(let te=1;te<=Q;te++)J.push(te);for(;J.length%7!==0;)J.push(null);const V=[];for(let te=0;te<J.length;te+=7)V.push(J.slice(te,te+7));const Y=g-g%10;return e.jsxs("div",{className:`nice-calendar nice-calendar--${$} ${A||""}`,style:H,children:[e.jsxs("div",{className:"nice-calendar__header",children:[e.jsx("button",{type:"button",className:"nice-calendar__nav",onClick:()=>me(-1),"aria-label":`Previous ${le}`,children:"‹"}),e.jsx("button",{type:"button",className:"nice-calendar__title",onClick:ge,"aria-label":c==="days"?"Show month picker":c==="months"?"Show year picker":void 0,disabled:c==="years",children:re}),e.jsx("button",{type:"button",className:"nice-calendar__nav",onClick:()=>me(1),"aria-label":`Next ${le}`,children:"›"}),F&&e.jsx(K.NiceKeyboardHint,{shortcuts:q,size:"sm"})]}),c==="days"&&e.jsxs("table",{className:"nice-calendar__grid",role:"grid",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[y&&e.jsx("th",{className:"nice-calendar__wk",children:"W"}),ae.map(te=>e.jsx("th",{children:te},te))]})}),e.jsx("tbody",{children:V.map((te,he)=>e.jsxs("tr",{children:[y&&e.jsx("td",{className:"nice-calendar__wk",children:te.find(se=>se!=null)?fa(new Date(g,s,te.find(se=>se!=null))):""}),te.map((se,ne)=>{if(se==null)return e.jsx("td",{className:"nice-calendar__empty-cell"},ne);const Z=kt(g,s,se),de=oe(Z),pe=xe(Z),be=Z===ye;return e.jsx("td",{className:`nice-calendar__day${pe?" nice-calendar__day--selected":""}${be?" nice-calendar__day--today":""}${de?" nice-calendar__day--disabled":""}`,onClick:()=>!de&&ee(Z),role:"gridcell","aria-selected":pe,"aria-disabled":de,children:I?I(Z,se):se},ne)})]},he))})]}),c==="months"&&e.jsx("div",{className:"nice-calendar__picker-grid",children:vt.map((te,he)=>e.jsx("button",{type:"button",className:`nice-calendar__picker-cell${he===s&&g===_.getFullYear()?" nice-calendar__picker-cell--selected":""}`,onClick:()=>ce(he),children:te.slice(0,3)},he))}),c==="years"&&e.jsx("div",{className:"nice-calendar__picker-grid",children:Array.from({length:12},(te,he)=>Y-1+he).map(te=>e.jsx("button",{type:"button",className:`nice-calendar__picker-cell${te===g?" nice-calendar__picker-cell--selected":""}${te<Y||te>Y+9?" nice-calendar__picker-cell--other":""}`,onClick:()=>ue(te),children:te},te))})]})};gt.displayName="NiceCalendar";const ya=({startDate:t,endDate:a,onStartChange:i,onEndChange:o,min:r,max:d,clearable:$,placeholder:y,startPlaceholder:M,endPlaceholder:A,label:H,error:k,helperText:x,required:O,disabled:z,size:L="md",id:I,className:F,style:S,accessMode:m,showKeyboardHints:f})=>{const w=K.useNiceAccessMode(m,I);if(w==="hidden")return null;(w==="disabled"||w==="readOnly")&&(z=!0);const b=K.useControlId(I),{t:j}=K.useNiceTranslation(),[h,N]=n.useState(null),T=n.useRef(null);K.useClickOutside(T,()=>N(null));const P=n.useMemo(()=>[{key:"Tab",description:j("shortcuts.switchField","Switch between start/end")},K.COMMON_SHORTCUTS.cancel],[j]),_=n.useCallback(u=>{i(u),(!a||u>a)&&o(u),N("end")},[i,o,a]),C=n.useCallback(u=>{o(u),N(null)},[o]);return e.jsxs("div",{className:`nice-field nice-field--${L} ${k?"nice-field--error":""} ${F||""}`,style:S,ref:T,children:[H&&e.jsxs("label",{className:"nice-field__label",htmlFor:b,children:[H,O&&e.jsx("span",{className:"nice-field__required",children:"*"}),f&&e.jsx(K.NiceKeyboardHint,{shortcuts:P,size:"sm"})]}),e.jsxs("div",{className:"nice-daterange",children:[e.jsx("input",{id:b,type:"text",className:"nice-input nice-daterange__start",value:t,readOnly:!0,placeholder:M||j("controls.startDate","Start date"),onClick:()=>!z&&N("start"),disabled:z}),e.jsx("span",{className:"nice-daterange__separator",children:"–"}),e.jsx("input",{type:"text",className:"nice-input nice-daterange__end",value:a,readOnly:!0,placeholder:A||j("controls.endDate","End date"),onClick:()=>!z&&N("end"),disabled:z}),$&&(t||a)&&!z&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>{i(""),o("")},"aria-label":j("controls.clear","Clear"),children:"✕"})]}),h&&e.jsx("div",{className:"nice-daterange__popup",children:e.jsx(gt,{value:h==="start"?t:a,onChange:h==="start"?_:C,min:h==="end"&&t?t:r,max:d,size:L})}),k&&e.jsx("div",{className:"nice-field__error",children:k}),x&&!k&&e.jsx("div",{className:"nice-field__hint",children:x})]})},xa=({options:t,value:a,onChange:i,searchable:o=!0,clearable:r,maxTags:d,allowCustom:$,placeholder:y,label:M,error:A,helperText:H,required:k,disabled:x,size:O="md",id:z,className:L,style:I,accessMode:F,showKeyboardHints:S})=>{const m=K.useNiceAccessMode(F,z);if(m==="hidden")return null;(m==="disabled"||m==="readOnly")&&(x=!0);const f=K.useControlId(z),{t:w}=K.useNiceTranslation(),[b,j]=n.useState(!1),[h,N]=n.useState(""),T=n.useRef(null),P=n.useRef(null);K.useClickOutside(T,()=>j(!1));const _=n.useMemo(()=>[K.COMMON_SHORTCUTS.submit,K.COMMON_SHORTCUTS.cancel,{key:"Backspace",description:w("shortcuts.removeLastTag","Remove last tag")}],[w]),C=n.useMemo(()=>{let s=t.filter(l=>!a.includes(String(l.value)));if(h){const l=h.toLowerCase();s=s.filter(c=>c.label.toLowerCase().includes(l))}return s},[t,a,h]),u=n.useCallback(s=>{d&&a.length>=d||(a.includes(s)||i([...a,s]),N(""))},[a,i,d]),B=n.useCallback(s=>{i(a.filter(l=>l!==s))},[a,i]),g=s=>{s.key==="Backspace"&&!h&&a.length>0?B(a[a.length-1]):s.key==="Enter"&&h?(s.preventDefault(),C.length>0?u(String(C[0].value)):$&&u(h)):s.key==="Escape"&&j(!1)},p=s=>t.find(l=>String(l.value)===s)?.label??s;return e.jsxs("div",{className:`nice-field nice-field--${O} ${A?"nice-field--error":""} ${L||""}`,style:I,ref:T,children:[M&&e.jsxs("label",{className:"nice-field__label",htmlFor:f,children:[M,k&&e.jsx("span",{className:"nice-field__required",children:"*"}),S&&e.jsx(K.NiceKeyboardHint,{shortcuts:_,size:"sm"})]}),e.jsxs("div",{className:"nice-tagbox",onClick:()=>{x||(j(!0),P.current?.focus())},children:[e.jsxs("div",{className:"nice-tagbox__tags",children:[a.map(s=>e.jsxs("span",{className:"nice-tag nice-tagbox__tag",children:[p(s),!x&&e.jsx("button",{type:"button",className:"nice-tag__remove",onClick:l=>{l.stopPropagation(),B(s)},children:"✕"})]},s)),o&&e.jsx("input",{ref:P,id:f,type:"text",className:"nice-tagbox__input",value:h,onChange:s=>{N(s.target.value),j(!0)},onFocus:()=>j(!0),onKeyDown:g,placeholder:a.length===0?y||w("controls.select","Select..."):"",disabled:x,autoComplete:"off"})]}),r&&a.length>0&&!x&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:s=>{s.stopPropagation(),i([])},"aria-label":w("controls.clear","Clear"),children:"✕"})]}),b&&C.length>0&&e.jsx("ul",{className:"nice-dropdown__list",role:"listbox",children:C.map(s=>e.jsx("li",{role:"option",className:"nice-dropdown__option",onMouseDown:l=>{l.preventDefault(),u(String(s.value))},children:s.label},String(s.value)))}),A&&e.jsx("div",{className:"nice-field__error",children:A}),H&&!A&&e.jsx("div",{className:"nice-field__hint",children:H})]})},ba=({min:t=0,max:a=100,step:i=1,startValue:o,endValue:r,onChange:d,showLabels:$=!0,formatLabel:y,label:M,error:A,helperText:H,required:k,disabled:x,size:O="md",id:z,className:L,style:I,accessMode:F,showKeyboardHints:S})=>{const m=K.useNiceAccessMode(F,z);if(m==="hidden")return null;(m==="disabled"||m==="readOnly")&&(x=!0);const{t:f}=K.useNiceTranslation(),w=K.useControlId(z),b=n.useRef(null),j=n.useMemo(()=>[K.COMMON_SHORTCUTS.increment,K.COMMON_SHORTCUTS.decrement,K.COMMON_SHORTCUTS.first,K.COMMON_SHORTCUTS.last,{key:"Tab",description:f("shortcuts.switchThumb","Switch thumb")}],[f]),h=_=>(_-t)/(a-t)*100,N=_=>y?y(_):String(_),T=_=>{const C=Math.round(_/i)*i;return Math.max(t,Math.min(a,C))},P=n.useCallback((_,C)=>{_.preventDefault();const u=b.current;if(!u||x)return;const B=p=>{const s=u.getBoundingClientRect(),l=Math.max(0,Math.min(1,(p.clientX-s.left)/s.width)),c=T(t+l*(a-t));C==="start"?d(Math.min(c,r),r):d(o,Math.max(c,o))},g=()=>{document.removeEventListener("pointermove",B),document.removeEventListener("pointerup",g)};document.addEventListener("pointermove",B),document.addEventListener("pointerup",g)},[t,a,i,o,r,d,x]);return e.jsxs("div",{className:`nice-field nice-field--${O} ${A?"nice-field--error":""} ${L||""}`,style:I,children:[M&&e.jsxs("label",{className:"nice-field__label",htmlFor:w,children:[M,k&&e.jsx("span",{className:"nice-field__required",children:"*"}),S&&e.jsx(K.NiceKeyboardHint,{shortcuts:j,size:"sm"})]}),e.jsxs("div",{className:"nice-range-slider",ref:b,children:[e.jsx("div",{className:"nice-range-slider__track",children:e.jsx("div",{className:"nice-range-slider__fill",style:{left:`${h(o)}%`,width:`${h(r)-h(o)}%`}})}),e.jsx("div",{className:"nice-range-slider__thumb",style:{left:`${h(o)}%`},onPointerDown:_=>P(_,"start"),role:"slider","aria-valuemin":t,"aria-valuemax":r,"aria-valuenow":o,tabIndex:x?-1:0,id:w}),e.jsx("div",{className:"nice-range-slider__thumb",style:{left:`${h(r)}%`},onPointerDown:_=>P(_,"end"),role:"slider","aria-valuemin":o,"aria-valuemax":a,"aria-valuenow":r,tabIndex:x?-1:0}),$&&e.jsxs("div",{className:"nice-range-slider__labels",children:[e.jsx("span",{style:{left:`${h(o)}%`},children:N(o)}),e.jsx("span",{style:{left:`${h(r)}%`},children:N(r)})]})]}),A&&e.jsx("div",{className:"nice-field__error",children:A}),H&&!A&&e.jsx("div",{className:"nice-field__hint",children:H})]})},ja=({displayValue:t,placeholder:a,clearable:i,children:o,onClear:r,open:d,onOpenChange:$,dropdownWidth:y,label:M,error:A,helperText:H,required:k,disabled:x,size:O="md",id:z,className:L,style:I,accessMode:F,showKeyboardHints:S,displayStyle:m})=>{K.useComponentDisplayStyle("input",m),K.useComponentDisplayClass("input",m);const f=K.useNiceAccessMode(F,z);if(f==="hidden")return null;(f==="disabled"||f==="readOnly")&&(x=!0);const w=K.useControlId(z),{t:b}=K.useNiceTranslation(),[j,h]=n.useState(!1),N=n.useRef(null),T=d??j,P=n.useMemo(()=>[{key:"Enter",description:b("shortcuts.openDropdown","Open dropdown")},K.COMMON_SHORTCUTS.cancel],[b]),_=C=>{$?$(C):h(C)};return K.useClickOutside(N,()=>_(!1)),e.jsxs("div",{className:`nice-field nice-field--${O} ${A?"nice-field--error":""} ${L||""}`,style:I,ref:N,children:[M&&e.jsxs("label",{className:"nice-field__label",htmlFor:w,children:[M,k&&e.jsx("span",{className:"nice-field__required",children:"*"}),S&&e.jsx(K.NiceKeyboardHint,{shortcuts:P,size:"sm"})]}),e.jsxs("div",{className:"nice-field__input-wrap",children:[e.jsxs("button",{type:"button",id:w,className:"nice-select__trigger",onClick:()=>!x&&_(!T),disabled:x,children:[e.jsx("span",{children:t||a||b("controls.select","Select...")}),e.jsx("span",{className:"nice-select__arrow",children:"▾"})]}),i&&t&&!x&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>r?.(),"aria-label":b("controls.clear","Clear"),children:"✕"})]}),T&&e.jsx("div",{className:"nice-dropdown",style:{width:y},children:o}),A&&e.jsx("div",{className:"nice-field__error",children:A}),H&&!A&&e.jsx("div",{className:"nice-field__hint",children:H})]})},Qt=({items:t,data:a,onFieldChange:i,onSubmit:o,dataSource:r,recordKey:d,columns:$=1,responsiveColumns:y,gap:M=16,labelPosition:A="top",size:H="md",readOnly:k,disabled:x,className:O,style:z,accessMode:L,id:I,autoSaveDelay:F,onDirtyChange:S})=>{const m=K.useNiceAccessMode(L,I);if(m==="hidden")return null;m==="disabled"&&(x=!0),m==="readOnly"&&(k=!0);const f=K.useNiceRecord(r??null,d),w=!!r&&d!=null,b=w?f.editData:a??{},[j]=n.useState(()=>({...b})),[h,N]=n.useState([]),T=n.useMemo(()=>Object.keys(b).some(U=>b[U]!==j[U]),[b,j]),P=n.useRef(!1);n.useEffect(()=>{T!==P.current&&(P.current=T,S?.(T))},[T,S]);const _=n.useRef(null),C=n.useCallback(()=>{F&&(_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{w?f.save():o?.(b)},F))},[F,w,f,o,b]),u=n.useCallback((U,q)=>{k||x||(N(Q=>[...Q,{field:U,prev:b[U]}]),w?f.set(U,q):i?.(U,q),C())},[w,f,i,k,x,b,C]);n.useCallback(()=>{if(h.length===0)return;const U=h[h.length-1];N(q=>q.slice(0,-1)),w?f.set(U.field,U.prev):i?.(U.field,U.prev)},[h,w,f,i]);const B=n.useCallback(U=>{U.preventDefault(),_.current&&clearTimeout(_.current),w?f.save():o?.(b)},[b,o,w,f]),g=n.useRef(null),[p,s]=n.useState($);n.useEffect(()=>{if(!y||!g.current){s($);return}const U=g.current,q=new ResizeObserver(Q=>{const W=Q[0]?.contentRect.width??0,ae=Object.keys(y).map(Number).sort((oe,me)=>me-oe);for(const oe of ae)if(W>=oe){s(y[oe]);return}s($)});return q.observe(U),()=>q.disconnect()},[y,$]);const l=n.useMemo(()=>t.filter(U=>!(U.visible===!1||U.visibleWhen&&!U.visibleWhen(b))),[t,b]),c=n.useMemo(()=>{const U=[];let q=null;for(const Q of l)!q||q.name!==Q.group?(q={name:Q.group,items:[Q]},U.push(q)):q.items.push(Q);return U},[l]),E=U=>e.jsxs("div",{className:"nice-form__item",style:{gridColumn:U.colSpan?`span ${U.colSpan}`:void 0},children:[U.label&&e.jsxs("label",{className:"nice-form__label",children:[U.label,U.required&&e.jsx("span",{className:"nice-field__required",children:"*"})]}),e.jsx("div",{className:"nice-form__control",children:U.render?.(b[U.field],q=>u(U.field,q))}),U.hint&&e.jsx("div",{className:"nice-form__hint",children:U.hint})]},U.field),D={display:"grid",gridTemplateColumns:`repeat(${p}, 1fr)`,gap:M},R=c.some(U=>U.name!=null);return e.jsx("form",{ref:g,className:`nice-form nice-form--label-${A}${T?" nice-form--dirty":""} ${O||""}`,style:R?{...z}:{...D,...z},onSubmit:B,noValidate:!0,children:R?c.map((U,q)=>e.jsxs("fieldset",{className:U.name?"nice-form__group":"nice-form__group nice-form__group--no-title",children:[U.name&&e.jsx("legend",{className:"nice-form__group-title",children:U.name}),e.jsx("div",{style:D,children:U.items.map(E)})]},q)):l.map(E)})};Qt.displayName="NiceForm";function Nt(t){const a=t.trim().toLowerCase();return a.startsWith("http://")||a.startsWith("https://")||a.startsWith("/")||a.startsWith("./")||a.startsWith("../")?!0:!(a.startsWith("javascript:")||a.startsWith("vbscript:")||a.startsWith("data:text"))}const _a=["bold","italic","underline","strikethrough","h1","h2","h3","ul","ol","blockquote","hr","link","unlink","image","table","code","alignLeft","alignCenter","alignRight","fontSize","fontColor","undo","redo","clear","findReplace","emoji","source","fullscreen","markdown"],ka={bold:"B",italic:"I",underline:"U",strikethrough:"S",h1:"H1",h2:"H2",h3:"H3",ul:"⊞",ol:"⊟",link:"🔗",unlink:"⛓️‍💥",undo:"↩",redo:"↪",clear:"⌧",table:"⊞T",image:"🖼",code:"</>",markdown:"MD",blockquote:"❝",hr:"─",subscript:"x₂",superscript:"x²",indent:"→⊞",outdent:"←⊞",alignLeft:"⬅",alignCenter:"⬌",alignRight:"➡",alignJustify:"⬌⬌",fullscreen:"⛶",removeFormat:"⌧F",print:"🖨",source:"🗏",emoji:"😀",findReplace:"🔍"},va=[{value:"1",label:"8pt"},{value:"2",label:"10pt"},{value:"3",label:"12pt"},{value:"4",label:"14pt"},{value:"5",label:"18pt"},{value:"6",label:"24pt"},{value:"7",label:"36pt"}],Na=[{label:"Faces",emojis:["😀","😂","😊","😍","🤔","😢","😎","🥳","😤","🤯","🥰","😴"]},{label:"Hands",emojis:["👍","👎","👏","🤝","✌️","🤞","💪","🙌","👋","🤙"]},{label:"Symbols",emojis:["❤️","⭐","🔥","✅","❌","⚡","💡","📌","🎯","🏆","🎉","💬"]},{label:"Arrows",emojis:["➡️","⬅️","⬆️","⬇️","↩️","🔄","▶️","⏸️","⏹️","⏩"]}];function wa(t){let a=t;return a=a.replace(/<h1[^>]*>(.*?)<\/h1>/gi,`# $1
2
+ `),a=a.replace(/<h2[^>]*>(.*?)<\/h2>/gi,`## $1
3
+ `),a=a.replace(/<h3[^>]*>(.*?)<\/h3>/gi,`### $1
4
+ `),a=a.replace(/<strong[^>]*>(.*?)<\/strong>/gi,"**$1**"),a=a.replace(/<b[^>]*>(.*?)<\/b>/gi,"**$1**"),a=a.replace(/<em[^>]*>(.*?)<\/em>/gi,"*$1*"),a=a.replace(/<i[^>]*>(.*?)<\/i>/gi,"*$1*"),a=a.replace(/<code[^>]*>(.*?)<\/code>/gi,"`$1`"),a=a.replace(/<pre[^>]*>(.*?)<\/pre>/gis,"```\n$1\n```\n"),a=a.replace(/<br\s*\/?>/gi,`
5
+ `),a=a.replace(/<li[^>]*>(.*?)<\/li>/gi,`- $1
6
+ `),a=a.replace(/<\/?(?:ul|ol|p|div)[^>]*>/gi,`
7
+ `),a=a.replace(/<[^>]+>/g,""),a=a.replace(/\n{3,}/g,`
8
+
9
+ `),a.trim()}function Ca(t){let a=t;return a=a.replace(/^### (.+)$/gm,"<h3>$1</h3>"),a=a.replace(/^## (.+)$/gm,"<h2>$1</h2>"),a=a.replace(/^# (.+)$/gm,"<h1>$1</h1>"),a=a.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),a=a.replace(/\*(.+?)\*/g,"<em>$1</em>"),a=a.replace(/`([^`]+)`/g,"<code>$1</code>"),a=a.replace(/```\n?([\s\S]*?)\n?```/g,"<pre>$1</pre>"),a=a.replace(/^- (.+)$/gm,"<li>$1</li>"),a=a.replace(/(<li>.*<\/li>)/gs,"<ul>$1</ul>"),a=a.replace(/\n/g,"<br>"),a}const ft=({value:t,onChange:a,placeholder:i,height:o=200,toolbar:r=_a,readOnly:d,onImageUpload:$,mentionTrigger:y,mentionSuggestions:M,onMentionSearch:A,onFileDrop:H,pasteCleanup:k=!0,maxLength:x=0,showWordCount:O=!1,templates:z,label:L,error:I,helperText:F,required:S,disabled:m,size:f="md",id:w,className:b,style:j,accessMode:h})=>{const N=K.useNiceAccessMode(h,w);if(N==="hidden")return null;N==="disabled"&&(m=!0),N==="readOnly"&&(d=!0);const T=K.useControlId(w),P=n.useRef(null),_=n.useRef(null),C=n.useRef(null),[u,B]=n.useState(!1),[g,p]=n.useState(""),[s,l]=n.useState(!1),[c,E]=n.useState(""),[D,R]=n.useState(!1),[U,q]=n.useState(""),[Q,W]=n.useState(0),[ae,oe]=n.useState(!1),[me,ye]=n.useState("#000000"),[xe,ee]=n.useState("#ffff00"),[ge,ce]=n.useState(0),[ue,re]=n.useState(0),[le,J]=n.useState(!1),[V,Y]=n.useState(""),[te,he]=n.useState(""),[se,ne]=n.useState(!1),[Z,de]=n.useState(!1),pe=n.useCallback((ie,v)=>{if(d||m)return;const G=P.current;if(G){if(ie==="markdown"){if(!u)p(wa(t)),B(!0),l(!1);else{const X=Ca(g);a(X),B(!1)}return}if(ie==="source"){s?(a(c),l(!1)):(E(t),l(!0),B(!1));return}if(ie==="fullscreen"){oe(X=>!X);return}if(ie==="emoji"){ne(X=>!X);return}if(ie==="findReplace"){J(X=>!X);return}if(ie==="image"){if($)_.current?.click();else{const X=prompt("Image URL:");X&&Nt(X)&&(G.focus(),document.execCommand("insertImage",!1,X),a(K.sanitizeHtml(G.innerHTML)))}return}switch(G.focus(),ie){case"bold":document.execCommand("bold");break;case"italic":document.execCommand("italic");break;case"underline":document.execCommand("underline");break;case"strikethrough":document.execCommand("strikeThrough");break;case"h1":document.execCommand("formatBlock",!1,"h1");break;case"h2":document.execCommand("formatBlock",!1,"h2");break;case"h3":document.execCommand("formatBlock",!1,"h3");break;case"ul":document.execCommand("insertUnorderedList");break;case"ol":document.execCommand("insertOrderedList");break;case"blockquote":document.execCommand("formatBlock",!1,"blockquote");break;case"hr":document.execCommand("insertHorizontalRule");break;case"subscript":document.execCommand("subscript");break;case"superscript":document.execCommand("superscript");break;case"indent":document.execCommand("indent");break;case"outdent":document.execCommand("outdent");break;case"alignLeft":document.execCommand("justifyLeft");break;case"alignCenter":document.execCommand("justifyCenter");break;case"alignRight":document.execCommand("justifyRight");break;case"alignJustify":document.execCommand("justifyFull");break;case"removeFormat":document.execCommand("removeFormat");break;case"print":window.print();return;case"link":{const X=prompt("URL:");X&&Nt(X)&&document.execCommand("createLink",!1,X);break}case"unlink":document.execCommand("unlink");break;case"undo":document.execCommand("undo");break;case"redo":document.execCommand("redo");break;case"clear":document.execCommand("removeFormat");break;case"fontSize":{v&&document.execCommand("fontSize",!1,v);break}case"fontColor":{v&&document.execCommand("foreColor",!1,v);break}case"bgColor":{v&&document.execCommand("hiliteColor",!1,v);break}case"table":{document.execCommand("insertHTML",!1,'<table class="nice-htmleditor__table"><thead><tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr></thead><tbody><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></tbody></table><p>&nbsp;</p>');break}case"code":{const fe=window.getSelection()?.toString()||"";fe.includes(`
10
+ `)||fe.length>60?document.execCommand("insertHTML",!1,`<pre class="nice-htmleditor__code-block">${fe||"// code"}</pre>`):document.execCommand("insertHTML",!1,`<code>${fe||"code"}</code>`);break}}a(K.sanitizeHtml(G.innerHTML)),ce(G.textContent?.length??0)}},[a,d,m,u,g,t,$,s,c]),be=n.useCallback(async ie=>{const v=ie.target.files?.[0];if(!v||!$)return;const G=await $(v),X=P.current;X&&G&&(X.focus(),document.execCommand("insertImage",!1,G),a(X.innerHTML)),ie.target.value=""},[$,a]),_e=n.useCallback(()=>{const ie=P.current;if(!ie)return;const v=ie.textContent?.length??0;if(x>0&&v>x&&(ie.textContent=(ie.textContent??"").slice(0,x)),ce(v),re((ie.textContent??"").trim().split(/\s+/).filter(Boolean).length),a(ie.innerHTML),y){const G=window.getSelection();if(G&&G.rangeCount>0){const X=G.getRangeAt(0),fe=X.startContainer;if(fe.nodeType===Node.TEXT_NODE){const ve=fe.textContent||"",Me=X.startOffset,Ae=ve.slice(0,Me),Fe=Ae.lastIndexOf(y);if(Fe>=0&&(Fe===0||/\s/.test(Ae[Fe-1]))){const He=Ae.slice(Fe+y.length);if(!/\s/.test(He)){R(!0),q(He),W(0),A?.(He);return}}}}R(!1)}},[a,y,A]),je=M?.filter(ie=>ie.label.toLowerCase().includes(U.toLowerCase())).slice(0,8)??[],Ne=n.useCallback(ie=>{const v=P.current;if(!v)return;const G=window.getSelection();if(!G||G.rangeCount===0)return;const X=G.getRangeAt(0),fe=X.startContainer;if(fe.nodeType===Node.TEXT_NODE&&y){const ve=fe.textContent||"",Me=X.startOffset,Fe=ve.slice(0,Me).lastIndexOf(y);if(Fe>=0){const He=ve.slice(0,Fe),Zn=ve.slice(Me),Jn=`<span class="nice-htmleditor__mention" data-mention="${ie.key}" contenteditable="false">${y}${ie.label}</span>&nbsp;`;fe.textContent=He;const at=document.createRange();at.setStartAfter(fe),at.collapse(!0);const Qn=at.createContextualFragment(Jn+Zn);fe.parentNode?.insertBefore(Qn,fe.nextSibling),G.collapseToEnd(),a(v.innerHTML)}}R(!1)},[y,a]),Ce=n.useCallback(ie=>{if(D&&je.length>0){ie.key==="ArrowDown"?(ie.preventDefault(),W(v=>Math.min(v+1,je.length-1))):ie.key==="ArrowUp"?(ie.preventDefault(),W(v=>Math.max(v-1,0))):ie.key==="Enter"?(ie.preventDefault(),Ne(je[Q])):ie.key==="Escape"&&R(!1);return}(ie.ctrlKey||ie.metaKey)&&ie.key==="b"?(ie.preventDefault(),pe("bold")):(ie.ctrlKey||ie.metaKey)&&ie.key==="i"?(ie.preventDefault(),pe("italic")):(ie.ctrlKey||ie.metaKey)&&ie.key==="u"?(ie.preventDefault(),pe("underline")):(ie.ctrlKey||ie.metaKey)&&ie.key==="f"?(ie.preventDefault(),J(v=>!v)):(ie.ctrlKey||ie.metaKey)&&ie.key==="z"&&!ie.shiftKey?(ie.preventDefault(),pe("undo")):(ie.ctrlKey||ie.metaKey)&&(ie.key==="y"||ie.key==="z"&&ie.shiftKey)&&(ie.preventDefault(),pe("redo"))},[D,je,Q,Ne,pe]),we=n.useCallback(ie=>{if(!k)return;ie.preventDefault();const v=ie.clipboardData.getData("text/html"),G=ie.clipboardData.getData("text/plain");if(v){const fe=v.replace(/<style[\s\S]*?<\/style>/gi,"").replace(/<script[\s\S]*?<\/script>/gi,"").replace(/class="[^"]*"/gi,"").replace(/style="[^"]*"/gi,"").replace(/<o:[^>]*>[\s\S]*?<\/o:[^>]*>/gi,"").replace(/<!--[\s\S]*?-->/g,"").replace(/<\/?(?:xml|meta|link|font|span)[^>]*>/gi,"");document.execCommand("insertHTML",!1,fe)}else G&&document.execCommand("insertText",!1,G);const X=P.current;X&&(a(X.innerHTML),ce(X.textContent?.length??0))},[k,a]),Oe=n.useCallback(async ie=>{if(!H)return;ie.preventDefault();const v=Array.from(ie.dataTransfer.files);if(v.length===0)return;const G=await H(v),X=P.current;if(X){X.focus();for(const fe of G)if(/\.(png|jpe?g|gif|webp|svg|bmp|ico)$/i.test(fe)||fe.startsWith("data:image/"))document.execCommand("insertImage",!1,fe);else{const Me=`<a href="${fe}">${fe.split("/").pop()??fe}</a>`;document.execCommand("insertHTML",!1,Me)}a(X.innerHTML)}},[H,a]),Le=n.useCallback(ie=>{H&&ie.preventDefault()},[H]),Ee=n.useCallback(ie=>{const v=P.current;if(!v||!V)return;const G=v.textContent??"",X=V.toLowerCase(),fe=G.toLowerCase();(ie===1?fe.indexOf(X):fe.lastIndexOf(X))!==-1&&(v.focus(),window.find?.(V))},[V]),ze=n.useCallback(()=>{const ie=P.current;!ie||!V||(ie.innerHTML=ie.innerHTML.split(V).join(te),a(ie.innerHTML))},[V,te,a]),Pe=n.useCallback(()=>{if(!V)return;const ie=t.split(V).join(te);a(ie);const v=P.current;v&&(v.innerHTML=ie)},[V,te,t,a]),De=n.useCallback(ie=>{const v=P.current;v&&(v.focus(),document.execCommand("insertText",!1,ie),a(v.innerHTML),ne(!1))},[a]),Se=n.useCallback(ie=>{const v=P.current;v&&(v.focus(),document.execCommand("insertHTML",!1,ie),a(v.innerHTML),de(!1))},[a]),$e=n.useCallback(ie=>{const v=m||d;if(ie==="fontSize")return e.jsx(ke.NiceSelect,{size:"sm",value:"",onChange:X=>pe("fontSize",String(X)),disabled:v,placeholder:"Size",options:va.map(X=>({value:X.value,label:X.label})),style:{minWidth:70,maxWidth:80}},ie);if(ie==="fontColor")return e.jsx(ke.NiceColorPicker,{value:me,onChange:X=>{ye(X),pe("fontColor",X)},disabled:v,size:"sm",label:"",title:"Text color"},ie);if(ie==="bgColor")return e.jsx(ke.NiceColorPicker,{value:xe,onChange:X=>{ee(X),pe("bgColor",X)},disabled:v,size:"sm",label:"",title:"Highlight color"},ie);const G=ie==="markdown"&&u||ie==="fullscreen"&&ae||ie==="source"&&s||ie==="findReplace"&&le||ie==="emoji"&&se;return e.jsx(ke.NiceButton,{size:"sm",variant:G?"primary":"ghost",onClick:()=>pe(ie),title:ie,disabled:v,children:ka[ie]||ie},ie)},[m,d,pe,u,ae,me,xe,s,le,se]);return e.jsxs("div",{className:`nice-field nice-field--${f} ${I?"nice-field--error":""} ${b||""}`,style:j,children:[L&&e.jsxs("label",{className:"nice-field__label",htmlFor:T,children:[L,S&&e.jsx("span",{className:"nice-field__required",children:"*"})]}),e.jsxs("div",{ref:C,className:`nice-htmleditor${ae?" nice-htmleditor--fullscreen":""}`,children:[e.jsxs("div",{className:"nice-htmleditor__toolbar",style:{display:"flex",flexWrap:"wrap",gap:2,alignItems:"center"},children:[r.map($e),z&&z.length>0&&e.jsxs("div",{style:{position:"relative"},children:[e.jsx(ke.NiceButton,{size:"sm",variant:Z?"primary":"ghost",onClick:()=>de(ie=>!ie),title:"Insert template",children:"📋"}),Z&&e.jsx("ul",{style:{position:"absolute",top:"100%",right:0,zIndex:200,background:"#fff",border:"1px solid #ddd",borderRadius:6,boxShadow:"0 4px 16px rgba(0,0,0,.12)",listStyle:"none",margin:0,padding:4,minWidth:160,maxHeight:200,overflow:"auto"},children:z.map((ie,v)=>e.jsx("li",{style:{padding:"6px 10px",cursor:"pointer",borderRadius:4},onMouseDown:G=>{G.preventDefault(),Se(ie.html)},children:ie.label},v))})]})]}),le&&e.jsxs("div",{className:"nice-htmleditor__find-bar",style:{display:"flex",gap:4,alignItems:"center",padding:"4px 8px",background:"#f8f9fa",borderBottom:"1px solid #ddd",fontSize:"0.875em"},children:[e.jsx("input",{type:"text",placeholder:"Find...",value:V,onChange:ie=>Y(ie.target.value),style:{flex:1,maxWidth:180,padding:"2px 6px",border:"1px solid #ccc",borderRadius:4}}),e.jsx("input",{type:"text",placeholder:"Replace...",value:te,onChange:ie=>he(ie.target.value),style:{flex:1,maxWidth:180,padding:"2px 6px",border:"1px solid #ccc",borderRadius:4}}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Ee(1),title:"Find next",children:"▶"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Ee(-1),title:"Find previous",children:"◀"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:ze,disabled:m||d,children:"Replace"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:Pe,disabled:m||d,children:"All"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>J(!1),children:"✕"})]}),se&&e.jsx("div",{className:"nice-htmleditor__emoji-picker",style:{padding:8,background:"#fff",borderBottom:"1px solid #ddd",maxHeight:180,overflowY:"auto"},children:Na.map(ie=>e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"0.7em",fontWeight:600,color:"#999",padding:"4px 0"},children:ie.label}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:2},children:ie.emojis.map(v=>e.jsx("span",{style:{cursor:"pointer",fontSize:"1.2em",padding:2,borderRadius:4},onClick:()=>De(v),title:v,children:v},v))})]},ie.label))}),e.jsx("input",{ref:_,type:"file",accept:"image/*",style:{display:"none"},onChange:be}),s?e.jsx("textarea",{className:"nice-htmleditor__source",value:c,onChange:ie=>E(ie.target.value),style:{minHeight:o,width:"100%",fontFamily:"monospace",resize:"vertical",whiteSpace:"pre",fontSize:"0.85em"},disabled:m||d}):u?e.jsx("textarea",{className:"nice-htmleditor__markdown",value:g,onChange:ie=>p(ie.target.value),style:{minHeight:o,width:"100%",fontFamily:"monospace",resize:"vertical"},disabled:m||d}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx("div",{ref:P,id:T,className:"nice-htmleditor__content",contentEditable:!m&&!d,dangerouslySetInnerHTML:{__html:t},onInput:_e,onKeyDown:Ce,onPaste:we,onDrop:Oe,onDragOver:Le,style:{minHeight:o},"data-placeholder":i,role:"textbox","aria-multiline":"true",suppressContentEditableWarning:!0}),D&&je.length>0&&e.jsx("ul",{className:"nice-htmleditor__mention-list",children:je.map((ie,v)=>e.jsx("li",{className:`nice-htmleditor__mention-item ${v===Q?"nice-htmleditor__mention-item--active":""}`,onMouseDown:G=>{G.preventDefault(),Ne(ie)},children:ie.label},ie.key))})]}),e.jsxs("div",{className:"nice-htmleditor__statusbar",style:{display:"flex",gap:12,padding:"2px 8px",fontSize:"0.75em",color:"#666",borderTop:"1px solid #eee"},children:[x>0&&e.jsxs("span",{children:[ge," / ",x]}),O&&e.jsxs("span",{children:[ue," words"]}),O&&e.jsxs("span",{children:[ge," chars"]}),s&&e.jsx("span",{style:{fontWeight:600},children:"HTML Source"}),u&&e.jsx("span",{style:{fontWeight:600},children:"Markdown"})]})]}),I&&e.jsx("div",{className:"nice-field__error",children:I}),F&&!I&&e.jsx("div",{className:"nice-field__hint",children:F})]})},Sa=Object.freeze(Object.defineProperty({__proto__:null,NiceHtmlEditor:ft},Symbol.toStringTag,{value:"Module"})),$a=[{code:"en",label:"English"},{code:"es",label:"Spanish"},{code:"fr",label:"French"},{code:"de",label:"German"},{code:"it",label:"Italian"},{code:"pt",label:"Portuguese"},{code:"pl",label:"Polish"},{code:"ru",label:"Russian"},{code:"zh",label:"Chinese"},{code:"ja",label:"Japanese"},{code:"ko",label:"Korean"},{code:"ar",label:"Arabic"}],Ma=[{style:"professional",label:"Professional"},{style:"casual",label:"Casual"},{style:"formal",label:"Formal"},{style:"concise",label:"Concise"}],Ta=n.forwardRef(function(a,i){const{enableAI:o=!0,aiModel:r,enableImprove:d=!0,enableTranslate:$=!0,enableGenerate:y=!0,toolbar:M,languages:A=$a,textStyles:H=Ma,onImprove:k,onTranslate:x,onGenerate:O,showAIToolbar:z=!0,value:L,onChange:I,...F}=a,S=n.useRef(null),[m,f]=n.useState(!1),[w,b]=n.useState(!1),[j,h]=n.useState(!1),[N,T]=n.useState(""),[P,_]=n.useState(""),[C,u]=n.useState("professional"),[B,g]=n.useState(""),[p,s]=n.useState(A[0]?.code||"en"),[l,c]=n.useState(""),[E,D]=n.useState(""),{t:R}=Ft.Na(),U=K.useNiceAI(),{improveText:q,translate:Q,generateHtml:W,isLoading:ae}=K.useTextImprovement(),oe=o&&U.isConfigured,me=n.useCallback(()=>{const le=window.getSelection();return le&&le.toString().trim()?le.toString():""},[]),ye=n.useCallback(le=>{const J=window.getSelection();if(J&&J.rangeCount>0){const V=J.getRangeAt(0);V.deleteContents();const Y=document.createElement("div");Y.innerHTML=le;const te=document.createDocumentFragment();for(;Y.firstChild;)te.appendChild(Y.firstChild);if(V.insertNode(te),S.current){const he=S.current.innerHTML;I(he)}}},[I]),xe=n.useCallback(async(le="professional")=>{if(!oe||!d)return"";const J=me();if(!J)return"";T(J),u(le),f(!0),_("");try{const V=await q(J,le);return _(V),k?.(J,V,le),V}catch{return _(R("htmlEditorAI.improveFailed","Failed to improve text")),""}},[oe,d,me,q,k,R]),ee=n.useCallback(async le=>{if(!oe||!$)return"";const J=me();if(!J)return"";T(J),s(le),b(!0),g("");try{const V=A.find(te=>te.code===le)?.label||le,Y=await Q(J,V);return g(Y),x?.(J,Y,le),Y}catch{return g(R("htmlEditorAI.translateFailed","Failed to translate text")),""}},[oe,$,me,Q,A,x,R]),ge=n.useCallback(async le=>{if(!oe||!y||!le.trim())return"";c(le),D("");try{const J=await W(le);return D(J),O?.(le,J),J}catch{return D(R("htmlEditorAI.generateFailed","Failed to generate HTML")),""}},[oe,y,W,O,R]),ce=n.useCallback(()=>{P&&ye(P),f(!1),_("")},[P,ye]),ue=n.useCallback(()=>{B&&ye(B),b(!1),g("")},[B,ye]),re=n.useCallback(()=>{if(E&&S.current){document.execCommand("insertHTML",!1,E);const le=S.current.innerHTML;I(le)}h(!1),D(""),c("")},[E,I]);return n.useImperativeHandle(i,()=>({getEditor:()=>S.current,focus:()=>S.current?.focus(),getValue:()=>S.current?.innerHTML||"",setValue:le=>{S.current&&(S.current.innerHTML=le,I(le))},getSelection:me,insertHtml:le=>{document.execCommand("insertHTML",!1,le),S.current&&I(S.current.innerHTML)},improveSelection:xe,translateSelection:ee,generateHtml:ge})),n.useCallback(le=>{S.current=le},[]),e.jsxs("div",{className:"nice-html-editor-ai","data-testid":a["data-testid"],children:[z&&oe&&e.jsxs("div",{className:"nice-html-editor-ai__toolbar",children:[e.jsxs("div",{className:"nice-html-editor-ai__toolbar-left",children:[e.jsx("span",{className:"nice-html-editor-ai__badge",children:"AI"}),ae&&e.jsx("span",{className:"nice-html-editor-ai__loading",children:R("htmlEditorAI.processing","Processing...")})]}),e.jsxs("div",{className:"nice-html-editor-ai__toolbar-right",children:[d&&e.jsxs("div",{className:"nice-html-editor-ai__dropdown",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",onClick:()=>xe(),disabled:ae,title:R("htmlEditorAI.improveText","Improve selected text"),children:["✨ ",R("htmlEditorAI.improve","Improve")]}),e.jsx("div",{className:"nice-html-editor-ai__dropdown-menu",children:H.map(({style:le,label:J})=>e.jsx("button",{type:"button",className:"nice-html-editor-ai__dropdown-item",onClick:()=>xe(le),children:J},le))})]}),$&&e.jsxs("div",{className:"nice-html-editor-ai__dropdown",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",disabled:ae,title:R("htmlEditorAI.translateText","Translate selected text"),children:["🌐 ",R("htmlEditorAI.translate","Translate")]}),e.jsx("div",{className:"nice-html-editor-ai__dropdown-menu nice-html-editor-ai__dropdown-menu--languages",children:A.map(({code:le,label:J})=>e.jsx("button",{type:"button",className:"nice-html-editor-ai__dropdown-item",onClick:()=>ee(le),children:J},le))})]}),y&&e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",onClick:()=>h(!0),disabled:ae,title:R("htmlEditorAI.generateHtml","Generate HTML from description"),children:["⚡ ",R("htmlEditorAI.generate","Generate")]})]})]}),e.jsx("div",{className:"nice-html-editor-ai__editor-wrapper",children:e.jsx(ft,{value:L,onChange:I,toolbar:M,...F})}),m&&e.jsxs("div",{className:"nice-html-editor-ai__panel",children:[e.jsxs("div",{className:"nice-html-editor-ai__panel-header",children:[e.jsxs("h4",{children:["✨ ",R("htmlEditorAI.improveText","Improve Text")]}),e.jsx("div",{className:"nice-html-editor-ai__style-selector",children:H.map(({style:le,label:J})=>e.jsx("button",{type:"button",className:`nice-html-editor-ai__style-btn ${C===le?"nice-html-editor-ai__style-btn--active":""}`,onClick:()=>{u(le),xe(le)},children:J},le))}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>f(!1),children:"✕"})]}),e.jsx("div",{className:"nice-html-editor-ai__panel-body",children:ae?e.jsx("div",{className:"nice-html-editor-ai__loading-panel",children:R("htmlEditorAI.improving","Improving text...")}):e.jsxs("div",{className:"nice-html-editor-ai__comparison",children:[e.jsxs("div",{className:"nice-html-editor-ai__text-block",children:[e.jsx("h5",{children:R("htmlEditorAI.original","Original")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:N})]}),e.jsxs("div",{className:"nice-html-editor-ai__text-block nice-html-editor-ai__text-block--improved",children:[e.jsx("h5",{children:R("htmlEditorAI.improved","Improved")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:P})]})]})}),e.jsxs("div",{className:"nice-html-editor-ai__panel-footer",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__apply",onClick:ce,disabled:!P||ae,children:["✓ ",R("htmlEditorAI.apply","Apply")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{f(!1),_("")},children:R("htmlEditorAI.cancel","Cancel")})]})]}),w&&e.jsxs("div",{className:"nice-html-editor-ai__panel",children:[e.jsxs("div",{className:"nice-html-editor-ai__panel-header",children:[e.jsxs("h4",{children:["🌐 ",R("htmlEditorAI.translateText","Translate Text")]}),e.jsx("div",{className:"nice-html-editor-ai__language-selector",children:e.jsx("select",{value:p,onChange:le=>{s(le.target.value),ee(le.target.value)},className:"nice-html-editor-ai__language-select",children:A.map(({code:le,label:J})=>e.jsx("option",{value:le,children:J},le))})}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>b(!1),children:"✕"})]}),e.jsx("div",{className:"nice-html-editor-ai__panel-body",children:ae?e.jsx("div",{className:"nice-html-editor-ai__loading-panel",children:R("htmlEditorAI.translating","Translating...")}):e.jsxs("div",{className:"nice-html-editor-ai__comparison",children:[e.jsxs("div",{className:"nice-html-editor-ai__text-block",children:[e.jsx("h5",{children:R("htmlEditorAI.original","Original")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:N})]}),e.jsxs("div",{className:"nice-html-editor-ai__text-block nice-html-editor-ai__text-block--translated",children:[e.jsx("h5",{children:A.find(le=>le.code===p)?.label||p}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:B})]})]})}),e.jsxs("div",{className:"nice-html-editor-ai__panel-footer",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__apply",onClick:ue,disabled:!B||ae,children:["✓ ",R("htmlEditorAI.apply","Apply")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{b(!1),g("")},children:R("htmlEditorAI.cancel","Cancel")})]})]}),j&&e.jsxs("div",{className:"nice-html-editor-ai__panel nice-html-editor-ai__panel--generate",children:[e.jsxs("div",{className:"nice-html-editor-ai__panel-header",children:[e.jsxs("h4",{children:["⚡ ",R("htmlEditorAI.generateHtml","Generate HTML")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>{h(!1),D(""),c("")},children:"✕"})]}),e.jsxs("div",{className:"nice-html-editor-ai__panel-body",children:[e.jsxs("div",{className:"nice-html-editor-ai__generate-input",children:[e.jsx("textarea",{placeholder:R("htmlEditorAI.generatePlaceholder",'Describe what you want to create (e.g., "A pricing table with 3 tiers", "A contact form with name, email, and message")'),value:l,onChange:le=>c(le.target.value),className:"nice-html-editor-ai__generate-textarea",rows:3}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__generate-btn",onClick:()=>ge(l),disabled:ae||!l.trim(),children:ae?R("htmlEditorAI.generating","Generating..."):R("htmlEditorAI.generate","Generate")})]}),E&&e.jsxs("div",{className:"nice-html-editor-ai__generate-result",children:[e.jsx("h5",{children:R("htmlEditorAI.preview","Preview")}),e.jsx("div",{className:"nice-html-editor-ai__preview",dangerouslySetInnerHTML:{__html:E}}),e.jsx("h5",{children:R("htmlEditorAI.htmlCode","HTML Code")}),e.jsx("pre",{className:"nice-html-editor-ai__code",children:E})]})]}),e.jsxs("div",{className:"nice-html-editor-ai__panel-footer",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__apply",onClick:re,disabled:!E||ae,children:["✓ ",R("htmlEditorAI.insert","Insert")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{h(!1),D(""),c("")},children:R("htmlEditorAI.cancel","Cancel")})]})]})]})});function Ie(t){return t.toString().padStart(2,"0")}function Ea(t){if(!t)return{date:"",hours:0,minutes:0,seconds:0};const a=new Date(t);if(isNaN(a.getTime()))return{date:"",hours:0,minutes:0,seconds:0};const i=a.getFullYear(),o=Ie(a.getMonth()+1),r=Ie(a.getDate());return{date:`${i}-${o}-${r}`,hours:a.getHours(),minutes:a.getMinutes(),seconds:a.getSeconds()}}function Ra(t,a,i,o){return t?`${t}T${Ie(a)}:${Ie(i)}:${Ie(o)}`:""}const en=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,value:k,onChange:x,onBlur:O,min:z,max:L,hourFormat:I="24",minuteStep:F=1,showSeconds:S=!1,showNow:m=!1,clearable:f=!1,...w},b)=>{const{t:j}=K.useNiceTranslation(),h=K.useControlId(M),N=n.useRef(null),T=n.useMemo(()=>Ea(k),[k]),P=n.useCallback((R,U,q,Q)=>{x?.(Ra(R,U,q,Q))},[x]),_=n.useCallback(R=>{P(R.target.value,T.hours,T.minutes,T.seconds)},[P,T]),C=n.useCallback(R=>{const U=Math.max(0,Math.min(23,parseInt(R.target.value,10)||0));P(T.date,U,T.minutes,T.seconds)},[P,T]),u=n.useCallback(R=>{const U=Math.max(0,Math.min(59,parseInt(R.target.value,10)||0));P(T.date,T.hours,U,T.seconds)},[P,T]),B=n.useCallback(R=>{const U=Math.max(0,Math.min(59,parseInt(R.target.value,10)||0));P(T.date,T.hours,T.minutes,U)},[P,T]),g=n.useCallback(()=>{const R=T.hours>=12?T.hours-12:T.hours+12;P(T.date,R,T.minutes,T.seconds)},[P,T]),p=n.useCallback(()=>{const R=new Date,U=`${R.getFullYear()}-${Ie(R.getMonth()+1)}-${Ie(R.getDate())}`;P(U,R.getHours(),R.getMinutes(),R.getSeconds())},[P]),s=n.useCallback(()=>{x?.("")},[x]),l=I==="12"?T.hours===0?12:T.hours>12?T.hours-12:T.hours:T.hours,c=T.hours>=12?"PM":"AM",E=z?z.split("T")[0]:void 0,D=L?L.split("T")[0]:void 0;return e.jsxs("div",{ref:b,className:`nice-field ${A||""}`,style:H,...w,children:[t&&e.jsx("label",{htmlFor:h,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:t}),e.jsxs("div",{className:`nice-datetime nice-datetime--${$} ${i?"nice-datetime--error":""} ${r?"nice-datetime--disabled":""} ${d?"nice-datetime--readonly":""}`,children:[e.jsx("input",{ref:N,id:h,type:"date",className:"nice-datetime__date",name:y?`${y}_date`:void 0,value:T.date,min:E,max:D,disabled:r,readOnly:d,"aria-invalid":!!i,"aria-describedby":i?`${h}-error`:a?`${h}-helper`:void 0,onChange:_,onBlur:O}),e.jsx("span",{className:"nice-datetime__separator",children:e.jsx("svg",{width:"16",height:"16",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M10 2a8 8 0 100 16 8 8 0 000-16zm.75 4a.75.75 0 00-1.5 0v4c0 .2.08.39.22.53l2 2a.75.75 0 101.06-1.06L10.75 9.69V6z"})})}),e.jsx("input",{type:"number",className:"nice-datetime__time-part",value:l,min:I==="12"?1:0,max:I==="12"?12:23,disabled:r,readOnly:d,"aria-label":j("datetime.hours","Hours"),onChange:C}),e.jsx("span",{className:"nice-datetime__colon",children:":"}),e.jsx("input",{type:"number",className:"nice-datetime__time-part",value:Ie(T.minutes),min:0,max:59,step:F,disabled:r,readOnly:d,"aria-label":j("datetime.minutes","Minutes"),onChange:u}),S&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-datetime__colon",children:":"}),e.jsx("input",{type:"number",className:"nice-datetime__time-part",value:Ie(T.seconds),min:0,max:59,disabled:r,readOnly:d,"aria-label":j("datetime.seconds","Seconds"),onChange:B})]}),I==="12"&&e.jsx("button",{type:"button",className:"nice-datetime__ampm",disabled:r||d,onClick:g,"aria-label":j("datetime.toggleAmPm","Toggle AM/PM"),children:c}),m&&e.jsx("button",{type:"button",className:"nice-datetime__now",disabled:r||d,onClick:p,"aria-label":j("datetime.now","Now"),children:j("datetime.now","Now")}),f&&k&&e.jsx("button",{type:"button",className:"nice-input__clear",disabled:r||d,onClick:s,"aria-label":j("controls.clear","Clear"),children:"✕"})]}),i&&e.jsx("div",{id:`${h}-error`,className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{id:`${h}-helper`,className:"nice-field__helper",children:a})]})});en.displayName="NiceDateTimePicker";function Be(t){return t.toString().padStart(2,"0")}function st(t){if(!t)return{hours:0,minutes:0,seconds:0};const a=t.split(":").map(Number);return{hours:Math.max(0,Math.min(23,a[0]||0)),minutes:Math.max(0,Math.min(59,a[1]||0)),seconds:Math.max(0,Math.min(59,a[2]||0))}}function Aa(t,a,i,o){return o?`${Be(t)}:${Be(a)}:${Be(i)}`:`${Be(t)}:${Be(a)}`}const tn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,value:k,onChange:x,onBlur:O,hourFormat:z="24",minuteStep:L=1,showSeconds:I=!1,min:F,max:S,clearable:m=!1,...f},w)=>{const{t:b}=K.useNiceTranslation(),j=K.useControlId(M),h=n.useMemo(()=>st(k),[k]),N=n.useCallback((l,c,E)=>{x?.(Aa(l,c,E,I))},[x,I]),T=n.useCallback((l,c,E)=>{if(F){const D=st(F),R=D.hours*3600+D.minutes*60+D.seconds;if(l*3600+c*60+E<R)return[D.hours,D.minutes,D.seconds]}if(S){const D=st(S),R=D.hours*3600+D.minutes*60+D.seconds;if(l*3600+c*60+E>R)return[D.hours,D.minutes,D.seconds]}return[l,c,E]},[F,S]),P=n.useCallback(l=>{let c=parseInt(l.target.value,10)||0;if(z==="12"){const U=h.hours<12;c=Math.max(1,Math.min(12,c)),c===12?c=U?0:12:c=U?c:c+12}else c=Math.max(0,Math.min(23,c));const[E,D,R]=T(c,h.minutes,h.seconds);N(E,D,R)},[N,h,z,T]),_=n.useCallback(l=>{const c=Math.max(0,Math.min(59,parseInt(l.target.value,10)||0)),[E,D,R]=T(h.hours,c,h.seconds);N(E,D,R)},[N,h,T]),C=n.useCallback(l=>{const c=Math.max(0,Math.min(59,parseInt(l.target.value,10)||0)),[E,D,R]=T(h.hours,h.minutes,c);N(E,D,R)},[N,h,T]),u=n.useCallback(()=>{const l=h.hours>=12?h.hours-12:h.hours+12,[c,E,D]=T(l,h.minutes,h.seconds);N(c,E,D)},[N,h,T]),B=n.useCallback(()=>{x?.("")},[x]),g=n.useCallback((l,c)=>{if(d||r)return;const E=l==="m"?L:1;if(c.key==="ArrowUp"||c.key==="ArrowDown"){c.preventDefault();const D=c.key==="ArrowUp"?E:-E;let R=h.hours,U=h.minutes,q=h.seconds;l==="h"?R=((R+D)%24+24)%24:l==="m"?U=((U+D)%60+60)%60:q=((q+D)%60+60)%60;const[Q,W,ae]=T(R,U,q);N(Q,W,ae)}},[h,L,N,T,d,r]),p=z==="12"?h.hours===0?12:h.hours>12?h.hours-12:h.hours:h.hours,s=h.hours>=12?"PM":"AM";return e.jsxs("div",{ref:w,className:`nice-field ${A||""}`,style:H,...f,children:[t&&e.jsx("label",{htmlFor:j,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:t}),e.jsxs("div",{className:`nice-timepicker nice-timepicker--${$} ${i?"nice-timepicker--error":""} ${r?"nice-timepicker--disabled":""} ${d?"nice-timepicker--readonly":""}`,children:[e.jsx("svg",{className:"nice-timepicker__icon",width:"16",height:"16",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M10 2a8 8 0 100 16 8 8 0 000-16zm.75 4a.75.75 0 00-1.5 0v4c0 .2.08.39.22.53l2 2a.75.75 0 101.06-1.06L10.75 9.69V6z"})}),e.jsx("input",{id:j,type:"number",className:"nice-timepicker__part",value:p,min:z==="12"?1:0,max:z==="12"?12:23,disabled:r,readOnly:d,name:y,"aria-invalid":!!i,"aria-describedby":i?`${j}-error`:a?`${j}-helper`:void 0,"aria-label":b("datetime.hours","Hours"),onChange:P,onKeyDown:l=>g("h",l),onBlur:O}),e.jsx("span",{className:"nice-timepicker__colon",children:":"}),e.jsx("input",{type:"number",className:"nice-timepicker__part",value:Be(h.minutes),min:0,max:59,step:L,disabled:r,readOnly:d,"aria-label":b("datetime.minutes","Minutes"),onChange:_,onKeyDown:l=>g("m",l)}),I&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-timepicker__colon",children:":"}),e.jsx("input",{type:"number",className:"nice-timepicker__part",value:Be(h.seconds),min:0,max:59,disabled:r,readOnly:d,"aria-label":b("datetime.seconds","Seconds"),onChange:C,onKeyDown:l=>g("s",l)})]}),z==="12"&&e.jsx("button",{type:"button",className:"nice-timepicker__ampm",disabled:r||d,onClick:u,"aria-label":b("datetime.toggleAmPm","Toggle AM/PM"),children:s}),m&&k&&e.jsx("button",{type:"button",className:"nice-input__clear",disabled:r||d,onClick:B,"aria-label":b("controls.clear","Clear"),children:"✕"})]}),i&&e.jsx("div",{id:`${j}-error`,className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{id:`${j}-helper`,className:"nice-field__helper",children:a})]})});tn.displayName="NiceTimePicker";function Ia(t){return[...t].map(a=>a==="9"?{type:"digit"}:a==="a"?{type:"letter"}:a==="*"?{type:"alphanum"}:{type:"literal",literal:a})}function Da(t,a){return a.type==="digit"?/\d/.test(t):a.type==="letter"?/[a-zA-Z]/.test(t):a.type==="alphanum"?/[a-zA-Z0-9]/.test(t):!1}function wt(t,a,i){let o=0,r="";for(const d of a)d.type==="literal"?r+=d.literal:o<t.length?(r+=t[o],o++):r+=i;return r}function La(t,a){return t.map(i=>i.type==="literal"?i.literal:a).join("")}function za(t,a){for(let i=a;i<t.length;i++)if(t[i].type!=="literal")return i;return t.length}const nn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,value:k="",onChange:x,onBlur:O,onKeyDown:z,mask:L,maskChar:I="_",placeholder:F,showMaskAsPlaceholder:S=!0,clearable:m=!1,autoFocus:f,...w},b)=>{const{t:j}=K.useNiceTranslation(),h=K.useControlId(M),N=n.useRef(null),[T,P]=n.useState(!1),_=n.useMemo(()=>Ia(L),[L]),C=n.useMemo(()=>wt(k,_,I),[k,_,I]),u=T||k?C:"",B=F??(S?La(_,I):void 0),g=n.useCallback(R=>{N.current=R,typeof b=="function"?b(R):b&&(b.current=R)},[b]),p=n.useCallback(R=>{const U=wt(R,_,I);x?.(R,U)},[x,_,I]),s=n.useCallback(R=>{const U=R.currentTarget,q=U.value;let Q="",W=0;for(let ae=0;ae<q.length&&W<_.length;ae++){const oe=q[ae];for(;W<_.length&&_[W].type==="literal";)W++;if(W>=_.length)break;Da(oe,_[W])&&(Q+=oe,W++)}p(Q),requestAnimationFrame(()=>{za(_,0);let ae=0,oe=0;for(let me=0;me<_.length;me++)if(_[me].type==="literal")ae=me+1;else if(oe<Q.length)oe++,ae=me+1;else{ae=me;break}oe>=Q.length&&Q.length>0&&(ae=Math.min(ae,_.length)),U.setSelectionRange(ae,ae)})},[_,p]),l=n.useCallback(R=>{if(R.key==="Backspace"&&k.length>0){R.preventDefault();const U=k.slice(0,-1);p(U)}z?.(R)},[k,p,z]),c=n.useCallback(()=>P(!0),[]),E=n.useCallback(R=>{P(!1),O?.(R)},[O]),D=n.useCallback(()=>{p(""),N.current?.focus()},[p]);return e.jsxs("div",{className:`nice-field ${A||""}`,style:H,children:[t&&e.jsx("label",{htmlFor:h,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:t}),e.jsxs("div",{className:`nice-input nice-input--${$} ${i?"nice-input--error":""} ${r?"nice-input--disabled":""} ${d?"nice-input--readonly":""}`,children:[e.jsx("input",{ref:g,id:h,className:"nice-input__native nice-masked-input",type:"text",name:y,value:u,placeholder:B,disabled:r,readOnly:d,autoFocus:f,"aria-invalid":!!i,"aria-describedby":i?`${h}-error`:a?`${h}-helper`:void 0,onInput:s,onChange:()=>{},onKeyDown:l,onFocus:c,onBlur:E,...w}),m&&k&&e.jsx("button",{type:"button",className:"nice-input__clear",disabled:r||d,onClick:D,"aria-label":j("controls.clear","Clear"),children:"✕"})]}),i&&e.jsx("div",{id:`${h}-error`,className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{id:`${h}-helper`,className:"nice-field__helper",children:a})]})});nn.displayName="NiceMaskedInput";const Pa=({filled:t,size:a})=>e.jsxs("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[t==="half"&&e.jsx("defs",{children:e.jsxs("linearGradient",{id:"halfGrad",children:[e.jsx("stop",{offset:"50%",stopColor:"currentColor"}),e.jsx("stop",{offset:"50%",stopColor:"transparent"})]})}),e.jsx("path",{d:"M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 22 12 18.27 5.82 22 7 14.14l-5-4.87 6.91-1.01L12 2z",fill:t==="full"?"currentColor":t==="half"?"url(#halfGrad)":"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinejoin:"round"})]}),Fa={xxs:10,xs:14,sm:18,md:22,lg:28,xl:34,xxl:42},an=n.forwardRef(({value:t=0,onChange:a,count:i=5,half:o=!1,readOnly:r=!1,disabled:d=!1,size:$="md",label:y,icon:M,name:A,error:H,id:k,className:x,style:O,...z},L)=>{const{t:I}=K.useNiceTranslation(),F=K.useControlId(k),[S,m]=n.useState(null),f=Fa[$],w=!r&&!d,b=S??t,j=_=>b>=_+1?"full":o&&b>=_+.5?"half":"empty",h=n.useCallback((_,C)=>{if(!w)return;const u=C&&o?_+.5:_+1;a?.(u===t?0:u)},[w,o,a,t]),N=n.useCallback((_,C)=>{if(w)if(o){const u=C.currentTarget.getBoundingClientRect(),B=C.clientX-u.left<u.width/2;m(B?_+.5:_+1)}else m(_+1)},[w,o]),T=n.useCallback(()=>{w&&m(null)},[w]),P=n.useCallback(_=>{if(!w)return;const C=o?.5:1;if(_.key==="ArrowRight"||_.key==="ArrowUp"){_.preventDefault();const u=Math.min(i,t+C);a?.(u)}else if(_.key==="ArrowLeft"||_.key==="ArrowDown"){_.preventDefault();const u=Math.max(0,t-C);a?.(u)}},[w,o,i,t,a]);return e.jsxs("div",{className:`nice-field ${x||""}`,style:O,...z,children:[y&&e.jsx("label",{htmlFor:F,className:"nice-field__label",children:y}),e.jsxs("div",{ref:L,id:F,className:`nice-rating nice-rating--${$} ${d?"nice-rating--disabled":""} ${r?"nice-rating--readonly":""}`,role:"slider","aria-valuenow":t,"aria-valuemin":0,"aria-valuemax":i,"aria-label":y||I("controls.rating","Rating"),"aria-invalid":!!H,tabIndex:w?0:-1,onMouseLeave:T,onKeyDown:P,children:[A&&e.jsx("input",{type:"hidden",name:A,value:t}),Array.from({length:i},(_,C)=>{const u=j(C);return e.jsx("span",{className:`nice-rating__star nice-rating__star--${u}`,onClick:B=>{if(!w)return;const g=B.currentTarget.getBoundingClientRect(),p=o&&B.clientX-g.left<g.width/2;h(C,p)},onMouseMove:B=>N(C,B),"aria-label":`${C+1} ${I("controls.star","star")}`,children:M?M(u):e.jsx(Pa,{filled:u,size:f})},C)})]}),H&&e.jsx("div",{className:"nice-field__error",role:"alert",children:H})]})});an.displayName="NiceRating";const Ba=[{id:"length",label:"At least 8 characters",test:t=>t.length>=8},{id:"uppercase",label:"At least one uppercase letter",test:t=>/[A-Z]/.test(t)},{id:"lowercase",label:"At least one lowercase letter",test:t=>/[a-z]/.test(t)},{id:"digit",label:"At least one digit",test:t=>/\d/.test(t)},{id:"special",label:"At least one special character",test:t=>/[^a-zA-Z0-9]/.test(t)}];function Oa(t,a){if(!t)return{level:"none",passed:[],ratio:0};const i=a.filter(d=>d.test(t)).map(d=>d.id),o=i.length/a.length;let r="weak";return o>=1?r="strong":o>=.75?r="good":o>=.5&&(r="fair"),{level:r,passed:i,ratio:o}}const sn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,value:k="",onChange:x,onBlur:O,onKeyDown:z,placeholder:L,maxLength:I,showToggle:F=!0,showStrength:S=!1,strengthRules:m,autoFocus:f,autoComplete:w,...b},j)=>{const{t:h}=K.useNiceTranslation(),N=K.useControlId(M),[T,P]=n.useState(!1),_=m??Ba,C=n.useMemo(()=>S?Oa(k,_):null,[S,k,_]),u=n.useCallback(()=>P(B=>!B),[]);return e.jsxs("div",{className:`nice-field ${A||""}`,style:H,children:[t&&e.jsx("label",{htmlFor:N,className:`nice-field__label ${o?"nice-field__label--required":""}`,children:t}),e.jsxs("div",{className:`nice-input nice-input--${$} ${i?"nice-input--error":""} ${r?"nice-input--disabled":""} ${d?"nice-input--readonly":""}`,children:[e.jsx("input",{ref:j,id:N,className:"nice-input__native",type:T?"text":"password",name:y,value:k,placeholder:L,disabled:r,readOnly:d,maxLength:I,autoFocus:f,autoComplete:w,"aria-invalid":!!i,"aria-describedby":i?`${N}-error`:a?`${N}-helper`:void 0,onChange:B=>x?.(B.target.value),onBlur:O,onKeyDown:z,...b}),F&&e.jsx("button",{type:"button",className:"nice-password__toggle",onClick:u,disabled:r,tabIndex:-1,"aria-label":T?h("password.hide","Hide password"):h("password.show","Show password"),children:T?e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24"}),e.jsx("line",{x1:"1",y1:"1",x2:"23",y2:"23"})]}):e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),e.jsx("circle",{cx:"12",cy:"12",r:"3"})]})})]}),S&&C&&k&&e.jsxs("div",{className:"nice-password__strength",children:[e.jsx("div",{className:"nice-password__meter",children:e.jsx("div",{className:`nice-password__meter-fill nice-password__meter-fill--${C.level}`,style:{width:`${C.ratio*100}%`}})}),e.jsx("span",{className:`nice-password__strength-label nice-password__strength-label--${C.level}`,children:h(`password.strength.${C.level}`,C.level.charAt(0).toUpperCase()+C.level.slice(1))}),e.jsx("ul",{className:"nice-password__rules",children:_.map(B=>{const g=C.passed.includes(B.id);return e.jsxs("li",{className:`nice-password__rule ${g?"nice-password__rule--passed":""}`,children:[e.jsx("span",{className:"nice-password__rule-icon",children:g?"✓":"✗"}),B.label]},B.id)})})]}),i&&e.jsx("div",{id:`${N}-error`,className:"nice-field__error",role:"alert",children:i}),!i&&a&&e.jsx("div",{id:`${N}-helper`,className:"nice-field__helper",children:a})]})});sn.displayName="NicePasswordInput";const on=n.forwardRef(({length:t=6,value:a="",onChange:i,masked:o=!1,onComplete:r,label:d,helperText:$,error:y,required:M,disabled:A,readOnly:H,size:k="md",name:x,id:O,className:z,style:L,autoFocus:I,...F},S)=>{const m=K.useControlId(O),f=n.useRef([]),w=a.padEnd(t,"").slice(0,t).split(""),b=n.useCallback(P=>{const _=Math.max(0,Math.min(t-1,P));f.current[_]?.focus()},[t]),j=n.useCallback(P=>{const _=P.join("");i?.(_),_.length===t&&_.indexOf("")===-1&&/^\d+$/.test(_)&&r?.(_)},[i,r,t]),h=n.useCallback((P,_)=>{const u=_.target.value.replace(/\D/g,"").slice(-1);if(!u)return;const B=[...w];B[P]=u,j(B),b(P+1)},[w,j,b]),N=n.useCallback((P,_)=>{if(_.key==="Backspace"){_.preventDefault();const C=[...w];w[P]?(C[P]="",j(C)):P>0&&(C[P-1]="",j(C),b(P-1))}else _.key==="ArrowLeft"?(_.preventDefault(),b(P-1)):_.key==="ArrowRight"&&(_.preventDefault(),b(P+1))},[w,j,b]),T=n.useCallback(P=>{P.preventDefault();const _=P.clipboardData.getData("text").replace(/\D/g,"").slice(0,t);if(!_)return;const C=_.padEnd(t,"").slice(0,t).split("");for(let u=_.length;u<t;u++)C[u]=w[u]||"";j(C),b(Math.min(_.length,t-1))},[t,w,j,b]);return e.jsxs("div",{className:`nice-field ${z||""}`,style:L,...F,children:[d&&e.jsx("label",{htmlFor:`${m}-0`,className:`nice-field__label ${M?"nice-field__label--required":""}`,children:d}),e.jsxs("div",{ref:S,className:`nice-otp nice-otp--${k} ${y?"nice-otp--error":""} ${A?"nice-otp--disabled":""}`,onPaste:T,children:[Array.from({length:t},(P,_)=>e.jsx("input",{ref:C=>{f.current[_]=C},id:_===0?`${m}-0`:void 0,className:"nice-otp__digit",type:o?"password":"text",inputMode:"numeric",maxLength:2,value:w[_]||"",disabled:A,readOnly:H,autoFocus:I&&_===0,"aria-invalid":!!y,"aria-label":`${_+1}`,onChange:C=>h(_,C),onKeyDown:C=>N(_,C),onFocus:C=>C.target.select()},_)),x&&e.jsx("input",{type:"hidden",name:x,value:a})]}),y&&e.jsx("div",{id:`${m}-error`,className:"nice-field__error",role:"alert",children:y}),!y&&$&&e.jsx("div",{id:`${m}-helper`,className:"nice-field__helper",children:$})]})});on.displayName="NiceInputOtp";const Ha={xxs:36,xs:48,sm:64,md:80,lg:100,xl:128,xxl:160},qe=6,Te=135,Ve=405,ot=Ve-Te;function mt(t,a,i,o){const r=(o-90)*(Math.PI/180);return{x:t+i*Math.cos(r),y:a+i*Math.sin(r)}}function Ct(t,a,i,o,r){const d=mt(t,a,i,o),$=mt(t,a,i,r),y=r-o>180?1:0;return`M ${d.x} ${d.y} A ${i} ${i} 0 ${y} 1 ${$.x} ${$.y}`}const rn=n.forwardRef(({value:t=0,onChange:a,min:i=0,max:o=100,step:r=1,showValue:d=!0,valueTemplate:$="{value}",label:y,helperText:M,error:A,required:H,disabled:k,readOnly:x,size:O="md",name:z,id:L,className:I,style:F,...S},m)=>{const f=K.useControlId(L),w=n.useRef(!1),b=n.useRef(null),j=typeof O=="number"?O:Ha[O],h=j/2,N=j/2,T=(j-qe*2)/2,P=o>i?(t-i)/(o-i):0,_=Te+P*ot,C=n.useCallback(s=>{let l=s<0?s+360:s;l=l+90,l>360&&(l-=360),l<Te&&(l=Te),l>Ve-360&&l<Te&&(l=Te);let c=l;c<Te&&(c+=360);let E=(c-Te)/ot;E=Math.max(0,Math.min(1,E));const D=i+E*(o-i);return Math.round(D/r)*r},[i,o,r]),u=n.useCallback(s=>{if(k||x)return;const l=b.current;if(!l)return;const c=l.getBoundingClientRect(),E=s.clientX-c.left-c.width/2,D=s.clientY-c.top-c.height/2,R=Math.atan2(D,E)*(180/Math.PI)+90;let U=R<0?R+360:R;U<Te-360+ot&&U>Ve-360&&(U=U<180?Ve-360:Te);const q=C(U-90),Q=Math.max(i,Math.min(o,q));a?.(Q)},[C,k,x,i,o,a]);n.useEffect(()=>{const s=c=>{w.current&&u(c)},l=()=>{w.current=!1};return window.addEventListener("pointermove",s),window.addEventListener("pointerup",l),()=>{window.removeEventListener("pointermove",s),window.removeEventListener("pointerup",l)}},[u]);const B=n.useCallback(s=>{if(k||x)return;let l=t;s.key==="ArrowUp"||s.key==="ArrowRight"?(s.preventDefault(),l=Math.min(o,t+r)):(s.key==="ArrowDown"||s.key==="ArrowLeft")&&(s.preventDefault(),l=Math.max(i,t-r)),l!==t&&a?.(l)},[t,a,i,o,r,k,x]),g=$.replace("{value}",String(t)),p=mt(h,N,T,_);return e.jsxs("div",{className:`nice-field ${I||""}`,style:F,...S,children:[y&&e.jsx("label",{htmlFor:f,className:`nice-field__label ${H?"nice-field__label--required":""}`,children:y}),e.jsxs("div",{ref:s=>{b.current=s,typeof m=="function"?m(s):m&&(m.current=s)},className:`nice-knob nice-knob--${O} ${k?"nice-knob--disabled":""} ${A?"nice-knob--error":""}`,role:"slider",id:f,tabIndex:k?-1:0,"aria-valuenow":t,"aria-valuemin":i,"aria-valuemax":o,"aria-disabled":k,"aria-invalid":!!A,onPointerDown:s=>{k||x||(w.current=!0,u(s))},onKeyDown:B,children:[e.jsxs("svg",{width:j,height:j,viewBox:`0 0 ${j} ${j}`,children:[e.jsx("path",{d:Ct(h,N,T,Te,Ve),fill:"none",stroke:"var(--nice-border-color, #d1d5db)",strokeWidth:qe,strokeLinecap:"round"}),P>0&&e.jsx("path",{d:Ct(h,N,T,Te,_),fill:"none",stroke:"var(--nice-primary, #3b82f6)",strokeWidth:qe,strokeLinecap:"round"}),e.jsx("circle",{cx:p.x,cy:p.y,r:qe,fill:"var(--nice-primary, #3b82f6)"})]}),d&&e.jsx("span",{className:"nice-knob__value",children:g}),z&&e.jsx("input",{type:"hidden",name:z,value:t})]}),A&&e.jsx("div",{className:"nice-field__error",role:"alert",children:A}),!A&&M&&e.jsx("div",{className:"nice-field__helper",children:M})]})});rn.displayName="NiceKnob";const cn=n.forwardRef(({value:t="",onChange:a,suggestions:i=[],onSearch:o,trigger:r="@",renderSuggestion:d,placeholder:$,rows:y=3,label:M,helperText:A,error:H,required:k,disabled:x,readOnly:O,size:z="md",name:L,id:I,className:F,style:S,...m},f)=>{const w=K.useControlId(I),[b,j]=n.useState(!1),[h,N]=n.useState(""),[T,P]=n.useState(0),[_,C]=n.useState({top:0,left:0}),u=n.useRef(null),B=n.useRef(-1),p=i.map(D=>typeof D=="string"?{key:D,label:D}:D).filter(D=>D.label.toLowerCase().includes(h.toLowerCase())),s=n.useCallback(()=>{j(!1),N(""),P(0),B.current=-1},[]),l=n.useCallback(D=>{const R=u.current;if(!R||B.current<0)return;const U=t.slice(0,B.current),q=t.slice(R.selectionStart),Q=`${r}${D.label} `,W=U+Q+q;a?.(W),s(),requestAnimationFrame(()=>{const ae=U.length+Q.length;R.setSelectionRange(ae,ae),R.focus()})},[t,a,r,s]),c=n.useCallback(D=>{const R=D.target.value;a?.(R);const U=D.target.selectionStart,q=R.slice(0,U),Q=q.lastIndexOf(r);if(Q>=0){const W=Q>0?q[Q-1]:" ",ae=q.slice(Q+r.length);if(/\s/.test(W)&&!/\s/.test(ae)){B.current=Q;const oe=ae;N(oe),j(!0),P(0),o?.(oe);const me=D.target,ye=me.getBoundingClientRect(),xe=parseInt(getComputedStyle(me).lineHeight)||20,ee=q.split(`
11
+ `);C({top:ye.top+ee.length*xe+4-me.scrollTop,left:ye.left+8});return}}s()},[a,r,o,s]),E=n.useCallback(D=>{!b||p.length===0||(D.key==="ArrowDown"?(D.preventDefault(),P(R=>(R+1)%p.length)):D.key==="ArrowUp"?(D.preventDefault(),P(R=>(R-1+p.length)%p.length)):D.key==="Enter"?(D.preventDefault(),p[T]&&l(p[T])):D.key==="Escape"&&s())},[b,p,T,l,s]);return n.useEffect(()=>{if(!b)return;const D=R=>{const U=u.current;U&&!U.contains(R.target)&&s()};return document.addEventListener("mousedown",D),()=>document.removeEventListener("mousedown",D)},[b,s]),e.jsxs("div",{className:`nice-field ${F||""}`,style:S,...m,children:[M&&e.jsx("label",{htmlFor:w,className:`nice-field__label ${k?"nice-field__label--required":""}`,children:M}),e.jsxs("div",{className:`nice-mention nice-mention--${z} ${H?"nice-mention--error":""} ${x?"nice-mention--disabled":""}`,children:[e.jsx("textarea",{ref:D=>{u.current=D,typeof f=="function"?f(D):f&&(f.current=D)},id:w,name:L,className:"nice-mention__input",value:t,onChange:c,onKeyDown:E,placeholder:$,rows:y,disabled:x,readOnly:O,"aria-invalid":!!H,"aria-describedby":H?`${w}-error`:A?`${w}-helper`:void 0,"aria-autocomplete":"list","aria-expanded":b}),b&&p.length>0&&e.jsx("ul",{className:"nice-mention__suggestions",role:"listbox",style:{position:"fixed",top:_.top,left:_.left},children:p.map((D,R)=>e.jsx("li",{role:"option","aria-selected":R===T,className:`nice-mention__suggestion ${R===T?"nice-mention__suggestion--active":""}`,onMouseDown:U=>{U.preventDefault(),l(D)},onMouseEnter:()=>P(R),children:d?d(D):e.jsxs(e.Fragment,{children:[D.icon&&e.jsx("span",{className:"nice-mention__suggestion-icon",children:D.icon}),e.jsx("span",{children:D.label})]})},D.key))})]}),H&&e.jsx("div",{id:`${w}-error`,className:"nice-field__error",role:"alert",children:H}),!H&&A&&e.jsx("div",{id:`${w}-helper`,className:"nice-field__helper",children:A})]})});cn.displayName="NiceMention";function Ua(t){const a=[],i=o=>{for(const r of o)a.push(r),r.children&&i(r.children)};return i(t),a}function ln(t,a){const i=a.toLowerCase();return t.reduce((o,r)=>{const d=r.children?ln(r.children,a):[];return(r.label.toLowerCase().includes(i)||d.length>0)&&o.push({...r,children:d.length>0?d:r.children}),o},[])}const dn=({node:t,level:a,selectedKeys:i,expandedKeys:o,onToggleExpand:r,onSelect:d,selectableLeafsOnly:$})=>{const y=t.children&&t.children.length>0,M=o.has(t.key),A=i.has(t.key),H=!y,k=!t.disabled&&(!$||H);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`nice-tree-select__node ${A?"nice-tree-select__node--selected":""} ${t.disabled?"nice-tree-select__node--disabled":""}`,style:{paddingLeft:a*16+8},onClick:()=>k&&d(t.key),role:"treeitem","aria-selected":A,"aria-expanded":y?M:void 0,"aria-disabled":t.disabled,children:[y?e.jsx("button",{type:"button",className:"nice-tree-select__toggle",onClick:x=>{x.stopPropagation(),r(t.key)},"aria-label":"Toggle",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"currentColor",style:{transform:M?"rotate(90deg)":"none",transition:"transform 0.15s"},children:e.jsx("path",{d:"M4.5 2l4 4-4 4"})})}):e.jsx("span",{style:{width:12,display:"inline-block"}}),t.icon&&e.jsx("span",{className:"nice-tree-select__node-icon",children:t.icon}),e.jsx("span",{className:"nice-tree-select__node-label",children:t.label})]}),y&&M&&t.children.map(x=>e.jsx(dn,{node:x,level:a+1,selectedKeys:i,expandedKeys:o,onToggleExpand:r,onSelect:d,selectableLeafsOnly:$},x.key))]})},un=n.forwardRef(({nodes:t,value:a,onChange:i,multiple:o=!1,searchable:r=!1,placeholder:d,selectableLeafsOnly:$=!1,clearable:y=!1,label:M,helperText:A,error:H,required:k,disabled:x,readOnly:O,size:z="md",name:L,id:I,className:F,style:S,...m},f)=>{const{t:w}=K.useNiceTranslation(),b=K.useControlId(I),[j,h]=n.useState(!1),[N,T]=n.useState(""),[P,_]=n.useState(new Set),C=n.useRef(null);K.useClickOutside(C,()=>h(!1));const u=n.useMemo(()=>a==null?new Set:new Set(Array.isArray(a)?a:[a]),[a]),B=n.useMemo(()=>N?ln(t,N):t,[t,N]),g=n.useMemo(()=>{const c=Ua(t);return Array.from(u).map(E=>c.find(D=>D.key===E)?.label).filter(Boolean)},[u,t]),p=n.useCallback(c=>{_(E=>{const D=new Set(E);return D.has(c)?D.delete(c):D.add(c),D})},[]),s=n.useCallback(c=>{if(o){const E=new Set(u);E.has(c)?E.delete(c):E.add(c),i?.(Array.from(E))}else i?.(c),h(!1)},[o,u,i]),l=n.useCallback(c=>{c.stopPropagation(),i?.(o?[]:"")},[i,o]);return e.jsxs("div",{className:`nice-field ${F||""}`,style:S,...m,children:[M&&e.jsx("label",{htmlFor:b,className:`nice-field__label ${k?"nice-field__label--required":""}`,children:M}),e.jsxs("div",{ref:C,className:"nice-tree-select",style:{position:"relative"},children:[e.jsxs("div",{ref:f,id:b,className:`nice-input nice-input--${z} ${H?"nice-input--error":""} ${x?"nice-input--disabled":""} ${O?"nice-input--readonly":""}`,role:"combobox","aria-expanded":j,"aria-haspopup":"tree","aria-invalid":!!H,tabIndex:x?-1:0,onClick:()=>!x&&!O&&h(!j),onKeyDown:c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),!x&&!O&&h(!j))},children:[e.jsx("span",{className:"nice-tree-select__display",children:g.length>0?g.join(", "):e.jsx("span",{className:"nice-tree-select__placeholder",children:d??w("controls.select","Select...")})}),y&&u.size>0&&e.jsx("button",{type:"button",className:"nice-input__clear",onClick:l,"aria-label":w("controls.clear","Clear"),children:"✕"}),e.jsx("svg",{className:"nice-tree-select__arrow",width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",style:{transform:j?"rotate(180deg)":"none",transition:"transform 0.15s"},children:e.jsx("path",{d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z"})})]}),j&&e.jsxs("div",{className:"nice-tree-select__dropdown",role:"tree",children:[r&&e.jsx("div",{className:"nice-tree-select__search",children:e.jsx("input",{className:"nice-input__native",type:"text",placeholder:w("controls.search","Search..."),value:N,onChange:c=>T(c.target.value),autoFocus:!0,onClick:c=>c.stopPropagation()})}),e.jsx("div",{className:"nice-tree-select__list",children:B.length===0?e.jsx("div",{className:"nice-tree-select__empty",children:w("controls.noResults","No results")}):B.map(c=>e.jsx(dn,{node:c,level:0,selectedKeys:u,expandedKeys:P,onToggleExpand:p,onSelect:s,selectableLeafsOnly:$},c.key))})]})]}),L&&e.jsx("input",{type:"hidden",name:L,value:Array.isArray(a)?a.join(","):a??""}),H&&e.jsx("div",{id:`${b}-error`,className:"nice-field__error",role:"alert",children:H}),!H&&A&&e.jsx("div",{id:`${b}-helper`,className:"nice-field__helper",children:A})]})});un.displayName="NiceTreeSelect";function Ue(t,a){return String(t[a])}const mn=n.forwardRef(({source:t,target:a,onChange:i,keyField:o="id",labelField:r="label",renderItem:d,filterable:$=!1,sourceHeader:y,targetHeader:M,disabled:A=!1,size:H="md",className:k,style:x,id:O,...z},L)=>{const{t:I}=K.useNiceTranslation(),[F,S]=n.useState(new Set),[m,f]=n.useState(new Set),[w,b]=n.useState(""),[j,h]=n.useState(""),N=n.useCallback((g,p,s)=>{p(l=>{const c=new Set(l);return c.has(s)?c.delete(s):c.add(s),c})},[]),T=n.useCallback(()=>{const g=t.filter(s=>F.has(Ue(s,o))),p=t.filter(s=>!F.has(Ue(s,o)));i(p,[...a,...g]),S(new Set)},[t,a,F,o,i]),P=n.useCallback(()=>{const g=a.filter(s=>m.has(Ue(s,o))),p=a.filter(s=>!m.has(Ue(s,o)));i([...t,...g],p),f(new Set)},[t,a,m,o,i]),_=n.useCallback(()=>{i([],[...a,...t]),S(new Set)},[t,a,i]),C=n.useCallback(()=>{i([...t,...a],[]),f(new Set)},[t,a,i]),u=(g,p)=>{if(!p)return g;const s=p.toLowerCase();return g.filter(l=>String(l[r]).toLowerCase().includes(s))},B=(g,p,s,l,c,E)=>{const D=u(g,l);return e.jsxs("div",{className:"nice-picklist__panel",children:[E&&e.jsx("div",{className:"nice-picklist__header",children:E}),$&&e.jsx("div",{className:"nice-picklist__filter",children:e.jsx("input",{className:"nice-input__native",type:"text",placeholder:I("controls.search","Search..."),value:l,onChange:R=>c(R.target.value)})}),e.jsxs("div",{className:"nice-picklist__list",role:"listbox","aria-multiselectable":"true",children:[D.map(R=>{const U=Ue(R,o),q=p.has(U);return e.jsx("div",{className:`nice-picklist__item ${q?"nice-picklist__item--selected":""}`,role:"option","aria-selected":q,onClick:()=>!A&&N(p,s,U),children:d?d(R):String(R[r])},U)}),D.length===0&&e.jsx("div",{className:"nice-picklist__empty",children:I("controls.noItems","No items")})]})]})};return e.jsxs("div",{ref:L,id:O,className:`nice-picklist nice-picklist--${H} ${A?"nice-picklist--disabled":""} ${k||""}`,style:x,...z,children:[B(t,F,S,w,b,y??I("picklist.source","Available")),e.jsxs("div",{className:"nice-picklist__controls",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:A||F.size===0,onClick:T,"aria-label":I("picklist.moveRight","Move right"),children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"})})}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:A||t.length===0,onClick:_,"aria-label":I("picklist.moveAllRight","Move all right"),children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",children:[e.jsx("path",{d:"M4.293 14.707a1 1 0 010-1.414L7.586 10 4.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"}),e.jsx("path",{d:"M10.293 14.707a1 1 0 010-1.414L13.586 10 10.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"})]})}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:A||m.size===0,onClick:P,"aria-label":I("picklist.moveLeft","Move left"),children:e.jsx("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"})})}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:A||a.length===0,onClick:C,"aria-label":I("picklist.moveAllLeft","Move all left"),children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 20 20",fill:"currentColor",children:[e.jsx("path",{d:"M15.707 5.293a1 1 0 010 1.414L12.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"}),e.jsx("path",{d:"M9.707 5.293a1 1 0 010 1.414L6.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z"})]})})]}),B(a,m,f,j,h,M??I("picklist.target","Selected"))]})});mn.displayName="NicePickList";let Ze=null,Ke=null;const St="https://cdn.jsdelivr.net/npm/monaco-editor@0.45.0/min/vs";function pn(){return Ke?Promise.resolve(Ke):Ze||(Ze=new Promise((t,a)=>{if(window.monaco){Ke=window.monaco,t(Ke);return}const i=document.createElement("script");i.src=`${St}/loader.min.js`,i.async=!0,i.onload=()=>{const o=window.require;o.config({paths:{vs:St}}),o(["vs/editor/editor.main"],r=>{Ke=r,t(r)})},i.onerror=()=>{a(new Error("Failed to load Monaco Editor"))},document.head.appendChild(i)}),Ze)}const yt=n.forwardRef(function(a,i){const{value:o,onChange:r,language:d="plaintext",theme:$="vs",options:y={},height:M=400,width:A="100%",markers:H=[],decorations:k=[],completionProvider:x,onMount:O,onCursorPositionChange:z,onSelectionChange:L,onSave:I,loading:F,disabled:S=!1,showToolbar:m=!1,showStatusBar:f=!1,editorSize:w="standard",className:b,"data-testid":j}=a,h=n.useRef(null),N=n.useRef(null),T=n.useRef(null),P=n.useRef([]),_=n.useRef(null),[C,u]=n.useState(!0),[B,g]=n.useState(null),[p,s]=n.useState({lineNumber:1,column:1}),[l,c]=n.useState(""),[E,D]=n.useState(y.wordWrap==="on"),R=n.useMemo(()=>({automaticLayout:!0,readOnly:S||y.readOnly,minimap:{enabled:y.minimap??!0},lineNumbers:y.lineNumbers??"on",wordWrap:y.wordWrap??"off",tabSize:y.tabSize??2,insertSpaces:y.insertSpaces??!0,fontSize:y.fontSize??14,fontFamily:y.fontFamily??"'Fira Code', 'Consolas', 'Monaco', monospace",fontLigatures:y.fontLigatures??!0,cursorStyle:y.cursorStyle??"line",cursorBlinking:y.cursorBlinking??"blink",autoClosingBrackets:y.autoClosingBrackets??"languageDefined",autoClosingQuotes:y.autoClosingQuotes??"languageDefined",formatOnPaste:y.formatOnPaste??!1,formatOnType:y.formatOnType??!1,renderWhitespace:y.renderWhitespace??"selection",renderControlCharacters:y.renderControlCharacters??!1,scrollBeyondLastLine:y.scrollBeyondLastLine??!0,smoothScrolling:y.smoothScrolling??!0,folding:y.folding??!0,showFoldingControls:y.showFoldingControls??"mouseover","bracketPairColorization.enabled":y.bracketPairColorization??!0,guides:y.guides??{bracketPairs:!0,indentation:!0,highlightActiveIndentation:!0},stickyScroll:{enabled:y.stickyScroll??!1},quickSuggestions:y.quickSuggestions??!0,suggestOnTriggerCharacters:y.suggestOnTriggerCharacters??!0,acceptSuggestionOnEnter:y.acceptSuggestionOnEnter??"on",inlayHints:{enabled:y.inlayHints?"on":"off"}}),[y,S]);n.useEffect(()=>{if(!h.current)return;let W=!0;return pn().then(ae=>{if(!W||!h.current)return;T.current=ae;const oe=ae.editor.create(h.current,{value:o,language:d,theme:$,...R});N.current=oe,u(!1),oe.onDidChangeModelContent(()=>{const me=oe.getValue();r?.(me)}),oe.onDidChangeCursorPosition(me=>{s({lineNumber:me.position.lineNumber,column:me.position.column}),z?.({lineNumber:me.position.lineNumber,column:me.position.column})}),oe.onDidChangeCursorSelection(me=>{const ye=me.selection,xe=oe.getModel()?.getValueInRange(ye)??"";c(xe),L?.({startLineNumber:ye.startLineNumber,startColumn:ye.startColumn,endLineNumber:ye.endLineNumber,endColumn:ye.endColumn})}),oe.addCommand(ae.KeyMod.CtrlCmd|ae.KeyCode.KeyS,()=>{I?.(oe.getValue())}),O?.(oe,ae)}).catch(ae=>{W&&(g(ae.message??"Failed to load editor"),u(!1))}),()=>{W=!1,N.current?.dispose(),_.current?.dispose()}},[]),n.useEffect(()=>{const W=N.current;if(W&&o!==W.getValue()){const ae=W.getPosition();W.setValue(o),ae&&W.setPosition(ae)}},[o]),n.useEffect(()=>{const W=N.current,ae=T.current;if(W&&ae){const oe=W.getModel();oe&&ae.editor.setModelLanguage(oe,d)}},[d]),n.useEffect(()=>{const W=T.current;W&&W.editor.setTheme($)},[$]),n.useEffect(()=>{const W=N.current;W&&W.updateOptions(R)},[R]),n.useEffect(()=>{const W=N.current,ae=T.current;if(W&&ae){const oe=W.getModel();if(oe){const me=H.map(ye=>({startLineNumber:ye.startLineNumber,startColumn:ye.startColumn,endLineNumber:ye.endLineNumber,endColumn:ye.endColumn,message:ye.message,severity:ye.severity}));ae.editor.setModelMarkers(oe,"owner",me)}}},[H]),n.useEffect(()=>{const W=N.current;if(W&&k.length>0){const ae=k.map(oe=>({range:{startLineNumber:oe.range.startLineNumber,startColumn:oe.range.startColumn,endLineNumber:oe.range.endLineNumber,endColumn:oe.range.endColumn},options:{className:oe.className,glyphMarginClassName:oe.glyphMarginClassName,hoverMessage:oe.hoverMessage?{value:oe.hoverMessage}:void 0,isWholeLine:oe.isWholeLine}}));P.current=W.deltaDecorations(P.current,ae)}},[k]),n.useEffect(()=>{const W=T.current;if(!W||!x)return;_.current?.dispose();const ae={text:0,method:1,function:2,constructor:3,field:4,variable:5,class:6,interface:7,module:8,property:9,keyword:13,snippet:14,color:15,file:16,reference:17,folder:18};return _.current=W.languages.registerCompletionItemProvider(d,{provideCompletionItems:async(oe,me)=>({suggestions:(await x(oe,me)).map(xe=>({label:xe.label,kind:ae[xe.kind]??0,insertText:xe.insertText,insertTextRules:xe.insertTextRules==="insertAsSnippet"?4:void 0,documentation:xe.documentation,detail:xe.detail,range:{startLineNumber:me.lineNumber,startColumn:me.column,endLineNumber:me.lineNumber,endColumn:me.column}}))})}),()=>{_.current?.dispose()}},[d,x]),n.useImperativeHandle(i,()=>({getEditor:()=>N.current,getMonaco:()=>T.current,focus:()=>N.current?.focus(),getValue:()=>N.current?.getValue()??"",setValue:W=>N.current?.setValue(W),getSelection:()=>{const W=N.current;if(!W)return"";const ae=W.getSelection();return ae?W.getModel()?.getValueInRange(ae)??"":""},insertText:W=>{const ae=N.current;if(!ae)return;const oe=ae.getSelection();oe&&ae.executeEdits("",[{range:oe,text:W}])},formatDocument:()=>{N.current?.getAction("editor.action.formatDocument")?.run()},goToLine:(W,ae=1)=>{const oe=N.current;oe&&(oe.setPosition({lineNumber:W,column:ae}),oe.revealLineInCenter(W),oe.focus())},findReplace:()=>{N.current?.getAction("editor.action.startFindReplaceAction")?.run()},undo:()=>{N.current?.trigger("keyboard","undo",null)},redo:()=>{N.current?.trigger("keyboard","redo",null)},getCursorPosition:()=>{const W=N.current?.getPosition();return{lineNumber:W?.lineNumber??1,column:W?.column??1}},setMarkers:W=>{const ae=N.current,oe=T.current;if(ae&&oe){const me=ae.getModel();if(me){const ye=W.map(xe=>({startLineNumber:xe.startLineNumber,startColumn:xe.startColumn,endLineNumber:xe.endLineNumber,endColumn:xe.endColumn,message:xe.message,severity:xe.severity}));oe.editor.setModelMarkers(me,"owner",ye)}}}}),[]);const U=n.useMemo(()=>({format:()=>N.current?.getAction("editor.action.formatDocument")?.run(),undo:()=>N.current?.trigger("keyboard","undo",null),redo:()=>N.current?.trigger("keyboard","redo",null),find:()=>N.current?.getAction("editor.action.startFindReplaceAction")?.run(),toggleWordWrap:()=>{const W=!E;D(W),N.current?.updateOptions({wordWrap:W?"on":"off"})},toggleMinimap:()=>{const W=N.current?.getOption?.(T.current?.editor?.EditorOption?.minimap);N.current?.updateOptions({minimap:{enabled:!W?.enabled}})},foldAll:()=>N.current?.getAction("editor.foldAll")?.run(),unfoldAll:()=>N.current?.getAction("editor.unfoldAll")?.run()}),[E]),q=o.split(`
12
+ `).length,Q=o.length;return C?e.jsx("div",{className:`nice-code-editor nice-code-editor--loading ${b??""}`,style:{height:M,width:A},"data-testid":j,children:F??e.jsx("div",{className:"nice-code-editor__loader",children:"Loading editor..."})}):B?e.jsx("div",{className:`nice-code-editor nice-code-editor--error ${b??""}`,style:{height:M,width:A},"data-testid":j,children:e.jsxs("div",{className:"nice-code-editor__error",children:[e.jsxs("span",{children:["⚠️ ",B]}),e.jsx("textarea",{value:o,onChange:W=>r?.(W.target.value),readOnly:S||y.readOnly,style:{width:"100%",height:"100%",fontFamily:"monospace"}})]})}):e.jsxs("div",{className:`nice-code-editor-wrap nice-editor--${w} ${b??""}`,style:{height:M,width:A,display:"flex",flexDirection:"column"},"data-testid":j,children:[m&&e.jsxs("div",{className:"nice-code-editor__toolbar",children:[e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.undo,title:"Undo (Ctrl+Z)",children:"↶"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.redo,title:"Redo (Ctrl+Y)",children:"↷"}),e.jsx("span",{className:"nice-code-editor__toolbar-sep"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.format,title:"Format (Shift+Alt+F)",children:"⎘"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.find,title:"Find & Replace (Ctrl+H)",children:"🔍"}),e.jsx("span",{className:"nice-code-editor__toolbar-sep"}),e.jsx("button",{className:`nice-code-editor__toolbar-btn${E?" nice-code-editor__toolbar-btn--active":""}`,onClick:U.toggleWordWrap,title:"Toggle Word Wrap",children:"↩"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.toggleMinimap,title:"Toggle Minimap",children:"▥"}),e.jsx("span",{className:"nice-code-editor__toolbar-sep"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.foldAll,title:"Fold All",children:"⊟"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:U.unfoldAll,title:"Unfold All",children:"⊞"})]}),e.jsx("div",{ref:h,className:"nice-code-editor",style:{flex:1,minHeight:0}}),f&&e.jsxs("div",{className:"nice-code-editor__statusbar",children:[e.jsxs("span",{children:["Ln ",p.lineNumber,", Col ",p.column]}),l.length>0&&e.jsxs("span",{children:["(",l.length," selected)"]}),e.jsx("span",{className:"nice-code-editor__statusbar-spacer"}),e.jsxs("span",{children:[q," lines · ",Q," chars"]}),e.jsx("span",{className:"nice-code-editor__statusbar-lang",children:d}),H.length>0&&e.jsxs("span",{className:"nice-code-editor__statusbar-markers",children:["⚠ ",H.length]})]})]})});function hn(t){const{original:a,modified:i,language:o="plaintext",theme:r="vs",height:d=400,width:$="100%",inline:y=!1,renderSideBySide:M=!0,originalEditable:A=!1,modifiedEditable:H=!1,onOriginalChange:k,onModifiedChange:x,loading:O,className:z,"data-testid":L}=t,I=n.useRef(null),F=n.useRef(null),[S,m]=n.useState(!0);return n.useEffect(()=>{if(!I.current)return;let f=!0;return pn().then(w=>{if(!f||!I.current)return;const b=w.editor.createModel(a,o),j=w.editor.createModel(i,o),h=w.editor.createDiffEditor(I.current,{automaticLayout:!0,theme:r,renderSideBySide:!y&&M,originalEditable:A,readOnly:!H});h.setModel({original:b,modified:j}),F.current=h,m(!1),A&&b.onDidChangeContent(()=>{k?.(b.getValue())}),H&&j.onDidChangeContent(()=>{x?.(j.getValue())})}),()=>{f=!1,F.current?.dispose()}},[]),n.useEffect(()=>{const f=F.current;if(!f)return;const w=f.getModel();w&&(w.original.getValue()!==a&&w.original.setValue(a),w.modified.getValue()!==i&&w.modified.setValue(i))},[a,i]),S?e.jsx("div",{className:`nice-code-diff-editor nice-code-diff-editor--loading ${z??""}`,style:{height:d,width:$},"data-testid":L,children:O??e.jsx("div",{className:"nice-code-editor__loader",children:"Loading diff editor..."})}):e.jsx("div",{ref:I,className:`nice-code-diff-editor ${z??""}`,style:{height:d,width:$},"data-testid":L})}function gn(t){const{value:a,onChange:i,language:o="plaintext",height:r=300,width:d="100%",readOnly:$=!1,tabSize:y=2,lineNumbers:M=!0,placeholder:A,className:H,"data-testid":k}=t,x=n.useRef(null),O=n.useCallback(I=>{if(I.key==="Tab"){I.preventDefault();const F=I.currentTarget,S=F.selectionStart,m=F.selectionEnd,f=" ".repeat(y);if(I.shiftKey){const j=a.substring(0,S).lastIndexOf(`
13
+ `)+1;if((a.substring(j,S).match(/^(\s*)/)?.[1]??"").length>=y){const N=a.substring(0,j)+a.substring(j+y);i?.(N),setTimeout(()=>{F.selectionStart=F.selectionEnd=S-y},0)}}else{const w=a.substring(0,S)+f+a.substring(m);i?.(w),setTimeout(()=>{F.selectionStart=F.selectionEnd=S+y},0)}}},[a,i,y]),L=a.split(`
14
+ `).length;return e.jsxs("div",{className:`nice-simple-code-editor ${H??""}`,style:{height:r,width:d},"data-testid":k,"data-language":o,children:[M&&e.jsx("div",{className:"nice-simple-code-editor__line-numbers",children:Array.from({length:L},(I,F)=>e.jsx("div",{className:"nice-simple-code-editor__line-number",children:F+1},F))}),e.jsx("textarea",{ref:x,className:"nice-simple-code-editor__textarea",value:a,onChange:I=>i?.(I.target.value),onKeyDown:O,readOnly:$,placeholder:A,spellCheck:!1,autoCapitalize:"off",autoCorrect:"off"})]})}const $t="nice-code-editor-styles";if(typeof document<"u"&&!document.getElementById($t)){const t=document.createElement("style");t.id=$t,t.textContent=`
15
+ .nice-code-editor,
16
+ .nice-code-diff-editor {
17
+ border: 1px solid var(--nice-border, #e0e0e0);
18
+ border-radius: 4px;
19
+ overflow: hidden;
20
+ }
21
+
22
+ .nice-code-editor--loading,
23
+ .nice-code-editor--error,
24
+ .nice-code-diff-editor--loading {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ background: var(--nice-bg-muted, #f5f5f5);
29
+ }
30
+
31
+ .nice-code-editor__loader {
32
+ color: var(--nice-text-secondary, #666);
33
+ font-size: 14px;
34
+ }
35
+
36
+ .nice-code-editor__error {
37
+ display: flex;
38
+ flex-direction: column;
39
+ width: 100%;
40
+ height: 100%;
41
+ padding: 8px;
42
+ gap: 8px;
43
+ }
44
+
45
+ .nice-code-editor__error span {
46
+ color: var(--nice-error, #d32f2f);
47
+ }
48
+
49
+ /* Simple code editor */
50
+ .nice-simple-code-editor {
51
+ display: flex;
52
+ border: 1px solid var(--nice-border, #e0e0e0);
53
+ border-radius: 4px;
54
+ overflow: hidden;
55
+ font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
56
+ font-size: 14px;
57
+ line-height: 1.5;
58
+ background: var(--nice-bg-surface, #fff);
59
+ }
60
+
61
+ .nice-simple-code-editor__line-numbers {
62
+ padding: 8px 0;
63
+ background: var(--nice-bg-muted, #f5f5f5);
64
+ border-right: 1px solid var(--nice-border, #e0e0e0);
65
+ user-select: none;
66
+ text-align: right;
67
+ color: var(--nice-text-secondary, #999);
68
+ }
69
+
70
+ .nice-simple-code-editor__line-number {
71
+ padding: 0 12px;
72
+ min-width: 40px;
73
+ }
74
+
75
+ .nice-simple-code-editor__textarea {
76
+ flex: 1;
77
+ padding: 8px 12px;
78
+ border: none;
79
+ outline: none;
80
+ resize: none;
81
+ font: inherit;
82
+ background: transparent;
83
+ color: var(--nice-text-primary, #333);
84
+ white-space: pre;
85
+ overflow-wrap: normal;
86
+ overflow-x: auto;
87
+ }
88
+
89
+ .nice-simple-code-editor__textarea::placeholder {
90
+ color: var(--nice-text-secondary, #999);
91
+ }
92
+
93
+ /* Toolbar */
94
+ .nice-code-editor-wrap {
95
+ border: 1px solid var(--nice-border, #e0e0e0);
96
+ border-radius: 4px;
97
+ overflow: hidden;
98
+ }
99
+ .nice-code-editor-wrap .nice-code-editor {
100
+ border: none;
101
+ border-radius: 0;
102
+ }
103
+ .nice-code-editor__toolbar {
104
+ display: flex;
105
+ align-items: center;
106
+ gap: 2px;
107
+ padding: 3px 6px;
108
+ background: var(--nice-bg-muted, #f5f5f5);
109
+ border-bottom: 1px solid var(--nice-border, #e0e0e0);
110
+ }
111
+ .nice-code-editor__toolbar-btn {
112
+ display: inline-flex;
113
+ align-items: center;
114
+ justify-content: center;
115
+ width: 26px;
116
+ height: 26px;
117
+ border: none;
118
+ border-radius: 3px;
119
+ background: transparent;
120
+ color: var(--nice-text-secondary, #666);
121
+ cursor: pointer;
122
+ font-size: 14px;
123
+ transition: background 0.15s, color 0.15s;
124
+ }
125
+ .nice-code-editor__toolbar-btn:hover {
126
+ background: var(--nice-hover, #e0e0e0);
127
+ color: var(--nice-text-primary, #333);
128
+ }
129
+ .nice-code-editor__toolbar-btn--active {
130
+ background: var(--nice-accent, #1976d2);
131
+ color: #fff;
132
+ }
133
+ .nice-code-editor__toolbar-sep {
134
+ width: 1px;
135
+ height: 18px;
136
+ background: var(--nice-border, #e0e0e0);
137
+ margin: 0 4px;
138
+ }
139
+
140
+ /* Status bar */
141
+ .nice-code-editor__statusbar {
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 12px;
145
+ padding: 2px 10px;
146
+ background: var(--nice-bg-muted, #f5f5f5);
147
+ border-top: 1px solid var(--nice-border, #e0e0e0);
148
+ font-size: 12px;
149
+ color: var(--nice-text-secondary, #666);
150
+ user-select: none;
151
+ }
152
+ .nice-code-editor__statusbar-spacer { flex: 1; }
153
+ .nice-code-editor__statusbar-lang {
154
+ text-transform: uppercase;
155
+ font-weight: 600;
156
+ font-size: 11px;
157
+ }
158
+ .nice-code-editor__statusbar-markers {
159
+ color: var(--nice-warning, #f39c12);
160
+ font-weight: 600;
161
+ }
162
+ `,document.head.appendChild(t)}const Ka=Object.freeze(Object.defineProperty({__proto__:null,NiceCodeDiffEditor:hn,NiceCodeEditor:yt,NiceSimpleCodeEditor:gn},Symbol.toStringTag,{value:"Module"})),Wa=n.forwardRef(function(a,i){const{enableAI:o=!0,aiModel:r,enableInlineCompletion:d=!0,completionDelay:$=500,enableExplain:y=!0,enableRefactor:M=!0,enableGenerate:A=!0,systemPrompt:H,onExplain:k,onRefactor:x,showAIToolbar:O=!0,aiShortcutKey:z="Ctrl",language:L="plaintext",value:I,onChange:F,...S}=a,m=n.useRef(null),[f,w]=n.useState(null),[b,j]=n.useState(!1),[h,N]=n.useState(""),[T,P]=n.useState(!1),[_,C]=n.useState(""),[u,B]=n.useState(""),[g,p]=n.useState(""),s=n.useRef(),{t:l}=Ft.Na(),c=K.useNiceAI(),{complete:E,explain:D,refactor:R,generateFromComment:U,isLoading:q}=K.useCodeCompletion({language:L,model:r}),Q=o&&c.isConfigured,W=n.useCallback(async()=>{if(!Q||!d||!m.current||!m.current.getEditor())return;const ue=m.current.getCursorPosition(),le=m.current.getValue().split(`
163
+ `),J=le.slice(0,ue.lineNumber-1),V=le[ue.lineNumber-1]||"",Y=[...J,V.slice(0,ue.column-1)].join(`
164
+ `),te=[V.slice(ue.column-1),...le.slice(ue.lineNumber)].join(`
165
+ `);try{const he=await E(Y,te);he&&w({lineNumber:ue.lineNumber,column:ue.column,text:he})}catch{}},[Q,d,E]),ae=n.useCallback(async()=>{if(!Q||!y||!m.current)return"";const ce=m.current.getSelection();if(!ce)return"";p(ce),j(!0),N("");try{const ue=await D(ce);return N(ue),k?.(ce,ue),ue}catch{return N(l("codeEditorAI.explanationFailed","Failed to explain code")),""}},[Q,y,D,k,l]),oe=n.useCallback(async ce=>{if(!Q||!M||!m.current)return"";const ue=m.current.getSelection();if(!ue)return"";try{const re=await R(ue,ce);return B(re),x?.(ue,re),re}catch{return""}},[Q,M,R,x]),me=n.useCallback(async()=>{if(!Q||!A||!m.current)return;const ce=m.current.getCursorPosition(),re=m.current.getValue().split(`
166
+ `);let le="";for(let J=ce.lineNumber-1;J>=0&&J>=ce.lineNumber-3;J--){const V=re[J]?.trim()||"";if(V.startsWith("//")||V.startsWith("#")||V.startsWith("/*")||V.startsWith("*")){le=V.replace(/^\/\/\s*|^#\s*|^\/\*\s*|\*\/\s*$|^\*\s*/g,"").trim();break}}if(le)try{const J=await U(le);J&&m.current&&m.current.insertText(`
167
+ `+J)}catch{}},[Q,A,U]),ye=n.useCallback(()=>{!f||!m.current||(m.current.insertText(f.text),w(null))},[f]),xe=n.useCallback(()=>{w(null)},[]),ee=n.useCallback(ce=>{a.onCursorPositionChange?.(ce),!(!Q||!d)&&(s.current&&clearTimeout(s.current),w(null),s.current=setTimeout(()=>{W()},$))},[a.onCursorPositionChange,Q,d,$,W]);n.useEffect(()=>{if(!m.current?.getEditor()||!Q)return;const ue=re=>{if(z==="Ctrl"&&re.ctrlKey||z==="Alt"&&re.altKey||z==="Meta"&&re.metaKey){if(re.key===" "&&d&&(re.preventDefault(),W()),re.key==="e"&&y&&(re.preventDefault(),ae()),re.key==="r"&&M){re.preventDefault();const J=m.current?.getSelection();J&&(p(J),P(!0))}re.key==="g"&&A&&(re.preventDefault(),me())}re.key==="Tab"&&f&&(re.preventDefault(),ye()),re.key==="Escape"&&f&&xe()};return window.addEventListener("keydown",ue),()=>window.removeEventListener("keydown",ue)},[Q,z,d,y,M,A,W,ae,me,f,ye,xe]),n.useEffect(()=>()=>{s.current&&clearTimeout(s.current)},[]);const ge=n.useCallback(()=>{if(!u||!m.current)return;const ce=m.current.getEditor();if(ce?.executeEdits&&ce?.getSelection){const ue=ce.getSelection();ce.executeEdits("ai-refactor",[{range:ue,text:u}])}P(!1),B(""),C("")},[u]);return n.useImperativeHandle(i,()=>({...m.current,getEditor:()=>m.current?.getEditor(),getMonaco:()=>m.current?.getMonaco(),focus:()=>m.current?.focus(),getValue:()=>m.current?.getValue()||"",setValue:ce=>m.current?.setValue(ce),getSelection:()=>m.current?.getSelection()||"",insertText:ce=>m.current?.insertText(ce),formatDocument:()=>m.current?.formatDocument(),goToLine:(ce,ue)=>m.current?.goToLine(ce,ue),findReplace:()=>m.current?.findReplace(),undo:()=>m.current?.undo(),redo:()=>m.current?.redo(),getCursorPosition:()=>m.current?.getCursorPosition()||{lineNumber:1,column:1},setMarkers:ce=>m.current?.setMarkers(ce),triggerCompletion:W,explainSelection:ae,refactorSelection:oe,generateFromComment:me,acceptCompletion:ye,dismissCompletion:xe})),e.jsxs("div",{className:"nice-code-editor-ai","data-testid":a["data-testid"],children:[O&&Q&&e.jsxs("div",{className:"nice-code-editor-ai__toolbar",children:[e.jsxs("div",{className:"nice-code-editor-ai__toolbar-left",children:[e.jsx("span",{className:"nice-code-editor-ai__toolbar-badge",children:"AI"}),q&&e.jsx("span",{className:"nice-code-editor-ai__loading",children:l("codeEditorAI.loading","Thinking...")})]}),e.jsxs("div",{className:"nice-code-editor-ai__toolbar-right",children:[d&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>W(),disabled:q,title:`${l("codeEditorAI.complete","Complete")} (${z}+Space)`,children:["💡 ",l("codeEditorAI.complete","Complete")]}),y&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>ae(),disabled:q,title:`${l("codeEditorAI.explain","Explain")} (${z}+E)`,children:["📖 ",l("codeEditorAI.explain","Explain")]}),M&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>{const ce=m.current?.getSelection();ce&&(p(ce),P(!0))},disabled:q,title:`${l("codeEditorAI.refactor","Refactor")} (${z}+R)`,children:["🔧 ",l("codeEditorAI.refactor","Refactor")]}),A&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>me(),disabled:q,title:`${l("codeEditorAI.generate","Generate")} (${z}+G)`,children:["⚡ ",l("codeEditorAI.generate","Generate")]})]})]}),e.jsxs("div",{className:"nice-code-editor-ai__editor-wrapper",children:[e.jsx(yt,{ref:m,value:I,onChange:F,language:L,onCursorPositionChange:ee,...S}),f&&e.jsxs("div",{className:"nice-code-editor-ai__ghost-text",style:{top:`calc(${(f.lineNumber-1)*19}px + 4px)`,left:`calc(${(f.column-1)*7.8}px + 60px)`},children:[e.jsx("span",{className:"nice-code-editor-ai__ghost-text-content",children:f.text}),e.jsxs("span",{className:"nice-code-editor-ai__ghost-text-hint",children:["Tab ",l("codeEditorAI.toAccept","to accept")]})]})]}),b&&e.jsxs("div",{className:"nice-code-editor-ai__panel nice-code-editor-ai__panel--explain",children:[e.jsxs("div",{className:"nice-code-editor-ai__panel-header",children:[e.jsxs("h4",{children:["📖 ",l("codeEditorAI.explanation","Explanation")]}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__panel-close",onClick:()=>j(!1),children:"✕"})]}),e.jsx("div",{className:"nice-code-editor-ai__panel-body",children:q?e.jsx("div",{className:"nice-code-editor-ai__panel-loading",children:l("codeEditorAI.analyzing","Analyzing code...")}):e.jsxs("div",{className:"nice-code-editor-ai__explanation",children:[e.jsx("pre",{className:"nice-code-editor-ai__code-preview",children:g}),e.jsx("div",{className:"nice-code-editor-ai__explanation-text",children:h||l("codeEditorAI.noExplanation","Select code and click Explain")})]})})]}),T&&e.jsxs("div",{className:"nice-code-editor-ai__panel nice-code-editor-ai__panel--refactor",children:[e.jsxs("div",{className:"nice-code-editor-ai__panel-header",children:[e.jsxs("h4",{children:["🔧 ",l("codeEditorAI.refactorCode","Refactor Code")]}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__panel-close",onClick:()=>{P(!1),B(""),C("")},children:"✕"})]}),e.jsxs("div",{className:"nice-code-editor-ai__panel-body",children:[e.jsx("pre",{className:"nice-code-editor-ai__code-preview",children:g}),e.jsxs("div",{className:"nice-code-editor-ai__refactor-input",children:[e.jsx("input",{type:"text",placeholder:l("codeEditorAI.refactorInstruction",'Describe how to refactor (e.g., "extract function", "add error handling")'),value:_,onChange:ce=>C(ce.target.value),onKeyDown:ce=>{ce.key==="Enter"&&_&&oe(_)}}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__refactor-btn",onClick:()=>oe(_),disabled:q||!_,children:q?l("codeEditorAI.refactoring","Refactoring..."):l("codeEditorAI.refactor","Refactor")})]}),u&&e.jsxs("div",{className:"nice-code-editor-ai__refactor-result",children:[e.jsx("h5",{children:l("codeEditorAI.refactoredCode","Refactored Code")}),e.jsx("pre",{className:"nice-code-editor-ai__code-preview nice-code-editor-ai__code-preview--result",children:u}),e.jsxs("div",{className:"nice-code-editor-ai__refactor-actions",children:[e.jsxs("button",{type:"button",className:"nice-code-editor-ai__refactor-apply",onClick:ge,children:["✓ ",l("codeEditorAI.apply","Apply")]}),e.jsxs("button",{type:"button",className:"nice-code-editor-ai__refactor-discard",onClick:()=>{B(""),C("")},children:["✕ ",l("codeEditorAI.discard","Discard")]})]})]})]})]})]})});function Mt(t,a){const i=a.getBoundingClientRect();let o,r,d;if("touches"in t){const M=t.touches[0];o=M.clientX-i.left,r=M.clientY-i.top,d=M.force}else"pressure"in t?(o=t.clientX-i.left,r=t.clientY-i.top,d=t.pressure):(o=t.clientX-i.left,r=t.clientY-i.top);const $=a.width/i.width,y=a.height/i.height;return{x:o*$,y:r*y,time:Date.now(),pressure:d!==void 0?d:.5}}function Tt(t,a,i,o,r){if(!a)return(i+o)/2;const d=Math.sqrt(Math.pow(t.x-a.x,2)+Math.pow(t.y-a.y,2))/Math.max(1,t.time-a.time),$=Math.min(d/5,1),y=o-$*(o-i),M=t.pressure??.5,A=i+M*(o-i);return y*.7+A*.3}function Et(t,a,i,o){t.beginPath(),t.moveTo(a.x,a.y),t.lineTo(i.x,i.y),t.lineWidth=o,t.lineCap="round",t.lineJoin="round",t.stroke()}const Va=n.forwardRef(function(a,i){const{value:o,onChange:r,width:d="100%",height:$=200,penColor:y="#000000",penWidth:M=2,minWidth:A=.5,maxWidth:H=4,backgroundColor:k="#ffffff",placeholder:x="Sign here",showClearButton:O=!0,showUndoButton:z=!0,showColorPicker:L=!1,showSizeSlider:I=!1,velocityFilterWeight:F=.7,throttle:S=16,disabled:m=!1,readOnly:f=!1,onBegin:w,onEnd:b,className:j,"data-testid":h}=a,N=n.useRef(null),[T,P]=n.useState(o?.strokes??[]),[_,C]=n.useState([]),[u,B]=n.useState(!1),[g,p]=n.useState(y),[s,l]=n.useState(M),c=n.useRef(null),E=n.useRef(0),D=T.length===0&&_.length===0;n.useEffect(()=>{const ee=N.current;if(!ee)return;const ge=ee.getContext("2d");if(!ge)return;const ce=ee.getBoundingClientRect(),ue=window.devicePixelRatio||1;ee.width=ce.width*ue,ee.height=ce.height*ue,ge.scale(ue,ue),R()},[d,$]);const R=n.useCallback(()=>{const ee=N.current;if(!ee)return;const ge=ee.getContext("2d");if(!ge)return;const ce=ee.getBoundingClientRect();ge.fillStyle=k,ge.fillRect(0,0,ce.width,ce.height),T.forEach(ue=>{if(ge.strokeStyle=ue.color,!(ue.points.length<2))for(let re=1;re<ue.points.length;re++){const le=ue.points[re-1],J=ue.points[re],V=Tt(J,le,A,H);Et(ge,le,J,V)}})},[T,k,A,H,F]);n.useEffect(()=>{R()},[R]),n.useEffect(()=>{o?.strokes&&P(o.strokes)},[o]),n.useEffect(()=>{const ee=N.current;if(ee)if(T.length===0)r?.(null);else{const ge=ee.getBoundingClientRect();r?.({strokes:T,width:ge.width,height:ge.height,timestamp:Date.now()})}},[T,r]);const U=n.useCallback(ee=>{if(m||f)return;const ge=N.current;if(!ge)return;ge.setPointerCapture(ee.pointerId);const ce=Mt(ee.nativeEvent,ge);B(!0),C([ce]),c.current=ce,E.current=ce.time,w?.()},[m,f,w]),q=n.useCallback(ee=>{if(!u||m||f)return;const ge=N.current;if(!ge)return;const ce=ge.getContext("2d");if(!ce)return;const ue=Date.now();if(ue-E.current<S)return;const re=Mt(ee.nativeEvent,ge),le=c.current;if(le){ce.strokeStyle=g;const J=Tt(re,le,A,H);Et(ce,le,re,J)}C(J=>[...J,re]),c.current=re,E.current=ue},[u,m,f,g,A,H,F,S]),Q=n.useCallback(ee=>{if(!u)return;const ge=N.current;if(ge&&ge.releasePointerCapture(ee.pointerId),_.length>0){const ce={points:_,color:g,width:s};P(ue=>[...ue,ce])}B(!1),C([]),c.current=null,b?.()},[u,_,g,s,b]),W=n.useCallback(()=>{P([]),C([]),R()},[R]),ae=n.useCallback(()=>{P(ee=>ee.slice(0,-1))},[]),oe=n.useCallback((ee="png",ge=.92)=>{const ce=N.current;if(!ce)return"";const ue=ee==="jpeg"?"image/jpeg":"image/png";return ce.toDataURL(ue,ge)},[]),me=n.useCallback(async(ee="png",ge=.92)=>{const ce=N.current;return ce?new Promise(ue=>{const re=ee==="jpeg"?"image/jpeg":"image/png";ce.toBlob(le=>ue(le),re,ge)}):null},[]),ye=n.useCallback(()=>{const ee=N.current;if(!ee)return"";const ge=ee.getBoundingClientRect(),ce=T.map(ue=>ue.points.length<2?"":`<path d="${ue.points.reduce((le,J,V)=>V===0?`M ${J.x} ${J.y}`:`${le} L ${J.x} ${J.y}`,"")}" stroke="${ue.color}" stroke-width="${ue.width}" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`).join(`
168
+ `);return`<svg xmlns="http://www.w3.org/2000/svg" width="${ge.width}" height="${ge.height}" viewBox="0 0 ${ee.width} ${ee.height}">
169
+ <rect width="100%" height="100%" fill="${k}"/>
170
+ ${ce}
171
+ </svg>`},[T,k]);n.useImperativeHandle(i,()=>({clear:W,undo:ae,isEmpty:()=>T.length===0,getData:()=>{const ee=N.current;if(!ee||T.length===0)return null;const ge=ee.getBoundingClientRect();return{strokes:T,width:ge.width,height:ge.height,timestamp:Date.now()}},setData:ee=>{P(ee.strokes)},toDataURL:oe,toBlob:me,toSVG:ye,getCanvas:()=>N.current}),[T,W,ae,oe,me,ye]),n.useEffect(()=>{const ee=N.current;if(!ee)return;const ge=ce=>{u&&ce.preventDefault()};return ee.addEventListener("touchmove",ge,{passive:!1}),()=>ee.removeEventListener("touchmove",ge)},[u]);const xe=O||z||L||I;return e.jsxs("div",{className:`nice-signature ${m?"nice-signature--disabled":""} ${f?"nice-signature--readonly":""} ${j??""}`,style:{width:d},"data-testid":h,children:[xe&&e.jsxs("div",{className:"nice-signature__toolbar",children:[L&&e.jsx("div",{className:"nice-signature__color-picker",children:e.jsx("input",{type:"color",value:g,onChange:ee=>p(ee.target.value),disabled:m||f,title:"Pen color"})}),I&&e.jsx("div",{className:"nice-signature__size-slider",children:e.jsx("input",{type:"range",min:A,max:H,step:.5,value:s,onChange:ee=>l(parseFloat(ee.target.value)),disabled:m||f,title:"Pen size"})}),e.jsxs("div",{className:"nice-signature__actions",children:[z&&e.jsx("button",{type:"button",onClick:ae,disabled:m||f||T.length===0,className:"nice-signature__btn",title:"Undo",children:"↩️"}),O&&e.jsx("button",{type:"button",onClick:W,disabled:m||f||D,className:"nice-signature__btn",title:"Clear",children:"🗑️"})]})]}),e.jsxs("div",{className:"nice-signature__canvas-wrapper",style:{height:$},children:[e.jsx("canvas",{ref:N,className:"nice-signature__canvas",style:{width:"100%",height:"100%",cursor:m||f?"not-allowed":"crosshair",touchAction:"none"},onPointerDown:U,onPointerMove:q,onPointerUp:Q,onPointerLeave:Q}),D&&!u&&x&&e.jsx("div",{className:"nice-signature__placeholder",children:x}),e.jsx("div",{className:"nice-signature__line"})]})]})});function Ya(t){const{value:a,width:i="100%",height:o=150,backgroundColor:r="#ffffff",placeholder:d="No signature",className:$,"data-testid":y}=t,M=n.useRef(null);n.useEffect(()=>{const H=M.current;if(!H)return;const k=H.getContext("2d");if(!k)return;const x=H.getBoundingClientRect(),O=window.devicePixelRatio||1;if(H.width=x.width*O,H.height=x.height*O,k.scale(O,O),k.fillStyle=r,k.fillRect(0,0,x.width,x.height),!!a)if(typeof a=="string"){const z=new Image;z.onload=()=>{k.drawImage(z,0,0,x.width,x.height)},z.src=a}else{const z=x.width/a.width,L=x.height/a.height;a.strokes.forEach(I=>{if(k.strokeStyle=I.color,k.lineWidth=I.width*Math.min(z,L),k.lineCap="round",k.lineJoin="round",!(I.points.length<2)){k.beginPath(),k.moveTo(I.points[0].x*z,I.points[0].y*L);for(let F=1;F<I.points.length;F++)k.lineTo(I.points[F].x*z,I.points[F].y*L);k.stroke()}})}},[a,r]);const A=!a||typeof a=="object"&&a.strokes.length===0;return e.jsx("div",{className:`nice-signature-display ${$??""}`,style:{width:i},"data-testid":y,children:e.jsxs("div",{className:"nice-signature-display__canvas-wrapper",style:{height:o},children:[e.jsx("canvas",{ref:M,className:"nice-signature-display__canvas",style:{width:"100%",height:"100%"}}),A&&e.jsx("div",{className:"nice-signature-display__placeholder",children:d})]})})}const Rt="nice-signature-styles";if(typeof document<"u"&&!document.getElementById(Rt)){const t=document.createElement("style");t.id=Rt,t.textContent=`
172
+ .nice-signature {
173
+ display: flex;
174
+ flex-direction: column;
175
+ border: 1px solid var(--nice-border, #e0e0e0);
176
+ border-radius: 4px;
177
+ overflow: hidden;
178
+ background: var(--nice-bg-surface, #fff);
179
+ }
180
+
181
+ .nice-signature--disabled {
182
+ opacity: 0.6;
183
+ }
184
+
185
+ .nice-signature__toolbar {
186
+ display: flex;
187
+ align-items: center;
188
+ gap: 8px;
189
+ padding: 8px;
190
+ background: var(--nice-bg-muted, #f5f5f5);
191
+ border-bottom: 1px solid var(--nice-border, #e0e0e0);
192
+ }
193
+
194
+ .nice-signature__color-picker input {
195
+ width: 32px;
196
+ height: 32px;
197
+ padding: 2px;
198
+ border: 1px solid var(--nice-border, #e0e0e0);
199
+ border-radius: 4px;
200
+ cursor: pointer;
201
+ }
202
+
203
+ .nice-signature__size-slider {
204
+ flex: 1;
205
+ max-width: 120px;
206
+ }
207
+
208
+ .nice-signature__size-slider input {
209
+ width: 100%;
210
+ }
211
+
212
+ .nice-signature__actions {
213
+ display: flex;
214
+ gap: 4px;
215
+ margin-left: auto;
216
+ }
217
+
218
+ .nice-signature__btn {
219
+ padding: 6px 10px;
220
+ border: 1px solid var(--nice-border, #e0e0e0);
221
+ border-radius: 4px;
222
+ background: var(--nice-bg-surface, #fff);
223
+ cursor: pointer;
224
+ font-size: 14px;
225
+ }
226
+
227
+ .nice-signature__btn:hover:not(:disabled) {
228
+ background: var(--nice-bg-hover, #f0f0f0);
229
+ }
230
+
231
+ .nice-signature__btn:disabled {
232
+ opacity: 0.4;
233
+ cursor: not-allowed;
234
+ }
235
+
236
+ .nice-signature__canvas-wrapper {
237
+ position: relative;
238
+ background: #fff;
239
+ }
240
+
241
+ .nice-signature__canvas {
242
+ display: block;
243
+ }
244
+
245
+ .nice-signature__placeholder {
246
+ position: absolute;
247
+ top: 50%;
248
+ left: 50%;
249
+ transform: translate(-50%, -50%);
250
+ color: var(--nice-text-secondary, #999);
251
+ font-size: 14px;
252
+ pointer-events: none;
253
+ user-select: none;
254
+ }
255
+
256
+ .nice-signature__line {
257
+ position: absolute;
258
+ bottom: 30px;
259
+ left: 20px;
260
+ right: 20px;
261
+ height: 1px;
262
+ background: var(--nice-border, #ccc);
263
+ pointer-events: none;
264
+ }
265
+
266
+ /* Display component */
267
+ .nice-signature-display {
268
+ border: 1px solid var(--nice-border, #e0e0e0);
269
+ border-radius: 4px;
270
+ overflow: hidden;
271
+ }
272
+
273
+ .nice-signature-display__canvas-wrapper {
274
+ position: relative;
275
+ background: #fff;
276
+ }
277
+
278
+ .nice-signature-display__canvas {
279
+ display: block;
280
+ }
281
+
282
+ .nice-signature-display__placeholder {
283
+ position: absolute;
284
+ top: 50%;
285
+ left: 50%;
286
+ transform: translate(-50%, -50%);
287
+ color: var(--nice-text-secondary, #999);
288
+ font-size: 14px;
289
+ }
290
+ `,document.head.appendChild(t)}const fn=({dataSource:t,targetKeys:a,selectedKeys:i,onChange:o,onSelectChange:r,render:d,titles:$=["Source","Target"],showSearch:y=!1,searchPlaceholder:M,filterOption:A,showSelectAll:H=!0,disabled:k=!1,draggable:x=!1,oneWay:O=!1,operations:z,showGroups:L=!1,className:I="",style:F,listHeight:S=300,"data-testid":m="nice-transfer-list"})=>{const{t:f}=K.useNiceTranslation(),[w,b]=n.useState(new Set),[j,h]=n.useState(new Set),[N,T]=n.useState(new Set),[P,_]=n.useState(""),[C,u]=n.useState(""),[B,g]=n.useState(null),[p,s]=n.useState(new Set),l=n.useMemo(()=>a?new Set(a):w,[a,w]),c=n.useMemo(()=>i?new Set(i.filter(se=>!l.has(se))):j,[i,l,j]),E=n.useMemo(()=>i?new Set(i.filter(se=>l.has(se))):N,[i,l,N]),{sourceItems:D,targetItems:R}=n.useMemo(()=>{const se=[],ne=[];for(const Z of t)l.has(Z.key)?ne.push(Z):se.push(Z);return{sourceItems:se,targetItems:ne}},[t,l]),U=n.useCallback((se,ne)=>ne.label.toLowerCase().includes(se.toLowerCase()),[]),q=A??U,Q=n.useMemo(()=>!y||!P?D:D.filter(se=>q(P,se)),[D,y,P,q]),W=n.useMemo(()=>!y||!C?R:R.filter(se=>q(C,se)),[R,y,C,q]),ae=n.useCallback(se=>{if(!L)return{ungrouped:se};const ne={},Z=[];for(const de of se)de.group?(ne[de.group]||(ne[de.group]=[]),ne[de.group].push(de)):Z.push(de);return{...ne,ungrouped:Z}},[L]),oe=n.useMemo(()=>ae(Q),[Q,ae]),me=n.useMemo(()=>ae(W),[W,ae]),ye=n.useCallback((se,ne)=>{if(k)return;const Z=ne?c:E,de=ne?h:T,pe=new Set(Z);if(pe.has(se)?pe.delete(se):pe.add(se),de(pe),r){const be=ne?pe:c,_e=ne?E:pe;r(Array.from(be),Array.from(_e))}},[k,c,E,r]),xe=n.useCallback((se,ne,Z)=>{if(k)return;const de=ne?h:T,pe=se.filter(be=>!be.disabled).map(be=>be.key);if(de(new Set(Z?pe:[])),r){const be=ne?Z?pe:[]:Array.from(c),_e=ne?Array.from(E):Z?pe:[];r(be,_e)}},[k,c,E,r]),ee=n.useCallback(()=>{if(k||c.size===0)return;const se=Array.from(c),ne=new Set(l);se.forEach(Z=>ne.add(Z)),o?o(Array.from(ne),"right",se):b(ne),h(new Set),r&&r([],Array.from(E))},[k,c,l,o,E,r]),ge=n.useCallback(()=>{if(k||E.size===0||O)return;const se=Array.from(E),ne=new Set(l);se.forEach(Z=>ne.delete(Z)),o?o(Array.from(ne),"left",se):b(ne),T(new Set),r&&r(Array.from(c),[])},[k,E,l,o,O,c,r]),ce=n.useCallback((se,ne)=>{!x||k||(se.dataTransfer.effectAllowed="move",se.dataTransfer.setData("text/plain",ne),g(ne))},[x,k]),ue=n.useCallback(se=>{!x||k||(se.preventDefault(),se.dataTransfer.dropEffect="move")},[x,k]),re=n.useCallback(se=>{if(!x||k)return;se.preventDefault();const ne=se.dataTransfer.getData("text/plain");if(!ne||l.has(ne))return;const Z=new Set(l);Z.add(ne),o?o(Array.from(Z),"right",[ne]):b(Z),g(null)},[x,k,l,o]),le=n.useCallback(se=>{if(!x||k||O)return;se.preventDefault();const ne=se.dataTransfer.getData("text/plain");if(!ne||!l.has(ne))return;const Z=new Set(l);Z.delete(ne),o?o(Array.from(Z),"left",[ne]):b(Z),g(null)},[x,k,O,l,o]),J=n.useCallback(()=>{g(null)},[]),V=n.useCallback(se=>{s(ne=>{const Z=new Set(ne);return Z.has(se)?Z.delete(se):Z.add(se),Z})},[]),Y=n.useCallback((se,ne)=>{const de=(ne?c:E).has(se.key),pe=B===se.key;return e.jsxs("div",{className:`nice-transfer-list__item ${de?"nice-transfer-list__item--selected":""} ${se.disabled?"nice-transfer-list__item--disabled":""} ${pe?"nice-transfer-list__item--dragging":""}`,onClick:()=>!se.disabled&&ye(se.key,ne),draggable:x&&!se.disabled,onDragStart:be=>ce(be,se.key),onDragEnd:J,"data-testid":`${m}-item-${se.key}`,children:[e.jsx("input",{type:"checkbox",checked:de,disabled:se.disabled||k,onChange:()=>ye(se.key,ne),className:"nice-transfer-list__checkbox"}),e.jsx("span",{className:"nice-transfer-list__label",children:d?d(se):se.label})]},se.key)},[c,E,B,x,k,ye,ce,J,d,m]),te=n.useCallback((se,ne)=>{const Z=Object.entries(se);return Z.length===1&&Z[0][0]==="ungrouped"?Z[0][1].map(de=>Y(de,ne)):Z.map(([de,pe])=>{if(de==="ungrouped")return pe.map(_e=>Y(_e,ne));const be=p.has(`${ne?"source":"target"}-${de}`);return e.jsxs("div",{className:"nice-transfer-list__group",children:[e.jsxs("div",{className:"nice-transfer-list__group-header",onClick:()=>V(`${ne?"source":"target"}-${de}`),children:[e.jsx("span",{className:"nice-transfer-list__group-icon",children:be?"▼":"▶"}),e.jsx("span",{className:"nice-transfer-list__group-name",children:de}),e.jsxs("span",{className:"nice-transfer-list__group-count",children:["(",pe.length,")"]})]}),be&&e.jsx("div",{className:"nice-transfer-list__group-items",children:pe.map(_e=>Y(_e,ne))})]},de)})},[p,Y,V]),he=n.useCallback((se,ne,Z,de,pe,be,_e)=>{const je=se.filter(we=>!we.disabled),Ne=je.length>0&&je.every(we=>_e.has(we.key)),Ce=je.some(we=>_e.has(we.key));return e.jsxs("div",{className:`nice-transfer-list__panel ${Z?"nice-transfer-list__panel--source":"nice-transfer-list__panel--target"}`,onDragOver:ue,onDrop:Z?le:re,"data-testid":`${m}-${Z?"source":"target"}`,children:[e.jsxs("div",{className:"nice-transfer-list__header",children:[H&&e.jsx("input",{type:"checkbox",checked:Ne,ref:we=>{we&&(we.indeterminate=Ce&&!Ne)},onChange:we=>xe(se,Z,we.target.checked),disabled:k||je.length===0,className:"nice-transfer-list__select-all"}),e.jsx("span",{className:"nice-transfer-list__title",children:de}),e.jsxs("span",{className:"nice-transfer-list__count",children:[_e.size>0?`${_e.size}/`:"",se.length," ",f("items","items")]})]}),y&&e.jsxs("div",{className:"nice-transfer-list__search",children:[e.jsx("input",{type:"text",value:pe,onChange:we=>be(we.target.value),placeholder:M??f("search","Search"),className:"nice-transfer-list__search-input"}),pe&&e.jsx("button",{className:"nice-transfer-list__search-clear",onClick:()=>be(""),"aria-label":f("clear","Clear"),children:"✕"})]}),e.jsx("div",{className:"nice-transfer-list__body",style:{height:S},children:se.length===0?e.jsx("div",{className:"nice-transfer-list__empty",children:f("noData","No data")}):te(ne,Z)})]})},[H,y,M,S,k,xe,ue,le,re,te,f,m]);return e.jsxs("div",{className:`nice-transfer-list ${k?"nice-transfer-list--disabled":""} ${I}`,style:F,"data-testid":m,children:[he(Q,oe,!0,$[0],P,_,c),e.jsxs("div",{className:"nice-transfer-list__operations",children:[z?z[0]:e.jsx("button",{className:"nice-transfer-list__btn",onClick:ee,disabled:k||c.size===0,"aria-label":f("add","Add"),"data-testid":`${m}-btn-right`,children:"→"}),z?z[1]:e.jsx("button",{className:"nice-transfer-list__btn",onClick:ge,disabled:k||E.size===0||O,"aria-label":f("remove","Remove"),"data-testid":`${m}-btn-left`,children:"←"})]}),he(W,me,!1,$[1],C,u,E)]})};fn.displayName="NiceTransferList";const yn=[{code:"US",name:"United States",dialCode:"+1",flag:"🇺🇸"},{code:"GB",name:"United Kingdom",dialCode:"+44",flag:"🇬🇧"},{code:"DE",name:"Germany",dialCode:"+49",flag:"🇩🇪"},{code:"FR",name:"France",dialCode:"+33",flag:"🇫🇷"},{code:"PL",name:"Poland",dialCode:"+48",flag:"🇵🇱"},{code:"ES",name:"Spain",dialCode:"+34",flag:"🇪🇸"},{code:"IT",name:"Italy",dialCode:"+39",flag:"🇮🇹"},{code:"NL",name:"Netherlands",dialCode:"+31",flag:"🇳🇱"},{code:"BE",name:"Belgium",dialCode:"+32",flag:"🇧🇪"},{code:"AT",name:"Austria",dialCode:"+43",flag:"🇦🇹"},{code:"CH",name:"Switzerland",dialCode:"+41",flag:"🇨🇭"},{code:"SE",name:"Sweden",dialCode:"+46",flag:"🇸🇪"},{code:"NO",name:"Norway",dialCode:"+47",flag:"🇳🇴"},{code:"DK",name:"Denmark",dialCode:"+45",flag:"🇩🇰"},{code:"FI",name:"Finland",dialCode:"+358",flag:"🇫🇮"},{code:"PT",name:"Portugal",dialCode:"+351",flag:"🇵🇹"},{code:"IE",name:"Ireland",dialCode:"+353",flag:"🇮🇪"},{code:"CZ",name:"Czech Republic",dialCode:"+420",flag:"🇨🇿"},{code:"SK",name:"Slovakia",dialCode:"+421",flag:"🇸🇰"},{code:"HU",name:"Hungary",dialCode:"+36",flag:"🇭🇺"},{code:"RO",name:"Romania",dialCode:"+40",flag:"🇷🇴"},{code:"BG",name:"Bulgaria",dialCode:"+359",flag:"🇧🇬"},{code:"GR",name:"Greece",dialCode:"+30",flag:"🇬🇷"},{code:"UA",name:"Ukraine",dialCode:"+380",flag:"🇺🇦"},{code:"RU",name:"Russia",dialCode:"+7",flag:"🇷🇺"},{code:"CA",name:"Canada",dialCode:"+1",flag:"🇨🇦"},{code:"AU",name:"Australia",dialCode:"+61",flag:"🇦🇺"},{code:"NZ",name:"New Zealand",dialCode:"+64",flag:"🇳🇿"},{code:"JP",name:"Japan",dialCode:"+81",flag:"🇯🇵"},{code:"KR",name:"South Korea",dialCode:"+82",flag:"🇰🇷"},{code:"CN",name:"China",dialCode:"+86",flag:"🇨🇳"},{code:"IN",name:"India",dialCode:"+91",flag:"🇮🇳"},{code:"SG",name:"Singapore",dialCode:"+65",flag:"🇸🇬"},{code:"MY",name:"Malaysia",dialCode:"+60",flag:"🇲🇾"},{code:"TH",name:"Thailand",dialCode:"+66",flag:"🇹🇭"},{code:"VN",name:"Vietnam",dialCode:"+84",flag:"🇻🇳"},{code:"ID",name:"Indonesia",dialCode:"+62",flag:"🇮🇩"},{code:"PH",name:"Philippines",dialCode:"+63",flag:"🇵🇭"},{code:"BR",name:"Brazil",dialCode:"+55",flag:"🇧🇷"},{code:"MX",name:"Mexico",dialCode:"+52",flag:"🇲🇽"},{code:"AR",name:"Argentina",dialCode:"+54",flag:"🇦🇷"},{code:"CL",name:"Chile",dialCode:"+56",flag:"🇨🇱"},{code:"CO",name:"Colombia",dialCode:"+57",flag:"🇨🇴"},{code:"PE",name:"Peru",dialCode:"+51",flag:"🇵🇪"},{code:"ZA",name:"South Africa",dialCode:"+27",flag:"🇿🇦"},{code:"EG",name:"Egypt",dialCode:"+20",flag:"🇪🇬"},{code:"NG",name:"Nigeria",dialCode:"+234",flag:"🇳🇬"},{code:"KE",name:"Kenya",dialCode:"+254",flag:"🇰🇪"},{code:"AE",name:"United Arab Emirates",dialCode:"+971",flag:"🇦🇪"},{code:"SA",name:"Saudi Arabia",dialCode:"+966",flag:"🇸🇦"},{code:"IL",name:"Israel",dialCode:"+972",flag:"🇮🇱"},{code:"TR",name:"Turkey",dialCode:"+90",flag:"🇹🇷"},{code:"AF",name:"Afghanistan",dialCode:"+93",flag:"🇦🇫"},{code:"AL",name:"Albania",dialCode:"+355",flag:"🇦🇱"},{code:"DZ",name:"Algeria",dialCode:"+213",flag:"🇩🇿"},{code:"AD",name:"Andorra",dialCode:"+376",flag:"🇦🇩"},{code:"AO",name:"Angola",dialCode:"+244",flag:"🇦🇴"},{code:"AG",name:"Antigua and Barbuda",dialCode:"+1268",flag:"🇦🇬"},{code:"AM",name:"Armenia",dialCode:"+374",flag:"🇦🇲"},{code:"AZ",name:"Azerbaijan",dialCode:"+994",flag:"🇦🇿"},{code:"BS",name:"Bahamas",dialCode:"+1242",flag:"🇧🇸"},{code:"BH",name:"Bahrain",dialCode:"+973",flag:"🇧🇭"},{code:"BD",name:"Bangladesh",dialCode:"+880",flag:"🇧🇩"},{code:"BB",name:"Barbados",dialCode:"+1246",flag:"🇧🇧"},{code:"BY",name:"Belarus",dialCode:"+375",flag:"🇧🇾"},{code:"BZ",name:"Belize",dialCode:"+501",flag:"🇧🇿"},{code:"BJ",name:"Benin",dialCode:"+229",flag:"🇧🇯"},{code:"BT",name:"Bhutan",dialCode:"+975",flag:"🇧🇹"},{code:"BO",name:"Bolivia",dialCode:"+591",flag:"🇧🇴"},{code:"BA",name:"Bosnia and Herzegovina",dialCode:"+387",flag:"🇧🇦"},{code:"BW",name:"Botswana",dialCode:"+267",flag:"🇧🇼"},{code:"BN",name:"Brunei",dialCode:"+673",flag:"🇧🇳"},{code:"BF",name:"Burkina Faso",dialCode:"+226",flag:"🇧🇫"},{code:"BI",name:"Burundi",dialCode:"+257",flag:"🇧🇮"},{code:"CV",name:"Cape Verde",dialCode:"+238",flag:"🇨🇻"},{code:"KH",name:"Cambodia",dialCode:"+855",flag:"🇰🇭"},{code:"CM",name:"Cameroon",dialCode:"+237",flag:"🇨🇲"},{code:"CF",name:"Central African Republic",dialCode:"+236",flag:"🇨🇫"},{code:"TD",name:"Chad",dialCode:"+235",flag:"🇹🇩"},{code:"KM",name:"Comoros",dialCode:"+269",flag:"🇰🇲"},{code:"CG",name:"Congo",dialCode:"+242",flag:"🇨🇬"},{code:"CD",name:"DR Congo",dialCode:"+243",flag:"🇨🇩"},{code:"CR",name:"Costa Rica",dialCode:"+506",flag:"🇨🇷"},{code:"CI",name:"Côte d'Ivoire",dialCode:"+225",flag:"🇨🇮"},{code:"HR",name:"Croatia",dialCode:"+385",flag:"🇭🇷"},{code:"CU",name:"Cuba",dialCode:"+53",flag:"🇨🇺"},{code:"CY",name:"Cyprus",dialCode:"+357",flag:"🇨🇾"},{code:"DJ",name:"Djibouti",dialCode:"+253",flag:"🇩🇯"},{code:"DM",name:"Dominica",dialCode:"+1767",flag:"🇩🇲"},{code:"DO",name:"Dominican Republic",dialCode:"+1809",flag:"🇩🇴"},{code:"EC",name:"Ecuador",dialCode:"+593",flag:"🇪🇨"},{code:"SV",name:"El Salvador",dialCode:"+503",flag:"🇸🇻"},{code:"GQ",name:"Equatorial Guinea",dialCode:"+240",flag:"🇬🇶"},{code:"ER",name:"Eritrea",dialCode:"+291",flag:"🇪🇷"},{code:"EE",name:"Estonia",dialCode:"+372",flag:"🇪🇪"},{code:"SZ",name:"Eswatini",dialCode:"+268",flag:"🇸🇿"},{code:"ET",name:"Ethiopia",dialCode:"+251",flag:"🇪🇹"},{code:"FJ",name:"Fiji",dialCode:"+679",flag:"🇫🇯"},{code:"GA",name:"Gabon",dialCode:"+241",flag:"🇬🇦"},{code:"GM",name:"Gambia",dialCode:"+220",flag:"🇬🇲"},{code:"GE",name:"Georgia",dialCode:"+995",flag:"🇬🇪"},{code:"GH",name:"Ghana",dialCode:"+233",flag:"🇬🇭"},{code:"GD",name:"Grenada",dialCode:"+1473",flag:"🇬🇩"},{code:"GT",name:"Guatemala",dialCode:"+502",flag:"🇬🇹"},{code:"GN",name:"Guinea",dialCode:"+224",flag:"🇬🇳"},{code:"GW",name:"Guinea-Bissau",dialCode:"+245",flag:"🇬🇼"},{code:"GY",name:"Guyana",dialCode:"+592",flag:"🇬🇾"},{code:"HT",name:"Haiti",dialCode:"+509",flag:"🇭🇹"},{code:"HN",name:"Honduras",dialCode:"+504",flag:"🇭🇳"},{code:"HK",name:"Hong Kong",dialCode:"+852",flag:"🇭🇰"},{code:"IS",name:"Iceland",dialCode:"+354",flag:"🇮🇸"},{code:"IQ",name:"Iraq",dialCode:"+964",flag:"🇮🇶"},{code:"IR",name:"Iran",dialCode:"+98",flag:"🇮🇷"},{code:"JM",name:"Jamaica",dialCode:"+1876",flag:"🇯🇲"},{code:"JO",name:"Jordan",dialCode:"+962",flag:"🇯🇴"},{code:"KZ",name:"Kazakhstan",dialCode:"+7",flag:"🇰🇿"},{code:"KW",name:"Kuwait",dialCode:"+965",flag:"🇰🇼"},{code:"KG",name:"Kyrgyzstan",dialCode:"+996",flag:"🇰🇬"},{code:"LA",name:"Laos",dialCode:"+856",flag:"🇱🇦"},{code:"LV",name:"Latvia",dialCode:"+371",flag:"🇱🇻"},{code:"LB",name:"Lebanon",dialCode:"+961",flag:"🇱🇧"},{code:"LS",name:"Lesotho",dialCode:"+266",flag:"🇱🇸"},{code:"LR",name:"Liberia",dialCode:"+231",flag:"🇱🇷"},{code:"LY",name:"Libya",dialCode:"+218",flag:"🇱🇾"},{code:"LI",name:"Liechtenstein",dialCode:"+423",flag:"🇱🇮"},{code:"LT",name:"Lithuania",dialCode:"+370",flag:"🇱🇹"},{code:"LU",name:"Luxembourg",dialCode:"+352",flag:"🇱🇺"},{code:"MO",name:"Macau",dialCode:"+853",flag:"🇲🇴"},{code:"MK",name:"North Macedonia",dialCode:"+389",flag:"🇲🇰"},{code:"MG",name:"Madagascar",dialCode:"+261",flag:"🇲🇬"},{code:"MW",name:"Malawi",dialCode:"+265",flag:"🇲🇼"},{code:"MV",name:"Maldives",dialCode:"+960",flag:"🇲🇻"},{code:"ML",name:"Mali",dialCode:"+223",flag:"🇲🇱"},{code:"MT",name:"Malta",dialCode:"+356",flag:"🇲🇹"},{code:"MR",name:"Mauritania",dialCode:"+222",flag:"🇲🇷"},{code:"MU",name:"Mauritius",dialCode:"+230",flag:"🇲🇺"},{code:"MD",name:"Moldova",dialCode:"+373",flag:"🇲🇩"},{code:"MC",name:"Monaco",dialCode:"+377",flag:"🇲🇨"},{code:"MN",name:"Mongolia",dialCode:"+976",flag:"🇲🇳"},{code:"ME",name:"Montenegro",dialCode:"+382",flag:"🇲🇪"},{code:"MA",name:"Morocco",dialCode:"+212",flag:"🇲🇦"},{code:"MZ",name:"Mozambique",dialCode:"+258",flag:"🇲🇿"},{code:"MM",name:"Myanmar",dialCode:"+95",flag:"🇲🇲"},{code:"NA",name:"Namibia",dialCode:"+264",flag:"🇳🇦"},{code:"NP",name:"Nepal",dialCode:"+977",flag:"🇳🇵"},{code:"NI",name:"Nicaragua",dialCode:"+505",flag:"🇳🇮"},{code:"NE",name:"Niger",dialCode:"+227",flag:"🇳🇪"},{code:"KP",name:"North Korea",dialCode:"+850",flag:"🇰🇵"},{code:"OM",name:"Oman",dialCode:"+968",flag:"🇴🇲"},{code:"PK",name:"Pakistan",dialCode:"+92",flag:"🇵🇰"},{code:"PS",name:"Palestine",dialCode:"+970",flag:"🇵🇸"},{code:"PA",name:"Panama",dialCode:"+507",flag:"🇵🇦"},{code:"PG",name:"Papua New Guinea",dialCode:"+675",flag:"🇵🇬"},{code:"PY",name:"Paraguay",dialCode:"+595",flag:"🇵🇾"},{code:"QA",name:"Qatar",dialCode:"+974",flag:"🇶🇦"},{code:"RW",name:"Rwanda",dialCode:"+250",flag:"🇷🇼"},{code:"WS",name:"Samoa",dialCode:"+685",flag:"🇼🇸"},{code:"SM",name:"San Marino",dialCode:"+378",flag:"🇸🇲"},{code:"ST",name:"São Tomé and Príncipe",dialCode:"+239",flag:"🇸🇹"},{code:"SN",name:"Senegal",dialCode:"+221",flag:"🇸🇳"},{code:"RS",name:"Serbia",dialCode:"+381",flag:"🇷🇸"},{code:"SC",name:"Seychelles",dialCode:"+248",flag:"🇸🇨"},{code:"SL",name:"Sierra Leone",dialCode:"+232",flag:"🇸🇱"},{code:"SI",name:"Slovenia",dialCode:"+386",flag:"🇸🇮"},{code:"SB",name:"Solomon Islands",dialCode:"+677",flag:"🇸🇧"},{code:"SO",name:"Somalia",dialCode:"+252",flag:"🇸🇴"},{code:"SS",name:"South Sudan",dialCode:"+211",flag:"🇸🇸"},{code:"LK",name:"Sri Lanka",dialCode:"+94",flag:"🇱🇰"},{code:"SD",name:"Sudan",dialCode:"+249",flag:"🇸🇩"},{code:"SR",name:"Suriname",dialCode:"+597",flag:"🇸🇷"},{code:"SY",name:"Syria",dialCode:"+963",flag:"🇸🇾"},{code:"TW",name:"Taiwan",dialCode:"+886",flag:"🇹🇼"},{code:"TJ",name:"Tajikistan",dialCode:"+992",flag:"🇹🇯"},{code:"TZ",name:"Tanzania",dialCode:"+255",flag:"🇹🇿"},{code:"TL",name:"Timor-Leste",dialCode:"+670",flag:"🇹🇱"},{code:"TG",name:"Togo",dialCode:"+228",flag:"🇹🇬"},{code:"TO",name:"Tonga",dialCode:"+676",flag:"🇹🇴"},{code:"TT",name:"Trinidad and Tobago",dialCode:"+1868",flag:"🇹🇹"},{code:"TN",name:"Tunisia",dialCode:"+216",flag:"🇹🇳"},{code:"TM",name:"Turkmenistan",dialCode:"+993",flag:"🇹🇲"},{code:"UG",name:"Uganda",dialCode:"+256",flag:"🇺🇬"},{code:"UY",name:"Uruguay",dialCode:"+598",flag:"🇺🇾"},{code:"UZ",name:"Uzbekistan",dialCode:"+998",flag:"🇺🇿"},{code:"VU",name:"Vanuatu",dialCode:"+678",flag:"🇻🇺"},{code:"VA",name:"Vatican City",dialCode:"+379",flag:"🇻🇦"},{code:"VE",name:"Venezuela",dialCode:"+58",flag:"🇻🇪"},{code:"YE",name:"Yemen",dialCode:"+967",flag:"🇾🇪"},{code:"ZM",name:"Zambia",dialCode:"+260",flag:"🇿🇲"},{code:"ZW",name:"Zimbabwe",dialCode:"+263",flag:"🇿🇼"}],xn=({value:t,defaultValue:a,onChange:i,placeholder:o,showSearch:r=!0,searchPlaceholder:d,showDialCode:$=!0,showFlag:y=!0,disabled:M=!1,countries:A,priorityCountries:H=["US","GB","DE","FR","PL"],allowClear:k=!0,size:x="md",className:O="",style:z,"data-testid":L="nice-country-picker"})=>{const{t:I}=K.useNiceTranslation(),F=n.useRef(null),S=n.useRef(null),[m,f]=n.useState(a),[w,b]=n.useState(!1),[j,h]=n.useState(""),[N,T]=n.useState(0),P=t!==void 0?t:m,_=n.useMemo(()=>{let l=yn;if(A){const c=new Set(A.map(E=>E.toUpperCase()));l=l.filter(E=>c.has(E.code))}return l},[A]),C=n.useMemo(()=>{if(!H?.length)return _;const l=new Set(H.map(D=>D.toUpperCase())),c=_.filter(D=>l.has(D.code)),E=_.filter(D=>!l.has(D.code));return[...c,...E]},[_,H]),u=n.useMemo(()=>{if(!j)return C;const l=j.toLowerCase();return C.filter(c=>c.name.toLowerCase().includes(l)||c.code.toLowerCase().includes(l)||c.dialCode.includes(l))},[C,j]),B=n.useMemo(()=>P?_.find(l=>l.code===P)??null:null,[P,_]);n.useEffect(()=>{if(!w)return;const l=c=>{F.current&&!F.current.contains(c.target)&&(b(!1),h(""))};return document.addEventListener("mousedown",l),()=>document.removeEventListener("mousedown",l)},[w]),n.useEffect(()=>{w&&r&&S.current&&S.current.focus()},[w,r]),n.useEffect(()=>{T(0)},[j]);const g=n.useCallback(l=>{t===void 0&&f(l.code),i?.(l),b(!1),h("")},[t,i]),p=n.useCallback(l=>{l.stopPropagation(),t===void 0&&f(void 0),i?.(null)},[t,i]),s=n.useCallback(l=>{if(!w){(l.key==="Enter"||l.key===" "||l.key==="ArrowDown")&&(l.preventDefault(),b(!0));return}switch(l.key){case"ArrowDown":l.preventDefault(),T(c=>Math.min(c+1,u.length-1));break;case"ArrowUp":l.preventDefault(),T(c=>Math.max(c-1,0));break;case"Enter":l.preventDefault(),u[N]&&g(u[N]);break;case"Escape":l.preventDefault(),b(!1),h("");break}},[w,u,N,g]);return e.jsxs("div",{ref:F,className:`nice-country-picker nice-country-picker--${x} ${w?"nice-country-picker--open":""} ${M?"nice-country-picker--disabled":""} ${O}`,style:z,"data-testid":L,children:[e.jsxs("button",{type:"button",className:"nice-country-picker__trigger",onClick:()=>!M&&b(!w),onKeyDown:s,disabled:M,"aria-haspopup":"listbox","aria-expanded":w,"data-testid":`${L}-trigger`,children:[B?e.jsxs("span",{className:"nice-country-picker__value",children:[y&&e.jsx("span",{className:"nice-country-picker__flag",children:B.flag}),e.jsx("span",{className:"nice-country-picker__name",children:B.name}),$&&e.jsxs("span",{className:"nice-country-picker__dial-code",children:["(",B.dialCode,")"]})]}):e.jsx("span",{className:"nice-country-picker__placeholder",children:o??I("controls.select","Select country")}),e.jsxs("span",{className:"nice-country-picker__icons",children:[k&&B&&!M&&e.jsx("span",{className:"nice-country-picker__clear",onClick:p,"aria-label":I("clear","Clear"),children:"✕"}),e.jsx("span",{className:"nice-country-picker__arrow",children:w?"▲":"▼"})]})]}),w&&e.jsxs("div",{className:"nice-country-picker__dropdown",role:"listbox","data-testid":`${L}-dropdown`,children:[r&&e.jsx("div",{className:"nice-country-picker__search",children:e.jsx("input",{ref:S,type:"text",value:j,onChange:l=>h(l.target.value),onKeyDown:s,placeholder:d??I("search","Search"),className:"nice-country-picker__search-input","data-testid":`${L}-search`})}),e.jsx("div",{className:"nice-country-picker__list",children:u.length===0?e.jsx("div",{className:"nice-country-picker__empty",children:I("noData","No countries found")}):u.map((l,c)=>e.jsxs("div",{className:`nice-country-picker__option ${l.code===P?"nice-country-picker__option--selected":""} ${c===N?"nice-country-picker__option--highlighted":""}`,onClick:()=>g(l),onMouseEnter:()=>T(c),role:"option","aria-selected":l.code===P,"data-testid":`${L}-option-${l.code}`,children:[y&&e.jsx("span",{className:"nice-country-picker__flag",children:l.flag}),e.jsx("span",{className:"nice-country-picker__name",children:l.name}),$&&e.jsx("span",{className:"nice-country-picker__dial-code",children:l.dialCode})]},l.code))})]})]})};xn.displayName="NiceCountryPicker";const Ga={recent:"🕒",smileys:"😀",people:"👋",animals:"🐱",food:"🍕",travel:"✈️",activities:"⚽",objects:"💡",symbols:"❤️",flags:"🏳️"},At={recent:"Recently Used",smileys:"Smileys & Emotion",people:"People & Body",animals:"Animals & Nature",food:"Food & Drink",travel:"Travel & Places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"},rt=["","🏻","🏼","🏽","🏾","🏿"],nt=[{emoji:"😀",name:"grinning face",category:"smileys",keywords:["happy","smile"]},{emoji:"😃",name:"grinning face with big eyes",category:"smileys"},{emoji:"😄",name:"grinning face with smiling eyes",category:"smileys"},{emoji:"😁",name:"beaming face",category:"smileys"},{emoji:"😅",name:"grinning face with sweat",category:"smileys"},{emoji:"🤣",name:"rolling on the floor laughing",category:"smileys",keywords:["rofl"]},{emoji:"😂",name:"face with tears of joy",category:"smileys",keywords:["lol","laugh"]},{emoji:"🙂",name:"slightly smiling face",category:"smileys"},{emoji:"😉",name:"winking face",category:"smileys",keywords:["wink"]},{emoji:"😊",name:"smiling face with smiling eyes",category:"smileys"},{emoji:"😇",name:"smiling face with halo",category:"smileys",keywords:["angel"]},{emoji:"🥰",name:"smiling face with hearts",category:"smileys",keywords:["love"]},{emoji:"😍",name:"smiling face with heart-eyes",category:"smileys"},{emoji:"🤩",name:"star-struck",category:"smileys",keywords:["wow"]},{emoji:"😘",name:"face blowing a kiss",category:"smileys",keywords:["kiss"]},{emoji:"😗",name:"kissing face",category:"smileys"},{emoji:"😚",name:"kissing face with closed eyes",category:"smileys"},{emoji:"😋",name:"face savoring food",category:"smileys",keywords:["yum"]},{emoji:"😛",name:"face with tongue",category:"smileys"},{emoji:"😜",name:"winking face with tongue",category:"smileys"},{emoji:"🤪",name:"zany face",category:"smileys",keywords:["crazy"]},{emoji:"😝",name:"squinting face with tongue",category:"smileys"},{emoji:"🤑",name:"money-mouth face",category:"smileys"},{emoji:"🤗",name:"hugging face",category:"smileys",keywords:["hug"]},{emoji:"🤭",name:"face with hand over mouth",category:"smileys"},{emoji:"🤫",name:"shushing face",category:"smileys",keywords:["quiet"]},{emoji:"🤔",name:"thinking face",category:"smileys",keywords:["think","hmm"]},{emoji:"🤐",name:"zipper-mouth face",category:"smileys"},{emoji:"🤨",name:"face with raised eyebrow",category:"smileys"},{emoji:"😐",name:"neutral face",category:"smileys"},{emoji:"😑",name:"expressionless face",category:"smileys"},{emoji:"😶",name:"face without mouth",category:"smileys"},{emoji:"😏",name:"smirking face",category:"smileys",keywords:["smirk"]},{emoji:"😒",name:"unamused face",category:"smileys"},{emoji:"🙄",name:"face with rolling eyes",category:"smileys"},{emoji:"😬",name:"grimacing face",category:"smileys"},{emoji:"😮‍💨",name:"face exhaling",category:"smileys"},{emoji:"🤥",name:"lying face",category:"smileys"},{emoji:"😌",name:"relieved face",category:"smileys"},{emoji:"😔",name:"pensive face",category:"smileys",keywords:["sad"]},{emoji:"😪",name:"sleepy face",category:"smileys"},{emoji:"🤤",name:"drooling face",category:"smileys"},{emoji:"😴",name:"sleeping face",category:"smileys",keywords:["sleep","zzz"]},{emoji:"😷",name:"face with medical mask",category:"smileys",keywords:["sick"]},{emoji:"🤒",name:"face with thermometer",category:"smileys"},{emoji:"🤕",name:"face with head-bandage",category:"smileys"},{emoji:"🤢",name:"nauseated face",category:"smileys"},{emoji:"🤮",name:"face vomiting",category:"smileys"},{emoji:"🤧",name:"sneezing face",category:"smileys"},{emoji:"🥵",name:"hot face",category:"smileys"},{emoji:"🥶",name:"cold face",category:"smileys"},{emoji:"🥴",name:"woozy face",category:"smileys",keywords:["drunk"]},{emoji:"😵",name:"face with crossed-out eyes",category:"smileys"},{emoji:"🤯",name:"exploding head",category:"smileys",keywords:["mind blown"]},{emoji:"🤠",name:"cowboy hat face",category:"smileys"},{emoji:"🥳",name:"partying face",category:"smileys",keywords:["party"]},{emoji:"🥸",name:"disguised face",category:"smileys"},{emoji:"😎",name:"smiling face with sunglasses",category:"smileys",keywords:["cool"]},{emoji:"🤓",name:"nerd face",category:"smileys",keywords:["nerd"]},{emoji:"🧐",name:"face with monocle",category:"smileys"},{emoji:"😕",name:"confused face",category:"smileys"},{emoji:"😟",name:"worried face",category:"smileys"},{emoji:"🙁",name:"slightly frowning face",category:"smileys"},{emoji:"☹️",name:"frowning face",category:"smileys"},{emoji:"😮",name:"face with open mouth",category:"smileys",keywords:["surprised"]},{emoji:"😯",name:"hushed face",category:"smileys"},{emoji:"😲",name:"astonished face",category:"smileys"},{emoji:"😳",name:"flushed face",category:"smileys"},{emoji:"🥺",name:"pleading face",category:"smileys"},{emoji:"😦",name:"frowning face with open mouth",category:"smileys"},{emoji:"😧",name:"anguished face",category:"smileys"},{emoji:"😨",name:"fearful face",category:"smileys"},{emoji:"😰",name:"anxious face with sweat",category:"smileys"},{emoji:"😥",name:"sad but relieved face",category:"smileys"},{emoji:"😢",name:"crying face",category:"smileys",keywords:["cry"]},{emoji:"😭",name:"loudly crying face",category:"smileys",keywords:["sob"]},{emoji:"😱",name:"face screaming in fear",category:"smileys",keywords:["scream"]},{emoji:"😖",name:"confounded face",category:"smileys"},{emoji:"😣",name:"persevering face",category:"smileys"},{emoji:"😞",name:"disappointed face",category:"smileys"},{emoji:"😓",name:"downcast face with sweat",category:"smileys"},{emoji:"😩",name:"weary face",category:"smileys"},{emoji:"😫",name:"tired face",category:"smileys"},{emoji:"🥱",name:"yawning face",category:"smileys"},{emoji:"😤",name:"face with steam from nose",category:"smileys",keywords:["angry"]},{emoji:"😡",name:"pouting face",category:"smileys",keywords:["rage"]},{emoji:"😠",name:"angry face",category:"smileys"},{emoji:"🤬",name:"face with symbols on mouth",category:"smileys",keywords:["swear"]},{emoji:"😈",name:"smiling face with horns",category:"smileys",keywords:["devil"]},{emoji:"👿",name:"angry face with horns",category:"smileys"},{emoji:"💀",name:"skull",category:"smileys",keywords:["dead"]},{emoji:"☠️",name:"skull and crossbones",category:"smileys"},{emoji:"💩",name:"pile of poo",category:"smileys",keywords:["poop"]},{emoji:"🤡",name:"clown face",category:"smileys"},{emoji:"👹",name:"ogre",category:"smileys"},{emoji:"👺",name:"goblin",category:"smileys"},{emoji:"👻",name:"ghost",category:"smileys"},{emoji:"👽",name:"alien",category:"smileys"},{emoji:"👾",name:"alien monster",category:"smileys"},{emoji:"🤖",name:"robot",category:"smileys"},{emoji:"👋",name:"waving hand",category:"people",skinTones:!0,keywords:["wave","hi"]},{emoji:"🤚",name:"raised back of hand",category:"people",skinTones:!0},{emoji:"🖐️",name:"hand with fingers splayed",category:"people",skinTones:!0},{emoji:"✋",name:"raised hand",category:"people",skinTones:!0},{emoji:"🖖",name:"vulcan salute",category:"people",skinTones:!0},{emoji:"👌",name:"ok hand",category:"people",skinTones:!0,keywords:["ok","perfect"]},{emoji:"🤌",name:"pinched fingers",category:"people",skinTones:!0},{emoji:"🤏",name:"pinching hand",category:"people",skinTones:!0},{emoji:"✌️",name:"victory hand",category:"people",skinTones:!0,keywords:["peace"]},{emoji:"🤞",name:"crossed fingers",category:"people",skinTones:!0},{emoji:"🤟",name:"love-you gesture",category:"people",skinTones:!0},{emoji:"🤘",name:"sign of the horns",category:"people",skinTones:!0,keywords:["rock"]},{emoji:"🤙",name:"call me hand",category:"people",skinTones:!0},{emoji:"👈",name:"backhand index pointing left",category:"people",skinTones:!0},{emoji:"👉",name:"backhand index pointing right",category:"people",skinTones:!0},{emoji:"👆",name:"backhand index pointing up",category:"people",skinTones:!0},{emoji:"🖕",name:"middle finger",category:"people",skinTones:!0},{emoji:"👇",name:"backhand index pointing down",category:"people",skinTones:!0},{emoji:"☝️",name:"index pointing up",category:"people",skinTones:!0},{emoji:"👍",name:"thumbs up",category:"people",skinTones:!0,keywords:["like","good"]},{emoji:"👎",name:"thumbs down",category:"people",skinTones:!0,keywords:["dislike","bad"]},{emoji:"✊",name:"raised fist",category:"people",skinTones:!0},{emoji:"👊",name:"oncoming fist",category:"people",skinTones:!0},{emoji:"🤛",name:"left-facing fist",category:"people",skinTones:!0},{emoji:"🤜",name:"right-facing fist",category:"people",skinTones:!0},{emoji:"👏",name:"clapping hands",category:"people",skinTones:!0,keywords:["clap","applause"]},{emoji:"🙌",name:"raising hands",category:"people",skinTones:!0},{emoji:"👐",name:"open hands",category:"people",skinTones:!0},{emoji:"🤲",name:"palms up together",category:"people",skinTones:!0},{emoji:"🤝",name:"handshake",category:"people",skinTones:!0},{emoji:"🙏",name:"folded hands",category:"people",skinTones:!0,keywords:["pray","please"]},{emoji:"✍️",name:"writing hand",category:"people",skinTones:!0},{emoji:"💪",name:"flexed biceps",category:"people",skinTones:!0,keywords:["strong","muscle"]},{emoji:"🐶",name:"dog face",category:"animals",keywords:["dog"]},{emoji:"🐱",name:"cat face",category:"animals",keywords:["cat"]},{emoji:"🐭",name:"mouse face",category:"animals"},{emoji:"🐹",name:"hamster",category:"animals"},{emoji:"🐰",name:"rabbit face",category:"animals"},{emoji:"🦊",name:"fox",category:"animals"},{emoji:"🐻",name:"bear",category:"animals"},{emoji:"🐼",name:"panda",category:"animals"},{emoji:"🐨",name:"koala",category:"animals"},{emoji:"🐯",name:"tiger face",category:"animals"},{emoji:"🦁",name:"lion",category:"animals"},{emoji:"🐮",name:"cow face",category:"animals"},{emoji:"🐷",name:"pig face",category:"animals",keywords:["pig"]},{emoji:"🐸",name:"frog",category:"animals"},{emoji:"🐵",name:"monkey face",category:"animals"},{emoji:"🙈",name:"see-no-evil monkey",category:"animals"},{emoji:"🙉",name:"hear-no-evil monkey",category:"animals"},{emoji:"🙊",name:"speak-no-evil monkey",category:"animals"},{emoji:"🐔",name:"chicken",category:"animals"},{emoji:"🐧",name:"penguin",category:"animals"},{emoji:"🐦",name:"bird",category:"animals"},{emoji:"🐤",name:"baby chick",category:"animals"},{emoji:"🦆",name:"duck",category:"animals"},{emoji:"🦅",name:"eagle",category:"animals"},{emoji:"🦉",name:"owl",category:"animals"},{emoji:"🦇",name:"bat",category:"animals"},{emoji:"🐺",name:"wolf",category:"animals"},{emoji:"🐗",name:"boar",category:"animals"},{emoji:"🐴",name:"horse face",category:"animals"},{emoji:"🦄",name:"unicorn",category:"animals"},{emoji:"🐝",name:"honeybee",category:"animals",keywords:["bee"]},{emoji:"🐛",name:"bug",category:"animals"},{emoji:"🦋",name:"butterfly",category:"animals"},{emoji:"🐌",name:"snail",category:"animals"},{emoji:"🐙",name:"octopus",category:"animals"},{emoji:"🐬",name:"dolphin",category:"animals"},{emoji:"🐳",name:"spouting whale",category:"animals",keywords:["whale"]},{emoji:"🦈",name:"shark",category:"animals"},{emoji:"🐊",name:"crocodile",category:"animals"},{emoji:"🐢",name:"turtle",category:"animals"},{emoji:"🐍",name:"snake",category:"animals"},{emoji:"🦎",name:"lizard",category:"animals"},{emoji:"🐲",name:"dragon face",category:"animals",keywords:["dragon"]},{emoji:"🌸",name:"cherry blossom",category:"animals",keywords:["flower"]},{emoji:"🌹",name:"rose",category:"animals"},{emoji:"🌻",name:"sunflower",category:"animals"},{emoji:"🌺",name:"hibiscus",category:"animals"},{emoji:"🌷",name:"tulip",category:"animals"},{emoji:"🌲",name:"evergreen tree",category:"animals",keywords:["tree"]},{emoji:"🌳",name:"deciduous tree",category:"animals"},{emoji:"🌴",name:"palm tree",category:"animals"},{emoji:"🌵",name:"cactus",category:"animals"},{emoji:"🍀",name:"four leaf clover",category:"animals",keywords:["lucky"]},{emoji:"🍎",name:"red apple",category:"food",keywords:["apple"]},{emoji:"🍊",name:"tangerine",category:"food",keywords:["orange"]},{emoji:"🍋",name:"lemon",category:"food"},{emoji:"🍌",name:"banana",category:"food"},{emoji:"🍉",name:"watermelon",category:"food"},{emoji:"🍇",name:"grapes",category:"food"},{emoji:"🍓",name:"strawberry",category:"food"},{emoji:"🍒",name:"cherries",category:"food"},{emoji:"🍑",name:"peach",category:"food"},{emoji:"🥭",name:"mango",category:"food"},{emoji:"🍍",name:"pineapple",category:"food"},{emoji:"🥝",name:"kiwi fruit",category:"food"},{emoji:"🍅",name:"tomato",category:"food"},{emoji:"🥑",name:"avocado",category:"food"},{emoji:"🥦",name:"broccoli",category:"food"},{emoji:"🥬",name:"leafy green",category:"food"},{emoji:"🥒",name:"cucumber",category:"food"},{emoji:"🌽",name:"ear of corn",category:"food",keywords:["corn"]},{emoji:"🥕",name:"carrot",category:"food"},{emoji:"🧄",name:"garlic",category:"food"},{emoji:"🧅",name:"onion",category:"food"},{emoji:"🥔",name:"potato",category:"food"},{emoji:"🍞",name:"bread",category:"food"},{emoji:"🥐",name:"croissant",category:"food"},{emoji:"🥖",name:"baguette bread",category:"food"},{emoji:"🧀",name:"cheese wedge",category:"food",keywords:["cheese"]},{emoji:"🥚",name:"egg",category:"food"},{emoji:"🍳",name:"cooking",category:"food",keywords:["egg","breakfast"]},{emoji:"🥓",name:"bacon",category:"food"},{emoji:"🥩",name:"cut of meat",category:"food",keywords:["steak"]},{emoji:"🍗",name:"poultry leg",category:"food",keywords:["chicken"]},{emoji:"🍖",name:"meat on bone",category:"food"},{emoji:"🌭",name:"hot dog",category:"food"},{emoji:"🍔",name:"hamburger",category:"food",keywords:["burger"]},{emoji:"🍟",name:"french fries",category:"food",keywords:["fries"]},{emoji:"🍕",name:"pizza",category:"food"},{emoji:"🥪",name:"sandwich",category:"food"},{emoji:"🌮",name:"taco",category:"food"},{emoji:"🌯",name:"burrito",category:"food"},{emoji:"🥗",name:"green salad",category:"food",keywords:["salad"]},{emoji:"🍝",name:"spaghetti",category:"food",keywords:["pasta"]},{emoji:"🍜",name:"steaming bowl",category:"food",keywords:["ramen","noodles"]},{emoji:"🍲",name:"pot of food",category:"food",keywords:["stew"]},{emoji:"🍣",name:"sushi",category:"food"},{emoji:"🍱",name:"bento box",category:"food"},{emoji:"🥟",name:"dumpling",category:"food"},{emoji:"🍩",name:"doughnut",category:"food",keywords:["donut"]},{emoji:"🍪",name:"cookie",category:"food"},{emoji:"🎂",name:"birthday cake",category:"food",keywords:["cake","birthday"]},{emoji:"🍰",name:"shortcake",category:"food",keywords:["cake"]},{emoji:"🧁",name:"cupcake",category:"food"},{emoji:"🍫",name:"chocolate bar",category:"food",keywords:["chocolate"]},{emoji:"🍬",name:"candy",category:"food"},{emoji:"🍭",name:"lollipop",category:"food"},{emoji:"🍦",name:"soft ice cream",category:"food",keywords:["ice cream"]},{emoji:"☕",name:"hot beverage",category:"food",keywords:["coffee","tea"]},{emoji:"🍵",name:"teacup without handle",category:"food",keywords:["tea"]},{emoji:"🥤",name:"cup with straw",category:"food"},{emoji:"🍺",name:"beer mug",category:"food",keywords:["beer"]},{emoji:"🍻",name:"clinking beer mugs",category:"food",keywords:["cheers"]},{emoji:"🥂",name:"clinking glasses",category:"food",keywords:["champagne","toast"]},{emoji:"🍷",name:"wine glass",category:"food",keywords:["wine"]},{emoji:"🍸",name:"cocktail glass",category:"food",keywords:["martini"]},{emoji:"🚗",name:"automobile",category:"travel",keywords:["car"]},{emoji:"🚕",name:"taxi",category:"travel"},{emoji:"🚌",name:"bus",category:"travel"},{emoji:"🚎",name:"trolleybus",category:"travel"},{emoji:"🏎️",name:"racing car",category:"travel"},{emoji:"🚓",name:"police car",category:"travel"},{emoji:"🚑",name:"ambulance",category:"travel"},{emoji:"🚒",name:"fire engine",category:"travel"},{emoji:"🚐",name:"minibus",category:"travel"},{emoji:"🛻",name:"pickup truck",category:"travel"},{emoji:"🚚",name:"delivery truck",category:"travel",keywords:["truck"]},{emoji:"🚲",name:"bicycle",category:"travel",keywords:["bike"]},{emoji:"🛵",name:"motor scooter",category:"travel"},{emoji:"🏍️",name:"motorcycle",category:"travel"},{emoji:"✈️",name:"airplane",category:"travel",keywords:["plane"]},{emoji:"🚀",name:"rocket",category:"travel"},{emoji:"🚁",name:"helicopter",category:"travel"},{emoji:"🛶",name:"canoe",category:"travel"},{emoji:"⛵",name:"sailboat",category:"travel",keywords:["boat"]},{emoji:"🚢",name:"ship",category:"travel"},{emoji:"🚆",name:"train",category:"travel"},{emoji:"🚇",name:"metro",category:"travel",keywords:["subway"]},{emoji:"🏠",name:"house",category:"travel",keywords:["home"]},{emoji:"🏡",name:"house with garden",category:"travel"},{emoji:"🏢",name:"office building",category:"travel",keywords:["office"]},{emoji:"🏣",name:"Japanese post office",category:"travel"},{emoji:"🏥",name:"hospital",category:"travel"},{emoji:"🏦",name:"bank",category:"travel"},{emoji:"🏨",name:"hotel",category:"travel"},{emoji:"🏪",name:"convenience store",category:"travel",keywords:["store"]},{emoji:"🏫",name:"school",category:"travel"},{emoji:"🏭",name:"factory",category:"travel"},{emoji:"🏰",name:"castle",category:"travel"},{emoji:"⛪",name:"church",category:"travel"},{emoji:"🕌",name:"mosque",category:"travel"},{emoji:"🗼",name:"Tokyo tower",category:"travel"},{emoji:"🗽",name:"Statue of Liberty",category:"travel"},{emoji:"🌁",name:"foggy",category:"travel"},{emoji:"🌃",name:"night with stars",category:"travel"},{emoji:"🌄",name:"sunrise over mountains",category:"travel"},{emoji:"🌅",name:"sunrise",category:"travel"},{emoji:"🌆",name:"cityscape at dusk",category:"travel"},{emoji:"🌇",name:"sunset",category:"travel"},{emoji:"🌉",name:"bridge at night",category:"travel"},{emoji:"⛰️",name:"mountain",category:"travel"},{emoji:"🏔️",name:"snow-capped mountain",category:"travel"},{emoji:"🗻",name:"mount fuji",category:"travel"},{emoji:"🏝️",name:"desert island",category:"travel",keywords:["island"]},{emoji:"🏖️",name:"beach with umbrella",category:"travel",keywords:["beach"]},{emoji:"🌋",name:"volcano",category:"travel"},{emoji:"🌍",name:"globe Europe-Africa",category:"travel",keywords:["earth","world"]},{emoji:"🌎",name:"globe Americas",category:"travel"},{emoji:"🌏",name:"globe Asia-Australia",category:"travel"},{emoji:"🌕",name:"full moon",category:"travel",keywords:["moon"]},{emoji:"🌙",name:"crescent moon",category:"travel"},{emoji:"⭐",name:"star",category:"travel"},{emoji:"🌟",name:"glowing star",category:"travel"},{emoji:"☀️",name:"sun",category:"travel"},{emoji:"🌤️",name:"sun behind small cloud",category:"travel"},{emoji:"⛅",name:"sun behind cloud",category:"travel"},{emoji:"🌧️",name:"cloud with rain",category:"travel",keywords:["rain"]},{emoji:"⛈️",name:"cloud with lightning and rain",category:"travel",keywords:["storm"]},{emoji:"🌨️",name:"cloud with snow",category:"travel",keywords:["snow"]},{emoji:"🌈",name:"rainbow",category:"travel"},{emoji:"⚽",name:"soccer ball",category:"activities",keywords:["football","soccer"]},{emoji:"🏀",name:"basketball",category:"activities"},{emoji:"🏈",name:"american football",category:"activities"},{emoji:"⚾",name:"baseball",category:"activities"},{emoji:"🥎",name:"softball",category:"activities"},{emoji:"🎾",name:"tennis",category:"activities"},{emoji:"🏐",name:"volleyball",category:"activities"},{emoji:"🏉",name:"rugby football",category:"activities"},{emoji:"🥏",name:"flying disc",category:"activities",keywords:["frisbee"]},{emoji:"🎱",name:"pool 8 ball",category:"activities",keywords:["billiards"]},{emoji:"🪀",name:"yo-yo",category:"activities"},{emoji:"🏓",name:"ping pong",category:"activities"},{emoji:"🏸",name:"badminton",category:"activities"},{emoji:"🏒",name:"ice hockey",category:"activities"},{emoji:"🥅",name:"goal net",category:"activities"},{emoji:"⛳",name:"flag in hole",category:"activities",keywords:["golf"]},{emoji:"🏹",name:"bow and arrow",category:"activities",keywords:["archery"]},{emoji:"🎣",name:"fishing pole",category:"activities",keywords:["fishing"]},{emoji:"🥊",name:"boxing glove",category:"activities",keywords:["boxing"]},{emoji:"🥋",name:"martial arts uniform",category:"activities"},{emoji:"🎽",name:"running shirt",category:"activities"},{emoji:"🛹",name:"skateboard",category:"activities"},{emoji:"🛷",name:"sled",category:"activities"},{emoji:"⛸️",name:"ice skate",category:"activities"},{emoji:"🥌",name:"curling stone",category:"activities"},{emoji:"🎿",name:"skis",category:"activities",keywords:["skiing"]},{emoji:"🏂",name:"snowboarder",category:"activities",keywords:["snowboard"]},{emoji:"🏋️",name:"person lifting weights",category:"activities",keywords:["gym"]},{emoji:"🤸",name:"person cartwheeling",category:"activities"},{emoji:"🤺",name:"person fencing",category:"activities"},{emoji:"🏊",name:"person swimming",category:"activities",keywords:["swim"]},{emoji:"🚴",name:"person biking",category:"activities",keywords:["cycling"]},{emoji:"🧘",name:"person in lotus position",category:"activities",keywords:["yoga","meditation"]},{emoji:"🏆",name:"trophy",category:"activities",keywords:["winner","champion"]},{emoji:"🥇",name:"gold medal",category:"activities",keywords:["first"]},{emoji:"🥈",name:"silver medal",category:"activities",keywords:["second"]},{emoji:"🥉",name:"bronze medal",category:"activities",keywords:["third"]},{emoji:"🎮",name:"video game",category:"activities",keywords:["game","gaming"]},{emoji:"🕹️",name:"joystick",category:"activities"},{emoji:"🎲",name:"game die",category:"activities",keywords:["dice"]},{emoji:"🧩",name:"puzzle piece",category:"activities",keywords:["puzzle"]},{emoji:"♟️",name:"chess pawn",category:"activities",keywords:["chess"]},{emoji:"🎯",name:"direct hit",category:"activities",keywords:["dart","target"]},{emoji:"🎰",name:"slot machine",category:"activities"},{emoji:"🎭",name:"performing arts",category:"activities",keywords:["theater","drama"]},{emoji:"🎨",name:"artist palette",category:"activities",keywords:["art","paint"]},{emoji:"🎬",name:"clapper board",category:"activities",keywords:["movie","film"]},{emoji:"🎤",name:"microphone",category:"activities",keywords:["karaoke","sing"]},{emoji:"🎧",name:"headphone",category:"activities",keywords:["music"]},{emoji:"🎼",name:"musical score",category:"activities"},{emoji:"🎹",name:"musical keyboard",category:"activities",keywords:["piano"]},{emoji:"🎷",name:"saxophone",category:"activities"},{emoji:"🎸",name:"guitar",category:"activities"},{emoji:"🎻",name:"violin",category:"activities"},{emoji:"🪘",name:"long drum",category:"activities"},{emoji:"🥁",name:"drum",category:"activities"},{emoji:"⌚",name:"watch",category:"objects"},{emoji:"📱",name:"mobile phone",category:"objects",keywords:["phone","smartphone"]},{emoji:"📲",name:"mobile phone with arrow",category:"objects"},{emoji:"💻",name:"laptop",category:"objects",keywords:["computer"]},{emoji:"🖥️",name:"desktop computer",category:"objects"},{emoji:"🖨️",name:"printer",category:"objects"},{emoji:"⌨️",name:"keyboard",category:"objects"},{emoji:"🖱️",name:"computer mouse",category:"objects"},{emoji:"💾",name:"floppy disk",category:"objects"},{emoji:"💿",name:"optical disk",category:"objects",keywords:["cd"]},{emoji:"📀",name:"dvd",category:"objects"},{emoji:"📷",name:"camera",category:"objects"},{emoji:"📹",name:"video camera",category:"objects"},{emoji:"🎥",name:"movie camera",category:"objects"},{emoji:"📺",name:"television",category:"objects",keywords:["tv"]},{emoji:"📻",name:"radio",category:"objects"},{emoji:"🎙️",name:"studio microphone",category:"objects"},{emoji:"⏰",name:"alarm clock",category:"objects",keywords:["clock"]},{emoji:"⏳",name:"hourglass not done",category:"objects"},{emoji:"⌛",name:"hourglass done",category:"objects"},{emoji:"📡",name:"satellite antenna",category:"objects"},{emoji:"🔋",name:"battery",category:"objects"},{emoji:"🔌",name:"electric plug",category:"objects"},{emoji:"💡",name:"light bulb",category:"objects",keywords:["idea"]},{emoji:"🔦",name:"flashlight",category:"objects"},{emoji:"🕯️",name:"candle",category:"objects"},{emoji:"🧯",name:"fire extinguisher",category:"objects"},{emoji:"🛢️",name:"oil drum",category:"objects"},{emoji:"💸",name:"money with wings",category:"objects"},{emoji:"💵",name:"dollar banknote",category:"objects",keywords:["money"]},{emoji:"💳",name:"credit card",category:"objects"},{emoji:"💰",name:"money bag",category:"objects"},{emoji:"🧲",name:"magnet",category:"objects"},{emoji:"🔧",name:"wrench",category:"objects"},{emoji:"🔨",name:"hammer",category:"objects"},{emoji:"🛠️",name:"hammer and wrench",category:"objects",keywords:["tools"]},{emoji:"⚙️",name:"gear",category:"objects",keywords:["settings"]},{emoji:"🔩",name:"nut and bolt",category:"objects"},{emoji:"🔑",name:"key",category:"objects"},{emoji:"🗝️",name:"old key",category:"objects"},{emoji:"🔒",name:"locked",category:"objects",keywords:["lock"]},{emoji:"🔓",name:"unlocked",category:"objects"},{emoji:"📦",name:"package",category:"objects",keywords:["box"]},{emoji:"📫",name:"closed mailbox with raised flag",category:"objects",keywords:["mail"]},{emoji:"📝",name:"memo",category:"objects",keywords:["note"]},{emoji:"📄",name:"page facing up",category:"objects",keywords:["document"]},{emoji:"📁",name:"file folder",category:"objects",keywords:["folder"]},{emoji:"📂",name:"open file folder",category:"objects"},{emoji:"📅",name:"calendar",category:"objects"},{emoji:"📆",name:"tear-off calendar",category:"objects"},{emoji:"📌",name:"pushpin",category:"objects",keywords:["pin"]},{emoji:"📎",name:"paperclip",category:"objects"},{emoji:"✂️",name:"scissors",category:"objects"},{emoji:"📏",name:"straight ruler",category:"objects"},{emoji:"✏️",name:"pencil",category:"objects"},{emoji:"🖊️",name:"pen",category:"objects"},{emoji:"🖍️",name:"crayon",category:"objects"},{emoji:"📚",name:"books",category:"objects",keywords:["book","library"]},{emoji:"📖",name:"open book",category:"objects"},{emoji:"🔗",name:"link",category:"objects"},{emoji:"💊",name:"pill",category:"objects",keywords:["medicine"]},{emoji:"💉",name:"syringe",category:"objects"},{emoji:"🩹",name:"adhesive bandage",category:"objects"},{emoji:"🧪",name:"test tube",category:"objects"},{emoji:"🔬",name:"microscope",category:"objects"},{emoji:"🔭",name:"telescope",category:"objects"},{emoji:"🧬",name:"dna",category:"objects"},{emoji:"🗑️",name:"wastebasket",category:"objects",keywords:["trash","delete"]},{emoji:"🚿",name:"shower",category:"objects"},{emoji:"🛁",name:"bathtub",category:"objects"},{emoji:"🧹",name:"broom",category:"objects"},{emoji:"🧺",name:"basket",category:"objects"},{emoji:"🧻",name:"roll of paper",category:"objects"},{emoji:"🧼",name:"soap",category:"objects"},{emoji:"🪥",name:"toothbrush",category:"objects"},{emoji:"🛒",name:"shopping cart",category:"objects"},{emoji:"🎁",name:"wrapped gift",category:"objects",keywords:["gift","present"]},{emoji:"🎀",name:"ribbon",category:"objects"},{emoji:"🎈",name:"balloon",category:"objects"},{emoji:"🎉",name:"party popper",category:"objects",keywords:["party","celebration"]},{emoji:"🎊",name:"confetti ball",category:"objects"},{emoji:"❤️",name:"red heart",category:"symbols",keywords:["love","heart"]},{emoji:"🧡",name:"orange heart",category:"symbols"},{emoji:"💛",name:"yellow heart",category:"symbols"},{emoji:"💚",name:"green heart",category:"symbols"},{emoji:"💙",name:"blue heart",category:"symbols"},{emoji:"💜",name:"purple heart",category:"symbols"},{emoji:"🖤",name:"black heart",category:"symbols"},{emoji:"🤍",name:"white heart",category:"symbols"},{emoji:"🤎",name:"brown heart",category:"symbols"},{emoji:"💔",name:"broken heart",category:"symbols"},{emoji:"💕",name:"two hearts",category:"symbols"},{emoji:"💖",name:"sparkling heart",category:"symbols"},{emoji:"💗",name:"growing heart",category:"symbols"},{emoji:"💘",name:"heart with arrow",category:"symbols"},{emoji:"💝",name:"heart with ribbon",category:"symbols"},{emoji:"💞",name:"revolving hearts",category:"symbols"},{emoji:"💯",name:"hundred points",category:"symbols",keywords:["100","perfect"]},{emoji:"💢",name:"anger symbol",category:"symbols"},{emoji:"💥",name:"collision",category:"symbols",keywords:["boom","explosion"]},{emoji:"💫",name:"dizzy",category:"symbols"},{emoji:"💦",name:"sweat droplets",category:"symbols"},{emoji:"💨",name:"dashing away",category:"symbols"},{emoji:"🕳️",name:"hole",category:"symbols"},{emoji:"💬",name:"speech balloon",category:"symbols",keywords:["comment","chat"]},{emoji:"👁️‍🗨️",name:"eye in speech bubble",category:"symbols"},{emoji:"🗨️",name:"left speech bubble",category:"symbols"},{emoji:"🗯️",name:"right anger bubble",category:"symbols"},{emoji:"💭",name:"thought balloon",category:"symbols"},{emoji:"💤",name:"zzz",category:"symbols",keywords:["sleep"]},{emoji:"🔔",name:"bell",category:"symbols",keywords:["notification"]},{emoji:"🔕",name:"bell with slash",category:"symbols",keywords:["mute"]},{emoji:"🎵",name:"musical note",category:"symbols",keywords:["music"]},{emoji:"🎶",name:"musical notes",category:"symbols"},{emoji:"➕",name:"plus",category:"symbols",keywords:["add"]},{emoji:"➖",name:"minus",category:"symbols"},{emoji:"➗",name:"divide",category:"symbols"},{emoji:"✖️",name:"multiply",category:"symbols"},{emoji:"♾️",name:"infinity",category:"symbols"},{emoji:"💲",name:"heavy dollar sign",category:"symbols",keywords:["money"]},{emoji:"🔴",name:"red circle",category:"symbols"},{emoji:"🟠",name:"orange circle",category:"symbols"},{emoji:"🟡",name:"yellow circle",category:"symbols"},{emoji:"🟢",name:"green circle",category:"symbols"},{emoji:"🔵",name:"blue circle",category:"symbols"},{emoji:"🟣",name:"purple circle",category:"symbols"},{emoji:"⚫",name:"black circle",category:"symbols"},{emoji:"⚪",name:"white circle",category:"symbols"},{emoji:"🟤",name:"brown circle",category:"symbols"},{emoji:"🔺",name:"red triangle pointed up",category:"symbols"},{emoji:"🔻",name:"red triangle pointed down",category:"symbols"},{emoji:"🔷",name:"large blue diamond",category:"symbols"},{emoji:"🔶",name:"large orange diamond",category:"symbols"},{emoji:"✅",name:"check mark button",category:"symbols",keywords:["done","yes"]},{emoji:"❌",name:"cross mark",category:"symbols",keywords:["no","wrong"]},{emoji:"❎",name:"cross mark button",category:"symbols"},{emoji:"✔️",name:"check mark",category:"symbols"},{emoji:"⭕",name:"hollow red circle",category:"symbols"},{emoji:"❗",name:"exclamation mark",category:"symbols",keywords:["warning"]},{emoji:"❓",name:"question mark",category:"symbols"},{emoji:"❕",name:"white exclamation mark",category:"symbols"},{emoji:"❔",name:"white question mark",category:"symbols"},{emoji:"⚠️",name:"warning",category:"symbols"},{emoji:"🚫",name:"prohibited",category:"symbols",keywords:["no","forbidden"]},{emoji:"🔞",name:"no one under eighteen",category:"symbols"},{emoji:"⛔",name:"no entry",category:"symbols",keywords:["stop"]},{emoji:"🔙",name:"back arrow",category:"symbols"},{emoji:"🔚",name:"end arrow",category:"symbols"},{emoji:"🔛",name:"on! arrow",category:"symbols"},{emoji:"🔜",name:"soon arrow",category:"symbols"},{emoji:"🔝",name:"top arrow",category:"symbols"},{emoji:"🔃",name:"clockwise vertical arrows",category:"symbols",keywords:["refresh"]},{emoji:"🔄",name:"counterclockwise arrows button",category:"symbols",keywords:["sync"]},{emoji:"🔁",name:"repeat button",category:"symbols"},{emoji:"🔀",name:"shuffle tracks button",category:"symbols"},{emoji:"▶️",name:"play button",category:"symbols"},{emoji:"⏸️",name:"pause button",category:"symbols"},{emoji:"⏹️",name:"stop button",category:"symbols"},{emoji:"⏺️",name:"record button",category:"symbols"},{emoji:"⏭️",name:"next track button",category:"symbols"},{emoji:"⏮️",name:"last track button",category:"symbols"},{emoji:"⏩",name:"fast-forward button",category:"symbols"},{emoji:"⏪",name:"fast reverse button",category:"symbols"},{emoji:"🔼",name:"upwards button",category:"symbols"},{emoji:"🔽",name:"downwards button",category:"symbols"},{emoji:"⬆️",name:"up arrow",category:"symbols"},{emoji:"⬇️",name:"down arrow",category:"symbols"},{emoji:"⬅️",name:"left arrow",category:"symbols"},{emoji:"➡️",name:"right arrow",category:"symbols"},{emoji:"↗️",name:"up-right arrow",category:"symbols"},{emoji:"↘️",name:"down-right arrow",category:"symbols"},{emoji:"↙️",name:"down-left arrow",category:"symbols"},{emoji:"↖️",name:"up-left arrow",category:"symbols"},{emoji:"↕️",name:"up-down arrow",category:"symbols"},{emoji:"↔️",name:"left-right arrow",category:"symbols"},{emoji:"🔀",name:"shuffle",category:"symbols"},{emoji:"ℹ️",name:"information",category:"symbols",keywords:["info"]},{emoji:"🆕",name:"new button",category:"symbols",keywords:["new"]},{emoji:"🆗",name:"ok button",category:"symbols",keywords:["ok"]},{emoji:"🆙",name:"up! button",category:"symbols"},{emoji:"🆒",name:"cool button",category:"symbols",keywords:["cool"]},{emoji:"🆓",name:"free button",category:"symbols",keywords:["free"]},{emoji:"🔟",name:"keycap: 10",category:"symbols"},{emoji:"#️⃣",name:"keycap: #",category:"symbols"},{emoji:"*️⃣",name:"keycap: *",category:"symbols"},{emoji:"0️⃣",name:"keycap: 0",category:"symbols"},{emoji:"1️⃣",name:"keycap: 1",category:"symbols"},{emoji:"2️⃣",name:"keycap: 2",category:"symbols"},{emoji:"3️⃣",name:"keycap: 3",category:"symbols"},{emoji:"4️⃣",name:"keycap: 4",category:"symbols"},{emoji:"5️⃣",name:"keycap: 5",category:"symbols"},{emoji:"6️⃣",name:"keycap: 6",category:"symbols"},{emoji:"7️⃣",name:"keycap: 7",category:"symbols"},{emoji:"8️⃣",name:"keycap: 8",category:"symbols"},{emoji:"9️⃣",name:"keycap: 9",category:"symbols"},{emoji:"©️",name:"copyright",category:"symbols"},{emoji:"®️",name:"registered",category:"symbols"},{emoji:"™️",name:"trade mark",category:"symbols"},{emoji:"🏳️",name:"white flag",category:"flags"},{emoji:"🏴",name:"black flag",category:"flags"},{emoji:"🏁",name:"chequered flag",category:"flags",keywords:["finish","racing"]},{emoji:"🚩",name:"triangular flag",category:"flags"},{emoji:"🏳️‍🌈",name:"rainbow flag",category:"flags",keywords:["pride"]},{emoji:"🏳️‍⚧️",name:"transgender flag",category:"flags"},{emoji:"🇺🇸",name:"flag: United States",category:"flags",keywords:["usa","america"]},{emoji:"🇬🇧",name:"flag: United Kingdom",category:"flags",keywords:["uk","britain"]},{emoji:"🇩🇪",name:"flag: Germany",category:"flags"},{emoji:"🇫🇷",name:"flag: France",category:"flags"},{emoji:"🇵🇱",name:"flag: Poland",category:"flags"},{emoji:"🇪🇸",name:"flag: Spain",category:"flags"},{emoji:"🇮🇹",name:"flag: Italy",category:"flags"},{emoji:"🇯🇵",name:"flag: Japan",category:"flags"},{emoji:"🇨🇳",name:"flag: China",category:"flags"},{emoji:"🇰🇷",name:"flag: South Korea",category:"flags"},{emoji:"🇮🇳",name:"flag: India",category:"flags"},{emoji:"🇧🇷",name:"flag: Brazil",category:"flags"},{emoji:"🇷🇺",name:"flag: Russia",category:"flags"},{emoji:"🇦🇺",name:"flag: Australia",category:"flags"},{emoji:"🇨🇦",name:"flag: Canada",category:"flags"},{emoji:"🇲🇽",name:"flag: Mexico",category:"flags"},{emoji:"🇳🇱",name:"flag: Netherlands",category:"flags"},{emoji:"🇧🇪",name:"flag: Belgium",category:"flags"},{emoji:"🇨🇭",name:"flag: Switzerland",category:"flags"},{emoji:"🇦🇹",name:"flag: Austria",category:"flags"},{emoji:"🇸🇪",name:"flag: Sweden",category:"flags"},{emoji:"🇳🇴",name:"flag: Norway",category:"flags"},{emoji:"🇩🇰",name:"flag: Denmark",category:"flags"},{emoji:"🇫🇮",name:"flag: Finland",category:"flags"},{emoji:"🇵🇹",name:"flag: Portugal",category:"flags"},{emoji:"🇬🇷",name:"flag: Greece",category:"flags"},{emoji:"🇹🇷",name:"flag: Turkey",category:"flags"},{emoji:"🇮🇱",name:"flag: Israel",category:"flags"},{emoji:"🇦🇪",name:"flag: United Arab Emirates",category:"flags"},{emoji:"🇸🇦",name:"flag: Saudi Arabia",category:"flags"},{emoji:"🇿🇦",name:"flag: South Africa",category:"flags"},{emoji:"🇪🇬",name:"flag: Egypt",category:"flags"},{emoji:"🇳🇬",name:"flag: Nigeria",category:"flags"},{emoji:"🇹🇭",name:"flag: Thailand",category:"flags"},{emoji:"🇻🇳",name:"flag: Vietnam",category:"flags"},{emoji:"🇸🇬",name:"flag: Singapore",category:"flags"},{emoji:"🇲🇾",name:"flag: Malaysia",category:"flags"},{emoji:"🇮🇩",name:"flag: Indonesia",category:"flags"},{emoji:"🇵🇭",name:"flag: Philippines",category:"flags"},{emoji:"🇦🇷",name:"flag: Argentina",category:"flags"},{emoji:"🇨🇱",name:"flag: Chile",category:"flags"},{emoji:"🇨🇴",name:"flag: Colombia",category:"flags"},{emoji:"🇺🇦",name:"flag: Ukraine",category:"flags"},{emoji:"🇨🇿",name:"flag: Czech Republic",category:"flags"},{emoji:"🇭🇺",name:"flag: Hungary",category:"flags"},{emoji:"🇷🇴",name:"flag: Romania",category:"flags"},{emoji:"🇮🇪",name:"flag: Ireland",category:"flags"},{emoji:"🇳🇿",name:"flag: New Zealand",category:"flags"}],It="nice-emoji-picker-recent",bn=({onSelect:t,showSearch:a=!0,searchPlaceholder:i,showSkinTones:o=!0,defaultSkinTone:r=0,showRecent:d=!0,maxRecent:$=24,recentEmojis:y,onRecentChange:M,categories:A,customEmojis:H=[],columns:k=8,size:x="md",className:O="",style:z,"data-testid":L="nice-emoji-picker"})=>{const{t:I}=K.useNiceTranslation(),[F,S]=n.useState(""),[m,f]=n.useState(d?"recent":"smileys"),[w,b]=n.useState(r),[j,h]=n.useState(!1),N=n.useRef(null),[T,P]=n.useState(()=>{if(typeof window>"u")return[];try{return JSON.parse(localStorage.getItem(It)||"[]")}catch{return[]}}),_=y??T,C=A??[...d?["recent"]:[],"smileys","people","animals","food","travel","activities","objects","symbols","flags"],u=n.useMemo(()=>{if(!F)return nt;const c=F.toLowerCase();return nt.filter(E=>E.name.toLowerCase().includes(c)||E.emoji.includes(c)||E.keywords?.some(D=>D.toLowerCase().includes(c)))},[F]),B=n.useMemo(()=>{const c={};for(const E of C)E==="recent"?c[E]=_.map(D=>nt.find(R=>R.emoji===D)).filter(D=>D!==void 0).slice(0,$):c[E]=u.filter(D=>D.category===E);return c},[C,u,_,$]),g=n.useCallback((c,E)=>!E||w===0?c:c.replace(/[\u{1F3FB}-\u{1F3FF}]/gu,"")+rt[w],[w]),p=n.useCallback(c=>{const E=g(c.emoji,c.skinTones),D=[c.emoji,..._.filter(R=>R!==c.emoji)].slice(0,$);if(y===void 0){P(D);try{localStorage.setItem(It,JSON.stringify(D))}catch{}}M?.(D),t?.(E,c)},[g,_,$,y,M,t]),s=n.useCallback(c=>{t?.(`:${c.name}:`,c)},[t]);n.useEffect(()=>{if(!j)return;const c=E=>{N.current&&!N.current.contains(E.target)&&h(!1)};return document.addEventListener("mousedown",c),()=>document.removeEventListener("mousedown",c)},[j]);const l=F?u:B[m]||[];return e.jsxs("div",{className:`nice-emoji-picker nice-emoji-picker--${x} ${O}`,style:z,"data-testid":L,children:[a&&e.jsxs("div",{className:"nice-emoji-picker__search",children:[e.jsx("input",{type:"text",value:F,onChange:c=>S(c.target.value),placeholder:i??I("search","Search emoji..."),className:"nice-emoji-picker__search-input","data-testid":`${L}-search`}),o&&e.jsxs("div",{className:"nice-emoji-picker__skin-tone-wrapper",children:[e.jsxs("button",{ref:N,type:"button",className:"nice-emoji-picker__skin-tone-btn",onClick:()=>h(!j),title:I("skinTone","Skin tone"),children:["✋",rt[w]]}),j&&e.jsx("div",{className:"nice-emoji-picker__skin-tone-menu",children:rt.map((c,E)=>e.jsxs("button",{type:"button",className:`nice-emoji-picker__skin-tone-option ${E===w?"nice-emoji-picker__skin-tone-option--selected":""}`,onClick:()=>{b(E),h(!1)},children:["✋",c]},E))})]})]}),!F&&e.jsx("div",{className:"nice-emoji-picker__categories",role:"tablist",children:C.map(c=>e.jsx("button",{type:"button",className:`nice-emoji-picker__category-btn ${m===c?"nice-emoji-picker__category-btn--selected":""}`,onClick:()=>f(c),title:At[c],role:"tab","aria-selected":m===c,children:Ga[c]},c))}),e.jsxs("div",{className:"nice-emoji-picker__grid-container",children:[F?e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:I("searchResults","Search Results")}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${k}, 1fr)`},children:u.length===0?e.jsx("div",{className:"nice-emoji-picker__empty",children:I("noEmojis","No emojis found")}):u.map((c,E)=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji",onClick:()=>p(c),title:c.name,children:g(c.emoji,c.skinTones)},`${c.emoji}-${E}`))})]}):e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:At[m]}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${k}, 1fr)`},children:l.length===0?e.jsx("div",{className:"nice-emoji-picker__empty",children:m==="recent"?I("noRecent","No recent emojis"):I("noEmojis","No emojis")}):l.map((c,E)=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji",onClick:()=>p(c),title:c.name,children:g(c.emoji,c.skinTones)},`${c.emoji}-${E}`))})]}),H.length>0&&e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:I("custom","Custom")}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${k}, 1fr)`},children:H.map(c=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji nice-emoji-picker__emoji--custom",onClick:()=>s(c),title:c.name,children:e.jsx("img",{src:c.url,alt:c.name})},c.id))})]})]})]})};bn.displayName="NiceEmojiPicker";const jn=[{label:"Free",value:"free"},{label:"1:1",value:"1:1",ratio:1},{label:"4:3",value:"4:3",ratio:4/3},{label:"3:4",value:"3:4",ratio:3/4},{label:"16:9",value:"16:9",ratio:16/9},{label:"9:16",value:"9:16",ratio:9/16},{label:"3:2",value:"3:2",ratio:3/2},{label:"2:3",value:"2:3",ratio:2/3}],_n=({src:t,initialCrop:a={x:10,y:10,width:80,height:80},initialRotation:i=0,initialZoom:o=1,aspectRatios:r=jn,defaultAspectRatio:d="free",customAspectRatio:$,showRotation:y=!0,showFlip:M=!0,showZoom:A=!0,minZoom:H=.5,maxZoom:k=3,zoomStep:x=.1,showGrid:O=!0,overlayColor:z="rgba(0, 0, 0, 0.5)",onChange:L,className:I="",style:F,"data-testid":S="nice-crop-editor"})=>{const{t:m}=K.useNiceTranslation(),f=n.useRef(null),w=n.useRef(null),[b,j]=n.useState(a),[h,N]=n.useState(i),[T,P]=n.useState(o),[_,C]=n.useState(!1),[u,B]=n.useState(!1),[g,p]=n.useState(d),[s,l]=n.useState(!1),[c,E]=n.useState({x:0,y:0,crop:b}),D=g==="custom"?$:r.find(ee=>ee.value===g)?.ratio;n.useEffect(()=>{L?.({crop:b,rotation:h,flipH:_,flipV:u,zoom:T})},[b,h,_,u,T,L]);const R=n.useCallback((ee,ge)=>{if(!D)return ee;const ce=f.current?.clientWidth??400,ue=f.current?.clientHeight??300,re=ee.width/100*ce,le=ee.height/100*ue,J=re/le;if(Math.abs(J-D)<.01)return ee;if(ge?.includes("e")||ge?.includes("w")){const Y=re/D/ue*100;return{...ee,height:Math.min(100-ee.y,Math.max(5,Y))}}else if(ge?.includes("n")||ge?.includes("s")){const Y=le*D/ce*100;return{...ee,width:Math.min(100-ee.x,Math.max(5,Y))}}else{const Y=re/D/ue*100;return{...ee,height:Math.min(100-ee.y,Math.max(5,Y))}}},[D]),U=n.useCallback((ee,ge)=>{ge===!1||(ee.preventDefault(),ee.stopPropagation(),l(ge),!f.current?.getBoundingClientRect())||E({x:ee.clientX,y:ee.clientY,crop:{...b}})},[b]),q=n.useCallback(ee=>{if(!s||!f.current)return;const ge=f.current.getBoundingClientRect(),ce=(ee.clientX-c.x)/ge.width*100,ue=(ee.clientY-c.y)/ge.height*100;let re={...c.crop};if(s==="crop")re.x=Math.max(0,Math.min(100-re.width,c.crop.x+ce)),re.y=Math.max(0,Math.min(100-re.height,c.crop.y+ue));else{switch(s){case"resize-nw":re.x=Math.max(0,Math.min(c.crop.x+c.crop.width-5,c.crop.x+ce)),re.y=Math.max(0,Math.min(c.crop.y+c.crop.height-5,c.crop.y+ue)),re.width=c.crop.width-(re.x-c.crop.x),re.height=c.crop.height-(re.y-c.crop.y);break;case"resize-ne":re.y=Math.max(0,Math.min(c.crop.y+c.crop.height-5,c.crop.y+ue)),re.width=Math.max(5,Math.min(100-re.x,c.crop.width+ce)),re.height=c.crop.height-(re.y-c.crop.y);break;case"resize-sw":re.x=Math.max(0,Math.min(c.crop.x+c.crop.width-5,c.crop.x+ce)),re.width=c.crop.width-(re.x-c.crop.x),re.height=Math.max(5,Math.min(100-re.y,c.crop.height+ue));break;case"resize-se":re.width=Math.max(5,Math.min(100-re.x,c.crop.width+ce)),re.height=Math.max(5,Math.min(100-re.y,c.crop.height+ue));break;case"resize-n":re.y=Math.max(0,Math.min(c.crop.y+c.crop.height-5,c.crop.y+ue)),re.height=c.crop.height-(re.y-c.crop.y);break;case"resize-s":re.height=Math.max(5,Math.min(100-re.y,c.crop.height+ue));break;case"resize-e":re.width=Math.max(5,Math.min(100-re.x,c.crop.width+ce));break;case"resize-w":re.x=Math.max(0,Math.min(c.crop.x+c.crop.width-5,c.crop.x+ce)),re.width=c.crop.width-(re.x-c.crop.x);break}re=R(re,s.replace("resize-",""))}j(re)},[s,c,R]),Q=n.useCallback(()=>{l(!1)},[]);n.useEffect(()=>{if(s)return document.addEventListener("mousemove",q),document.addEventListener("mouseup",Q),()=>{document.removeEventListener("mousemove",q),document.removeEventListener("mouseup",Q)}},[s,q,Q]);const W=n.useCallback(()=>{N(ee=>(ee-90+360)%360)},[]),ae=n.useCallback(()=>{N(ee=>(ee+90)%360)},[]),oe=n.useCallback(()=>{C(ee=>!ee)},[]),me=n.useCallback(()=>{B(ee=>!ee)},[]),ye=n.useCallback(()=>{j(a),N(i),P(o),C(!1),B(!1),p(d)},[a,i,o,d]);n.useEffect(()=>{j(ee=>R(ee))},[g,R]);const xe=`scale(${T}) rotate(${h}deg) scaleX(${_?-1:1}) scaleY(${u?-1:1})`;return e.jsxs("div",{className:`nice-crop-editor ${I}`,style:F,"data-testid":S,children:[e.jsxs("div",{ref:f,className:"nice-crop-editor__container","data-testid":`${S}-container`,children:[e.jsx("img",{ref:w,src:t,alt:"",className:"nice-crop-editor__image",style:{transform:xe},draggable:!1}),e.jsxs("div",{className:"nice-crop-editor__overlay",style:{backgroundColor:z},children:[e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:0,left:0,right:0,height:`${b.y}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{bottom:0,left:0,right:0,height:`${100-b.y-b.height}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:`${b.y}%`,left:0,width:`${b.x}%`,height:`${b.height}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:`${b.y}%`,right:0,width:`${100-b.x-b.width}%`,height:`${b.height}%`}})]}),e.jsxs("div",{className:"nice-crop-editor__crop-area",style:{left:`${b.x}%`,top:`${b.y}%`,width:`${b.width}%`,height:`${b.height}%`},onMouseDown:ee=>U(ee,"crop"),"data-testid":`${S}-crop-area`,children:[O&&e.jsxs("div",{className:"nice-crop-editor__grid",children:[e.jsx("div",{className:"nice-crop-editor__grid-line nice-crop-editor__grid-line--h1"}),e.jsx("div",{className:"nice-crop-editor__grid-line nice-crop-editor__grid-line--h2"}),e.jsx("div",{className:"nice-crop-editor__grid-line nice-crop-editor__grid-line--v1"}),e.jsx("div",{className:"nice-crop-editor__grid-line nice-crop-editor__grid-line--v2"})]}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--nw",onMouseDown:ee=>U(ee,"resize-nw")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--ne",onMouseDown:ee=>U(ee,"resize-ne")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--sw",onMouseDown:ee=>U(ee,"resize-sw")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--se",onMouseDown:ee=>U(ee,"resize-se")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--n",onMouseDown:ee=>U(ee,"resize-n")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--s",onMouseDown:ee=>U(ee,"resize-s")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--e",onMouseDown:ee=>U(ee,"resize-e")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--w",onMouseDown:ee=>U(ee,"resize-w")})]})]}),e.jsxs("div",{className:"nice-crop-editor__controls",children:[e.jsxs("div",{className:"nice-crop-editor__control-group",children:[e.jsx("label",{className:"nice-crop-editor__label",children:m("aspectRatio","Aspect Ratio")}),e.jsx("div",{className:"nice-crop-editor__aspect-buttons",children:r.map(ee=>e.jsx("button",{type:"button",className:`nice-crop-editor__aspect-btn ${g===ee.value?"nice-crop-editor__aspect-btn--selected":""}`,onClick:()=>p(ee.value),title:ee.label,children:ee.label},ee.value))})]}),A&&e.jsxs("div",{className:"nice-crop-editor__control-group",children:[e.jsxs("label",{className:"nice-crop-editor__label",children:[m("zoom","Zoom"),": ",Math.round(T*100),"%"]}),e.jsx("input",{type:"range",className:"nice-crop-editor__slider",min:H,max:k,step:x,value:T,onChange:ee=>P(parseFloat(ee.target.value)),"data-testid":`${S}-zoom`})]}),e.jsxs("div",{className:"nice-crop-editor__control-group nice-crop-editor__control-group--row",children:[y&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-crop-editor__btn",onClick:W,title:m("rotateLeft","Rotate Left"),children:"↺"}),e.jsx("button",{type:"button",className:"nice-crop-editor__btn",onClick:ae,title:m("rotateRight","Rotate Right"),children:"↻"})]}),M&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:`nice-crop-editor__btn ${_?"nice-crop-editor__btn--active":""}`,onClick:oe,title:m("flipHorizontal","Flip Horizontal"),children:"⇆"}),e.jsx("button",{type:"button",className:`nice-crop-editor__btn ${u?"nice-crop-editor__btn--active":""}`,onClick:me,title:m("flipVertical","Flip Vertical"),children:"⇅"})]}),e.jsx("button",{type:"button",className:"nice-crop-editor__btn nice-crop-editor__btn--reset",onClick:ye,title:m("reset","Reset"),children:"⟲"})]})]})]})};_n.displayName="NiceCropEditor";const kn=n.forwardRef(({label:t,helperText:a,error:i,success:o=!1,startIcon:r,endIcon:d,showCounter:$=!1,variant:y="outlined",size:M="md",fullWidth:A=!1,className:H="",disabled:k=!1,required:x=!1,maxLength:O,value:z,defaultValue:L,onFocus:I,onBlur:F,onChange:S,"data-testid":m="nice-floating-input",...f},w)=>{const{t:b}=K.useNiceTranslation(),j=n.useId(),[h,N]=n.useState(!1),[T,P]=n.useState(L??""),_=z!==void 0?z:T,C=String(_).length>0,u=h||C,B=n.useCallback(l=>{N(!0),I?.(l)},[I]),g=n.useCallback(l=>{N(!1),F?.(l)},[F]),p=n.useCallback(l=>{z===void 0&&P(l.target.value),S?.(l)},[z,S]),s=["nice-floating-input",`nice-floating-input--${y}`,`nice-floating-input--${M}`,h&&"nice-floating-input--focused",C&&"nice-floating-input--has-value",k&&"nice-floating-input--disabled",i&&"nice-floating-input--error",o&&"nice-floating-input--success",r&&"nice-floating-input--has-start-icon",d&&"nice-floating-input--has-end-icon",A&&"nice-floating-input--full-width",H].filter(Boolean).join(" ");return e.jsxs("div",{className:s,"data-testid":m,children:[e.jsxs("div",{className:"nice-floating-input__container",children:[r&&e.jsx("span",{className:"nice-floating-input__icon nice-floating-input__icon--start",children:r}),e.jsxs("div",{className:"nice-floating-input__field",children:[e.jsx("input",{ref:w,id:j,className:"nice-floating-input__input",value:_,onChange:p,onFocus:B,onBlur:g,disabled:k,required:x,maxLength:O,"aria-invalid":!!i,"aria-describedby":i?`${j}-error`:a?`${j}-helper`:void 0,"data-testid":`${m}-input`,...f}),e.jsxs("label",{htmlFor:j,className:`nice-floating-input__label ${u?"nice-floating-input__label--floating":""}`,children:[t,x&&e.jsx("span",{className:"nice-floating-input__required",children:"*"})]}),y==="outlined"&&e.jsx("fieldset",{className:"nice-floating-input__fieldset","aria-hidden":"true",children:e.jsx("legend",{className:`nice-floating-input__legend ${u?"nice-floating-input__legend--floating":""}`,children:e.jsxs("span",{children:[t,x&&" *"]})})})]}),d&&e.jsx("span",{className:"nice-floating-input__icon nice-floating-input__icon--end",children:d})]}),e.jsxs("div",{className:"nice-floating-input__footer",children:[i?e.jsx("span",{id:`${j}-error`,className:"nice-floating-input__error",role:"alert",children:i}):a?e.jsx("span",{id:`${j}-helper`,className:"nice-floating-input__helper",children:a}):e.jsx("span",{}),$&&O!==void 0&&e.jsxs("span",{className:"nice-floating-input__counter",children:[String(_).length,"/",O]})]})]})});kn.displayName="NiceFloatingLabelInput";const vn=n.forwardRef(({label:t,helperText:a,error:i,success:o=!1,showCounter:r=!1,variant:d="outlined",size:$="md",fullWidth:y=!1,autoResize:M=!1,minRows:A=3,maxRows:H=10,className:k="",disabled:x=!1,required:O=!1,maxLength:z,value:L,defaultValue:I,onFocus:F,onBlur:S,onChange:m,"data-testid":f="nice-floating-textarea",...w},b)=>{const{t:j}=K.useNiceTranslation(),h=n.useId(),N=n.useRef(null),[T,P]=n.useState(!1),[_,C]=n.useState(I??""),u=L!==void 0?L:_,B=String(u).length>0,g=T||B;n.useEffect(()=>{if(!M||!N.current)return;const D=N.current,R=parseInt(getComputedStyle(D).lineHeight)||20,U=A*R,q=H*R;D.style.height="auto";const Q=D.scrollHeight;D.style.height=`${Math.min(Math.max(Q,U),q)}px`},[u,M,A,H]);const p=n.useCallback(D=>{N.current=D,typeof b=="function"?b(D):b&&(b.current=D)},[b]),s=n.useCallback(D=>{P(!0),F?.(D)},[F]),l=n.useCallback(D=>{P(!1),S?.(D)},[S]),c=n.useCallback(D=>{L===void 0&&C(D.target.value),m?.(D)},[L,m]),E=["nice-floating-input","nice-floating-input--textarea",`nice-floating-input--${d}`,`nice-floating-input--${$}`,T&&"nice-floating-input--focused",B&&"nice-floating-input--has-value",x&&"nice-floating-input--disabled",i&&"nice-floating-input--error",o&&"nice-floating-input--success",y&&"nice-floating-input--full-width",k].filter(Boolean).join(" ");return e.jsxs("div",{className:E,"data-testid":f,children:[e.jsx("div",{className:"nice-floating-input__container",children:e.jsxs("div",{className:"nice-floating-input__field",children:[e.jsx("textarea",{ref:p,id:h,className:"nice-floating-input__input nice-floating-input__input--textarea",value:u,onChange:c,onFocus:s,onBlur:l,disabled:x,required:O,maxLength:z,rows:A,"aria-invalid":!!i,"aria-describedby":i?`${h}-error`:a?`${h}-helper`:void 0,"data-testid":`${f}-textarea`,...w}),e.jsxs("label",{htmlFor:h,className:`nice-floating-input__label ${g?"nice-floating-input__label--floating":""}`,children:[t,O&&e.jsx("span",{className:"nice-floating-input__required",children:"*"})]}),d==="outlined"&&e.jsx("fieldset",{className:"nice-floating-input__fieldset","aria-hidden":"true",children:e.jsx("legend",{className:`nice-floating-input__legend ${g?"nice-floating-input__legend--floating":""}`,children:e.jsxs("span",{children:[t,O&&" *"]})})})]})}),e.jsxs("div",{className:"nice-floating-input__footer",children:[i?e.jsx("span",{id:`${h}-error`,className:"nice-floating-input__error",role:"alert",children:i}):a?e.jsx("span",{id:`${h}-helper`,className:"nice-floating-input__helper",children:a}):e.jsx("span",{}),r&&z!==void 0&&e.jsxs("span",{className:"nice-floating-input__counter",children:[String(u).length,"/",z]})]})]})});vn.displayName="NiceFloatingLabelTextarea";const Xa={strokeColor:"#ff3333",fillColor:"transparent",strokeWidth:2,opacity:1,fontSize:16,fontFamily:"sans-serif"};function qa(t,a){switch(a.type){case"SET_TOOL":return{...t,activeTool:a.tool,selectedId:null};case"SET_STYLE":return{...t,style:{...t.style,...a.style}};case"ADD_ANNOTATION":return{...t,annotations:[...t.annotations,a.annotation],past:[...t.past,t.annotations],future:[]};case"UPDATE_ANNOTATION":return{...t,annotations:t.annotations.map(i=>i.id===a.id?{...i,...a.updates}:i),past:[...t.past,t.annotations],future:[]};case"DELETE_ANNOTATION":return{...t,annotations:t.annotations.filter(i=>i.id!==a.id),selectedId:t.selectedId===a.id?null:t.selectedId,past:[...t.past,t.annotations],future:[]};case"SELECT":return{...t,selectedId:a.id};case"SET_ANNOTATIONS":return{...t,annotations:a.annotations,past:[],future:[]};case"SET_ZOOM":return{...t,zoom:a.zoom};case"SET_PAN":return{...t,panX:a.panX,panY:a.panY};case"UNDO":{if(t.past.length===0)return t;const i=t.past[t.past.length-1];return{...t,annotations:i,past:t.past.slice(0,-1),future:[t.annotations,...t.future]}}case"REDO":{if(t.future.length===0)return t;const i=t.future[0];return{...t,annotations:i,past:[...t.past,t.annotations],future:t.future.slice(1)}}case"CLEAR":return{...t,annotations:[],selectedId:null,past:[...t.past,t.annotations],future:[]};default:return t}}let Za=0;function Ja(){return`ann-${Date.now()}-${Za++}`}function Qa(t){const{style:a}=t,i=`stroke="${a.strokeColor}" stroke-width="${a.strokeWidth}" fill="${a.fillColor}" opacity="${a.opacity}"`;switch(t.tool){case"rectangle":return`<rect x="${t.x}" y="${t.y}" width="${t.width}" height="${t.height}" ${i} />`;case"ellipse":{const o=t.x+t.width/2,r=t.y+t.height/2;return`<ellipse cx="${o}" cy="${r}" rx="${t.width/2}" ry="${t.height/2}" ${i} />`}case"arrow":{const o=t,r=Math.atan2(o.endY-o.y,o.endX-o.x),d=12,$=o.endX-d*Math.cos(r-Math.PI/6),y=o.endY-d*Math.sin(r-Math.PI/6),M=o.endX-d*Math.cos(r+Math.PI/6),A=o.endY-d*Math.sin(r+Math.PI/6);return`<line x1="${o.x}" y1="${o.y}" x2="${o.endX}" y2="${o.endY}" ${i} />
291
+ <polygon points="${o.endX},${o.endY} ${$},${y} ${M},${A}" fill="${a.strokeColor}" opacity="${a.opacity}" />`}case"line":{const o=t;return`<line x1="${o.x}" y1="${o.y}" x2="${o.endX}" y2="${o.endY}" ${i} />`}case"text":{const o=t;return`<text x="${o.x}" y="${o.y+(o.style.fontSize??16)}" fill="${a.strokeColor}" font-size="${a.fontSize}" font-family="${a.fontFamily}" opacity="${a.opacity}">${ei(o.text)}</text>`}case"freehand":{const o=t;return o.points.length<2?"":`<path d="${o.points.map((d,$)=>`${$===0?"M":"L"}${d.x},${d.y}`).join(" ")}" ${i} fill="none" />`}case"blur":{const o=t,r=`blur-${o.id}`;return`<defs><filter id="${r}"><feGaussianBlur stdDeviation="${o.intensity??5}" /></filter></defs>
292
+ <rect x="${o.x}" y="${o.y}" width="${o.width}" height="${o.height}" fill="transparent" stroke="none" filter="url(#${r})" />`}default:return""}}function ei(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const Nn=n.forwardRef(({src:t,alt:a="Annotatable image",annotations:i,activeTool:o,defaultStyle:r,onAnnotationsChange:d,className:$,readOnly:y=!1,minZoom:M=.1,maxZoom:A=5},H)=>{const k=n.useRef(null),x=n.useRef(null),O=n.useRef(null),[z,L]=n.useState(!1),[I,F]=n.useState({width:0,height:0}),[S,m]=n.useReducer(qa,{annotations:i??[],selectedId:null,activeTool:o??"select",style:{...Xa,...r},zoom:1,panX:0,panY:0,past:[],future:[]});n.useEffect(()=>{o&&m({type:"SET_TOOL",tool:o})},[o]),n.useEffect(()=>{d?.(S.annotations)},[S.annotations,d]),n.useEffect(()=>{const C=new Image;C.crossOrigin="anonymous",C.onload=()=>{O.current=C,F({width:C.naturalWidth,height:C.naturalHeight}),L(!0)},C.src=t},[t]);const f=n.useRef({isDrawing:!1,startX:0,startY:0,currentAnnotation:null,freehandPoints:[]}),w=n.useCallback((C,u)=>{const B=k.current;if(!B)return{x:0,y:0};const g=B.getBoundingClientRect();return{x:(C-g.left-S.panX)/S.zoom,y:(u-g.top-S.panY)/S.zoom}},[S.zoom,S.panX,S.panY]),b=n.useCallback(()=>{const C=k.current,u=C?.getContext("2d"),B=O.current;if(!C||!u||!B||!z)return;C.width=x.current?.clientWidth??B.naturalWidth,C.height=x.current?.clientHeight??B.naturalHeight,u.clearRect(0,0,C.width,C.height),u.save(),u.translate(S.panX,S.panY),u.scale(S.zoom,S.zoom),u.drawImage(B,0,0);for(const p of S.annotations){switch(u.save(),u.globalAlpha=p.style.opacity,u.strokeStyle=p.style.strokeColor,u.fillStyle=p.style.fillColor,u.lineWidth=p.style.strokeWidth,p.tool){case"rectangle":u.strokeRect(p.x,p.y,p.width,p.height),p.style.fillColor!=="transparent"&&u.fillRect(p.x,p.y,p.width,p.height);break;case"ellipse":{u.beginPath(),u.ellipse(p.x+p.width/2,p.y+p.height/2,Math.abs(p.width/2),Math.abs(p.height/2),0,0,Math.PI*2),u.stroke(),p.style.fillColor!=="transparent"&&u.fill();break}case"arrow":{const s=p;u.beginPath(),u.moveTo(s.x,s.y),u.lineTo(s.endX,s.endY),u.stroke();const l=Math.atan2(s.endY-s.y,s.endX-s.x),c=12;u.beginPath(),u.moveTo(s.endX,s.endY),u.lineTo(s.endX-c*Math.cos(l-Math.PI/6),s.endY-c*Math.sin(l-Math.PI/6)),u.lineTo(s.endX-c*Math.cos(l+Math.PI/6),s.endY-c*Math.sin(l+Math.PI/6)),u.closePath(),u.fillStyle=p.style.strokeColor,u.fill();break}case"line":{const s=p;u.beginPath(),u.moveTo(s.x,s.y),u.lineTo(s.endX,s.endY),u.stroke();break}case"text":{const s=p;u.font=`${s.style.fontSize??16}px ${s.style.fontFamily??"sans-serif"}`,u.fillStyle=s.style.strokeColor,u.fillText(s.text,s.x,s.y+(s.style.fontSize??16));break}case"freehand":{const s=p;if(s.points.length<2)break;u.beginPath(),u.moveTo(s.points[0].x,s.points[0].y);for(let l=1;l<s.points.length;l++)u.lineTo(s.points[l].x,s.points[l].y);u.stroke();break}case"blur":{const s=p;u.filter=`blur(${s.intensity??5}px)`,u.drawImage(B,s.x,s.y,s.width,s.height,s.x,s.y,s.width,s.height),u.filter="none";break}}p.id===S.selectedId&&(u.strokeStyle="#4488ff",u.lineWidth=1,u.setLineDash([4,4]),u.strokeRect(p.x-2,p.y-2,p.width+4,p.height+4),u.setLineDash([])),u.restore()}const g=f.current;if(g.isDrawing&&g.currentAnnotation){u.save();const p=g.currentAnnotation;if(u.globalAlpha=p.style.opacity,u.strokeStyle=p.style.strokeColor,u.lineWidth=p.style.strokeWidth,u.setLineDash([6,3]),p.tool==="freehand"){const s=p;if(s.points.length>=2){u.beginPath(),u.moveTo(s.points[0].x,s.points[0].y);for(let l=1;l<s.points.length;l++)u.lineTo(s.points[l].x,s.points[l].y);u.stroke()}}else if(p.tool==="rectangle")u.strokeRect(p.x,p.y,p.width,p.height);else if(p.tool==="ellipse")u.beginPath(),u.ellipse(p.x+p.width/2,p.y+p.height/2,Math.abs(p.width/2),Math.abs(p.height/2),0,0,Math.PI*2),u.stroke();else if(p.tool==="arrow"||p.tool==="line"){const s=p;u.beginPath(),u.moveTo(s.x,s.y),u.lineTo(s.endX,s.endY),u.stroke()}u.restore()}u.restore()},[S,z]);n.useEffect(()=>{b()},[b]);const j=n.useCallback(C=>{if(y)return;const u=w(C.clientX,C.clientY),B=S.activeTool;if(B==="select"){const s=[...S.annotations].reverse().find(l=>l.tool==="freehand"?!1:u.x>=l.x&&u.x<=l.x+l.width&&u.y>=l.y&&u.y<=l.y+l.height);m({type:"SELECT",id:s?.id??null});return}const g=f.current;g.isDrawing=!0,g.startX=u.x,g.startY=u.y;const p={id:Ja(),style:{...S.style},x:u.x,y:u.y,width:0,height:0};switch(B){case"rectangle":g.currentAnnotation={...p,tool:"rectangle"};break;case"ellipse":g.currentAnnotation={...p,tool:"ellipse"};break;case"arrow":g.currentAnnotation={...p,tool:"arrow",endX:u.x,endY:u.y};break;case"line":g.currentAnnotation={...p,tool:"line",endX:u.x,endY:u.y};break;case"text":g.currentAnnotation={...p,tool:"text",text:"Text",width:100,height:S.style.fontSize??16};break;case"freehand":g.freehandPoints=[u],g.currentAnnotation={...p,tool:"freehand",points:[u]};break;case"blur":g.currentAnnotation={...p,tool:"blur",intensity:5};break}},[y,w,S.activeTool,S.style,S.annotations]),h=n.useCallback(C=>{const u=f.current;if(!u.isDrawing||!u.currentAnnotation)return;const B=w(C.clientX,C.clientY),g=u.currentAnnotation;if(g.tool==="freehand"){u.freehandPoints.push(B),g.points=[...u.freehandPoints];const p=u.freehandPoints.map(l=>l.x),s=u.freehandPoints.map(l=>l.y);g.x=Math.min(...p),g.y=Math.min(...s),g.width=Math.max(...p)-g.x,g.height=Math.max(...s)-g.y}else if(g.tool==="arrow"||g.tool==="line")g.endX=B.x,g.endY=B.y,g.width=Math.abs(B.x-u.startX),g.height=Math.abs(B.y-u.startY);else{const p=Math.min(u.startX,B.x),s=Math.min(u.startY,B.y);g.x=p,g.y=s,g.width=Math.abs(B.x-u.startX),g.height=Math.abs(B.y-u.startY)}b()},[w,b]),N=n.useCallback(()=>{const C=f.current;if(!C.isDrawing||!C.currentAnnotation)return;const u=C.currentAnnotation;(u.tool==="text"||u.tool==="freehand"||Math.abs(u.width)>2||Math.abs(u.height)>2)&&m({type:"ADD_ANNOTATION",annotation:u}),C.isDrawing=!1,C.currentAnnotation=null,C.freehandPoints=[]},[]),T=n.useCallback(C=>{C.preventDefault();const u=C.deltaY>0?.9:1.1,B=Math.max(M,Math.min(A,S.zoom*u));m({type:"SET_ZOOM",zoom:B})},[S.zoom,M,A]);n.useEffect(()=>{if(y)return;const C=u=>{(u.metaKey||u.ctrlKey)&&u.key==="z"&&!u.shiftKey?(u.preventDefault(),m({type:"UNDO"})):(u.metaKey||u.ctrlKey)&&(u.key==="y"||u.key==="z"&&u.shiftKey)?(u.preventDefault(),m({type:"REDO"})):(u.key==="Delete"||u.key==="Backspace")&&S.selectedId&&m({type:"DELETE_ANNOTATION",id:S.selectedId})};return document.addEventListener("keydown",C),()=>document.removeEventListener("keydown",C)},[y,S.selectedId]),n.useImperativeHandle(H,()=>({exportAsDataURL:async(C="png",u=.92)=>{const B=document.createElement("canvas"),g=O.current;if(!g)return"";B.width=g.naturalWidth,B.height=g.naturalHeight;const p=B.getContext("2d");p.drawImage(g,0,0);for(const s of S.annotations){if(p.save(),p.globalAlpha=s.style.opacity,p.strokeStyle=s.style.strokeColor,p.fillStyle=s.style.fillColor,p.lineWidth=s.style.strokeWidth,s.tool==="rectangle")p.strokeRect(s.x,s.y,s.width,s.height);else if(s.tool==="ellipse")p.beginPath(),p.ellipse(s.x+s.width/2,s.y+s.height/2,Math.abs(s.width/2),Math.abs(s.height/2),0,0,Math.PI*2),p.stroke();else if(s.tool==="freehand"){const l=s;if(l.points.length>=2){p.beginPath(),p.moveTo(l.points[0].x,l.points[0].y);for(let c=1;c<l.points.length;c++)p.lineTo(l.points[c].x,l.points[c].y);p.stroke()}}else if(s.tool==="text"){const l=s;p.font=`${l.style.fontSize??16}px ${l.style.fontFamily??"sans-serif"}`,p.fillStyle=l.style.strokeColor,p.fillText(l.text,l.x,l.y+(l.style.fontSize??16))}p.restore()}return B.toDataURL(`image/${C}`,u)},exportAnnotations:()=>[...S.annotations],importAnnotations:C=>{m({type:"SET_ANNOTATIONS",annotations:C})},exportAsSVG:()=>{const{width:C,height:u}=I,B=S.annotations.map(Qa);return`<svg xmlns="http://www.w3.org/2000/svg" width="${C}" height="${u}" viewBox="0 0 ${C} ${u}">
293
+ ${B.join(`
294
+ `)}
295
+ </svg>`},undo:()=>m({type:"UNDO"}),redo:()=>m({type:"REDO"}),setZoom:C=>{m({type:"SET_ZOOM",zoom:Math.max(M,Math.min(A,C))})},fitToScreen:()=>{const C=x.current,u=O.current;if(!C||!u)return;const B=C.clientWidth/u.naturalWidth,g=C.clientHeight/u.naturalHeight,p=Math.min(B,g,1);m({type:"SET_ZOOM",zoom:p}),m({type:"SET_PAN",panX:0,panY:0})},clear:()=>m({type:"CLEAR"})}),[S.annotations,I,M,A]);const P=n.useCallback(C=>{if(C.touches.length!==1)return;const u=C.touches[0];j({clientX:u.clientX,clientY:u.clientY,preventDefault:()=>{}})},[j]),_=n.useCallback(C=>{if(C.touches.length!==1)return;const u=C.touches[0];h({clientX:u.clientX,clientY:u.clientY})},[h]);return e.jsx("div",{ref:x,className:`nice-image-annotator ${$??""}`,style:{position:"relative",overflow:"hidden",width:"100%",height:"100%"},children:e.jsx("canvas",{ref:k,className:"nice-image-annotator__canvas",style:{cursor:S.activeTool==="select"?"default":"crosshair"},onMouseDown:j,onMouseMove:h,onMouseUp:N,onMouseLeave:N,onWheel:T,onTouchStart:P,onTouchMove:_,onTouchEnd:N,role:"img","aria-label":a})})});Nn.displayName="NiceImageAnnotator";const wn=n.forwardRef(({options:t,value:a=[],onChange:i,placeholder:o,disabled:r,size:d="md",className:$,style:y,id:M},A)=>{const H=K.useControlId(M),{t:k}=K.useNiceTranslation(),[x,O]=n.useState(!1),z=n.useMemo(()=>{const F=[t];let S=t;for(const m of a){const f=S.find(w=>w.value===m);if(f?.children)F.push(f.children),S=f.children;else break}return F},[t,a]),L=n.useCallback((F,S)=>{const m=[...a.slice(0,F),S],f=z[F]?.find(w=>w.value===S);(!f?.children||f.children.length===0)&&O(!1),i?.(m)},[a,z,i]),I=a.length>0?a.map((F,S)=>z[S]?.find(f=>f.value===F)?.label??F).join(" › "):o??k("controls.select","Select...");return e.jsxs("div",{ref:A,id:H,className:`nice-cascade-select nice-cascade-select--${d}${r?" nice-cascade-select--disabled":""} ${$||""}`,style:y,children:[e.jsxs("button",{type:"button",className:"nice-cascade-select__trigger",onClick:()=>!r&&O(F=>!F),"aria-haspopup":"listbox","aria-expanded":x,disabled:r,children:[e.jsx("span",{className:`nice-cascade-select__display${a.length===0?" nice-cascade-select__display--placeholder":""}`,children:I}),e.jsx("span",{className:"nice-cascade-select__arrow",children:"▾"})]}),x&&e.jsx("div",{className:"nice-cascade-select__dropdown",children:z.map((F,S)=>e.jsx("div",{className:"nice-cascade-select__column",role:"listbox",children:F.map(m=>e.jsxs("div",{className:`nice-cascade-select__option${a[S]===m.value?" nice-cascade-select__option--selected":""}`,role:"option","aria-selected":a[S]===m.value,onClick:()=>L(S,m.value),children:[e.jsx("span",{children:m.label}),m.children&&m.children.length>0&&e.jsx("span",{className:"nice-cascade-select__chevron",children:"›"})]},m.value))},S))})]})});wn.displayName="NiceCascadeSelect";const Cn=n.forwardRef(({columns:t,data:a,value:i,onChange:o,displayExpr:r="label",valueExpr:d="id",placeholder:$,disabled:y,size:M="md",filterable:A=!0,className:H,style:k,id:x},O)=>{const z=K.useControlId(x),{t:L}=K.useNiceTranslation(),[I,F]=n.useState(!1),[S,m]=n.useState(""),f=n.useRef(null);n.useEffect(()=>{if(!I)return;const N=T=>{f.current&&!f.current.contains(T.target)&&F(!1)};return document.addEventListener("mousedown",N),()=>document.removeEventListener("mousedown",N)},[I]);const w=n.useMemo(()=>{if(!A||!S)return a;const N=S.toLowerCase();return a.filter(T=>t.some(P=>String(T[P.field]??"").toLowerCase().includes(N)))},[a,S,t,A]),b=a.find(N=>String(N[d])===i),j=b?String(b[r]):"",h=n.useCallback(N=>{o?.(String(N[d])),F(!1),m("")},[o,d]);return e.jsx("div",{ref:O,id:z,className:`nice-mc-combo nice-mc-combo--${M}${y?" nice-mc-combo--disabled":""} ${H||""}`,style:k,children:e.jsxs("div",{ref:f,className:"nice-mc-combo__wrap",children:[e.jsx("input",{className:"nice-mc-combo__input",type:"text",value:I?S:j,placeholder:$??L("controls.select","Select..."),disabled:y,onFocus:()=>{F(!0),m("")},onChange:N=>m(N.target.value),"aria-autocomplete":"list","aria-expanded":I}),e.jsx("button",{type:"button",className:"nice-mc-combo__toggle",onClick:()=>!y&&F(N=>!N),tabIndex:-1,"aria-label":"Toggle",children:"▾"}),I&&e.jsx("div",{className:"nice-mc-combo__dropdown",children:e.jsxs("table",{className:"nice-mc-combo__table",children:[e.jsx("thead",{children:e.jsx("tr",{children:t.map(N=>e.jsx("th",{style:{width:N.width},children:N.header},N.field))})}),e.jsxs("tbody",{children:[w.map((N,T)=>e.jsx("tr",{className:`nice-mc-combo__row${String(N[d])===i?" nice-mc-combo__row--selected":""}`,onClick:()=>h(N),children:t.map(P=>e.jsx("td",{children:String(N[P.field]??"")},P.field))},T)),w.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:t.length,className:"nice-mc-combo__empty",children:L("controls.noData","No data")})})]})]})})]})})});Cn.displayName="NiceMultiColumnComboBox";const Sn=n.forwardRef(({value:t,onChange:a,type:i="text",options:o=[],submitOnBlur:r=!0,placeholder:d,disabled:$,size:y="md",className:M,style:A,id:H},k)=>{const x=K.useControlId(H),[O,z]=n.useState(!1),[L,I]=n.useState(t),F=n.useRef(null);n.useEffect(()=>{I(t)},[t]),n.useEffect(()=>{O&&F.current&&F.current.focus()},[O]);const S=n.useCallback(()=>{$||(I(t),z(!0))},[$,t]),m=n.useCallback(()=>{z(!1),L!==t&&a(L)},[L,t,a]),f=n.useCallback(()=>{z(!1),I(t)},[t]),w=n.useCallback(j=>{j.key==="Enter"&&i!=="textarea"&&m(),j.key==="Escape"&&f()},[m,f,i]),b=i==="select"&&o.find(j=>j.value===t)?.label||t;return e.jsx("div",{ref:k,id:x,className:`nice-inplace nice-inplace--${y}${$?" nice-inplace--disabled":""} ${M||""}`,style:A,children:O?e.jsxs("span",{className:"nice-inplace__editor",children:[i==="textarea"?e.jsx("textarea",{ref:F,className:"nice-inplace__input",value:L,onChange:j=>I(j.target.value),onBlur:r?m:void 0,onKeyDown:j=>j.key==="Escape"&&f(),rows:3}):i==="select"?e.jsx("select",{ref:F,className:"nice-inplace__input",value:L,onChange:j=>{I(j.target.value)},onBlur:r?m:void 0,onKeyDown:w,children:o.map(j=>e.jsx("option",{value:j.value,children:j.label},j.value))}):e.jsx("input",{ref:F,className:"nice-inplace__input",type:i==="number"?"number":i==="date"?"date":"text",value:L,onChange:j=>I(j.target.value),onBlur:r?m:void 0,onKeyDown:w}),e.jsx("button",{type:"button",className:"nice-inplace__save",onClick:m,"aria-label":"Save",children:"✓"}),e.jsx("button",{type:"button",className:"nice-inplace__cancel",onClick:f,"aria-label":"Cancel",children:"✕"})]}):e.jsxs("span",{className:"nice-inplace__display",onClick:S,role:"button",tabIndex:0,onKeyDown:j=>j.key==="Enter"&&S(),children:[b||e.jsx("span",{className:"nice-inplace__placeholder",children:d||"Click to edit"}),!$&&e.jsx("span",{className:"nice-inplace__icon",children:"✎"})]})})});Sn.displayName="NiceInPlaceEditor";function ti(t){let a=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return a=a.replace(/```(\w*)\n([\s\S]*?)```/g,(i,o,r)=>`<pre><code class="language-${o}">${r.trim()}</code></pre>`),a=a.replace(/^(\|.+\|)\n(\|[-| :]+\|)\n((?:\|.+\|\n?)+)/gm,(i,o,r,d)=>{const $=o.split("|").filter(M=>M.trim()).map(M=>`<th>${M.trim()}</th>`).join(""),y=d.trim().split(`
296
+ `).map(M=>`<tr>${M.split("|").filter(H=>H.trim()).map(H=>`<td>${H.trim()}</td>`).join("")}</tr>`).join("");return`<table><thead><tr>${$}</tr></thead><tbody>${y}</tbody></table>`}),a=a.replace(/^#### (.+)$/gm,"<h4>$1</h4>"),a=a.replace(/^### (.+)$/gm,"<h3>$1</h3>"),a=a.replace(/^## (.+)$/gm,"<h2>$1</h2>"),a=a.replace(/^# (.+)$/gm,"<h1>$1</h1>"),a=a.replace(/^&gt; (.+)$/gm,"<blockquote>$1</blockquote>"),a=a.replace(/^---$/gm,"<hr/>"),a=a.replace(/^- \[x\] (.+)$/gm,'<li class="task done">☑ $1</li>'),a=a.replace(/^- \[ \] (.+)$/gm,'<li class="task">☐ $1</li>'),a=a.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),a=a.replace(/\*(.+?)\*/g,"<em>$1</em>"),a=a.replace(/~~(.+?)~~/g,"<del>$1</del>"),a=a.replace(/`(.+?)`/g,"<code>$1</code>"),a=a.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1" style="max-width:100%"/>'),a=a.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2">$1</a>'),a=a.replace(/^\- (.+)$/gm,"<li>$1</li>"),a=a.replace(/^\d+\. (.+)$/gm,"<li>$1</li>"),a=a.replace(/\n/g,"<br/>"),a}const ni=[{key:"bold",label:"B",md:"**",tip:"Bold",shortcut:"Ctrl+B",group:"format"},{key:"italic",label:"I",md:"*",tip:"Italic",shortcut:"Ctrl+I",group:"format"},{key:"strike",label:"S̶",md:"~~",tip:"Strikethrough",group:"format"},{key:"code",label:"< >",md:"`",tip:"Inline code",group:"format"},{key:"h1",label:"H1",md:"# ",tip:"Heading 1",group:"heading"},{key:"h2",label:"H2",md:"## ",tip:"Heading 2",group:"heading"},{key:"h3",label:"H3",md:"### ",tip:"Heading 3",group:"heading"},{key:"ul",label:"•",md:"- ",tip:"Unordered list",group:"list"},{key:"ol",label:"1.",md:"1. ",tip:"Ordered list",group:"list"},{key:"task",label:"☑",md:"- [ ] ",tip:"Task list",group:"list"},{key:"quote",label:"❝",md:"> ",tip:"Blockquote",group:"block"},{key:"hr",label:"—",md:`---
297
+ `,tip:"Horizontal rule",group:"block"},{key:"link",label:"🔗",md:"[](url)",tip:"Link",shortcut:"Ctrl+K",group:"insert"},{key:"image",label:"🖼",md:"![](url)",tip:"Image",group:"insert"},{key:"table",label:"⊞",md:`| H1 | H2 | H3 |
298
+ | --- | --- | --- |
299
+ | c1 | c2 | c3 |
300
+ `,tip:"Table",group:"insert"},{key:"codeblock",label:"```",md:"```\n",tip:"Code block",group:"insert"}],ai=["format","heading","list","block","insert"],$n=n.forwardRef(({value:t="",onChange:a,preview:i="side",placeholder:o,disabled:r,readOnly:d,size:$="md",editorSize:y="standard",toolbar:M=!0,minHeight:A=200,showWordCount:H=!1,showLineNumbers:k=!1,onExportHtml:x,onImageUpload:O,className:z,style:L,id:I},F)=>{const S=K.useControlId(I),[m,f]=n.useState("edit"),[w,b]=n.useState(!1),j=n.useRef(null),h=n.useMemo(()=>ti(t),[t]),N=n.useMemo(()=>{const g=t.trim()?t.trim().split(/\s+/).length:0,p=t.length,s=t.split(`
301
+ `).length;return{words:g,chars:p,lines:s}},[t]),T=n.useCallback(g=>{const p=j.current;if(!p)return;const s=p.selectionStart,l=p.selectionEnd,c=t.slice(s,l);let E,D;g==="[](url)"?(E=t.slice(0,s)+`[${c||"text"}](url)`+t.slice(l),D=s+1+(c||"text").length+2):g==="![](url)"?(E=t.slice(0,s)+`![${c||"alt"}](url)`+t.slice(l),D=s+2+(c||"alt").length+2):g.endsWith(`
302
+ `)||g.endsWith(" ")?(E=t.slice(0,s)+g+c+t.slice(l),D=s+g.length+c.length):(E=t.slice(0,s)+g+c+g+t.slice(l),D=s+g.length+c.length+g.length),a?.(E),requestAnimationFrame(()=>{p.focus(),p.setSelectionRange(D,D)})},[t,a]),P=n.useCallback(g=>{if((g.ctrlKey||g.metaKey)&&(g.key==="b"?(g.preventDefault(),T("**")):g.key==="i"?(g.preventDefault(),T("*")):g.key==="k"&&(g.preventDefault(),T("[](url)"))),g.key==="Tab"){g.preventDefault();const p=g.currentTarget,s=p.selectionStart,l=p.selectionEnd,c=" ";if(g.shiftKey){const R=t.slice(0,s).lastIndexOf(`
303
+ `)+1;if(t.slice(R,R+c.length)===c){const U=t.slice(0,R)+t.slice(R+c.length);a?.(U),requestAnimationFrame(()=>{p.selectionStart=p.selectionEnd=s-c.length})}}else{const E=t.slice(0,s)+c+t.slice(l);a?.(E),requestAnimationFrame(()=>{p.selectionStart=p.selectionEnd=s+c.length})}}},[t,a,T]),_=n.useCallback(async g=>{if(!O)return;const p=Array.from(g.dataTransfer.files).filter(s=>s.type.startsWith("image/"));if(p.length!==0){g.preventDefault();for(const s of p){const l=await O(s),c=j.current;if(!c)continue;const E=c.selectionStart,D=`![${s.name}](${l})
304
+ `,R=t.slice(0,E)+D+t.slice(E);a?.(R)}}},[t,a,O]),C=i!=="tab"||m==="edit",u=i==="side"||i==="tab"&&m==="preview"||i===!0,B=`nice-md-editor nice-md-editor--${$} nice-editor--${y} nice-md-editor--preview-${i}${w?" nice-md-editor--fullscreen":""} ${z||""}`;return e.jsxs("div",{ref:F,id:S,className:B,style:L,children:[M&&e.jsxs("div",{className:"nice-md-editor__toolbar",children:[ai.map((g,p)=>e.jsxs(n.Fragment,{children:[p>0&&e.jsx("span",{className:"nice-md-editor__sep"}),ni.filter(s=>s.group===g).map(s=>e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:s.shortcut?`${s.tip} (${s.shortcut})`:s.tip,disabled:r||d,onClick:()=>T(s.md),children:s.label},s.key))]},g)),e.jsx("span",{className:"nice-md-editor__sep"}),e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:"Fullscreen",onClick:()=>b(!w),children:w?"⊙":"⛶"}),x&&e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:"Export HTML",onClick:()=>x(h),children:"↗"}),i==="tab"&&e.jsxs("span",{className:"nice-md-editor__tabs",children:[e.jsx("button",{type:"button",className:`nice-md-editor__tab${m==="edit"?" nice-md-editor__tab--active":""}`,onClick:()=>f("edit"),children:"Edit"}),e.jsx("button",{type:"button",className:`nice-md-editor__tab${m==="preview"?" nice-md-editor__tab--active":""}`,onClick:()=>f("preview"),children:"Preview"})]})]}),e.jsxs("div",{className:"nice-md-editor__body",style:{minHeight:A},children:[C&&e.jsxs("div",{className:"nice-md-editor__editor-wrap",children:[k&&e.jsx("div",{className:"nice-md-editor__line-numbers",children:Array.from({length:N.lines},(g,p)=>e.jsx("div",{className:"nice-md-editor__line-no",children:p+1},p))}),e.jsx("textarea",{ref:j,className:"nice-md-editor__textarea",value:t,onChange:g=>a?.(g.target.value),onKeyDown:P,onDrop:_,placeholder:o,disabled:r,readOnly:d,style:{minHeight:A}})]}),u&&e.jsx("div",{className:"nice-md-editor__preview",dangerouslySetInnerHTML:{__html:K.sanitizeHtml(h)},style:{minHeight:A}})]}),H&&e.jsxs("div",{className:"nice-md-editor__statusbar",children:[e.jsxs("span",{children:[N.words," words"]}),e.jsxs("span",{children:[N.chars," chars"]}),e.jsxs("span",{children:[N.lines," lines"]})]})]})});$n.displayName="NiceMarkdownEditor";const Dt={rotation:0,flipH:!1,flipV:!1,brightness:100,contrast:100,saturate:100,blur:0,crop:null,annotations:[]},ii=["crop","rotate","flip","brightness","contrast","saturate","blur","annotate"],Mn=n.forwardRef(({src:t,size:a="md",editorSize:i="standard",tools:o=ii,showToolbar:r=!0,showZoom:d=!0,maxUndo:$=30,onSave:y,onCancel:M,onChange:A,width:H="100%",height:k=500,className:x,style:O,id:z,...L},I)=>{const F=K.useControlId(z),{t:S}=K.useNiceTranslation(),m=n.useRef(null),f=n.useRef(null),[w,b]=n.useState({...Dt}),[j,h]=n.useState(null),[N,T]=n.useState(!1),[P,_]=n.useState(1),[C,u]=n.useState("rect"),[B,g]=n.useState("#ff0000"),[p,s]=n.useState({w:0,h:0}),[l,c]=n.useState([]),[E,D]=n.useState([]),[R,U]=n.useState(null),[q,Q]=n.useState(null),[W,ae]=n.useState(null),oe=n.useCallback(J=>{c(V=>[...V.slice(-($-1)),J]),D([])},[$]),me=n.useCallback(J=>{b(V=>{oe(V);const Y={...V,...J};return A?.(Y),Y})},[A,oe]),ye=n.useCallback(()=>{if(l.length===0)return;const J=l[l.length-1];c(V=>V.slice(0,-1)),D(V=>[...V,w]),b(J),A?.(J)},[l,w,A]),xe=n.useCallback(()=>{if(E.length===0)return;const J=E[E.length-1];D(V=>V.slice(0,-1)),c(V=>[...V,w]),b(J),A?.(J)},[E,w,A]);n.useEffect(()=>{const J=new Image;J.crossOrigin="anonymous",J.onload=()=>{f.current=J,s({w:J.width,h:J.height}),T(!0)},J.src=t},[t]),n.useEffect(()=>{if(!N||!m.current||!f.current)return;const J=m.current,V=J.getContext("2d");if(!V)return;const Y=f.current,te=w.rotation%180!==0,he=te?Y.height:Y.width,se=te?Y.width:Y.height;J.width=he,J.height=se,V.clearRect(0,0,he,se),V.save(),V.filter=`brightness(${w.brightness}%) contrast(${w.contrast}%) saturate(${w.saturate}%) blur(${w.blur}px)`,V.translate(he/2,se/2),V.rotate(w.rotation*Math.PI/180),V.scale(w.flipH?-1:1,w.flipV?-1:1),V.drawImage(Y,-Y.width/2,-Y.height/2),V.restore(),w.annotations.forEach(ne=>{switch(V.save(),V.strokeStyle=ne.color??"red",V.fillStyle=ne.color??"red",V.lineWidth=ne.strokeWidth??2,V.font=`${ne.fontSize??16}px sans-serif`,ne.type){case"text":V.fillText(ne.text??"",ne.x,ne.y);break;case"rect":V.strokeRect(ne.x,ne.y,ne.width??100,ne.height??50);break;case"circle":{const Z=(ne.width??50)/2,de=(ne.height??50)/2;V.beginPath(),V.ellipse(ne.x+Z,ne.y+de,Z,de,0,0,Math.PI*2),V.stroke();break}case"line":V.beginPath(),V.moveTo(ne.x,ne.y),V.lineTo(ne.x+(ne.width??100),ne.y+(ne.height??0)),V.stroke();break;case"arrow":{const Z=ne.x+(ne.width??100),de=ne.y+(ne.height??0);V.beginPath(),V.moveTo(ne.x,ne.y),V.lineTo(Z,de),V.stroke();const pe=Math.atan2(de-ne.y,Z-ne.x),be=10;V.beginPath(),V.moveTo(Z,de),V.lineTo(Z-be*Math.cos(pe-.4),de-be*Math.sin(pe-.4)),V.lineTo(Z-be*Math.cos(pe+.4),de-be*Math.sin(pe+.4)),V.closePath(),V.fill();break}}V.restore()}),q&&(V.save(),V.fillStyle="rgba(0,0,0,0.5)",V.fillRect(0,0,he,se),V.clearRect(q.x,q.y,q.w,q.h),V.strokeStyle="#fff",V.lineWidth=2,V.setLineDash([5,5]),V.strokeRect(q.x,q.y,q.w,q.h),V.restore())},[N,w,q]);const ee=n.useCallback(J=>{if(!m.current)return;const V=m.current.getBoundingClientRect(),Y=m.current.width/V.width,te=m.current.height/V.height,he=(J.clientX-V.left)*Y,se=(J.clientY-V.top)*te;j==="crop"?U({startX:he,startY:se}):j==="annotate"&&ae({startX:he,startY:se})},[j]),ge=n.useCallback(J=>{if(!m.current)return;const V=m.current.getBoundingClientRect(),Y=m.current.width/V.width,te=m.current.height/V.height,he=(J.clientX-V.left)*Y,se=(J.clientY-V.top)*te;R&&Q({x:Math.min(R.startX,he),y:Math.min(R.startY,se),w:Math.abs(he-R.startX),h:Math.abs(se-R.startY)})},[R]),ce=n.useCallback(J=>{if(R&&q&&q.w>5&&q.h>5&&me({crop:{x:q.x,y:q.y,width:q.w,height:q.h}}),U(null),W&&m.current){const V=m.current.getBoundingClientRect(),Y=m.current.width/V.width,te=m.current.height/V.height,he=(J.clientX-V.left)*Y,se=(J.clientY-V.top)*te,ne=he-W.startX,Z=se-W.startY;if(Math.abs(ne)>3||Math.abs(Z)>3||C==="text"){const de={type:C,x:W.startX,y:W.startY,width:Math.abs(ne)||100,height:Math.abs(Z)||50,color:B,strokeWidth:2,text:C==="text"?prompt(S("imageEditor.annotationText","Text:"))??"":void 0};me({annotations:[...w.annotations,de]})}ae(null)}},[R,q,W,C,B,w.annotations,me,S]),ue=n.useCallback(()=>{if(!w.crop||!m.current)return;const J=m.current,V=J.getContext("2d");if(!V)return;const{x:Y,y:te,width:he,height:se}=w.crop,ne=V.getImageData(Y,te,he,se);J.width=he,J.height=se,V.putImageData(ne,0,0),Q(null),h(null)},[w.crop]),re=n.useCallback(()=>{if(!m.current)return;const J=m.current.toDataURL("image/png");y?.(J,w)},[y,w]),le=n.useCallback(()=>{b({...Dt}),Q(null),h(null)},[]);return n.useMemo(()=>`brightness(${w.brightness}%) contrast(${w.contrast}%) saturate(${w.saturate}%) blur(${w.blur}px)`,[w.brightness,w.contrast,w.saturate,w.blur]),e.jsxs("div",{ref:I,id:F,className:`nice-image-editor nice-image-editor--${a} nice-editor--${i} ${x??""}`,style:{...O,width:H,height:k},role:"application","aria-label":S("imageEditor.label","Image Editor"),...L,children:[r&&e.jsxs("div",{className:"nice-image-editor__toolbar",role:"toolbar",children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:ye,disabled:l.length===0,title:S("imageEditor.undo","Undo"),children:"↶"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:xe,disabled:E.length===0,title:S("imageEditor.redo","Redo"),children:"↷"}),e.jsx("span",{className:"nice-image-editor__sep"}),o.includes("rotate")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>me({rotation:(w.rotation-90+360)%360}),title:S("imageEditor.rotateLeft","Rotate left"),children:"↺"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>me({rotation:(w.rotation+90)%360}),title:S("imageEditor.rotateRight","Rotate right"),children:"↻"})]}),o.includes("flip")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>me({flipH:!w.flipH}),title:S("imageEditor.flipH","Flip horizontal"),children:"⇔"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>me({flipV:!w.flipV}),title:S("imageEditor.flipV","Flip vertical"),children:"⇕"})]}),o.includes("crop")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:`nice-image-editor__btn ${j==="crop"?"nice-image-editor__btn--active":""}`,onClick:()=>h(j==="crop"?null:"crop"),title:S("imageEditor.crop","Crop"),children:"⊡"}),j==="crop"&&w.crop&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:ue,title:S("imageEditor.applyCrop","Apply crop"),children:"✓"})]}),o.includes("brightness")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[S("imageEditor.brightness","☀"),e.jsx("input",{type:"range",min:0,max:200,value:w.brightness,onChange:J=>me({brightness:Number(J.target.value)}),className:"nice-image-editor__slider",title:S("imageEditor.brightness","Brightness")})]}),o.includes("contrast")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[S("imageEditor.contrast","◑"),e.jsx("input",{type:"range",min:0,max:200,value:w.contrast,onChange:J=>me({contrast:Number(J.target.value)}),className:"nice-image-editor__slider",title:S("imageEditor.contrast","Contrast")})]}),o.includes("saturate")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[S("imageEditor.saturate","🎨"),e.jsx("input",{type:"range",min:0,max:200,value:w.saturate,onChange:J=>me({saturate:Number(J.target.value)}),className:"nice-image-editor__slider",title:S("imageEditor.saturate","Saturation")})]}),o.includes("blur")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[S("imageEditor.blur","⊘"),e.jsx("input",{type:"range",min:0,max:20,step:.5,value:w.blur,onChange:J=>me({blur:Number(J.target.value)}),className:"nice-image-editor__slider",title:S("imageEditor.blur","Blur")})]}),o.includes("annotate")&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-image-editor__sep"}),e.jsx("button",{type:"button",className:`nice-image-editor__btn ${j==="annotate"?"nice-image-editor__btn--active":""}`,onClick:()=>h(j==="annotate"?null:"annotate"),title:S("imageEditor.annotate","Annotate"),children:"✎"}),j==="annotate"&&e.jsxs(e.Fragment,{children:[e.jsxs("select",{className:"nice-image-editor__select",value:C,onChange:J=>u(J.target.value),children:[e.jsx("option",{value:"rect",children:"□ Rect"}),e.jsx("option",{value:"circle",children:"○ Circle"}),e.jsx("option",{value:"line",children:"╱ Line"}),e.jsx("option",{value:"arrow",children:"→ Arrow"}),e.jsx("option",{value:"text",children:"T Text"})]}),e.jsx("input",{type:"color",value:B,onChange:J=>g(J.target.value),className:"nice-image-editor__color",title:S("imageEditor.color","Color")}),w.annotations.length>0&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>me({annotations:w.annotations.slice(0,-1)}),title:S("imageEditor.removeLastAnnotation","Remove last"),children:"⌫"})]})]}),e.jsx("span",{className:"nice-image-editor__sep"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:le,title:S("imageEditor.reset","Reset"),children:"⟲"}),y&&e.jsx("button",{type:"button",className:"nice-image-editor__btn nice-image-editor__btn--save",onClick:re,children:S("imageEditor.save","Save")}),M&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:M,children:S("imageEditor.cancel","Cancel")})]}),e.jsx("div",{className:"nice-image-editor__canvas-wrap",children:e.jsx("canvas",{ref:m,className:"nice-image-editor__canvas",onMouseDown:ee,onMouseMove:ge,onMouseUp:ce,style:{cursor:j==="crop"||j==="annotate"?"crosshair":"default",transform:`scale(${P})`,transformOrigin:"center center"}})}),d&&e.jsxs("div",{className:"nice-image-editor__footer",children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>_(J=>Math.max(.1,J-.1)),title:"Zoom out",children:"−"}),e.jsxs("span",{style:{fontSize:"0.85em",minWidth:40,textAlign:"center"},children:[Math.round(P*100),"%"]}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>_(J=>Math.min(5,J+.1)),title:"Zoom in",children:"+"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>_(1),title:"Reset zoom",children:"1:1"}),e.jsx("span",{style:{flex:1}}),e.jsxs("span",{style:{fontSize:"0.8em",color:"var(--nice-text-secondary, #666)"},children:[p.w,"×",p.h,"px · ",w.rotation,"°"]})]})]})});Mn.displayName="NiceImageEditor";const Tn=n.forwardRef(({value:t,onChange:a,penColor:i="#000",penWidth:o=2,backgroundColor:r="#fff",width:d=400,height:$=200,size:y="md",disabled:M=!1,readOnly:A=!1,showClear:H=!0,showUndo:k=!0,label:x,exportFormat:O="image/png",className:z,style:L,id:I,...F},S)=>{const m=K.useControlId(I),{t:f}=K.useNiceTranslation(),w=n.useRef(null),[b,j]=n.useState(!1),h=n.useRef([]),N=n.useRef([]),[T,P]=n.useState(!0),_=n.useCallback(()=>{const l=w.current;if(!l)return;const c=l.getContext("2d");if(c){c.fillStyle=r,c.fillRect(0,0,l.width,l.height),c.strokeStyle=i,c.lineWidth=o,c.lineCap="round",c.lineJoin="round";for(const E of h.current)if(!(E.length<2)){c.beginPath(),c.moveTo(E[0].x,E[0].y);for(let D=1;D<E.length;D++)c.lineTo(E[D].x,E[D].y);c.stroke()}}},[r,i,o]);n.useEffect(()=>{if(t&&w.current){const l=new Image;l.onload=()=>{const c=w.current?.getContext("2d");!c||!w.current||(c.fillStyle=r,c.fillRect(0,0,w.current.width,w.current.height),c.drawImage(l,0,0),P(!1))},l.src=t}else t||(h.current=[],P(!0),_())},[t,r,_]),n.useEffect(()=>{const l=w.current;l&&(l.width=d,l.height=$,_())},[d,$,_]);const C=n.useCallback(l=>{const c=w.current,E=c.getBoundingClientRect(),D=c.width/E.width,R=c.height/E.height;if("touches"in l){const U=l.touches[0];return{x:(U.clientX-E.left)*D,y:(U.clientY-E.top)*R}}return{x:(l.clientX-E.left)*D,y:(l.clientY-E.top)*R}},[]),u=n.useCallback(l=>{if(M||A)return;l.preventDefault();const c=C(l);N.current=[c],j(!0)},[M,A,C]),B=n.useCallback(l=>{if(!b)return;l.preventDefault();const c=C(l);N.current.push(c);const E=w.current,D=E?.getContext("2d");if(!D||!E)return;const R=N.current;R.length>=2&&(D.strokeStyle=i,D.lineWidth=o,D.lineCap="round",D.beginPath(),D.moveTo(R[R.length-2].x,R[R.length-2].y),D.lineTo(c.x,c.y),D.stroke())},[b,C,i,o]),g=n.useCallback(()=>{if(b&&(j(!1),N.current.length>0&&(h.current.push([...N.current]),N.current=[],P(!1),w.current))){const l=w.current.toDataURL(O);a?.(l)}},[b,O,a]),p=n.useCallback(()=>{h.current=[],N.current=[],P(!0),_(),a?.(null)},[_,a]),s=n.useCallback(()=>{if(h.current.length!==0&&(h.current.pop(),P(h.current.length===0),_(),w.current)){const l=h.current.length>0?w.current.toDataURL(O):null;a?.(l)}},[_,O,a]);return e.jsxs("div",{ref:S,id:m,className:`nice-signature nice-signature--${y} ${M?"nice-signature--disabled":""} ${A?"nice-signature--readonly":""} ${z??""}`,style:L,...F,children:[x&&e.jsx("label",{className:"nice-signature__label",children:x}),e.jsx("div",{className:"nice-signature__canvas-wrap",style:{width:d,height:$},children:e.jsx("canvas",{ref:w,className:"nice-signature__canvas",onMouseDown:u,onMouseMove:B,onMouseUp:g,onMouseLeave:g,onTouchStart:u,onTouchMove:B,onTouchEnd:g,style:{touchAction:"none",cursor:M||A?"default":"crosshair"},"aria-label":x??f("signature.label","Signature pad"),role:"img"})}),(H||k)&&!A&&!M&&e.jsxs("div",{className:"nice-signature__actions",children:[k&&e.jsx("button",{type:"button",className:"nice-signature__btn",onClick:s,disabled:T,children:f("signature.undo","Undo")}),H&&e.jsx("button",{type:"button",className:"nice-signature__btn",onClick:p,disabled:T,children:f("signature.clear","Clear")})]})]})});Tn.displayName="NiceSignaturePad";const En=n.createContext(null),Rn=()=>{const t=n.useContext(En);if(!t)throw new Error("useUploadContext must be used within NiceFileUpload");return t},si=()=>`file-${Date.now()}-${Math.random().toString(36).slice(2,11)}`,Ge=t=>{if(t===0)return"0 B";const a=1024,i=["B","KB","MB","GB","TB"],o=Math.floor(Math.log(t)/Math.log(a));return parseFloat((t/Math.pow(a,o)).toFixed(2))+" "+i[o]},An=t=>t.startsWith("image/")?"🖼️":t.startsWith("video/")?"🎬":t.startsWith("audio/")?"🎵":t.includes("pdf")?"📄":t.includes("word")||t.includes("document")?"📝":t.includes("excel")||t.includes("spreadsheet")?"📊":t.includes("powerpoint")||t.includes("presentation")?"📽️":t.includes("zip")||t.includes("rar")||t.includes("7z")?"📦":t.includes("text/")||t.includes("json")||t.includes("xml")?"📃":"📁",In=t=>t.startsWith("image/"),Dn=t=>t.startsWith("video/"),oi=t=>t.startsWith("audio/"),ri=t=>{if(In(t.type)||Dn(t.type)||oi(t.type))return URL.createObjectURL(t)},ci=(t,a)=>async i=>{const o=new FormData;i.chunk?(o.append("chunk",i.chunk),o.append("chunkIndex",String(i.chunkIndex)),o.append("totalChunks",String(i.totalChunks)),o.append("fileName",i.file.name),o.append("fileId",i.fileId||"")):o.append("file",i.file);const r=new XMLHttpRequest;return new Promise((d,$)=>{r.upload.addEventListener("progress",y=>{y.lengthComputable&&i.onProgress&&i.onProgress(y.loaded/y.total*100)}),r.addEventListener("load",()=>{if(r.status>=200&&r.status<300)try{const y=JSON.parse(r.responseText);d({success:!0,url:y.url,fileId:y.fileId||y.id,metadata:y})}catch{d({success:!0,url:r.responseText})}else d({success:!1,error:`Upload failed: ${r.status} ${r.statusText}`})}),r.addEventListener("error",()=>{d({success:!1,error:"Network error"})}),r.addEventListener("abort",()=>{d({success:!1,error:"Upload cancelled"})}),i.signal&&i.signal.addEventListener("abort",()=>r.abort()),r.open("POST",t),a&&Object.entries(a).forEach(([y,M])=>{r.setRequestHeader(y,M)}),r.send(o)})},ct=({progress:t,status:a})=>{const i=()=>{switch(a){case"success":return"#22c55e";case"error":return"#ef4444";case"cancelled":return"#6b7280";default:return"#3b82f6"}};return e.jsxs("div",{className:"nice-upload-progress",children:[e.jsx("div",{className:"nice-upload-progress-bar",style:{width:`${t}%`,backgroundColor:i()}}),e.jsxs("span",{className:"nice-upload-progress-text",children:[Math.round(t),"%"]})]})},Lt=({file:t,size:a="md",customRender:i})=>{if(i)return e.jsx(e.Fragment,{children:i(t)});const r={xxs:24,xs:32,sm:48,md:80,lg:120,xl:160,xxl:200}[a]??80;return t.previewUrl&&In(t.type)?e.jsx("div",{className:"nice-upload-preview",style:{width:r,height:r},children:e.jsx("img",{src:t.previewUrl,alt:t.name,style:{width:"100%",height:"100%",objectFit:"cover",borderRadius:4}})}):t.previewUrl&&Dn(t.type)?e.jsxs("div",{className:"nice-upload-preview",style:{width:r,height:r},children:[e.jsx("video",{src:t.previewUrl,style:{width:"100%",height:"100%",objectFit:"cover",borderRadius:4},muted:!0}),e.jsx("span",{className:"nice-upload-preview-overlay",children:"▶️"})]}):e.jsx("div",{className:"nice-upload-preview nice-upload-preview-icon",style:{width:r,height:r,fontSize:r*.5},children:An(t.type)})},li=({file:t,actions:a,showPreview:i=!0,previewSize:o="md",customRenderPreview:r,customRender:d,mode:$="list"})=>{const{disabled:y,readOnly:M}=Rn();if(d)return e.jsx(e.Fragment,{children:d(t,a)});const A=()=>{switch(t.status){case"pending":return e.jsx("span",{className:"nice-upload-badge pending",children:"Oczekuje"});case"uploading":return e.jsx("span",{className:"nice-upload-badge uploading",children:"Wysyłanie..."});case"success":return e.jsx("span",{className:"nice-upload-badge success",children:"✓ Przesłano"});case"error":return e.jsx("span",{className:"nice-upload-badge error",children:"✗ Błąd"});case"cancelled":return e.jsx("span",{className:"nice-upload-badge cancelled",children:"Anulowano"})}};return $==="compact"?e.jsxs("div",{className:`nice-upload-item compact ${t.status}`,children:[e.jsx("span",{className:"nice-upload-item-icon",children:An(t.type)}),e.jsx("span",{className:"nice-upload-item-name",title:t.name,children:t.name}),e.jsx("span",{className:"nice-upload-item-size",children:Ge(t.size)}),t.status==="uploading"&&e.jsx(ct,{progress:t.progress,status:t.status}),A(),!M&&!y&&t.status!=="uploading"&&e.jsx("button",{className:"nice-upload-item-remove",onClick:a.remove,title:"Usuń",children:"✕"})]}):$==="grid"?e.jsxs("div",{className:`nice-upload-item grid ${t.status}`,children:[i&&e.jsx(Lt,{file:t,size:"lg",customRender:r}),e.jsxs("div",{className:"nice-upload-item-info",children:[e.jsx("span",{className:"nice-upload-item-name",title:t.name,children:t.name}),e.jsx("span",{className:"nice-upload-item-size",children:Ge(t.size)})]}),t.status==="uploading"&&e.jsx(ct,{progress:t.progress,status:t.status}),A(),t.error&&e.jsx("span",{className:"nice-upload-item-error",children:t.error}),!M&&!y&&e.jsxs("div",{className:"nice-upload-item-actions",children:[t.status==="pending"&&e.jsx("button",{onClick:a.upload,className:"nice-upload-btn upload",children:"Wyślij"}),t.status==="uploading"&&e.jsx("button",{onClick:a.cancel,className:"nice-upload-btn cancel",children:"Anuluj"}),t.status==="error"&&e.jsx("button",{onClick:a.retry,className:"nice-upload-btn retry",children:"Ponów"}),t.status!=="uploading"&&e.jsx("button",{onClick:a.remove,className:"nice-upload-btn remove",children:"Usuń"})]})]}):e.jsxs("div",{className:`nice-upload-item list ${t.status}`,children:[i&&e.jsx(Lt,{file:t,size:o,customRender:r}),e.jsxs("div",{className:"nice-upload-item-content",children:[e.jsxs("div",{className:"nice-upload-item-header",children:[e.jsx("span",{className:"nice-upload-item-name",title:t.name,children:t.name}),A()]}),e.jsx("span",{className:"nice-upload-item-size",children:Ge(t.size)}),t.status==="uploading"&&e.jsx(ct,{progress:t.progress,status:t.status}),t.error&&e.jsx("span",{className:"nice-upload-item-error",children:t.error}),t.uploadedUrl&&e.jsx("a",{href:t.uploadedUrl,target:"_blank",rel:"noopener noreferrer",className:"nice-upload-item-link",children:"Otwórz plik"})]}),!M&&!y&&e.jsxs("div",{className:"nice-upload-item-actions",children:[t.status==="pending"&&e.jsx("button",{onClick:a.upload,className:"nice-upload-btn upload",title:"Wyślij",children:"⬆️"}),t.status==="uploading"&&e.jsx("button",{onClick:a.cancel,className:"nice-upload-btn cancel",title:"Anuluj",children:"⏹️"}),t.status==="error"&&e.jsx("button",{onClick:a.retry,className:"nice-upload-btn retry",title:"Ponów",children:"🔄"}),t.status!=="uploading"&&e.jsx("button",{onClick:a.remove,className:"nice-upload-btn remove",title:"Usuń",children:"🗑️"})]})]})},di=({files:t,mode:a="list",showPreview:i=!0,previewSize:o,renderPreview:r,renderFileItem:d})=>{const $=Rn();return t.length===0?null:e.jsx("div",{className:`nice-upload-list ${a}`,children:t.map(y=>{const M={upload:()=>$.uploadFile(y.id),cancel:()=>$.cancelFile(y.id),retry:()=>$.retryFile(y.id),remove:()=>$.removeFile(y.id)};return e.jsx(li,{file:y,actions:M,mode:a,showPreview:i,previewSize:o,customRenderPreview:r,customRender:d},y.id)})})},ui=({onFiles:t,accept:a,multiple:i=!0,disabled:o,readOnly:r,dropzoneText:d="Przeciągnij pliki tutaj lub",browseText:$="wybierz z dysku",dragActiveText:y="Upuść pliki tutaj",className:M,inputRef:A})=>{const[H,k]=n.useState(!1),x=n.useRef(0),O=n.useCallback(m=>{m.preventDefault(),m.stopPropagation(),x.current++,m.dataTransfer.items&&m.dataTransfer.items.length>0&&k(!0)},[]),z=n.useCallback(m=>{m.preventDefault(),m.stopPropagation(),x.current--,x.current===0&&k(!1)},[]),L=n.useCallback(m=>{m.preventDefault(),m.stopPropagation()},[]),I=n.useCallback(m=>{if(m.preventDefault(),m.stopPropagation(),k(!1),x.current=0,o||r)return;const f=Array.from(m.dataTransfer.files);f.length>0&&t(i?f:[f[0]])},[o,r,i,t]),F=n.useCallback(()=>{!o&&!r&&A.current&&A.current.click()},[o,r,A]),S=n.useCallback(m=>{const f=m.target.files?Array.from(m.target.files):[];f.length>0&&t(f),A.current&&(A.current.value="")},[t,A]);return e.jsxs("div",{className:`nice-upload-dropzone ${H?"drag-active":""} ${o?"disabled":""} ${r?"readonly":""} ${M||""}`,onDragEnter:O,onDragLeave:z,onDragOver:L,onDrop:I,onClick:F,children:[e.jsx("input",{ref:A,type:"file",accept:a,multiple:i,onChange:S,style:{display:"none"},disabled:o||r}),e.jsxs("div",{className:"nice-upload-dropzone-content",children:[e.jsx("span",{className:"nice-upload-dropzone-icon",children:"📁"}),H?e.jsx("span",{className:"nice-upload-dropzone-text active",children:y}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-upload-dropzone-text",children:d}),e.jsx("button",{type:"button",className:"nice-upload-browse-btn",disabled:o||r,children:$})]})]})]})},Ln=n.forwardRef((t,a)=>{const{accept:i,multiple:o=!0,maxFileSize:r,maxFiles:d,minFileSize:$,chunkSize:y=5*1024*1024,chunkThreshold:M=10*1024*1024,autoUpload:A=!1,uploadHandler:H,uploadUrl:k,uploadHeaders:x,onFilesAdded:O,onUploadComplete:z,onUploadError:L,onProgress:I,onFileRemoved:F,onChange:S,renderPreview:m,renderFileItem:f,showPreview:w=!0,showFileList:b=!0,listMode:j="list",previewSize:h="md",dropzoneText:N,browseText:T,dragActiveText:P,disabled:_,readOnly:C,dropzoneClassName:u,maxRetries:B=3,concurrentUploads:g=3,validateFile:p,keepFilesAfterUpload:s=!0,initialFiles:l=[],className:c,style:E,...D}=t,[R,U]=n.useState(l),q=n.useRef(null),Q=n.useRef(new Map),W=n.useRef([]),ae=n.useRef(new Set);n.useEffect(()=>()=>{R.forEach(Z=>{Z.previewUrl&&URL.revokeObjectURL(Z.previewUrl)})},[]),n.useEffect(()=>{S?.(R)},[R,S]);const oe=n.useCallback(()=>H||(k?ci(k,x):null),[H,k,x]),me=n.useCallback(Z=>{if(p){const de=p(Z);if(de)return de}if(r&&Z.size>r)return`Plik jest za duży. Maksymalny rozmiar: ${Ge(r)}`;if($&&Z.size<$)return`Plik jest za mały. Minimalny rozmiar: ${Ge($)}`;if(i){const de=i.split(",").map(je=>je.trim().toLowerCase()),pe=Z.type.toLowerCase(),be="."+Z.name.split(".").pop()?.toLowerCase();if(!de.some(je=>je.startsWith(".")?be===je:je.endsWith("/*")?pe.startsWith(je.replace("/*","/")):pe===je))return`Niedozwolony typ pliku. Akceptowane typy: ${i}`}return null},[p,r,$,i]),ye=n.useCallback(Z=>{if(_||C)return;const de=R.length;let pe=Z;d&&de+pe.length>d&&(pe=pe.slice(0,d-de));const be=pe.map(_e=>{const je=me(_e);return{id:si(),file:_e,name:_e.name,size:_e.size,type:_e.type,status:je?"error":"pending",progress:0,error:je||void 0,previewUrl:ri(_e)}});U(_e=>[..._e,...be]),O?.(be),A&&(be.filter(je=>je.status==="pending").forEach(je=>{W.current.push(je.id)}),xe())},[_,C,R.length,d,me,A,O]),xe=n.useCallback(()=>{const Z=oe();if(Z)for(;W.current.length>0&&ae.current.size<g;){const de=W.current.shift();de&&ee(de,Z)}},[g,oe]),ee=n.useCallback(async(Z,de)=>{const pe=R.find(_e=>_e.id===Z);if(!pe||pe.status==="uploading"||pe.status==="success")return;const be=new AbortController;Q.current.set(Z,be),ae.current.add(Z),U(_e=>_e.map(je=>je.id===Z?{...je,status:"uploading",progress:0,error:void 0}:je));try{const _e=pe.file;let je;if(_e.size>M?je=await ge(pe,de,be.signal):je=await de({file:_e,onProgress:Ne=>{U(Ce=>Ce.map(we=>we.id===Z?{...we,progress:Ne}:we)),I?.(pe,Ne)},signal:be.signal}),je.success)U(Ne=>Ne.map(Ce=>Ce.id===Z?{...Ce,status:"success",progress:100,uploadedUrl:je.url,uploadedAt:new Date}:Ce)),z?.({...pe,status:"success",uploadedUrl:je.url});else throw new Error(je.error||"Upload failed")}catch(_e){if(_e.name==="AbortError"||_e.message==="Upload cancelled")U(je=>je.map(Ne=>Ne.id===Z?{...Ne,status:"cancelled",error:"Anulowano"}:Ne));else{const je=_e.message||"Błąd uploadu";U(Ne=>Ne.map(Ce=>Ce.id===Z?{...Ce,status:"error",error:je}:Ce)),L?.(pe,je)}}finally{Q.current.delete(Z),ae.current.delete(Z),xe()}},[R,M,I,z,L,xe]),ge=async(Z,de,pe)=>{const be=Z.file,_e=Math.ceil(be.size/y);let je=0,Ne={success:!1};for(let Ce=0;Ce<_e;Ce++){if(pe.aborted)throw new Error("Upload cancelled");const we=Ce*y,Oe=Math.min(we+y,be.size),Le=be.slice(we,Oe);let Ee=0,ze=!1;for(;!ze&&Ee<B;)try{Ne=await de({file:be,chunk:Le,chunkIndex:Ce,totalChunks:_e,fileId:Z.id,onProgress:Pe=>{const De=(je+Le.size*Pe/100)/be.size*100;U(Se=>Se.map($e=>$e.id===Z.id?{...$e,progress:De}:$e))},signal:pe}),Ne.success?(ze=!0,je+=Le.size):Ee++}catch(Pe){if(Ee++,Ee>=B)throw Pe}if(!ze)throw new Error(`Failed to upload chunk ${Ce+1}/${_e}`)}return Ne},ce=n.useCallback(Z=>{const de=oe();if(!de){console.error("No upload handler configured");return}ee(Z,de)},[oe,ee]),ue=n.useCallback(Z=>{const de=Q.current.get(Z);de&&de.abort(),U(pe=>pe.map(be=>be.id===Z&&be.status==="uploading"?{...be,status:"cancelled",error:"Anulowano"}:be))},[]),re=n.useCallback(Z=>{U(de=>de.map(pe=>pe.id===Z?{...pe,status:"pending",progress:0,error:void 0}:pe)),ce(Z)},[ce]),le=n.useCallback(Z=>{const de=R.find(pe=>pe.id===Z);if(de){const pe=Q.current.get(Z);pe&&pe.abort(),de.previewUrl&&URL.revokeObjectURL(de.previewUrl),U(be=>be.filter(_e=>_e.id!==Z)),F?.(de)}},[R,F]),J=n.useCallback(()=>{R.filter(de=>de.status==="pending").forEach(de=>{W.current.push(de.id)}),xe()},[R,xe]),V=n.useCallback(()=>{Q.current.forEach(Z=>Z.abort()),U(Z=>Z.map(de=>de.status==="uploading"?{...de,status:"cancelled",error:"Anulowano"}:de))},[]),Y=n.useCallback(()=>{V(),R.forEach(Z=>{Z.previewUrl&&URL.revokeObjectURL(Z.previewUrl)}),U([])},[V,R]),te=n.useCallback(()=>{R.filter(de=>de.status==="error").forEach(de=>re(de.id))},[R,re]),he=n.useCallback(()=>{q.current?.click()},[]);n.useImperativeHandle(a,()=>({addFiles:ye,uploadAll:J,cancelAll:V,clearAll:Y,getFiles:()=>R,getFile:Z=>R.find(de=>de.id===Z),retryFailed:te,openFileBrowser:he}),[ye,J,V,Y,R,te,he]);const se=n.useMemo(()=>({files:R,uploadFile:ce,cancelFile:ue,retryFile:re,removeFile:le,disabled:_,readOnly:C}),[R,ce,ue,re,le,_,C]),ne=n.useMemo(()=>({total:R.length,pending:R.filter(Z=>Z.status==="pending").length,uploading:R.filter(Z=>Z.status==="uploading").length,success:R.filter(Z=>Z.status==="success").length,error:R.filter(Z=>Z.status==="error").length}),[R]);return e.jsx(En.Provider,{value:se,children:e.jsxs("div",{className:`nice-file-upload ${_?"disabled":""} ${C?"readonly":""} ${c||""}`,style:E,...D,children:[!C&&e.jsx(ui,{onFiles:ye,accept:i,multiple:o,disabled:_,readOnly:C,dropzoneText:N,browseText:T,dragActiveText:P,className:u,inputRef:q}),b&&R.length>0&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-upload-stats",children:[e.jsxs("span",{children:[ne.total," ",ne.total===1?"plik":"plików"]}),ne.pending>0&&e.jsxs("span",{className:"pending",children:[ne.pending," oczekuje"]}),ne.uploading>0&&e.jsxs("span",{className:"uploading",children:[ne.uploading," wysyłanie"]}),ne.success>0&&e.jsxs("span",{className:"success",children:[ne.success," przesłano"]}),ne.error>0&&e.jsxs("span",{className:"error",children:[ne.error," błędów"]})]}),!C&&!_&&ne.pending>0&&e.jsxs("div",{className:"nice-upload-actions",children:[e.jsxs("button",{onClick:J,className:"nice-upload-btn primary",children:["Wyślij wszystkie (",ne.pending,")"]}),ne.error>0&&e.jsxs("button",{onClick:te,className:"nice-upload-btn secondary",children:["Ponów nieudane (",ne.error,")"]}),e.jsx("button",{onClick:Y,className:"nice-upload-btn danger",children:"Wyczyść"})]}),e.jsx(di,{files:R,mode:j,showPreview:w,previewSize:h,renderPreview:m,renderFileItem:f})]}),e.jsx("style",{children:`
305
+ .nice-file-upload {
306
+ font-family: system-ui, -apple-system, sans-serif;
307
+ }
308
+
309
+ .nice-file-upload.disabled {
310
+ opacity: 0.5;
311
+ pointer-events: none;
312
+ }
313
+
314
+ .nice-upload-dropzone {
315
+ border: 2px dashed #d1d5db;
316
+ border-radius: 12px;
317
+ padding: 40px 24px;
318
+ text-align: center;
319
+ cursor: pointer;
320
+ transition: all 0.2s ease;
321
+ background: #fafafa;
322
+ }
323
+
324
+ .nice-upload-dropzone:hover:not(.disabled):not(.readonly) {
325
+ border-color: #3b82f6;
326
+ background: #eff6ff;
327
+ }
328
+
329
+ .nice-upload-dropzone.drag-active {
330
+ border-color: #3b82f6;
331
+ background: #dbeafe;
332
+ transform: scale(1.01);
333
+ }
334
+
335
+ .nice-upload-dropzone.disabled,
336
+ .nice-upload-dropzone.readonly {
337
+ cursor: default;
338
+ background: #f3f4f6;
339
+ }
340
+
341
+ .nice-upload-dropzone-content {
342
+ display: flex;
343
+ flex-direction: column;
344
+ align-items: center;
345
+ gap: 12px;
346
+ }
347
+
348
+ .nice-upload-dropzone-icon {
349
+ font-size: 48px;
350
+ }
351
+
352
+ .nice-upload-dropzone-text {
353
+ font-size: 14px;
354
+ color: #6b7280;
355
+ }
356
+
357
+ .nice-upload-dropzone-text.active {
358
+ font-size: 16px;
359
+ color: #3b82f6;
360
+ font-weight: 500;
361
+ }
362
+
363
+ .nice-upload-browse-btn {
364
+ background: #3b82f6;
365
+ color: white;
366
+ border: none;
367
+ padding: 8px 20px;
368
+ border-radius: 6px;
369
+ font-size: 14px;
370
+ cursor: pointer;
371
+ transition: background 0.2s;
372
+ }
373
+
374
+ .nice-upload-browse-btn:hover:not(:disabled) {
375
+ background: #2563eb;
376
+ }
377
+
378
+ .nice-upload-browse-btn:disabled {
379
+ background: #9ca3af;
380
+ cursor: not-allowed;
381
+ }
382
+
383
+ .nice-upload-stats {
384
+ display: flex;
385
+ gap: 16px;
386
+ padding: 12px 0;
387
+ font-size: 13px;
388
+ color: #6b7280;
389
+ border-bottom: 1px solid #e5e7eb;
390
+ margin-top: 16px;
391
+ }
392
+
393
+ .nice-upload-stats .pending { color: #f59e0b; }
394
+ .nice-upload-stats .uploading { color: #3b82f6; }
395
+ .nice-upload-stats .success { color: #22c55e; }
396
+ .nice-upload-stats .error { color: #ef4444; }
397
+
398
+ .nice-upload-actions {
399
+ display: flex;
400
+ gap: 8px;
401
+ padding: 12px 0;
402
+ }
403
+
404
+ .nice-upload-btn {
405
+ padding: 6px 14px;
406
+ border-radius: 6px;
407
+ font-size: 13px;
408
+ cursor: pointer;
409
+ border: 1px solid transparent;
410
+ transition: all 0.2s;
411
+ }
412
+
413
+ .nice-upload-btn.primary {
414
+ background: #3b82f6;
415
+ color: white;
416
+ }
417
+
418
+ .nice-upload-btn.primary:hover {
419
+ background: #2563eb;
420
+ }
421
+
422
+ .nice-upload-btn.secondary {
423
+ background: white;
424
+ border-color: #d1d5db;
425
+ color: #374151;
426
+ }
427
+
428
+ .nice-upload-btn.secondary:hover {
429
+ background: #f3f4f6;
430
+ }
431
+
432
+ .nice-upload-btn.danger {
433
+ background: white;
434
+ border-color: #fca5a5;
435
+ color: #dc2626;
436
+ }
437
+
438
+ .nice-upload-btn.danger:hover {
439
+ background: #fef2f2;
440
+ }
441
+
442
+ .nice-upload-btn.upload { background: #22c55e; color: white; border: none; }
443
+ .nice-upload-btn.cancel { background: #f59e0b; color: white; border: none; }
444
+ .nice-upload-btn.retry { background: #3b82f6; color: white; border: none; }
445
+ .nice-upload-btn.remove { background: #ef4444; color: white; border: none; }
446
+
447
+ .nice-upload-list {
448
+ margin-top: 12px;
449
+ }
450
+
451
+ .nice-upload-list.grid {
452
+ display: grid;
453
+ grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
454
+ gap: 16px;
455
+ }
456
+
457
+ .nice-upload-item {
458
+ display: flex;
459
+ align-items: center;
460
+ gap: 12px;
461
+ padding: 12px;
462
+ background: #f9fafb;
463
+ border-radius: 8px;
464
+ border: 1px solid #e5e7eb;
465
+ margin-bottom: 8px;
466
+ }
467
+
468
+ .nice-upload-item.error {
469
+ border-color: #fca5a5;
470
+ background: #fef2f2;
471
+ }
472
+
473
+ .nice-upload-item.success {
474
+ border-color: #86efac;
475
+ background: #f0fdf4;
476
+ }
477
+
478
+ .nice-upload-item.grid {
479
+ flex-direction: column;
480
+ text-align: center;
481
+ padding: 16px;
482
+ }
483
+
484
+ .nice-upload-item.compact {
485
+ padding: 8px 12px;
486
+ font-size: 13px;
487
+ }
488
+
489
+ .nice-upload-preview {
490
+ flex-shrink: 0;
491
+ display: flex;
492
+ align-items: center;
493
+ justify-content: center;
494
+ background: #e5e7eb;
495
+ border-radius: 6px;
496
+ overflow: hidden;
497
+ position: relative;
498
+ }
499
+
500
+ .nice-upload-preview-icon {
501
+ background: #f3f4f6;
502
+ }
503
+
504
+ .nice-upload-preview-overlay {
505
+ position: absolute;
506
+ font-size: 24px;
507
+ }
508
+
509
+ .nice-upload-item-content {
510
+ flex: 1;
511
+ min-width: 0;
512
+ }
513
+
514
+ .nice-upload-item-header {
515
+ display: flex;
516
+ align-items: center;
517
+ gap: 8px;
518
+ margin-bottom: 4px;
519
+ }
520
+
521
+ .nice-upload-item-name {
522
+ font-weight: 500;
523
+ font-size: 14px;
524
+ color: #111827;
525
+ overflow: hidden;
526
+ text-overflow: ellipsis;
527
+ white-space: nowrap;
528
+ }
529
+
530
+ .nice-upload-item-size {
531
+ font-size: 12px;
532
+ color: #6b7280;
533
+ }
534
+
535
+ .nice-upload-item-error {
536
+ font-size: 12px;
537
+ color: #dc2626;
538
+ margin-top: 4px;
539
+ }
540
+
541
+ .nice-upload-item-link {
542
+ font-size: 12px;
543
+ color: #3b82f6;
544
+ text-decoration: none;
545
+ }
546
+
547
+ .nice-upload-item-link:hover {
548
+ text-decoration: underline;
549
+ }
550
+
551
+ .nice-upload-item-actions {
552
+ display: flex;
553
+ gap: 4px;
554
+ }
555
+
556
+ .nice-upload-item-actions button {
557
+ padding: 4px 8px;
558
+ font-size: 12px;
559
+ }
560
+
561
+ .nice-upload-item-remove {
562
+ background: none;
563
+ border: none;
564
+ color: #9ca3af;
565
+ cursor: pointer;
566
+ padding: 4px;
567
+ font-size: 14px;
568
+ line-height: 1;
569
+ }
570
+
571
+ .nice-upload-item-remove:hover {
572
+ color: #ef4444;
573
+ }
574
+
575
+ .nice-upload-badge {
576
+ font-size: 11px;
577
+ padding: 2px 8px;
578
+ border-radius: 10px;
579
+ font-weight: 500;
580
+ }
581
+
582
+ .nice-upload-badge.pending { background: #fef3c7; color: #92400e; }
583
+ .nice-upload-badge.uploading { background: #dbeafe; color: #1e40af; }
584
+ .nice-upload-badge.success { background: #dcfce7; color: #166534; }
585
+ .nice-upload-badge.error { background: #fee2e2; color: #991b1b; }
586
+ .nice-upload-badge.cancelled { background: #f3f4f6; color: #4b5563; }
587
+
588
+ .nice-upload-progress {
589
+ height: 6px;
590
+ background: #e5e7eb;
591
+ border-radius: 3px;
592
+ overflow: hidden;
593
+ margin-top: 6px;
594
+ position: relative;
595
+ }
596
+
597
+ .nice-upload-progress-bar {
598
+ height: 100%;
599
+ transition: width 0.2s ease;
600
+ border-radius: 3px;
601
+ }
602
+
603
+ .nice-upload-progress-text {
604
+ position: absolute;
605
+ right: 0;
606
+ top: -18px;
607
+ font-size: 11px;
608
+ color: #6b7280;
609
+ }
610
+
611
+ .nice-upload-item.compact .nice-upload-progress {
612
+ flex: 1;
613
+ margin: 0 8px;
614
+ }
615
+
616
+ .nice-upload-item.compact .nice-upload-progress-text {
617
+ position: static;
618
+ }
619
+
620
+ .nice-upload-item-info {
621
+ margin-top: 8px;
622
+ }
623
+
624
+ .nice-upload-item.grid .nice-upload-item-name {
625
+ font-size: 13px;
626
+ max-width: 100%;
627
+ }
628
+
629
+ @media (max-width: 640px) {
630
+ .nice-upload-dropzone {
631
+ padding: 24px 16px;
632
+ }
633
+
634
+ .nice-upload-actions {
635
+ flex-wrap: wrap;
636
+ }
637
+
638
+ .nice-upload-list.grid {
639
+ grid-template-columns: repeat(2, 1fr);
640
+ }
641
+ }
642
+ `})]})})});Ln.displayName="NiceFileUpload";const mi=({onFiles:t,accept:a,multiple:i=!0,disabled:o,children:r,dropzoneText:d="Przeciągnij pliki tutaj",dragActiveText:$="Upuść pliki",className:y,style:M,...A})=>{const[H,k]=n.useState(!1),x=n.useRef(null),O=n.useCallback(S=>{if(S.preventDefault(),k(!1),o)return;const m=Array.from(S.dataTransfer.files);m.length>0&&t(i?m:[m[0]])},[o,i,t]),z=n.useCallback(S=>{S.preventDefault(),o||k(!0)},[o]),L=n.useCallback(()=>{k(!1)},[]),I=n.useCallback(()=>{o||x.current?.click()},[o]),F=n.useCallback(S=>{const m=S.target.files?Array.from(S.target.files):[];m.length>0&&t(m),x.current&&(x.current.value="")},[t]);return e.jsxs("div",{className:`nice-dropzone ${H?"active":""} ${o?"disabled":""} ${y||""}`,style:M,onDrop:O,onDragOver:z,onDragLeave:L,onClick:I,...A,children:[e.jsx("input",{ref:x,type:"file",accept:a,multiple:i,onChange:F,style:{display:"none"},disabled:o}),r||e.jsx("div",{className:"nice-dropzone-content",children:e.jsx("span",{children:H?$:d})}),e.jsx("style",{children:`
643
+ .nice-dropzone {
644
+ border: 2px dashed #d1d5db;
645
+ border-radius: 8px;
646
+ padding: 24px;
647
+ text-align: center;
648
+ cursor: pointer;
649
+ transition: all 0.2s;
650
+ }
651
+ .nice-dropzone:hover:not(.disabled) {
652
+ border-color: #3b82f6;
653
+ background: #eff6ff;
654
+ }
655
+ .nice-dropzone.active {
656
+ border-color: #3b82f6;
657
+ background: #dbeafe;
658
+ }
659
+ .nice-dropzone.disabled {
660
+ opacity: 0.5;
661
+ cursor: not-allowed;
662
+ }
663
+ .nice-dropzone-content {
664
+ color: #6b7280;
665
+ font-size: 14px;
666
+ }
667
+ `})]})},pi=({onFiles:t,accept:a,multiple:i=!0,disabled:o,children:r,className:d,style:$,...y})=>{const M=n.useRef(null),A=n.useCallback(()=>{o||M.current?.click()},[o]),H=n.useCallback(k=>{const x=k.target.files?Array.from(k.target.files):[];x.length>0&&t(x),M.current&&(M.current.value="")},[t]);return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",onClick:A,disabled:o,className:`nice-file-picker-btn ${d||""}`,style:$,...y,children:r||"Wybierz pliki"}),e.jsx("input",{ref:M,type:"file",accept:a,multiple:i,onChange:H,style:{display:"none"},disabled:o}),e.jsx("style",{children:`
668
+ .nice-file-picker-btn {
669
+ padding: 8px 16px;
670
+ background: #3b82f6;
671
+ color: white;
672
+ border: none;
673
+ border-radius: 6px;
674
+ cursor: pointer;
675
+ font-size: 14px;
676
+ transition: background 0.2s;
677
+ }
678
+ .nice-file-picker-btn:hover:not(:disabled) {
679
+ background: #2563eb;
680
+ }
681
+ .nice-file-picker-btn:disabled {
682
+ opacity: 0.5;
683
+ cursor: not-allowed;
684
+ }
685
+ `})]})};let hi=0;function xt(){return`blk-${++hi}-${Date.now().toString(36)}`}function zt(t=""){return{id:xt(),type:"paragraph",content:t}}function gi(t,a=""){const i={id:xt(),type:t,content:a};return t==="heading"&&(i.level=2),t==="list"&&(i.listType="unordered"),t==="callout"&&(i.icon="ℹ️"),t==="toggle"&&(i.open=!0),i}const fi=[{type:"paragraph",label:"Text",icon:"¶",keywords:"paragraph text"},{type:"heading",label:"Heading",icon:"H",keywords:"heading title"},{type:"list",label:"Bulleted list",icon:"•",keywords:"bullet unordered list"},{type:"list",label:"Numbered list",icon:"1.",keywords:"numbered ordered list"},{type:"list",label:"Checklist",icon:"☑",keywords:"check todo list"},{type:"quote",label:"Quote",icon:"❝",keywords:"quote blockquote"},{type:"callout",label:"Callout",icon:"ℹ️",keywords:"callout info alert"},{type:"toggle",label:"Toggle",icon:"▶",keywords:"toggle collapse expand"},{type:"code",label:"Code",icon:"</>",keywords:"code snippet"},{type:"image",label:"Image",icon:"🖼",keywords:"image photo picture"},{type:"video",label:"Video",icon:"🎬",keywords:"video embed"},{type:"table",label:"Table",icon:"⊞",keywords:"table grid"},{type:"divider",label:"Divider",icon:"─",keywords:"divider line separator"},{type:"pageBreak",label:"Page Break",icon:"⤓",keywords:"page break"}];function yi(t){const a=[t.align?`text-align:${t.align}`:"",t.color?`color:${t.color}`:"",t.bgColor?`background-color:${t.bgColor}`:"",t.indent?`margin-left:${t.indent*24}px`:""].filter(Boolean).join(";"),i=a?` style="${a}"`:"",o=(r,d)=>{let $=d;return t.bold&&($=`<strong>${$}</strong>`),t.italic&&($=`<em>${$}</em>`),t.underline&&($=`<u>${$}</u>`),t.strikethrough&&($=`<s>${$}</s>`),`<${r}${i}>${$}</${r}>`};switch(t.type){case"heading":return o(`h${t.level??2}`,t.content);case"paragraph":return o("p",t.content||"&nbsp;");case"list":{const r=t.listType==="ordered"?"ol":"ul",d=t.content.split(`
686
+ `).map(($,y)=>t.listType==="checklist"?`<li><input type="checkbox" ${t.checked?.[y]??!1?"checked":""} disabled />${$}</li>`:`<li>${$}</li>`).join("");return`<${r}${i}>${d}</${r}>`}case"image":return`<figure${i}><img src="${t.src??""}" alt="${t.alt??""}" /></figure>`;case"video":return`<figure${i}><video src="${t.src??""}" controls></video></figure>`;case"divider":return"<hr />";case"pageBreak":return'<div style="page-break-after:always"></div>';case"code":return`<pre><code class="language-${t.language??""}">${t.content}</code></pre>`;case"quote":return o("blockquote",t.content);case"callout":return`<div class="nice-doc-callout"${i}><span>${t.icon??"ℹ️"}</span><div>${t.content}</div></div>`;case"toggle":return`<details${i}><summary>${t.content.split(`
687
+ `)[0]}</summary>${t.content.split(`
688
+ `).slice(1).join("<br>")}</details>`;case"table":return`<table${i}>${t.content}</table>`;case"embed":return`<iframe src="${t.src??""}" style="width:100%;border:none;min-height:300px"></iframe>`;default:return o("p",t.content)}}function xi(t){let a=0,i=0;for(const o of t){const r=o.content??"";a+=r.length;const d=r.trim().split(/\s+/).filter(Boolean);i+=d.length}return{words:i,chars:a,readingTime:Math.max(1,Math.ceil(i/200))}}const zn=n.forwardRef(({blocks:t,onChange:a,readOnly:i=!1,showToolbar:o=!0,size:r="md",editorSize:d="standard",placeholder:$,onExport:y,onImageUpload:M,maxUndo:A=50,slashCommands:H=!0,showWordCount:k=!1,showToc:x=!1,showFindReplace:O=!0,className:z,style:L,id:I,...F},S)=>{const m=K.useControlId(I),{t:f}=K.useNiceTranslation(),[w,b]=n.useState(()=>t??[zt()]),j=t??w,[h,N]=n.useState(0),T=n.useRef(new Map),P=n.useRef(null),[_,C]=n.useState(!1),[u,B]=n.useState(""),[g,p]=n.useState(""),[s,l]=n.useState([]),[c,E]=n.useState(0),[D,R]=n.useState(!1),U=n.useRef([]),q=n.useRef([]),Q=n.useCallback(v=>{U.current.push(v.map(G=>({...G,checked:G.checked?[...G.checked]:void 0}))),U.current.length>A&&U.current.shift(),q.current=[]},[A]),W=n.useCallback(()=>{if(U.current.length===0)return;const v=U.current.pop();q.current.push(j.map(G=>({...G}))),t||b(v),a?.(v)},[j,t,a]),ae=n.useCallback(()=>{if(q.current.length===0)return;const v=q.current.pop();U.current.push(j.map(G=>({...G}))),t||b(v),a?.(v)},[j,t,a]),[oe,me]=n.useState(!1),[ye,xe]=n.useState(""),[ee,ge]=n.useState(0),ce=n.useMemo(()=>{if(!oe||!H)return[];const v=ye.toLowerCase();return fi.filter(G=>G.label.toLowerCase().includes(v)||G.keywords.includes(v))},[oe,ye,H]),[ue,re]=n.useState(null),[le,J]=n.useState(null),V=n.useCallback(v=>{Q(j);const G=v(j);t||b(G),a?.(G)},[j,t,a,Q]),Y=n.useCallback((v,G)=>{V(X=>X.map((fe,ve)=>ve===v?{...fe,...G}:fe))},[V]),te=n.useCallback((v,G)=>{const X=G??zt();V(fe=>{const ve=[...fe];return ve.splice(v+1,0,X),ve}),N(v+1)},[V]),he=n.useCallback(v=>{const G={...j[v],id:xt()};te(v,G)},[j,te]),se=n.useCallback(v=>{j.length<=1||(V(G=>G.filter((X,fe)=>fe!==v)),N(Math.max(0,v-1)))},[j.length,V]),ne=n.useCallback((v,G)=>{const X=v+G;X<0||X>=j.length||(V(fe=>{const ve=[...fe];return[ve[v],ve[X]]=[ve[X],ve[v]],ve}),N(X))},[j.length,V]),Z=n.useCallback((v,G)=>{const X={type:G};G==="heading"&&(X.level=2),G==="list"&&(X.listType="unordered"),G==="callout"&&(X.icon="ℹ️"),G==="toggle"&&(X.open=!0),Y(v,X)},[Y]),de=n.useCallback(v=>{const G=gi(v.type);v.type==="list"&&v.label.includes("Numbered")&&(G.listType="ordered"),v.type==="list"&&v.label.includes("Checklist")&&(G.listType="checklist",G.checked=[]),j[h]?.content===""||j[h]?.content==="/"?V(X=>X.map((fe,ve)=>ve===h?{...G,id:fe.id}:fe)):te(h,G),me(!1),xe("")},[j,h,V,te]),pe=n.useCallback((v,G)=>{if(i)return;const X=j[G];if(!X?.locked){if((v.ctrlKey||v.metaKey)&&v.key==="z"&&!v.shiftKey){v.preventDefault(),W();return}if((v.ctrlKey||v.metaKey)&&(v.key==="y"||v.key==="z"&&v.shiftKey)){v.preventDefault(),ae();return}if((v.ctrlKey||v.metaKey)&&v.key==="d"){v.preventDefault(),he(G);return}if((v.ctrlKey||v.metaKey)&&v.key==="b"){v.preventDefault(),Y(G,{bold:!X?.bold});return}if((v.ctrlKey||v.metaKey)&&v.key==="i"){v.preventDefault(),Y(G,{italic:!X?.italic});return}if((v.ctrlKey||v.metaKey)&&v.key==="u"){v.preventDefault(),Y(G,{underline:!X?.underline});return}if((v.ctrlKey||v.metaKey)&&v.key==="e"){v.preventDefault(),Y(G,{strikethrough:!X?.strikethrough});return}if(v.key==="Tab"&&!v.shiftKey){v.preventDefault(),Y(G,{indent:Math.min((X?.indent??0)+1,4)});return}if(v.key==="Tab"&&v.shiftKey){v.preventDefault(),Y(G,{indent:Math.max((X?.indent??0)-1,0)});return}if((v.ctrlKey||v.metaKey)&&v.key==="f"&&O){v.preventDefault(),C(fe=>!fe);return}if(oe&&ce.length>0){if(v.key==="ArrowDown"){v.preventDefault(),ge(fe=>Math.min(fe+1,ce.length-1));return}if(v.key==="ArrowUp"){v.preventDefault(),ge(fe=>Math.max(fe-1,0));return}if(v.key==="Enter"){v.preventDefault(),de(ce[ee]);return}if(v.key==="Escape"){me(!1);return}}v.key==="Enter"&&!v.shiftKey?(v.preventDefault(),te(G)):v.key==="Backspace"&&j[G].content===""&&j.length>1?(v.preventDefault(),se(G)):v.key==="ArrowUp"&&v.altKey?(v.preventDefault(),ne(G,-1)):v.key==="ArrowDown"&&v.altKey&&(v.preventDefault(),ne(G,1))}},[i,j,te,se,ne,W,ae,he,Y,oe,ce,ee,de,O]),be=n.useCallback((v,G)=>{const X=v.target.textContent??"";H&&X.startsWith("/")?(me(!0),xe(X.slice(1)),ge(0)):oe&&me(!1),Q(j);const fe=j.map((ve,Me)=>Me===G?{...ve,content:X}:ve);t||b(fe),a?.(fe)},[j,t,a,Q,H,oe]),_e=n.useCallback((v,G)=>{re(G),v.dataTransfer.effectAllowed="move"},[]),je=n.useCallback((v,G)=>{v.preventDefault(),v.dataTransfer.dropEffect="move",J(G)},[]),Ne=n.useCallback((v,G)=>{if(v.preventDefault(),ue===null||ue===G){re(null),J(null);return}V(X=>{const fe=[...X],[ve]=fe.splice(ue,1);return fe.splice(G>ue?G-1:G,0,ve),fe}),N(G>ue?G-1:G),re(null),J(null)},[ue,V]);n.useEffect(()=>{if(!_||!u){l([]);return}const v=u.toLowerCase(),G=[];j.forEach((X,fe)=>{const ve=(X.content??"").toLowerCase();let Me=0;for(;Me<ve.length;){const Ae=ve.indexOf(v,Me);if(Ae===-1)break;G.push({blockIdx:fe,start:Ae,end:Ae+v.length}),Me=Ae+1}}),l(G),E(0)},[u,_,j]);const Ce=n.useCallback(()=>{if(s.length===0)return;const v=(c+1)%s.length;E(v),N(s[v].blockIdx)},[s,c]),we=n.useCallback(()=>{if(s.length===0)return;const v=(c-1+s.length)%s.length;E(v),N(s[v].blockIdx)},[s,c]),Oe=n.useCallback(()=>{if(s.length===0||!u)return;const v=s[c],G=j[v.blockIdx],X=G.content.slice(0,v.start),fe=G.content.slice(v.end);Y(v.blockIdx,{content:X+g+fe})},[s,c,u,g,j,Y]),Le=n.useCallback(()=>{if(!u)return;const v=u;V(G=>G.map(X=>({...X,content:X.content.split(v).join(g)})))},[u,g,V]),Ee=n.useMemo(()=>x?j.map((v,G)=>v.type==="heading"?{idx:G,level:v.level??2,text:v.content}:null).filter(Boolean):[],[j,x]),ze=n.useCallback(async v=>{const G=v.target.files?.[0];if(G){if(M){const X=await M(G);Y(h,{src:X})}v.target.value=""}},[M,h,Y]);n.useEffect(()=>{const v=j[h];if(v){const G=T.current.get(v.id);G&&G.focus()}},[h,j]);const Pe=n.useCallback(()=>{const v=j.map(yi).join(`
689
+ `);y?.(v)},[j,y]),De=n.useMemo(()=>k?xi(j):null,[j,k]),[Se,$e]=n.useState(null),ie=n.useCallback((v,G)=>{i||(v.preventDefault(),$e({x:v.clientX,y:v.clientY,idx:G}))},[i]);return n.useEffect(()=>{if(!Se)return;const v=()=>$e(null);return window.addEventListener("click",v),()=>window.removeEventListener("click",v)},[Se]),e.jsxs("div",{ref:S,id:m,className:`nice-doc-editor nice-doc-editor--${r} nice-editor--${d} ${i?"nice-doc-editor--readonly":""} ${z??""}`,style:L,role:"application","aria-label":f("docEditor.label","Document Editor"),...F,children:[o&&!i&&e.jsxs("div",{className:"nice-doc-editor__toolbar",role:"toolbar",style:{display:"flex",flexWrap:"wrap",gap:4,alignItems:"center",padding:"4px 8px"},children:[e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:W,title:f("docEditor.undo","Undo (Ctrl+Z)"),children:"↩"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:ae,title:f("docEditor.redo","Redo (Ctrl+Y)"),children:"↪"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceSelect,{size:"sm",value:j[h]?.type??"paragraph",onChange:v=>Z(h,v),label:"",options:[{value:"paragraph",label:f("docEditor.paragraph","Paragraph")},{value:"heading",label:f("docEditor.heading","Heading")},{value:"list",label:f("docEditor.list","List")},{value:"code",label:f("docEditor.code","Code")},{value:"quote",label:f("docEditor.quote","Quote")},{value:"callout",label:f("docEditor.callout","Callout")},{value:"toggle",label:f("docEditor.toggle","Toggle")},{value:"divider",label:f("docEditor.divider","Divider")},{value:"image",label:f("docEditor.image","Image")},{value:"video",label:f("docEditor.video","Video")},{value:"pageBreak",label:f("docEditor.pageBreak","Page Break")}],style:{minWidth:100}}),j[h]?.type==="heading"&&e.jsx(ke.NiceSelect,{size:"sm",value:String(j[h]?.level??2),onChange:v=>Y(h,{level:Number(v)}),label:"",options:[{value:"1",label:"H1"},{value:"2",label:"H2"},{value:"3",label:"H3"},{value:"4",label:"H4"},{value:"5",label:"H5"},{value:"6",label:"H6"}],style:{minWidth:55}}),j[h]?.type==="list"&&e.jsx(ke.NiceSelect,{size:"sm",value:j[h]?.listType??"unordered",onChange:v=>Y(h,{listType:v}),label:"",options:[{value:"unordered",label:"• Bullets"},{value:"ordered",label:"1. Numbers"},{value:"checklist",label:"☑ Checklist"}],style:{minWidth:90}}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.bold?"primary":"ghost",onClick:()=>Y(h,{bold:!j[h]?.bold}),title:f("docEditor.bold","Bold (Ctrl+B)"),children:e.jsx("strong",{children:"B"})}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.italic?"primary":"ghost",onClick:()=>Y(h,{italic:!j[h]?.italic}),title:f("docEditor.italic","Italic (Ctrl+I)"),children:e.jsx("em",{children:"I"})}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.underline?"primary":"ghost",onClick:()=>Y(h,{underline:!j[h]?.underline}),title:f("docEditor.underline","Underline (Ctrl+U)"),children:e.jsx("u",{children:"U"})}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.strikethrough?"primary":"ghost",onClick:()=>Y(h,{strikethrough:!j[h]?.strikethrough}),title:f("docEditor.strikethrough","Strikethrough (Ctrl+E)"),children:e.jsx("s",{children:"S"})}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.align==="left"?"primary":"ghost",onClick:()=>Y(h,{align:"left"}),title:f("docEditor.alignLeft","Left"),children:"⬅"}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.align==="center"?"primary":"ghost",onClick:()=>Y(h,{align:"center"}),title:f("docEditor.alignCenter","Center"),children:"⬌"}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.align==="right"?"primary":"ghost",onClick:()=>Y(h,{align:"right"}),title:f("docEditor.alignRight","Right"),children:"➡"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Y(h,{indent:Math.min((j[h]?.indent??0)+1,4)}),title:f("docEditor.indent","Indent (Tab)"),children:"→⊞"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Y(h,{indent:Math.max((j[h]?.indent??0)-1,0)}),title:f("docEditor.outdent","Outdent (Shift+Tab)"),children:"←⊞"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceColorPicker,{size:"sm",label:"",value:j[h]?.color??"#000000",onChange:v=>Y(h,{color:v}),title:"Text color"}),e.jsx(ke.NiceColorPicker,{size:"sm",label:"",value:j[h]?.bgColor??"#ffffff",onChange:v=>Y(h,{bgColor:v}),title:"Block background"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(ke.NiceButton,{size:"sm",variant:j[h]?.locked?"primary":"ghost",onClick:()=>Y(h,{locked:!j[h]?.locked}),title:f("docEditor.lock","Lock/Unlock block"),children:"🔒"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>he(h),title:f("docEditor.duplicate","Duplicate (Ctrl+D)"),children:"⧉"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>se(h),title:f("docEditor.delete","Delete block"),children:"🗑"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>te(h),title:f("docEditor.addBlock","Add block"),children:"+"}),O&&e.jsx(ke.NiceButton,{size:"sm",variant:_?"primary":"ghost",onClick:()=>C(v=>!v),title:f("docEditor.find","Find & Replace (Ctrl+F)"),children:"🔍"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>R(v=>!v),title:f("docEditor.shortcuts","Keyboard shortcuts"),children:"⌨"}),y&&e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:Pe,children:f("docEditor.export","Export HTML")})]}),e.jsx("input",{ref:P,type:"file",accept:"image/*,video/*",style:{display:"none"},onChange:ze}),_&&e.jsxs("div",{className:"nice-doc-editor__find-bar",style:{display:"flex",gap:4,alignItems:"center",padding:"4px 8px",background:"var(--nice-doc-find-bg, #f8f9fa)",borderBottom:"1px solid #ddd"},children:[e.jsx(ke.NiceTextInput,{size:"sm",placeholder:f("docEditor.findPlaceholder","Find..."),value:u,onChange:B,style:{flex:1,maxWidth:200}}),e.jsx(ke.NiceTextInput,{size:"sm",placeholder:f("docEditor.replacePlaceholder","Replace..."),value:g,onChange:p,style:{flex:1,maxWidth:200}}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:we,title:f("docEditor.findPrev","Previous"),children:"◀"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:Ce,title:f("docEditor.findNext","Next"),children:"▶"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:Oe,title:f("docEditor.replaceOne","Replace"),disabled:i,children:f("docEditor.replace","Replace")}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:Le,title:f("docEditor.replaceAll","Replace all"),disabled:i,children:f("docEditor.replaceAllBtn","All")}),e.jsx("span",{style:{fontSize:"0.75em",color:"#666"},children:s.length>0?`${c+1}/${s.length}`:"0/0"}),e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>C(!1),children:"✕"})]}),D&&e.jsx("div",{className:"nice-doc-editor__shortcuts-overlay",style:{position:"fixed",inset:0,background:"rgba(0,0,0,.4)",zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>R(!1),children:e.jsxs("div",{style:{background:"#fff",borderRadius:8,padding:24,maxWidth:420,width:"90%",boxShadow:"0 8px 32px rgba(0,0,0,.2)"},onClick:v=>v.stopPropagation(),children:[e.jsx("h3",{style:{margin:"0 0 12px"},children:f("docEditor.shortcutsTitle","Keyboard Shortcuts")}),e.jsx("table",{style:{width:"100%",fontSize:"0.875em",borderCollapse:"collapse"},children:e.jsx("tbody",{children:[["Ctrl+B",f("docEditor.bold","Bold")],["Ctrl+I",f("docEditor.italic","Italic")],["Ctrl+U",f("docEditor.underline","Underline")],["Ctrl+E",f("docEditor.strikethrough","Strikethrough")],["Ctrl+D",f("docEditor.duplicate","Duplicate block")],["Ctrl+Z",f("docEditor.undo","Undo")],["Ctrl+Y",f("docEditor.redo","Redo")],["Ctrl+F",f("docEditor.find","Find & Replace")],["Enter",f("docEditor.newBlock","New block")],["Backspace",f("docEditor.deleteEmpty","Delete empty block")],["Alt+↑",f("docEditor.moveUp","Move block up")],["Alt+↓",f("docEditor.moveDown","Move block down")],["Tab",f("docEditor.indent","Indent")],["Shift+Tab",f("docEditor.outdent","Outdent")],["/",f("docEditor.slashCmd","Slash commands")]].map(([v,G])=>e.jsxs("tr",{style:{borderBottom:"1px solid #eee"},children:[e.jsx("td",{style:{padding:"4px 8px",fontFamily:"monospace",fontWeight:600},children:v}),e.jsx("td",{style:{padding:"4px 8px"},children:G})]},v))})}),e.jsx("div",{style:{textAlign:"right",marginTop:12},children:e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>R(!1),children:f("docEditor.close","Close")})})]})}),e.jsxs("div",{style:{display:"flex",gap:0},children:[x&&Ee.length>0&&e.jsxs("nav",{className:"nice-doc-editor__toc",style:{width:200,minWidth:160,borderRight:"1px solid #eee",padding:"8px 4px",fontSize:"0.8em",overflowY:"auto",maxHeight:500},children:[e.jsx("div",{style:{fontWeight:600,padding:"4px 8px",fontSize:"0.75em",textTransform:"uppercase",color:"#999"},children:f("docEditor.toc","Contents")}),Ee.map(v=>e.jsx("div",{style:{padding:"3px 8px",paddingLeft:8+(v.level-1)*12,cursor:"pointer",borderRadius:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",background:v.idx===h?"#e8f0fe":void 0},onClick:()=>N(v.idx),title:v.text,children:v.text||f("docEditor.untitled","Untitled")},v.idx))]}),e.jsx("div",{className:"nice-doc-editor__body",style:{flex:1},children:j.map((v,G)=>e.jsxs("div",{className:`nice-doc-editor__block nice-doc-editor__block--${v.type} ${G===h?"nice-doc-editor__block--focused":""} ${le===G?"nice-doc-editor__block--drop-target":""} ${v.locked?"nice-doc-editor__block--locked":""}`,onClick:()=>N(G),onContextMenu:X=>ie(X,G),draggable:!i&&!v.locked,onDragStart:X=>_e(X,G),onDragOver:X=>je(X,G),onDrop:X=>Ne(X,G),onDragEnd:()=>{re(null),J(null)},style:{opacity:ue===G?.4:1,marginLeft:(v.indent??0)*24},children:[!i&&!v.locked&&e.jsx("div",{className:"nice-doc-editor__block-handle",title:f("docEditor.drag","Drag to reorder"),children:"⠿"}),v.locked&&e.jsx("span",{className:"nice-doc-editor__lock-icon",style:{position:"absolute",top:2,right:4,fontSize:"0.7em",opacity:.5},children:"🔒"}),v.type==="divider"?e.jsx("hr",{className:"nice-doc-editor__divider"}):v.type==="pageBreak"?e.jsxs("div",{className:"nice-doc-editor__page-break",style:{borderTop:"2px dashed #ccc",textAlign:"center",padding:4,fontSize:"0.75em",color:"#999"},children:["— ",f("docEditor.pageBreak","Page Break")," —"]}):v.type==="image"||v.type==="video"?e.jsx("div",{className:"nice-doc-editor__media-block",children:v.src?v.type==="image"?e.jsx("img",{src:v.src,alt:v.alt??"",className:"nice-doc-editor__image",style:{maxWidth:"100%"}}):e.jsx("video",{src:v.src,controls:!0,className:"nice-doc-editor__video",style:{maxWidth:"100%"}}):!i&&e.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[e.jsx(ke.NiceTextInput,{size:"sm",placeholder:f("docEditor.mediaUrl",v.type==="image"?"Image URL":"Video URL"),value:v.src??"",onChange:X=>Y(G,{src:X})}),M&&e.jsx(ke.NiceButton,{size:"sm",variant:"ghost",onClick:()=>{N(G),P.current?.click()},children:"📎"})]})}):v.type==="callout"?e.jsxs("div",{className:"nice-doc-editor__callout",style:{display:"flex",gap:8,padding:"8px 12px",background:v.bgColor??"#f0f7ff",borderRadius:4,color:v.color},children:[e.jsx("span",{style:{fontSize:"1.2em"},children:v.icon??"ℹ️"}),e.jsx("div",{ref:X=>{X&&T.current.set(v.id,X)},className:"nice-doc-editor__content",contentEditable:!i&&!v.locked,suppressContentEditableWarning:!0,onInput:X=>be(X,G),onFocus:()=>N(G),onKeyDown:X=>pe(X,G),"data-placeholder":f("docEditor.calloutPlaceholder","Callout text..."),role:"textbox","aria-multiline":"true",style:{flex:1,outline:"none"},children:v.content})]}):v.type==="toggle"?e.jsxs("details",{open:v.open,className:"nice-doc-editor__toggle",onToggle:X=>Y(G,{open:X.target.open}),children:[e.jsx("summary",{style:{cursor:"pointer",fontWeight:500},children:v.content.split(`
690
+ `)[0]||f("docEditor.toggleTitle","Toggle")}),e.jsx("div",{ref:X=>{X&&T.current.set(v.id,X)},className:"nice-doc-editor__content",contentEditable:!i&&!v.locked,suppressContentEditableWarning:!0,onInput:X=>be(X,G),onFocus:()=>N(G),onKeyDown:X=>pe(X,G),role:"textbox","aria-multiline":"true",style:{padding:"4px 0"},children:v.content.split(`
691
+ `).slice(1).join(`
692
+ `)})]}):v.type==="code"?e.jsxs("div",{className:"nice-doc-editor__code-block",style:{position:"relative"},children:[!i&&e.jsx(ke.NiceTextInput,{size:"sm",value:v.language??"",onChange:X=>Y(G,{language:X}),placeholder:"Language",style:{position:"absolute",top:4,right:4,width:80,opacity:.7}}),e.jsx("pre",{ref:X=>{X&&T.current.set(v.id,X)},className:"nice-doc-editor__content",contentEditable:!i&&!v.locked,suppressContentEditableWarning:!0,onInput:X=>be(X,G),onFocus:()=>N(G),onKeyDown:X=>pe(X,G),role:"textbox","aria-multiline":"true",style:{fontFamily:"monospace",background:"#1e1e1e",color:"#d4d4d4",padding:12,borderRadius:4,overflow:"auto"},children:v.content})]}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx("div",{ref:X=>{X&&T.current.set(v.id,X)},className:"nice-doc-editor__content",contentEditable:!i&&!v.locked,suppressContentEditableWarning:!0,style:{textAlign:v.align,fontWeight:v.bold?"bold":void 0,fontStyle:v.italic?"italic":void 0,textDecoration:[v.underline?"underline":"",v.strikethrough?"line-through":""].filter(Boolean).join(" ")||void 0,color:v.color,backgroundColor:v.bgColor},onInput:X=>be(X,G),onFocus:()=>N(G),onKeyDown:X=>pe(X,G),"data-placeholder":!v.content&&$?$:void 0,role:"textbox","aria-multiline":"true",children:v.content}),oe&&G===h&&ce.length>0&&e.jsx("ul",{className:"nice-doc-editor__slash-menu",style:{position:"absolute",left:0,top:"100%",zIndex:100,background:"#fff",border:"1px solid #ddd",borderRadius:6,boxShadow:"0 4px 16px rgba(0,0,0,.12)",listStyle:"none",margin:0,padding:4,minWidth:180,maxHeight:240,overflow:"auto"},children:ce.map((X,fe)=>e.jsxs("li",{className:fe===ee?"nice-doc-editor__slash-item--active":"",style:{padding:"6px 10px",cursor:"pointer",borderRadius:4,display:"flex",gap:8,alignItems:"center",background:fe===ee?"#e8f0fe":void 0},onMouseDown:ve=>{ve.preventDefault(),de(X)},onMouseEnter:()=>ge(fe),children:[e.jsx("span",{style:{width:24,textAlign:"center"},children:X.icon}),e.jsx("span",{children:X.label})]},`${X.type}-${X.label}`))})]})]},v.id))})]}),Se&&e.jsxs("div",{className:"nice-doc-editor__ctx-menu",style:{position:"fixed",left:Se.x,top:Se.y,zIndex:1e3,background:"#fff",border:"1px solid #ddd",borderRadius:6,boxShadow:"0 4px 16px rgba(0,0,0,.12)",padding:4,minWidth:160},children:[e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{he(Se.idx),$e(null)},children:"⧉ Duplicate"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{te(Se.idx),$e(null)},children:"+ Insert below"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{ne(Se.idx,-1),$e(null)},children:"↑ Move up"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{ne(Se.idx,1),$e(null)},children:"↓ Move down"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{Y(Se.idx,{locked:!j[Se.idx]?.locked}),$e(null)},children:j[Se.idx]?.locked?"🔓 Unlock":"🔒 Lock"}),e.jsx("hr",{style:{margin:"2px 0",border:"none",borderTop:"1px solid #eee"}}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer",color:"#d32f2f"},onClick:()=>{se(Se.idx),$e(null)},children:"🗑 Delete"})]}),k&&De&&e.jsxs("div",{className:"nice-doc-editor__footer",style:{padding:"4px 12px",fontSize:"0.75em",color:"#666",borderTop:"1px solid #eee",display:"flex",gap:16},children:[e.jsxs("span",{children:[De.words," ",f("docEditor.words","words")]}),e.jsxs("span",{children:[De.chars," ",f("docEditor.chars","characters")]}),e.jsxs("span",{children:[j.length," ",f("docEditor.blocks","blocks")]}),e.jsxs("span",{children:["~",De.readingTime," ",f("docEditor.readingTime","min read")]})]})]})});zn.displayName="NiceDocumentEditor";const bi=["street","streetNumber","apartment","city","postalCode","state","country"],Je={street:"Street",streetNumber:"Number",apartment:"Apt/Suite",city:"City",postalCode:"Postal Code",state:"State/Province",country:"Country"},Pn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x={},onChange:O,fields:z=bi,placeholders:L={},countries:I,layout:F="vertical",countryFirst:S=!1,validatePostalCode:m},f)=>{const w=K.useNiceAccessMode(k,M);if(w==="hidden")return null;w==="disabled"&&(r=!0),w==="readOnly"&&(d=!0);const{t:b}=K.useNiceTranslation(),j=K.useControlId(M),h=n.useCallback((_,C)=>{O?.({...x,[_]:C})},[x,O]),N=n.useMemo(()=>{if(m&&x.postalCode)return m(x.postalCode,x.country)},[m,x.postalCode,x.country]),T=n.useMemo(()=>S&&z.includes("country")?["country",...z.filter(_=>_!=="country")]:z,[z,S]),P=`nice-address nice-address--${F} nice-size-${$}`;return e.jsxs("div",{ref:f,id:j,className:`${P}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,role:"group","aria-label":t??b("address","Address"),children:[t&&e.jsxs("label",{className:"nice-address__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-address__fields",children:T.map(_=>_==="country"&&I?e.jsxs("div",{className:`nice-address__field nice-address__field--${_}`,children:[e.jsx("label",{className:"nice-address__field-label",children:b(_,Je[_])}),e.jsxs("select",{className:"nice-input nice-select",value:x.country??"",onChange:C=>h("country",C.target.value),disabled:r,"aria-label":b(_,Je[_]),children:[e.jsx("option",{value:"",children:L.country??b("selectCountry","— Select country —")}),I.map(C=>e.jsx("option",{value:C.code,children:C.name},C.code))]})]},_):e.jsxs("div",{className:`nice-address__field nice-address__field--${_}`,children:[e.jsx("label",{className:"nice-address__field-label",children:b(_,Je[_])}),e.jsx("input",{className:`nice-input${_==="postalCode"&&N?" nice-input--error":""}`,type:"text",name:y?`${y}.${_}`:_,value:x[_]??"",onChange:C=>h(_,C.target.value),placeholder:L[_]??"",disabled:r,readOnly:d,"aria-label":b(_,Je[_])}),_==="postalCode"&&N&&e.jsx("span",{className:"nice-error-text",children:N})]},_))}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Pn.displayName="NiceAddressInput";const ji=[{code:"PL",dialCode:"+48",name:"Poland",mask:"### ### ###"},{code:"US",dialCode:"+1",name:"United States",mask:"(###) ###-####"},{code:"GB",dialCode:"+44",name:"United Kingdom",mask:"#### ######"},{code:"DE",dialCode:"+49",name:"Germany",mask:"### ########"},{code:"FR",dialCode:"+33",name:"France",mask:"# ## ## ## ##"},{code:"CZ",dialCode:"+420",name:"Czech Republic",mask:"### ### ###"},{code:"SK",dialCode:"+421",name:"Slovakia",mask:"### ### ###"}],Pt=127397;function _i(t){return String.fromCodePoint(t.charCodeAt(0)+Pt,t.charCodeAt(1)+Pt)}function ki(t,a){if(!a)return t;const i=t.replace(/\D/g,"");let o="",r=0;for(let d=0;d<a.length&&r<i.length;d++)a[d]==="#"?o+=i[r++]:o+=a[d];return o}function lt(t,a){return`${t}${a.replace(/\D/g,"")}`}const Fn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x={},onChange:O,onBlur:z,countryCodes:L=ji,defaultCountry:I="PL",placeholder:F,showFlag:S=!0,validateE164:m=!1},f)=>{const w=K.useNiceAccessMode(k,M);if(w==="hidden")return null;w==="disabled"&&(r=!0),w==="readOnly"&&(d=!0);const{t:b}=K.useNiceTranslation(),j=K.useControlId(M),h=n.useMemo(()=>{const g=x.countryCode??I;return L.find(p=>p.code===g)??L[0]},[x.countryCode,I,L]),[N,T]=n.useState(),P=n.useMemo(()=>ki(x.number??"",h?.mask),[x.number,h]),_=n.useCallback(g=>{const p=L.find(l=>l.code===g);if(!p)return;const s=x.number??"";O?.({countryCode:p.code,dialCode:p.dialCode,number:s,e164:lt(p.dialCode,s)})},[L,x.number,O]),C=n.useCallback(g=>{const p=g.replace(/\D/g,""),s=h;O?.({countryCode:s?.code,dialCode:s?.dialCode,number:p,e164:s?lt(s.dialCode,p):p}),T(void 0)},[h,O]),u=n.useCallback(g=>{if(m&&x.number){const p=lt(h?.dialCode??"",x.number);/^\+\d{7,15}$/.test(p)||T(b("invalidPhone","Invalid phone number"))}z?.(g)},[m,x.number,h,z,b]),B=i||N;return e.jsxs("div",{ref:f,id:j,className:`nice-phone nice-size-${$}${A?` ${A}`:""}${B?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-phone__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-phone__row",children:[e.jsx("select",{className:"nice-phone__country nice-select",value:h?.code,onChange:g=>_(g.target.value),disabled:r,"aria-label":b("countryCode","Country code"),children:L.map(g=>e.jsxs("option",{value:g.code,children:[S?`${_i(g.code)} `:"",g.dialCode," ",g.name]},g.code))}),e.jsx("input",{className:"nice-input nice-phone__number",type:"tel",name:y,value:P,onChange:g=>C(g.target.value),onBlur:u,placeholder:F??h?.mask?.replace(/#/g,"_")??"",disabled:r,readOnly:d,"aria-label":b("phoneNumber","Phone number")})]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),B&&typeof B=="string"&&e.jsx("span",{className:"nice-error-text",children:B})]})});Fn.displayName="NicePhoneInput";const vi=[{code:"PLN",symbol:"zł",name:"Polish Zloty"},{code:"EUR",symbol:"€",name:"Euro"},{code:"USD",symbol:"$",name:"US Dollar"},{code:"GBP",symbol:"£",name:"British Pound"},{code:"CZK",symbol:"Kč",name:"Czech Koruna"},{code:"CHF",symbol:"Fr",name:"Swiss Franc"}],Bn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x,onChange:O,onBlur:z,currency:L="PLN",onCurrencyChange:I,currencies:F=vi,useMinorUnit:S=!1,min:m,max:f,locale:w,placeholder:b,showCurrencySelector:j},h)=>{const N=K.useNiceAccessMode(k,M);if(N==="hidden")return null;N==="disabled"&&(r=!0),N==="readOnly"&&(d=!0);const{t:T}=K.useNiceTranslation(),P=K.useControlId(M),_=n.useMemo(()=>F.find(s=>s.code===L)??F[0],[L,F]),C=_?.decimals??2,u=n.useMemo(()=>x==null?"":(S?x/Math.pow(10,C):x).toFixed(C),[x,S,C]),B=n.useCallback(s=>{const l=s.replace(/[^\d.,\-]/g,"").replace(",",".");if(l===""||l==="-"){O?.(null);return}const c=parseFloat(l);if(isNaN(c))return;const E=S?Math.round(c*Math.pow(10,C)):c;m!=null&&E<m||f!=null&&E>f||O?.(E)},[O,S,C,m,f]),g=j??F.length>1,p=n.useMemo(()=>{if(x==null)return"";const s=S?x/Math.pow(10,C):x;try{return new Intl.NumberFormat(w,{style:"currency",currency:_?.code??"USD",minimumFractionDigits:C}).format(s)}catch{return`${s.toFixed(C)} ${_?.code}`}},[x,S,C,w,_]);return e.jsxs("div",{ref:h,id:P,className:`nice-currency nice-size-${$}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-currency__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-currency__row",children:[g&&e.jsx("select",{className:"nice-currency__select nice-select",value:L,onChange:s=>I?.(s.target.value),disabled:r,"aria-label":T("currency","Currency"),children:F.map(s=>e.jsxs("option",{value:s.code,children:[s.symbol," ",s.code]},s.code))}),!g&&e.jsx("span",{className:"nice-currency__symbol",children:_?.symbol}),e.jsx("input",{className:"nice-input nice-currency__amount",type:"text",inputMode:"decimal",name:y,value:u,onChange:s=>B(s.target.value),onBlur:z,placeholder:b??`0.${"0".repeat(C)}`,disabled:r,readOnly:d,"aria-label":T("amount","Amount")})]}),p&&x!=null&&e.jsx("span",{className:"nice-currency__formatted",children:p}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Bn.displayName="NiceCurrencyInput";let Ni=1;function wi(t){return{id:`new-${Ni++}`,description:"",quantity:1,unitPrice:0,vatRate:t,discount:0,unit:"szt."}}function On(t){const i=t.quantity*t.unitPrice*(1-(t.discount??0)/100),o=Math.round(i*100)/100,r=Math.round(o*(t.vatRate??0)/100*100)/100;return{...t,netAmount:o,grossAmount:o+r}}function Ci(t){const a=t.map(On),i=a.reduce((y,M)=>y+(M.netAmount??0),0),o=a.reduce((y,M)=>y+(M.grossAmount??0),0),r=o-i,d=new Map;for(const y of a){const M=y.vatRate??0,A=d.get(M)??{base:0,amount:0};A.base+=y.netAmount??0,A.amount+=(y.grossAmount??0)-(y.netAmount??0),d.set(M,A)}const $=Array.from(d.entries()).map(([y,M])=>({rate:y,base:Math.round(M.base*100)/100,amount:Math.round(M.amount*100)/100}));return{totalNet:Math.round(i*100)/100,totalVat:Math.round(r*100)/100,totalGross:Math.round(o*100)/100,vatBreakdown:$}}const Hn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x=[],onChange:O,onTotalsChange:z,currencySymbol:L="zł",defaultVatRate:I=23,vatRates:F=[0,5,8,23],units:S=["szt.","h","kg","m","usł."],showDiscount:m=!0,showUnit:f=!0,showTotals:w=!0,editable:b=!0,maxLines:j},h)=>{const N=K.useNiceAccessMode(k,M);if(N==="hidden")return null;N==="disabled"&&(r=!0),N==="readOnly"&&(d=!0);const{t:T}=K.useNiceTranslation(),P=K.useControlId(M),_=n.useMemo(()=>x.map(On),[x]),C=n.useMemo(()=>Ci(x),[x]);n.useEffect(()=>{z?.(C)},[C,z]);const u=n.useCallback((s,l,c)=>{const E=[...x];E[s]={...E[s],[l]:c},O?.(E)},[x,O]),B=n.useCallback(()=>{j&&x.length>=j||O?.([...x,wi(I)])},[x,O,I,j]),g=n.useCallback(s=>{O?.(x.filter((l,c)=>c!==s))},[x,O]),p=s=>`${s.toFixed(2)} ${L}`;return e.jsxs("div",{ref:h,id:P,className:`nice-invoice-lines nice-size-${$}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-invoice-lines__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("table",{className:"nice-invoice-lines__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{className:"nice-il__th-num",children:"#"}),e.jsx("th",{className:"nice-il__th-desc",children:T("description","Description")}),e.jsx("th",{className:"nice-il__th-qty",children:T("qty","Qty")}),f&&e.jsx("th",{className:"nice-il__th-unit",children:T("unit","Unit")}),e.jsx("th",{className:"nice-il__th-price",children:T("unitPrice","Unit Price")}),m&&e.jsx("th",{className:"nice-il__th-disc",children:T("discount","Disc %")}),e.jsx("th",{className:"nice-il__th-vat",children:T("vat","VAT %")}),e.jsx("th",{className:"nice-il__th-net",children:T("net","Net")}),e.jsx("th",{className:"nice-il__th-gross",children:T("gross","Gross")}),b&&!d&&e.jsx("th",{className:"nice-il__th-actions"})]})}),e.jsx("tbody",{children:_.map((s,l)=>e.jsxs("tr",{children:[e.jsx("td",{className:"nice-il__cell-num",children:l+1}),e.jsx("td",{className:"nice-il__cell-desc",children:e.jsx("input",{className:"nice-input",type:"text",value:s.description,onChange:c=>u(l,"description",c.target.value),disabled:r,readOnly:d,placeholder:T("itemDescription","Item description")})}),e.jsx("td",{className:"nice-il__cell-qty",children:e.jsx("input",{className:"nice-input",type:"number",value:s.quantity,onChange:c=>u(l,"quantity",parseFloat(c.target.value)||0),disabled:r,readOnly:d,min:0,step:"any"})}),f&&e.jsx("td",{className:"nice-il__cell-unit",children:e.jsx("select",{className:"nice-select",value:s.unit??"",onChange:c=>u(l,"unit",c.target.value),disabled:r,children:S.map(c=>e.jsx("option",{value:c,children:c},c))})}),e.jsx("td",{className:"nice-il__cell-price",children:e.jsx("input",{className:"nice-input",type:"number",value:s.unitPrice,onChange:c=>u(l,"unitPrice",parseFloat(c.target.value)||0),disabled:r,readOnly:d,min:0,step:"0.01"})}),m&&e.jsx("td",{className:"nice-il__cell-disc",children:e.jsx("input",{className:"nice-input",type:"number",value:s.discount??0,onChange:c=>u(l,"discount",parseFloat(c.target.value)||0),disabled:r,readOnly:d,min:0,max:100})}),e.jsx("td",{className:"nice-il__cell-vat",children:e.jsx("select",{className:"nice-select",value:s.vatRate??0,onChange:c=>u(l,"vatRate",parseInt(c.target.value,10)),disabled:r,children:F.map(c=>e.jsxs("option",{value:c,children:[c,"%"]},c))})}),e.jsx("td",{className:"nice-il__cell-net",children:p(s.netAmount??0)}),e.jsx("td",{className:"nice-il__cell-gross",children:p(s.grossAmount??0)}),b&&!d&&e.jsx("td",{className:"nice-il__cell-actions",children:e.jsx("button",{type:"button",className:"nice-btn nice-btn--icon nice-btn--sm",onClick:()=>g(l),disabled:r,title:T("remove","Remove"),children:"✕"})})]},s.id))})]}),b&&!d&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--outlined nice-btn--sm nice-invoice-lines__add",onClick:B,disabled:r||j!=null&&x.length>=j,children:["+ ",T("addLine","Add line")]}),w&&e.jsxs("div",{className:"nice-invoice-lines__totals",children:[e.jsxs("div",{className:"nice-il__total-row",children:[e.jsxs("span",{children:[T("totalNet","Net total"),":"]}),e.jsx("span",{className:"nice-il__total-value",children:p(C.totalNet)})]}),C.vatBreakdown.map(s=>e.jsxs("div",{className:"nice-il__total-row nice-il__total-row--vat",children:[e.jsxs("span",{children:["VAT ",s.rate,"%:"]}),e.jsx("span",{className:"nice-il__total-value",children:p(s.amount)})]},s.rate)),e.jsxs("div",{className:"nice-il__total-row nice-il__total-row--gross",children:[e.jsxs("span",{children:[T("totalGross","Gross total"),":"]}),e.jsx("span",{className:"nice-il__total-value nice-il__total-value--gross",children:p(C.totalGross)})]})]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Hn.displayName="NiceInvoiceLineEditor";const Un=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x=[],onChange:O,contacts:z=[],onSearch:L,searchDelay:I=300,multiple:F=!1,placeholder:S,onContactClick:m,maxSelections:f},w)=>{const b=K.useNiceAccessMode(k,M);if(b==="hidden")return null;b==="disabled"&&(r=!0),b==="readOnly"&&(d=!0);const{t:j}=K.useNiceTranslation(),h=K.useControlId(M),[N,T]=n.useState(""),[P,_]=n.useState([]),[C,u]=n.useState(!1),[B,g]=n.useState(!1),p=n.useMemo(()=>{const E=[...z,...P],D=new Map(E.map(R=>[R.id,R]));return x.map(R=>D.get(R)).filter(Boolean)},[x,z,P]),s=n.useCallback(E=>{if(T(E),E.length<1){_([]),u(!1);return}if(L){g(!0);const U=setTimeout(async()=>{const q=await L(E);_(q),u(!0),g(!1)},I);return()=>clearTimeout(U)}const D=E.toLowerCase(),R=z.filter(U=>U.name.toLowerCase().includes(D)||U.email?.toLowerCase().includes(D)||U.phone?.includes(E));_(R),u(!0)},[L,z,I]),l=n.useCallback(E=>{if(F)if(x.includes(E.id))O?.(x.filter(D=>D!==E.id));else{if(f&&x.length>=f)return;O?.([...x,E.id])}else O?.([E.id]),u(!1),T("")},[x,O,F,f]),c=n.useCallback(E=>{O?.(x.filter(D=>D!==E))},[x,O]);return e.jsxs("div",{ref:w,id:h,className:`nice-contact-picker nice-size-${$}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-contact-picker__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),p.length>0&&e.jsx("div",{className:"nice-contact-picker__chips",children:p.map(E=>e.jsxs("span",{className:"nice-contact-picker__chip",onClick:()=>m?.(E),children:[E.avatarUrl&&e.jsx("img",{src:E.avatarUrl,alt:"",className:"nice-contact-picker__chip-avatar"}),e.jsx("span",{children:E.name}),!d&&e.jsx("button",{type:"button",className:"nice-contact-picker__chip-remove",onClick:D=>{D.stopPropagation(),c(E.id)},disabled:r,children:"×"})]},E.id))}),!d&&e.jsxs("div",{className:"nice-contact-picker__search",children:[e.jsx("input",{className:"nice-input",type:"text",value:N,onChange:E=>s(E.target.value),onFocus:()=>N.length>0&&u(!0),onBlur:()=>setTimeout(()=>u(!1),200),placeholder:S??j("searchContacts","Search contacts…"),disabled:r,"aria-label":j("searchContacts","Search contacts")}),B&&e.jsx("span",{className:"nice-contact-picker__spinner",children:"⏳"})]}),C&&P.length>0&&e.jsx("div",{className:"nice-contact-picker__dropdown",role:"listbox",children:P.map(E=>e.jsxs("div",{className:`nice-contact-picker__option${x.includes(E.id)?" nice-contact-picker__option--selected":""}`,role:"option","aria-selected":x.includes(E.id),onClick:()=>l(E),children:[E.avatarUrl&&e.jsx("img",{src:E.avatarUrl,alt:"",className:"nice-contact-picker__option-avatar"}),e.jsxs("div",{className:"nice-contact-picker__option-info",children:[e.jsx("span",{className:"nice-contact-picker__option-name",children:E.name}),E.subtitle&&e.jsx("span",{className:"nice-contact-picker__option-subtitle",children:E.subtitle}),E.email&&e.jsx("span",{className:"nice-contact-picker__option-email",children:E.email})]}),E.type&&e.jsx("span",{className:"nice-contact-picker__option-type",children:E.type==="person"?"👤":"🏢"})]},E.id))}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Un.displayName="NiceContactPicker";const Si=["highlight","underline","strikethrough","freehand","text","rect","arrow"],$i={highlight:"🖍️",underline:"⎁",strikethrough:"S̶",freehand:"✏️",text:"T",rect:"▭",arrow:"→",stamp:"🔏"},Kn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",id:y,className:M,style:A,accessMode:H,src:k,annotations:x=[],onAnnotationsChange:O,activeTool:z,onToolChange:L,currentPage:I=1,onPageChange:F,totalPages:S=1,defaultColor:m="#FFFF00",tools:f=Si,author:w,zoom:b=1,onZoomChange:j,onAnnotationClick:h,onAnnotationDelete:N},T)=>{const P=K.useNiceAccessMode(H,y);if(P==="hidden")return null;P==="disabled"&&(r=!0),P==="readOnly"&&(d=!0);const{t:_}=K.useNiceTranslation(),C=K.useControlId(y),u=x.filter(p=>p.page===I),B=n.useCallback(p=>{L?.(z===p?null:p)},[z,L]),g=n.useCallback(p=>{if(d||!z||z==="freehand")return;const s=p.currentTarget.getBoundingClientRect(),l=(p.clientX-s.left)/s.width,c=(p.clientY-s.top)/s.height,E={id:`ann-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,tool:z,page:I,x:l,y:c,color:m,author:w,createdAt:new Date().toISOString(),text:z==="text"?"":void 0};O?.([...x,E])},[d,z,I,m,w,x,O]);return e.jsxs("div",{ref:T,id:C,className:`nice-pdf-annotation nice-size-${$}${M?` ${M}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:A,children:[t&&e.jsxs("div",{className:"nice-pdf-annotation__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),!d&&e.jsxs("div",{className:"nice-pdf-annotation__toolbar",children:[f.map(p=>e.jsx("button",{type:"button",className:`nice-pdf-annotation__tool-btn${z===p?" nice-pdf-annotation__tool-btn--active":""}`,onClick:()=>B(p),disabled:r,title:_(`pdfTool_${p}`,p),children:$i[p]},p)),e.jsx("span",{className:"nice-pdf-annotation__toolbar-sep"}),e.jsx("button",{type:"button",disabled:r,onClick:()=>j?.(Math.max(.25,b-.25)),title:_("zoomOut","Zoom out"),children:"−"}),e.jsxs("span",{className:"nice-pdf-annotation__zoom",children:[Math.round(b*100),"%"]}),e.jsx("button",{type:"button",disabled:r,onClick:()=>j?.(Math.min(4,b+.25)),title:_("zoomIn","Zoom in"),children:"+"})]}),e.jsxs("div",{className:"nice-pdf-annotation__viewport",style:{transform:`scale(${b})`,transformOrigin:"top left"},children:[e.jsx("iframe",{src:k,className:"nice-pdf-annotation__frame",title:_("pdfViewer","PDF Viewer")}),e.jsx("div",{className:"nice-pdf-annotation__layer",onClick:g,children:u.map(p=>e.jsxs("div",{className:`nice-pdf-annotation__mark nice-pdf-annotation__mark--${p.tool}`,style:{left:`${p.x*100}%`,top:`${p.y*100}%`,backgroundColor:p.color},onClick:s=>{s.stopPropagation(),h?.(p)},title:p.text??p.tool,children:[p.text&&e.jsx("span",{children:p.text}),!d&&e.jsx("button",{type:"button",className:"nice-pdf-annotation__mark-delete",onClick:s=>{s.stopPropagation(),N?.(p.id)},children:"×"})]},p.id))})]}),e.jsxs("div",{className:"nice-pdf-annotation__pager",children:[e.jsx("button",{type:"button",disabled:r||I<=1,onClick:()=>F?.(I-1),children:"◀"}),e.jsx("span",{children:_("pageOf","{page} / {total}").replace("{page}",String(I)).replace("{total}",String(S))}),e.jsx("button",{type:"button",disabled:r||I>=S,onClick:()=>F?.(I+1),children:"▶"})]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Kn.displayName="NicePDFAnnotationEditor";const Wn=n.forwardRef(({label:t,helperText:a,error:i,disabled:o,readOnly:r,size:d="md",id:$,className:y,style:M,accessMode:A,pages:H,selectedPageId:k,content:x="",contentFormat:O="html",editing:z=!1,onPageSelect:L,onContentChange:I,onSave:F,onCreatePage:S,onDeletePage:m,onEditToggle:f,onVersionHistory:w,sidebarWidth:b=260,sidebarCollapsed:j=!1,onSidebarToggle:h,searchable:N=!0,onSearch:T},P)=>{const _=K.useNiceAccessMode(A,$);if(_==="hidden")return null;_==="disabled"&&(o=!0),_==="readOnly"&&(r=!0);const{t:C}=K.useNiceTranslation(),u=K.useControlId($),[B,g]=n.useState(""),[p,s]=n.useState(""),[l,c]=n.useState(!1),E=n.useMemo(()=>{const q=Q=>{for(const W of Q){if(W.id===k)return W;if(W.children){const ae=q(W.children);if(ae)return ae}}};return q(H)},[H,k]),D=n.useCallback(q=>{g(q),T?.(q)},[T]),R=n.useCallback(()=>{p.trim()&&(S?.(k??null,p.trim()),s(""),c(!1))},[p,k,S]),U=(q,Q=0)=>e.jsx("ul",{className:"nice-wiki__tree",style:{paddingLeft:Q>0?16:0},children:q.map(W=>e.jsxs("li",{className:"nice-wiki__tree-item",children:[e.jsxs("div",{className:`nice-wiki__tree-node${W.id===k?" nice-wiki__tree-node--active":""}${W.isDraft?" nice-wiki__tree-node--draft":""}`,onClick:()=>L?.(W),role:"treeitem","aria-selected":W.id===k,children:[e.jsx("span",{className:"nice-wiki__tree-icon",children:W.children?.length?"📁":"📄"}),e.jsx("span",{className:"nice-wiki__tree-title",children:W.title}),W.isDraft&&e.jsx("span",{className:"nice-wiki__tree-draft",children:C("draft","Draft")})]}),W.children&&W.children.length>0&&U(W.children,Q+1)]},W.id))});return e.jsxs("div",{ref:P,id:u,className:`nice-wiki nice-size-${d}${y?` ${y}`:""}${o?" nice-disabled":""}`,style:M,children:[!j&&e.jsxs("aside",{className:"nice-wiki__sidebar",style:{width:b},children:[e.jsxs("div",{className:"nice-wiki__sidebar-header",children:[e.jsx("span",{className:"nice-wiki__sidebar-title",children:t??C("wiki","Wiki")}),h&&e.jsx("button",{type:"button",className:"nice-wiki__sidebar-toggle",onClick:()=>h(!0),children:"«"})]}),N&&e.jsx("input",{type:"text",className:"nice-input nice-wiki__search",value:B,onChange:q=>D(q.target.value),placeholder:C("searchPages","Search pages…"),disabled:o}),e.jsx("div",{className:"nice-wiki__page-tree",role:"tree",children:U(H)}),S&&!r&&e.jsx("div",{className:"nice-wiki__sidebar-footer",children:l?e.jsxs("div",{className:"nice-wiki__create-form",children:[e.jsx("input",{type:"text",className:"nice-input",value:p,onChange:q=>s(q.target.value),placeholder:C("pageTitle","Page title"),onKeyDown:q=>q.key==="Enter"&&R(),disabled:o}),e.jsx("button",{type:"button",disabled:o||!p.trim(),onClick:R,children:"✓"}),e.jsx("button",{type:"button",onClick:()=>c(!1),children:"✕"})]}):e.jsxs("button",{type:"button",className:"nice-wiki__add-page",onClick:()=>c(!0),disabled:o,children:["+ ",C("newPage","New page")]})})]}),j&&h&&e.jsx("button",{type:"button",className:"nice-wiki__sidebar-expand",onClick:()=>h(!1),children:"»"}),e.jsx("main",{className:"nice-wiki__content",children:E?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-wiki__content-header",children:[e.jsx("h1",{className:"nice-wiki__page-title",children:E.title}),e.jsxs("div",{className:"nice-wiki__content-actions",children:[f&&!r&&e.jsx("button",{type:"button",disabled:o,onClick:()=>f(!z),children:z?C("preview","Preview"):C("edit","Edit")}),w&&e.jsx("button",{type:"button",disabled:o,onClick:()=>w(E.id),children:C("history","History")}),m&&!r&&e.jsx("button",{type:"button",className:"nice-btn--danger",disabled:o,onClick:()=>m(E.id),children:C("delete","Delete")})]})]}),E.updatedAt&&e.jsxs("div",{className:"nice-wiki__page-meta",children:[E.updatedBy&&e.jsxs("span",{children:[C("lastEditedBy","Last edited by")," ",E.updatedBy]}),e.jsx("span",{children:new Date(E.updatedAt).toLocaleDateString()})]}),z?e.jsxs("div",{className:"nice-wiki__editor",children:[e.jsx("textarea",{className:"nice-wiki__editor-textarea",value:x,onChange:q=>I?.(q.target.value),disabled:o}),F&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary",disabled:o,onClick:()=>F(E.id,x),children:C("save","Save")})]}):e.jsx("div",{className:"nice-wiki__viewer",children:O==="html"?e.jsx("div",{className:"nice-wiki__html",dangerouslySetInnerHTML:{__html:K.sanitizeHtml(x)}}):e.jsx("pre",{className:"nice-wiki__markdown",children:x})})]}):e.jsx("div",{className:"nice-wiki__empty",children:e.jsx("p",{children:C("selectPage","Select a page from the sidebar or create a new one.")})})}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Wn.displayName="NiceWiki";const Mi=[{code:"PL",label:"Polska",prefix:"PL",pattern:/^\d{10}$/,placeholder:"1234567890"},{code:"DE",label:"Deutschland",prefix:"DE",pattern:/^\d{9}$/,placeholder:"123456789"},{code:"GB",label:"United Kingdom",prefix:"GB",pattern:/^\d{9}(\d{3})?$/,placeholder:"123456789"},{code:"FR",label:"France",prefix:"FR",pattern:/^[A-Z0-9]{2}\d{9}$/,placeholder:"XX123456789"},{code:"CZ",label:"Česko",prefix:"CZ",pattern:/^\d{8,10}$/,placeholder:"12345678"},{code:"SK",label:"Slovensko",prefix:"SK",pattern:/^\d{10}$/,placeholder:"1234567890"},{code:"IT",label:"Italia",prefix:"IT",pattern:/^\d{11}$/,placeholder:"12345678901"},{code:"ES",label:"España",prefix:"ES",pattern:/^[A-Z0-9]\d{7}[A-Z0-9]$/,placeholder:"X1234567X"}],Vn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x="",onChange:O,countryCode:z="PL",onCountryChange:L,countries:I=Mi,showCountrySelector:F=!0,autoPrefixVat:S=!0,validationResult:m,onValidateRequest:f,placeholder:w},b)=>{const j=K.useNiceAccessMode(k,M);if(j==="hidden")return null;j==="disabled"&&(r=!0),j==="readOnly"&&(d=!0);const{t:h}=K.useNiceTranslation(),N=K.useControlId(M),T=n.useMemo(()=>I.find(B=>B.code===z)??I[0],[I,z]),P=n.useCallback(B=>{let g=B.toUpperCase();return T&&g.startsWith(T.prefix)&&(g=g.slice(T.prefix.length)),T?T.pattern.test(g):g.length>0},[T]),_=n.useCallback(B=>{let g=B.target.value.replace(/\s/g,"");O?.(g,P(g))},[O,P]),C=S&&x&&T&&!x.toUpperCase().startsWith(T.prefix)?`${T.prefix}${x}`:x,u=P(x);return e.jsxs("div",{ref:b,id:N,className:`nice-vat-input nice-size-${$}${A?` ${A}`:""}${i||!u&&x.length>0?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-vat-input__label",htmlFor:`${N}-input`,children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-vat-input__row",children:[F&&e.jsx("select",{className:"nice-vat-input__country",value:z,onChange:B=>L?.(B.target.value),disabled:r||d,children:I.map(B=>e.jsx("option",{value:B.code,children:B.prefix},B.code))}),e.jsx("input",{id:`${N}-input`,className:"nice-input nice-vat-input__field",type:"text",name:y,value:x,onChange:_,readOnly:d,disabled:r,placeholder:w??T?.placeholder,required:o,"aria-invalid":!u&&x.length>0}),f&&x.length>0&&e.jsx("button",{type:"button",className:"nice-vat-input__verify",disabled:r||!u,onClick:()=>f(S?C:x,z),title:h("verifyVat","Verify VAT number"),children:"🔍"})]}),m&&e.jsxs("div",{className:`nice-vat-input__result nice-vat-input__result--${m.valid?"valid":"invalid"}`,children:[m.valid?"✅":"❌"," ",m.companyName??m.error??(m.valid?h("vatValid","VAT number valid"):h("vatInvalid","VAT number invalid"))]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Vn.displayName="NiceVatInput";const Ti=[{id:"pl-23",label:"23%",rate:.23,countryCode:"PL",category:"standard",isDefault:!0},{id:"pl-8",label:"8%",rate:.08,countryCode:"PL",category:"reduced"},{id:"pl-5",label:"5%",rate:.05,countryCode:"PL",category:"reduced"},{id:"pl-0",label:"0%",rate:0,countryCode:"PL",category:"zero"},{id:"pl-zw",label:"zw.",rate:0,countryCode:"PL",category:"exempt"},{id:"pl-np",label:"n.p.",rate:0,countryCode:"PL",category:"exempt"}],Yn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x,onChange:O,rates:z,countryCode:L,placeholder:I,showPercentage:F=!0},S)=>{const m=K.useNiceAccessMode(k,M);if(m==="hidden")return null;m==="disabled"&&(r=!0),m==="readOnly"&&(d=!0);const{t:f}=K.useNiceTranslation(),w=K.useControlId(M),b=n.useMemo(()=>{const h=z??Ti;return L?h.filter(N=>!N.countryCode||N.countryCode===L):h},[z,L]),j=n.useCallback(h=>{const N=h.target.value,T=b.find(P=>P.id===N);T&&O?.(N,T)},[O,b]);return e.jsxs("div",{ref:S,id:w,className:`nice-tax-rate nice-size-${$}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-tax-rate__label",htmlFor:`${w}-select`,children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("select",{id:`${w}-select`,className:"nice-select nice-tax-rate__select",name:y,value:x??"",onChange:j,disabled:r||d,required:o,children:[e.jsx("option",{value:"",disabled:!0,children:I??f("selectRate","Select rate…")}),b.map(h=>e.jsxs("option",{value:h.id,children:[h.label,F&&h.category!=="exempt"?` (${(h.rate*100).toFixed(0)}%)`:""]},h.id))]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Yn.displayName="NiceTaxRatePicker";const Ei={asset:"var(--nice-color-info, #5bc0de)",liability:"var(--nice-color-warning, #f0ad4e)",equity:"var(--nice-color-success, #5cb85c)",revenue:"var(--nice-color-primary, #337ab7)",expense:"var(--nice-color-error, #d9534f)"},Gn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",name:y,id:M,className:A,style:H,accessMode:k,value:x,onChange:O,accounts:z,treeView:L=!1,placeholder:I,searchable:F=!0,showType:S=!0,onSearch:m},f)=>{const w=K.useNiceAccessMode(k,M);if(w==="hidden")return null;w==="disabled"&&(r=!0),w==="readOnly"&&(d=!0);const{t:b}=K.useNiceTranslation(),j=K.useControlId(M),[h,N]=n.useState(""),[T,P]=n.useState(!1),_=n.useMemo(()=>{const p=s=>{for(const l of s){if(l.code===x)return l;if(l.children){const c=p(l.children);if(c)return c}}};return p(z)},[z,x]),C=n.useMemo(()=>{const p=[],s=l=>{for(const c of l)p.push(c),c.children&&s(c.children)};return s(z),p},[z]),u=n.useMemo(()=>{if(!h)return C;const p=h.toLowerCase();return C.filter(s=>s.code.toLowerCase().includes(p)||s.name.toLowerCase().includes(p))},[C,h]),B=n.useCallback(p=>{N(p),m?.(p),P(!0)},[m]),g=n.useCallback(p=>{O?.(p.code,p),P(!1),N("")},[O]);return e.jsxs("div",{ref:f,id:j,className:`nice-account-picker nice-size-${$}${A?` ${A}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:H,children:[t&&e.jsxs("label",{className:"nice-account-picker__label",htmlFor:`${j}-input`,children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-account-picker__control",children:F&&!d?e.jsx("input",{id:`${j}-input`,className:"nice-input",type:"text",value:T?h:_?`${_.code} — ${_.name}`:"",onChange:p=>B(p.target.value),onFocus:()=>{N(""),P(!0)},onBlur:()=>setTimeout(()=>P(!1),200),placeholder:I??b("searchAccount","Search account…"),disabled:r,required:o}):e.jsx("div",{className:"nice-account-picker__display",children:_?`${_.code} — ${_.name}`:I??b("selectAccount","Select account…")})}),T&&u.length>0&&e.jsx("div",{className:"nice-account-picker__dropdown",role:"listbox",children:u.map(p=>e.jsxs("div",{className:`nice-account-picker__option${p.code===x?" nice-account-picker__option--selected":""}${p.isActive===!1?" nice-account-picker__option--inactive":""}`,role:"option","aria-selected":p.code===x,onClick:()=>g(p),children:[S&&p.type&&e.jsx("span",{className:"nice-account-picker__type",style:{color:Ei[p.type]},title:p.type,children:"●"}),e.jsx("span",{className:"nice-account-picker__code",children:p.code}),e.jsx("span",{className:"nice-account-picker__name",children:p.name})]},p.code))}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Gn.displayName="NiceAccountPicker";const Xn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",id:y,className:M,style:A,accessMode:H,mode:k="manual",onScan:x,onModeChange:O,beepOnScan:z=!0,beepFrequency:L=1800,beepDuration:I=150,placeholder:F,scanHistory:S=[],showHistory:m=!0,maxHistory:f=10,autoFocus:w=!0,onCameraFrame:b},j)=>{const h=K.useNiceAccessMode(H,y);if(h==="hidden")return null;h==="disabled"&&(r=!0),h==="readOnly"&&(d=!0);const{t:N}=K.useNiceTranslation(),T=K.useControlId(y),[P,_]=n.useState(""),C=n.useRef(null),u=n.useRef(null),B=n.useCallback(()=>{if(z)try{u.current||(u.current=new AudioContext);const s=u.current,l=s.createOscillator(),c=s.createGain();l.connect(c),c.connect(s.destination),l.frequency.value=L,l.type="square",c.gain.value=.3,l.start(),l.stop(s.currentTime+I/1e3)}catch{}},[z,L,I]),g=n.useCallback(()=>{P.trim()&&(B(),x?.({value:P.trim(),format:"manual",scannedAt:new Date}),_(""),C.current?.focus())},[P,x,B]),p=S.slice(0,f);return e.jsxs("div",{ref:j,id:T,className:`nice-scanner nice-size-${$}${M?` ${M}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:A,children:[t&&e.jsxs("div",{className:"nice-scanner__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-scanner__modes",children:[e.jsxs("button",{type:"button",className:`nice-scanner__mode-btn${k==="camera"?" nice-scanner__mode-btn--active":""}`,onClick:()=>O?.("camera"),disabled:r,children:["📷 ",N("camera","Camera")]}),e.jsxs("button",{type:"button",className:`nice-scanner__mode-btn${k==="manual"?" nice-scanner__mode-btn--active":""}`,onClick:()=>O?.("manual"),disabled:r,children:["⌨️ ",N("manual","Manual")]})]}),k==="camera"&&e.jsx("div",{className:"nice-scanner__camera",children:e.jsx("div",{className:"nice-scanner__viewfinder",children:e.jsxs("div",{className:"nice-scanner__viewfinder-overlay",children:[e.jsx("span",{children:"📷"}),e.jsx("p",{children:N("cameraPlaceholder","Camera preview — connect scanner adapter")})]})})}),k==="manual"&&!d&&e.jsxs("div",{className:"nice-scanner__manual",children:[e.jsx("input",{ref:C,className:"nice-input nice-scanner__input",type:"text",value:P,onChange:s=>_(s.target.value),onKeyDown:s=>s.key==="Enter"&&g(),placeholder:F??N("enterCode","Enter or scan code…"),disabled:r,autoFocus:w}),e.jsx("button",{type:"button",className:"nice-scanner__submit",onClick:g,disabled:r||!P.trim(),children:"✓"})]}),m&&p.length>0&&e.jsxs("div",{className:"nice-scanner__history",children:[e.jsx("div",{className:"nice-scanner__history-label",children:N("recentScans","Recent scans")}),p.map((s,l)=>e.jsxs("div",{className:"nice-scanner__history-item",children:[e.jsx("span",{className:"nice-scanner__history-value",children:s.value}),s.format&&e.jsx("span",{className:"nice-scanner__history-format",children:s.format}),e.jsx("span",{className:"nice-scanner__history-time",children:s.scannedAt.toLocaleTimeString()})]},l))]}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});Xn.displayName="NiceScannerControl";const qn=n.forwardRef(({label:t,helperText:a,error:i,required:o,disabled:r,readOnly:d,size:$="md",id:y,className:M,style:A,accessMode:H,value:k="",onChange:x,onComplete:O,length:z=4,masked:L=!0,showKeypad:I=!1,autoSubmit:F=!0,shake:S=!1,placeholderChar:m="·"},f)=>{const w=K.useNiceAccessMode(H,y);if(w==="hidden")return null;w==="disabled"&&(r=!0),w==="readOnly"&&(d=!0);const{t:b}=K.useNiceTranslation(),j=K.useControlId(y),h=n.useRef([]),[N,T]=n.useState(!1);n.useEffect(()=>{if(S){T(!0);const B=setTimeout(()=>T(!1),500);return()=>clearTimeout(B)}},[S]);const P=k.split("").slice(0,z);for(;P.length<z;)P.push("");const _=n.useCallback((B,g)=>{const p=[...P];p[B]=g;const s=p.join("");x?.(s),g&&B<z-1&&h.current[B+1]?.focus(),F&&s.length===z&&s.indexOf("")===-1&&O?.(s)},[P,z,x,O,F]),C=n.useCallback((B,g)=>{B.key==="Backspace"&&!P[g]&&g>0&&(h.current[g-1]?.focus(),_(g-1,"")),B.key==="ArrowLeft"&&g>0&&h.current[g-1]?.focus(),B.key==="ArrowRight"&&g<z-1&&h.current[g+1]?.focus()},[P,z,_]),u=n.useCallback(B=>{if(B==="clear"){x?.(""),h.current[0]?.focus();return}if(B==="backspace"){const g=k.slice(0,-1);x?.(g);const p=Math.max(0,g.length-1);h.current[p]?.focus();return}if(k.length<z){const g=k+B;x?.(g),g.length<z&&h.current[g.length]?.focus(),F&&g.length===z&&O?.(g)}},[k,z,x,O,F]);return e.jsxs("div",{ref:f,id:j,className:`nice-pin nice-size-${$}${N?" nice-pin--shake":""}${M?` ${M}`:""}${i?" nice-error":""}${r?" nice-disabled":""}`,style:A,children:[t&&e.jsxs("label",{className:"nice-pin__label",children:[t,o&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-pin__boxes",children:P.map((B,g)=>e.jsx("input",{ref:p=>{h.current[g]=p},className:"nice-pin__box",type:L?"password":"text",inputMode:"numeric",maxLength:1,value:B,onChange:p=>{const s=p.target.value.replace(/\D/g,"");s.length<=1&&_(g,s)},onKeyDown:p=>C(p,g),disabled:r,readOnly:d,placeholder:m,"aria-label":`${b("digit","Digit")} ${g+1}`},g))}),I&&!d&&e.jsx("div",{className:"nice-pin__keypad",children:["1","2","3","4","5","6","7","8","9","clear","0","backspace"].map(B=>e.jsx("button",{type:"button",className:`nice-pin__key${B==="clear"||B==="backspace"?" nice-pin__key--action":""}`,onClick:()=>u(B),disabled:r,children:B==="clear"?"C":B==="backspace"?"⌫":B},B))}),a&&e.jsx("span",{className:"nice-helper-text",children:a}),i&&typeof i=="string"&&e.jsx("span",{className:"nice-error-text",children:i})]})});qn.displayName="NicePinCodeInput";exports.COUNTRIES=yn;exports.DEFAULT_ASPECT_RATIOS=jn;exports.EMOJI_DATA=nt;exports.GRADIENT_PRESETS=Zt;exports.NiceAccountPicker=Gn;exports.NiceAddressInput=Pn;exports.NiceAutocomplete=ua;exports.NiceCalendar=gt;exports.NiceCascadeSelect=wn;exports.NiceCodeDiffEditor=hn;exports.NiceCodeEditor=yt;exports.NiceCodeEditor$1=Ka;exports.NiceCodeEditorAI=Wa;exports.NiceColorPalette=Xt;exports.NiceContactPicker=Un;exports.NiceCountryPicker=xn;exports.NiceCropEditor=_n;exports.NiceCurrencyInput=Bn;exports.NiceDatePicker=Ot;exports.NiceDateRangeBox=ya;exports.NiceDateTimePicker=en;exports.NiceDocumentEditor=zn;exports.NiceDropDownBox=ja;exports.NiceDropZone=mi;exports.NiceEmojiPicker=bn;exports.NiceFilePickerButton=pi;exports.NiceFileUpload=Ln;exports.NiceFloatingLabelInput=kn;exports.NiceFloatingLabelTextarea=vn;exports.NiceForm=Qt;exports.NiceGradientPicker=Jt;exports.NiceHtmlEditor=ft;exports.NiceHtmlEditor$1=Sa;exports.NiceHtmlEditorAI=Ta;exports.NiceImageAnnotator=Nn;exports.NiceImageEditor=Mn;exports.NiceInPlaceEditor=Sn;exports.NiceInputOtp=on;exports.NiceInvoiceLineEditor=Hn;exports.NiceKnob=rn;exports.NiceLookup=ma;exports.NiceMarkdownEditor=$n;exports.NiceMaskedInput=nn;exports.NiceMention=cn;exports.NiceMultiColumnComboBox=Cn;exports.NicePDFAnnotationEditor=Kn;exports.NicePasswordInput=sn;exports.NicePhoneInput=Fn;exports.NicePickList=mn;exports.NicePinCodeInput=qn;exports.NiceRadioGroup=ea;exports.NiceRangeSlider=ba;exports.NiceRating=an;exports.NiceScannerControl=Xn;exports.NiceSignature=Va;exports.NiceSignatureDisplay=Ya;exports.NiceSignaturePad=Tn;exports.NiceSimpleCodeEditor=gn;exports.NiceSlider=Ht;exports.NiceTagBox=xa;exports.NiceTaxRatePicker=Yn;exports.NiceTextArea=Bt;exports.NiceTimePicker=tn;exports.NiceTransferList=fn;exports.NiceTreeSelect=un;exports.NiceVatInput=Vn;exports.NiceWiki=Wn;exports.applyPreset=tt;exports.contrastRatio=Qe;exports.cssToGradient=qt;exports.generateHarmony=Ye;exports.generateVariations=Vt;exports.gradientToCss=ut;exports.hexToHsv=We;exports.hexToRgb=Xe;exports.hsvToHex=Re;exports.hsvToRgb=Ut;exports.randomPalette=Gt;exports.rgbToHex=Wt;exports.rgbToHsl=Kt;exports.rgbToHsv=pt;exports.wcagLevel=et;