fix(ui): visual audit batch — light skeletons, sentinel copy, toast, tab focus - #4099
fix(ui): visual audit batch — light skeletons, sentinel copy, toast, tab focus#4099wailingwombat wants to merge 2 commits into
Conversation
Use theme fill tokens for SVG skeleton shimmer so chat loading is not hardcoded dark in light mode. Top-align toast/banner content and tighten body line-height. Replace default link/tab focus color with design-system focus styles. Sentinel pending copy already reads "Running"; no change there. Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
Soffi AI SummaryThis PR applies a batch of visual/UX audit fixes to the Console frontend, targeting four distinct cosmetic issues identified in the PROD-4223 audit. The changes have no functional impact on application logic — they are purely presentational corrections.
ChangesVisual audit fixes: skeleton themes, toast alignment, tab focus colors
Updated: 2026-09-02 17:10 UTC |
Avoid a styled-components vs React CSSProperties mismatch on the SVG style prop. Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
|
Storybook preview: https://6a8c1fbd32d6c1cc8fc131a5-cvkwwpeavb.chromatic.com/ |
Greptile SummaryThe PR applies theme-aware skeleton colors and visual alignment and focus-state fixes across Console and the shared design system.
Confidence Score: 5/5The PR appears safe to merge, with no concrete functional, accessibility, or security regression identified. The changed styling remains theme-aware, preserves focus-visible indicators, and does not alter application data flow or public contracts.
|
| Filename | Overview |
|---|---|
| js/console/src/components/utils/Link.tsx | Preserves inherited link color and adds the standard focus-visible outline without an identified regression. |
| js/console/src/components/utils/SkeletonLoaders.tsx | Replaces hardcoded SVG gradient colors with theme tokens and supplies their animated values through SVG-scoped CSS variables. |
| js/console/src/components/utils/Tabs.tsx | Keeps linked tabs on their inherited color and adds the design-system focus-visible treatment. |
| js/console/src/index.css | Extends the existing global focus color reset to ordinary focus states. |
| js/design-system/src/components/Banner.tsx | Corrects flex alignment and uses the standard body typography token for toast content. |
| js/design-system/src/components/Tab.tsx | Prevents browser-default focused text colors while retaining the theme focus-visible ring. |
| js/design-system/src/components/TabList.tsx | Applies consistent inherited focus colors and outlines across cloned and react-aria-rendered tabs. |
Reviews (1): Last reviewed commit: "fix(ui): use React CSSProperties for ske..." | Re-trigger Greptile
Cosmetic Console frontend fixes from the Visual Audit Checklist. Tracks PROD-4223 (Visual + UX audit).
Items
1. Light mode: skeleton loading is dark — fixed
Chat thread loading uses
TableSkeleton, which had hardcoded dark hex stops (#2D3037/#393C44). Those now use themefill-two/fill-threeso shimmer is light on a light background and still reads correctly in dark mode. Same tokens applied toChartSkeleton.RectangleSkeletonwas already theme-aware.2. Sentinel status copy: "In progress" → "Running" — skipped
User-visible Sentinel pending copy already says Running:
SentinelStatusChip(js/console/src/components/ai/sentinels/SentinelsTableCols.tsx)js/console/src/components/ai/sentinels/Sentinels.tsx)This was changed in #2899 (Nov 2025). No remaining hardcoded "In progress" string in Sentinel UI. Backend enums were left alone.
3. Toast notification line-height / top alignment — fixed
Banner (toast content) used invalid CSS
align: 'flex-start'and honorable Flex could vertically center the close button against multi-line copy. Switched toalignItems: 'flex-start'(andalign="flex-start"on the Flex), and body copy now usesbody2(20px line-height, matching the 20px icon) instead ofbody2LooseLineHeight.4. Links/tabs turn deep blue on focus — fixed
Clicking a tab-as-link (
UnstyledLink/LinkTabWrap) then typing makes:focus/:focus-visibleapply. Those<a>s had no color reset, so the browser default deep blue showed, and SubTabs outsideTabListalso lacked design-system focus rings.UnstyledLinkandLinkTabWrap:color: inherit+ design-systemtheme.partials.focus.defaulton:focus-visibleTab/TabList: inherit color on focus and keep DS focus outlineindex.css: extend the existing honorable:focus-visiblecolor reset to:focusas wellTest plan
Test environment: local / this PR only (no agent deploy).
Checklist
Plural Flow: console