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,248 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Divider Component
3
+ Claymorphism: Soft 3D embossed divider lines
4
+ ============================================ */
5
+
6
+ .mljr-divider {
7
+ display: flex;
8
+ align-items: center;
9
+ width: 100%;
10
+ margin: var(--mljr-space-4) 0;
11
+ position: relative;
12
+ }
13
+
14
+ /* Claymorphism default: soft embossed line */
15
+ .mljr-divider::before,
16
+ .mljr-divider::after {
17
+ content: '';
18
+ flex: 1;
19
+ height: 3px;
20
+ background: linear-gradient(
21
+ 180deg,
22
+ rgba(255, 255, 255, 0.8) 0%,
23
+ var(--mljr-border) 50%,
24
+ rgba(0, 0, 0, 0.05) 100%
25
+ );
26
+ border-radius: var(--mljr-radius-full);
27
+ box-shadow:
28
+ inset 0 1px 2px rgba(255, 255, 255, 0.9),
29
+ inset 0 -1px 1px rgba(0, 0, 0, 0.05),
30
+ 0 1px 2px rgba(0, 0, 0, 0.05);
31
+ }
32
+
33
+ /* No content - single line */
34
+ .mljr-divider:empty::after {
35
+ display: none;
36
+ }
37
+
38
+ /* With content */
39
+ .mljr-divider-content {
40
+ font-size: var(--mljr-text-xs);
41
+ font-weight: 500;
42
+ text-transform: uppercase;
43
+ letter-spacing: 0.1em;
44
+ color: var(--mljr-text-muted);
45
+ white-space: nowrap;
46
+ background-color: var(--mljr-bg);
47
+ border-radius: var(--mljr-radius-full);
48
+ box-shadow: var(--mljr-clay-shadow-sm);
49
+ padding: var(--mljr-space-1) var(--mljr-space-3);
50
+ }
51
+
52
+ /* Vertical orientation */
53
+ .mljr-divider-vertical {
54
+ flex-direction: column;
55
+ width: auto;
56
+ height: auto;
57
+ min-height: 3rem;
58
+ margin: 0 var(--mljr-space-4);
59
+ }
60
+
61
+ .mljr-divider-vertical::before,
62
+ .mljr-divider-vertical::after {
63
+ width: 3px;
64
+ height: 100%;
65
+ flex: 1;
66
+ background: linear-gradient(
67
+ 90deg,
68
+ rgba(255, 255, 255, 0.8) 0%,
69
+ var(--mljr-border) 50%,
70
+ rgba(0, 0, 0, 0.05) 100%
71
+ );
72
+ box-shadow:
73
+ inset 1px 0 2px rgba(255, 255, 255, 0.9),
74
+ inset -1px 0 1px rgba(0, 0, 0, 0.05),
75
+ 1px 0 2px rgba(0, 0, 0, 0.05);
76
+ }
77
+
78
+ .mljr-divider-vertical .mljr-divider-content {
79
+ padding: var(--mljr-space-2) var(--mljr-space-1);
80
+ writing-mode: vertical-rl;
81
+ text-orientation: mixed;
82
+ }
83
+
84
+ /* Color Variants - Soft gradient lines */
85
+ .mljr-divider-primary::before,
86
+ .mljr-divider-primary::after {
87
+ background: linear-gradient(
88
+ 180deg,
89
+ var(--mljr-primary-200) 0%,
90
+ var(--mljr-primary-400) 50%,
91
+ var(--mljr-primary-300) 100%
92
+ );
93
+ box-shadow:
94
+ inset 0 1px 2px rgba(255, 255, 255, 0.5),
95
+ 0 2px 4px rgba(249, 115, 22, 0.2);
96
+ }
97
+
98
+ .mljr-divider-primary .mljr-divider-content {
99
+ color: var(--mljr-primary-600);
100
+ background: linear-gradient(135deg, var(--mljr-primary-50) 0%, var(--mljr-primary-100) 100%);
101
+ box-shadow:
102
+ 4px 4px 8px rgba(249, 115, 22, 0.15),
103
+ -3px -3px 6px rgba(255, 255, 255, 0.9);
104
+ }
105
+
106
+ .mljr-divider-secondary::before,
107
+ .mljr-divider-secondary::after {
108
+ background: linear-gradient(
109
+ 180deg,
110
+ var(--mljr-secondary-200) 0%,
111
+ var(--mljr-secondary-400) 50%,
112
+ var(--mljr-secondary-300) 100%
113
+ );
114
+ box-shadow:
115
+ inset 0 1px 2px rgba(255, 255, 255, 0.5),
116
+ 0 2px 4px rgba(168, 85, 247, 0.2);
117
+ }
118
+
119
+ .mljr-divider-secondary .mljr-divider-content {
120
+ color: var(--mljr-secondary-600);
121
+ background: linear-gradient(135deg, var(--mljr-secondary-50) 0%, var(--mljr-secondary-100) 100%);
122
+ box-shadow:
123
+ 4px 4px 8px rgba(168, 85, 247, 0.15),
124
+ -3px -3px 6px rgba(255, 255, 255, 0.9);
125
+ }
126
+
127
+ .mljr-divider-accent::before,
128
+ .mljr-divider-accent::after {
129
+ background: linear-gradient(
130
+ 180deg,
131
+ var(--mljr-accent-200) 0%,
132
+ var(--mljr-accent-400) 50%,
133
+ var(--mljr-accent-300) 100%
134
+ );
135
+ box-shadow:
136
+ inset 0 1px 2px rgba(255, 255, 255, 0.5),
137
+ 0 2px 4px rgba(20, 184, 166, 0.2);
138
+ }
139
+
140
+ .mljr-divider-accent .mljr-divider-content {
141
+ color: var(--mljr-accent-600);
142
+ background: linear-gradient(135deg, var(--mljr-accent-50) 0%, var(--mljr-accent-100) 100%);
143
+ box-shadow:
144
+ 4px 4px 8px rgba(20, 184, 166, 0.15),
145
+ -3px -3px 6px rgba(255, 255, 255, 0.9);
146
+ }
147
+
148
+ /* Gradient style - smooth color transition */
149
+ .mljr-divider-gradient::before,
150
+ .mljr-divider-gradient::after {
151
+ height: 4px;
152
+ background: var(--mljr-gradient-primary);
153
+ box-shadow:
154
+ inset 0 2px 4px rgba(255, 255, 255, 0.4),
155
+ 0 2px 6px rgba(249, 115, 22, 0.25);
156
+ }
157
+
158
+ /* Subtle style - minimal emboss */
159
+ .mljr-divider-subtle::before,
160
+ .mljr-divider-subtle::after {
161
+ height: 1px;
162
+ background: var(--mljr-border);
163
+ box-shadow:
164
+ 0 1px 0 rgba(255, 255, 255, 0.8);
165
+ }
166
+
167
+ .mljr-divider-subtle .mljr-divider-content {
168
+ color: var(--mljr-text-muted);
169
+ background: transparent;
170
+ box-shadow: none;
171
+ }
172
+
173
+ /* Dashed style */
174
+ .mljr-divider-dashed::before,
175
+ .mljr-divider-dashed::after {
176
+ background: transparent;
177
+ border-top: 2px dashed var(--mljr-border);
178
+ height: 0;
179
+ box-shadow: none;
180
+ }
181
+
182
+ .mljr-divider-dashed.mljr-divider-vertical::before,
183
+ .mljr-divider-dashed.mljr-divider-vertical::after {
184
+ border-top: none;
185
+ border-left: 2px dashed var(--mljr-border);
186
+ width: 0;
187
+ }
188
+
189
+ /* Content alignment */
190
+ .mljr-divider-left::before {
191
+ flex: 0 0 2rem;
192
+ }
193
+
194
+ .mljr-divider-right::after {
195
+ flex: 0 0 2rem;
196
+ }
197
+
198
+ /* Spacing variants */
199
+ .mljr-divider-sm {
200
+ margin: var(--mljr-space-2) 0;
201
+ }
202
+
203
+ .mljr-divider-lg {
204
+ margin: var(--mljr-space-8) 0;
205
+ }
206
+
207
+ .mljr-divider-xl {
208
+ margin: var(--mljr-space-12) 0;
209
+ }
210
+
211
+ /* Thickness variants */
212
+ .mljr-divider-thin::before,
213
+ .mljr-divider-thin::after {
214
+ height: 1px;
215
+ }
216
+
217
+ .mljr-divider-thick::before,
218
+ .mljr-divider-thick::after {
219
+ height: 4px;
220
+ }
221
+
222
+ .mljr-divider-thick.mljr-divider-vertical::before,
223
+ .mljr-divider-thick.mljr-divider-vertical::after {
224
+ width: 4px;
225
+ height: auto;
226
+ }
227
+
228
+ /* Dark mode */
229
+ .dark .mljr-divider::before,
230
+ .dark .mljr-divider::after,
231
+ [data-theme="dark"] .mljr-divider::before,
232
+ [data-theme="dark"] .mljr-divider::after {
233
+ background: linear-gradient(
234
+ 180deg,
235
+ rgba(68, 64, 60, 0.8) 0%,
236
+ var(--mljr-border) 50%,
237
+ rgba(0, 0, 0, 0.3) 100%
238
+ );
239
+ box-shadow:
240
+ inset 0 1px 2px rgba(68, 64, 60, 0.5),
241
+ 0 1px 2px rgba(0, 0, 0, 0.2);
242
+ }
243
+
244
+ .dark .mljr-divider-content,
245
+ [data-theme="dark"] .mljr-divider-content {
246
+ background-color: var(--mljr-bg-secondary);
247
+ box-shadow: var(--mljr-clay-shadow-sm);
248
+ }
@@ -0,0 +1,242 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Drawer Component
3
+ Claymorphism: Slide-out panel with shadows
4
+ ============================================ */
5
+
6
+ .mljr-drawer-overlay {
7
+ position: fixed;
8
+ inset: 0;
9
+ background: rgba(0, 0, 0, 0.5);
10
+ backdrop-filter: blur(4px);
11
+ z-index: 999;
12
+ animation: mljr-drawer-overlay-in 0.3s ease;
13
+ }
14
+
15
+ @keyframes mljr-drawer-overlay-in {
16
+ from { opacity: 0; }
17
+ to { opacity: 1; }
18
+ }
19
+
20
+ .mljr-drawer {
21
+ position: fixed;
22
+ background: var(--mljr-bg);
23
+ box-shadow: var(--mljr-clay-shadow-xl);
24
+ z-index: 1000;
25
+ display: flex;
26
+ flex-direction: column;
27
+ animation: mljr-drawer-in 0.3s ease;
28
+ }
29
+
30
+ /* Position-specific animations */
31
+ @keyframes mljr-drawer-in-right {
32
+ from { transform: translateX(100%); }
33
+ to { transform: translateX(0); }
34
+ }
35
+
36
+ @keyframes mljr-drawer-in-left {
37
+ from { transform: translateX(-100%); }
38
+ to { transform: translateX(0); }
39
+ }
40
+
41
+ @keyframes mljr-drawer-in-top {
42
+ from { transform: translateY(-100%); }
43
+ to { transform: translateY(0); }
44
+ }
45
+
46
+ @keyframes mljr-drawer-in-bottom {
47
+ from { transform: translateY(100%); }
48
+ to { transform: translateY(0); }
49
+ }
50
+
51
+ /* Positions */
52
+ .mljr-drawer-right {
53
+ top: 0;
54
+ right: 0;
55
+ bottom: 0;
56
+ width: 100%;
57
+ max-width: 400px;
58
+ border-radius: var(--mljr-radius-xl) 0 0 var(--mljr-radius-xl);
59
+ animation: mljr-drawer-in-right 0.3s ease;
60
+ }
61
+
62
+ .mljr-drawer-left {
63
+ top: 0;
64
+ left: 0;
65
+ bottom: 0;
66
+ width: 100%;
67
+ max-width: 400px;
68
+ border-radius: 0 var(--mljr-radius-xl) var(--mljr-radius-xl) 0;
69
+ animation: mljr-drawer-in-left 0.3s ease;
70
+ }
71
+
72
+ .mljr-drawer-top {
73
+ top: 0;
74
+ left: 0;
75
+ right: 0;
76
+ max-height: 50vh;
77
+ border-radius: 0 0 var(--mljr-radius-xl) var(--mljr-radius-xl);
78
+ animation: mljr-drawer-in-top 0.3s ease;
79
+ }
80
+
81
+ .mljr-drawer-bottom {
82
+ bottom: 0;
83
+ left: 0;
84
+ right: 0;
85
+ max-height: 50vh;
86
+ border-radius: var(--mljr-radius-xl) var(--mljr-radius-xl) 0 0;
87
+ animation: mljr-drawer-in-bottom 0.3s ease;
88
+ }
89
+
90
+ /* Sizes */
91
+ .mljr-drawer-sm {
92
+ max-width: 300px;
93
+ }
94
+
95
+ .mljr-drawer-lg {
96
+ max-width: 600px;
97
+ }
98
+
99
+ .mljr-drawer-xl {
100
+ max-width: 800px;
101
+ }
102
+
103
+ .mljr-drawer-full {
104
+ max-width: 100%;
105
+ }
106
+
107
+ /* Header */
108
+ .mljr-drawer-header {
109
+ display: flex;
110
+ align-items: center;
111
+ justify-content: space-between;
112
+ padding: var(--mljr-space-4) var(--mljr-space-6);
113
+ border-bottom: 1px solid var(--mljr-border);
114
+ }
115
+
116
+ .mljr-drawer-title {
117
+ font-size: var(--mljr-text-xl);
118
+ font-weight: 600;
119
+ color: var(--mljr-text);
120
+ margin: 0;
121
+ }
122
+
123
+ .mljr-drawer-close {
124
+ display: flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ width: 2.5rem;
128
+ height: 2.5rem;
129
+ padding: 0;
130
+ background: transparent;
131
+ border: none;
132
+ border-radius: var(--mljr-radius-md);
133
+ color: var(--mljr-text-muted);
134
+ cursor: pointer;
135
+ transition: all var(--mljr-transition-fast);
136
+ }
137
+
138
+ .mljr-drawer-close:hover {
139
+ background: var(--mljr-bg-secondary);
140
+ color: var(--mljr-text);
141
+ }
142
+
143
+ /* Body */
144
+ .mljr-drawer-body {
145
+ flex: 1;
146
+ padding: var(--mljr-space-6);
147
+ overflow-y: auto;
148
+ }
149
+
150
+ /* Footer */
151
+ .mljr-drawer-footer {
152
+ display: flex;
153
+ justify-content: flex-end;
154
+ gap: var(--mljr-space-3);
155
+ padding: var(--mljr-space-4) var(--mljr-space-6);
156
+ border-top: 1px solid var(--mljr-border);
157
+ }
158
+
159
+ /* Without Header/Footer Borders */
160
+ .mljr-drawer-seamless .mljr-drawer-header {
161
+ border-bottom: none;
162
+ }
163
+
164
+ .mljr-drawer-seamless .mljr-drawer-footer {
165
+ border-top: none;
166
+ }
167
+
168
+ /* Push Content Mode */
169
+ .mljr-drawer-push {
170
+ position: relative;
171
+ height: 100vh;
172
+ }
173
+
174
+ .mljr-drawer-push-content {
175
+ transition: margin var(--mljr-transition-slow);
176
+ }
177
+
178
+ .mljr-drawer-push-open .mljr-drawer-push-content {
179
+ margin-right: 400px;
180
+ }
181
+
182
+ /* Navigation Drawer */
183
+ .mljr-drawer-nav {
184
+ padding: var(--mljr-space-4);
185
+ }
186
+
187
+ .mljr-drawer-nav-item {
188
+ display: flex;
189
+ align-items: center;
190
+ gap: var(--mljr-space-3);
191
+ padding: var(--mljr-space-3) var(--mljr-space-4);
192
+ color: var(--mljr-text);
193
+ text-decoration: none;
194
+ border-radius: var(--mljr-radius-md);
195
+ transition: all var(--mljr-transition-fast);
196
+ }
197
+
198
+ .mljr-drawer-nav-item:hover {
199
+ background: var(--mljr-bg-secondary);
200
+ box-shadow: var(--mljr-clay-shadow-xs);
201
+ }
202
+
203
+ .mljr-drawer-nav-item-active {
204
+ background: var(--mljr-primary-100);
205
+ color: var(--mljr-primary-700);
206
+ box-shadow: var(--mljr-clay-shadow-xs);
207
+ }
208
+
209
+ .mljr-drawer-nav-icon {
210
+ width: 1.5rem;
211
+ height: 1.5rem;
212
+ flex-shrink: 0;
213
+ }
214
+
215
+ .mljr-drawer-nav-text {
216
+ font-weight: 500;
217
+ }
218
+
219
+ .mljr-drawer-nav-divider {
220
+ height: 1px;
221
+ background: var(--mljr-border);
222
+ margin: var(--mljr-space-2) 0;
223
+ }
224
+
225
+ /* Dark Mode */
226
+ .dark .mljr-drawer,
227
+ [data-theme="dark"] .mljr-drawer {
228
+ background: var(--mljr-bg-secondary);
229
+ }
230
+
231
+ .dark .mljr-drawer-header,
232
+ .dark .mljr-drawer-footer,
233
+ [data-theme="dark"] .mljr-drawer-header,
234
+ [data-theme="dark"] .mljr-drawer-footer {
235
+ border-color: var(--mljr-border);
236
+ }
237
+
238
+ .dark .mljr-drawer-nav-item-active,
239
+ [data-theme="dark"] .mljr-drawer-nav-item-active {
240
+ background: rgba(249, 115, 22, 0.2);
241
+ color: var(--mljr-primary-300);
242
+ }
@@ -0,0 +1,246 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Dropdown Component
3
+ Claymorphism: Soft rounded dropdowns
4
+ ============================================ */
5
+
6
+ .mljr-dropdown {
7
+ position: relative;
8
+ display: inline-block;
9
+ }
10
+
11
+ .mljr-dropdown-trigger {
12
+ cursor: pointer;
13
+ background: none;
14
+ border: none;
15
+ padding: 0;
16
+ font: inherit;
17
+ color: inherit;
18
+ display: inline-flex;
19
+ align-items: center;
20
+ outline: none;
21
+ }
22
+
23
+ .mljr-dropdown-trigger:focus-visible {
24
+ border-radius: var(--mljr-radius-sm);
25
+ outline: 2px solid var(--mljr-primary-500);
26
+ outline-offset: 2px;
27
+ }
28
+
29
+ .mljr-dropdown-menu {
30
+ position: absolute;
31
+ top: 100%;
32
+ left: 0;
33
+ z-index: var(--mljr-z-dropdown);
34
+ min-width: 12rem;
35
+ margin-top: var(--mljr-space-2);
36
+ padding: var(--mljr-space-2);
37
+ background: var(--mljr-frosted-bg-strong);
38
+ backdrop-filter: blur(12px);
39
+ -webkit-backdrop-filter: blur(12px);
40
+ font-family: var(--mljr-font-sans);
41
+ font-size: var(--mljr-text-sm);
42
+ border-radius: var(--mljr-radius-lg);
43
+ box-shadow: var(--mljr-clay-shadow-lg);
44
+ border: 1px solid var(--mljr-frosted-border);
45
+ animation: mljr-dropdown-in 0.15s ease-out;
46
+ }
47
+
48
+ @keyframes mljr-dropdown-in {
49
+ from {
50
+ opacity: 0;
51
+ transform: translateY(-8px) scale(0.95);
52
+ }
53
+ to {
54
+ opacity: 1;
55
+ transform: translateY(0) scale(1);
56
+ }
57
+ }
58
+
59
+ /* Dropdown position variants */
60
+ .mljr-dropdown-bottom-left .mljr-dropdown-menu {
61
+ top: 100%;
62
+ left: 0;
63
+ right: auto;
64
+ }
65
+
66
+ .mljr-dropdown-bottom-right .mljr-dropdown-menu {
67
+ top: 100%;
68
+ left: auto;
69
+ right: 0;
70
+ }
71
+
72
+ .mljr-dropdown-top-left .mljr-dropdown-menu {
73
+ top: auto;
74
+ bottom: 100%;
75
+ left: 0;
76
+ right: auto;
77
+ margin-top: 0;
78
+ margin-bottom: var(--mljr-space-2);
79
+ }
80
+
81
+ .mljr-dropdown-top-right .mljr-dropdown-menu {
82
+ top: auto;
83
+ bottom: 100%;
84
+ left: auto;
85
+ right: 0;
86
+ margin-top: 0;
87
+ margin-bottom: var(--mljr-space-2);
88
+ }
89
+
90
+ /* Legacy alignment classes */
91
+ .mljr-dropdown-right .mljr-dropdown-menu {
92
+ left: auto;
93
+ right: 0;
94
+ }
95
+
96
+ .mljr-dropdown-up .mljr-dropdown-menu {
97
+ top: auto;
98
+ bottom: 100%;
99
+ margin-top: 0;
100
+ margin-bottom: var(--mljr-space-2);
101
+ }
102
+
103
+ /* Dropdown items */
104
+ .mljr-dropdown-item {
105
+ display: flex;
106
+ align-items: center;
107
+ gap: var(--mljr-space-2);
108
+ width: 100%;
109
+ padding: var(--mljr-space-2) var(--mljr-space-3);
110
+ color: var(--mljr-text);
111
+ background: none;
112
+ border: none;
113
+ border-radius: var(--mljr-radius-md);
114
+ text-align: left;
115
+ cursor: pointer;
116
+ transition: all var(--mljr-transition-fast);
117
+ text-decoration: none;
118
+ }
119
+
120
+ .mljr-dropdown-item:hover {
121
+ background: var(--mljr-bg-secondary);
122
+ color: var(--mljr-primary-600);
123
+ }
124
+
125
+ .mljr-dropdown-item:focus-visible {
126
+ outline: none;
127
+ background: var(--mljr-bg-secondary);
128
+ color: var(--mljr-primary-600);
129
+ }
130
+
131
+ .mljr-dropdown-item svg,
132
+ .mljr-dropdown-item-icon {
133
+ width: 1rem;
134
+ height: 1rem;
135
+ opacity: 0.7;
136
+ }
137
+
138
+ /* Active/Selected item */
139
+ .mljr-dropdown-item-active,
140
+ .mljr-dropdown-item[aria-selected="true"] {
141
+ color: var(--mljr-primary-600);
142
+ background: var(--mljr-primary-50);
143
+ }
144
+
145
+ /* Disabled item */
146
+ .mljr-dropdown-item:disabled,
147
+ .mljr-dropdown-item-disabled {
148
+ opacity: 0.4;
149
+ cursor: not-allowed;
150
+ pointer-events: none;
151
+ }
152
+
153
+ /* Danger item */
154
+ .mljr-dropdown-item-danger {
155
+ color: var(--mljr-error);
156
+ }
157
+
158
+ .mljr-dropdown-item-danger:hover {
159
+ background: rgba(239, 68, 68, 0.1);
160
+ color: var(--mljr-error);
161
+ }
162
+
163
+ /* Divider */
164
+ .mljr-dropdown-divider {
165
+ height: 1px;
166
+ margin: var(--mljr-space-2) 0;
167
+ background: var(--mljr-border);
168
+ }
169
+
170
+ /* Header/Label */
171
+ .mljr-dropdown-header {
172
+ padding: var(--mljr-space-2) var(--mljr-space-3);
173
+ font-size: var(--mljr-text-xs);
174
+ font-weight: 600;
175
+ text-transform: uppercase;
176
+ letter-spacing: 0.05em;
177
+ color: var(--mljr-text-muted);
178
+ }
179
+
180
+ /* Nested submenus */
181
+ .mljr-dropdown-submenu {
182
+ position: relative;
183
+ }
184
+
185
+ .mljr-dropdown-submenu .mljr-dropdown-menu {
186
+ position: absolute;
187
+ top: 0;
188
+ left: 100%;
189
+ margin-top: 0;
190
+ margin-left: var(--mljr-space-1);
191
+ }
192
+
193
+ .mljr-dropdown-submenu:hover > .mljr-dropdown-menu {
194
+ visibility: visible;
195
+ opacity: 1;
196
+ transform: translateY(0);
197
+ }
198
+
199
+ /* Submenu indicator */
200
+ .mljr-dropdown-submenu > .mljr-dropdown-item::after {
201
+ content: '';
202
+ margin-left: auto;
203
+ width: 0;
204
+ height: 0;
205
+ border-top: 4px solid transparent;
206
+ border-bottom: 4px solid transparent;
207
+ border-left: 4px solid currentColor;
208
+ }
209
+
210
+ /* Size variants */
211
+ .mljr-dropdown-sm .mljr-dropdown-menu {
212
+ min-width: 8rem;
213
+ font-size: var(--mljr-text-xs);
214
+ padding: var(--mljr-space-1);
215
+ }
216
+
217
+ .mljr-dropdown-sm .mljr-dropdown-item {
218
+ padding: var(--mljr-space-1) var(--mljr-space-2);
219
+ }
220
+
221
+ .mljr-dropdown-lg .mljr-dropdown-menu {
222
+ min-width: 16rem;
223
+ }
224
+
225
+ .mljr-dropdown-lg .mljr-dropdown-item {
226
+ padding: var(--mljr-space-3) var(--mljr-space-4);
227
+ }
228
+
229
+ /* Dark mode */
230
+ .dark .mljr-dropdown-menu,
231
+ [data-theme="dark"] .mljr-dropdown-menu {
232
+ background: var(--mljr-bg-secondary);
233
+ border-color: var(--mljr-border);
234
+ box-shadow: var(--mljr-clay-shadow-lg);
235
+ }
236
+
237
+ .dark .mljr-dropdown-item:hover,
238
+ [data-theme="dark"] .mljr-dropdown-item:hover {
239
+ background: var(--mljr-bg-tertiary);
240
+ }
241
+
242
+ .dark .mljr-dropdown-item-active,
243
+ [data-theme="dark"] .mljr-dropdown-item-active {
244
+ background: rgba(249, 115, 22, 0.15);
245
+ color: var(--mljr-primary-400);
246
+ }