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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mljr-css",
3
- "version": "1.0.14",
3
+ "version": "1.1.0",
4
4
  "description": "A TailwindCSS-based CSS framework with orange/purple color scheme",
5
5
  "type": "module",
6
6
  "main": "./dist/plugin.cjs",
@@ -0,0 +1,129 @@
1
+ /* ============================================
2
+ Alert Dialog Component
3
+ Semantic confirm/cancel overlay for
4
+ destructive action confirmation
5
+ ============================================ */
6
+
7
+ .mljr-alert-dialog-overlay {
8
+ position: fixed;
9
+ inset: 0;
10
+ background: rgba(0, 0, 0, 0.5);
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ z-index: 1100;
15
+ padding: var(--mljr-space-4);
16
+ backdrop-filter: blur(2px);
17
+ animation: mljr-alert-dialog-overlay-in 0.15s ease;
18
+ }
19
+
20
+ @keyframes mljr-alert-dialog-overlay-in {
21
+ from { opacity: 0; }
22
+ to { opacity: 1; }
23
+ }
24
+
25
+ .mljr-alert-dialog {
26
+ background: var(--mljr-bg);
27
+ border-radius: var(--mljr-radius-2xl);
28
+ box-shadow: var(--mljr-clay-shadow-lg);
29
+ padding: var(--mljr-space-8);
30
+ max-width: 28rem;
31
+ width: 100%;
32
+ position: relative;
33
+ animation: mljr-alert-dialog-in 0.2s ease;
34
+ outline: none;
35
+ }
36
+
37
+ @keyframes mljr-alert-dialog-in {
38
+ from {
39
+ opacity: 0;
40
+ transform: scale(0.95) translateY(-8px);
41
+ }
42
+ to {
43
+ opacity: 1;
44
+ transform: scale(1) translateY(0);
45
+ }
46
+ }
47
+
48
+ .mljr-alert-dialog-icon {
49
+ width: 3rem;
50
+ height: 3rem;
51
+ border-radius: var(--mljr-radius-full);
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ margin-bottom: var(--mljr-space-4);
56
+ }
57
+
58
+ .mljr-alert-dialog-title {
59
+ font-size: var(--mljr-text-lg);
60
+ font-weight: 700;
61
+ color: var(--mljr-text);
62
+ margin: 0 0 var(--mljr-space-2);
63
+ line-height: 1.3;
64
+ }
65
+
66
+ .mljr-alert-dialog-description {
67
+ font-size: var(--mljr-text-sm);
68
+ color: var(--mljr-text-secondary);
69
+ margin: 0 0 var(--mljr-space-6);
70
+ line-height: 1.6;
71
+ }
72
+
73
+ .mljr-alert-dialog-body {
74
+ margin-bottom: var(--mljr-space-6);
75
+ }
76
+
77
+ .mljr-alert-dialog-actions {
78
+ display: flex;
79
+ gap: var(--mljr-space-3);
80
+ justify-content: flex-end;
81
+ flex-wrap: wrap;
82
+ }
83
+
84
+ /* Default variant */
85
+ .mljr-alert-dialog[data-variant="default"] .mljr-alert-dialog-icon {
86
+ background: var(--mljr-primary-100);
87
+ color: var(--mljr-primary-600);
88
+ }
89
+
90
+ /* Danger variant */
91
+ .mljr-alert-dialog[data-variant="danger"] .mljr-alert-dialog-icon {
92
+ background: var(--mljr-error-100);
93
+ color: var(--mljr-error-600);
94
+ }
95
+
96
+ .mljr-alert-dialog[data-variant="danger"] .mljr-alert-dialog-title {
97
+ color: var(--mljr-error-700);
98
+ }
99
+
100
+ /* Warning variant */
101
+ .mljr-alert-dialog[data-variant="warning"] .mljr-alert-dialog-icon {
102
+ background: var(--mljr-warning-100);
103
+ color: var(--mljr-warning-600);
104
+ }
105
+
106
+ .mljr-alert-dialog[data-variant="warning"] .mljr-alert-dialog-title {
107
+ color: var(--mljr-warning-700);
108
+ }
109
+
110
+ /* Dark mode */
111
+ .dark .mljr-alert-dialog-overlay,
112
+ [data-theme="dark"] .mljr-alert-dialog-overlay {
113
+ background: rgba(0, 0, 0, 0.7);
114
+ }
115
+
116
+ .dark .mljr-alert-dialog[data-variant="default"] .mljr-alert-dialog-icon,
117
+ [data-theme="dark"] .mljr-alert-dialog[data-variant="default"] .mljr-alert-dialog-icon {
118
+ background: color-mix(in srgb, var(--mljr-primary-600) 20%, transparent);
119
+ }
120
+
121
+ .dark .mljr-alert-dialog[data-variant="danger"] .mljr-alert-dialog-icon,
122
+ [data-theme="dark"] .mljr-alert-dialog[data-variant="danger"] .mljr-alert-dialog-icon {
123
+ background: color-mix(in srgb, var(--mljr-error-600) 20%, transparent);
124
+ }
125
+
126
+ .dark .mljr-alert-dialog[data-variant="warning"] .mljr-alert-dialog-icon,
127
+ [data-theme="dark"] .mljr-alert-dialog[data-variant="warning"] .mljr-alert-dialog-icon {
128
+ background: color-mix(in srgb, var(--mljr-warning-600) 20%, transparent);
129
+ }
@@ -33,6 +33,13 @@
33
33
  opacity: 0.9;
34
34
  }
35
35
 
36
+ .mljr-alert-actions {
37
+ display: flex;
38
+ gap: var(--mljr-space-2);
39
+ margin-top: var(--mljr-space-3);
40
+ flex-wrap: wrap;
41
+ }
42
+
36
43
  .mljr-alert-close {
37
44
  flex-shrink: 0;
38
45
  width: 1.5rem;
@@ -67,8 +74,9 @@
67
74
  border: 1px solid rgba(59, 130, 246, 0.2);
68
75
  color: var(--mljr-info-dark);
69
76
  box-shadow:
70
- 6px 6px 12px rgba(59, 130, 246, 0.12),
71
- -4px -4px 10px rgba(255, 255, 255, 0.8);
77
+ 6px 6px 12px rgba(59, 130, 246, 0.15),
78
+ inset -6px -6px 12px rgba(30, 60, 120, 0.06),
79
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
72
80
  }
73
81
 
74
82
  .dark .mljr-alert-info,
@@ -78,7 +86,8 @@
78
86
  color: var(--mljr-info-light);
79
87
  box-shadow:
80
88
  6px 6px 12px rgba(0, 0, 0, 0.3),
81
- -4px -4px 10px rgba(68, 64, 60, 0.1),
89
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
90
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
82
91
  0 0 12px rgba(59, 130, 246, 0.15);
83
92
  }
84
93
 
@@ -88,8 +97,9 @@
88
97
  border: 1px solid rgba(16, 185, 129, 0.25);
89
98
  color: var(--mljr-success-dark);
90
99
  box-shadow:
91
- 6px 6px 12px rgba(16, 185, 129, 0.12),
92
- -4px -4px 10px rgba(255, 255, 255, 0.8);
100
+ 6px 6px 12px rgba(16, 185, 129, 0.15),
101
+ inset -6px -6px 12px rgba(5, 80, 50, 0.06),
102
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
93
103
  }
94
104
 
95
105
  .dark .mljr-alert-success,
@@ -99,7 +109,8 @@
99
109
  color: var(--mljr-success-light);
100
110
  box-shadow:
101
111
  6px 6px 12px rgba(0, 0, 0, 0.3),
102
- -4px -4px 10px rgba(68, 64, 60, 0.1),
112
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
113
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
103
114
  0 0 12px rgba(16, 185, 129, 0.15);
104
115
  }
105
116
 
@@ -109,8 +120,9 @@
109
120
  border: 1px solid rgba(234, 179, 8, 0.2);
110
121
  color: var(--mljr-warning-dark);
111
122
  box-shadow:
112
- 6px 6px 12px rgba(234, 179, 8, 0.12),
113
- -4px -4px 10px rgba(255, 255, 255, 0.8);
123
+ 6px 6px 12px rgba(234, 179, 8, 0.15),
124
+ inset -6px -6px 12px rgba(120, 80, 5, 0.06),
125
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
114
126
  }
115
127
 
116
128
  .dark .mljr-alert-warning,
@@ -120,7 +132,8 @@
120
132
  color: var(--mljr-warning-light);
121
133
  box-shadow:
122
134
  6px 6px 12px rgba(0, 0, 0, 0.3),
123
- -4px -4px 10px rgba(68, 64, 60, 0.1),
135
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
136
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
124
137
  0 0 12px rgba(234, 179, 8, 0.15);
125
138
  }
126
139
 
@@ -130,8 +143,9 @@
130
143
  border: 1px solid rgba(239, 68, 68, 0.25);
131
144
  color: var(--mljr-error-dark);
132
145
  box-shadow:
133
- 6px 6px 12px rgba(239, 68, 68, 0.12),
134
- -4px -4px 10px rgba(255, 255, 255, 0.8);
146
+ 6px 6px 12px rgba(239, 68, 68, 0.15),
147
+ inset -6px -6px 12px rgba(120, 30, 30, 0.06),
148
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
135
149
  }
136
150
 
137
151
  .dark .mljr-alert-error,
@@ -141,7 +155,8 @@
141
155
  color: var(--mljr-error-light);
142
156
  box-shadow:
143
157
  6px 6px 12px rgba(0, 0, 0, 0.3),
144
- -4px -4px 10px rgba(68, 64, 60, 0.1),
158
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
159
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
145
160
  0 0 12px rgba(239, 68, 68, 0.15);
146
161
  }
147
162
 
@@ -151,8 +166,9 @@
151
166
  border: 1px solid var(--mljr-primary-200);
152
167
  color: var(--mljr-primary-700);
153
168
  box-shadow:
154
- 6px 6px 12px rgba(249, 115, 22, 0.15),
155
- -4px -4px 10px rgba(255, 255, 255, 0.8);
169
+ 6px 6px 12px rgba(249, 115, 22, 0.18),
170
+ inset -6px -6px 12px rgba(120, 50, 10, 0.06),
171
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
156
172
  }
157
173
 
158
174
  .dark .mljr-alert-primary,
@@ -162,29 +178,32 @@
162
178
  color: var(--mljr-primary-300);
163
179
  box-shadow:
164
180
  6px 6px 12px rgba(0, 0, 0, 0.3),
165
- -4px -4px 10px rgba(68, 64, 60, 0.1),
181
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
182
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
166
183
  0 0 12px rgba(249, 115, 22, 0.15);
167
184
  }
168
185
 
169
- /* Secondary Alert (Teal) */
186
+ /* Secondary Alert (Purple) */
170
187
  .mljr-alert-secondary {
171
188
  background-color: var(--mljr-secondary-50);
172
189
  border: 1px solid var(--mljr-secondary-200);
173
190
  color: var(--mljr-secondary-700);
174
191
  box-shadow:
175
- 6px 6px 12px rgba(20, 184, 166, 0.15),
176
- -4px -4px 10px rgba(255, 255, 255, 0.8);
192
+ 6px 6px 12px rgba(168, 85, 247, 0.15),
193
+ inset -6px -6px 12px rgba(80, 30, 140, 0.06),
194
+ inset 6px 6px 12px rgba(255, 255, 255, 0.4);
177
195
  }
178
196
 
179
197
  .dark .mljr-alert-secondary,
180
198
  [data-theme="dark"] .mljr-alert-secondary {
181
- background-color: rgba(20, 184, 166, 0.15);
182
- border-color: rgba(20, 184, 166, 0.35);
199
+ background-color: rgba(168, 85, 247, 0.15);
200
+ border-color: rgba(168, 85, 247, 0.35);
183
201
  color: var(--mljr-secondary-300);
184
202
  box-shadow:
185
203
  6px 6px 12px rgba(0, 0, 0, 0.3),
186
- -4px -4px 10px rgba(68, 64, 60, 0.1),
187
- 0 0 12px rgba(20, 184, 166, 0.15);
204
+ inset -6px -6px 12px rgba(0, 0, 0, 0.15),
205
+ inset 6px 6px 12px rgba(255, 200, 150, 0.06),
206
+ 0 0 12px rgba(168, 85, 247, 0.15);
188
207
  }
189
208
 
190
209
  /* Solid Variants */
@@ -0,0 +1,118 @@
1
+ /* =====================================================
2
+ AnimatedHeadline - Rotating/animated text component
3
+ ===================================================== */
4
+
5
+ .mljr-animated-headline {
6
+ display: inline;
7
+ }
8
+
9
+ .mljr-animated-word-wrapper {
10
+ display: inline-block;
11
+ position: relative;
12
+ overflow: hidden;
13
+ vertical-align: bottom;
14
+ white-space: nowrap;
15
+ }
16
+
17
+ /* Typing cursor */
18
+ .mljr-animated-cursor {
19
+ display: inline-block;
20
+ width: 2px;
21
+ height: 1em;
22
+ background: currentColor;
23
+ margin-left: 1px;
24
+ vertical-align: text-bottom;
25
+ animation: mljr-cursor-blink 0.75s step-end infinite;
26
+ }
27
+
28
+ /* Fade animation */
29
+ .mljr-animated-word-fade {
30
+ display: inline-block;
31
+ animation: mljr-word-fade-in 0.5s ease forwards;
32
+ }
33
+
34
+ .mljr-animated-word-fade-out {
35
+ animation: mljr-word-fade-out 0.5s ease forwards;
36
+ }
37
+
38
+ /* Slide animation */
39
+ .mljr-animated-word-slide {
40
+ display: inline-block;
41
+ animation: mljr-word-slide-in 0.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
42
+ }
43
+
44
+ .mljr-animated-word-slide-out {
45
+ animation: mljr-word-slide-out 0.3s cubic-bezier(0.64, 0, 0.78, 0) forwards;
46
+ }
47
+
48
+ /* Flip animation */
49
+ .mljr-animated-word-flip {
50
+ display: inline-block;
51
+ transform-origin: bottom center;
52
+ animation: mljr-word-flip-in 0.5s ease forwards;
53
+ }
54
+
55
+ .mljr-animated-word-flip-out {
56
+ animation: mljr-word-flip-out 0.4s ease forwards;
57
+ }
58
+
59
+ /* Highlight variant */
60
+ .mljr-animated-highlight {
61
+ position: relative;
62
+ display: inline-block;
63
+ color: white;
64
+ padding: 0 0.25em;
65
+ z-index: 0;
66
+ }
67
+
68
+ .mljr-animated-highlight::before {
69
+ content: '';
70
+ position: absolute;
71
+ inset: 0;
72
+ background: var(--mljr-gradient-primary);
73
+ border-radius: var(--mljr-radius-sm);
74
+ z-index: -1;
75
+ transform-origin: left center;
76
+ animation: mljr-highlight-expand 0.4s ease forwards;
77
+ }
78
+
79
+ /* Keyframes */
80
+ @keyframes mljr-cursor-blink {
81
+ 0%, 100% { opacity: 1; }
82
+ 50% { opacity: 0; }
83
+ }
84
+
85
+ @keyframes mljr-word-fade-in {
86
+ from { opacity: 0; }
87
+ to { opacity: 1; }
88
+ }
89
+
90
+ @keyframes mljr-word-fade-out {
91
+ from { opacity: 1; }
92
+ to { opacity: 0; }
93
+ }
94
+
95
+ @keyframes mljr-word-slide-in {
96
+ from { transform: translateY(100%); opacity: 0; }
97
+ to { transform: translateY(0); opacity: 1; }
98
+ }
99
+
100
+ @keyframes mljr-word-slide-out {
101
+ from { transform: translateY(0); opacity: 1; }
102
+ to { transform: translateY(-100%); opacity: 0; }
103
+ }
104
+
105
+ @keyframes mljr-word-flip-in {
106
+ from { transform: rotateX(-90deg); opacity: 0; }
107
+ to { transform: rotateX(0deg); opacity: 1; }
108
+ }
109
+
110
+ @keyframes mljr-word-flip-out {
111
+ from { transform: rotateX(0deg); opacity: 1; }
112
+ to { transform: rotateX(90deg); opacity: 0; }
113
+ }
114
+
115
+ @keyframes mljr-highlight-expand {
116
+ from { transform: scaleX(0); }
117
+ to { transform: scaleX(1); }
118
+ }
@@ -0,0 +1,96 @@
1
+ /* ============================================
2
+ AudioVisualizer - Web Audio API canvas viz
3
+ ============================================ */
4
+
5
+ .mljr-audio-viz {
6
+ display: flex;
7
+ flex-direction: column;
8
+ gap: var(--mljr-space-3);
9
+ }
10
+
11
+ .mljr-audio-viz-canvas-wrap {
12
+ position: relative;
13
+ border-radius: var(--mljr-radius-md);
14
+ overflow: hidden;
15
+ background: var(--mljr-surface-2);
16
+ border: 1px solid var(--mljr-border);
17
+ }
18
+
19
+ .mljr-audio-viz canvas {
20
+ display: block;
21
+ width: 100%;
22
+ }
23
+
24
+ /* Idle/stopped overlay */
25
+ .mljr-audio-viz-idle {
26
+ position: absolute;
27
+ inset: 0;
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ flex-direction: column;
32
+ gap: 0.5rem;
33
+ color: var(--mljr-text-muted);
34
+ font-size: 0.875rem;
35
+ pointer-events: none;
36
+ }
37
+
38
+ .mljr-audio-viz-idle svg {
39
+ opacity: 0.35;
40
+ }
41
+
42
+ /* Controls row */
43
+ .mljr-audio-viz-controls {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 0.75rem;
47
+ flex-wrap: wrap;
48
+ }
49
+
50
+ /* Permission error */
51
+ .mljr-audio-viz-error {
52
+ padding: 0.625rem 0.875rem;
53
+ background: rgba(220, 38, 38, 0.08);
54
+ border: 1px solid rgba(220, 38, 38, 0.25);
55
+ border-radius: var(--mljr-radius-sm);
56
+ color: #dc2626;
57
+ font-size: 0.8125rem;
58
+ }
59
+
60
+ .dark .mljr-audio-viz-error {
61
+ color: #f87171;
62
+ background: rgba(220, 38, 38, 0.12);
63
+ }
64
+
65
+ /* Type selector pills */
66
+ .mljr-audio-viz-types {
67
+ display: flex;
68
+ gap: 0.25rem;
69
+ background: var(--mljr-surface-2);
70
+ border: 1px solid var(--mljr-border);
71
+ border-radius: var(--mljr-radius-full);
72
+ padding: 3px;
73
+ }
74
+
75
+ .mljr-audio-viz-type-btn {
76
+ padding: 0.2rem 0.75rem;
77
+ border-radius: var(--mljr-radius-full);
78
+ font-size: 0.8rem;
79
+ cursor: pointer;
80
+ border: none;
81
+ background: transparent;
82
+ color: var(--mljr-text-muted);
83
+ transition: background 150ms, color 150ms;
84
+ white-space: nowrap;
85
+ }
86
+
87
+ .mljr-audio-viz-type-btn:hover {
88
+ background: var(--mljr-surface-3, var(--mljr-surface));
89
+ color: var(--mljr-text);
90
+ }
91
+
92
+ .mljr-audio-viz-type-btn-active {
93
+ background: var(--mljr-primary-500);
94
+ color: #fff;
95
+ font-weight: 600;
96
+ }
@@ -0,0 +1,143 @@
1
+ /* =====================================================
2
+ AutoComplete - Searchable dropdown with suggestions
3
+ ===================================================== */
4
+
5
+ .mljr-autocomplete {
6
+ position: relative;
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: 0.25rem;
10
+ }
11
+
12
+ .mljr-autocomplete-input-wrapper {
13
+ position: relative;
14
+ display: flex;
15
+ align-items: center;
16
+ }
17
+
18
+ .mljr-autocomplete-clear {
19
+ position: absolute;
20
+ right: 0.75rem;
21
+ top: 50%;
22
+ transform: translateY(-50%);
23
+ background: none;
24
+ border: none;
25
+ cursor: pointer;
26
+ color: var(--mljr-text-muted);
27
+ display: flex;
28
+ align-items: center;
29
+ padding: 0;
30
+ transition: color var(--mljr-transition-fast);
31
+ }
32
+
33
+ .mljr-autocomplete-clear:hover {
34
+ color: var(--mljr-text);
35
+ }
36
+
37
+ /* Dropdown */
38
+ .mljr-autocomplete-dropdown {
39
+ position: absolute;
40
+ top: calc(100% + 0.375rem);
41
+ left: 0;
42
+ right: 0;
43
+ z-index: 50;
44
+ background: var(--mljr-bg);
45
+ border: 1px solid var(--mljr-border);
46
+ border-radius: var(--mljr-radius-md);
47
+ box-shadow: var(--mljr-clay-shadow);
48
+ overflow: hidden;
49
+ max-height: 260px;
50
+ overflow-y: auto;
51
+ }
52
+
53
+ .mljr-autocomplete-option {
54
+ display: flex;
55
+ align-items: center;
56
+ gap: 0.625rem;
57
+ padding: 0.625rem 0.875rem;
58
+ cursor: pointer;
59
+ font-size: var(--mljr-text-sm);
60
+ transition: background var(--mljr-transition-fast);
61
+ color: var(--mljr-text);
62
+ border: none;
63
+ background: none;
64
+ width: 100%;
65
+ text-align: left;
66
+ }
67
+
68
+ .mljr-autocomplete-option:hover,
69
+ .mljr-autocomplete-option-highlighted {
70
+ background: var(--mljr-primary-50);
71
+ color: var(--mljr-primary-700);
72
+ }
73
+
74
+ .mljr-autocomplete-option-selected {
75
+ background: var(--mljr-primary-50);
76
+ color: var(--mljr-primary-600);
77
+ font-weight: 500;
78
+ }
79
+
80
+ .mljr-autocomplete-option-selected:hover,
81
+ .mljr-autocomplete-option-selected.mljr-autocomplete-option-highlighted {
82
+ background: var(--mljr-primary-100);
83
+ }
84
+
85
+ .mljr-autocomplete-option-checkmark {
86
+ margin-left: auto;
87
+ color: var(--mljr-primary-500);
88
+ flex-shrink: 0;
89
+ }
90
+
91
+ .mljr-autocomplete-no-results {
92
+ padding: 1rem 0.875rem;
93
+ font-size: var(--mljr-text-sm);
94
+ color: var(--mljr-text-muted);
95
+ text-align: center;
96
+ }
97
+
98
+ .mljr-autocomplete-highlight {
99
+ background: var(--mljr-primary-100);
100
+ color: var(--mljr-primary-700);
101
+ border-radius: 2px;
102
+ font-weight: 600;
103
+ }
104
+
105
+ /* Selected chips (multiple mode) */
106
+ .mljr-autocomplete-chips {
107
+ display: flex;
108
+ flex-wrap: wrap;
109
+ gap: 0.375rem;
110
+ margin-bottom: 0.375rem;
111
+ }
112
+
113
+ /* Group header */
114
+ .mljr-autocomplete-group-header {
115
+ padding: 0.375rem 0.875rem;
116
+ font-size: var(--mljr-text-xs);
117
+ font-weight: 600;
118
+ color: var(--mljr-text-muted);
119
+ text-transform: uppercase;
120
+ letter-spacing: 0.05em;
121
+ background: var(--mljr-bg-secondary);
122
+ }
123
+
124
+ /* Dark mode */
125
+ .dark .mljr-autocomplete-dropdown,
126
+ [data-theme="dark"] .mljr-autocomplete-dropdown {
127
+ background: var(--mljr-bg);
128
+ border-color: var(--mljr-border);
129
+ box-shadow: var(--mljr-clay-shadow);
130
+ }
131
+
132
+ .dark .mljr-autocomplete-option:hover,
133
+ .dark .mljr-autocomplete-option-highlighted,
134
+ [data-theme="dark"] .mljr-autocomplete-option:hover,
135
+ [data-theme="dark"] .mljr-autocomplete-option-highlighted {
136
+ background: color-mix(in srgb, var(--mljr-primary-500) 15%, transparent);
137
+ }
138
+
139
+ .dark .mljr-autocomplete-highlight,
140
+ [data-theme="dark"] .mljr-autocomplete-highlight {
141
+ background: color-mix(in srgb, var(--mljr-primary-500) 20%, transparent);
142
+ color: var(--mljr-primary-300);
143
+ }