'use client'; import { ListChecks, Plus, Presentation } from 'lucide-react'; import { cn } from '@/lib/utils'; import { Popover, PopoverClose, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import type { EditableSceneType } from '@/lib/edit/scene-defaults'; interface InsertionZoneProps { readonly label: string; readonly slideLabel: string; readonly quizLabel: string; readonly onInsert: (type: EditableSceneType) => void; } /** * Hover-revealed insertion affordance between two thumbs. * * The gap is a slim 8px hit zone that matches playback `SceneSidebar`'s * `space-y-2` density (no layout shift, ever). On hover the `+` badge * pops out to the right side of the gap with a small overshoot, sitting * on its own z-layer with a solid background + soft drop shadow so it * clearly floats above any adjacent violet ring. */ export function InsertionZone({ label, slideLabel, quizLabel, onInsert }: InsertionZoneProps) { // `z-20` lifts the whole zone above adjacent `Reorder.Item` siblings. // Without this, the next-in-DOM-order ThumbItem (which has a `transform` // via motion's Reorder, creating its own stacking context) paints on // top, and its violet ring clips through the `+` badge regardless of // any z-index applied inside the InsertionZone itself. return (
); } function SceneTypeChoice({ type, label, Icon, onInsert, }: { readonly type: EditableSceneType; readonly label: string; readonly Icon: typeof Presentation; readonly onInsert: (type: EditableSceneType) => void; }) { return ( ); }