Skip to content

feat(shell): refined theme layer over Material (from the old composer) - #119

Open
jerelvelarde wants to merge 1 commit into
a2ui-project:mainfrom
jerelvelarde:jerel/pr1-theme
Open

feat(shell): refined theme layer over Material (from the old composer)#119
jerelvelarde wants to merge 1 commit into
a2ui-project:mainfrom
jerelvelarde:jerel/pr1-theme

Conversation

@jerelvelarde

@jerelvelarde jerelvelarde commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

A cohesive visual theme ported from the old composer, layered on top of the existing Angular Material base — no palette change (the Material primary #3f51b5 already matches the accent), applied as an additive token layer for both light and dark.

What

  • A --cpk-* design-token layer over Material for both themes (retinting only --mat-sys-background / -on-background / -on-surface).
  • Typography: Plus Jakarta Sans (UI) + Spline Sans Mono (code), via a Google-Fonts link in index.html.
  • Frost-glass top bar + nav rail, a soft ambient blur field on the shell, and a retinted Dockview tab strip.
  • Files: global_styles.scss, composer-shell.{ng.html,scss}, index.html.

Why

Gives the composer a distinct, modern identity without fighting Material — purely additive styling, no component or logic changes.

Testing

ng build clean; verified in-browser in light + dark.

Notes

Opt-in and scoped to the shell chrome. Companion PRs (panel switcher, native rendering) reference these tokens for polish but don't require them (Material fallback). Recent main (#103 dark/light, #111 scrollbars, #113 styling) may overlap — I'll reconcile against those on rebase.


Contributed by CopilotKit.

Screenshots

Refined theme over Material — Settings, light and dark:

Light Dark

@google-cla

google-cla Bot commented Jul 22, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request introduces the CopilotKit design system token layer, updating the shell to use custom theme variables, soft background blur circles, and new typography (Plus Jakarta Sans and Spline Sans Mono). Feedback focuses on optimizing performance and accessibility: specifically, offloading the large blur circle rendering to the GPU using transform: translateZ(0) and providing solid background fallbacks via @supports queries for elements using backdrop-filter to ensure readability on unsupported browsers.

Comment on lines +37 to 41
.blur-circle {
position: absolute;
border-radius: 50%;
filter: blur(103px);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Large CSS blur filters (such as blur(103px)) applied to multiple large elements can cause significant rendering and paint performance overhead, especially during window resizing or scrolling. Promoting these elements to their own compositor layers using transform: translateZ(0) offloads the rendering to the GPU, preventing layout thrashing and lag.

Suggested change
.blur-circle {
position: absolute;
border-radius: 50%;
filter: blur(103px);
}
.blur-circle {
position: absolute;
border-radius: 50%;
filter: blur(103px);
transform: translateZ(0);
}

Comment on lines +95 to +101
background-color: var(--cpk-glass-bg);
color: var(--cpk-text-primary);
border-bottom: 1px solid var(--cpk-glass-border);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
--mat-toolbar-container-background-color: transparent;
--mat-toolbar-container-text-color: var(--cpk-text-primary);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Using backdrop-filter with a highly translucent background color (rgba(255, 255, 255, 0.5)) can cause severe text contrast and readability issues on browsers that do not support backdrop filters (or have them disabled). Providing a solid background color as a fallback using a @supports query ensures WCAG-compliant readability across all browsers.

  background-color: var(--cpk-surface-elevated);
  color: var(--cpk-text-primary);
  border-bottom: 1px solid var(--cpk-glass-border);
  --mat-toolbar-container-background-color: transparent;
  --mat-toolbar-container-text-color: var(--cpk-text-primary);

  @supports (backdrop-filter: blur(12px)) or (-webkit-backdrop-filter: blur(12px)) {
    background-color: var(--cpk-glass-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }

Comment on lines +117 to 125
background-color: var(--cpk-glass-bg);
border-right: 1px solid var(--cpk-glass-border);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
--mat-sidenav-container-shape: 0px;
--mat-drawer-container-shape: 0px;
border-radius: 0px;
--mat-sidenav-background-color: var(--mat-sys-surface-container);
--mat-sidenav-background-color: var(--cpk-glass-bg);
transition: width 200ms ease-in-out;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

Similar to the header, the sidenav uses a translucent background with backdrop-filter. To prevent readability and contrast issues on browsers without backdrop-filter support, define a solid fallback background color and wrap the translucent/blur styles in a @supports block.

  background-color: var(--cpk-surface-elevated);
  border-right: 1px solid var(--cpk-glass-border);
  --mat-sidenav-container-shape: 0px;
  --mat-drawer-container-shape: 0px;
  border-radius: 0px;
  --mat-sidenav-background-color: var(--cpk-surface-elevated);
  transition: width 200ms ease-in-out;

  @supports (backdrop-filter: blur(12px)) or (-webkit-backdrop-filter: blur(12px)) {
    background-color: var(--cpk-glass-bg);
    --mat-sidenav-background-color: var(--cpk-glass-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
  }

@jerelvelarde jerelvelarde changed the title feat(shell): refined CopilotKit theme layer over Material feat(shell): refined theme layer over Material (from the old composer) Jul 22, 2026
@jerelvelarde
jerelvelarde marked this pull request as ready for review July 23, 2026 12:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant