@dybo-ai/design 1.0.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/tokens.cjs ADDED
@@ -0,0 +1,31 @@
1
+ // DYBO design tokens (CommonJS mirror of tokens.mjs).
2
+ const color = {
3
+ brand: { logo: "#1d335c", blue: "#5878a7", darkOrb: "#141927", cultured: "#f3f6fa", gainsboro: "#dbdfe5" },
4
+ text: { primary: "#0a1323", secondary: "#f4f4f6", muted: "#545f74", gray: "#868686" },
5
+ neutral: { black: "#000000", white: "#ffffff", grayishBlue50: "#f4f4f6", grayishBlue300: "#c2c7cf", midnightSky300: "#e6e7f7", midnightSky700: "#48495d" },
6
+ surface: { page: "#e6eaf0", card: "rgba(240,241,244,0.70)", cardSolid: "rgba(240,241,244,0.90)", input: "rgba(244,244,246,0.70)" },
7
+ line: { stroke: "#ffffff" },
8
+ semantic: {
9
+ success: { solid: "#20a156", bright: "#28ca6b", bg: "#eafbf1" },
10
+ warning: { solid: "#f16c24", bg: "#ffe5d8" },
11
+ danger: { solid: "#a21a17", bg: "#fffbfb" },
12
+ },
13
+ status: {
14
+ resolved: { fg: "#0399ae", bg: "#d3f7fc" },
15
+ highPriority: { fg: "#682a5d", bg: "#eee0ec" },
16
+ mediumPriority: { fg: "#f16c24", bg: "#ffe5d8" },
17
+ brand: { fg: "#0a1323", bg: "#d0d3fe" },
18
+ },
19
+ };
20
+ const font = { family: "Urbanist, sans-serif", weight: { regular: 400, medium: 500, semibold: 600, bold: 700 } };
21
+ const fontSize = { xs: 12, sm: 14, md: 16, lg: 18, xl: 24 };
22
+ const space = { 0: 0, 50: 4, 100: 8, 150: 12, 200: 16, 250: 20, 400: 32 };
23
+ const radius = { small: 12, alt: 16, medium: 20, full: 999 };
24
+ const opacity = { light: 0.16, medium: 0.32, intense: 0.64 };
25
+ const shadow = {
26
+ card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
27
+ drop: "0 4px 4px rgba(10,19,35,0.10)",
28
+ };
29
+ const effect = { glassBlur: 4 };
30
+ const tokens = { color, font, fontSize, space, radius, opacity, shadow, effect };
31
+ module.exports = { tokens, color, font, fontSize, space, radius, opacity, shadow, effect, default: tokens };
package/tokens.json ADDED
@@ -0,0 +1,132 @@
1
+ {
2
+ "$meta": {
3
+ "name": "DYBO Design System",
4
+ "source": "Figma — DYBO (file ZHtkvTEeTYlNVbSncLyI1a)",
5
+ "extractedFrom": "Operator screen + Local Components page (buttons, inputs, alert, tags)",
6
+ "extractedOn": "2026-07-23",
7
+ "status": "Complete for light theme. Dark theme (a 'Theme Switch' + Midnight Sky scale exist) not yet fully captured — see docs/design-system.md 'Gaps'.",
8
+ "notes": "Values are real Figma variables with original names retained. Figma uses parallel naming for spacing/radius (t-shirt + numeric); normalized values below are authoritative. NOTE: Figma's 'Feedback Colors/Error' is an orange (#cc6600); the true red danger color is 'Brand/Danger/700' (#a21a17). Recommended semantic mapping is under color.semantic.",
9
+ "style": "Glassmorphism — translucent surfaces, backdrop blur, soft blue-gray shadows"
10
+ },
11
+
12
+ "color": {
13
+ "brand": {
14
+ "logo": { "value": "#1d335c", "figmaName": "Brand Colors/Logo", "desc": "Deepest brand navy — logo, key emphasis" },
15
+ "blueYonder": { "value": "#5878a7", "figmaName": "Brand Colors/Blue Yonder", "desc": "Primary blue accent" },
16
+ "darkOrb": { "value": "#141927", "figmaName": "Brand Colors/Dark Orb", "desc": "Near-black brand shade" },
17
+ "cultured": { "value": "#f3f6fa", "figmaName": "Brand Colors/Cultured", "desc": "Lightest brand tint" },
18
+ "gainsboro": { "value": "#dbdfe5", "figmaName": "Brand Colors/Gainsboro", "desc": "Light neutral brand tint" }
19
+ },
20
+ "text": {
21
+ "primary": { "value": "#0a1323", "figmaName": "Primary Color / Title / Brand - DYBO", "desc": "Primary text & headings (navy near-black)" },
22
+ "secondary": { "value": "#f4f4f6", "figmaName": "Secondary Color", "desc": "Text/fill on dark surfaces" },
23
+ "muted": { "value": "#545f74", "figmaName": "Side bar Menu Unselected options", "desc": "Muted/secondary UI text" },
24
+ "gray": { "value": "#868686", "figmaName": "Brand/Primary/500", "desc": "Neutral gray text" }
25
+ },
26
+ "neutral": {
27
+ "black": { "value": "#000000", "figmaName": "Neutral Colors/Black" },
28
+ "white": { "value": "#ffffff", "figmaName": "Neutral Colors/White" },
29
+ "grayishBlue50": { "value": "#f4f4f6", "figmaName": "Grayish Blue/50" },
30
+ "grayishBlue300": { "value": "#c2c7cf", "figmaName": "Grayish Blue/300", "desc": "Borders, dividers, disabled states" },
31
+ "midnightSky300": { "value": "#e6e7f7", "figmaName": "Midnight Sky/300", "desc": "Light lavender-gray surface" },
32
+ "midnightSky700": { "value": "#48495d", "figmaName": "Midnight Sky/700", "desc": "Dark UI text/surface" }
33
+ },
34
+ "surface": {
35
+ "page": { "value": "#e6eaf0", "figmaName": "Page Background", "desc": "App background" },
36
+ "card": { "value": "#f0f1f4b2", "rgba": "rgba(240,241,244,0.70)", "figmaName": "Card Background", "desc": "Glass card (default)" },
37
+ "cardSolid": { "value": "#f0f1f4e5", "rgba": "rgba(240,241,244,0.90)", "figmaName": "Card BG With Opacity", "desc": "Denser glass card" },
38
+ "input": { "value": "#f4f4f6b2", "rgba": "rgba(244,244,246,0.70)", "figmaName": "Input Field Background", "desc": "Input field fill (glass)" }
39
+ },
40
+ "line": {
41
+ "stroke": { "value": "#ffffff", "figmaName": "Stroke / Side bar Menu Strokes and Details", "desc": "Light glass edge stroke (1px)" }
42
+ },
43
+ "shadow": {
44
+ "effect": { "value": "#0a13231a", "rgba": "rgba(10,19,35,0.10)", "figmaName": "Shadow Effect", "desc": "Key shadow color (navy 10%)" },
45
+ "ambient": { "value": "#aab4c0ba", "rgba": "rgba(170,180,192,0.73)", "figmaName": "Shadow Color", "desc": "Ambient blue-gray shadow" }
46
+ },
47
+
48
+ "semantic": {
49
+ "$note": "Recommended mapping for new apps. Solids are the strongest accessible values found; bg = tint for banners/badges.",
50
+ "success": { "solid": "#20a156", "bright": "#28ca6b", "bg": "#eafbf1", "figmaName": "Brand/Success/700 · Cool Green/500 · Cool Green/50" },
51
+ "warning": { "solid": "#f16c24", "alt": "#cc6600", "bg": "#ffe5d8", "figmaName": "Medium Priority · Feedback Colors/Error · Medium Priority Background" },
52
+ "danger": { "solid": "#a21a17", "bg": "#fffbfb", "figmaName": "Brand/Danger/700 · Bright Red/50" },
53
+ "feedback": {
54
+ "successText": { "value": "#91eabe", "figmaName": "Feedback Colors/Success Text" },
55
+ "successBg": { "value": "#d7f0e4", "figmaName": "Feedback Colors/Success Background" },
56
+ "errorOrange": { "value": "#cc6600", "figmaName": "Feedback Colors/Error (note: orange, not red)" },
57
+ "errorOrangeBg": { "value": "#fff2e5", "figmaName": "Feedback Colors/Error Background" }
58
+ }
59
+ },
60
+
61
+ "status": {
62
+ "$note": "DYBO domain status/priority colors (foreground + background pairs), from the Tags component.",
63
+ "resolved": { "fg": "#0399ae", "bg": "#d3f7fc", "figmaName": "Resolved · Resolved Background" },
64
+ "highPriority": { "fg": "#682a5d", "bg": "#eee0ec", "figmaName": "High Priority · High Priority Background" },
65
+ "mediumPriority": { "fg": "#f16c24", "bg": "#ffe5d8", "figmaName": "Medium Priority · Medium Priority Background" },
66
+ "brand": { "fg": "#0a1323", "bg": "#d0d3fe", "figmaName": "Brand - DYBO · DYBO Brand Background" }
67
+ }
68
+ },
69
+
70
+ "font": {
71
+ "family": { "base": "Urbanist, sans-serif" },
72
+ "weight": { "regular": 400, "medium": 500, "semibold": 600, "bold": 700 }
73
+ },
74
+
75
+ "typography": {
76
+ "mediumTitle": { "family": "Urbanist", "weight": 400, "size": 24, "lineHeight": 1.35, "letterSpacing": 1, "figmaName": "Medium Title" },
77
+ "subtitle": { "family": "Urbanist", "weight": 400, "size": 18, "lineHeight": 1.35, "letterSpacing": 1, "figmaName": "Subtitle" },
78
+ "bodyText": { "family": "Urbanist", "weight": 500, "size": 16, "lineHeight": 1.5, "letterSpacing": 0, "figmaName": "Body Text" },
79
+ "link": { "family": "Urbanist", "weight": 500, "size": 16, "lineHeight": 1.5, "letterSpacing": 1, "figmaName": "Link" },
80
+ "smallBodyText": { "family": "Urbanist", "weight": 500, "size": 14, "lineHeight": 1.15, "letterSpacing": 0, "figmaName": "Small Body Text" },
81
+ "smallLink": { "family": "Urbanist", "weight": 700, "size": 14, "lineHeight": 1.5, "letterSpacing": 0, "figmaName": "Small Link Stylized" },
82
+ "headingH6Semibold": { "family": "Urbanist", "weight": 600, "size": 14, "lineHeight": 1.5, "letterSpacing": 1, "figmaName": "Urbanist/Heading/H6/Semibold" },
83
+ "headingH6Regular": { "family": "Urbanist", "weight": 400, "size": 14, "lineHeight": 1.5, "letterSpacing": 1, "figmaName": "Urbanist/Heading/H6/Regular" },
84
+ "placeholder": { "family": "Urbanist", "weight": 400, "size": 14, "lineHeight": 1.7, "letterSpacing": 1, "figmaName": "Placeholder" },
85
+ "tinySemibold": { "family": "Urbanist", "weight": 600, "size": 12, "lineHeight": 1.5, "letterSpacing": 1, "figmaName": "Urbanist/Body/Tiny/Semibold" },
86
+ "uppercase": { "family": "Urbanist", "weight": 500, "size": 12, "lineHeight": 1.35, "letterSpacing": 1, "textTransform": "uppercase", "figmaName": "Uppercase Text" }
87
+ },
88
+
89
+ "space": {
90
+ "000": { "value": 0, "figmaName": "spacing-0" },
91
+ "050": { "value": 4, "figmaName": "Spacing/Quarck · spacing-050" },
92
+ "100": { "value": 8, "figmaName": "Spacing/Nano · spacing-100" },
93
+ "150": { "value": 12, "figmaName": "Spacing/4XS · spacing-150" },
94
+ "200": { "value": 16, "figmaName": "Spacing/XXXS · spacing-200" },
95
+ "250": { "value": 20, "figmaName": "Spacing/XXS" },
96
+ "400": { "value": 32, "figmaName": "Spacing/XS" }
97
+ },
98
+
99
+ "radius": {
100
+ "small": { "value": 12, "figmaName": "Appearance/Radius/Small" },
101
+ "alt": { "value": 16, "figmaName": "radius-200" },
102
+ "medium": { "value": 20, "figmaName": "Appearance/Radius/Medium", "desc": "Default card radius" },
103
+ "full": { "value": 999, "figmaName": "Appearance/Radius/Full · radius-rounded (1000)", "desc": "Pills / circular" }
104
+ },
105
+
106
+ "opacity": {
107
+ "light": { "value": 0.16, "figmaName": "Appearance/Opacity Level/Light" },
108
+ "medium": { "value": 0.32, "figmaName": "Appearance/Opacity Level/Medium" },
109
+ "intense": { "value": 0.64, "figmaName": "Appearance/Opacity Level/Intense" }
110
+ },
111
+
112
+ "border": {
113
+ "sm": { "value": 1, "figmaName": "border-sm" }
114
+ },
115
+
116
+ "effect": {
117
+ "glassBlur": { "value": 4, "figmaName": "Glass", "desc": "backdrop-filter blur radius (px)" },
118
+ "dropShadow": { "value": "0 4px 4px rgba(10,19,35,0.10)", "figmaName": "Drop shadow", "desc": "offset (0,4), radius 4, color Shadow Effect" }
119
+ },
120
+
121
+ "component": {
122
+ "button": {
123
+ "primary": { "bg": "#0a1323", "text": "#ffffff", "font": "link (Urbanist 500 / 16 / ls 1)", "radius": 12, "paddingY": 12, "paddingX": 32, "figmaName": "Primary Button" },
124
+ "secondary": { "bg": "#f4f4f6", "text": "#0a1323", "font": "link (Urbanist 500 / 16 / ls 1)", "radius": 12, "paddingY": 12, "paddingX": 32, "figmaName": "Secondary Button" }
125
+ },
126
+ "input": {
127
+ "bg": "rgba(244,244,246,0.70)", "border": "1px solid #ffffff", "radius": 12,
128
+ "shadow": "0 4px 4px rgba(10,19,35,0.10)", "text": "#0a1323",
129
+ "placeholder": "placeholder (Urbanist 400 / 14 / ls 1, #545f74)", "figmaName": "Input Field"
130
+ }
131
+ }
132
+ }
package/tokens.mjs ADDED
@@ -0,0 +1,40 @@
1
+ // DYBO design tokens — flat, resolved values for programmatic use (JS/TS).
2
+ // Source of truth: tokens.json. Keep in sync when tokens.json changes.
3
+ export const color = {
4
+ brand: { logo: "#1d335c", blue: "#5878a7", darkOrb: "#141927", cultured: "#f3f6fa", gainsboro: "#dbdfe5" },
5
+ text: { primary: "#0a1323", secondary: "#f4f4f6", muted: "#545f74", gray: "#868686" },
6
+ neutral: { black: "#000000", white: "#ffffff", grayishBlue50: "#f4f4f6", grayishBlue300: "#c2c7cf", midnightSky300: "#e6e7f7", midnightSky700: "#48495d" },
7
+ surface: { page: "#e6eaf0", card: "rgba(240,241,244,0.70)", cardSolid: "rgba(240,241,244,0.90)", input: "rgba(244,244,246,0.70)" },
8
+ line: { stroke: "#ffffff" },
9
+ semantic: {
10
+ success: { solid: "#20a156", bright: "#28ca6b", bg: "#eafbf1" },
11
+ warning: { solid: "#f16c24", bg: "#ffe5d8" },
12
+ danger: { solid: "#a21a17", bg: "#fffbfb" },
13
+ },
14
+ status: {
15
+ resolved: { fg: "#0399ae", bg: "#d3f7fc" },
16
+ highPriority: { fg: "#682a5d", bg: "#eee0ec" },
17
+ mediumPriority: { fg: "#f16c24", bg: "#ffe5d8" },
18
+ brand: { fg: "#0a1323", bg: "#d0d3fe" },
19
+ },
20
+ };
21
+
22
+ export const font = { family: "Urbanist, sans-serif", weight: { regular: 400, medium: 500, semibold: 600, bold: 700 } };
23
+
24
+ export const fontSize = { xs: 12, sm: 14, md: 16, lg: 18, xl: 24 };
25
+
26
+ export const space = { 0: 0, 50: 4, 100: 8, 150: 12, 200: 16, 250: 20, 400: 32 };
27
+
28
+ export const radius = { small: 12, alt: 16, medium: 20, full: 999 };
29
+
30
+ export const opacity = { light: 0.16, medium: 0.32, intense: 0.64 };
31
+
32
+ export const shadow = {
33
+ card: "0 8px 24px rgba(10,19,35,0.10), 0 2px 8px rgba(170,180,192,0.35)",
34
+ drop: "0 4px 4px rgba(10,19,35,0.10)",
35
+ };
36
+
37
+ export const effect = { glassBlur: 4 };
38
+
39
+ export const tokens = { color, font, fontSize, space, radius, opacity, shadow, effect };
40
+ export default tokens;