Skip to content

fix(web): migrate custom overlays and confirmations to Radix primitives #4173

Description

@jeanduplessis

Problem

Several features hand-roll dialogs, drawers, coachmarks, menus, popovers, and browser confirmations, losing focus trapping, Escape handling, portal layering, collision handling, and focus restoration.

Remediation action

Replace audited custom overlays and native confirmations with existing Radix/shadcn primitives.

Representative scope

  • apps/web/src/components/deployments/EnvironmentSettings.tsx:341
  • apps/web/src/components/drawer/DrawerStack.tsx:187
  • apps/web/src/components/organizations/byok/BYOKKeysManager.tsx:377
  • apps/web/src/components/integrations/SlackIntegrationDetails.tsx:164
  • apps/web/src/components/subscriptions/seats/SeatsDetail.tsx:273
  • apps/web/src/app/(app)/claw/kilo-chat/components/ConversationItem.tsx:203
  • apps/web/src/app/(app)/claw/kilo-chat/components/EmojiQuickPick.tsx:17
  • apps/web/src/components/gastown/OnboardingTooltips.tsx:196
  • apps/web/src/components/gastown/TerminalBar.tsx:719
  • apps/web/src/components/organizations/custom-modes/ModeDrawer.tsx:28

Acceptance criteria

  • Dialogs and irreversible confirmations use Dialog or AlertDialog; menus use DropdownMenu; pickers use Popover; mobile drawers use Sheet.
  • Focus trap/restoration, Escape, outside dismissal, keyboard navigation, and accessible title/description behavior come from primitives.
  • Browser confirm() and arbitrary overlay z-index values are removed from audited flows.
  • Destructive confirmations name action and consequence, with explicit keep/cancel outcome.
  • Drawer stack behavior is preserved while adopting accessible Sheet/Dialog semantics.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Should fix before soft launchbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions