dhanasekar-ui 1.1.2 → 1.1.4

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 (211) hide show
  1. package/dist/chunk-2BM7TRDS.js +105 -0
  2. package/dist/chunk-2BM7TRDS.js.map +1 -0
  3. package/dist/chunk-2K6E3M6X.mjs +193 -0
  4. package/dist/chunk-2K6E3M6X.mjs.map +1 -0
  5. package/dist/chunk-2TXYJ7YE.js +201 -0
  6. package/dist/chunk-2TXYJ7YE.js.map +1 -0
  7. package/dist/chunk-33P6OQSB.mjs +129 -0
  8. package/dist/chunk-33P6OQSB.mjs.map +1 -0
  9. package/dist/chunk-3RAQQWLW.js +351 -0
  10. package/dist/chunk-3RAQQWLW.js.map +1 -0
  11. package/dist/chunk-4HRAPJIS.mjs +102 -0
  12. package/dist/chunk-4HRAPJIS.mjs.map +1 -0
  13. package/dist/chunk-4VCCLGED.mjs +85 -0
  14. package/dist/chunk-4VCCLGED.mjs.map +1 -0
  15. package/dist/chunk-5BAYROPS.js +129 -0
  16. package/dist/chunk-5BAYROPS.js.map +1 -0
  17. package/dist/chunk-6C7E4Q7J.js +136 -0
  18. package/dist/chunk-6C7E4Q7J.js.map +1 -0
  19. package/dist/chunk-6SVKDKK7.mjs +351 -0
  20. package/dist/chunk-6SVKDKK7.mjs.map +1 -0
  21. package/dist/chunk-BM36E6BY.js +85 -0
  22. package/dist/chunk-BM36E6BY.js.map +1 -0
  23. package/dist/chunk-BQFCZZDK.js +52 -0
  24. package/dist/chunk-BQFCZZDK.js.map +1 -0
  25. package/dist/chunk-BYYOIYEH.mjs +136 -0
  26. package/dist/chunk-BYYOIYEH.mjs.map +1 -0
  27. package/dist/chunk-CDALMRVJ.js +193 -0
  28. package/dist/chunk-CDALMRVJ.js.map +1 -0
  29. package/dist/chunk-CJ2DPBHE.js +93 -0
  30. package/dist/chunk-CJ2DPBHE.js.map +1 -0
  31. package/dist/chunk-CN4G4LGR.js +40 -0
  32. package/dist/chunk-CN4G4LGR.js.map +1 -0
  33. package/dist/chunk-EHI64N43.mjs +52 -0
  34. package/dist/chunk-EHI64N43.mjs.map +1 -0
  35. package/dist/chunk-GNMGJBBO.mjs +201 -0
  36. package/dist/chunk-GNMGJBBO.mjs.map +1 -0
  37. package/dist/chunk-GT5QTRLR.js +102 -0
  38. package/dist/chunk-GT5QTRLR.js.map +1 -0
  39. package/dist/chunk-H2LTPKLL.js +119 -0
  40. package/dist/chunk-H2LTPKLL.js.map +1 -0
  41. package/dist/chunk-ICWNP5NA.mjs +105 -0
  42. package/dist/chunk-ICWNP5NA.mjs.map +1 -0
  43. package/dist/chunk-L3Y3AD6X.js +85 -0
  44. package/dist/chunk-L3Y3AD6X.js.map +1 -0
  45. package/dist/chunk-N6F5P3SO.mjs +40 -0
  46. package/dist/chunk-N6F5P3SO.mjs.map +1 -0
  47. package/dist/chunk-RB4QTTZ3.mjs +116 -0
  48. package/dist/chunk-RB4QTTZ3.mjs.map +1 -0
  49. package/dist/chunk-RW2NNPXC.mjs +119 -0
  50. package/dist/chunk-RW2NNPXC.mjs.map +1 -0
  51. package/dist/chunk-SHZ3M7US.mjs +104 -0
  52. package/dist/chunk-SHZ3M7US.mjs.map +1 -0
  53. package/dist/chunk-UBWTBUO2.js +116 -0
  54. package/dist/chunk-UBWTBUO2.js.map +1 -0
  55. package/dist/chunk-V3WVMXXX.js +206 -0
  56. package/dist/chunk-V3WVMXXX.js.map +1 -0
  57. package/dist/chunk-VFGXUH56.mjs +206 -0
  58. package/dist/chunk-VFGXUH56.mjs.map +1 -0
  59. package/dist/chunk-YM6W6FK6.mjs +85 -0
  60. package/dist/chunk-YM6W6FK6.mjs.map +1 -0
  61. package/dist/chunk-YRYAP2N7.js +104 -0
  62. package/dist/chunk-YRYAP2N7.js.map +1 -0
  63. package/dist/chunk-ZEMR63S4.js +198 -0
  64. package/dist/chunk-ZEMR63S4.js.map +1 -0
  65. package/dist/chunk-ZUAS66IF.mjs +93 -0
  66. package/dist/chunk-ZUAS66IF.mjs.map +1 -0
  67. package/dist/chunk-ZY5AHZYZ.mjs +198 -0
  68. package/dist/chunk-ZY5AHZYZ.mjs.map +1 -0
  69. package/dist/components/Avatar/index.d.mts +65 -2
  70. package/dist/components/Avatar/index.d.ts +65 -2
  71. package/dist/components/Avatar/index.js +1 -1
  72. package/dist/components/Avatar/index.mjs +1 -1
  73. package/dist/components/Badge/index.d.mts +88 -2
  74. package/dist/components/Badge/index.d.ts +88 -2
  75. package/dist/components/Badge/index.js +1 -1
  76. package/dist/components/Badge/index.mjs +1 -1
  77. package/dist/components/Button/index.js +1 -1
  78. package/dist/components/Button/index.mjs +1 -1
  79. package/dist/components/Card/index.d.mts +103 -2
  80. package/dist/components/Card/index.d.ts +103 -2
  81. package/dist/components/Card/index.js +1 -1
  82. package/dist/components/Card/index.mjs +1 -1
  83. package/dist/components/Checkbox/index.d.mts +109 -6
  84. package/dist/components/Checkbox/index.d.ts +109 -6
  85. package/dist/components/Checkbox/index.js +1 -1
  86. package/dist/components/Checkbox/index.mjs +1 -1
  87. package/dist/components/ConfirmationDialog/index.d.mts +30 -0
  88. package/dist/components/ConfirmationDialog/index.d.ts +30 -0
  89. package/dist/components/ConfirmationDialog/index.js +2 -0
  90. package/dist/components/ConfirmationDialog/index.js.map +1 -0
  91. package/dist/components/ConfirmationDialog/index.mjs +2 -0
  92. package/dist/components/ConfirmationDialog/index.mjs.map +1 -0
  93. package/dist/components/DateFilter/index.d.mts +26 -0
  94. package/dist/components/DateFilter/index.d.ts +26 -0
  95. package/dist/components/DateFilter/index.js +2 -0
  96. package/dist/components/DateFilter/index.js.map +1 -0
  97. package/dist/components/DateFilter/index.mjs +2 -0
  98. package/dist/components/DateFilter/index.mjs.map +1 -0
  99. package/dist/components/FileUploadField/index.d.mts +0 -1
  100. package/dist/components/FileUploadField/index.d.ts +0 -1
  101. package/dist/components/FileUploadField/index.js +1 -1
  102. package/dist/components/FileUploadField/index.mjs +1 -1
  103. package/dist/components/FormLayout/index.d.mts +50 -0
  104. package/dist/components/FormLayout/index.d.ts +50 -0
  105. package/dist/components/FormLayout/index.js +2 -0
  106. package/dist/components/FormLayout/index.js.map +1 -0
  107. package/dist/components/FormLayout/index.mjs +2 -0
  108. package/dist/components/FormLayout/index.mjs.map +1 -0
  109. package/dist/components/IdleTimer/index.d.mts +0 -1
  110. package/dist/components/IdleTimer/index.d.ts +0 -1
  111. package/dist/components/IdleTimer/index.js +1 -1
  112. package/dist/components/IdleTimer/index.mjs +1 -1
  113. package/dist/components/Input/index.js +1 -1
  114. package/dist/components/Input/index.mjs +1 -1
  115. package/dist/components/Loader/index.d.mts +0 -1
  116. package/dist/components/Loader/index.d.ts +0 -1
  117. package/dist/components/Loader/index.js +1 -1
  118. package/dist/components/Loader/index.mjs +1 -1
  119. package/dist/components/Modal/index.d.mts +23 -7
  120. package/dist/components/Modal/index.d.ts +23 -7
  121. package/dist/components/Modal/index.js +1 -1
  122. package/dist/components/Modal/index.mjs +1 -1
  123. package/dist/components/Select/index.js +1 -1
  124. package/dist/components/Select/index.mjs +1 -1
  125. package/dist/components/Switch/index.js +1 -1
  126. package/dist/components/Switch/index.mjs +1 -1
  127. package/dist/components/Text/index.js +1 -1
  128. package/dist/components/Text/index.mjs +1 -1
  129. package/dist/components/Tooltip/index.d.mts +30 -7
  130. package/dist/components/Tooltip/index.d.ts +30 -7
  131. package/dist/components/Tooltip/index.js +1 -1
  132. package/dist/components/Tooltip/index.mjs +1 -1
  133. package/dist/index.d.mts +10 -6
  134. package/dist/index.d.ts +10 -6
  135. package/dist/index.js +1 -1
  136. package/dist/index.mjs +1 -1
  137. package/package.json +13 -1
  138. package/dist/chunk-6CTAGKRH.js +0 -2
  139. package/dist/chunk-6CTAGKRH.js.map +0 -1
  140. package/dist/chunk-6KTHQKF2.js +0 -2
  141. package/dist/chunk-6KTHQKF2.js.map +0 -1
  142. package/dist/chunk-6S5MGYMQ.mjs +0 -2
  143. package/dist/chunk-6S5MGYMQ.mjs.map +0 -1
  144. package/dist/chunk-7CEQNZIX.mjs +0 -2
  145. package/dist/chunk-7CEQNZIX.mjs.map +0 -1
  146. package/dist/chunk-AVQSNP56.js +0 -2
  147. package/dist/chunk-AVQSNP56.js.map +0 -1
  148. package/dist/chunk-B3QF3KQL.js +0 -2
  149. package/dist/chunk-B3QF3KQL.js.map +0 -1
  150. package/dist/chunk-CBHX2QZA.mjs +0 -2
  151. package/dist/chunk-CBHX2QZA.mjs.map +0 -1
  152. package/dist/chunk-DVU5JMBP.js +0 -2
  153. package/dist/chunk-DVU5JMBP.js.map +0 -1
  154. package/dist/chunk-DYGRXBKP.js +0 -2
  155. package/dist/chunk-DYGRXBKP.js.map +0 -1
  156. package/dist/chunk-HNKQZLUA.mjs +0 -2
  157. package/dist/chunk-HNKQZLUA.mjs.map +0 -1
  158. package/dist/chunk-KZ3RDRIM.js +0 -2
  159. package/dist/chunk-KZ3RDRIM.js.map +0 -1
  160. package/dist/chunk-MYC7PW6C.js +0 -2
  161. package/dist/chunk-MYC7PW6C.js.map +0 -1
  162. package/dist/chunk-MZLSOEXC.mjs +0 -2
  163. package/dist/chunk-MZLSOEXC.mjs.map +0 -1
  164. package/dist/chunk-OTDTXBFF.mjs +0 -2
  165. package/dist/chunk-OTDTXBFF.mjs.map +0 -1
  166. package/dist/chunk-OXYWK4HK.js +0 -3
  167. package/dist/chunk-OXYWK4HK.js.map +0 -1
  168. package/dist/chunk-RRZTNQ5T.mjs +0 -2
  169. package/dist/chunk-RRZTNQ5T.mjs.map +0 -1
  170. package/dist/chunk-RXNNJUS6.mjs +0 -3
  171. package/dist/chunk-RXNNJUS6.mjs.map +0 -1
  172. package/dist/chunk-S74D6N7O.mjs +0 -2
  173. package/dist/chunk-S74D6N7O.mjs.map +0 -1
  174. package/dist/chunk-VIUZPAJZ.js +0 -2
  175. package/dist/chunk-VIUZPAJZ.js.map +0 -1
  176. package/dist/chunk-VPR3PX57.js +0 -2
  177. package/dist/chunk-VPR3PX57.js.map +0 -1
  178. package/dist/chunk-VXKXXAX6.mjs +0 -2
  179. package/dist/chunk-VXKXXAX6.mjs.map +0 -1
  180. package/dist/chunk-W4PFQVHM.mjs +0 -2
  181. package/dist/chunk-W4PFQVHM.mjs.map +0 -1
  182. package/dist/chunk-WEQINEMX.mjs +0 -2
  183. package/dist/chunk-WEQINEMX.mjs.map +0 -1
  184. package/dist/chunk-WGPJEQGU.mjs +0 -2
  185. package/dist/chunk-WGPJEQGU.mjs.map +0 -1
  186. package/dist/chunk-WVZF6FQ7.js +0 -3
  187. package/dist/chunk-WVZF6FQ7.js.map +0 -1
  188. package/dist/chunk-X7EUJD7E.js +0 -2
  189. package/dist/chunk-X7EUJD7E.js.map +0 -1
  190. package/dist/chunk-YKQKLQNI.js +0 -2
  191. package/dist/chunk-YKQKLQNI.js.map +0 -1
  192. package/dist/chunk-ZO6I27MY.mjs +0 -3
  193. package/dist/chunk-ZO6I27MY.mjs.map +0 -1
  194. package/dist/components/Button/index.css +0 -2
  195. package/dist/components/Button/index.css.map +0 -1
  196. package/dist/components/FileUploadField/index.css +0 -2
  197. package/dist/components/FileUploadField/index.css.map +0 -1
  198. package/dist/components/IdleTimer/index.css +0 -2
  199. package/dist/components/IdleTimer/index.css.map +0 -1
  200. package/dist/components/Input/index.css +0 -2
  201. package/dist/components/Input/index.css.map +0 -1
  202. package/dist/components/Loader/index.css +0 -2
  203. package/dist/components/Loader/index.css.map +0 -1
  204. package/dist/components/Select/index.css +0 -2
  205. package/dist/components/Select/index.css.map +0 -1
  206. package/dist/components/Switch/index.css +0 -2
  207. package/dist/components/Switch/index.css.map +0 -1
  208. package/dist/components/Text/index.css +0 -2
  209. package/dist/components/Text/index.css.map +0 -1
  210. package/dist/index.css +0 -2
  211. package/dist/index.css.map +0 -1
@@ -0,0 +1,105 @@
1
+ 'use strict';var chunkDDGBDWFC_js=require('./chunk-DDGBDWFC.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var y=`
2
+ .conf-overlay {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: 9999;
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ background-color: rgba(0, 0, 0, 0.4);
10
+ backdrop-filter: blur(4px);
11
+ animation: conf-fadeIn 0.2s ease-out;
12
+ }
13
+
14
+ .conf-dialog {
15
+ background-color: #ffffff;
16
+ border-radius: 12px;
17
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
18
+ width: 100%;
19
+ max-width: 400px;
20
+ margin: 16px;
21
+ overflow: hidden;
22
+ animation: conf-zoomIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
23
+ }
24
+
25
+ .conf-content {
26
+ padding: 32px 24px;
27
+ display: flex;
28
+ flex-direction: column;
29
+ align-items: center;
30
+ text-align: center;
31
+ }
32
+
33
+ .conf-icon {
34
+ font-size: 80px;
35
+ margin-bottom: 16px;
36
+ line-height: 1;
37
+ }
38
+
39
+ .conf-title {
40
+ font-size: 20px;
41
+ font-weight: 600;
42
+ color: #1e293b;
43
+ margin: 0 0 8px 0;
44
+ line-height: 1.4;
45
+ }
46
+
47
+ .conf-description {
48
+ font-size: 15px;
49
+ color: #64748b;
50
+ margin: 0;
51
+ line-height: 1.5;
52
+ }
53
+
54
+ .conf-actions {
55
+ padding: 0 24px 24px 24px;
56
+ display: flex;
57
+ justify-content: center;
58
+ gap: 12px;
59
+ }
60
+
61
+ .conf-btn {
62
+ padding: 10px 24px;
63
+ border-radius: 8px;
64
+ font-size: 14px;
65
+ font-weight: 600;
66
+ cursor: pointer;
67
+ transition: all 0.2s;
68
+ border: none;
69
+ min-width: 100px;
70
+ }
71
+
72
+ .conf-btn-confirm {
73
+ background-color: #3498db;
74
+ color: white;
75
+ }
76
+
77
+ .conf-btn-confirm:hover {
78
+ background-color: #2980b9;
79
+ transform: translateY(-1px);
80
+ box-shadow: 0 4px 6px -1px rgba(52, 152, 219, 0.3);
81
+ }
82
+
83
+ .conf-btn-cancel {
84
+ background-color: #f1f5f9;
85
+ color: #475569;
86
+ border: 1px solid #e2e8f0;
87
+ }
88
+
89
+ .conf-btn-cancel:hover {
90
+ background-color: #e2e8f0;
91
+ color: #1e293b;
92
+ }
93
+
94
+ @keyframes conf-fadeIn {
95
+ from { opacity: 0; }
96
+ to { opacity: 1; }
97
+ }
98
+
99
+ @keyframes conf-zoomIn {
100
+ from { opacity: 0; transform: scale(0.95); }
101
+ to { opacity: 1; transform: scale(1); }
102
+ }
103
+ `,N=({open:l,setOpen:i,title:f="Are you sure?",description:s="This action cannot be undone.",onConfirm:d,onCancel:c,confirmText:p="Yes",cancelText:m="No",icon:b="ti ti-alert-circle",iconColor:x="#3498db",className:g})=>{react.useEffect(()=>{let n="tabler-icons-cdn";if(!document.getElementById(n)){let t=document.createElement("link");t.id=n,t.rel="stylesheet",t.href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/dist/tabler-icons.min.css",document.head.appendChild(t);}},[]);let u=()=>{d(),i(false);},r=()=>{c&&c(),i(false);};return l?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("style",{dangerouslySetInnerHTML:{__html:y}}),jsxRuntime.jsx("div",{className:"conf-overlay",onClick:r,children:jsxRuntime.jsxs("div",{className:chunkDDGBDWFC_js.a("conf-dialog",g),onClick:n=>n.stopPropagation(),children:[jsxRuntime.jsxs("div",{className:"conf-content",children:[jsxRuntime.jsx("i",{className:b,style:{color:x,fontSize:"80px",marginBottom:"16px"}}),jsxRuntime.jsx("h3",{className:"conf-title",children:f}),jsxRuntime.jsx("p",{className:"conf-description",children:s})]}),jsxRuntime.jsxs("div",{className:"conf-actions",children:[jsxRuntime.jsx("button",{type:"button",className:"conf-btn conf-btn-confirm",onClick:u,children:p}),jsxRuntime.jsx("button",{type:"button",className:"conf-btn conf-btn-cancel",onClick:r,children:m})]})]})})]}):null};
104
+ exports.a=N;//# sourceMappingURL=chunk-2BM7TRDS.js.map
105
+ //# sourceMappingURL=chunk-2BM7TRDS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/ConfirmationDialog/ConfirmationDialog.tsx"],"names":["STYLES","ConfirmationDialog","open","setOpen","title","description","onConfirm","onCancel","confirmText","cancelText","icon","iconColor","className","useEffect","cdnId","link","handleConfirm","handleCancel","jsxs","Fragment","jsx","cn","e"],"mappings":"gIAMA,IAAMA,CAAAA,CAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAwGFC,CAAAA,CAAwD,CAAC,CACpE,IAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CAAQ,eAAA,CACR,YAAAC,CAAAA,CAAc,+BAAA,CACd,UAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CAAc,MACd,UAAA,CAAAC,CAAAA,CAAa,KACb,IAAA,CAAAC,CAAAA,CAAO,qBACP,SAAA,CAAAC,CAAAA,CAAY,UACZ,SAAA,CAAAC,CACF,IAAM,CAEJC,eAAAA,CAAU,IAAM,CACd,IAAMC,EAAQ,kBAAA,CACd,GAAI,CAAC,QAAA,CAAS,cAAA,CAAeA,CAAK,CAAA,CAAG,CACnC,IAAMC,CAAAA,CAAO,QAAA,CAAS,cAAc,MAAM,CAAA,CAC1CA,EAAK,EAAA,CAAKD,CAAAA,CACVC,EAAK,GAAA,CAAM,YAAA,CACXA,EAAK,IAAA,CAAO,qFAAA,CACZ,SAAS,IAAA,CAAK,WAAA,CAAYA,CAAI,EAChC,CACF,EAAG,EAAE,EAEL,IAAMC,CAAAA,CAAgB,IAAM,CAC1BV,CAAAA,GACAH,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEMc,CAAAA,CAAe,IAAM,CACrBV,CAAAA,EAAUA,GAAS,CACvBJ,CAAAA,CAAQ,KAAK,EACf,CAAA,CAEA,OAAKD,CAAAA,CAGHgB,eAAAA,CAAAC,mBAAAA,CAAA,CACE,QAAA,CAAA,CAAAC,cAAAA,CAAC,SAAM,uBAAA,CAAyB,CAAE,OAAQpB,CAAO,CAAA,CAAG,EACpDoB,cAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,cAAA,CAAe,OAAA,CAASH,EACrC,QAAA,CAAAC,eAAAA,CAAC,OACC,SAAA,CAAWG,kBAAAA,CAAG,cAAeT,CAAS,CAAA,CACtC,QAAUU,CAAAA,EAAMA,CAAAA,CAAE,iBAAgB,CAElC,QAAA,CAAA,CAAAJ,gBAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eACb,QAAA,CAAA,CAAAE,cAAAA,CAAC,KACC,SAAA,CAAWV,CAAAA,CACX,MAAO,CAAE,KAAA,CAAOC,EAAW,QAAA,CAAU,MAAA,CAAQ,aAAc,MAAO,CAAA,CACpE,EACAS,cAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,YAAA,CAAc,QAAA,CAAAhB,EAAM,CAAA,CAClCgB,cAAAA,CAAC,KAAE,SAAA,CAAU,kBAAA,CAAoB,SAAAf,CAAAA,CAAY,CAAA,CAAA,CAC/C,EACAa,eAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,cAAA,CACb,QAAA,CAAA,CAAAE,eAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAU,2BAAA,CACV,QAASJ,CAAAA,CAER,QAAA,CAAAR,EACH,CAAA,CACAY,cAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,UAAU,0BAAA,CACV,OAAA,CAASH,EAER,QAAA,CAAAR,CAAAA,CACH,GACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CApCgB,IAsCpB","file":"chunk-2BM7TRDS.js","sourcesContent":["'use client';\n\nimport React, { useEffect } from 'react';\nimport { cn } from '../../utils/cn';\nimport { ConfirmationDialogProps } from './types';\n\nconst STYLES = `\n .conf-overlay {\n position: fixed;\n inset: 0;\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n animation: conf-fadeIn 0.2s ease-out;\n }\n\n .conf-dialog {\n background-color: #ffffff;\n border-radius: 12px;\n box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n width: 100%;\n max-width: 400px;\n margin: 16px;\n overflow: hidden;\n animation: conf-zoomIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n }\n\n .conf-content {\n padding: 32px 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n }\n\n .conf-icon {\n font-size: 80px;\n margin-bottom: 16px;\n line-height: 1;\n }\n\n .conf-title {\n font-size: 20px;\n font-weight: 600;\n color: #1e293b;\n margin: 0 0 8px 0;\n line-height: 1.4;\n }\n\n .conf-description {\n font-size: 15px;\n color: #64748b;\n margin: 0;\n line-height: 1.5;\n }\n\n .conf-actions {\n padding: 0 24px 24px 24px;\n display: flex;\n justify-content: center;\n gap: 12px;\n }\n\n .conf-btn {\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s;\n border: none;\n min-width: 100px;\n }\n\n .conf-btn-confirm {\n background-color: #3498db;\n color: white;\n }\n\n .conf-btn-confirm:hover {\n background-color: #2980b9;\n transform: translateY(-1px);\n box-shadow: 0 4px 6px -1px rgba(52, 152, 219, 0.3);\n }\n\n .conf-btn-cancel {\n background-color: #f1f5f9;\n color: #475569;\n border: 1px solid #e2e8f0;\n }\n\n .conf-btn-cancel:hover {\n background-color: #e2e8f0;\n color: #1e293b;\n }\n\n @keyframes conf-fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes conf-zoomIn {\n from { opacity: 0; transform: scale(0.95); }\n to { opacity: 1; transform: scale(1); }\n }\n`;\n\nexport const ConfirmationDialog: React.FC<ConfirmationDialogProps> = ({\n open,\n setOpen,\n title = 'Are you sure?',\n description = 'This action cannot be undone.',\n onConfirm,\n onCancel,\n confirmText = 'Yes',\n cancelText = 'No',\n icon = 'ti ti-alert-circle',\n iconColor = '#3498db',\n className,\n}) => {\n // Inject Tabler Icons if not present\n useEffect(() => {\n const cdnId = 'tabler-icons-cdn';\n if (!document.getElementById(cdnId)) {\n const link = document.createElement('link');\n link.id = cdnId;\n link.rel = 'stylesheet';\n link.href = 'https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/dist/tabler-icons.min.css';\n document.head.appendChild(link);\n }\n }, []);\n\n const handleConfirm = () => {\n onConfirm();\n setOpen(false);\n };\n\n const handleCancel = () => {\n if (onCancel) onCancel();\n setOpen(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <div className=\"conf-overlay\" onClick={handleCancel}>\n <div \n className={cn('conf-dialog', className)} \n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"conf-content\">\n <i \n className={icon} \n style={{ color: iconColor, fontSize: '80px', marginBottom: '16px' }} \n />\n <h3 className=\"conf-title\">{title}</h3>\n <p className=\"conf-description\">{description}</p>\n </div>\n <div className=\"conf-actions\">\n <button \n type=\"button\" \n className=\"conf-btn conf-btn-confirm\" \n onClick={handleConfirm}\n >\n {confirmText}\n </button>\n <button \n type=\"button\" \n className=\"conf-btn conf-btn-cancel\" \n onClick={handleCancel}\n >\n {cancelText}\n </button>\n </div>\n </div>\n </div>\n </>\n );\n};\n\nexport default ConfirmationDialog;\n"]}
@@ -0,0 +1,193 @@
1
+ import {a}from'./chunk-547MQ4FI.mjs';import d,{forwardRef,useId,useState,useRef,useEffect}from'react';import {ChevronDown}from'lucide-react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var B=`
2
+ .ui-select-root {
3
+ display: inline-flex;
4
+ flex-direction: column;
5
+ position: relative;
6
+ min-width: 200px;
7
+ vertical-align: top;
8
+ font-family: 'Inter', system-ui, sans-serif;
9
+ margin: 0;
10
+ --ui-primary: #3b82f6;
11
+ --ui-secondary: #64748b;
12
+ --ui-error: #ef4444;
13
+ --ui-success: #22c55e;
14
+ --ui-warning: #f59e0b;
15
+ --ui-info: #0ea5e9;
16
+ --ui-text-primary: #1e293b;
17
+ --ui-text-secondary: #64748b;
18
+ --ui-bg: #ffffff;
19
+ --ui-border: #e2e8f0;
20
+ --ui-radius: 8px;
21
+ --ui-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
22
+ }
23
+
24
+ .ui-select-fullWidth {
25
+ width: 100%;
26
+ }
27
+
28
+ .ui-select-label {
29
+ display: block;
30
+ margin-bottom: 6px;
31
+ font-size: 0.875rem;
32
+ font-weight: 500;
33
+ color: var(--ui-text-secondary);
34
+ transition: color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
35
+ }
36
+
37
+ .ui-select-label-focused {
38
+ color: var(--ui-primary);
39
+ }
40
+
41
+ .ui-select-container {
42
+ position: relative;
43
+ border-radius: var(--ui-radius);
44
+ display: flex;
45
+ align-items: center;
46
+ background-color: var(--ui-bg);
47
+ border: 1px solid var(--ui-border);
48
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
49
+ cursor: pointer;
50
+ overflow: hidden;
51
+ }
52
+
53
+ .ui-select-container:hover {
54
+ border-color: #cbd5e1;
55
+ }
56
+
57
+ .ui-select-container-focused {
58
+ border-color: var(--ui-primary);
59
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
60
+ }
61
+
62
+ .ui-select-display {
63
+ padding: 10px 32px 10px 14px;
64
+ font-size: 0.9375rem;
65
+ color: var(--ui-text-primary);
66
+ flex-grow: 1;
67
+ min-height: 1.5em;
68
+ line-height: 1.5;
69
+ white-space: nowrap;
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ }
73
+
74
+ .ui-select-icon {
75
+ position: absolute;
76
+ right: 8px;
77
+ top: 50%;
78
+ transform: translateY(-50%);
79
+ pointer-events: none;
80
+ color: var(--ui-text-secondary);
81
+ transition: transform 0.2s;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: center;
85
+ }
86
+
87
+ .ui-select-icon-open {
88
+ transform: translateY(-50%) rotate(180deg);
89
+ }
90
+
91
+ .ui-select-variant-filled {
92
+ background-color: #f1f5f9;
93
+ border-color: transparent;
94
+ }
95
+
96
+ .ui-select-variant-filled:hover {
97
+ background-color: #e2e8f0;
98
+ }
99
+
100
+ .ui-select-variant-filled.ui-select-container-focused {
101
+ background-color: var(--ui-bg);
102
+ border-color: var(--ui-primary);
103
+ }
104
+
105
+ .ui-select-variant-standard {
106
+ border-radius: 0;
107
+ border: 0;
108
+ border-bottom: 1px solid var(--ui-border);
109
+ background-color: transparent;
110
+ }
111
+
112
+ .ui-select-variant-standard.ui-select-container-focused {
113
+ border-bottom: 2px solid var(--ui-primary);
114
+ box-shadow: none;
115
+ }
116
+
117
+ .ui-select-menu {
118
+ position: absolute;
119
+ top: 100%;
120
+ left: 0;
121
+ z-index: 1000;
122
+ min-width: 100%;
123
+ background-color: var(--ui-bg);
124
+ border: 1px solid var(--ui-border);
125
+ border-radius: var(--ui-radius);
126
+ margin-top: 4px;
127
+ box-shadow: var(--ui-shadow-lg);
128
+ padding: 4px 0;
129
+ max-height: 300px;
130
+ overflow-y: auto;
131
+ animation: ui-select-menu-fade-in 0.15s ease-out;
132
+ }
133
+
134
+ @keyframes ui-select-menu-fade-in {
135
+ from {
136
+ opacity: 0;
137
+ transform: translateY(-10px);
138
+ }
139
+ to {
140
+ opacity: 1;
141
+ transform: translateY(0);
142
+ }
143
+ }
144
+
145
+ .ui-select-menu-autoWidth {
146
+ min-width: unset;
147
+ width: max-content;
148
+ }
149
+
150
+ .ui-select-native {
151
+ width: 100%;
152
+ padding: 10px 14px;
153
+ font-size: 0.9375rem;
154
+ border: 1px solid var(--ui-border);
155
+ border-radius: var(--ui-radius);
156
+ background-color: var(--ui-bg);
157
+ appearance: none;
158
+ cursor: pointer;
159
+ outline: none;
160
+ font-family: inherit;
161
+ color: var(--ui-text-primary);
162
+ }
163
+
164
+ .ui-select-native:focus {
165
+ border-color: var(--ui-primary);
166
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
167
+ }
168
+
169
+ .ui-select-menu-item {
170
+ padding: 10px 16px;
171
+ font-size: 0.9375rem;
172
+ cursor: pointer;
173
+ transition: background-color 0.2s;
174
+ color: var(--ui-text-primary);
175
+ display: flex;
176
+ align-items: center;
177
+ }
178
+
179
+ .ui-select-menu-item:hover {
180
+ background-color: #f1f5f9;
181
+ }
182
+
183
+ .ui-select-menu-item-selected {
184
+ background-color: #eff6ff;
185
+ color: var(--ui-primary);
186
+ font-weight: 500;
187
+ }
188
+
189
+ .ui-select-menu-item-selected:hover {
190
+ background-color: #dbeafe;
191
+ }
192
+ `,K=forwardRef((v,x)=>{let{autoWidth:N=false,children:s,classes:i={},defaultOpen:g=false,defaultValue:p,displayEmpty:M=false,fullWidth:k=false,IconComponent:q=ChevronDown,id:G,input:ve,inputProps:I={},label:f,labelId:C,MenuProps:S={},multiple:u=false,native:R=false,onChange:L,onClose:T,onOpen:J,open:P,renderValue:A,SelectDisplayProps:Q={},sx:H,value:V,variant:U="outlined",className:z,...X}=v,Z=useId(),m=G||Z,ee=`${m}-menu`,[te,re]=useState(p!==void 0?p:u?[]:""),[oe,D]=useState(g),[O,W]=useState(false),Y=V!==void 0,t=Y?V:te,y=P!==void 0,a$1=y?P:oe,h=useRef(null),w=useRef(null),ie=e=>{if(R)return;let r=!a$1;y||D(r),r?J?.(e):T?.(e);},F=e=>{y||D(false),T?.(e);},_=(e,r)=>{let l=e;if(u){let c=Array.isArray(t)?t:[];c.includes(e)?l=c.filter(ae=>ae!==e):l=[...c,e];}if(Y||re(l),L){let c={target:{value:l,name:I.name}};L(c,r);}u||F(null);};useEffect(()=>{let e=r=>{a$1&&h.current&&!h.current.contains(r.target)&&w.current&&!w.current.contains(r.target)&&F(r);};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e);}},[a$1]);let ne=()=>{if(A)return A(t);if(u&&Array.isArray(t))return t.length===0&&M?"":t.join(", ");if(t===""||t===void 0||t===null)return M?"":null;let e=t;return d.Children.forEach(s,r=>{d.isValidElement(r)&&r.props.value===t&&(e=r.props.children);}),e};return R?jsxs("div",{className:a("ui-select-root",k&&"ui-select-fullWidth",z,i.root),style:H,children:[jsx("style",{dangerouslySetInnerHTML:{__html:B}}),f&&jsx("label",{htmlFor:m,className:a("ui-select-label",i.label),children:f}),jsx("select",{id:m,value:t,onChange:e=>_(e.target.value),className:a("ui-select-native",i.native),...I,...X,children:s})]}):jsxs(Fragment,{children:[jsx("style",{dangerouslySetInnerHTML:{__html:B}}),jsxs("div",{ref:h,className:a("ui-select-root",k&&"ui-select-fullWidth",z,i.root),style:H,children:[f&&jsx("label",{id:C,className:a("ui-select-label",O&&"ui-select-label-focused",i.label),children:f}),jsxs("div",{ref:x,role:"button","aria-haspopup":"listbox","aria-expanded":a$1,"aria-labelledby":C,id:m,tabIndex:0,onClick:ie,onFocus:()=>W(true),onBlur:()=>W(false),className:a("ui-select-container",`ui-select-variant-${U}`,O&&"ui-select-container-focused",a$1&&"ui-select-container-open",i.container),...Q,children:[jsx("div",{className:a("ui-select-display",i.select),children:ne()}),jsx("div",{className:a("ui-select-icon",a$1&&"ui-select-icon-open",i.icon),children:jsx(q,{size:20})})]}),a$1&&jsx("div",{ref:w,id:ee,role:"listbox",className:a("ui-select-menu",N&&"ui-select-menu-autoWidth",S.className,i.menu),...S,children:d.Children.map(s,e=>{if(!d.isValidElement(e))return null;let r=u?Array.isArray(t)&&t.includes(e.props.value):t===e.props.value;return d.cloneElement(e,{onClick:l=>{e.props.onClick?.(l),_(e.props.value,e);},className:a("ui-select-menu-item",r&&"ui-select-menu-item-selected",e.props.className),role:"option","aria-selected":r})})})]})]})});K.displayName="Select";var de=K;var j=forwardRef(({className:v,children:x,value:N,disabled:s,selected:i,...g},p)=>jsx("div",{ref:p,className:a("ui-select-menu-item",i&&"ui-select-menu-item-selected",s&&"ui-select-menu-item-disabled",v),...g,children:x}));j.displayName="MenuItem";var me=j;export{de as a,me as b};//# sourceMappingURL=chunk-2K6E3M6X.mjs.map
193
+ //# sourceMappingURL=chunk-2K6E3M6X.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Select/Select.tsx","../src/components/Select/MenuItem.tsx"],"names":["STYLES","Select","forwardRef","props","ref","autoWidth","children","classes","defaultOpen","defaultValue","displayEmpty","fullWidth","Icon","ChevronDown","idProp","input","inputProps","label","labelId","MenuProps","multiple","native","onChange","onClose","onOpen","openProp","renderValue","SelectDisplayProps","sx","valueProp","variant","className","rest","generatedId","useId","id","menuId","internalValue","setInternalValue","useState","internalOpen","setInternalOpen","focused","setFocused","isControlledValue","value","isControlledOpen","isOpen","containerRef","useRef","menuRef","handleToggle","event","nextOpen","handleClose","handleSelect","val","child","newValue","currentArray","v","useEffect","handleClickOutside","getDisplayValue","labelFound","React","jsxs","cn","jsx","Fragment","isSelected","e","Select_default","MenuItem","disabled","selected","MenuItem_default"],"mappings":"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","file":"chunk-2K6E3M6X.mjs","sourcesContent":["'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect, useId } from 'react';\nimport { ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { SelectProps, SelectChangeEvent } from './types';\n\nconst STYLES = `\n .ui-select-root {\n display: inline-flex;\n flex-direction: column;\n position: relative;\n min-width: 200px;\n vertical-align: top;\n font-family: 'Inter', system-ui, sans-serif;\n margin: 0;\n --ui-primary: #3b82f6;\n --ui-secondary: #64748b;\n --ui-error: #ef4444;\n --ui-success: #22c55e;\n --ui-warning: #f59e0b;\n --ui-info: #0ea5e9;\n --ui-text-primary: #1e293b;\n --ui-text-secondary: #64748b;\n --ui-bg: #ffffff;\n --ui-border: #e2e8f0;\n --ui-radius: 8px;\n --ui-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n }\n\n .ui-select-fullWidth {\n width: 100%;\n }\n\n .ui-select-label {\n display: block;\n margin-bottom: 6px;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--ui-text-secondary);\n transition: color 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .ui-select-label-focused {\n color: var(--ui-primary);\n }\n\n .ui-select-container {\n position: relative;\n border-radius: var(--ui-radius);\n display: flex;\n align-items: center;\n background-color: var(--ui-bg);\n border: 1px solid var(--ui-border);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n cursor: pointer;\n overflow: hidden;\n }\n\n .ui-select-container:hover {\n border-color: #cbd5e1;\n }\n\n .ui-select-container-focused {\n border-color: var(--ui-primary);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n }\n\n .ui-select-display {\n padding: 10px 32px 10px 14px;\n font-size: 0.9375rem;\n color: var(--ui-text-primary);\n flex-grow: 1;\n min-height: 1.5em;\n line-height: 1.5;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .ui-select-icon {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n color: var(--ui-text-secondary);\n transition: transform 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .ui-select-icon-open {\n transform: translateY(-50%) rotate(180deg);\n }\n\n .ui-select-variant-filled {\n background-color: #f1f5f9;\n border-color: transparent;\n }\n\n .ui-select-variant-filled:hover {\n background-color: #e2e8f0;\n }\n\n .ui-select-variant-filled.ui-select-container-focused {\n background-color: var(--ui-bg);\n border-color: var(--ui-primary);\n }\n\n .ui-select-variant-standard {\n border-radius: 0;\n border: 0;\n border-bottom: 1px solid var(--ui-border);\n background-color: transparent;\n }\n\n .ui-select-variant-standard.ui-select-container-focused {\n border-bottom: 2px solid var(--ui-primary);\n box-shadow: none;\n }\n\n .ui-select-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n min-width: 100%;\n background-color: var(--ui-bg);\n border: 1px solid var(--ui-border);\n border-radius: var(--ui-radius);\n margin-top: 4px;\n box-shadow: var(--ui-shadow-lg);\n padding: 4px 0;\n max-height: 300px;\n overflow-y: auto;\n animation: ui-select-menu-fade-in 0.15s ease-out;\n }\n\n @keyframes ui-select-menu-fade-in {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .ui-select-menu-autoWidth {\n min-width: unset;\n width: max-content;\n }\n\n .ui-select-native {\n width: 100%;\n padding: 10px 14px;\n font-size: 0.9375rem;\n border: 1px solid var(--ui-border);\n border-radius: var(--ui-radius);\n background-color: var(--ui-bg);\n appearance: none;\n cursor: pointer;\n outline: none;\n font-family: inherit;\n color: var(--ui-text-primary);\n }\n\n .ui-select-native:focus {\n border-color: var(--ui-primary);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n }\n\n .ui-select-menu-item {\n padding: 10px 16px;\n font-size: 0.9375rem;\n cursor: pointer;\n transition: background-color 0.2s;\n color: var(--ui-text-primary);\n display: flex;\n align-items: center;\n }\n\n .ui-select-menu-item:hover {\n background-color: #f1f5f9;\n }\n\n .ui-select-menu-item-selected {\n background-color: #eff6ff;\n color: var(--ui-primary);\n font-weight: 500;\n }\n\n .ui-select-menu-item-selected:hover {\n background-color: #dbeafe;\n }\n`;\n\nexport const Select = forwardRef<HTMLDivElement, SelectProps>((props, ref) => {\n const {\n autoWidth = false,\n children,\n classes = {},\n defaultOpen = false,\n defaultValue,\n displayEmpty = false,\n fullWidth = false,\n IconComponent: Icon = ChevronDown,\n id: idProp,\n input,\n inputProps = {},\n label,\n labelId,\n MenuProps = {},\n multiple = false,\n native = false,\n onChange,\n onClose,\n onOpen,\n open: openProp,\n renderValue,\n SelectDisplayProps = {},\n sx,\n value: valueProp,\n variant = 'outlined',\n className,\n ...rest\n } = props;\n\n const generatedId = useId();\n const id = idProp || generatedId;\n const menuId = `${id}-menu`;\n \n const [internalValue, setInternalValue] = useState(defaultValue !== undefined ? defaultValue : (multiple ? [] : ''));\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n const [focused, setFocused] = useState(false);\n\n const isControlledValue = valueProp !== undefined;\n const value = isControlledValue ? valueProp : internalValue;\n\n const isControlledOpen = openProp !== undefined;\n const isOpen = isControlledOpen ? openProp : internalOpen;\n\n const containerRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const handleToggle = (event: React.MouseEvent | React.KeyboardEvent) => {\n if (native) return;\n \n const nextOpen = !isOpen;\n if (!isControlledOpen) {\n setInternalOpen(nextOpen);\n }\n\n if (nextOpen) {\n onOpen?.(event);\n } else {\n onClose?.(event);\n }\n };\n\n const handleClose = (event: any) => {\n if (!isControlledOpen) {\n setInternalOpen(false);\n }\n onClose?.(event);\n };\n\n const handleSelect = (val: any, child?: React.ReactNode) => {\n let newValue = val;\n \n if (multiple) {\n const currentArray = Array.isArray(value) ? value : [];\n if (currentArray.includes(val)) {\n newValue = currentArray.filter((v) => v !== val);\n } else {\n newValue = [...currentArray, val];\n }\n }\n\n if (!isControlledValue) {\n setInternalValue(newValue);\n }\n\n if (onChange) {\n const event: SelectChangeEvent = {\n target: {\n value: newValue,\n name: inputProps.name,\n },\n };\n onChange(event, child);\n }\n\n if (!multiple) {\n handleClose(null);\n }\n };\n\n // Close menu when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n isOpen &&\n containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n menuRef.current &&\n !menuRef.current.contains(event.target as Node)\n ) {\n handleClose(event);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n const getDisplayValue = () => {\n if (renderValue) {\n return renderValue(value);\n }\n\n if (multiple && Array.isArray(value)) {\n if (value.length === 0 && displayEmpty) return '';\n return value.join(', ');\n }\n\n if (value === '' || value === undefined || value === null) {\n return displayEmpty ? '' : null;\n }\n\n // Attempt to find the label from children\n let labelFound = value;\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.props.value === value) {\n labelFound = child.props.children;\n }\n });\n\n return labelFound;\n };\n\n if (native) {\n return (\n <div className={cn('ui-select-root', fullWidth && 'ui-select-fullWidth', className, classes.root)} style={sx}>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n {label && (\n <label htmlFor={id} className={cn('ui-select-label', classes.label)}>\n {label}\n </label>\n )}\n <select\n id={id}\n value={value}\n onChange={(e) => handleSelect(e.target.value)}\n className={cn('ui-select-native', classes.native)}\n {...inputProps}\n {...(rest as any)}\n >\n {children}\n </select>\n </div>\n );\n }\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <div\n ref={containerRef}\n className={cn(\n 'ui-select-root',\n fullWidth && 'ui-select-fullWidth',\n className,\n classes.root\n )}\n style={sx}\n >\n {label && (\n <label\n id={labelId}\n className={cn(\n 'ui-select-label',\n focused && 'ui-select-label-focused',\n classes.label\n )}\n >\n {label}\n </label>\n )}\n\n <div\n ref={ref}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-labelledby={labelId}\n id={id}\n tabIndex={0}\n onClick={handleToggle}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n className={cn(\n 'ui-select-container',\n `ui-select-variant-${variant}`,\n focused && 'ui-select-container-focused',\n isOpen && 'ui-select-container-open',\n classes.container\n )}\n {...SelectDisplayProps}\n >\n <div className={cn('ui-select-display', classes.select)}>\n {getDisplayValue()}\n </div>\n <div className={cn('ui-select-icon', isOpen && 'ui-select-icon-open', classes.icon)}>\n <Icon size={20} />\n </div>\n </div>\n\n {isOpen && (\n <div\n ref={menuRef}\n id={menuId}\n role=\"listbox\"\n className={cn(\n 'ui-select-menu',\n autoWidth && 'ui-select-menu-autoWidth',\n MenuProps.className,\n classes.menu\n )}\n {...MenuProps}\n >\n {React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return null;\n\n const isSelected = multiple\n ? Array.isArray(value) && value.includes(child.props.value)\n : value === child.props.value;\n\n return React.cloneElement(child as React.ReactElement<any>, {\n onClick: (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n handleSelect(child.props.value, child);\n },\n className: cn(\n 'ui-select-menu-item',\n isSelected && 'ui-select-menu-item-selected',\n child.props.className\n ),\n role: 'option',\n 'aria-selected': isSelected,\n });\n })}\n </div>\n )}\n </div>\n </>\n );\n});\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import React, { forwardRef, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {\n value?: any;\n disabled?: boolean;\n selected?: boolean;\n}\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n ({ className, children, value, disabled, selected, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'ui-select-menu-item',\n selected && 'ui-select-menu-item-selected',\n disabled && 'ui-select-menu-item-disabled',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport default MenuItem;\n"]}
@@ -0,0 +1,201 @@
1
+ 'use strict';var react=require('react'),jsxRuntime=require('react/jsx-runtime');var N=`
2
+ :root {
3
+ --df-primary: #3b82f6;
4
+ --df-primary-hover: #2563eb;
5
+ --df-text-main: #1e293b;
6
+ --df-text-secondary: #64748b;
7
+ --df-bg-main: #ffffff;
8
+ --df-bg-glass: rgba(255, 255, 255, 0.85);
9
+ --df-border: #e2e8f0;
10
+ --df-border-focus: #3b82f6;
11
+ --df-radius-lg: 12px;
12
+ --df-radius-md: 8px;
13
+ --df-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
14
+ }
15
+
16
+ .df-backdrop {
17
+ position: fixed;
18
+ top: 0;
19
+ left: 0;
20
+ right: 0;
21
+ bottom: 0;
22
+ background: rgba(15, 23, 42, 0.4);
23
+ backdrop-filter: blur(4px);
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ z-index: 1000;
28
+ opacity: 0;
29
+ visibility: hidden;
30
+ transition: opacity 0.3s ease, visibility 0.3s ease;
31
+ }
32
+
33
+ .df-backdrop.df-open {
34
+ opacity: 1;
35
+ visibility: visible;
36
+ }
37
+
38
+ .df-dialog {
39
+ background: var(--df-bg-glass);
40
+ backdrop-filter: blur(16px);
41
+ width: 100%;
42
+ max-width: 400px;
43
+ border-radius: var(--df-radius-lg);
44
+ box-shadow: var(--df-shadow);
45
+ display: flex;
46
+ flex-direction: column;
47
+ transform: scale(0.95) translateY(10px);
48
+ opacity: 0;
49
+ transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease;
50
+ font-family: 'Inter', system-ui, -apple-system, sans-serif;
51
+ border: 1px solid rgba(255, 255, 255, 0.5);
52
+ margin: 16px;
53
+ }
54
+
55
+ .df-backdrop.df-open .df-dialog {
56
+ transform: scale(1) translateY(0);
57
+ opacity: 1;
58
+ }
59
+
60
+ .df-header {
61
+ padding: 20px 24px 16px;
62
+ border-bottom: 1px solid var(--df-border);
63
+ }
64
+
65
+ .df-title {
66
+ margin: 0;
67
+ font-size: 18px;
68
+ font-weight: 600;
69
+ color: var(--df-primary);
70
+ }
71
+
72
+ .df-content {
73
+ padding: 24px;
74
+ display: flex;
75
+ flex-direction: column;
76
+ gap: 20px;
77
+ }
78
+
79
+ .df-form-group {
80
+ display: flex;
81
+ flex-direction: column;
82
+ gap: 8px;
83
+ position: relative;
84
+ }
85
+
86
+ .df-label {
87
+ font-size: 13px;
88
+ font-weight: 500;
89
+ color: var(--df-text-secondary);
90
+ }
91
+
92
+ .df-input {
93
+ width: 100%;
94
+ padding: 10px 14px;
95
+ font-size: 14px;
96
+ color: var(--df-text-main);
97
+ background: var(--df-bg-main);
98
+ border: 1px solid var(--df-border);
99
+ border-radius: var(--df-radius-md);
100
+ outline: none;
101
+ transition: all 0.2s ease;
102
+ box-sizing: border-box;
103
+ appearance: none;
104
+ font-family: inherit;
105
+ }
106
+
107
+ .df-input:focus {
108
+ border-color: var(--df-border-focus);
109
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
110
+ }
111
+
112
+ /* Custom Select Wrapper for arrow */
113
+ .df-select-wrapper {
114
+ position: relative;
115
+ width: 100%;
116
+ }
117
+
118
+ .df-select-wrapper::after {
119
+ content: '';
120
+ position: absolute;
121
+ right: 14px;
122
+ top: 50%;
123
+ transform: translateY(-50%);
124
+ width: 0;
125
+ height: 0;
126
+ border-left: 5px solid transparent;
127
+ border-right: 5px solid transparent;
128
+ border-top: 5px solid var(--df-text-secondary);
129
+ pointer-events: none;
130
+ }
131
+
132
+ .df-select {
133
+ padding-right: 32px;
134
+ cursor: pointer;
135
+ }
136
+
137
+ .df-custom-range {
138
+ display: flex;
139
+ gap: 16px;
140
+ animation: dfSlideDown 0.3s ease-out;
141
+ }
142
+
143
+ .df-custom-range .df-form-group {
144
+ flex: 1;
145
+ }
146
+
147
+ @keyframes dfSlideDown {
148
+ from { opacity: 0; transform: translateY(-10px); }
149
+ to { opacity: 1; transform: translateY(0); }
150
+ }
151
+
152
+ .df-footer {
153
+ padding: 16px 24px 24px;
154
+ display: flex;
155
+ justify-content: flex-end;
156
+ gap: 12px;
157
+ }
158
+
159
+ .df-btn {
160
+ padding: 8px 16px;
161
+ font-size: 14px;
162
+ font-weight: 600;
163
+ border-radius: var(--df-radius-md);
164
+ cursor: pointer;
165
+ transition: all 0.2s ease;
166
+ border: 1px solid transparent;
167
+ font-family: inherit;
168
+ }
169
+
170
+ .df-btn-cancel {
171
+ background: transparent;
172
+ color: var(--df-text-secondary);
173
+ }
174
+
175
+ .df-btn-cancel:hover {
176
+ background: rgba(0, 0, 0, 0.04);
177
+ color: var(--df-text-main);
178
+ }
179
+
180
+ .df-btn-apply {
181
+ background: var(--df-primary);
182
+ color: white;
183
+ box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);
184
+ }
185
+
186
+ .df-btn-apply:hover {
187
+ background: var(--df-primary-hover);
188
+ transform: translateY(-1px);
189
+ box-shadow: 0 4px 6px rgba(59, 130, 246, 0.4);
190
+ }
191
+
192
+ .df-btn-apply:active {
193
+ transform: translateY(0);
194
+ }
195
+
196
+ /* Prevent background scrolling when modal is open */
197
+ body.df-modal-open {
198
+ overflow: hidden;
199
+ }
200
+ `,D=["Today","Yesterday","Last 7 Days","Last 30 Days","This Month","Last Month","Custom"],C=({open:r,title:x="Date Filter",options:g=D,initialValue:t,onClose:d,onApply:u})=>{let[s,f]=react.useState(t?.option||"Today"),[n,p]=react.useState(t?.from||""),[c,b]=react.useState(t?.to||""),m=react.useRef(null);react.useEffect(()=>{r&&t&&(f(t.option),p(t.from||""),b(t.to||""));},[r,t]),react.useEffect(()=>(r?document.body.classList.add("df-modal-open"):document.body.classList.remove("df-modal-open"),()=>document.body.classList.remove("df-modal-open")),[r]);let v=e=>{e.target===m.current&&d();};react.useEffect(()=>{let e=w=>{w.key==="Escape"&&r&&d();};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[r,d]);let y=()=>{u({option:s,...s==="Custom"?{from:n,to:c}:{}});},h=new Date().toISOString().split("T")[0];return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("style",{dangerouslySetInnerHTML:{__html:N}}),jsxRuntime.jsx("div",{ref:m,className:`df-backdrop ${r?"df-open":""}`,onClick:v,role:"dialog","aria-modal":"true","aria-labelledby":"df-dialog-title",children:jsxRuntime.jsxs("div",{className:"df-dialog",children:[jsxRuntime.jsx("div",{className:"df-header",children:jsxRuntime.jsx("h2",{id:"df-dialog-title",className:"df-title",children:x})}),jsxRuntime.jsxs("div",{className:"df-content",children:[jsxRuntime.jsxs("div",{className:"df-form-group",children:[jsxRuntime.jsx("label",{className:"df-label",children:"Select Range"}),jsxRuntime.jsx("div",{className:"df-select-wrapper",children:jsxRuntime.jsx("select",{className:"df-input df-select",value:s,onChange:e=>f(e.target.value),children:g.map(e=>jsxRuntime.jsx("option",{value:e,children:e},e))})})]}),s==="Custom"&&jsxRuntime.jsxs("div",{className:"df-custom-range",children:[jsxRuntime.jsxs("div",{className:"df-form-group",children:[jsxRuntime.jsx("label",{className:"df-label",children:"From Date"}),jsxRuntime.jsx("input",{type:"date",className:"df-input",value:n,onChange:e=>p(e.target.value),max:h})]}),jsxRuntime.jsxs("div",{className:"df-form-group",children:[jsxRuntime.jsx("label",{className:"df-label",children:"To Date"}),jsxRuntime.jsx("input",{type:"date",className:"df-input",value:c,onChange:e=>b(e.target.value),min:n||void 0})]})]})]}),jsxRuntime.jsxs("div",{className:"df-footer",children:[jsxRuntime.jsx("button",{className:"df-btn df-btn-cancel",onClick:d,children:"Cancel"}),jsxRuntime.jsx("button",{className:"df-btn df-btn-apply",onClick:y,children:"Apply"})]})]})})]})};exports.a=C;//# sourceMappingURL=chunk-2TXYJ7YE.js.map
201
+ //# sourceMappingURL=chunk-2TXYJ7YE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/DateFilter/DateFilter.tsx"],"names":["STYLES","DEFAULT_OPTIONS","DateFilter","open","title","options","initialValue","onClose","onApply","option","setOption","useState","from","setFrom","to","setTo","backdropRef","useRef","useEffect","handleBackdropClick","handleKeyDown","e","handleApply","todayStr","jsxs","Fragment","jsx","opt"],"mappings":"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","file":"chunk-2TXYJ7YE.js","sourcesContent":["'use client';\n\nimport React, { useState, useEffect, useRef } from 'react';\nimport { DateFilterProps, DateFilterValue } from './DateFilter.types';\n\nconst STYLES = `\n :root {\n --df-primary: #3b82f6;\n --df-primary-hover: #2563eb;\n --df-text-main: #1e293b;\n --df-text-secondary: #64748b;\n --df-bg-main: #ffffff;\n --df-bg-glass: rgba(255, 255, 255, 0.85);\n --df-border: #e2e8f0;\n --df-border-focus: #3b82f6;\n --df-radius-lg: 12px;\n --df-radius-md: 8px;\n --df-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\n }\n\n .df-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(15, 23, 42, 0.4);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n }\n\n .df-backdrop.df-open {\n opacity: 1;\n visibility: visible;\n }\n\n .df-dialog {\n background: var(--df-bg-glass);\n backdrop-filter: blur(16px);\n width: 100%;\n max-width: 400px;\n border-radius: var(--df-radius-lg);\n box-shadow: var(--df-shadow);\n display: flex;\n flex-direction: column;\n transform: scale(0.95) translateY(10px);\n opacity: 0;\n transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease;\n font-family: 'Inter', system-ui, -apple-system, sans-serif;\n border: 1px solid rgba(255, 255, 255, 0.5);\n margin: 16px;\n }\n\n .df-backdrop.df-open .df-dialog {\n transform: scale(1) translateY(0);\n opacity: 1;\n }\n\n .df-header {\n padding: 20px 24px 16px;\n border-bottom: 1px solid var(--df-border);\n }\n\n .df-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--df-primary);\n }\n\n .df-content {\n padding: 24px;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .df-form-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n position: relative;\n }\n\n .df-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--df-text-secondary);\n }\n\n .df-input {\n width: 100%;\n padding: 10px 14px;\n font-size: 14px;\n color: var(--df-text-main);\n background: var(--df-bg-main);\n border: 1px solid var(--df-border);\n border-radius: var(--df-radius-md);\n outline: none;\n transition: all 0.2s ease;\n box-sizing: border-box;\n appearance: none;\n font-family: inherit;\n }\n\n .df-input:focus {\n border-color: var(--df-border-focus);\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);\n }\n\n /* Custom Select Wrapper for arrow */\n .df-select-wrapper {\n position: relative;\n width: 100%;\n }\n\n .df-select-wrapper::after {\n content: '';\n position: absolute;\n right: 14px;\n top: 50%;\n transform: translateY(-50%);\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n border-top: 5px solid var(--df-text-secondary);\n pointer-events: none;\n }\n\n .df-select {\n padding-right: 32px;\n cursor: pointer;\n }\n\n .df-custom-range {\n display: flex;\n gap: 16px;\n animation: dfSlideDown 0.3s ease-out;\n }\n\n .df-custom-range .df-form-group {\n flex: 1;\n }\n\n @keyframes dfSlideDown {\n from { opacity: 0; transform: translateY(-10px); }\n to { opacity: 1; transform: translateY(0); }\n }\n\n .df-footer {\n padding: 16px 24px 24px;\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n }\n\n .df-btn {\n padding: 8px 16px;\n font-size: 14px;\n font-weight: 600;\n border-radius: var(--df-radius-md);\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n font-family: inherit;\n }\n\n .df-btn-cancel {\n background: transparent;\n color: var(--df-text-secondary);\n }\n\n .df-btn-cancel:hover {\n background: rgba(0, 0, 0, 0.04);\n color: var(--df-text-main);\n }\n\n .df-btn-apply {\n background: var(--df-primary);\n color: white;\n box-shadow: 0 2px 4px rgba(59, 130, 246, 0.3);\n }\n\n .df-btn-apply:hover {\n background: var(--df-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 6px rgba(59, 130, 246, 0.4);\n }\n\n .df-btn-apply:active {\n transform: translateY(0);\n }\n \n /* Prevent background scrolling when modal is open */\n body.df-modal-open {\n overflow: hidden;\n }\n`;\n\nconst DEFAULT_OPTIONS = [\n 'Today',\n 'Yesterday',\n 'Last 7 Days',\n 'Last 30 Days',\n 'This Month',\n 'Last Month',\n 'Custom'\n];\n\nexport const DateFilter = ({\n open,\n title = 'Date Filter',\n options = DEFAULT_OPTIONS,\n initialValue,\n onClose,\n onApply\n}: DateFilterProps) => {\n const [option, setOption] = useState<string>(initialValue?.option || 'Today');\n const [from, setFrom] = useState<string>(initialValue?.from || '');\n const [to, setTo] = useState<string>(initialValue?.to || '');\n \n const backdropRef = useRef<HTMLDivElement>(null);\n\n // Sync state with prop if it changes\n useEffect(() => {\n if (open && initialValue) {\n setOption(initialValue.option);\n setFrom(initialValue.from || '');\n setTo(initialValue.to || '');\n }\n }, [open, initialValue]);\n\n // Handle body scroll locking\n useEffect(() => {\n if (open) {\n document.body.classList.add('df-modal-open');\n } else {\n document.body.classList.remove('df-modal-open');\n }\n return () => document.body.classList.remove('df-modal-open');\n }, [open]);\n\n // Handle click outside\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (e.target === backdropRef.current) {\n onClose();\n }\n };\n\n // Handle Escape key\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open) {\n onClose();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [open, onClose]);\n\n const handleApply = () => {\n onApply({\n option,\n ...(option === 'Custom' ? { from, to } : {})\n });\n };\n\n const todayStr = new Date().toISOString().split('T')[0];\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <div \n ref={backdropRef}\n className={`df-backdrop ${open ? 'df-open' : ''}`}\n onClick={handleBackdropClick}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"df-dialog-title\"\n >\n <div className=\"df-dialog\">\n <div className=\"df-header\">\n <h2 id=\"df-dialog-title\" className=\"df-title\">{title}</h2>\n </div>\n \n <div className=\"df-content\">\n <div className=\"df-form-group\">\n <label className=\"df-label\">Select Range</label>\n <div className=\"df-select-wrapper\">\n <select \n className=\"df-input df-select\"\n value={option}\n onChange={(e) => setOption(e.target.value)}\n >\n {options.map((opt) => (\n <option key={opt} value={opt}>{opt}</option>\n ))}\n </select>\n </div>\n </div>\n\n {option === 'Custom' && (\n <div className=\"df-custom-range\">\n <div className=\"df-form-group\">\n <label className=\"df-label\">From Date</label>\n <input \n type=\"date\"\n className=\"df-input\"\n value={from}\n onChange={(e) => setFrom(e.target.value)}\n max={todayStr}\n />\n </div>\n <div className=\"df-form-group\">\n <label className=\"df-label\">To Date</label>\n <input \n type=\"date\"\n className=\"df-input\"\n value={to}\n onChange={(e) => setTo(e.target.value)}\n min={from || undefined}\n />\n </div>\n </div>\n )}\n </div>\n\n <div className=\"df-footer\">\n <button className=\"df-btn df-btn-cancel\" onClick={onClose}>\n Cancel\n </button>\n <button className=\"df-btn df-btn-apply\" onClick={handleApply}>\n Apply\n </button>\n </div>\n </div>\n </div>\n </>\n );\n};\n"]}