dhanasekar-ui 1.6.0 → 1.7.0

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 (175) hide show
  1. package/dist/{chunk-ZMB4U5RP.js → chunk-2I4K4OCE.js} +3 -3
  2. package/dist/{chunk-ZMB4U5RP.js.map → chunk-2I4K4OCE.js.map} +1 -1
  3. package/dist/{chunk-WG2DQVVM.mjs → chunk-2OAU53K6.mjs} +3 -3
  4. package/dist/{chunk-WG2DQVVM.mjs.map → chunk-2OAU53K6.mjs.map} +1 -1
  5. package/dist/{chunk-ULMQZANW.mjs → chunk-3XBFOCPX.mjs} +3 -3
  6. package/dist/{chunk-ULMQZANW.mjs.map → chunk-3XBFOCPX.mjs.map} +1 -1
  7. package/dist/{chunk-P5HHRCE5.js → chunk-46JFDK2G.js} +4 -4
  8. package/dist/{chunk-P5HHRCE5.js.map → chunk-46JFDK2G.js.map} +1 -1
  9. package/dist/{chunk-PL2R3LYL.mjs → chunk-5D4JO44P.mjs} +3 -3
  10. package/dist/{chunk-PL2R3LYL.mjs.map → chunk-5D4JO44P.mjs.map} +1 -1
  11. package/dist/chunk-5ZOZOY4J.mjs +2 -0
  12. package/dist/chunk-5ZOZOY4J.mjs.map +1 -0
  13. package/dist/{chunk-UCFS7EH2.mjs → chunk-6FBJ3S6V.mjs} +3 -3
  14. package/dist/{chunk-UCFS7EH2.mjs.map → chunk-6FBJ3S6V.mjs.map} +1 -1
  15. package/dist/chunk-7FN45G2T.js +2 -0
  16. package/dist/chunk-7FN45G2T.js.map +1 -0
  17. package/dist/{chunk-AK3NQBYU.mjs → chunk-7U4ZR2N6.mjs} +3 -3
  18. package/dist/{chunk-AK3NQBYU.mjs.map → chunk-7U4ZR2N6.mjs.map} +1 -1
  19. package/dist/{chunk-K45L3ZJM.mjs → chunk-AXTWVJLU.mjs} +3 -3
  20. package/dist/{chunk-K45L3ZJM.mjs.map → chunk-AXTWVJLU.mjs.map} +1 -1
  21. package/dist/{chunk-TYVF66RP.js → chunk-BLXL2SZF.js} +3 -3
  22. package/dist/{chunk-TYVF66RP.js.map → chunk-BLXL2SZF.js.map} +1 -1
  23. package/dist/chunk-CQNHZJ7I.mjs +2 -0
  24. package/dist/chunk-CQNHZJ7I.mjs.map +1 -0
  25. package/dist/{chunk-UC2EXKW3.mjs → chunk-DYQFJBYE.mjs} +3 -3
  26. package/dist/chunk-DYQFJBYE.mjs.map +1 -0
  27. package/dist/chunk-FRZ7JKYE.js +303 -0
  28. package/dist/chunk-FRZ7JKYE.js.map +1 -0
  29. package/dist/{chunk-ZPJSBORX.js → chunk-GTLOJ4OX.js} +3 -3
  30. package/dist/{chunk-ZPJSBORX.js.map → chunk-GTLOJ4OX.js.map} +1 -1
  31. package/dist/chunk-HAWHD2CS.js +2 -0
  32. package/dist/chunk-HAWHD2CS.js.map +1 -0
  33. package/dist/{chunk-XWEEWNZK.mjs → chunk-HBRNCHNF.mjs} +3 -3
  34. package/dist/{chunk-XWEEWNZK.mjs.map → chunk-HBRNCHNF.mjs.map} +1 -1
  35. package/dist/{chunk-HEVMYBGK.js → chunk-HZF4MXSO.js} +3 -3
  36. package/dist/{chunk-HEVMYBGK.js.map → chunk-HZF4MXSO.js.map} +1 -1
  37. package/dist/{chunk-YPMUFP2I.js → chunk-IU3PO4JC.js} +4 -4
  38. package/dist/{chunk-YPMUFP2I.js.map → chunk-IU3PO4JC.js.map} +1 -1
  39. package/dist/{chunk-HWD2HCCH.js → chunk-KCHEAJQY.js} +4 -4
  40. package/dist/{chunk-HWD2HCCH.js.map → chunk-KCHEAJQY.js.map} +1 -1
  41. package/dist/chunk-KJECRLIK.mjs +2 -0
  42. package/dist/chunk-KJECRLIK.mjs.map +1 -0
  43. package/dist/{chunk-3K6JBWL2.mjs → chunk-L73SH4IC.mjs} +3 -3
  44. package/dist/{chunk-3K6JBWL2.mjs.map → chunk-L73SH4IC.mjs.map} +1 -1
  45. package/dist/chunk-LJZR5S2S.mjs +303 -0
  46. package/dist/chunk-LJZR5S2S.mjs.map +1 -0
  47. package/dist/chunk-MAXZQTTY.mjs +2 -0
  48. package/dist/chunk-MAXZQTTY.mjs.map +1 -0
  49. package/dist/{chunk-P4WXCRNI.mjs → chunk-MCQHRTRD.mjs} +3 -3
  50. package/dist/{chunk-P4WXCRNI.mjs.map → chunk-MCQHRTRD.mjs.map} +1 -1
  51. package/dist/{chunk-C5X45JOF.mjs → chunk-NGNPVIAG.mjs} +3 -3
  52. package/dist/{chunk-C5X45JOF.mjs.map → chunk-NGNPVIAG.mjs.map} +1 -1
  53. package/dist/{chunk-7UWMKTOT.js → chunk-NKEF355Z.js} +3 -3
  54. package/dist/chunk-NKEF355Z.js.map +1 -0
  55. package/dist/chunk-NPGQQ67F.js +90 -0
  56. package/dist/chunk-NPGQQ67F.js.map +1 -0
  57. package/dist/{chunk-PFQIHJ6F.js → chunk-OHZG62II.js} +2 -2
  58. package/dist/{chunk-PFQIHJ6F.js.map → chunk-OHZG62II.js.map} +1 -1
  59. package/dist/chunk-PSYZOU5W.js +2 -0
  60. package/dist/chunk-PSYZOU5W.js.map +1 -0
  61. package/dist/{chunk-7XVF6WPJ.js → chunk-Q6CP36OQ.js} +3 -3
  62. package/dist/chunk-Q6CP36OQ.js.map +1 -0
  63. package/dist/{chunk-IK7K7ZJZ.mjs → chunk-QSUBLNQA.mjs} +3 -3
  64. package/dist/{chunk-IK7K7ZJZ.mjs.map → chunk-QSUBLNQA.mjs.map} +1 -1
  65. package/dist/{chunk-N6LNMNTA.js → chunk-QTBXSLB7.js} +3 -3
  66. package/dist/{chunk-N6LNMNTA.js.map → chunk-QTBXSLB7.js.map} +1 -1
  67. package/dist/{chunk-KKRI6OSJ.mjs → chunk-RTAANBRB.mjs} +3 -3
  68. package/dist/{chunk-KKRI6OSJ.mjs.map → chunk-RTAANBRB.mjs.map} +1 -1
  69. package/dist/{chunk-EPVYHGER.js → chunk-SATPFSKS.js} +3 -3
  70. package/dist/{chunk-EPVYHGER.js.map → chunk-SATPFSKS.js.map} +1 -1
  71. package/dist/chunk-TYTCGH2C.js +2 -0
  72. package/dist/chunk-TYTCGH2C.js.map +1 -0
  73. package/dist/{chunk-7IWJZHMP.js → chunk-UFID3OJL.js} +3 -3
  74. package/dist/{chunk-7IWJZHMP.js.map → chunk-UFID3OJL.js.map} +1 -1
  75. package/dist/{chunk-NN5XQUE5.js → chunk-UMANLRMH.js} +3 -3
  76. package/dist/{chunk-NN5XQUE5.js.map → chunk-UMANLRMH.js.map} +1 -1
  77. package/dist/{chunk-DBSBLGGH.js → chunk-V7I4VOGW.js} +3 -3
  78. package/dist/{chunk-DBSBLGGH.js.map → chunk-V7I4VOGW.js.map} +1 -1
  79. package/dist/{chunk-MOC6N23X.mjs → chunk-VAK4ZMNE.mjs} +3 -3
  80. package/dist/{chunk-MOC6N23X.mjs.map → chunk-VAK4ZMNE.mjs.map} +1 -1
  81. package/dist/{chunk-JM6DZDO3.js → chunk-VT6MIHH4.js} +3 -3
  82. package/dist/{chunk-JM6DZDO3.js.map → chunk-VT6MIHH4.js.map} +1 -1
  83. package/dist/{chunk-SC44IC5R.js → chunk-VURSJNHH.js} +3 -3
  84. package/dist/{chunk-SC44IC5R.js.map → chunk-VURSJNHH.js.map} +1 -1
  85. package/dist/{chunk-IZN52F5Z.mjs → chunk-WCECOLC2.mjs} +2 -2
  86. package/dist/{chunk-IZN52F5Z.mjs.map → chunk-WCECOLC2.mjs.map} +1 -1
  87. package/dist/{chunk-YA7B43FL.mjs → chunk-WCY2XASM.mjs} +3 -3
  88. package/dist/{chunk-YA7B43FL.mjs.map → chunk-WCY2XASM.mjs.map} +1 -1
  89. package/dist/{chunk-BQVXQWPS.mjs → chunk-XT2L2TG3.mjs} +3 -3
  90. package/dist/{chunk-BQVXQWPS.mjs.map → chunk-XT2L2TG3.mjs.map} +1 -1
  91. package/dist/{chunk-UYHBKE7G.mjs → chunk-XZF5PTFB.mjs} +3 -3
  92. package/dist/chunk-XZF5PTFB.mjs.map +1 -0
  93. package/dist/{chunk-ZCSVGCYM.js → chunk-YMBVI7C3.js} +3 -3
  94. package/dist/{chunk-ZCSVGCYM.js.map → chunk-YMBVI7C3.js.map} +1 -1
  95. package/dist/chunk-ZSICE2YV.mjs +90 -0
  96. package/dist/chunk-ZSICE2YV.mjs.map +1 -0
  97. package/dist/components/Accordion/index.js +1 -1
  98. package/dist/components/Accordion/index.mjs +1 -1
  99. package/dist/components/AppBar/index.js +1 -1
  100. package/dist/components/AppBar/index.mjs +1 -1
  101. package/dist/components/BottomNavigation/index.js +1 -1
  102. package/dist/components/BottomNavigation/index.mjs +1 -1
  103. package/dist/components/Box/index.js +1 -1
  104. package/dist/components/Box/index.mjs +1 -1
  105. package/dist/components/DataGrid/index.js +1 -1
  106. package/dist/components/DataGrid/index.mjs +1 -1
  107. package/dist/components/DateFilter/index.js +1 -1
  108. package/dist/components/DateFilter/index.mjs +1 -1
  109. package/dist/components/FileUploadField/index.js +1 -1
  110. package/dist/components/FileUploadField/index.mjs +1 -1
  111. package/dist/components/FilterTable/index.js +1 -1
  112. package/dist/components/FilterTable/index.mjs +1 -1
  113. package/dist/components/FormLayout/index.js +1 -1
  114. package/dist/components/FormLayout/index.mjs +1 -1
  115. package/dist/components/Grid/index.js +1 -1
  116. package/dist/components/Grid/index.mjs +1 -1
  117. package/dist/components/List/index.js +1 -1
  118. package/dist/components/List/index.mjs +1 -1
  119. package/dist/components/Pagination/index.js +1 -1
  120. package/dist/components/Pagination/index.mjs +1 -1
  121. package/dist/components/Paper/index.js +1 -1
  122. package/dist/components/Paper/index.mjs +1 -1
  123. package/dist/components/Progress/index.js +1 -1
  124. package/dist/components/Progress/index.mjs +1 -1
  125. package/dist/components/Rating/index.d.mts +70 -0
  126. package/dist/components/Rating/index.d.ts +70 -0
  127. package/dist/components/Rating/index.js +2 -0
  128. package/dist/components/Rating/index.js.map +1 -0
  129. package/dist/components/Rating/index.mjs +2 -0
  130. package/dist/components/Rating/index.mjs.map +1 -0
  131. package/dist/components/RichTextEditor/index.d.mts +13 -0
  132. package/dist/components/RichTextEditor/index.d.ts +13 -0
  133. package/dist/components/RichTextEditor/index.js +142 -0
  134. package/dist/components/RichTextEditor/index.js.map +1 -0
  135. package/dist/components/RichTextEditor/index.mjs +142 -0
  136. package/dist/components/RichTextEditor/index.mjs.map +1 -0
  137. package/dist/components/Skeleton/index.js +1 -1
  138. package/dist/components/Skeleton/index.mjs +1 -1
  139. package/dist/components/Snackbar/index.js +1 -1
  140. package/dist/components/Snackbar/index.mjs +1 -1
  141. package/dist/components/Stack/index.js +1 -1
  142. package/dist/components/Stack/index.mjs +1 -1
  143. package/dist/components/Table/index.js +1 -1
  144. package/dist/components/Table/index.mjs +1 -1
  145. package/dist/components/ThemeProvider/index.d.mts +282 -0
  146. package/dist/components/ThemeProvider/index.d.ts +282 -0
  147. package/dist/components/ThemeProvider/index.js +2 -0
  148. package/dist/components/ThemeProvider/index.js.map +1 -0
  149. package/dist/components/ThemeProvider/index.mjs +2 -0
  150. package/dist/components/ThemeProvider/index.mjs.map +1 -0
  151. package/dist/components/Timeline/index.d.mts +100 -0
  152. package/dist/components/Timeline/index.d.ts +100 -0
  153. package/dist/components/Timeline/index.js +2 -0
  154. package/dist/components/Timeline/index.js.map +1 -0
  155. package/dist/components/Timeline/index.mjs +2 -0
  156. package/dist/components/Timeline/index.mjs.map +1 -0
  157. package/dist/components/Transitions/index.js +1 -1
  158. package/dist/components/Transitions/index.mjs +1 -1
  159. package/dist/index.d.mts +3 -0
  160. package/dist/index.d.ts +3 -0
  161. package/dist/index.js +1 -1
  162. package/dist/index.mjs +1 -1
  163. package/package.json +21 -1
  164. package/dist/chunk-7UWMKTOT.js.map +0 -1
  165. package/dist/chunk-7XVF6WPJ.js.map +0 -1
  166. package/dist/chunk-HGGQFNUJ.mjs +0 -2
  167. package/dist/chunk-HGGQFNUJ.mjs.map +0 -1
  168. package/dist/chunk-I6OJHQZX.mjs +0 -2
  169. package/dist/chunk-I6OJHQZX.mjs.map +0 -1
  170. package/dist/chunk-LIBHUJ27.js +0 -2
  171. package/dist/chunk-LIBHUJ27.js.map +0 -1
  172. package/dist/chunk-MLURKSJZ.js +0 -2
  173. package/dist/chunk-MLURKSJZ.js.map +0 -1
  174. package/dist/chunk-UC2EXKW3.mjs.map +0 -1
  175. package/dist/chunk-UYHBKE7G.mjs.map +0 -1
