@lukeashford/aurelius 2.1.0 → 2.3.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.
@@ -4,5 +4,9 @@
4
4
  */
5
5
 
6
6
  @import 'tailwindcss';
7
+
7
8
  @import './fonts.css';
8
9
  @import './theme.css';
10
+ @import './prose.css';
11
+
12
+ @plugin "@tailwindcss/typography";
@@ -0,0 +1,61 @@
1
+ @utility prose {
2
+ /* Body text */
3
+ --tw-prose-body: var(--color-silver);
4
+ --tw-prose-headings: var(--color-gold);
5
+ --tw-prose-lead: var(--color-silver);
6
+ --tw-prose-links: var(--color-gold);
7
+ --tw-prose-bold: var(--color-white);
8
+ --tw-prose-counters: var(--color-gold-muted);
9
+ --tw-prose-bullets: var(--color-gold-muted);
10
+ --tw-prose-hr: var(--color-ash);
11
+ --tw-prose-quotes: var(--color-silver);
12
+ --tw-prose-quote-borders: var(--color-gold-muted);
13
+ --tw-prose-captions: var(--color-zinc);
14
+ --tw-prose-kbd: var(--color-white);
15
+ --tw-prose-kbd-shadows: 0 0 0 var(--color-ash);
16
+ --tw-prose-code: var(--color-gold-light);
17
+ --tw-prose-pre-code: var(--color-silver);
18
+ --tw-prose-pre-bg: var(--color-charcoal);
19
+ --tw-prose-th-borders: var(--color-ash);
20
+ --tw-prose-td-borders: var(--color-slate);
21
+
22
+ /* Invert variants (used with prose-invert) */
23
+ --tw-prose-invert-body: var(--color-silver);
24
+ --tw-prose-invert-headings: var(--color-gold);
25
+ --tw-prose-invert-lead: var(--color-silver);
26
+ --tw-prose-invert-links: var(--color-gold);
27
+ --tw-prose-invert-bold: var(--color-white);
28
+ --tw-prose-invert-counters: var(--color-gold-muted);
29
+ --tw-prose-invert-bullets: var(--color-gold-muted);
30
+ --tw-prose-invert-hr: var(--color-ash);
31
+ --tw-prose-invert-quotes: var(--color-silver);
32
+ --tw-prose-invert-quote-borders: var(--color-gold-muted);
33
+ --tw-prose-invert-captions: var(--color-zinc);
34
+ --tw-prose-invert-kbd: var(--color-white);
35
+ --tw-prose-invert-kbd-shadows: 0 0 0 var(--color-ash);
36
+ --tw-prose-invert-code: var(--color-gold-light);
37
+ --tw-prose-invert-pre-code: var(--color-silver);
38
+ --tw-prose-invert-pre-bg: var(--color-charcoal);
39
+ --tw-prose-invert-th-borders: var(--color-ash);
40
+ --tw-prose-invert-td-borders: var(--color-slate);
41
+ }
42
+
43
+ @utility prose-inherit {
44
+ --tw-prose-body: currentColor;
45
+ --tw-prose-headings: currentColor;
46
+ --tw-prose-lead: currentColor;
47
+ --tw-prose-links: currentColor;
48
+ --tw-prose-bold: currentColor;
49
+ --tw-prose-counters: currentColor;
50
+ --tw-prose-bullets: currentColor;
51
+ --tw-prose-hr: currentColor;
52
+ --tw-prose-quotes: currentColor;
53
+ --tw-prose-quote-borders: currentColor;
54
+ --tw-prose-captions: currentColor;
55
+ --tw-prose-kbd: currentColor;
56
+ --tw-prose-code: currentColor;
57
+ --tw-prose-pre-code: currentColor;
58
+ --tw-prose-pre-bg: transparent;
59
+ --tw-prose-th-borders: currentColor;
60
+ --tw-prose-td-borders: currentColor;
61
+ }
@@ -5,7 +5,6 @@
5
5
 
6
6
  @theme {
7
7
  /* ===== COLORS ===== */
8
-
9
8
  /* Black spectrum */
10
9
  --color-void: #000000;
11
10
  --color-obsidian: #0a0a0a;
@@ -14,13 +13,18 @@
14
13
  --color-slate: #2a2a2a;
15
14
  --color-ash: #3d3d3d;
16
15
 
17
- /* Gold spectrum */
16
+ /* Core RGB helpers (reduce repeated rgba() literals) */
17
+ --ink-rgb: 0 0 0;
18
+ --gold-rgb: 201 162 39;
19
+ --glass-rgb: 20 20 20;
20
+
21
+ /* Gold spectrum (derived from one base where possible) */
18
22
  --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);
23
+ --color-gold-light: color-mix(in oklab, var(--color-gold) 75%, white);
24
+ --color-gold-bright: color-mix(in oklab, var(--color-gold) 60%, white);
25
+ --color-gold-muted: color-mix(in oklab, var(--color-gold) 55%, #6b5a44);
26
+ --color-gold-pale: color-mix(in oklab, var(--color-gold) 25%, white);
27
+ --color-gold-glow: rgb(var(--gold-rgb) / 0.15);
24
28
 
25
29
  /* Neutrals */
26
30
  --color-white: #ffffff;
@@ -39,7 +43,6 @@
39
43
  --color-info-muted: #0369a1;
40
44
 
41
45
  /* ===== TYPOGRAPHY ===== */
42
-
43
46
  /* Font families */
44
47
  --font-heading: "Marcellus", serif;
45
48
  --font-body: "Raleway", system-ui, sans-serif;
@@ -112,8 +115,11 @@
112
115
  --spacing-16: 4rem;
113
116
  --spacing-20: 5rem;
114
117
  --spacing-24: 6rem;
118
+ --spacing-25: 6.25rem;
115
119
  --spacing-28: 7rem;
116
120
  --spacing-32: 8rem;
121
+ --spacing-cursor: 1.1em;
122
+ --spacing-cursor-offset: 0.1em;
117
123
 
118
124
  /* ===== BORDER RADIUS ===== */
119
125
  --radius-sm: 0.125rem;
@@ -125,19 +131,31 @@
125
131
  --radius-full: 9999px;
126
132
 
127
133
  /* ===== 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);
134
+ --shadow-sm: 0 1px 2px 0 rgb(var(--ink-rgb) / 0.4);
135
+ --shadow-md: 0 4px 6px -1px rgb(var(--ink-rgb) / 0.4),
136
+ 0 2px 4px -2px rgb(var(--ink-rgb) / 0.3);
137
+ --shadow-lg: 0 10px 15px -3px rgb(var(--ink-rgb) / 0.4),
138
+ 0 4px 6px -4px rgb(var(--ink-rgb) / 0.3);
139
+ --shadow-xl: 0 20px 25px -5px rgb(var(--ink-rgb) / 0.4),
140
+ 0 8px 10px -6px rgb(var(--ink-rgb) / 0.3);
141
+ --shadow-2xl: 0 25px 50px -12px rgb(var(--ink-rgb) / 0.5);
142
+
143
+ --shadow-glow: 0 0 20px rgb(var(--gold-rgb) / 0.3);
144
+ --shadow-glow-sm: 0 0 10px rgb(var(--gold-rgb) / 0.2);
145
+ --shadow-glow-md: 0 0 15px rgb(var(--gold-rgb) / 0.3);
146
+ --shadow-glow-lg: 0 0 40px rgb(var(--gold-rgb) / 0.4);
147
+
148
+ --shadow-inner: inset 0 2px 4px 0 rgb(var(--ink-rgb) / 0.3);
137
149
 
138
150
  /* ===== TRANSITIONS ===== */
139
-
140
- /* Durations */
151
+ /* Durations - use --transition-duration-* for Tailwind v4 duration-* utilities */
152
+ --transition-duration-instant: 75ms;
153
+ --transition-duration-fast: 150ms;
154
+ --transition-duration-normal: 200ms;
155
+ --transition-duration-slow: 300ms;
156
+ --transition-duration-slower: 500ms;
157
+
158
+ /* Legacy duration aliases for CSS usage */
141
159
  --duration-instant: 75ms;
142
160
  --duration-fast: 150ms;
143
161
  --duration-normal: 200ms;
@@ -148,37 +166,84 @@
148
166
  --ease-smooth: cubic-bezier(0.16, 1, 0.3, 1);
149
167
  --ease-snap: cubic-bezier(0.5, 0, 0.1, 1);
150
168
 
169
+ /* ===== ASPECT RATIOS ===== */
170
+ --aspect-ratio-wide: 21 / 9;
171
+
151
172
  /* ===== ANIMATIONS ===== */
152
173
  --animate-fade-in: fade-in 200ms ease-out;
153
174
  --animate-fade-out: fade-out 150ms ease-in;
154
175
  --animate-slide-in-right: slide-in-right 300ms var(--ease-smooth);
155
176
  --animate-slide-out-right: slide-out-right 200ms ease-in;
156
177
  --animate-pulse-glow: pulse-glow 2s ease-in-out infinite;
178
+ --animate-cursor-blink: cursor-blink 1s steps(1) infinite;
179
+
180
+ /* ===== LAYOUT TOKENS ===== */
181
+ --container-sm: 640px;
182
+ --container-md: 768px;
183
+ --container-lg: 1024px;
184
+ --container-xl: 1280px;
185
+ --container-2xl: 1536px;
157
186
  }
158
187
 
159
188
  @keyframes fade-in {
160
- 0% { opacity: 0; }
161
- 100% { opacity: 1; }
189
+ 0% {
190
+ opacity: 0;
191
+ }
192
+ 100% {
193
+ opacity: 1;
194
+ }
162
195
  }
163
196
 
164
197
  @keyframes fade-out {
165
- 0% { opacity: 1; }
166
- 100% { opacity: 0; }
198
+ 0% {
199
+ opacity: 1;
200
+ }
201
+ 100% {
202
+ opacity: 0;
203
+ }
167
204
  }
168
205
 
169
206
  @keyframes slide-in-right {
170
- 0% { transform: translateX(100%); opacity: 0; }
171
- 100% { transform: translateX(0); opacity: 1; }
207
+ 0% {
208
+ transform: translateX(100%);
209
+ opacity: 0;
210
+ }
211
+ 100% {
212
+ transform: translateX(0);
213
+ opacity: 1;
214
+ }
172
215
  }
173
216
 
174
217
  @keyframes slide-out-right {
175
- 0% { transform: translateX(0); opacity: 1; }
176
- 100% { transform: translateX(100%); opacity: 0; }
218
+ 0% {
219
+ transform: translateX(0);
220
+ opacity: 1;
221
+ }
222
+ 100% {
223
+ transform: translateX(100%);
224
+ opacity: 0;
225
+ }
177
226
  }
178
227
 
179
228
  @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); }
229
+ 0%,
230
+ 100% {
231
+ box-shadow: 0 0 20px rgb(var(--gold-rgb) / 0.3);
232
+ }
233
+ 50% {
234
+ box-shadow: 0 0 30px rgb(var(--gold-rgb) / 0.5);
235
+ }
236
+ }
237
+
238
+ @keyframes cursor-blink {
239
+ 0%,
240
+ 50% {
241
+ opacity: 1;
242
+ }
243
+ 51%,
244
+ 100% {
245
+ opacity: 0;
246
+ }
182
247
  }
183
248
 
184
249
  /* ===== BASE STYLES (applied via @layer base) ===== */
@@ -202,11 +267,14 @@
202
267
  width: 100%;
203
268
  }
204
269
 
205
- table, th, td {
270
+ table,
271
+ th,
272
+ td {
206
273
  border: 1px solid var(--color-gold-muted);
207
274
  }
208
275
 
209
- th, td {
276
+ th,
277
+ td {
210
278
  padding: 0.5rem 0.75rem;
211
279
  }
212
280
 
@@ -238,22 +306,58 @@
238
306
  }
239
307
 
240
308
  /* Headings */
241
- h1, h2, h3, h4, h5, h6 {
309
+ h1,
310
+ h2,
311
+ h3,
312
+ h4,
313
+ h5,
314
+ h6 {
242
315
  font-family: var(--font-heading);
243
316
  font-weight: 600;
244
317
  letter-spacing: -0.025em;
245
318
  color: var(--color-white);
246
319
  }
247
320
 
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; }
321
+ h1,
322
+ h2 {
323
+ color: var(--color-gold);
324
+ }
325
+
326
+ h1 {
327
+ font-size: 2.25rem;
328
+ line-height: 1.25;
329
+ }
330
+
331
+ h2 {
332
+ font-size: 1.875rem;
333
+ line-height: 1.25;
334
+ }
335
+
336
+ h3 {
337
+ font-size: 1.5rem;
338
+ line-height: 1.375;
339
+ }
340
+
341
+ h4 {
342
+ font-size: 1.25rem;
343
+ line-height: 1.375;
344
+ }
345
+
346
+ h5 {
347
+ font-size: 1.125rem;
348
+ line-height: 1.5;
349
+ }
350
+
351
+ h6 {
352
+ font-size: 1rem;
353
+ line-height: 1.5;
354
+ }
254
355
 
255
356
  /* Code */
256
- code, pre, kbd, samp {
357
+ code,
358
+ pre,
359
+ kbd,
360
+ samp {
257
361
  font-family: var(--font-mono);
258
362
  font-size: 0.875em;
259
363
  }
@@ -303,7 +407,12 @@
303
407
 
304
408
  /* ===== UTILITY CLASSES ===== */
305
409
  @utility text-gradient-gold {
306
- background: linear-gradient(to right, var(--color-gold), var(--color-gold-light), var(--color-gold));
410
+ background: linear-gradient(
411
+ to right,
412
+ var(--color-gold),
413
+ var(--color-gold-light),
414
+ var(--color-gold)
415
+ );
307
416
  -webkit-background-clip: text;
308
417
  background-clip: text;
309
418
  color: transparent;
@@ -317,6 +426,10 @@
317
426
  box-shadow: var(--shadow-glow-sm);
318
427
  }
319
428
 
429
+ @utility glow-md {
430
+ box-shadow: var(--shadow-glow-md);
431
+ }
432
+
320
433
  @utility glow-lg {
321
434
  box-shadow: var(--shadow-glow-lg);
322
435
  }
@@ -336,12 +449,12 @@
336
449
 
337
450
  @utility backdrop-glass {
338
451
  backdrop-filter: blur(12px);
339
- background-color: rgba(20, 20, 20, 0.8);
452
+ background-color: rgb(var(--glass-rgb) / 0.8);
340
453
  }
341
454
 
342
455
  @utility focus-ring {
343
456
  &:focus-visible {
344
- outline: 2px solid #c9a227;
457
+ outline: 2px solid var(--color-gold);
345
458
  outline-offset: 2px;
346
459
  }
347
460
  }
@@ -366,3 +479,78 @@
366
479
  left: 50%;
367
480
  transform: translate(-50%, -50%);
368
481
  }
482
+
483
+ @utility aspect-wide {
484
+ aspect-ratio: var(--aspect-ratio-wide);
485
+ }
486
+
487
+ /* ===== LAYOUT COMPONENTS ===== */
488
+ /* Container - Responsive max-width wrapper with horizontal padding */
489
+ @utility container {
490
+ width: 100%;
491
+ margin-inline: auto;
492
+ padding-inline: var(--spacing-4);
493
+
494
+ @media (min-width: 640px) {
495
+ max-width: var(--container-sm);
496
+ }
497
+
498
+ @media (min-width: 768px) {
499
+ max-width: var(--container-md);
500
+ }
501
+
502
+ @media (min-width: 1024px) {
503
+ max-width: var(--container-lg);
504
+ }
505
+
506
+ @media (min-width: 1280px) {
507
+ max-width: var(--container-xl);
508
+ }
509
+
510
+ @media (min-width: 1536px) {
511
+ max-width: var(--container-2xl);
512
+ }
513
+ }
514
+
515
+ /* Container size variants */
516
+ @utility container-sm {
517
+ width: 100%;
518
+ max-width: var(--container-sm);
519
+ margin-inline: auto;
520
+ padding-inline: var(--spacing-4);
521
+ }
522
+
523
+ @utility container-md {
524
+ width: 100%;
525
+ max-width: var(--container-md);
526
+ margin-inline: auto;
527
+ padding-inline: var(--spacing-4);
528
+ }
529
+
530
+ @utility container-lg {
531
+ width: 100%;
532
+ max-width: var(--container-lg);
533
+ margin-inline: auto;
534
+ padding-inline: var(--spacing-4);
535
+ }
536
+
537
+ @utility container-xl {
538
+ width: 100%;
539
+ max-width: var(--container-xl);
540
+ margin-inline: auto;
541
+ padding-inline: var(--spacing-4);
542
+ }
543
+
544
+ @utility container-fluid {
545
+ width: 100%;
546
+ padding-inline: var(--spacing-4);
547
+ }
548
+
549
+ /* Row - CSS Grid-based 12-column layout
550
+ * Uses CSS Grid instead of flexbox for cleaner, modern layout.
551
+ * Children use Tailwind's col-span-* utilities (e.g., col-span-6, md:col-span-4).
552
+ */
553
+ @utility row {
554
+ display: grid;
555
+ grid-template-columns: repeat(12, minmax(0, 1fr));
556
+ }
package/llms.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```bash
8
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
+ npm install -D tailwindcss postcss @tailwindcss/postcss eslint @typescript-eslint/parser eslint-plugin-better-tailwindcss @poupe/eslint-plugin-tailwindcss @eslint/css tailwind-csstree
10
10
  ```
11
11
 
12
12
  ### 2. Import the design system
@@ -57,22 +57,51 @@ Import from `@lukeashford/aurelius`:
57
57
 
58
58
  | Component | Props |
59
59
  |-----------|-------|
60
+ | Accordion | defaultValue, value |
60
61
  | Alert | variant (info, success, warning, error), title |
61
62
  | Avatar | src, alt, name, size (xs, sm, md, lg, xl, 2xl), status (online, offline, busy) |
62
63
  | Badge | variant (default, gold, success, error, warning, info) |
64
+ | BrandIcon | size (sm, md, lg), variant (solid, outline) |
65
+ | Breadcrumb | separator |
63
66
  | Button | variant (primary, important, elevated, outlined, featured, ghost, danger), size (sm, md, lg, xl), loading |
64
- | Card | variant (default, elevated, outlined, ghost, featured), interactive |
67
+ | Card | variant (default, elevated, outlined, ghost, featured), interactive, selected, noPadding |
68
+ | ChatHistory | messages |
65
69
  | Checkbox | label |
70
+ | Col | children |
71
+ | ColorSwatch | color, label |
72
+ | Container | size (sm, md, lg, xl, fluid, responsive) |
73
+ | Dialog | description, confirmText, cancelText, isLoading |
74
+ | Divider | orientation (horizontal, vertical), variant (solid, dashed, dotted), label |
75
+ | Drawer | isOpen, position (left, right, top, bottom), title, children, className |
66
76
  | HelperText | error |
77
+ | ImageCard | src, alt, title, subtitle, aspectRatio (${number}/${number}), overlay, mediaClassName, contentClassName |
67
78
  | Input | error, leadingIcon, trailingIcon |
79
+ | InputGroup | children |
68
80
  | Label | required |
81
+ | List | ordered |
82
+ | MarkdownContent | content, sanitizeConfig |
83
+ | Menu | children, open |
84
+ | Message | variant (user, assistant), content, isStreaming |
69
85
  | Modal | isOpen, title, children, className |
86
+ | Navbar | fixed, bordered |
87
+ | Pagination | page, totalPages, siblingCount, showEdges |
88
+ | Popover | children, trigger, position (top, bottom, left, right), align (start, center, end), open, closeOnClickOutside |
89
+ | Progress | value, max, size (sm, md, lg), variant (default, success, warning, error), showValue, indeterminate |
70
90
  | Radio | label |
91
+ | Row | gutter, gutterX, gutterY, justify (start, center, end, between, around, evenly), align (start, center, end, stretch, baseline) |
92
+ | SectionHeading | level (h2, h3) |
71
93
  | Select | error, options |
72
94
  | Skeleton | children |
95
+ | Slider | value, defaultValue, min, max, step, disabled, showTooltip |
73
96
  | Spinner | size (sm, md, lg) |
97
+ | Stack | direction (horizontal, vertical), align (start, center, end, stretch, baseline), justify (start, center, end, between, around, evenly), gap, wrap |
98
+ | Stepper | steps, currentStep, status (complete, error) |
99
+ | StreamingCursor | children |
74
100
  | Switch | checked, defaultChecked, label |
101
+ | Table | responsive |
102
+ | Tabs | defaultValue, value |
75
103
  | Textarea | error |
104
+ | Toast | children, position (top-right, top-left, bottom-right, bottom-left, top-center, bottom-center), defaultDuration |
76
105
  | Tooltip | content, children, open, side (top, right, bottom, left) |
77
106
 
78
107
  ### Component usage example
@@ -109,8 +138,15 @@ border-void, border-obsidian, border-charcoal, border-graphite, border-slate, bo
109
138
 
110
139
  Standard Tailwind classes for size (`text-sm`, `text-lg`, etc.), weight (`font-medium`, `font-bold`), and spacing are available.
111
140
 
141
+ ### Layout Classes
142
+ **Containers:** `container`, `container-sm`, `container-md`, `container-lg`, `container-xl`, `container-fluid`
143
+
144
+ **Grid:** `row` (creates 12-column CSS Grid)
145
+
146
+ **Columns (Tailwind built-in):** `col-span-{1-12}`, `col-span-full`, `col-auto`, `sm:col-span-*`, `md:col-span-*`, `lg:col-span-*`, `xl:col-span-*`
147
+
112
148
  ### 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
149
+ text-gradient-gold, glow, glow-sm, glow-md, glow-lg, scroll-smooth, scrollbar-hide, backdrop-glass, focus-ring, line-clamp-2, line-clamp-3, center-absolute, aspect-wide, container, container-sm, container-md, container-lg, container-xl, container-fluid, row
114
150
 
115
151
  ### Opacity modifiers
116
152
  Append `/10`, `/20`, `/30`, etc. to colors: `bg-gold/20`, `border-ash/50`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukeashford/aurelius",
3
- "version": "2.1.0",
3
+ "version": "2.3.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",
@@ -12,9 +12,6 @@
12
12
  "require": "./dist/index.js"
13
13
  },
