Skip to content

feat(apollo-vertex): dashboard expanded insight view and prompt bar#856

Draft
ruudandriessen wants to merge 1 commit into
mainfrom
pr/4-dashboard-expanded
Draft

feat(apollo-vertex): dashboard expanded insight view and prompt bar#856
ruudandriessen wants to merge 1 commit into
mainfrom
pr/4-dashboard-expanded

Conversation

@ruudandriessen

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings June 26, 2026 07:12
Comment thread apps/apollo-vertex/templates/dashboard/PromptBar.tsx Fixed
Comment thread apps/apollo-vertex/templates/dashboard/insight-card-renderers.tsx Fixed
@ruudandriessen ruudandriessen force-pushed the pr/4-dashboard-expanded branch from 93e246a to 571c7d4 Compare June 26, 2026 07:15
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (PT)
apollo-design 🟢 Ready Preview, Logs Jun 26, 2026, 02:27:10 AM
apollo-docs 🟢 Ready Preview, Logs Jun 26, 2026, 02:27:10 AM
apollo-landing 🟢 Ready Preview, Logs Jun 26, 2026, 02:27:10 AM
apollo-vertex 🟢 Ready Preview, Logs Jun 26, 2026, 02:27:10 AM

@github-actions github-actions Bot added app:apollo-vertex size:XL 500-999 changed lines. labels Jun 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Dependency License Review

  • 1945 package(s) scanned
  • ✅ No license issues found
  • ⚠️ 2 package(s) excluded (see details below)
License distribution
License Packages
MIT 1715
ISC 89
Apache-2.0 55
BSD-3-Clause 27
BSD-2-Clause 23
BlueOak-1.0.0 8
MPL-2.0 4
MIT-0 3
CC0-1.0 3
MIT OR Apache-2.0 2
(MIT OR Apache-2.0) 2
Unlicense 2
LGPL-3.0-or-later 1
Python-2.0 1
CC-BY-4.0 1
(MPL-2.0 OR Apache-2.0) 1
Unknown 1
Artistic-2.0 1
(WTFPL OR MIT) 1
(BSD-2-Clause OR MIT OR Apache-2.0) 1
CC-BY-3.0 1
0BSD 1
(MIT OR CC0-1.0) 1
MIT AND ISC 1
Excluded packages
Package Version License Reason
@img/sharp-libvips-linux-x64 1.2.4 LGPL-3.0-or-later LGPL pre-built binary, not linked
khroma 2.1.0 Unknown MIT per GitHub repo, missing license field in package.json

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new “Apollo Vertex” dashboard preview template, including expanded insight drilldowns, an Autopilot prompt bar UX, and supporting routing/data scaffolding, plus new insight-* theme tokens and Autopilot icon assets for the UI.

Changes:

  • Introduces new dashboard template modules (routes/shell wrapper/loading/data context/sample data) under apps/apollo-vertex/templates/dashboard/.
  • Adds expanded insight drilldown content and chart/card renderers, along with a new prompt bar UI.
  • Extends the Vertex registry theme with insight-* colors and updates card base spacing; adds Autopilot SVG assets and preview pages.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
apps/apollo-vertex/templates/dashboard/PromptBar.tsx New prompt bar UI with collapsed/expanded states and prompt suggestions.
apps/apollo-vertex/templates/dashboard/insight-card-renderers.tsx Insight card body renderers (KPI + multiple chart types) with compact/expanded modes.
apps/apollo-vertex/templates/dashboard/glow-config.ts Dashboard layout/config types, default configs, and background styling helper.
apps/apollo-vertex/templates/dashboard/ExpandedInsightContent.tsx Expanded insight drilldown content + suggested Autopilot prompts.
apps/apollo-vertex/templates/dashboard/DashboardTemplateDynamic.tsx Client-only dynamic wrapper for the dashboard template.
apps/apollo-vertex/templates/dashboard/DashboardTemplate.tsx Client-side template bootstrapping (TanStack Router + React Query) with localStorage persistence.
apps/apollo-vertex/templates/dashboard/DashboardShellWrapper.tsx Shell wrapper with sidebar/minimal nav configuration.
apps/apollo-vertex/templates/dashboard/DashboardRoutes.tsx TanStack Router route tree for dashboard and minimal dashboard previews.
apps/apollo-vertex/templates/dashboard/DashboardLoading.tsx Animated loading phases (logo → skeleton → done) wrapper component.
apps/apollo-vertex/templates/dashboard/DashboardDataProvider.tsx Provides dashboard dataset via context.
apps/apollo-vertex/templates/dashboard/DashboardContent.tsx Stubbed dashboard content route component (currently returns null).
apps/apollo-vertex/templates/dashboard/DashboardCards.tsx Sample card components (KPIs, tables, charts, progress lists).
apps/apollo-vertex/templates/dashboard/dashboard-data.ts Dashboard dataset types and sample datasets/presets.
apps/apollo-vertex/templates/dashboard/dashboard-data-context.ts Context + useDashboardData hook for dashboard dataset access.
apps/apollo-vertex/templates/dashboard/AutopilotInsight.tsx Placeholder “Autopilot Insight” panel UI.
apps/apollo-vertex/registry/card/card.tsx Adjusts base Card spacing defaults (adds gap and vertical padding).
apps/apollo-vertex/registry.json Adds insight-* color tokens (and font tokens in theme config).
apps/apollo-vertex/public/Autopilot_light.svg Adds Autopilot icon asset (light).
apps/apollo-vertex/public/Autopilot_dark.svg Adds Autopilot icon asset (dark).
apps/apollo-vertex/app/preview/dashboard/page.tsx Adds preview route page for the dashboard template.
apps/apollo-vertex/app/preview/dashboard-minimal/page.tsx Adds preview route page for the minimal dashboard template.
apps/apollo-vertex/app/preview/_meta.ts Hides preview pages in navigation metadata.
apps/apollo-vertex/app/globals.css Adds Tailwind v4 @source directives for registry/templates.

Comment on lines +3 to +26
import { useState } from "react";
import { MessagesSquare, Minimize2 } from "lucide-react";
import { Badge } from "@/components/ui/badge";
import type { CardConfig, CardGradient } from "./glow-config";
import { useDashboardData } from "./DashboardDataProvider";

function cardBgStyle(
bg: string,
opacity: number,
gradient: CardGradient,
): React.CSSProperties {
if (gradient.enabled) {
const alpha = gradient.opacity / 100;
return {
"--card-bg-override": `linear-gradient(${gradient.angle}deg, color-mix(in srgb, ${gradient.start} ${alpha * 100}%, transparent), color-mix(in srgb, ${gradient.end} ${alpha * 100}%, transparent))`,
borderColor: "transparent",
} as React.CSSProperties;
}
const value =
bg === "white"
? `rgba(255,255,255,${opacity / 100})`
: `color-mix(in srgb, var(--${bg}) ${opacity}%, transparent)`;
return { "--card-bg-override": value } as React.CSSProperties;
}
Copilot AI review requested due to automatic review settings June 26, 2026 07:17
Comment thread apps/apollo-vertex/templates/dashboard/PromptBar.tsx Fixed
@ruudandriessen ruudandriessen marked this pull request as ready for review June 26, 2026 07:20
@ruudandriessen ruudandriessen requested a review from a team as a code owner June 26, 2026 07:20
@github-actions

github-actions Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

📊 Coverage + size by package