@@ -0,0 +1,303 @@
1
+ import {a}from'./chunk-547MQ4FI.mjs';import {createContext,forwardRef,useContext}from'react';import {jsxs,jsx}from'react/jsx-runtime';var f=createContext({position:"right"}),T=()=>useContext(f),C=`
2
+ /* ===================================================
3
+ UI-TIMELINE \u2014 Premium Timeline Component Styles
4
+ =================================================== */
5
+
6
+ /* --- Base --- */
7
+ .ui-timeline {
8
+ list-style: none;
9
+ margin: 0;
10
+ padding: 0;
11
+ display: flex;
12
+ flex-direction: column;
13
+ width: 100%;
14
+ }
15
+
16
+ /* --- Item --- */
17
+ .ui-timeline-item {
18
+ display: flex;
19
+ position: relative;
20
+ align-items: stretch;
21
+ min-height: 64px;
22
+ }
23
+
24
+ /* --- Position Variants --- */
25
+ .ui-timeline-item.right { flex-direction: row; }
26
+ .ui-timeline-item.left { flex-direction: row-reverse; }
27
+
28
+ .ui-timeline-item.alternate:nth-child(even) { flex-direction: row-reverse; }
29
+ .ui-timeline-item.alternate-reverse { flex-direction: row-reverse; }
30
+ .ui-timeline-item.alternate-reverse:nth-child(even) { flex-direction: row; }
31
+
32
+ /* --- Separator --- */
33
+ .ui-timeline-separator {
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ flex-shrink: 0;
38
+ padding: 2px 16px;
39
+ }
40
+
41
+ /* ===================================================
42
+ DOT BASE
43
+ =================================================== */
44
+ .ui-timeline-dot {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ border-radius: 50%;
49
+ z-index: 2;
50
+ flex-shrink: 0;
51
+ box-sizing: border-box;
52
+ position: relative;
53
+ transition:
54
+ transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),
55
+ box-shadow 0.25s ease;
56
+ cursor: default;
57
+ user-select: none;
58
+ }
59
+
60
+ .ui-timeline-dot svg {
61
+ width: 1em;
62
+ height: 1em;
63
+ display: block;
64
+ flex-shrink: 0;
65
+ }
66
+
67
+ .ui-timeline-dot:hover {
68
+ transform: scale(1.18);
69
+ }
70
+
71
+ /* --- Dot Sizes --- */
72
+ .ui-timeline-dot.size-small { width: 12px; height: 12px; }
73
+ .ui-timeline-dot.size-medium { width: 42px; height: 42px; font-size: 1.1rem; }
74
+ .ui-timeline-dot.size-large { width: 58px; height: 58px; font-size: 1.4rem; }
75
+
76
+ /* ===================================================
77
+ DOT VARIANTS
78
+ =================================================== */
79
+
80
+ /* FILLED */
81
+ .ui-timeline-dot.filled {
82
+ background: var(--tl-color, #3b82f6);
83
+ color: #ffffff;
84
+ box-shadow:
85
+ 0 0 0 4px var(--tl-color-ring, rgba(59,130,246,0.16)),
86
+ 0 4px 14px var(--tl-color-shadow, rgba(59,130,246,0.32));
87
+ }
88
+ .ui-timeline-dot.filled:hover {
89
+ box-shadow:
90
+ 0 0 0 7px var(--tl-color-ring, rgba(59,130,246,0.2)),
91
+ 0 8px 22px var(--tl-color-shadow, rgba(59,130,246,0.42));
92
+ }
93
+
94
+ /* OUTLINED */
95
+ .ui-timeline-dot.outlined {
96
+ border: 2.5px solid var(--tl-color, #3b82f6);
97
+ background: #ffffff;
98
+ color: var(--tl-color, #3b82f6);
99
+ box-shadow: 0 0 0 4px var(--tl-color-ring, rgba(59,130,246,0.1));
100
+ }
101
+ .ui-timeline-dot.outlined:hover {
102
+ background: var(--tl-color-ring, rgba(59,130,246,0.07));
103
+ box-shadow: 0 0 0 7px var(--tl-color-ring, rgba(59,130,246,0.15));
104
+ }
105
+
106
+ /* GRADIENT */
107
+ .ui-timeline-dot.gradient {
108
+ background: linear-gradient(
109
+ 135deg,
110
+ var(--tl-color, #3b82f6),
111
+ var(--tl-color2, #a855f7)
112
+ );
113
+ color: #ffffff;
114
+ box-shadow:
115
+ 0 0 0 4px rgba(168, 85, 247, 0.14),
116
+ 0 4px 16px rgba(59, 130, 246, 0.34);
117
+ }
118
+ .ui-timeline-dot.gradient:hover {
119
+ box-shadow:
120
+ 0 0 0 8px rgba(168, 85, 247, 0.18),
121
+ 0 8px 26px rgba(59, 130, 246, 0.44);
122
+ }
123
+
124
+ /* ===================================================
125
+ PULSE ANIMATION
126
+ =================================================== */
127
+ @keyframes ui-tl-pulse {
128
+ 0% { transform: scale(1); opacity: 0.65; }
129
+ 70% { transform: scale(2.6); opacity: 0; }
130
+ 100% { transform: scale(2.6); opacity: 0; }
131
+ }
132
+
133
+ .ui-timeline-dot.pulse::after {
134
+ content: '';
135
+ position: absolute;
136
+ inset: 0;
137
+ border-radius: 50%;
138
+ background: var(--tl-color, #3b82f6);
139
+ animation: ui-tl-pulse 2s ease-out infinite;
140
+ z-index: -1;
141
+ pointer-events: none;
142
+ }
143
+ .ui-timeline-dot.pulse.gradient::after {
144
+ background: linear-gradient(135deg, var(--tl-color, #3b82f6), var(--tl-color2, #a855f7));
145
+ }
146
+
147
+ /* ===================================================
148
+ CONNECTOR
149
+ =================================================== */
150
+ .ui-timeline-connector {
151
+ width: var(--tl-conn-width, 2px);
152
+ flex: 1;
153
+ min-height: 20px;
154
+ margin: 5px 0;
155
+ border-radius: 999px;
156
+ background: var(--tl-conn-color, #e2e8f0);
157
+ transition: background 0.25s ease;
158
+ }
159
+
160
+ .ui-timeline-connector.dashed {
161
+ background: transparent !important;
162
+ border-left: var(--tl-conn-width, 2px) dashed var(--tl-conn-color, #e2e8f0);
163
+ width: 0 !important;
164
+ border-radius: 0;
165
+ }
166
+
167
+ .ui-timeline-connector.dotted {
168
+ background: transparent !important;
169
+ border-left: var(--tl-conn-width, 2px) dotted var(--tl-conn-color, #e2e8f0);
170
+ width: 0 !important;
171
+ border-radius: 0;
172
+ }
173
+
174
+ /* Hide last connector */
175
+ .ui-timeline-item:last-child .ui-timeline-connector {
176
+ display: none;
177
+ }
178
+
179
+ /* ===================================================
180
+ CONTENT & OPPOSITE CONTENT
181
+ =================================================== */
182
+ .ui-timeline-content {
183
+ flex: 1;
184
+ padding: 0 0 28px 0;
185
+ display: flex;
186
+ flex-direction: column;
187
+ justify-content: flex-start;
188
+ }
189
+
190
+ .ui-timeline-opposite {
191
+ flex: 0 0 128px;
192
+ padding: 0 0 28px 0;
193
+ display: flex;
194
+ flex-direction: column;
195
+ justify-content: flex-start;
196
+ color: #94a3b8;
197
+ font-size: 0.8125rem;
198
+ font-weight: 500;
199
+ letter-spacing: 0.01em;
200
+ }
201
+
202
+ /* --- Alignment rules --- */
203
+ .ui-timeline-item.right .ui-timeline-opposite { text-align: right; }
204
+ .ui-timeline-item.right .ui-timeline-content { text-align: left; }
205
+ .ui-timeline-item.left .ui-timeline-opposite { text-align: left; }
206
+ .ui-timeline-item.left .ui-timeline-content { text-align: right; }
207
+
208
+ .ui-timeline-item.alternate:nth-child(even) .ui-timeline-opposite { text-align: left; }
209
+ .ui-timeline-item.alternate:nth-child(even) .ui-timeline-content { text-align: right; }
210
+ .ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-opposite { text-align: left; }
211
+ .ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-content { text-align: right; }
212
+
213
+ /* Equal flex for alternate layouts */
214
+ .ui-timeline-item.alternate .ui-timeline-content,
215
+ .ui-timeline-item.alternate .ui-timeline-opposite,
216
+ .ui-timeline-item.alternate-reverse .ui-timeline-content,
217
+ .ui-timeline-item.alternate-reverse .ui-timeline-opposite {
218
+ flex: 1;
219
+ }
220
+
221
+ /* ===================================================
222
+ ENTRANCE ANIMATIONS
223
+ =================================================== */
224
+ @keyframes ui-tl-in-right {
225
+ from { opacity: 0; transform: translateX(-18px); }
226
+ to { opacity: 1; transform: translateX(0); }
227
+ }
228
+ @keyframes ui-tl-in-left {
229
+ from { opacity: 0; transform: translateX(18px); }
230
+ to { opacity: 1; transform: translateX(0); }
231
+ }
232
+ @keyframes ui-tl-in-dot {
233
+ from { opacity: 0; transform: scale(0.3); }
234
+ to { opacity: 1; transform: scale(1); }
235
+ }
236
+
237
+ /* Content animation */
238
+ .ui-timeline.animated .ui-timeline-content {
239
+ animation: ui-tl-in-right 0.45s cubic-bezier(0.4, 0, 0.2, 1) both;
240
+ }
241
+ .ui-timeline.animated .ui-timeline-item.left .ui-timeline-content,
242
+ .ui-timeline.animated .ui-timeline-item.alternate:nth-child(even) .ui-timeline-content,
243
+ .ui-timeline.animated .ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-content {
244
+ animation: ui-tl-in-left 0.45s cubic-bezier(0.4, 0, 0.2, 1) both;
245
+ }
246
+
247
+ /* Dot animation */
248
+ .ui-timeline.animated .ui-timeline-dot {
249
+ animation: ui-tl-in-dot 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;
250
+ }
251
+
252
+ /* Staggered delays (up to 8 items) */
253
+ .ui-timeline.animated .ui-timeline-item:nth-child(1) .ui-timeline-content,
254
+ .ui-timeline.animated .ui-timeline-item:nth-child(1) .ui-timeline-dot { animation-delay: 0ms; }
255
+ .ui-timeline.animated .ui-timeline-item:nth-child(2) .ui-timeline-content,
256
+ .ui-timeline.animated .ui-timeline-item:nth-child(2) .ui-timeline-dot { animation-delay: 100ms; }
257
+ .ui-timeline.animated .ui-timeline-item:nth-child(3) .ui-timeline-content,
258
+ .ui-timeline.animated .ui-timeline-item:nth-child(3) .ui-timeline-dot { animation-delay: 200ms; }
259
+ .ui-timeline.animated .ui-timeline-item:nth-child(4) .ui-timeline-content,
260
+ .ui-timeline.animated .ui-timeline-item:nth-child(4) .ui-timeline-dot { animation-delay: 300ms; }
261
+ .ui-timeline.animated .ui-timeline-item:nth-child(5) .ui-timeline-content,
262
+ .ui-timeline.animated .ui-timeline-item:nth-child(5) .ui-timeline-dot { animation-delay: 400ms; }
263
+ .ui-timeline.animated .ui-timeline-item:nth-child(6) .ui-timeline-content,
264
+ .ui-timeline.animated .ui-timeline-item:nth-child(6) .ui-timeline-dot { animation-delay: 500ms; }
265
+ .ui-timeline.animated .ui-timeline-item:nth-child(7) .ui-timeline-content,
266
+ .ui-timeline.animated .ui-timeline-item:nth-child(7) .ui-timeline-dot { animation-delay: 600ms; }
267
+ .ui-timeline.animated .ui-timeline-item:nth-child(8) .ui-timeline-content,
268
+ .ui-timeline.animated .ui-timeline-item:nth-child(8) .ui-timeline-dot { animation-delay: 700ms; }
269
+
270
+ /* ===================================================
271
+ RESPONSIVE
272
+ =================================================== */
273
+ @media (max-width: 768px) {
274
+ .ui-timeline-item,
275
+ .ui-timeline-item.left,
276
+ .ui-timeline-item.alternate,
277
+ .ui-timeline-item.alternate:nth-child(even),
278
+ .ui-timeline-item.alternate-reverse,
279
+ .ui-timeline-item.alternate-reverse:nth-child(even),
280
+ .ui-timeline-item.alternate-reverse:nth-child(odd) {
281
+ flex-direction: row !important;
282
+ }
283
+
284
+ .ui-timeline-opposite { display: none; }
285
+
286
+ .ui-timeline-content {
287
+ text-align: left !important;
288
+ flex: 1;
289
+ }
290
+
291
+ .ui-timeline-separator {
292
+ padding: 2px 12px 2px 0;
293
+ }
294
+
295
+ .ui-timeline-item.alternate .ui-timeline-content,
296
+ .ui-timeline-item.alternate .ui-timeline-opposite,
297
+ .ui-timeline-item.alternate-reverse .ui-timeline-content,
298
+ .ui-timeline-item.alternate-reverse .ui-timeline-opposite {
299
+ flex: unset;
300
+ }
301
+ }
302
+ `,w=forwardRef(({as:t,className:n,children:l,position:e="right",animated:i=false,...o},a$1)=>{let d=t||"ul";return jsxs(f.Provider,{value:{position:e},children:[jsx("style",{dangerouslySetInnerHTML:{__html:C}}),jsx(d,{ref:a$1,className:a("ui-timeline",i&&"animated",n),...o,children:l})]})});w.displayName="Timeline";var N=forwardRef(({as:t,className:n,children:l,position:e,...i},o)=>{let a$1=T();return jsx(t||"li",{ref:o,className:a("ui-timeline-item",e||a$1.position,n),...i,children:l})});N.displayName="TimelineItem";var E=forwardRef(({as:t,className:n,children:l,...e},i)=>jsx(t||"div",{ref:i,className:a("ui-timeline-separator",n),...e,children:l}));E.displayName="TimelineSeparator";var P=forwardRef(({as:t,className:n,color:l,variant:e="solid",width:i,style:o,...a$1},d)=>jsx(t||"div",{ref:d,style:{...o,"--tl-conn-color":l,"--tl-conn-width":i?`${i}px`:void 0},className:a("ui-timeline-connector",e,n),...a$1}));P.displayName="TimelineConnector";var S=forwardRef(({as:t,className:n,children:l,...e},i)=>jsx(t||"div",{ref:i,className:a("ui-timeline-content",n),...e,children:l}));S.displayName="TimelineContent";var I=forwardRef(({as:t,className:n,variant:l="filled",color:e="#3b82f6",color2:i="#a855f7",size:o,children:a$1,pulse:d=false,style:u,...h},x)=>{let g=t||"div",y=o||(a$1?"medium":"small"),c="rgba(59,130,246,0.16)",p="rgba(59,130,246,0.3)";return e&&e.startsWith("#")&&e.length===7&&(c=`${e}29`,p=`${e}4D`),jsx(g,{ref:x,style:{...u,"--tl-color":e,"--tl-color2":i,"--tl-color-ring":c,"--tl-color-shadow":p},className:a("ui-timeline-dot",l,`size-${y}`,d&&"pulse",n),...h,children:a$1})});I.displayName="TimelineDot";var k=forwardRef(({as:t,className:n,children:l,...e},i)=>jsx(t||"div",{ref:i,className:a("ui-timeline-opposite",n),...e,children:l}));k.displayName="TimelineOppositeContent";export{w as a,N as b,E as c,P as d,S as e,I as f,k as g};//# sourceMappingURL=chunk-LJZR5S2S.mjs.map
303
+ //# sourceMappingURL=chunk-LJZR5S2S.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/Timeline/Timeline.tsx"],"names":["TimelineContext","createContext","useTimeline","useContext","STYLES","Timeline","forwardRef","as","className","children","position","animated","props","ref","Component","jsxs","jsx","cn","TimelineItem","ctx","TimelineSeparator","TimelineConnector","color","variant","width","style","TimelineContent","TimelineDot","color2","size","pulse","computedSize","colorRing","colorShadow","TimelineOppositeContent"],"mappings":"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","file":"chunk-LJZR5S2S.mjs","sourcesContent":["import React, { forwardRef, ElementType, createContext, useContext } from 'react';\nimport { cn } from '../../utils/cn';\nimport {\n TimelineProps,\n TimelineItemProps,\n TimelineSeparatorProps,\n TimelineConnectorProps,\n TimelineContentProps,\n TimelineDotProps,\n TimelineOppositeContentProps,\n} from './types';\n\n/* ----------------------------- Context ----------------------------- */\n\nconst TimelineContext = createContext<{ position: string }>({\n position: 'right',\n});\n\nconst useTimeline = () => useContext(TimelineContext);\n\n/* ----------------------------- Styles ----------------------------- */\n\nconst STYLES = `\n/* ===================================================\n UI-TIMELINE — Premium Timeline Component Styles\n =================================================== */\n\n/* --- Base --- */\n.ui-timeline {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* --- Item --- */\n.ui-timeline-item {\n display: flex;\n position: relative;\n align-items: stretch;\n min-height: 64px;\n}\n\n/* --- Position Variants --- */\n.ui-timeline-item.right { flex-direction: row; }\n.ui-timeline-item.left { flex-direction: row-reverse; }\n\n.ui-timeline-item.alternate:nth-child(even) { flex-direction: row-reverse; }\n.ui-timeline-item.alternate-reverse { flex-direction: row-reverse; }\n.ui-timeline-item.alternate-reverse:nth-child(even) { flex-direction: row; }\n\n/* --- Separator --- */\n.ui-timeline-separator {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-shrink: 0;\n padding: 2px 16px;\n}\n\n/* ===================================================\n DOT BASE\n =================================================== */\n.ui-timeline-dot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n z-index: 2;\n flex-shrink: 0;\n box-sizing: border-box;\n position: relative;\n transition:\n transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1),\n box-shadow 0.25s ease;\n cursor: default;\n user-select: none;\n}\n\n.ui-timeline-dot svg {\n width: 1em;\n height: 1em;\n display: block;\n flex-shrink: 0;\n}\n\n.ui-timeline-dot:hover {\n transform: scale(1.18);\n}\n\n/* --- Dot Sizes --- */\n.ui-timeline-dot.size-small { width: 12px; height: 12px; }\n.ui-timeline-dot.size-medium { width: 42px; height: 42px; font-size: 1.1rem; }\n.ui-timeline-dot.size-large { width: 58px; height: 58px; font-size: 1.4rem; }\n\n/* ===================================================\n DOT VARIANTS\n =================================================== */\n\n/* FILLED */\n.ui-timeline-dot.filled {\n background: var(--tl-color, #3b82f6);\n color: #ffffff;\n box-shadow:\n 0 0 0 4px var(--tl-color-ring, rgba(59,130,246,0.16)),\n 0 4px 14px var(--tl-color-shadow, rgba(59,130,246,0.32));\n}\n.ui-timeline-dot.filled:hover {\n box-shadow:\n 0 0 0 7px var(--tl-color-ring, rgba(59,130,246,0.2)),\n 0 8px 22px var(--tl-color-shadow, rgba(59,130,246,0.42));\n}\n\n/* OUTLINED */\n.ui-timeline-dot.outlined {\n border: 2.5px solid var(--tl-color, #3b82f6);\n background: #ffffff;\n color: var(--tl-color, #3b82f6);\n box-shadow: 0 0 0 4px var(--tl-color-ring, rgba(59,130,246,0.1));\n}\n.ui-timeline-dot.outlined:hover {\n background: var(--tl-color-ring, rgba(59,130,246,0.07));\n box-shadow: 0 0 0 7px var(--tl-color-ring, rgba(59,130,246,0.15));\n}\n\n/* GRADIENT */\n.ui-timeline-dot.gradient {\n background: linear-gradient(\n 135deg,\n var(--tl-color, #3b82f6),\n var(--tl-color2, #a855f7)\n );\n color: #ffffff;\n box-shadow:\n 0 0 0 4px rgba(168, 85, 247, 0.14),\n 0 4px 16px rgba(59, 130, 246, 0.34);\n}\n.ui-timeline-dot.gradient:hover {\n box-shadow:\n 0 0 0 8px rgba(168, 85, 247, 0.18),\n 0 8px 26px rgba(59, 130, 246, 0.44);\n}\n\n/* ===================================================\n PULSE ANIMATION\n =================================================== */\n@keyframes ui-tl-pulse {\n 0% { transform: scale(1); opacity: 0.65; }\n 70% { transform: scale(2.6); opacity: 0; }\n 100% { transform: scale(2.6); opacity: 0; }\n}\n\n.ui-timeline-dot.pulse::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: 50%;\n background: var(--tl-color, #3b82f6);\n animation: ui-tl-pulse 2s ease-out infinite;\n z-index: -1;\n pointer-events: none;\n}\n.ui-timeline-dot.pulse.gradient::after {\n background: linear-gradient(135deg, var(--tl-color, #3b82f6), var(--tl-color2, #a855f7));\n}\n\n/* ===================================================\n CONNECTOR\n =================================================== */\n.ui-timeline-connector {\n width: var(--tl-conn-width, 2px);\n flex: 1;\n min-height: 20px;\n margin: 5px 0;\n border-radius: 999px;\n background: var(--tl-conn-color, #e2e8f0);\n transition: background 0.25s ease;\n}\n\n.ui-timeline-connector.dashed {\n background: transparent !important;\n border-left: var(--tl-conn-width, 2px) dashed var(--tl-conn-color, #e2e8f0);\n width: 0 !important;\n border-radius: 0;\n}\n\n.ui-timeline-connector.dotted {\n background: transparent !important;\n border-left: var(--tl-conn-width, 2px) dotted var(--tl-conn-color, #e2e8f0);\n width: 0 !important;\n border-radius: 0;\n}\n\n/* Hide last connector */\n.ui-timeline-item:last-child .ui-timeline-connector {\n display: none;\n}\n\n/* ===================================================\n CONTENT & OPPOSITE CONTENT\n =================================================== */\n.ui-timeline-content {\n flex: 1;\n padding: 0 0 28px 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n}\n\n.ui-timeline-opposite {\n flex: 0 0 128px;\n padding: 0 0 28px 0;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n color: #94a3b8;\n font-size: 0.8125rem;\n font-weight: 500;\n letter-spacing: 0.01em;\n}\n\n/* --- Alignment rules --- */\n.ui-timeline-item.right .ui-timeline-opposite { text-align: right; }\n.ui-timeline-item.right .ui-timeline-content { text-align: left; }\n.ui-timeline-item.left .ui-timeline-opposite { text-align: left; }\n.ui-timeline-item.left .ui-timeline-content { text-align: right; }\n\n.ui-timeline-item.alternate:nth-child(even) .ui-timeline-opposite { text-align: left; }\n.ui-timeline-item.alternate:nth-child(even) .ui-timeline-content { text-align: right; }\n.ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-opposite { text-align: left; }\n.ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-content { text-align: right; }\n\n/* Equal flex for alternate layouts */\n.ui-timeline-item.alternate .ui-timeline-content,\n.ui-timeline-item.alternate .ui-timeline-opposite,\n.ui-timeline-item.alternate-reverse .ui-timeline-content,\n.ui-timeline-item.alternate-reverse .ui-timeline-opposite {\n flex: 1;\n}\n\n/* ===================================================\n ENTRANCE ANIMATIONS\n =================================================== */\n@keyframes ui-tl-in-right {\n from { opacity: 0; transform: translateX(-18px); }\n to { opacity: 1; transform: translateX(0); }\n}\n@keyframes ui-tl-in-left {\n from { opacity: 0; transform: translateX(18px); }\n to { opacity: 1; transform: translateX(0); }\n}\n@keyframes ui-tl-in-dot {\n from { opacity: 0; transform: scale(0.3); }\n to { opacity: 1; transform: scale(1); }\n}\n\n/* Content animation */\n.ui-timeline.animated .ui-timeline-content {\n animation: ui-tl-in-right 0.45s cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n.ui-timeline.animated .ui-timeline-item.left .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item.alternate:nth-child(even) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item.alternate-reverse:nth-child(odd) .ui-timeline-content {\n animation: ui-tl-in-left 0.45s cubic-bezier(0.4, 0, 0.2, 1) both;\n}\n\n/* Dot animation */\n.ui-timeline.animated .ui-timeline-dot {\n animation: ui-tl-in-dot 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;\n}\n\n/* Staggered delays (up to 8 items) */\n.ui-timeline.animated .ui-timeline-item:nth-child(1) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(1) .ui-timeline-dot { animation-delay: 0ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(2) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(2) .ui-timeline-dot { animation-delay: 100ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(3) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(3) .ui-timeline-dot { animation-delay: 200ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(4) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(4) .ui-timeline-dot { animation-delay: 300ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(5) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(5) .ui-timeline-dot { animation-delay: 400ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(6) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(6) .ui-timeline-dot { animation-delay: 500ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(7) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(7) .ui-timeline-dot { animation-delay: 600ms; }\n.ui-timeline.animated .ui-timeline-item:nth-child(8) .ui-timeline-content,\n.ui-timeline.animated .ui-timeline-item:nth-child(8) .ui-timeline-dot { animation-delay: 700ms; }\n\n/* ===================================================\n RESPONSIVE\n =================================================== */\n@media (max-width: 768px) {\n .ui-timeline-item,\n .ui-timeline-item.left,\n .ui-timeline-item.alternate,\n .ui-timeline-item.alternate:nth-child(even),\n .ui-timeline-item.alternate-reverse,\n .ui-timeline-item.alternate-reverse:nth-child(even),\n .ui-timeline-item.alternate-reverse:nth-child(odd) {\n flex-direction: row !important;\n }\n\n .ui-timeline-opposite { display: none; }\n\n .ui-timeline-content {\n text-align: left !important;\n flex: 1;\n }\n\n .ui-timeline-separator {\n padding: 2px 12px 2px 0;\n }\n\n .ui-timeline-item.alternate .ui-timeline-content,\n .ui-timeline-item.alternate .ui-timeline-opposite,\n .ui-timeline-item.alternate-reverse .ui-timeline-content,\n .ui-timeline-item.alternate-reverse .ui-timeline-opposite {\n flex: unset;\n }\n}\n`;\n\n/* ===================================================\n TIMELINE (root)\n =================================================== */\n\nexport const Timeline = forwardRef<ElementType, TimelineProps>(\n ({ as, className, children, position = 'right', animated = false, ...props }, ref) => {\n const Component = (as as any) || 'ul';\n\n return (\n <TimelineContext.Provider value={{ position }}>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <Component\n ref={ref as any}\n className={cn('ui-timeline', animated && 'animated', className)}\n {...props}\n >\n {children}\n </Component>\n </TimelineContext.Provider>\n );\n }\n);\n\nTimeline.displayName = 'Timeline';\n\n/* ===================================================\n TIMELINE ITEM\n =================================================== */\n\nexport const TimelineItem = forwardRef<ElementType, TimelineItemProps>(\n ({ as, className, children, position, ...props }, ref) => {\n const ctx = useTimeline();\n const Component = (as as any) || 'li';\n\n return (\n <Component\n ref={ref as any}\n className={cn('ui-timeline-item', position || ctx.position, className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTimelineItem.displayName = 'TimelineItem';\n\n/* ===================================================\n TIMELINE SEPARATOR\n =================================================== */\n\nexport const TimelineSeparator = forwardRef<ElementType, TimelineSeparatorProps>(\n ({ as, className, children, ...props }, ref) => {\n const Component = (as as any) || 'div';\n\n return (\n <Component\n ref={ref as any}\n className={cn('ui-timeline-separator', className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTimelineSeparator.displayName = 'TimelineSeparator';\n\n/* ===================================================\n TIMELINE CONNECTOR\n =================================================== */\n\nexport const TimelineConnector = forwardRef<ElementType, TimelineConnectorProps>(\n ({ as, className, color, variant = 'solid', width, style, ...props }, ref) => {\n const Component = (as as any) || 'div';\n\n return (\n <Component\n ref={ref as any}\n style={{\n ...style,\n ['--tl-conn-color' as any]: color,\n ['--tl-conn-width' as any]: width ? `${width}px` : undefined,\n }}\n className={cn('ui-timeline-connector', variant, className)}\n {...props}\n />\n );\n }\n);\n\nTimelineConnector.displayName = 'TimelineConnector';\n\n/* ===================================================\n TIMELINE CONTENT\n =================================================== */\n\nexport const TimelineContent = forwardRef<ElementType, TimelineContentProps>(\n ({ as, className, children, ...props }, ref) => {\n const Component = (as as any) || 'div';\n\n return (\n <Component\n ref={ref as any}\n className={cn('ui-timeline-content', className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTimelineContent.displayName = 'TimelineContent';\n\n/* ===================================================\n TIMELINE DOT\n =================================================== */\n\nexport const TimelineDot = forwardRef<ElementType, TimelineDotProps>(\n (\n {\n as,\n className,\n variant = 'filled',\n color = '#3b82f6',\n color2 = '#a855f7',\n size,\n children,\n pulse = false,\n style,\n ...props\n },\n ref\n ) => {\n const Component = (as as any) || 'div';\n const computedSize = size || (children ? 'medium' : 'small');\n\n // Derive ring + shadow colors from hex\n let colorRing = 'rgba(59,130,246,0.16)';\n let colorShadow = 'rgba(59,130,246,0.3)';\n if (color && color.startsWith('#') && color.length === 7) {\n colorRing = `${color}29`; // ~16% opacity\n colorShadow = `${color}4D`; // ~30% opacity\n }\n\n return (\n <Component\n ref={ref as any}\n style={{\n ...style,\n ['--tl-color' as any]: color,\n ['--tl-color2' as any]: color2,\n ['--tl-color-ring' as any]: colorRing,\n ['--tl-color-shadow' as any]: colorShadow,\n }}\n className={cn(\n 'ui-timeline-dot',\n variant,\n `size-${computedSize}`,\n pulse && 'pulse',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTimelineDot.displayName = 'TimelineDot';\n\n/* ===================================================\n TIMELINE OPPOSITE CONTENT\n =================================================== */\n\nexport const TimelineOppositeContent = forwardRef<ElementType, TimelineOppositeContentProps>(\n ({ as, className, children, ...props }, ref) => {\n const Component = (as as any) || 'div';\n\n return (\n <Component\n ref={ref as any}\n className={cn('ui-timeline-opposite', className)}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTimelineOppositeContent.displayName = 'TimelineOppositeContent';"]}
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-5ZOZOY4J.mjs';var i=e=>e?typeof e=="function"?e(a)??{}:Array.isArray(e)?e.reduce((t,r)=>!r||typeof r=="boolean"?t:typeof r=="function"?{...t,...r(a)??{}}:typeof r=="object"?{...t,...r}:t,{}):typeof e=="object"?e:{}:{};export{i as a};//# sourceMappingURL=chunk-MAXZQTTY.mjs.map
2
+ //# sourceMappingURL=chunk-MAXZQTTY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/handleSx.ts"],"names":["handleSx","sx","defaultTheme","acc","curr"],"mappings":"qCAUO,IAAMA,CAAAA,CAAYC,CAAAA,EAClBA,CAAAA,CAED,OAAOA,CAAAA,EAAO,UAAA,CACRA,CAAAA,CAAGC,CAAY,CAAA,EAAK,EAAC,CAG3B,KAAA,CAAM,OAAA,CAAQD,CAAE,CAAA,CACXA,CAAAA,CAAG,MAAA,CAA4B,CAACE,CAAAA,CAAKC,CAAAA,GACtC,CAACA,CAAAA,EAAQ,OAAOA,CAAAA,EAAS,SAAA,CAAkBD,CAAAA,CAC3C,OAAOC,CAAAA,EAAS,UAAA,CACX,CAAE,GAAGD,CAAAA,CAAK,GAAIC,CAAAA,CAAKF,CAAY,CAAA,EAAK,EAAI,CAAA,CAE7C,OAAOE,CAAAA,EAAS,QAAA,CACX,CAAE,GAAGD,CAAAA,CAAK,GAAGC,CAAK,CAAA,CAEpBD,CAAAA,CACN,EAAE,CAAA,CAGH,OAAOF,CAAAA,EAAO,QAAA,CACTA,CAAAA,CAGF,EAAC,CAvBQ","file":"chunk-MAXZQTTY.mjs","sourcesContent":["import { CSSProperties } from 'react';\nimport { defaultTheme } from '../components/ThemeProvider/defaultTheme';\n\n/**\n * Utility to handle the sx prop, ensuring it returns a valid style object.\n * Supports:\n * - Plain CSS objects: `sx={{ color: 'red' }}`\n * - Theme callback functions: `sx={(theme) => ({ color: theme.palette.primary.main })}`\n * - Arrays of the above: `sx={[{ padding: 8 }, (theme) => ({ color: theme.palette.primary.main })]}`\n */\nexport const handleSx = (sx: any): CSSProperties => {\n if (!sx) return {};\n\n if (typeof sx === 'function') {\n return (sx(defaultTheme) ?? {}) as CSSProperties;\n }\n\n if (Array.isArray(sx)) {\n return sx.reduce<Record<string, any>>((acc, curr) => {\n if (!curr || typeof curr === 'boolean') return acc;\n if (typeof curr === 'function') {\n return { ...acc, ...(curr(defaultTheme) ?? {}) };\n }\n if (typeof curr === 'object') {\n return { ...acc, ...curr };\n }\n return acc;\n }, {}) as CSSProperties;\n }\n\n if (typeof sx === 'object') {\n return sx as CSSProperties;\n }\n\n return {};\n};\n"]}
@@ -1,4 +1,4 @@
1
- import {a}from'./chunk-HGGQFNUJ.mjs';import {a as a$1}from'./chunk-547MQ4FI.mjs';import {forwardRef}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var m=`
1
+ import {a}from'./chunk-MAXZQTTY.mjs';import {a as a$1}from'./chunk-547MQ4FI.mjs';import {forwardRef}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var m=`
2
2
  .ui-paper {
3
3
  background-color: #ffffff;
4
4
  color: #0f172a;
@@ -39,5 +39,5 @@ import {a}from'./chunk-HGGQFNUJ.mjs';import {a as a$1}from'./chunk-547MQ4FI.mjs'
39
39
  .ui-paper--elevation-22 { box-shadow: 0px 44px 88px rgba(0, 0, 0, 0.13), 0px 42px 84px rgba(0, 0, 0, 0.13); }
40
40
  .ui-paper--elevation-23 { box-shadow: 0px 46px 92px rgba(0, 0, 0, 0.14), 0px 44px 88px rgba(0, 0, 0, 0.13); }
41
41
  .ui-paper--elevation-24 { box-shadow: 0px 48px 96px rgba(0, 0, 0, 0.14), 0px 46px 92px rgba(0, 0, 0, 0.13); }
42
- `,e=forwardRef(({className:o,component:r,as:b,elevation:i=1,variant:n="elevation",square:t=false,sx:g,classes:s={},style:l,children:d,...u},v)=>{let h=b||r||"div",w=Math.max(0,Math.min(24,i));return jsxs(Fragment,{children:[jsx("style",{dangerouslySetInnerHTML:{__html:m}}),jsx(h,{ref:v,className:a$1("ui-paper",!t&&"ui-paper--rounded",n==="outlined"?"ui-paper--variant-outlined":`ui-paper--elevation-${w}`,s.root,o),style:{...a(g),...l},...u,children:d})]})});e.displayName="Paper";var S=e;export{e as a,S as b};//# sourceMappingURL=chunk-P4WXCRNI.mjs.map
43
- //# sourceMappingURL=chunk-P4WXCRNI.mjs.map
42
+ `,e=forwardRef(({className:o,component:r,as:b,elevation:i=1,variant:n="elevation",square:t=false,sx:g,classes:s={},style:l,children:d,...u},v)=>{let h=b||r||"div",w=Math.max(0,Math.min(24,i));return jsxs(Fragment,{children:[jsx("style",{dangerouslySetInnerHTML:{__html:m}}),jsx(h,{ref:v,className:a$1("ui-paper",!t&&"ui-paper--rounded",n==="outlined"?"ui-paper--variant-outlined":`ui-paper--elevation-${w}`,s.root,o),style:{...a(g),...l},...u,children:d})]})});e.displayName="Paper";var S=e;export{e as a,S as b};//# sourceMappingURL=chunk-MCQHRTRD.mjs.map
43
+ //# sourceMappingURL=chunk-MCQHRTRD.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Paper/Paper.tsx"],"names":["STYLES","Paper","forwardRef","className","component","as","elevation","variant","square","sx","classes","style","children","props","ref","Component","safeElevation","jsxs","Fragment","jsx","cn","handleSx","Paper_default"],"mappings":"kKAOA,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,CAAA,CA2CFC,CAAAA,CAAQC,WACnB,CACE,CACE,UAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,EAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,CAAA,CACZ,OAAA,CAAAC,CAAAA,CAAU,WAAA,CACV,MAAA,CAAAC,CAAAA,CAAS,MACT,EAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,EAAC,CACX,MAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,IAAMC,CAAAA,CAAYV,CAAAA,EAAMD,CAAAA,EAAa,MAE/BY,CAAAA,CAAgB,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,GAAA,CAAI,GAAIV,CAAS,CAAC,CAAA,CAEzD,OACEW,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAC,GAAAA,CAAC,SAAM,uBAAA,CAAyB,CAAE,OAAQnB,CAAO,CAAA,CAAG,CAAA,CACpDmB,GAAAA,CAACJ,CAAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWM,GAAAA,CACT,UAAA,CACA,CAACZ,CAAAA,EAAU,oBACXD,CAAAA,GAAY,UAAA,CAAa,4BAAA,CAA+B,CAAA,oBAAA,EAAuBS,CAAa,CAAA,CAAA,CAC5FN,EAAQ,IAAA,CACRP,CACF,EACA,KAAA,CAAO,CAAE,GAAGkB,CAAAA,CAASZ,CAAE,CAAA,CAAG,GAAGE,CAAM,CAAA,CAClC,GAAGE,CAAAA,CAEH,QAAA,CAAAD,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CACF,EAEAX,CAAAA,CAAM,WAAA,CAAc,OAAA,CAEpB,IAAOqB,CAAAA,CAAQrB","file":"chunk-P4WXCRNI.mjs","sourcesContent":["'use client';\n\nimport { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { PaperProps } from './Paper.types';\n\nconst STYLES = `\n .ui-paper {\n background-color: #ffffff;\n color: #0f172a;\n transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n\n .ui-paper--rounded {\n border-radius: 8px;\n }\n\n .ui-paper--variant-outlined {\n border: 1px solid #e2e8f0;\n }\n\n /* Elevations 0 - 24 */\n .ui-paper--elevation-0 { box-shadow: none; }\n .ui-paper--elevation-1 { box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05), 0px 1px 2px rgba(0, 0, 0, 0.06); }\n .ui-paper--elevation-2 { box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05), 0px 3px 6px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-3 { box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.05), 0px 4px 8px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-4 { box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.06), 0px 6px 12px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-5 { box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.06), 0px 8px 16px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-6 { box-shadow: 0px 12px 24px rgba(0, 0, 0, 0.07), 0px 10px 20px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-7 { box-shadow: 0px 14px 28px rgba(0, 0, 0, 0.07), 0px 12px 24px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-8 { box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.08), 0px 14px 28px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-9 { box-shadow: 0px 18px 36px rgba(0, 0, 0, 0.08), 0px 16px 32px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-10 { box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.09), 0px 18px 36px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-11 { box-shadow: 0px 22px 44px rgba(0, 0, 0, 0.09), 0px 20px 40px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-12 { box-shadow: 0px 24px 48px rgba(0, 0, 0, 0.1), 0px 22px 44px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-13 { box-shadow: 0px 26px 52px rgba(0, 0, 0, 0.1), 0px 24px 48px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-14 { box-shadow: 0px 28px 56px rgba(0, 0, 0, 0.1), 0px 26px 52px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-15 { box-shadow: 0px 30px 60px rgba(0, 0, 0, 0.11), 0px 28px 56px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-16 { box-shadow: 0px 32px 64px rgba(0, 0, 0, 0.11), 0px 30px 60px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-17 { box-shadow: 0px 34px 68px rgba(0, 0, 0, 0.11), 0px 32px 64px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-18 { box-shadow: 0px 36px 72px rgba(0, 0, 0, 0.12), 0px 34px 68px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-19 { box-shadow: 0px 38px 76px rgba(0, 0, 0, 0.12), 0px 36px 72px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-20 { box-shadow: 0px 40px 80px rgba(0, 0, 0, 0.13), 0px 38px 76px rgba(0, 0, 0, 0.12); }\n .ui-paper--elevation-21 { box-shadow: 0px 42px 84px rgba(0, 0, 0, 0.13), 0px 40px 80px rgba(0, 0, 0, 0.12); }\n .ui-paper--elevation-22 { box-shadow: 0px 44px 88px rgba(0, 0, 0, 0.13), 0px 42px 84px rgba(0, 0, 0, 0.13); }\n .ui-paper--elevation-23 { box-shadow: 0px 46px 92px rgba(0, 0, 0, 0.14), 0px 44px 88px rgba(0, 0, 0, 0.13); }\n .ui-paper--elevation-24 { box-shadow: 0px 48px 96px rgba(0, 0, 0, 0.14), 0px 46px 92px rgba(0, 0, 0, 0.13); }\n`;\n\nexport const Paper = forwardRef<HTMLElement, PaperProps>(\n (\n {\n className,\n component,\n as,\n elevation = 1,\n variant = 'elevation',\n square = false,\n sx,\n classes = {},\n style,\n children,\n ...props\n },\n ref\n ) => {\n const Component = as || component || 'div';\n\n const safeElevation = Math.max(0, Math.min(24, elevation));\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <Component\n ref={ref as any}\n className={cn(\n 'ui-paper',\n !square && 'ui-paper--rounded',\n variant === 'outlined' ? 'ui-paper--variant-outlined' : `ui-paper--elevation-${safeElevation}`,\n classes.root,\n className\n )}\n style={{ ...handleSx(sx), ...style }}\n {...props}\n >\n {children}\n </Component>\n </>\n );\n }\n);\n\nPaper.displayName = 'Paper';\n\nexport default Paper;\n"]}
1
+ {"version":3,"sources":["../src/components/Paper/Paper.tsx"],"names":["STYLES","Paper","forwardRef","className","component","as","elevation","variant","square","sx","classes","style","children","props","ref","Component","safeElevation","jsxs","Fragment","jsx","cn","handleSx","Paper_default"],"mappings":"kKAOA,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,CAAA,CA2CFC,CAAAA,CAAQC,WACnB,CACE,CACE,UAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,EAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EAAY,CAAA,CACZ,OAAA,CAAAC,CAAAA,CAAU,WAAA,CACV,MAAA,CAAAC,CAAAA,CAAS,MACT,EAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,EAAC,CACX,MAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,IAAMC,CAAAA,CAAYV,CAAAA,EAAMD,CAAAA,EAAa,MAE/BY,CAAAA,CAAgB,IAAA,CAAK,GAAA,CAAI,CAAA,CAAG,IAAA,CAAK,GAAA,CAAI,GAAIV,CAAS,CAAC,CAAA,CAEzD,OACEW,IAAAA,CAAAC,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAC,GAAAA,CAAC,SAAM,uBAAA,CAAyB,CAAE,OAAQnB,CAAO,CAAA,CAAG,CAAA,CACpDmB,GAAAA,CAACJ,CAAAA,CAAA,CACC,IAAKD,CAAAA,CACL,SAAA,CAAWM,GAAAA,CACT,UAAA,CACA,CAACZ,CAAAA,EAAU,oBACXD,CAAAA,GAAY,UAAA,CAAa,4BAAA,CAA+B,CAAA,oBAAA,EAAuBS,CAAa,CAAA,CAAA,CAC5FN,EAAQ,IAAA,CACRP,CACF,EACA,KAAA,CAAO,CAAE,GAAGkB,CAAAA,CAASZ,CAAE,CAAA,CAAG,GAAGE,CAAM,CAAA,CAClC,GAAGE,CAAAA,CAEH,QAAA,CAAAD,CAAAA,CACH,CAAA,CAAA,CACF,CAEJ,CACF,EAEAX,CAAAA,CAAM,WAAA,CAAc,OAAA,CAEpB,IAAOqB,CAAAA,CAAQrB","file":"chunk-MCQHRTRD.mjs","sourcesContent":["'use client';\n\nimport { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { PaperProps } from './Paper.types';\n\nconst STYLES = `\n .ui-paper {\n background-color: #ffffff;\n color: #0f172a;\n transition: box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n\n .ui-paper--rounded {\n border-radius: 8px;\n }\n\n .ui-paper--variant-outlined {\n border: 1px solid #e2e8f0;\n }\n\n /* Elevations 0 - 24 */\n .ui-paper--elevation-0 { box-shadow: none; }\n .ui-paper--elevation-1 { box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.05), 0px 1px 2px rgba(0, 0, 0, 0.06); }\n .ui-paper--elevation-2 { box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.05), 0px 3px 6px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-3 { box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.05), 0px 4px 8px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-4 { box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.06), 0px 6px 12px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-5 { box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.06), 0px 8px 16px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-6 { box-shadow: 0px 12px 24px rgba(0, 0, 0, 0.07), 0px 10px 20px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-7 { box-shadow: 0px 14px 28px rgba(0, 0, 0, 0.07), 0px 12px 24px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-8 { box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.08), 0px 14px 28px rgba(0, 0, 0, 0.08); }\n .ui-paper--elevation-9 { box-shadow: 0px 18px 36px rgba(0, 0, 0, 0.08), 0px 16px 32px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-10 { box-shadow: 0px 20px 40px rgba(0, 0, 0, 0.09), 0px 18px 36px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-11 { box-shadow: 0px 22px 44px rgba(0, 0, 0, 0.09), 0px 20px 40px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-12 { box-shadow: 0px 24px 48px rgba(0, 0, 0, 0.1), 0px 22px 44px rgba(0, 0, 0, 0.09); }\n .ui-paper--elevation-13 { box-shadow: 0px 26px 52px rgba(0, 0, 0, 0.1), 0px 24px 48px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-14 { box-shadow: 0px 28px 56px rgba(0, 0, 0, 0.1), 0px 26px 52px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-15 { box-shadow: 0px 30px 60px rgba(0, 0, 0, 0.11), 0px 28px 56px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-16 { box-shadow: 0px 32px 64px rgba(0, 0, 0, 0.11), 0px 30px 60px rgba(0, 0, 0, 0.1); }\n .ui-paper--elevation-17 { box-shadow: 0px 34px 68px rgba(0, 0, 0, 0.11), 0px 32px 64px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-18 { box-shadow: 0px 36px 72px rgba(0, 0, 0, 0.12), 0px 34px 68px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-19 { box-shadow: 0px 38px 76px rgba(0, 0, 0, 0.12), 0px 36px 72px rgba(0, 0, 0, 0.11); }\n .ui-paper--elevation-20 { box-shadow: 0px 40px 80px rgba(0, 0, 0, 0.13), 0px 38px 76px rgba(0, 0, 0, 0.12); }\n .ui-paper--elevation-21 { box-shadow: 0px 42px 84px rgba(0, 0, 0, 0.13), 0px 40px 80px rgba(0, 0, 0, 0.12); }\n .ui-paper--elevation-22 { box-shadow: 0px 44px 88px rgba(0, 0, 0, 0.13), 0px 42px 84px rgba(0, 0, 0, 0.13); }\n .ui-paper--elevation-23 { box-shadow: 0px 46px 92px rgba(0, 0, 0, 0.14), 0px 44px 88px rgba(0, 0, 0, 0.13); }\n .ui-paper--elevation-24 { box-shadow: 0px 48px 96px rgba(0, 0, 0, 0.14), 0px 46px 92px rgba(0, 0, 0, 0.13); }\n`;\n\nexport const Paper = forwardRef<HTMLElement, PaperProps>(\n (\n {\n className,\n component,\n as,\n elevation = 1,\n variant = 'elevation',\n square = false,\n sx,\n classes = {},\n style,\n children,\n ...props\n },\n ref\n ) => {\n const Component = as || component || 'div';\n\n const safeElevation = Math.max(0, Math.min(24, elevation));\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <Component\n ref={ref as any}\n className={cn(\n 'ui-paper',\n !square && 'ui-paper--rounded',\n variant === 'outlined' ? 'ui-paper--variant-outlined' : `ui-paper--elevation-${safeElevation}`,\n classes.root,\n className\n )}\n style={{ ...handleSx(sx), ...style }}\n {...props}\n >\n {children}\n </Component>\n </>\n );\n }\n);\n\nPaper.displayName = 'Paper';\n\nexport default Paper;\n"]}
@@ -1,4 +1,4 @@
1
- import {a as a$1}from'./chunk-IK7K7ZJZ.mjs';import {d}from'./chunk-PGEMFKMM.mjs';import {a as a$2}from'./chunk-HGGQFNUJ.mjs';import {a}from'./chunk-547MQ4FI.mjs';import {forwardRef,useState,useEffect}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var ye=`
1
+ import {a as a$1}from'./chunk-QSUBLNQA.mjs';import {d}from'./chunk-PGEMFKMM.mjs';import {a as a$2}from'./chunk-MAXZQTTY.mjs';import {a}from'./chunk-547MQ4FI.mjs';import {forwardRef,useState,useEffect}from'react';import {jsxs,Fragment,jsx}from'react/jsx-runtime';var ye=`
2
2
  /* DataGrid Root */
3
3
  .ui-datagrid {
4
4
  display: flex;
@@ -229,5 +229,5 @@ import {a as a$1}from'./chunk-IK7K7ZJZ.mjs';import {d}from'./chunk-PGEMFKMM.mjs'
229
229
  .ui-datagrid-info {
230
230
  font-weight: 500;
231
231
  }
232
- `,K=forwardRef(({columns:v,rows:y=[],getRowId:A,page:h,defaultPage:Q=0,pageSize:g=10,pageSizeOptions:U=[5,10,25,50],pagination:M=true,paginationMode:S="client",rowCount:X,onPageChange:N,onPageSizeChange:G,checkboxSelection:z=false,rowSelectionModel:R,onRowSelectionModelChange:T,loading:Z=false,density:P="standard",getRowClassName:$,height:ee,sx:te,classes:u={},className:ie,...H},ae)=>{let[de,I]=useState(Q),W=h!==void 0&&N!==void 0,x=W?h:de,[re,F]=useState(g!==void 0?g:10),O=g!==void 0&&G!==void 0,f=O?g:re,[c,ne]=useState(null),[p,oe]=useState(null),[le,se]=useState([]),s=R!==void 0?R:le;useEffect(()=>{h!==void 0&&I(h);},[h]),useEffect(()=>{g!==void 0&&F(g);},[g]),useEffect(()=>{I(0);},[f]);let k=e=>{R===void 0&&se(e),T&&T(e);},_=e=>A?A(e):e.id!==void 0?e.id:"",ce=e=>{if(e.sortable===false)return;let t="asc";c===e.field&&(p==="asc"?t="desc":p==="desc"?t=null:t="asc"),ne(t?e.field:null),oe(t);},j=S==="server"||!c||!p?y:[...y].sort((e,t)=>{let a=v.find(r=>r.field===c),d=a?.valueGetter?a.valueGetter({row:e,value:e[c]}):e[c],o=a?.valueGetter?a.valueGetter({row:t,value:t[c]}):t[c];return d==null&&(d=""),o==null&&(o=""),typeof d=="string"&&typeof o=="string"?p==="asc"?d.localeCompare(o):o.localeCompare(d):p==="asc"?d>o?1:d<o?-1:0:d<o?1:d>o?-1:0}),w=S==="server"?X??y.length:y.length,D=M&&S==="client"?j.slice(x*f,(x+1)*f):j,m=D.map(_),B=m.length>0&&m.every(e=>s.includes(e)),ge=m.length>0&&m.some(e=>s.includes(e))&&!B,fe=e=>{if(e.target.checked){let t=m.filter(a=>!s.includes(a));k([...s,...t]);}else {let t=s.filter(a=>!m.includes(a));k(t);}},ue=e=>{let t=s.includes(e);k(t?s.filter(a=>a!==e):[...s,e]);},pe=e=>{W||I(e-1),N&&N(e-1);},me=e=>{let t=parseInt(e.target.value,10);O||F(t),G&&G(t);},he=w===0?0:x*f+1,xe=Math.min(w,(x+1)*f),V=Math.ceil(w/f),Y=e=>{let t={};return e.width?(t.width=`${e.width}px`,t.minWidth=`${e.width}px`):e.minWidth&&(t.minWidth=`${e.minWidth}px`),e.flex&&(t.flex=e.flex),t};return jsxs(Fragment,{children:[jsx("style",{dangerouslySetInnerHTML:{__html:ye}}),jsxs("div",{ref:ae,className:a("ui-datagrid",`ui-datagrid--${P}`,u.root,ie),style:{height:ee,...a$2(te),...H.style},...H,children:[jsxs("div",{className:a("ui-datagrid-main"),children:[Z&&jsx("div",{className:"ui-datagrid-loading-overlay",children:jsx("div",{className:"ui-datagrid-spinner"})}),jsxs("table",{className:a("ui-datagrid-table",u.table),children:[jsx("thead",{className:a("ui-datagrid-thead",u.header),children:jsxs("tr",{className:"ui-datagrid-tr",children:[z&&jsx("th",{className:"ui-datagrid-th ui-datagrid-cell--checkbox",children:jsx(d,{size:"small",checked:B,indeterminate:ge,onChange:fe})}),v.map(e=>{let t=e.sortable!==false,a$1=c===e.field,d=e.headerAlign?`ui-datagrid-cell--align-${e.headerAlign}`:e.align?`ui-datagrid-cell--align-${e.align}`:"";return jsx("th",{onClick:()=>ce(e),className:a("ui-datagrid-th",t&&"ui-datagrid-th--sortable",d),style:Y(e),children:jsxs("div",{className:"ui-datagrid-th-content",children:[jsx("span",{children:e.headerName??e.field}),t&&jsx("span",{className:a("ui-datagrid-th-sort-icon",a$1&&"ui-datagrid-th-sort-icon--active"),style:{transform:a$1&&p==="desc"?"rotate(180deg)":void 0},children:jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("line",{x1:"12",y1:"19",x2:"12",y2:"5"}),jsx("polyline",{points:"5 12 12 5 19 12"})]})})]})},e.field)})]})}),jsx("tbody",{children:D.length===0?jsx("tr",{className:"ui-datagrid-tr",children:jsx("td",{colSpan:v.length+(z?1:0),className:"ui-datagrid-td",style:{textAlign:"center",padding:"32px 0",color:"#64748b"},children:"No rows to display"})}):D.map((e,t)=>{let a$1=_(e),d$1=s.includes(a$1),o=$?$({row:e}):"";return jsxs("tr",{className:a("ui-datagrid-tr",d$1&&"ui-datagrid-tr--selected",o,u.row),children:[z&&jsx("td",{className:"ui-datagrid-td ui-datagrid-cell--checkbox",children:jsx(d,{size:"small",checked:d$1,onChange:()=>ue(a$1)})}),v.map(r=>{let be=r.align?`ui-datagrid-cell--align-${r.align}`:"",C=r.valueGetter?r.valueGetter({row:e,value:e[r.field]}):e[r.field];return jsx("td",{className:a("ui-datagrid-td",be,u.cell),style:Y(r),children:r.renderCell?r.renderCell({value:C,row:e,field:r.field,id:a$1}):C!=null?String(C):""},r.field)})]},a$1||t)})})]})]}),M&&jsxs("div",{className:a("ui-datagrid-footer",u.footer),children:[jsx("div",{className:"ui-datagrid-footer-left",children:jsxs("div",{className:"ui-datagrid-rows-per-page",children:[jsx("span",{children:"Rows per page:"}),jsx("select",{value:f,onChange:me,className:"ui-datagrid-select",children:U.map(e=>jsx("option",{value:e,children:e},e))})]})}),jsxs("div",{className:"ui-datagrid-footer-right",children:[jsxs("span",{className:"ui-datagrid-info",children:[he,"-",xe," of ",w]}),V>1&&jsx("div",{className:"ui-datagrid-footer-pagination",children:jsx(a$1,{count:V,page:x+1,onChange:(e,t)=>pe(t),size:"small",shape:"rounded"})})]})]})]})]})});K.displayName="DataGrid";var ke=K;export{K as a,ke as b};//# sourceMappingURL=chunk-C5X45JOF.mjs.map
233
- //# sourceMappingURL=chunk-C5X45JOF.mjs.map
232
+ `,K=forwardRef(({columns:v,rows:y=[],getRowId:A,page:h,defaultPage:Q=0,pageSize:g=10,pageSizeOptions:U=[5,10,25,50],pagination:M=true,paginationMode:S="client",rowCount:X,onPageChange:N,onPageSizeChange:G,checkboxSelection:z=false,rowSelectionModel:R,onRowSelectionModelChange:T,loading:Z=false,density:P="standard",getRowClassName:$,height:ee,sx:te,classes:u={},className:ie,...H},ae)=>{let[de,I]=useState(Q),W=h!==void 0&&N!==void 0,x=W?h:de,[re,F]=useState(g!==void 0?g:10),O=g!==void 0&&G!==void 0,f=O?g:re,[c,ne]=useState(null),[p,oe]=useState(null),[le,se]=useState([]),s=R!==void 0?R:le;useEffect(()=>{h!==void 0&&I(h);},[h]),useEffect(()=>{g!==void 0&&F(g);},[g]),useEffect(()=>{I(0);},[f]);let k=e=>{R===void 0&&se(e),T&&T(e);},_=e=>A?A(e):e.id!==void 0?e.id:"",ce=e=>{if(e.sortable===false)return;let t="asc";c===e.field&&(p==="asc"?t="desc":p==="desc"?t=null:t="asc"),ne(t?e.field:null),oe(t);},j=S==="server"||!c||!p?y:[...y].sort((e,t)=>{let a=v.find(r=>r.field===c),d=a?.valueGetter?a.valueGetter({row:e,value:e[c]}):e[c],o=a?.valueGetter?a.valueGetter({row:t,value:t[c]}):t[c];return d==null&&(d=""),o==null&&(o=""),typeof d=="string"&&typeof o=="string"?p==="asc"?d.localeCompare(o):o.localeCompare(d):p==="asc"?d>o?1:d<o?-1:0:d<o?1:d>o?-1:0}),w=S==="server"?X??y.length:y.length,D=M&&S==="client"?j.slice(x*f,(x+1)*f):j,m=D.map(_),B=m.length>0&&m.every(e=>s.includes(e)),ge=m.length>0&&m.some(e=>s.includes(e))&&!B,fe=e=>{if(e.target.checked){let t=m.filter(a=>!s.includes(a));k([...s,...t]);}else {let t=s.filter(a=>!m.includes(a));k(t);}},ue=e=>{let t=s.includes(e);k(t?s.filter(a=>a!==e):[...s,e]);},pe=e=>{W||I(e-1),N&&N(e-1);},me=e=>{let t=parseInt(e.target.value,10);O||F(t),G&&G(t);},he=w===0?0:x*f+1,xe=Math.min(w,(x+1)*f),V=Math.ceil(w/f),Y=e=>{let t={};return e.width?(t.width=`${e.width}px`,t.minWidth=`${e.width}px`):e.minWidth&&(t.minWidth=`${e.minWidth}px`),e.flex&&(t.flex=e.flex),t};return jsxs(Fragment,{children:[jsx("style",{dangerouslySetInnerHTML:{__html:ye}}),jsxs("div",{ref:ae,className:a("ui-datagrid",`ui-datagrid--${P}`,u.root,ie),style:{height:ee,...a$2(te),...H.style},...H,children:[jsxs("div",{className:a("ui-datagrid-main"),children:[Z&&jsx("div",{className:"ui-datagrid-loading-overlay",children:jsx("div",{className:"ui-datagrid-spinner"})}),jsxs("table",{className:a("ui-datagrid-table",u.table),children:[jsx("thead",{className:a("ui-datagrid-thead",u.header),children:jsxs("tr",{className:"ui-datagrid-tr",children:[z&&jsx("th",{className:"ui-datagrid-th ui-datagrid-cell--checkbox",children:jsx(d,{size:"small",checked:B,indeterminate:ge,onChange:fe})}),v.map(e=>{let t=e.sortable!==false,a$1=c===e.field,d=e.headerAlign?`ui-datagrid-cell--align-${e.headerAlign}`:e.align?`ui-datagrid-cell--align-${e.align}`:"";return jsx("th",{onClick:()=>ce(e),className:a("ui-datagrid-th",t&&"ui-datagrid-th--sortable",d),style:Y(e),children:jsxs("div",{className:"ui-datagrid-th-content",children:[jsx("span",{children:e.headerName??e.field}),t&&jsx("span",{className:a("ui-datagrid-th-sort-icon",a$1&&"ui-datagrid-th-sort-icon--active"),style:{transform:a$1&&p==="desc"?"rotate(180deg)":void 0},children:jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("line",{x1:"12",y1:"19",x2:"12",y2:"5"}),jsx("polyline",{points:"5 12 12 5 19 12"})]})})]})},e.field)})]})}),jsx("tbody",{children:D.length===0?jsx("tr",{className:"ui-datagrid-tr",children:jsx("td",{colSpan:v.length+(z?1:0),className:"ui-datagrid-td",style:{textAlign:"center",padding:"32px 0",color:"#64748b"},children:"No rows to display"})}):D.map((e,t)=>{let a$1=_(e),d$1=s.includes(a$1),o=$?$({row:e}):"";return jsxs("tr",{className:a("ui-datagrid-tr",d$1&&"ui-datagrid-tr--selected",o,u.row),children:[z&&jsx("td",{className:"ui-datagrid-td ui-datagrid-cell--checkbox",children:jsx(d,{size:"small",checked:d$1,onChange:()=>ue(a$1)})}),v.map(r=>{let be=r.align?`ui-datagrid-cell--align-${r.align}`:"",C=r.valueGetter?r.valueGetter({row:e,value:e[r.field]}):e[r.field];return jsx("td",{className:a("ui-datagrid-td",be,u.cell),style:Y(r),children:r.renderCell?r.renderCell({value:C,row:e,field:r.field,id:a$1}):C!=null?String(C):""},r.field)})]},a$1||t)})})]})]}),M&&jsxs("div",{className:a("ui-datagrid-footer",u.footer),children:[jsx("div",{className:"ui-datagrid-footer-left",children:jsxs("div",{className:"ui-datagrid-rows-per-page",children:[jsx("span",{children:"Rows per page:"}),jsx("select",{value:f,onChange:me,className:"ui-datagrid-select",children:U.map(e=>jsx("option",{value:e,children:e},e))})]})}),jsxs("div",{className:"ui-datagrid-footer-right",children:[jsxs("span",{className:"ui-datagrid-info",children:[he,"-",xe," of ",w]}),V>1&&jsx("div",{className:"ui-datagrid-footer-pagination",children:jsx(a$1,{count:V,page:x+1,onChange:(e,t)=>pe(t),size:"small",shape:"rounded"})})]})]})]})]})});K.displayName="DataGrid";var ke=K;export{K as a,ke as b};//# sourceMappingURL=chunk-NGNPVIAG.mjs.map
233
+ //# sourceMappingURL=chunk-NGNPVIAG.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/DataGrid/DataGrid.tsx"],"names":["STYLES","DataGrid","forwardRef","columns","rows","getRowId","pageProp","defaultPage","pageSizeProp","pageSizeOptions","pagination","paginationMode","rowCountProp","onPageChange","onPageSizeChange","checkboxSelection","rowSelectionModel","onRowSelectionModelChange","loading","density","getRowClassName","height","sx","classes","className","props","ref","pageState","setPageState","useState","isPageControlled","page","pageSizeState","setPageSizeState","isPageSizeControlled","pageSize","sortField","setSortField","sortOrder","setSortOrder","selectionModelInternal","setSelectionModelInternal","selectionModel","useEffect","updateSelection","newSelection","getRowIdValue","row","handleSortClick","col","nextOrder","sortedRows","a","b","c","valA","valB","totalRowsCount","paginatedRows","paginatedRowIds","isAllSelected","id","isSomeSelected","handleSelectAllChange","toAdd","remaining","handleRowSelectChange","rowId","isSelected","handlePageChange","newPage","handlePageSizeChange","newSize","fromIndex","toIndex","totalPages","getColStyle","style","jsxs","Fragment","jsx","cn","handleSx","Checkbox","isColSortable","isSorted","alignClass","index","rowCustomClass","value","opt","Pagination","_","p","DataGrid_default"],"mappings":"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","file":"chunk-C5X45JOF.mjs","sourcesContent":["'use client';\n\nimport { forwardRef, useState, useEffect, ChangeEvent, CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { Pagination } from '../Pagination/Pagination';\nimport { DataGridProps, GridRowId, GridColDef, GridRowModel } from './DataGrid.types';\n\nconst STYLES = `\n /* DataGrid Root */\n .ui-datagrid {\n display: flex;\n flex-direction: column;\n position: relative;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n background-color: #ffffff;\n font-family: inherit;\n box-sizing: border-box;\n overflow: hidden;\n }\n\n /* Main scroll area */\n .ui-datagrid-main {\n flex: 1 1 auto;\n position: relative;\n overflow: auto;\n width: 100%;\n }\n\n /* Table structure */\n .ui-datagrid-table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n text-align: left;\n table-layout: auto;\n }\n\n /* Table Headers */\n .ui-datagrid-thead {\n background-color: #f8fafc;\n position: sticky;\n top: 0;\n z-index: 3;\n border-bottom: 1px solid #e2e8f0;\n }\n\n .ui-datagrid-th {\n padding: 12px 16px;\n font-size: 0.875rem;\n font-weight: 600;\n color: #475569;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n border-bottom: 1px solid #e2e8f0;\n background-color: #f8fafc;\n transition: background-color 150ms;\n }\n\n .ui-datagrid-th--sortable {\n cursor: pointer;\n }\n\n .ui-datagrid-th--sortable:hover {\n background-color: #f1f5f9;\n }\n\n .ui-datagrid-th-content {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .ui-datagrid-th-sort-icon {\n display: inline-flex;\n align-items: center;\n color: #94a3b8;\n transition: color 150ms, transform 150ms;\n }\n\n .ui-datagrid-th-sort-icon--active {\n color: #3b82f6;\n }\n\n /* Row & Cells styling */\n .ui-datagrid-tr {\n border-bottom: 1px solid #e2e8f0;\n transition: background-color 150ms;\n }\n\n .ui-datagrid-tr:last-child {\n border-bottom: none;\n }\n\n .ui-datagrid-tr:hover {\n background-color: #f8fafc;\n }\n\n .ui-datagrid-tr--selected {\n background-color: rgba(59, 130, 246, 0.04);\n }\n\n .ui-datagrid-tr--selected:hover {\n background-color: rgba(59, 130, 246, 0.08);\n }\n\n .ui-datagrid-td {\n padding: 12px 16px;\n font-size: 0.875rem;\n color: #0f172a;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n /* Density support */\n .ui-datagrid--compact .ui-datagrid-th {\n padding: 8px 12px;\n font-size: 0.8125rem;\n }\n .ui-datagrid--compact .ui-datagrid-td {\n padding: 6px 12px;\n font-size: 0.8125rem;\n }\n\n .ui-datagrid--comfortable .ui-datagrid-th {\n padding: 16px 20px;\n font-size: 0.9375rem;\n }\n .ui-datagrid--comfortable .ui-datagrid-td {\n padding: 16px 20px;\n font-size: 0.9375rem;\n }\n\n /* Centered and aligned cell styles */\n .ui-datagrid-cell--align-center {\n text-align: center;\n }\n .ui-datagrid-cell--align-right {\n text-align: right;\n }\n\n .ui-datagrid-cell--checkbox {\n width: 48px;\n padding: 0;\n text-align: center;\n vertical-align: middle;\n }\n\n .ui-datagrid-cell--checkbox .ui-checkbox {\n vertical-align: middle;\n }\n\n /* Loading State glassmorphism overlay */\n .ui-datagrid-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.55);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(1px);\n }\n\n .ui-datagrid-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid #e2e8f0;\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: ui-datagrid-spin 1s linear infinite;\n }\n\n @keyframes ui-datagrid-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n /* Footer & Pagination styles */\n .ui-datagrid-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-top: 1px solid #e2e8f0;\n background-color: #ffffff;\n gap: 16px;\n font-size: 0.875rem;\n color: #475569;\n box-sizing: border-box;\n }\n\n .ui-datagrid-footer-left {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .ui-datagrid-rows-per-page {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .ui-datagrid-select {\n padding: 4px 8px;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background-color: #ffffff;\n color: #475569;\n font-family: inherit;\n font-size: 0.875rem;\n cursor: pointer;\n outline: none;\n transition: border-color 150ms;\n }\n\n .ui-datagrid-select:focus {\n border-color: #3b82f6;\n }\n\n .ui-datagrid-footer-right {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .ui-datagrid-info {\n font-weight: 500;\n }\n`;\n\nexport const DataGrid = forwardRef<HTMLDivElement, DataGridProps>(\n (\n {\n columns,\n rows = [],\n getRowId,\n page: pageProp,\n defaultPage = 0,\n pageSize: pageSizeProp = 10,\n pageSizeOptions = [5, 10, 25, 50],\n pagination = true,\n paginationMode = 'client',\n rowCount: rowCountProp,\n onPageChange,\n onPageSizeChange,\n checkboxSelection = false,\n rowSelectionModel,\n onRowSelectionModelChange,\n loading = false,\n density = 'standard',\n getRowClassName,\n height,\n sx,\n classes = {},\n className,\n ...props\n },\n ref\n ) => {\n // Page state (0-indexed internally to match MUI)\n const [pageState, setPageState] = useState(defaultPage);\n const isPageControlled = pageProp !== undefined && onPageChange !== undefined;\n const page = isPageControlled ? pageProp : pageState;\n\n // PageSize state\n const [pageSizeState, setPageSizeState] = useState(pageSizeProp !== undefined ? pageSizeProp : 10);\n const isPageSizeControlled = pageSizeProp !== undefined && onPageSizeChange !== undefined;\n const pageSize = isPageSizeControlled ? pageSizeProp : pageSizeState;\n\n // Client-side Sorting state\n const [sortField, setSortField] = useState<string | null>(null);\n const [sortOrder, setSortOrder] = useState<'asc' | 'desc' | null>(null);\n\n // Row selection state\n const [selectionModelInternal, setSelectionModelInternal] = useState<GridRowId[]>([]);\n const selectionModel = rowSelectionModel !== undefined ? rowSelectionModel : selectionModelInternal;\n\n // Sync props to state if parent updates them\n useEffect(() => {\n if (pageProp !== undefined) {\n setPageState(pageProp);\n }\n }, [pageProp]);\n\n useEffect(() => {\n if (pageSizeProp !== undefined) {\n setPageSizeState(pageSizeProp);\n }\n }, [pageSizeProp]);\n\n // Reset page if page size changes or rows filter\n useEffect(() => {\n setPageState(0);\n }, [pageSize]);\n\n // Handle Selection Change helper\n const updateSelection = (newSelection: GridRowId[]) => {\n if (rowSelectionModel === undefined) {\n setSelectionModelInternal(newSelection);\n }\n if (onRowSelectionModelChange) {\n onRowSelectionModelChange(newSelection);\n }\n };\n\n // Row ID helper\n const getRowIdValue = (row: GridRowModel): GridRowId => {\n if (getRowId) return getRowId(row);\n return row.id !== undefined ? row.id : '';\n };\n\n // Client-side sorting logic\n const handleSortClick = (col: GridColDef) => {\n if (col.sortable === false) return;\n\n let nextOrder: 'asc' | 'desc' | null = 'asc';\n if (sortField === col.field) {\n if (sortOrder === 'asc') nextOrder = 'desc';\n else if (sortOrder === 'desc') nextOrder = null;\n else nextOrder = 'asc';\n }\n\n setSortField(nextOrder ? col.field : null);\n setSortOrder(nextOrder);\n };\n\n // Compute sorted rows (only if client-side pagination/sorting)\n const getSortedRows = () => {\n if (paginationMode === 'server' || !sortField || !sortOrder) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const col = columns.find((c) => c.field === sortField);\n let valA = col?.valueGetter ? col.valueGetter({ row: a, value: a[sortField] }) : a[sortField];\n let valB = col?.valueGetter ? col.valueGetter({ row: b, value: b[sortField] }) : b[sortField];\n\n if (valA == null) valA = '';\n if (valB == null) valB = '';\n\n if (typeof valA === 'string' && typeof valB === 'string') {\n return sortOrder === 'asc' ? valA.localeCompare(valB) : valB.localeCompare(valA);\n }\n\n return sortOrder === 'asc'\n ? valA > valB ? 1 : valA < valB ? -1 : 0\n : valA < valB ? 1 : valA > valB ? -1 : 0;\n });\n };\n\n const sortedRows = getSortedRows();\n\n // Compute total rows count\n const totalRowsCount = paginationMode === 'server' ? (rowCountProp ?? rows.length) : rows.length;\n\n // Slice rows for client pagination\n const paginatedRows =\n pagination && paginationMode === 'client'\n ? sortedRows.slice(page * pageSize, (page + 1) * pageSize)\n : sortedRows;\n\n // Checkbox helper states\n const paginatedRowIds = paginatedRows.map(getRowIdValue);\n const isAllSelected = paginatedRowIds.length > 0 && paginatedRowIds.every((id) => selectionModel.includes(id));\n const isSomeSelected =\n paginatedRowIds.length > 0 && paginatedRowIds.some((id) => selectionModel.includes(id)) && !isAllSelected;\n\n const handleSelectAllChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n const toAdd = paginatedRowIds.filter((id) => !selectionModel.includes(id));\n updateSelection([...selectionModel, ...toAdd]);\n } else {\n const remaining = selectionModel.filter((id) => !paginatedRowIds.includes(id));\n updateSelection(remaining);\n }\n };\n\n const handleRowSelectChange = (rowId: GridRowId) => {\n const isSelected = selectionModel.includes(rowId);\n if (isSelected) {\n updateSelection(selectionModel.filter((id) => id !== rowId));\n } else {\n updateSelection([...selectionModel, rowId]);\n }\n };\n\n const handlePageChange = (newPage: number) => {\n if (!isPageControlled) {\n setPageState(newPage - 1);\n }\n if (onPageChange) {\n onPageChange(newPage - 1);\n }\n };\n\n const handlePageSizeChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const newSize = parseInt(e.target.value, 10);\n if (!isPageSizeControlled) {\n setPageSizeState(newSize);\n }\n if (onPageSizeChange) {\n onPageSizeChange(newSize);\n }\n };\n\n // Calculate ranges for paging footer (e.g. 1-10 of 100)\n const fromIndex = totalRowsCount === 0 ? 0 : page * pageSize + 1;\n const toIndex = Math.min(totalRowsCount, (page + 1) * pageSize);\n\n // Total Page count for Pagination component\n const totalPages = Math.ceil(totalRowsCount / pageSize);\n\n // Custom inline column widths\n const getColStyle = (col: GridColDef): CSSProperties => {\n const style: CSSProperties = {};\n if (col.width) {\n style.width = `${col.width}px`;\n style.minWidth = `${col.width}px`;\n } else if (col.minWidth) {\n style.minWidth = `${col.minWidth}px`;\n }\n if (col.flex) {\n style.flex = col.flex;\n }\n return style;\n };\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <div\n ref={ref}\n className={cn(\n 'ui-datagrid',\n `ui-datagrid--${density}`,\n classes.root,\n className\n )}\n style={{\n height,\n ...handleSx(sx),\n ...props.style,\n }}\n {...props}\n >\n {/* Main Scrollable Grid Content */}\n <div className={cn('ui-datagrid-main')}>\n {/* Loading Glass Overlay */}\n {loading && (\n <div className=\"ui-datagrid-loading-overlay\">\n <div className=\"ui-datagrid-spinner\" />\n </div>\n )}\n\n <table className={cn('ui-datagrid-table', classes.table)}>\n <thead className={cn('ui-datagrid-thead', classes.header)}>\n <tr className=\"ui-datagrid-tr\">\n {/* Select All Checkbox Cell */}\n {checkboxSelection && (\n <th className=\"ui-datagrid-th ui-datagrid-cell--checkbox\">\n <Checkbox\n size=\"small\"\n checked={isAllSelected}\n indeterminate={isSomeSelected}\n onChange={handleSelectAllChange}\n />\n </th>\n )}\n\n {/* Header Columns */}\n {columns.map((col) => {\n const isColSortable = col.sortable !== false;\n const isSorted = sortField === col.field;\n const alignClass = col.headerAlign ? `ui-datagrid-cell--align-${col.headerAlign}` : (col.align ? `ui-datagrid-cell--align-${col.align}` : '');\n\n return (\n <th\n key={col.field}\n onClick={() => handleSortClick(col)}\n className={cn(\n 'ui-datagrid-th',\n isColSortable && 'ui-datagrid-th--sortable',\n alignClass\n )}\n style={getColStyle(col)}\n >\n <div className=\"ui-datagrid-th-content\">\n <span>{col.headerName ?? col.field}</span>\n {isColSortable && (\n <span\n className={cn(\n 'ui-datagrid-th-sort-icon',\n isSorted && 'ui-datagrid-th-sort-icon--active'\n )}\n style={{\n transform: isSorted && sortOrder === 'desc' ? 'rotate(180deg)' : undefined,\n }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line>\n <polyline points=\"5 12 12 5 19 12\"></polyline>\n </svg>\n </span>\n )}\n </div>\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {paginatedRows.length === 0 ? (\n <tr className=\"ui-datagrid-tr\">\n <td\n colSpan={columns.length + (checkboxSelection ? 1 : 0)}\n className=\"ui-datagrid-td\"\n style={{ textAlign: 'center', padding: '32px 0', color: '#64748b' }}\n >\n No rows to display\n </td>\n </tr>\n ) : (\n paginatedRows.map((row, index) => {\n const rowId = getRowIdValue(row);\n const isSelected = selectionModel.includes(rowId);\n const rowCustomClass = getRowClassName ? getRowClassName({ row }) : '';\n\n return (\n <tr\n key={rowId || index}\n className={cn(\n 'ui-datagrid-tr',\n isSelected && 'ui-datagrid-tr--selected',\n rowCustomClass,\n classes.row\n )}\n >\n {/* Row Checkbox Cell */}\n {checkboxSelection && (\n <td className=\"ui-datagrid-td ui-datagrid-cell--checkbox\">\n <Checkbox\n size=\"small\"\n checked={isSelected}\n onChange={() => handleRowSelectChange(rowId)}\n />\n </td>\n )}\n\n {/* Cell Columns */}\n {columns.map((col) => {\n const alignClass = col.align ? `ui-datagrid-cell--align-${col.align}` : '';\n const value = col.valueGetter\n ? col.valueGetter({ row, value: row[col.field] })\n : row[col.field];\n\n return (\n <td\n key={col.field}\n className={cn('ui-datagrid-td', alignClass, classes.cell)}\n style={getColStyle(col)}\n >\n {col.renderCell\n ? col.renderCell({ value, row, field: col.field, id: rowId })\n : (value !== undefined && value !== null ? String(value) : '')}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Footer controls (Rows Per Page & Pagination switcher) */}\n {pagination && (\n <div className={cn('ui-datagrid-footer', classes.footer)}>\n <div className=\"ui-datagrid-footer-left\">\n <div className=\"ui-datagrid-rows-per-page\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={handlePageSizeChange}\n className=\"ui-datagrid-select\"\n >\n {pageSizeOptions.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"ui-datagrid-footer-right\">\n <span className=\"ui-datagrid-info\">\n {fromIndex}-{toIndex} of {totalRowsCount}\n </span>\n\n {totalPages > 1 && (\n <div className=\"ui-datagrid-footer-pagination\">\n <Pagination\n count={totalPages}\n page={page + 1}\n onChange={(_, p) => handlePageChange(p)}\n size=\"small\"\n shape=\"rounded\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n);\n\nDataGrid.displayName = 'DataGrid';\n\nexport default DataGrid;\n"]}
1
+ {"version":3,"sources":["../src/components/DataGrid/DataGrid.tsx"],"names":["STYLES","DataGrid","forwardRef","columns","rows","getRowId","pageProp","defaultPage","pageSizeProp","pageSizeOptions","pagination","paginationMode","rowCountProp","onPageChange","onPageSizeChange","checkboxSelection","rowSelectionModel","onRowSelectionModelChange","loading","density","getRowClassName","height","sx","classes","className","props","ref","pageState","setPageState","useState","isPageControlled","page","pageSizeState","setPageSizeState","isPageSizeControlled","pageSize","sortField","setSortField","sortOrder","setSortOrder","selectionModelInternal","setSelectionModelInternal","selectionModel","useEffect","updateSelection","newSelection","getRowIdValue","row","handleSortClick","col","nextOrder","sortedRows","a","b","c","valA","valB","totalRowsCount","paginatedRows","paginatedRowIds","isAllSelected","id","isSomeSelected","handleSelectAllChange","toAdd","remaining","handleRowSelectChange","rowId","isSelected","handlePageChange","newPage","handlePageSizeChange","newSize","fromIndex","toIndex","totalPages","getColStyle","style","jsxs","Fragment","jsx","cn","handleSx","Checkbox","isColSortable","isSorted","alignClass","index","rowCustomClass","value","opt","Pagination","_","p","DataGrid_default"],"mappings":"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","file":"chunk-NGNPVIAG.mjs","sourcesContent":["'use client';\n\nimport { forwardRef, useState, useEffect, ChangeEvent, CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\nimport { handleSx } from '../../utils/handleSx';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { Pagination } from '../Pagination/Pagination';\nimport { DataGridProps, GridRowId, GridColDef, GridRowModel } from './DataGrid.types';\n\nconst STYLES = `\n /* DataGrid Root */\n .ui-datagrid {\n display: flex;\n flex-direction: column;\n position: relative;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n background-color: #ffffff;\n font-family: inherit;\n box-sizing: border-box;\n overflow: hidden;\n }\n\n /* Main scroll area */\n .ui-datagrid-main {\n flex: 1 1 auto;\n position: relative;\n overflow: auto;\n width: 100%;\n }\n\n /* Table structure */\n .ui-datagrid-table {\n width: 100%;\n border-collapse: collapse;\n border-spacing: 0;\n text-align: left;\n table-layout: auto;\n }\n\n /* Table Headers */\n .ui-datagrid-thead {\n background-color: #f8fafc;\n position: sticky;\n top: 0;\n z-index: 3;\n border-bottom: 1px solid #e2e8f0;\n }\n\n .ui-datagrid-th {\n padding: 12px 16px;\n font-size: 0.875rem;\n font-weight: 600;\n color: #475569;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n border-bottom: 1px solid #e2e8f0;\n background-color: #f8fafc;\n transition: background-color 150ms;\n }\n\n .ui-datagrid-th--sortable {\n cursor: pointer;\n }\n\n .ui-datagrid-th--sortable:hover {\n background-color: #f1f5f9;\n }\n\n .ui-datagrid-th-content {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .ui-datagrid-th-sort-icon {\n display: inline-flex;\n align-items: center;\n color: #94a3b8;\n transition: color 150ms, transform 150ms;\n }\n\n .ui-datagrid-th-sort-icon--active {\n color: #3b82f6;\n }\n\n /* Row & Cells styling */\n .ui-datagrid-tr {\n border-bottom: 1px solid #e2e8f0;\n transition: background-color 150ms;\n }\n\n .ui-datagrid-tr:last-child {\n border-bottom: none;\n }\n\n .ui-datagrid-tr:hover {\n background-color: #f8fafc;\n }\n\n .ui-datagrid-tr--selected {\n background-color: rgba(59, 130, 246, 0.04);\n }\n\n .ui-datagrid-tr--selected:hover {\n background-color: rgba(59, 130, 246, 0.08);\n }\n\n .ui-datagrid-td {\n padding: 12px 16px;\n font-size: 0.875rem;\n color: #0f172a;\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n /* Density support */\n .ui-datagrid--compact .ui-datagrid-th {\n padding: 8px 12px;\n font-size: 0.8125rem;\n }\n .ui-datagrid--compact .ui-datagrid-td {\n padding: 6px 12px;\n font-size: 0.8125rem;\n }\n\n .ui-datagrid--comfortable .ui-datagrid-th {\n padding: 16px 20px;\n font-size: 0.9375rem;\n }\n .ui-datagrid--comfortable .ui-datagrid-td {\n padding: 16px 20px;\n font-size: 0.9375rem;\n }\n\n /* Centered and aligned cell styles */\n .ui-datagrid-cell--align-center {\n text-align: center;\n }\n .ui-datagrid-cell--align-right {\n text-align: right;\n }\n\n .ui-datagrid-cell--checkbox {\n width: 48px;\n padding: 0;\n text-align: center;\n vertical-align: middle;\n }\n\n .ui-datagrid-cell--checkbox .ui-checkbox {\n vertical-align: middle;\n }\n\n /* Loading State glassmorphism overlay */\n .ui-datagrid-loading-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.55);\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n backdrop-filter: blur(1px);\n }\n\n .ui-datagrid-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid #e2e8f0;\n border-top-color: #3b82f6;\n border-radius: 50%;\n animation: ui-datagrid-spin 1s linear infinite;\n }\n\n @keyframes ui-datagrid-spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n /* Footer & Pagination styles */\n .ui-datagrid-footer {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-top: 1px solid #e2e8f0;\n background-color: #ffffff;\n gap: 16px;\n font-size: 0.875rem;\n color: #475569;\n box-sizing: border-box;\n }\n\n .ui-datagrid-footer-left {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .ui-datagrid-rows-per-page {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .ui-datagrid-select {\n padding: 4px 8px;\n border: 1px solid #cbd5e1;\n border-radius: 4px;\n background-color: #ffffff;\n color: #475569;\n font-family: inherit;\n font-size: 0.875rem;\n cursor: pointer;\n outline: none;\n transition: border-color 150ms;\n }\n\n .ui-datagrid-select:focus {\n border-color: #3b82f6;\n }\n\n .ui-datagrid-footer-right {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .ui-datagrid-info {\n font-weight: 500;\n }\n`;\n\nexport const DataGrid = forwardRef<HTMLDivElement, DataGridProps>(\n (\n {\n columns,\n rows = [],\n getRowId,\n page: pageProp,\n defaultPage = 0,\n pageSize: pageSizeProp = 10,\n pageSizeOptions = [5, 10, 25, 50],\n pagination = true,\n paginationMode = 'client',\n rowCount: rowCountProp,\n onPageChange,\n onPageSizeChange,\n checkboxSelection = false,\n rowSelectionModel,\n onRowSelectionModelChange,\n loading = false,\n density = 'standard',\n getRowClassName,\n height,\n sx,\n classes = {},\n className,\n ...props\n },\n ref\n ) => {\n // Page state (0-indexed internally to match MUI)\n const [pageState, setPageState] = useState(defaultPage);\n const isPageControlled = pageProp !== undefined && onPageChange !== undefined;\n const page = isPageControlled ? pageProp : pageState;\n\n // PageSize state\n const [pageSizeState, setPageSizeState] = useState(pageSizeProp !== undefined ? pageSizeProp : 10);\n const isPageSizeControlled = pageSizeProp !== undefined && onPageSizeChange !== undefined;\n const pageSize = isPageSizeControlled ? pageSizeProp : pageSizeState;\n\n // Client-side Sorting state\n const [sortField, setSortField] = useState<string | null>(null);\n const [sortOrder, setSortOrder] = useState<'asc' | 'desc' | null>(null);\n\n // Row selection state\n const [selectionModelInternal, setSelectionModelInternal] = useState<GridRowId[]>([]);\n const selectionModel = rowSelectionModel !== undefined ? rowSelectionModel : selectionModelInternal;\n\n // Sync props to state if parent updates them\n useEffect(() => {\n if (pageProp !== undefined) {\n setPageState(pageProp);\n }\n }, [pageProp]);\n\n useEffect(() => {\n if (pageSizeProp !== undefined) {\n setPageSizeState(pageSizeProp);\n }\n }, [pageSizeProp]);\n\n // Reset page if page size changes or rows filter\n useEffect(() => {\n setPageState(0);\n }, [pageSize]);\n\n // Handle Selection Change helper\n const updateSelection = (newSelection: GridRowId[]) => {\n if (rowSelectionModel === undefined) {\n setSelectionModelInternal(newSelection);\n }\n if (onRowSelectionModelChange) {\n onRowSelectionModelChange(newSelection);\n }\n };\n\n // Row ID helper\n const getRowIdValue = (row: GridRowModel): GridRowId => {\n if (getRowId) return getRowId(row);\n return row.id !== undefined ? row.id : '';\n };\n\n // Client-side sorting logic\n const handleSortClick = (col: GridColDef) => {\n if (col.sortable === false) return;\n\n let nextOrder: 'asc' | 'desc' | null = 'asc';\n if (sortField === col.field) {\n if (sortOrder === 'asc') nextOrder = 'desc';\n else if (sortOrder === 'desc') nextOrder = null;\n else nextOrder = 'asc';\n }\n\n setSortField(nextOrder ? col.field : null);\n setSortOrder(nextOrder);\n };\n\n // Compute sorted rows (only if client-side pagination/sorting)\n const getSortedRows = () => {\n if (paginationMode === 'server' || !sortField || !sortOrder) {\n return rows;\n }\n\n return [...rows].sort((a, b) => {\n const col = columns.find((c) => c.field === sortField);\n let valA = col?.valueGetter ? col.valueGetter({ row: a, value: a[sortField] }) : a[sortField];\n let valB = col?.valueGetter ? col.valueGetter({ row: b, value: b[sortField] }) : b[sortField];\n\n if (valA == null) valA = '';\n if (valB == null) valB = '';\n\n if (typeof valA === 'string' && typeof valB === 'string') {\n return sortOrder === 'asc' ? valA.localeCompare(valB) : valB.localeCompare(valA);\n }\n\n return sortOrder === 'asc'\n ? valA > valB ? 1 : valA < valB ? -1 : 0\n : valA < valB ? 1 : valA > valB ? -1 : 0;\n });\n };\n\n const sortedRows = getSortedRows();\n\n // Compute total rows count\n const totalRowsCount = paginationMode === 'server' ? (rowCountProp ?? rows.length) : rows.length;\n\n // Slice rows for client pagination\n const paginatedRows =\n pagination && paginationMode === 'client'\n ? sortedRows.slice(page * pageSize, (page + 1) * pageSize)\n : sortedRows;\n\n // Checkbox helper states\n const paginatedRowIds = paginatedRows.map(getRowIdValue);\n const isAllSelected = paginatedRowIds.length > 0 && paginatedRowIds.every((id) => selectionModel.includes(id));\n const isSomeSelected =\n paginatedRowIds.length > 0 && paginatedRowIds.some((id) => selectionModel.includes(id)) && !isAllSelected;\n\n const handleSelectAllChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n const toAdd = paginatedRowIds.filter((id) => !selectionModel.includes(id));\n updateSelection([...selectionModel, ...toAdd]);\n } else {\n const remaining = selectionModel.filter((id) => !paginatedRowIds.includes(id));\n updateSelection(remaining);\n }\n };\n\n const handleRowSelectChange = (rowId: GridRowId) => {\n const isSelected = selectionModel.includes(rowId);\n if (isSelected) {\n updateSelection(selectionModel.filter((id) => id !== rowId));\n } else {\n updateSelection([...selectionModel, rowId]);\n }\n };\n\n const handlePageChange = (newPage: number) => {\n if (!isPageControlled) {\n setPageState(newPage - 1);\n }\n if (onPageChange) {\n onPageChange(newPage - 1);\n }\n };\n\n const handlePageSizeChange = (e: ChangeEvent<HTMLSelectElement>) => {\n const newSize = parseInt(e.target.value, 10);\n if (!isPageSizeControlled) {\n setPageSizeState(newSize);\n }\n if (onPageSizeChange) {\n onPageSizeChange(newSize);\n }\n };\n\n // Calculate ranges for paging footer (e.g. 1-10 of 100)\n const fromIndex = totalRowsCount === 0 ? 0 : page * pageSize + 1;\n const toIndex = Math.min(totalRowsCount, (page + 1) * pageSize);\n\n // Total Page count for Pagination component\n const totalPages = Math.ceil(totalRowsCount / pageSize);\n\n // Custom inline column widths\n const getColStyle = (col: GridColDef): CSSProperties => {\n const style: CSSProperties = {};\n if (col.width) {\n style.width = `${col.width}px`;\n style.minWidth = `${col.width}px`;\n } else if (col.minWidth) {\n style.minWidth = `${col.minWidth}px`;\n }\n if (col.flex) {\n style.flex = col.flex;\n }\n return style;\n };\n\n return (\n <>\n <style dangerouslySetInnerHTML={{ __html: STYLES }} />\n <div\n ref={ref}\n className={cn(\n 'ui-datagrid',\n `ui-datagrid--${density}`,\n classes.root,\n className\n )}\n style={{\n height,\n ...handleSx(sx),\n ...props.style,\n }}\n {...props}\n >\n {/* Main Scrollable Grid Content */}\n <div className={cn('ui-datagrid-main')}>\n {/* Loading Glass Overlay */}\n {loading && (\n <div className=\"ui-datagrid-loading-overlay\">\n <div className=\"ui-datagrid-spinner\" />\n </div>\n )}\n\n <table className={cn('ui-datagrid-table', classes.table)}>\n <thead className={cn('ui-datagrid-thead', classes.header)}>\n <tr className=\"ui-datagrid-tr\">\n {/* Select All Checkbox Cell */}\n {checkboxSelection && (\n <th className=\"ui-datagrid-th ui-datagrid-cell--checkbox\">\n <Checkbox\n size=\"small\"\n checked={isAllSelected}\n indeterminate={isSomeSelected}\n onChange={handleSelectAllChange}\n />\n </th>\n )}\n\n {/* Header Columns */}\n {columns.map((col) => {\n const isColSortable = col.sortable !== false;\n const isSorted = sortField === col.field;\n const alignClass = col.headerAlign ? `ui-datagrid-cell--align-${col.headerAlign}` : (col.align ? `ui-datagrid-cell--align-${col.align}` : '');\n\n return (\n <th\n key={col.field}\n onClick={() => handleSortClick(col)}\n className={cn(\n 'ui-datagrid-th',\n isColSortable && 'ui-datagrid-th--sortable',\n alignClass\n )}\n style={getColStyle(col)}\n >\n <div className=\"ui-datagrid-th-content\">\n <span>{col.headerName ?? col.field}</span>\n {isColSortable && (\n <span\n className={cn(\n 'ui-datagrid-th-sort-icon',\n isSorted && 'ui-datagrid-th-sort-icon--active'\n )}\n style={{\n transform: isSorted && sortOrder === 'desc' ? 'rotate(180deg)' : undefined,\n }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"5\"></line>\n <polyline points=\"5 12 12 5 19 12\"></polyline>\n </svg>\n </span>\n )}\n </div>\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody>\n {paginatedRows.length === 0 ? (\n <tr className=\"ui-datagrid-tr\">\n <td\n colSpan={columns.length + (checkboxSelection ? 1 : 0)}\n className=\"ui-datagrid-td\"\n style={{ textAlign: 'center', padding: '32px 0', color: '#64748b' }}\n >\n No rows to display\n </td>\n </tr>\n ) : (\n paginatedRows.map((row, index) => {\n const rowId = getRowIdValue(row);\n const isSelected = selectionModel.includes(rowId);\n const rowCustomClass = getRowClassName ? getRowClassName({ row }) : '';\n\n return (\n <tr\n key={rowId || index}\n className={cn(\n 'ui-datagrid-tr',\n isSelected && 'ui-datagrid-tr--selected',\n rowCustomClass,\n classes.row\n )}\n >\n {/* Row Checkbox Cell */}\n {checkboxSelection && (\n <td className=\"ui-datagrid-td ui-datagrid-cell--checkbox\">\n <Checkbox\n size=\"small\"\n checked={isSelected}\n onChange={() => handleRowSelectChange(rowId)}\n />\n </td>\n )}\n\n {/* Cell Columns */}\n {columns.map((col) => {\n const alignClass = col.align ? `ui-datagrid-cell--align-${col.align}` : '';\n const value = col.valueGetter\n ? col.valueGetter({ row, value: row[col.field] })\n : row[col.field];\n\n return (\n <td\n key={col.field}\n className={cn('ui-datagrid-td', alignClass, classes.cell)}\n style={getColStyle(col)}\n >\n {col.renderCell\n ? col.renderCell({ value, row, field: col.field, id: rowId })\n : (value !== undefined && value !== null ? String(value) : '')}\n </td>\n );\n })}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n\n {/* Footer controls (Rows Per Page & Pagination switcher) */}\n {pagination && (\n <div className={cn('ui-datagrid-footer', classes.footer)}>\n <div className=\"ui-datagrid-footer-left\">\n <div className=\"ui-datagrid-rows-per-page\">\n <span>Rows per page:</span>\n <select\n value={pageSize}\n onChange={handlePageSizeChange}\n className=\"ui-datagrid-select\"\n >\n {pageSizeOptions.map((opt) => (\n <option key={opt} value={opt}>\n {opt}\n </option>\n ))}\n </select>\n </div>\n </div>\n\n <div className=\"ui-datagrid-footer-right\">\n <span className=\"ui-datagrid-info\">\n {fromIndex}-{toIndex} of {totalRowsCount}\n </span>\n\n {totalPages > 1 && (\n <div className=\"ui-datagrid-footer-pagination\">\n <Pagination\n count={totalPages}\n page={page + 1}\n onChange={(_, p) => handlePageChange(p)}\n size=\"small\"\n shape=\"rounded\"\n />\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n </>\n );\n }\n);\n\nDataGrid.displayName = 'DataGrid';\n\nexport default DataGrid;\n"]}