Skip to content

Commit 13851ca

Browse files
petervachonclaude
authored andcommitted
feat(apollo-vertex): dashboard template foundation — registry, data layer, shell
Adds registry token updates (insight color palette, font tokens), nav scaffolding, preview pages, and the core dashboard shell components: DashboardTemplate, DashboardShellWrapper, DashboardRoutes, DashboardContent, DashboardLoading, DashboardDataProvider, and dashboard-data. Also adds Autopilot SVG assets and card component update. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 0e0f32d commit 13851ca

16 files changed

Lines changed: 580 additions & 2 deletions

apps/apollo-vertex/app/globals.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
@import 'tailwindcss';
2+
@source "../registry";
3+
@source "../templates";
24

35
/* Optional: import Nextra theme styles */
46
@import 'nextra-theme-docs/style.css';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default {
2+
"*": { display: "hidden" },
3+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use client";
2+
3+
import dynamic from "next/dynamic";
4+
5+
const DashboardTemplate = dynamic(
6+
() =>
7+
import("@/templates/dashboard/DashboardTemplate").then(
8+
(mod) => mod.DashboardTemplate,
9+
),
10+
{ ssr: false },
11+
);
12+
13+
export default function DashboardMinimalPreviewPage() {
14+
return (
15+
<div className="fixed inset-0 z-50 bg-background not-prose">
16+
<DashboardTemplate shellVariant="minimal" />
17+
</div>
18+
);
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use client";
2+
3+
import dynamic from "next/dynamic";
4+
5+
const DashboardTemplate = dynamic(
6+
() =>
7+
import("@/templates/dashboard/DashboardTemplate").then(
8+
(mod) => mod.DashboardTemplate,
9+
),
10+
{ ssr: false },
11+
);
12+
13+
export default function DashboardPreviewPage() {
14+
return (
15+
<div className="fixed inset-0 z-50 bg-background not-prose">
16+
<DashboardTemplate />
17+
</div>
18+
);
19+
}
Lines changed: 6 additions & 0 deletions
Loading
Lines changed: 6 additions & 0 deletions
Loading

apps/apollo-vertex/registry.json

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,17 @@
8080
"color-ai-chat-input-foreground": "var(--ai-chat-input-foreground)",
8181
"color-ai-chat-ring": "var(--ai-chat-ring)",
8282
"color-ai-chat-muted": "var(--ai-chat-muted)",
83-
"color-ai-chat-muted-foreground": "var(--ai-chat-muted-foreground)"
83+
"color-ai-chat-muted-foreground": "var(--ai-chat-muted-foreground)",
84+
"color-insight-50": "var(--insight-50)",
85+
"color-insight-100": "var(--insight-100)",
86+
"color-insight-200": "var(--insight-200)",
87+
"color-insight-300": "var(--insight-300)",
88+
"color-insight-400": "var(--insight-400)",
89+
"color-insight-500": "var(--insight-500)",
90+
"color-insight-600": "var(--insight-600)",
91+
"color-insight-700": "var(--insight-700)",
92+
"color-insight-800": "var(--insight-800)",
93+
"color-insight-900": "var(--insight-900)"
8494
},
8595
"light": {
8696
"background": "oklch(1 0 89.8800)",
@@ -134,6 +144,19 @@
134144
"sidebar-accent-foreground": "oklch(0.1660 0.0283 203.3380)",
135145
"sidebar-border": "oklch(0.9237 0.0133 262.3780)",
136146
"sidebar-ring": "oklch(0.64 0.115 208)",
147+
"insight-50": "oklch(0.96 0.03 277)",
148+
"insight-100": "oklch(0.92 0.05 277)",
149+
"insight-200": "oklch(0.86 0.09 277)",
150+
"insight-300": "oklch(0.78 0.14 277)",
151+
"insight-400": "oklch(0.70 0.19 277)",
152+
"insight-500": "oklch(0.62 0.22 277)",
153+
"insight-600": "oklch(0.56 0.20 277)",
154+
"insight-700": "oklch(0.48 0.17 277)",
155+
"insight-800": "oklch(0.38 0.13 278)",
156+
"insight-900": "oklch(0.30 0.10 278)",
157+
"font-sans": "Inter, ui-sans-serif, sans-serif, system-ui",
158+
"font-serif": "IBM Plex Serif, ui-serif, serif",
159+
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
137160
"radius": "0.625rem",
138161
"shadow-x": "0",
139162
"shadow-y": "0px",
@@ -238,6 +261,19 @@
238261
"sidebar-accent-foreground": "oklch(0.9525 0.0110 225.9830)",
239262
"sidebar-border": "oklch(0.9525 0.0110 225.9830)",
240263
"sidebar-ring": "oklch(0.69 0.112 207)",
264+
"insight-50": "oklch(0.96 0.03 277)",
265+
"insight-100": "oklch(0.92 0.05 277)",
266+
"insight-200": "oklch(0.86 0.09 277)",
267+
"insight-300": "oklch(0.78 0.14 277)",
268+
"insight-400": "oklch(0.70 0.19 277)",
269+
"insight-500": "oklch(0.62 0.22 277)",
270+
"insight-600": "oklch(0.56 0.20 277)",
271+
"insight-700": "oklch(0.48 0.17 277)",
272+
"insight-800": "oklch(0.38 0.13 278)",
273+
"insight-900": "oklch(0.30 0.10 278)",
274+
"font-sans": "Inter, ui-sans-serif, sans-serif, system-ui",
275+
"font-serif": "IBM Plex Serif, ui-serif, serif",
276+
"font-mono": "IBM Plex Mono, ui-monospace, monospace",
241277
"radius": "0.625rem",
242278
"shadow-x": "0",
243279
"shadow-y": "0px",

apps/apollo-vertex/registry/card/card.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const GLASS_CLASSES = [
1010
"dark:shadow-[0_2px_24px_2px_rgba(0,0,0,0.12),inset_0_1px_0_0_color-mix(in_srgb,var(--sidebar)_5%,transparent)]",
1111
] as const;
1212

13-
const cardVariants = cva("flex flex-col text-card-foreground", {
13+
const cardVariants = cva("flex flex-col gap-6 py-6 text-card-foreground", {
1414
variants: {
1515
variant: {
1616
default: GLASS_CLASSES,
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"use client";
2+
3+
// Stub — full implementation is added in a later PR once all dependencies are available.
4+
export function DashboardContent() {
5+
return null;
6+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"use client";
2+
3+
import { useState, type ReactNode } from "react";
4+
import { ecommerceDataset, type DashboardDataset } from "./dashboard-data";
5+
import { DashboardDataContext } from "./dashboard-data-context";
6+
7+
export function DashboardDataProvider({ children }: { children: ReactNode }) {
8+
const [data, setData] = useState<DashboardDataset>(ecommerceDataset);
9+
10+
return (
11+
<DashboardDataContext.Provider value={{ data, setDataset: setData }}>
12+
{children}
13+
</DashboardDataContext.Provider>
14+
);
15+
}

0 commit comments

Comments
 (0)