@nice2dev/ui 1.0.17 → 1.0.19

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 (180) hide show
  1. package/CHANGELOG.md +316 -0
  2. package/dist/NiceAlertDialog.doc-BST0-aVs.cjs +14 -0
  3. package/dist/NiceAlertDialog.doc-GRpJU_5Y.js +38 -0
  4. package/dist/NiceAnimatePresence.doc-BrttRpeS.js +36 -0
  5. package/dist/NiceAnimatePresence.doc-IdEWrSnT.cjs +12 -0
  6. package/dist/NiceCalendarScheduler.doc-Cc-DFMhR.js +33 -0
  7. package/dist/NiceCalendarScheduler.doc-TPe0kRBN.cjs +9 -0
  8. package/dist/NiceCameraFeed.doc-BJl0gdWv.js +31 -0
  9. package/dist/NiceCameraFeed.doc-Bt4eZ8MH.cjs +7 -0
  10. package/dist/NiceChip.doc-Bccf4IQe.cjs +7 -0
  11. package/dist/NiceChip.doc-DEsqjL7z.js +31 -0
  12. package/dist/NiceCombobox.doc-8hMzrsdM.js +34 -0
  13. package/dist/NiceCombobox.doc-C5IPnVuz.cjs +10 -0
  14. package/dist/NiceConfigProvider.doc-CKIudO44.js +32 -0
  15. package/dist/NiceConfigProvider.doc-bMLQj3Zx.cjs +8 -0
  16. package/dist/NiceCronEditor.doc-BThdELxx.js +31 -0
  17. package/dist/NiceCronEditor.doc-w_TbOWFo.cjs +7 -0
  18. package/dist/NiceDataList.doc-DHXrpTPT.cjs +9 -0
  19. package/dist/NiceDataList.doc-R8SchHqZ.js +33 -0
  20. package/dist/NiceDiagram.doc-CASS0Tnj.cjs +8 -0
  21. package/dist/NiceDiagram.doc-DGX-Hwhg.js +32 -0
  22. package/dist/NiceDocPage.doc-BVBe27kj.cjs +1 -0
  23. package/dist/NiceDocPage.doc-CDcL3Sqt.js +25 -0
  24. package/dist/NiceDrawingCanvas.doc-DYYFKKMW.js +32 -0
  25. package/dist/NiceDrawingCanvas.doc-wa684gbC.cjs +8 -0
  26. package/dist/NiceDropdown.doc-D2NS9hBT.js +35 -0
  27. package/dist/NiceDropdown.doc-dAgER8da.cjs +11 -0
  28. package/dist/NiceDropzone.doc-CVVNc9SE.cjs +9 -0
  29. package/dist/NiceDropzone.doc-aeajYWqU.js +33 -0
  30. package/dist/NiceEnergyMonitor.doc-BBnVKuwf.js +32 -0
  31. package/dist/NiceEnergyMonitor.doc-lf6CCIYi.cjs +8 -0
  32. package/dist/NiceErrorBoundary-COY0cEsF.js +762 -0
  33. package/dist/NiceErrorBoundary-CR-_ZScD.cjs +1 -0
  34. package/dist/NiceErrorBoundary-DBCCmeyl.js +770 -0
  35. package/dist/NiceErrorBoundary-V6wkSSLP.cjs +1 -0
  36. package/dist/NiceExpressionBuilder.doc-CTjqEcZR.cjs +8 -0
  37. package/dist/NiceExpressionBuilder.doc-Cu_ORFhd.js +32 -0
  38. package/dist/NiceFileExplorer.doc-B0aN041v.js +32 -0
  39. package/dist/NiceFileExplorer.doc-DNHYQF_t.cjs +8 -0
  40. package/dist/NiceFloatingActionButton.doc-BOlJwq4S.cjs +7 -0
  41. package/dist/NiceFloatingActionButton.doc-oYnwvMP9.js +31 -0
  42. package/dist/NiceFontPicker.doc-B10vOqeF.cjs +8 -0
  43. package/dist/NiceFontPicker.doc-DuPp0cDP.js +32 -0
  44. package/dist/NiceForm-COk1rNVa.js +5357 -0
  45. package/dist/NiceForm-CU8Dldq-.cjs +382 -0
  46. package/dist/NiceForm-DLADlHAQ.js +5383 -0
  47. package/dist/NiceForm-DUkduLqG.cjs +382 -0
  48. package/dist/NiceForm.css +1 -1
  49. package/dist/NiceGestureHandler.doc-9GGvVnM5.cjs +8 -0
  50. package/dist/NiceGestureHandler.doc-BduQU3SA.js +32 -0
  51. package/dist/NiceHeader.doc-Cxoy_f_k.cjs +6 -0
  52. package/dist/NiceHeader.doc-DjAVl-T4.js +30 -0
  53. package/dist/NiceImage.doc-COy4iVy1.js +34 -0
  54. package/dist/NiceImage.doc-CvnaTRj8.cjs +10 -0
  55. package/dist/NiceInPlaceEditor.doc-8nC6Kqvn.cjs +1 -0
  56. package/dist/NiceInPlaceEditor.doc-gF1XPyu5.js +25 -0
  57. package/dist/NiceInteractiveTimeline.doc-BTeASFR4.js +50 -0
  58. package/dist/NiceInteractiveTimeline.doc-WMOVQhMe.cjs +11 -0
  59. package/dist/NiceJsonEditor.doc-BpVa-AlY.js +31 -0
  60. package/dist/NiceJsonEditor.doc-DeyoVDQw.cjs +7 -0
  61. package/dist/NiceMegaMenu.doc-CO34gN43.cjs +7 -0
  62. package/dist/NiceMegaMenu.doc-DpchTBL6.js +31 -0
  63. package/dist/NiceMentionInput.doc-O0W58Unu.js +32 -0
  64. package/dist/NiceMentionInput.doc-ZSPjBsZc.cjs +8 -0
  65. package/dist/NiceModal-CIITx65V.cjs +1 -0
  66. package/dist/NiceModal-CN23FZsc.js +95 -0
  67. package/dist/NiceModal-CUdeVj-j.js +95 -0
  68. package/dist/NiceModal-Cc8R-DpX.cjs +1 -0
  69. package/dist/NiceModuleLifecyclePanel-4UEsYB5r.js +6553 -0
  70. package/dist/NiceModuleLifecyclePanel-BDnsr5ZW.js +6349 -0
  71. package/dist/NiceModuleLifecyclePanel-C6agdtTI.cjs +1 -0
  72. package/dist/NiceModuleLifecyclePanel-F1uN0gMh.cjs +1 -0
  73. package/dist/NiceModuleLifecyclePanel.css +1 -1
  74. package/dist/NiceMotion.doc-COF5BldG.cjs +9 -0
  75. package/dist/NiceMotion.doc-utheTBgM.js +33 -0
  76. package/dist/NiceMultiColumnComboBox.doc-Ben0Q0J0.cjs +1 -0
  77. package/dist/NiceMultiColumnComboBox.doc-CK1DppZI.js +25 -0
  78. package/dist/NiceNotificationList.doc-CBWusjJX.cjs +7 -0
  79. package/dist/NiceNotificationList.doc-D7lQIxK0.js +31 -0
  80. package/dist/NiceOfflineSync.doc-BLQFyOf2.cjs +8 -0
  81. package/dist/NiceOfflineSync.doc-CKWFmR3b.js +32 -0
  82. package/dist/NicePagination-B4U0LwZy.js +171 -0
  83. package/dist/NicePagination-CGQf54a9.cjs +1 -0
  84. package/dist/NicePagination-Cqr3Pe_F.js +171 -0
  85. package/dist/NicePagination-DyWWdtb3.cjs +1 -0
  86. package/dist/NicePinCodeInput-C6zJxUVf.cjs +419 -0
  87. package/dist/NicePinCodeInput-DG_-eXXJ.cjs +419 -0
  88. package/dist/NicePinCodeInput-g-yUiepm.js +11875 -0
  89. package/dist/NicePinCodeInput-ltwzQf4r.js +12240 -0
  90. package/dist/NicePinCodeInput.css +1 -1
  91. package/dist/NicePreview.doc-Cl7_5MVR.js +30 -0
  92. package/dist/NicePreview.doc-atKISvmp.cjs +6 -0
  93. package/dist/NicePropertyGrid.doc-D6xljYe1.cjs +7 -0
  94. package/dist/NicePropertyGrid.doc-nX2etusg.js +31 -0
  95. package/dist/NiceRadio.doc-BTURz62X.js +27 -0
  96. package/dist/NiceRadio.doc-Cc8-1vbn.cjs +3 -0
  97. package/dist/NiceRecurrencePicker.doc-78HjPJm0.js +31 -0
  98. package/dist/NiceRecurrencePicker.doc-vC2YmCXF.cjs +7 -0
  99. package/dist/NiceRichTextEditor.doc-ClPCkzCd.cjs +6 -0
  100. package/dist/NiceRichTextEditor.doc-CtmV9UvX.js +30 -0
  101. package/dist/NiceSavedQueryPanel-BIXW0y1X.js +6455 -0
  102. package/dist/NiceSavedQueryPanel-CE3QR4RY.js +6446 -0
  103. package/dist/NiceSavedQueryPanel-CFHwMDIx.cjs +596 -0
  104. package/dist/NiceSavedQueryPanel-DSnj-3Es.cjs +596 -0
  105. package/dist/NiceSavedQueryPanel.css +1 -1
  106. package/dist/NiceSceneSelector.doc-CY2OmaWQ.cjs +7 -0
  107. package/dist/NiceSceneSelector.doc-UsVgDrw1.js +31 -0
  108. package/dist/NiceScrollArea.doc-C6Y-odUa.js +27 -0
  109. package/dist/NiceScrollArea.doc-LdxDrGDY.cjs +3 -0
  110. package/dist/NiceSheet.doc-CsIu3Y1G.cjs +11 -0
  111. package/dist/NiceSheet.doc-DLfSY-MA.js +35 -0
  112. package/dist/NiceSpeedDial.doc-CSWvNR9n.cjs +7 -0
  113. package/dist/NiceSpeedDial.doc-DqnpBcMy.js +31 -0
  114. package/dist/NiceSplitPane.doc-Ck_FvdL6.cjs +9 -0
  115. package/dist/NiceSplitPane.doc-Di68JZuy.js +33 -0
  116. package/dist/NiceSpotlight.doc-CM4PnsHE.js +34 -0
  117. package/dist/NiceSpotlight.doc-Dm_B-kUJ.cjs +10 -0
  118. package/dist/NiceStepNavigation.doc-DXraCs7t.js +31 -0
  119. package/dist/NiceStepNavigation.doc-TSy2dWmf.cjs +7 -0
  120. package/dist/NiceSteps.doc-C_mkhnez.cjs +10 -0
  121. package/dist/NiceSteps.doc-PW1zubHM.js +34 -0
  122. package/dist/NiceSwitch.doc-CLc7OxrE.cjs +6 -0
  123. package/dist/NiceSwitch.doc-dGMMY4es.js +30 -0
  124. package/dist/NiceTabs-32xjguOv.cjs +1 -0
  125. package/dist/NiceTabs-B9zxj6qd.js +1657 -0
  126. package/dist/NiceTabs-Blk0h4jY.js +1624 -0
  127. package/dist/NiceTabs-CNauJ4fu.cjs +1 -0
  128. package/dist/NiceTransition.doc-BmImVoB8.js +35 -0
  129. package/dist/NiceTransition.doc-GA1N91ON.cjs +11 -0
  130. package/dist/NiceTree.doc-D7SCXljC.js +40 -0
  131. package/dist/NiceTree.doc-DZx3hUwY.cjs +16 -0
  132. package/dist/NiceUnitConverter.doc-DmiyYOH_.cjs +10 -0
  133. package/dist/NiceUnitConverter.doc-YnzD3uKT.js +34 -0
  134. package/dist/NiceVirtualGrid.doc-DI2c9ckY.js +35 -0
  135. package/dist/NiceVirtualGrid.doc-rtwudxTG.cjs +11 -0
  136. package/dist/NiceVirtualList.doc-BpoTiXoV.js +31 -0
  137. package/dist/NiceVirtualList.doc-C8q-Hfl0.cjs +7 -0
  138. package/dist/NiceWindow-B4jA_-hi.js +1409 -0
  139. package/dist/NiceWindow-Bo_yCa1o.js +1418 -0
  140. package/dist/NiceWindow-DPzJxOfx.cjs +1 -0
  141. package/dist/NiceWindow-UpKllge7.cjs +1 -0
  142. package/dist/charts-0BEMJ0Xt.js +4657 -0
  143. package/dist/charts-C60va95_.js +4657 -0
  144. package/dist/charts-CbxmU6Z2.cjs +761 -0
  145. package/dist/charts-D_I1iwel.cjs +761 -0
  146. package/dist/charts.cjs +1 -1
  147. package/dist/charts.css +1 -1
  148. package/dist/charts.d.ts +19 -19
  149. package/dist/charts.mjs +1 -1
  150. package/dist/core-BIA5_uSq.js +22316 -0
  151. package/dist/core-Bcc4sz15.cjs +96 -0
  152. package/dist/core-DQYnL6uf.cjs +96 -0
  153. package/dist/core-Da1dGJN3.js +22401 -0
  154. package/dist/data.cjs +1 -1
  155. package/dist/data.d.ts +5 -0
  156. package/dist/data.mjs +1 -1
  157. package/dist/editors.cjs +1 -1
  158. package/dist/editors.d.ts +44 -1
  159. package/dist/editors.mjs +3 -3
  160. package/dist/feedback.cjs +1 -1
  161. package/dist/feedback.d.ts +10 -10
  162. package/dist/feedback.mjs +2 -2
  163. package/dist/index-BjBsn6ad.cjs +5194 -0
  164. package/dist/index-C2Uoywo9.js +63852 -0
  165. package/dist/index-DCDfWfAt.js +64336 -0
  166. package/dist/index-DpiCo0_e.cjs +5194 -0
  167. package/dist/index.cjs +1 -1
  168. package/dist/index.css +1 -1
  169. package/dist/index.d.ts +1798 -57
  170. package/dist/index.mjs +943 -895
  171. package/dist/lazy.cjs +1 -1
  172. package/dist/lazy.d.ts +4 -3
  173. package/dist/lazy.mjs +3 -3
  174. package/dist/navigation.cjs +1 -1
  175. package/dist/navigation.d.ts +15 -1
  176. package/dist/navigation.mjs +30 -30
  177. package/dist/overlays.cjs +1 -1
  178. package/dist/overlays.mjs +53 -53
  179. package/dist/style.css +6 -6
  180. package/package.json +3 -3
@@ -0,0 +1,419 @@
1
+ "use strict";const e=require("react/jsx-runtime"),te=require("./core-Bcc4sz15.cjs"),n=require("react"),be=require("./NiceTabs-CNauJ4fu.cjs"),bt=require("./NiceForm-DUkduLqG.cjs");function In(t,i=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];case"shade-chain":return[];case"custom":return[0,60,200];default:return[0]}}function jt(t,i={}){const o=i.size??16,s="currentColor",l="currentColor";if(i.rectangle||t==="shade-chain"||t==="monochromatic"){const K=Math.max(3,Math.min(7,i.count??5)),_=o*.1,O=o-_*2,F=Math.max(1.2,o/14),Z=o/2,B=Array.from({length:K},(V,f)=>{const w=_+O*f/(K-1),S=.25+.75*f/(K-1);return e.jsx("circle",{cx:w,cy:Z,r:F,fill:l,opacity:S},f)});return e.jsxs("svg",{width:o,height:o,viewBox:`0 0 ${o} ${o}`,"aria-hidden":!0,children:[e.jsx("rect",{x:1,y:o/2-o/6,width:o-2,height:o/3,rx:o/6,fill:"none",stroke:s,strokeOpacity:.25}),B]})}const C=i.angles??In(t),k=o/2,L=o/2,P=o/2-2,W=Math.max(1.4,o/9);return e.jsxs("svg",{width:o,height:o,viewBox:`0 0 ${o} ${o}`,"aria-hidden":!0,children:[e.jsx("circle",{cx:k,cy:L,r:P,fill:"none",stroke:s,strokeOpacity:.25}),C.map((K,_)=>{const O=(K-90)*Math.PI/180,F=k+P*Math.cos(O),Z=L+P*Math.sin(O);return e.jsx("circle",{cx:F,cy:Z,r:W,fill:l},_)})]})}function vt(t,i,o){return Math.max(i,Math.min(o,t))}function Ft({h:t,s:i,v:o}){t=(t%360+360)%360;const s=o*i,l=s*(1-Math.abs(t/60%2-1)),h=o-s;let C=0,k=0,L=0;return t<60?(C=s,k=l):t<120?(C=l,k=s):t<180?(k=s,L=l):t<240?(k=l,L=s):t<300?(C=l,L=s):(C=s,L=l),{r:Math.round((C+h)*255),g:Math.round((k+h)*255),b:Math.round((L+h)*255)}}function ht({r:t,g:i,b:o}){t/=255,i/=255,o/=255;const s=Math.max(t,i,o),l=Math.min(t,i,o),h=s-l;let C=0;return h!==0&&(s===t?C=(i-o)/h%6:s===i?C=(o-t)/h+2:C=(t-i)/h+4,C=(C*60+360)%360),{h:C,s:s===0?0:h/s,v:s}}function Bt({r:t,g:i,b:o}){t/=255,i/=255,o/=255;const s=Math.max(t,i,o),l=Math.min(t,i,o),h=(s+l)/2;if(s===l)return{h:0,s:0,l:h};const C=s-l,k=h>.5?C/(2-s-l):C/(s+l);let L=0;return s===t?L=((i-o)/C+(i<o?6:0))/6:s===i?L=((o-t)/C+2)/6:L=((t-i)/C+4)/6,{h:L*360,s:k,l:h}}function Ge(t){const i=t.replace("#",""),o=i.length===3?i[0]+i[0]+i[1]+i[1]+i[2]+i[2]:i,s=parseInt(o,16);return{r:s>>16&255,g:s>>8&255,b:s&255}}function Ot({r:t,g:i,b:o}){return"#"+[t,i,o].map(s=>s.toString(16).padStart(2,"0")).join("")}function Me(t){return Ot(Ft(t))}function Re(t){return ht(Ge(t))}function Kt(t,i){const o=[];for(let s=0;s<i;s++){const l=i<=1?.5:s/(i-1),h=vt(t.s*(.3+l*.7),0,1),C=vt(t.v*(1.2-l*.7),0,1);o.push(Me({h:t.h,s:h,v:C}))}return o}function gt(t,i){if(t==="custom"||t==="shade-chain")return[0];const o=i??30;switch(t){case"monochromatic":return[0];case"complementary":return[0,180];case"split-complementary":return[0,180-o,180+o];case"analogous":return[0,-o,o];case"triadic":return[0,120,240];case"tetradic":return[0,60,180,240];case"square":return[0,90,180,270]}return[0]}function qe(t,i,o){return gt(i,o).map(s=>((t+s)%360+360)%360)}function _t(t,i,o=.12){const s=Math.max(2,i),l=(s-1)/2,h=[];for(let C=0;C<s;C++){const k=(C-l)*o,L=Math.max(.05,Math.min(.98,t.v+k)),P=Math.max(.05,Math.min(1,t.s-Math.abs(k)*.25));h.push(Me({h:t.h,s:P,v:L}))}return h}function kt({r:t,g:i,b:o}){const[s,l,h]=[t,i,o].map(C=>{const k=C/255;return k<=.03928?k/12.92:Math.pow((k+.055)/1.055,2.4)});return .2126*s+.7152*l+.0722*h}function Qe(t,i){const o=kt(Ge(t)),s=kt(Ge(i)),l=Math.max(o,s),h=Math.min(o,s);return(l+.05)/(h+.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,i){const o=Yt[i];return t.map(s=>{const l=(o.sRange[0]+o.sRange[1])/2,h=(o.vRange[0]+o.vRange[1])/2;return Me({h:s,s:l,v:h})})}function An(){return Math.floor(Math.random()*360)}function Ut(t,i,o){const s=An(),l=qe(s,t,o),h=[];for(let C=0;C<i;C++){const k=l[C%l.length],L=.55+Math.random()*.4,P=.5+Math.random()*.45;h.push(Me({h:k+(Math.random()-.5)*8,s:L,v:P}))}return h}const Dn=({hues:t,baseHue:i,onBaseHueChange:o,mode:s,distance:l,disabled:h})=>{const K=n.useCallback(B=>{if(h)return;const f=B.currentTarget.getBoundingClientRect(),w=B.clientX-f.left-120,S=B.clientY-f.top-120,M=(Math.atan2(S,w)*180/Math.PI+360)%360;o(Math.round(M))},[120,120,h,o]),_=[];for(let B=0;B<360;B+=2){const V=(B-1)*Math.PI/180,f=(B+1)*Math.PI/180,w=Me({h:B,s:1,v:1});_.push(e.jsx("path",{d:`M${120+55*Math.cos(V)},${120+55*Math.sin(V)} L${120+110*Math.cos(V)},${120+110*Math.sin(V)} A110,110 0 0,1 ${120+110*Math.cos(f)},${120+110*Math.sin(f)} L${120+55*Math.cos(f)},${120+55*Math.sin(f)} A55,55 0 0,0 ${120+55*Math.cos(V)},${120+55*Math.sin(V)} Z`,fill:w},B))}const O=`wheel-center-${s}`,F=t.map((B,V)=>{const w=B*Math.PI/180;return e.jsx("circle",{cx:120+82.5*Math.cos(w),cy:120+82.5*Math.sin(w),r:V===0?8:6,fill:Me({h:B,s:.85,v:.9}),stroke:V===0?"var(--bg-primary, #fff)":"var(--border-color, #ccc)",strokeWidth:V===0?3:2},V)});let Z=null;if(s==="analogous"||s==="split-complementary"){const f=gt(s,l).slice(1).map((w,S)=>{const M=(i+w)*Math.PI/180;return e.jsx("line",{x1:120,y1:120,x2:120+82.5*Math.cos(M),y2:120+82.5*Math.sin(M),stroke:"var(--nice-overlay-light-30, rgba(255, 255, 255, 0.3))",strokeWidth:1,strokeDasharray:"3,3"},`dline-${S}`)});Z=e.jsx(e.Fragment,{children:f})}return e.jsxs("svg",{className:"nice-palette__wheel",viewBox:"0 0 240 240",width:240,height:240,onClick:K,style:{cursor:h?"default":"crosshair"},children:[e.jsx("defs",{children:e.jsxs("radialGradient",{id:O,children:[e.jsx("stop",{offset:"0%",stopColor:"var(--nice-bg, #fff)"}),e.jsx("stop",{offset:"100%",stopColor:"transparent"})]})}),_,e.jsx("circle",{cx:120,cy:120,r:53,fill:Me({h:i,s:.6,v:.85})}),e.jsx("circle",{cx:120,cy:120,r:53,fill:`url(#${O})`,opacity:.4}),Z,F]})},Ln=({colors:t})=>{if(t.length<2)return null;const i=[];for(let o=0;o<t.length;o++){const s=Qe(t[o],"var(--bg-primary, #ffffff)"),l=Qe(t[o],"var(--text-primary, #000000)");i.push({a:t[o],b:"var(--bg-primary, #ffffff)",ratio:s,level:et(s)}),i.push({a:t[o],b:"var(--text-primary, #000000)",ratio:l,level:et(l)});for(let h=o+1;h<t.length;h++){const C=Qe(t[o],t[h]);i.push({a:t[o],b:t[h],ratio:C,level:et(C)})}}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:i.map((o,s)=>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:o.a}}),e.jsx("span",{className:"nice-palette__contrast-vs",children:"vs"}),e.jsx("span",{className:"nice-palette__contrast-dot",style:{background:o.b}})]}),e.jsxs("span",{className:"nice-palette__contrast-ratio",children:[o.ratio.toFixed(1),":1"]}),e.jsx("span",{className:`nice-palette__contrast-level nice-palette__contrast-level--${o.level.toLowerCase().replace("-","")}`,children:o.level})]},s))})]})},zn=({hex:t})=>{const i=Ge(t),o=Bt(i),s=ht(i);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"})," ",i.r,", ",i.g,", ",i.b]}),e.jsxs("div",{children:[e.jsx("strong",{children:"HSL"})," ",Math.round(o.h),"°, ",Math.round(o.s*100),"%,"," ",Math.round(o.l*100),"%"]}),e.jsxs("div",{children:[e.jsx("strong",{children:"HSV"})," ",Math.round(s.h),"°, ",Math.round(s.s*100),"%,"," ",Math.round(s.v*100),"%"]})]})},Pn={monochromatic:"Monochromatic",complementary:"Complementary","split-complementary":"Split-Complementary",analogous:"Analogous",triadic:"Triadic",tetradic:"Tetradic (Rectangle)",square:"Square","shade-chain":"Shade chain",custom:"Custom"},Hn={"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"},Fn=["monochromatic","shade-chain","complementary","split-complementary","analogous","triadic","tetradic","square","custom"],Bn=["lightest-pastel","bright-pastel","shiny","pastel","full","dark","deep","muted","earth"],Wt="nice-palette-custom-schemes";function On(){if(typeof window>"u")return[];try{const t=window.localStorage.getItem(Wt);if(!t)return[];const i=JSON.parse(t);if(Array.isArray(i))return i}catch{}return[]}function Kn(t){if(!(typeof window>"u"))try{window.localStorage.setItem(Wt,JSON.stringify(t))}catch{}}const Xt=n.forwardRef(({id:t,className:i,style:o,accessMode:s,value:l,onChange:h,minColors:C=1,maxColors:k=8,harmonyMode:L,onHarmonyModeChange:P,distance:W,onDistanceChange:K,preset:_,onPresetChange:O,showWheel:F=!0,showContrast:Z=!0,showInfo:B=!0,showPresets:V=!0,presets:f=[],showVariations:w=!0,showRandom:S=!0,variationCount:M=5,label:G,disabled:y,colorCount:N,shadeStep:j,onShadeStepChange:$,customSchemes:A,onCustomSchemesChange:H,persistCustomSchemes:v=!0},c)=>{const D=te.Zs(s,t),x=D==="hidden";(D==="disabled"||D==="readOnly")&&(y=!0);const m=te.Hs(t),[r,d]=n.useState("analogous"),[p,g]=n.useState(30),[u,T]=n.useState(""),[Y,z]=n.useState(0),[J,me]=n.useState(.12),[U,ne]=n.useState(null),[ie,he]=n.useState(()=>A??(v?On():[])),[fe,ye]=n.useState(null),xe=L??r,ae=W??p,ce=_??u,ge=j??J,ee=A??ie;n.useEffect(()=>{!A&&v&&Kn(ie)},[ie,A,v]);const R=n.useCallback(Q=>{he(Q),H?.(Q)},[H]),b=n.useCallback(Q=>{d(Q),P?.(Q)},[P]),q=n.useCallback(Q=>{g(Q),K?.(Q)},[K]),re=n.useCallback(Q=>{T(Q),Q&&O?.(Q)},[O]),de=n.useMemo(()=>["var(--color-primary, #3b82f6)","var(--color-error, #ef4444)","var(--color-success, #22c55e)"],[]),I=l&&l.length>0?l:de,se=I[0],ue=n.useMemo(()=>Re(se),[se]),_e=n.useMemo(()=>qe(ue.h,xe,ae),[ue.h,xe,ae]),ve=n.useCallback((Q,pe,je,Se)=>{const a=N??U??void 0,E=a!==void 0?Math.max(C,Math.min(k,a)):void 0;if(pe==="shade-chain"){const we=E??Math.max(C,5),Ce=_t({h:Q,s:ue.s||.7,v:ue.v||.6},we,ge);h?.(Ce);return}let X;const oe=pe==="custom"&&fe?ee.find(we=>we.id===fe):null;oe&&oe.angles.length>0?X=oe.angles.map(we=>((Q+we)%360+360)%360):X=qe(Q,pe,je);let le;if(Se&&Yt[Se]?le=tt(X,Se):le=X.map(we=>Me({h:we,s:ue.s||.7,v:ue.v||.85})),oe?.lightnessOffsets?.length&&(le=le.map((we,Ce)=>{const Pe=oe.lightnessOffsets?.[Ce];if(Pe==null)return we;const $e=Re(we);return Me({h:$e.h,s:$e.s,v:Math.max(.05,Math.min(.98,$e.v+Pe))})})),E!==void 0){for(;le.length<E;){const we=le[le.length-1]||"#888888",Ce=Re(we);le.push(Me({h:(Ce.h+18)%360,s:Ce.s,v:Ce.v}))}le=le.slice(0,E)}else{for(;le.length<C;)le.push(le[le.length-1]||"var(--nice-text-secondary, #888888)");le.length>k&&(le=le.slice(0,k))}h?.(le)},[ue.s,ue.v,C,k,h,N,U,ge,fe,ee]),ke=n.useCallback(Q=>{if(!y){if(xe==="custom"){const pe=Me({h:Q,s:ue.s||.7,v:ue.v||.85}),je=[...I];je[Y]=pe,h?.(je);return}ve(Q,xe,ae,ce)}},[y,xe,ae,ce,ve,ue.s,ue.v,I,Y,h]),Ee=n.useCallback(Q=>{y||(b(Q),Q!=="custom"&&ve(ue.h,Q,ae,ce))},[y,ue.h,ae,ce,b,ve]),De=n.useCallback(Q=>{y||(q(Q),ve(ue.h,xe,Q,ce))},[y,ue.h,xe,ce,q,ve]),Te=n.useCallback(Q=>{if(y)return;re(Q);const pe=qe(ue.h,xe,ae),je=tt(pe,Q);h?.(je.slice(0,k))},[y,ue.h,xe,ae,k,re,h]),Ie=n.useCallback((Q,pe)=>{if(y)return;const je=[...I];je[Q]=pe,h?.(je)},[y,I,h]),Oe=n.useCallback(()=>{if(y||I.length>=k)return;const Q=Re(I[I.length-1]),pe=Me({h:(Q.h+30)%360,s:Q.s,v:Q.v});h?.([...I,pe])},[y,I,k,h]),Ke=n.useCallback(Q=>{if(y||I.length<=C)return;const pe=I.filter((je,Se)=>Se!==Q);h?.(pe),Y>=pe.length&&z(Math.max(0,pe.length-1))},[y,I,C,h,Y]),Ye=n.useCallback(()=>{if(y)return;const Q=Math.max(C,Math.min(k,gt(xe).length)),pe=Ut(xe,Q,ae);h?.(pe)},[y,C,k,xe,ae,h]),Le=n.useMemo(()=>{if(!w)return[];const Q=I[Y]||I[0];return Kt(Re(Q),M)},[w,I,Y,M]),Ae=I[Y]||I[0],ze=n.useMemo(()=>{const Q=Re(Ae);return Me({h:(Q.h+180)%360,s:Q.s,v:Q.v})},[Ae]);return x?null:e.jsxs("div",{ref:c,id:m,className:`nice-palette ${y?"nice-palette--disabled":""} ${i||""}`,style:o,children:[G&&e.jsx("div",{className:"nice-palette__label",children:G}),e.jsxs("div",{className:"nice-palette__modes",style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},children:[e.jsx(be.NiceSelect,{label:"Harmony",labelPlacement:"left",size:"sm",disabled:y,value:xe==="custom"&&fe?`custom:${fe}`:xe,onChange:Q=>{const pe=Array.isArray(Q)?Q[0]:Q;if(typeof pe=="string")if(pe.startsWith("custom:")){const je=pe.slice(7);ye(je),Ee("custom")}else ye(null),Ee(pe)},options:[...Fn.map(Q=>({value:Q,label:Pn[Q]})),...ee.map(Q=>({value:`custom:${Q.id}`,label:`★ ${Q.name}`}))],renderOption:(Q,pe)=>{const je=String(Q.value),Se=je.startsWith("custom:"),a=Se?ee.find(oe=>oe.id===je.slice(7)):null,E=a?a.angles:void 0,X=Se?"custom":je;return e.jsxs("span",{style:{display:"inline-flex",gap:8,alignItems:"center"},children:[e.jsx("span",{style:{width:16,height:16,display:"inline-flex",color:"currentColor"},children:jt(X,{angles:E,size:16,count:N})}),e.jsx("span",{style:{fontWeight:pe?600:400},children:Q.label})]})}}),xe==="shade-chain"&&e.jsx(be.NiceNumberInput,{label:"Step",labelPlacement:"left",size:"sm",min:.02,max:.5,step:.02,precision:2,value:ge,onChange:Q=>{const pe=typeof Q=="number"?Q:Number(Q);Number.isNaN(pe)||(me(pe),$?.(pe),ve(ue.h,xe,ae,ce))},showStepper:!0,disabled:y}),e.jsx(be.NiceNumberInput,{label:"Colors",labelPlacement:"left",size:"sm",min:Math.max(2,C),max:Math.min(12,k),step:1,precision:0,value:N??U??I.length,onChange:Q=>{const pe=typeof Q=="number"?Q:Number(Q);if(!Number.isFinite(pe))return;const je=Math.max(Math.max(2,C),Math.min(Math.min(12,k),Math.round(pe)));ne(je),xe==="shade-chain"?h?.(_t({h:ue.h,s:ue.s||.7,v:ue.v||.6},je,ge)):setTimeout(()=>ve(ue.h,xe,ae,ce),0)},showStepper:!0,disabled:y})]}),e.jsxs("div",{className:"nice-palette__main",children:[F&&e.jsxs("div",{className:"nice-palette__wheel-container",children:[e.jsx(Dn,{hues:_e,baseHue:ue.h,onBaseHueChange:ke,mode:xe,distance:ae,disabled:y}),(xe==="analogous"||xe==="split-complementary")&&e.jsxs("div",{className:"nice-palette__distance",children:[e.jsxs("label",{children:["Distance: ",ae,"°"]}),e.jsx("input",{type:"range",min:10,max:90,value:ae,onChange:Q=>De(Number(Q.target.value)),disabled:y,className:"nice-palette__distance-slider"})]})]}),e.jsxs("div",{className:"nice-palette__strips",children:[e.jsxs("div",{className:"nice-palette__swatches",children:[I.map((Q,pe)=>e.jsxs("div",{className:`nice-palette__swatch-wrapper ${Y===pe?"nice-palette__swatch-wrapper--selected":""}`,onClick:()=>z(pe),children:[e.jsx("div",{className:"nice-palette__swatch",style:{background:Q},children:I.length>C&&e.jsx("button",{type:"button",className:"nice-palette__swatch-remove",onClick:je=>{je.stopPropagation(),Ke(pe)},disabled:y,"aria-label":"Remove color",children:"×"})}),e.jsx("input",{type:"text",className:"nice-palette__hex-input",value:Q.toUpperCase(),maxLength:7,disabled:y,onChange:je=>Ie(pe,je.target.value)})]},pe)),I.length<k&&e.jsx("button",{type:"button",className:"nice-palette__add-btn",onClick:Oe,disabled:y,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:ze},title:ze.toUpperCase()}),e.jsx("span",{className:"nice-palette__hex-label",children:ze.toUpperCase()})]}),w&&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((Q,pe)=>e.jsx("div",{className:"nice-palette__variation-chip",style:{background:Q},title:Q.toUpperCase(),onClick:()=>{y||Ie(Y,Q)},role:"button",tabIndex:0},pe))})]}),S&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm nice-palette__random-btn",onClick:Ye,disabled:y,title:"Random palette","aria-label":"Random palette",children:"🎲 Random Palette"})]})]}),V&&f.length>0&&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:f.map(Q=>{const pe=tt(_e,Q);return e.jsxs("button",{type:"button",className:`nice-palette__preset-card ${ce===Q?"nice-palette__preset-card--active":""}`,onClick:()=>Te(Q),disabled:y,children:[e.jsx("div",{className:"nice-palette__preset-strip",children:pe.map((je,Se)=>e.jsx("span",{className:"nice-palette__preset-dot",style:{background:je}},Se))}),e.jsx("span",{className:"nice-palette__preset-label",children:Hn[Q]})]},Q)})})]}),B&&e.jsxs("div",{className:"nice-palette__info-panel",children:[e.jsx("div",{className:"nice-palette__section-title",children:"Selected Color Info"}),e.jsx(zn,{hex:Ae})]}),e.jsxs("details",{className:"nice-palette__custom-schemes",style:{marginTop:8},children:[e.jsxs("summary",{style:{cursor:"pointer",padding:"6px 10px",background:"var(--bg-secondary)",color:"var(--text-primary)",border:"1px solid var(--border-color)",borderRadius:4,display:"inline-block",fontSize:12,userSelect:"none"},children:["Custom schemes (",ee.length,")"]}),e.jsxs("div",{style:{marginTop:8,display:"flex",flexDirection:"column",gap:6},children:[ee.length===0&&e.jsx("div",{style:{fontSize:12,color:"var(--text-muted)"},children:"Save the current palette as a reusable scheme."}),ee.map(Q=>e.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center",fontSize:12},children:[e.jsx("span",{style:{width:16,height:16,display:"inline-flex"},children:jt("custom",{angles:Q.angles,size:16})}),e.jsx("span",{style:{flex:1},children:Q.name}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--xs",onClick:()=>{ye(Q.id),Ee("custom")},disabled:y,children:"Use"}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--xs",onClick:()=>R(ee.filter(pe=>pe.id!==Q.id)),disabled:y,"aria-label":`Delete ${Q.name}`,children:"×"})]},Q.id)),e.jsxs("div",{style:{display:"flex",gap:6},children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:y,onClick:()=>{const Q=typeof window<"u"?window.prompt("Scheme name?",`Scheme ${ee.length+1}`):null;if(!Q)return;const pe=Re(I[0]).h,je=I.map(a=>(Re(a).h-pe+540)%360-180),Se={id:`cs-${Date.now()}`,name:Q,angles:je};R([...ee,Se])},children:"+ Save current as scheme"}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:y||ee.length===0,onClick:()=>{typeof navigator>"u"||navigator.clipboard?.writeText(JSON.stringify(ee,null,2))},children:"Export JSON"}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:y,onClick:()=>{if(typeof window>"u")return;const Q=window.prompt("Paste schemes JSON");if(Q)try{const pe=JSON.parse(Q);Array.isArray(pe)&&R(pe)}catch{}},children:"Import JSON"})]})]})]}),Z&&e.jsxs("details",{className:"nice-palette__contrast-popup",style:{marginTop:8},children:[e.jsx("summary",{style:{cursor:"pointer",padding:"6px 10px",background:"var(--bg-secondary)",color:"var(--text-primary)",border:"1px solid var(--border-color)",borderRadius:4,display:"inline-block",fontSize:12,userSelect:"none"},children:"Contrast Analysis (WCAG 2.1)"}),e.jsx("div",{style:{marginTop:8},children:e.jsx(Ln,{colors:I})})]})]})});Xt.displayName="NiceColorPalette";function dt(){return{type:"linear",angle:90,stops:[{color:"var(--nice-primary, #3b82f6)",position:0},{color:"var(--nice-accent, #8b5cf6)",position:100}]}}function mt(t){const i=t.stops.slice().sort((s,l)=>s.position-l.position).map(s=>`${s.color} ${s.position}%`).join(", "),o=t.repeating?"repeating-":"";switch(t.type){case"linear":return`${o}linear-gradient(${t.angle}deg, ${i})`;case"radial":{const s=t.shape||"ellipse",l=t.size||"farthest-corner",h=t.positionX??50,C=t.positionY??50;return`${o}radial-gradient(${s} ${l} at ${h}% ${C}%, ${i})`}case"conic":{const s=t.angle??0,l=t.positionX??50,h=t.positionY??50;return`${o}conic-gradient(from ${s}deg at ${l}% ${h}%, ${i})`}}}function Vt(t){const i=t.trim(),o=i.startsWith("repeating-");if(i.includes("linear-gradient")){const s=i.match(/linear-gradient\((.+)\)/)?.[1];if(!s)return null;const l=s.split(",").map(P=>P.trim());let h=90,C=0;const k=l[0].match(/^(\d+)deg$/);k&&(h=parseInt(k[1]),C=1);const L=st(l.slice(C));return{type:"linear",angle:h,repeating:o,stops:L}}if(i.includes("radial-gradient")){const s=i.match(/radial-gradient\((.+)\)/)?.[1];if(!s)return null;const l=s.split(",").map(C=>C.trim()),h=st(l.filter(C=>C.includes("#")||C.includes("rgb")));return{type:"radial",angle:0,repeating:o,stops:h.length>=2?h:dt().stops}}if(i.includes("conic-gradient")){const s=i.match(/conic-gradient\((.+)\)/)?.[1];if(!s)return null;const l=s.split(",").map(C=>C.trim()),h=st(l.filter(C=>C.includes("#")||C.includes("rgb")));return{type:"conic",angle:0,repeating:o,stops:h.length>=2?h:dt().stops}}return null}function st(t){return t.map((i,o,s)=>{const l=i.match(/^(#[0-9a-fA-F]{3,8}|rgba?\([^)]+\))\s*(\d+%?)?$/);if(l){const h=l[2]?parseFloat(l[2]):o/Math.max(1,s.length-1)*100;return{color:l[1],position:h}}return{color:i,position:o/Math.max(1,s.length-1)*100}})}function Yn(){return"#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0")}function Un(t=2){const i=["linear","radial","conic"],o=i[Math.floor(Math.random()*i.length)],s=[];for(let l=0;l<t;l++)s.push({color:Yn(),position:Math.round(l/(t-1)*100)});return{type:o,angle:Math.floor(Math.random()*360),stops:s,shape:o==="radial"?Math.random()>.5?"circle":"ellipse":void 0,positionX:o!=="linear"?Math.round(Math.random()*100):void 0,positionY:o!=="linear"?Math.round(Math.random()*100):void 0}}const qt=[{name:"Sunset",value:{type:"linear",angle:135,stops:[{color:"var(--nice-danger, #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:"var(--nice-warning-bg, #ffecd2)",position:0},{color:"#fcb69f",position:100}],positionX:50,positionY:50}},{name:"Rainbow",value:{type:"conic",angle:0,stops:[{color:"var(--nice-danger, #ff0000)",position:0},{color:"#ff8800",position:17},{color:"var(--nice-warning, #ffff00)",position:33},{color:"var(--nice-success, #00ff00)",position:50},{color:"#0088ff",position:67},{color:"#8800ff",position:83},{color:"var(--nice-danger, #ff0000)",position:100}],positionX:50,positionY:50}}],Gt=n.forwardRef(({id:t,className:i,style:o,accessMode:s,value:l,onChange:h,showCssOutput:C=!0,showPresets:k=!0,showEditor:L=!0,showRandom:P=!0,maxStops:W=10,label:K,disabled:_,width:O},F)=>{const Z=te.Zs(s,t),B=Z==="hidden";(Z==="disabled"||Z==="readOnly")&&(_=!0);const V=te.Hs(t),f=l??dt(),w=n.useMemo(()=>mt(f),[f]),[S,M]=n.useState(0),[G,y]=n.useState(""),N=n.useRef(null),j=n.useCallback(g=>{h?.(g)},[h]),$=n.useCallback(g=>{_||j({...f,type:g})},[_,f,j]),A=n.useCallback(g=>{_||j({...f,angle:g})},[_,f,j]),H=n.useCallback(g=>{_||j({...f,repeating:g})},[_,f,j]),v=n.useCallback(g=>{_||j({...f,shape:g})},[_,f,j]),c=n.useCallback((g,u)=>{if(_)return;const T=f.stops.map((Y,z)=>z===g?{...Y,...u}:Y);j({...f,stops:T})},[_,f,j]),D=n.useCallback(()=>{if(_||f.stops.length>=W)return;const g=f.stops.slice().sort((J,me)=>J.position-me.position);let u=0,T=g[0];for(let J=0;J<g.length-1;J++){const me=g[J+1].position-g[J].position;me>u&&(u=me,T=g[J])}const Y=Math.round(T.position+u/2),z="#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0");j({...f,stops:[...f.stops,{color:z,position:Y}]})},[_,f,W,j]),x=n.useCallback(g=>{if(_||f.stops.length<=2)return;const u=f.stops.filter((T,Y)=>Y!==g);j({...f,stops:u}),S>=u.length&&M(u.length-1)},[_,f,S,j]),m=n.useCallback(()=>{if(_)return;const g=2+Math.floor(Math.random()*3);j(Un(g))},[_,j]),r=n.useCallback(()=>{if(_||!G.trim())return;const g=Vt(G);g&&j(g)},[_,G,j]),d=n.useCallback(g=>{if(_||!N.current||f.stops.length>=W)return;const u=N.current.getBoundingClientRect(),T=Math.round((g.clientX-u.left)/u.width*100),Y="#"+Math.floor(Math.random()*16777215).toString(16).padStart(6,"0"),z=[...f.stops,{color:Y,position:T}];j({...f,stops:z}),M(z.length-1)},[_,f,W,j]),p=n.useMemo(()=>f.stops.slice().sort((g,u)=>g.position-u.position),[f.stops]);return B?null:e.jsxs("div",{ref:F,id:V,className:`nice-gradient ${_?"nice-gradient--disabled":""} ${i||""}`,style:{width:O!=null?typeof O=="number"?`${O}px`:O:320,boxSizing:"border-box",...o},children:[K&&e.jsx("div",{className:"nice-gradient__label",children:K}),e.jsx("div",{className:"nice-gradient__preview",style:{background:w}}),L&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-gradient__type-row",children:[["linear","radial","conic"].map(g=>e.jsx("button",{type:"button",className:`nice-gradient__type-btn ${f.type===g?"nice-gradient__type-btn--active":""}`,onClick:()=>$(g),disabled:_,children:g.charAt(0).toUpperCase()+g.slice(1)},g)),e.jsxs("label",{className:"nice-gradient__repeat-label",children:[e.jsx("input",{type:"checkbox",checked:f.repeating??!1,onChange:g=>H(g.target.checked),disabled:_}),"Repeating"]})]}),e.jsxs("div",{className:"nice-gradient__controls",children:[f.type==="linear"&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Angle: ",f.angle,"°"]}),e.jsx("input",{type:"range",min:0,max:360,value:f.angle,onChange:g=>A(Number(g.target.value)),disabled:_,className:"nice-gradient__slider"}),e.jsx("div",{className:"nice-gradient__angle-presets",children:[0,45,90,135,180,225,270,315].map(g=>e.jsx("button",{type:"button",className:`nice-gradient__angle-btn ${f.angle===g?"nice-gradient__angle-btn--active":""}`,onClick:()=>A(g),disabled:_,title:`${g}°`,children:e.jsx("span",{style:{transform:`rotate(${g}deg)`,display:"inline-block"},children:"→"})},g))})]}),f.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(g=>e.jsx("button",{type:"button",className:`nice-gradient__shape-btn ${(f.shape||"ellipse")===g?"nice-gradient__shape-btn--active":""}`,onClick:()=>v(g),disabled:_,children:g},g))})]}),(f.type==="radial"||f.type==="conic")&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Center: ",f.positionX??50,"%, ",f.positionY??50,"%"]}),e.jsxs("div",{className:"nice-gradient__center-inputs",children:[e.jsx("input",{type:"range",min:0,max:100,value:f.positionX??50,onChange:g=>j({...f,positionX:Number(g.target.value)}),disabled:_,className:"nice-gradient__slider"}),e.jsx("input",{type:"range",min:0,max:100,value:f.positionY??50,onChange:g=>j({...f,positionY:Number(g.target.value)}),disabled:_,className:"nice-gradient__slider"})]})]}),f.type==="conic"&&e.jsxs("div",{className:"nice-gradient__control-group",children:[e.jsxs("label",{children:["Start angle: ",f.angle,"°"]}),e.jsx("input",{type:"range",min:0,max:360,value:f.angle,onChange:g=>A(Number(g.target.value)),disabled:_,className:"nice-gradient__slider"})]})]}),e.jsxs("div",{className:"nice-gradient__bar-container",children:[e.jsx("div",{ref:N,className:"nice-gradient__bar",style:{background:w},onClick:d,children:f.stops.map((g,u)=>e.jsx("div",{className:`nice-gradient__stop-marker ${S===u?"nice-gradient__stop-marker--active":""}`,style:{left:`${g.position}%`},onClick:T=>{T.stopPropagation(),M(u)},title:`${g.color} @ ${g.position}%`,children:e.jsx("div",{className:"nice-gradient__stop-dot",style:{background:g.color}})},u))}),e.jsx("button",{type:"button",className:"nice-gradient__add-stop",onClick:D,disabled:_||f.stops.length>=W,title:"Add stop",children:"+"})]}),e.jsx("div",{className:"nice-gradient__stop-editor",children:e.jsx("div",{className:"nice-gradient__stop-list",children:p.map((g,u)=>{const T=f.stops.indexOf(g);return e.jsxs("div",{className:`nice-gradient__stop-row ${S===T?"nice-gradient__stop-row--active":""}`,onClick:()=>M(T),children:[e.jsx("input",{type:"color",value:g.color,onChange:Y=>c(T,{color:Y.target.value}),disabled:_,className:"nice-gradient__stop-color"}),e.jsx("input",{type:"text",value:g.color.toUpperCase(),maxLength:7,onChange:Y=>c(T,{color:Y.target.value}),disabled:_,className:"nice-gradient__stop-hex"}),e.jsx("input",{type:"number",min:0,max:100,value:g.position,onChange:Y=>c(T,{position:Number(Y.target.value)}),disabled:_,className:"nice-gradient__stop-pos"}),e.jsx("span",{className:"nice-gradient__stop-pct",children:"%"}),f.stops.length>2&&e.jsx("button",{type:"button",className:"nice-gradient__stop-del",onClick:()=>x(T),disabled:_,"aria-label":"Remove stop",children:"×"})]},T)})})})]}),P&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm nice-gradient__random-btn",onClick:m,disabled:_,title:"Random gradient","aria-label":"Random gradient",children:"🎲 Random Gradient"}),k&&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:qt.map((g,u)=>e.jsxs("button",{type:"button",className:"nice-gradient__preset-card",onClick:()=>{_||j(g.value)},disabled:_,title:g.name,children:[e.jsx("div",{className:"nice-gradient__preset-preview",style:{background:mt(g.value)}}),e.jsx("span",{className:"nice-gradient__preset-name",children:g.name})]},u))})]}),C&&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: ${w};`}),e.jsx("button",{type:"button",className:"nice-gradient__copy-btn",onClick:()=>navigator.clipboard?.writeText(`background: ${w};`),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:G,onChange:g=>y(g.target.value),disabled:_}),e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",onClick:r,disabled:_,children:"Import"})]})]})]})});Gt.displayName="NiceGradientPicker";const Wn=({options:t,value:i,onChange:o,searchable:s=!0,clearable:l,loading:h,placeholder:C,label:k,error:L,helperText:P,required:W,disabled:K,size:_="md",id:O,className:F,style:Z,data:B,columns:V,valueField:f="id",displayField:w,dropdownWidth:S,controlWidth:M})=>{const G=te.Hs(O),{t:y}=te.$o(),[N,j]=n.useState(!1),[$,A]=n.useState(""),H=n.useRef(null);te.$s(H,()=>j(!1));const v=!!(B&&V&&V.length>0),c=w??(V&&V[0]?.key),D=n.useMemo(()=>!v||!B?[]:B.map(p=>({value:String(p[f]??""),label:c?String(p[c]??""):""})),[v,B,f,c]),x=v?D:t??[],m=x.find(p=>String(p.value)===i),r=n.useMemo(()=>{if(!v||!B)return[];if(!$)return B;const p=$.toLowerCase();return B.filter(g=>V.some(u=>String(g[u.key]??"").toLowerCase().includes(p)))},[v,B,V,$]),d=n.useMemo(()=>{if(v||!$)return x;const p=$.toLowerCase();return x.filter(g=>g.label.toLowerCase().includes(p))},[x,$,v]);return e.jsxs("div",{className:`nice-field nice-field--${_} ${L?"nice-field--error":""} ${F||""}`,style:{width:M!=null?typeof M=="number"?`${M}px`:M:"fit-content",...Z},ref:H,children:[k&&e.jsxs("label",{className:"nice-field__label",htmlFor:G,children:[k,W&&e.jsx("span",{className:"nice-field__required",children:"*"})]}),e.jsxs("div",{className:"nice-field__input-wrap",style:{position:"relative"},children:[e.jsxs("button",{type:"button",id:G,className:"nice-select__trigger",onClick:()=>!K&&j(!N),disabled:K,children:[e.jsx("span",{children:m?.label||C||y("controls.select","Select...")}),e.jsx("span",{className:"nice-select__arrow",children:"▾"})]}),l&&i&&!K&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>o(""),"aria-label":y("controls.clear","Clear"),children:"✕"}),N&&e.jsxs("div",{className:"nice-dropdown nice-lookup__dropdown",style:{position:"absolute",top:"100%",left:0,zIndex:50,marginTop:4,background:"var(--bg-primary)",border:"1px solid var(--border-color)",borderRadius:"var(--nice-radius-md)",boxShadow:"0 4px 16px var(--nice-overlay-15, rgba(0, 0, 0, 0.15))",minWidth:"100%",width:S!=null?typeof S=="number"?`${S}px`:S:v?"max-content":"100%"},children:[s&&e.jsx("div",{className:"nice-dropdown__search",style:{padding:6},children:e.jsx("input",{type:"text",value:$,onChange:p=>A(p.target.value),placeholder:y("controls.search","Search..."),autoFocus:!0,style:{width:"100%",padding:"4px 8px",border:"1px solid var(--border-color)",borderRadius:4,background:"var(--bg-primary)",color:"var(--text-primary)"}})}),v?e.jsxs("table",{className:"nice-lookup__grid",role:"listbox",style:{width:"100%",borderCollapse:"collapse",color:"var(--text-primary)"},children:[e.jsx("thead",{children:e.jsx("tr",{children:V.map(p=>e.jsx("th",{style:{padding:"6px 10px",textAlign:"left",fontSize:12,fontWeight:600,color:"var(--text-secondary)",background:"var(--bg-secondary)",borderBottom:"1px solid var(--border-color)",width:p.width!=null?typeof p.width=="number"?`${p.width}px`:p.width:void 0},children:p.header},p.key))})}),e.jsx("tbody",{children:r.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:V.length,style:{padding:12,textAlign:"center",color:"var(--text-muted)"},children:y("controls.noResults","No results")})}):r.map(p=>{const g=String(p[f]??""),u=g===i;return e.jsx("tr",{role:"option","aria-selected":u,onClick:()=>{o(g),j(!1),A("")},style:{cursor:"pointer",background:u?"var(--hover-bg)":"transparent"},onMouseEnter:T=>{u||(T.currentTarget.style.background="var(--hover-bg)")},onMouseLeave:T=>{u||(T.currentTarget.style.background="transparent")},children:V.map(T=>e.jsx("td",{style:{padding:"6px 10px",fontSize:13,borderBottom:"1px solid var(--border-color)"},children:String(p[T.key]??"")},T.key))},g)})})]}):e.jsx("ul",{className:"nice-dropdown__list",role:"listbox",style:{listStyle:"none",margin:0,padding:4,maxHeight:240,overflowY:"auto"},children:d.length===0?e.jsx("li",{className:"nice-dropdown__empty",style:{padding:8,color:"var(--text-muted)"},children:y("controls.noResults","No results")}):d.map(p=>e.jsx("li",{role:"option",className:`nice-dropdown__option ${String(p.value)===i?"nice-dropdown__option--selected":""}`,onClick:()=>{o(String(p.value)),j(!1),A("")},"aria-selected":String(p.value)===i,children:p.label},String(p.value)))})]})]}),L&&e.jsx("div",{className:"nice-field__error",children:L}),P&&!L&&e.jsx("div",{className:"nice-field__hint",children:P})]})},Xn=["Su","Mo","Tu","We","Th","Fr","Sa"];function Vn(t,i){return new Date(t,i+1,0).getDate()}function qn(t,i){return new Date(t,i,1).getDay()}function wt(t,i,o){return`${t}-${String(i+1).padStart(2,"0")}-${String(o).padStart(2,"0")}`}function Gn(t){const i=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()));i.setUTCDate(i.getUTCDate()+4-(i.getUTCDay()||7));const o=new Date(Date.UTC(i.getUTCFullYear(),0,1));return Math.ceil(((i.getTime()-o.getTime())/864e5+1)/7)}const Nt=["January","February","March","April","May","June","July","August","September","October","November","December"],Zt=({value:t,onChange:i,min:o,max:s,disabledDates:l=[],firstDayOfWeek:h=1,size:C="md",showWeekNumbers:k,onMonthChange:L,className:P,style:W,accessMode:K,id:_,multiple:O,selectedDates:F=[],onSelectedDatesChange:Z,renderDay:B,showKeyboardHints:V,persistPreferences:f=!1,fullWidth:w=!1,cookies:S=!1,localStorage:M=!0,sessionStorage:G=!1,storageMode:y,storageKey:N})=>{const j=te.Zs(K,_),$=j==="hidden",A=j==="disabled"||j==="readOnly",{t:H}=te.$o(),v=new Date,c=t?new Date(t):v,D=te.useStorageAdapter(N??"nice-calendar"),x=n.useMemo(()=>f?D.get("prefs")??{}:{},[f,D]),m=x.firstDayOfWeek??h,[r,d]=n.useState(x.lastViewYear??c.getFullYear()),[p,g]=n.useState(x.lastViewMonth??c.getMonth()),[u,T]=n.useState(x.preferredView??"days"),Y=n.useCallback(I=>{if(!f)return;const se=D.get("prefs")??{};D.set("prefs",{...se,...I})},[f,D]),z=n.useCallback(I=>{T(I),Y({preferredView:I})},[Y]),J=n.useCallback((I,se)=>{Y({lastViewYear:I,lastViewMonth:se})},[Y]),me=n.useMemo(()=>[te.mc.moveUp,te.mc.moveDown,te.mc.moveLeft,te.mc.moveRight,{key:"Enter",description:H("shortcuts.selectDate","Select date")},te.mc.pageUp,te.mc.pageDown],[H]),U=n.useMemo(()=>Vn(r,p),[r,p]),ne=n.useMemo(()=>(qn(r,p)-m+7)%7,[r,p,m]),ie=n.useMemo(()=>{const I=[...Xn];for(let se=0;se<m;se++)I.push(I.shift());return I},[m]),he=n.useCallback(I=>o&&I<o||s&&I>s?!0:l.includes(I),[o,s,l]),fe=n.useCallback(I=>{if(u==="years"){d(_e=>_e+I*10);return}if(u==="months"){d(_e=>_e+I);return}let se=p+I,ue=r;se<0&&(se=11,ue--),se>11&&(se=0,ue++),g(se),d(ue),J(ue,se),L?.(ue,se)},[p,r,L,u,J]),ye=wt(v.getFullYear(),v.getMonth(),v.getDate()),xe=n.useCallback(I=>O?F.includes(I):I===t,[O,F,t]),ae=n.useCallback(I=>{if(!A){if(O){const se=F.includes(I)?F.filter(ue=>ue!==I):[...F,I];Z?.(se)}i?.(I)}},[O,F,i,Z]),ce=n.useCallback(()=>{u==="days"?z("months"):u==="months"&&z("years")},[u,z]),ge=n.useCallback(I=>{g(I),z("days"),J(r,I),L?.(r,I)},[r,L,z,J]),ee=n.useCallback(I=>{d(I),z("months")},[z]),R=u==="years"?`${r-r%10} – ${r-r%10+9}`:u==="months"?`${r}`:`${Nt[p]} ${r}`,b=u==="years"?"decade":u==="months"?"year":"month",q=[];for(let I=0;I<ne;I++)q.push(null);for(let I=1;I<=U;I++)q.push(I);for(;q.length%7!==0;)q.push(null);const re=[];for(let I=0;I<q.length;I+=7)re.push(q.slice(I,I+7));const de=r-r%10;return $?null:e.jsxs("div",{className:`nice-calendar nice-calendar--${C}${w?" nice-calendar--full-width":""} ${P||""}`,style:W,children:[e.jsxs("div",{className:"nice-calendar__header",children:[e.jsx("button",{type:"button",className:"nice-calendar__nav",onClick:()=>fe(-1),"aria-label":`Previous ${b}`,children:"‹"}),e.jsx("button",{type:"button",className:"nice-calendar__title",onClick:ce,"aria-label":u==="days"?"Show month picker":u==="months"?"Show year picker":void 0,disabled:u==="years",children:R}),e.jsx("button",{type:"button",className:"nice-calendar__nav",onClick:()=>fe(1),"aria-label":`Next ${b}`,children:"›"}),V&&e.jsx(te.Kr,{shortcuts:me,size:"sm"})]}),u==="days"&&e.jsxs("table",{className:"nice-calendar__grid",role:"grid",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[k&&e.jsx("th",{className:"nice-calendar__wk",children:"W"}),ie.map(I=>e.jsx("th",{children:I},I))]})}),e.jsx("tbody",{children:re.map((I,se)=>e.jsxs("tr",{children:[k&&e.jsx("td",{className:"nice-calendar__wk",children:I.find(ue=>ue!=null)?Gn(new Date(r,p,I.find(ue=>ue!=null))):""}),I.map((ue,_e)=>{if(ue==null)return e.jsx("td",{className:"nice-calendar__empty-cell"},_e);const ve=wt(r,p,ue),ke=he(ve),Ee=xe(ve),De=ve===ye;return e.jsx("td",{className:`nice-calendar__day${Ee?" nice-calendar__day--selected":""}${De?" nice-calendar__day--today":""}${ke?" nice-calendar__day--disabled":""}`,onClick:()=>!ke&&ae(ve),role:"gridcell","aria-selected":Ee,"aria-disabled":ke,children:B?B(ve,ue):ue},_e)})]},se))})]}),u==="months"&&e.jsx("div",{className:"nice-calendar__picker-grid",children:Nt.map((I,se)=>e.jsx("button",{type:"button",className:`nice-calendar__picker-cell${se===p&&r===c.getFullYear()?" nice-calendar__picker-cell--selected":""}`,onClick:()=>ge(se),children:I.slice(0,3)},se))}),u==="years"&&e.jsx("div",{className:"nice-calendar__picker-grid",children:Array.from({length:12},(I,se)=>de-1+se).map(I=>e.jsx("button",{type:"button",className:`nice-calendar__picker-cell${I===r?" nice-calendar__picker-cell--selected":""}${I<de||I>de+9?" nice-calendar__picker-cell--other":""}`,onClick:()=>ee(I),children:I},I))})]})};Zt.displayName="NiceCalendar";const Zn=({startDate:t,endDate:i,onStartChange:o,onEndChange:s,min:l,max:h,clearable:C,startPlaceholder:k,endPlaceholder:L,startLabel:P,endLabel:W,layout:K="horizontal",separator:_="–",gap:O=12,fullWidth:F=!1,label:Z,error:B,helperText:V,required:f,disabled:w,size:S="md",id:M,className:G,style:y,accessMode:N,showKeyboardHints:j,labelPlacement:$,errorPlacement:A,labelWidth:H,controlWidth:v,loading:c})=>{const D=te.Zs(N,M),x=te.Hs(M),{t:m}=te.$o(),r=D==="disabled"||D==="readOnly"||!!w,d=n.useMemo(()=>[{key:"Tab",description:m("shortcuts.switchField","Switch between start/end")},te.mc.cancel],[m]);if(D==="hidden")return null;const p=u=>{o(u),u&&i&&u>i&&s(u)},g=K==="horizontal";return e.jsxs("div",{className:`nice-field nice-field--${S} nice-daterange nice-daterange--${K} ${$==="left"?"nice-field--label-left":""} ${B?"nice-field--error":""} ${c?"nice-field--loading":""} ${G||""}`,style:{...y,...H!=null&&{"--nice-field-label-width":typeof H=="number"?`${H}px`:H},...v!=null&&{"--nice-field-control-width":typeof v=="number"?`${v}px`:v}},"aria-busy":c||void 0,children:[Z&&e.jsxs("label",{className:"nice-field__label",htmlFor:x,children:[Z,f&&e.jsx("span",{className:"nice-field__required",children:"*"}),j&&e.jsx(te.Kr,{shortcuts:d,size:"sm"})]}),e.jsxs("div",{className:"nice-field__control",children:[e.jsxs("div",{className:"nice-daterange__row",style:{display:"flex",flexDirection:g?"row":"column",alignItems:g?"flex-end":"stretch",gap:O,flexWrap:"wrap"},children:[e.jsx("div",{style:{flex:F?"1 1 0":void 0,minWidth:0},children:e.jsx(bt.NiceDatePicker,{id:x,label:P,value:t,onChange:p,min:l,max:i||h,placeholder:k||m("controls.startDate","Start date"),disabled:r,size:S,clearable:C,labelPlacement:$,labelWidth:H})}),g&&_!==""&&_!=null&&e.jsx("span",{className:"nice-daterange__separator",style:{paddingBottom:8,color:"var(--text-secondary, #666)"},"aria-hidden":"true",children:_}),e.jsx("div",{style:{flex:F?"1 1 0":void 0,minWidth:0},children:e.jsx(bt.NiceDatePicker,{label:W,value:i,onChange:s,min:t||l,max:h,placeholder:L||m("controls.endDate","End date"),disabled:r,size:S,clearable:C,labelPlacement:$,labelWidth:H})})]}),c&&e.jsx("span",{className:"nice-field__spinner",children:e.jsx("span",{className:"nice-spinner nice-spinner--sm"})}),A==="right"&&B&&e.jsx("div",{className:"nice-field__error",role:"alert",children:B}),A==="right"&&!B&&V&&e.jsx("div",{className:"nice-field__helper",children:V})]}),A!=="right"&&B&&e.jsx("div",{className:"nice-field__error",children:B}),A!=="right"&&!B&&V&&e.jsx("div",{className:"nice-field__hint",children:V})]})},Jn=({min:t=0,max:i=100,step:o=1,startValue:s,endValue:l,onChange:h,showLabels:C=!0,formatLabel:k,valuePlacement:L="none",label:P,error:W,helperText:K,required:_,disabled:O,readOnly:F,loading:Z,size:B="md",id:V,className:f,style:w,accessMode:S,showKeyboardHints:M,labelPlacement:G,errorPlacement:y,labelWidth:N,controlWidth:j})=>{const $=te.Zs(S,V),A=$==="hidden";($==="disabled"||$==="readOnly")&&(O=!0);const{t:H}=te.$o(),v=te.Hs(V),c=n.useRef(null),D=n.useMemo(()=>[te.mc.increment,te.mc.decrement,te.mc.first,te.mc.last,{key:"Tab",description:H("shortcuts.switchThumb","Switch thumb")}],[H]),x=p=>(p-t)/(i-t)*100,m=p=>k?k(p):String(p),r=p=>{const g=Math.round(p/o)*o;return Math.max(t,Math.min(i,g))},d=n.useCallback((p,g)=>{p.preventDefault();const u=c.current;if(!u||O)return;const T=z=>{const J=u.getBoundingClientRect(),me=Math.max(0,Math.min(1,(z.clientX-J.left)/J.width)),U=r(t+me*(i-t));g==="start"?h(Math.min(U,l),l):h(s,Math.max(U,s))},Y=()=>{document.removeEventListener("pointermove",T),document.removeEventListener("pointerup",Y)};document.addEventListener("pointermove",T),document.addEventListener("pointerup",Y)},[t,i,o,s,l,h,O]);return A?null:e.jsxs("div",{className:`nice-field nice-field--${B} nice-field--rangeslider ${G==="left"?"nice-field--label-left":""} ${y==="right"?"nice-field--error-right":""} ${W?"nice-field--error":""} ${Z?"nice-field--loading":""} ${f||""}`,style:{...w,...N!=null&&{"--nice-field-label-width":typeof N=="number"?`${N}px`:N},...j!=null&&{"--nice-field-control-width":typeof j=="number"?`${j}px`:j}},"aria-busy":Z||void 0,children:[P&&e.jsxs("label",{className:"nice-field__label nice-field__label--with-value",htmlFor:v,children:[e.jsxs("span",{className:"nice-field__label-text",children:[P,_&&e.jsx("span",{className:"nice-field__required",children:"*"}),M&&e.jsx(te.Kr,{shortcuts:D,size:"sm"})]}),L==="right"&&e.jsxs("span",{className:"nice-range-slider__value nice-range-slider__value--inline",children:[m(s)," – ",m(l)]})]}),e.jsxs("div",{className:"nice-field__control",children:[L==="right"&&!P&&e.jsxs("span",{className:"nice-range-slider__value",children:[m(s)," – ",m(l)]}),e.jsxs("div",{className:"nice-range-slider__stack",children:[e.jsxs("div",{className:`nice-range-slider ${C?"nice-range-slider--with-labels":""} ${P?"nice-range-slider--has-field-label":""}`,ref:c,children:[e.jsx("div",{className:"nice-range-slider__track",children:e.jsx("div",{className:"nice-range-slider__fill",style:{left:`${x(s)}%`,width:`${x(l)-x(s)}%`}})}),e.jsx("div",{className:"nice-range-slider__thumb",style:{left:`${x(s)}%`},onPointerDown:p=>F?void 0:d(p,"start"),role:"slider","aria-valuemin":t,"aria-valuemax":l,"aria-valuenow":s,tabIndex:O?-1:0,id:v}),e.jsx("div",{className:"nice-range-slider__thumb",style:{left:`${x(l)}%`},onPointerDown:p=>F?void 0:d(p,"end"),role:"slider","aria-valuemin":s,"aria-valuemax":i,"aria-valuenow":l,tabIndex:O?-1:0})]}),C&&e.jsxs("div",{className:"nice-range-slider__values",children:[e.jsx("span",{className:"nice-range-slider__values-start",style:{left:`${x(s)}%`},children:m(s)}),e.jsx("span",{className:"nice-range-slider__values-end",style:{left:`${x(l)}%`},children:m(l)})]}),L==="bottom"&&e.jsxs("div",{className:"nice-range-slider__value nice-range-slider__value--bottom",children:[m(s)," – ",m(l)]})]}),Z&&e.jsx("span",{className:"nice-field__spinner",children:e.jsx("span",{className:"nice-spinner nice-spinner--sm"})}),y==="right"&&W&&e.jsx("div",{className:"nice-field__error",role:"alert",children:W}),y==="right"&&!W&&K&&e.jsx("div",{className:"nice-field__helper",children:K})]}),y!=="right"&&W&&e.jsx("div",{className:"nice-field__error",role:"alert",children:W}),y!=="right"&&!W&&K&&e.jsx("div",{className:"nice-field__helper",children:K})]})},Qn=({displayValue:t,placeholder:i,clearable:o,children:s,onClear:l,open:h,onOpenChange:C,dropdownWidth:k,label:L,error:P,helperText:W,required:K,disabled:_,size:O="md",id:F,className:Z,style:B,accessMode:V,showKeyboardHints:f,displayStyle:w})=>{te.vs("input",w),te.Ss("input",w);const S=te.Zs(V,F),M=S==="hidden";(S==="disabled"||S==="readOnly")&&(_=!0);const G=te.Hs(F),{t:y}=te.$o(),[N,j]=n.useState(!1),$=n.useRef(null),A=h??N,H=n.useMemo(()=>[{key:"Enter",description:y("shortcuts.openDropdown","Open dropdown")},te.mc.cancel],[y]),v=c=>{C?C(c):j(c)};return te.$s($,()=>v(!1)),M?null:e.jsxs("div",{className:`nice-field nice-field--${O} ${P?"nice-field--error":""} ${Z||""}`,style:B,ref:$,children:[L&&e.jsxs("label",{className:"nice-field__label",htmlFor:G,children:[L,K&&e.jsx("span",{className:"nice-field__required",children:"*"}),f&&e.jsx(te.Kr,{shortcuts:H,size:"sm"})]}),e.jsxs("div",{className:"nice-field__input-wrap",children:[e.jsxs("button",{type:"button",id:G,className:"nice-select__trigger",onClick:()=>!_&&v(!A),disabled:_,children:[e.jsx("span",{children:t||i||y("controls.select","Select...")}),e.jsx("span",{className:"nice-select__arrow",children:"▾"})]}),o&&t&&!_&&e.jsx("button",{type:"button",className:"nice-field__clear",onClick:()=>l?.(),"aria-label":y("controls.clear","Clear"),children:"✕"})]}),A&&e.jsx("div",{className:"nice-dropdown",style:{width:k},children:s}),P&&e.jsx("div",{className:"nice-field__error",children:P}),W&&!P&&e.jsx("div",{className:"nice-field__hint",children:W})]})};function Ct(t){const i=t.trim().toLowerCase();return i.startsWith("http://")||i.startsWith("https://")||i.startsWith("/")||i.startsWith("./")||i.startsWith("../")?!0:!(i.startsWith("javascript:")||i.startsWith("vbscript:")||i.startsWith("data:text"))}const ei=["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"],Ne=({d:t,viewBox:i="0 0 24 24"})=>e.jsx("svg",{width:"16",height:"16",viewBox:i,fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:e.jsx("path",{d:t})}),ti={bold:e.jsx("strong",{style:{fontFamily:"serif"},children:"B"}),italic:e.jsx("em",{style:{fontFamily:"serif"},children:"I"}),underline:e.jsx("span",{style:{textDecoration:"underline"},children:"U"}),strikethrough:e.jsx("span",{style:{textDecoration:"line-through"},children:"S"}),h1:"H1",h2:"H2",h3:"H3",ul:e.jsx(Ne,{d:"M8 6h13M8 12h13M8 18h13M3 6h.01M3 12h.01M3 18h.01"}),ol:e.jsx(Ne,{d:"M10 6h11M10 12h11M10 18h11M4 6h1v4M4 10h2M6 18H4c0-1 2-2 2-3s-1-1.5-2-1"}),link:e.jsx(Ne,{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}),unlink:e.jsx(Ne,{d:"M18.84 12.25l1.72-1.71a5 5 0 0 0-7.07-7.07L11 5.78M3 3l18 18M9 15l3-3M14 11l3 3M14 21l-1.72-1.72a5 5 0 0 1-7.07-7.07L7 10.49"}),undo:e.jsx(Ne,{d:"M3 7v6h6M3 13a9 9 0 1 0 3-7.7L3 13"}),redo:e.jsx(Ne,{d:"M21 7v6h-6M21 13a9 9 0 1 1-3-7.7L21 13"}),clear:e.jsx(Ne,{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}),table:e.jsx(Ne,{d:"M3 3h18v18H3zM3 9h18M3 15h18M9 3v18M15 3v18"}),image:e.jsx(Ne,{d:"M3 3h18v18H3zM3 16l5-5 4 4 3-3 6 6M9 9a2 2 0 1 1-4 0 2 2 0 0 1 4 0z"}),code:e.jsx(Ne,{d:"M16 18l6-6-6-6M8 6l-6 6 6 6"}),markdown:"MD",blockquote:e.jsx(Ne,{d:"M3 21c3-3 3-9 0-12M21 21c-3-3-3-9 0-12M9 7h6v6H9zM15 7h6v6h-6z"}),hr:e.jsx(Ne,{d:"M5 12h14"}),subscript:"X₂",superscript:"X²",indent:e.jsx(Ne,{d:"M3 8l4 4-4 4M7 6h14M7 12h14M3 18h18"}),outdent:e.jsx(Ne,{d:"M7 8l-4 4 4 4M21 6H3M21 12H7M21 18H3"}),alignLeft:e.jsx(Ne,{d:"M3 6h18M3 12h12M3 18h18"}),alignCenter:e.jsx(Ne,{d:"M3 6h18M6 12h12M3 18h18"}),alignRight:e.jsx(Ne,{d:"M3 6h18M9 12h12M3 18h18"}),alignJustify:e.jsx(Ne,{d:"M3 6h18M3 12h18M3 18h18"}),fullscreen:e.jsx(Ne,{d:"M3 9V3h6M21 9V3h-6M3 15v6h6M21 15v6h-6"}),removeFormat:e.jsx(Ne,{d:"M4 7V4h16v3M5 20h6M13 4 8 20"}),print:e.jsx(Ne,{d:"M6 9V2h12v7M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v8H6z"}),source:e.jsx(Ne,{d:"M16 18l6-6-6-6M8 6l-6 6 6 6"}),emoji:e.jsx(Ne,{d:"M12 22a10 10 0 1 1 0-20 10 10 0 0 1 0 20zM8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01"}),findReplace:e.jsx(Ne,{d:"M11 19a8 8 0 1 1 0-16 8 8 0 0 1 0 16zM21 21l-4.35-4.35"}),fontSize:e.jsx(Ne,{d:"M4 7V4h16v3M9 20h6M12 4v16"}),fontColor:e.jsx(Ne,{d:"M4 21h16M5 17l7-12 7 12M8 13h8"})},ni=[{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"}],ii=[{label:"Faces",emojis:["??","??","??","??","??","??","??","??","??","??","??","??"]},{label:"Hands",emojis:["??","??","??","??","??","??","??","??","??","??"]},{label:"Symbols",emojis:["??","?","??","?","?","?","??","??","??","??","??","??"]},{label:"Arrows",emojis:["??","??","??","??","??","??","??","??","??","?"]}];function oi(t){let i=t;return i=i.replace(/<h1[^>]*>(.*?)<\/h1>/gi,`# $1
2
+ `),i=i.replace(/<h2[^>]*>(.*?)<\/h2>/gi,`## $1
3
+ `),i=i.replace(/<h3[^>]*>(.*?)<\/h3>/gi,`### $1
4
+ `),i=i.replace(/<strong[^>]*>(.*?)<\/strong>/gi,"**$1**"),i=i.replace(/<b[^>]*>(.*?)<\/b>/gi,"**$1**"),i=i.replace(/<em[^>]*>(.*?)<\/em>/gi,"*$1*"),i=i.replace(/<i[^>]*>(.*?)<\/i>/gi,"*$1*"),i=i.replace(/<code[^>]*>(.*?)<\/code>/gi,"`$1`"),i=i.replace(/<pre[^>]*>(.*?)<\/pre>/gis,"```\n$1\n```\n"),i=i.replace(/<br\s*\/?>/gi,`
5
+ `),i=i.replace(/<li[^>]*>(.*?)<\/li>/gi,`- $1
6
+ `),i=i.replace(/<\/?(?:ul|ol|p|div)[^>]*>/gi,`
7
+ `),i=i.replace(/<[^>]+>/g,""),i=i.replace(/\n{3,}/g,`
8
+
9
+ `),i.trim()}function ai(t){let i=t;return i=i.replace(/^### (.+)$/gm,"<h3>$1</h3>"),i=i.replace(/^## (.+)$/gm,"<h2>$1</h2>"),i=i.replace(/^# (.+)$/gm,"<h1>$1</h1>"),i=i.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),i=i.replace(/\*(.+?)\*/g,"<em>$1</em>"),i=i.replace(/`([^`]+)`/g,"<code>$1</code>"),i=i.replace(/```\n?([\s\S]*?)\n?```/g,"<pre>$1</pre>"),i=i.replace(/^- (.+)$/gm,"<li>$1</li>"),i=i.replace(/(<li>.*<\/li>)/gs,"<ul>$1</ul>"),i=i.replace(/\n/g,"<br>"),i}const ft=({value:t,onChange:i,placeholder:o,height:s=200,toolbar:l=ei,readOnly:h,onImageUpload:C,mentionTrigger:k,mentionSuggestions:L,onMentionSearch:P,onFileDrop:W,pasteCleanup:K=!0,maxLength:_=0,showWordCount:O=!1,templates:F,label:Z,error:B,helperText:V,required:f,disabled:w,size:S="md",id:M,className:G,style:y,accessMode:N})=>{const j=te.Zs(N,M),$=j==="hidden";j==="disabled"&&(w=!0),j==="readOnly"&&(h=!0);const A=te.Hs(M),H=n.useRef(null),v=n.useRef(null),c=n.useRef(null),[D,x]=n.useState(!1),[m,r]=n.useState(""),[d,p]=n.useState(!1),[g,u]=n.useState(""),[T,Y]=n.useState(!1),[z,J]=n.useState(""),[me,U]=n.useState(0),[ne,ie]=n.useState(!1),[he,fe]=n.useState("var(--nice-text, #000000)"),[ye,xe]=n.useState("var(--nice-warning, #ffff00)"),[ae,ce]=n.useState(0),[ge,ee]=n.useState(0),[R,b]=n.useState(!1),[q,re]=n.useState(""),[de,I]=n.useState(""),[se,ue]=n.useState(!1),[_e,ve]=n.useState(!1),ke=n.useCallback((a,E)=>{if(h||w)return;const X=H.current;if(X){if(a==="markdown"){if(!D)r(oi(t)),x(!0),p(!1);else{const oe=ai(m);i(oe),x(!1)}return}if(a==="source"){d?(i(g),p(!1)):(u(t),p(!0),x(!1));return}if(a==="fullscreen"){ie(oe=>!oe);return}if(a==="emoji"){ue(oe=>!oe);return}if(a==="findReplace"){b(oe=>!oe);return}if(a==="image"){if(C)v.current?.click();else{const oe=prompt("Image URL:");oe&&Ct(oe)&&(X.focus(),document.execCommand("insertImage",!1,oe),i(te.As(X.innerHTML)))}return}switch(X.focus(),a){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 oe=prompt("URL:");oe&&Ct(oe)&&document.execCommand("createLink",!1,oe);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":{E&&document.execCommand("fontSize",!1,E);break}case"fontColor":{E&&document.execCommand("foreColor",!1,E);break}case"bgColor":{E&&document.execCommand("hiliteColor",!1,E);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 le=window.getSelection()?.toString()||"";le.includes(`
10
+ `)||le.length>60?document.execCommand("insertHTML",!1,`<pre class="nice-htmleditor__code-block">${le||"// code"}</pre>`):document.execCommand("insertHTML",!1,`<code>${le||"code"}</code>`);break}}i(te.As(X.innerHTML)),ce(X.textContent?.length??0)}},[i,h,w,D,m,t,C,d,g]),Ee=n.useCallback(async a=>{const E=a.target.files?.[0];if(!E||!C)return;const X=await C(E),oe=H.current;oe&&X&&(oe.focus(),document.execCommand("insertImage",!1,X),i(oe.innerHTML)),a.target.value=""},[C,i]),De=n.useCallback(()=>{const a=H.current;if(!a)return;const E=a.textContent?.length??0;if(_>0&&E>_&&(a.textContent=(a.textContent??"").slice(0,_)),ce(E),ee((a.textContent??"").trim().split(/\s+/).filter(Boolean).length),i(a.innerHTML),k){const X=window.getSelection();if(X&&X.rangeCount>0){const oe=X.getRangeAt(0),le=oe.startContainer;if(le.nodeType===Node.TEXT_NODE){const we=le.textContent||"",Ce=oe.startOffset,Pe=we.slice(0,Ce),$e=Pe.lastIndexOf(k);if($e>=0&&($e===0||/\s/.test(Pe[$e-1]))){const Ue=Pe.slice($e+k.length);if(!/\s/.test(Ue)){Y(!0),J(Ue),U(0),P?.(Ue);return}}}}Y(!1)}},[i,k,P]),Te=L?.filter(a=>a.label.toLowerCase().includes(z.toLowerCase())).slice(0,8)??[],Ie=n.useCallback(a=>{const E=H.current;if(!E)return;const X=window.getSelection();if(!X||X.rangeCount===0)return;const oe=X.getRangeAt(0),le=oe.startContainer;if(le.nodeType===Node.TEXT_NODE&&k){const we=le.textContent||"",Ce=oe.startOffset,$e=we.slice(0,Ce).lastIndexOf(k);if($e>=0){const Ue=we.slice(0,$e),En=we.slice(Ce),Tn=`<span class="nice-htmleditor__mention" data-mention="${a.key}" contenteditable="false">${k}${a.label}</span>&nbsp;`;le.textContent=Ue;const at=document.createRange();at.setStartAfter(le),at.collapse(!0);const Rn=at.createContextualFragment(Tn+En);le.parentNode?.insertBefore(Rn,le.nextSibling),X.collapseToEnd(),i(E.innerHTML)}}Y(!1)},[k,i]),Oe=n.useCallback(a=>{if(T&&Te.length>0){a.key==="ArrowDown"?(a.preventDefault(),U(E=>Math.min(E+1,Te.length-1))):a.key==="ArrowUp"?(a.preventDefault(),U(E=>Math.max(E-1,0))):a.key==="Enter"?(a.preventDefault(),Ie(Te[me])):a.key==="Escape"&&Y(!1);return}(a.ctrlKey||a.metaKey)&&a.key==="b"?(a.preventDefault(),ke("bold")):(a.ctrlKey||a.metaKey)&&a.key==="i"?(a.preventDefault(),ke("italic")):(a.ctrlKey||a.metaKey)&&a.key==="u"?(a.preventDefault(),ke("underline")):(a.ctrlKey||a.metaKey)&&a.key==="f"?(a.preventDefault(),b(E=>!E)):(a.ctrlKey||a.metaKey)&&a.key==="z"&&!a.shiftKey?(a.preventDefault(),ke("undo")):(a.ctrlKey||a.metaKey)&&(a.key==="y"||a.key==="z"&&a.shiftKey)&&(a.preventDefault(),ke("redo"))},[T,Te,me,Ie,ke]),Ke=n.useCallback(a=>{if(!K)return;a.preventDefault();const E=a.clipboardData.getData("text/html"),X=a.clipboardData.getData("text/plain");if(E){const le=E.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,le)}else X&&document.execCommand("insertText",!1,X);const oe=H.current;oe&&(i(oe.innerHTML),ce(oe.textContent?.length??0))},[K,i]),Ye=n.useCallback(async a=>{if(!W)return;a.preventDefault();const E=Array.from(a.dataTransfer.files);if(E.length===0)return;const X=await W(E),oe=H.current;if(oe){oe.focus();for(const le of X)if(/\.(png|jpe?g|gif|webp|svg|bmp|ico)$/i.test(le)||le.startsWith("data:image/"))document.execCommand("insertImage",!1,le);else{const Ce=`<a href="${le}">${le.split("/").pop()??le}</a>`;document.execCommand("insertHTML",!1,Ce)}i(oe.innerHTML)}},[W,i]),Le=n.useCallback(a=>{W&&a.preventDefault()},[W]),Ae=n.useCallback(a=>{const E=H.current;if(!E||!q)return;const X=E.textContent??"",oe=q.toLowerCase(),le=X.toLowerCase();(a===1?le.indexOf(oe):le.lastIndexOf(oe))!==-1&&(E.focus(),window.find?.(q))},[q]),ze=n.useCallback(()=>{const a=H.current;!a||!q||(a.innerHTML=a.innerHTML.split(q).join(de),i(a.innerHTML))},[q,de,i]),Q=n.useCallback(()=>{if(!q)return;const a=t.split(q).join(de);i(a);const E=H.current;E&&(E.innerHTML=a)},[q,de,t,i]),pe=n.useCallback(a=>{const E=H.current;E&&(E.focus(),document.execCommand("insertText",!1,a),i(E.innerHTML),ue(!1))},[i]),je=n.useCallback(a=>{const E=H.current;E&&(E.focus(),document.execCommand("insertHTML",!1,a),i(E.innerHTML),ve(!1))},[i]),Se=n.useCallback(a=>{const E=w||h;if(a==="fontSize")return e.jsx(be.NiceSelect,{size:"sm",value:"",onChange:oe=>ke("fontSize",String(oe)),disabled:E,placeholder:"Size",options:ni.map(oe=>({value:oe.value,label:oe.label})),style:{minWidth:70,maxWidth:80}},a);if(a==="fontColor")return e.jsx(be.NiceColorPicker,{value:he,onChange:oe=>{fe(oe),ke("fontColor",oe)},disabled:E,size:"sm",label:"",title:"Text color"},a);if(a==="bgColor")return e.jsx(be.NiceColorPicker,{value:ye,onChange:oe=>{xe(oe),ke("bgColor",oe)},disabled:E,size:"sm",label:"",title:"Highlight color"},a);const X=a==="markdown"&&D||a==="fullscreen"&&ne||a==="source"&&d||a==="findReplace"&&R||a==="emoji"&&se;return e.jsx(be.NiceButton,{size:"sm",variant:X?"primary":"ghost",onClick:()=>ke(a),title:a,disabled:E,children:ti[a]||a},a)},[w,h,ke,D,ne,he,ye,d,R,se]);return $?null:e.jsxs("div",{className:`nice-field nice-field--${S} ${B?"nice-field--error":""} ${G||""}`,style:y,children:[Z&&e.jsxs("label",{className:"nice-field__label",htmlFor:A,children:[Z,f&&e.jsx("span",{className:"nice-field__required",children:"*"})]}),e.jsxs("div",{ref:c,className:`nice-htmleditor${ne?" nice-htmleditor--fullscreen":""}`,children:[e.jsxs("div",{className:"nice-htmleditor__toolbar",style:{display:"flex",flexWrap:"wrap",gap:2,alignItems:"center"},children:[l.map(Se),F&&F.length>0&&e.jsxs("div",{style:{position:"relative"},children:[e.jsx(be.NiceButton,{size:"sm",variant:_e?"primary":"ghost",onClick:()=>ve(a=>!a),title:"Insert template",children:"??"}),_e&&e.jsx("ul",{style:{position:"absolute",top:"100%",right:0,zIndex:200,background:"var(--bg-primary, #fff)",border:"1px solid var(--border-color, #ddd)",borderRadius:6,boxShadow:"0 4px 16px var(--nice-overlay-12, rgba(0, 0, 0, 0.12))",listStyle:"none",margin:0,padding:4,minWidth:160,maxHeight:200,overflow:"auto"},children:F.map((a,E)=>e.jsx("li",{style:{padding:"6px 10px",cursor:"pointer",borderRadius:4},onMouseDown:X=>{X.preventDefault(),je(a.html)},children:a.label},E))})]})]}),R&&e.jsxs("div",{className:"nice-htmleditor__find-bar",style:{display:"flex",gap:4,alignItems:"center",padding:"4px 8px",background:"var(--bg-secondary, #f8f9fa)",borderBottom:"1px solid var(--border-color, #ddd)",fontSize:"0.875em"},children:[e.jsx("input",{type:"text",placeholder:"Find...",value:q,onChange:a=>re(a.target.value),style:{flex:1,maxWidth:180,padding:"2px 6px",border:"1px solid var(--border-color, #ccc)",borderRadius:4,background:"var(--bg-primary, #fff)",color:"var(--text-primary, #1f2937)"}}),e.jsx("input",{type:"text",placeholder:"Replace...",value:de,onChange:a=>I(a.target.value),style:{flex:1,maxWidth:180,padding:"2px 6px",border:"1px solid var(--border-color, #ccc)",borderRadius:4,background:"var(--bg-primary, #fff)",color:"var(--text-primary, #1f2937)"}}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Ae(1),title:"Find next",children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>Ae(-1),title:"Find previous",children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:ze,disabled:w||h,children:"Replace"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:Q,disabled:w||h,children:"All"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>b(!1),children:"?"})]}),se&&e.jsx("div",{className:"nice-htmleditor__emoji-picker",style:{padding:8,background:"var(--bg-primary, #fff)",borderBottom:"1px solid var(--border-color, #ddd)",maxHeight:180,overflowY:"auto"},children:ii.map(a=>e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"0.7em",fontWeight:600,color:"var(--text-muted, #999)",padding:"4px 0"},children:a.label}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:2},children:a.emojis.map(E=>e.jsx("span",{style:{cursor:"pointer",fontSize:"1.2em",padding:2,borderRadius:4},onClick:()=>pe(E),title:E,children:E},E))})]},a.label))}),e.jsx("input",{ref:v,type:"file",accept:"image/*",style:{display:"none"},onChange:Ee}),d?e.jsx("textarea",{className:"nice-htmleditor__source",value:g,onChange:a=>u(a.target.value),style:{minHeight:s,width:"100%",fontFamily:"monospace",resize:"vertical",whiteSpace:"pre",fontSize:"0.85em",background:"var(--bg-primary, #fff)",color:"var(--text-primary, #1f2937)",border:"none",padding:12,boxSizing:"border-box",outline:"none"},disabled:w||h}):D?e.jsx("textarea",{className:"nice-htmleditor__markdown",value:m,onChange:a=>r(a.target.value),style:{minHeight:s,width:"100%",fontFamily:"monospace",resize:"vertical",background:"var(--bg-primary, #fff)",color:"var(--text-primary, #1f2937)",border:"none",padding:12,boxSizing:"border-box",outline:"none"},disabled:w||h}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx("div",{ref:H,id:A,className:"nice-htmleditor__content",contentEditable:!w&&!h,dangerouslySetInnerHTML:{__html:t},onInput:De,onKeyDown:Oe,onPaste:Ke,onDrop:Ye,onDragOver:Le,style:{minHeight:s},"data-placeholder":o,role:"textbox","aria-multiline":"true",suppressContentEditableWarning:!0}),T&&Te.length>0&&e.jsx("ul",{className:"nice-htmleditor__mention-list",children:Te.map((a,E)=>e.jsx("li",{className:`nice-htmleditor__mention-item ${E===me?"nice-htmleditor__mention-item--active":""}`,onMouseDown:X=>{X.preventDefault(),Ie(a)},children:a.label},a.key))})]}),e.jsxs("div",{className:"nice-htmleditor__statusbar",style:{display:"flex",gap:12,padding:"2px 8px",fontSize:"0.75em",color:"var(--text-muted, #666)",borderTop:"1px solid var(--border-color, #eee)"},children:[_>0&&e.jsxs("span",{children:[ae," / ",_]}),O&&e.jsxs("span",{children:[ge," words"]}),O&&e.jsxs("span",{children:[ae," chars"]}),d&&e.jsx("span",{style:{fontWeight:600},children:"HTML Source"}),D&&e.jsx("span",{style:{fontWeight:600},children:"Markdown"})]})]}),B&&e.jsx("div",{className:"nice-field__error",children:B}),V&&!B&&e.jsx("div",{className:"nice-field__hint",children:V})]})},si=Object.freeze(Object.defineProperty({__proto__:null,NiceHtmlEditor:ft},Symbol.toStringTag,{value:"Module"})),ri=[{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"}],ci=[{style:"professional",label:"Professional"},{style:"casual",label:"Casual"},{style:"formal",label:"Formal"},{style:"concise",label:"Concise"}],li=n.forwardRef(function(i,o){const{enableAI:s=!0,aiModel:l,enableImprove:h=!0,enableTranslate:C=!0,enableGenerate:k=!0,toolbar:L,languages:P=ri,textStyles:W=ci,onImprove:K,onTranslate:_,onGenerate:O,showAIToolbar:F=!0,value:Z,onChange:B,...V}=i,f=n.useRef(null),[w,S]=n.useState(!1),[M,G]=n.useState(!1),[y,N]=n.useState(!1),[j,$]=n.useState(""),[A,H]=n.useState(""),[v,c]=n.useState("professional"),[D,x]=n.useState(""),[m,r]=n.useState(P[0]?.code||"en"),[d,p]=n.useState(""),[g,u]=n.useState(""),{t:T}=te.$o(),Y=te.ie(),{improveText:z,translate:J,generateHtml:me,isLoading:U}=te.Dl(),ne=s&&Y.isConfigured,ie=n.useCallback(()=>{const ee=window.getSelection();return ee&&ee.toString().trim()?ee.toString():""},[]),he=n.useCallback(ee=>{const R=window.getSelection();if(R&&R.rangeCount>0){const b=R.getRangeAt(0);b.deleteContents();const q=document.createElement("div");q.innerHTML=ee;const re=document.createDocumentFragment();for(;q.firstChild;)re.appendChild(q.firstChild);if(b.insertNode(re),f.current){const de=f.current.innerHTML;B(de)}}},[B]),fe=n.useCallback(async(ee="professional")=>{if(!ne||!h)return"";const R=ie();if(!R)return"";$(R),c(ee),S(!0),H("");try{const b=await z(R,ee);return H(b),K?.(R,b,ee),b}catch{return H(T("htmlEditorAI.improveFailed","Failed to improve text")),""}},[ne,h,ie,z,K,T]),ye=n.useCallback(async ee=>{if(!ne||!C)return"";const R=ie();if(!R)return"";$(R),r(ee),G(!0),x("");try{const b=P.find(re=>re.code===ee)?.label||ee,q=await J(R,b);return x(q),_?.(R,q,ee),q}catch{return x(T("htmlEditorAI.translateFailed","Failed to translate text")),""}},[ne,C,ie,J,P,_,T]),xe=n.useCallback(async ee=>{if(!ne||!k||!ee.trim())return"";p(ee),u("");try{const R=await me(ee);return u(R),O?.(ee,R),R}catch{return u(T("htmlEditorAI.generateFailed","Failed to generate HTML")),""}},[ne,k,me,O,T]),ae=n.useCallback(()=>{A&&he(A),S(!1),H("")},[A,he]),ce=n.useCallback(()=>{D&&he(D),G(!1),x("")},[D,he]),ge=n.useCallback(()=>{if(g&&f.current){document.execCommand("insertHTML",!1,g);const ee=f.current.innerHTML;B(ee)}N(!1),u(""),p("")},[g,B]);return n.useImperativeHandle(o,()=>({getEditor:()=>f.current,focus:()=>f.current?.focus(),getValue:()=>f.current?.innerHTML||"",setValue:ee=>{f.current&&(f.current.innerHTML=ee,B(ee))},getSelection:ie,insertHtml:ee=>{document.execCommand("insertHTML",!1,ee),f.current&&B(f.current.innerHTML)},improveSelection:fe,translateSelection:ye,generateHtml:xe})),n.useCallback(ee=>{f.current=ee},[]),e.jsxs("div",{className:"nice-html-editor-ai","data-testid":i["data-testid"],children:[F&&ne&&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"}),U&&e.jsx("span",{className:"nice-html-editor-ai__loading",children:T("htmlEditorAI.processing","Processing...")})]}),e.jsxs("div",{className:"nice-html-editor-ai__toolbar-right",children:[h&&e.jsxs("div",{className:"nice-html-editor-ai__dropdown",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",onClick:()=>fe(),disabled:U,title:T("htmlEditorAI.improveText","Improve selected text"),children:["✨ ",T("htmlEditorAI.improve","Improve")]}),e.jsx("div",{className:"nice-html-editor-ai__dropdown-menu",children:W.map(({style:ee,label:R})=>e.jsx("button",{type:"button",className:"nice-html-editor-ai__dropdown-item",onClick:()=>fe(ee),children:R},ee))})]}),C&&e.jsxs("div",{className:"nice-html-editor-ai__dropdown",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",disabled:U,title:T("htmlEditorAI.translateText","Translate selected text"),children:["🌐 ",T("htmlEditorAI.translate","Translate")]}),e.jsx("div",{className:"nice-html-editor-ai__dropdown-menu nice-html-editor-ai__dropdown-menu--languages",children:P.map(({code:ee,label:R})=>e.jsx("button",{type:"button",className:"nice-html-editor-ai__dropdown-item",onClick:()=>ye(ee),children:R},ee))})]}),k&&e.jsxs("button",{type:"button",className:"nice-html-editor-ai__btn",onClick:()=>N(!0),disabled:U,title:T("htmlEditorAI.generateHtml","Generate HTML from description"),children:["⚡ ",T("htmlEditorAI.generate","Generate")]})]})]}),e.jsx("div",{className:"nice-html-editor-ai__editor-wrapper",children:e.jsx(ft,{value:Z,onChange:B,toolbar:L,...V})}),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:["✨ ",T("htmlEditorAI.improveText","Improve Text")]}),e.jsx("div",{className:"nice-html-editor-ai__style-selector",children:W.map(({style:ee,label:R})=>e.jsx("button",{type:"button",className:`nice-html-editor-ai__style-btn ${v===ee?"nice-html-editor-ai__style-btn--active":""}`,onClick:()=>{c(ee),fe(ee)},children:R},ee))}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>S(!1),children:"✕"})]}),e.jsx("div",{className:"nice-html-editor-ai__panel-body",children:U?e.jsx("div",{className:"nice-html-editor-ai__loading-panel",children:T("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:T("htmlEditorAI.original","Original")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:j})]}),e.jsxs("div",{className:"nice-html-editor-ai__text-block nice-html-editor-ai__text-block--improved",children:[e.jsx("h5",{children:T("htmlEditorAI.improved","Improved")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:A})]})]})}),e.jsxs("div",{className:"nice-html-editor-ai__panel-footer",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__apply",onClick:ae,disabled:!A||U,children:["✓ ",T("htmlEditorAI.apply","Apply")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{S(!1),H("")},children:T("htmlEditorAI.cancel","Cancel")})]})]}),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:["🌐 ",T("htmlEditorAI.translateText","Translate Text")]}),e.jsx("div",{className:"nice-html-editor-ai__language-selector",children:e.jsx("select",{value:m,onChange:ee=>{r(ee.target.value),ye(ee.target.value)},className:"nice-html-editor-ai__language-select",children:P.map(({code:ee,label:R})=>e.jsx("option",{value:ee,children:R},ee))})}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>G(!1),children:"✕"})]}),e.jsx("div",{className:"nice-html-editor-ai__panel-body",children:U?e.jsx("div",{className:"nice-html-editor-ai__loading-panel",children:T("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:T("htmlEditorAI.original","Original")}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:j})]}),e.jsxs("div",{className:"nice-html-editor-ai__text-block nice-html-editor-ai__text-block--translated",children:[e.jsx("h5",{children:P.find(ee=>ee.code===m)?.label||m}),e.jsx("div",{className:"nice-html-editor-ai__text-content",children:D})]})]})}),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:!D||U,children:["✓ ",T("htmlEditorAI.apply","Apply")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{G(!1),x("")},children:T("htmlEditorAI.cancel","Cancel")})]})]}),y&&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:["⚡ ",T("htmlEditorAI.generateHtml","Generate HTML")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__close",onClick:()=>{N(!1),u(""),p("")},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:T("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:d,onChange:ee=>p(ee.target.value),className:"nice-html-editor-ai__generate-textarea",rows:3}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__generate-btn",onClick:()=>xe(d),disabled:U||!d.trim(),children:U?T("htmlEditorAI.generating","Generating..."):T("htmlEditorAI.generate","Generate")})]}),g&&e.jsxs("div",{className:"nice-html-editor-ai__generate-result",children:[e.jsx("h5",{children:T("htmlEditorAI.preview","Preview")}),e.jsx("div",{className:"nice-html-editor-ai__preview",dangerouslySetInnerHTML:{__html:g}}),e.jsx("h5",{children:T("htmlEditorAI.htmlCode","HTML Code")}),e.jsx("pre",{className:"nice-html-editor-ai__code",children:g})]})]}),e.jsxs("div",{className:"nice-html-editor-ai__panel-footer",children:[e.jsxs("button",{type:"button",className:"nice-html-editor-ai__apply",onClick:ge,disabled:!g||U,children:["✓ ",T("htmlEditorAI.insert","Insert")]}),e.jsx("button",{type:"button",className:"nice-html-editor-ai__cancel",onClick:()=>{N(!1),u(""),p("")},children:T("htmlEditorAI.cancel","Cancel")})]})]})]})}),Jt=n.forwardRef(({length:t=6,value:i="",onChange:o,masked:s=!1,onComplete:l,label:h,helperText:C,error:k,required:L,disabled:P,readOnly:W,size:K="md",name:_,id:O,className:F,style:Z,autoFocus:B,labelPlacement:V,errorPlacement:f,labelWidth:w,controlWidth:S,loading:M,cellWidth:G,...y},N)=>{const j=te.Hs(O),$=n.useRef([]),A=i.padEnd(t,"").slice(0,t).split(""),H=n.useCallback(m=>{const r=Math.max(0,Math.min(t-1,m));$.current[r]?.focus()},[t]),v=n.useCallback(m=>{const r=m.join("");o?.(r),r.length===t&&r.indexOf("")===-1&&/^\d+$/.test(r)&&l?.(r)},[o,l,t]),c=n.useCallback((m,r)=>{const p=r.target.value.replace(/\D/g,"").slice(-1);if(!p)return;const g=[...A];g[m]=p,v(g),H(m+1)},[A,v,H]),D=n.useCallback((m,r)=>{if(r.key==="Backspace"){r.preventDefault();const d=[...A];A[m]?(d[m]="",v(d)):m>0&&(d[m-1]="",v(d),H(m-1))}else r.key==="ArrowLeft"?(r.preventDefault(),H(m-1)):r.key==="ArrowRight"&&(r.preventDefault(),H(m+1))},[A,v,H]),x=n.useCallback(m=>{m.preventDefault();const r=m.clipboardData.getData("text").replace(/\D/g,"").slice(0,t);if(!r)return;const d=r.padEnd(t,"").slice(0,t).split("");for(let p=r.length;p<t;p++)d[p]=A[p]||"";v(d),H(Math.min(r.length,t-1))},[t,A,v,H]);return e.jsxs("div",{className:`nice-field nice-field--${K} nice-field--otp${V?` nice-field--label-${V}`:""}${f==="right"?" nice-field--error-right":""} ${M?"nice-field--loading":""} ${F||""}`,style:{...Z,...w!=null&&{"--nice-field-label-width":typeof w=="number"?`${w}px`:w},...S!=null&&{"--nice-field-control-width":typeof S=="number"?`${S}px`:S},...G!=null&&{"--nice-otp-cell-width":typeof G=="number"?`${G}px`:G}},"aria-busy":M||void 0,...y,children:[h&&e.jsx("label",{htmlFor:`${j}-0`,className:`nice-field__label ${L?"nice-field__label--required":""}`,children:h}),e.jsxs("div",{className:"nice-field__control",children:[e.jsxs("div",{ref:N,className:`nice-otp nice-otp--${K} ${k?"nice-otp--error":""} ${P?"nice-otp--disabled":""}`,onPaste:x,children:[Array.from({length:t},(m,r)=>e.jsx("input",{ref:d=>{$.current[r]=d},id:r===0?`${j}-0`:void 0,className:"nice-otp__digit",type:s?"password":"text",inputMode:"numeric",maxLength:2,value:A[r]||"",disabled:P,readOnly:W,autoFocus:B&&r===0,"aria-invalid":!!k,"aria-label":`${r+1}`,onChange:d=>c(r,d),onKeyDown:d=>D(r,d),onFocus:d=>d.target.select()},r)),_&&e.jsx("input",{type:"hidden",name:_,value:i})]}),f==="right"&&k&&e.jsx("div",{id:`${j}-error`,className:"nice-field__error",role:"alert",children:k}),f==="right"&&!k&&C&&e.jsx("div",{id:`${j}-helper`,className:"nice-field__helper",children:C}),M&&e.jsx("span",{className:"nice-field__spinner",children:e.jsx("span",{className:"nice-spinner nice-spinner--sm"})})]}),f!=="right"&&k&&e.jsx("div",{id:`${j}-error`,className:"nice-field__error",role:"alert",children:k}),f!=="right"&&!k&&C&&e.jsx("div",{id:`${j}-helper`,className:"nice-field__helper",children:C})]})});Jt.displayName="NiceInputOtp";const di={xxs:36,xs:48,sm:64,md:80,lg:100,xl:128,xxl:160},Ze=6,Ve=135,Qt=405,We=Qt-Ve;function ut(t,i,o,s){const l=(s-90)*(Math.PI/180);return{x:t+o*Math.cos(l),y:i+o*Math.sin(l)}}function St(t,i,o,s,l){const h=ut(t,i,o,s),C=ut(t,i,o,l),k=l-s>180?1:0;return`M ${h.x} ${h.y} A ${o} ${o} 0 ${k} 1 ${C.x} ${C.y}`}const en=n.forwardRef(({value:t=0,onChange:i,min:o=0,max:s=100,step:l=1,showValue:h=!0,valueTemplate:C="{value}",label:k,helperText:L,error:P,required:W,disabled:K,readOnly:_,size:O="md",name:F,id:Z,className:B,style:V,labelPlacement:f="top",errorPlacement:w,labelWidth:S,controlWidth:M,loading:G,isLabelCentered:y=!0,...N},j)=>{const $=te.Hs(Z),A=n.useRef(!1),H=n.useRef(null),v=typeof O=="number"?O:di[O],c=v/2,D=v/2,x=(v-Ze*2)/2,m=s>o?(t-o)/(s-o):0,r=Ve+m*We,d=n.useCallback(Y=>{let z=Y-Ve;z<0&&(z+=360),z>We&&(z=z-We<360-z?We:0);const J=Math.max(0,Math.min(1,z/We)),me=o+J*(s-o),U=Math.round(me/l)*l;return Math.max(o,Math.min(s,U))},[o,s,l]),p=n.useCallback(Y=>{if(K||_)return;const z=H.current;if(!z)return;const J=z.getBoundingClientRect(),me=Y.clientX-J.left-J.width/2,U=Y.clientY-J.top-J.height/2;let ne=Math.atan2(me,-U)*(180/Math.PI);ne<0&&(ne+=360);const ie=d(ne);i?.(ie)},[d,K,_,i]);n.useEffect(()=>{const Y=J=>{A.current&&p(J)},z=()=>{A.current=!1};return window.addEventListener("pointermove",Y),window.addEventListener("pointerup",z),()=>{window.removeEventListener("pointermove",Y),window.removeEventListener("pointerup",z)}},[p]);const g=n.useCallback(Y=>{if(K||_)return;let z=t;Y.key==="ArrowUp"||Y.key==="ArrowRight"?(Y.preventDefault(),z=Math.min(s,t+l)):(Y.key==="ArrowDown"||Y.key==="ArrowLeft")&&(Y.preventDefault(),z=Math.max(o,t-l)),z!==t&&i?.(z)},[t,i,o,s,l,K,_]),u=C.replace("{value}",String(t)),T=ut(c,D,x,r);return e.jsxs("div",{className:`nice-field nice-knob-field nice-knob-field--err-${w||"bottom"} nice-field--${typeof O=="string"?O:"md"} ${G?"nice-field--loading":""} ${B||""}`,style:{...V,...S!=null&&{"--nice-field-label-width":typeof S=="number"?`${S}px`:S},...M!=null&&{"--nice-field-control-width":typeof M=="number"?`${M}px`:M}},"aria-busy":G||void 0,...N,children:[e.jsxs("div",{className:`nice-knob-field__inner nice-knob-field--${f} ${y?"nice-knob-field--label-centered":""}`,children:[k&&e.jsx("label",{htmlFor:$,className:`nice-field__label ${W?"nice-field__label--required":""}`,children:k}),e.jsx("div",{className:"nice-field__control",children:e.jsxs("div",{ref:Y=>{H.current=Y,typeof j=="function"?j(Y):j&&(j.current=Y)},className:`nice-knob nice-knob--${O} ${K?"nice-knob--disabled":""} ${P?"nice-knob--error":""}`,role:"slider",id:$,tabIndex:K?-1:0,"aria-valuenow":t,"aria-valuemin":o,"aria-valuemax":s,"aria-disabled":K,"aria-invalid":!!P,onPointerDown:Y=>{K||_||(A.current=!0,p(Y))},onKeyDown:g,children:[e.jsxs("svg",{width:v,height:v,viewBox:`0 0 ${v} ${v}`,children:[e.jsx("path",{d:St(c,D,x,Ve,Qt),fill:"none",stroke:"var(--nice-border-color, #d1d5db)",strokeWidth:Ze,strokeLinecap:"round"}),m>0&&e.jsx("path",{d:St(c,D,x,Ve,r),fill:"none",stroke:"var(--nice-primary, #3b82f6)",strokeWidth:Ze,strokeLinecap:"round"}),e.jsx("circle",{cx:T.x,cy:T.y,r:Ze,fill:"var(--nice-primary, #3b82f6)"})]}),h&&e.jsx("span",{className:"nice-knob__value",children:u}),F&&e.jsx("input",{type:"hidden",name:F,value:t}),G&&e.jsx("span",{className:"nice-knob__spinner","aria-hidden":"true",children:e.jsx("span",{className:"nice-spinner nice-spinner--sm"})})]})})]}),P&&e.jsx("div",{className:"nice-field__error",role:"alert",children:P}),!P&&L&&e.jsx("div",{className:"nice-field__helper",children:L})]})});en.displayName="NiceKnob";const tn=n.forwardRef(({value:t="",onChange:i,suggestions:o=[],onSearch:s,trigger:l="@",renderSuggestion:h,placeholder:C,rows:k=3,label:L,helperText:P,error:W,required:K,disabled:_,readOnly:O,size:F="md",name:Z,id:B,className:V,style:f,...w},S)=>{const M=te.Hs(B),[G,y]=n.useState(!1),[N,j]=n.useState(""),[$,A]=n.useState(0),[H,v]=n.useState({top:0,left:0}),c=n.useRef(null),D=n.useRef(-1),m=o.map(u=>typeof u=="string"?{key:u,label:u}:u).filter(u=>u.label.toLowerCase().includes(N.toLowerCase())),r=n.useCallback(()=>{y(!1),j(""),A(0),D.current=-1},[]),d=n.useCallback(u=>{const T=c.current;if(!T||D.current<0)return;const Y=t.slice(0,D.current),z=t.slice(T.selectionStart),J=`${l}${u.label} `,me=Y+J+z;i?.(me),r(),requestAnimationFrame(()=>{const U=Y.length+J.length;T.setSelectionRange(U,U),T.focus()})},[t,i,l,r]),p=n.useCallback(u=>{const T=u.target.value;i?.(T);const Y=u.target.selectionStart,z=T.slice(0,Y),J=z.lastIndexOf(l);if(J>=0){const me=J>0?z[J-1]:" ",U=z.slice(J+l.length);if(/\s/.test(me)&&!/\s/.test(U)){D.current=J;const ne=U;j(ne),y(!0),A(0),s?.(ne);const ie=u.target,he=ie.getBoundingClientRect(),fe=parseInt(getComputedStyle(ie).lineHeight)||20,ye=z.split(`
11
+ `);v({top:he.top+ye.length*fe+4-ie.scrollTop,left:he.left+8});return}}r()},[i,l,s,r]),g=n.useCallback(u=>{!G||m.length===0||(u.key==="ArrowDown"?(u.preventDefault(),A(T=>(T+1)%m.length)):u.key==="ArrowUp"?(u.preventDefault(),A(T=>(T-1+m.length)%m.length)):u.key==="Enter"?(u.preventDefault(),m[$]&&d(m[$])):u.key==="Escape"&&r())},[G,m,$,d,r]);return n.useEffect(()=>{if(!G)return;const u=T=>{const Y=c.current;Y&&!Y.contains(T.target)&&r()};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[G,r]),e.jsxs("div",{className:`nice-field ${V||""}`,style:f,...w,children:[L&&e.jsx("label",{htmlFor:M,className:`nice-field__label ${K?"nice-field__label--required":""}`,children:L}),e.jsxs("div",{className:`nice-mention nice-mention--${F} ${W?"nice-mention--error":""} ${_?"nice-mention--disabled":""}`,children:[e.jsx("textarea",{ref:u=>{c.current=u,typeof S=="function"?S(u):S&&(S.current=u)},id:M,name:Z,className:"nice-mention__input",value:t,onChange:p,onKeyDown:g,placeholder:C,rows:k,disabled:_,readOnly:O,"aria-invalid":!!W,"aria-describedby":W?`${M}-error`:P?`${M}-helper`:void 0,"aria-autocomplete":"list","aria-expanded":G}),G&&m.length>0&&e.jsx("ul",{className:"nice-mention__suggestions",role:"listbox",style:{position:"fixed",top:H.top,left:H.left},children:m.map((u,T)=>e.jsx("li",{role:"option","aria-selected":T===$,className:`nice-mention__suggestion ${T===$?"nice-mention__suggestion--active":""}`,onMouseDown:Y=>{Y.preventDefault(),d(u)},onMouseEnter:()=>A(T),children:h?h(u):e.jsxs(e.Fragment,{children:[u.icon&&e.jsx("span",{className:"nice-mention__suggestion-icon",children:u.icon}),e.jsx("span",{children:u.label})]})},u.key))})]}),W&&e.jsx("div",{id:`${M}-error`,className:"nice-field__error",role:"alert",children:W}),!W&&P&&e.jsx("div",{id:`${M}-helper`,className:"nice-field__helper",children:P})]})});tn.displayName="NiceMention";function mi(t){const i=[],o=s=>{for(const l of s)i.push(l),l.children&&o(l.children)};return o(t),i}function nn(t,i){const o=i.toLowerCase();return t.reduce((s,l)=>{const h=l.children?nn(l.children,i):[];return(l.label.toLowerCase().includes(o)||h.length>0)&&s.push({...l,children:h.length>0?h:l.children}),s},[])}const on=({node:t,level:i,selectedKeys:o,expandedKeys:s,onToggleExpand:l,onSelect:h,selectableLeafsOnly:C,maxDepth:k})=>{const L=typeof k=="number"?Math.min(10,Math.max(1,k)):1/0,W=!(i+1>=L)&&t.children&&t.children.length>0,K=s.has(t.key),_=o.has(t.key),O=!W,F=!t.disabled&&(!C||O),Z=Math.min(i+1,10),B={paddingLeft:i*16+8,"--nice-row-bg":`var(--nice-tree-level-${Z}-bg, transparent)`,"--nice-row-text":`var(--nice-tree-level-${Z}-text, inherit)`,"--nice-row-hover-bg":`var(--nice-tree-level-${Z}-hover-bg, var(--bg-secondary, #f3f4f6))`,"--nice-row-active-bg":`var(--nice-tree-level-${Z}-active-bg, var(--nice-primary-tint-10, rgba(59,130,246,0.1)))`};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`nice-tree-select__node ${_?"nice-tree-select__node--selected":""} ${t.disabled?"nice-tree-select__node--disabled":""}`,style:B,"data-nice-depth":Z,onClick:()=>F&&h(t.key),role:"treeitem","aria-selected":_,"aria-expanded":W?K:void 0,"aria-disabled":t.disabled,children:[W?e.jsx("button",{type:"button",className:"nice-tree-select__toggle",onClick:V=>{V.stopPropagation(),l(t.key)},"aria-label":"Toggle",children:e.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"currentColor",style:{transform:K?"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==null,null),e.jsx("span",{className:"nice-tree-select__node-label",children:t.label})]}),W&&K&&t.children.map(V=>e.jsx(on,{node:V,level:i+1,selectedKeys:o,expandedKeys:s,onToggleExpand:l,onSelect:h,selectableLeafsOnly:C,maxDepth:k},V.key))]})},an=n.forwardRef(({nodes:t,value:i,onChange:o,multiple:s=!1,searchable:l=!1,placeholder:h,selectableLeafsOnly:C=!1,clearable:k=!1,maxDepth:L,label:P,helperText:W,error:K,required:_,disabled:O,readOnly:F,size:Z="md",name:B,id:V,className:f,style:w,controlWidth:S,...M},G)=>{const{t:y}=te.$o(),N=te.Hs(V),[j,$]=n.useState(!1),[A,H]=n.useState(""),[v,c]=n.useState(new Set),D=n.useRef(null);te.$s(D,()=>$(!1));const x=n.useMemo(()=>i==null?new Set:new Set(Array.isArray(i)?i:[i]),[i]),m=n.useMemo(()=>A?nn(t,A):t,[t,A]),r=n.useMemo(()=>{const u=mi(t);return Array.from(x).map(T=>u.find(Y=>Y.key===T)?.label).filter(Boolean)},[x,t]),d=n.useCallback(u=>{c(T=>{const Y=new Set(T);return Y.has(u)?Y.delete(u):Y.add(u),Y})},[]),p=n.useCallback(u=>{if(s){const T=new Set(x);T.has(u)?T.delete(u):T.add(u),o?.(Array.from(T))}else o?.(u),$(!1)},[s,x,o]),g=n.useCallback(u=>{u.stopPropagation(),o?.(s?[]:"")},[o,s]);return e.jsxs("div",{className:`nice-field nice-field--${Z} ${f||""}`,style:{width:"fit-content",maxWidth:"100%",...w},...M,children:[P&&e.jsx("label",{htmlFor:N,className:`nice-field__label ${_?"nice-field__label--required":""}`,children:P}),e.jsxs("div",{ref:D,className:"nice-tree-select",style:{position:"relative",width:S!=null?typeof S=="number"?`${S}px`:S:240},children:[e.jsxs("div",{ref:G,id:N,className:`nice-input nice-input--${Z} ${K?"nice-input--error":""} ${O?"nice-input--disabled":""} ${F?"nice-input--readonly":""}`,role:"combobox","aria-expanded":j,"aria-haspopup":"tree","aria-invalid":!!K,tabIndex:O?-1:0,onClick:()=>!O&&!F&&$(!j),onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),!O&&!F&&$(!j))},children:[e.jsx("span",{className:"nice-tree-select__display",children:r.length>0?r.join(", "):e.jsx("span",{className:"nice-tree-select__placeholder",children:h??y("controls.select","Select...")})}),k&&x.size>0&&e.jsx("button",{type:"button",className:"nice-input__clear",onClick:g,"aria-label":y("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:[l&&e.jsx("div",{className:"nice-tree-select__search",children:e.jsx("input",{className:"nice-input__native",type:"text",placeholder:y("controls.search","Search..."),value:A,onChange:u=>H(u.target.value),autoFocus:!0,onClick:u=>u.stopPropagation()})}),e.jsx("div",{className:"nice-tree-select__list",children:m.length===0?e.jsx("div",{className:"nice-tree-select__empty",children:y("controls.noResults","No results")}):m.map(u=>e.jsx(on,{node:u,level:0,selectedKeys:x,expandedKeys:v,onToggleExpand:d,onSelect:p,selectableLeafsOnly:C,maxDepth:L},u.key))})]})]}),B&&e.jsx("input",{type:"hidden",name:B,value:Array.isArray(i)?i.join(","):i??""}),K&&e.jsx("div",{id:`${N}-error`,className:"nice-field__error",role:"alert",children:K}),!K&&W&&e.jsx("div",{id:`${N}-helper`,className:"nice-field__helper",children:W})]})});an.displayName="NiceTreeSelect";function He(t,i){return String(t[i])}const sn=n.forwardRef(({source:t,target:i,onChange:o,keyField:s="id",labelField:l="label",renderItem:h,filterable:C=!1,searchable:k,groupBy:L,sortable:P=!1,bulkActions:W=!0,maxRight:K,sourceHeader:_,targetHeader:O,disabled:F=!1,size:Z="md",className:B,style:V,id:f,...w},S)=>{const{t:M}=te.$o(),[G,y]=n.useState(new Set),[N,j]=n.useState(new Set),[$,A]=n.useState(""),[H,v]=n.useState(""),c=n.useCallback((u,T,Y)=>{T(z=>{const J=new Set(z);return J.has(Y)?J.delete(Y):J.add(Y),J})},[]),D=n.useCallback(()=>{const u=t.filter(J=>G.has(He(J,s))),T=t.filter(J=>!G.has(He(J,s))),Y=typeof K=="number"?u.slice(0,Math.max(0,K-i.length)):u,z=u.slice(Y.length);o([...T,...z],[...i,...Y]),y(new Set)},[t,i,G,s,o,K]),x=n.useCallback(()=>{const u=i.filter(Y=>N.has(He(Y,s))),T=i.filter(Y=>!N.has(He(Y,s)));o([...t,...u],T),j(new Set)},[t,i,N,s,o]),m=n.useCallback(()=>{if(typeof K=="number"){const u=Math.max(0,K-i.length),T=t.slice(0,u),Y=t.slice(u);o(Y,[...i,...T])}else o([],[...i,...t]);y(new Set)},[t,i,o,K]),r=n.useCallback(()=>{o([...t,...i],[]),j(new Set)},[t,i,o]),d=(u,T)=>{if(!T)return u;const Y=T.toLowerCase();return u.filter(z=>String(z[l]).toLowerCase().includes(Y))},p=W===!1?{moveAll:!1,removeAll:!1}:W===!0||W===void 0?{moveAll:!0,removeAll:!0}:{moveAll:W.moveAll??!0,removeAll:W.removeAll??!0},g=(u,T,Y,z,J,me,U)=>{const ne=d(u,z),ie=k===!0||C&&k===void 0?"both":k??!1,he=ie==="both"||ie==="left"&&U==="left"||ie==="right"&&U==="right",fe=(()=>{if(!L)return[{label:"",items:ne}];const ae=new Map;for(const ce of ne){const ge=String(L(ce));let ee=ae.get(ge);ee||(ee=[],ae.set(ge,ee)),ee.push(ce)}return[...ae.entries()].map(([ce,ge])=>({label:ce,items:ge}))})(),ye=(ae,ce)=>{ae.dataTransfer.setData("text/plain",ce),ae.dataTransfer.effectAllowed="move"},xe=(ae,ce)=>{ae.preventDefault();const ge=ae.dataTransfer.getData("text/plain");if(!ge||ge===ce||U!=="right"||!P)return;const ee=[...i],R=ee.findIndex(re=>He(re,s)===ge),b=ee.findIndex(re=>He(re,s)===ce);if(R===-1||b===-1)return;const[q]=ee.splice(R,1);ee.splice(b,0,q),o(t,ee)};return e.jsxs("div",{className:"nice-picklist__panel",children:[me&&e.jsx("div",{className:"nice-picklist__header",children:me}),he&&e.jsx("div",{className:"nice-picklist__filter",children:e.jsx("input",{className:"nice-input__native",type:"text",placeholder:M("controls.search","Search..."),value:z,onChange:ae=>J(ae.target.value)})}),e.jsxs("div",{className:"nice-picklist__list",role:"listbox","aria-multiselectable":"true",children:[fe.map(ae=>e.jsxs(n.Fragment,{children:[ae.label&&e.jsx("div",{className:"nice-picklist__group-header",role:"presentation",children:ae.label}),ae.items.map(ce=>{const ge=He(ce,s),ee=T.has(ge);return e.jsx("div",{className:`nice-picklist__item ${ee?"nice-picklist__item--selected":""}`,role:"option","aria-selected":ee,draggable:P&&U==="right",onDragStart:P&&U==="right"?R=>ye(R,ge):void 0,onDragOver:P&&U==="right"?R=>R.preventDefault():void 0,onDrop:P&&U==="right"?R=>xe(R,ge):void 0,onClick:()=>!F&&c(T,Y,ge),children:h?h(ce,U):String(ce[l])},ge)})]},ae.label||"__none__")),ne.length===0&&e.jsx("div",{className:"nice-picklist__empty",children:M("controls.noItems","No items")})]})]})};return e.jsxs("div",{ref:S,id:f,className:`nice-picklist nice-picklist--${Z} ${F?"nice-picklist--disabled":""} ${B||""}`,style:V,...w,children:[g(t,G,y,$,A,_??M("picklist.source","Available"),"left"),e.jsxs("div",{className:"nice-picklist__controls",children:[e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:F||G.size===0,onClick:D,"aria-label":M("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"})})}),p.moveAll&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:F||t.length===0,onClick:m,"aria-label":M("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:F||N.size===0,onClick:x,"aria-label":M("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"})})}),p.removeAll&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--outline nice-btn--sm",disabled:F||i.length===0,onClick:r,"aria-label":M("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"})]})})]}),g(i,N,j,H,v,O??M("picklist.target","Selected"),"right")]})});sn.displayName="NicePickList";let Fe=null,Xe=null;const ui="0.45.0",it=`https://cdn.jsdelivr.net/npm/monaco-editor@${ui}/min/vs`,Mt=15e3;function $t(){const t=window;if(t.MonacoEnvironment?.getWorkerUrl)return;const i=`self.MonacoEnvironment={baseUrl:'${it}/'};importScripts('${it}/base/worker/workerMain.js');`,o=URL.createObjectURL(new Blob([i],{type:"text/javascript"}));t.MonacoEnvironment={getWorkerUrl:()=>o}}function Be(t){if(t!=="auto")return t;if(typeof document>"u")return"vs";const i=document.documentElement.dataset.theme;return i==="dark"?"vs-dark":i==="light"?"vs":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"vs-dark":"vs"}function rn(){return Xe?Promise.resolve(Xe):Fe||(Fe=new Promise((t,i)=>{if(window.monaco){$t(),Xe=window.monaco,t(Xe);return}let o=!1;const s=window.setTimeout(()=>{o||(o=!0,Fe=null,i(new Error(`Monaco editor failed to load within ${Mt}ms`)))},Mt),l=document.createElement("script");l.src=`${it}/loader.min.js`,l.async=!0,l.onload=()=>{const h=window.require;h.config({paths:{vs:it}}),$t(),h(["vs/editor/editor.main"],C=>{o||(o=!0,window.clearTimeout(s),Xe=C,t(C))})},l.onerror=()=>{o||(o=!0,window.clearTimeout(s),Fe=null,i(new Error("Failed to load Monaco Editor loader script")))},document.head.appendChild(l)}),Fe)}const yt=n.forwardRef(function(i,o){const{value:s,onChange:l,language:h="plaintext",theme:C="auto",options:k={},height:L=400,width:P="100%",markers:W=[],decorations:K=[],completionProvider:_,onMount:O,onCursorPositionChange:F,onSelectionChange:Z,onSave:B,loading:V,disabled:f=!1,showToolbar:w=!1,showStatusBar:S=!1,editorSize:M="standard",className:G,"data-testid":y,lsp:N}=i,j=n.useRef(null),$=n.useRef(null),A=n.useRef(null),H=n.useRef([]),v=n.useRef(null),[c,D]=n.useState(!0),[x,m]=n.useState(null),[r,d]=n.useState({lineNumber:1,column:1}),[p,g]=n.useState(""),[u,T]=n.useState(k.wordWrap==="on"),Y=n.useMemo(()=>({automaticLayout:!0,readOnly:f||k.readOnly,minimap:{enabled:k.minimap??!0},lineNumbers:k.lineNumbers??"on",wordWrap:k.wordWrap??"off",tabSize:k.tabSize??2,insertSpaces:k.insertSpaces??!0,fontSize:k.fontSize??14,fontFamily:k.fontFamily??"'Fira Code', 'Consolas', 'Monaco', monospace",fontLigatures:k.fontLigatures??!0,cursorStyle:k.cursorStyle??"line",cursorBlinking:k.cursorBlinking??"blink",autoClosingBrackets:k.autoClosingBrackets??"languageDefined",autoClosingQuotes:k.autoClosingQuotes??"languageDefined",formatOnPaste:k.formatOnPaste??!1,formatOnType:k.formatOnType??!1,renderWhitespace:k.renderWhitespace??"selection",renderControlCharacters:k.renderControlCharacters??!1,scrollBeyondLastLine:k.scrollBeyondLastLine??!0,smoothScrolling:k.smoothScrolling??!0,folding:k.folding??!0,showFoldingControls:k.showFoldingControls??"mouseover","bracketPairColorization.enabled":k.bracketPairColorization??!0,guides:k.guides??{bracketPairs:!0,indentation:!0,highlightActiveIndentation:!0},stickyScroll:{enabled:k.stickyScroll??!1},quickSuggestions:k.quickSuggestions??!0,suggestOnTriggerCharacters:k.suggestOnTriggerCharacters??!0,acceptSuggestionOnEnter:k.acceptSuggestionOnEnter??"on",inlayHints:{enabled:k.inlayHints?"on":"off"}}),[k,f]);n.useEffect(()=>{if(!j.current)return;let U=!0;return rn().then(async ne=>{if(!U||!j.current)return;A.current=ne;const ie=ne.editor.create(j.current,{value:s,language:h,theme:Be(C),...Y});if($.current=ie,D(!1),ie.onDidChangeModelContent(()=>{const he=ie.getValue();l?.(he)}),ie.onDidChangeCursorPosition(he=>{d({lineNumber:he.position.lineNumber,column:he.position.column}),F?.({lineNumber:he.position.lineNumber,column:he.position.column})}),ie.onDidChangeCursorSelection(he=>{const fe=he.selection,ye=ie.getModel()?.getValueInRange(fe)??"";g(ye),Z?.({startLineNumber:fe.startLineNumber,startColumn:fe.startColumn,endLineNumber:fe.endLineNumber,endColumn:fe.endColumn})}),ie.addCommand(ne.KeyMod.CtrlCmd|ne.KeyCode.KeyS,()=>{B?.(ie.getValue())}),N&&typeof window<"u")try{await ot("https://cdn.jsdelivr.net/npm/vscode-ws-jsonrpc@1.0.2/lib/browser/index.min.js"),await ot("https://cdn.jsdelivr.net/npm/monaco-languageclient@0.15.0/lib/monaco-languageclient.min.js");const he=window,fe=he.ReconnectingWebSocket,{MonacoLanguageClient:ye,CloseAction:xe,ErrorAction:ae,createConnection:ce}=he.monacoLanguageClient||{};if(ye&&ce){const ge=N.url,ee=N.language,R=new fe(ge),b=new he.VSCodeWebSocketMessageReader(R),q=new he.VSCodeWebSocketMessageWriter(R),re=ce(b,q),de=new ye({name:"LSP Client",clientOptions:{documentSelector:[ee],initializationOptions:N.initOptions,errorHandler:{error:()=>ae.Continue,closed:()=>xe.Restart}},connectionProvider:{get:()=>Promise.resolve(re)}});de.start(),$.current.__lspClient=de}}catch(he){console.warn("LSP bridge failed to load:",he)}O?.(ie,ne)}).catch(ne=>{U&&(m(ne.message??"Failed to load editor"),D(!1))}),()=>{if(U=!1,$.current?.dispose(),v.current?.dispose(),$.current&&$.current.__lspClient)try{$.current.__lspClient.stop()}catch{}}},[N]),n.useEffect(()=>{const U=$.current;if(U&&s!==U.getValue()){const ne=U.getPosition();U.setValue(s),ne&&U.setPosition(ne)}},[s]),n.useEffect(()=>{const U=$.current,ne=A.current;if(U&&ne){const ie=U.getModel();ie&&ne.editor.setModelLanguage(ie,h)}},[h]),n.useEffect(()=>{const U=A.current;if(!U||(U.editor.setTheme(Be(C)),C!=="auto"||typeof document>"u"))return;const ne=()=>{A.current?.editor.setTheme(Be("auto"))},ie=new MutationObserver(ne);ie.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","class"]});const he=window.matchMedia?.("(prefers-color-scheme: dark)");return he?.addEventListener?.("change",ne),()=>{ie.disconnect(),he?.removeEventListener?.("change",ne)}},[C]),n.useEffect(()=>{const U=$.current;U&&U.updateOptions(Y)},[Y]),n.useEffect(()=>{const U=$.current,ne=A.current;if(U&&ne){const ie=U.getModel();if(ie){const he=W.map(fe=>({startLineNumber:fe.startLineNumber,startColumn:fe.startColumn,endLineNumber:fe.endLineNumber,endColumn:fe.endColumn,message:fe.message,severity:fe.severity}));ne.editor.setModelMarkers(ie,"owner",he)}}},[W]),n.useEffect(()=>{const U=$.current;if(U&&K.length>0){const ne=K.map(ie=>({range:{startLineNumber:ie.range.startLineNumber,startColumn:ie.range.startColumn,endLineNumber:ie.range.endLineNumber,endColumn:ie.range.endColumn},options:{className:ie.className,glyphMarginClassName:ie.glyphMarginClassName,hoverMessage:ie.hoverMessage?{value:ie.hoverMessage}:void 0,isWholeLine:ie.isWholeLine}}));H.current=U.deltaDecorations(H.current,ne)}},[K]),n.useEffect(()=>{const U=A.current;if(!U||!_)return;v.current?.dispose();const ne={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 v.current=U.languages.registerCompletionItemProvider(h,{provideCompletionItems:async(ie,he)=>({suggestions:(await _(ie,he)).map(ye=>({label:ye.label,kind:ne[ye.kind]??0,insertText:ye.insertText,insertTextRules:ye.insertTextRules==="insertAsSnippet"?4:void 0,documentation:ye.documentation,detail:ye.detail,range:{startLineNumber:he.lineNumber,startColumn:he.column,endLineNumber:he.lineNumber,endColumn:he.column}}))})}),()=>{v.current?.dispose()}},[h,_]),n.useImperativeHandle(o,()=>({getEditor:()=>$.current,getMonaco:()=>A.current,focus:()=>$.current?.focus(),getValue:()=>$.current?.getValue()??"",setValue:U=>$.current?.setValue(U),getSelection:()=>{const U=$.current;if(!U)return"";const ne=U.getSelection();return ne?U.getModel()?.getValueInRange(ne)??"":""},insertText:U=>{const ne=$.current;if(!ne)return;const ie=ne.getSelection();ie&&ne.executeEdits("",[{range:ie,text:U}])},formatDocument:()=>{$.current?.getAction("editor.action.formatDocument")?.run()},goToLine:(U,ne=1)=>{const ie=$.current;ie&&(ie.setPosition({lineNumber:U,column:ne}),ie.revealLineInCenter(U),ie.focus())},findReplace:()=>{$.current?.getAction("editor.action.startFindReplaceAction")?.run()},undo:()=>{$.current?.trigger("keyboard","undo",null)},redo:()=>{$.current?.trigger("keyboard","redo",null)},getCursorPosition:()=>{const U=$.current?.getPosition();return{lineNumber:U?.lineNumber??1,column:U?.column??1}},setMarkers:U=>{const ne=$.current,ie=A.current;if(ne&&ie){const he=ne.getModel();if(he){const fe=U.map(ye=>({startLineNumber:ye.startLineNumber,startColumn:ye.startColumn,endLineNumber:ye.endLineNumber,endColumn:ye.endColumn,message:ye.message,severity:ye.severity}));ie.editor.setModelMarkers(he,"owner",fe)}}}}),[]);const z=n.useMemo(()=>({format:()=>$.current?.getAction("editor.action.formatDocument")?.run(),undo:()=>$.current?.trigger("keyboard","undo",null),redo:()=>$.current?.trigger("keyboard","redo",null),find:()=>$.current?.getAction("editor.action.startFindReplaceAction")?.run(),toggleWordWrap:()=>{const U=!u;T(U),$.current?.updateOptions({wordWrap:U?"on":"off"})},toggleMinimap:()=>{const U=$.current?.getOption?.(A.current?.editor?.EditorOption?.minimap);$.current?.updateOptions({minimap:{enabled:!U?.enabled}})},foldAll:()=>$.current?.getAction("editor.foldAll")?.run(),unfoldAll:()=>$.current?.getAction("editor.unfoldAll")?.run()}),[u]),J=s.split(`
12
+ `).length,me=s.length;return e.jsxs("div",{className:`nice-code-editor-wrap nice-editor--${M} ${G??""}`,style:{height:L,width:P,display:"flex",flexDirection:"column",position:"relative"},"data-testid":y,children:[x&&e.jsxs("div",{className:"nice-code-editor__error",style:{position:"absolute",inset:0,zIndex:2,background:"var(--nice-bg-primary, #fff)"},children:[e.jsxs("span",{children:["⚠️ ",x]}),e.jsx("textarea",{value:s,onChange:U=>l?.(U.target.value),readOnly:f||k.readOnly,style:{width:"100%",height:"100%",fontFamily:"monospace"}})]}),c&&!x&&e.jsx("div",{className:"nice-code-editor__loader-overlay",style:{position:"absolute",inset:0,zIndex:2,display:"flex",alignItems:"center",justifyContent:"center",background:"var(--nice-bg-primary, #fff)"},children:V??e.jsx("div",{className:"nice-code-editor__loader",children:"Loading editor..."})}),w&&e.jsxs("div",{className:"nice-code-editor__toolbar",children:[e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.undo,title:"Undo (Ctrl+Z)",children:"↶"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.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:z.format,title:"Format (Shift+Alt+F)",children:"⎘"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.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${u?" nice-code-editor__toolbar-btn--active":""}`,onClick:z.toggleWordWrap,title:"Toggle Word Wrap",children:"↩"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.toggleMinimap,title:"Toggle Minimap",children:"▥"}),e.jsx("span",{className:"nice-code-editor__toolbar-sep"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.foldAll,title:"Fold All",children:"⊟"}),e.jsx("button",{className:"nice-code-editor__toolbar-btn",onClick:z.unfoldAll,title:"Unfold All",children:"⊞"})]}),e.jsx("div",{ref:j,className:"nice-code-editor",style:{flex:1,minHeight:0}}),S&&e.jsxs("div",{className:"nice-code-editor__statusbar",children:[e.jsxs("span",{children:["Ln ",r.lineNumber,", Col ",r.column]}),p.length>0&&e.jsxs("span",{children:["(",p.length," selected)"]}),e.jsx("span",{className:"nice-code-editor__statusbar-spacer"}),e.jsxs("span",{children:[J," lines · ",me," chars"]}),e.jsx("span",{className:"nice-code-editor__statusbar-lang",children:h}),W.length>0&&e.jsxs("span",{className:"nice-code-editor__statusbar-markers",children:["⚠ ",W.length]})]})]})});function cn(t){const{original:i,modified:o,language:s="plaintext",theme:l="auto",height:h=400,width:C="100%",inline:k=!1,renderSideBySide:L=!0,originalEditable:P=!1,modifiedEditable:W=!1,onOriginalChange:K,onModifiedChange:_,loading:O,className:F,"data-testid":Z}=t,B=n.useRef(null),V=n.useRef(null),f=n.useRef(null),[w,S]=n.useState(!0),[M,G]=n.useState(null);return n.useEffect(()=>{if(!B.current)return;let y=!0;return rn().then(N=>{if(!y||!B.current)return;f.current=N;const j=N.editor.createModel(i,s),$=N.editor.createModel(o,s),A=N.editor.createDiffEditor(B.current,{automaticLayout:!0,theme:Be(l),renderSideBySide:!k&&L,originalEditable:P,readOnly:!W});A.setModel({original:j,modified:$}),V.current=A,S(!1),P&&j.onDidChangeContent(()=>{K?.(j.getValue())}),W&&$.onDidChangeContent(()=>{_?.($.getValue())})}).catch(N=>{y&&(G(N.message??"Failed to load diff editor"),S(!1))}),()=>{y=!1,V.current?.dispose()}},[]),n.useEffect(()=>{const y=V.current;if(!y)return;const N=y.getModel();N&&(N.original.getValue()!==i&&N.original.setValue(i),N.modified.getValue()!==o&&N.modified.setValue(o))},[i,o]),n.useEffect(()=>{const y=f.current;if(!y||(y.editor.setTheme(Be(l)),l!=="auto"||typeof document>"u"))return;const N=()=>{f.current?.editor.setTheme(Be("auto"))},j=new MutationObserver(N);j.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","class"]});const $=window.matchMedia?.("(prefers-color-scheme: dark)");return $?.addEventListener?.("change",N),()=>{j.disconnect(),$?.removeEventListener?.("change",N)}},[l,w]),M?e.jsx("div",{className:`nice-code-diff-editor nice-code-diff-editor--error ${F??""}`,style:{height:h,width:C},"data-testid":Z,children:e.jsx("div",{className:"nice-code-editor__error",children:e.jsxs("span",{children:["⚠️ ",M]})})}):e.jsxs("div",{className:`nice-code-diff-editor ${F??""}`,style:{height:h,width:C,position:"relative"},"data-testid":Z,children:[e.jsx("div",{ref:B,style:{position:"absolute",inset:0}}),w&&e.jsx("div",{style:{position:"absolute",inset:0,display:"flex",alignItems:"center",justifyContent:"center",background:"var(--nice-bg-primary, #fff)",zIndex:2},children:O??e.jsx("div",{className:"nice-code-editor__loader",children:"Loading diff editor..."})})]})}const pi="1.29.0",Et=`https://cdn.jsdelivr.net/npm/prismjs@${pi}`;let rt=null;const pt={javascript:"javascript",typescript:"typescript",json:"json",html:"markup",css:"css",scss:"scss",less:"less",markdown:"markdown",xml:"markup",yaml:"yaml",sql:"sql",python:"python",csharp:"csharp",java:"java",cpp:"cpp",c:"c",go:"go",rust:"rust",php:"php",ruby:"ruby",shell:"bash",powershell:"powershell",plaintext:"plain"};function ot(t){return new Promise((i,o)=>{if(document.querySelector(`script[data-prism-src="${t}"]`)){i();return}const s=document.createElement("script");s.src=t,s.async=!0,s.dataset.prismSrc=t,s.onload=()=>i(),s.onerror=()=>o(new Error(`Failed to load ${t}`)),document.head.appendChild(s)})}function hi(t){if(typeof window>"u")return Promise.resolve(null);const i=window,o=pt[t]??"plain",s=async()=>{if(o!=="plain"&&!i.Prism?.languages?.[o])try{await ot(`${Et}/components/prism-${o}.min.js`)}catch{}};return i.Prism?s().then(()=>i.Prism):(rt||(rt=(async()=>(window.Prism={manual:!0},await ot(`${Et}/prism.min.js`),window.Prism))()),rt.then(async()=>(await s(),window.Prism)))}function ct(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ln(t){const{value:i,onChange:o,language:s="plaintext",height:l=300,width:h="100%",readOnly:C=!1,tabSize:k=2,lineNumbers:L=!0,placeholder:P,theme:W="auto",className:K,"data-testid":_}=t,O=n.useRef(null),F=n.useRef(null),[Z,B]=n.useState(()=>ct(i)),[V,f]=n.useState("light");n.useEffect(()=>{const N=()=>{if(W!=="auto")return W;if(typeof document>"u")return"light";const H=document.documentElement.dataset.theme;return H==="dark"?"dark":H==="light"?"light":window.matchMedia?.("(prefers-color-scheme: dark)").matches?"dark":"light"};if(f(N()),W!=="auto"||typeof document>"u")return;const j=()=>f(N()),$=new MutationObserver(j);$.observe(document.documentElement,{attributes:!0,attributeFilter:["data-theme","class"]});const A=window.matchMedia?.("(prefers-color-scheme: dark)");return A?.addEventListener?.("change",j),()=>{$.disconnect(),A?.removeEventListener?.("change",j)}},[W]),n.useEffect(()=>{let N=!0;return hi(s).then(j=>{if(!N)return;const $=pt[s]??"plain";if(j?.languages?.[$])try{const A=j.highlight(i,j.languages[$],$);B(A);return}catch{}B(ct(i))}).catch(()=>{N&&B(ct(i))}),()=>{N=!1}},[i,s]);const w=n.useCallback(()=>{!F.current||!O.current||(F.current.scrollTop=O.current.scrollTop,F.current.scrollLeft=O.current.scrollLeft)},[]),S=n.useCallback(N=>{if(N.key==="Tab"){N.preventDefault();const j=N.currentTarget,$=j.selectionStart,A=j.selectionEnd,H=" ".repeat(k);if(N.shiftKey){const D=i.substring(0,$).lastIndexOf(`
13
+ `)+1;if((i.substring(D,$).match(/^(\s*)/)?.[1]??"").length>=k){const m=i.substring(0,D)+i.substring(D+k);o?.(m),setTimeout(()=>{j.selectionStart=j.selectionEnd=$-k},0)}}else{const v=i.substring(0,$)+H+i.substring(A);o?.(v),setTimeout(()=>{j.selectionStart=j.selectionEnd=$+k},0)}}},[i,o,k]),G=i.split(`
14
+ `).length,y=pt[s]??"plain";return e.jsxs("div",{className:`nice-simple-code-editor nice-simple-code-editor--${V} ${K??""}`,style:{height:l,width:h},"data-testid":_,"data-language":s,"data-theme":V,children:[L&&e.jsx("div",{className:"nice-simple-code-editor__line-numbers",children:Array.from({length:G},(N,j)=>e.jsx("div",{className:"nice-simple-code-editor__line-number",children:j+1},j))}),e.jsxs("div",{className:"nice-simple-code-editor__editor-area",children:[e.jsx("pre",{ref:F,"aria-hidden":"true",className:`nice-simple-code-editor__highlight language-${y}`,children:e.jsx("code",{className:`language-${y}`,dangerouslySetInnerHTML:{__html:Z+(i.endsWith(`
15
+ `)?`
16
+ `:"")}})}),e.jsx("textarea",{ref:O,className:"nice-simple-code-editor__textarea",value:i,onChange:N=>o?.(N.target.value),onKeyDown:S,onScroll:w,readOnly:C,placeholder:P,spellCheck:!1,autoCapitalize:"off",autoCorrect:"off"})]})]})}const Tt="nice-code-editor-styles";if(typeof document<"u"&&!document.getElementById(Tt)){const t=document.createElement("style");t.id=Tt,t.textContent=`
17
+ .nice-code-editor,
18
+ .nice-code-diff-editor {
19
+ border: 1px solid var(--nice-border, #e0e0e0);
20
+ border-radius: var(--nice-radius-sm, 4px);
21
+ overflow: hidden;
22
+ }
23
+
24
+ .nice-code-editor--loading,
25
+ .nice-code-editor--error,
26
+ .nice-code-diff-editor--loading {
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ background: var(--nice-bg-muted, #f5f5f5);
31
+ }
32
+
33
+ .nice-code-editor__loader {
34
+ color: var(--nice-text-secondary, #666);
35
+ font-size: 14px;
36
+ }
37
+
38
+ .nice-code-editor__error {
39
+ display: flex;
40
+ flex-direction: column;
41
+ width: 100%;
42
+ height: 100%;
43
+ padding: var(--nice-space-2, 8px);
44
+ gap: var(--nice-space-2, 8px);
45
+ }
46
+
47
+ .nice-code-editor__error span {
48
+ color: var(--nice-error, #d32f2f);
49
+ }
50
+
51
+ /* Simple code editor */
52
+ .nice-simple-code-editor {
53
+ display: flex;
54
+ border: 1px solid var(--border-color, var(--nice-border, #e0e0e0));
55
+ border-radius: var(--nice-radius-sm, 4px);
56
+ overflow: hidden;
57
+ font-family: 'Fira Code', 'Consolas', 'Monaco', monospace;
58
+ font-size: 14px;
59
+ line-height: 1.5;
60
+ background: var(--bg-primary, var(--nice-bg-surface, #fff));
61
+ color: var(--text-primary, var(--nice-text-primary, #333));
62
+ }
63
+ .nice-simple-code-editor--dark {
64
+ background: var(--nice-bg, #1e1e1e);
65
+ color: var(--nice-text, #d4d4d4);
66
+ }
67
+
68
+ .nice-simple-code-editor__line-numbers {
69
+ padding: var(--nice-space-2, 8px) 0;
70
+ background: var(--bg-secondary, var(--nice-bg-muted, #f5f5f5));
71
+ border-right: 1px solid var(--border-color, var(--nice-border, #e0e0e0));
72
+ user-select: none;
73
+ text-align: right;
74
+ color: var(--text-secondary, var(--nice-text-secondary, #999));
75
+ overflow: hidden;
76
+ }
77
+ .nice-simple-code-editor--dark .nice-simple-code-editor__line-numbers {
78
+ background: var(--nice-bg-secondary, #252526);
79
+ border-right-color: var(--nice-border, #3c3c3c);
80
+ color: var(--nice-text-muted, #858585);
81
+ }
82
+
83
+ .nice-simple-code-editor__line-number {
84
+ padding: 0 var(--nice-space-3, 12px);
85
+ min-width: 40px;
86
+ }
87
+
88
+ .nice-simple-code-editor__editor-area {
89
+ position: relative;
90
+ flex: 1;
91
+ overflow: hidden;
92
+ }
93
+
94
+ .nice-simple-code-editor__highlight,
95
+ .nice-simple-code-editor__textarea {
96
+ position: absolute;
97
+ inset: 0;
98
+ margin: 0;
99
+ padding: var(--nice-space-2, 8px) var(--nice-space-3, 12px);
100
+ border: 0;
101
+ font: inherit;
102
+ line-height: inherit;
103
+ white-space: pre;
104
+ overflow: auto;
105
+ tab-size: 2;
106
+ }
107
+
108
+ .nice-simple-code-editor__highlight {
109
+ pointer-events: none;
110
+ background: transparent;
111
+ color: inherit;
112
+ }
113
+ .nice-simple-code-editor__highlight code {
114
+ font: inherit;
115
+ background: transparent;
116
+ }
117
+
118
+ .nice-simple-code-editor__textarea {
119
+ background: transparent;
120
+ color: transparent;
121
+ caret-color: var(--text-primary, var(--nice-text-primary, #333));
122
+ resize: none;
123
+ outline: none;
124
+ -webkit-text-fill-color: transparent;
125
+ }
126
+ .nice-simple-code-editor--dark .nice-simple-code-editor__textarea {
127
+ caret-color: var(--nice-text, #d4d4d4);
128
+ }
129
+
130
+ .nice-simple-code-editor__textarea::placeholder {
131
+ color: var(--text-secondary, var(--nice-text-secondary, #999));
132
+ -webkit-text-fill-color: var(--text-secondary, var(--nice-text-secondary, #999));
133
+ }
134
+ .nice-simple-code-editor--dark .nice-simple-code-editor__textarea::placeholder {
135
+ color: var(--nice-text-muted, #858585);
136
+ -webkit-text-fill-color: var(--nice-text-muted, #858585);
137
+ }
138
+
139
+ /* Prism token colors — light */
140
+ .nice-simple-code-editor .token.comment,
141
+ .nice-simple-code-editor .token.prolog,
142
+ .nice-simple-code-editor .token.doctype,
143
+ .nice-simple-code-editor .token.cdata { color: #6a737d; font-style: italic; }
144
+ .nice-simple-code-editor .token.punctuation { color: #586069; }
145
+ .nice-simple-code-editor .token.property,
146
+ .nice-simple-code-editor .token.tag,
147
+ .nice-simple-code-editor .token.boolean,
148
+ .nice-simple-code-editor .token.number,
149
+ .nice-simple-code-editor .token.constant,
150
+ .nice-simple-code-editor .token.symbol,
151
+ .nice-simple-code-editor .token.deleted { color: #005cc5; }
152
+ .nice-simple-code-editor .token.selector,
153
+ .nice-simple-code-editor .token.attr-name,
154
+ .nice-simple-code-editor .token.string,
155
+ .nice-simple-code-editor .token.char,
156
+ .nice-simple-code-editor .token.builtin,
157
+ .nice-simple-code-editor .token.inserted { color: #032f62; }
158
+ .nice-simple-code-editor .token.operator,
159
+ .nice-simple-code-editor .token.entity,
160
+ .nice-simple-code-editor .token.url,
161
+ .nice-simple-code-editor .token.variable { color: var(--nice-danger, #d73a49); }
162
+ .nice-simple-code-editor .token.atrule,
163
+ .nice-simple-code-editor .token.attr-value,
164
+ .nice-simple-code-editor .token.keyword { color: var(--nice-danger, #d73a49); font-weight: 600; }
165
+ .nice-simple-code-editor .token.function,
166
+ .nice-simple-code-editor .token.class-name { color: #6f42c1; }
167
+ .nice-simple-code-editor .token.regex,
168
+ .nice-simple-code-editor .token.important { color: #e36209; }
169
+
170
+ /* Prism token colors — dark */
171
+ .nice-simple-code-editor--dark .token.comment,
172
+ .nice-simple-code-editor--dark .token.prolog,
173
+ .nice-simple-code-editor--dark .token.doctype,
174
+ .nice-simple-code-editor--dark .token.cdata { color: var(--nice-success, #6a9955); font-style: italic; }
175
+ .nice-simple-code-editor--dark .token.punctuation { color: var(--nice-text, #d4d4d4); }
176
+ .nice-simple-code-editor--dark .token.property,
177
+ .nice-simple-code-editor--dark .token.tag,
178
+ .nice-simple-code-editor--dark .token.boolean,
179
+ .nice-simple-code-editor--dark .token.number,
180
+ .nice-simple-code-editor--dark .token.constant,
181
+ .nice-simple-code-editor--dark .token.symbol,
182
+ .nice-simple-code-editor--dark .token.deleted { color: var(--nice-success-light, #b5cea8); }
183
+ .nice-simple-code-editor--dark .token.selector,
184
+ .nice-simple-code-editor--dark .token.attr-name,
185
+ .nice-simple-code-editor--dark .token.string,
186
+ .nice-simple-code-editor--dark .token.char,
187
+ .nice-simple-code-editor--dark .token.builtin,
188
+ .nice-simple-code-editor--dark .token.inserted { color: var(--nice-warning, #ce9178); }
189
+ .nice-simple-code-editor--dark .token.operator,
190
+ .nice-simple-code-editor--dark .token.entity,
191
+ .nice-simple-code-editor--dark .token.url,
192
+ .nice-simple-code-editor--dark .token.variable { color: var(--nice-primary, #569cd6); }
193
+ .nice-simple-code-editor--dark .token.atrule,
194
+ .nice-simple-code-editor--dark .token.attr-value,
195
+ .nice-simple-code-editor--dark .token.keyword { color: #c586c0; font-weight: 600; }
196
+ .nice-simple-code-editor--dark .token.function,
197
+ .nice-simple-code-editor--dark .token.class-name { color: #dcdcaa; }
198
+ .nice-simple-code-editor--dark .token.regex,
199
+ .nice-simple-code-editor--dark .token.important { color: #d7ba7d; }
200
+
201
+ /* Toolbar */
202
+ .nice-code-editor-wrap {
203
+ border: 1px solid var(--nice-border, #e0e0e0);
204
+ border-radius: var(--nice-radius-sm, 4px);
205
+ overflow: hidden;
206
+ }
207
+ .nice-code-editor-wrap .nice-code-editor {
208
+ border: none;
209
+ border-radius: 0;
210
+ }
211
+ .nice-code-editor__toolbar {
212
+ display: flex;
213
+ align-items: center;
214
+ gap: var(--nice-space-0-5, 2px);
215
+ padding: var(--nice-space-0-75, 3px) var(--nice-space-1-5, 6px);
216
+ background: var(--nice-bg-muted, #f5f5f5);
217
+ border-bottom: 1px solid var(--nice-border, #e0e0e0);
218
+ }
219
+ .nice-code-editor__toolbar-btn {
220
+ display: inline-flex;
221
+ align-items: center;
222
+ justify-content: center;
223
+ width: 26px;
224
+ height: 26px;
225
+ border: none;
226
+ border-radius: var(--nice-radius-sm, 3px);
227
+ background: transparent;
228
+ color: var(--nice-text-secondary, #666);
229
+ cursor: pointer;
230
+ font-size: 14px;
231
+ transition: background 0.15s, color 0.15s;
232
+ }
233
+ .nice-code-editor__toolbar-btn:hover {
234
+ background: var(--nice-hover, #e0e0e0);
235
+ color: var(--nice-text-primary, #333);
236
+ }
237
+ .nice-code-editor__toolbar-btn--active {
238
+ background: var(--nice-accent, #1976d2);
239
+ color: var(--nice-bg, #FFF);
240
+ }
241
+ .nice-code-editor__toolbar-sep {
242
+ width: 1px;
243
+ height: 18px;
244
+ background: var(--nice-border, #e0e0e0);
245
+ margin: 0 var(--nice-space-1, 4px);
246
+ }
247
+
248
+ /* Status bar */
249
+ .nice-code-editor__statusbar {
250
+ display: flex;
251
+ align-items: center;
252
+ gap: var(--nice-space-3, 12px);
253
+ padding: var(--nice-space-0-5, 2px) var(--nice-space-2-5, 10px);
254
+ background: var(--nice-bg-muted, #f5f5f5);
255
+ border-top: 1px solid var(--nice-border, #e0e0e0);
256
+ font-size: 12px;
257
+ color: var(--nice-text-secondary, #666);
258
+ user-select: none;
259
+ }
260
+ .nice-code-editor__statusbar-spacer { flex: 1; }
261
+ .nice-code-editor__statusbar-lang {
262
+ text-transform: uppercase;
263
+ font-weight: 600;
264
+ font-size: 11px;
265
+ }
266
+ .nice-code-editor__statusbar-markers {
267
+ color: var(--nice-warning, #f39c12);
268
+ font-weight: 600;
269
+ }
270
+ `,document.head.appendChild(t)}const gi=Object.freeze(Object.defineProperty({__proto__:null,NiceCodeDiffEditor:cn,NiceCodeEditor:yt,NiceSimpleCodeEditor:ln},Symbol.toStringTag,{value:"Module"})),fi=n.forwardRef(function(i,o){const{enableAI:s=!0,aiModel:l,enableInlineCompletion:h=!0,completionDelay:C=500,enableExplain:k=!0,enableRefactor:L=!0,enableGenerate:P=!0,systemPrompt:W,onExplain:K,onRefactor:_,showAIToolbar:O=!0,aiShortcutKey:F="Ctrl",language:Z="plaintext",value:B,onChange:V,...f}=i,w=n.useRef(null),[S,M]=n.useState(null),[G,y]=n.useState(!1),[N,j]=n.useState(""),[$,A]=n.useState(!1),[H,v]=n.useState(""),[c,D]=n.useState(""),[x,m]=n.useState(""),r=n.useRef(),{t:d}=te.$o(),p=te.ie(),{complete:g,explain:u,refactor:T,generateFromComment:Y,isLoading:z}=te.Hl({language:Z,model:l}),J=s&&p.isConfigured,me=n.useCallback(async()=>{if(!J||!h||!w.current||!w.current.getEditor())return;const ce=w.current.getCursorPosition(),ee=w.current.getValue().split(`
271
+ `),R=ee.slice(0,ce.lineNumber-1),b=ee[ce.lineNumber-1]||"",q=[...R,b.slice(0,ce.column-1)].join(`
272
+ `),re=[b.slice(ce.column-1),...ee.slice(ce.lineNumber)].join(`
273
+ `);try{const de=await g(q,re);de&&M({lineNumber:ce.lineNumber,column:ce.column,text:de})}catch{}},[J,h,g]),U=n.useCallback(async()=>{if(!J||!k||!w.current)return"";const ae=w.current.getSelection();if(!ae)return"";m(ae),y(!0),j("");try{const ce=await u(ae);return j(ce),K?.(ae,ce),ce}catch{return j(d("codeEditorAI.explanationFailed","Failed to explain code")),""}},[J,k,u,K,d]),ne=n.useCallback(async ae=>{if(!J||!L||!w.current)return"";const ce=w.current.getSelection();if(!ce)return"";try{const ge=await T(ce,ae);return D(ge),_?.(ce,ge),ge}catch{return""}},[J,L,T,_]),ie=n.useCallback(async()=>{if(!J||!P||!w.current)return;const ae=w.current.getCursorPosition(),ge=w.current.getValue().split(`
274
+ `);let ee="";for(let R=ae.lineNumber-1;R>=0&&R>=ae.lineNumber-3;R--){const b=ge[R]?.trim()||"";if(b.startsWith("//")||b.startsWith("#")||b.startsWith("/*")||b.startsWith("*")){ee=b.replace(/^\/\/\s*|^#\s*|^\/\*\s*|\*\/\s*$|^\*\s*/g,"").trim();break}}if(ee)try{const R=await Y(ee);R&&w.current&&w.current.insertText(`
275
+ `+R)}catch{}},[J,P,Y]),he=n.useCallback(()=>{!S||!w.current||(w.current.insertText(S.text),M(null))},[S]),fe=n.useCallback(()=>{M(null)},[]),ye=n.useCallback(ae=>{i.onCursorPositionChange?.(ae),!(!J||!h)&&(r.current&&clearTimeout(r.current),M(null),r.current=setTimeout(()=>{me()},C))},[i.onCursorPositionChange,J,h,C,me]);n.useEffect(()=>{if(!w.current?.getEditor()||!J)return;const ce=ge=>{if(F==="Ctrl"&&ge.ctrlKey||F==="Alt"&&ge.altKey||F==="Meta"&&ge.metaKey){if(ge.key===" "&&h&&(ge.preventDefault(),me()),ge.key==="e"&&k&&(ge.preventDefault(),U()),ge.key==="r"&&L){ge.preventDefault();const R=w.current?.getSelection();R&&(m(R),A(!0))}ge.key==="g"&&P&&(ge.preventDefault(),ie())}ge.key==="Tab"&&S&&(ge.preventDefault(),he()),ge.key==="Escape"&&S&&fe()};return window.addEventListener("keydown",ce),()=>window.removeEventListener("keydown",ce)},[J,F,h,k,L,P,me,U,ie,S,he,fe]),n.useEffect(()=>()=>{r.current&&clearTimeout(r.current)},[]);const xe=n.useCallback(()=>{if(!c||!w.current)return;const ae=w.current.getEditor();if(ae?.executeEdits&&ae?.getSelection){const ce=ae.getSelection();ae.executeEdits("ai-refactor",[{range:ce,text:c}])}A(!1),D(""),v("")},[c]);return n.useImperativeHandle(o,()=>({...w.current,getEditor:()=>w.current?.getEditor(),getMonaco:()=>w.current?.getMonaco(),focus:()=>w.current?.focus(),getValue:()=>w.current?.getValue()||"",setValue:ae=>w.current?.setValue(ae),getSelection:()=>w.current?.getSelection()||"",insertText:ae=>w.current?.insertText(ae),formatDocument:()=>w.current?.formatDocument(),goToLine:(ae,ce)=>w.current?.goToLine(ae,ce),findReplace:()=>w.current?.findReplace(),undo:()=>w.current?.undo(),redo:()=>w.current?.redo(),getCursorPosition:()=>w.current?.getCursorPosition()||{lineNumber:1,column:1},setMarkers:ae=>w.current?.setMarkers(ae),triggerCompletion:me,explainSelection:U,refactorSelection:ne,generateFromComment:ie,acceptCompletion:he,dismissCompletion:fe})),e.jsxs("div",{className:"nice-code-editor-ai","data-testid":i["data-testid"],children:[O&&J&&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"}),z&&e.jsx("span",{className:"nice-code-editor-ai__loading",children:d("codeEditorAI.loading","Thinking...")})]}),e.jsxs("div",{className:"nice-code-editor-ai__toolbar-right",children:[h&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>me(),disabled:z,title:`${d("codeEditorAI.complete","Complete")} (${F}+Space)`,children:["💡 ",d("codeEditorAI.complete","Complete")]}),k&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>U(),disabled:z,title:`${d("codeEditorAI.explain","Explain")} (${F}+E)`,children:["📖 ",d("codeEditorAI.explain","Explain")]}),L&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>{const ae=w.current?.getSelection();ae&&(m(ae),A(!0))},disabled:z,title:`${d("codeEditorAI.refactor","Refactor")} (${F}+R)`,children:["🔧 ",d("codeEditorAI.refactor","Refactor")]}),P&&e.jsxs("button",{type:"button",className:"nice-code-editor-ai__toolbar-btn",onClick:()=>ie(),disabled:z,title:`${d("codeEditorAI.generate","Generate")} (${F}+G)`,children:["⚡ ",d("codeEditorAI.generate","Generate")]})]})]}),e.jsxs("div",{className:"nice-code-editor-ai__editor-wrapper",children:[e.jsx(yt,{ref:w,value:B,onChange:V,language:Z,onCursorPositionChange:ye,...f}),S&&e.jsxs("div",{className:"nice-code-editor-ai__ghost-text",style:{top:`calc(${(S.lineNumber-1)*19}px + 4px)`,left:`calc(${(S.column-1)*7.8}px + 60px)`},children:[e.jsx("span",{className:"nice-code-editor-ai__ghost-text-content",children:S.text}),e.jsxs("span",{className:"nice-code-editor-ai__ghost-text-hint",children:["Tab ",d("codeEditorAI.toAccept","to accept")]})]})]}),G&&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:["📖 ",d("codeEditorAI.explanation","Explanation")]}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__panel-close",onClick:()=>y(!1),children:"✕"})]}),e.jsx("div",{className:"nice-code-editor-ai__panel-body",children:z?e.jsx("div",{className:"nice-code-editor-ai__panel-loading",children:d("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:x}),e.jsx("div",{className:"nice-code-editor-ai__explanation-text",children:N||d("codeEditorAI.noExplanation","Select code and click Explain")})]})})]}),$&&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:["🔧 ",d("codeEditorAI.refactorCode","Refactor Code")]}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__panel-close",onClick:()=>{A(!1),D(""),v("")},children:"✕"})]}),e.jsxs("div",{className:"nice-code-editor-ai__panel-body",children:[e.jsx("pre",{className:"nice-code-editor-ai__code-preview",children:x}),e.jsxs("div",{className:"nice-code-editor-ai__refactor-input",children:[e.jsx("input",{type:"text",placeholder:d("codeEditorAI.refactorInstruction",'Describe how to refactor (e.g., "extract function", "add error handling")'),value:H,onChange:ae=>v(ae.target.value),onKeyDown:ae=>{ae.key==="Enter"&&H&&ne(H)}}),e.jsx("button",{type:"button",className:"nice-code-editor-ai__refactor-btn",onClick:()=>ne(H),disabled:z||!H,children:z?d("codeEditorAI.refactoring","Refactoring..."):d("codeEditorAI.refactor","Refactor")})]}),c&&e.jsxs("div",{className:"nice-code-editor-ai__refactor-result",children:[e.jsx("h5",{children:d("codeEditorAI.refactoredCode","Refactored Code")}),e.jsx("pre",{className:"nice-code-editor-ai__code-preview nice-code-editor-ai__code-preview--result",children:c}),e.jsxs("div",{className:"nice-code-editor-ai__refactor-actions",children:[e.jsxs("button",{type:"button",className:"nice-code-editor-ai__refactor-apply",onClick:xe,children:["✓ ",d("codeEditorAI.apply","Apply")]}),e.jsxs("button",{type:"button",className:"nice-code-editor-ai__refactor-discard",onClick:()=>{D(""),v("")},children:["✕ ",d("codeEditorAI.discard","Discard")]})]})]})]})]})]})});function Rt(t,i){const o=i.getBoundingClientRect();let s,l,h;if("touches"in t){const C=t.touches[0];s=C.clientX-o.left,l=C.clientY-o.top,h=C.force}else"pressure"in t?(s=t.clientX-o.left,l=t.clientY-o.top,h=t.pressure):(s=t.clientX-o.left,l=t.clientY-o.top);return{x:s,y:l,time:Date.now(),pressure:h!==void 0?h:.5}}function It(t,i,o,s,l){if(!i)return(o+s)/2;const h=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2))/Math.max(1,t.time-i.time),C=Math.min(h/5,1),k=s-C*(s-o),L=t.pressure??.5,P=o+L*(s-o);return k*.7+P*.3}function At(t,i,o,s){t.beginPath(),t.moveTo(i.x,i.y),t.lineTo(o.x,o.y),t.lineWidth=s,t.lineCap="round",t.lineJoin="round",t.stroke()}const yi=n.forwardRef(function(i,o){const{value:s,onChange:l,width:h="100%",height:C=200,penColor:k="var(--text-primary, #000000)",penWidth:L=2,minWidth:P=.5,maxWidth:W=4,backgroundColor:K="var(--bg-primary, #ffffff)",placeholder:_="Sign here",showClearButton:O=!0,showUndoButton:F=!0,showColorPicker:Z=!1,showSizeSlider:B=!1,velocityFilterWeight:V=.7,throttle:f=16,disabled:w=!1,readOnly:S=!1,displayMode:M=!1,onBegin:G,onEnd:y,className:N,"data-testid":j}=i,$=S||M,A=M?!1:O,H=M?!1:F,v=M?!1:Z,c=M?!1:B,D=n.useRef(null),[x,m]=n.useState(s?.strokes??[]),[r,d]=n.useState([]),[p,g]=n.useState(!1),[u,T]=n.useState(k),[Y,z]=n.useState(L),J=n.useRef(null),me=n.useRef(0),U=x.length===0&&r.length===0;n.useEffect(()=>{const R=D.current;if(!R)return;const b=R.getContext("2d");if(!b)return;const q=R.getBoundingClientRect(),re=window.devicePixelRatio||1;R.width=q.width*re,R.height=q.height*re,b.scale(re,re),ne()},[h,C]);const ne=n.useCallback(()=>{const R=D.current;if(!R)return;const b=R.getContext("2d");if(!b)return;const q=R.getBoundingClientRect();b.fillStyle=K,b.fillRect(0,0,q.width,q.height),x.forEach(re=>{if(b.strokeStyle=re.color,!(re.points.length<2))for(let de=1;de<re.points.length;de++){const I=re.points[de-1],se=re.points[de],ue=It(se,I,P,W);At(b,I,se,ue)}})},[x,K,P,W,V]);n.useEffect(()=>{ne()},[ne]),n.useEffect(()=>{s?.strokes&&m(s.strokes)},[s]),n.useEffect(()=>{const R=D.current;if(R)if(x.length===0)l?.(null);else{const b=R.getBoundingClientRect();l?.({strokes:x,width:b.width,height:b.height,timestamp:Date.now()})}},[x,l]);const ie=n.useCallback(R=>{if(w||$)return;const b=D.current;if(!b)return;b.setPointerCapture(R.pointerId);const q=Rt(R.nativeEvent,b);g(!0),d([q]),J.current=q,me.current=q.time,G?.()},[w,$,G]),he=n.useCallback(R=>{if(!p||w||$)return;const b=D.current;if(!b)return;const q=b.getContext("2d");if(!q)return;const re=Date.now();if(re-me.current<f)return;const de=Rt(R.nativeEvent,b),I=J.current;if(I){q.strokeStyle=u;const se=It(de,I,P,W);At(q,I,de,se)}d(se=>[...se,de]),J.current=de,me.current=re},[p,w,$,u,P,W,V,f]),fe=n.useCallback(R=>{if(!p)return;const b=D.current;if(b&&b.releasePointerCapture(R.pointerId),r.length>0){const q={points:r,color:u,width:Y};m(re=>[...re,q])}g(!1),d([]),J.current=null,y?.()},[p,r,u,Y,y]),ye=n.useCallback(()=>{m([]),d([]),ne()},[ne]),xe=n.useCallback(()=>{m(R=>R.slice(0,-1))},[]),ae=n.useCallback((R="png",b=.92)=>{const q=D.current;if(!q)return"";const re=R==="jpeg"?"image/jpeg":"image/png";return q.toDataURL(re,b)},[]),ce=n.useCallback(async(R="png",b=.92)=>{const q=D.current;return q?new Promise(re=>{const de=R==="jpeg"?"image/jpeg":"image/png";q.toBlob(I=>re(I),de,b)}):null},[]),ge=n.useCallback(()=>{const R=D.current;if(!R)return"";const b=R.getBoundingClientRect(),q=x.map(re=>re.points.length<2?"":`<path d="${re.points.reduce((I,se,ue)=>ue===0?`M ${se.x} ${se.y}`:`${I} L ${se.x} ${se.y}`,"")}" stroke="${re.color}" stroke-width="${re.width}" fill="none" stroke-linecap="round" stroke-linejoin="round"/>`).join(`
276
+ `);return`<svg xmlns="http://www.w3.org/2000/svg" width="${b.width}" height="${b.height}" viewBox="0 0 ${R.width} ${R.height}">
277
+ <rect width="100%" height="100%" fill="${K}"/>
278
+ ${q}
279
+ </svg>`},[x,K]);n.useImperativeHandle(o,()=>({clear:ye,undo:xe,isEmpty:()=>x.length===0,getData:()=>{const R=D.current;if(!R||x.length===0)return null;const b=R.getBoundingClientRect();return{strokes:x,width:b.width,height:b.height,timestamp:Date.now()}},setData:R=>{m(R.strokes)},toDataURL:ae,toBlob:ce,toSVG:ge,getCanvas:()=>D.current}),[x,ye,xe,ae,ce,ge]),n.useEffect(()=>{const R=D.current;if(!R)return;const b=q=>{p&&q.preventDefault()};return R.addEventListener("touchmove",b,{passive:!1}),()=>R.removeEventListener("touchmove",b)},[p]);const ee=A||H||v||c;return e.jsxs("div",{className:`nice-signature ${w?"nice-signature--disabled":""} ${$?"nice-signature--readonly":""} ${N??""}`,style:{width:h},"data-testid":j,children:[ee&&e.jsxs("div",{className:"nice-signature__toolbar",children:[v&&e.jsx("div",{className:"nice-signature__color-picker",children:e.jsx("input",{type:"color",value:u,onChange:R=>T(R.target.value),disabled:w||$,title:"Pen color"})}),c&&e.jsx("div",{className:"nice-signature__size-slider",children:e.jsx("input",{type:"range",min:P,max:W,step:.5,value:Y,onChange:R=>z(parseFloat(R.target.value)),disabled:w||$,title:"Pen size"})}),e.jsxs("div",{className:"nice-signature__actions",children:[H&&e.jsx("button",{type:"button",onClick:xe,disabled:w||$||x.length===0,className:"nice-signature__btn",title:"Undo",children:"↩️"}),A&&e.jsx("button",{type:"button",onClick:ye,disabled:w||$||U,className:"nice-signature__btn",title:"Clear",children:"🗑️"})]})]}),e.jsxs("div",{className:"nice-signature__canvas-wrapper",style:{height:C},children:[e.jsx("canvas",{ref:D,className:"nice-signature__canvas",style:{width:"100%",height:"100%",cursor:w||$?"not-allowed":"crosshair",touchAction:"none"},onPointerDown:ie,onPointerMove:he,onPointerUp:fe,onPointerLeave:fe}),U&&!p&&_&&e.jsx("div",{className:"nice-signature__placeholder",children:_}),e.jsx("div",{className:"nice-signature__line"})]})]})}),Dt="nice-signature-styles";if(typeof document<"u"&&!document.getElementById(Dt)){const t=document.createElement("style");t.id=Dt,t.textContent=`
280
+ .nice-signature {
281
+ display: flex;
282
+ flex-direction: column;
283
+ border: 1px solid var(--nice-border, #e0e0e0);
284
+ border-radius: var(--nice-radius-sm, 4px);
285
+ overflow: hidden;
286
+ background: var(--nice-bg-surface, #fff);
287
+ }
288
+
289
+ .nice-signature--disabled {
290
+ opacity: 0.6;
291
+ }
292
+
293
+ .nice-signature__toolbar {
294
+ display: flex;
295
+ align-items: center;
296
+ gap: var(--nice-space-2, 8px);
297
+ padding: var(--nice-space-2, 8px);
298
+ background: var(--nice-bg-muted, #f5f5f5);
299
+ border-bottom: 1px solid var(--nice-border, #e0e0e0);
300
+ }
301
+
302
+ .nice-signature__color-picker input {
303
+ width: 32px;
304
+ height: 32px;
305
+ padding: var(--nice-space-0-5, 2px);
306
+ border: 1px solid var(--nice-border, #e0e0e0);
307
+ border-radius: var(--nice-radius-sm, 4px);
308
+ cursor: pointer;
309
+ }
310
+
311
+ .nice-signature__size-slider {
312
+ flex: 1;
313
+ max-width: 120px;
314
+ }
315
+
316
+ .nice-signature__size-slider input {
317
+ width: 100%;
318
+ }
319
+
320
+ .nice-signature__actions {
321
+ display: flex;
322
+ gap: var(--nice-space-1, 4px);
323
+ margin-left: auto;
324
+ }
325
+
326
+ .nice-signature__btn {
327
+ padding: var(--nice-space-1-5, 6px) var(--nice-space-2-5, 10px);
328
+ border: 1px solid var(--nice-border, #e0e0e0);
329
+ border-radius: var(--nice-radius-sm, 4px);
330
+ background: var(--nice-bg-surface, #fff);
331
+ cursor: pointer;
332
+ font-size: 14px;
333
+ }
334
+
335
+ .nice-signature__btn:hover:not(:disabled) {
336
+ background: var(--nice-bg-hover, #f0f0f0);
337
+ }
338
+
339
+ .nice-signature__btn:disabled {
340
+ opacity: 0.4;
341
+ cursor: not-allowed;
342
+ }
343
+
344
+ .nice-signature__canvas-wrapper {
345
+ position: relative;
346
+ background: var(--nice-bg, #FFF);
347
+ }
348
+
349
+ .nice-signature__canvas {
350
+ display: block;
351
+ }
352
+
353
+ .nice-signature__placeholder {
354
+ position: absolute;
355
+ top: 50%;
356
+ left: 50%;
357
+ transform: translate(-50%, -50%);
358
+ color: var(--nice-text-secondary, #999);
359
+ font-size: 14px;
360
+ pointer-events: none;
361
+ user-select: none;
362
+ }
363
+
364
+ .nice-signature__line {
365
+ position: absolute;
366
+ bottom: 30px;
367
+ left: 20px;
368
+ right: 20px;
369
+ height: 1px;
370
+ background: var(--nice-border, #ccc);
371
+ pointer-events: none;
372
+ }
373
+
374
+ /* Display component */
375
+ .nice-signature-display {
376
+ border: 1px solid var(--nice-border, #e0e0e0);
377
+ border-radius: var(--nice-radius-sm, 4px);
378
+ overflow: hidden;
379
+ }
380
+
381
+ .nice-signature-display__canvas-wrapper {
382
+ position: relative;
383
+ background: var(--nice-bg, #FFF);
384
+ }
385
+
386
+ .nice-signature-display__canvas {
387
+ display: block;
388
+ }
389
+
390
+ .nice-signature-display__placeholder {
391
+ position: absolute;
392
+ top: 50%;
393
+ left: 50%;
394
+ transform: translate(-50%, -50%);
395
+ color: var(--nice-text-secondary, #999);
396
+ font-size: 14px;
397
+ }
398
+ `,document.head.appendChild(t)}const xi={recent:"🕒",smileys:"😀",people:"👋",animals:"🐱",food:"🍕",travel:"✈️",activities:"⚽",objects:"💡",symbols:"❤️",flags:"🏳️"},Lt={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"},lt=["","🏻","🏼","🏽","🏾","🏿"],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"}],zt="nice-emoji-picker-recent",dn=({onSelect:t,showSearch:i=!0,searchPlaceholder:o,showSkinTones:s=!0,defaultSkinTone:l=0,showRecent:h=!0,maxRecent:C=24,recentEmojis:k,onRecentChange:L,categories:P,customEmojis:W=[],columns:K=8,size:_="md",className:O="",style:F,"data-testid":Z="nice-emoji-picker"})=>{const{t:B}=te.$o(),[V,f]=n.useState(""),[w,S]=n.useState(h?"recent":"smileys"),[M,G]=n.useState(l),[y,N]=n.useState(!1),j=n.useRef(null),[$,A]=n.useState(()=>{if(typeof window>"u")return[];try{return JSON.parse(localStorage.getItem(zt)||"[]")}catch{return[]}}),H=k??$,v=P??[...h?["recent"]:[],"smileys","people","animals","food","travel","activities","objects","symbols","flags"],c=n.useMemo(()=>{if(!V)return nt;const p=V.toLowerCase();return nt.filter(g=>g.name.toLowerCase().includes(p)||g.emoji.includes(p)||g.keywords?.some(u=>u.toLowerCase().includes(p)))},[V]),D=n.useMemo(()=>{const p={};for(const g of v)g==="recent"?p[g]=H.map(u=>nt.find(T=>T.emoji===u)).filter(u=>u!==void 0).slice(0,C):p[g]=c.filter(u=>u.category===g);return p},[v,c,H,C]),x=n.useCallback((p,g)=>!g||M===0?p:p.replace(/[\u{1F3FB}-\u{1F3FF}]/gu,"")+lt[M],[M]),m=n.useCallback(p=>{const g=x(p.emoji,p.skinTones),u=[p.emoji,...H.filter(T=>T!==p.emoji)].slice(0,C);if(k===void 0){A(u);try{localStorage.setItem(zt,JSON.stringify(u))}catch{}}L?.(u),t?.(g,p)},[x,H,C,k,L,t]),r=n.useCallback(p=>{t?.(`:${p.name}:`,p)},[t]);n.useEffect(()=>{if(!y)return;const p=g=>{j.current&&!j.current.contains(g.target)&&N(!1)};return document.addEventListener("mousedown",p),()=>document.removeEventListener("mousedown",p)},[y]);const d=V?c:D[w]||[];return e.jsxs("div",{className:`nice-emoji-picker nice-emoji-picker--${_} ${O}`,style:F,"data-testid":Z,children:[i&&e.jsxs("div",{className:"nice-emoji-picker__search",children:[e.jsx("input",{type:"text",value:V,onChange:p=>f(p.target.value),placeholder:o??B("search","Search emoji..."),className:"nice-emoji-picker__search-input","data-testid":`${Z}-search`}),s&&e.jsxs("div",{className:"nice-emoji-picker__skin-tone-wrapper",children:[e.jsxs("button",{ref:j,type:"button",className:"nice-emoji-picker__skin-tone-btn",onClick:()=>N(!y),title:B("skinTone","Skin tone"),children:["✋",lt[M]]}),y&&e.jsx("div",{className:"nice-emoji-picker__skin-tone-menu",children:lt.map((p,g)=>e.jsxs("button",{type:"button",className:`nice-emoji-picker__skin-tone-option ${g===M?"nice-emoji-picker__skin-tone-option--selected":""}`,onClick:()=>{G(g),N(!1)},children:["✋",p]},g))})]})]}),!V&&e.jsx("div",{className:"nice-emoji-picker__categories",role:"tablist",children:v.map(p=>e.jsx("button",{type:"button",className:`nice-emoji-picker__category-btn ${w===p?"nice-emoji-picker__category-btn--selected":""}`,onClick:()=>S(p),title:Lt[p],role:"tab","aria-selected":w===p,children:xi[p]},p))}),e.jsxs("div",{className:"nice-emoji-picker__grid-container",children:[V?e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:B("searchResults","Search Results")}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${K}, 1fr)`},children:c.length===0?e.jsx("div",{className:"nice-emoji-picker__empty",children:B("noEmojis","No emojis found")}):c.map((p,g)=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji",onClick:()=>m(p),title:p.name,children:x(p.emoji,p.skinTones)},`${p.emoji}-${g}`))})]}):e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:Lt[w]}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${K}, 1fr)`},children:d.length===0?e.jsx("div",{className:"nice-emoji-picker__empty",children:w==="recent"?B("noRecent","No recent emojis"):B("noEmojis","No emojis")}):d.map((p,g)=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji",onClick:()=>m(p),title:p.name,children:x(p.emoji,p.skinTones)},`${p.emoji}-${g}`))})]}),W.length>0&&e.jsxs("div",{className:"nice-emoji-picker__section",children:[e.jsx("div",{className:"nice-emoji-picker__section-title",children:B("custom","Custom")}),e.jsx("div",{className:"nice-emoji-picker__grid",style:{gridTemplateColumns:`repeat(${K}, 1fr)`},children:W.map(p=>e.jsx("button",{type:"button",className:"nice-emoji-picker__emoji nice-emoji-picker__emoji--custom",onClick:()=>r(p),title:p.name,children:e.jsx("img",{src:p.url,alt:p.name})},p.id))})]})]})]})};dn.displayName="NiceEmojiPicker";const mn=[{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}],un=({src:t,initialCrop:i={x:10,y:10,width:80,height:80},initialRotation:o=0,initialZoom:s=1,aspectRatios:l=mn,defaultAspectRatio:h="free",customAspectRatio:C,showRotation:k=!0,showFlip:L=!0,showZoom:P=!0,minZoom:W=.5,maxZoom:K=3,zoomStep:_=.1,showGrid:O=!0,overlayColor:F="var(--nice-overlay-50, rgba(0, 0, 0, 0.5))",toolbarPosition:Z="bottom",toolbarCollapsible:B=!1,defaultToolbarCollapsed:V=!1,onChange:f,className:w="",style:S,"data-testid":M="nice-crop-editor"})=>{const{t:G}=te.$o(),y=n.useRef(null),N=n.useRef(null),[j,$]=n.useState(i),[A,H]=n.useState(o),[v,c]=n.useState(s),[D,x]=n.useState(!1),[m,r]=n.useState(!1),[d,p]=n.useState(h),[g,u]=n.useState(V),[T,Y]=n.useState(!1),[z,J]=n.useState({x:0,y:0,crop:j}),me=d==="custom"?C:l.find(b=>b.value===d)?.ratio;n.useEffect(()=>{f?.({crop:j,rotation:A,flipH:D,flipV:m,zoom:v})},[j,A,D,m,v,f]);const U=n.useCallback((b,q)=>{if(!me)return b;const re=y.current?.clientWidth??400,de=y.current?.clientHeight??300,I=b.width/100*re,se=b.height/100*de,ue=I/se;if(Math.abs(ue-me)<.01)return b;if(q?.includes("e")||q?.includes("w")){const ve=I/me/de*100;return{...b,height:Math.min(100-b.y,Math.max(5,ve))}}else if(q?.includes("n")||q?.includes("s")){const ve=se*me/re*100;return{...b,width:Math.min(100-b.x,Math.max(5,ve))}}else{const ve=I/me/de*100;return{...b,height:Math.min(100-b.y,Math.max(5,ve))}}},[me]),ne=n.useCallback((b,q)=>{q===!1||(b.preventDefault(),b.stopPropagation(),Y(q),!y.current?.getBoundingClientRect())||J({x:b.clientX,y:b.clientY,crop:{...j}})},[j]),ie=n.useCallback(b=>{if(!T||!y.current)return;const q=y.current.getBoundingClientRect(),re=(b.clientX-z.x)/q.width*100,de=(b.clientY-z.y)/q.height*100;let I={...z.crop};if(T==="crop")I.x=Math.max(0,Math.min(100-I.width,z.crop.x+re)),I.y=Math.max(0,Math.min(100-I.height,z.crop.y+de));else{switch(T){case"resize-nw":I.x=Math.max(0,Math.min(z.crop.x+z.crop.width-5,z.crop.x+re)),I.y=Math.max(0,Math.min(z.crop.y+z.crop.height-5,z.crop.y+de)),I.width=z.crop.width-(I.x-z.crop.x),I.height=z.crop.height-(I.y-z.crop.y);break;case"resize-ne":I.y=Math.max(0,Math.min(z.crop.y+z.crop.height-5,z.crop.y+de)),I.width=Math.max(5,Math.min(100-I.x,z.crop.width+re)),I.height=z.crop.height-(I.y-z.crop.y);break;case"resize-sw":I.x=Math.max(0,Math.min(z.crop.x+z.crop.width-5,z.crop.x+re)),I.width=z.crop.width-(I.x-z.crop.x),I.height=Math.max(5,Math.min(100-I.y,z.crop.height+de));break;case"resize-se":I.width=Math.max(5,Math.min(100-I.x,z.crop.width+re)),I.height=Math.max(5,Math.min(100-I.y,z.crop.height+de));break;case"resize-n":I.y=Math.max(0,Math.min(z.crop.y+z.crop.height-5,z.crop.y+de)),I.height=z.crop.height-(I.y-z.crop.y);break;case"resize-s":I.height=Math.max(5,Math.min(100-I.y,z.crop.height+de));break;case"resize-e":I.width=Math.max(5,Math.min(100-I.x,z.crop.width+re));break;case"resize-w":I.x=Math.max(0,Math.min(z.crop.x+z.crop.width-5,z.crop.x+re)),I.width=z.crop.width-(I.x-z.crop.x);break}I=U(I,T.replace("resize-",""))}$(I)},[T,z,U]),he=n.useCallback(()=>{Y(!1)},[]);n.useEffect(()=>{if(T)return document.addEventListener("mousemove",ie),document.addEventListener("mouseup",he),()=>{document.removeEventListener("mousemove",ie),document.removeEventListener("mouseup",he)}},[T,ie,he]);const fe=n.useCallback(()=>{H(b=>(b-90+360)%360)},[]),ye=n.useCallback(()=>{H(b=>(b+90)%360)},[]),xe=n.useCallback(()=>{x(b=>!b)},[]),ae=n.useCallback(()=>{r(b=>!b)},[]),ce=n.useCallback(()=>{$(i),H(o),c(s),x(!1),r(!1),p(h)},[i,o,s,h]);n.useEffect(()=>{$(b=>U(b))},[d,U]);const ge=`scale(${v}) rotate(${A}deg) scaleX(${D?-1:1}) scaleY(${m?-1:1})`,ee=Z==="top"?"column-reverse":Z==="left"?"row-reverse":Z==="right"?"row":"column",R=Z==="left"||Z==="right";return e.jsxs("div",{className:`nice-crop-editor nice-crop-editor--toolbar-${Z} ${w}`,style:{display:"flex",flexDirection:ee,gap:12,...S},"data-testid":M,children:[e.jsxs("div",{ref:y,className:"nice-crop-editor__container","data-testid":`${M}-container`,children:[e.jsx("img",{ref:N,src:t,alt:"",className:"nice-crop-editor__image",style:{transform:ge},draggable:!1}),e.jsxs("div",{className:"nice-crop-editor__overlay",style:{backgroundColor:F},children:[e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:0,left:0,right:0,height:`${j.y}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{bottom:0,left:0,right:0,height:`${100-j.y-j.height}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:`${j.y}%`,left:0,width:`${j.x}%`,height:`${j.height}%`}}),e.jsx("div",{className:"nice-crop-editor__overlay-piece",style:{top:`${j.y}%`,right:0,width:`${100-j.x-j.width}%`,height:`${j.height}%`}})]}),e.jsxs("div",{className:"nice-crop-editor__crop-area",style:{left:`${j.x}%`,top:`${j.y}%`,width:`${j.width}%`,height:`${j.height}%`},onMouseDown:b=>ne(b,"crop"),"data-testid":`${M}-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:b=>ne(b,"resize-nw")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--ne",onMouseDown:b=>ne(b,"resize-ne")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--sw",onMouseDown:b=>ne(b,"resize-sw")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--se",onMouseDown:b=>ne(b,"resize-se")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--n",onMouseDown:b=>ne(b,"resize-n")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--s",onMouseDown:b=>ne(b,"resize-s")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--e",onMouseDown:b=>ne(b,"resize-e")}),e.jsx("div",{className:"nice-crop-editor__handle nice-crop-editor__handle--w",onMouseDown:b=>ne(b,"resize-w")})]})]}),e.jsxs("div",{className:`nice-crop-editor__controls ${g?"nice-crop-editor__controls--collapsed":""}`,style:{display:"flex",flexDirection:R?"column":"row",flexWrap:R?"nowrap":"wrap",gap:8,alignItems:R?"stretch":"center",flexShrink:0},children:[B&&e.jsx("button",{type:"button",className:"nice-crop-editor__toolbar-toggle","aria-expanded":!g,"aria-label":g?"Show toolbar":"Hide toolbar",onClick:()=>u(b=>!b),style:{alignSelf:"flex-start",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:4,padding:"2px 8px",cursor:"pointer",color:"var(--text-primary)",fontSize:12},children:g?"▸":"▾"}),!g&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-crop-editor__control-group",children:[e.jsx("label",{className:"nice-crop-editor__label",children:G("aspectRatio","Aspect Ratio")}),e.jsx("div",{className:"nice-crop-editor__aspect-buttons",children:l.map(b=>e.jsx("button",{type:"button",className:`nice-crop-editor__aspect-btn ${d===b.value?"nice-crop-editor__aspect-btn--selected":""}`,onClick:()=>p(b.value),title:b.label,children:b.label},b.value))})]}),P&&e.jsxs("div",{className:"nice-crop-editor__control-group",children:[e.jsxs("label",{className:"nice-crop-editor__label",children:[G("zoom","Zoom"),": ",Math.round(v*100),"%"]}),e.jsx("input",{type:"range",className:"nice-crop-editor__slider",min:W,max:K,step:_,value:v,onChange:b=>c(parseFloat(b.target.value)),"data-testid":`${M}-zoom`})]}),e.jsxs("div",{className:"nice-crop-editor__control-group nice-crop-editor__control-group--row",children:[k&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-crop-editor__btn",onClick:fe,title:G("rotateLeft","Rotate Left"),children:"↺"}),e.jsx("button",{type:"button",className:"nice-crop-editor__btn",onClick:ye,title:G("rotateRight","Rotate Right"),children:"↻"})]}),L&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:`nice-crop-editor__btn ${D?"nice-crop-editor__btn--active":""}`,onClick:xe,title:G("flipHorizontal","Flip Horizontal"),children:"⇆"}),e.jsx("button",{type:"button",className:`nice-crop-editor__btn ${m?"nice-crop-editor__btn--active":""}`,onClick:ae,title:G("flipVertical","Flip Vertical"),children:"⇅"})]}),e.jsx("button",{type:"button",className:"nice-crop-editor__btn nice-crop-editor__btn--reset",onClick:ce,title:G("reset","Reset"),children:"⟲"})]})]})]})]})};un.displayName="NiceCropEditor";const bi={strokeColor:"#ff3333",fillColor:"transparent",strokeWidth:2,opacity:1,fontSize:16,fontFamily:"sans-serif"};function ji(t,i){switch(i.type){case"SET_TOOL":return{...t,activeTool:i.tool,selectedId:null};case"SET_STYLE":return{...t,style:{...t.style,...i.style}};case"ADD_ANNOTATION":return{...t,annotations:[...t.annotations,i.annotation],past:[...t.past,t.annotations],future:[]};case"UPDATE_ANNOTATION":return{...t,annotations:t.annotations.map(o=>o.id===i.id?{...o,...i.updates}:o),past:[...t.past,t.annotations],future:[]};case"DELETE_ANNOTATION":return{...t,annotations:t.annotations.filter(o=>o.id!==i.id),selectedId:t.selectedId===i.id?null:t.selectedId,past:[...t.past,t.annotations],future:[]};case"SELECT":return{...t,selectedId:i.id};case"SET_ANNOTATIONS":return{...t,annotations:i.annotations,past:[],future:[]};case"SET_ZOOM":return{...t,zoom:i.zoom};case"SET_PAN":return{...t,panX:i.panX,panY:i.panY};case"UNDO":{if(t.past.length===0)return t;const o=t.past[t.past.length-1];return{...t,annotations:o,past:t.past.slice(0,-1),future:[t.annotations,...t.future]}}case"REDO":{if(t.future.length===0)return t;const o=t.future[0];return{...t,annotations:o,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 vi=0;function _i(){return`ann-${Date.now()}-${vi++}`}function ki(t){const{style:i}=t,o=`stroke="${i.strokeColor}" stroke-width="${i.strokeWidth}" fill="${i.fillColor}" opacity="${i.opacity}"`;switch(t.tool){case"rectangle":return`<rect x="${t.x}" y="${t.y}" width="${t.width}" height="${t.height}" ${o} />`;case"ellipse":{const s=t.x+t.width/2,l=t.y+t.height/2;return`<ellipse cx="${s}" cy="${l}" rx="${t.width/2}" ry="${t.height/2}" ${o} />`}case"arrow":{const s=t,l=Math.atan2(s.endY-s.y,s.endX-s.x),h=12,C=s.endX-h*Math.cos(l-Math.PI/6),k=s.endY-h*Math.sin(l-Math.PI/6),L=s.endX-h*Math.cos(l+Math.PI/6),P=s.endY-h*Math.sin(l+Math.PI/6);return`<line x1="${s.x}" y1="${s.y}" x2="${s.endX}" y2="${s.endY}" ${o} />
399
+ <polygon points="${s.endX},${s.endY} ${C},${k} ${L},${P}" fill="${i.strokeColor}" opacity="${i.opacity}" />`}case"line":{const s=t;return`<line x1="${s.x}" y1="${s.y}" x2="${s.endX}" y2="${s.endY}" ${o} />`}case"text":{const s=t;return`<text x="${s.x}" y="${s.y+(s.style.fontSize??16)}" fill="${i.strokeColor}" font-size="${i.fontSize}" font-family="${i.fontFamily}" opacity="${i.opacity}">${wi(s.text)}</text>`}case"freehand":{const s=t;return s.points.length<2?"":`<path d="${s.points.map((h,C)=>`${C===0?"M":"L"}${h.x},${h.y}`).join(" ")}" ${o} fill="none" />`}case"blur":{const s=t,l=`blur-${s.id}`;return`<defs><filter id="${l}"><feGaussianBlur stdDeviation="${s.intensity??5}" /></filter></defs>
400
+ <rect x="${s.x}" y="${s.y}" width="${s.width}" height="${s.height}" fill="transparent" stroke="none" filter="url(#${l})" />`}default:return""}}function wi(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}const pn=n.forwardRef(({src:t,alt:i="Annotatable image",annotations:o,activeTool:s,defaultStyle:l,onAnnotationsChange:h,className:C,readOnly:k=!1,minZoom:L=.1,maxZoom:P=5},W)=>{const K=n.useRef(null),_=n.useRef(null),O=n.useRef(null),[F,Z]=n.useState(!1),[B,V]=n.useState({width:0,height:0}),[f,w]=n.useReducer(ji,{annotations:o??[],selectedId:null,activeTool:s??"select",style:{...bi,...l},zoom:1,panX:0,panY:0,past:[],future:[]});n.useEffect(()=>{s&&w({type:"SET_TOOL",tool:s})},[s]),n.useEffect(()=>{h?.(f.annotations)},[f.annotations,h]),n.useEffect(()=>{const v=new Image;v.crossOrigin="anonymous",v.onload=()=>{O.current=v,V({width:v.naturalWidth,height:v.naturalHeight}),Z(!0)},v.src=t},[t]);const S=n.useRef({isDrawing:!1,startX:0,startY:0,currentAnnotation:null,freehandPoints:[]}),M=n.useCallback((v,c)=>{const D=K.current;if(!D)return{x:0,y:0};const x=D.getBoundingClientRect();return{x:(v-x.left-f.panX)/f.zoom,y:(c-x.top-f.panY)/f.zoom}},[f.zoom,f.panX,f.panY]),G=n.useCallback(()=>{const v=K.current,c=v?.getContext("2d"),D=O.current;if(!v||!c||!D||!F)return;v.width=_.current?.clientWidth??D.naturalWidth,v.height=_.current?.clientHeight??D.naturalHeight,c.clearRect(0,0,v.width,v.height),c.save(),c.translate(f.panX,f.panY),c.scale(f.zoom,f.zoom),c.drawImage(D,0,0);for(const m of f.annotations){switch(c.save(),c.globalAlpha=m.style.opacity,c.strokeStyle=m.style.strokeColor,c.fillStyle=m.style.fillColor,c.lineWidth=m.style.strokeWidth,m.tool){case"rectangle":c.strokeRect(m.x,m.y,m.width,m.height),m.style.fillColor!=="transparent"&&c.fillRect(m.x,m.y,m.width,m.height);break;case"ellipse":{c.beginPath(),c.ellipse(m.x+m.width/2,m.y+m.height/2,Math.abs(m.width/2),Math.abs(m.height/2),0,0,Math.PI*2),c.stroke(),m.style.fillColor!=="transparent"&&c.fill();break}case"arrow":{const r=m;c.beginPath(),c.moveTo(r.x,r.y),c.lineTo(r.endX,r.endY),c.stroke();const d=Math.atan2(r.endY-r.y,r.endX-r.x),p=12;c.beginPath(),c.moveTo(r.endX,r.endY),c.lineTo(r.endX-p*Math.cos(d-Math.PI/6),r.endY-p*Math.sin(d-Math.PI/6)),c.lineTo(r.endX-p*Math.cos(d+Math.PI/6),r.endY-p*Math.sin(d+Math.PI/6)),c.closePath(),c.fillStyle=m.style.strokeColor,c.fill();break}case"line":{const r=m;c.beginPath(),c.moveTo(r.x,r.y),c.lineTo(r.endX,r.endY),c.stroke();break}case"text":{const r=m;c.font=`${r.style.fontSize??16}px ${r.style.fontFamily??"sans-serif"}`,c.fillStyle=r.style.strokeColor,c.fillText(r.text,r.x,r.y+(r.style.fontSize??16));break}case"freehand":{const r=m;if(r.points.length<2)break;c.beginPath(),c.moveTo(r.points[0].x,r.points[0].y);for(let d=1;d<r.points.length;d++)c.lineTo(r.points[d].x,r.points[d].y);c.stroke();break}case"blur":{const r=m;c.filter=`blur(${r.intensity??5}px)`,c.drawImage(D,r.x,r.y,r.width,r.height,r.x,r.y,r.width,r.height),c.filter="none";break}}m.id===f.selectedId&&(c.strokeStyle="#4488ff",c.lineWidth=1,c.setLineDash([4,4]),c.strokeRect(m.x-2,m.y-2,m.width+4,m.height+4),c.setLineDash([])),c.restore()}const x=S.current;if(x.isDrawing&&x.currentAnnotation){c.save();const m=x.currentAnnotation;if(c.globalAlpha=m.style.opacity,c.strokeStyle=m.style.strokeColor,c.lineWidth=m.style.strokeWidth,c.setLineDash([6,3]),m.tool==="freehand"){const r=m;if(r.points.length>=2){c.beginPath(),c.moveTo(r.points[0].x,r.points[0].y);for(let d=1;d<r.points.length;d++)c.lineTo(r.points[d].x,r.points[d].y);c.stroke()}}else if(m.tool==="rectangle")c.strokeRect(m.x,m.y,m.width,m.height);else if(m.tool==="ellipse")c.beginPath(),c.ellipse(m.x+m.width/2,m.y+m.height/2,Math.abs(m.width/2),Math.abs(m.height/2),0,0,Math.PI*2),c.stroke();else if(m.tool==="arrow"||m.tool==="line"){const r=m;c.beginPath(),c.moveTo(r.x,r.y),c.lineTo(r.endX,r.endY),c.stroke()}c.restore()}c.restore()},[f,F]);n.useEffect(()=>{G()},[G]);const y=n.useCallback(v=>{if(k)return;const c=M(v.clientX,v.clientY),D=f.activeTool;if(D==="select"){const r=[...f.annotations].reverse().find(d=>d.tool==="freehand"?!1:c.x>=d.x&&c.x<=d.x+d.width&&c.y>=d.y&&c.y<=d.y+d.height);w({type:"SELECT",id:r?.id??null});return}const x=S.current;x.isDrawing=!0,x.startX=c.x,x.startY=c.y;const m={id:_i(),style:{...f.style},x:c.x,y:c.y,width:0,height:0};switch(D){case"rectangle":x.currentAnnotation={...m,tool:"rectangle"};break;case"ellipse":x.currentAnnotation={...m,tool:"ellipse"};break;case"arrow":x.currentAnnotation={...m,tool:"arrow",endX:c.x,endY:c.y};break;case"line":x.currentAnnotation={...m,tool:"line",endX:c.x,endY:c.y};break;case"text":x.currentAnnotation={...m,tool:"text",text:"Text",width:100,height:f.style.fontSize??16};break;case"freehand":x.freehandPoints=[c],x.currentAnnotation={...m,tool:"freehand",points:[c]};break;case"blur":x.currentAnnotation={...m,tool:"blur",intensity:5};break}},[k,M,f.activeTool,f.style,f.annotations]),N=n.useCallback(v=>{const c=S.current;if(!c.isDrawing||!c.currentAnnotation)return;const D=M(v.clientX,v.clientY),x=c.currentAnnotation;if(x.tool==="freehand"){c.freehandPoints.push(D),x.points=[...c.freehandPoints];const m=c.freehandPoints.map(d=>d.x),r=c.freehandPoints.map(d=>d.y);x.x=Math.min(...m),x.y=Math.min(...r),x.width=Math.max(...m)-x.x,x.height=Math.max(...r)-x.y}else if(x.tool==="arrow"||x.tool==="line")x.endX=D.x,x.endY=D.y,x.width=Math.abs(D.x-c.startX),x.height=Math.abs(D.y-c.startY);else{const m=Math.min(c.startX,D.x),r=Math.min(c.startY,D.y);x.x=m,x.y=r,x.width=Math.abs(D.x-c.startX),x.height=Math.abs(D.y-c.startY)}G()},[M,G]),j=n.useCallback(()=>{const v=S.current;if(!v.isDrawing||!v.currentAnnotation)return;const c=v.currentAnnotation;(c.tool==="text"||c.tool==="freehand"||Math.abs(c.width)>2||Math.abs(c.height)>2)&&w({type:"ADD_ANNOTATION",annotation:c}),v.isDrawing=!1,v.currentAnnotation=null,v.freehandPoints=[]},[]),$=n.useCallback(v=>{v.preventDefault();const c=v.deltaY>0?.9:1.1,D=Math.max(L,Math.min(P,f.zoom*c));w({type:"SET_ZOOM",zoom:D})},[f.zoom,L,P]);n.useEffect(()=>{if(k)return;const v=c=>{(c.metaKey||c.ctrlKey)&&c.key==="z"&&!c.shiftKey?(c.preventDefault(),w({type:"UNDO"})):(c.metaKey||c.ctrlKey)&&(c.key==="y"||c.key==="z"&&c.shiftKey)?(c.preventDefault(),w({type:"REDO"})):(c.key==="Delete"||c.key==="Backspace")&&f.selectedId&&w({type:"DELETE_ANNOTATION",id:f.selectedId})};return document.addEventListener("keydown",v),()=>document.removeEventListener("keydown",v)},[k,f.selectedId]),n.useImperativeHandle(W,()=>({exportAsDataURL:async(v="png",c=.92)=>{const D=document.createElement("canvas"),x=O.current;if(!x)return"";D.width=x.naturalWidth,D.height=x.naturalHeight;const m=D.getContext("2d");m.drawImage(x,0,0);for(const r of f.annotations){if(m.save(),m.globalAlpha=r.style.opacity,m.strokeStyle=r.style.strokeColor,m.fillStyle=r.style.fillColor,m.lineWidth=r.style.strokeWidth,r.tool==="rectangle")m.strokeRect(r.x,r.y,r.width,r.height);else if(r.tool==="ellipse")m.beginPath(),m.ellipse(r.x+r.width/2,r.y+r.height/2,Math.abs(r.width/2),Math.abs(r.height/2),0,0,Math.PI*2),m.stroke();else if(r.tool==="freehand"){const d=r;if(d.points.length>=2){m.beginPath(),m.moveTo(d.points[0].x,d.points[0].y);for(let p=1;p<d.points.length;p++)m.lineTo(d.points[p].x,d.points[p].y);m.stroke()}}else if(r.tool==="text"){const d=r;m.font=`${d.style.fontSize??16}px ${d.style.fontFamily??"sans-serif"}`,m.fillStyle=d.style.strokeColor,m.fillText(d.text,d.x,d.y+(d.style.fontSize??16))}m.restore()}return D.toDataURL(`image/${v}`,c)},exportAnnotations:()=>[...f.annotations],importAnnotations:v=>{w({type:"SET_ANNOTATIONS",annotations:v})},exportAsSVG:()=>{const{width:v,height:c}=B,D=f.annotations.map(ki);return`<svg xmlns="http://www.w3.org/2000/svg" width="${v}" height="${c}" viewBox="0 0 ${v} ${c}">
401
+ ${D.join(`
402
+ `)}
403
+ </svg>`},undo:()=>w({type:"UNDO"}),redo:()=>w({type:"REDO"}),setZoom:v=>{w({type:"SET_ZOOM",zoom:Math.max(L,Math.min(P,v))})},fitToScreen:()=>{const v=_.current,c=O.current;if(!v||!c)return;const D=v.clientWidth/c.naturalWidth,x=v.clientHeight/c.naturalHeight,m=Math.min(D,x,1);w({type:"SET_ZOOM",zoom:m}),w({type:"SET_PAN",panX:0,panY:0})},clear:()=>w({type:"CLEAR"})}),[f.annotations,B,L,P]);const A=n.useCallback(v=>{if(v.touches.length!==1)return;const c=v.touches[0];y({clientX:c.clientX,clientY:c.clientY,preventDefault:()=>{}})},[y]),H=n.useCallback(v=>{if(v.touches.length!==1)return;const c=v.touches[0];N({clientX:c.clientX,clientY:c.clientY})},[N]);return e.jsx("div",{ref:_,className:`nice-image-annotator ${C??""}`,style:{position:"relative",overflow:"hidden",width:"100%",height:"100%"},children:e.jsx("canvas",{ref:K,className:"nice-image-annotator__canvas",style:{cursor:f.activeTool==="select"?"default":"crosshair"},onMouseDown:y,onMouseMove:N,onMouseUp:j,onMouseLeave:j,onWheel:$,onTouchStart:A,onTouchMove:H,onTouchEnd:j,role:"img","aria-label":i})})});pn.displayName="NiceImageAnnotator";function Ni(t){let i=t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");return i=i.replace(/```(\w*)\n([\s\S]*?)```/g,(o,s,l)=>`<pre><code class="language-${s}">${l.trim()}</code></pre>`),i=i.replace(/^(\|.+\|)\n(\|[-| :]+\|)\n((?:\|.+\|\n?)+)/gm,(o,s,l,h)=>{const C=s.split("|").filter(L=>L.trim()).map(L=>`<th>${L.trim()}</th>`).join(""),k=h.trim().split(`
404
+ `).map(L=>`<tr>${L.split("|").filter(W=>W.trim()).map(W=>`<td>${W.trim()}</td>`).join("")}</tr>`).join("");return`<table><thead><tr>${C}</tr></thead><tbody>${k}</tbody></table>`}),i=i.replace(/^#### (.+)$/gm,"<h4>$1</h4>"),i=i.replace(/^### (.+)$/gm,"<h3>$1</h3>"),i=i.replace(/^## (.+)$/gm,"<h2>$1</h2>"),i=i.replace(/^# (.+)$/gm,"<h1>$1</h1>"),i=i.replace(/^&gt; (.+)$/gm,"<blockquote>$1</blockquote>"),i=i.replace(/^---$/gm,"<hr/>"),i=i.replace(/^- \[x\] (.+)$/gm,'<li class="task done">☑ $1</li>'),i=i.replace(/^- \[ \] (.+)$/gm,'<li class="task">☐ $1</li>'),i=i.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),i=i.replace(/\*(.+?)\*/g,"<em>$1</em>"),i=i.replace(/~~(.+?)~~/g,"<del>$1</del>"),i=i.replace(/`(.+?)`/g,"<code>$1</code>"),i=i.replace(/!\[([^\]]*)\]\(([^)]+)\)/g,'<img src="$2" alt="$1" style="max-width:100%"/>'),i=i.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2">$1</a>'),i=i.replace(/^\- (.+)$/gm,"<li>$1</li>"),i=i.replace(/^\d+\. (.+)$/gm,"<li>$1</li>"),i=i.replace(/\n/g,"<br/>"),i}const Ci=[{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:`---
405
+ `,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 |
406
+ | --- | --- | --- |
407
+ | c1 | c2 | c3 |
408
+ `,tip:"Table",group:"insert"},{key:"codeblock",label:"```",md:"```\n",tip:"Code block",group:"insert"}],Si=["format","heading","list","block","insert"],hn=n.forwardRef(({value:t="",onChange:i,preview:o="side",placeholder:s,disabled:l,readOnly:h,size:C="md",editorSize:k="standard",toolbar:L=!0,minHeight:P=200,showWordCount:W=!1,showLineNumbers:K=!1,onExportHtml:_,onImageUpload:O,className:F,style:Z,id:B},V)=>{const f=te.Hs(B),[w,S]=n.useState("edit"),[M,G]=n.useState(!1),y=n.useRef(null),N=n.useMemo(()=>Ni(t),[t]),j=n.useMemo(()=>{const x=t.trim()?t.trim().split(/\s+/).length:0,m=t.length,r=t.split(`
409
+ `).length;return{words:x,chars:m,lines:r}},[t]),$=n.useCallback(x=>{const m=y.current;if(!m)return;const r=m.selectionStart,d=m.selectionEnd,p=t.slice(r,d);let g,u;x==="[](url)"?(g=t.slice(0,r)+`[${p||"text"}](url)`+t.slice(d),u=r+1+(p||"text").length+2):x==="![](url)"?(g=t.slice(0,r)+`![${p||"alt"}](url)`+t.slice(d),u=r+2+(p||"alt").length+2):x.endsWith(`
410
+ `)||x.endsWith(" ")?(g=t.slice(0,r)+x+p+t.slice(d),u=r+x.length+p.length):(g=t.slice(0,r)+x+p+x+t.slice(d),u=r+x.length+p.length+x.length),i?.(g),requestAnimationFrame(()=>{m.focus(),m.setSelectionRange(u,u)})},[t,i]),A=n.useCallback(x=>{if((x.ctrlKey||x.metaKey)&&(x.key==="b"?(x.preventDefault(),$("**")):x.key==="i"?(x.preventDefault(),$("*")):x.key==="k"&&(x.preventDefault(),$("[](url)"))),x.key==="Tab"){x.preventDefault();const m=x.currentTarget,r=m.selectionStart,d=m.selectionEnd,p=" ";if(x.shiftKey){const T=t.slice(0,r).lastIndexOf(`
411
+ `)+1;if(t.slice(T,T+p.length)===p){const Y=t.slice(0,T)+t.slice(T+p.length);i?.(Y),requestAnimationFrame(()=>{m.selectionStart=m.selectionEnd=r-p.length})}}else{const g=t.slice(0,r)+p+t.slice(d);i?.(g),requestAnimationFrame(()=>{m.selectionStart=m.selectionEnd=r+p.length})}}},[t,i,$]),H=n.useCallback(async x=>{if(!O)return;const m=Array.from(x.dataTransfer.files).filter(r=>r.type.startsWith("image/"));if(m.length!==0){x.preventDefault();for(const r of m){const d=await O(r),p=y.current;if(!p)continue;const g=p.selectionStart,u=`![${r.name}](${d})
412
+ `,T=t.slice(0,g)+u+t.slice(g);i?.(T)}}},[t,i,O]),v=o!=="tab"||w==="edit",c=o==="side"||o==="tab"&&w==="preview"||o===!0,D=`nice-md-editor nice-md-editor--${C} nice-editor--${k} nice-md-editor--preview-${o}${M?" nice-md-editor--fullscreen":""} ${F||""}`;return e.jsxs("div",{ref:V,id:f,className:D,style:Z,children:[L&&e.jsxs("div",{className:"nice-md-editor__toolbar",children:[Si.map((x,m)=>e.jsxs(n.Fragment,{children:[m>0&&e.jsx("span",{className:"nice-md-editor__sep"}),Ci.filter(r=>r.group===x).map(r=>e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:r.shortcut?`${r.tip} (${r.shortcut})`:r.tip,disabled:l||h,onClick:()=>$(r.md),children:r.label},r.key))]},x)),e.jsx("span",{className:"nice-md-editor__sep"}),e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:"Fullscreen",onClick:()=>G(!M),children:M?"⊙":"⛶"}),_&&e.jsx("button",{type:"button",className:"nice-md-editor__btn",title:"Export HTML",onClick:()=>_(N),children:"↗"}),o==="tab"&&e.jsxs("span",{className:"nice-md-editor__tabs",children:[e.jsx("button",{type:"button",className:`nice-md-editor__tab${w==="edit"?" nice-md-editor__tab--active":""}`,onClick:()=>S("edit"),children:"Edit"}),e.jsx("button",{type:"button",className:`nice-md-editor__tab${w==="preview"?" nice-md-editor__tab--active":""}`,onClick:()=>S("preview"),children:"Preview"})]})]}),e.jsxs("div",{className:"nice-md-editor__body",style:{minHeight:P},children:[v&&e.jsxs("div",{className:"nice-md-editor__editor-wrap",children:[K&&e.jsx("div",{className:"nice-md-editor__line-numbers",children:Array.from({length:j.lines},(x,m)=>e.jsx("div",{className:"nice-md-editor__line-no",children:m+1},m))}),e.jsx("textarea",{ref:y,className:"nice-md-editor__textarea",value:t,onChange:x=>i?.(x.target.value),onKeyDown:A,onDrop:H,placeholder:s,disabled:l,readOnly:h,style:{minHeight:P}})]}),c&&e.jsx("div",{className:"nice-md-editor__preview",dangerouslySetInnerHTML:{__html:te.As(N)},style:{minHeight:P}})]}),W&&e.jsxs("div",{className:"nice-md-editor__statusbar",children:[e.jsxs("span",{children:[j.words," words"]}),e.jsxs("span",{children:[j.chars," chars"]}),e.jsxs("span",{children:[j.lines," lines"]})]})]})});hn.displayName="NiceMarkdownEditor";const Pt={rotation:0,flipH:!1,flipV:!1,brightness:100,contrast:100,saturate:100,blur:0,crop:null,annotations:[]},Mi=["crop","rotate","flip","brightness","contrast","saturate","blur","annotate"],gn=n.forwardRef(({src:t,size:i="md",editorSize:o="standard",tools:s=Mi,showToolbar:l=!0,showZoom:h=!0,maxUndo:C=30,onSave:k,onCancel:L,onChange:P,width:W="100%",height:K=500,className:_,style:O,id:F,...Z},B)=>{const V=te.Hs(F),{t:f}=te.$o(),w=n.useRef(null),S=n.useRef(null),[M,G]=n.useState({...Pt}),[y,N]=n.useState(null),[j,$]=n.useState(!1),[A,H]=n.useState(1),[v,c]=n.useState("rect"),[D,x]=n.useState("var(--nice-danger, #ff0000)"),[m,r]=n.useState({w:0,h:0}),[d,p]=n.useState([]),[g,u]=n.useState([]),[T,Y]=n.useState(null),[z,J]=n.useState(null),[me,U]=n.useState(null),ne=n.useCallback(R=>{p(b=>[...b.slice(-(C-1)),R]),u([])},[C]),ie=n.useCallback(R=>{G(b=>{ne(b);const q={...b,...R};return P?.(q),q})},[P,ne]),he=n.useCallback(()=>{if(d.length===0)return;const R=d[d.length-1];p(b=>b.slice(0,-1)),u(b=>[...b,M]),G(R),P?.(R)},[d,M,P]),fe=n.useCallback(()=>{if(g.length===0)return;const R=g[g.length-1];u(b=>b.slice(0,-1)),p(b=>[...b,M]),G(R),P?.(R)},[g,M,P]);n.useEffect(()=>{const R=new Image;R.crossOrigin="anonymous",R.onload=()=>{S.current=R,r({w:R.width,h:R.height}),$(!0)},R.src=t},[t]),n.useEffect(()=>{if(!j||!w.current||!S.current)return;const R=w.current,b=R.getContext("2d");if(!b)return;const q=S.current,re=M.rotation%180!==0,de=re?q.height:q.width,I=re?q.width:q.height;R.width=de,R.height=I,b.clearRect(0,0,de,I),b.save(),b.filter=`brightness(${M.brightness}%) contrast(${M.contrast}%) saturate(${M.saturate}%) blur(${M.blur}px)`,b.translate(de/2,I/2),b.rotate(M.rotation*Math.PI/180),b.scale(M.flipH?-1:1,M.flipV?-1:1),b.drawImage(q,-q.width/2,-q.height/2),b.restore(),M.annotations.forEach(se=>{switch(b.save(),b.strokeStyle=se.color??"red",b.fillStyle=se.color??"red",b.lineWidth=se.strokeWidth??2,b.font=`${se.fontSize??16}px sans-serif`,se.type){case"text":b.fillText(se.text??"",se.x,se.y);break;case"rect":b.strokeRect(se.x,se.y,se.width??100,se.height??50);break;case"circle":{const ue=(se.width??50)/2,_e=(se.height??50)/2;b.beginPath(),b.ellipse(se.x+ue,se.y+_e,ue,_e,0,0,Math.PI*2),b.stroke();break}case"line":b.beginPath(),b.moveTo(se.x,se.y),b.lineTo(se.x+(se.width??100),se.y+(se.height??0)),b.stroke();break;case"arrow":{const ue=se.x+(se.width??100),_e=se.y+(se.height??0);b.beginPath(),b.moveTo(se.x,se.y),b.lineTo(ue,_e),b.stroke();const ve=Math.atan2(_e-se.y,ue-se.x),ke=10;b.beginPath(),b.moveTo(ue,_e),b.lineTo(ue-ke*Math.cos(ve-.4),_e-ke*Math.sin(ve-.4)),b.lineTo(ue-ke*Math.cos(ve+.4),_e-ke*Math.sin(ve+.4)),b.closePath(),b.fill();break}}b.restore()}),z&&(b.save(),b.fillStyle="var(--nice-overlay-50, rgba(0, 0, 0, 0.5))",b.fillRect(0,0,de,I),b.clearRect(z.x,z.y,z.w,z.h),b.strokeStyle="var(--bg-primary, #fff)",b.lineWidth=2,b.setLineDash([5,5]),b.strokeRect(z.x,z.y,z.w,z.h),b.restore())},[j,M,z]);const ye=n.useCallback(R=>{if(!w.current)return;const b=w.current.getBoundingClientRect(),q=w.current.width/b.width,re=w.current.height/b.height,de=(R.clientX-b.left)*q,I=(R.clientY-b.top)*re;y==="crop"?Y({startX:de,startY:I}):y==="annotate"&&U({startX:de,startY:I})},[y]),xe=n.useCallback(R=>{if(!w.current)return;const b=w.current.getBoundingClientRect(),q=w.current.width/b.width,re=w.current.height/b.height,de=(R.clientX-b.left)*q,I=(R.clientY-b.top)*re;T&&J({x:Math.min(T.startX,de),y:Math.min(T.startY,I),w:Math.abs(de-T.startX),h:Math.abs(I-T.startY)})},[T]),ae=n.useCallback(R=>{if(T&&z&&z.w>5&&z.h>5&&ie({crop:{x:z.x,y:z.y,width:z.w,height:z.h}}),Y(null),me&&w.current){const b=w.current.getBoundingClientRect(),q=w.current.width/b.width,re=w.current.height/b.height,de=(R.clientX-b.left)*q,I=(R.clientY-b.top)*re,se=de-me.startX,ue=I-me.startY;if(Math.abs(se)>3||Math.abs(ue)>3||v==="text"){const _e={type:v,x:me.startX,y:me.startY,width:Math.abs(se)||100,height:Math.abs(ue)||50,color:D,strokeWidth:2,text:v==="text"?prompt(f("imageEditor.annotationText","Text:"))??"":void 0};ie({annotations:[...M.annotations,_e]})}U(null)}},[T,z,me,v,D,M.annotations,ie,f]),ce=n.useCallback(()=>{if(!M.crop||!w.current)return;const R=w.current,b=R.getContext("2d");if(!b)return;const{x:q,y:re,width:de,height:I}=M.crop,se=b.getImageData(q,re,de,I);R.width=de,R.height=I,b.putImageData(se,0,0),J(null),N(null)},[M.crop]),ge=n.useCallback(()=>{if(!w.current)return;const R=w.current.toDataURL("image/png");k?.(R,M)},[k,M]),ee=n.useCallback(()=>{G({...Pt}),J(null),N(null)},[]);return n.useMemo(()=>`brightness(${M.brightness}%) contrast(${M.contrast}%) saturate(${M.saturate}%) blur(${M.blur}px)`,[M.brightness,M.contrast,M.saturate,M.blur]),e.jsxs("div",{ref:B,id:V,className:`nice-image-editor nice-image-editor--${i} nice-editor--${o} ${_??""}`,style:{...O,width:W,height:K},role:"application","aria-label":f("imageEditor.label","Image Editor"),...Z,children:[l&&e.jsxs("div",{className:"nice-image-editor__toolbar",role:"toolbar",children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:he,disabled:d.length===0,title:f("imageEditor.undo","Undo"),children:"↶"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:fe,disabled:g.length===0,title:f("imageEditor.redo","Redo"),children:"↷"}),e.jsx("span",{className:"nice-image-editor__sep"}),s.includes("rotate")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>ie({rotation:(M.rotation-90+360)%360}),title:f("imageEditor.rotateLeft","Rotate left"),children:"↺"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>ie({rotation:(M.rotation+90)%360}),title:f("imageEditor.rotateRight","Rotate right"),children:"↻"})]}),s.includes("flip")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>ie({flipH:!M.flipH}),title:f("imageEditor.flipH","Flip horizontal"),children:"⇔"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>ie({flipV:!M.flipV}),title:f("imageEditor.flipV","Flip vertical"),children:"⇕"})]}),s.includes("crop")&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:`nice-image-editor__btn ${y==="crop"?"nice-image-editor__btn--active":""}`,onClick:()=>N(y==="crop"?null:"crop"),title:f("imageEditor.crop","Crop"),children:"⊡"}),y==="crop"&&M.crop&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:ce,title:f("imageEditor.applyCrop","Apply crop"),children:"✓"})]}),s.includes("brightness")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[f("imageEditor.brightness","☀"),e.jsx("input",{type:"range",min:0,max:200,value:M.brightness,onChange:R=>ie({brightness:Number(R.target.value)}),className:"nice-image-editor__slider",title:f("imageEditor.brightness","Brightness")})]}),s.includes("contrast")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[f("imageEditor.contrast","◑"),e.jsx("input",{type:"range",min:0,max:200,value:M.contrast,onChange:R=>ie({contrast:Number(R.target.value)}),className:"nice-image-editor__slider",title:f("imageEditor.contrast","Contrast")})]}),s.includes("saturate")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[f("imageEditor.saturate","🎨"),e.jsx("input",{type:"range",min:0,max:200,value:M.saturate,onChange:R=>ie({saturate:Number(R.target.value)}),className:"nice-image-editor__slider",title:f("imageEditor.saturate","Saturation")})]}),s.includes("blur")&&e.jsxs("label",{className:"nice-image-editor__slider-label",children:[f("imageEditor.blur","⊘"),e.jsx("input",{type:"range",min:0,max:20,step:.5,value:M.blur,onChange:R=>ie({blur:Number(R.target.value)}),className:"nice-image-editor__slider",title:f("imageEditor.blur","Blur")})]}),s.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 ${y==="annotate"?"nice-image-editor__btn--active":""}`,onClick:()=>N(y==="annotate"?null:"annotate"),title:f("imageEditor.annotate","Annotate"),children:"✎"}),y==="annotate"&&e.jsxs(e.Fragment,{children:[e.jsxs("select",{className:"nice-image-editor__select",value:v,onChange:R=>c(R.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:D,onChange:R=>x(R.target.value),className:"nice-image-editor__color",title:f("imageEditor.color","Color")}),M.annotations.length>0&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>ie({annotations:M.annotations.slice(0,-1)}),title:f("imageEditor.removeLastAnnotation","Remove last"),children:"⌫"})]})]}),e.jsx("span",{className:"nice-image-editor__sep"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:ee,title:f("imageEditor.reset","Reset"),children:"⟲"}),k&&e.jsx("button",{type:"button",className:"nice-image-editor__btn nice-image-editor__btn--save",onClick:ge,children:f("imageEditor.save","Save")}),L&&e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:L,children:f("imageEditor.cancel","Cancel")})]}),e.jsx("div",{className:"nice-image-editor__canvas-wrap",children:e.jsx("canvas",{ref:w,className:"nice-image-editor__canvas",onMouseDown:ye,onMouseMove:xe,onMouseUp:ae,style:{cursor:y==="crop"||y==="annotate"?"crosshair":"default",transform:`scale(${A})`,transformOrigin:"center center"}})}),h&&e.jsxs("div",{className:"nice-image-editor__footer",children:[e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>H(R=>Math.max(.1,R-.1)),title:"Zoom out",children:"−"}),e.jsxs("span",{style:{fontSize:"0.85em",minWidth:40,textAlign:"center"},children:[Math.round(A*100),"%"]}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>H(R=>Math.min(5,R+.1)),title:"Zoom in",children:"+"}),e.jsx("button",{type:"button",className:"nice-image-editor__btn",onClick:()=>H(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:[m.w,"×",m.h,"px · ",M.rotation,"°"]})]})]})});gn.displayName="NiceImageEditor";const fn=n.forwardRef(({value:t,onChange:i,penColor:o="var(--text-primary, #000)",penWidth:s=2,backgroundColor:l="var(--bg-primary, #fff)",width:h=400,height:C=200,size:k="md",disabled:L=!1,readOnly:P=!1,showClear:W=!0,showUndo:K=!0,label:_,exportFormat:O="image/png",className:F,style:Z,id:B,...V},f)=>{const w=te.Hs(B),{t:S}=te.$o(),M=n.useRef(null),[G,y]=n.useState(!1),N=n.useRef([]),j=n.useRef([]),[$,A]=n.useState(!0),H=n.useCallback(()=>{const d=M.current;if(!d)return;const p=d.getContext("2d");if(p){p.fillStyle=l,p.fillRect(0,0,d.width,d.height),p.strokeStyle=o,p.lineWidth=s,p.lineCap="round",p.lineJoin="round";for(const g of N.current)if(!(g.length<2)){p.beginPath(),p.moveTo(g[0].x,g[0].y);for(let u=1;u<g.length;u++)p.lineTo(g[u].x,g[u].y);p.stroke()}}},[l,o,s]);n.useEffect(()=>{if(t&&M.current){const d=new Image;d.onload=()=>{const p=M.current?.getContext("2d");!p||!M.current||(p.fillStyle=l,p.fillRect(0,0,M.current.width,M.current.height),p.drawImage(d,0,0),A(!1))},d.src=t}else t||(N.current=[],A(!0),H())},[t,l,H]),n.useEffect(()=>{const d=M.current;d&&(d.width=h,d.height=C,H())},[h,C,H]);const v=n.useCallback(d=>{const p=M.current,g=p.getBoundingClientRect(),u=p.width/g.width,T=p.height/g.height;if("touches"in d){const Y=d.touches[0];return{x:(Y.clientX-g.left)*u,y:(Y.clientY-g.top)*T}}return{x:(d.clientX-g.left)*u,y:(d.clientY-g.top)*T}},[]),c=n.useCallback(d=>{if(L||P)return;d.preventDefault();const p=v(d);j.current=[p],y(!0)},[L,P,v]),D=n.useCallback(d=>{if(!G)return;d.preventDefault();const p=v(d);j.current.push(p);const g=M.current,u=g?.getContext("2d");if(!u||!g)return;const T=j.current;T.length>=2&&(u.strokeStyle=o,u.lineWidth=s,u.lineCap="round",u.beginPath(),u.moveTo(T[T.length-2].x,T[T.length-2].y),u.lineTo(p.x,p.y),u.stroke())},[G,v,o,s]),x=n.useCallback(()=>{if(G&&(y(!1),j.current.length>0&&(N.current.push([...j.current]),j.current=[],A(!1),M.current))){const d=M.current.toDataURL(O);i?.(d)}},[G,O,i]),m=n.useCallback(()=>{N.current=[],j.current=[],A(!0),H(),i?.(null)},[H,i]),r=n.useCallback(()=>{if(N.current.length!==0&&(N.current.pop(),A(N.current.length===0),H(),M.current)){const d=N.current.length>0?M.current.toDataURL(O):null;i?.(d)}},[H,O,i]);return e.jsxs("div",{ref:f,id:w,className:`nice-signature nice-signature--${k} ${L?"nice-signature--disabled":""} ${P?"nice-signature--readonly":""} ${F??""}`,style:Z,...V,children:[_&&e.jsx("label",{className:"nice-signature__label",children:_}),e.jsx("div",{className:"nice-signature__canvas-wrap",style:{width:h,height:C},children:e.jsx("canvas",{ref:M,className:"nice-signature__canvas",onMouseDown:c,onMouseMove:D,onMouseUp:x,onMouseLeave:x,onTouchStart:c,onTouchMove:D,onTouchEnd:x,style:{touchAction:"none",cursor:L||P?"default":"crosshair"},"aria-label":_??S("signature.label","Signature pad"),role:"img"})}),(W||K)&&!P&&!L&&e.jsxs("div",{className:"nice-signature__actions",children:[K&&e.jsx("button",{type:"button",className:"nice-signature__btn",onClick:r,disabled:$,children:S("signature.undo","Undo")}),W&&e.jsx("button",{type:"button",className:"nice-signature__btn",onClick:m,disabled:$,children:S("signature.clear","Clear")})]})]})});fn.displayName="NiceSignaturePad";let $i=0;function xt(){return`blk-${++$i}-${Date.now().toString(36)}`}function Ht(t=""){return{id:xt(),type:"paragraph",content:t}}function Ei(t,i=""){const o={id:xt(),type:t,content:i};return t==="heading"&&(o.level=2),t==="list"&&(o.listType="unordered"),t==="callout"&&(o.icon="??"),t==="toggle"&&(o.open=!0),o}const Ti=[{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 Ri(t){const i=[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(";"),o=i?` style="${i}"`:"",s=(l,h)=>{let C=h;return t.bold&&(C=`<strong>${C}</strong>`),t.italic&&(C=`<em>${C}</em>`),t.underline&&(C=`<u>${C}</u>`),t.strikethrough&&(C=`<s>${C}</s>`),`<${l}${o}>${C}</${l}>`};switch(t.type){case"heading":return s(`h${t.level??2}`,t.content);case"paragraph":return s("p",t.content||"&nbsp;");case"list":{const l=t.listType==="ordered"?"ol":"ul",h=t.content.split(`
413
+ `).map((C,k)=>t.listType==="checklist"?`<li><input type="checkbox" ${t.checked?.[k]??!1?"checked":""} disabled />${C}</li>`:`<li>${C}</li>`).join("");return`<${l}${o}>${h}</${l}>`}case"image":return`<figure${o}><img src="${t.src??""}" alt="${t.alt??""}" /></figure>`;case"video":return`<figure${o}><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 s("blockquote",t.content);case"callout":return`<div class="nice-doc-callout"${o}><span>${t.icon??"??"}</span><div>${t.content}</div></div>`;case"toggle":return`<details${o}><summary>${t.content.split(`
414
+ `)[0]}</summary>${t.content.split(`
415
+ `).slice(1).join("<br>")}</details>`;case"table":return`<table${o}>${t.content}</table>`;case"embed":return`<iframe src="${t.src??""}" style="width:100%;border:none;min-height:300px"></iframe>`;default:return s("p",t.content)}}function Ii(t){let i=0,o=0;for(const s of t){const l=s.content??"";i+=l.length;const h=l.trim().split(/\s+/).filter(Boolean);o+=h.length}return{words:o,chars:i,readingTime:Math.max(1,Math.ceil(o/200))}}const yn=n.forwardRef(({blocks:t,onChange:i,readOnly:o=!1,showToolbar:s=!0,size:l="md",editorSize:h="standard",placeholder:C,onExport:k,onImageUpload:L,maxUndo:P=50,slashCommands:W=!0,showWordCount:K=!1,showToc:_=!1,showFindReplace:O=!0,className:F,style:Z,id:B,...V},f)=>{const w=te.Hs(B),{t:S}=te.$o(),[M,G]=n.useState(()=>t??[Ht()]),y=t??M,[N,j]=n.useState(0),$=n.useRef(new Map),A=n.useRef(null),[H,v]=n.useState(!1),[c,D]=n.useState(""),[x,m]=n.useState(""),[r,d]=n.useState([]),[p,g]=n.useState(0),[u,T]=n.useState(!1),Y=n.useRef([]),z=n.useRef([]),J=n.useCallback(a=>{Y.current.push(a.map(E=>({...E,checked:E.checked?[...E.checked]:void 0}))),Y.current.length>P&&Y.current.shift(),z.current=[]},[P]),me=n.useCallback(()=>{if(Y.current.length===0)return;const a=Y.current.pop();z.current.push(y.map(E=>({...E}))),t||G(a),i?.(a)},[y,t,i]),U=n.useCallback(()=>{if(z.current.length===0)return;const a=z.current.pop();Y.current.push(y.map(E=>({...E}))),t||G(a),i?.(a)},[y,t,i]),[ne,ie]=n.useState(!1),[he,fe]=n.useState(""),[ye,xe]=n.useState(0),ae=n.useMemo(()=>{if(!ne||!W)return[];const a=he.toLowerCase();return Ti.filter(E=>E.label.toLowerCase().includes(a)||E.keywords.includes(a))},[ne,he,W]),[ce,ge]=n.useState(null),[ee,R]=n.useState(null),b=n.useCallback(a=>{J(y);const E=a(y);t||G(E),i?.(E)},[y,t,i,J]),q=n.useCallback((a,E)=>{b(X=>X.map((oe,le)=>le===a?{...oe,...E}:oe))},[b]),re=n.useCallback((a,E)=>{const X=E??Ht();b(oe=>{const le=[...oe];return le.splice(a+1,0,X),le}),j(a+1)},[b]),de=n.useCallback(a=>{const E={...y[a],id:xt()};re(a,E)},[y,re]),I=n.useCallback(a=>{y.length<=1||(b(E=>E.filter((X,oe)=>oe!==a)),j(Math.max(0,a-1)))},[y.length,b]),se=n.useCallback((a,E)=>{const X=a+E;X<0||X>=y.length||(b(oe=>{const le=[...oe];return[le[a],le[X]]=[le[X],le[a]],le}),j(X))},[y.length,b]),ue=n.useCallback((a,E)=>{const X={type:E};E==="heading"&&(X.level=2),E==="list"&&(X.listType="unordered"),E==="callout"&&(X.icon="??"),E==="toggle"&&(X.open=!0),q(a,X)},[q]),_e=n.useCallback(a=>{const E=Ei(a.type);a.type==="list"&&a.label.includes("Numbered")&&(E.listType="ordered"),a.type==="list"&&a.label.includes("Checklist")&&(E.listType="checklist",E.checked=[]),y[N]?.content===""||y[N]?.content==="/"?b(X=>X.map((oe,le)=>le===N?{...E,id:oe.id}:oe)):re(N,E),ie(!1),fe("")},[y,N,b,re]),ve=n.useCallback((a,E)=>{if(o)return;const X=y[E];if(!X?.locked){if((a.ctrlKey||a.metaKey)&&a.key==="z"&&!a.shiftKey){a.preventDefault(),me();return}if((a.ctrlKey||a.metaKey)&&(a.key==="y"||a.key==="z"&&a.shiftKey)){a.preventDefault(),U();return}if((a.ctrlKey||a.metaKey)&&a.key==="d"){a.preventDefault(),de(E);return}if((a.ctrlKey||a.metaKey)&&a.key==="b"){a.preventDefault(),q(E,{bold:!X?.bold});return}if((a.ctrlKey||a.metaKey)&&a.key==="i"){a.preventDefault(),q(E,{italic:!X?.italic});return}if((a.ctrlKey||a.metaKey)&&a.key==="u"){a.preventDefault(),q(E,{underline:!X?.underline});return}if((a.ctrlKey||a.metaKey)&&a.key==="e"){a.preventDefault(),q(E,{strikethrough:!X?.strikethrough});return}if(a.key==="Tab"&&!a.shiftKey){a.preventDefault(),q(E,{indent:Math.min((X?.indent??0)+1,4)});return}if(a.key==="Tab"&&a.shiftKey){a.preventDefault(),q(E,{indent:Math.max((X?.indent??0)-1,0)});return}if((a.ctrlKey||a.metaKey)&&a.key==="f"&&O){a.preventDefault(),v(oe=>!oe);return}if(ne&&ae.length>0){if(a.key==="ArrowDown"){a.preventDefault(),xe(oe=>Math.min(oe+1,ae.length-1));return}if(a.key==="ArrowUp"){a.preventDefault(),xe(oe=>Math.max(oe-1,0));return}if(a.key==="Enter"){a.preventDefault(),_e(ae[ye]);return}if(a.key==="Escape"){ie(!1);return}}a.key==="Enter"&&!a.shiftKey?(a.preventDefault(),re(E)):a.key==="Backspace"&&y[E].content===""&&y.length>1?(a.preventDefault(),I(E)):a.key==="ArrowUp"&&a.altKey?(a.preventDefault(),se(E,-1)):a.key==="ArrowDown"&&a.altKey&&(a.preventDefault(),se(E,1))}},[o,y,re,I,se,me,U,de,q,ne,ae,ye,_e,O]),ke=n.useCallback((a,E)=>{const X=a.target.textContent??"";W&&X.startsWith("/")?(ie(!0),fe(X.slice(1)),xe(0)):ne&&ie(!1),J(y);const oe=y.map((le,we)=>we===E?{...le,content:X}:le);t||G(oe),i?.(oe)},[y,t,i,J,W,ne]),Ee=n.useCallback((a,E)=>{ge(E),a.dataTransfer.effectAllowed="move"},[]),De=n.useCallback((a,E)=>{a.preventDefault(),a.dataTransfer.dropEffect="move",R(E)},[]),Te=n.useCallback((a,E)=>{if(a.preventDefault(),ce===null||ce===E){ge(null),R(null);return}b(X=>{const oe=[...X],[le]=oe.splice(ce,1);return oe.splice(E>ce?E-1:E,0,le),oe}),j(E>ce?E-1:E),ge(null),R(null)},[ce,b]);n.useEffect(()=>{if(!H||!c){d([]);return}const a=c.toLowerCase(),E=[];y.forEach((X,oe)=>{const le=(X.content??"").toLowerCase();let we=0;for(;we<le.length;){const Ce=le.indexOf(a,we);if(Ce===-1)break;E.push({blockIdx:oe,start:Ce,end:Ce+a.length}),we=Ce+1}}),d(E),g(0)},[c,H,y]);const Ie=n.useCallback(()=>{if(r.length===0)return;const a=(p+1)%r.length;g(a),j(r[a].blockIdx)},[r,p]),Oe=n.useCallback(()=>{if(r.length===0)return;const a=(p-1+r.length)%r.length;g(a),j(r[a].blockIdx)},[r,p]),Ke=n.useCallback(()=>{if(r.length===0||!c)return;const a=r[p],E=y[a.blockIdx],X=E.content.slice(0,a.start),oe=E.content.slice(a.end);q(a.blockIdx,{content:X+x+oe})},[r,p,c,x,y,q]),Ye=n.useCallback(()=>{if(!c)return;const a=c;b(E=>E.map(X=>({...X,content:X.content.split(a).join(x)})))},[c,x,b]),Le=n.useMemo(()=>_?y.map((a,E)=>a.type==="heading"?{idx:E,level:a.level??2,text:a.content}:null).filter(Boolean):[],[y,_]),Ae=n.useCallback(async a=>{const E=a.target.files?.[0];if(E){if(L){const X=await L(E);q(N,{src:X})}a.target.value=""}},[L,N,q]);n.useEffect(()=>{const a=y[N];if(a){const E=$.current.get(a.id);E&&E.focus()}},[N,y]);const ze=n.useCallback(()=>{const a=y.map(Ri).join(`
416
+ `);k?.(a)},[y,k]),Q=n.useMemo(()=>K?Ii(y):null,[y,K]),[pe,je]=n.useState(null),Se=n.useCallback((a,E)=>{o||(a.preventDefault(),je({x:a.clientX,y:a.clientY,idx:E}))},[o]);return n.useEffect(()=>{if(!pe)return;const a=()=>je(null);return window.addEventListener("click",a),()=>window.removeEventListener("click",a)},[pe]),e.jsxs("div",{ref:f,id:w,className:`nice-doc-editor nice-doc-editor--${l} nice-editor--${h} ${o?"nice-doc-editor--readonly":""} ${F??""}`,style:Z,role:"application","aria-label":S("docEditor.label","Document Editor"),...V,children:[s&&!o&&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(be.NiceButton,{size:"sm",variant:"ghost",onClick:me,title:S("docEditor.undo","Undo (Ctrl+Z)"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:U,title:S("docEditor.redo","Redo (Ctrl+Y)"),children:"?"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(be.NiceSelect,{size:"sm",value:y[N]?.type??"paragraph",onChange:a=>ue(N,a),label:"",options:[{value:"paragraph",label:S("docEditor.paragraph","Paragraph")},{value:"heading",label:S("docEditor.heading","Heading")},{value:"list",label:S("docEditor.list","List")},{value:"code",label:S("docEditor.code","Code")},{value:"quote",label:S("docEditor.quote","Quote")},{value:"callout",label:S("docEditor.callout","Callout")},{value:"toggle",label:S("docEditor.toggle","Toggle")},{value:"divider",label:S("docEditor.divider","Divider")},{value:"image",label:S("docEditor.image","Image")},{value:"video",label:S("docEditor.video","Video")},{value:"pageBreak",label:S("docEditor.pageBreak","Page Break")}],style:{minWidth:100}}),y[N]?.type==="heading"&&e.jsx(be.NiceSelect,{size:"sm",value:String(y[N]?.level??2),onChange:a=>q(N,{level:Number(a)}),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}}),y[N]?.type==="list"&&e.jsx(be.NiceSelect,{size:"sm",value:y[N]?.listType??"unordered",onChange:a=>q(N,{listType:a}),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(be.NiceButton,{size:"sm",variant:y[N]?.bold?"primary":"ghost",onClick:()=>q(N,{bold:!y[N]?.bold}),title:S("docEditor.bold","Bold (Ctrl+B)"),children:e.jsx("strong",{children:"B"})}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.italic?"primary":"ghost",onClick:()=>q(N,{italic:!y[N]?.italic}),title:S("docEditor.italic","Italic (Ctrl+I)"),children:e.jsx("em",{children:"I"})}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.underline?"primary":"ghost",onClick:()=>q(N,{underline:!y[N]?.underline}),title:S("docEditor.underline","Underline (Ctrl+U)"),children:e.jsx("u",{children:"U"})}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.strikethrough?"primary":"ghost",onClick:()=>q(N,{strikethrough:!y[N]?.strikethrough}),title:S("docEditor.strikethrough","Strikethrough (Ctrl+E)"),children:e.jsx("s",{children:"S"})}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.align==="left"?"primary":"ghost",onClick:()=>q(N,{align:"left"}),title:S("docEditor.alignLeft","Left"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.align==="center"?"primary":"ghost",onClick:()=>q(N,{align:"center"}),title:S("docEditor.alignCenter","Center"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.align==="right"?"primary":"ghost",onClick:()=>q(N,{align:"right"}),title:S("docEditor.alignRight","Right"),children:"?"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>q(N,{indent:Math.min((y[N]?.indent??0)+1,4)}),title:S("docEditor.indent","Indent (Tab)"),children:"??"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>q(N,{indent:Math.max((y[N]?.indent??0)-1,0)}),title:S("docEditor.outdent","Outdent (Shift+Tab)"),children:"??"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(be.NiceColorPicker,{size:"sm",label:"",value:y[N]?.color??"var(--text-primary, #000000)",onChange:a=>q(N,{color:a}),title:"Text color"}),e.jsx(be.NiceColorPicker,{size:"sm",label:"",value:y[N]?.bgColor??"var(--bg-primary, #ffffff)",onChange:a=>q(N,{bgColor:a}),title:"Block background"}),e.jsx("span",{className:"nice-doc-editor__sep"}),e.jsx(be.NiceButton,{size:"sm",variant:y[N]?.locked?"primary":"ghost",onClick:()=>q(N,{locked:!y[N]?.locked}),title:S("docEditor.lock","Lock/Unlock block"),children:"??"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>de(N),title:S("docEditor.duplicate","Duplicate (Ctrl+D)"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>I(N),title:S("docEditor.delete","Delete block"),children:"??"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>re(N),title:S("docEditor.addBlock","Add block"),children:"+"}),O&&e.jsx(be.NiceButton,{size:"sm",variant:H?"primary":"ghost",onClick:()=>v(a=>!a),title:S("docEditor.find","Find & Replace (Ctrl+F)"),children:"??"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>T(a=>!a),title:S("docEditor.shortcuts","Keyboard shortcuts"),children:"?"}),k&&e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:ze,children:S("docEditor.export","Export HTML")})]}),e.jsx("input",{ref:A,type:"file",accept:"image/*,video/*",style:{display:"none"},onChange:Ae}),H&&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 var(--border-color, #ddd)"},children:[e.jsx(be.NiceTextInput,{size:"sm",placeholder:S("docEditor.findPlaceholder","Find..."),value:c,onChange:D,style:{flex:1,maxWidth:200}}),e.jsx(be.NiceTextInput,{size:"sm",placeholder:S("docEditor.replacePlaceholder","Replace..."),value:x,onChange:m,style:{flex:1,maxWidth:200}}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:Oe,title:S("docEditor.findPrev","Previous"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:Ie,title:S("docEditor.findNext","Next"),children:"?"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:Ke,title:S("docEditor.replaceOne","Replace"),disabled:o,children:S("docEditor.replace","Replace")}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:Ye,title:S("docEditor.replaceAll","Replace all"),disabled:o,children:S("docEditor.replaceAllBtn","All")}),e.jsx("span",{style:{fontSize:"0.75em",color:"var(--text-muted, #666)"},children:r.length>0?`${p+1}/${r.length}`:"0/0"}),e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>v(!1),children:"?"})]}),u&&e.jsx("div",{className:"nice-doc-editor__shortcuts-overlay",style:{position:"fixed",inset:0,background:"var(--nice-overlay-40, rgba(0, 0, 0, 0.4))",zIndex:9999,display:"flex",alignItems:"center",justifyContent:"center"},onClick:()=>T(!1),children:e.jsxs("div",{style:{background:"var(--bg-primary, #fff)",borderRadius:8,padding:24,maxWidth:420,width:"90%",boxShadow:"0 8px 32px var(--nice-overlay-20, rgba(0, 0, 0, 0.2))"},onClick:a=>a.stopPropagation(),children:[e.jsx("h3",{style:{margin:"0 0 12px"},children:S("docEditor.shortcutsTitle","Keyboard Shortcuts")}),e.jsx("table",{style:{width:"100%",fontSize:"0.875em",borderCollapse:"collapse"},children:e.jsx("tbody",{children:[["Ctrl+B",S("docEditor.bold","Bold")],["Ctrl+I",S("docEditor.italic","Italic")],["Ctrl+U",S("docEditor.underline","Underline")],["Ctrl+E",S("docEditor.strikethrough","Strikethrough")],["Ctrl+D",S("docEditor.duplicate","Duplicate block")],["Ctrl+Z",S("docEditor.undo","Undo")],["Ctrl+Y",S("docEditor.redo","Redo")],["Ctrl+F",S("docEditor.find","Find & Replace")],["Enter",S("docEditor.newBlock","New block")],["Backspace",S("docEditor.deleteEmpty","Delete empty block")],["Alt+?",S("docEditor.moveUp","Move block up")],["Alt+?",S("docEditor.moveDown","Move block down")],["Tab",S("docEditor.indent","Indent")],["Shift+Tab",S("docEditor.outdent","Outdent")],["/",S("docEditor.slashCmd","Slash commands")]].map(([a,E])=>e.jsxs("tr",{style:{borderBottom:"1px solid var(--border-color, #eee)"},children:[e.jsx("td",{style:{padding:"4px 8px",fontFamily:"monospace",fontWeight:600},children:a}),e.jsx("td",{style:{padding:"4px 8px"},children:E})]},a))})}),e.jsx("div",{style:{textAlign:"right",marginTop:12},children:e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>T(!1),children:S("docEditor.close","Close")})})]})}),e.jsxs("div",{style:{display:"flex",gap:0},children:[_&&Le.length>0&&e.jsxs("nav",{className:"nice-doc-editor__toc",style:{width:200,minWidth:160,borderRight:"1px solid var(--border-color, #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:"var(--text-muted, #999)"},children:S("docEditor.toc","Contents")}),Le.map(a=>e.jsx("div",{style:{padding:"3px 8px",paddingLeft:8+(a.level-1)*12,cursor:"pointer",borderRadius:4,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",background:a.idx===N?"var(--nice-primary-bg, #e8f0fe)":void 0},onClick:()=>j(a.idx),title:a.text,children:a.text||S("docEditor.untitled","Untitled")},a.idx))]}),e.jsx("div",{className:"nice-doc-editor__body",style:{flex:1},children:y.map((a,E)=>e.jsxs("div",{className:`nice-doc-editor__block nice-doc-editor__block--${a.type} ${E===N?"nice-doc-editor__block--focused":""} ${ee===E?"nice-doc-editor__block--drop-target":""} ${a.locked?"nice-doc-editor__block--locked":""}`,onClick:()=>j(E),onContextMenu:X=>Se(X,E),draggable:!o&&!a.locked,onDragStart:X=>Ee(X,E),onDragOver:X=>De(X,E),onDrop:X=>Te(X,E),onDragEnd:()=>{ge(null),R(null)},style:{opacity:ce===E?.4:1,marginLeft:(a.indent??0)*24},children:[!o&&!a.locked&&e.jsx("div",{className:"nice-doc-editor__block-handle",title:S("docEditor.drag","Drag to reorder"),children:"?"}),a.locked&&e.jsx("span",{className:"nice-doc-editor__lock-icon",style:{position:"absolute",top:2,right:4,fontSize:"0.7em",opacity:.5},children:"??"}),a.type==="divider"?e.jsx("hr",{className:"nice-doc-editor__divider"}):a.type==="pageBreak"?e.jsxs("div",{className:"nice-doc-editor__page-break",style:{borderTop:"2px dashed var(--nice-border, #ccc)",textAlign:"center",padding:4,fontSize:"0.75em",color:"var(--text-muted, #999)"},children:["� ",S("docEditor.pageBreak","Page Break")," �"]}):a.type==="image"||a.type==="video"?e.jsx("div",{className:"nice-doc-editor__media-block",children:a.src?a.type==="image"?e.jsx("img",{src:a.src,alt:a.alt??"",className:"nice-doc-editor__image",style:{maxWidth:"100%"}}):e.jsx("video",{src:a.src,controls:!0,className:"nice-doc-editor__video",style:{maxWidth:"100%"}}):!o&&e.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center"},children:[e.jsx(be.NiceTextInput,{size:"sm",placeholder:S("docEditor.mediaUrl",a.type==="image"?"Image URL":"Video URL"),value:a.src??"",onChange:X=>q(E,{src:X})}),L&&e.jsx(be.NiceButton,{size:"sm",variant:"ghost",onClick:()=>{j(E),A.current?.click()},children:"??"})]})}):a.type==="callout"?e.jsxs("div",{className:"nice-doc-editor__callout",style:{display:"flex",gap:8,padding:"8px 12px",background:a.bgColor??"#f0f7ff",borderRadius:4,color:a.color},children:[e.jsx("span",{style:{fontSize:"1.2em"},children:a.icon??"??"}),e.jsx("div",{ref:X=>{X&&$.current.set(a.id,X)},className:"nice-doc-editor__content",contentEditable:!o&&!a.locked,suppressContentEditableWarning:!0,onInput:X=>ke(X,E),onFocus:()=>j(E),onKeyDown:X=>ve(X,E),"data-placeholder":S("docEditor.calloutPlaceholder","Callout text..."),role:"textbox","aria-multiline":"true",style:{flex:1,outline:"none"},children:a.content})]}):a.type==="toggle"?e.jsxs("details",{open:a.open,className:"nice-doc-editor__toggle",onToggle:X=>q(E,{open:X.target.open}),children:[e.jsx("summary",{style:{cursor:"pointer",fontWeight:500},children:a.content.split(`
417
+ `)[0]||S("docEditor.toggleTitle","Toggle")}),e.jsx("div",{ref:X=>{X&&$.current.set(a.id,X)},className:"nice-doc-editor__content",contentEditable:!o&&!a.locked,suppressContentEditableWarning:!0,onInput:X=>ke(X,E),onFocus:()=>j(E),onKeyDown:X=>ve(X,E),role:"textbox","aria-multiline":"true",style:{padding:"4px 0"},children:a.content.split(`
418
+ `).slice(1).join(`
419
+ `)})]}):a.type==="code"?e.jsxs("div",{className:"nice-doc-editor__code-block",style:{position:"relative"},children:[!o&&e.jsx(be.NiceTextInput,{size:"sm",value:a.language??"",onChange:X=>q(E,{language:X}),placeholder:"Language",style:{position:"absolute",top:4,right:4,width:80,opacity:.7}}),e.jsx("pre",{ref:X=>{X&&$.current.set(a.id,X)},className:"nice-doc-editor__content",contentEditable:!o&&!a.locked,suppressContentEditableWarning:!0,onInput:X=>ke(X,E),onFocus:()=>j(E),onKeyDown:X=>ve(X,E),role:"textbox","aria-multiline":"true",style:{fontFamily:"monospace",background:"var(--bg-elevated, #1e1e1e)",color:"var(--text-secondary, #d4d4d4)",padding:12,borderRadius:4,overflow:"auto"},children:a.content})]}):e.jsxs("div",{style:{position:"relative"},children:[e.jsx("div",{ref:X=>{X&&$.current.set(a.id,X)},className:"nice-doc-editor__content",contentEditable:!o&&!a.locked,suppressContentEditableWarning:!0,style:{textAlign:a.align,fontWeight:a.bold?"bold":void 0,fontStyle:a.italic?"italic":void 0,textDecoration:[a.underline?"underline":"",a.strikethrough?"line-through":""].filter(Boolean).join(" ")||void 0,color:a.color,backgroundColor:a.bgColor},onInput:X=>ke(X,E),onFocus:()=>j(E),onKeyDown:X=>ve(X,E),"data-placeholder":!a.content&&C?C:void 0,role:"textbox","aria-multiline":"true",children:a.content}),ne&&E===N&&ae.length>0&&e.jsx("ul",{className:"nice-doc-editor__slash-menu",style:{position:"absolute",left:0,top:"100%",zIndex:100,background:"var(--bg-primary, #fff)",border:"1px solid var(--border-color, #ddd)",borderRadius:6,boxShadow:"0 4px 16px var(--nice-overlay-12, rgba(0, 0, 0, 0.12))",listStyle:"none",margin:0,padding:4,minWidth:180,maxHeight:240,overflow:"auto"},children:ae.map((X,oe)=>e.jsxs("li",{className:oe===ye?"nice-doc-editor__slash-item--active":"",style:{padding:"6px 10px",cursor:"pointer",borderRadius:4,display:"flex",gap:8,alignItems:"center",background:oe===ye?"var(--nice-primary-bg, #e8f0fe)":void 0},onMouseDown:le=>{le.preventDefault(),_e(X)},onMouseEnter:()=>xe(oe),children:[e.jsx("span",{style:{width:24,textAlign:"center"},children:X.icon}),e.jsx("span",{children:X.label})]},`${X.type}-${X.label}`))})]})]},a.id))})]}),pe&&e.jsxs("div",{className:"nice-doc-editor__ctx-menu",style:{position:"fixed",left:pe.x,top:pe.y,zIndex:1e3,background:"var(--bg-primary, #fff)",border:"1px solid var(--border-color, #ddd)",borderRadius:6,boxShadow:"0 4px 16px var(--nice-overlay-12, rgba(0, 0, 0, 0.12))",padding:4,minWidth:160},children:[e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{de(pe.idx),je(null)},children:"? Duplicate"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{re(pe.idx),je(null)},children:"+ Insert below"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{se(pe.idx,-1),je(null)},children:"? Move up"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{se(pe.idx,1),je(null)},children:"? Move down"}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer"},onClick:()=>{q(pe.idx,{locked:!y[pe.idx]?.locked}),je(null)},children:y[pe.idx]?.locked?"?? Unlock":"?? Lock"}),e.jsx("hr",{style:{margin:"2px 0",border:"none",borderTop:"1px solid var(--border-color, #eee)"}}),e.jsx("div",{style:{padding:"6px 12px",cursor:"pointer",color:"var(--nice-danger-dark, #d32f2f)"},onClick:()=>{I(pe.idx),je(null)},children:"?? Delete"})]}),K&&Q&&e.jsxs("div",{className:"nice-doc-editor__footer",style:{padding:"4px 12px",fontSize:"0.75em",color:"var(--text-muted, #666)",borderTop:"1px solid var(--border-color, #eee)",display:"flex",gap:16},children:[e.jsxs("span",{children:[Q.words," ",S("docEditor.words","words")]}),e.jsxs("span",{children:[Q.chars," ",S("docEditor.chars","characters")]}),e.jsxs("span",{children:[y.length," ",S("docEditor.blocks","blocks")]}),e.jsxs("span",{children:["~",Q.readingTime," ",S("docEditor.readingTime","min read")]})]})]})});yn.displayName="NiceDocumentEditor";const Ai=["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"},xn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_={},onChange:O,fields:F=Ai,placeholders:Z={},countries:B,layout:V="vertical",countryFirst:f=!1,validatePostalCode:w},S)=>{const M=te.Zs(K,L),G=M==="hidden";M==="disabled"&&(l=!0),M==="readOnly"&&(h=!0);const{t:y}=te.$o(),N=te.Hs(L),j=n.useCallback((v,c)=>{O?.({..._,[v]:c})},[_,O]),$=n.useMemo(()=>{if(w&&_.postalCode)return w(_.postalCode,_.country)},[w,_.postalCode,_.country]),A=n.useMemo(()=>f&&F.includes("country")?["country",...F.filter(v=>v!=="country")]:F,[F,f]),H=`nice-address nice-address--${V} nice-size-${C}`;return G?null:e.jsxs("div",{ref:S,id:N,className:`${H}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,role:"group","aria-label":t??y("address","Address"),children:[t&&e.jsxs("label",{className:"nice-address__label",children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-address__fields",children:A.map(v=>v==="country"&&B?e.jsxs("div",{className:`nice-address__field nice-address__field--${v}`,children:[e.jsx("label",{className:"nice-address__field-label",children:y(v,Je[v])}),e.jsxs("select",{className:"nice-input nice-select",value:_.country??"",onChange:c=>j("country",c.target.value),disabled:l,"aria-label":y(v,Je[v]),children:[e.jsx("option",{value:"",children:Z.country??y("selectCountry","— Select country —")}),B.map(c=>e.jsx("option",{value:c.code,children:c.name},c.code))]})]},v):e.jsxs("div",{className:`nice-address__field nice-address__field--${v}`,children:[e.jsx("label",{className:"nice-address__field-label",children:y(v,Je[v])}),e.jsx("input",{className:`nice-input${v==="postalCode"&&$?" nice-input--error":""}`,type:"text",name:k?`${k}.${v}`:v,value:_[v]??"",onChange:c=>j(v,c.target.value),placeholder:Z[v]??"",disabled:l,readOnly:h,"aria-label":y(v,Je[v])}),v==="postalCode"&&$&&e.jsx("span",{className:"nice-error-text",children:$})]},v))}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});xn.displayName="NiceAddressInput";const Di=[{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:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_,onChange:O,onBlur:F,currency:Z="PLN",onCurrencyChange:B,currencies:V=Di,useMinorUnit:f=!1,min:w,max:S,locale:M,placeholder:G,showCurrencySelector:y},N)=>{const j=te.Zs(K,L),$=j==="hidden";j==="disabled"&&(l=!0),j==="readOnly"&&(h=!0);const{t:A}=te.$o(),H=te.Hs(L),v=n.useMemo(()=>V.find(d=>d.code===Z)??V[0],[Z,V]),c=v?.decimals??2,D=n.useMemo(()=>_==null?"":(f?_/Math.pow(10,c):_).toFixed(c),[_,f,c]),x=n.useCallback(d=>{const p=d.replace(/[^\d.,\-]/g,"").replace(",",".");if(p===""||p==="-"){O?.(null);return}const g=parseFloat(p);if(isNaN(g))return;const u=f?Math.round(g*Math.pow(10,c)):g;w!=null&&u<w||S!=null&&u>S||O?.(u)},[O,f,c,w,S]),m=y??V.length>1,r=n.useMemo(()=>{if(_==null)return"";const d=f?_/Math.pow(10,c):_;try{return new Intl.NumberFormat(M,{style:"currency",currency:v?.code??"USD",minimumFractionDigits:c}).format(d)}catch{return`${d.toFixed(c)} ${v?.code}`}},[_,f,c,M,v]);return $?null:e.jsxs("div",{ref:N,id:H,className:`nice-currency nice-size-${C}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-currency__label",children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-currency__row",children:[m&&e.jsx("select",{className:"nice-currency__select nice-select",value:Z,onChange:d=>B?.(d.target.value),disabled:l,"aria-label":A("currency","Currency"),children:V.map(d=>e.jsxs("option",{value:d.code,children:[d.symbol," ",d.code]},d.code))}),!m&&e.jsx("span",{className:"nice-currency__symbol",children:v?.symbol}),e.jsx("input",{className:"nice-input nice-currency__amount",type:"text",inputMode:"decimal",name:k,value:D,onChange:d=>x(d.target.value),onBlur:F,placeholder:G??`0.${"0".repeat(c)}`,disabled:l,readOnly:h,"aria-label":A("amount","Amount")})]}),r&&_!=null&&e.jsx("span",{className:"nice-currency__formatted",children:r}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});bn.displayName="NiceCurrencyInput";let Li=1;function zi(t){return{id:`new-${Li++}`,description:"",quantity:1,unitPrice:0,vatRate:t,discount:0,unit:"szt."}}function jn(t){const o=t.quantity*t.unitPrice*(1-(t.discount??0)/100),s=Math.round(o*100)/100,l=Math.round(s*(t.vatRate??0)/100*100)/100;return{...t,netAmount:s,grossAmount:s+l}}function Pi(t){const i=t.map(jn),o=i.reduce((k,L)=>k+(L.netAmount??0),0),s=i.reduce((k,L)=>k+(L.grossAmount??0),0),l=s-o,h=new Map;for(const k of i){const L=k.vatRate??0,P=h.get(L)??{base:0,amount:0};P.base+=k.netAmount??0,P.amount+=(k.grossAmount??0)-(k.netAmount??0),h.set(L,P)}const C=Array.from(h.entries()).map(([k,L])=>({rate:k,base:Math.round(L.base*100)/100,amount:Math.round(L.amount*100)/100}));return{totalNet:Math.round(o*100)/100,totalVat:Math.round(l*100)/100,totalGross:Math.round(s*100)/100,vatBreakdown:C}}const vn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_=[],onChange:O,onTotalsChange:F,currencySymbol:Z="zł",defaultVatRate:B=23,vatRates:V=[0,5,8,23],units:f=["szt.","h","kg","m","usł."],showDiscount:w=!0,showUnit:S=!0,showTotals:M=!0,editable:G=!0,maxLines:y},N)=>{const j=te.Zs(K,L),$=j==="hidden";j==="disabled"&&(l=!0),j==="readOnly"&&(h=!0);const{t:A}=te.$o(),H=te.Hs(L),v=n.useMemo(()=>_.map(jn),[_]),c=n.useMemo(()=>Pi(_),[_]);n.useEffect(()=>{F?.(c)},[c,F]);const D=n.useCallback((d,p,g)=>{const u=[..._];u[d]={...u[d],[p]:g},O?.(u)},[_,O]),x=n.useCallback(()=>{y&&_.length>=y||O?.([..._,zi(B)])},[_,O,B,y]),m=n.useCallback(d=>{O?.(_.filter((p,g)=>g!==d))},[_,O]),r=d=>`${d.toFixed(2)} ${Z}`;return $?null:e.jsxs("div",{ref:N,id:H,className:`nice-invoice-lines nice-size-${C}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-invoice-lines__label",children:[t,s&&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:A("description","Description")}),e.jsx("th",{className:"nice-il__th-qty",children:A("qty","Qty")}),S&&e.jsx("th",{className:"nice-il__th-unit",children:A("unit","Unit")}),e.jsx("th",{className:"nice-il__th-price",children:A("unitPrice","Unit Price")}),w&&e.jsx("th",{className:"nice-il__th-disc",children:A("discount","Disc %")}),e.jsx("th",{className:"nice-il__th-vat",children:A("vat","VAT %")}),e.jsx("th",{className:"nice-il__th-net",children:A("net","Net")}),e.jsx("th",{className:"nice-il__th-gross",children:A("gross","Gross")}),G&&!h&&e.jsx("th",{className:"nice-il__th-actions"})]})}),e.jsx("tbody",{children:v.map((d,p)=>e.jsxs("tr",{children:[e.jsx("td",{className:"nice-il__cell-num",children:p+1}),e.jsx("td",{className:"nice-il__cell-desc",children:e.jsx("input",{className:"nice-input",type:"text",value:d.description,onChange:g=>D(p,"description",g.target.value),disabled:l,readOnly:h,placeholder:A("itemDescription","Item description")})}),e.jsx("td",{className:"nice-il__cell-qty",children:e.jsx("input",{className:"nice-input",type:"number",value:d.quantity,onChange:g=>D(p,"quantity",parseFloat(g.target.value)||0),disabled:l,readOnly:h,min:0,step:"any"})}),S&&e.jsx("td",{className:"nice-il__cell-unit",children:e.jsx("select",{className:"nice-select",value:d.unit??"",onChange:g=>D(p,"unit",g.target.value),disabled:l,children:f.map(g=>e.jsx("option",{value:g,children:g},g))})}),e.jsx("td",{className:"nice-il__cell-price",children:e.jsx("input",{className:"nice-input",type:"number",value:d.unitPrice,onChange:g=>D(p,"unitPrice",parseFloat(g.target.value)||0),disabled:l,readOnly:h,min:0,step:"0.01"})}),w&&e.jsx("td",{className:"nice-il__cell-disc",children:e.jsx("input",{className:"nice-input",type:"number",value:d.discount??0,onChange:g=>D(p,"discount",parseFloat(g.target.value)||0),disabled:l,readOnly:h,min:0,max:100})}),e.jsx("td",{className:"nice-il__cell-vat",children:e.jsx("select",{className:"nice-select",value:d.vatRate??0,onChange:g=>D(p,"vatRate",parseInt(g.target.value,10)),disabled:l,children:V.map(g=>e.jsxs("option",{value:g,children:[g,"%"]},g))})}),e.jsx("td",{className:"nice-il__cell-net",children:r(d.netAmount??0)}),e.jsx("td",{className:"nice-il__cell-gross",children:r(d.grossAmount??0)}),G&&!h&&e.jsx("td",{className:"nice-il__cell-actions",children:e.jsx("button",{type:"button",className:"nice-btn nice-btn--icon nice-btn--sm",onClick:()=>m(p),disabled:l,title:A("remove","Remove"),children:"✕"})})]},d.id))})]}),G&&!h&&e.jsxs("button",{type:"button",className:"nice-btn nice-btn--outlined nice-btn--sm nice-invoice-lines__add",onClick:x,disabled:l||y!=null&&_.length>=y,children:["+ ",A("addLine","Add line")]}),M&&e.jsxs("div",{className:"nice-invoice-lines__totals",children:[e.jsxs("div",{className:"nice-il__total-row",children:[e.jsxs("span",{children:[A("totalNet","Net total"),":"]}),e.jsx("span",{className:"nice-il__total-value",children:r(c.totalNet)})]}),c.vatBreakdown.map(d=>e.jsxs("div",{className:"nice-il__total-row nice-il__total-row--vat",children:[e.jsxs("span",{children:["VAT ",d.rate,"%:"]}),e.jsx("span",{className:"nice-il__total-value",children:r(d.amount)})]},d.rate)),e.jsxs("div",{className:"nice-il__total-row nice-il__total-row--gross",children:[e.jsxs("span",{children:[A("totalGross","Gross total"),":"]}),e.jsx("span",{className:"nice-il__total-value nice-il__total-value--gross",children:r(c.totalGross)})]})]}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});vn.displayName="NiceInvoiceLineEditor";const _n=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_=[],onChange:O,contacts:F=[],onSearch:Z,searchDelay:B=300,multiple:V=!1,placeholder:f,onContactClick:w,maxSelections:S},M)=>{const G=te.Zs(K,L),y=G==="hidden";G==="disabled"&&(l=!0),G==="readOnly"&&(h=!0);const{t:N}=te.$o(),j=te.Hs(L),[$,A]=n.useState(""),[H,v]=n.useState([]),[c,D]=n.useState(!1),[x,m]=n.useState(!1),r=n.useMemo(()=>{const u=[...F,...H],T=new Map(u.map(Y=>[Y.id,Y]));return _.map(Y=>T.get(Y)).filter(Boolean)},[_,F,H]),d=n.useCallback(u=>{if(A(u),u.length<1){v([]),D(!1);return}if(Z){m(!0);const z=setTimeout(async()=>{const J=await Z(u);v(J),D(!0),m(!1)},B);return()=>clearTimeout(z)}const T=u.toLowerCase(),Y=F.filter(z=>z.name.toLowerCase().includes(T)||z.email?.toLowerCase().includes(T)||z.phone?.includes(u));v(Y),D(!0)},[Z,F,B]),p=n.useCallback(u=>{if(V)if(_.includes(u.id))O?.(_.filter(T=>T!==u.id));else{if(S&&_.length>=S)return;O?.([..._,u.id])}else O?.([u.id]),D(!1),A("")},[_,O,V,S]),g=n.useCallback(u=>{O?.(_.filter(T=>T!==u))},[_,O]);return y?null:e.jsxs("div",{ref:M,id:j,className:`nice-contact-picker nice-size-${C}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-contact-picker__label",children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),r.length>0&&e.jsx("div",{className:"nice-contact-picker__chips",children:r.map(u=>e.jsxs("span",{className:"nice-contact-picker__chip",onClick:()=>w?.(u),children:[u.avatarUrl&&e.jsx("img",{src:u.avatarUrl,alt:"",className:"nice-contact-picker__chip-avatar"}),e.jsx("span",{children:u.name}),!h&&e.jsx("button",{type:"button",className:"nice-contact-picker__chip-remove",onClick:T=>{T.stopPropagation(),g(u.id)},disabled:l,children:"×"})]},u.id))}),!h&&e.jsxs("div",{className:"nice-contact-picker__search",children:[e.jsx("input",{className:"nice-input",type:"text",value:$,onChange:u=>d(u.target.value),onFocus:()=>$.length>0&&D(!0),onBlur:()=>setTimeout(()=>D(!1),200),placeholder:f??N("searchContacts","Search contacts…"),disabled:l,"aria-label":N("searchContacts","Search contacts")}),x&&e.jsx("span",{className:"nice-contact-picker__spinner",children:"⏳"})]}),c&&H.length>0&&e.jsx("div",{className:"nice-contact-picker__dropdown",role:"listbox",children:H.map(u=>e.jsxs("div",{className:`nice-contact-picker__option${_.includes(u.id)?" nice-contact-picker__option--selected":""}`,role:"option","aria-selected":_.includes(u.id),onClick:()=>p(u),children:[u.avatarUrl&&e.jsx("img",{src:u.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:u.name}),u.subtitle&&e.jsx("span",{className:"nice-contact-picker__option-subtitle",children:u.subtitle}),u.email&&e.jsx("span",{className:"nice-contact-picker__option-email",children:u.email})]}),u.type&&e.jsx("span",{className:"nice-contact-picker__option-type",children:u.type==="person"?"👤":"🏢"})]},u.id))}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});_n.displayName="NiceContactPicker";const Hi=["highlight","underline","strikethrough","freehand","text","rect","arrow"],Fi={highlight:"🖍️",underline:"⎁",strikethrough:"S̶",freehand:"✏️",text:"T",rect:"▭",arrow:"→",stamp:"🔏"},kn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",id:k,className:L,style:P,accessMode:W,src:K,annotations:_=[],onAnnotationsChange:O,activeTool:F,onToolChange:Z,currentPage:B=1,onPageChange:V,totalPages:f=1,defaultColor:w="var(--nice-warning, #ffff00)",tools:S=Hi,author:M,zoom:G=1,onZoomChange:y,onAnnotationClick:N,onAnnotationDelete:j},$)=>{const A=te.Zs(W,k),H=A==="hidden";A==="disabled"&&(l=!0),A==="readOnly"&&(h=!0);const{t:v}=te.$o(),c=te.Hs(k),D=_.filter(r=>r.page===B),x=n.useCallback(r=>{Z?.(F===r?null:r)},[F,Z]),m=n.useCallback(r=>{if(h||!F||F==="freehand")return;const d=r.currentTarget.getBoundingClientRect(),p=(r.clientX-d.left)/d.width,g=(r.clientY-d.top)/d.height,u={id:`ann-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,tool:F,page:B,x:p,y:g,color:w,author:M,createdAt:new Date().toISOString(),text:F==="text"?"":void 0};O?.([..._,u])},[h,F,B,w,M,_,O]);return H?null:e.jsxs("div",{ref:$,id:c,className:`nice-pdf-annotation nice-size-${C}${L?` ${L}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:P,children:[t&&e.jsxs("div",{className:"nice-pdf-annotation__label",children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),!h&&e.jsxs("div",{className:"nice-pdf-annotation__toolbar",children:[S.map(r=>e.jsx("button",{type:"button",className:`nice-pdf-annotation__tool-btn${F===r?" nice-pdf-annotation__tool-btn--active":""}`,onClick:()=>x(r),disabled:l,title:v(`pdfTool_${r}`,r),children:Fi[r]},r)),e.jsx("span",{className:"nice-pdf-annotation__toolbar-sep"}),e.jsx("button",{type:"button",disabled:l,onClick:()=>y?.(Math.max(.25,G-.25)),title:v("zoomOut","Zoom out"),children:"−"}),e.jsxs("span",{className:"nice-pdf-annotation__zoom",children:[Math.round(G*100),"%"]}),e.jsx("button",{type:"button",disabled:l,onClick:()=>y?.(Math.min(4,G+.25)),title:v("zoomIn","Zoom in"),children:"+"})]}),e.jsxs("div",{className:"nice-pdf-annotation__viewport",style:{transform:`scale(${G})`,transformOrigin:"top left"},children:[e.jsx("iframe",{src:K,className:"nice-pdf-annotation__frame",title:v("pdfViewer","PDF Viewer")}),e.jsx("div",{className:"nice-pdf-annotation__layer",onClick:m,children:D.map(r=>e.jsxs("div",{className:`nice-pdf-annotation__mark nice-pdf-annotation__mark--${r.tool}`,style:{left:`${r.x*100}%`,top:`${r.y*100}%`,backgroundColor:r.color},onClick:d=>{d.stopPropagation(),N?.(r)},title:r.text??r.tool,children:[r.text&&e.jsx("span",{children:r.text}),!h&&e.jsx("button",{type:"button",className:"nice-pdf-annotation__mark-delete",onClick:d=>{d.stopPropagation(),j?.(r.id)},children:"×"})]},r.id))})]}),e.jsxs("div",{className:"nice-pdf-annotation__pager",children:[e.jsx("button",{type:"button",disabled:l||B<=1,onClick:()=>V?.(B-1),children:"◀"}),e.jsx("span",{children:v("pageOf","{page} / {total}").replace("{page}",String(B)).replace("{total}",String(f))}),e.jsx("button",{type:"button",disabled:l||B>=f,onClick:()=>V?.(B+1),children:"▶"})]}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});kn.displayName="NicePDFAnnotationEditor";const wn=n.forwardRef(({label:t,helperText:i,error:o,disabled:s,readOnly:l,size:h="md",id:C,className:k,style:L,accessMode:P,pages:W,selectedPageId:K,content:_="",contentFormat:O="html",editing:F=!1,onPageSelect:Z,onContentChange:B,onSave:V,onCreatePage:f,onDeletePage:w,onEditToggle:S,onVersionHistory:M,sidebarWidth:G=260,sidebarCollapsed:y=!1,onSidebarToggle:N,searchable:j=!0,onSearch:$},A)=>{const H=te.Zs(P,C),v=H==="hidden";H==="disabled"&&(s=!0),H==="readOnly"&&(l=!0);const{t:c}=te.$o(),D=te.Hs(C),[x,m]=n.useState(""),[r,d]=n.useState(""),[p,g]=n.useState(!1),u=n.useMemo(()=>{const J=me=>{for(const U of me){if(U.id===K)return U;if(U.children){const ne=J(U.children);if(ne)return ne}}};return J(W)},[W,K]),T=n.useCallback(J=>{m(J),$?.(J)},[$]),Y=n.useCallback(()=>{r.trim()&&(f?.(K??null,r.trim()),d(""),g(!1))},[r,K,f]),z=(J,me=0)=>e.jsx("ul",{className:"nice-wiki__tree",style:{paddingLeft:me>0?16:0},children:J.map(U=>e.jsxs("li",{className:"nice-wiki__tree-item",children:[e.jsxs("div",{className:`nice-wiki__tree-node${U.id===K?" nice-wiki__tree-node--active":""}${U.isDraft?" nice-wiki__tree-node--draft":""}`,onClick:()=>Z?.(U),role:"treeitem","aria-selected":U.id===K,children:[e.jsx("span",{className:"nice-wiki__tree-icon",children:U.children?.length?"📁":"📄"}),e.jsx("span",{className:"nice-wiki__tree-title",children:U.title}),U.isDraft&&e.jsx("span",{className:"nice-wiki__tree-draft",children:c("draft","Draft")})]}),U.children&&U.children.length>0&&z(U.children,me+1)]},U.id))});return v?null:e.jsxs("div",{ref:A,id:D,className:`nice-wiki nice-size-${h}${k?` ${k}`:""}${s?" nice-disabled":""}`,style:L,children:[!y&&e.jsxs("aside",{className:"nice-wiki__sidebar",style:{width:G},children:[e.jsxs("div",{className:"nice-wiki__sidebar-header",children:[e.jsx("span",{className:"nice-wiki__sidebar-title",children:t??c("wiki","Wiki")}),N&&e.jsx("button",{type:"button",className:"nice-wiki__sidebar-toggle",onClick:()=>N(!0),children:"«"})]}),j&&e.jsx("input",{type:"text",className:"nice-input nice-wiki__search",value:x,onChange:J=>T(J.target.value),placeholder:c("searchPages","Search pages…"),disabled:s}),e.jsx("div",{className:"nice-wiki__page-tree",role:"tree",children:z(W)}),f&&!l&&e.jsx("div",{className:"nice-wiki__sidebar-footer",children:p?e.jsxs("div",{className:"nice-wiki__create-form",children:[e.jsx("input",{type:"text",className:"nice-input",value:r,onChange:J=>d(J.target.value),placeholder:c("pageTitle","Page title"),onKeyDown:J=>J.key==="Enter"&&Y(),disabled:s}),e.jsx("button",{type:"button",disabled:s||!r.trim(),onClick:Y,children:"✓"}),e.jsx("button",{type:"button",onClick:()=>g(!1),children:"✕"})]}):e.jsxs("button",{type:"button",className:"nice-wiki__add-page",onClick:()=>g(!0),disabled:s,children:["+ ",c("newPage","New page")]})})]}),y&&N&&e.jsx("button",{type:"button",className:"nice-wiki__sidebar-expand",onClick:()=>N(!1),children:"»"}),e.jsx("main",{className:"nice-wiki__content",children:u?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"nice-wiki__content-header",children:[e.jsx("h1",{className:"nice-wiki__page-title",children:u.title}),e.jsxs("div",{className:"nice-wiki__content-actions",children:[S&&!l&&e.jsx("button",{type:"button",disabled:s,onClick:()=>S(!F),children:F?c("preview","Preview"):c("edit","Edit")}),M&&e.jsx("button",{type:"button",disabled:s,onClick:()=>M(u.id),children:c("history","History")}),w&&!l&&e.jsx("button",{type:"button",className:"nice-btn--danger",disabled:s,onClick:()=>w(u.id),children:c("delete","Delete")})]})]}),u.updatedAt&&e.jsxs("div",{className:"nice-wiki__page-meta",children:[u.updatedBy&&e.jsxs("span",{children:[c("lastEditedBy","Last edited by")," ",u.updatedBy]}),e.jsx("span",{children:new Date(u.updatedAt).toLocaleDateString()})]}),F?e.jsxs("div",{className:"nice-wiki__editor",children:[e.jsx("textarea",{className:"nice-wiki__editor-textarea",value:_,onChange:J=>B?.(J.target.value),disabled:s}),V&&e.jsx("button",{type:"button",className:"nice-btn nice-btn--primary",disabled:s,onClick:()=>V(u.id,_),children:c("save","Save")})]}):e.jsx("div",{className:"nice-wiki__viewer",children:O==="html"?e.jsx("div",{className:"nice-wiki__html",dangerouslySetInnerHTML:{__html:te.As(_)}}):e.jsx("pre",{className:"nice-wiki__markdown",children:_})})]}):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.")})})}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});wn.displayName="NiceWiki";const Bi=[{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"}],Nn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_="",onChange:O,countryCode:F="PL",onCountryChange:Z,countries:B=Bi,showCountrySelector:V=!0,autoPrefixVat:f=!0,validationResult:w,onValidateRequest:S,placeholder:M},G)=>{const y=te.Zs(K,L),N=y==="hidden";y==="disabled"&&(l=!0),y==="readOnly"&&(h=!0);const{t:j}=te.$o(),$=te.Hs(L),A=n.useMemo(()=>B.find(x=>x.code===F)??B[0],[B,F]),H=n.useCallback(x=>{let m=x.toUpperCase();return A&&m.startsWith(A.prefix)&&(m=m.slice(A.prefix.length)),A?A.pattern.test(m):m.length>0},[A]),v=n.useCallback(x=>{const m=x.target.value.replace(/\s/g,"");O?.(m,H(m))},[O,H]),c=f&&_&&A&&!_.toUpperCase().startsWith(A.prefix)?`${A.prefix}${_}`:_,D=H(_);return N?null:e.jsxs("div",{ref:G,id:$,className:`nice-vat-input nice-size-${C}${P?` ${P}`:""}${o||!D&&_.length>0?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-vat-input__label",htmlFor:`${$}-input`,children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("div",{className:"nice-vat-input__row",children:[V&&e.jsx("select",{className:"nice-vat-input__country",value:F,onChange:x=>Z?.(x.target.value),disabled:l||h,children:B.map(x=>e.jsx("option",{value:x.code,children:x.prefix},x.code))}),e.jsx("input",{id:`${$}-input`,className:"nice-input nice-vat-input__field",type:"text",name:k,value:_,onChange:v,readOnly:h,disabled:l,placeholder:M??A?.placeholder,required:s,"aria-invalid":!D&&_.length>0}),S&&_.length>0&&e.jsx("button",{type:"button",className:"nice-vat-input__verify",disabled:l||!D,onClick:()=>S(f?c:_,F),title:j("verifyVat","Verify VAT number"),children:"🔍"})]}),w&&e.jsxs("div",{className:`nice-vat-input__result nice-vat-input__result--${w.valid?"valid":"invalid"}`,children:[w.valid?"✅":"❌"," ",w.companyName??w.error??(w.valid?j("vatValid","VAT number valid"):j("vatInvalid","VAT number invalid"))]}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});Nn.displayName="NiceVatInput";const Oi=[{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"}],Cn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_,onChange:O,rates:F,countryCode:Z,placeholder:B,showPercentage:V=!0},f)=>{const w=te.Zs(K,L),S=w==="hidden";w==="disabled"&&(l=!0),w==="readOnly"&&(h=!0);const{t:M}=te.$o(),G=te.Hs(L),y=n.useMemo(()=>{const j=F??Oi;return Z?j.filter($=>!$.countryCode||$.countryCode===Z):j},[F,Z]),N=n.useCallback(j=>{const $=j.target.value,A=y.find(H=>H.id===$);A&&O?.($,A)},[O,y]);return S?null:e.jsxs("div",{ref:f,id:G,className:`nice-tax-rate nice-size-${C}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-tax-rate__label",htmlFor:`${G}-select`,children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsxs("select",{id:`${G}-select`,className:"nice-select nice-tax-rate__select",name:k,value:_??"",onChange:N,disabled:l||h,required:s,children:[e.jsx("option",{value:"",disabled:!0,children:B??M("selectRate","Select rate…")}),y.map(j=>e.jsxs("option",{value:j.id,children:[j.label,V&&j.category!=="exempt"?` (${(j.rate*100).toFixed(0)}%)`:""]},j.id))]}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});Cn.displayName="NiceTaxRatePicker";const Ki={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)"},Sn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",name:k,id:L,className:P,style:W,accessMode:K,value:_,onChange:O,accounts:F,treeView:Z=!1,placeholder:B,searchable:V=!0,showType:f=!0,onSearch:w},S)=>{const M=te.Zs(K,L),G=M==="hidden";M==="disabled"&&(l=!0),M==="readOnly"&&(h=!0);const{t:y}=te.$o(),N=te.Hs(L),[j,$]=n.useState(""),[A,H]=n.useState(!1),v=n.useMemo(()=>{const r=d=>{for(const p of d){if(p.code===_)return p;if(p.children){const g=r(p.children);if(g)return g}}};return r(F)},[F,_]),c=n.useMemo(()=>{const r=[],d=p=>{for(const g of p)r.push(g),g.children&&d(g.children)};return d(F),r},[F]),D=n.useMemo(()=>{if(!j)return c;const r=j.toLowerCase();return c.filter(d=>d.code.toLowerCase().includes(r)||d.name.toLowerCase().includes(r))},[c,j]),x=n.useCallback(r=>{$(r),w?.(r),H(!0)},[w]),m=n.useCallback(r=>{O?.(r.code,r),H(!1),$("")},[O]);return G?null:e.jsxs("div",{ref:S,id:N,className:`nice-account-picker nice-size-${C}${P?` ${P}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:W,children:[t&&e.jsxs("label",{className:"nice-account-picker__label",htmlFor:`${N}-input`,children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-account-picker__control",children:V&&!h?e.jsx("input",{id:`${N}-input`,className:"nice-input",type:"text",value:A?j:v?`${v.code} — ${v.name}`:"",onChange:r=>x(r.target.value),onFocus:()=>{$(""),H(!0)},onBlur:()=>setTimeout(()=>H(!1),200),placeholder:B??y("searchAccount","Search account…"),disabled:l,required:s}):e.jsx("div",{className:"nice-account-picker__display",children:v?`${v.code} — ${v.name}`:B??y("selectAccount","Select account…")})}),A&&D.length>0&&e.jsx("div",{className:"nice-account-picker__dropdown",role:"listbox",children:D.map(r=>e.jsxs("div",{className:`nice-account-picker__option${r.code===_?" nice-account-picker__option--selected":""}${r.isActive===!1?" nice-account-picker__option--inactive":""}`,role:"option","aria-selected":r.code===_,onClick:()=>m(r),children:[f&&r.type&&e.jsx("span",{className:"nice-account-picker__type",style:{color:Ki[r.type]},title:r.type,children:"●"}),e.jsx("span",{className:"nice-account-picker__code",children:r.code}),e.jsx("span",{className:"nice-account-picker__name",children:r.name})]},r.code))}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});Sn.displayName="NiceAccountPicker";const Mn=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",id:k,className:L,style:P,accessMode:W,mode:K="manual",onScan:_,onModeChange:O,beepOnScan:F=!0,beepFrequency:Z=1800,beepDuration:B=150,placeholder:V,scanHistory:f=[],showHistory:w=!0,maxHistory:S=10,autoFocus:M=!0,onCameraFrame:G},y)=>{const N=te.Zs(W,k),j=N==="hidden";N==="disabled"&&(l=!0),N==="readOnly"&&(h=!0);const{t:$}=te.$o(),A=te.Hs(k),[H,v]=n.useState(""),c=n.useRef(null),D=n.useRef(null),x=n.useCallback(()=>{if(F)try{D.current||(D.current=new AudioContext);const d=D.current,p=d.createOscillator(),g=d.createGain();p.connect(g),g.connect(d.destination),p.frequency.value=Z,p.type="square",g.gain.value=.3,p.start(),p.stop(d.currentTime+B/1e3)}catch{}},[F,Z,B]),m=n.useCallback(()=>{H.trim()&&(x(),_?.({value:H.trim(),format:"manual",scannedAt:new Date}),v(""),c.current?.focus())},[H,_,x]),r=f.slice(0,S);return j?null:e.jsxs("div",{ref:y,id:A,className:`nice-scanner nice-size-${C}${L?` ${L}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:P,children:[t&&e.jsxs("div",{className:"nice-scanner__label",children:[t,s&&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:l,children:["📷 ",$("camera","Camera")]}),e.jsxs("button",{type:"button",className:`nice-scanner__mode-btn${K==="manual"?" nice-scanner__mode-btn--active":""}`,onClick:()=>O?.("manual"),disabled:l,children:["⌨️ ",$("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:$("cameraPlaceholder","Camera preview — connect scanner adapter")})]})})}),K==="manual"&&!h&&e.jsxs("div",{className:"nice-scanner__manual",children:[e.jsx("input",{ref:c,className:"nice-input nice-scanner__input",type:"text",value:H,onChange:d=>v(d.target.value),onKeyDown:d=>d.key==="Enter"&&m(),placeholder:V??$("enterCode","Enter or scan code…"),disabled:l,autoFocus:M}),e.jsx("button",{type:"button",className:"nice-scanner__submit",onClick:m,disabled:l||!H.trim(),children:"✓"})]}),w&&r.length>0&&e.jsxs("div",{className:"nice-scanner__history",children:[e.jsx("div",{className:"nice-scanner__history-label",children:$("recentScans","Recent scans")}),r.map((d,p)=>e.jsxs("div",{className:"nice-scanner__history-item",children:[e.jsx("span",{className:"nice-scanner__history-value",children:d.value}),d.format&&e.jsx("span",{className:"nice-scanner__history-format",children:d.format}),e.jsx("span",{className:"nice-scanner__history-time",children:d.scannedAt.toLocaleTimeString()})]},p))]}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});Mn.displayName="NiceScannerControl";const $n=n.forwardRef(({label:t,helperText:i,error:o,required:s,disabled:l,readOnly:h,size:C="md",id:k,className:L,style:P,accessMode:W,value:K="",onChange:_,onComplete:O,length:F=4,masked:Z=!0,showKeypad:B=!1,autoSubmit:V=!0,shake:f=!1,placeholderChar:w="·"},S)=>{const M=te.Zs(W,k),G=M==="hidden";M==="disabled"&&(l=!0),M==="readOnly"&&(h=!0);const{t:y}=te.$o(),N=te.Hs(k),j=n.useRef([]),[$,A]=n.useState(!1);n.useEffect(()=>{if(f){A(!0);const x=setTimeout(()=>A(!1),500);return()=>clearTimeout(x)}},[f]);const H=K.split("").slice(0,F);for(;H.length<F;)H.push("");const v=n.useCallback((x,m)=>{const r=[...H];r[x]=m;const d=r.join("");_?.(d),m&&x<F-1&&j.current[x+1]?.focus(),V&&d.length===F&&d.indexOf("")===-1&&O?.(d)},[H,F,_,O,V]),c=n.useCallback((x,m)=>{x.key==="Backspace"&&!H[m]&&m>0&&(j.current[m-1]?.focus(),v(m-1,"")),x.key==="ArrowLeft"&&m>0&&j.current[m-1]?.focus(),x.key==="ArrowRight"&&m<F-1&&j.current[m+1]?.focus()},[H,F,v]),D=n.useCallback(x=>{if(x==="clear"){_?.(""),j.current[0]?.focus();return}if(x==="backspace"){const m=K.slice(0,-1);_?.(m);const r=Math.max(0,m.length-1);j.current[r]?.focus();return}if(K.length<F){const m=K+x;_?.(m),m.length<F&&j.current[m.length]?.focus(),V&&m.length===F&&O?.(m)}},[K,F,_,O,V]);return G?null:e.jsxs("div",{ref:S,id:N,className:`nice-pin nice-size-${C}${$?" nice-pin--shake":""}${L?` ${L}`:""}${o?" nice-error":""}${l?" nice-disabled":""}`,style:P,children:[t&&e.jsxs("label",{className:"nice-pin__label",children:[t,s&&e.jsx("span",{className:"nice-required",children:"*"})]}),e.jsx("div",{className:"nice-pin__boxes",children:H.map((x,m)=>e.jsx("input",{ref:r=>{j.current[m]=r},className:"nice-pin__box",type:Z?"password":"text",inputMode:"numeric",maxLength:1,value:x,onChange:r=>{const d=r.target.value.replace(/\D/g,"");d.length<=1&&v(m,d)},onKeyDown:r=>c(r,m),disabled:l,readOnly:h,placeholder:w,"aria-label":`${y("digit","Digit")} ${m+1}`},m))}),B&&!h&&e.jsx("div",{className:"nice-pin__keypad",children:["1","2","3","4","5","6","7","8","9","clear","0","backspace"].map(x=>e.jsx("button",{type:"button",className:`nice-pin__key${x==="clear"||x==="backspace"?" nice-pin__key--action":""}`,onClick:()=>D(x),disabled:l,children:x==="clear"?"C":x==="backspace"?"⌫":x},x))}),i&&e.jsx("span",{className:"nice-helper-text",children:i}),o&&typeof o=="string"&&e.jsx("span",{className:"nice-error-text",children:o})]})});$n.displayName="NicePinCodeInput";exports.DEFAULT_ASPECT_RATIOS=mn;exports.EMOJI_DATA=nt;exports.GRADIENT_PRESETS=qt;exports.NICE_COLOR_PRESET_KEYS=Bn;exports.NiceAccountPicker=Sn;exports.NiceAddressInput=xn;exports.NiceCalendar=Zt;exports.NiceCodeDiffEditor=cn;exports.NiceCodeEditor=yt;exports.NiceCodeEditor$1=gi;exports.NiceCodeEditorAI=fi;exports.NiceColorPalette=Xt;exports.NiceContactPicker=_n;exports.NiceCropEditor=un;exports.NiceCurrencyInput=bn;exports.NiceDateRangeBox=Zn;exports.NiceDocumentEditor=yn;exports.NiceDropDownBox=Qn;exports.NiceEmojiPicker=dn;exports.NiceGradientPicker=Gt;exports.NiceHtmlEditor=ft;exports.NiceHtmlEditor$1=si;exports.NiceHtmlEditorAI=li;exports.NiceImageAnnotator=pn;exports.NiceImageEditor=gn;exports.NiceInputOtp=Jt;exports.NiceInvoiceLineEditor=vn;exports.NiceKnob=en;exports.NiceLookup=Wn;exports.NiceMarkdownEditor=hn;exports.NiceMention=tn;exports.NicePDFAnnotationEditor=kn;exports.NicePickList=sn;exports.NicePinCodeInput=$n;exports.NiceRangeSlider=Jn;exports.NiceScannerControl=Mn;exports.NiceSignature=yi;exports.NiceSignaturePad=fn;exports.NiceSimpleCodeEditor=ln;exports.NiceTaxRatePicker=Cn;exports.NiceTreeSelect=an;exports.NiceVatInput=Nn;exports.NiceWiki=wn;exports.applyPreset=tt;exports.contrastRatio=Qe;exports.cssToGradient=Vt;exports.generateHarmony=qe;exports.generateVariations=Kt;exports.gradientToCss=mt;exports.hexToHsv=Re;exports.hexToRgb=Ge;exports.hsvToHex=Me;exports.hsvToRgb=Ft;exports.randomPalette=Ut;exports.rgbToHex=Ot;exports.rgbToHsl=Bt;exports.rgbToHsv=ht;exports.wcagLevel=et;