{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "snapp-drag-feedback", "title": "Snapp Drag Feedback", "description": "Figma-aligned native drag preview, fixed-size insertion indicator, and status drop target for draggable Snapp interfaces.", "registryDependencies": [ "@snapp/snapp-theme", "@snapp/snapp-utils" ], "files": [ { "path": "registry/radix-nova/components/drag/drag-feedback.tsx", "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport orderIcon from \"./order.svg\"\n\nconst DragPreview = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { icon: React.ReactNode }\n>(({ className, icon, children, ...props }, ref) => (\n \n \n \n {icon}\n \n {children}\n \n))\n\nDragPreview.displayName = \"DragPreview\"\n\nfunction DropIndicator({\n className,\n position = \"before\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n position?: \"before\" | \"after\"\n}) {\n return (\n \n \n \n )\n}\n\nfunction StatusDropTarget({\n className,\n edges = \"both\",\n icon,\n label,\n ...props\n}: React.ComponentProps<\"div\"> & {\n edges?: \"both\" | \"top\"\n icon: React.ReactNode\n label: React.ReactNode\n}) {\n return (\n \n
\n \n {icon}\n \n {label}\n
\n \n )\n}\n\nexport { DragPreview, DropIndicator, StatusDropTarget }\n", "type": "registry:component", "target": "@components/snapp/drag/drag-feedback.tsx" }, { "path": "registry/radix-nova/components/drag/order.svg", "content": "\n\n\n", "type": "registry:file", "target": "@components/snapp/drag/order.svg" } ], "type": "registry:component" }