@ladder-ui/core 0.2.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.
@@ -0,0 +1,3 @@
1
+ export type SupportedClasses = Record<string, boolean | undefined> | Array<string | boolean | null | undefined> | string | boolean | undefined | null;
2
+ declare function concatClassNames(...classes: Array<SupportedClasses>): string;
3
+ export default concatClassNames;
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ function concatClassNames(...classes) {
6
+ if (classes.length > 0) {
7
+ const tempClasses = [];
8
+ classes.forEach((item) => {
9
+ const classesResult = applyClasses(item);
10
+ if (classesResult) {
11
+ tempClasses.push(classesResult);
12
+ }
13
+ });
14
+ return tempClasses.join(" ").trim();
15
+ }
16
+ return "";
17
+ }
18
+ function applyClasses(classes) {
19
+ if (!classes) {
20
+ return "";
21
+ }
22
+ if (Array.isArray(classes)) {
23
+ return classes
24
+ .filter((item) => !!item)
25
+ .join(" ")
26
+ .trim();
27
+ }
28
+ if (typeof classes === "object") {
29
+ const listClasses = Object.entries(classes);
30
+ return listClasses
31
+ .filter((item) => !!item[1])
32
+ .map((item) => item[0])
33
+ .join(" ")
34
+ .trim();
35
+ }
36
+ if (typeof classes === "boolean") {
37
+ return "";
38
+ }
39
+ return classes;
40
+ }
41
+
42
+ exports.default = concatClassNames;
@@ -0,0 +1,38 @@
1
+ function concatClassNames(...classes) {
2
+ if (classes.length > 0) {
3
+ const tempClasses = [];
4
+ classes.forEach((item) => {
5
+ const classesResult = applyClasses(item);
6
+ if (classesResult) {
7
+ tempClasses.push(classesResult);
8
+ }
9
+ });
10
+ return tempClasses.join(" ").trim();
11
+ }
12
+ return "";
13
+ }
14
+ function applyClasses(classes) {
15
+ if (!classes) {
16
+ return "";
17
+ }
18
+ if (Array.isArray(classes)) {
19
+ return classes
20
+ .filter((item) => !!item)
21
+ .join(" ")
22
+ .trim();
23
+ }
24
+ if (typeof classes === "object") {
25
+ const listClasses = Object.entries(classes);
26
+ return listClasses
27
+ .filter((item) => !!item[1])
28
+ .map((item) => item[0])
29
+ .join(" ")
30
+ .trim();
31
+ }
32
+ if (typeof classes === "boolean") {
33
+ return "";
34
+ }
35
+ return classes;
36
+ }
37
+
38
+ export { concatClassNames as default };
@@ -0,0 +1,218 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
3
+ @layer base {
4
+ :root {
5
+ --lui-font-family: system-ui, sans-serif, -apple-system;
6
+ --lui-font-weight: 400;
7
+ --lui-border-width: 1px;
8
+ --lui-transition: all 0.2s ease-in-out;
9
+ /* Size scale — xs / sm / md (default) / lg / xl */
10
+ --lui-font-size-xs: 0.75rem; /* 12px — extra small */
11
+ --lui-font-size-sm: 0.8125rem; /* 13px — small */
12
+ --lui-font-size-md: 0.875rem; /* 14px — default */
13
+ --lui-font-size-lg: 0.9375rem; /* 15px — large */
14
+ --lui-font-size-xl: 1rem; /* 16px — extra large */
15
+ --lui-padding-size-xs: 0.25rem 0.625rem;
16
+ --lui-padding-size-sm: 0.375rem 0.75rem;
17
+ --lui-padding-size-md: 0.5rem 1rem;
18
+ --lui-padding-size-lg: 0.625rem 1.25rem;
19
+ --lui-padding-size-xl: 0.75rem 1.5rem;
20
+ --lui-disabled-opacity: 0.5;
21
+ --lui-disabled-cursor: not-allowed;
22
+ }
23
+ body {
24
+ font-family: var(--lui-font-family);
25
+ }
26
+ }
27
+ @layer themes {
28
+ /* Default theme (Neutral) — light + shape + font tokens */
29
+ :root {
30
+ --lui-font-family: "Inter", system-ui, sans-serif;
31
+ /* Action */
32
+ --lui-primary: #18181b;
33
+ --lui-primary-text: #fafafa;
34
+ --lui-primary-hover: #27272a;
35
+ --lui-secondary: #f4f4f5;
36
+ --lui-secondary-text: #18181b;
37
+ --lui-secondary-hover: #e4e4e7;
38
+ --lui-accent: #52525b;
39
+ --lui-accent-text: #fafafa;
40
+ --lui-accent-hover: #3f3f46;
41
+ --lui-neutral: #f4f4f5;
42
+ --lui-neutral-text: #18181b;
43
+ --lui-neutral-hover: #e4e4e7;
44
+ /* Surface */
45
+ --lui-surface: #ffffff;
46
+ --lui-surface-raised: #fafafa;
47
+ --lui-surface-border: #e4e4e7;
48
+ --lui-surface-text: #09090b;
49
+ /* State */
50
+ --lui-info: #2563eb;
51
+ --lui-info-text: #ffffff;
52
+ --lui-success: #22c55e;
53
+ --lui-success-text: #052e16;
54
+ --lui-warning: #f59e0b;
55
+ --lui-warning-text: #1c1917;
56
+ --lui-error: #dc2626;
57
+ --lui-error-text: #ffffff;
58
+ /* Shape */
59
+ --lui-radius-sm: 0.375rem;
60
+ --lui-radius-md: 0.375rem;
61
+ --lui-radius-lg: 0.75rem;
62
+ /* Soft tokens — action */
63
+ --lui-primary-soft: #f4f4f5;
64
+ --lui-primary-soft-text: #18181b;
65
+ --lui-secondary-soft: #f4f4f5;
66
+ --lui-secondary-soft-text: #52525b;
67
+ --lui-accent-soft: #e4e4e7;
68
+ --lui-accent-soft-text: #3f3f46;
69
+ --lui-neutral-soft: #f4f4f5;
70
+ --lui-neutral-soft-text: #52525b;
71
+ /* Soft tokens — state */
72
+ --lui-info-soft: #eff6ff;
73
+ --lui-info-soft-text: #1d4ed8;
74
+ --lui-success-soft: #f0fdf4;
75
+ --lui-success-soft-text: #15803d;
76
+ --lui-warning-soft: #fffbeb;
77
+ --lui-warning-soft-text: #b45309;
78
+ --lui-error-soft: #fef2f2;
79
+ --lui-error-soft-text: #dc2626;
80
+ }
81
+ /* Default theme — OS dark */
82
+ @media (prefers-color-scheme: dark) {
83
+ :root {
84
+ --lui-primary: #fafafa;
85
+ --lui-primary-text: #18181b;
86
+ --lui-primary-hover: #e4e4e7;
87
+ --lui-secondary: #27272a;
88
+ --lui-secondary-text: #fafafa;
89
+ --lui-secondary-hover: #3f3f46;
90
+ --lui-accent: #a1a1aa;
91
+ --lui-accent-text: #09090b;
92
+ --lui-accent-hover: #d4d4d8;
93
+ --lui-neutral: #27272a;
94
+ --lui-neutral-text: #fafafa;
95
+ --lui-neutral-hover: #3f3f46;
96
+ --lui-surface: #09090b;
97
+ --lui-surface-raised: #18181b;
98
+ --lui-surface-border: #27272a;
99
+ --lui-surface-text: #fafafa;
100
+ --lui-info: #60a5fa;
101
+ --lui-info-text: #172554;
102
+ --lui-success: #4ade80;
103
+ --lui-success-text: #14532d;
104
+ --lui-warning: #fbbf24;
105
+ --lui-warning-text: #1c1917;
106
+ --lui-error: #f87171;
107
+ --lui-error-text: #450a0a;
108
+ /* Soft tokens — action */
109
+ --lui-primary-soft: #27272a;
110
+ --lui-primary-soft-text: #d4d4d8;
111
+ --lui-secondary-soft: #27272a;
112
+ --lui-secondary-soft-text: #a1a1aa;
113
+ --lui-accent-soft: #3f3f46;
114
+ --lui-accent-soft-text: #d4d4d8;
115
+ --lui-neutral-soft: #27272a;
116
+ --lui-neutral-soft-text: #a1a1aa;
117
+ /* Soft tokens — state */
118
+ --lui-info-soft: #172554;
119
+ --lui-info-soft-text: #93c5fd;
120
+ --lui-success-soft: #052e16;
121
+ --lui-success-soft-text: #86efac;
122
+ --lui-warning-soft: #1c0900;
123
+ --lui-warning-soft-text: #fde68a;
124
+ --lui-error-soft: #450a0a;
125
+ --lui-error-soft-text: #fca5a5;
126
+ }
127
+ }
128
+ /* Default theme — force dark (overrides OS preference) */
129
+ [data-mode=dark] {
130
+ --lui-primary: #fafafa;
131
+ --lui-primary-text: #18181b;
132
+ --lui-primary-hover: #e4e4e7;
133
+ --lui-secondary: #27272a;
134
+ --lui-secondary-text: #fafafa;
135
+ --lui-secondary-hover: #3f3f46;
136
+ --lui-accent: #a1a1aa;
137
+ --lui-accent-text: #09090b;
138
+ --lui-accent-hover: #d4d4d8;
139
+ --lui-neutral: #27272a;
140
+ --lui-neutral-text: #fafafa;
141
+ --lui-neutral-hover: #3f3f46;
142
+ --lui-surface: #09090b;
143
+ --lui-surface-raised: #18181b;
144
+ --lui-surface-border: #27272a;
145
+ --lui-surface-text: #fafafa;
146
+ --lui-info: #60a5fa;
147
+ --lui-info-text: #172554;
148
+ --lui-success: #4ade80;
149
+ --lui-success-text: #14532d;
150
+ --lui-warning: #fbbf24;
151
+ --lui-warning-text: #1c1917;
152
+ --lui-error: #f87171;
153
+ --lui-error-text: #450a0a;
154
+ /* Soft tokens — action */
155
+ --lui-primary-soft: #27272a;
156
+ --lui-primary-soft-text: #d4d4d8;
157
+ --lui-secondary-soft: #27272a;
158
+ --lui-secondary-soft-text: #a1a1aa;
159
+ --lui-accent-soft: #3f3f46;
160
+ --lui-accent-soft-text: #d4d4d8;
161
+ --lui-neutral-soft: #27272a;
162
+ --lui-neutral-soft-text: #a1a1aa;
163
+ /* Soft tokens — state */
164
+ --lui-info-soft: #172554;
165
+ --lui-info-soft-text: #93c5fd;
166
+ --lui-success-soft: #052e16;
167
+ --lui-success-soft-text: #86efac;
168
+ --lui-warning-soft: #1c0900;
169
+ --lui-warning-soft-text: #fde68a;
170
+ --lui-error-soft: #450a0a;
171
+ --lui-error-soft-text: #fca5a5;
172
+ }
173
+ /* Default theme — force light (overrides OS dark preference) */
174
+ [data-mode=light] {
175
+ --lui-primary: #18181b;
176
+ --lui-primary-text: #fafafa;
177
+ --lui-primary-hover: #27272a;
178
+ --lui-secondary: #f4f4f5;
179
+ --lui-secondary-text: #18181b;
180
+ --lui-secondary-hover: #e4e4e7;
181
+ --lui-accent: #52525b;
182
+ --lui-accent-text: #fafafa;
183
+ --lui-accent-hover: #3f3f46;
184
+ --lui-neutral: #f4f4f5;
185
+ --lui-neutral-text: #18181b;
186
+ --lui-neutral-hover: #e4e4e7;
187
+ --lui-surface: #ffffff;
188
+ --lui-surface-raised: #fafafa;
189
+ --lui-surface-border: #e4e4e7;
190
+ --lui-surface-text: #09090b;
191
+ --lui-info: #2563eb;
192
+ --lui-info-text: #ffffff;
193
+ --lui-success: #22c55e;
194
+ --lui-success-text: #052e16;
195
+ --lui-warning: #f59e0b;
196
+ --lui-warning-text: #1c1917;
197
+ --lui-error: #dc2626;
198
+ --lui-error-text: #ffffff;
199
+ /* Soft tokens — action */
200
+ --lui-primary-soft: #f4f4f5;
201
+ --lui-primary-soft-text: #18181b;
202
+ --lui-secondary-soft: #f4f4f5;
203
+ --lui-secondary-soft-text: #52525b;
204
+ --lui-accent-soft: #e4e4e7;
205
+ --lui-accent-soft-text: #3f3f46;
206
+ --lui-neutral-soft: #f4f4f5;
207
+ --lui-neutral-soft-text: #52525b;
208
+ /* Soft tokens — state */
209
+ --lui-info-soft: #eff6ff;
210
+ --lui-info-soft-text: #1d4ed8;
211
+ --lui-success-soft: #f0fdf4;
212
+ --lui-success-soft-text: #15803d;
213
+ --lui-warning-soft: #fffbeb;
214
+ --lui-warning-soft-text: #b45309;
215
+ --lui-error-soft: #fef2f2;
216
+ --lui-error-soft-text: #dc2626;
217
+ }
218
+ }
@@ -0,0 +1,4 @@
1
+ /* Load all 5 bundled fonts without activating any specific one.
2
+ Import this when you want all fonts available; pair with @layer themes
3
+ or set --lui-font-family manually to choose which one is active. */
4
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Nunito:wght@400;500;600;700&family=Poppins:wght@400;500;600;700&family=Raleway:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap");
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap");
3
+ /* Standalone font helper — sets DM Sans as the active font.
4
+ Unlayered so it overrides theme fonts; user CSS loaded after this wins. */
5
+ :root {
6
+ --lui-font-family: "DM Sans", system-ui, sans-serif;
7
+ }
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
3
+ /* Standalone font helper — sets Inter as the active font.
4
+ Unlayered so it overrides theme fonts; user CSS loaded after this wins. */
5
+ :root {
6
+ --lui-font-family: "Inter", system-ui, sans-serif;
7
+ }
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap");
3
+ /* Standalone font helper — sets Nunito as the active font.
4
+ Unlayered so it overrides theme fonts; user CSS loaded after this wins. */
5
+ :root {
6
+ --lui-font-family: "Nunito", system-ui, sans-serif;
7
+ }
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap");
3
+ /* Standalone font helper — sets Poppins as the active font.
4
+ Unlayered so it overrides theme fonts; user CSS loaded after this wins. */
5
+ :root {
6
+ --lui-font-family: "Poppins", system-ui, sans-serif;
7
+ }
@@ -0,0 +1,7 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700&display=swap");
3
+ /* Standalone font helper — sets Raleway as the active font.
4
+ Unlayered so it overrides theme fonts; user CSS loaded after this wins. */
5
+ :root {
6
+ --lui-font-family: "Raleway", system-ui, sans-serif;
7
+ }
@@ -0,0 +1,3 @@
1
+ import concatClassNames, { type SupportedClasses } from "./concatClassNames";
2
+ export { concatClassNames };
3
+ export type { SupportedClasses };
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var concatClassNames = require('./concatClassNames.js');
4
+
5
+
6
+
7
+ exports.concatClassNames = concatClassNames.default;
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ export { default as concatClassNames } from './concatClassNames.mjs';
@@ -0,0 +1,449 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap");
3
+ @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap");
4
+ @import url("https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700&display=swap");
5
+ @layer themes {
6
+ /* Ocean light + shape + font tokens */
7
+ [data-theme=ocean] {
8
+ --lui-font-family: "Nunito", system-ui, sans-serif;
9
+ --lui-border-width: 2px;
10
+ --lui-primary: #0077b6;
11
+ --lui-primary-text: #ffffff;
12
+ --lui-primary-hover: #005f92;
13
+ --lui-secondary: #0096c7;
14
+ --lui-secondary-text: #ffffff;
15
+ --lui-secondary-hover: #006da3;
16
+ --lui-accent: #48cae4;
17
+ --lui-accent-text: #023e8a;
18
+ --lui-accent-hover: #00b4d8;
19
+ --lui-neutral: #64748b;
20
+ --lui-neutral-text: #f8fafc;
21
+ --lui-neutral-hover: #475569;
22
+ --lui-surface: #f0f9ff;
23
+ --lui-surface-raised: #e0f2fe;
24
+ --lui-surface-border: #bae6fd;
25
+ --lui-surface-text: #0c4a6e;
26
+ --lui-info: #0369a1;
27
+ --lui-info-text: #ffffff;
28
+ --lui-success: #10b981;
29
+ --lui-success-text: #052e16;
30
+ --lui-warning: #f59e0b;
31
+ --lui-warning-text: #1c1917;
32
+ --lui-error: #dc2626;
33
+ --lui-error-text: #ffffff;
34
+ --lui-radius-sm: 0.375rem;
35
+ --lui-radius-md: 0.5rem;
36
+ --lui-radius-lg: 0.75rem;
37
+ --lui-primary-soft: #f0f9ff;
38
+ --lui-primary-soft-text: #0369a1;
39
+ --lui-secondary-soft: #f0f9ff;
40
+ --lui-secondary-soft-text: #0369a1;
41
+ --lui-accent-soft: #ecfeff;
42
+ --lui-accent-soft-text: #0e7490;
43
+ --lui-neutral-soft: #f0f9ff;
44
+ --lui-neutral-soft-text: #0369a1;
45
+ }
46
+ /* Ocean — OS dark */
47
+ @media (prefers-color-scheme: dark) {
48
+ [data-theme=ocean] {
49
+ --lui-primary-soft: #082f49;
50
+ --lui-primary-soft-text: #7dd3fc;
51
+ --lui-secondary-soft: #082f49;
52
+ --lui-secondary-soft-text: #7dd3fc;
53
+ --lui-accent-soft: #083344;
54
+ --lui-accent-soft-text: #67e8f9;
55
+ --lui-neutral-soft: #082f49;
56
+ --lui-neutral-soft-text: #7dd3fc;
57
+ --lui-primary: #38bdf8;
58
+ --lui-primary-text: #0c4a6e;
59
+ --lui-primary-hover: #7dd3fc;
60
+ --lui-secondary: #0ea5e9;
61
+ --lui-secondary-text: #f0f9ff;
62
+ --lui-secondary-hover: #38bdf8;
63
+ --lui-accent: #06b6d4;
64
+ --lui-accent-text: #f0fdfa;
65
+ --lui-accent-hover: #22d3ee;
66
+ --lui-neutral: #1e3a5f;
67
+ --lui-neutral-text: #e0f2fe;
68
+ --lui-neutral-hover: #1e40af;
69
+ --lui-surface: #0c1e35;
70
+ --lui-surface-raised: #0a192f;
71
+ --lui-surface-border: #1e3a5f;
72
+ --lui-surface-text: #e0f2fe;
73
+ --lui-info: #38bdf8;
74
+ --lui-info-text: #082f49;
75
+ --lui-success: #34d399;
76
+ --lui-success-text: #064e3b;
77
+ --lui-warning: #fbbf24;
78
+ --lui-warning-text: #1c1917;
79
+ --lui-error: #f87171;
80
+ --lui-error-text: #450a0a;
81
+ }
82
+ }
83
+ /* Ocean — force dark */
84
+ [data-theme=ocean][data-mode=dark] {
85
+ --lui-primary-soft: #082f49;
86
+ --lui-primary-soft-text: #7dd3fc;
87
+ --lui-secondary-soft: #082f49;
88
+ --lui-secondary-soft-text: #7dd3fc;
89
+ --lui-accent-soft: #083344;
90
+ --lui-accent-soft-text: #67e8f9;
91
+ --lui-neutral-soft: #082f49;
92
+ --lui-neutral-soft-text: #7dd3fc;
93
+ --lui-primary: #38bdf8;
94
+ --lui-primary-text: #0c4a6e;
95
+ --lui-primary-hover: #7dd3fc;
96
+ --lui-secondary: #0ea5e9;
97
+ --lui-secondary-text: #f0f9ff;
98
+ --lui-secondary-hover: #38bdf8;
99
+ --lui-accent: #06b6d4;
100
+ --lui-accent-text: #f0fdfa;
101
+ --lui-accent-hover: #22d3ee;
102
+ --lui-neutral: #1e3a5f;
103
+ --lui-neutral-text: #e0f2fe;
104
+ --lui-neutral-hover: #1e40af;
105
+ --lui-surface: #0c1e35;
106
+ --lui-surface-raised: #0a192f;
107
+ --lui-surface-border: #1e3a5f;
108
+ --lui-surface-text: #e0f2fe;
109
+ --lui-info: #38bdf8;
110
+ --lui-info-text: #082f49;
111
+ --lui-success: #34d399;
112
+ --lui-success-text: #064e3b;
113
+ --lui-warning: #fbbf24;
114
+ --lui-warning-text: #1c1917;
115
+ --lui-error: #f87171;
116
+ --lui-error-text: #450a0a;
117
+ }
118
+ /* Ocean — force light */
119
+ [data-theme=ocean][data-mode=light] {
120
+ --lui-primary-soft: #f0f9ff;
121
+ --lui-primary-soft-text: #0369a1;
122
+ --lui-secondary-soft: #f0f9ff;
123
+ --lui-secondary-soft-text: #0369a1;
124
+ --lui-accent-soft: #ecfeff;
125
+ --lui-accent-soft-text: #0e7490;
126
+ --lui-neutral-soft: #f0f9ff;
127
+ --lui-neutral-soft-text: #0369a1;
128
+ --lui-primary: #0077b6;
129
+ --lui-primary-text: #ffffff;
130
+ --lui-primary-hover: #005f92;
131
+ --lui-secondary: #0096c7;
132
+ --lui-secondary-text: #ffffff;
133
+ --lui-secondary-hover: #006da3;
134
+ --lui-accent: #48cae4;
135
+ --lui-accent-text: #023e8a;
136
+ --lui-accent-hover: #00b4d8;
137
+ --lui-neutral: #64748b;
138
+ --lui-neutral-text: #f8fafc;
139
+ --lui-neutral-hover: #475569;
140
+ --lui-surface: #f0f9ff;
141
+ --lui-surface-raised: #e0f2fe;
142
+ --lui-surface-border: #bae6fd;
143
+ --lui-surface-text: #0c4a6e;
144
+ --lui-info: #0369a1;
145
+ --lui-info-text: #ffffff;
146
+ --lui-success: #10b981;
147
+ --lui-success-text: #052e16;
148
+ --lui-warning: #f59e0b;
149
+ --lui-warning-text: #1c1917;
150
+ --lui-error: #dc2626;
151
+ --lui-error-text: #ffffff;
152
+ }
153
+ }
154
+ @layer themes {
155
+ /* Aurora light + shape + font tokens */
156
+ [data-theme=aurora] {
157
+ --lui-font-family: "Poppins", system-ui, sans-serif;
158
+ --lui-primary: #7c3aed;
159
+ --lui-primary-text: #ffffff;
160
+ --lui-primary-hover: #6d28d9;
161
+ --lui-secondary: #ec4899;
162
+ --lui-secondary-text: #ffffff;
163
+ --lui-secondary-hover: #db2777;
164
+ --lui-accent: #06b6d4;
165
+ --lui-accent-text: #ffffff;
166
+ --lui-accent-hover: #0891b2;
167
+ --lui-neutral: #6b7280;
168
+ --lui-neutral-text: #ffffff;
169
+ --lui-neutral-hover: #4b5563;
170
+ --lui-surface: #faf5ff;
171
+ --lui-surface-raised: #f3e8ff;
172
+ --lui-surface-border: #e9d5ff;
173
+ --lui-surface-text: #3b0764;
174
+ --lui-info: #2563eb;
175
+ --lui-info-text: #ffffff;
176
+ --lui-success: #22c55e;
177
+ --lui-success-text: #052e16;
178
+ --lui-warning: #f59e0b;
179
+ --lui-warning-text: #1c1917;
180
+ --lui-error: #dc2626;
181
+ --lui-error-text: #ffffff;
182
+ --lui-radius-sm: 9999px;
183
+ --lui-radius-md: 9999px;
184
+ --lui-radius-lg: 1rem;
185
+ --lui-primary-soft: #f5f3ff;
186
+ --lui-primary-soft-text: #6d28d9;
187
+ --lui-secondary-soft: #fdf2f8;
188
+ --lui-secondary-soft-text: #be185d;
189
+ --lui-accent-soft: #ecfeff;
190
+ --lui-accent-soft-text: #0e7490;
191
+ --lui-neutral-soft: #f5f3ff;
192
+ --lui-neutral-soft-text: #6d28d9;
193
+ }
194
+ /* Aurora — OS dark */
195
+ @media (prefers-color-scheme: dark) {
196
+ [data-theme=aurora] {
197
+ --lui-primary-soft: #1e1b4b;
198
+ --lui-primary-soft-text: #c4b5fd;
199
+ --lui-secondary-soft: #1a0010;
200
+ --lui-secondary-soft-text: #f9a8d4;
201
+ --lui-accent-soft: #083344;
202
+ --lui-accent-soft-text: #67e8f9;
203
+ --lui-neutral-soft: #1e1b4b;
204
+ --lui-neutral-soft-text: #c4b5fd;
205
+ --lui-primary: #a78bfa;
206
+ --lui-primary-text: #1e1b4b;
207
+ --lui-primary-hover: #c4b5fd;
208
+ --lui-secondary: #f472b6;
209
+ --lui-secondary-text: #1a0010;
210
+ --lui-secondary-hover: #f9a8d4;
211
+ --lui-accent: #22d3ee;
212
+ --lui-accent-text: #083344;
213
+ --lui-accent-hover: #67e8f9;
214
+ --lui-neutral: #4c1d95;
215
+ --lui-neutral-text: #ede9fe;
216
+ --lui-neutral-hover: #5b21b6;
217
+ --lui-surface: #1a0533;
218
+ --lui-surface-raised: #130327;
219
+ --lui-surface-border: #2d1b69;
220
+ --lui-surface-text: #ede9fe;
221
+ --lui-info: #60a5fa;
222
+ --lui-info-text: #172554;
223
+ --lui-success: #4ade80;
224
+ --lui-success-text: #14532d;
225
+ --lui-warning: #fbbf24;
226
+ --lui-warning-text: #1c1917;
227
+ --lui-error: #f87171;
228
+ --lui-error-text: #450a0a;
229
+ }
230
+ }
231
+ /* Aurora — force dark */
232
+ [data-theme=aurora][data-mode=dark] {
233
+ --lui-primary-soft: #1e1b4b;
234
+ --lui-primary-soft-text: #c4b5fd;
235
+ --lui-secondary-soft: #1a0010;
236
+ --lui-secondary-soft-text: #f9a8d4;
237
+ --lui-accent-soft: #083344;
238
+ --lui-accent-soft-text: #67e8f9;
239
+ --lui-neutral-soft: #1e1b4b;
240
+ --lui-neutral-soft-text: #c4b5fd;
241
+ --lui-primary: #a78bfa;
242
+ --lui-primary-text: #1e1b4b;
243
+ --lui-primary-hover: #c4b5fd;
244
+ --lui-secondary: #f472b6;
245
+ --lui-secondary-text: #1a0010;
246
+ --lui-secondary-hover: #f9a8d4;
247
+ --lui-accent: #22d3ee;
248
+ --lui-accent-text: #083344;
249
+ --lui-accent-hover: #67e8f9;
250
+ --lui-neutral: #4c1d95;
251
+ --lui-neutral-text: #ede9fe;
252
+ --lui-neutral-hover: #5b21b6;
253
+ --lui-surface: #1a0533;
254
+ --lui-surface-raised: #130327;
255
+ --lui-surface-border: #2d1b69;
256
+ --lui-surface-text: #ede9fe;
257
+ --lui-info: #60a5fa;
258
+ --lui-info-text: #172554;
259
+ --lui-success: #4ade80;
260
+ --lui-success-text: #14532d;
261
+ --lui-warning: #fbbf24;
262
+ --lui-warning-text: #1c1917;
263
+ --lui-error: #f87171;
264
+ --lui-error-text: #450a0a;
265
+ }
266
+ /* Aurora — force light */
267
+ [data-theme=aurora][data-mode=light] {
268
+ --lui-primary-soft: #f5f3ff;
269
+ --lui-primary-soft-text: #6d28d9;
270
+ --lui-secondary-soft: #fdf2f8;
271
+ --lui-secondary-soft-text: #be185d;
272
+ --lui-accent-soft: #ecfeff;
273
+ --lui-accent-soft-text: #0e7490;
274
+ --lui-neutral-soft: #f5f3ff;
275
+ --lui-neutral-soft-text: #6d28d9;
276
+ --lui-primary: #7c3aed;
277
+ --lui-primary-text: #ffffff;
278
+ --lui-primary-hover: #6d28d9;
279
+ --lui-secondary: #ec4899;
280
+ --lui-secondary-text: #ffffff;
281
+ --lui-secondary-hover: #db2777;
282
+ --lui-accent: #06b6d4;
283
+ --lui-accent-text: #ffffff;
284
+ --lui-accent-hover: #0891b2;
285
+ --lui-neutral: #6b7280;
286
+ --lui-neutral-text: #ffffff;
287
+ --lui-neutral-hover: #4b5563;
288
+ --lui-surface: #faf5ff;
289
+ --lui-surface-raised: #f3e8ff;
290
+ --lui-surface-border: #e9d5ff;
291
+ --lui-surface-text: #3b0764;
292
+ --lui-info: #2563eb;
293
+ --lui-info-text: #ffffff;
294
+ --lui-success: #22c55e;
295
+ --lui-success-text: #052e16;
296
+ --lui-warning: #f59e0b;
297
+ --lui-warning-text: #1c1917;
298
+ --lui-error: #dc2626;
299
+ --lui-error-text: #ffffff;
300
+ }
301
+ }
302
+ @layer themes {
303
+ /* Sunset light + shape + font tokens */
304
+ [data-theme=sunset] {
305
+ --lui-font-family: "Raleway", system-ui, sans-serif;
306
+ --lui-primary: #ea580c;
307
+ --lui-primary-text: #ffffff;
308
+ --lui-primary-hover: #c2410c;
309
+ --lui-secondary: #fb923c;
310
+ --lui-secondary-text: #431407;
311
+ --lui-secondary-hover: #f97316;
312
+ --lui-accent: #fbbf24;
313
+ --lui-accent-text: #1c1917;
314
+ --lui-accent-hover: #f59e0b;
315
+ --lui-neutral: #78716c;
316
+ --lui-neutral-text: #fafaf9;
317
+ --lui-neutral-hover: #57534e;
318
+ --lui-surface: #fffbf5;
319
+ --lui-surface-raised: #fef3e2;
320
+ --lui-surface-border: #fed7aa;
321
+ --lui-surface-text: #431407;
322
+ --lui-info: #2563eb;
323
+ --lui-info-text: #ffffff;
324
+ --lui-success: #22c55e;
325
+ --lui-success-text: #052e16;
326
+ --lui-warning: #f59e0b;
327
+ --lui-warning-text: #1c1917;
328
+ --lui-error: #dc2626;
329
+ --lui-error-text: #ffffff;
330
+ --lui-radius-sm: 0.25rem;
331
+ --lui-radius-md: 0.25rem;
332
+ --lui-radius-lg: 0.375rem;
333
+ --lui-primary-soft: #fff7ed;
334
+ --lui-primary-soft-text: #c2410c;
335
+ --lui-secondary-soft: #fff7ed;
336
+ --lui-secondary-soft-text: #c2410c;
337
+ --lui-accent-soft: #fffbeb;
338
+ --lui-accent-soft-text: #b45309;
339
+ --lui-neutral-soft: #fef3e2;
340
+ --lui-neutral-soft-text: #9a3412;
341
+ }
342
+ /* Sunset — OS dark */
343
+ @media (prefers-color-scheme: dark) {
344
+ [data-theme=sunset] {
345
+ --lui-primary-soft: #431407;
346
+ --lui-primary-soft-text: #fdba74;
347
+ --lui-secondary-soft: #431407;
348
+ --lui-secondary-soft-text: #fdba74;
349
+ --lui-accent-soft: #1c0900;
350
+ --lui-accent-soft-text: #fde68a;
351
+ --lui-neutral-soft: #431407;
352
+ --lui-neutral-soft-text: #fed7aa;
353
+ --lui-primary: #fb923c;
354
+ --lui-primary-text: #431407;
355
+ --lui-primary-hover: #fdba74;
356
+ --lui-secondary: #f97316;
357
+ --lui-secondary-text: #ffedd5;
358
+ --lui-secondary-hover: #fb923c;
359
+ --lui-accent: #fbbf24;
360
+ --lui-accent-text: #1c1917;
361
+ --lui-accent-hover: #fcd34d;
362
+ --lui-neutral: #44403c;
363
+ --lui-neutral-text: #fafaf9;
364
+ --lui-neutral-hover: #57534e;
365
+ --lui-surface: #1c0a02;
366
+ --lui-surface-raised: #150700;
367
+ --lui-surface-border: #3b1404;
368
+ --lui-surface-text: #fef3e2;
369
+ --lui-info: #60a5fa;
370
+ --lui-info-text: #172554;
371
+ --lui-success: #4ade80;
372
+ --lui-success-text: #14532d;
373
+ --lui-warning: #fbbf24;
374
+ --lui-warning-text: #1c1917;
375
+ --lui-error: #f87171;
376
+ --lui-error-text: #450a0a;
377
+ }
378
+ }
379
+ /* Sunset — force dark */
380
+ [data-theme=sunset][data-mode=dark] {
381
+ --lui-primary-soft: #431407;
382
+ --lui-primary-soft-text: #fdba74;
383
+ --lui-secondary-soft: #431407;
384
+ --lui-secondary-soft-text: #fdba74;
385
+ --lui-accent-soft: #1c0900;
386
+ --lui-accent-soft-text: #fde68a;
387
+ --lui-neutral-soft: #431407;
388
+ --lui-neutral-soft-text: #fed7aa;
389
+ --lui-primary: #fb923c;
390
+ --lui-primary-text: #431407;
391
+ --lui-primary-hover: #fdba74;
392
+ --lui-secondary: #f97316;
393
+ --lui-secondary-text: #ffedd5;
394
+ --lui-secondary-hover: #fb923c;
395
+ --lui-accent: #fbbf24;
396
+ --lui-accent-text: #1c1917;
397
+ --lui-accent-hover: #fcd34d;
398
+ --lui-neutral: #44403c;
399
+ --lui-neutral-text: #fafaf9;
400
+ --lui-neutral-hover: #57534e;
401
+ --lui-surface: #1c0a02;
402
+ --lui-surface-raised: #150700;
403
+ --lui-surface-border: #3b1404;
404
+ --lui-surface-text: #fef3e2;
405
+ --lui-info: #60a5fa;
406
+ --lui-info-text: #172554;
407
+ --lui-success: #4ade80;
408
+ --lui-success-text: #14532d;
409
+ --lui-warning: #fbbf24;
410
+ --lui-warning-text: #1c1917;
411
+ --lui-error: #f87171;
412
+ --lui-error-text: #450a0a;
413
+ }
414
+ /* Sunset — force light */
415
+ [data-theme=sunset][data-mode=light] {
416
+ --lui-primary-soft: #fff7ed;
417
+ --lui-primary-soft-text: #c2410c;
418
+ --lui-secondary-soft: #fff7ed;
419
+ --lui-secondary-soft-text: #c2410c;
420
+ --lui-accent-soft: #fffbeb;
421
+ --lui-accent-soft-text: #b45309;
422
+ --lui-neutral-soft: #fef3e2;
423
+ --lui-neutral-soft-text: #9a3412;
424
+ --lui-primary: #ea580c;
425
+ --lui-primary-text: #ffffff;
426
+ --lui-primary-hover: #c2410c;
427
+ --lui-secondary: #fb923c;
428
+ --lui-secondary-text: #431407;
429
+ --lui-secondary-hover: #f97316;
430
+ --lui-accent: #fbbf24;
431
+ --lui-accent-text: #1c1917;
432
+ --lui-accent-hover: #f59e0b;
433
+ --lui-neutral: #78716c;
434
+ --lui-neutral-text: #fafaf9;
435
+ --lui-neutral-hover: #57534e;
436
+ --lui-surface: #fffbf5;
437
+ --lui-surface-raised: #fef3e2;
438
+ --lui-surface-border: #fed7aa;
439
+ --lui-surface-text: #431407;
440
+ --lui-info: #2563eb;
441
+ --lui-info-text: #ffffff;
442
+ --lui-success: #22c55e;
443
+ --lui-success-text: #052e16;
444
+ --lui-warning: #f59e0b;
445
+ --lui-warning-text: #1c1917;
446
+ --lui-error: #dc2626;
447
+ --lui-error-text: #ffffff;
448
+ }
449
+ }
@@ -0,0 +1,150 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap");
3
+ @layer themes {
4
+ /* Aurora light + shape + font tokens */
5
+ [data-theme=aurora] {
6
+ --lui-font-family: "Poppins", system-ui, sans-serif;
7
+ --lui-primary: #7c3aed;
8
+ --lui-primary-text: #ffffff;
9
+ --lui-primary-hover: #6d28d9;
10
+ --lui-secondary: #ec4899;
11
+ --lui-secondary-text: #ffffff;
12
+ --lui-secondary-hover: #db2777;
13
+ --lui-accent: #06b6d4;
14
+ --lui-accent-text: #ffffff;
15
+ --lui-accent-hover: #0891b2;
16
+ --lui-neutral: #6b7280;
17
+ --lui-neutral-text: #ffffff;
18
+ --lui-neutral-hover: #4b5563;
19
+ --lui-surface: #faf5ff;
20
+ --lui-surface-raised: #f3e8ff;
21
+ --lui-surface-border: #e9d5ff;
22
+ --lui-surface-text: #3b0764;
23
+ --lui-info: #2563eb;
24
+ --lui-info-text: #ffffff;
25
+ --lui-success: #22c55e;
26
+ --lui-success-text: #052e16;
27
+ --lui-warning: #f59e0b;
28
+ --lui-warning-text: #1c1917;
29
+ --lui-error: #dc2626;
30
+ --lui-error-text: #ffffff;
31
+ --lui-radius-sm: 9999px;
32
+ --lui-radius-md: 9999px;
33
+ --lui-radius-lg: 1rem;
34
+ --lui-primary-soft: #f5f3ff;
35
+ --lui-primary-soft-text: #6d28d9;
36
+ --lui-secondary-soft: #fdf2f8;
37
+ --lui-secondary-soft-text: #be185d;
38
+ --lui-accent-soft: #ecfeff;
39
+ --lui-accent-soft-text: #0e7490;
40
+ --lui-neutral-soft: #f5f3ff;
41
+ --lui-neutral-soft-text: #6d28d9;
42
+ }
43
+ /* Aurora — OS dark */
44
+ @media (prefers-color-scheme: dark) {
45
+ [data-theme=aurora] {
46
+ --lui-primary-soft: #1e1b4b;
47
+ --lui-primary-soft-text: #c4b5fd;
48
+ --lui-secondary-soft: #1a0010;
49
+ --lui-secondary-soft-text: #f9a8d4;
50
+ --lui-accent-soft: #083344;
51
+ --lui-accent-soft-text: #67e8f9;
52
+ --lui-neutral-soft: #1e1b4b;
53
+ --lui-neutral-soft-text: #c4b5fd;
54
+ --lui-primary: #a78bfa;
55
+ --lui-primary-text: #1e1b4b;
56
+ --lui-primary-hover: #c4b5fd;
57
+ --lui-secondary: #f472b6;
58
+ --lui-secondary-text: #1a0010;
59
+ --lui-secondary-hover: #f9a8d4;
60
+ --lui-accent: #22d3ee;
61
+ --lui-accent-text: #083344;
62
+ --lui-accent-hover: #67e8f9;
63
+ --lui-neutral: #4c1d95;
64
+ --lui-neutral-text: #ede9fe;
65
+ --lui-neutral-hover: #5b21b6;
66
+ --lui-surface: #1a0533;
67
+ --lui-surface-raised: #130327;
68
+ --lui-surface-border: #2d1b69;
69
+ --lui-surface-text: #ede9fe;
70
+ --lui-info: #60a5fa;
71
+ --lui-info-text: #172554;
72
+ --lui-success: #4ade80;
73
+ --lui-success-text: #14532d;
74
+ --lui-warning: #fbbf24;
75
+ --lui-warning-text: #1c1917;
76
+ --lui-error: #f87171;
77
+ --lui-error-text: #450a0a;
78
+ }
79
+ }
80
+ /* Aurora — force dark */
81
+ [data-theme=aurora][data-mode=dark] {
82
+ --lui-primary-soft: #1e1b4b;
83
+ --lui-primary-soft-text: #c4b5fd;
84
+ --lui-secondary-soft: #1a0010;
85
+ --lui-secondary-soft-text: #f9a8d4;
86
+ --lui-accent-soft: #083344;
87
+ --lui-accent-soft-text: #67e8f9;
88
+ --lui-neutral-soft: #1e1b4b;
89
+ --lui-neutral-soft-text: #c4b5fd;
90
+ --lui-primary: #a78bfa;
91
+ --lui-primary-text: #1e1b4b;
92
+ --lui-primary-hover: #c4b5fd;
93
+ --lui-secondary: #f472b6;
94
+ --lui-secondary-text: #1a0010;
95
+ --lui-secondary-hover: #f9a8d4;
96
+ --lui-accent: #22d3ee;
97
+ --lui-accent-text: #083344;
98
+ --lui-accent-hover: #67e8f9;
99
+ --lui-neutral: #4c1d95;
100
+ --lui-neutral-text: #ede9fe;
101
+ --lui-neutral-hover: #5b21b6;
102
+ --lui-surface: #1a0533;
103
+ --lui-surface-raised: #130327;
104
+ --lui-surface-border: #2d1b69;
105
+ --lui-surface-text: #ede9fe;
106
+ --lui-info: #60a5fa;
107
+ --lui-info-text: #172554;
108
+ --lui-success: #4ade80;
109
+ --lui-success-text: #14532d;
110
+ --lui-warning: #fbbf24;
111
+ --lui-warning-text: #1c1917;
112
+ --lui-error: #f87171;
113
+ --lui-error-text: #450a0a;
114
+ }
115
+ /* Aurora — force light */
116
+ [data-theme=aurora][data-mode=light] {
117
+ --lui-primary-soft: #f5f3ff;
118
+ --lui-primary-soft-text: #6d28d9;
119
+ --lui-secondary-soft: #fdf2f8;
120
+ --lui-secondary-soft-text: #be185d;
121
+ --lui-accent-soft: #ecfeff;
122
+ --lui-accent-soft-text: #0e7490;
123
+ --lui-neutral-soft: #f5f3ff;
124
+ --lui-neutral-soft-text: #6d28d9;
125
+ --lui-primary: #7c3aed;
126
+ --lui-primary-text: #ffffff;
127
+ --lui-primary-hover: #6d28d9;
128
+ --lui-secondary: #ec4899;
129
+ --lui-secondary-text: #ffffff;
130
+ --lui-secondary-hover: #db2777;
131
+ --lui-accent: #06b6d4;
132
+ --lui-accent-text: #ffffff;
133
+ --lui-accent-hover: #0891b2;
134
+ --lui-neutral: #6b7280;
135
+ --lui-neutral-text: #ffffff;
136
+ --lui-neutral-hover: #4b5563;
137
+ --lui-surface: #faf5ff;
138
+ --lui-surface-raised: #f3e8ff;
139
+ --lui-surface-border: #e9d5ff;
140
+ --lui-surface-text: #3b0764;
141
+ --lui-info: #2563eb;
142
+ --lui-info-text: #ffffff;
143
+ --lui-success: #22c55e;
144
+ --lui-success-text: #052e16;
145
+ --lui-warning: #f59e0b;
146
+ --lui-warning-text: #1c1917;
147
+ --lui-error: #dc2626;
148
+ --lui-error-text: #ffffff;
149
+ }
150
+ }
@@ -0,0 +1,151 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700&display=swap");
3
+ @layer themes {
4
+ /* Ocean light + shape + font tokens */
5
+ [data-theme=ocean] {
6
+ --lui-font-family: "Nunito", system-ui, sans-serif;
7
+ --lui-border-width: 2px;
8
+ --lui-primary: #0077b6;
9
+ --lui-primary-text: #ffffff;
10
+ --lui-primary-hover: #005f92;
11
+ --lui-secondary: #0096c7;
12
+ --lui-secondary-text: #ffffff;
13
+ --lui-secondary-hover: #006da3;
14
+ --lui-accent: #48cae4;
15
+ --lui-accent-text: #023e8a;
16
+ --lui-accent-hover: #00b4d8;
17
+ --lui-neutral: #64748b;
18
+ --lui-neutral-text: #f8fafc;
19
+ --lui-neutral-hover: #475569;
20
+ --lui-surface: #f0f9ff;
21
+ --lui-surface-raised: #e0f2fe;
22
+ --lui-surface-border: #bae6fd;
23
+ --lui-surface-text: #0c4a6e;
24
+ --lui-info: #0369a1;
25
+ --lui-info-text: #ffffff;
26
+ --lui-success: #10b981;
27
+ --lui-success-text: #052e16;
28
+ --lui-warning: #f59e0b;
29
+ --lui-warning-text: #1c1917;
30
+ --lui-error: #dc2626;
31
+ --lui-error-text: #ffffff;
32
+ --lui-radius-sm: 0.375rem;
33
+ --lui-radius-md: 0.5rem;
34
+ --lui-radius-lg: 0.75rem;
35
+ --lui-primary-soft: #f0f9ff;
36
+ --lui-primary-soft-text: #0369a1;
37
+ --lui-secondary-soft: #f0f9ff;
38
+ --lui-secondary-soft-text: #0369a1;
39
+ --lui-accent-soft: #ecfeff;
40
+ --lui-accent-soft-text: #0e7490;
41
+ --lui-neutral-soft: #f0f9ff;
42
+ --lui-neutral-soft-text: #0369a1;
43
+ }
44
+ /* Ocean — OS dark */
45
+ @media (prefers-color-scheme: dark) {
46
+ [data-theme=ocean] {
47
+ --lui-primary-soft: #082f49;
48
+ --lui-primary-soft-text: #7dd3fc;
49
+ --lui-secondary-soft: #082f49;
50
+ --lui-secondary-soft-text: #7dd3fc;
51
+ --lui-accent-soft: #083344;
52
+ --lui-accent-soft-text: #67e8f9;
53
+ --lui-neutral-soft: #082f49;
54
+ --lui-neutral-soft-text: #7dd3fc;
55
+ --lui-primary: #38bdf8;
56
+ --lui-primary-text: #0c4a6e;
57
+ --lui-primary-hover: #7dd3fc;
58
+ --lui-secondary: #0ea5e9;
59
+ --lui-secondary-text: #f0f9ff;
60
+ --lui-secondary-hover: #38bdf8;
61
+ --lui-accent: #06b6d4;
62
+ --lui-accent-text: #f0fdfa;
63
+ --lui-accent-hover: #22d3ee;
64
+ --lui-neutral: #1e3a5f;
65
+ --lui-neutral-text: #e0f2fe;
66
+ --lui-neutral-hover: #1e40af;
67
+ --lui-surface: #0c1e35;
68
+ --lui-surface-raised: #0a192f;
69
+ --lui-surface-border: #1e3a5f;
70
+ --lui-surface-text: #e0f2fe;
71
+ --lui-info: #38bdf8;
72
+ --lui-info-text: #082f49;
73
+ --lui-success: #34d399;
74
+ --lui-success-text: #064e3b;
75
+ --lui-warning: #fbbf24;
76
+ --lui-warning-text: #1c1917;
77
+ --lui-error: #f87171;
78
+ --lui-error-text: #450a0a;
79
+ }
80
+ }
81
+ /* Ocean — force dark */
82
+ [data-theme=ocean][data-mode=dark] {
83
+ --lui-primary-soft: #082f49;
84
+ --lui-primary-soft-text: #7dd3fc;
85
+ --lui-secondary-soft: #082f49;
86
+ --lui-secondary-soft-text: #7dd3fc;
87
+ --lui-accent-soft: #083344;
88
+ --lui-accent-soft-text: #67e8f9;
89
+ --lui-neutral-soft: #082f49;
90
+ --lui-neutral-soft-text: #7dd3fc;
91
+ --lui-primary: #38bdf8;
92
+ --lui-primary-text: #0c4a6e;
93
+ --lui-primary-hover: #7dd3fc;
94
+ --lui-secondary: #0ea5e9;
95
+ --lui-secondary-text: #f0f9ff;
96
+ --lui-secondary-hover: #38bdf8;
97
+ --lui-accent: #06b6d4;
98
+ --lui-accent-text: #f0fdfa;
99
+ --lui-accent-hover: #22d3ee;
100
+ --lui-neutral: #1e3a5f;
101
+ --lui-neutral-text: #e0f2fe;
102
+ --lui-neutral-hover: #1e40af;
103
+ --lui-surface: #0c1e35;
104
+ --lui-surface-raised: #0a192f;
105
+ --lui-surface-border: #1e3a5f;
106
+ --lui-surface-text: #e0f2fe;
107
+ --lui-info: #38bdf8;
108
+ --lui-info-text: #082f49;
109
+ --lui-success: #34d399;
110
+ --lui-success-text: #064e3b;
111
+ --lui-warning: #fbbf24;
112
+ --lui-warning-text: #1c1917;
113
+ --lui-error: #f87171;
114
+ --lui-error-text: #450a0a;
115
+ }
116
+ /* Ocean — force light */
117
+ [data-theme=ocean][data-mode=light] {
118
+ --lui-primary-soft: #f0f9ff;
119
+ --lui-primary-soft-text: #0369a1;
120
+ --lui-secondary-soft: #f0f9ff;
121
+ --lui-secondary-soft-text: #0369a1;
122
+ --lui-accent-soft: #ecfeff;
123
+ --lui-accent-soft-text: #0e7490;
124
+ --lui-neutral-soft: #f0f9ff;
125
+ --lui-neutral-soft-text: #0369a1;
126
+ --lui-primary: #0077b6;
127
+ --lui-primary-text: #ffffff;
128
+ --lui-primary-hover: #005f92;
129
+ --lui-secondary: #0096c7;
130
+ --lui-secondary-text: #ffffff;
131
+ --lui-secondary-hover: #006da3;
132
+ --lui-accent: #48cae4;
133
+ --lui-accent-text: #023e8a;
134
+ --lui-accent-hover: #00b4d8;
135
+ --lui-neutral: #64748b;
136
+ --lui-neutral-text: #f8fafc;
137
+ --lui-neutral-hover: #475569;
138
+ --lui-surface: #f0f9ff;
139
+ --lui-surface-raised: #e0f2fe;
140
+ --lui-surface-border: #bae6fd;
141
+ --lui-surface-text: #0c4a6e;
142
+ --lui-info: #0369a1;
143
+ --lui-info-text: #ffffff;
144
+ --lui-success: #10b981;
145
+ --lui-success-text: #052e16;
146
+ --lui-warning: #f59e0b;
147
+ --lui-warning-text: #1c1917;
148
+ --lui-error: #dc2626;
149
+ --lui-error-text: #ffffff;
150
+ }
151
+ }
@@ -0,0 +1,150 @@
1
+ @charset "UTF-8";
2
+ @import url("https://fonts.googleapis.com/css2?family=Raleway:wght@400;500;600;700&display=swap");
3
+ @layer themes {
4
+ /* Sunset light + shape + font tokens */
5
+ [data-theme=sunset] {
6
+ --lui-font-family: "Raleway", system-ui, sans-serif;
7
+ --lui-primary: #ea580c;
8
+ --lui-primary-text: #ffffff;
9
+ --lui-primary-hover: #c2410c;
10
+ --lui-secondary: #fb923c;
11
+ --lui-secondary-text: #431407;
12
+ --lui-secondary-hover: #f97316;
13
+ --lui-accent: #fbbf24;
14
+ --lui-accent-text: #1c1917;
15
+ --lui-accent-hover: #f59e0b;
16
+ --lui-neutral: #78716c;
17
+ --lui-neutral-text: #fafaf9;
18
+ --lui-neutral-hover: #57534e;
19
+ --lui-surface: #fffbf5;
20
+ --lui-surface-raised: #fef3e2;
21
+ --lui-surface-border: #fed7aa;
22
+ --lui-surface-text: #431407;
23
+ --lui-info: #2563eb;
24
+ --lui-info-text: #ffffff;
25
+ --lui-success: #22c55e;
26
+ --lui-success-text: #052e16;
27
+ --lui-warning: #f59e0b;
28
+ --lui-warning-text: #1c1917;
29
+ --lui-error: #dc2626;
30
+ --lui-error-text: #ffffff;
31
+ --lui-radius-sm: 0.25rem;
32
+ --lui-radius-md: 0.25rem;
33
+ --lui-radius-lg: 0.375rem;
34
+ --lui-primary-soft: #fff7ed;
35
+ --lui-primary-soft-text: #c2410c;
36
+ --lui-secondary-soft: #fff7ed;
37
+ --lui-secondary-soft-text: #c2410c;
38
+ --lui-accent-soft: #fffbeb;
39
+ --lui-accent-soft-text: #b45309;
40
+ --lui-neutral-soft: #fef3e2;
41
+ --lui-neutral-soft-text: #9a3412;
42
+ }
43
+ /* Sunset — OS dark */
44
+ @media (prefers-color-scheme: dark) {
45
+ [data-theme=sunset] {
46
+ --lui-primary-soft: #431407;
47
+ --lui-primary-soft-text: #fdba74;
48
+ --lui-secondary-soft: #431407;
49
+ --lui-secondary-soft-text: #fdba74;
50
+ --lui-accent-soft: #1c0900;
51
+ --lui-accent-soft-text: #fde68a;
52
+ --lui-neutral-soft: #431407;
53
+ --lui-neutral-soft-text: #fed7aa;
54
+ --lui-primary: #fb923c;
55
+ --lui-primary-text: #431407;
56
+ --lui-primary-hover: #fdba74;
57
+ --lui-secondary: #f97316;
58
+ --lui-secondary-text: #ffedd5;
59
+ --lui-secondary-hover: #fb923c;
60
+ --lui-accent: #fbbf24;
61
+ --lui-accent-text: #1c1917;
62
+ --lui-accent-hover: #fcd34d;
63
+ --lui-neutral: #44403c;
64
+ --lui-neutral-text: #fafaf9;
65
+ --lui-neutral-hover: #57534e;
66
+ --lui-surface: #1c0a02;
67
+ --lui-surface-raised: #150700;
68
+ --lui-surface-border: #3b1404;
69
+ --lui-surface-text: #fef3e2;
70
+ --lui-info: #60a5fa;
71
+ --lui-info-text: #172554;
72
+ --lui-success: #4ade80;
73
+ --lui-success-text: #14532d;
74
+ --lui-warning: #fbbf24;
75
+ --lui-warning-text: #1c1917;
76
+ --lui-error: #f87171;
77
+ --lui-error-text: #450a0a;
78
+ }
79
+ }
80
+ /* Sunset — force dark */
81
+ [data-theme=sunset][data-mode=dark] {
82
+ --lui-primary-soft: #431407;
83
+ --lui-primary-soft-text: #fdba74;
84
+ --lui-secondary-soft: #431407;
85
+ --lui-secondary-soft-text: #fdba74;
86
+ --lui-accent-soft: #1c0900;
87
+ --lui-accent-soft-text: #fde68a;
88
+ --lui-neutral-soft: #431407;
89
+ --lui-neutral-soft-text: #fed7aa;
90
+ --lui-primary: #fb923c;
91
+ --lui-primary-text: #431407;
92
+ --lui-primary-hover: #fdba74;
93
+ --lui-secondary: #f97316;
94
+ --lui-secondary-text: #ffedd5;
95
+ --lui-secondary-hover: #fb923c;
96
+ --lui-accent: #fbbf24;
97
+ --lui-accent-text: #1c1917;
98
+ --lui-accent-hover: #fcd34d;
99
+ --lui-neutral: #44403c;
100
+ --lui-neutral-text: #fafaf9;
101
+ --lui-neutral-hover: #57534e;
102
+ --lui-surface: #1c0a02;
103
+ --lui-surface-raised: #150700;
104
+ --lui-surface-border: #3b1404;
105
+ --lui-surface-text: #fef3e2;
106
+ --lui-info: #60a5fa;
107
+ --lui-info-text: #172554;
108
+ --lui-success: #4ade80;
109
+ --lui-success-text: #14532d;
110
+ --lui-warning: #fbbf24;
111
+ --lui-warning-text: #1c1917;
112
+ --lui-error: #f87171;
113
+ --lui-error-text: #450a0a;
114
+ }
115
+ /* Sunset — force light */
116
+ [data-theme=sunset][data-mode=light] {
117
+ --lui-primary-soft: #fff7ed;
118
+ --lui-primary-soft-text: #c2410c;
119
+ --lui-secondary-soft: #fff7ed;
120
+ --lui-secondary-soft-text: #c2410c;
121
+ --lui-accent-soft: #fffbeb;
122
+ --lui-accent-soft-text: #b45309;
123
+ --lui-neutral-soft: #fef3e2;
124
+ --lui-neutral-soft-text: #9a3412;
125
+ --lui-primary: #ea580c;
126
+ --lui-primary-text: #ffffff;
127
+ --lui-primary-hover: #c2410c;
128
+ --lui-secondary: #fb923c;
129
+ --lui-secondary-text: #431407;
130
+ --lui-secondary-hover: #f97316;
131
+ --lui-accent: #fbbf24;
132
+ --lui-accent-text: #1c1917;
133
+ --lui-accent-hover: #f59e0b;
134
+ --lui-neutral: #78716c;
135
+ --lui-neutral-text: #fafaf9;
136
+ --lui-neutral-hover: #57534e;
137
+ --lui-surface: #fffbf5;
138
+ --lui-surface-raised: #fef3e2;
139
+ --lui-surface-border: #fed7aa;
140
+ --lui-surface-text: #431407;
141
+ --lui-info: #2563eb;
142
+ --lui-info-text: #ffffff;
143
+ --lui-success: #22c55e;
144
+ --lui-success-text: #052e16;
145
+ --lui-warning: #f59e0b;
146
+ --lui-warning-text: #1c1917;
147
+ --lui-error: #dc2626;
148
+ --lui-error-text: #ffffff;
149
+ }
150
+ }
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@ladder-ui/core",
3
+ "version": "0.2.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.mjs",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./concatClassNames": {
15
+ "require": "./dist/concatClassNames.js",
16
+ "import": "./dist/concatClassNames.mjs",
17
+ "types": "./dist/concatClassNames.d.ts"
18
+ },
19
+ "./*.css": "./dist/*.css",
20
+ "./styles/*.css": "./dist/*.css",
21
+ "./themes/*.css": "./dist/themes/*.css",
22
+ "./fonts/*.css": "./dist/fonts/*.css"
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "keywords": [
28
+ "nodejs",
29
+ "react",
30
+ "ui",
31
+ "components",
32
+ "library"
33
+ ],
34
+ "author": "Ivan Avila <ivelaval@gmail.com> - https://www.vennet.dev",
35
+ "license": "ISC",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+ssh://git@github.com/ivelaval/ladder-ui.git"
39
+ },
40
+ "bugs": {
41
+ "url": "https://github.com/ivelaval/ladder-ui/issues"
42
+ },
43
+ "homepage": "https://github.com/ivelaval/ladder-ui#readme",
44
+ "publishConfig": {
45
+ "access": "public"
46
+ },
47
+ "dependencies": {},
48
+ "devDependencies": {
49
+ "@rollup/plugin-typescript": "^11.1.6",
50
+ "@types/react": "^18.2.48",
51
+ "rollup": "^4.59.0",
52
+ "rollup-plugin-postcss": "^4.0.2",
53
+ "sass": "^1.90.0",
54
+ "typescript": "^5.3.3",
55
+ "tslib": "^2.6.2"
56
+ },
57
+ "peerDependencies": {
58
+ "react": ">=18.0.0"
59
+ },
60
+ "sideEffects": [
61
+ "**/*.css"
62
+ ],
63
+ "scripts": {
64
+ "build": "pnpm clean && rollup -c",
65
+ "dev": "rollup -c -w",
66
+ "test": "vitest run",
67
+ "test:watch": "vitest",
68
+ "type-check": "tsc --noEmit",
69
+ "clean": "rm -rf dist"
70
+ }
71
+ }