@svadmin/lite 0.3.3 → 0.3.5

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 (75) hide show
  1. package/package.json +18 -4
  2. package/src/components/LiteAlert.svelte +0 -19
  3. package/src/components/LiteArrayField.svelte +0 -113
  4. package/src/components/LiteAuditLog.svelte +0 -104
  5. package/src/components/LiteBreadcrumbs.svelte +0 -39
  6. package/src/components/LiteChatDialog.svelte +0 -101
  7. package/src/components/LiteConfirmDialog.svelte +0 -60
  8. package/src/components/LiteEmptyState.svelte +0 -39
  9. package/src/components/LiteForm.svelte +0 -138
  10. package/src/components/LiteLayout.svelte +0 -106
  11. package/src/components/LiteLogin.svelte +0 -41
  12. package/src/components/LitePagination.svelte +0 -73
  13. package/src/components/LitePermissionMatrix.svelte +0 -147
  14. package/src/components/LiteSearch.svelte +0 -41
  15. package/src/components/LiteShow.svelte +0 -61
  16. package/src/components/LiteShowField.svelte +0 -51
  17. package/src/components/LiteStatsCard.svelte +0 -70
  18. package/src/components/LiteTable.svelte +0 -132
  19. package/src/components/LiteTabs.svelte +0 -57
  20. package/src/components/advanced/LiteAutoSaveIndicator.svelte +0 -26
  21. package/src/components/advanced/LiteDraggableHeader.svelte +0 -33
  22. package/src/components/advanced/LiteDrawerForm.svelte +0 -42
  23. package/src/components/advanced/LiteInlineEdit.svelte +0 -32
  24. package/src/components/advanced/LiteModalForm.svelte +0 -44
  25. package/src/components/advanced/LiteToast.svelte +0 -34
  26. package/src/components/advanced/LiteUndoableNotification.svelte +0 -25
  27. package/src/components/advanced/LiteVirtualTable.svelte +0 -44
  28. package/src/components/buttons/LiteCloneButton.svelte +0 -33
  29. package/src/components/buttons/LiteCreateButton.svelte +0 -31
  30. package/src/components/buttons/LiteDeleteButton.svelte +0 -57
  31. package/src/components/buttons/LiteEditButton.svelte +0 -33
  32. package/src/components/buttons/LiteExportButton.svelte +0 -31
  33. package/src/components/buttons/LiteImportButton.svelte +0 -50
  34. package/src/components/buttons/LiteListButton.svelte +0 -31
  35. package/src/components/buttons/LiteRefreshButton.svelte +0 -27
  36. package/src/components/buttons/LiteSaveButton.svelte +0 -27
  37. package/src/components/buttons/LiteShowButton.svelte +0 -33
  38. package/src/components/fields/LiteBooleanField.svelte +0 -41
  39. package/src/components/fields/LiteDateField.svelte +0 -51
  40. package/src/components/fields/LiteEmailField.svelte +0 -40
  41. package/src/components/fields/LiteFileField.svelte +0 -53
  42. package/src/components/fields/LiteImageField.svelte +0 -57
  43. package/src/components/fields/LiteJsonField.svelte +0 -43
  44. package/src/components/fields/LiteMarkdownField.svelte +0 -33
  45. package/src/components/fields/LiteMultiSelectField.svelte +0 -57
  46. package/src/components/fields/LiteNumberField.svelte +0 -34
  47. package/src/components/fields/LiteRelationField.svelte +0 -66
  48. package/src/components/fields/LiteRichTextField.svelte +0 -45
  49. package/src/components/fields/LiteSelectField.svelte +0 -47
  50. package/src/components/fields/LiteTagField.svelte +0 -44
  51. package/src/components/fields/LiteTextField.svelte +0 -34
  52. package/src/components/fields/LiteUrlField.svelte +0 -40
  53. package/src/components/layout/LiteAuthenticated.svelte +0 -23
  54. package/src/components/layout/LiteCanAccess.svelte +0 -27
  55. package/src/components/layout/LiteCatchAllNavigate.svelte +0 -20
  56. package/src/components/layout/LiteErrorBoundary.svelte +0 -20
  57. package/src/components/layout/LiteErrorComponent.svelte +0 -37
  58. package/src/components/layout/LiteHeader.svelte +0 -19
  59. package/src/components/layout/LiteNavigateToResource.svelte +0 -25
  60. package/src/components/layout/LiteSidebar.svelte +0 -93
  61. package/src/components/pages/LiteCreatePage.svelte +0 -39
  62. package/src/components/pages/LiteEditPage.svelte +0 -54
  63. package/src/components/pages/LiteForgotPasswordPage.svelte +0 -60
  64. package/src/components/pages/LiteListPage.svelte +0 -81
  65. package/src/components/pages/LiteProfilePage.svelte +0 -61
  66. package/src/components/pages/LiteRegisterPage.svelte +0 -64
  67. package/src/components/pages/LiteShowPage.svelte +0 -61
  68. package/src/components/pages/LiteUpdatePasswordPage.svelte +0 -51
  69. package/src/components/widgets/LiteAnomalyBadge.svelte +0 -40
  70. package/src/components/widgets/LiteBarChart.svelte +0 -45
  71. package/src/components/widgets/LiteInsightCard.svelte +0 -28
  72. package/src/components/widgets/LiteLineChart.svelte +0 -48
  73. package/src/components/widgets/LitePieChart.svelte +0 -44
  74. package/src/lite.css +0 -708
  75. package/static/enhance.js +0 -56
package/src/lite.css DELETED
@@ -1,708 +0,0 @@
1
- /**
2
- * @svadmin/lite — IE11+ Compatible CSS
3
- *
4
- * Baseline: IE11 (standard flexbox, no CSS Variables, no Grid)
5
- * Color system: Aligned with @svadmin/ui (Indigo primary / Slate neutrals)
6
- *
7
- * RULES:
8
- * - No CSS variables (var(--x))
9
- * - No color-mix(), :is(), :where(), :has(), :focus-visible
10
- * - No CSS Grid (flexbox only)
11
- * - No flexbox `gap` (use margins)
12
- * - No backdrop-filter, appearance
13
- * - No oklch() / hsl() — hardcoded hex only
14
- * - All colors directly aligned with @svadmin/ui Shadcn Slate/Indigo palette
15
- */
16
-
17
- /* ─── Reset & Base ─────────────────────────────────────────── */
18
- *, *::before, *::after {
19
- box-sizing: border-box;
20
- }
21
-
22
- html, body {
23
- margin: 0;
24
- padding: 0;
25
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
26
- font-size: 14px;
27
- line-height: 1.5;
28
- color: #0f172a; /* slate-900 — aligned with --foreground */
29
- background: #f8fafc; /* slate-50 — aligned with --background */
30
- -webkit-font-smoothing: antialiased;
31
- -moz-osx-font-smoothing: grayscale;
32
- }
33
-
34
- a {
35
- color: #4f46e5; /* indigo-600 — aligned with --primary */
36
- text-decoration: none;
37
- transition: color 0.15s ease;
38
- }
39
- a:hover {
40
- color: #4338ca; /* indigo-700 */
41
- text-decoration: underline;
42
- }
43
-
44
- /* ─── Layout ───────────────────────────────────────────────── */
45
- .lite-wrapper {
46
- display: flex;
47
- min-height: 100vh;
48
- }
49
-
50
- .lite-sidebar {
51
- width: 230px;
52
- background: #ffffff;
53
- color: #0f172a;
54
- padding: 16px 0;
55
- flex-shrink: 0;
56
- border-right: 1px solid #e2e8f0;
57
- }
58
-
59
- .lite-sidebar-brand {
60
- padding: 0 16px 16px;
61
- font-size: 16px;
62
- font-weight: 700;
63
- color: #0f172a;
64
- letter-spacing: -0.025em;
65
- border-bottom: 1px solid #f1f5f9;
66
- margin-bottom: 8px;
67
- }
68
-
69
- .lite-sidebar a {
70
- display: block;
71
- position: relative;
72
- padding: 8px 16px;
73
- color: #64748b;
74
- font-size: 13px;
75
- font-weight: 500;
76
- transition: background 0.15s ease, color 0.15s ease;
77
- }
78
- .lite-sidebar a:hover {
79
- background: #f8fafc;
80
- color: #0f172a;
81
- text-decoration: none;
82
- }
83
- .lite-sidebar a.active {
84
- background: #f8fafc;
85
- color: #0f172a;
86
- text-decoration: none;
87
- }
88
- .lite-sidebar a.active::before {
89
- content: '';
90
- position: absolute;
91
- left: 0;
92
- top: 50%;
93
- transform: translateY(-50%);
94
- width: 3px;
95
- height: 60%;
96
- border-radius: 0 3px 3px 0;
97
- background: #4f46e5;
98
- }
99
-
100
- /* ─── Multi-Level Menu (details/summary) ──────────────────── */
101
- .lite-menu-group {
102
- margin: 0;
103
- border: none;
104
- }
105
- .lite-menu-group summary {
106
- list-style: none;
107
- cursor: pointer;
108
- padding: 8px 16px;
109
- color: #64748b;
110
- font-size: 11px;
111
- font-weight: 700;
112
- text-transform: uppercase;
113
- letter-spacing: 0.06em;
114
- transition: color 0.15s ease, background 0.15s ease;
115
- }
116
- .lite-menu-group summary::-webkit-details-marker {
117
- display: none;
118
- }
119
- .lite-menu-group summary:hover {
120
- color: #0f172a;
121
- background: #f8fafc;
122
- }
123
- .lite-menu-group[open] > summary {
124
- color: #0f172a;
125
- }
126
- .lite-menu-group[open] > summary::after {
127
- content: " \25BE";
128
- }
129
- .lite-menu-group:not([open]) > summary::after {
130
- content: " \25B8";
131
- }
132
-
133
- .lite-main {
134
- flex: 1;
135
- padding: 28px 32px;
136
- min-width: 0;
137
- background: #f8fafc;
138
- }
139
-
140
- .lite-header {
141
- display: flex;
142
- align-items: center;
143
- justify-content: space-between;
144
- margin-bottom: 24px;
145
- }
146
-
147
- .lite-header h1 {
148
- font-size: 22px;
149
- font-weight: 600;
150
- margin: 0;
151
- color: #0f172a;
152
- letter-spacing: -0.025em;
153
- }
154
-
155
- /* ─── Cards ────────────────────────────────────────────────── */
156
- .lite-card {
157
- background: #fff;
158
- border: 1px solid #e2e8f0;
159
- border-radius: 8px;
160
- padding: 24px;
161
- margin-bottom: 16px;
162
- box-shadow: 0 2px 8px -2px rgba(0, 0, 0, 0.05), 0 4px 16px -4px rgba(0, 0, 0, 0.02);
163
- transition: box-shadow 0.2s ease, transform 0.2s ease;
164
- }
165
- .lite-card:hover {
166
- box-shadow: 0 4px 12px -2px rgba(0, 0, 0, 0.08), 0 8px 24px -6px rgba(0, 0, 0, 0.04);
167
- transform: translateY(-1px);
168
- }
169
-
170
- /* ─── Table ────────────────────────────────────────────────── */
171
- .lite-table {
172
- width: 100%;
173
- border-collapse: collapse;
174
- background: #fff;
175
- border: 1px solid #e2e8f0;
176
- border-radius: 8px;
177
- }
178
-
179
- .lite-table th {
180
- text-align: left;
181
- padding: 10px 14px;
182
- font-weight: 600;
183
- font-size: 11px;
184
- text-transform: uppercase;
185
- letter-spacing: 0.05em;
186
- color: #64748b; /* slate-500 — aligned with --muted-foreground */
187
- background: #f8fafc; /* slate-50 */
188
- border-bottom: 1px solid #e2e8f0;
189
- }
190
-
191
- .lite-table th a {
192
- color: #64748b;
193
- transition: color 0.15s ease;
194
- }
195
- .lite-table th a:hover {
196
- color: #0f172a;
197
- text-decoration: none;
198
- }
199
- .lite-table th .sort-indicator {
200
- font-size: 10px;
201
- margin-left: 4px;
202
- }
203
-
204
- .lite-table td {
205
- padding: 10px 14px;
206
- border-bottom: 1px solid #f1f5f9; /* slate-100 — softer row divider */
207
- color: #334155; /* slate-700 */
208
- font-size: 13px;
209
- transition: background 0.12s ease;
210
- }
211
-
212
- .lite-table tr:hover td {
213
- background: #f8f7fd;
214
- }
215
-
216
- .lite-table td.actions {
217
- text-align: right;
218
- white-space: nowrap;
219
- }
220
-
221
- /* ─── Buttons ──────────────────────────────────────────────── */
222
- .lite-btn {
223
- display: inline-block;
224
- padding: 7px 16px;
225
- font-size: 13px;
226
- font-weight: 500;
227
- border: 1px solid #e2e8f0;
228
- border-radius: 6px;
229
- background: #fff;
230
- color: #334155;
231
- cursor: pointer;
232
- text-decoration: none;
233
- vertical-align: middle;
234
- line-height: 1.5;
235
- transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, transform 0.1s cubic-bezier(0.16, 1, 0.3, 1);
236
- }
237
- .lite-btn:hover {
238
- background: #f8fafc;
239
- border-color: #cbd5e1;
240
- text-decoration: none;
241
- }
242
- .lite-btn:focus {
243
- outline: none;
244
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15); /* indigo ring */
245
- }
246
- .lite-btn:active:not(:disabled) {
247
- transform: scale(0.97);
248
- }
249
-
250
- .lite-btn-primary {
251
- background: #4f46e5; /* indigo-600 */
252
- border-color: #4f46e5;
253
- color: #fff;
254
- }
255
- .lite-btn-primary:hover {
256
- background: #4338ca; /* indigo-700 */
257
- border-color: #4338ca;
258
- }
259
- .lite-btn-primary:focus {
260
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.3);
261
- }
262
-
263
- .lite-btn-danger {
264
- background: #fff;
265
- border-color: #fecaca; /* red-200 */
266
- color: #dc2626; /* red-600 */
267
- }
268
- .lite-btn-danger:hover {
269
- background: #fef2f2; /* red-50 */
270
- border-color: #fca5a5;
271
- }
272
- .lite-btn-danger:focus {
273
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15);
274
- }
275
-
276
- .lite-btn-sm {
277
- padding: 3px 10px;
278
- font-size: 12px;
279
- border-radius: 4px;
280
- }
281
-
282
- /* ─── Forms — Text Inputs ─────────────────────────────────── */
283
- .lite-form-group {
284
- margin-bottom: 18px;
285
- }
286
-
287
- .lite-form-group label {
288
- display: block;
289
- font-size: 13px;
290
- font-weight: 500;
291
- color: #334155;
292
- margin-bottom: 6px;
293
- }
294
-
295
- .lite-form-group label .required {
296
- color: #ef4444; /* red-500 */
297
- margin-left: 2px;
298
- }
299
-
300
- .lite-input {
301
- display: block;
302
- width: 100%;
303
- padding: 8px 12px;
304
- font-size: 14px;
305
- font-family: inherit;
306
- border: 1px solid #cbd5e1; /* slate-300 — slightly more visible */
307
- border-radius: 6px;
308
- background: #fff;
309
- color: #0f172a;
310
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
311
- }
312
- .lite-input:focus {
313
- outline: none;
314
- border-color: #4f46e5;
315
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(79, 70, 229, 0.3);
316
- }
317
-
318
- .lite-input-error {
319
- border-color: #ef4444;
320
- }
321
- .lite-input-error:focus {
322
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.12);
323
- }
324
-
325
- .lite-error-text {
326
- color: #ef4444;
327
- font-size: 12px;
328
- margin-top: 4px;
329
- }
330
-
331
- textarea.lite-input {
332
- min-height: 100px;
333
- resize: vertical;
334
- }
335
-
336
- /* ─── Forms — Custom Select ───────────────────────────────── */
337
- .lite-select {
338
- display: block;
339
- width: 100%;
340
- padding: 8px 36px 8px 12px;
341
- font-size: 14px;
342
- font-family: inherit;
343
- border: 1px solid #cbd5e1;
344
- border-radius: 6px;
345
- background: #fff;
346
- color: #0f172a;
347
- cursor: pointer;
348
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
349
- /* Custom dropdown arrow via base64 SVG chevron */
350
- background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1' stroke='%2364748b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
351
- background-repeat: no-repeat;
352
- background-position: right 12px center;
353
- background-size: 10px 6px;
354
- }
355
- /* IE11: hide the native dropdown arrow */
356
- .lite-select::-ms-expand {
357
- display: none;
358
- }
359
- .lite-select:focus {
360
- outline: none;
361
- border-color: #4f46e5;
362
- box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(79, 70, 229, 0.3);
363
- }
364
-
365
- /* ─── Forms — Custom Checkbox ─────────────────────────────── */
366
- .lite-checkbox-group {
367
- display: flex;
368
- align-items: flex-start;
369
- position: relative;
370
- }
371
- .lite-checkbox-group input[type="checkbox"] {
372
- /* Visually hide the native checkbox, but remain accessible */
373
- position: absolute;
374
- opacity: 0;
375
- width: 0;
376
- height: 0;
377
- pointer-events: none;
378
- }
379
- .lite-checkbox-group label {
380
- display: inline-block;
381
- position: relative;
382
- padding-left: 28px;
383
- cursor: pointer;
384
- font-size: 14px;
385
- color: #334155;
386
- line-height: 20px;
387
- margin-bottom: 0;
388
- -webkit-user-select: none;
389
- -moz-user-select: none;
390
- -ms-user-select: none;
391
- user-select: none;
392
- }
393
- /* Unchecked box */
394
- .lite-checkbox-group label::before {
395
- content: '';
396
- position: absolute;
397
- left: 0;
398
- top: 0;
399
- width: 18px;
400
- height: 18px;
401
- border: 2px solid #cbd5e1;
402
- border-radius: 4px;
403
- background: #fff;
404
- transition: background 0.15s ease, border-color 0.15s ease;
405
- }
406
- /* Checkmark (hidden by default) */
407
- .lite-checkbox-group label::after {
408
- content: '';
409
- position: absolute;
410
- left: 6px;
411
- top: 2px;
412
- width: 6px;
413
- height: 10px;
414
- border: solid #fff;
415
- border-width: 0 2px 2px 0;
416
- transform: rotate(45deg);
417
- opacity: 0;
418
- transition: opacity 0.1s ease;
419
- }
420
- /* Checked state */
421
- .lite-checkbox-group input[type="checkbox"]:checked + label::before {
422
- background: #4f46e5;
423
- border-color: #4f46e5;
424
- }
425
- .lite-checkbox-group input[type="checkbox"]:checked + label::after {
426
- opacity: 1;
427
- }
428
- /* Focus ring on keyboard navigation */
429
- .lite-checkbox-group input[type="checkbox"]:focus + label::before {
430
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
431
- }
432
-
433
- /* ─── Forms — Custom Radio ────────────────────────────────── */
434
- .lite-radio-group {
435
- display: flex;
436
- align-items: flex-start;
437
- position: relative;
438
- }
439
- .lite-radio-group input[type="radio"] {
440
- position: absolute;
441
- opacity: 0;
442
- width: 0;
443
- height: 0;
444
- pointer-events: none;
445
- }
446
- .lite-radio-group label {
447
- display: inline-block;
448
- position: relative;
449
- padding-left: 28px;
450
- cursor: pointer;
451
- font-size: 14px;
452
- color: #334155;
453
- line-height: 20px;
454
- margin-bottom: 0;
455
- -webkit-user-select: none;
456
- -moz-user-select: none;
457
- -ms-user-select: none;
458
- user-select: none;
459
- }
460
- /* Unchecked circle */
461
- .lite-radio-group label::before {
462
- content: '';
463
- position: absolute;
464
- left: 0;
465
- top: 0;
466
- width: 18px;
467
- height: 18px;
468
- border: 2px solid #cbd5e1;
469
- border-radius: 50%;
470
- background: #fff;
471
- transition: border-color 0.15s ease;
472
- }
473
- /* Inner dot (hidden by default) */
474
- .lite-radio-group label::after {
475
- content: '';
476
- position: absolute;
477
- left: 5px;
478
- top: 5px;
479
- width: 8px;
480
- height: 8px;
481
- border-radius: 50%;
482
- background: #4f46e5;
483
- opacity: 0;
484
- transition: opacity 0.1s ease;
485
- }
486
- /* Checked state */
487
- .lite-radio-group input[type="radio"]:checked + label::before {
488
- border-color: #4f46e5;
489
- }
490
- .lite-radio-group input[type="radio"]:checked + label::after {
491
- opacity: 1;
492
- }
493
- /* Focus ring */
494
- .lite-radio-group input[type="radio"]:focus + label::before {
495
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
496
- }
497
-
498
- /* ─── Pagination ───────────────────────────────────────────── */
499
- .lite-pagination {
500
- display: flex;
501
- align-items: center;
502
- margin-top: 16px;
503
- }
504
-
505
- .lite-pagination a,
506
- .lite-pagination span {
507
- display: inline-block;
508
- padding: 6px 12px;
509
- margin-right: 4px;
510
- border: 1px solid #e2e8f0;
511
- border-radius: 6px;
512
- font-size: 13px;
513
- color: #334155;
514
- transition: background 0.15s ease, border-color 0.15s ease;
515
- }
516
- .lite-pagination a:hover {
517
- background: #f1f5f9;
518
- border-color: #cbd5e1;
519
- text-decoration: none;
520
- }
521
- .lite-pagination span.active {
522
- background: #4f46e5;
523
- border-color: #4f46e5;
524
- color: #fff;
525
- }
526
- .lite-pagination span.disabled {
527
- color: #94a3b8;
528
- cursor: default;
529
- background: #f8fafc;
530
- }
531
-
532
- .lite-pagination-info {
533
- margin-left: auto;
534
- font-size: 13px;
535
- color: #64748b;
536
- }
537
-
538
- /* ─── Search Bar ───────────────────────────────────────────── */
539
- .lite-search {
540
- display: flex;
541
- margin-bottom: 16px;
542
- }
543
- .lite-search input {
544
- flex: 1;
545
- margin-right: 8px;
546
- }
547
-
548
- /* ─── Alerts / Messages ────────────────────────────────────── */
549
- .lite-alert {
550
- padding: 12px 16px;
551
- border-radius: 6px;
552
- margin-bottom: 16px;
553
- font-size: 13px;
554
- font-weight: 500;
555
- }
556
- .lite-alert-success {
557
- background: #f0fdf4; /* green-50 */
558
- border: 1px solid #bbf7d0; /* green-200 */
559
- color: #166534; /* green-800 */
560
- }
561
- .lite-alert-error {
562
- background: #fef2f2; /* red-50 */
563
- border: 1px solid #fecaca; /* red-200 */
564
- color: #991b1b; /* red-900 */
565
- }
566
-
567
- /* ─── Delete Confirmation ──────────────────────────────────── */
568
- .lite-confirm {
569
- display: inline;
570
- }
571
- .lite-confirm-details {
572
- position: relative;
573
- display: inline-block;
574
- }
575
- .lite-confirm-details summary {
576
- cursor: pointer;
577
- list-style: none;
578
- }
579
- .lite-confirm-details summary::-webkit-details-marker {
580
- display: none;
581
- }
582
- .lite-confirm-panel {
583
- position: absolute;
584
- right: 0;
585
- top: 100%;
586
- z-index: 10;
587
- background: #fff;
588
- border: 1px solid #e2e8f0;
589
- border-radius: 8px;
590
- padding: 14px;
591
- box-shadow:
592
- 0 4px 6px rgba(15, 23, 42, 0.05),
593
- 0 10px 20px rgba(15, 23, 42, 0.08);
594
- white-space: nowrap;
595
- margin-top: 4px;
596
- }
597
-
598
- /* ─── Login Page ───────────────────────────────────────────── */
599
- .lite-login-wrapper {
600
- display: flex;
601
- align-items: center;
602
- justify-content: center;
603
- min-height: 100vh;
604
- background: #f1f5f9;
605
- }
606
-
607
- .lite-login-card {
608
- width: 400px;
609
- max-width: 90%;
610
- }
611
- .lite-login-card .lite-card {
612
- box-shadow:
613
- 0 4px 6px rgba(15, 23, 42, 0.04),
614
- 0 10px 30px rgba(15, 23, 42, 0.06);
615
- }
616
-
617
- /* ─── Badge / Tag ──────────────────────────────────────────── */
618
- .lite-badge {
619
- display: inline-block;
620
- padding: 2px 8px;
621
- font-size: 11px;
622
- font-weight: 600;
623
- border-radius: 12px;
624
- background: #f1f5f9;
625
- color: #475569;
626
- border: 1px solid #e2e8f0;
627
- margin-right: 4px;
628
- }
629
-
630
- .lite-badge-success {
631
- background: #f0fdf4;
632
- color: #166534;
633
- border-color: #bbf7d0;
634
- }
635
-
636
- .lite-badge-danger {
637
- background: #fef2f2;
638
- color: #dc2626;
639
- border-color: #fecaca;
640
- }
641
-
642
- .lite-badge-warning {
643
- background: #fffbeb;
644
- color: #92400e;
645
- border-color: #fde68a;
646
- }
647
-
648
- /* ─── Boolean indicator ────────────────────────────────────── */
649
- .lite-bool {
650
- display: inline-block;
651
- width: 10px;
652
- height: 10px;
653
- border-radius: 50%;
654
- background: #cbd5e1;
655
- }
656
- .lite-bool-true {
657
- background: #22c55e;
658
- }
659
-
660
- /* ─── Utility classes ──────────────────────────────────────── */
661
- .lite-text-muted {
662
- color: #64748b;
663
- }
664
- .lite-text-sm {
665
- font-size: 12px;
666
- }
667
- .lite-mt-0 { margin-top: 0; }
668
- .lite-mb-lg { margin-bottom: 24px; }
669
-
670
- /* ─── Responsive ───────────────────────────────────────────── */
671
- @media (max-width: 768px) {
672
- .lite-sidebar {
673
- display: none;
674
- }
675
- .lite-main {
676
- padding: 16px;
677
- }
678
- .lite-table {
679
- font-size: 12px;
680
- }
681
- .lite-header {
682
- flex-direction: column;
683
- align-items: flex-start;
684
- }
685
- .lite-header h1 {
686
- margin-bottom: 12px;
687
- }
688
- }
689
-
690
- /* ─── Print ────────────────────────────────────────────────── */
691
- @media print {
692
- .lite-sidebar,
693
- .lite-search,
694
- .lite-pagination,
695
- .lite-btn,
696
- .lite-confirm {
697
- display: none !important;
698
- }
699
- .lite-main {
700
- padding: 0;
701
- }
702
- .lite-table {
703
- border: 1px solid #000;
704
- }
705
- .lite-table th {
706
- background: #eee !important;
707
- }
708
- }