Skip to content

[FE Feat] Dark Mode#4502

Open
ardaerzin wants to merge 59 commits into
mainfrom
fe-feat/ui-dark-mode
Open

[FE Feat] Dark Mode#4502
ardaerzin wants to merge 59 commits into
mainfrom
fe-feat/ui-dark-mode

Conversation

@ardaerzin
Copy link
Copy Markdown
Contributor

@ardaerzin ardaerzin commented May 31, 2026

Summary

Primary Change

Layout QoL Improvements

  • infinite tables going into loading state when navigating to another page
  • infinite tables' height behavior when navigating to another page
  • infinite tables' initial height when loading a full height table
  • changing to default tab of tabbed pages when navigating to another page

Testing

QA follow-up

  • check the application in dark mode for readability / accessibility concerns

Checklist

  • I have included a video or screen recording for UI changes, or marked Demo as N/A
  • Relevant tests pass locally
  • Relevant linting and formatting pass locally
  • I have signed the CLA, or I will sign it when the bot prompts me

Contributor Resources

ardaerzin added 25 commits May 30, 2026 20:01
Token-variable foundation + antd darkAlgorithm + hex codemod.

- ThemeContextProvider: darkAlgorithm + brand seed (primary = logo yellow
  #f2f25c, dark button text); strips light color tokens from the antd config
  so they don't leak into dark.
- theme-variables.css: :root/.dark CSS-variable layer for antd semantic
  tokens, zinc/gray/ag-gray scales, and codemod hex vars. Light values are
  byte-identical to the prior hardcoded values; only .dark differs.
- tailwind.config: darkMode "selector"; named scales point at var(--ag-*).
- Codemod routed ~165 files' arbitrary [#hex] + bg-white through CSS vars.
- Dark variants for editor/code/eval CSS + globals; JSS literals -> theme.*;
  inline-style fixes; resize-handle + footer + workflow type chips.
- FOUC inline script in _document; Light/System/Dark toggle in the top bar.
Enable antd v6 CSS-variable mode and derive the dark schema from antd's
design tokens, so the whole app tunes from one source.

- ThemeContextProvider: enable cssVar {key: "agenta"} (both modes) + add the
  `agenta` root class on <html> so the global --ant-* tokens resolve app-wide.
- theme-variables.css: .dark values now reference var(--ant-color-*) (lossless;
  the hand-authored dark values equalled antd's). :root/light untouched.
- Chip/badge palette maps routed to antd preset palette vars (var(--ant-*-1/6/3)),
  which adapt to dark automatically: TypeChip, observability spanTypeStyles,
  PRESET_COLOR_MAP (fixes PlaygroundHeader + evaluator label chips), and
  referenceColors (mapped to nearest antd preset — minor light hue shift).
- Footer: add top border to separate it from content (colorBorderSecondary).
- Breadcrumb top bar: borderBottom #eaeff5 -> colorBorderSecondary so the divider
  is subtle in dark instead of a bright white line.
- "Have a question?" help cards: set color: colorText so the <a> text + icons
  stop inheriting antd's colorLink (blue in dark).
- referenceColors: route reference-tag tones through per-tone CSS vars
  (light = exact Untitled-UI hex, dark = matching antd preset) — now
  light-lossless and dark-adaptive.
- ThemeContextProvider: rename darkSeed -> DARK_TOKEN_OVERRIDES with guidance
  as the single dark-schema tuning knob.
Import-graph reachability analysis over oss/src + ee/src (from page entries)
found these unreachable:
- TestcasesTableNew/components/TestcaseEditDrawer/useTreeStyles.ts — orphan
  createUseStyles hook, imported by nothing.
- TestcasesTableNew/components/TestcaseEditDrawerContent.tsx — backwards-compat
  re-export shim; the live consumer imports .../TestcaseEditDrawer/index directly.
Convert 15 small createUseStyles components to Tailwind classes (per the
JSS-to-Tailwind inventory). Visual output preserved in light + dark: theme
color tokens -> var-backed token classes (bg-colorBgContainer, text-colorText,
border-colorBorder, etc.), antd token sizing -> exact Tailwind/arbitrary values,
and `& .ant-*`/nth-child selectors -> arbitrary variants. 6 now-empty
assets/styles.ts deleted.

CustomTreeComponent skipped (pseudo-element tree connectors — Tier 2).
tsc unchanged (541 src baseline); eslint clean.
23 of 29 Tier-2 createUseStyles components converted to Tailwind, preserving
light + dark output: antd-component overrides -> `[&_.ant-*]:` arbitrary
variants, prop-driven styles -> clsx conditionals, theme tokens -> var-backed
token classes. 6 standalone assets/styles.ts deleted.

Skipped (left as JSS, for a follow-up): SetupTracingModal, NewEvaluation,
auth, DeploymentCard styles (reference antd tokens with no --ag-* var yet),
app-management/assets (prop-driven non-token pair), CustomTreeComponent
(::before tree-connector pseudo-elements).

tsc unchanged (oss 541 / ee 541 baselines); eslint clean.
Clears the 4 Tier-2 files that were skipped for lack of a theme-aware token.

- Add 5 missing --ag-* token vars (colorError, colorErrorBorder,
  colorBgContainerDisabled, colorInfoBg, controlItemBgActive) plus a
  var-backed boxShadowTertiary exposed as the shadow-tertiary utility.
- Migrate SetupTracingModal, NewEvaluation, auth (SendOTP/ShowErrorMessage)
  and DeploymentCard from createUseStyles to Tailwind; delete 3 styles files.
- SetupTracingModal exports its modal-chrome class constants; SetupEvaluationModal
  and GetStarted consume them instead of the removed useStyles.

Light output preserved; oss tsc src baseline unchanged (541).
EnvironmentTag set its background/text/border via inline hex from
environmentColors, so the pills stayed bright in dark mode. Route them
through new --ag-env-* CSS vars (light = the same hex, dark = matching antd
presets) so they adapt like the reference-tag chips. Light output unchanged.
The dark ConfigProvider passed only colorant Button overrides and dropped the
~60 per-component structural overrides from antd-themeConfig.json that light
mode spreads into its token. Components fell back to derived globals, so tags,
tabs, selects, badges etc. rendered smaller in dark than light (e.g. Tag at
fontSizeSM 10 instead of the configured 12). Spread the same component
overrides into the dark token, color-stripped per component, so structural
sizing matches light while darkAlgorithm still owns dark colors.
CodeBlock hardcoded the github-light Shiki theme, whose per-token inline
colors render as bright boxed tokens on the dark surface (e.g. the "How to
use API" drawer and the endpoints page). Select github-dark when the app
theme is dark and re-key the composer so Shiki re-tokenizes on toggle.
Follow-up to the previous commit: selecting github-dark for the CodeBlock was
not enough because the Shiki tokenizer reads the theme from the CodeNode
(getTheme()), not from the loaded registry. The node was created without a
theme, so tokens kept the light palette — whose #fff background renders as the
white boxes behind each token in dark mode. Pass the theme into
$createCodeNode(language, theme) so tokenization uses it. Verified via shiki:
github-light bg=#fff, github-dark bg=#24292e.
TokenNode paints placeholder chips ({{...}}, Jinja blocks/comments, invalid
state) via inline JS style, which the hex codemod can't reach, so the light
backgrounds (#e2e8f0, #fef2f2) stayed bright in dark mode. Route them through
--ag-c-* vars; add the four missing hexes (A855F7, FEF2F2, B91C1C, F87171) to
theme-variables.css with dark-adapted values. Light output unchanged.
In dark mode the sidebar and content area both resolved to ~#141414, so the
layout read as one flat panel separated only by borders. Add a dedicated
--ag-sidebar-bg (light #fff, unchanged; dark #0d0d0d, one step darker than the
content surface) and point the Sider at it, so the nav rail recedes as chrome.
Light mode untouched.
Follow-up to the darker sidebar: the antd Menu painted its own colorBgContainer
(#141414), which now read as a lighter band against the #0d0d0d sidebar. Make
the menu (and inline submenus) transparent so it inherits the sidebar surface.
No-op in light mode (sidebar is white behind it).
Pre-auth routes render straight on <body>, which had no background, so in dark
mode they showed white behind dark antd controls. Add a dark <body> background
(scoped to .dark, so light is untouched) which covers all bare routes, and make
the auth page's logo and panel shadow theme-aware (swap to the dark-accent logo
and a neutral shadow in dark). Product-mockup/grid imagery stays light as
intentional showcase art. Light mode unchanged.
New visitors now follow their OS color-scheme preference instead of always
starting in light. Update both the useLocalStorage default in
ThemeContextProvider and the pre-paint FOUC script in _document so they agree
on the empty-storage case (no flash). Users who explicitly pick Light/Dark are
unaffected.
The Skip button used antd type="link" default (blue colorLink), which reads as
off-brand on the dark get-started screen. Style it with neutral theme-aware
text (colorTextSecondary, hover colorText) so it's a quiet secondary action in
both themes.
…et (dark)

The get-started guide sections used bg-colorInfoBg, whose dark value was antd's
blue info tint — but the project treats colorInfoBg as a neutral grey
(#f5f7fa ≈ zinc-1), so the cards rendered navy. Map colorInfoBg's dark value to
bg-elevated (neutral), which also fixes the NewEvaluation tab hover. Also make
the section Progress theme-aware (strokeColor -> colorPrimary, trail ->
colorFill) so it isn't an invisible navy bar on dark. Light unchanged.
The widget panel uses a black drop-shadow for elevation, which is invisible on
the dark page, so it blended into the background. Add a dark-only border
(colorBorder) so the floating panel has a defined edge. Light keeps its shadow,
unchanged.
Skeleton cells returned a bare 12px <SkeletonLine> bar, while real cell content
wraps in `h-full flex items-center` — so the bars sat at the top of each row
instead of centered. Make SkeletonLine self-center by default (both the
@agenta/ui copy and the oss copy), with a `center={false}` opt-out for the one
place that stacks two lines (RunNameCells), which now centers them in its own
flex-col. Not dark-mode specific.
The evaluations "Application" cell styled the variant slug, row, and version
chip with hardcoded navy rgba (rgba(15,23,42,.85) etc.) in evaluations.css, so
they were near-invisible on dark. Route them through theme-aware --ag-app-variant-*
vars (light = exact prior rgba, dark = adapted). Also fix the variant version
Tag in VariantDetails (rgba(5,23,41,.06) -> colorFillSecondary, byte-identical
in light). Light unchanged.
Links in light use the navy primary, but in dark the colorLink/colorInfo seeds
are stripped so darkAlgorithm fell back to a harsh default blue — the off-brand
blue seen on card CTAs and other links. Pin colorLink/Hover/Active in
DARK_TOKEN_OVERRIDES to a softer, dark-tuned blue (#58a6ff family), which
retunes every antd link app-wide in one place instead of per-component patches.
Light unchanged.
Removed the forked oss copy of SkeletonLine and repointed all 11 consumers
(EvaluationRunsTablePOC + References cells) to the single source of truth,
`import {SkeletonLine} from "@agenta/ui/table"`. No behavior change — the two
copies were already identical after the centering fix.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 31, 2026

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

Project Deployment Actions Updated (UTC)
agenta-documentation Ready Ready Preview, Comment Jun 1, 2026 3:32pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 31, 2026

Important

Review skipped

Too many files!

This PR contains 300 files, which is 150 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 834c9655-ffb3-4184-b293-e4ba0fa75436

📥 Commits

Reviewing files that changed from the base of the PR and between d7c60c1 and 5649180.

📒 Files selected for processing (300)
  • docs/designs/dark-mode.md
  • docs/designs/jss-to-tailwind-migration.md
  • web/ee/src/components/DeploymentHistory/DeploymentHistory.tsx
  • web/ee/src/components/PostSignupForm/PostSignupForm.tsx
  • web/ee/src/components/PostSignupForm/assets/styles.ts
  • web/ee/src/components/Scripts/assets/CloudScripts.tsx
  • web/ee/src/components/pages/app-management/components/DemoApplicationsSection.tsx
  • web/ee/src/components/pages/settings/Billing/Modals/PricingModal/assets/PricingCard/index.tsx
  • web/ee/src/components/pages/settings/Billing/assets/UsageProgressBar/index.tsx
  • web/ee/src/components/pages/settings/Billing/index.tsx
  • web/ee/src/pages/w/[workspace_id]/p/[project_id]/evaluators/playground/index.tsx
  • web/oss/src/assets/custom-resize-handle.css
  • web/oss/src/components/ArchivedEntityLayout/index.tsx
  • web/oss/src/components/Automations/RequestPreview.tsx
  • web/oss/src/components/CustomUIs/CustomAntdTag.tsx
  • web/oss/src/components/CustomUIs/CustomTreeComponent/assets/styles.ts
  • web/oss/src/components/CustomUIs/CustomTreeComponent/index.tsx
  • web/oss/src/components/CustomUIs/LabelValuePill.tsx
  • web/oss/src/components/DeploymentsDashboard/components/DeploymentCard/index.tsx
  • web/oss/src/components/DeploymentsDashboard/components/DeploymentCard/skeleton.tsx
  • web/oss/src/components/DeploymentsDashboard/components/DeploymentCard/styles.ts
  • web/oss/src/components/DeploymentsDashboard/components/Drawer/assets/DrawerDetails.tsx
  • web/oss/src/components/DeploymentsDashboard/components/Drawer/index.tsx
  • web/oss/src/components/DeploymentsDashboard/modals/SelectDeployVariantModalContent.tsx
  • web/oss/src/components/DrillInView/AddPropertyForm.tsx
  • web/oss/src/components/DrillInView/BeautifiedJsonView.tsx
  • web/oss/src/components/DrillInView/DrillInBreadcrumb.tsx
  • web/oss/src/components/DrillInView/DrillInContent.tsx
  • web/oss/src/components/DrillInView/DrillInFieldHeader.tsx
  • web/oss/src/components/DrillInView/EntityDualViewEditor.tsx
  • web/oss/src/components/DrillInView/TraceSpanDrillInView.tsx
  • web/oss/src/components/DynamicCodeBlock/CodeBlock.tsx
  • web/oss/src/components/DynamicCodeBlock/DynamicCodeBlock.tsx
  • web/oss/src/components/EmptyState/EmptyState.tsx
  • web/oss/src/components/EvalRunDetails/Table.tsx
  • web/oss/src/components/EvalRunDetails/atoms/compare.ts
  • web/oss/src/components/EvalRunDetails/components/AnnotateDrawer/VirtualizedScenarioTableAnnotateDrawer.tsx
  • web/oss/src/components/EvalRunDetails/components/CompareRunsMenu.tsx
  • web/oss/src/components/EvalRunDetails/components/EvalTestcaseDrawerAdapter/EvalDrawerDataSection.tsx
  • web/oss/src/components/EvalRunDetails/components/EvaluatorMetricsChart/BarChart.tsx
  • web/oss/src/components/EvalRunDetails/components/EvaluatorMetricsChart/HistogramChart.tsx
  • web/oss/src/components/EvalRunDetails/components/EvaluatorMetricsSpiderChart/EvaluatorMetricsSpiderChart.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawer.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerHeader.tsx
  • web/oss/src/components/EvalRunDetails/components/FocusDrawerSidePanel.tsx
  • web/oss/src/components/EvalRunDetails/components/Page.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/CopyableFields.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/EvaluatorSection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/GeneralSection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/InvocationSection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/QuerySection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/SectionPrimitives.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/components/TestsetSection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/ConfigurationView/index.tsx
  • web/oss/src/components/EvalRunDetails/components/views/OverviewView/components/AggregatedOverviewSection.tsx
  • web/oss/src/components/EvalRunDetails/components/views/OverviewView/components/MetadataSummaryTable.tsx
  • web/oss/src/components/EvalRunDetails/components/views/OverviewView/components/MetricComparisonCard.tsx
  • web/oss/src/components/EvalRunDetails/components/views/OverviewView/components/OverviewPlaceholders.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ColumnValueView.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ScenarioAnnotationPanel/AnnotationForm.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ScenarioAnnotationPanel/RunOverlay.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/ScenarioNavigator.tsx
  • web/oss/src/components/EvalRunDetails/components/views/SingleScenarioViewerPOC/StepContentRenderer.tsx
  • web/oss/src/components/EvalRunDetails/etl/ScenarioFilterBar.tsx
  • web/oss/src/components/EvalRunDetails/utils/renderChatMessages.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/atoms/tableStore.ts
  • web/oss/src/components/EvaluationRunsTablePOC/components/LatestEvaluationRunsTable/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/ActionsCell/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/CreatedCells.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/KindCell.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/RunMetricCell/index.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/RunNameCells.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/cells/StatusCells.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/filters/EvaluationRunsFiltersContent.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/filters/EvaluationRunsHeaderFilters.tsx
  • web/oss/src/components/EvaluationRunsTablePOC/components/filters/QueryFilterOption.tsx
  • web/oss/src/components/Evaluations/MetricDetailsPopover/assets/ResponsiveFrequencyChart.tsx
  • web/oss/src/components/Evaluations/MetricDetailsPopover/assets/ResponsiveMetricChart.tsx
  • web/oss/src/components/Evaluations/components/MetricDetailsPreviewPopover.tsx
  • web/oss/src/components/Evaluators/Table/assets/evaluatorColumns.tsx
  • web/oss/src/components/Evaluators/components/ConfigureEvaluator/EvaluatorPlaygroundHeader.tsx
  • web/oss/src/components/Filters/Filters.tsx
  • web/oss/src/components/Filters/assets/styles.ts
  • web/oss/src/components/GetStarted/GetStarted.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/TableShell.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/common/SkeletonLine.tsx
  • web/oss/src/components/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/oss/src/components/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/oss/src/components/Layout/Layout.tsx
  • web/oss/src/components/Layout/ThemeContextProvider.tsx
  • web/oss/src/components/Layout/assets/Breadcrumbs.tsx
  • web/oss/src/components/Layout/assets/ThemeSwitcher.tsx
  • web/oss/src/components/Layout/assets/styles.ts
  • web/oss/src/components/ModelRegistry/Drawers/ConfigureProviderDrawer/assets/ConfigureProviderDrawerContent.tsx
  • web/oss/src/components/ModelRegistry/Modals/ConfigureProviderModal/assets/ConfigureProviderModalContent.tsx
  • web/oss/src/components/ModelRegistry/assets/LabelInput/index.tsx
  • web/oss/src/components/Onboarding/OnboardingCard.tsx
  • web/oss/src/components/Onboarding/Widget/OnboardingWidget.tsx
  • web/oss/src/components/Onboarding/Widget/components/WidgetSection.tsx
  • web/oss/src/components/Onboarding/Widget/components/WidgetSectionItem.tsx
  • web/oss/src/components/Placeholders/EmptyComponent/index.tsx
  • web/oss/src/components/Placeholders/NoMobilePageWrapper/NoMobilePageWrapper.tsx
  • web/oss/src/components/Placeholders/NoResultsFound/NoResultsFound.tsx
  • web/oss/src/components/Playground/Components/MainLayout/assets/ComparisonVariantConfigSkeleton.tsx
  • web/oss/src/components/Playground/Components/MainLayout/assets/ComparisonVariantNavigationSkeleton.tsx
  • web/oss/src/components/Playground/Components/MainLayout/index.tsx
  • web/oss/src/components/Playground/Components/Menus/SelectVariant/assets/TreeSelectItemRenderer/index.tsx
  • web/oss/src/components/Playground/Components/Menus/SelectVariant/components/VariantGroupTitle.tsx
  • web/oss/src/components/Playground/Components/Modals/RefinePromptModal/assets/InstructionsPanel.tsx
  • web/oss/src/components/Playground/Components/Modals/RefinePromptModal/assets/RefinePromptModalContent.tsx
  • web/oss/src/components/Playground/Components/PlaygroundHeader/index.tsx
  • web/oss/src/components/Playground/Components/PlaygroundPromptComparisonView/PromptComparisonVariantNavigation/assets/VariantNavigationCard/index.tsx
  • web/oss/src/components/Playground/Components/PlaygroundPromptComparisonView/PromptComparisonVariantNavigation/assets/VariantNavigationCard/styles.ts
  • web/oss/src/components/Playground/Components/PlaygroundPromptComparisonView/PromptComparisonVariantNavigation/index.tsx
  • web/oss/src/components/Playground/Components/PlaygroundVariantConfig/assets/PlaygroundVariantConfigHeader.tsx
  • web/oss/src/components/Playground/Components/PlaygroundVariantConfig/assets/styles.ts
  • web/oss/src/components/Playground/Components/PlaygroundVariantConfig/index.tsx
  • web/oss/src/components/Playground/Components/PlaygroundVariantConfigPrompt/assets/GatewayToolsPanel.tsx
  • web/oss/src/components/Playground/Components/TestsetDropdown/CreateTestsetCardWrapper.tsx
  • web/oss/src/components/References/ReferenceChips.tsx
  • web/oss/src/components/References/ReferenceLabels.tsx
  • web/oss/src/components/References/ReferenceTag.tsx
  • web/oss/src/components/References/cells/ApplicationCells.tsx
  • web/oss/src/components/References/cells/CreatedByCells.tsx
  • web/oss/src/components/References/cells/EvaluatorCells.tsx
  • web/oss/src/components/References/cells/QueryCells.tsx
  • web/oss/src/components/References/cells/TestsetCells.tsx
  • web/oss/src/components/References/cells/VariantCells.tsx
  • web/oss/src/components/References/referenceColors.ts
  • web/oss/src/components/ResultComponent/ResultComponent.tsx
  • web/oss/src/components/ResultTag/ResultTag.tsx
  • web/oss/src/components/ResultTag/assets/styles.ts
  • web/oss/src/components/SharedDrawers/AddToTestsetDrawer/components/RevisionLabel.tsx
  • web/oss/src/components/SharedDrawers/AnnotateDrawer/assets/Annotate/index.tsx
  • web/oss/src/components/SharedDrawers/AnnotateDrawer/assets/CreateEvaluator/assets/CreateNewMetric/index.tsx
  • web/oss/src/components/SharedDrawers/AnnotateDrawer/assets/SelectEvaluators/index.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionContentSummary/index.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionHeader/index.tsx
  • web/oss/src/components/SharedDrawers/SessionDrawer/components/SessionMessagePanel/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/AccordionTreePanel.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/assets/styles.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/AnnotationTabItem/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/LinkedSpansTabItem/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/components/TraceTypeHeader/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceContent/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceHeader/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceAnnotations/assets/styles.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceAnnotations/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceDetails/assets/styles.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceDetails/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceLinkedSpans/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/TraceReferences/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceSidePanel/index.tsx
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/assets/styles.ts
  • web/oss/src/components/SharedDrawers/TraceDrawer/components/TraceTree/index.tsx
  • web/oss/src/components/Sidebar/Sidebar.tsx
  • web/oss/src/components/Sidebar/components/ListOfOrgs.tsx
  • web/oss/src/components/Sidebar/components/ListOfProjects.tsx
  • web/oss/src/components/Sidebar/components/SidebarMenu.tsx
  • web/oss/src/components/Sidebar/components/WorkflowEntityCard.tsx
  • web/oss/src/components/SidebarBanners/SidebarBanner.tsx
  • web/oss/src/components/Spinner/ContentSpinner.tsx
  • web/oss/src/components/TestcasesTableNew/components/CommitTestsetModal.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcaseEditDrawer/useTreeStyles.ts
  • web/oss/src/components/TestcasesTableNew/components/TestcaseEditDrawerContent.tsx
  • web/oss/src/components/TestcasesTableNew/components/TestcasesTableShell.tsx
  • web/oss/src/components/TestsetsTable/assets/createTestsetsColumns.tsx
  • web/oss/src/components/TestsetsTable/components/TestsetsFiltersSummary.tsx
  • web/oss/src/components/pages/app-management/components/ApplicationManagementSection.tsx
  • web/oss/src/components/pages/app-management/components/EmptyAppView.tsx
  • web/oss/src/components/pages/app-management/components/HelpAndSupportSection.tsx
  • web/oss/src/components/pages/app-management/components/ObservabilityDashboardSection.tsx
  • web/oss/src/components/pages/app-management/components/WelcomeCardsSection/assets/components/WelcomeCard.tsx
  • web/oss/src/components/pages/app-management/components/WelcomeCardsSection/assets/styles.ts
  • web/oss/src/components/pages/app-management/components/WelcomeCardsSection/index.tsx
  • web/oss/src/components/pages/app-management/modals/CreateAppStatusModal.tsx
  • web/oss/src/components/pages/app-management/modals/CustomAppCreationLoader.tsx
  • web/oss/src/components/pages/app-management/modals/CustomWorkflowModal/assets/styles.ts
  • web/oss/src/components/pages/app-management/modals/CustomWorkflowModal/components/CustomWorkflowModalContent.tsx
  • web/oss/src/components/pages/app-management/modals/EditAppModal/index.tsx
  • web/oss/src/components/pages/app-management/modals/MaxAppModal.tsx
  • web/oss/src/components/pages/app-management/modals/SetupTracingModal/assets/styles.ts
  • web/oss/src/components/pages/app-management/modals/SetupTracingModal/components/TracingCodeComponent.tsx
  • web/oss/src/components/pages/app-management/modals/SetupTracingModal/index.tsx
  • web/oss/src/components/pages/auth/SendOTP/index.tsx
  • web/oss/src/components/pages/auth/SideBanner/index.tsx
  • web/oss/src/components/pages/auth/assets/ShowErrorMessage.tsx
  • web/oss/src/components/pages/auth/assets/style.ts
  • web/oss/src/components/pages/evaluations/EvaluationsView.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/CreateEvaluatorDrawer/index.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/Components/NewEvaluationModalContent.tsx
  • web/oss/src/components/pages/evaluations/NewEvaluation/assets/styles.ts
  • web/oss/src/components/pages/evaluations/NewEvaluation/index.tsx
  • web/oss/src/components/pages/evaluations/SetupEvaluationModal/index.tsx
  • web/oss/src/components/pages/evaluations/cellRenderers/cellRenderers.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/OnlineEvaluationDrawer.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/assets/styles.ts
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/EvaluatorDetailsPreview.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/FiltersPreview.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/PromptPreview.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/QueryFiltersCell.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/QueryFiltersSummaryCard.tsx
  • web/oss/src/components/pages/evaluations/onlineEvaluation/components/ReadOnlyBox.tsx
  • web/oss/src/components/pages/observability/assets/constants.ts
  • web/oss/src/components/pages/observability/assets/getObservabilityColumns.tsx
  • web/oss/src/components/pages/observability/components/SessionsTable/components/Cells/SessionIdCell.tsx
  • web/oss/src/components/pages/observability/dashboard/AnalyticsDashboard.tsx
  • web/oss/src/components/pages/observability/dashboard/widgetCard.tsx
  • web/oss/src/components/pages/overview/deployments/DeploymentDrawer/assets/LanguageCodeBlock.tsx
  • web/oss/src/components/pages/overview/deployments/DeploymentDrawer/index.tsx
  • web/oss/src/components/pages/overview/deployments/DeploymentModal.tsx
  • web/oss/src/components/pages/prompts/hooks/usePromptsFolderTree.tsx
  • web/oss/src/components/pages/prompts/modals/MoveFolderModal.tsx
  • web/oss/src/components/pages/settings/Projects/index.tsx
  • web/oss/src/components/pages/settings/Secrets/SecretProviderTable/index.tsx
  • web/oss/src/components/pages/settings/Tools/components/GatewayToolsSection.tsx
  • web/oss/src/components/pages/settings/WorkspaceManage/Modals/InvitedUserLinkModal.tsx
  • web/oss/src/components/pages/settings/WorkspaceManage/Modals/PasswordResetLinkModal.tsx
  • web/oss/src/components/pages/testset/modals/CreateTestsetFromApi.tsx
  • web/oss/src/components/pages/testset/modals/CreateTestsetFromScratch.tsx
  • web/oss/src/components/pages/testset/modals/UploadTestset.tsx
  • web/oss/src/components/pages/testset/modals/components/FilePreviewTable.tsx
  • web/oss/src/components/pages/testset/modals/index.tsx
  • web/oss/src/pages/_document.tsx
  • web/oss/src/pages/auth/[[...path]].tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/evaluators/playground/index.tsx
  • web/oss/src/pages/w/[workspace_id]/p/[project_id]/settings/index.tsx
  • web/oss/src/pages/workspaces/accept.tsx
  • web/oss/src/styles/code-editor-styles.css
  • web/oss/src/styles/editor-theme.css
  • web/oss/src/styles/evaluations.css
  • web/oss/src/styles/globals.css
  • web/oss/src/styles/human-evals.css
  • web/oss/src/styles/theme-variables.css
  • web/oss/tailwind.config.ts
  • web/packages/agenta-annotation-ui/src/components/AnnotationQueuesView/index.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/AnnotationPanel.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/ConfigurationView.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/EmptyQueueState.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/FocusView.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/InstructionsPanel.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/ScenarioListView.tsx
  • web/packages/agenta-annotation-ui/src/components/AnnotationSession/SessionNavigation.tsx
  • web/packages/agenta-annotation-ui/src/components/ScenarioContent/index.tsx
  • web/packages/agenta-entities/src/workflow/core/schema.ts
  • web/packages/agenta-entity-ui/src/DrillInView/SchemaControls/ObjectSchemaControl.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/SchemaControls/ToolItemControl.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/SchemaControls/ToolSelectorPopover.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/components/PlaygroundConfigSection.tsx
  • web/packages/agenta-entity-ui/src/DrillInView/components/PlaygroundConfigSection/AdvancedConfigFields.tsx
  • web/packages/agenta-entity-ui/src/modals/commit/components/EntityCommitContent.tsx
  • web/packages/agenta-entity-ui/src/modals/preset/PresetContent.tsx
  • web/packages/agenta-entity-ui/src/selection/components/UnifiedEntityPicker/variants/PopoverCascaderVariant.tsx
  • web/packages/agenta-entity-ui/src/variant/components/VariantDetails.tsx
  • web/packages/agenta-entity-ui/src/workflow/WorkflowTypeTag.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionHeader/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItemComparisonView/GenerationComparisonChatOutput/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItemComparisonView/GenerationComparisonCompletionOutput/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItemComparisonView/assets/GenerationComparisonInputHeader/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItemComparisonView/assets/GenerationComparisonOutputHeader/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ChatTurnView/index.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ExecutionRow/ComparisonLayout.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ExecutionRow/SingleLayout.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/ResultPlaceholder.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/assets/TypingIndicator.tsx
  • web/packages/agenta-playground-ui/src/components/ExecutionItems/index.tsx
  • web/packages/agenta-playground-ui/src/components/PlaygroundOutputs/index.tsx
  • web/packages/agenta-playground-ui/src/components/TestsetSelectionModal/components/CreateTestsetCard.tsx
  • web/packages/agenta-playground-ui/src/components/WorkflowRevisionDrawer/DrawerHeader.tsx
  • web/packages/agenta-playground-ui/src/components/adapters/VariableControlAdapter.tsx
  • web/packages/agenta-playground-ui/src/components/shared/EvaluatorFieldGrid/index.tsx
  • web/packages/agenta-playground-ui/src/components/shared/NodeResultCard/index.tsx
  • web/packages/agenta-ui/src/Editor/Editor.tsx
  • web/packages/agenta-ui/src/Editor/plugins/index.tsx
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenNode.ts
  • web/packages/agenta-ui/src/Editor/plugins/token/TokenTypeaheadPlugin.tsx
  • web/packages/agenta-ui/src/InfiniteVirtualTable/components/TableShell.tsx
  • web/packages/agenta-ui/src/InfiniteVirtualTable/components/columnVisibility/ColumnVisibilityPopoverContent.tsx
  • web/packages/agenta-ui/src/InfiniteVirtualTable/components/common/SkeletonLine.tsx
  • web/packages/agenta-ui/src/InfiniteVirtualTable/components/filters/FiltersPopoverTrigger.tsx
  • web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useContainerResize.ts
  • web/packages/agenta-ui/src/InfiniteVirtualTable/hooks/useScrollConfig.ts
  • web/packages/agenta-ui/src/SelectLLMProvider/SelectLLMProviderBase.tsx
  • web/packages/agenta-ui/src/SharedEditor/SharedEditor.tsx
  • web/packages/agenta-ui/src/SharedEditor/SharedEditorImpl.tsx
  • web/packages/agenta-ui/src/components/DraftTag.tsx
  • web/packages/agenta-ui/src/components/PageLayout.tsx
  • web/packages/agenta-ui/src/components/presentational/FormattedDate.tsx
  • web/packages/agenta-ui/src/components/presentational/attachments/ImageWithFallback.tsx
  • web/packages/agenta-ui/src/components/presentational/attachments/PromptDocumentUpload.tsx
  • web/packages/agenta-ui/src/components/presentational/attachments/PromptImageUpload.tsx
  • web/packages/agenta-ui/src/components/presentational/section/index.tsx
  • web/packages/agenta-ui/src/components/presentational/status/index.tsx
  • web/packages/agenta-ui/src/drill-in/FieldRenderers/DrillInFieldRenderer.tsx
  • web/packages/agenta-ui/src/drill-in/FieldRenderers/JsonObjectField.tsx
  • web/packages/agenta-ui/src/drill-in/FieldRenderers/RawModeDisplay.tsx
  • web/packages/agenta-ui/src/drill-in/core/DrillInBreadcrumb.tsx
  • web/packages/agenta-ui/src/drill-in/core/DrillInContent.tsx
  • web/packages/agenta-ui/src/drill-in/core/DrillInFieldHeader.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fe-feat/ui-dark-mode

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ardaerzin ardaerzin marked this pull request as ready for review May 31, 2026 10:53
@dosubot dosubot Bot added size:XL This PR changes 500-999 lines, ignoring generated files. Feature Request New feature or request labels May 31, 2026
ardaerzin added 3 commits May 31, 2026 18:02
…f-height mount

useContainerResize initialised to height 0 and only updated via a post-paint useEffect + requestAnimationFrame. For infinite-scroll (autoHeight) tables the scroll viewport is derived from the measured container height, so the first painted frame fell back to useScrollConfig's 360px default (~50% of a typical viewport) and then grew to full height a frame later — visible on every mount/navigation.

Measure the container synchronously in a layout effect (useLayoutEffect on the client, useEffect on the server) so the initial paint already has the real height. Applied to both InfiniteVirtualTable copies: the @agenta/ui package one (evaluators) and the oss-local one (evaluations, testsets, eval-run scenarios, playground testset preview).
…eeze

routeChangeComplete fires with (url) but routeChangeError fires with (err, url), so the onSettle handler received the error object as its first argument and crashed on url.includes(runId). Guard with a typeof string check before calling string methods.
…n dark mode

--ag-c-98A2B3 and --ag-c-94A3B8 are used exclusively as muted secondary TEXT
(e.g. the uppercase OUTPUTS / WITH-REASONING section labels in the eval scenario
drawer), but the codemod mapped both to #2f2f2f — a dark surface value that is
near-invisible on the #141414 drawer. Point them at colorTextTertiary so they
read as quiet, legible labels. Light values untouched.
The Expand/Collapse/Show/Hide all buttons are antd default buttons whose bg
(colorBgContainer #141414) is darker than the elevated popover surface
(#242424), so in dark they read as heavy recessed boxes. Flush their bg to the
popover surface so they render as clean outlined buttons — matching the light
look where the button bg already equals the popover bg. Scoped dark: only, both
the package and oss copies. Light unchanged.
… mode

The deploy modal's instruction callout used bg-zinc-50 + border-zinc-200. Only
zinc-1..10 are var-backed in the Tailwind config; the default zinc 50-950 scale
is static light, so the callout rendered as a white box with the theme-aware
(light) text on it — invisible in dark. Add dark: overrides routing to the
white-alpha surface vars. Same pattern fixed in the other surfaces the sweep
surfaced: the tool-selector popover selected/hover rows + icon placeholders,
the annotation empty-state card, and the scenario filter count chip. All scoped
dark: only — light unchanged.
The light-restore edit from the earlier commit was dropped by the pre-commit
patch-restore and never landed. Re-apply: keep static green-7/orange-6/blue-7
for light, scope the dark brightening with dark: variants so light is
byte-identical.
ardaerzin added 2 commits May 31, 2026 19:57
…iagnostics

Remove the ee + oss evaluators/playground/index.tsx pages. Add temporary
scroll-height diagnostics to InfiniteVirtualTable useScrollConfig.
The PageLayout header used h-11 but no flex-shrink:0. In the flex column, a
title-only header (little intrinsic content) compresses below 44px while a
tabbed header resists shrinking (tabs have a taller min-content height),
producing different header heights and a layout shift when navigating between
tabbed and non-tabbed table pages. Add shrink-0 so the header is always h-11.
Default (and dashed) antd buttons derive defaultBg from colorBgContainer
(#141414), which is darker than most card/elevated surfaces in dark, so they
read as heavy recessed boxes wherever they sit on a raised surface (cards,
popovers, modals — e.g. View members / Open billing portal). Override the
Button component token defaultBg to transparent in dark (with subtle
white-alpha hover/active), so default buttons render flush-outlined like light.

Remove the now-redundant per-component bg overrides from the column-visibility
popover (both copies) since the token fix covers them. Light unchanged.
@mmabrouk mmabrouk marked this pull request as draft June 1, 2026 10:50
@mmabrouk mmabrouk marked this pull request as ready for review June 1, 2026 10:51
@dosubot dosubot Bot added UI UX labels Jun 1, 2026
ardaerzin added 2 commits June 1, 2026 15:53
- RunOverlay: the loading scrim used bg-white/90 with no dark handling, washing
  the panel white in dark. Add dark:bg-[#141414]/90.
- Metric/Frequency chart tooltips: bg-white/95 with text-gray-900. gray-900
  inverts to colorText (light) in dark, so the tooltip was a white box with
  invisible light text. Add dark elevated bg + subtle ring; the text then reads
  correctly. Light unchanged.
Crisp renders in a cross-origin iframe with no runtime light/dark API, so the
chatbox theme can't be bound to our in-app toggle from code. Wire the one lever
the SDK exposes — setColorTheme — to the app theme: a dark (Black) accent in
dark mode, dashboard default in light, so the launcher/accent is less
out-of-place. Includes a TODO to enable chatbox dark mode in the Crisp dashboard
for the chat window itself (system-scheme based; not bindable to our toggle).
@mmabrouk
Copy link
Copy Markdown
Member

mmabrouk commented Jun 1, 2026

CleanShot 2026-06-01 at 18 10 36@2x Bug

@mmabrouk
Copy link
Copy Markdown
Member

mmabrouk commented Jun 1, 2026

CleanShot 2026-06-01 at 18 11 14@2x

@mmabrouk
Copy link
Copy Markdown
Member

mmabrouk commented Jun 1, 2026

CleanShot 2026-06-01 at 18 11 31@2x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature Request New feature or request Frontend size:XL This PR changes 500-999 lines, ignoring generated files. UI UX

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] Dark mode quality of life improvement

2 participants