Skip to content

[upstream #16482] Sweep the colour leakage the theme-leakage stack skipped for open PRs #195

Description

@berry-13

Follow-up to the theme-leakage stack (LibreChat-AI#16482, LibreChat-AI#16483, LibreChat-AI#16484), which skipped every file an open canary PR touched. Sweep these once the owning PRs merge, using packages/client/src/theme/allowlist.md (added by LibreChat-AI#16482) for anything that must stay outside the theme.

Blocked by config (eslint.config.mjs, edited by LibreChat-AI#16248): stylesheet and marker classes the design rules misread need entries in the rule config, not suppressions: dark:prose-invert (EmptyText, SteerPart, Text, SearchContent, PendingTurn, PromptTextCard, VariableForm, SkillMarkdownRenderer, TermsAndConditionsModal), steer-render, split-parent (no-unknown-classes), and text-message, shadow-stroke (no-raw-colors false positives in Container, EmptyText, Landing, ConvoIconURL, MessageEndpointIcon). The brand marks recorded in the allowlist (Google, Facebook, Discord, Gemini, PaLM, Birthday) need the same file-scoped allow entry; inline disables are rejected by the static checks.

Blocked by a primitive: ToolApproval's invalid-JSON border-red-500 needs an invalid state on TextareaAutosize (edited by LibreChat-AI#16248).

Blocked by an app stylesheet copy: client/src/style.css repeats the .popover-ui rules from packages/client/src/components/Dropdown.css; both shadows move to --theme-shadow-lg together.

Blocked by client/src/utils/files.ts (LibreChat-AI#15684): the file-type tile fills, and the white ink in packages/client/src/svgs/*Paths.tsx that pairs with them.

Files an open PR touches, with counts at origin/canary 1d5062c (palette = raw palette utilities, dark = dark: colour utilities, literal = hex/rgb/hsl in TS/TSX, css = raw CSS literals / palette variables):

File Open PR Counts
client/src/components/Artifacts/ArtifactCodeEditor.tsx LibreChat-AI#15911 literal 1
client/src/components/Artifacts/Artifacts.tsx LibreChat-AI#15911, LibreChat-AI#16248 palette 2
client/src/components/Auth/Footer.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Chat/Input/AddedConvo.tsx LibreChat-AI#16248 no-raw-colors 1
client/src/components/Chat/Input/ChatForm.tsx LibreChat-AI#16248, LibreChat-AI#16457 literal 2
client/src/components/Chat/Input/Files/ImagePreview.tsx LibreChat-AI#16248 palette 5
client/src/components/Chat/Input/Files/Table/DataTable.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Chat/Messages/Content/ActivityPhaseGroup.tsx LibreChat-AI#16248 no-raw-colors 1
client/src/components/Chat/Messages/Content/DialogImage.tsx LibreChat-AI#16248 palette 10
client/src/components/Chat/Messages/Content/MessageContent.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Chat/Messages/Content/Parts/Attachment.tsx LibreChat-AI#16248 no-raw-colors 1, no-unknown-classes 3
client/src/components/Chat/Messages/Content/Parts/BashCall.tsx LibreChat-AI#16248 palette 1, dark 1
client/src/components/Chat/Messages/Content/Parts/ExecuteCode.tsx LibreChat-AI#16248 dark 2
client/src/components/Chat/Messages/Content/Parts/FileAuthoringCall.tsx LibreChat-AI#16248 dark 1
client/src/components/Chat/Messages/Content/Parts/ReadFileCall.tsx LibreChat-AI#16248 dark 1
client/src/components/Chat/Messages/Content/Parts/Reasoning.tsx LibreChat-AI#16248 literal 2
client/src/components/Chat/Messages/Content/Wakeup.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Chat/Messages/MinimalMessages.tsx LibreChat-AI#16248 palette 1, dark 1, no-raw-colors 1
client/src/components/Chat/Subagents/SubagentActivity.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Endpoints/Settings/Examples.tsx LibreChat-AI#16248 dark 2
client/src/components/Insights/InsightsView.tsx LibreChat-AI#16248 dark 4
client/src/components/MCP/McpOAuthDialog.tsx LibreChat-AI#16248 palette 2
client/src/components/Nav/AccountSettings.tsx LibreChat-AI#16248 no-unknown-classes 2
client/src/components/Nav/KeyboardShortcutsDialog.tsx LibreChat-AI#16248 dark 3
client/src/components/Nav/SettingsTabs/Account/TwoFactorAuthentication.tsx LibreChat-AI#14731 literal 2
client/src/components/Projects/ProjectsView.tsx LibreChat-AI#15684, LibreChat-AI#16248 no-raw-colors 1
client/src/components/Prompts/editor/PromptEditor.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Share/MessagesView.tsx LibreChat-AI#16248 palette 1, dark 1, no-raw-colors 1
client/src/components/SidePanel/Agents/AgentConfig.tsx LibreChat-AI#16248 palette 3, dark 1, no-raw-colors 1
client/src/components/SidePanel/Agents/Tools/ToolCard.tsx LibreChat-AI#16248 palette 1
client/src/components/SidePanel/Builder/Images.tsx LibreChat-AI#16248 palette 13, dark 7, no-raw-colors 6
client/src/components/Skills/forms/SkillContentEditor.tsx LibreChat-AI#16248 no-unknown-classes 1
client/src/components/Web/Sources.tsx LibreChat-AI#16248 palette 2, no-raw-colors 1, no-unknown-classes 1
client/src/hooks/Conversations/useUnseenBadge.ts LibreChat-AI#16248 literal 1
client/src/mobile.css LibreChat-AI#16248 cssLiteral 5
client/src/style.css LibreChat-AI#16248, LibreChat-AI#16478, LibreChat-AI#16479, LibreChat-AI#16480 cssLiteral 78, cssPaletteVar 150
client/src/utils/artifacts.ts LibreChat-AI#16248 literal 3
client/src/utils/files.ts LibreChat-AI#15684 literal 7
packages/client/src/components/AnimatedSearchInput.tsx LibreChat-AI#16248, LibreChat-AI#16478 no-raw-colors 1
packages/client/src/components/Badge.tsx LibreChat-AI#16248 literal 2, no-unknown-classes 6
packages/client/src/components/DataTable/DataTableErrorBoundary.tsx LibreChat-AI#16248, LibreChat-AI#16478 dark 1

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: clientreviewctl followups statefixedreviewctl followups staterefactorreviewctl followups state

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions