@lukeashford/aurelius 1.1.0 → 2.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.
- package/LICENSE +21 -0
- package/README.md +42 -72
- package/dist/index.d.mts +10 -7
- package/dist/index.d.ts +10 -7
- package/dist/index.js +9 -399
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -33
- package/dist/index.mjs.map +1 -1
- package/dist/styles/base.css +7 -2
- package/dist/styles/fonts.css +31 -2
- package/dist/styles/theme.css +368 -0
- package/llms.md +40 -82
- package/package.json +62 -17
- package/scripts/eslint.mjs +117 -0
- package/dist/chunk-MBYGB67D.mjs +0 -243
- package/dist/chunk-MBYGB67D.mjs.map +0 -1
- package/dist/chunk-MDNHT46W.mjs +0 -150
- package/dist/chunk-MDNHT46W.mjs.map +0 -1
- package/dist/tailwind.preset.d.mts +0 -5
- package/dist/tailwind.preset.d.ts +0 -5
- package/dist/tailwind.preset.js +0 -405
- package/dist/tailwind.preset.js.map +0 -1
- package/dist/tailwind.preset.mjs +0 -8
- package/dist/tailwind.preset.mjs.map +0 -1
- package/dist/tokens/index.d.mts +0 -156
- package/dist/tokens/index.d.ts +0 -156
- package/dist/tokens/index.js +0 -182
- package/dist/tokens/index.js.map +0 -1
- package/dist/tokens/index.mjs +0 -19
- package/dist/tokens/index.mjs.map +0 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/* Aurelius Design System - CSS Theme
|
|
2
|
+
* Tailwind v4 CSS-first approach using @theme directive
|
|
3
|
+
* This file defines all design tokens as CSS custom properties
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
@theme {
|
|
7
|
+
/* ===== COLORS ===== */
|
|
8
|
+
|
|
9
|
+
/* Black spectrum */
|
|
10
|
+
--color-void: #000000;
|
|
11
|
+
--color-obsidian: #0a0a0a;
|
|
12
|
+
--color-charcoal: #141414;
|
|
13
|
+
--color-graphite: #1f1f1f;
|
|
14
|
+
--color-slate: #2a2a2a;
|
|
15
|
+
--color-ash: #3d3d3d;
|
|
16
|
+
|
|
17
|
+
/* Gold spectrum */
|
|
18
|
+
--color-gold: #c9a227;
|
|
19
|
+
--color-gold-light: #d4b84a;
|
|
20
|
+
--color-gold-bright: #e5c84d;
|
|
21
|
+
--color-gold-muted: #8b7355;
|
|
22
|
+
--color-gold-pale: #d4c4a8;
|
|
23
|
+
--color-gold-glow: rgba(201, 162, 39, 0.15);
|
|
24
|
+
|
|
25
|
+
/* Neutrals */
|
|
26
|
+
--color-white: #ffffff;
|
|
27
|
+
--color-silver: #a3a3a3;
|
|
28
|
+
--color-zinc: #71717a;
|
|
29
|
+
--color-dim: #52525b;
|
|
30
|
+
|
|
31
|
+
/* Semantic */
|
|
32
|
+
--color-success: #22c55e;
|
|
33
|
+
--color-success-muted: #166534;
|
|
34
|
+
--color-error: #dc2626;
|
|
35
|
+
--color-error-muted: #991b1b;
|
|
36
|
+
--color-warning: #d97706;
|
|
37
|
+
--color-warning-muted: #92400e;
|
|
38
|
+
--color-info: #0ea5e9;
|
|
39
|
+
--color-info-muted: #0369a1;
|
|
40
|
+
|
|
41
|
+
/* ===== TYPOGRAPHY ===== */
|
|
42
|
+
|
|
43
|
+
/* Font families */
|
|
44
|
+
--font-heading: "Marcellus", serif;
|
|
45
|
+
--font-body: "Raleway", system-ui, sans-serif;
|
|
46
|
+
--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", monospace;
|
|
47
|
+
|
|
48
|
+
/* Font sizes */
|
|
49
|
+
--text-xs: 0.75rem;
|
|
50
|
+
--text-xs--line-height: 1rem;
|
|
51
|
+
--text-sm: 0.875rem;
|
|
52
|
+
--text-sm--line-height: 1.25rem;
|
|
53
|
+
--text-base: 1rem;
|
|
54
|
+
--text-base--line-height: 1.5rem;
|
|
55
|
+
--text-lg: 1.125rem;
|
|
56
|
+
--text-lg--line-height: 1.75rem;
|
|
57
|
+
--text-xl: 1.25rem;
|
|
58
|
+
--text-xl--line-height: 1.75rem;
|
|
59
|
+
--text-2xl: 1.5rem;
|
|
60
|
+
--text-2xl--line-height: 2rem;
|
|
61
|
+
--text-3xl: 1.875rem;
|
|
62
|
+
--text-3xl--line-height: 2.25rem;
|
|
63
|
+
--text-4xl: 2.25rem;
|
|
64
|
+
--text-4xl--line-height: 2.5rem;
|
|
65
|
+
--text-5xl: 3rem;
|
|
66
|
+
--text-5xl--line-height: 1;
|
|
67
|
+
--text-6xl: 3.75rem;
|
|
68
|
+
--text-6xl--line-height: 1;
|
|
69
|
+
|
|
70
|
+
/* Font weights */
|
|
71
|
+
--font-weight-normal: 400;
|
|
72
|
+
--font-weight-medium: 500;
|
|
73
|
+
--font-weight-semibold: 600;
|
|
74
|
+
--font-weight-bold: 700;
|
|
75
|
+
|
|
76
|
+
/* Line heights */
|
|
77
|
+
--line-height-none: 1;
|
|
78
|
+
--line-height-tight: 1.25;
|
|
79
|
+
--line-height-snug: 1.375;
|
|
80
|
+
--line-height-normal: 1.5;
|
|
81
|
+
--line-height-relaxed: 1.625;
|
|
82
|
+
--line-height-loose: 2;
|
|
83
|
+
|
|
84
|
+
/* Letter spacing */
|
|
85
|
+
--letter-spacing-tighter: -0.05em;
|
|
86
|
+
--letter-spacing-tight: -0.025em;
|
|
87
|
+
--letter-spacing-normal: 0;
|
|
88
|
+
--letter-spacing-wide: 0.025em;
|
|
89
|
+
--letter-spacing-wider: 0.05em;
|
|
90
|
+
--letter-spacing-widest: 0.1em;
|
|
91
|
+
|
|
92
|
+
/* ===== SPACING ===== */
|
|
93
|
+
--spacing-px: 1px;
|
|
94
|
+
--spacing-0: 0;
|
|
95
|
+
--spacing-0_5: 0.125rem;
|
|
96
|
+
--spacing-1: 0.25rem;
|
|
97
|
+
--spacing-1_5: 0.375rem;
|
|
98
|
+
--spacing-2: 0.5rem;
|
|
99
|
+
--spacing-2_5: 0.625rem;
|
|
100
|
+
--spacing-3: 0.75rem;
|
|
101
|
+
--spacing-3_5: 0.875rem;
|
|
102
|
+
--spacing-4: 1rem;
|
|
103
|
+
--spacing-5: 1.25rem;
|
|
104
|
+
--spacing-6: 1.5rem;
|
|
105
|
+
--spacing-7: 1.75rem;
|
|
106
|
+
--spacing-8: 2rem;
|
|
107
|
+
--spacing-9: 2.25rem;
|
|
108
|
+
--spacing-10: 2.5rem;
|
|
109
|
+
--spacing-11: 2.75rem;
|
|
110
|
+
--spacing-12: 3rem;
|
|
111
|
+
--spacing-14: 3.5rem;
|
|
112
|
+
--spacing-16: 4rem;
|
|
113
|
+
--spacing-20: 5rem;
|
|
114
|
+
--spacing-24: 6rem;
|
|
115
|
+
--spacing-28: 7rem;
|
|
116
|
+
--spacing-32: 8rem;
|
|
117
|
+
|
|
118
|
+
/* ===== BORDER RADIUS ===== */
|
|
119
|
+
--radius-sm: 0.125rem;
|
|
120
|
+
--radius-md: 0.25rem;
|
|
121
|
+
--radius-lg: 0.375rem;
|
|
122
|
+
--radius-xl: 0.5rem;
|
|
123
|
+
--radius-2xl: 0.75rem;
|
|
124
|
+
--radius-3xl: 1rem;
|
|
125
|
+
--radius-full: 9999px;
|
|
126
|
+
|
|
127
|
+
/* ===== SHADOWS ===== */
|
|
128
|
+
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
|
|
129
|
+
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
|
|
130
|
+
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
|
|
131
|
+
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.3);
|
|
132
|
+
--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
133
|
+
--shadow-glow: 0 0 20px rgba(201, 162, 39, 0.3);
|
|
134
|
+
--shadow-glow-sm: 0 0 10px rgba(201, 162, 39, 0.2);
|
|
135
|
+
--shadow-glow-lg: 0 0 40px rgba(201, 162, 39, 0.4);
|
|
136
|
+
--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, 0.3);
|
|
137
|
+
|
|
138
|
+
/* ===== TRANSITIONS ===== */
|
|
139
|
+
|
|
140
|
+
/* Durations */
|
|
141
|
+
--duration-instant: 75ms;
|
|
142
|
+
--duration-fast: 150ms;
|
|
143
|
+
--duration-normal: 200ms;
|
|
144
|
+
--duration-slow: 300ms;
|
|
145
|
+
--duration-slower: 500ms;
|
|
146
|
+
|
|
147
|
+
/* Easing functions */
|
|
148
|
+
--ease-smooth: cubic-bezier(0.16, 1, 0.3, 1);
|
|
149
|
+
--ease-snap: cubic-bezier(0.5, 0, 0.1, 1);
|
|
150
|
+
|
|
151
|
+
/* ===== ANIMATIONS ===== */
|
|
152
|
+
--animate-fade-in: fade-in 200ms ease-out;
|
|
153
|
+
--animate-fade-out: fade-out 150ms ease-in;
|
|
154
|
+
--animate-slide-in-right: slide-in-right 300ms var(--ease-smooth);
|
|
155
|
+
--animate-slide-out-right: slide-out-right 200ms ease-in;
|
|
156
|
+
--animate-pulse-glow: pulse-glow 2s ease-in-out infinite;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@keyframes fade-in {
|
|
160
|
+
0% { opacity: 0; }
|
|
161
|
+
100% { opacity: 1; }
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
@keyframes fade-out {
|
|
165
|
+
0% { opacity: 1; }
|
|
166
|
+
100% { opacity: 0; }
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
@keyframes slide-in-right {
|
|
170
|
+
0% { transform: translateX(100%); opacity: 0; }
|
|
171
|
+
100% { transform: translateX(0); opacity: 1; }
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@keyframes slide-out-right {
|
|
175
|
+
0% { transform: translateX(0); opacity: 1; }
|
|
176
|
+
100% { transform: translateX(100%); opacity: 0; }
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@keyframes pulse-glow {
|
|
180
|
+
0%, 100% { box-shadow: 0 0 20px rgba(201, 162, 39, 0.3); }
|
|
181
|
+
50% { box-shadow: 0 0 30px rgba(201, 162, 39, 0.5); }
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/* ===== BASE STYLES (applied via @layer base) ===== */
|
|
185
|
+
@layer base {
|
|
186
|
+
html {
|
|
187
|
+
font-family: var(--font-body);
|
|
188
|
+
background-color: var(--color-obsidian);
|
|
189
|
+
color: var(--color-white);
|
|
190
|
+
-webkit-font-smoothing: antialiased;
|
|
191
|
+
-moz-osx-font-smoothing: grayscale;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
body {
|
|
195
|
+
min-height: 100vh;
|
|
196
|
+
line-height: 1.5;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Table styles */
|
|
200
|
+
table {
|
|
201
|
+
border-collapse: collapse;
|
|
202
|
+
width: 100%;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
table, th, td {
|
|
206
|
+
border: 1px solid var(--color-gold-muted);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
th, td {
|
|
210
|
+
padding: 0.5rem 0.75rem;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
table:hover {
|
|
214
|
+
box-shadow: var(--shadow-glow);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/* Progress element */
|
|
218
|
+
progress {
|
|
219
|
+
appearance: none;
|
|
220
|
+
-webkit-appearance: none;
|
|
221
|
+
border: 1px solid var(--color-gold-muted);
|
|
222
|
+
border-radius: 0;
|
|
223
|
+
background-color: var(--color-charcoal);
|
|
224
|
+
width: 100%;
|
|
225
|
+
height: 0.5rem;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
progress::-webkit-progress-bar {
|
|
229
|
+
background-color: var(--color-charcoal);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
progress::-webkit-progress-value {
|
|
233
|
+
background-color: var(--color-gold);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
progress::-moz-progress-bar {
|
|
237
|
+
background-color: var(--color-gold);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/* Headings */
|
|
241
|
+
h1, h2, h3, h4, h5, h6 {
|
|
242
|
+
font-family: var(--font-heading);
|
|
243
|
+
font-weight: 600;
|
|
244
|
+
letter-spacing: -0.025em;
|
|
245
|
+
color: var(--color-white);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
h1 { font-size: 2.25rem; line-height: 1.25; }
|
|
249
|
+
h2 { font-size: 1.875rem; line-height: 1.25; }
|
|
250
|
+
h3 { font-size: 1.5rem; line-height: 1.375; }
|
|
251
|
+
h4 { font-size: 1.25rem; line-height: 1.375; }
|
|
252
|
+
h5 { font-size: 1.125rem; line-height: 1.5; }
|
|
253
|
+
h6 { font-size: 1rem; line-height: 1.5; }
|
|
254
|
+
|
|
255
|
+
/* Code */
|
|
256
|
+
code, pre, kbd, samp {
|
|
257
|
+
font-family: var(--font-mono);
|
|
258
|
+
font-size: 0.875em;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Links */
|
|
262
|
+
a {
|
|
263
|
+
color: var(--color-gold);
|
|
264
|
+
text-decoration: none;
|
|
265
|
+
transition: color var(--duration-fast) ease-out;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
a:hover {
|
|
269
|
+
color: var(--color-gold-light);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* Focus */
|
|
273
|
+
:focus-visible {
|
|
274
|
+
outline: 2px solid var(--color-gold);
|
|
275
|
+
outline-offset: 2px;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* Selection */
|
|
279
|
+
::selection {
|
|
280
|
+
background-color: var(--color-gold);
|
|
281
|
+
color: var(--color-obsidian);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/* Scrollbars */
|
|
285
|
+
::-webkit-scrollbar {
|
|
286
|
+
width: 8px;
|
|
287
|
+
height: 8px;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
::-webkit-scrollbar-track {
|
|
291
|
+
background: var(--color-charcoal);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
::-webkit-scrollbar-thumb {
|
|
295
|
+
background: var(--color-ash);
|
|
296
|
+
border-radius: var(--radius-full);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
::-webkit-scrollbar-thumb:hover {
|
|
300
|
+
background: var(--color-silver);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/* ===== UTILITY CLASSES ===== */
|
|
305
|
+
@utility text-gradient-gold {
|
|
306
|
+
background: linear-gradient(to right, var(--color-gold), var(--color-gold-light), var(--color-gold));
|
|
307
|
+
-webkit-background-clip: text;
|
|
308
|
+
background-clip: text;
|
|
309
|
+
color: transparent;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@utility glow {
|
|
313
|
+
box-shadow: var(--shadow-glow);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@utility glow-sm {
|
|
317
|
+
box-shadow: var(--shadow-glow-sm);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
@utility glow-lg {
|
|
321
|
+
box-shadow: var(--shadow-glow-lg);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
@utility scroll-smooth {
|
|
325
|
+
scroll-behavior: smooth;
|
|
326
|
+
-webkit-overflow-scrolling: touch;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
@utility scrollbar-hide {
|
|
330
|
+
-ms-overflow-style: none;
|
|
331
|
+
scrollbar-width: none;
|
|
332
|
+
&::-webkit-scrollbar {
|
|
333
|
+
display: none;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
@utility backdrop-glass {
|
|
338
|
+
backdrop-filter: blur(12px);
|
|
339
|
+
background-color: rgba(20, 20, 20, 0.8);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@utility focus-ring {
|
|
343
|
+
&:focus-visible {
|
|
344
|
+
outline: 2px solid #c9a227;
|
|
345
|
+
outline-offset: 2px;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
@utility line-clamp-2 {
|
|
350
|
+
display: -webkit-box;
|
|
351
|
+
-webkit-line-clamp: 2;
|
|
352
|
+
-webkit-box-orient: vertical;
|
|
353
|
+
overflow: hidden;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
@utility line-clamp-3 {
|
|
357
|
+
display: -webkit-box;
|
|
358
|
+
-webkit-line-clamp: 3;
|
|
359
|
+
-webkit-box-orient: vertical;
|
|
360
|
+
overflow: hidden;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
@utility center-absolute {
|
|
364
|
+
position: absolute;
|
|
365
|
+
top: 50%;
|
|
366
|
+
left: 50%;
|
|
367
|
+
transform: translate(-50%, -50%);
|
|
368
|
+
}
|
package/llms.md
CHANGED
|
@@ -1,73 +1,41 @@
|
|
|
1
1
|
# Aurelius Design System — AI Manifest
|
|
2
2
|
|
|
3
|
-
## Setup
|
|
3
|
+
## Setup (Tailwind v4)
|
|
4
4
|
|
|
5
|
-
### 1. Install
|
|
5
|
+
### 1. Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
npm install
|
|
8
|
+
npm install @lukeashford/aurelius
|
|
9
|
+
npm install -D eslint @typescript-eslint/parser eslint-plugin-better-tailwindcss @poupe/eslint-plugin-tailwindcss @eslint/css tailwind-csstree
|
|
9
10
|
```
|
|
10
11
|
|
|
11
|
-
### 2.
|
|
12
|
+
### 2. Import the design system
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
// tailwind.config.js
|
|
15
|
-
const aureliusPreset = require('@lukeashford/aurelius/tailwind.preset')
|
|
16
|
-
|
|
17
|
-
module.exports = {
|
|
18
|
-
presets: [aureliusPreset],
|
|
19
|
-
content: [
|
|
20
|
-
'./src/**/*.{js,ts,jsx,tsx}',
|
|
21
|
-
'./node_modules/@lukeashford/aurelius/dist/**/*.{js,mjs}',
|
|
22
|
-
],
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### 3. Configure ESLint (enforces design system)
|
|
27
|
-
|
|
28
|
-
```javascript
|
|
29
|
-
// eslint.config.js
|
|
30
|
-
import tailwindcss from 'eslint-plugin-tailwindcss';
|
|
31
|
-
|
|
32
|
-
export default [
|
|
33
|
-
{
|
|
34
|
-
plugins: { tailwindcss },
|
|
35
|
-
rules: {
|
|
36
|
-
'tailwindcss/no-arbitrary-value': 'error',
|
|
37
|
-
'tailwindcss/no-custom-classname': 'error',
|
|
38
|
-
},
|
|
39
|
-
settings: {
|
|
40
|
-
tailwindcss: { config: './tailwind.config.js' },
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
];
|
|
44
|
-
```
|
|
14
|
+
Create or update your `index.css`:
|
|
45
15
|
|
|
46
|
-
|
|
16
|
+
```css
|
|
17
|
+
/* Import the complete Aurelius design system (includes Tailwind v4, fonts, and theme) */
|
|
18
|
+
@import '@lukeashford/aurelius/styles/base.css';
|
|
47
19
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
"scripts": {
|
|
51
|
-
"lint": "eslint src --max-warnings 0",
|
|
52
|
-
"dev": "npm run lint && vite",
|
|
53
|
-
"build": "npm run lint && vite build"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
20
|
+
/* Tell Tailwind to scan the Aurelius package for utility classes */
|
|
21
|
+
@source "../node_modules/@lukeashford/aurelius/dist";
|
|
56
22
|
```
|
|
57
23
|
|
|
58
|
-
|
|
24
|
+
Then import it in your entry file:
|
|
59
25
|
|
|
60
26
|
```typescript
|
|
61
|
-
// main.tsx
|
|
62
|
-
import '@lukeashford/aurelius/styles/fonts.css'
|
|
27
|
+
// main.tsx or index.tsx
|
|
63
28
|
import './index.css'
|
|
64
29
|
```
|
|
65
30
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
31
|
+
### 3. Configure ESLint
|
|
32
|
+
|
|
33
|
+
Aurelius ships with a default ESLint config you can re-export in one line. It enforces design system
|
|
34
|
+
constraints — if ESLint complains, you're leaving the rails.
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
// eslint.config.mjs
|
|
38
|
+
export { default } from '@lukeashford/aurelius/eslint';
|
|
71
39
|
```
|
|
72
40
|
|
|
73
41
|
---
|
|
@@ -75,10 +43,10 @@ import './index.css'
|
|
|
75
43
|
## Rules (MUST follow)
|
|
76
44
|
|
|
77
45
|
1. **Dark mode only.** Use `bg-obsidian`, `bg-charcoal`, `bg-void`. Never white backgrounds.
|
|
78
|
-
2. **Text colors.** Use `text
|
|
46
|
+
2. **Text colors.** Use `text-white` for headings and primary content. Use `text-silver` for secondary text, descriptions, and metadata.
|
|
79
47
|
3. **Gold is for primary actions only.** Don't overuse `text-gold` or `bg-gold`.
|
|
80
48
|
4. **Use components first.** Check the Components table below before building custom elements.
|
|
81
|
-
5. **
|
|
49
|
+
5. **Stay on-system.** No custom/non-Aurelius class names, no arbitrary value utilities (`bg-[...]`, `text-[...]`, etc.), and follow Tailwind v4 CSS best practices in `.css` files.
|
|
82
50
|
6. **Subtle borders over shadows.** Prefer `border-ash` over heavy drop shadows.
|
|
83
51
|
|
|
84
52
|
---
|
|
@@ -89,23 +57,23 @@ Import from `@lukeashford/aurelius`:
|
|
|
89
57
|
|
|
90
58
|
| Component | Props |
|
|
91
59
|
|-----------|-------|
|
|
92
|
-
| Alert | variant, title |
|
|
93
|
-
| Avatar | src, alt, name, size, status |
|
|
94
|
-
| Badge | variant |
|
|
95
|
-
| Button | variant, size, loading |
|
|
96
|
-
| Card | variant, interactive |
|
|
60
|
+
| Alert | variant (info, success, warning, error), title |
|
|
61
|
+
| Avatar | src, alt, name, size (xs, sm, md, lg, xl, 2xl), status (online, offline, busy) |
|
|
62
|
+
| Badge | variant (default, gold, success, error, warning, info) |
|
|
63
|
+
| Button | variant (primary, important, elevated, outlined, featured, ghost, danger), size (sm, md, lg, xl), loading |
|
|
64
|
+
| Card | variant (default, elevated, outlined, ghost, featured), interactive |
|
|
97
65
|
| Checkbox | label |
|
|
98
66
|
| HelperText | error |
|
|
99
67
|
| Input | error, leadingIcon, trailingIcon |
|
|
100
68
|
| Label | required |
|
|
101
|
-
| Modal | isOpen,
|
|
69
|
+
| Modal | isOpen, title, children, className |
|
|
102
70
|
| Radio | label |
|
|
103
71
|
| Select | error, options |
|
|
104
72
|
| Skeleton | children |
|
|
105
|
-
| Spinner | size |
|
|
106
|
-
| Switch | checked, defaultChecked,
|
|
73
|
+
| Spinner | size (sm, md, lg) |
|
|
74
|
+
| Switch | checked, defaultChecked, label |
|
|
107
75
|
| Textarea | error |
|
|
108
|
-
| Tooltip | content, children, open, side |
|
|
76
|
+
| Tooltip | content, children, open, side (top, right, bottom, left) |
|
|
109
77
|
|
|
110
78
|
### Component usage example
|
|
111
79
|
|
|
@@ -130,19 +98,19 @@ Use ONLY these token-based classes. Arbitrary values like `bg-[#0a0a0a]` will fa
|
|
|
130
98
|
bg-void, bg-obsidian, bg-charcoal, bg-graphite, bg-slate, bg-ash, bg-gold, bg-gold-light, bg-gold-bright, bg-gold-muted, bg-gold-pale, bg-gold-glow, bg-white, bg-silver, bg-zinc, bg-dim, bg-success, bg-success-muted, bg-error, bg-error-muted, bg-warning, bg-warning-muted, bg-info, bg-info-muted
|
|
131
99
|
|
|
132
100
|
### Text (`text-*`)
|
|
133
|
-
text-
|
|
101
|
+
text-void, text-obsidian, text-charcoal, text-graphite, text-slate, text-ash, text-gold, text-gold-light, text-gold-bright, text-gold-muted, text-gold-pale, text-gold-glow, text-white, text-silver, text-zinc, text-dim, text-success, text-success-muted, text-error, text-error-muted, text-warning, text-warning-muted, text-info, text-info-muted
|
|
134
102
|
|
|
135
103
|
### Borders (`border-*`)
|
|
136
|
-
border-ash, border-gold, border-gold-muted, border-
|
|
104
|
+
border-void, border-obsidian, border-charcoal, border-graphite, border-slate, border-ash, border-gold, border-gold-light, border-gold-bright, border-gold-muted, border-gold-pale, border-gold-glow, border-white, border-silver, border-zinc, border-dim, border-success, border-success-muted, border-error, border-error-muted, border-warning, border-warning-muted, border-info, border-info-muted
|
|
105
|
+
|
|
106
|
+
### Typography
|
|
137
107
|
|
|
138
|
-
|
|
139
|
-
0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 64
|
|
108
|
+
**Font families:** `font-heading` ("Marcellus", serif), `font-body` ("Raleway", system-ui, sans-serif), `font-mono` ("JetBrains Mono", "Fira Code", "SF Mono", monospace)
|
|
140
109
|
|
|
141
|
-
|
|
142
|
-
none (preferred for Aurelius aesthetic), sm, md, lg, xl, 2xl, full
|
|
110
|
+
Standard Tailwind classes for size (`text-sm`, `text-lg`, etc.), weight (`font-medium`, `font-bold`), and spacing are available.
|
|
143
111
|
|
|
144
|
-
###
|
|
145
|
-
|
|
112
|
+
### Custom Utilities
|
|
113
|
+
text-gradient-gold, glow, glow-sm, glow-lg, scroll-smooth, scrollbar-hide, backdrop-glass, focus-ring, line-clamp-2, line-clamp-3, center-absolute
|
|
146
114
|
|
|
147
115
|
### Opacity modifiers
|
|
148
116
|
Append `/10`, `/20`, `/30`, etc. to colors: `bg-gold/20`, `border-ash/50`
|
|
@@ -167,14 +135,4 @@ Append `/10`, `/20`, `/30`, etc. to colors: `bg-gold/20`, `border-ash/50`
|
|
|
167
135
|
// ✅ Correct
|
|
168
136
|
<div className="bg-obsidian text-gold border border-ash p-4">
|
|
169
137
|
<Button variant="primary">Click</Button>
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
|
-
## Non-Tailwind fallback
|
|
175
|
-
|
|
176
|
-
If not using Tailwind, import precompiled CSS:
|
|
177
|
-
|
|
178
|
-
```typescript
|
|
179
|
-
import '@lukeashford/aurelius/styles/base.css'
|
|
180
138
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lukeashford/aurelius",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Design system for Aurelius applications — A cohesive visual language for creative technologists",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -11,44 +11,89 @@
|
|
|
11
11
|
"import": "./dist/index.mjs",
|
|
12
12
|
"require": "./dist/index.js"
|
|
13
13
|
},
|
|
14
|
-
"./
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
},
|
|
14
|
+
"./eslint": "./scripts/eslint.mjs",
|
|
15
|
+
"./styles/base.css": "./dist/styles/base.css",
|
|
16
|
+
"./styles/theme.css": "./dist/styles/theme.css",
|
|
17
|
+
"./styles/fonts.css": "./dist/styles/fonts.css",
|
|
19
18
|
"./styles/*": "./dist/styles/*",
|
|
20
19
|
"./llms.md": "./llms.md",
|
|
21
20
|
"./package.json": "./package.json"
|
|
22
21
|
},
|
|
23
22
|
"files": [
|
|
24
23
|
"dist",
|
|
24
|
+
"scripts/eslint.mjs",
|
|
25
25
|
"llms.md"
|
|
26
26
|
],
|
|
27
27
|
"scripts": {
|
|
28
|
-
"build
|
|
29
|
-
"build": "tsup && npm run build:css && node scripts/generate-manifest.js",
|
|
28
|
+
"build": "npm run typecheck && npm run lint && tsup && node scripts/generate-manifest.js",
|
|
30
29
|
"dev": "tsup --watch",
|
|
31
30
|
"typecheck": "tsc --noEmit",
|
|
31
|
+
"lint": "eslint src --max-warnings 0",
|
|
32
32
|
"prepublishOnly": "npm run build",
|
|
33
33
|
"dev:demo": "npm --prefix demo run dev",
|
|
34
34
|
"dev:all": "concurrently -k \"npm run dev\" \"npm run dev:demo\""
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
37
|
+
"@eslint/css": ">=0.9.0",
|
|
38
|
+
"@poupe/eslint-plugin-tailwindcss": ">=0.2.0",
|
|
39
|
+
"@typescript-eslint/parser": ">=8.0.0",
|
|
40
|
+
"eslint": ">=9.0.0",
|
|
41
|
+
"eslint-plugin-better-tailwindcss": ">=4.0.0-beta",
|
|
42
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
43
|
+
"react-dom": "^18.0.0 || ^19.0.0",
|
|
44
|
+
"tailwind-csstree": ">=0.1.0",
|
|
45
|
+
"tailwindcss": ">=4.0.0"
|
|
46
|
+
},
|
|
47
|
+
"peerDependenciesMeta": {
|
|
48
|
+
"tailwindcss": {
|
|
49
|
+
"optional": true
|
|
50
|
+
},
|
|
51
|
+
"eslint": {
|
|
52
|
+
"optional": true
|
|
53
|
+
},
|
|
54
|
+
"eslint-plugin-better-tailwindcss": {
|
|
55
|
+
"optional": true
|
|
56
|
+
},
|
|
57
|
+
"@poupe/eslint-plugin-tailwindcss": {
|
|
58
|
+
"optional": true
|
|
59
|
+
},
|
|
60
|
+
"@typescript-eslint/parser": {
|
|
61
|
+
"optional": true
|
|
62
|
+
},
|
|
63
|
+
"@eslint/css": {
|
|
64
|
+
"optional": true
|
|
65
|
+
},
|
|
66
|
+
"tailwind-csstree": {
|
|
67
|
+
"optional": true
|
|
68
|
+
}
|
|
40
69
|
},
|
|
41
70
|
"devDependencies": {
|
|
71
|
+
"@eslint/css": "^0.9.0",
|
|
72
|
+
"@poupe/eslint-plugin-tailwindcss": "^0.2.4",
|
|
73
|
+
"@testing-library/jest-dom": "^6.6.3",
|
|
74
|
+
"@testing-library/react": "^16.1.0",
|
|
75
|
+
"@testing-library/user-event": "^14.5.2",
|
|
76
|
+
"@types/jest": "^29.5.14",
|
|
42
77
|
"@types/node": "^20.0.0",
|
|
43
|
-
"@types/react": "^
|
|
44
|
-
"@types/react-dom": "^
|
|
78
|
+
"@types/react": "^19.2.7",
|
|
79
|
+
"@types/react-dom": "^19.2.3",
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
|
81
|
+
"@typescript-eslint/parser": "^8.49.0",
|
|
82
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
45
83
|
"concurrently": "^8.2.2",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
84
|
+
"eslint": "^9.0.0",
|
|
85
|
+
"eslint-plugin-better-tailwindcss": "^4.0.0-beta",
|
|
86
|
+
"jest": "^29.7.0",
|
|
87
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
88
|
+
"react": "^19.2.1",
|
|
89
|
+
"react-dom": "^19.2.1",
|
|
90
|
+
"tailwindcss": "^4.1.17",
|
|
91
|
+
"ts-jest": "^29.2.5",
|
|
92
|
+
"ts-node": "^10.9.2",
|
|
49
93
|
"tsup": "^8.0.0",
|
|
50
94
|
"tsx": "^4.7.0",
|
|
51
|
-
"typescript": "^5.0.0"
|
|
95
|
+
"typescript": "^5.0.0",
|
|
96
|
+
"vite": "^5.4.11"
|
|
52
97
|
},
|
|
53
98
|
"repository": {
|
|
54
99
|
"type": "git",
|