mljr-css 1.0.14 → 1.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 (54) hide show
  1. package/dist/mljr.css +5573 -2766
  2. package/dist/mljr.min.css +2 -3
  3. package/package.json +1 -1
  4. package/src/components/alert-dialog.css +129 -0
  5. package/src/components/alert.css +41 -22
  6. package/src/components/animated-headline.css +118 -0
  7. package/src/components/audio-visualizer.css +96 -0
  8. package/src/components/autocomplete.css +143 -0
  9. package/src/components/avatar.css +66 -0
  10. package/src/components/badge.css +82 -41
  11. package/src/components/breadcrumb.css +3 -0
  12. package/src/components/button.css +80 -58
  13. package/src/components/calendar.css +169 -0
  14. package/src/components/card.css +139 -92
  15. package/src/components/chart.css +194 -0
  16. package/src/components/checkbox.css +1 -1
  17. package/src/components/chip.css +33 -18
  18. package/src/components/context-menu.css +118 -0
  19. package/src/components/cookie-banner.css +285 -0
  20. package/src/components/diff-viewer.css +199 -0
  21. package/src/components/dock.css +211 -0
  22. package/src/components/drop-zone.css +257 -0
  23. package/src/components/footer.css +51 -5
  24. package/src/components/gauge.css +63 -0
  25. package/src/components/image-compare.css +141 -0
  26. package/src/components/infinite-scroll.css +36 -0
  27. package/src/components/inview.css +118 -0
  28. package/src/components/lazy-image.css +60 -0
  29. package/src/components/legal-page.css +346 -0
  30. package/src/components/map-embed.css +92 -0
  31. package/src/components/marquee.css +112 -0
  32. package/src/components/navbar.css +357 -0
  33. package/src/components/navigation-rail.css +220 -0
  34. package/src/components/notification-center.css +306 -0
  35. package/src/components/number-input.css +134 -0
  36. package/src/components/number-ticker.css +65 -0
  37. package/src/components/pagination.css +59 -0
  38. package/src/components/pdf-viewer.css +163 -0
  39. package/src/components/pin-input.css +153 -0
  40. package/src/components/resizable.css +82 -0
  41. package/src/components/rich-text-editor.css +216 -0
  42. package/src/components/table-of-content.css +107 -0
  43. package/src/components/table.css +116 -0
  44. package/src/components/tabs.css +93 -3
  45. package/src/components/toast.css +30 -0
  46. package/src/components/tooltip.css +8 -0
  47. package/src/components/tree-view.css +270 -0
  48. package/src/components/turnstile.css +113 -0
  49. package/src/components/video-player.css +266 -0
  50. package/src/index.css +35 -1
  51. package/src/layout/footer.css +2 -2
  52. package/src/layout/navbar.css +187 -113
  53. package/src/layout/sidebar.css +27 -0
  54. package/src/themes/variables.css +146 -97
@@ -0,0 +1,113 @@
1
+ /* ============================================
2
+ Turnstile - Cloudflare CAPTCHA widget
3
+ ============================================ */
4
+
5
+ .mljr-turnstile {
6
+ display: inline-flex;
7
+ flex-direction: column;
8
+ align-items: flex-start;
9
+ gap: 0.5rem;
10
+ }
11
+
12
+ .mljr-turnstile-widget {
13
+ /* The Turnstile iframe renders inside this container */
14
+ display: block;
15
+ line-height: 0;
16
+ }
17
+
18
+ /* Status messages */
19
+ .mljr-turnstile-status {
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 0.375rem;
23
+ font-family: var(--mljr-font-body);
24
+ font-size: 0.8125rem;
25
+ font-weight: 500;
26
+ }
27
+
28
+ .mljr-turnstile-status-verified {
29
+ color: #16a34a;
30
+ }
31
+
32
+ .mljr-turnstile-status-error {
33
+ color: #dc2626;
34
+ }
35
+
36
+ .mljr-turnstile-status-expired {
37
+ color: #d97706;
38
+ }
39
+
40
+ .dark .mljr-turnstile-status-verified { color: #4ade80; }
41
+ .dark .mljr-turnstile-status-error { color: #f87171; }
42
+ .dark .mljr-turnstile-status-expired { color: #fbbf24; }
43
+
44
+ .mljr-turnstile-status svg {
45
+ flex-shrink: 0;
46
+ }
47
+
48
+ /* Demo/placeholder (when no siteKey is provided) */
49
+ .mljr-turnstile-demo {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: 0.75rem;
53
+ padding: 0.625rem 0.875rem;
54
+ border-radius: var(--mljr-radius-sm);
55
+ border: 1px solid var(--mljr-border);
56
+ background: var(--mljr-surface);
57
+ box-shadow: var(--mljr-clay-shadow-sm);
58
+ min-width: 300px;
59
+ max-width: 300px;
60
+ height: 65px;
61
+ }
62
+
63
+ .mljr-turnstile-demo-checkbox {
64
+ width: 1.25rem;
65
+ height: 1.25rem;
66
+ border-radius: 4px;
67
+ border: 2px solid var(--mljr-border);
68
+ background: var(--mljr-surface);
69
+ cursor: pointer;
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ flex-shrink: 0;
74
+ transition: border-color 0.15s, background 0.15s;
75
+ }
76
+
77
+ .mljr-turnstile-demo-checkbox-checked {
78
+ background: var(--mljr-primary-500);
79
+ border-color: var(--mljr-primary-500);
80
+ }
81
+
82
+ .mljr-turnstile-demo-label {
83
+ font-family: var(--mljr-font-body);
84
+ font-size: 0.875rem;
85
+ color: var(--mljr-text);
86
+ flex: 1;
87
+ user-select: none;
88
+ cursor: pointer;
89
+ }
90
+
91
+ .mljr-turnstile-demo-brand {
92
+ display: flex;
93
+ flex-direction: column;
94
+ align-items: center;
95
+ gap: 0.125rem;
96
+ margin-left: auto;
97
+ }
98
+
99
+ .mljr-turnstile-demo-brand-name {
100
+ font-size: 0.625rem;
101
+ font-weight: 700;
102
+ color: #f6821f;
103
+ letter-spacing: 0.04em;
104
+ font-family: var(--mljr-font-body);
105
+ line-height: 1;
106
+ }
107
+
108
+ .mljr-turnstile-demo-brand-sub {
109
+ font-size: 0.5rem;
110
+ color: var(--mljr-text-muted);
111
+ font-family: var(--mljr-font-body);
112
+ line-height: 1;
113
+ }
@@ -0,0 +1,266 @@
1
+ /* ============================================================
2
+ Video Player Component
3
+ ============================================================ */
4
+
5
+ .mljr-video-player {
6
+ position: relative;
7
+ background: #000;
8
+ border-radius: var(--mljr-radius-lg);
9
+ overflow: hidden;
10
+ box-shadow: var(--mljr-clay-shadow-lg);
11
+ user-select: none;
12
+ }
13
+
14
+ .mljr-video-player video {
15
+ display: block;
16
+ width: 100%;
17
+ height: auto;
18
+ max-height: 540px;
19
+ object-fit: contain;
20
+ cursor: pointer;
21
+ }
22
+
23
+ /* ── Overlay (idle/center play button) ── */
24
+ .mljr-video-overlay {
25
+ position: absolute;
26
+ inset: 0;
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ pointer-events: none;
31
+ transition: opacity var(--mljr-transition-base);
32
+ }
33
+
34
+ .mljr-video-overlay.mljr-video-overlay-visible {
35
+ background: rgba(0, 0, 0, 0.25);
36
+ }
37
+
38
+ .mljr-video-center-btn {
39
+ width: 64px;
40
+ height: 64px;
41
+ border-radius: 50%;
42
+ background: rgba(255, 255, 255, 0.9);
43
+ border: none;
44
+ display: flex;
45
+ align-items: center;
46
+ justify-content: center;
47
+ cursor: pointer;
48
+ pointer-events: all;
49
+ transition: transform var(--mljr-transition-fast), background var(--mljr-transition-fast);
50
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
51
+ color: #111;
52
+ }
53
+
54
+ .mljr-video-center-btn:hover {
55
+ transform: scale(1.1);
56
+ background: #fff;
57
+ }
58
+
59
+ /* ── Controls bar ── */
60
+ .mljr-video-controls {
61
+ position: absolute;
62
+ bottom: 0;
63
+ left: 0;
64
+ right: 0;
65
+ padding: var(--mljr-space-3) var(--mljr-space-4);
66
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.8) 0%, transparent 100%);
67
+ display: flex;
68
+ flex-direction: column;
69
+ gap: var(--mljr-space-2);
70
+ transition: opacity var(--mljr-transition-base);
71
+ }
72
+
73
+ .mljr-video-player:not(.mljr-video-controls-visible) .mljr-video-controls {
74
+ opacity: 0;
75
+ pointer-events: none;
76
+ }
77
+
78
+ .mljr-video-player.mljr-video-controls-visible .mljr-video-controls {
79
+ opacity: 1;
80
+ pointer-events: all;
81
+ }
82
+
83
+ /* ── Progress / Seek bar ── */
84
+ .mljr-video-progress {
85
+ position: relative;
86
+ height: 4px;
87
+ background: rgba(255, 255, 255, 0.3);
88
+ border-radius: 999px;
89
+ cursor: pointer;
90
+ transition: height var(--mljr-transition-fast);
91
+ }
92
+
93
+ .mljr-video-progress:hover {
94
+ height: 6px;
95
+ }
96
+
97
+ .mljr-video-progress-buffered {
98
+ position: absolute;
99
+ left: 0;
100
+ top: 0;
101
+ height: 100%;
102
+ background: rgba(255, 255, 255, 0.4);
103
+ border-radius: 999px;
104
+ pointer-events: none;
105
+ }
106
+
107
+ .mljr-video-progress-fill {
108
+ position: absolute;
109
+ left: 0;
110
+ top: 0;
111
+ height: 100%;
112
+ background: var(--mljr-primary-500);
113
+ border-radius: 999px;
114
+ pointer-events: none;
115
+ }
116
+
117
+ .mljr-video-progress-thumb {
118
+ position: absolute;
119
+ top: 50%;
120
+ width: 12px;
121
+ height: 12px;
122
+ border-radius: 50%;
123
+ background: #fff;
124
+ transform: translate(-50%, -50%) scale(0);
125
+ transition: transform var(--mljr-transition-fast);
126
+ pointer-events: none;
127
+ }
128
+
129
+ .mljr-video-progress:hover .mljr-video-progress-thumb {
130
+ transform: translate(-50%, -50%) scale(1);
131
+ }
132
+
133
+ /* ── Bottom row: buttons + time + volume + fullscreen ── */
134
+ .mljr-video-controls-row {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: var(--mljr-space-2);
138
+ }
139
+
140
+ .mljr-video-btn {
141
+ flex-shrink: 0;
142
+ width: 32px;
143
+ height: 32px;
144
+ border-radius: 50%;
145
+ background: transparent;
146
+ border: none;
147
+ color: #fff;
148
+ cursor: pointer;
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: center;
152
+ transition: background var(--mljr-transition-fast);
153
+ padding: 0;
154
+ }
155
+
156
+ .mljr-video-btn:hover {
157
+ background: rgba(255, 255, 255, 0.15);
158
+ }
159
+
160
+ .mljr-video-btn svg {
161
+ width: 18px;
162
+ height: 18px;
163
+ pointer-events: none;
164
+ }
165
+
166
+ /* ── Time display ── */
167
+ .mljr-video-time {
168
+ color: rgba(255, 255, 255, 0.9);
169
+ font-size: var(--mljr-text-xs);
170
+ font-family: var(--mljr-font-mono);
171
+ white-space: nowrap;
172
+ flex-shrink: 0;
173
+ }
174
+
175
+ /* ── Volume control ── */
176
+ .mljr-video-volume {
177
+ display: flex;
178
+ align-items: center;
179
+ gap: var(--mljr-space-1);
180
+ }
181
+
182
+ .mljr-video-volume-slider {
183
+ width: 72px;
184
+ height: 4px;
185
+ appearance: none;
186
+ background: rgba(255, 255, 255, 0.3);
187
+ border-radius: 999px;
188
+ cursor: pointer;
189
+ outline: none;
190
+ transition: width var(--mljr-transition-fast);
191
+ }
192
+
193
+ .mljr-video-volume-slider::-webkit-slider-thumb {
194
+ appearance: none;
195
+ width: 12px;
196
+ height: 12px;
197
+ border-radius: 50%;
198
+ background: #fff;
199
+ cursor: pointer;
200
+ }
201
+
202
+ .mljr-video-volume-slider::-moz-range-thumb {
203
+ width: 12px;
204
+ height: 12px;
205
+ border-radius: 50%;
206
+ background: #fff;
207
+ cursor: pointer;
208
+ border: none;
209
+ }
210
+
211
+ /* Push fullscreen to right */
212
+ .mljr-video-spacer {
213
+ flex: 1;
214
+ }
215
+
216
+ /* ── Caption/title overlay (top-left) ── */
217
+ .mljr-video-title {
218
+ position: absolute;
219
+ top: var(--mljr-space-4);
220
+ left: var(--mljr-space-4);
221
+ color: rgba(255, 255, 255, 0.9);
222
+ font-size: var(--mljr-text-sm);
223
+ font-weight: 600;
224
+ text-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
225
+ transition: opacity var(--mljr-transition-base);
226
+ pointer-events: none;
227
+ }
228
+
229
+ /* ── Loading spinner overlay ── */
230
+ .mljr-video-loading {
231
+ position: absolute;
232
+ inset: 0;
233
+ display: flex;
234
+ align-items: center;
235
+ justify-content: center;
236
+ background: rgba(0, 0, 0, 0.4);
237
+ pointer-events: none;
238
+ }
239
+
240
+ /* ── Error state ── */
241
+ .mljr-video-error {
242
+ position: absolute;
243
+ inset: 0;
244
+ display: flex;
245
+ flex-direction: column;
246
+ align-items: center;
247
+ justify-content: center;
248
+ gap: var(--mljr-space-3);
249
+ background: rgba(0, 0, 0, 0.7);
250
+ color: #fff;
251
+ font-size: var(--mljr-text-sm);
252
+ padding: var(--mljr-space-6);
253
+ text-align: center;
254
+ }
255
+
256
+ /* ── Aspect ratios ── */
257
+ .mljr-video-16-9 {
258
+ aspect-ratio: 16 / 9;
259
+ }
260
+
261
+ .mljr-video-16-9 video {
262
+ width: 100%;
263
+ height: 100%;
264
+ max-height: none;
265
+ object-fit: contain;
266
+ }
package/src/index.css CHANGED
@@ -1,9 +1,12 @@
1
1
  /* ============================================
2
2
  MLJR CSS Framework
3
3
  A TailwindCSS-based CSS framework with
4
- orange/purple color scheme
4
+ claymorphism design system
5
5
  ============================================ */
6
6
 
7
+ /* Google Fonts - Nunito (display/body) + JetBrains Mono (code) */
8
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Nunito:wght@300;400;500;600;700&display=swap');
9
+
7
10
  /* All imports must come first before @tailwind directives */
8
11
  @import "./themes/variables.css";
9
12
  @import "./base/reset.css";
@@ -46,6 +49,37 @@
46
49
  @import "./components/stepper.css";
47
50
  @import "./components/drawer.css";
48
51
  @import "./components/empty-state.css";
52
+ @import "./components/navigation-rail.css";
53
+ @import "./components/dock.css";
54
+ @import "./components/tree-view.css";
55
+ @import "./components/marquee.css";
56
+ @import "./components/autocomplete.css";
57
+ @import "./components/animated-headline.css";
58
+ @import "./components/image-compare.css";
59
+ @import "./components/table-of-content.css";
60
+ @import "./components/chart.css";
61
+ @import "./components/inview.css";
62
+ @import "./components/lazy-image.css";
63
+ @import "./components/infinite-scroll.css";
64
+ @import "./components/diff-viewer.css";
65
+ @import "./components/audio-visualizer.css";
66
+ @import "./components/pin-input.css";
67
+ @import "./components/video-player.css";
68
+ @import "./components/drop-zone.css";
69
+ @import "./components/rich-text-editor.css";
70
+ @import "./components/map-embed.css";
71
+ @import "./components/pdf-viewer.css";
72
+ @import "./components/turnstile.css";
73
+ @import "./components/cookie-banner.css";
74
+ @import "./components/legal-page.css";
75
+ @import "./components/number-input.css";
76
+ @import "./components/context-menu.css";
77
+ @import "./components/calendar.css";
78
+ @import "./components/notification-center.css";
79
+ @import "./components/gauge.css";
80
+ @import "./components/alert-dialog.css";
81
+ @import "./components/number-ticker.css";
82
+ @import "./components/resizable.css";
49
83
  @import "./utilities/utilities.css";
50
84
 
51
85
  /* Tailwind Base */
@@ -6,7 +6,7 @@
6
6
  .mljr-footer {
7
7
  width: 100%;
8
8
  padding: var(--mljr-space-12) var(--mljr-space-8);
9
- background: var(--mljr-bg);
9
+ background: transparent;
10
10
  margin-top: auto;
11
11
  border-top: none;
12
12
  }
@@ -261,7 +261,7 @@
261
261
  /* Dark Mode - Enhanced Claymorphism */
262
262
  .dark .mljr-footer,
263
263
  [data-theme="dark"] .mljr-footer {
264
- background: var(--mljr-bg);
264
+ background: transparent;
265
265
  }
266
266
 
267
267
  .dark .mljr-footer-container,