import type { Meta, StoryObj } from '@storybook/react' import { Upload, FileText, ImageIcon } from 'lucide-react' import { DropZone } from './drop-zone' const AppContent = () => (
App content area — drag files over this window
) const meta: Meta = { title: 'Primitives/DropZone', component: DropZone, parameters: { layout: 'centered', backgrounds: { default: 'dark' } }, args: { onDrop: (files) => console.log('dropped', files), children: , }, } export default meta type Story = StoryObj export const Idle: Story = { name: 'Idle (no drag)', } export const WithAcceptFilter: Story = { name: 'With Accept Filter (.pdf, .csv)', args: { accept: '.pdf,.csv', title: 'Drop CSV or PDF files', description: 'Only .pdf and .csv files will be accepted.', }, } export const Disabled: Story = { name: 'Disabled', args: { disabled: true }, } /** Static render of the default drop overlay — the real one only mounts during dragenter. */ export const OverlayDefault: Story = { name: 'Overlay — Default', render: () => (

Drop files to upload

Your files will be securely stored in the workspace.

), } export const OverlayFiltered: Story = { name: 'Overlay — Accept filter (.pdf, .csv)', render: () => (

Drop CSV or PDF files

Only .pdf and .csv files will be accepted.

.pdf .csv
), } export const OverlayImages: Story = { name: 'Overlay — Images', render: () => (

Drop images here

Accepts .png, .jpg, .webp, .gif

), } export const OverlayCustom: Story = { name: 'Overlay — Custom content', render: () => (
console.log('dropped', files)} overlay={

Custom overlay

Replace default drop UI with anything.

} >
Drag a real file here to trigger custom overlay
), }