@calliopelabs/ui 0.3.1 → 0.4.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/README.md +5 -3
- package/dist/appearance/brands.d.ts +10 -9
- package/dist/appearance/brands.js +10 -9
- package/dist/appearance/product.d.ts +1 -1
- package/dist/styles/theme.css +16 -0
- package/dist/theme/tokens.d.ts +4 -0
- package/dist/theme/tokens.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,9 +75,9 @@ const NAV: NavModel = [
|
|
|
75
75
|
export const astrolift = defineProduct({ ...astroliftBrand, nav: NAV });
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
Astrolift AI: leaf green on the deep planet green sidebar (`#04231a`),
|
|
78
|
+
Astrolift AI: leaf green on the deep planet green sidebar (`#04231a`), six grounds (every one but navy), graphite by default (mist when the system runs light), and its eight named themes.
|
|
79
79
|
|
|
80
|
-
Zentinelle AI: teal (`#37efed`, `#0d7470` on light grounds) on the navy sidebar (`#0b0b19`), a true black ground by default, the family accents beside teal, and no emerald ground. Its seven areas gate rows by role:
|
|
80
|
+
Zentinelle AI: teal (`#37efed`, `#0d7470` on light grounds) on the navy sidebar (`#0b0b19`), a true black ground by default, the family accents beside teal, and no emerald or navy ground. Its seven areas gate rows by role:
|
|
81
81
|
|
|
82
82
|
```ts
|
|
83
83
|
import { defineProduct, zentinelleBrand, type NavModel } from "@calliopelabs/ui";
|
|
@@ -116,6 +116,8 @@ const NAV: NavModel = [
|
|
|
116
116
|
export const zentinelle = defineProduct({ ...zentinelleBrand, nav: NAV });
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
+
Calliope AI Workbench (`workbenchBrand`): Workbench blue (`#8fb8e8`, `#2f5d94` on light grounds) on a navy sidebar (`#0e1730`), its own navy ground by default (mist when the system runs light), the family accents beside its blue, and no emerald ground.
|
|
120
|
+
|
|
119
121
|
`defineProduct` validates the config and throws on anything that would paint wrong: a colour that is not lowercase `#rrggbb`, a default ground the product does not offer, a brand accent key the family already uses.
|
|
120
122
|
|
|
121
123
|
## Wire the shell
|
|
@@ -265,7 +267,7 @@ The package fetches nothing. `DataTable` reads a `TableController`: rows, state,
|
|
|
265
267
|
|
|
266
268
|
## Appearance
|
|
267
269
|
|
|
268
|
-
The person sets four axes, per product: the **ground** (black, charcoal, graphite, emerald, paper, mist; it decides light or dark), the **accent** (the product's own, a family accent, or any colour that stands 3:1 off the ground), the **density** (`compact` hairline rows or boxed `cards`) and the **corners** (0, 2, 4 or 10 px). `AppearancePicker` is the settings UI for all four.
|
|
270
|
+
The person sets four axes, per product: the **ground** (black, charcoal, graphite, emerald, navy, paper, mist; it decides light or dark), the **accent** (the product's own, a family accent, or any colour that stands 3:1 off the ground), the **density** (`compact` hairline rows or boxed `cards`) and the **corners** (0, 2, 4 or 10 px). `AppearancePicker` is the settings UI for all four.
|
|
269
271
|
|
|
270
272
|
- Precedence: a locked org theme, then the person's choice, then the org default, then the product default. Until someone picks a ground, light or dark follows the system.
|
|
271
273
|
- An org policy that arrives after sign-in goes in through `useAppearance().setPolicy`. An app that keeps the preference on its server passes `onChange` and hands the server's copy back through `applyServerAppearance`.
|
|
@@ -94,24 +94,25 @@ export declare const zentinelleBrand: {
|
|
|
94
94
|
};
|
|
95
95
|
/**
|
|
96
96
|
* Calliope AI Workbench (JunoHub, the installer's default theme, the desktop
|
|
97
|
-
* splash):
|
|
98
|
-
* --calliope-dark)
|
|
97
|
+
* splash): a sober light blue on navy. The navy comes from junohub `custom.css`
|
|
98
|
+
* (--calliope-dark); the hub's teal and violet are retired. Dark only today, so
|
|
99
|
+
* it defaults to its own navy ground, which no other product offers.
|
|
99
100
|
*/
|
|
100
101
|
export declare const workbenchBrand: {
|
|
101
102
|
readonly id: "workbench";
|
|
102
103
|
readonly name: "Calliope AI Workbench";
|
|
103
104
|
readonly accent: {
|
|
104
|
-
readonly key: "workbench-
|
|
105
|
-
readonly label: "Workbench
|
|
106
|
-
readonly dark: "#
|
|
105
|
+
readonly key: "workbench-blue";
|
|
106
|
+
readonly label: "Workbench blue";
|
|
107
|
+
readonly dark: "#8fb8e8";
|
|
107
108
|
readonly onDark: "#0b1120";
|
|
108
|
-
readonly light: "#
|
|
109
|
+
readonly light: "#2f5d94";
|
|
109
110
|
readonly onLight: "#f3fbf7";
|
|
110
111
|
};
|
|
111
|
-
readonly sidebar: "#
|
|
112
|
-
readonly grounds: readonly ["black", "charcoal", "graphite", "paper", "mist"];
|
|
112
|
+
readonly sidebar: "#0e1730";
|
|
113
|
+
readonly grounds: readonly ["navy", "black", "charcoal", "graphite", "paper", "mist"];
|
|
113
114
|
readonly defaultGround: {
|
|
114
|
-
readonly dark: "
|
|
115
|
+
readonly dark: "navy";
|
|
115
116
|
readonly light: "mist";
|
|
116
117
|
};
|
|
117
118
|
};
|
|
@@ -67,24 +67,25 @@ export const zentinelleBrand = {
|
|
|
67
67
|
*/
|
|
68
68
|
/**
|
|
69
69
|
* Calliope AI Workbench (JunoHub, the installer's default theme, the desktop
|
|
70
|
-
* splash):
|
|
71
|
-
* --calliope-dark)
|
|
70
|
+
* splash): a sober light blue on navy. The navy comes from junohub `custom.css`
|
|
71
|
+
* (--calliope-dark); the hub's teal and violet are retired. Dark only today, so
|
|
72
|
+
* it defaults to its own navy ground, which no other product offers.
|
|
72
73
|
*/
|
|
73
74
|
export const workbenchBrand = {
|
|
74
75
|
id: "workbench",
|
|
75
76
|
name: "Calliope AI Workbench",
|
|
76
77
|
accent: {
|
|
77
|
-
key: "workbench-
|
|
78
|
-
label: "Workbench
|
|
79
|
-
dark: "#
|
|
78
|
+
key: "workbench-blue",
|
|
79
|
+
label: "Workbench blue",
|
|
80
|
+
dark: "#8fb8e8",
|
|
80
81
|
onDark: "#0b1120",
|
|
81
82
|
// derived: the hub has no light ground
|
|
82
|
-
light: "#
|
|
83
|
+
light: "#2f5d94",
|
|
83
84
|
onLight: "#f3fbf7",
|
|
84
85
|
},
|
|
85
|
-
sidebar: "#
|
|
86
|
-
grounds: ["black", "charcoal", "graphite", "paper", "mist"],
|
|
87
|
-
defaultGround: { dark: "
|
|
86
|
+
sidebar: "#0e1730",
|
|
87
|
+
grounds: ["navy", "black", "charcoal", "graphite", "paper", "mist"],
|
|
88
|
+
defaultGround: { dark: "navy", light: "mist" },
|
|
88
89
|
};
|
|
89
90
|
/**
|
|
90
91
|
* Calliope AI Chat Studio: blue, from `sql-agent-ui/src/index.css` (--brand
|
|
@@ -36,7 +36,7 @@ export interface ProductConfig {
|
|
|
36
36
|
accent: FamilyAccent | BrandAccent;
|
|
37
37
|
/** The brand surface: the sidebar on dark grounds (graphite and light grounds stay neutral). */
|
|
38
38
|
sidebar: string;
|
|
39
|
-
/** The grounds offered, in picker order. All
|
|
39
|
+
/** The grounds offered, in picker order. All seven when absent. */
|
|
40
40
|
grounds?: readonly Ground[];
|
|
41
41
|
/** The ground until someone chooses: one per mode, following the operating system. */
|
|
42
42
|
defaultGround?: {
|
package/dist/styles/theme.css
CHANGED
|
@@ -200,6 +200,22 @@
|
|
|
200
200
|
--sidebar-border: rgba(255, 255, 255, 0.08);
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
+
/* Ground: Navy (dark) */
|
|
204
|
+
[data-mode="dark"][data-ground="navy"] {
|
|
205
|
+
--background: #0b1120;
|
|
206
|
+
--card: #152141;
|
|
207
|
+
--popover: #1a284a;
|
|
208
|
+
--secondary: #1d2b50;
|
|
209
|
+
--muted: #182545;
|
|
210
|
+
--accent: #213157;
|
|
211
|
+
--muted-foreground: #97a6c2;
|
|
212
|
+
--border: rgba(255, 255, 255, 0.1);
|
|
213
|
+
--input: rgba(255, 255, 255, 0.1);
|
|
214
|
+
--sidebar: var(--brand-sidebar, #152141);
|
|
215
|
+
--sidebar-accent: color-mix(in oklab, var(--primary) 16%, transparent);
|
|
216
|
+
--sidebar-border: rgba(255, 255, 255, 0.08);
|
|
217
|
+
}
|
|
218
|
+
|
|
203
219
|
/* Ground: Paper (light) */
|
|
204
220
|
[data-mode="light"][data-ground="paper"] {
|
|
205
221
|
--background: #faf6ee;
|
package/dist/theme/tokens.d.ts
CHANGED
package/dist/theme/tokens.js
CHANGED
|
@@ -19,6 +19,7 @@ export const GROUNDS = {
|
|
|
19
19
|
charcoal: { label: "Charcoal", mode: "dark" },
|
|
20
20
|
graphite: { label: "Graphite", mode: "dark" },
|
|
21
21
|
emerald: { label: "Emerald", mode: "dark" },
|
|
22
|
+
navy: { label: "Navy", mode: "dark" },
|
|
22
23
|
paper: { label: "Paper", mode: "light" },
|
|
23
24
|
mist: { label: "Mist", mode: "light" },
|
|
24
25
|
};
|
|
@@ -82,6 +83,27 @@ export const SURFACES = {
|
|
|
82
83
|
sidebarAccent: PRIMARY_TINT_16,
|
|
83
84
|
sidebarBorder: "rgba(255, 255, 255, 0.08)",
|
|
84
85
|
},
|
|
86
|
+
/*
|
|
87
|
+
* Workbench's navy, from JunoHub's palette: page #0b1120 and card
|
|
88
|
+
* rgba(22, 35, 69, 0.9) composited on the page, with the neutral hairlines
|
|
89
|
+
* every other dark ground uses. Its text colours are not carried over: foreground is per mode,
|
|
90
|
+
* and the hub's muted text (#e6e9ee) is not muted, so muted text is a
|
|
91
|
+
* navy-tinted grey that reads on every panel.
|
|
92
|
+
*/
|
|
93
|
+
navy: {
|
|
94
|
+
background: "#0b1120",
|
|
95
|
+
card: "#152141",
|
|
96
|
+
popover: "#1a284a",
|
|
97
|
+
secondary: "#1d2b50",
|
|
98
|
+
muted: "#182545",
|
|
99
|
+
accent: "#213157",
|
|
100
|
+
mutedForeground: "#97a6c2",
|
|
101
|
+
border: "rgba(255, 255, 255, 0.1)",
|
|
102
|
+
input: "rgba(255, 255, 255, 0.1)",
|
|
103
|
+
sidebar: "brand",
|
|
104
|
+
sidebarAccent: PRIMARY_TINT_16,
|
|
105
|
+
sidebarBorder: "rgba(255, 255, 255, 0.08)",
|
|
106
|
+
},
|
|
85
107
|
paper: {
|
|
86
108
|
background: "#faf6ee",
|
|
87
109
|
card: "#fffdf9",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@calliopelabs/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Calliope AI shared operator UI: app shell, navigation, page frame, data table and list patterns, status colours, design tokens and appearance for Astrolift AI and Zentinelle AI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"calliope-ai",
|