@dybo-ai/design 1.3.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/tokens.mjs CHANGED
@@ -1,125 +1,124 @@
1
1
  // DYBO design tokens — flat, resolved values for programmatic use (JS/TS).
2
2
  // Source of truth: tokens.json. Keep in sync when tokens.json changes.
3
+ //
4
+ // `color` is HSL-channel triplets ("H S% L%", no hsl() wrapper) so values
5
+ // compose the same way in JS as they do in CSS (`hsl(${color.light.card})`,
6
+ // or with alpha `hsl(${color.light.card} / 0.7)`).
7
+
3
8
  export const color = {
4
- brand: {
5
- logo: "#1d335c",
6
- blue: "#5878a7",
7
- darkOrb: "#141927",
8
- cultured: "#f3f6fa",
9
- gainsboro: "#dbdfe5",
10
- dandelion: "#e9d72f",
11
- },
12
- text: {
13
- primary: "#0a1323",
14
- secondary: "#f4f4f6",
15
- muted: "#545f74",
16
- gray: "#868686",
17
- },
18
- neutral: {
19
- black: "#000000",
20
- white: "#ffffff",
21
- grayishBlue50: "#f4f4f6",
22
- grayishBlue300: "#c2c7cf",
23
- midnightSky300: "#e6e7f7",
24
- midnightSky700: "#48495d",
25
- },
26
- surface: {
27
- page: "#e6eaf0",
28
- card: "rgba(240,241,244,0.70)",
29
- cardSolid: "rgba(240,241,244,0.90)",
30
- input: "rgba(244,244,246,0.70)",
9
+ light: {
10
+ background: "216 25% 92%",
11
+ foreground: "218 56% 9%",
12
+ card: "214 41% 97%",
13
+ cardForeground: "218 56% 9%",
14
+ popover: "0 0% 100%",
15
+ popoverForeground: "218 56% 9%",
16
+ primary: "218 56% 9%",
17
+ primaryForeground: "0 0% 100%",
18
+ secondary: "0 0% 100%",
19
+ secondaryForeground: "218 56% 9%",
20
+ muted: "216 16% 88%",
21
+ mutedForeground: "216 31% 50%",
22
+ accent: "219 52% 24%",
23
+ accentForeground: "214 41% 97%",
24
+ destructive: "355 95% 60%",
25
+ destructiveForeground: "0 0% 100%",
26
+ border: "0 0% 100%",
27
+ input: "240 14% 96%",
28
+ ring: "219 52% 24%",
29
+ success: "150 68% 74%",
30
+ successForeground: "218 56% 9%",
31
+ successBackground: "151 45% 89%",
32
+ warning: "30 100% 40%",
33
+ warningForeground: "218 56% 9%",
34
+ warningBackground: "30 100% 95%",
35
+ error: "30 100% 40%",
36
+ errorForeground: "0 0% 100%",
37
+ errorBackground: "30 100% 95%",
38
+ info: "216 31% 50%",
39
+ infoForeground: "218 56% 9%",
40
+ infoBackground: "216 31% 89%",
41
+ tagAmberBackground: "35 100% 95%",
42
+ tagAmberForeground: "30 100% 24%",
43
+ tagPurpleBackground: "269 100% 95%",
44
+ tagPurpleForeground: "273 67% 39%",
45
+ tagRedBackground: "355 100% 95%",
46
+ tagRedForeground: "353 78% 32%",
47
+ overlayScrim: "224 32% 12%",
48
+ brandDarkOrb: "224 32% 12%",
49
+ brandIndigo: "219 52% 24%",
50
+ brandBlueYonder: "216 31% 50%",
51
+ brandGainsboro: "216 16% 88%",
52
+ brandCultured: "214 41% 97%",
53
+ brandDandelion: "54 81% 55%",
54
+ brandBlack: "0 0% 0%",
55
+ brandWhite: "0 0% 100%",
56
+ operatorBackground: "0 0% 89.4%",
31
57
  },
32
- line: { stroke: "#ffffff" },
33
- semantic: {
34
- success: { solid: "#20a156", bright: "#28ca6b", bg: "#eafbf1" },
35
- warning: { solid: "#f16c24", bg: "#ffe5d8" },
36
- danger: { solid: "#a21a17", bg: "#fffbfb" },
37
- },
38
- status: {
39
- resolved: { fg: "#0399ae", bg: "#d3f7fc" },
40
- highPriority: { fg: "#682a5d", bg: "#eee0ec" },
41
- mediumPriority: { fg: "#f16c24", bg: "#ffe5d8" },
42
- brand: { fg: "#0a1323", bg: "#d0d3fe" },
58
+ dark: {
59
+ background: "218 56% 9%",
60
+ foreground: "244 20% 96%",
61
+ card: "218 35% 13%",
62
+ cardForeground: "244 20% 96%",
63
+ popover: "218 15% 12%",
64
+ popoverForeground: "244 20% 96%",
65
+ primary: "244 20% 96%",
66
+ primaryForeground: "218 56% 9%",
67
+ secondary: "218 35% 13%",
68
+ secondaryForeground: "244 20% 96%",
69
+ muted: "210 15% 30%",
70
+ mutedForeground: "244 20% 80%",
71
+ accent: "216 31% 50%",
72
+ accentForeground: "244 20% 96%",
73
+ destructive: "0 78% 55%",
74
+ destructiveForeground: "244 20% 96%",
75
+ border: "210 15% 30%",
76
+ input: "218 35% 13%",
77
+ ring: "244 20% 96%",
78
+ successBackground: "150 68% 26%",
79
+ warningBackground: "30 100% 22%",
80
+ errorBackground: "30 100% 22%",
81
+ infoBackground: "216 31% 28%",
82
+ tagAmberBackground: "37 64% 18%",
83
+ tagAmberForeground: "34 100% 83%",
84
+ tagPurpleBackground: "274 53% 22%",
85
+ tagPurpleForeground: "269 100% 92%",
86
+ tagRedBackground: "352 63% 18%",
87
+ tagRedForeground: "354 100% 88%",
43
88
  },
44
89
  };
45
90
 
46
- export const portal = {
47
- surface: {
48
- operatorPage: "#e4e4e4",
49
- cardHighOpacity: "rgba(240,241,244,0.92)",
50
- cardHighOpacityDark: "rgba(18,26,45,0.92)",
51
- drawerBackdrop: "rgba(10,15,25,0.3)",
52
- },
53
- shadow: {
54
- level1: "0px 4px 8px #1419271f",
55
- level2: "0px 8px 28px #14192729",
56
- },
57
- feedback: {
58
- successLight: "#90eabd",
59
- successBackground: "#d6f0e3",
60
- warningSolid: "#cc6600",
61
- warningBackground: "#fff2e5",
62
- destructiveBright: "#fa3848",
63
- infoBackground: "#d9e3f0",
64
- },
65
- priority: {
66
- urgent: {
67
- bg: "rgba(250,56,72,0.12)",
68
- fg: "#c81e2c",
69
- darkBg: "rgba(230,57,57,0.22)",
70
- darkFg: "#f9a0a0",
71
- },
72
- high: {
73
- bg: "rgba(255,128,0,0.15)",
74
- fg: "#a85400",
75
- darkBg: "rgba(230,115,0,0.22)",
76
- darkFg: "#ffb366",
77
- },
78
- medium: {
79
- bg: "rgba(242,185,13,0.20)",
80
- fg: "#9d6607",
81
- darkBg: "rgba(242,185,13,0.16)",
82
- darkFg: "#f5d56a",
83
- },
84
- low: {
85
- bg: "rgba(151,163,180,0.24)",
86
- fg: "#50627c",
87
- darkBg: "rgba(140,155,175,0.20)",
88
- darkFg: "#b8c4d4",
89
- },
90
- none: {
91
- bg: "rgba(192,198,206,0.35)",
92
- fg: "#677283",
93
- darkBg: "rgba(115,125,140,0.25)",
94
- darkFg: "#b0b8c4",
95
- },
96
- },
97
- ticketStatus: {
98
- open: {
99
- bg: "#d9e3f2",
100
- fg: "#2e5b9e",
101
- darkBg: "#2a3d52",
102
- darkFg: "#a8c4e8",
103
- },
104
- pending: {
105
- bg: "#e9dff6",
106
- fg: "#7146aa",
107
- darkBg: "#3d2f4d",
108
- darkFg: "#d4b8f0",
109
- },
110
- snoozed: {
111
- bg: "#d7dde5",
112
- fg: "#58687e",
113
- darkBg: "#3a424c",
114
- darkFg: "#b8c4d4",
115
- },
116
- resolved: {
117
- bg: "#d6f0e3",
118
- fg: "#1a6640",
119
- darkBg: "#1f4a32",
120
- darkFg: "#a8e0c0",
121
- },
122
- },
91
+ export const priority = {
92
+ urgent: { bg: "355 95% 60% / 0.12", fg: "355 74% 45%", darkBg: "0 78% 55% / 0.22", darkFg: "0 90% 78%" },
93
+ high: { bg: "30 100% 50% / 0.15", fg: "30 100% 33%", darkBg: "30 100% 45% / 0.22", darkFg: "30 100% 72%" },
94
+ medium: { bg: "45 90% 50% / 0.20", fg: "38 92% 32%", darkBg: "45 90% 50% / 0.16", darkFg: "45 92% 70%" },
95
+ low: { bg: "216 16% 65% / 0.24", fg: "216 22% 40%", darkBg: "216 20% 60% / 0.20", darkFg: "216 25% 82%" },
96
+ none: { bg: "216 12% 78% / 0.35", fg: "216 12% 46%", darkBg: "216 12% 50% / 0.25", darkFg: "216 15% 75%" },
97
+ };
98
+
99
+ export const ticketStatus = {
100
+ open: { bg: "216 48% 90%", fg: "216 55% 40%", darkBg: "216 40% 26%", darkFg: "216 60% 82%" },
101
+ pending: { bg: "266 55% 92%", fg: "266 42% 47%", darkBg: "266 32% 30%", darkFg: "266 60% 85%" },
102
+ snoozed: { bg: "215 22% 87%", fg: "215 18% 42%", darkBg: "215 18% 30%", darkFg: "215 25% 80%" },
103
+ resolved: { bg: "151 45% 89%", fg: "150 60% 25%", darkBg: "150 45% 22%", darkFg: "150 60% 80%" },
104
+ };
105
+
106
+ export const surface = {
107
+ operatorPage: "0 0% 89.4%",
108
+ cardHighOpacity: "rgba(240,241,244,0.92)",
109
+ cardHighOpacityDark: "rgba(18,26,45,0.92)",
110
+ drawerBackdrop: "224 32% 12% / 0.3",
111
+ };
112
+
113
+ export const feedback = {
114
+ successBackground: "151 45% 89%",
115
+ warningBackground: "30 100% 95%",
116
+ infoBackground: "216 31% 89%",
117
+ };
118
+
119
+ export const shadow = {
120
+ level1: "0px 4px 8px #1419271f",
121
+ level2: "0px 8px 28px #14192729",
123
122
  };
124
123
 
125
124
  export const font = {
@@ -131,7 +130,7 @@ export const fontSize = { xs: 12, sm: 14, md: 16, lg: 18, xl: 24 };
131
130
 
132
131
  export const space = { 0: 0, 50: 4, 100: 8, 150: 12, 200: 16, 250: 20, 400: 32 };
133
132
 
134
- export const radius = { small: 12, alt: 16, medium: 20, full: 999 };
133
+ export const radius = { none: 0, small: 12, alt: 16, medium: 20, full: 999 };
135
134
 
136
135
  export const opacity = {
137
136
  light: 0.16,
@@ -141,24 +140,99 @@ export const opacity = {
141
140
  semiTransparent: 0.08,
142
141
  };
143
142
 
144
- export const shadow = {
145
- card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
146
- drop: "0 4px 4px rgba(10,19,35,0.10)",
147
- portalLevel1: "0px 4px 8px #1419271f",
148
- portalLevel2: "0px 8px 28px #14192729",
149
- };
150
-
151
143
  export const effect = { glassBlur: 4 };
152
144
 
145
+ /** @deprecated promoted to root in 2.0.0 — same objects, kept one major version. */
146
+ export const portal = { surface, shadow, feedback, priority, ticketStatus };
147
+
148
+ /** @deprecated superseded by `color`/`font`/etc. above — the pre-2.0 default system. */
149
+ export const legacy = {
150
+ color: {
151
+ brand: {
152
+ logo: "#1d335c",
153
+ blue: "#5878a7",
154
+ darkOrb: "#141927",
155
+ cultured: "#f3f6fa",
156
+ gainsboro: "#dbdfe5",
157
+ dandelion: "#e9d72f",
158
+ },
159
+ text: {
160
+ primary: "#0a1323",
161
+ secondary: "#f4f4f6",
162
+ muted: "#545f74",
163
+ gray: "#868686",
164
+ },
165
+ neutral: {
166
+ black: "#000000",
167
+ white: "#ffffff",
168
+ grayishBlue50: "#f4f4f6",
169
+ grayishBlue300: "#c2c7cf",
170
+ midnightSky300: "#e6e7f7",
171
+ midnightSky700: "#48495d",
172
+ },
173
+ surface: {
174
+ page: "#e6eaf0",
175
+ card: "rgba(240,241,244,0.70)",
176
+ cardSolid: "rgba(240,241,244,0.90)",
177
+ input: "rgba(244,244,246,0.70)",
178
+ },
179
+ line: { stroke: "#ffffff" },
180
+ semantic: {
181
+ success: { solid: "#20a156", bright: "#28ca6b", bg: "#eafbf1" },
182
+ warning: { solid: "#f16c24", bg: "#ffe5d8" },
183
+ danger: { solid: "#a21a17", bg: "#fffbfb" },
184
+ },
185
+ status: {
186
+ resolved: { fg: "#0399ae", bg: "#d3f7fc" },
187
+ highPriority: { fg: "#682a5d", bg: "#eee0ec" },
188
+ mediumPriority: { fg: "#f16c24", bg: "#ffe5d8" },
189
+ brand: { fg: "#0a1323", bg: "#d0d3fe" },
190
+ },
191
+ },
192
+ typography: {
193
+ mediumTitle: { family: "Urbanist", weight: 400, size: 24, lineHeight: 1.35, letterSpacing: 1 },
194
+ subtitle: { family: "Urbanist", weight: 400, size: 18, lineHeight: 1.35, letterSpacing: 1 },
195
+ bodyText: { family: "Urbanist", weight: 500, size: 16, lineHeight: 1.5, letterSpacing: 0 },
196
+ link: { family: "Urbanist", weight: 500, size: 16, lineHeight: 1.5, letterSpacing: 1 },
197
+ smallBodyText: { family: "Urbanist", weight: 500, size: 14, lineHeight: 1.15, letterSpacing: 0 },
198
+ smallLink: { family: "Urbanist", weight: 700, size: 14, lineHeight: 1.5, letterSpacing: 0 },
199
+ headingH6Semibold: { family: "Urbanist", weight: 600, size: 14, lineHeight: 1.5, letterSpacing: 1 },
200
+ headingH6Regular: { family: "Urbanist", weight: 400, size: 14, lineHeight: 1.5, letterSpacing: 1 },
201
+ placeholder: { family: "Urbanist", weight: 400, size: 14, lineHeight: 1.7, letterSpacing: 1 },
202
+ tinySemibold: { family: "Urbanist", weight: 600, size: 12, lineHeight: 1.5, letterSpacing: 1 },
203
+ uppercase: { family: "Urbanist", weight: 500, size: 12, lineHeight: 1.35, letterSpacing: 1, textTransform: "uppercase" },
204
+ },
205
+ shadow: {
206
+ card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
207
+ drop: "0 4px 4px rgba(10,19,35,0.10)",
208
+ },
209
+ effect: { dropShadow: "0 4px 4px rgba(10,19,35,0.10)" },
210
+ component: {
211
+ button: {
212
+ primary: { bg: "#0a1323", text: "#ffffff", radius: 12, paddingY: 12, paddingX: 32 },
213
+ secondary: { bg: "#f4f4f6", text: "#0a1323", radius: 12, paddingY: 12, paddingX: 32 },
214
+ },
215
+ input: {
216
+ bg: "rgba(244,244,246,0.70)", border: "1px solid #ffffff", radius: 12,
217
+ shadow: "0 4px 4px rgba(10,19,35,0.10)", text: "#0a1323",
218
+ },
219
+ },
220
+ };
221
+
153
222
  export const tokens = {
154
223
  color,
155
- portal,
224
+ priority,
225
+ ticketStatus,
226
+ surface,
227
+ feedback,
228
+ shadow,
156
229
  font,
157
230
  fontSize,
158
231
  space,
159
232
  radius,
160
233
  opacity,
161
- shadow,
162
234
  effect,
235
+ portal,
236
+ legacy,
163
237
  };
164
238
  export default tokens;