@aggc/ui 0.4.1 → 0.5.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 +19 -0
- package/package.json +4 -2
- package/src/components/PageSurface.styles.ts +3 -0
- package/src/components/PageSurface.vue +9 -0
- package/src/components/ResultPanel.styles.ts +108 -0
- package/src/components/ResultPanel.test.ts +22 -0
- package/src/components/ResultPanel.vue +70 -0
- package/src/components/SectionCard.styles.ts +65 -0
- package/src/components/SectionCard.test.ts +22 -0
- package/src/components/SectionCard.vue +51 -0
- package/src/components/StatusBadge.styles.ts +49 -0
- package/src/components/StatusBadge.test.ts +18 -0
- package/src/components/StatusBadge.vue +18 -0
- package/src/components/UiButton.styles.ts +29 -0
- package/src/components/UiButton.test.ts +21 -0
- package/src/components/UiButton.vue +46 -0
- package/src/components/UiCheckbox.styles.ts +118 -0
- package/src/components/UiCheckbox.test.ts +18 -0
- package/src/components/UiCheckbox.vue +72 -0
- package/src/components/UiField.styles.ts +35 -0
- package/src/components/UiField.test.ts +22 -0
- package/src/components/UiField.vue +36 -0
- package/src/components/UiLoadingState.styles.ts +36 -0
- package/src/components/UiLoadingState.vue +34 -0
- package/src/components/UiSegmentedControl.styles.ts +49 -0
- package/src/components/UiSegmentedControl.vue +30 -0
- package/src/components/UiSelect.styles.ts +214 -0
- package/src/components/UiSelect.test.ts +49 -0
- package/src/components/UiSelect.vue +256 -0
- package/src/components/UiSkeleton.styles.ts +93 -0
- package/src/components/UiSkeleton.vue +48 -0
- package/src/components/index.ts +11 -0
- package/src/components.ts +1 -0
- package/src/css/base.css +62 -0
- package/src/css/fonts.css +6 -0
- package/src/css/index.css +2 -0
- package/src/css/storybook.css +15 -0
- package/src/env.d.ts +1 -0
- package/src/index.ts +3 -0
- package/src/stories/feedback/ResultPanel.stories.ts +76 -0
- package/src/stories/feedback/StatusBadge.stories.ts +50 -0
- package/src/stories/feedback/UiLoadingState.stories.ts +52 -0
- package/src/stories/feedback/UiSkeleton.stories.ts +85 -0
- package/src/stories/forms/UiCheckbox.stories.ts +104 -0
- package/src/stories/forms/UiField.stories.ts +87 -0
- package/src/stories/forms/UiSelect.stories.ts +134 -0
- package/src/stories/layout/PageSurface.stories.ts +53 -0
- package/src/stories/layout/SectionCard.stories.ts +85 -0
- package/src/stories/primitives/UiButton.stories.ts +145 -0
- package/src/stories/primitives/UiSegmentedControl.stories.ts +67 -0
- package/src/stories/support/StoryThemeFrame.vue +101 -0
- package/src/stories/support/sources.ts +374 -0
- package/src/stories/support/storyStyles.ts +150 -0
- package/src/styles/README.md +23 -0
- package/src/styles/index.ts +20 -0
- package/src/styles/layouts/cluster.ts +27 -0
- package/src/styles/layouts/page.ts +22 -0
- package/src/styles/layouts/split.ts +26 -0
- package/src/styles/layouts/stack.ts +21 -0
- package/src/styles/patterns/actionToolbar.ts +8 -0
- package/src/styles/patterns/emptyState.ts +23 -0
- package/src/styles/patterns/infoPanel.ts +22 -0
- package/src/styles/patterns/metricGrid.ts +19 -0
- package/src/styles/patterns/pageHeader.ts +19 -0
- package/src/styles/patterns/resultRegion.ts +7 -0
- package/src/styles/patterns/selectableListDetail.ts +21 -0
- package/src/styles/primitives/feedback.ts +23 -0
- package/src/styles/primitives/fields.ts +76 -0
- package/src/styles/primitives/surfaces.ts +52 -0
- package/src/styles/primitives/typography.ts +42 -0
- package/src/styles/recipes/badge.recipe.ts +54 -0
- package/src/styles/recipes/button.recipe.ts +115 -0
- package/src/styles/recipes/card.recipe.ts +64 -0
- package/src/styles/recipes/dropdown.recipe.ts +40 -0
- package/src/styles/recipes/input.recipe.ts +59 -0
- package/src/styles.ts +1 -0
- package/src/test/setup.ts +1 -0
- package/src/tokens/colors.ts +16 -0
- package/src/tokens/core-colors.ts +53 -0
- package/src/tokens/desktop-colors.ts +37 -0
- package/src/tokens/index.ts +8 -0
- package/src/tokens/motion.ts +6 -0
- package/src/tokens/radius.ts +3 -0
- package/src/tokens/spacing.ts +4 -0
- package/src/tokens/typography.ts +6 -0
- package/src/tokens-core.ts +5 -0
- package/src/tokens-desktop.ts +1 -0
- package/src/tokens.ts +1 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { cva } from "@styled/css";
|
|
2
|
+
|
|
3
|
+
export const buttonRecipe = cva({
|
|
4
|
+
base: {
|
|
5
|
+
position: "relative",
|
|
6
|
+
display: "inline-flex",
|
|
7
|
+
alignItems: "center",
|
|
8
|
+
justifyContent: "center",
|
|
9
|
+
gap: "2",
|
|
10
|
+
borderRadius: "xl",
|
|
11
|
+
px: "4",
|
|
12
|
+
py: "3",
|
|
13
|
+
fontSize: "sm",
|
|
14
|
+
fontWeight: "700",
|
|
15
|
+
letterSpacing: "0.01em",
|
|
16
|
+
backdropFilter: "blur(22px) saturate(140%)",
|
|
17
|
+
transition: "all 160ms ease",
|
|
18
|
+
userSelect: "none",
|
|
19
|
+
whiteSpace: "nowrap",
|
|
20
|
+
},
|
|
21
|
+
variants: {
|
|
22
|
+
variant: {
|
|
23
|
+
solid: {
|
|
24
|
+
bg: "linear-gradient(135deg, rgba(31,67,182,0.96) 0%, rgba(49,94,255,0.92) 100%)",
|
|
25
|
+
color: "text.inverse",
|
|
26
|
+
borderWidth: "1px",
|
|
27
|
+
borderColor: "rgba(255,255,255,0.18)",
|
|
28
|
+
boxShadow: "0 22px 36px -24px rgba(49,94,255,0.78), inset 0 1px 0 rgba(255,255,255,0.24)",
|
|
29
|
+
_dark: {
|
|
30
|
+
color: "#f7f9fd",
|
|
31
|
+
borderColor: "rgba(255,255,255,0.06)",
|
|
32
|
+
boxShadow: "0 22px 40px -24px rgba(71,121,255,0.55), inset 0 1px 0 rgba(255,255,255,0.18)",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
outline: {
|
|
36
|
+
bg: "bg.buttonOutline",
|
|
37
|
+
color: "text.secondary",
|
|
38
|
+
borderWidth: "1px",
|
|
39
|
+
borderColor: "border.default",
|
|
40
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.18)",
|
|
41
|
+
_dark: {
|
|
42
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.04)",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
subtle: {
|
|
46
|
+
bg: "bg.accentSoft",
|
|
47
|
+
color: "text.accent",
|
|
48
|
+
borderWidth: "1px",
|
|
49
|
+
borderColor: "badge.infoBorder",
|
|
50
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.22)",
|
|
51
|
+
_dark: {
|
|
52
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.04)",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
disabled: {
|
|
57
|
+
true: {
|
|
58
|
+
cursor: "not-allowed",
|
|
59
|
+
opacity: 0.5,
|
|
60
|
+
},
|
|
61
|
+
false: {
|
|
62
|
+
cursor: "pointer",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
loading: {
|
|
66
|
+
true: {
|
|
67
|
+
cursor: "not-allowed",
|
|
68
|
+
opacity: 0.5,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
compoundVariants: [
|
|
73
|
+
{
|
|
74
|
+
variant: "solid",
|
|
75
|
+
disabled: false,
|
|
76
|
+
loading: false,
|
|
77
|
+
css: {
|
|
78
|
+
_hover: {
|
|
79
|
+
transform: "translateY(-1px)",
|
|
80
|
+
boxShadow: "0 24px 42px -24px rgba(49,94,255,0.82), inset 0 1px 0 rgba(255,255,255,0.28)",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
variant: "outline",
|
|
86
|
+
disabled: false,
|
|
87
|
+
loading: false,
|
|
88
|
+
css: {
|
|
89
|
+
_hover: {
|
|
90
|
+
color: "text.primary",
|
|
91
|
+
borderColor: "border.strong",
|
|
92
|
+
bg: "bg.cardStrong",
|
|
93
|
+
transform: "translateY(-1px)",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
variant: "subtle",
|
|
99
|
+
disabled: false,
|
|
100
|
+
loading: false,
|
|
101
|
+
css: {
|
|
102
|
+
_hover: {
|
|
103
|
+
bg: "bg.selected",
|
|
104
|
+
borderColor: "border.accent",
|
|
105
|
+
transform: "translateY(-1px)",
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
defaultVariants: {
|
|
111
|
+
variant: "solid",
|
|
112
|
+
disabled: false,
|
|
113
|
+
loading: false,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { cva } from "@styled/css";
|
|
2
|
+
|
|
3
|
+
export const cardRecipe = cva({
|
|
4
|
+
base: {
|
|
5
|
+
minWidth: "0",
|
|
6
|
+
borderWidth: "1px",
|
|
7
|
+
transition: "all 160ms ease",
|
|
8
|
+
},
|
|
9
|
+
variants: {
|
|
10
|
+
variant: {
|
|
11
|
+
surface: {
|
|
12
|
+
position: "relative",
|
|
13
|
+
overflow: "hidden",
|
|
14
|
+
borderRadius: "3xl",
|
|
15
|
+
borderColor: "border.subtle",
|
|
16
|
+
bg: "bg.card",
|
|
17
|
+
backdropFilter: "blur(28px) saturate(155%)",
|
|
18
|
+
boxShadow: "0 25px 30px -35px rgba(15,23,42,0.42)",
|
|
19
|
+
},
|
|
20
|
+
inset: {
|
|
21
|
+
borderRadius: "2xl",
|
|
22
|
+
borderColor: "border.soft",
|
|
23
|
+
bg: "bg.cardAlt",
|
|
24
|
+
backdropFilter: "blur(24px) saturate(145%)",
|
|
25
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.22)",
|
|
26
|
+
},
|
|
27
|
+
elevated: {
|
|
28
|
+
borderRadius: "2xl",
|
|
29
|
+
borderColor: "border.default",
|
|
30
|
+
bg: "bg.cardStrong",
|
|
31
|
+
backdropFilter: "blur(24px) saturate(145%)",
|
|
32
|
+
boxShadow: "0 16px 32px -28px rgba(15,23,42,0.42)",
|
|
33
|
+
},
|
|
34
|
+
selectable: {
|
|
35
|
+
borderRadius: "2xl",
|
|
36
|
+
borderColor: "border.default",
|
|
37
|
+
bg: "bg.cardAlt",
|
|
38
|
+
cursor: "pointer",
|
|
39
|
+
_hover: {
|
|
40
|
+
borderColor: "border.strong",
|
|
41
|
+
bg: "bg.card",
|
|
42
|
+
transform: "translateY(-1px)",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
padding: {
|
|
47
|
+
none: {},
|
|
48
|
+
sm: { p: "3" },
|
|
49
|
+
md: { p: "4" },
|
|
50
|
+
lg: { p: "5" },
|
|
51
|
+
xl: { p: "6" },
|
|
52
|
+
},
|
|
53
|
+
selected: {
|
|
54
|
+
true: {
|
|
55
|
+
borderColor: "border.accent",
|
|
56
|
+
bg: "bg.cardStrong",
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
defaultVariants: {
|
|
61
|
+
variant: "surface",
|
|
62
|
+
padding: "md",
|
|
63
|
+
},
|
|
64
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { cva } from "@styled/css";
|
|
2
|
+
|
|
3
|
+
export const dropdownRecipe = cva({
|
|
4
|
+
base: {
|
|
5
|
+
borderWidth: "1px",
|
|
6
|
+
borderColor: "border.subtle",
|
|
7
|
+
bg: "bg.menu",
|
|
8
|
+
backdropFilter: "blur(34px) saturate(165%)",
|
|
9
|
+
boxShadow: "0 32px 70px -40px rgba(15,23,42,0.5)",
|
|
10
|
+
},
|
|
11
|
+
variants: {
|
|
12
|
+
placement: {
|
|
13
|
+
anchored: {
|
|
14
|
+
position: "absolute",
|
|
15
|
+
top: "calc(100% + 10px)",
|
|
16
|
+
left: "0",
|
|
17
|
+
right: "0",
|
|
18
|
+
},
|
|
19
|
+
floating: {
|
|
20
|
+
position: "fixed",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
density: {
|
|
24
|
+
cozy: {
|
|
25
|
+
borderRadius: "2xl",
|
|
26
|
+
p: "2",
|
|
27
|
+
gap: "1",
|
|
28
|
+
},
|
|
29
|
+
compact: {
|
|
30
|
+
borderRadius: "xl",
|
|
31
|
+
p: "1.5",
|
|
32
|
+
gap: "0.5",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
defaultVariants: {
|
|
37
|
+
placement: "anchored",
|
|
38
|
+
density: "cozy",
|
|
39
|
+
},
|
|
40
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { cva } from "@styled/css";
|
|
2
|
+
|
|
3
|
+
export const inputRecipe = cva({
|
|
4
|
+
base: {
|
|
5
|
+
width: "100%",
|
|
6
|
+
borderWidth: "1px",
|
|
7
|
+
borderColor: "border.default",
|
|
8
|
+
bg: "bg.input",
|
|
9
|
+
color: "text.primary",
|
|
10
|
+
fontSize: "sm",
|
|
11
|
+
backdropFilter: "blur(22px) saturate(145%)",
|
|
12
|
+
transition: "border-color 160ms ease, background 160ms ease",
|
|
13
|
+
_placeholder: {
|
|
14
|
+
color: "text.muted",
|
|
15
|
+
},
|
|
16
|
+
_hover: {
|
|
17
|
+
borderColor: "border.strong",
|
|
18
|
+
},
|
|
19
|
+
_dark: {
|
|
20
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.03)",
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
variants: {
|
|
24
|
+
size: {
|
|
25
|
+
sm: {
|
|
26
|
+
minHeight: "40px",
|
|
27
|
+
borderRadius: "lg",
|
|
28
|
+
px: "3",
|
|
29
|
+
py: "2.5",
|
|
30
|
+
lineHeight: "1.45",
|
|
31
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.2)",
|
|
32
|
+
},
|
|
33
|
+
md: {
|
|
34
|
+
minHeight: "48px",
|
|
35
|
+
borderRadius: "xl",
|
|
36
|
+
px: "4",
|
|
37
|
+
py: "3",
|
|
38
|
+
lineHeight: "1.5",
|
|
39
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.24), 0 14px 28px -28px rgba(15,23,42,0.42)",
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
kind: {
|
|
43
|
+
input: {},
|
|
44
|
+
textarea: {
|
|
45
|
+
minHeight: "420px",
|
|
46
|
+
borderRadius: "2xl",
|
|
47
|
+
px: "4",
|
|
48
|
+
py: "4",
|
|
49
|
+
lineHeight: "1.6",
|
|
50
|
+
fontFamily: "mono",
|
|
51
|
+
boxShadow: "inset 0 1px 0 rgba(255,255,255,0.24), 0 18px 36px -32px rgba(15,23,42,0.42)",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
defaultVariants: {
|
|
56
|
+
size: "md",
|
|
57
|
+
kind: "input",
|
|
58
|
+
},
|
|
59
|
+
});
|
package/src/styles.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./styles/index";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
// Shared test setup placeholder for future global mocks.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { coreColorTokens } from "./core-colors";
|
|
2
|
+
import { desktopColorTokens } from "./desktop-colors";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Full semantic color token map — includes both core (web+desktop) and
|
|
6
|
+
* desktop-only tokens. Used by panda.config.ts in this repo.
|
|
7
|
+
*
|
|
8
|
+
* For a web-only consumer, import coreColorTokens instead.
|
|
9
|
+
*/
|
|
10
|
+
export const colorTokens = {
|
|
11
|
+
...coreColorTokens,
|
|
12
|
+
...desktopColorTokens,
|
|
13
|
+
} as const;
|
|
14
|
+
|
|
15
|
+
export { coreColorTokens } from "./core-colors";
|
|
16
|
+
export { desktopColorTokens } from "./desktop-colors";
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core semantic color tokens — shared between desktop and web consumers.
|
|
3
|
+
*
|
|
4
|
+
* These tokens cover the universal design language: text, backgrounds,
|
|
5
|
+
* borders and badge indicators. Any app that uses @aggc/ui can rely on these.
|
|
6
|
+
*/
|
|
7
|
+
export const coreColorTokens = {
|
|
8
|
+
text: {
|
|
9
|
+
primary: { value: { base: "#0f1728", _dark: "#f7f9fd" } },
|
|
10
|
+
secondary: { value: { base: "#405069", _dark: "#c8d1e0" } },
|
|
11
|
+
muted: { value: { base: "#61708a", _dark: "#96a3b8" } },
|
|
12
|
+
accent: { value: { base: "#315eff", _dark: "#8ab4ff" } },
|
|
13
|
+
inverse: { value: { base: "#ffffff", _dark: "#08111f" } },
|
|
14
|
+
error: { value: { base: "#d92d20", _dark: "#ff8e7f" } },
|
|
15
|
+
},
|
|
16
|
+
bg: {
|
|
17
|
+
canvas: { value: { base: "rgba(244, 248, 255, 0.8)", _dark: "rgba(0, 0, 0, 0.94)" } },
|
|
18
|
+
card: { value: { base: "rgba(255, 255, 255, 0.62)", _dark: "rgba(0, 0, 0, 0.82)" } },
|
|
19
|
+
cardStrong: { value: { base: "rgba(255, 255, 255, 0.78)", _dark: "rgba(7, 10, 15, 0.98)" } },
|
|
20
|
+
cardAlt: { value: { base: "rgba(248, 251, 255, 0.56)", _dark: "rgba(10, 13, 19, 0.94)" } },
|
|
21
|
+
sidebar: { value: { base: "rgba(251, 253, 255, 0.68)", _dark: "rgba(0, 0, 0, 0.9)" } },
|
|
22
|
+
overlay: { value: { base: "rgba(255, 255, 255, 0.42)", _dark: "rgba(255, 255, 255, 0.02)" } },
|
|
23
|
+
input: { value: { base: "rgba(255, 255, 255, 0.72)", _dark: "rgba(12, 16, 23, 0.98)" } },
|
|
24
|
+
selected: { value: { base: "rgba(60, 111, 255, 0.12)", _dark: "rgba(138, 180, 255, 0.16)" } },
|
|
25
|
+
hover: { value: { base: "rgba(49, 71, 115, 0.08)", _dark: "rgba(255, 255, 255, 0.06)" } },
|
|
26
|
+
buttonOutline: { value: { base: "rgba(255, 255, 255, 0.48)", _dark: "rgba(14, 18, 26, 0.98)" } },
|
|
27
|
+
header: { value: { base: "rgba(250, 252, 255, 0.58)", _dark: "rgba(0, 0, 0, 0.84)" } },
|
|
28
|
+
menu: { value: { base: "rgba(255, 255, 255, 0.9)", _dark: "rgba(9, 12, 18, 0.99)" } },
|
|
29
|
+
accentSoft: { value: { base: "rgba(49, 94, 255, 0.1)", _dark: "rgba(138, 180, 255, 0.18)" } },
|
|
30
|
+
accentStrong: { value: { base: "rgba(49, 94, 255, 0.86)", _dark: "rgba(122, 170, 255, 0.82)" } },
|
|
31
|
+
},
|
|
32
|
+
border: {
|
|
33
|
+
soft: { value: { base: "rgba(148, 163, 184, 0.14)", _dark: "rgba(255, 255, 255, 0.035)" } },
|
|
34
|
+
subtle: { value: { base: "rgba(125, 146, 182, 0.2)", _dark: "rgba(255, 255, 255, 0.09)" } },
|
|
35
|
+
default: { value: { base: "rgba(109, 130, 164, 0.28)", _dark: "rgba(255, 255, 255, 0.14)" } },
|
|
36
|
+
strong: { value: { base: "rgba(80, 98, 127, 0.42)", _dark: "rgba(255, 255, 255, 0.22)" } },
|
|
37
|
+
accent: { value: { base: "rgba(82, 121, 255, 0.5)", _dark: "rgba(125, 171, 255, 0.44)" } },
|
|
38
|
+
},
|
|
39
|
+
badge: {
|
|
40
|
+
successBg: { value: { base: "rgba(19, 163, 74, 0.12)", _dark: "rgba(19, 80, 58, 0.7)" } },
|
|
41
|
+
successText: { value: { base: "#136c45", _dark: "#7ff2c7" } },
|
|
42
|
+
successBorder: { value: { base: "rgba(21, 128, 61, 0.22)", _dark: "rgba(127, 242, 199, 0.32)" } },
|
|
43
|
+
warningBg: { value: { base: "rgba(245, 158, 11, 0.12)", _dark: "rgba(89, 58, 8, 0.76)" } },
|
|
44
|
+
warningText: { value: { base: "#9a5b05", _dark: "#ffd36b" } },
|
|
45
|
+
warningBorder: { value: { base: "rgba(217, 119, 6, 0.22)", _dark: "rgba(255, 211, 107, 0.32)" } },
|
|
46
|
+
infoBg: { value: { base: "rgba(59, 130, 246, 0.11)", _dark: "rgba(24, 48, 92, 0.82)" } },
|
|
47
|
+
infoText: { value: { base: "#2459d8", _dark: "#9ac1ff" } },
|
|
48
|
+
infoBorder: { value: { base: "rgba(37, 99, 235, 0.2)", _dark: "rgba(154, 193, 255, 0.3)" } },
|
|
49
|
+
neutralBg: { value: { base: "rgba(99, 115, 148, 0.08)", _dark: "rgba(21, 26, 35, 0.92)" } },
|
|
50
|
+
neutralText: { value: { base: "#4b5d7a", _dark: "#d0d7e4" } },
|
|
51
|
+
neutralBorder: { value: { base: "rgba(109, 130, 164, 0.18)", _dark: "rgba(183, 195, 215, 0.22)" } },
|
|
52
|
+
},
|
|
53
|
+
} as const;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Desktop-only semantic color tokens.
|
|
3
|
+
*
|
|
4
|
+
* These tokens model concepts that only exist in the desktop app:
|
|
5
|
+
* - result.* — pass/fail result panels (sync results, validation output)
|
|
6
|
+
* - nav.* — sidebar navigation item states
|
|
7
|
+
* - sync.* — sync operation row statuses (generated, skipped, etc.)
|
|
8
|
+
*
|
|
9
|
+
* Web consumers should NOT import these. Use coreColorTokens instead.
|
|
10
|
+
*/
|
|
11
|
+
export const desktopColorTokens = {
|
|
12
|
+
result: {
|
|
13
|
+
okBg: { value: { base: "rgba(48, 113, 255, 0.1)", _dark: "rgba(17, 43, 86, 0.88)" } },
|
|
14
|
+
okBorder: { value: { base: "rgba(49, 94, 255, 0.18)", _dark: "rgba(138, 180, 255, 0.24)" } },
|
|
15
|
+
failBg: { value: { base: "rgba(217, 45, 32, 0.08)", _dark: "rgba(77, 17, 11, 0.86)" } },
|
|
16
|
+
failBorder: { value: { base: "rgba(217, 45, 32, 0.16)", _dark: "rgba(255, 142, 127, 0.24)" } },
|
|
17
|
+
detailText: { value: { base: "#11203b", _dark: "#edf3ff" } },
|
|
18
|
+
bodyText: { value: { base: "#42526b", _dark: "#cad2e0" } },
|
|
19
|
+
warningLabel: { value: { base: "#9a5b05", _dark: "#ffd36b" } },
|
|
20
|
+
warningBody: { value: { base: "#865210", _dark: "#f8dd95" } },
|
|
21
|
+
errorLabel: { value: { base: "#b42318", _dark: "#ff9d91" } },
|
|
22
|
+
errorBody: { value: { base: "#8f2118", _dark: "#ffc2ba" } },
|
|
23
|
+
},
|
|
24
|
+
nav: {
|
|
25
|
+
inactiveText: { value: { base: "#42526b", _dark: "#b7c3d7" } },
|
|
26
|
+
},
|
|
27
|
+
sync: {
|
|
28
|
+
generatedBg: { value: { base: "rgba(48, 113, 255, 0.08)", _dark: "rgba(15, 40, 84, 0.88)" } },
|
|
29
|
+
generatedBorder: { value: { base: "rgba(49, 94, 255, 0.16)", _dark: "rgba(138, 180, 255, 0.24)" } },
|
|
30
|
+
generatedLabel: { value: { base: "#2459d8", _dark: "#9ac1ff" } },
|
|
31
|
+
generatedBody: { value: { base: "#264170", _dark: "#d7e5ff" } },
|
|
32
|
+
skippedBg: { value: { base: "rgba(82, 102, 133, 0.06)", _dark: "rgba(14, 18, 24, 0.94)" } },
|
|
33
|
+
skippedBorder: { value: { base: "rgba(109, 130, 164, 0.16)", _dark: "rgba(183, 195, 215, 0.18)" } },
|
|
34
|
+
skippedLabel: { value: { base: "#42526b", _dark: "#b7c3d7" } },
|
|
35
|
+
skippedBody: { value: { base: "#566883", _dark: "#c3cedf" } },
|
|
36
|
+
},
|
|
37
|
+
} as const;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./colors";
|
|
2
|
+
export * from "./motion";
|
|
3
|
+
export * from "./radius";
|
|
4
|
+
export * from "./spacing";
|
|
5
|
+
export * from "./typography";
|
|
6
|
+
// Named subpath re-exports (consumed via @aggc/ui/tokens/core and @aggc/ui/tokens/desktop-only)
|
|
7
|
+
export { coreColorTokens } from "./core-colors";
|
|
8
|
+
export { desktopColorTokens } from "./desktop-colors";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { desktopColorTokens } from "./tokens/desktop-colors";
|
package/src/tokens.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./tokens/index";
|