Commit Graph

19 Commits

Author SHA1 Message Date
yyh
ec70e7c82f
fix: update tests 2026-03-03 17:01:17 +08:00
yyh
2c609000ec
Merge remote-tracking branch 'origin/feat/web-overlay-phase0-primitives' into test/ui-primitive-wrapper-tests-pr 2026-03-03 16:48:51 +08:00
yyh
109cae8692
fix(dropdown-menu): align menu item padding with main branch and use DropdownMenuItem for theme row
Reduce menuRowBaseClassName padding from px-3 to px-2 to match main branch spacing.
Replace raw div with DropdownMenuItem for theme row to fix icon alignment and ARIA semantics.
2026-03-03 16:42:44 +08:00
yyh
933e173ac8
refactor(dropdown-menu): wrap Radio/Checkbox items with shared styles and sealed indicators
- Extract menuRowBaseClassName and menuRowStateClassName constants shared across all row components
- Wrap RadioItem and CheckboxItem with default styles matching DropdownMenuItem
- Wrap RadioItemIndicator and CheckboxItemIndicator with hardcoded check icon, Omit children to prevent misuse
- Refactor DropdownMenuItem and SubTrigger to use shared className constants
2026-03-03 14:53:54 +08:00
yyh
a32ab27ce0
refactor(dropdown-menu): improve primitive defaults and deduplicate account-dropdown
- Add overflow handling (max-h-[var(--available-height)]) to Popup
- Add disabled styles (cursor-not-allowed, opacity-50) to Item and SubTrigger
- Change hover token to bg-state-base-hover for consistency
- Build arrow icon into SubTrigger so callers don't repeat it
- Style DropdownMenuGroupLabel with default typography
- Extract shared MenuItemContent and ExternalLinkIndicator into menu-item-content.tsx
- Remove duplicated className constants and component definitions across account-dropdown files
- Remove !important overrides from callers now that primitive defaults are correct
- Remove manual max-h-[70vh] from SubContent (handled by primitive)
2026-03-03 14:45:02 +08:00
yyh
bf785e8df0
fix(web): unify overlay z-index, decouple Placement type, and improve animation a11y
- Add z-50 to all overlay Positioners so overlays inside a Dialog
  (e.g. Tooltip on a dialog button) are not clipped by its backdrop
- Replace @floating-ui/react Placement import with self-owned type
  definition to remove the transitive type dependency
- Change Dialog popup transition-all to explicit transition-[transform,scale,opacity]
  to avoid animating unintended CSS properties
- Add motion-reduce:transition-none to all animated overlay elements
  for prefers-reduced-motion compliance
2026-03-02 22:30:46 +08:00
yyh
74f96d54ca
test(web): cover passthrough props in base ui wrappers 2026-03-02 20:18:30 +08:00
yyh
ceb8c8bf1e
Merge branch 'feat/web-overlay-phase0-primitives' into test/ui-primitive-wrapper-tests-pr 2026-03-02 20:10:15 +08:00
yyh
4562a11903
refactor(web): align overlay primitive content prop pass-through
- add positioner/popup/list pass-through props for select/popover/dropdown wrappers

- keep existing semantic placement API while enabling Base UI behavioral extensibility

- align wrapper ergonomics across overlay primitives
2026-03-02 20:08:09 +08:00
yyh
52d02b132e
feat(web): tighten overlay migration lint governance
- narrow overlay-migration ignore scope to explicit legacy base file allowlist

- replace directory-level react-refresh disable with allowExportNames for base UI primitives

- extract long lint constants into eslint.constants.mjs for config readability

- add overlay migration guide and link it from lint docs

- refactor dropdown-menu internal popup helper to avoid react-refresh false positives
2026-03-02 19:56:15 +08:00
yyh
5d9796b861
test(web): add unit tests for base ui primitive wrappers 2026-03-02 19:20:40 +08:00
yyh
6e7103f6d3
Revert "test(web): add unit tests for base ui primitive wrappers"
This reverts commit 03180ffc2c.
2026-03-02 19:20:40 +08:00
yyh
03180ffc2c
test(web): add unit tests for base ui primitive wrappers 2026-03-02 19:17:29 +08:00
yyh
4b3dceeda1
fix 2026-03-02 18:07:57 +08:00
yyh
c4fe93a8b8
refactor(ui): compose tooltip primitives and dedupe menu popup 2026-03-02 18:03:25 +08:00
yyh
3d7872bdcf
refactor(web): simplify z-index to rely on isolation + DOM order
Remove z-index tokens from tailwind config. With root `isolation: isolate`,
portaled overlays naturally sit above app content via DOM order.

- Tooltip / Popover / Dropdown: no z-index needed
- Dialog: z-50 (modal must cover non-modal portals)
- Toast: z-[99] (always on top, defined in toast component)
2026-03-02 15:01:08 +08:00
yyh
f65159bd00
refactor(web): share placement parser across base ui primitives 2026-03-02 14:57:06 +08:00
yyh
6b55e50106
refactor(web): migrate account dropdown to dropdown primitives 2026-03-02 14:50:04 +08:00
yyh
095a085fd4
feat(web): complete Phase 0 guardrails and add Base UI overlay primitives
- Install @base-ui/react 1.2.0
- Define semantic z-index layer tokens (dropdown/popover/modal/toast/tooltip)
- Add TooltipProvider to root layout with global timing config
- Mark portal-to-follow-elem as deprecated with migration guide
- Enforce no-restricted-imports as error with suppression baseline
- Add ESLint rule to block new portal-to-follow-elem usage in business code
- Scaffold Phase 1 semantic primitives: Tooltip, DropdownMenu, Popover, Dialog

Part of #32767
2026-03-02 13:36:12 +08:00