fix(ui): global dark-mode — app bg, legacy-var bridge, core-ui component gaps - #33597
Conversation
…e-ui gaps - app.less: dark app background -> --om-color-bg-primary (#0c0e12), matching the design recording; light keeps the frozen gray-blue-50 (#f8f9fc). The gray-blue scale's dark step (#0d0f1c) was too blue. - variables.less + app.less: legacy LESS palette vars now resolve through an --om-* bridge (light = exact original hex via fallback, dark = semantic/utility token under .dark-mode), theming every legacy-var consumer app-wide with no per-file edits. Renamed from the earlier --legacy-* to the sanctioned --om-*. - page-header: drop dark:bg-primary so the gradient header falls back to the Card's bg-surface in dark instead of melting into the page. - autocomplete/select: caret-alpha-black/90 -> caret-primary (visible caret on dark input). - avatar-add-button: disabled gray-200 -> border-disabled/text-fg-disabled. - tree: guide line gains a dark override (gray-blue-800). All light values unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
✅ Playwright Results — workflow succeededValidated commit ✅ 4489 passed · ❌ 0 failed · 🟡 7 flaky · ⏭️ 1 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 1h 6m 57s ⏱️ Max setup 4m 46s · max shard execution 19m 52s · max shard-job elapsed before upload 23m 13s · reporting 17s 🌐 221.47 requests/attempt · 2.23 app boots/UI scenario · 35.40% common-shard skew Optimization targets still in progress:
🟡 7 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
- caret-primary is not a resolvable Tailwind token (caret-* draws from the --color-* namespace, which has no bare --color-primary). It emitted no CSS, and on combobox's text-transparent overlay input that left caret-color:auto = invisible in both themes. Use caret-text-primary (valid, inverts in dark) in combobox, autocomplete and multi-select. - avatar-add-button: border-disabled/text-fg-disabled changed the LIGHT disabled colors vs the original gray-200. Restore gray-200 for light and apply the semantic disabled tokens only under .dark-mode, keeping the light-mode freeze. - page-header: correct the stale comment — dark mode now falls back to the Card's bg-surface, not bg-primary. Refs open-metadata/openmetadata-collate#6459 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Addressed the review (fae576c):
Prettier clean; |
|
Hi there 👋 Thanks for your contribution! The OpenMetadata team will review the PR shortly! Once it has been labeled as Let us know if you need any help! |
Code Review ✅ Approved 1 closed / 1 findings🟡 Medium risk Extends dark-mode coverage across the application and core component library by bridging legacy Less colors to semantic tokens, updating the global page background, and correcting component styling. All changes are approved with no open issues. ✅ 1 closed✅ Bug: caret-primary is not a valid Tailwind token; caret fix no-ops
OptionsDisplay: compact → Counting what did not apply, without listing it. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
Describe your changes:
Refs open-metadata/openmetadata-collate#6548 (theme tokens/global CSS), open-metadata/openmetadata-collate#6549 (UI core components)
Gate contract: open-metadata/openmetadata-collate#6564
Global/core dark-mode fixes, split out of the DQ PR (#33586). All light values unchanged (frozen).
Global (app-side)
--om-color-bg-primary(#0c0e12) to match the design recording; light keeps the frozen gray-blue-50 (#f8f9fc). The gray-blue scale's dark step (#0d0f1c) was too blue.variables.less+app.less): each legacy@palettevar resolves through an--om-*custom property — light = exact original hex (viavar(--om-x, #hex)fallback, no drift), dark = semantic/utility token under.dark-mode. Themes every legacy-var consumer app-wide (including the DQ.lesssurfaces) with no per-file edits. Categorical ramps excluded.Core-ui components (audited all 53; these were the only real gaps)
dark:bg-primaryso the gradient header falls back to the Card'sbg-surfacein dark instead of melting into the page.caret-alpha-black/90→caret-primary(visible caret on dark input).gray-200→border-disabled/text-fg-disabled.gray-blue-800).Everything else in core-ui already uses semantic tokens or is intentional fixed-color (brand/social logos, tooltip/toast solid surfaces).
Type of change:
Checklist:
var(--om-*, #hex)form).The PR appears safe to merge; the previous review findings are resolved and no new actionable issue remains.
Summary
This PR expands global dark-mode coverage while preserving existing light-mode styling.
Reviews (2) · Last reviewed commit: "fix(ui-core): address review on global d..."