@rafael_dias/akoma 0.4.0 → 0.8.1
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/README.md +27 -4
- package/content/README.md +2 -0
- package/content/colors.md +79 -0
- package/content/decisions.md +3 -3
- package/content/icons.md +76 -0
- package/content/implementation.md +1 -1
- package/content/moods.md +12 -0
- package/dist/akoma.cjs +1 -1
- package/dist/akoma.css +1 -1
- package/dist/akoma.js +453 -231
- package/dist/index.d.ts +180 -12
- package/package.json +5 -2
- package/src/styles/accent-palettes.css +239 -0
- package/src/styles/index.css +1 -0
- package/src/styles/motion.css +8 -0
- package/src/styles/tokens.css +43 -71
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { cIcons } from '../../node_modules/@sysvale/cuida-icons/dist/index.js';
|
|
1
2
|
import { ComponentOptionsMixin } from 'vue';
|
|
2
3
|
import { ComponentProvideOptions } from 'vue';
|
|
3
4
|
import { DefineComponent } from 'vue';
|
|
@@ -13,6 +14,20 @@ type: "button" | "submit" | "reset";
|
|
|
13
14
|
block: boolean;
|
|
14
15
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;
|
|
15
16
|
|
|
17
|
+
declare const __VLS_component_10: DefineComponent<__VLS_Props_17, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
18
|
+
"update:modelValue": (value: string) => any;
|
|
19
|
+
}, string, PublicProps, Readonly<__VLS_Props_17> & Readonly<{
|
|
20
|
+
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
21
|
+
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
22
|
+
trackRef: HTMLDivElement;
|
|
23
|
+
}, HTMLElement>;
|
|
24
|
+
|
|
25
|
+
declare const __VLS_component_11: DefineComponent<__VLS_Props_18, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_18> & Readonly<{}>, {
|
|
26
|
+
disabled: boolean;
|
|
27
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
28
|
+
itemRef: HTMLButtonElement;
|
|
29
|
+
}, HTMLButtonElement>;
|
|
30
|
+
|
|
16
31
|
declare const __VLS_component_2: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_2> & Readonly<{}>, {
|
|
17
32
|
variant: BadgeVariant;
|
|
18
33
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
@@ -33,18 +48,18 @@ padding: "none" | "sm" | "md" | "lg";
|
|
|
33
48
|
|
|
34
49
|
declare const __VLS_component_5: DefineComponent<__VLS_Props_7, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_7> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
35
50
|
|
|
36
|
-
declare const __VLS_component_6: DefineComponent<
|
|
51
|
+
declare const __VLS_component_6: DefineComponent<__VLS_Props_13, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_13> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLElement>;
|
|
37
52
|
|
|
38
53
|
declare const __VLS_component_7: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLUListElement>;
|
|
39
54
|
|
|
40
|
-
declare const __VLS_component_8: DefineComponent<
|
|
55
|
+
declare const __VLS_component_8: DefineComponent<__VLS_Props_14, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_14> & Readonly<{}>, {
|
|
41
56
|
disabled: boolean;
|
|
42
57
|
interactive: boolean;
|
|
43
58
|
padding: ListRowPadding;
|
|
44
59
|
divider: boolean;
|
|
45
60
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
46
61
|
|
|
47
|
-
declare const __VLS_component_9: DefineComponent<
|
|
62
|
+
declare const __VLS_component_9: DefineComponent<__VLS_Props_15, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_15> & Readonly<{}>, {
|
|
48
63
|
variant: IconButtonVariant;
|
|
49
64
|
size: IconButtonSize;
|
|
50
65
|
disabled: boolean;
|
|
@@ -62,6 +77,13 @@ declare type __VLS_Props = {
|
|
|
62
77
|
};
|
|
63
78
|
|
|
64
79
|
declare type __VLS_Props_10 = {
|
|
80
|
+
name: CuidaIconName;
|
|
81
|
+
size?: number | string;
|
|
82
|
+
/** Accessible label — omit when decorative inside labelled controls */
|
|
83
|
+
label?: string;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
declare type __VLS_Props_11 = {
|
|
65
87
|
/** Horizontal spacing around the line */
|
|
66
88
|
spacing?: DividerSpacing;
|
|
67
89
|
/** Optional centered label */
|
|
@@ -69,7 +91,7 @@ declare type __VLS_Props_10 = {
|
|
|
69
91
|
vertical?: boolean;
|
|
70
92
|
};
|
|
71
93
|
|
|
72
|
-
declare type
|
|
94
|
+
declare type __VLS_Props_12 = {
|
|
73
95
|
/** Current value */
|
|
74
96
|
value?: number;
|
|
75
97
|
max?: number;
|
|
@@ -80,33 +102,46 @@ declare type __VLS_Props_11 = {
|
|
|
80
102
|
showValue?: boolean;
|
|
81
103
|
};
|
|
82
104
|
|
|
83
|
-
declare type
|
|
105
|
+
declare type __VLS_Props_13 = {
|
|
84
106
|
title?: string;
|
|
85
107
|
};
|
|
86
108
|
|
|
87
|
-
declare type
|
|
109
|
+
declare type __VLS_Props_14 = {
|
|
88
110
|
interactive?: boolean;
|
|
89
111
|
disabled?: boolean;
|
|
90
112
|
padding?: ListRowPadding;
|
|
91
113
|
divider?: boolean;
|
|
92
114
|
};
|
|
93
115
|
|
|
94
|
-
declare type
|
|
116
|
+
declare type __VLS_Props_15 = {
|
|
95
117
|
variant?: IconButtonVariant;
|
|
96
118
|
size?: IconButtonSize;
|
|
97
119
|
disabled?: boolean;
|
|
98
120
|
loading?: boolean;
|
|
99
121
|
type?: 'button' | 'submit' | 'reset';
|
|
100
122
|
label: string;
|
|
123
|
+
/** Cuida Icons name — preferred over the default slot */
|
|
124
|
+
icon?: CuidaIconName;
|
|
101
125
|
};
|
|
102
126
|
|
|
103
|
-
declare type
|
|
127
|
+
declare type __VLS_Props_16 = {
|
|
104
128
|
modelValue?: boolean;
|
|
105
129
|
label?: string;
|
|
106
130
|
description?: string;
|
|
107
131
|
disabled?: boolean;
|
|
108
132
|
};
|
|
109
133
|
|
|
134
|
+
declare type __VLS_Props_17 = {
|
|
135
|
+
modelValue: string;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
declare type __VLS_Props_18 = {
|
|
139
|
+
value: string;
|
|
140
|
+
label: string;
|
|
141
|
+
icon?: CuidaIconName;
|
|
142
|
+
disabled?: boolean;
|
|
143
|
+
};
|
|
144
|
+
|
|
110
145
|
declare type __VLS_Props_2 = {
|
|
111
146
|
variant?: BadgeVariant;
|
|
112
147
|
label?: string;
|
|
@@ -179,6 +214,30 @@ declare function __VLS_template(): {
|
|
|
179
214
|
rootEl: HTMLButtonElement;
|
|
180
215
|
};
|
|
181
216
|
|
|
217
|
+
declare function __VLS_template_10(): {
|
|
218
|
+
attrs: Partial<{}>;
|
|
219
|
+
slots: {
|
|
220
|
+
default?(_: {}): any;
|
|
221
|
+
};
|
|
222
|
+
refs: {
|
|
223
|
+
trackRef: HTMLDivElement;
|
|
224
|
+
};
|
|
225
|
+
rootEl: HTMLElement;
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
declare function __VLS_template_11(): {
|
|
229
|
+
attrs: Partial<{}>;
|
|
230
|
+
slots: Readonly<{
|
|
231
|
+
icon?: () => unknown;
|
|
232
|
+
}> & {
|
|
233
|
+
icon?: () => unknown;
|
|
234
|
+
};
|
|
235
|
+
refs: {
|
|
236
|
+
itemRef: HTMLButtonElement;
|
|
237
|
+
};
|
|
238
|
+
rootEl: HTMLButtonElement;
|
|
239
|
+
};
|
|
240
|
+
|
|
182
241
|
declare function __VLS_template_2(): {
|
|
183
242
|
attrs: Partial<{}>;
|
|
184
243
|
slots: Readonly<{
|
|
@@ -283,6 +342,10 @@ declare function __VLS_template_9(): {
|
|
|
283
342
|
|
|
284
343
|
declare type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
285
344
|
|
|
345
|
+
declare type __VLS_TemplateResult_10 = ReturnType<typeof __VLS_template_10>;
|
|
346
|
+
|
|
347
|
+
declare type __VLS_TemplateResult_11 = ReturnType<typeof __VLS_template_11>;
|
|
348
|
+
|
|
286
349
|
declare type __VLS_TemplateResult_2 = ReturnType<typeof __VLS_template_2>;
|
|
287
350
|
|
|
288
351
|
declare type __VLS_TemplateResult_3 = ReturnType<typeof __VLS_template_3>;
|
|
@@ -305,6 +368,18 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
|
|
|
305
368
|
};
|
|
306
369
|
};
|
|
307
370
|
|
|
371
|
+
declare type __VLS_WithTemplateSlots_10<T, S> = T & {
|
|
372
|
+
new (): {
|
|
373
|
+
$slots: S;
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
declare type __VLS_WithTemplateSlots_11<T, S> = T & {
|
|
378
|
+
new (): {
|
|
379
|
+
$slots: S;
|
|
380
|
+
};
|
|
381
|
+
};
|
|
382
|
+
|
|
308
383
|
declare type __VLS_WithTemplateSlots_2<T, S> = T & {
|
|
309
384
|
new (): {
|
|
310
385
|
$slots: S;
|
|
@@ -353,6 +428,75 @@ declare type __VLS_WithTemplateSlots_9<T, S> = T & {
|
|
|
353
428
|
};
|
|
354
429
|
};
|
|
355
430
|
|
|
431
|
+
export declare type AccentPalette = keyof typeof accentPalettes;
|
|
432
|
+
|
|
433
|
+
export declare const accentPaletteIds: AccentPalette[];
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Named accent palettes for Akoma.
|
|
437
|
+
* Set on `<html data-accent="teal">` or override CSS variables in your app.
|
|
438
|
+
*
|
|
439
|
+
* Each palette has three chromatic shades: light · base · dark.
|
|
440
|
+
*/
|
|
441
|
+
export declare const accentPalettes: {
|
|
442
|
+
readonly violet: {
|
|
443
|
+
readonly label: "Violet";
|
|
444
|
+
readonly description: "Mineral violet — default for App mood.";
|
|
445
|
+
readonly sample: "#6658b8";
|
|
446
|
+
readonly light: "#8578c9";
|
|
447
|
+
readonly dark: "#4f4299";
|
|
448
|
+
};
|
|
449
|
+
readonly evergreen: {
|
|
450
|
+
readonly label: "Evergreen";
|
|
451
|
+
readonly description: "Confident green — default for Site mood.";
|
|
452
|
+
readonly sample: "#2e684f";
|
|
453
|
+
readonly light: "#3f8566";
|
|
454
|
+
readonly dark: "#1f4a37";
|
|
455
|
+
};
|
|
456
|
+
readonly teal: {
|
|
457
|
+
readonly label: "Teal";
|
|
458
|
+
readonly description: "Calm mineral teal for productivity and wellness apps.";
|
|
459
|
+
readonly sample: "#3a7d85";
|
|
460
|
+
readonly light: "#4f96a0";
|
|
461
|
+
readonly dark: "#2a5f66";
|
|
462
|
+
};
|
|
463
|
+
readonly ocean: {
|
|
464
|
+
readonly label: "Ocean";
|
|
465
|
+
readonly description: "Trustworthy blue for data-heavy products.";
|
|
466
|
+
readonly sample: "#3d6a94";
|
|
467
|
+
readonly light: "#5584ad";
|
|
468
|
+
readonly dark: "#2d5174";
|
|
469
|
+
};
|
|
470
|
+
readonly amber: {
|
|
471
|
+
readonly label: "Amber";
|
|
472
|
+
readonly description: "Warm gold for optimistic, human interfaces.";
|
|
473
|
+
readonly sample: "#9a702d";
|
|
474
|
+
readonly light: "#b8893f";
|
|
475
|
+
readonly dark: "#7a5720";
|
|
476
|
+
};
|
|
477
|
+
readonly rose: {
|
|
478
|
+
readonly label: "Rose";
|
|
479
|
+
readonly description: "Dusty rose for lifestyle and creative tools.";
|
|
480
|
+
readonly sample: "#a8586a";
|
|
481
|
+
readonly light: "#c07082";
|
|
482
|
+
readonly dark: "#8a4556";
|
|
483
|
+
};
|
|
484
|
+
readonly coral: {
|
|
485
|
+
readonly label: "Coral";
|
|
486
|
+
readonly description: "Terracotta warmth without feeling playful.";
|
|
487
|
+
readonly sample: "#b5644a";
|
|
488
|
+
readonly light: "#cd7d62";
|
|
489
|
+
readonly dark: "#944f39";
|
|
490
|
+
};
|
|
491
|
+
readonly slate: {
|
|
492
|
+
readonly label: "Slate";
|
|
493
|
+
readonly description: "Blue-gray for neutral B2B surfaces.";
|
|
494
|
+
readonly sample: "#4a5d73";
|
|
495
|
+
readonly light: "#627890";
|
|
496
|
+
readonly dark: "#384858";
|
|
497
|
+
};
|
|
498
|
+
};
|
|
499
|
+
|
|
356
500
|
export declare const AkAmbientBg: DefineComponent<__VLS_Props_9, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_9> & Readonly<{}>, {
|
|
357
501
|
contained: boolean;
|
|
358
502
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
@@ -365,13 +509,17 @@ export declare const AkCard: __VLS_WithTemplateSlots_4<typeof __VLS_component_4,
|
|
|
365
509
|
|
|
366
510
|
export declare const AkChip: __VLS_WithTemplateSlots_3<typeof __VLS_component_3, __VLS_TemplateResult_3["slots"]>;
|
|
367
511
|
|
|
368
|
-
export declare const AkDivider: DefineComponent<
|
|
512
|
+
export declare const AkDivider: DefineComponent<__VLS_Props_11, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_11> & Readonly<{}>, {
|
|
369
513
|
spacing: DividerSpacing;
|
|
370
514
|
vertical: boolean;
|
|
371
515
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
372
516
|
|
|
373
517
|
export declare const AkEmptyState: __VLS_WithTemplateSlots_5<typeof __VLS_component_5, __VLS_TemplateResult_5["slots"]>;
|
|
374
518
|
|
|
519
|
+
export declare const AkIcon: DefineComponent<__VLS_Props_10, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_10> & Readonly<{}>, {
|
|
520
|
+
size: number | string;
|
|
521
|
+
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLSpanElement>;
|
|
522
|
+
|
|
375
523
|
export declare const AkIconButton: __VLS_WithTemplateSlots_9<typeof __VLS_component_9, __VLS_TemplateResult_9["slots"]>;
|
|
376
524
|
|
|
377
525
|
export declare const AkInput: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
@@ -397,7 +545,7 @@ export declare type AkomaOptions = {
|
|
|
397
545
|
prefix?: string;
|
|
398
546
|
};
|
|
399
547
|
|
|
400
|
-
export declare const AkProgress: DefineComponent<
|
|
548
|
+
export declare const AkProgress: DefineComponent<__VLS_Props_12, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_12> & Readonly<{}>, {
|
|
401
549
|
size: ProgressSize;
|
|
402
550
|
value: number;
|
|
403
551
|
max: number;
|
|
@@ -412,15 +560,19 @@ height: string;
|
|
|
412
560
|
radius: "sm" | "md" | "lg" | "full" | string;
|
|
413
561
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
414
562
|
|
|
415
|
-
export declare const AkSwitch: DefineComponent<
|
|
563
|
+
export declare const AkSwitch: DefineComponent<__VLS_Props_16, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
416
564
|
"update:modelValue": (value: boolean) => any;
|
|
417
|
-
}, string, PublicProps, Readonly<
|
|
565
|
+
}, string, PublicProps, Readonly<__VLS_Props_16> & Readonly<{
|
|
418
566
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
|
419
567
|
}>, {
|
|
420
568
|
disabled: boolean;
|
|
421
569
|
modelValue: boolean;
|
|
422
570
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLLabelElement>;
|
|
423
571
|
|
|
572
|
+
export declare const AkTabBar: __VLS_WithTemplateSlots_10<typeof __VLS_component_10, __VLS_TemplateResult_10["slots"]>;
|
|
573
|
+
|
|
574
|
+
export declare const AkTabBarItem: __VLS_WithTemplateSlots_11<typeof __VLS_component_11, __VLS_TemplateResult_11["slots"]>;
|
|
575
|
+
|
|
424
576
|
export declare const AkTextarea: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
|
|
425
577
|
"update:modelValue": (value: string) => any;
|
|
426
578
|
}, string, PublicProps, Readonly<__VLS_Props_6> & Readonly<{
|
|
@@ -432,14 +584,25 @@ required: boolean;
|
|
|
432
584
|
rows: number;
|
|
433
585
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLLabelElement>;
|
|
434
586
|
|
|
587
|
+
/** App mood default when no data-accent is set */
|
|
588
|
+
export declare const appDefaultAccent: AccentPalette;
|
|
589
|
+
|
|
590
|
+
export declare function applyAccentPalette(root: HTMLElement, palette: AccentPalette | 'auto'): void;
|
|
591
|
+
|
|
435
592
|
export declare type BadgeVariant = 'neutral' | 'accent' | 'success' | 'warning' | 'danger' | 'info';
|
|
436
593
|
|
|
437
594
|
export declare type ButtonSize = 'sm' | 'md' | 'lg';
|
|
438
595
|
|
|
439
596
|
export declare type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
|
|
440
597
|
|
|
598
|
+
export declare const cuidaIconMap: Map<string, string>;
|
|
599
|
+
|
|
600
|
+
export declare type CuidaIconName = cIcons;
|
|
601
|
+
|
|
441
602
|
export declare type DividerSpacing = 'sm' | 'md' | 'lg';
|
|
442
603
|
|
|
604
|
+
export declare function getCuidaIconMarkup(name: CuidaIconName): string;
|
|
605
|
+
|
|
443
606
|
export declare type IconButtonSize = 'sm' | 'md' | 'lg';
|
|
444
607
|
|
|
445
608
|
export declare type IconButtonVariant = 'ghost' | 'secondary' | 'danger';
|
|
@@ -450,4 +613,9 @@ export declare type ListRowPadding = 'sm' | 'md';
|
|
|
450
613
|
|
|
451
614
|
export declare type ProgressSize = 'sm' | 'md';
|
|
452
615
|
|
|
616
|
+
export declare function resolveAccentPalette(mood: 'app' | 'site', explicit?: AccentPalette | null): AccentPalette;
|
|
617
|
+
|
|
618
|
+
/** Site mood default when no data-accent is set */
|
|
619
|
+
export declare const siteDefaultAccent: AccentPalette;
|
|
620
|
+
|
|
453
621
|
export { }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rafael_dias/akoma",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "A human Vue 3 design system with expressive App and trustworthy Site moods.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "Rafael",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"./tokens.css": "./src/styles/tokens.css",
|
|
30
30
|
"./base.css": "./src/styles/base.css",
|
|
31
31
|
"./motion.css": "./src/styles/motion.css",
|
|
32
|
+
"./accent-palettes.css": "./src/styles/accent-palettes.css",
|
|
32
33
|
"./content/*": "./content/*"
|
|
33
34
|
},
|
|
34
35
|
"files": [
|
|
@@ -48,12 +49,14 @@
|
|
|
48
49
|
"typecheck": "vue-tsc -p tsconfig.app.json --noEmit"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
|
51
|
-
"vue": "^3.5.0"
|
|
52
|
+
"vue": "^3.5.0",
|
|
53
|
+
"@sysvale/cuida-icons": "^1.18.0"
|
|
52
54
|
},
|
|
53
55
|
"dependencies": {
|
|
54
56
|
"vue": "^3.5.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
59
|
+
"@sysvale/cuida-icons": "^1.18.0",
|
|
57
60
|
"@types/node": "^24.13.2",
|
|
58
61
|
"@vitejs/plugin-vue": "^6.0.7",
|
|
59
62
|
"@vue/tsconfig": "^0.9.1",
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/* Akoma — accent palettes
|
|
2
|
+
*
|
|
3
|
+
* Mood (App / Site) controls shape and surfaces.
|
|
4
|
+
* Accent controls brand color independently.
|
|
5
|
+
*
|
|
6
|
+
* Each palette exposes three chromatic shades:
|
|
7
|
+
* --accent-light · lighter step
|
|
8
|
+
* --accent · base (current brand color)
|
|
9
|
+
* --accent-dark · darker step
|
|
10
|
+
*
|
|
11
|
+
* <html data-mood="app" data-accent="teal">
|
|
12
|
+
*
|
|
13
|
+
* Without data-accent:
|
|
14
|
+
* App → violet
|
|
15
|
+
* Site → evergreen
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
:root,
|
|
19
|
+
[data-mood='app']:not([data-accent]) {
|
|
20
|
+
--accent-light: #8578c9;
|
|
21
|
+
--accent: #6658b8;
|
|
22
|
+
--accent-dark: #4f4299;
|
|
23
|
+
--accent-hover: var(--accent-dark);
|
|
24
|
+
--accent-soft: #ece9f8;
|
|
25
|
+
--accent-contrast: #ffffff;
|
|
26
|
+
--bg-tinted: #f1eefb;
|
|
27
|
+
--orb-1: rgba(102, 88, 184, 0.13);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
[data-mood='site']:not([data-accent]) {
|
|
31
|
+
--accent-light: #3f8566;
|
|
32
|
+
--accent: #2e684f;
|
|
33
|
+
--accent-dark: #1f4a37;
|
|
34
|
+
--accent-hover: var(--accent-dark);
|
|
35
|
+
--accent-soft: #e2eee7;
|
|
36
|
+
--accent-contrast: #ffffff;
|
|
37
|
+
--bg-tinted: #f4f5f4;
|
|
38
|
+
--orb-1: rgba(46, 104, 79, 0.06);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
[data-accent='violet'] {
|
|
42
|
+
--accent-light: #8578c9;
|
|
43
|
+
--accent: #6658b8;
|
|
44
|
+
--accent-dark: #4f4299;
|
|
45
|
+
--accent-hover: var(--accent-dark);
|
|
46
|
+
--accent-soft: #ece9f8;
|
|
47
|
+
--accent-contrast: #ffffff;
|
|
48
|
+
--bg-tinted: #f1eefb;
|
|
49
|
+
--orb-1: rgba(102, 88, 184, 0.13);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
[data-accent='evergreen'] {
|
|
53
|
+
--accent-light: #3f8566;
|
|
54
|
+
--accent: #2e684f;
|
|
55
|
+
--accent-dark: #1f4a37;
|
|
56
|
+
--accent-hover: var(--accent-dark);
|
|
57
|
+
--accent-soft: #e2eee7;
|
|
58
|
+
--accent-contrast: #ffffff;
|
|
59
|
+
--bg-tinted: #f2f5f3;
|
|
60
|
+
--orb-1: rgba(46, 104, 79, 0.07);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-accent='teal'] {
|
|
64
|
+
--accent-light: #4f96a0;
|
|
65
|
+
--accent: #3a7d85;
|
|
66
|
+
--accent-dark: #2a5f66;
|
|
67
|
+
--accent-hover: var(--accent-dark);
|
|
68
|
+
--accent-soft: #e3eff0;
|
|
69
|
+
--accent-contrast: #ffffff;
|
|
70
|
+
--bg-tinted: #e8f2f3;
|
|
71
|
+
--orb-1: rgba(58, 125, 133, 0.12);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
[data-accent='ocean'] {
|
|
75
|
+
--accent-light: #5584ad;
|
|
76
|
+
--accent: #3d6a94;
|
|
77
|
+
--accent-dark: #2d5174;
|
|
78
|
+
--accent-hover: var(--accent-dark);
|
|
79
|
+
--accent-soft: #e5eef5;
|
|
80
|
+
--accent-contrast: #ffffff;
|
|
81
|
+
--bg-tinted: #e8f0f7;
|
|
82
|
+
--orb-1: rgba(61, 106, 148, 0.11);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
[data-accent='amber'] {
|
|
86
|
+
--accent-light: #b8893f;
|
|
87
|
+
--accent: #9a702d;
|
|
88
|
+
--accent-dark: #7a5720;
|
|
89
|
+
--accent-hover: var(--accent-dark);
|
|
90
|
+
--accent-soft: #f5ecd4;
|
|
91
|
+
--accent-contrast: #ffffff;
|
|
92
|
+
--bg-tinted: #f8f2e4;
|
|
93
|
+
--orb-1: rgba(154, 112, 45, 0.1);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
[data-accent='rose'] {
|
|
97
|
+
--accent-light: #c07082;
|
|
98
|
+
--accent: #a8586a;
|
|
99
|
+
--accent-dark: #8a4556;
|
|
100
|
+
--accent-hover: var(--accent-dark);
|
|
101
|
+
--accent-soft: #fae9ed;
|
|
102
|
+
--accent-contrast: #ffffff;
|
|
103
|
+
--bg-tinted: #f9eef1;
|
|
104
|
+
--orb-1: rgba(168, 88, 106, 0.11);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
[data-accent='coral'] {
|
|
108
|
+
--accent-light: #cd7d62;
|
|
109
|
+
--accent: #b5644a;
|
|
110
|
+
--accent-dark: #944f39;
|
|
111
|
+
--accent-hover: var(--accent-dark);
|
|
112
|
+
--accent-soft: #faece8;
|
|
113
|
+
--accent-contrast: #ffffff;
|
|
114
|
+
--bg-tinted: #f9f0eb;
|
|
115
|
+
--orb-1: rgba(181, 100, 74, 0.11);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
[data-accent='slate'] {
|
|
119
|
+
--accent-light: #627890;
|
|
120
|
+
--accent: #4a5d73;
|
|
121
|
+
--accent-dark: #384858;
|
|
122
|
+
--accent-hover: var(--accent-dark);
|
|
123
|
+
--accent-soft: #e8ecf1;
|
|
124
|
+
--accent-contrast: #ffffff;
|
|
125
|
+
--bg-tinted: #eef1f5;
|
|
126
|
+
--orb-1: rgba(74, 93, 115, 0.1);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/* Dark — mood defaults */
|
|
130
|
+
[data-theme='dark']:not([data-accent]),
|
|
131
|
+
[data-theme='dark'][data-mood='app']:not([data-accent]) {
|
|
132
|
+
--accent-light: #bbb2f0;
|
|
133
|
+
--accent: #a99ee8;
|
|
134
|
+
--accent-dark: #8a7dd4;
|
|
135
|
+
--accent-hover: var(--accent-light);
|
|
136
|
+
--accent-soft: #39354f;
|
|
137
|
+
--accent-contrast: #211d38;
|
|
138
|
+
--bg-tinted: #312e40;
|
|
139
|
+
--orb-1: rgba(169, 158, 232, 0.11);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
[data-theme='dark'][data-mood='site']:not([data-accent]) {
|
|
143
|
+
--accent-light: #96c6ae;
|
|
144
|
+
--accent: #82b99d;
|
|
145
|
+
--accent-dark: #68a084;
|
|
146
|
+
--accent-hover: var(--accent-light);
|
|
147
|
+
--accent-soft: #294438;
|
|
148
|
+
--accent-contrast: #13241c;
|
|
149
|
+
--bg-tinted: #252928;
|
|
150
|
+
--orb-1: rgba(130, 185, 157, 0.06);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
[data-theme='dark'][data-accent='violet'] {
|
|
154
|
+
--accent-light: #bbb2f0;
|
|
155
|
+
--accent: #a99ee8;
|
|
156
|
+
--accent-dark: #8a7dd4;
|
|
157
|
+
--accent-hover: var(--accent-light);
|
|
158
|
+
--accent-soft: #39354f;
|
|
159
|
+
--accent-contrast: #211d38;
|
|
160
|
+
--bg-tinted: #312e40;
|
|
161
|
+
--orb-1: rgba(169, 158, 232, 0.11);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
[data-theme='dark'][data-accent='evergreen'] {
|
|
165
|
+
--accent-light: #96c6ae;
|
|
166
|
+
--accent: #82b99d;
|
|
167
|
+
--accent-dark: #68a084;
|
|
168
|
+
--accent-hover: var(--accent-light);
|
|
169
|
+
--accent-soft: #294438;
|
|
170
|
+
--accent-contrast: #13241c;
|
|
171
|
+
--bg-tinted: #27312c;
|
|
172
|
+
--orb-1: rgba(130, 185, 157, 0.07);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
[data-theme='dark'][data-accent='teal'] {
|
|
176
|
+
--accent-light: #95c7cd;
|
|
177
|
+
--accent: #7eb8bf;
|
|
178
|
+
--accent-dark: #629ca3;
|
|
179
|
+
--accent-hover: var(--accent-light);
|
|
180
|
+
--accent-soft: #294548;
|
|
181
|
+
--accent-contrast: #142528;
|
|
182
|
+
--bg-tinted: #243638;
|
|
183
|
+
--orb-1: rgba(126, 184, 191, 0.1);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
[data-theme='dark'][data-accent='ocean'] {
|
|
187
|
+
--accent-light: #9fc3e2;
|
|
188
|
+
--accent: #8ab4d9;
|
|
189
|
+
--accent-dark: #6e9bc2;
|
|
190
|
+
--accent-hover: var(--accent-light);
|
|
191
|
+
--accent-soft: #2a3a4a;
|
|
192
|
+
--accent-contrast: #152130;
|
|
193
|
+
--bg-tinted: #253545;
|
|
194
|
+
--orb-1: rgba(138, 180, 217, 0.1);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
[data-theme='dark'][data-accent='amber'] {
|
|
198
|
+
--accent-light: #debb78;
|
|
199
|
+
--accent: #d4ad61;
|
|
200
|
+
--accent-dark: #b89448;
|
|
201
|
+
--accent-hover: var(--accent-light);
|
|
202
|
+
--accent-soft: #413823;
|
|
203
|
+
--accent-contrast: #2a2212;
|
|
204
|
+
--bg-tinted: #3a3220;
|
|
205
|
+
--orb-1: rgba(212, 173, 97, 0.09);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
[data-theme='dark'][data-accent='rose'] {
|
|
209
|
+
--accent-light: #e79fad;
|
|
210
|
+
--accent: #df8a9a;
|
|
211
|
+
--accent-dark: #c96f81;
|
|
212
|
+
--accent-hover: var(--accent-light);
|
|
213
|
+
--accent-soft: #472f35;
|
|
214
|
+
--accent-contrast: #2a171c;
|
|
215
|
+
--bg-tinted: #3a2830;
|
|
216
|
+
--orb-1: rgba(223, 138, 154, 0.1);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
[data-theme='dark'][data-accent='coral'] {
|
|
220
|
+
--accent-light: #e8ad99;
|
|
221
|
+
--accent: #e09a82;
|
|
222
|
+
--accent-dark: #c97f66;
|
|
223
|
+
--accent-hover: var(--accent-light);
|
|
224
|
+
--accent-soft: #4a322c;
|
|
225
|
+
--accent-contrast: #2a1a15;
|
|
226
|
+
--bg-tinted: #3d2e28;
|
|
227
|
+
--orb-1: rgba(224, 154, 130, 0.1);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
[data-theme='dark'][data-accent='slate'] {
|
|
231
|
+
--accent-light: #aebed1;
|
|
232
|
+
--accent: #9aadc4;
|
|
233
|
+
--accent-dark: #7f93ad;
|
|
234
|
+
--accent-hover: var(--accent-light);
|
|
235
|
+
--accent-soft: #2f3844;
|
|
236
|
+
--accent-contrast: #171e28;
|
|
237
|
+
--bg-tinted: #2a323c;
|
|
238
|
+
--orb-1: rgba(154, 173, 196, 0.1);
|
|
239
|
+
}
|
package/src/styles/index.css
CHANGED
package/src/styles/motion.css
CHANGED
|
@@ -16,6 +16,14 @@
|
|
|
16
16
|
animation: ambient-drift 18s ease-in-out infinite;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
[data-mood='site'] .ambient__orb {
|
|
20
|
+
opacity: 0.2;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[data-mood='site'][data-theme='dark'] .ambient__orb {
|
|
24
|
+
opacity: 0.14;
|
|
25
|
+
}
|
|
26
|
+
|
|
19
27
|
.ambient__orb--1 {
|
|
20
28
|
width: 280px;
|
|
21
29
|
height: 280px;
|