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

No activity

Activity on this issue will appear here.

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