@aggc/ui 0.4.0 → 0.5.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.
Files changed (158) hide show
  1. package/README.md +19 -0
  2. package/dist/chunks/UiSkeleton.vue_vue_type_script_setup_true_lang-Lghyrtms.js +1201 -0
  3. package/dist/chunks/pageHeader-CcJrPX_8.js +522 -0
  4. package/dist/components/PageSurface.styles.d.ts +1 -0
  5. package/dist/components/PageSurface.vue.d.ts +13 -0
  6. package/dist/components/ResultPanel.styles.d.ts +64 -0
  7. package/dist/components/ResultPanel.vue.d.ts +16 -0
  8. package/dist/components/SectionCard.styles.d.ts +13 -0
  9. package/dist/components/SectionCard.vue.d.ts +27 -0
  10. package/dist/components/StatusBadge.styles.d.ts +24 -0
  11. package/dist/components/StatusBadge.vue.d.ts +18 -0
  12. package/dist/components/UiButton.styles.d.ts +54 -0
  13. package/dist/components/UiButton.vue.d.ts +28 -0
  14. package/dist/components/UiCheckbox.styles.d.ts +42 -0
  15. package/dist/components/UiCheckbox.vue.d.ts +37 -0
  16. package/dist/components/UiField.styles.d.ts +7 -0
  17. package/dist/components/UiField.vue.d.ts +22 -0
  18. package/dist/components/UiLoadingState.styles.d.ts +4 -0
  19. package/dist/components/UiLoadingState.vue.d.ts +10 -0
  20. package/dist/components/UiSegmentedControl.styles.d.ts +23 -0
  21. package/dist/components/UiSegmentedControl.vue.d.ts +14 -0
  22. package/dist/components/UiSelect.styles.d.ts +104 -0
  23. package/dist/components/UiSelect.vue.d.ts +35 -0
  24. package/dist/components/UiSkeleton.styles.d.ts +67 -0
  25. package/dist/components/UiSkeleton.vue.d.ts +12 -0
  26. package/dist/components/index.d.ts +11 -0
  27. package/dist/components.d.ts +1 -0
  28. package/dist/components.js +14 -0
  29. package/dist/css.d.ts +2 -0
  30. package/dist/css.js +1 -0
  31. package/dist/fonts.css +6 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.js +65 -0
  34. package/dist/styles/index.d.ts +20 -0
  35. package/dist/styles/layouts/cluster.d.ts +27 -0
  36. package/dist/styles/layouts/page.d.ts +2 -0
  37. package/dist/styles/layouts/split.d.ts +22 -0
  38. package/dist/styles/layouts/stack.d.ts +19 -0
  39. package/dist/styles/patterns/actionToolbar.d.ts +1 -0
  40. package/dist/styles/patterns/emptyState.d.ts +2 -0
  41. package/dist/styles/patterns/infoPanel.d.ts +2 -0
  42. package/dist/styles/patterns/metricGrid.d.ts +22 -0
  43. package/dist/styles/patterns/pageHeader.d.ts +3 -0
  44. package/dist/styles/patterns/resultRegion.d.ts +1 -0
  45. package/dist/styles/patterns/selectableListDetail.d.ts +3 -0
  46. package/dist/styles/primitives/feedback.d.ts +4 -0
  47. package/dist/styles/primitives/fields.d.ts +3 -0
  48. package/dist/styles/primitives/surfaces.d.ts +3 -0
  49. package/dist/styles/primitives/typography.d.ts +6 -0
  50. package/dist/styles/recipes/badge.recipe.d.ts +32 -0
  51. package/dist/styles/recipes/button.recipe.d.ts +51 -0
  52. package/dist/styles/recipes/card.recipe.d.ts +59 -0
  53. package/dist/styles/recipes/dropdown.recipe.d.ts +25 -0
  54. package/dist/styles/recipes/input.recipe.d.ts +32 -0
  55. package/dist/styles.d.ts +1 -0
  56. package/dist/styles.js +429 -0
  57. package/dist/tokens/colors.d.ts +360 -0
  58. package/dist/tokens/core-colors.d.ts +238 -0
  59. package/dist/tokens/desktop-colors.d.ts +132 -0
  60. package/dist/tokens/index.d.ts +7 -0
  61. package/dist/tokens/motion.d.ts +10 -0
  62. package/dist/tokens/radius.d.ts +5 -0
  63. package/dist/tokens/spacing.d.ts +8 -0
  64. package/dist/tokens/typography.d.ts +10 -0
  65. package/dist/tokens-core.d.ts +5 -0
  66. package/dist/tokens-core.js +69 -0
  67. package/dist/tokens-desktop.d.ts +1 -0
  68. package/dist/tokens-desktop.js +30 -0
  69. package/dist/tokens.d.ts +1 -0
  70. package/dist/tokens.js +16 -0
  71. package/dist/ui.css +2026 -0
  72. package/package.json +3 -2
  73. package/src/components/PageSurface.styles.ts +3 -0
  74. package/src/components/PageSurface.vue +9 -0
  75. package/src/components/ResultPanel.styles.ts +108 -0
  76. package/src/components/ResultPanel.test.ts +22 -0
  77. package/src/components/ResultPanel.vue +70 -0
  78. package/src/components/SectionCard.styles.ts +65 -0
  79. package/src/components/SectionCard.test.ts +22 -0
  80. package/src/components/SectionCard.vue +51 -0
  81. package/src/components/StatusBadge.styles.ts +49 -0
  82. package/src/components/StatusBadge.test.ts +18 -0
  83. package/src/components/StatusBadge.vue +18 -0
  84. package/src/components/UiButton.styles.ts +29 -0
  85. package/src/components/UiButton.test.ts +21 -0
  86. package/src/components/UiButton.vue +46 -0
  87. package/src/components/UiCheckbox.styles.ts +118 -0
  88. package/src/components/UiCheckbox.test.ts +18 -0
  89. package/src/components/UiCheckbox.vue +72 -0
  90. package/src/components/UiField.styles.ts +35 -0
  91. package/src/components/UiField.test.ts +22 -0
  92. package/src/components/UiField.vue +36 -0
  93. package/src/components/UiLoadingState.styles.ts +36 -0
  94. package/src/components/UiLoadingState.vue +34 -0
  95. package/src/components/UiSegmentedControl.styles.ts +49 -0
  96. package/src/components/UiSegmentedControl.vue +30 -0
  97. package/src/components/UiSelect.styles.ts +214 -0
  98. package/src/components/UiSelect.test.ts +49 -0
  99. package/src/components/UiSelect.vue +256 -0
  100. package/src/components/UiSkeleton.styles.ts +93 -0
  101. package/src/components/UiSkeleton.vue +48 -0
  102. package/src/components/index.ts +11 -0
  103. package/src/components.ts +1 -0
  104. package/src/css/base.css +62 -0
  105. package/src/css/fonts.css +6 -0
  106. package/src/css/index.css +2 -0
  107. package/src/css/storybook.css +15 -0
  108. package/src/env.d.ts +1 -0
  109. package/src/index.ts +3 -0
  110. package/src/stories/feedback/ResultPanel.stories.ts +76 -0
  111. package/src/stories/feedback/StatusBadge.stories.ts +50 -0
  112. package/src/stories/feedback/UiLoadingState.stories.ts +52 -0
  113. package/src/stories/feedback/UiSkeleton.stories.ts +85 -0
  114. package/src/stories/forms/UiCheckbox.stories.ts +104 -0
  115. package/src/stories/forms/UiField.stories.ts +87 -0
  116. package/src/stories/forms/UiSelect.stories.ts +134 -0
  117. package/src/stories/layout/PageSurface.stories.ts +53 -0
  118. package/src/stories/layout/SectionCard.stories.ts +85 -0
  119. package/src/stories/primitives/UiButton.stories.ts +145 -0
  120. package/src/stories/primitives/UiSegmentedControl.stories.ts +67 -0
  121. package/src/stories/support/StoryThemeFrame.vue +101 -0
  122. package/src/stories/support/sources.ts +374 -0
  123. package/src/stories/support/storyStyles.ts +150 -0
  124. package/src/styles/README.md +23 -0
  125. package/src/styles/index.ts +20 -0
  126. package/src/styles/layouts/cluster.ts +27 -0
  127. package/src/styles/layouts/page.ts +22 -0
  128. package/src/styles/layouts/split.ts +26 -0
  129. package/src/styles/layouts/stack.ts +21 -0
  130. package/src/styles/patterns/actionToolbar.ts +8 -0
  131. package/src/styles/patterns/emptyState.ts +23 -0
  132. package/src/styles/patterns/infoPanel.ts +22 -0
  133. package/src/styles/patterns/metricGrid.ts +19 -0
  134. package/src/styles/patterns/pageHeader.ts +19 -0
  135. package/src/styles/patterns/resultRegion.ts +7 -0
  136. package/src/styles/patterns/selectableListDetail.ts +21 -0
  137. package/src/styles/primitives/feedback.ts +23 -0
  138. package/src/styles/primitives/fields.ts +76 -0
  139. package/src/styles/primitives/surfaces.ts +52 -0
  140. package/src/styles/primitives/typography.ts +42 -0
  141. package/src/styles/recipes/badge.recipe.ts +54 -0
  142. package/src/styles/recipes/button.recipe.ts +115 -0
  143. package/src/styles/recipes/card.recipe.ts +64 -0
  144. package/src/styles/recipes/dropdown.recipe.ts +40 -0
  145. package/src/styles/recipes/input.recipe.ts +59 -0
  146. package/src/styles.ts +1 -0
  147. package/src/test/setup.ts +1 -0
  148. package/src/tokens/colors.ts +16 -0
  149. package/src/tokens/core-colors.ts +53 -0
  150. package/src/tokens/desktop-colors.ts +37 -0
  151. package/src/tokens/index.ts +8 -0
  152. package/src/tokens/motion.ts +6 -0
  153. package/src/tokens/radius.ts +3 -0
  154. package/src/tokens/spacing.ts +4 -0
  155. package/src/tokens/typography.ts +6 -0
  156. package/src/tokens-core.ts +5 -0
  157. package/src/tokens-desktop.ts +1 -0
  158. 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,6 @@
1
+ export const motionTokens = {
2
+ durations: {
3
+ moderate: { value: "160ms" },
4
+ emphasized: { value: "240ms" },
5
+ },
6
+ } as const;
@@ -0,0 +1,3 @@
1
+ export const radiusTokens = {
2
+ "4xl": { value: "2rem" },
3
+ } as const;
@@ -0,0 +1,4 @@
1
+ export const spacingTokens = {
2
+ 18: { value: "4.5rem" },
3
+ 22: { value: "5.5rem" },
4
+ } as const;
@@ -0,0 +1,6 @@
1
+ export const typographyTokens = {
2
+ fonts: {
3
+ body: { value: "\"IBM Plex Sans\", \"Segoe UI\", sans-serif" },
4
+ heading: { value: "\"Space Grotesk\", \"IBM Plex Sans\", sans-serif" },
5
+ },
6
+ } as const;
@@ -0,0 +1,5 @@
1
+ export { coreColorTokens } from "./tokens/core-colors";
2
+ export * from "./tokens/motion";
3
+ export * from "./tokens/radius";
4
+ export * from "./tokens/spacing";
5
+ export * from "./tokens/typography";
@@ -0,0 +1 @@
1
+ export { desktopColorTokens } from "./tokens/desktop-colors";
package/src/tokens.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./tokens/index";