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,164 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Textarea Component
3
+ Claymorphism: Soft pressed-in textarea
4
+ ============================================ */
5
+
6
+ .mljr-textarea-wrapper {
7
+ position: relative;
8
+ display: block;
9
+ width: 100%;
10
+ }
11
+
12
+ .mljr-textarea {
13
+ display: block;
14
+ width: 100%;
15
+ min-height: 100px;
16
+ padding: var(--mljr-space-3) var(--mljr-space-4);
17
+ font-size: var(--mljr-text-sm);
18
+ line-height: var(--mljr-leading-normal);
19
+ color: var(--mljr-text);
20
+ background-color: var(--mljr-bg);
21
+ border: none;
22
+ border-radius: var(--mljr-radius-md);
23
+ box-shadow: var(--mljr-clay-inset);
24
+ transition: box-shadow var(--mljr-transition-fast), background-color var(--mljr-transition-fast);
25
+ resize: vertical;
26
+ font-family: inherit;
27
+ }
28
+
29
+ .mljr-textarea::placeholder {
30
+ color: var(--mljr-text-muted);
31
+ }
32
+
33
+ .mljr-textarea:hover {
34
+ background-color: var(--mljr-bg-secondary);
35
+ }
36
+
37
+ .mljr-textarea:focus {
38
+ outline: none;
39
+ background-color: var(--mljr-bg);
40
+ box-shadow:
41
+ var(--mljr-clay-inset-sm),
42
+ 0 0 0 3px var(--mljr-primary-200);
43
+ }
44
+
45
+ .mljr-textarea:disabled {
46
+ background-color: var(--mljr-bg-tertiary);
47
+ opacity: 0.6;
48
+ cursor: not-allowed;
49
+ resize: none;
50
+ }
51
+
52
+ .mljr-textarea:read-only {
53
+ background-color: var(--mljr-bg-secondary);
54
+ }
55
+
56
+ /* Sizes */
57
+ .mljr-textarea-sm {
58
+ padding: var(--mljr-space-2) var(--mljr-space-3);
59
+ font-size: var(--mljr-text-xs);
60
+ min-height: 80px;
61
+ border-radius: var(--mljr-radius-sm);
62
+ }
63
+
64
+ .mljr-textarea-lg {
65
+ padding: var(--mljr-space-4) var(--mljr-space-5);
66
+ font-size: var(--mljr-text-base);
67
+ min-height: 150px;
68
+ border-radius: var(--mljr-radius-lg);
69
+ }
70
+
71
+ /* States */
72
+ .mljr-textarea-error {
73
+ box-shadow:
74
+ var(--mljr-clay-inset),
75
+ inset 0 0 0 2px var(--mljr-error-light);
76
+ }
77
+
78
+ .mljr-textarea-error:focus {
79
+ box-shadow:
80
+ var(--mljr-clay-inset-sm),
81
+ 0 0 0 3px rgba(239, 68, 68, 0.2);
82
+ }
83
+
84
+ .mljr-textarea-success {
85
+ box-shadow:
86
+ var(--mljr-clay-inset),
87
+ inset 0 0 0 2px var(--mljr-success-light);
88
+ }
89
+
90
+ .mljr-textarea-success:focus {
91
+ box-shadow:
92
+ var(--mljr-clay-inset-sm),
93
+ 0 0 0 3px rgba(16, 185, 129, 0.2);
94
+ }
95
+
96
+ /* With Label */
97
+ .mljr-textarea-label {
98
+ display: block;
99
+ margin-bottom: var(--mljr-space-2);
100
+ font-size: var(--mljr-text-sm);
101
+ font-weight: 500;
102
+ color: var(--mljr-text);
103
+ }
104
+
105
+ .mljr-textarea-label-required::after {
106
+ content: " *";
107
+ color: var(--mljr-error);
108
+ }
109
+
110
+ /* Helper/Error Text */
111
+ .mljr-textarea-helper {
112
+ margin-top: var(--mljr-space-1);
113
+ font-size: var(--mljr-text-xs);
114
+ color: var(--mljr-text-muted);
115
+ }
116
+
117
+ .mljr-textarea-error-text {
118
+ margin-top: var(--mljr-space-1);
119
+ font-size: var(--mljr-text-xs);
120
+ color: var(--mljr-error);
121
+ }
122
+
123
+ /* Character Count */
124
+ .mljr-textarea-footer {
125
+ display: flex;
126
+ justify-content: space-between;
127
+ align-items: center;
128
+ margin-top: var(--mljr-space-1);
129
+ }
130
+
131
+ .mljr-textarea-count {
132
+ font-size: var(--mljr-text-xs);
133
+ color: var(--mljr-text-muted);
134
+ }
135
+
136
+ .mljr-textarea-count-warning {
137
+ color: var(--mljr-warning);
138
+ }
139
+
140
+ .mljr-textarea-count-error {
141
+ color: var(--mljr-error);
142
+ }
143
+
144
+ /* Auto-resize */
145
+ .mljr-textarea-auto-resize {
146
+ resize: none;
147
+ overflow: hidden;
148
+ min-height: 100px;
149
+ max-height: 400px;
150
+ }
151
+
152
+ /* Dark Mode */
153
+ .dark .mljr-textarea,
154
+ [data-theme="dark"] .mljr-textarea {
155
+ background-color: var(--mljr-bg-secondary);
156
+ box-shadow: var(--mljr-clay-inset);
157
+ }
158
+
159
+ .dark .mljr-textarea:focus,
160
+ [data-theme="dark"] .mljr-textarea:focus {
161
+ box-shadow:
162
+ var(--mljr-clay-inset-sm),
163
+ 0 0 0 3px rgba(249, 115, 22, 0.2);
164
+ }
@@ -0,0 +1,294 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Toast/Notification Component
3
+ Claymorphism: Soft rounded toasts
4
+ ============================================ */
5
+
6
+ /* Toast container - positions toasts */
7
+ .mljr-toast-container {
8
+ position: fixed;
9
+ z-index: var(--mljr-z-toast);
10
+ display: flex;
11
+ flex-direction: column;
12
+ gap: var(--mljr-space-3);
13
+ padding: var(--mljr-space-4);
14
+ pointer-events: none;
15
+ max-height: 100vh;
16
+ overflow: hidden;
17
+ }
18
+
19
+ /* Position variants */
20
+ .mljr-toast-container-top-right {
21
+ top: 0;
22
+ right: 0;
23
+ align-items: flex-end;
24
+ }
25
+
26
+ .mljr-toast-container-top-left {
27
+ top: 0;
28
+ left: 0;
29
+ align-items: flex-start;
30
+ }
31
+
32
+ .mljr-toast-container-top-center {
33
+ top: 0;
34
+ left: 50%;
35
+ transform: translateX(-50%);
36
+ align-items: center;
37
+ }
38
+
39
+ .mljr-toast-container-bottom-right {
40
+ bottom: 0;
41
+ right: 0;
42
+ align-items: flex-end;
43
+ flex-direction: column-reverse;
44
+ }
45
+
46
+ .mljr-toast-container-bottom-left {
47
+ bottom: 0;
48
+ left: 0;
49
+ align-items: flex-start;
50
+ flex-direction: column-reverse;
51
+ }
52
+
53
+ .mljr-toast-container-bottom-center {
54
+ bottom: 0;
55
+ left: 50%;
56
+ transform: translateX(-50%);
57
+ align-items: center;
58
+ flex-direction: column-reverse;
59
+ }
60
+
61
+ /* Toast item */
62
+ .mljr-toast {
63
+ position: relative;
64
+ display: flex;
65
+ align-items: flex-start;
66
+ gap: var(--mljr-space-3);
67
+ min-width: 18rem;
68
+ max-width: 24rem;
69
+ padding: var(--mljr-space-4);
70
+ background: var(--mljr-bg);
71
+ font-family: var(--mljr-font-sans);
72
+ font-size: var(--mljr-text-sm);
73
+ pointer-events: auto;
74
+ border-radius: var(--mljr-radius-lg);
75
+ box-shadow: var(--mljr-clay-shadow-lg);
76
+ border: 1px solid var(--mljr-border);
77
+ overflow: hidden;
78
+ animation: mljr-toast-in 0.3s ease-out;
79
+ }
80
+
81
+ @keyframes mljr-toast-in {
82
+ from {
83
+ opacity: 0;
84
+ transform: translateX(100%);
85
+ }
86
+ to {
87
+ opacity: 1;
88
+ transform: translateX(0);
89
+ }
90
+ }
91
+
92
+ /* Left-side toasts animate from left */
93
+ .mljr-toast-container-top-left .mljr-toast,
94
+ .mljr-toast-container-bottom-left .mljr-toast {
95
+ animation-name: mljr-toast-in-left;
96
+ }
97
+
98
+ @keyframes mljr-toast-in-left {
99
+ from {
100
+ opacity: 0;
101
+ transform: translateX(-100%);
102
+ }
103
+ to {
104
+ opacity: 1;
105
+ transform: translateX(0);
106
+ }
107
+ }
108
+
109
+ /* Center toasts animate from top/bottom */
110
+ .mljr-toast-container-top-center .mljr-toast {
111
+ animation-name: mljr-toast-in-top;
112
+ }
113
+
114
+ @keyframes mljr-toast-in-top {
115
+ from {
116
+ opacity: 0;
117
+ transform: translateY(-100%);
118
+ }
119
+ to {
120
+ opacity: 1;
121
+ transform: translateY(0);
122
+ }
123
+ }
124
+
125
+ .mljr-toast-container-bottom-center .mljr-toast {
126
+ animation-name: mljr-toast-in-bottom;
127
+ }
128
+
129
+ @keyframes mljr-toast-in-bottom {
130
+ from {
131
+ opacity: 0;
132
+ transform: translateY(100%);
133
+ }
134
+ to {
135
+ opacity: 1;
136
+ transform: translateY(0);
137
+ }
138
+ }
139
+
140
+ /* Exit animation class */
141
+ .mljr-toast-exit {
142
+ animation: mljr-toast-out 0.2s ease-in forwards;
143
+ }
144
+
145
+ @keyframes mljr-toast-out {
146
+ to {
147
+ opacity: 0;
148
+ transform: translateX(100%) scale(0.95);
149
+ }
150
+ }
151
+
152
+ .mljr-toast-icon {
153
+ flex-shrink: 0;
154
+ width: 1.25rem;
155
+ height: 1.25rem;
156
+ margin-top: 0.125rem;
157
+ }
158
+
159
+ .mljr-toast-content {
160
+ flex: 1;
161
+ min-width: 0;
162
+ }
163
+
164
+ .mljr-toast-title {
165
+ font-weight: 600;
166
+ color: var(--mljr-text);
167
+ margin-bottom: var(--mljr-space-1);
168
+ }
169
+
170
+ .mljr-toast-message {
171
+ color: var(--mljr-text-secondary);
172
+ }
173
+
174
+ .mljr-toast-close {
175
+ flex-shrink: 0;
176
+ width: 1.5rem;
177
+ height: 1.5rem;
178
+ padding: 0;
179
+ display: flex;
180
+ align-items: center;
181
+ justify-content: center;
182
+ background: var(--mljr-bg-secondary);
183
+ border: none;
184
+ border-radius: var(--mljr-radius-full);
185
+ color: var(--mljr-text-muted);
186
+ cursor: pointer;
187
+ opacity: 0.7;
188
+ transition: all var(--mljr-transition-fast);
189
+ }
190
+
191
+ .mljr-toast-close:hover {
192
+ opacity: 1;
193
+ background: var(--mljr-bg-tertiary);
194
+ }
195
+
196
+ /* Progress bar for auto-dismiss */
197
+ .mljr-toast-progress {
198
+ position: absolute;
199
+ bottom: 0;
200
+ left: 0;
201
+ height: 3px;
202
+ background: var(--mljr-gradient-primary);
203
+ border-radius: 0 0 var(--mljr-radius-lg) var(--mljr-radius-lg);
204
+ animation: mljr-toast-progress linear forwards;
205
+ }
206
+
207
+ @keyframes mljr-toast-progress {
208
+ from {
209
+ width: 100%;
210
+ }
211
+ to {
212
+ width: 0%;
213
+ }
214
+ }
215
+
216
+ /* Type variants - left border accent */
217
+ .mljr-toast-info {
218
+ border-left: 4px solid var(--mljr-info);
219
+ }
220
+
221
+ .mljr-toast-info .mljr-toast-icon {
222
+ color: var(--mljr-info);
223
+ }
224
+
225
+ .mljr-toast-info .mljr-toast-progress {
226
+ background: var(--mljr-info);
227
+ }
228
+
229
+ .mljr-toast-success {
230
+ border-left: 4px solid var(--mljr-success);
231
+ }
232
+
233
+ .mljr-toast-success .mljr-toast-icon {
234
+ color: var(--mljr-success);
235
+ }
236
+
237
+ .mljr-toast-success .mljr-toast-progress {
238
+ background: var(--mljr-success);
239
+ }
240
+
241
+ .mljr-toast-warning {
242
+ border-left: 4px solid var(--mljr-warning);
243
+ }
244
+
245
+ .mljr-toast-warning .mljr-toast-icon {
246
+ color: var(--mljr-warning);
247
+ }
248
+
249
+ .mljr-toast-warning .mljr-toast-progress {
250
+ background: var(--mljr-warning);
251
+ }
252
+
253
+ .mljr-toast-error {
254
+ border-left: 4px solid var(--mljr-error);
255
+ }
256
+
257
+ .mljr-toast-error .mljr-toast-icon {
258
+ color: var(--mljr-error);
259
+ }
260
+
261
+ .mljr-toast-error .mljr-toast-progress {
262
+ background: var(--mljr-error);
263
+ }
264
+
265
+ /* Actions in toast */
266
+ .mljr-toast-actions {
267
+ display: flex;
268
+ gap: var(--mljr-space-2);
269
+ margin-top: var(--mljr-space-2);
270
+ }
271
+
272
+ .mljr-toast-action {
273
+ padding: var(--mljr-space-1) var(--mljr-space-2);
274
+ font-size: var(--mljr-text-xs);
275
+ font-weight: 500;
276
+ color: var(--mljr-primary-600);
277
+ background: none;
278
+ border: none;
279
+ cursor: pointer;
280
+ transition: color var(--mljr-transition-fast);
281
+ }
282
+
283
+ .mljr-toast-action:hover {
284
+ color: var(--mljr-primary-500);
285
+ text-decoration: underline;
286
+ }
287
+
288
+ /* Dark mode */
289
+ .dark .mljr-toast,
290
+ [data-theme="dark"] .mljr-toast {
291
+ background: var(--mljr-bg-secondary);
292
+ border-color: var(--mljr-border);
293
+ box-shadow: var(--mljr-clay-shadow-lg);
294
+ }
@@ -0,0 +1,99 @@
1
+ /* ============================================
2
+ MLJR CSS Framework - Tooltip Component
3
+ Claymorphism: Soft rounded tooltips
4
+ ============================================ */
5
+
6
+ .mljr-tooltip {
7
+ position: relative;
8
+ display: inline-block;
9
+ }
10
+
11
+ .mljr-tooltip-content {
12
+ position: absolute;
13
+ z-index: var(--mljr-z-tooltip);
14
+ padding: var(--mljr-space-2) var(--mljr-space-3);
15
+ font-family: var(--mljr-font-sans);
16
+ font-size: var(--mljr-text-sm);
17
+ line-height: var(--mljr-leading-tight);
18
+ color: var(--mljr-text);
19
+ white-space: nowrap;
20
+ opacity: 0;
21
+ visibility: hidden;
22
+ transition: opacity var(--mljr-transition-fast), visibility var(--mljr-transition-fast);
23
+ pointer-events: none;
24
+ border-radius: var(--mljr-radius-md);
25
+ background-color: var(--mljr-bg);
26
+ box-shadow: var(--mljr-clay-shadow);
27
+ border: 1px solid var(--mljr-border);
28
+ }
29
+
30
+ /* Positions */
31
+ .mljr-tooltip-top .mljr-tooltip-content {
32
+ bottom: calc(100% + 10px);
33
+ left: 50%;
34
+ transform: translateX(-50%);
35
+ }
36
+
37
+ .mljr-tooltip-bottom .mljr-tooltip-content {
38
+ top: calc(100% + 10px);
39
+ left: 50%;
40
+ transform: translateX(-50%);
41
+ }
42
+
43
+ .mljr-tooltip-left .mljr-tooltip-content {
44
+ right: calc(100% + 10px);
45
+ top: 50%;
46
+ transform: translateY(-50%);
47
+ }
48
+
49
+ .mljr-tooltip-right .mljr-tooltip-content {
50
+ left: calc(100% + 10px);
51
+ top: 50%;
52
+ transform: translateY(-50%);
53
+ }
54
+
55
+ /* Show on hover/focus */
56
+ .mljr-tooltip:hover .mljr-tooltip-content,
57
+ .mljr-tooltip:focus-within .mljr-tooltip-content,
58
+ .mljr-tooltip-visible .mljr-tooltip-content {
59
+ opacity: 1;
60
+ visibility: visible;
61
+ }
62
+
63
+ /* Size variants */
64
+ .mljr-tooltip-sm .mljr-tooltip-content {
65
+ padding: var(--mljr-space-1) var(--mljr-space-2);
66
+ font-size: var(--mljr-text-xs);
67
+ }
68
+
69
+ .mljr-tooltip-lg .mljr-tooltip-content {
70
+ padding: var(--mljr-space-3) var(--mljr-space-4);
71
+ font-size: var(--mljr-text-base);
72
+ }
73
+
74
+ /* Color variants */
75
+ .mljr-tooltip-primary .mljr-tooltip-content {
76
+ background: var(--mljr-gradient-primary);
77
+ color: white;
78
+ border: none;
79
+ box-shadow:
80
+ var(--mljr-clay-shadow),
81
+ 0 0 12px rgba(249, 115, 22, 0.2);
82
+ }
83
+
84
+ .mljr-tooltip-secondary .mljr-tooltip-content {
85
+ background: var(--mljr-gradient-secondary);
86
+ color: white;
87
+ border: none;
88
+ box-shadow:
89
+ var(--mljr-clay-shadow),
90
+ 0 0 12px rgba(20, 184, 166, 0.2);
91
+ }
92
+
93
+ /* Dark mode */
94
+ .dark .mljr-tooltip-content,
95
+ [data-theme="dark"] .mljr-tooltip-content {
96
+ background-color: var(--mljr-bg-secondary);
97
+ border-color: var(--mljr-border);
98
+ color: var(--mljr-text);
99
+ }
package/src/index.css ADDED
@@ -0,0 +1,54 @@
1
+ /* ============================================
2
+ MLJR CSS Framework
3
+ A TailwindCSS-based CSS framework with
4
+ orange/purple color scheme
5
+ ============================================ */
6
+
7
+ /* All imports must come first before @tailwind directives */
8
+ @import "./themes/variables.css";
9
+ @import "./base/reset.css";
10
+ @import "./base/typography.css";
11
+ @import "./layout/container.css";
12
+ @import "./layout/header.css";
13
+ @import "./layout/footer.css";
14
+ @import "./layout/navigation.css";
15
+ @import "./layout/sidebar.css";
16
+ @import "./layout/navbar.css";
17
+ @import "./components/footer.css";
18
+ @import "./components/button.css";
19
+ @import "./components/input.css";
20
+ @import "./components/select.css";
21
+ @import "./components/checkbox.css";
22
+ @import "./components/alert.css";
23
+ @import "./components/badge.css";
24
+ @import "./components/card.css";
25
+ @import "./components/modal.css";
26
+ @import "./components/tabs.css";
27
+ @import "./components/accordion.css";
28
+ @import "./components/carousel.css";
29
+ @import "./components/tooltip.css";
30
+ @import "./components/progress.css";
31
+ @import "./components/skeleton.css";
32
+ @import "./components/avatar.css";
33
+ @import "./components/divider.css";
34
+ @import "./components/spinner.css";
35
+ @import "./components/toast.css";
36
+ @import "./components/popover.css";
37
+ @import "./components/dropdown.css";
38
+ @import "./components/pagination.css";
39
+ @import "./components/breadcrumb.css";
40
+ @import "./components/table.css";
41
+ @import "./components/password.css";
42
+ @import "./components/chip.css";
43
+ @import "./components/radio.css";
44
+ @import "./components/textarea.css";
45
+ @import "./components/file-upload.css";
46
+ @import "./components/stepper.css";
47
+ @import "./components/drawer.css";
48
+ @import "./components/empty-state.css";
49
+ @import "./utilities/utilities.css";
50
+
51
+ /* Tailwind Base */
52
+ @tailwind base;
53
+ @tailwind components;
54
+ @tailwind utilities;