mirror of
https://github.com/spacedriveapp/spacedrive.git
synced 2026-04-17 21:17:08 -04:00
2.1 KiB
2.1 KiB
Popover Refactor: Wrapped → Radix Composable
The Problem
9 files use the old wrapped Popover API:
<Popover popover={popover} trigger={<button>...</button>} side="top" className="...">
{children}
</Popover>
Popover is now a Radix composable object from @spacedrive/primitives, not a function component. Every usage must be converted.
The Pattern
Before:
import { Popover, usePopover } from "@spacedrive/primitives";
const popover = usePopover();
<Popover
popover={popover}
trigger={<button>Open</button>}
side="top"
align="start"
sideOffset={8}
className="w-[300px]"
>
{children}
</Popover>
After:
import { Popover, usePopover } from "@spacedrive/primitives";
const popover = usePopover();
<Popover.Root open={popover.open} onOpenChange={popover.setOpen}>
<Popover.Trigger asChild>
<button>Open</button>
</Popover.Trigger>
<Popover.Content side="top" align="start" sideOffset={8} className="w-[300px]">
{children}
</Popover.Content>
</Popover.Root>
Rules
popover={popover}→open={popover.open} onOpenChange={popover.setOpen}onPopover.Roottrigger={<Component />}→ wrap in<Popover.Trigger asChild><Component /></Popover.Trigger>side,align,sideOffset,alignOffset,classNamemove to<Popover.Content>- Children of the old
<Popover>become children of<Popover.Content> - Keep
usePopover()— it still works
Files to Refactor
packages/interface/src/Spacebot/ChatComposer.tsxpackages/interface/src/Spacebot/SpacebotLayout.tsxpackages/interface/src/Spacebot/routes/ChatRoute.tsxpackages/interface/src/routes/explorer/components/PathBar.tsxpackages/interface/src/routes/overview/OverviewTopBar.tsxpackages/interface/src/components/SyncMonitor/SyncMonitorPopover.tsxpackages/interface/src/components/JobManager/JobManagerPopover.tsxpackages/interface/src/components/Tags/TagSelector.tsxpackages/interface/src/windows/VoiceOverlay.tsx
Search for <Popover followed by popover= in each file and apply the pattern above.