@bundu/ui 0.1.0 → 0.1.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/package.json +3 -2
- package/styles/brand-bundu.css +10 -7
- package/styles/brand-mukoko.css +5 -2
- package/styles/brand-nyuchi.css +5 -2
- package/styles/globals.css +6 -139
- package/styles/tokens.css +188 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bundu/ui",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "The marketing UI kit for the Bundu Ecosystem — Nyuchi's implementation of the Mzizi design system. Astro marketing components (Hero, Section, MineralStrip, Container, Breadcrumb with valid BreadcrumbList JSON-LD, …) plus shadcn CVA + cn() React primitives mapped onto the seven-African-mineral tokens, a canonical globals.css, tiny brand overrides, and a Tailwind preset.",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "The marketing UI kit for the Bundu Ecosystem — Nyuchi's implementation of the Mzizi design system. Astro marketing components (Hero, Section, MineralStrip, Container, Breadcrumb with valid BreadcrumbList JSON-LD, …) plus shadcn CVA + cn() React primitives mapped onto the seven-African-mineral tokens, a framework-agnostic tokens.css, a canonical globals.css, tiny brand overrides, and a Tailwind preset.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Nyuchi Africa (Pvt) Ltd",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"./SocialIcon.astro": "./src/SocialIcon.astro",
|
|
46
46
|
"./Breadcrumb.astro": "./src/Breadcrumb.astro",
|
|
47
47
|
"./lib/utils": "./src/lib/utils.ts",
|
|
48
|
+
"./styles/tokens.css": "./styles/tokens.css",
|
|
48
49
|
"./styles/globals.css": "./styles/globals.css",
|
|
49
50
|
"./styles/brand-bundu.css": "./styles/brand-bundu.css",
|
|
50
51
|
"./styles/brand-nyuchi.css": "./styles/brand-nyuchi.css",
|
package/styles/brand-bundu.css
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
/* brand-bundu — Bundu Foundation primary:
|
|
2
|
-
|
|
1
|
+
/* brand-bundu — Bundu Foundation primary: copper.
|
|
2
|
+
Copper is Bundu's canonical brand→mineral in the seven-mineral system
|
|
3
|
+
(stewardship; the ecosystem commons). Import AFTER globals.css (or
|
|
4
|
+
tokens.css) to select this brand's primary + ring. */
|
|
3
5
|
:root {
|
|
4
|
-
--primary: var(--color-
|
|
5
|
-
--ring: var(--color-
|
|
6
|
+
--primary: var(--color-copper);
|
|
7
|
+
--ring: var(--color-copper);
|
|
6
8
|
}
|
|
7
|
-
.dark
|
|
8
|
-
|
|
9
|
-
--
|
|
9
|
+
.dark,
|
|
10
|
+
[data-theme="dark"] {
|
|
11
|
+
--primary: var(--color-copper);
|
|
12
|
+
--ring: var(--color-copper);
|
|
10
13
|
}
|
package/styles/brand-mukoko.css
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/* brand-mukoko — Mukoko primary: tanzanite.
|
|
2
|
-
|
|
2
|
+
Tanzanite is Mukoko's canonical brand→mineral (identity; Africa's super
|
|
3
|
+
app). Import AFTER globals.css (or tokens.css) to select this brand's
|
|
4
|
+
primary + ring. */
|
|
3
5
|
:root {
|
|
4
6
|
--primary: var(--color-tanzanite);
|
|
5
7
|
--ring: var(--color-tanzanite);
|
|
6
8
|
}
|
|
7
|
-
.dark
|
|
9
|
+
.dark,
|
|
10
|
+
[data-theme="dark"] {
|
|
8
11
|
--primary: var(--color-tanzanite);
|
|
9
12
|
--ring: var(--color-tanzanite);
|
|
10
13
|
}
|
package/styles/brand-nyuchi.css
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/* brand-nyuchi — Nyuchi primary: gold.
|
|
2
|
-
|
|
2
|
+
Gold is Nyuchi's canonical brand→mineral (value; infrastructure &
|
|
3
|
+
enterprise). Import AFTER globals.css (or tokens.css) to select this
|
|
4
|
+
brand's primary + ring. */
|
|
3
5
|
:root {
|
|
4
6
|
--primary: var(--color-gold);
|
|
5
7
|
--ring: var(--color-gold);
|
|
6
8
|
}
|
|
7
|
-
.dark
|
|
9
|
+
.dark,
|
|
10
|
+
[data-theme="dark"] {
|
|
8
11
|
--primary: var(--color-gold);
|
|
9
12
|
--ring: var(--color-gold);
|
|
10
13
|
}
|
package/styles/globals.css
CHANGED
|
@@ -1,143 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
--color-cobalt-on-container: #002966;
|
|
7
|
-
|
|
8
|
-
--color-tanzanite: #4b0082;
|
|
9
|
-
--color-tanzanite-container: #f3e5f5;
|
|
10
|
-
--color-tanzanite-on-container: #2e004d;
|
|
11
|
-
|
|
12
|
-
--color-malachite: #004d40;
|
|
13
|
-
--color-malachite-container: #e0f2f1;
|
|
14
|
-
--color-malachite-on-container: #00332b;
|
|
15
|
-
|
|
16
|
-
--color-gold: #5d4037;
|
|
17
|
-
--color-gold-container: #fff8e1;
|
|
18
|
-
--color-gold-on-container: #3e2723;
|
|
19
|
-
|
|
20
|
-
--color-terracotta: #a0522d;
|
|
21
|
-
--color-terracotta-container: #f5e6d3;
|
|
22
|
-
--color-terracotta-on-container: #5d2906;
|
|
23
|
-
|
|
24
|
-
--color-sodalite: #283593;
|
|
25
|
-
--color-sodalite-container: #e8eaf6;
|
|
26
|
-
--color-sodalite-on-container: #141a5c;
|
|
27
|
-
|
|
28
|
-
--color-copper: #bf5a36;
|
|
29
|
-
--color-copper-container: #fbe4da;
|
|
30
|
-
--color-copper-on-container: #5c2410;
|
|
31
|
-
|
|
32
|
-
/* === Semantic tokens — light (canonical from mzizi.dev) === */
|
|
33
|
-
--background: #faf9f4; /* warm cream canvas */
|
|
34
|
-
--canvas: #faf9f4;
|
|
35
|
-
--foreground: #1a1a17; /* near-black ink */
|
|
36
|
-
--ink: #1a1a17;
|
|
37
|
-
|
|
38
|
-
--card: #ffffff;
|
|
39
|
-
--card-foreground: #1a1a17;
|
|
40
|
-
--popover: #ffffff;
|
|
41
|
-
--popover-foreground: #1a1a17;
|
|
42
|
-
|
|
43
|
-
/* Brand primary: cobalt is the canonical Mzizi / Design MCP default.
|
|
44
|
-
Each brand site overrides --primary and --ring to its own mineral
|
|
45
|
-
via the brand-*.css overlay imported after this file. */
|
|
46
|
-
--primary: var(--color-cobalt);
|
|
47
|
-
--primary-foreground: #ffffff;
|
|
48
|
-
|
|
49
|
-
--secondary: #f4f2ec;
|
|
50
|
-
--secondary-foreground: #1a1a17;
|
|
51
|
-
|
|
52
|
-
--muted: #f4f2ec;
|
|
53
|
-
--muted-foreground: #5d5c57;
|
|
54
|
-
|
|
55
|
-
--accent: var(--color-cobalt-container);
|
|
56
|
-
--accent-foreground: var(--color-cobalt-on-container);
|
|
57
|
-
|
|
58
|
-
--destructive: #b3261e;
|
|
59
|
-
--destructive-foreground: #ffffff;
|
|
60
|
-
--destructive-container: #fdeded;
|
|
61
|
-
|
|
62
|
-
--border: #e7e5e0; /* warm stone */
|
|
63
|
-
--input: #ffffff;
|
|
64
|
-
--ring: var(--color-cobalt);
|
|
65
|
-
|
|
66
|
-
--success: var(--color-malachite);
|
|
67
|
-
--warning: #7a5c00;
|
|
68
|
-
--error: #b3261e;
|
|
69
|
-
--info: var(--color-cobalt);
|
|
70
|
-
|
|
71
|
-
/* Touch targets */
|
|
72
|
-
--touch-target: 56px;
|
|
73
|
-
--touch-target-sm: 48px;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
.dark {
|
|
77
|
-
--color-cobalt: #00b0ff;
|
|
78
|
-
--color-cobalt-container: #001f3f;
|
|
79
|
-
--color-cobalt-on-container: #b3e5fc;
|
|
80
|
-
|
|
81
|
-
--color-tanzanite: #b388ff;
|
|
82
|
-
--color-tanzanite-container: #1a0033;
|
|
83
|
-
--color-tanzanite-on-container: #e1bee7;
|
|
84
|
-
|
|
85
|
-
--color-malachite: #64ffda;
|
|
86
|
-
--color-malachite-container: #00251a;
|
|
87
|
-
--color-malachite-on-container: #a7ffeb;
|
|
88
|
-
|
|
89
|
-
--color-gold: #ffd740;
|
|
90
|
-
--color-gold-container: #332200;
|
|
91
|
-
--color-gold-on-container: #ffecb3;
|
|
92
|
-
|
|
93
|
-
--color-terracotta: #e1b07e;
|
|
94
|
-
--color-terracotta-container: #3e2817;
|
|
95
|
-
--color-terracotta-on-container: #f5e6d3;
|
|
96
|
-
|
|
97
|
-
--color-sodalite: #3d5afe;
|
|
98
|
-
--color-sodalite-container: #0d1442;
|
|
99
|
-
--color-sodalite-on-container: #c5cae9;
|
|
100
|
-
|
|
101
|
-
--color-copper: #ff8a65;
|
|
102
|
-
--color-copper-container: #3a1a0e;
|
|
103
|
-
--color-copper-on-container: #ffd3c2;
|
|
104
|
-
|
|
105
|
-
--background: #100f0e;
|
|
106
|
-
--canvas: #100f0e;
|
|
107
|
-
--foreground: #f0efe9;
|
|
108
|
-
--ink: #f0efe9;
|
|
109
|
-
|
|
110
|
-
--card: #1a1917;
|
|
111
|
-
--card-foreground: #f0efe9;
|
|
112
|
-
--popover: #1a1917;
|
|
113
|
-
--popover-foreground: #f0efe9;
|
|
114
|
-
|
|
115
|
-
--primary: var(--color-cobalt);
|
|
116
|
-
--primary-foreground: #1a1917;
|
|
117
|
-
|
|
118
|
-
--secondary: #2a2927;
|
|
119
|
-
--secondary-foreground: #f0efe9;
|
|
120
|
-
|
|
121
|
-
--muted: #2a2927;
|
|
122
|
-
--muted-foreground: #a8a6a0;
|
|
123
|
-
|
|
124
|
-
--accent: var(--color-cobalt-container);
|
|
125
|
-
--accent-foreground: var(--color-cobalt-on-container);
|
|
126
|
-
|
|
127
|
-
--destructive: #f2b8b5;
|
|
128
|
-
--destructive-foreground: #1a1917;
|
|
129
|
-
--destructive-container: #3e1818;
|
|
130
|
-
|
|
131
|
-
--border: #2a2927;
|
|
132
|
-
--input: #100f0e;
|
|
133
|
-
--ring: var(--color-cobalt);
|
|
134
|
-
|
|
135
|
-
--success: var(--color-malachite);
|
|
136
|
-
--warning: #ffd866;
|
|
137
|
-
--error: #f2b8b5;
|
|
138
|
-
--info: var(--color-cobalt);
|
|
139
|
-
}
|
|
1
|
+
/* Design tokens — the seven-mineral palette + semantic tokens live in the
|
|
2
|
+
framework-agnostic tokens.css so any site (Tailwind or plain-CSS docs)
|
|
3
|
+
consumes them from one central source. This file adds the Tailwind base,
|
|
4
|
+
component and utility layers on top. */
|
|
5
|
+
@import "./tokens.css";
|
|
140
6
|
|
|
7
|
+
@layer base {
|
|
141
8
|
html {
|
|
142
9
|
scroll-behavior: smooth;
|
|
143
10
|
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/* @bundu/ui — design tokens (framework-agnostic).
|
|
2
|
+
|
|
3
|
+
The seven African Minerals + seven heritage tones + semantic tokens,
|
|
4
|
+
canonical from the Mzizi design system (mzizi.dev / styling-minerals,
|
|
5
|
+
styling-heritage-colors). This file is PURE custom properties — no
|
|
6
|
+
@layer, no @apply, no Tailwind — so it can be imported by ANY site to
|
|
7
|
+
pull the ecosystem palette from one central source instead of
|
|
8
|
+
hardcoding hex values per page.
|
|
9
|
+
|
|
10
|
+
- Tailwind / shadcn sites: import ../styles/globals.css (it @imports
|
|
11
|
+
this file, then adds the component + utility layers).
|
|
12
|
+
- Plain-CSS / Astro Starlight docs sites: @import this file directly and
|
|
13
|
+
map the mineral vars onto your own theme variables.
|
|
14
|
+
|
|
15
|
+
Dark mode is supported under both conventions: the .dark class
|
|
16
|
+
(shadcn / Tailwind toggle) and [data-theme="dark"] (data-attribute
|
|
17
|
+
toggle, e.g. Starlight).
|
|
18
|
+
|
|
19
|
+
Do NOT hand-edit hex values — they are the DB's source of truth. Refresh
|
|
20
|
+
from the design system (get_brand_tokens / styling-minerals) if they move. */
|
|
21
|
+
|
|
22
|
+
:root {
|
|
23
|
+
/* === Seven African Minerals — light mode === */
|
|
24
|
+
--color-cobalt: #0047ab;
|
|
25
|
+
--color-cobalt-container: #e3f2fd;
|
|
26
|
+
--color-cobalt-on-container: #002966;
|
|
27
|
+
|
|
28
|
+
--color-tanzanite: #4b0082;
|
|
29
|
+
--color-tanzanite-container: #f3e5f5;
|
|
30
|
+
--color-tanzanite-on-container: #2e004d;
|
|
31
|
+
|
|
32
|
+
--color-malachite: #004d40;
|
|
33
|
+
--color-malachite-container: #e0f2f1;
|
|
34
|
+
--color-malachite-on-container: #00332b;
|
|
35
|
+
|
|
36
|
+
--color-gold: #5d4037;
|
|
37
|
+
--color-gold-container: #fff8e1;
|
|
38
|
+
--color-gold-on-container: #3e2723;
|
|
39
|
+
|
|
40
|
+
--color-terracotta: #a0522d;
|
|
41
|
+
--color-terracotta-container: #f5e6d3;
|
|
42
|
+
--color-terracotta-on-container: #5d2906;
|
|
43
|
+
|
|
44
|
+
--color-sodalite: #283593;
|
|
45
|
+
--color-sodalite-container: #e8eaf6;
|
|
46
|
+
--color-sodalite-on-container: #141a5c;
|
|
47
|
+
|
|
48
|
+
--color-copper: #bf5a36;
|
|
49
|
+
--color-copper-container: #fbe4da;
|
|
50
|
+
--color-copper-on-container: #5c2410;
|
|
51
|
+
|
|
52
|
+
/* === Seven heritage tones — light mode (atmosphere colours) === */
|
|
53
|
+
--heritage-indigo: #4527a0;
|
|
54
|
+
--heritage-savanna: #8d6e1a;
|
|
55
|
+
--heritage-baobab: #4e342e;
|
|
56
|
+
--heritage-sunset: #d84315;
|
|
57
|
+
--heritage-river: #006064;
|
|
58
|
+
--heritage-hematite: #546e7a;
|
|
59
|
+
--heritage-kalahari: #c9b589;
|
|
60
|
+
|
|
61
|
+
/* === Semantic tokens — light === */
|
|
62
|
+
--background: #faf9f4; /* warm cream canvas */
|
|
63
|
+
--canvas: #faf9f4;
|
|
64
|
+
--foreground: #1a1a17; /* near-black ink */
|
|
65
|
+
--ink: #1a1a17;
|
|
66
|
+
|
|
67
|
+
--card: #ffffff;
|
|
68
|
+
--card-foreground: #1a1a17;
|
|
69
|
+
--popover: #ffffff;
|
|
70
|
+
--popover-foreground: #1a1a17;
|
|
71
|
+
|
|
72
|
+
/* Brand primary: cobalt is the canonical Mzizi default. Each brand site
|
|
73
|
+
overrides --primary and --ring to its own mineral via the brand-*.css
|
|
74
|
+
overlay imported after this file. */
|
|
75
|
+
--primary: var(--color-cobalt);
|
|
76
|
+
--primary-foreground: #ffffff;
|
|
77
|
+
|
|
78
|
+
--secondary: #f4f2ec;
|
|
79
|
+
--secondary-foreground: #1a1a17;
|
|
80
|
+
|
|
81
|
+
--muted: #f4f2ec;
|
|
82
|
+
--muted-foreground: #5d5c57;
|
|
83
|
+
|
|
84
|
+
--accent: var(--color-cobalt-container);
|
|
85
|
+
--accent-foreground: var(--color-cobalt-on-container);
|
|
86
|
+
|
|
87
|
+
--destructive: #b3261e;
|
|
88
|
+
--destructive-foreground: #ffffff;
|
|
89
|
+
--destructive-container: #fdeded;
|
|
90
|
+
|
|
91
|
+
--border: #e7e5e0; /* warm stone */
|
|
92
|
+
--input: #ffffff;
|
|
93
|
+
--ring: var(--color-cobalt);
|
|
94
|
+
|
|
95
|
+
--success: var(--color-malachite);
|
|
96
|
+
--warning: #7a5c00;
|
|
97
|
+
--error: #b3261e;
|
|
98
|
+
--info: var(--color-cobalt);
|
|
99
|
+
|
|
100
|
+
/* Touch targets */
|
|
101
|
+
--touch-target: 56px;
|
|
102
|
+
--touch-target-sm: 48px;
|
|
103
|
+
|
|
104
|
+
/* Radius system — derived from the ecosystem --radius-unit (7px). */
|
|
105
|
+
--radius-unit: 7px;
|
|
106
|
+
--radius-sm: 7px;
|
|
107
|
+
--radius-md: 12px;
|
|
108
|
+
--radius-lg: 14px;
|
|
109
|
+
--radius-xl: 17px;
|
|
110
|
+
--radius-full: 9999px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.dark,
|
|
114
|
+
[data-theme="dark"] {
|
|
115
|
+
/* === Seven African Minerals — dark mode === */
|
|
116
|
+
--color-cobalt: #00b0ff;
|
|
117
|
+
--color-cobalt-container: #001f3f;
|
|
118
|
+
--color-cobalt-on-container: #b3e5fc;
|
|
119
|
+
|
|
120
|
+
--color-tanzanite: #b388ff;
|
|
121
|
+
--color-tanzanite-container: #1a0033;
|
|
122
|
+
--color-tanzanite-on-container: #e1bee7;
|
|
123
|
+
|
|
124
|
+
--color-malachite: #64ffda;
|
|
125
|
+
--color-malachite-container: #00251a;
|
|
126
|
+
--color-malachite-on-container: #a7ffeb;
|
|
127
|
+
|
|
128
|
+
--color-gold: #ffd740;
|
|
129
|
+
--color-gold-container: #332200;
|
|
130
|
+
--color-gold-on-container: #ffecb3;
|
|
131
|
+
|
|
132
|
+
--color-terracotta: #e1b07e;
|
|
133
|
+
--color-terracotta-container: #3e2817;
|
|
134
|
+
--color-terracotta-on-container: #f5e6d3;
|
|
135
|
+
|
|
136
|
+
--color-sodalite: #3d5afe;
|
|
137
|
+
--color-sodalite-container: #0d1442;
|
|
138
|
+
--color-sodalite-on-container: #c5cae9;
|
|
139
|
+
|
|
140
|
+
--color-copper: #ff8a65;
|
|
141
|
+
--color-copper-container: #3a1a0e;
|
|
142
|
+
--color-copper-on-container: #ffd3c2;
|
|
143
|
+
|
|
144
|
+
/* === Seven heritage tones — dark mode === */
|
|
145
|
+
--heritage-indigo: #7986cb;
|
|
146
|
+
--heritage-savanna: #e5c158;
|
|
147
|
+
--heritage-baobab: #a1887f;
|
|
148
|
+
--heritage-sunset: #ff7043;
|
|
149
|
+
--heritage-river: #4dd0e1;
|
|
150
|
+
--heritage-hematite: #90a4ae;
|
|
151
|
+
--heritage-kalahari: #e8d9b5;
|
|
152
|
+
|
|
153
|
+
/* === Semantic tokens — dark === */
|
|
154
|
+
--background: #100f0e;
|
|
155
|
+
--canvas: #100f0e;
|
|
156
|
+
--foreground: #f0efe9;
|
|
157
|
+
--ink: #f0efe9;
|
|
158
|
+
|
|
159
|
+
--card: #1a1917;
|
|
160
|
+
--card-foreground: #f0efe9;
|
|
161
|
+
--popover: #1a1917;
|
|
162
|
+
--popover-foreground: #f0efe9;
|
|
163
|
+
|
|
164
|
+
--primary: var(--color-cobalt);
|
|
165
|
+
--primary-foreground: #1a1917;
|
|
166
|
+
|
|
167
|
+
--secondary: #2a2927;
|
|
168
|
+
--secondary-foreground: #f0efe9;
|
|
169
|
+
|
|
170
|
+
--muted: #2a2927;
|
|
171
|
+
--muted-foreground: #a8a6a0;
|
|
172
|
+
|
|
173
|
+
--accent: var(--color-cobalt-container);
|
|
174
|
+
--accent-foreground: var(--color-cobalt-on-container);
|
|
175
|
+
|
|
176
|
+
--destructive: #f2b8b5;
|
|
177
|
+
--destructive-foreground: #1a1917;
|
|
178
|
+
--destructive-container: #3e1818;
|
|
179
|
+
|
|
180
|
+
--border: #2a2927;
|
|
181
|
+
--input: #100f0e;
|
|
182
|
+
--ring: var(--color-cobalt);
|
|
183
|
+
|
|
184
|
+
--success: var(--color-malachite);
|
|
185
|
+
--warning: #ffd866;
|
|
186
|
+
--error: #f2b8b5;
|
|
187
|
+
--info: var(--color-cobalt);
|
|
188
|
+
}
|