jc-react-datatable 1.0.0 → 1.0.1

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.
@@ -0,0 +1,263 @@
1
+ /* Main Wrapper */
2
+ .jc-datatable-wrapper {
3
+ width: 100%;
4
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
5
+ color: #333;
6
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
7
+ border-radius: 8px;
8
+ background-color: #fff;
9
+ overflow: hidden;
10
+ }
11
+
12
+ /* Table Container (for scrolling if needed) */
13
+ .jc-datatable-container {
14
+ overflow-x: auto;
15
+ min-height: 200px;
16
+ }
17
+
18
+ /* Table */
19
+ .jc-datatable-table {
20
+ width: auto;
21
+ min-width: 100%;
22
+ border-collapse: collapse;
23
+ border-spacing: 0;
24
+ }
25
+
26
+ /* Header */
27
+ .jc-datatable-thead {
28
+ background-color: #f8fafc;
29
+ }
30
+
31
+ .jc-datatable-th {
32
+ padding: 16px 16px;
33
+ text-align: left;
34
+ font-weight: 600;
35
+ font-size: 14px;
36
+ color: #64748b;
37
+ border-bottom: 2px solid #e2e8f0;
38
+ vertical-align: top;
39
+ position: relative; /* For Filter Popover */
40
+ white-space: nowrap;
41
+ position: sticky;
42
+ top: 0;
43
+ z-index: 5;
44
+ background-color: #f8fafc; /* Ensure it's opaque over scrolling content */
45
+ }
46
+
47
+ .jc-datatable-th.sortable {
48
+ cursor: pointer;
49
+ user-select: none;
50
+ transition: background-color 0.2s;
51
+ }
52
+
53
+ .jc-datatable-th.sortable:hover {
54
+ background-color: #f1f5f9;
55
+ }
56
+
57
+ .jc-datatable-th-content {
58
+ display: flex;
59
+ align-items: center;
60
+ gap: 8px;
61
+ }
62
+
63
+ .jc-datatable-sort-icon {
64
+ font-size: 12px;
65
+ color: #cbd5e1;
66
+ }
67
+
68
+ .jc-datatable-sort-icon.active {
69
+ color: #3b82f6;
70
+ font-weight: bold;
71
+ }
72
+
73
+ /* Filter Trigger Icon */
74
+ .jc-datatable-filter-trigger {
75
+ background: none;
76
+ border: none;
77
+ cursor: pointer;
78
+ color: #cbd5e1;
79
+ padding: 4px;
80
+ border-radius: 4px;
81
+ display: flex;
82
+ align-items: center;
83
+ transition: all 0.2s;
84
+ }
85
+
86
+ .jc-datatable-filter-trigger:hover,
87
+ .jc-datatable-filter-trigger.active {
88
+ color: #3b82f6;
89
+ background-color: #e0f2fe;
90
+ }
91
+
92
+ /* Filter Popover */
93
+ .jc-datatable-filter-popover {
94
+ position: absolute;
95
+ top: 100%;
96
+ left: 0;
97
+ z-index: 10;
98
+ background: white;
99
+ padding: 8px;
100
+ border-radius: 6px;
101
+ box-shadow: 0 4px 14px rgba(0,0,0,0.1);
102
+ border: 1px solid #e2e8f0;
103
+ width: 220px;
104
+ margin-top: 4px;
105
+ }
106
+
107
+ .jc-datatable-filter-popover.right-aligned {
108
+ left: auto;
109
+ right: 0;
110
+ }
111
+
112
+ .jc-datatable-filter {
113
+ display: flex;
114
+ gap: 4px;
115
+ align-items: center;
116
+ }
117
+
118
+ .jc-datatable-filter-input {
119
+ width: 100%;
120
+ padding: 8px 10px;
121
+ border: 1px solid #e2e8f0;
122
+ border-radius: 4px;
123
+ font-size: 13px;
124
+ transition: border-color 0.2s;
125
+ }
126
+
127
+ .jc-datatable-filter-input:focus {
128
+ outline: none;
129
+ border-color: #3b82f6;
130
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
131
+ }
132
+
133
+ .jc-datatable-filter-close {
134
+ background: none;
135
+ border: none;
136
+ font-size: 18px;
137
+ color: #94a3b8;
138
+ cursor: pointer;
139
+ }
140
+
141
+ .jc-datatable-filter-close:hover {
142
+ color: #ef4444;
143
+ }
144
+
145
+ /* Body */
146
+ .jc-datatable-tbody {
147
+ background-color: #fff;
148
+ }
149
+
150
+ .jc-datatable-tr {
151
+ border-bottom: 1px solid #f1f5f9;
152
+ transition: background-color 0.2s;
153
+ }
154
+
155
+ .jc-datatable-tr:last-child {
156
+ border-bottom: none;
157
+ }
158
+
159
+ .jc-datatable-tr:hover {
160
+ background-color: #f8fafc;
161
+ }
162
+
163
+ .jc-datatable-tr.clickable {
164
+ cursor: pointer;
165
+ }
166
+
167
+ .jc-datatable-tr.clickable:hover {
168
+ background-color: #eff6ff;
169
+ }
170
+
171
+ .jc-datatable-td {
172
+ padding: 14px 16px;
173
+ font-size: 14px;
174
+ color: #334155;
175
+ vertical-align: middle;
176
+ }
177
+
178
+ /* Loading & Empty States */
179
+ .jc-datatable-loading-cell,
180
+ .jc-datatable-empty-cell {
181
+ text-align: center;
182
+ padding: 48px;
183
+ color: #64748b;
184
+ }
185
+
186
+ .jc-datatable-spinner {
187
+ border: 3px solid #f1f5f9;
188
+ border-radius: 50%;
189
+ border-top: 3px solid #3b82f6;
190
+ width: 28px;
191
+ height: 28px;
192
+ animation: spin 0.8s linear infinite;
193
+ margin: 0 auto 16px;
194
+ }
195
+
196
+ @keyframes spin {
197
+ 0% { transform: rotate(0deg); }
198
+ 100% { transform: rotate(360deg); }
199
+ }
200
+
201
+ /* Pagination */
202
+ .jc-datatable-pagination {
203
+ display: flex;
204
+ justify-content: space-between;
205
+ align-items: center;
206
+ padding: 16px 20px;
207
+ border-top: 1px solid #e2e8f0;
208
+ background-color: #f8fafc;
209
+ flex-wrap: wrap;
210
+ gap: 16px;
211
+ }
212
+
213
+ .jc-datatable-pagination-info {
214
+ font-size: 13px;
215
+ color: #64748b;
216
+ font-weight: 500;
217
+ }
218
+
219
+ .jc-datatable-pagination-controls {
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 12px;
223
+ }
224
+
225
+ .jc-datatable-page-size-select {
226
+ padding: 6px 10px;
227
+ border: 1px solid #cbd5e1;
228
+ border-radius: 4px;
229
+ font-size: 13px;
230
+ color: #475569;
231
+ cursor: pointer;
232
+ }
233
+
234
+ .jc-datatable-pagination-btn {
235
+ padding: 6px 14px;
236
+ border: 1px solid #cbd5e1;
237
+ background-color: #fff;
238
+ border-radius: 4px;
239
+ font-size: 13px;
240
+ cursor: pointer;
241
+ transition: all 0.2s;
242
+ color: #475569;
243
+ font-weight: 500;
244
+ }
245
+
246
+ .jc-datatable-pagination-btn:disabled {
247
+ opacity: 0.5;
248
+ cursor: not-allowed;
249
+ background-color: #f1f5f9;
250
+ }
251
+
252
+ .jc-datatable-pagination-btn:not(:disabled):hover {
253
+ background-color: #fff;
254
+ border-color: #3b82f6;
255
+ color: #3b82f6;
256
+ }
257
+
258
+ .jc-datatable-pagination-pages {
259
+ font-size: 13px;
260
+ color: #475569;
261
+ }
262
+
263
+