import ImageUploader from '$lib/components/admin/ImageUploader.svelte' // Mock Media object for testing const mockMedia = { id: 1, filename: 'sample-image.jpg', originalName: 'sample-image.jpg', mimeType: 'image/jpeg', size: 1024000, width: 1920, height: 1080, url: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=Sample+Image', thumbnailUrl: 'https://via.placeholder.com/400x300/0066cc/ffffff?text=Sample+Image', altText: 'A beautiful sample image', description: 'This is a sample image for testing purposes', createdAt: new Date(), updatedAt: new Date() } export default { title: 'Admin/Form Components/ImageUploader', component: ImageUploader, tags: ['autodocs'], argTypes: { aspectRatio: { control: { type: 'select' }, options: ['', '1:1', '16:9', '4:3', '3:2'] }, required: { control: 'boolean' }, allowAltText: { control: 'boolean' }, showBrowseLibrary: { control: 'boolean' }, maxFileSize: { control: 'number' }, label: { control: 'text' }, placeholder: { control: 'text' }, helpText: { control: 'text' }, error: { control: 'text' } } } // Empty uploader export const Empty = { args: { label: 'Featured Image', placeholder: 'Drag and drop an image here, or click to browse', allowAltText: true, required: false, maxFileSize: 10 } } // With uploaded image export const WithImage = { args: { label: 'Project Logo', value: mockMedia, allowAltText: true, aspectRatio: '1:1' } } // Square aspect ratio export const SquareAspectRatio = { args: { label: 'Square Logo', aspectRatio: '1:1', placeholder: 'Upload a square logo', allowAltText: true, required: true } } // Wide aspect ratio export const WideAspectRatio = { args: { label: 'Hero Banner', aspectRatio: '16:9', placeholder: 'Upload a banner image', allowAltText: true, helpText: 'Recommended size: 1920x1080 pixels' } } // Required field export const Required = { args: { label: 'Required Image', required: true, allowAltText: true, placeholder: 'This field is required' } } // With error export const WithError = { args: { label: 'Image with Error', error: 'Please select a valid image file', allowAltText: true } } // With help text export const WithHelpText = { args: { label: 'Profile Picture', helpText: 'Upload a clear photo of yourself. This will be displayed on your profile.', allowAltText: true, aspectRatio: '1:1', maxFileSize: 5 } } // Without alt text export const WithoutAltText = { args: { label: 'Decorative Image', allowAltText: false, placeholder: 'Upload a decorative image', helpText: 'This image is purely decorative and does not need alt text.' } } // With browse library option export const WithBrowseLibrary = { args: { label: 'Featured Image', allowAltText: true, showBrowseLibrary: true, placeholder: 'Upload a new image or browse existing ones' } } // Small file size limit export const SmallFileLimit = { args: { label: 'Small Image', maxFileSize: 1, allowAltText: true, helpText: 'Maximum file size: 1MB' } } // Interactive playground export const Playground = { args: { label: 'Image Upload', placeholder: 'Drag and drop an image here', allowAltText: true, required: false, maxFileSize: 10, showBrowseLibrary: false } }