@dybo-ai/design 1.2.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,124 +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
- },
52
- shadow: {
53
- level1: "0px 4px 8px #1419271f",
54
- level2: "0px 8px 28px #14192729",
55
- },
56
- feedback: {
57
- successLight: "#90eabd",
58
- successBackground: "#d6f0e3",
59
- warningSolid: "#cc6600",
60
- warningBackground: "#fff2e5",
61
- destructiveBright: "#fa3848",
62
- infoBackground: "#d9e3f0",
63
- },
64
- priority: {
65
- urgent: {
66
- bg: "rgba(250,56,72,0.12)",
67
- fg: "#c81e2c",
68
- darkBg: "rgba(230,57,57,0.22)",
69
- darkFg: "#f9a0a0",
70
- },
71
- high: {
72
- bg: "rgba(255,128,0,0.15)",
73
- fg: "#a85400",
74
- darkBg: "rgba(230,115,0,0.22)",
75
- darkFg: "#ffb366",
76
- },
77
- medium: {
78
- bg: "rgba(242,185,13,0.20)",
79
- fg: "#9d6607",
80
- darkBg: "rgba(242,185,13,0.16)",
81
- darkFg: "#f5d56a",
82
- },
83
- low: {
84
- bg: "rgba(151,163,180,0.24)",
85
- fg: "#50627c",
86
- darkBg: "rgba(140,155,175,0.20)",
87
- darkFg: "#b8c4d4",
88
- },
89
- none: {
90
- bg: "rgba(192,198,206,0.35)",
91
- fg: "#677283",
92
- darkBg: "rgba(115,125,140,0.25)",
93
- darkFg: "#b0b8c4",
94
- },
95
- },
96
- ticketStatus: {
97
- open: {
98
- bg: "#d9e3f2",
99
- fg: "#2e5b9e",
100
- darkBg: "#2a3d52",
101
- darkFg: "#a8c4e8",
102
- },
103
- pending: {
104
- bg: "#e9dff6",
105
- fg: "#7146aa",
106
- darkBg: "#3d2f4d",
107
- darkFg: "#d4b8f0",
108
- },
109
- snoozed: {
110
- bg: "#d7dde5",
111
- fg: "#58687e",
112
- darkBg: "#3a424c",
113
- darkFg: "#b8c4d4",
114
- },
115
- resolved: {
116
- bg: "#d6f0e3",
117
- fg: "#1a6640",
118
- darkBg: "#1f4a32",
119
- darkFg: "#a8e0c0",
120
- },
121
- },
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",
122
122
  };
123
123
 
124
124
  export const font = {
@@ -130,7 +130,7 @@ export const fontSize = { xs: 12, sm: 14, md: 16, lg: 18, xl: 24 };
130
130
 
131
131
  export const space = { 0: 0, 50: 4, 100: 8, 150: 12, 200: 16, 250: 20, 400: 32 };
132
132
 
133
- 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 };
134
134
 
135
135
  export const opacity = {
136
136
  light: 0.16,
@@ -140,24 +140,99 @@ export const opacity = {
140
140
  semiTransparent: 0.08,
141
141
  };
142
142
 
143
- export const shadow = {
144
- card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
145
- drop: "0 4px 4px rgba(10,19,35,0.10)",
146
- portalLevel1: "0px 4px 8px #1419271f",
147
- portalLevel2: "0px 8px 28px #14192729",
148
- };
149
-
150
143
  export const effect = { glassBlur: 4 };
151
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
+
152
222
  export const tokens = {
153
223
  color,
154
- portal,
224
+ priority,
225
+ ticketStatus,
226
+ surface,
227
+ feedback,
228
+ shadow,
155
229
  font,
156
230
  fontSize,
157
231
  space,
158
232
  radius,
159
233
  opacity,
160
- shadow,
161
234
  effect,
235
+ portal,
236
+ legacy,
162
237
  };
163
238
  export default tokens;