14
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",
18
15
  "./styles/*": "./dist/styles/*",
19
16
  "./llms.md": "./llms.md",
20
17
  "./package.json": "./package.json"
@@ -24,6 +21,12 @@
24
21
  "scripts/eslint.mjs",
25
22
  "llms.md"
26
23
  ],
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+ "engines": {
28
+ "node": ">=22.14.0"
29
+ },
27
30
  "scripts": {
28
31
  "build": "npm run typecheck && npm run lint && tsup && node scripts/generate-manifest.js",
29
32
  "dev": "tsup --watch",
@@ -31,7 +34,8 @@
31
34
  "lint": "eslint src --max-warnings 0",
32
35
  "prepublishOnly": "npm run build",
33
36
  "dev:demo": "npm --prefix demo run dev",
34
- "dev:all": "concurrently -k \"npm run dev\" \"npm run dev:demo\""
37
+ "dev:all": "concurrently -k \"npm run dev\" \"npm run dev:demo\"",
38
+ "test": "npm run build && npm --prefix demo run test && npm --prefix demo run test:e2e"
35
39
  },
36
40
  "peerDependencies": {
37
41
  "@eslint/css": ">=0.9.0",
@@ -68,11 +72,17 @@
68
72
  }
69
73
  },
70
74
  "devDependencies": {
75
+ "@commitlint/cli": "*",
76
+ "@commitlint/config-conventional": "*",
71
77
  "@eslint/css": "^0.9.0",
72
78
  "@poupe/eslint-plugin-tailwindcss": "^0.2.4",
79
+ "@semantic-release/changelog": "*",
80
+ "@semantic-release/git": "*",
81
+ "@semantic-release/github": "*",
73
82
  "@testing-library/jest-dom": "^6.6.3",
74
83
  "@testing-library/react": "^16.1.0",
75
84
  "@testing-library/user-event": "^14.5.2",
85
+ "@types/dompurify": "^3.0.5",
76
86
  "@types/jest": "^29.5.14",
77
87
  "@types/node": "^20.0.0",
78
88
  "@types/react": "^19.2.7",
@@ -81,12 +91,14 @@
81
91
  "@typescript-eslint/parser": "^8.49.0",
82
92
  "@vitejs/plugin-react": "^4.3.4",
83
93
  "concurrently": "^8.2.2",
94
+ "conventional-changelog-conventionalcommits": "*",
84
95
  "eslint": "^9.0.0",
85
96
  "eslint-plugin-better-tailwindcss": "^4.0.0-beta",
86
97
  "jest": "^29.7.0",
87
98
  "jest-environment-jsdom": "^29.7.0",
88
99
  "react": "^19.2.1",
89
100
  "react-dom": "^19.2.1",
101
+ "semantic-release": "*",
90
102
  "tailwindcss": "^4.1.17",
91
103
  "ts-jest": "^29.2.5",
92
104
  "ts-node": "^10.9.2",
@@ -110,6 +122,8 @@
110
122
  "author": "Your Name",
111
123
  "license": "MIT",
112
124
  "dependencies": {
125
+ "@tailwindcss/typography": "^0.5.15",
126
+ "dompurify": "^3.3.1",
113
127
  "lucide-react": "^0.555.0"
114
128
  }
115
129
  }