Per-package bundle size on this PR (no JS/TS source changes detected under packages/* or web-packages/*).

Package Coverage New-line coverage Packed (gzip) Unpacked vs main
@uipath/apollo-core 9.0% 43.82 MB 57.31 MB ±0
@uipath/apollo-react 34.7% 7.27 MB 27.58 MB ±0
@uipath/apollo-wind 40.1% 392.4 KB 2.55 MB −18 B
@uipath/ap-chat 85.8% 43.41 MB 55.85 MB ±0

"Coverage" is each package's own coverage.include scope (e.g. apollo-core instruments only scripts/). "Packed"/"Unpacked" come from npm pack --dry-run and only cover built packages — "—" means not measured this run (package not affected / not built). "vs main" is the packed (gzipped) delta against the last successful main build (the package-sizes artifact from the Release workflow); "—" there means no main baseline was available this run. The baseline is main's latest build, not this PR's exact merge-base, so it includes any drift since the branch diverged. Packages with no vitest config are omitted.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 7 comments.

Comment on lines +3 to +26
import { useState } from "react";
import { MessagesSquare, Minimize2 } from "lucide-react";
import { Badge } from "@/components/ui/badge";
import type { CardConfig, CardGradient } from "./glow-config";
import { useDashboardData } from "./DashboardDataProvider";

function cardBgStyle(
bg: string,
opacity: number,
gradient: CardGradient,
): React.CSSProperties {
if (gradient.enabled) {
const alpha = gradient.opacity / 100;
return {
"--card-bg-override": `linear-gradient(${gradient.angle}deg, color-mix(in srgb, ${gradient.start} ${alpha * 100}%, transparent), color-mix(in srgb, ${gradient.end} ${alpha * 100}%, transparent))`,
borderColor: "transparent",
} as React.CSSProperties;
}
const value =
bg === "white"
? `rgba(255,255,255,${opacity / 100})`
: `color-mix(in srgb, var(--${bg}) ${opacity}%, transparent)`;
return { "--card-bg-override": value } as React.CSSProperties;
}
Comment on lines +108 to +119
<Badge
variant="secondary"
status="info"
className="!bg-white/35 !text-foreground opacity-0 translate-y-2 group-focus-within:opacity-100 group-focus-within:translate-y-0 transition-all duration-300 cursor-pointer"
onClick={() =>
handleChipClick(
data.promptSuggestions[0] ?? "Show me top risk factors",
)
}
>
{data.promptSuggestions[0] ?? "Show me top risk factors"}
</Badge>
Comment on lines +120 to +133
<Badge
variant="secondary"
status="info"
className="!bg-white/35 !text-foreground opacity-0 translate-y-2 group-focus-within:opacity-100 group-focus-within:translate-y-0 transition-all duration-300 delay-75 cursor-pointer"
onClick={() =>
handleChipClick(
data.promptSuggestions[1] ??
"Compare Q1 vs Q2 performance",
)
}
>
{data.promptSuggestions[1] ?? "Compare Q1 vs Q2 performance"}
</Badge>
</div>
Comment on lines +47 to +51
const handleSubmit = () => {
if (hasInput && onSubmit) {
onSubmit(value);
}
};
return { "--card-bg-override": value } as React.CSSProperties;
}

export function PromptBar({
Comment on lines +279 to +284
export const drilldownTabs: { key: DrilldownTab; label: string }[] = [
{ key: "overview", label: "Overview" },
{ key: "categories", label: "Categories" },
{ key: "products", label: "Products" },
{ key: "actions", label: "Actions" },
];
Comment on lines +321 to +325
onClick={() => {
setPressedPrompt(prompt);
onPromptSelect?.(prompt);
setTimeout(() => setPressedPrompt(null), 600);
}}

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 571c7d46f9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

import { MessagesSquare, Minimize2 } from "lucide-react";
import { Badge } from "@/components/ui/badge";
import type { CardConfig, CardGradient } from "./glow-config";
import { useDashboardData } from "./DashboardDataProvider";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Import the data hook from the context module

DashboardDataProvider only exports the provider component; the useDashboardData hook is exported from dashboard-data-context.ts and used that way elsewhere in this folder. As soon as PromptBar is included in the dashboard/typecheck, this named import fails the build, so import the hook from ./dashboard-data-context or re-export it from the provider module.

Useful? React with 👍 / 👎.

| "products"
| "actions";

export const drilldownTabs: { key: DrilldownTab; label: string }[] = [

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include the trend tab in the exported tabs

Consumers that render the expanded view from drilldownTabs cannot select the trend content because the array omits the trend key even though DrilldownTab and DrilldownTabContent define it. This leaves the new TrendChart branch unreachable from the tab UI; add a { key: "trend", ... } entry if the trend section is meant to be shown.

Useful? React with 👍 / 👎.

Comment on lines +108 to +112
<Badge
variant="secondary"
status="info"
className="!bg-white/35 !text-foreground opacity-0 translate-y-2 group-focus-within:opacity-100 group-focus-within:translate-y-0 transition-all duration-300 cursor-pointer"
onClick={() =>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render suggestion chips as keyboard controls

Badge renders a span by default, so these clickable suggestion chips are mouse-only: keyboard users cannot tab to them or activate them when the prompt suggestions open. In this collapsed prompt bar path, render the chips as real buttons (or provide equivalent role/tabIndex/key handling) so selecting suggestions is accessible.

Useful? React with 👍 / 👎.

Comment on lines +86 to +90
<button
type="button"
onClick={onCollapse}
className="size-7 rounded-md flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-muted/50 transition-all"
>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add an accessible name to the collapse button

This icon-only collapse control has no visible text or aria-label, while the other icon buttons in this component are labeled. In the expanded prompt bar, screen reader users will encounter an unnamed button and will not know it collapses the chat response area.

Useful? React with 👍 / 👎.

Comment on lines +113 to +117
Trend over time
</div>
<p className="text-xs text-muted-foreground mb-4">
8-week view of the top 3 return reasons
</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Move new rendered copy into translation keys

The apollo-vertex AGENTS.md requires user-facing strings to be rendered through useTranslation() with keys added to locales/en.json, but the new expanded insight UI hard-codes labels and descriptions starting here. This prevents the dashboard copy from participating in the app's localization workflow; add English keys and render these strings via t(...).

Useful? React with 👍 / 👎.

@ruudandriessen ruudandriessen marked this pull request as draft June 26, 2026 07:35
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ruudandriessen ruudandriessen force-pushed the pr/4-dashboard-expanded branch from 571c7d4 to e0f338b Compare June 26, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app:apollo-vertex size:XL 500-999 changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants