mljr-css 0.1.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 (53) hide show
  1. package/README.md +299 -0
  2. package/dist/mljr.css +12214 -0
  3. package/dist/mljr.min.css +3 -0
  4. package/dist/plugin.cjs +139 -0
  5. package/dist/plugin.d.cts +73 -0
  6. package/dist/plugin.d.ts +73 -0
  7. package/dist/plugin.js +102 -0
  8. package/package.json +60 -0
  9. package/src/base/reset.css +210 -0
  10. package/src/base/typography.css +286 -0
  11. package/src/components/accordion.css +210 -0
  12. package/src/components/alert.css +231 -0
  13. package/src/components/avatar.css +222 -0
  14. package/src/components/badge.css +315 -0
  15. package/src/components/breadcrumb.css +100 -0
  16. package/src/components/button.css +383 -0
  17. package/src/components/card.css +319 -0
  18. package/src/components/carousel.css +179 -0
  19. package/src/components/checkbox.css +303 -0
  20. package/src/components/chip.css +207 -0
  21. package/src/components/divider.css +248 -0
  22. package/src/components/drawer.css +242 -0
  23. package/src/components/dropdown.css +246 -0
  24. package/src/components/empty-state.css +216 -0
  25. package/src/components/file-upload.css +262 -0
  26. package/src/components/footer.css +231 -0
  27. package/src/components/input.css +504 -0
  28. package/src/components/modal.css +179 -0
  29. package/src/components/pagination.css +143 -0
  30. package/src/components/password.css +449 -0
  31. package/src/components/popover.css +175 -0
  32. package/src/components/progress.css +165 -0
  33. package/src/components/radio.css +200 -0
  34. package/src/components/select.css +165 -0
  35. package/src/components/sidebar.css +236 -0
  36. package/src/components/skeleton.css +161 -0
  37. package/src/components/spinner.css +259 -0
  38. package/src/components/stepper.css +257 -0
  39. package/src/components/table.css +184 -0
  40. package/src/components/tabs.css +219 -0
  41. package/src/components/textarea.css +164 -0
  42. package/src/components/toast.css +294 -0
  43. package/src/components/tooltip.css +99 -0
  44. package/src/index.css +54 -0
  45. package/src/layout/container.css +181 -0
  46. package/src/layout/footer.css +319 -0
  47. package/src/layout/header.css +223 -0
  48. package/src/layout/navbar.css +461 -0
  49. package/src/layout/navigation.css +328 -0
  50. package/src/layout/sidebar.css +334 -0
  51. package/src/plugin.ts +130 -0
  52. package/src/themes/variables.css +345 -0
  53. package/src/utilities/utilities.css +598 -0
@@ -0,0 +1,383 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Button Component
3
+ Claymorphism: Soft, inflated 3D buttons
4
+ ============================================ */
5
+
6
+ .mljr-btn {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ gap: var(--mljr-space-2);
11
+ padding: var(--mljr-space-3) var(--mljr-space-5);
12
+ font-family: var(--mljr-font-sans);
13
+ font-size: var(--mljr-text-sm);
14
+ font-weight: 500;
15
+ line-height: var(--mljr-leading-normal);
16
+ border: none;
17
+ border-radius: var(--mljr-radius-lg);
18
+ cursor: pointer;
19
+ transition: all var(--mljr-transition);
20
+ white-space: nowrap;
21
+ user-select: none;
22
+ position: relative;
23
+ background-color: var(--mljr-bg);
24
+ color: var(--mljr-text);
25
+ box-shadow: var(--mljr-clay-btn);
26
+ }
27
+
28
+ .mljr-btn:hover {
29
+ transform: translateY(-2px);
30
+ }
31
+
32
+ .mljr-btn:active {
33
+ transform: translateY(0);
34
+ box-shadow: var(--mljr-clay-btn-pressed);
35
+ }
36
+
37
+ .mljr-btn:focus-visible {
38
+ outline: 3px solid var(--mljr-primary-300);
39
+ outline-offset: 2px;
40
+ }
41
+
42
+ .mljr-btn:disabled {
43
+ opacity: 0.5;
44
+ cursor: not-allowed;
45
+ pointer-events: none;
46
+ transform: none;
47
+ }
48
+
49
+ /* Primary Button */
50
+ .mljr-btn-primary {
51
+ background: var(--mljr-gradient-primary);
52
+ color: white;
53
+ box-shadow:
54
+ 6px 6px 12px rgba(249, 115, 22, 0.3),
55
+ -6px -6px 12px rgba(255, 255, 255, 0.8),
56
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
57
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
58
+ }
59
+
60
+ .mljr-btn-primary:hover {
61
+ background: linear-gradient(135deg, var(--mljr-primary-300) 0%, var(--mljr-primary-500) 100%);
62
+ box-shadow:
63
+ 8px 8px 16px rgba(249, 115, 22, 0.35),
64
+ -8px -8px 16px rgba(255, 255, 255, 0.9),
65
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
66
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
67
+ }
68
+
69
+ .mljr-btn-primary:active {
70
+ background: linear-gradient(135deg, var(--mljr-primary-500) 0%, var(--mljr-primary-700) 100%);
71
+ box-shadow:
72
+ inset 4px 4px 8px rgba(0, 0, 0, 0.2),
73
+ inset -4px -4px 8px rgba(255, 255, 255, 0.1);
74
+ }
75
+
76
+ /* Secondary Button (Teal) */
77
+ .mljr-btn-secondary {
78
+ background: var(--mljr-gradient-secondary);
79
+ color: white;
80
+ box-shadow:
81
+ 6px 6px 12px rgba(20, 184, 166, 0.25),
82
+ -6px -6px 12px rgba(255, 255, 255, 0.8),
83
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
84
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
85
+ }
86
+
87
+ .mljr-btn-secondary:hover {
88
+ background: linear-gradient(135deg, var(--mljr-secondary-300) 0%, var(--mljr-secondary-500) 100%);
89
+ box-shadow:
90
+ 8px 8px 16px rgba(20, 184, 166, 0.3),
91
+ -8px -8px 16px rgba(255, 255, 255, 0.9),
92
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
93
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
94
+ }
95
+
96
+ .mljr-btn-secondary:active {
97
+ background: linear-gradient(135deg, var(--mljr-secondary-500) 0%, var(--mljr-secondary-700) 100%);
98
+ box-shadow:
99
+ inset 4px 4px 8px rgba(0, 0, 0, 0.2),
100
+ inset -4px -4px 8px rgba(255, 255, 255, 0.1);
101
+ }
102
+
103
+ /* Outline Button Primary */
104
+ .mljr-btn-outline-primary {
105
+ background-color: transparent;
106
+ color: var(--mljr-primary-500);
107
+ border: 2px solid var(--mljr-primary-300);
108
+ box-shadow: var(--mljr-clay-shadow-sm);
109
+ }
110
+
111
+ .mljr-btn-outline-primary:hover {
112
+ background: var(--mljr-gradient-primary);
113
+ color: white;
114
+ border-color: transparent;
115
+ box-shadow: var(--mljr-clay-shadow);
116
+ }
117
+
118
+ .mljr-btn-outline-primary:active {
119
+ box-shadow: var(--mljr-clay-inset-sm);
120
+ }
121
+
122
+ /* Outline Button Secondary */
123
+ .mljr-btn-outline-secondary {
124
+ background-color: transparent;
125
+ color: var(--mljr-secondary-500);
126
+ border: 2px solid var(--mljr-secondary-300);
127
+ box-shadow: var(--mljr-clay-shadow-sm);
128
+ }
129
+
130
+ .mljr-btn-outline-secondary:hover {
131
+ background: var(--mljr-gradient-secondary);
132
+ color: white;
133
+ border-color: transparent;
134
+ box-shadow: var(--mljr-clay-shadow);
135
+ }
136
+
137
+ .mljr-btn-outline-secondary:active {
138
+ box-shadow: var(--mljr-clay-inset-sm);
139
+ }
140
+
141
+ /* Ghost Button */
142
+ .mljr-btn-ghost {
143
+ background-color: transparent;
144
+ color: var(--mljr-text);
145
+ box-shadow: none;
146
+ }
147
+
148
+ .mljr-btn-ghost:hover {
149
+ background-color: var(--mljr-bg-secondary);
150
+ box-shadow: var(--mljr-clay-shadow-sm);
151
+ }
152
+
153
+ .mljr-btn-ghost:active {
154
+ box-shadow: var(--mljr-clay-inset-sm);
155
+ }
156
+
157
+ /* Link Button */
158
+ .mljr-btn-link {
159
+ background-color: transparent;
160
+ color: var(--mljr-primary-600);
161
+ padding: 0;
162
+ border-radius: 0;
163
+ box-shadow: none;
164
+ }
165
+
166
+ .mljr-btn-link:hover {
167
+ color: var(--mljr-primary-500);
168
+ text-decoration: underline;
169
+ transform: none;
170
+ box-shadow: none;
171
+ }
172
+
173
+ .mljr-btn-link:active {
174
+ box-shadow: none;
175
+ }
176
+
177
+ /* Danger Button */
178
+ .mljr-btn-danger {
179
+ background: linear-gradient(135deg, var(--mljr-error-light) 0%, var(--mljr-error) 100%);
180
+ color: white;
181
+ box-shadow:
182
+ 6px 6px 12px rgba(239, 68, 68, 0.25),
183
+ -6px -6px 12px rgba(255, 255, 255, 0.8),
184
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
185
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
186
+ }
187
+
188
+ .mljr-btn-danger:hover {
189
+ background: linear-gradient(135deg, var(--mljr-error) 0%, var(--mljr-error-light) 100%);
190
+ box-shadow:
191
+ 8px 8px 16px rgba(239, 68, 68, 0.3),
192
+ -8px -8px 16px rgba(255, 255, 255, 0.9),
193
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
194
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
195
+ }
196
+
197
+ .mljr-btn-danger:active {
198
+ box-shadow:
199
+ inset 4px 4px 8px rgba(0, 0, 0, 0.2),
200
+ inset -4px -4px 8px rgba(255, 255, 255, 0.1);
201
+ }
202
+
203
+ /* Success Button */
204
+ .mljr-btn-success {
205
+ background: linear-gradient(135deg, var(--mljr-success-light) 0%, var(--mljr-success) 100%);
206
+ color: white;
207
+ box-shadow:
208
+ 6px 6px 12px rgba(16, 185, 129, 0.25),
209
+ -6px -6px 12px rgba(255, 255, 255, 0.8),
210
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
211
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
212
+ }
213
+
214
+ .mljr-btn-success:hover {
215
+ background: linear-gradient(135deg, var(--mljr-success) 0%, var(--mljr-success-light) 100%);
216
+ box-shadow:
217
+ 8px 8px 16px rgba(16, 185, 129, 0.3),
218
+ -8px -8px 16px rgba(255, 255, 255, 0.9),
219
+ inset 2px 2px 4px rgba(255, 255, 255, 0.3),
220
+ inset -1px -1px 2px rgba(0, 0, 0, 0.1);
221
+ }
222
+
223
+ .mljr-btn-success:active {
224
+ box-shadow:
225
+ inset 4px 4px 8px rgba(0, 0, 0, 0.2),
226
+ inset -4px -4px 8px rgba(255, 255, 255, 0.1);
227
+ }
228
+
229
+ /* Button Sizes */
230
+ .mljr-btn-xs {
231
+ padding: var(--mljr-space-1) var(--mljr-space-3);
232
+ font-size: var(--mljr-text-xs);
233
+ border-radius: var(--mljr-radius-sm);
234
+ }
235
+
236
+ .mljr-btn-sm {
237
+ padding: var(--mljr-space-2) var(--mljr-space-4);
238
+ font-size: var(--mljr-text-sm);
239
+ border-radius: var(--mljr-radius);
240
+ }
241
+
242
+ /* Default md size uses base .mljr-btn styles */
243
+
244
+ .mljr-btn-lg {
245
+ padding: var(--mljr-space-4) var(--mljr-space-6);
246
+ font-size: var(--mljr-text-base);
247
+ border-radius: var(--mljr-radius-xl);
248
+ }
249
+
250
+ .mljr-btn-xl {
251
+ padding: var(--mljr-space-5) var(--mljr-space-8);
252
+ font-size: var(--mljr-text-lg);
253
+ border-radius: var(--mljr-radius-2xl);
254
+ }
255
+
256
+ /* Full Width Button */
257
+ .mljr-btn-block {
258
+ width: 100%;
259
+ }
260
+
261
+ /* Icon Button */
262
+ .mljr-btn-icon {
263
+ padding: var(--mljr-space-3);
264
+ aspect-ratio: 1;
265
+ }
266
+
267
+ .mljr-btn-icon.mljr-btn-xs,
268
+ .mljr-btn-icon.mljr-btn-sm {
269
+ padding: var(--mljr-space-2);
270
+ }
271
+
272
+ .mljr-btn-icon.mljr-btn-lg { padding: var(--mljr-space-4); }
273
+ .mljr-btn-icon.mljr-btn-xl { padding: var(--mljr-space-5); }
274
+
275
+ /* Button Group */
276
+ .mljr-btn-group {
277
+ display: inline-flex;
278
+ border-radius: var(--mljr-radius-lg);
279
+ overflow: hidden;
280
+ box-shadow: var(--mljr-clay-btn);
281
+ }
282
+
283
+ .mljr-btn-group > .mljr-btn {
284
+ border-radius: 0;
285
+ box-shadow: none;
286
+ }
287
+
288
+ .mljr-btn-group > .mljr-btn:first-child {
289
+ border-radius: var(--mljr-radius-lg) 0 0 var(--mljr-radius-lg);
290
+ }
291
+
292
+ .mljr-btn-group > .mljr-btn:last-child {
293
+ border-radius: 0 var(--mljr-radius-lg) var(--mljr-radius-lg) 0;
294
+ }
295
+
296
+ .mljr-btn-group > .mljr-btn:not(:first-child) {
297
+ margin-left: 1px;
298
+ }
299
+
300
+ .mljr-btn-group > .mljr-btn:hover {
301
+ transform: none;
302
+ }
303
+
304
+ /* Loading State */
305
+ .mljr-btn-loading {
306
+ position: relative;
307
+ color: transparent !important;
308
+ pointer-events: none;
309
+ }
310
+
311
+ .mljr-btn-loading::after {
312
+ content: "";
313
+ position: absolute;
314
+ width: 1.25em;
315
+ height: 1.25em;
316
+ border: 2.5px solid currentColor;
317
+ border-right-color: transparent;
318
+ border-radius: var(--mljr-radius-full);
319
+ animation: mljr-spin 0.6s linear infinite;
320
+ }
321
+
322
+ .mljr-btn-primary.mljr-btn-loading::after,
323
+ .mljr-btn-secondary.mljr-btn-loading::after,
324
+ .mljr-btn-danger.mljr-btn-loading::after,
325
+ .mljr-btn-success.mljr-btn-loading::after {
326
+ border-color: white;
327
+ border-right-color: transparent;
328
+ }
329
+
330
+ @keyframes mljr-spin {
331
+ to {
332
+ transform: rotate(360deg);
333
+ }
334
+ }
335
+
336
+ /* Dark mode adjustments */
337
+ .dark .mljr-btn,
338
+ [data-theme="dark"] .mljr-btn {
339
+ box-shadow: var(--mljr-clay-btn);
340
+ }
341
+
342
+ .dark .mljr-btn:active,
343
+ [data-theme="dark"] .mljr-btn:active {
344
+ box-shadow: var(--mljr-clay-btn-pressed);
345
+ }
346
+
347
+ .dark .mljr-btn-primary,
348
+ [data-theme="dark"] .mljr-btn-primary {
349
+ box-shadow:
350
+ 6px 6px 12px rgba(0, 0, 0, 0.4),
351
+ -6px -6px 12px rgba(68, 64, 60, 0.15),
352
+ inset 1px 1px 2px rgba(255, 255, 255, 0.15),
353
+ inset -1px -1px 2px rgba(0, 0, 0, 0.2);
354
+ }
355
+
356
+ .dark .mljr-btn-primary:hover,
357
+ [data-theme="dark"] .mljr-btn-primary:hover {
358
+ box-shadow:
359
+ 8px 8px 16px rgba(0, 0, 0, 0.45),
360
+ -8px -8px 16px rgba(68, 64, 60, 0.18),
361
+ inset 1px 1px 2px rgba(255, 255, 255, 0.15),
362
+ inset -1px -1px 2px rgba(0, 0, 0, 0.2),
363
+ 0 0 20px rgba(249, 115, 22, 0.3);
364
+ }
365
+
366
+ .dark .mljr-btn-secondary,
367
+ [data-theme="dark"] .mljr-btn-secondary {
368
+ box-shadow:
369
+ 6px 6px 12px rgba(0, 0, 0, 0.4),
370
+ -6px -6px 12px rgba(68, 64, 60, 0.15),
371
+ inset 1px 1px 2px rgba(255, 255, 255, 0.15),
372
+ inset -1px -1px 2px rgba(0, 0, 0, 0.2);
373
+ }
374
+
375
+ .dark .mljr-btn-secondary:hover,
376
+ [data-theme="dark"] .mljr-btn-secondary:hover {
377
+ box-shadow:
378
+ 8px 8px 16px rgba(0, 0, 0, 0.45),
379
+ -8px -8px 16px rgba(68, 64, 60, 0.18),
380
+ inset 1px 1px 2px rgba(255, 255, 255, 0.15),
381
+ inset -1px -1px 2px rgba(0, 0, 0, 0.2),
382
+ 0 0 20px rgba(20, 184, 166, 0.3);
383
+ }
@@ -0,0 +1,319 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Card Component
3
+ Claymorphism: Soft, frosted glass cards
4
+ ============================================ */
5
+
6
+ .mljr-card {
7
+ background-color: var(--mljr-frosted-bg);
8
+ backdrop-filter: blur(10px);
9
+ border-radius: var(--mljr-radius-xl);
10
+ overflow: hidden;
11
+ position: relative;
12
+ box-shadow: var(--mljr-clay-shadow);
13
+ border: 1px solid var(--mljr-frosted-border);
14
+ transition: all var(--mljr-transition);
15
+ }
16
+
17
+ /* Shadow variants - md is the default and same as .mljr-card-shadow */
18
+ .mljr-card-shadow,
19
+ .mljr-card-shadow-md { box-shadow: var(--mljr-clay-shadow); }
20
+ .mljr-card-shadow-sm { box-shadow: var(--mljr-clay-shadow-sm); }
21
+ .mljr-card-shadow-lg { box-shadow: var(--mljr-clay-shadow-lg); }
22
+
23
+ /* Card Header */
24
+ .mljr-card-header {
25
+ padding: var(--mljr-space-5) var(--mljr-space-6);
26
+ border-bottom: 1px solid var(--mljr-border);
27
+ }
28
+
29
+ .mljr-card-title {
30
+ font-family: var(--mljr-font-display);
31
+ font-size: var(--mljr-text-lg);
32
+ font-weight: 600;
33
+ color: var(--mljr-text);
34
+ }
35
+
36
+ .mljr-card-description {
37
+ margin-top: var(--mljr-space-1);
38
+ font-size: var(--mljr-text-sm);
39
+ color: var(--mljr-text-secondary);
40
+ }
41
+
42
+ /* Card Body */
43
+ .mljr-card-body { padding: var(--mljr-space-6); }
44
+ .mljr-card-body-sm { padding: var(--mljr-space-4); }
45
+ .mljr-card-body-lg { padding: var(--mljr-space-8); }
46
+
47
+ /* Card Footer */
48
+ .mljr-card-footer {
49
+ padding: var(--mljr-space-4) var(--mljr-space-6);
50
+ border-top: 1px solid var(--mljr-border);
51
+ background-color: var(--mljr-frosted-bg-subtle);
52
+ }
53
+
54
+ /* Card Image */
55
+ .mljr-card-image {
56
+ width: 100%;
57
+ height: auto;
58
+ display: block;
59
+ border-radius: var(--mljr-radius-lg) var(--mljr-radius-lg) 0 0;
60
+ }
61
+
62
+ /* Compact Card */
63
+ .mljr-card-compact .mljr-card-header {
64
+ border-bottom: none;
65
+ padding-bottom: 0;
66
+ }
67
+
68
+ .mljr-card-compact .mljr-card-footer {
69
+ border-top: none;
70
+ background-color: transparent;
71
+ padding-top: 0;
72
+ }
73
+
74
+ /* Interactive Card */
75
+ .mljr-card-interactive {
76
+ cursor: pointer;
77
+ }
78
+
79
+ .mljr-card-interactive:hover {
80
+ box-shadow: var(--mljr-clay-shadow-lg);
81
+ transform: translateY(-4px);
82
+ }
83
+
84
+ .mljr-card-interactive:active {
85
+ transform: translateY(-2px);
86
+ box-shadow: var(--mljr-clay-shadow);
87
+ }
88
+
89
+ .mljr-card-interactive:focus-visible {
90
+ outline: 3px solid var(--mljr-primary-300);
91
+ outline-offset: 2px;
92
+ }
93
+
94
+ /* Color accent variants - Stronger Claymorphism colored cards */
95
+ .mljr-card-primary {
96
+ border-left: 4px solid var(--mljr-primary-500);
97
+ background: linear-gradient(135deg, var(--mljr-primary-50) 0%, var(--mljr-frosted-bg) 30%);
98
+ box-shadow:
99
+ 12px 12px 24px rgba(249, 115, 22, 0.2),
100
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
101
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
102
+ }
103
+
104
+ .mljr-card-primary .mljr-card-title {
105
+ color: var(--mljr-primary-700);
106
+ }
107
+
108
+ .mljr-card-secondary {
109
+ border-left: 4px solid var(--mljr-secondary-500);
110
+ background: linear-gradient(135deg, var(--mljr-secondary-50) 0%, var(--mljr-frosted-bg) 30%);
111
+ box-shadow:
112
+ 12px 12px 24px rgba(168, 85, 247, 0.2),
113
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
114
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
115
+ }
116
+
117
+ .mljr-card-secondary .mljr-card-title {
118
+ color: var(--mljr-secondary-700);
119
+ }
120
+
121
+ /* Accent color card (teal) */
122
+ .mljr-card-accent {
123
+ border-left: 4px solid var(--mljr-accent-500);
124
+ background: linear-gradient(135deg, var(--mljr-accent-50) 0%, var(--mljr-frosted-bg) 30%);
125
+ box-shadow:
126
+ 12px 12px 24px rgba(20, 184, 166, 0.2),
127
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
128
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
129
+ }
130
+
131
+ .mljr-card-accent .mljr-card-title {
132
+ color: var(--mljr-accent-700);
133
+ }
134
+
135
+ /* Success card */
136
+ .mljr-card-success {
137
+ border-left: 4px solid var(--mljr-success);
138
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, var(--mljr-frosted-bg) 30%);
139
+ box-shadow:
140
+ 12px 12px 24px rgba(16, 185, 129, 0.15),
141
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
142
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
143
+ }
144
+
145
+ /* Warning card */
146
+ .mljr-card-warning {
147
+ border-left: 4px solid var(--mljr-warning);
148
+ background: linear-gradient(135deg, rgba(245, 158, 11, 0.1) 0%, var(--mljr-frosted-bg) 30%);
149
+ box-shadow:
150
+ 12px 12px 24px rgba(245, 158, 11, 0.15),
151
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
152
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
153
+ }
154
+
155
+ /* Error/Danger card */
156
+ .mljr-card-error,
157
+ .mljr-card-danger {
158
+ border-left: 4px solid var(--mljr-error);
159
+ background: linear-gradient(135deg, rgba(239, 68, 68, 0.1) 0%, var(--mljr-frosted-bg) 30%);
160
+ box-shadow:
161
+ 12px 12px 24px rgba(239, 68, 68, 0.15),
162
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
163
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
164
+ }
165
+
166
+ /* Info card */
167
+ .mljr-card-info {
168
+ border-left: 4px solid var(--mljr-info);
169
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, var(--mljr-frosted-bg) 30%);
170
+ box-shadow:
171
+ 12px 12px 24px rgba(59, 130, 246, 0.15),
172
+ -8px -8px 20px rgba(255, 255, 255, 0.95),
173
+ inset 0px 4px 8px rgba(255, 255, 255, 0.6);
174
+ }
175
+
176
+ /* Card Grid */
177
+ .mljr-card-grid {
178
+ display: grid;
179
+ gap: var(--mljr-space-6);
180
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
181
+ }
182
+
183
+ /* Horizontal Card */
184
+ .mljr-card-horizontal {
185
+ display: flex;
186
+ }
187
+
188
+ .mljr-card-horizontal .mljr-card-image {
189
+ width: 200px;
190
+ object-fit: cover;
191
+ border-radius: var(--mljr-radius-xl) 0 0 var(--mljr-radius-xl);
192
+ }
193
+
194
+ .mljr-card-horizontal .mljr-card-content {
195
+ flex: 1;
196
+ display: flex;
197
+ flex-direction: column;
198
+ }
199
+
200
+ @media (max-width: 640px) {
201
+ .mljr-card-horizontal {
202
+ flex-direction: column;
203
+ }
204
+
205
+ .mljr-card-horizontal .mljr-card-image {
206
+ width: 100%;
207
+ border-radius: var(--mljr-radius-xl) var(--mljr-radius-xl) 0 0;
208
+ }
209
+ }
210
+
211
+ /* Elevated card - more prominent shadow */
212
+ .mljr-card-elevated {
213
+ box-shadow: var(--mljr-clay-shadow-lg);
214
+ }
215
+
216
+ .mljr-card-elevated:hover {
217
+ box-shadow: var(--mljr-clay-shadow-xl);
218
+ }
219
+
220
+ /* Flat card - subtle shadow */
221
+ .mljr-card-flat {
222
+ box-shadow: var(--mljr-clay-shadow-sm);
223
+ background-color: var(--mljr-frosted-bg-subtle);
224
+ }
225
+
226
+ /* Allow overflow - useful when card contains dropdowns, popovers, etc */
227
+ .mljr-card-overflow {
228
+ overflow: visible;
229
+ }
230
+
231
+ /* Dark mode adjustments */
232
+ .dark .mljr-card-interactive:hover,
233
+ [data-theme="dark"] .mljr-card-interactive:hover {
234
+ box-shadow: var(--mljr-clay-shadow-lg), 0 0 30px rgba(249, 115, 22, 0.15);
235
+ }
236
+
237
+ /* Dark mode for colored card variants */
238
+ .dark .mljr-card-primary,
239
+ [data-theme="dark"] .mljr-card-primary {
240
+ background: linear-gradient(135deg, rgba(249, 115, 22, 0.15) 0%, var(--mljr-bg-secondary) 30%);
241
+ box-shadow:
242
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
243
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
244
+ 0 0 20px rgba(249, 115, 22, 0.15),
245
+ inset 0px 2px 4px rgba(249, 115, 22, 0.1);
246
+ }
247
+
248
+ .dark .mljr-card-primary .mljr-card-title,
249
+ [data-theme="dark"] .mljr-card-primary .mljr-card-title {
250
+ color: var(--mljr-primary-400);
251
+ }
252
+
253
+ .dark .mljr-card-secondary,
254
+ [data-theme="dark"] .mljr-card-secondary {
255
+ background: linear-gradient(135deg, rgba(168, 85, 247, 0.15) 0%, var(--mljr-bg-secondary) 30%);
256
+ box-shadow:
257
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
258
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
259
+ 0 0 20px rgba(168, 85, 247, 0.15),
260
+ inset 0px 2px 4px rgba(168, 85, 247, 0.1);
261
+ }
262
+
263
+ .dark .mljr-card-secondary .mljr-card-title,
264
+ [data-theme="dark"] .mljr-card-secondary .mljr-card-title {
265
+ color: var(--mljr-secondary-400);
266
+ }
267
+
268
+ .dark .mljr-card-accent,
269
+ [data-theme="dark"] .mljr-card-accent {
270
+ background: linear-gradient(135deg, rgba(20, 184, 166, 0.15) 0%, var(--mljr-bg-secondary) 30%);
271
+ box-shadow:
272
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
273
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
274
+ 0 0 20px rgba(20, 184, 166, 0.15),
275
+ inset 0px 2px 4px rgba(20, 184, 166, 0.1);
276
+ }
277
+
278
+ .dark .mljr-card-accent .mljr-card-title,
279
+ [data-theme="dark"] .mljr-card-accent .mljr-card-title {
280
+ color: var(--mljr-accent-400);
281
+ }
282
+
283
+ .dark .mljr-card-success,
284
+ [data-theme="dark"] .mljr-card-success {
285
+ background: linear-gradient(135deg, rgba(16, 185, 129, 0.12) 0%, var(--mljr-bg-secondary) 30%);
286
+ box-shadow:
287
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
288
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
289
+ 0 0 15px rgba(16, 185, 129, 0.12);
290
+ }
291
+
292
+ .dark .mljr-card-warning,
293
+ [data-theme="dark"] .mljr-card-warning {
294
+ background: linear-gradient(135deg, rgba(245, 158, 11, 0.12) 0%, var(--mljr-bg-secondary) 30%);
295
+ box-shadow:
296
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
297
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
298
+ 0 0 15px rgba(245, 158, 11, 0.12);
299
+ }
300
+
301
+ .dark .mljr-card-error,
302
+ .dark .mljr-card-danger,
303
+ [data-theme="dark"] .mljr-card-error,
304
+ [data-theme="dark"] .mljr-card-danger {
305
+ background: linear-gradient(135deg, rgba(239, 68, 68, 0.12) 0%, var(--mljr-bg-secondary) 30%);
306
+ box-shadow:
307
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
308
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
309
+ 0 0 15px rgba(239, 68, 68, 0.12);
310
+ }
311
+
312
+ .dark .mljr-card-info,
313
+ [data-theme="dark"] .mljr-card-info {
314
+ background: linear-gradient(135deg, rgba(59, 130, 246, 0.12) 0%, var(--mljr-bg-secondary) 30%);
315
+ box-shadow:
316
+ 12px 12px 28px rgba(0, 0, 0, 0.4),
317
+ -8px -8px 20px rgba(68, 64, 60, 0.15),
318
+ 0 0 15px rgba(59, 130, 246, 0.12);
319
+ }