Skip to content

fix(ui): align field states and search affordances with the design system - #2906

Open
kev1n77 wants to merge 2 commits into
GCWing:mainfrom
kev1n77:fmy/ui-main
Open

fix(ui): align field states and search affordances with the design system#2906
kev1n77 wants to merge 2 commits into
GCWing:mainfrom
kev1n77:fmy/ui-main

Conversation

@kev1n77

@kev1n77 kev1n77 commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Align light-theme field borders, placeholders, and decorative icons with the design system.
  • Add a dedicated active-border token for Input and SearchField, and remove the extra focus ring from Design Lab previews.
  • Allow SearchField shortcut hints and clear actions to appear together; disable clearing for disabled and read-only fields.
  • Preserve field colors from existing appearance packages and update generated theme assets.

Type and Areas

Type: Bug fix / UI/UX

Areas: Design system, Web UI, appearance compatibility, generated desktop and MiniApp theme assets

Motivation / Impact

Text fields used a stronger focus treatment than the intended editing state. Placeholder and icon colors also differed between shared controls and product themes.

Input and SearchField now use a single 1px active border, with 20% black in the default light theme. Shared control heights and size tokens remain unchanged. Search fields retain shortcut hints when a clear action is available and prevent clearing read-only values.

Verification

  • pnpm run design-system:check — passed.
  • Focused Vitest coverage for SearchField, appearance preset output, and appearance package composition — 3 files, 21 tests passed.
  • pnpm run check:web — appearance, typography, theme color, and visual contract checks passed; the final type check encountered missing generated UI declarations during concurrent builds.
  • pnpm run type-check:web — passed on a sequential rerun.
  • git diff --check — passed.

Reviewer Notes

  • Existing appearance packages inherit their previous focus and muted colors unless they explicitly provide the new field tokens.
  • Dark, high-contrast, and forced-color treatments remain supported.
  • SearchField retains the upstream panel and default-border behavior.
  • Verification was local. Remote workspace, remote control, Peer Device Mode, and Detached Dispatch were not exercised. Manual visual acceptance remains pending.

Checklist

  • This PR is focused and does not include secrets, temporary prompts, generated scratch files, or unrelated artifacts.
  • Relevant verification is recorded above, or skipped checks are explained.
  • User-facing strings, docs, and locales are updated where applicable.

Align light field borders and placeholder colors while preserving visible
keyboard focus contrast, named theme palettes, and legacy imported overrides.

Size search artwork through the existing Input slot, show shortcuts together
with clear actions, and prevent clearing disabled or read-only fields.
Keep all existing size tokens, size APIs, heights, and product size selections.

Update Design Lab state examples, DOM regression coverage and generated theme
projections. Validate with design-system:check, check:web, 48 product tests,
and 22 focused component tests.
Use the dedicated field editing color for Input and SearchField so native
focus-visible heuristics do not replace the light 20% border with dark gray.
Remove Design Lab's additional focus shadow and keep the existing 1px border
and all control geometry unchanged.

Preserve dark and high-contrast focus colors and inherit explicit legacy
Appearance focus overrides unless an editing color is supplied. Keep the
stronger generic focus contract available to its other control consumers.

Update theme projections and regression checks. Validation: design-system:check,
check:web, and 21 focused product tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant