ultra-image-uploader 2.0.4 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  <div align="center">
4
4
 
5
- A modern, fancy React image upload component with responsive grid layout, beautiful themes, and smooth animations.
5
+ A modern, production-ready React image upload component with shadcn/ui-inspired design, beautiful themes, and smooth animations.
6
6
 
7
7
  [![npm version](https://badge.fury.io/js/ultra-image-uploader.svg)](https://www.npmjs.com/package/ultra-image-uploader)
8
8
  ![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue)
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-green)](https://opensource.org/licenses/MIT)
10
10
 
11
- **Modern UI** • **Beautiful Themes** • **Grid Layout** • **Smooth Animations**
11
+ **shadcn/ui Design** • **3 Themes** • **ImgBB & Cloudinary** • **Customizable**
12
12
 
13
13
  </div>
14
14
 
@@ -16,19 +16,18 @@ A modern, fancy React image upload component with responsive grid layout, beauti
16
16
 
17
17
  ## Features
18
18
 
19
- - **Modern UI** - Beautiful card-based design with shadows and rounded corners
20
- - **5 Built-in Themes** - Modern, Fresh, Nature, Ocean, and Sunset themes
21
- - **Responsive Grid** - Adaptive grid layout (2-5 columns) for all screen sizes
22
- - **Drag & Drop** - Upload files by dragging or clicking
23
- - **Live Previews** - Instant image thumbnails with metadata
24
- - **Progress Tracking** - Real-time upload progress with animations
25
- - **Smooth Animations** - Hover effects, fade transitions, scale animations
19
+ - **Modern UI** - Clean, minimal shadcn/ui-inspired design
20
+ - **3 Built-in Themes** - Nature (green), Modern (neutral), Fresh (blue)
21
+ - **Drag & Drop** - Beautiful drag-and-drop with smooth animations
22
+ - **Live Previews** - Responsive grid with image thumbnails
23
+ - **Progress Tracking** - Real-time upload progress with visual feedback
24
+ - **Remove Images** - Easy removal in both create and update modes
26
25
  - **Custom Themes** - Create your own theme with custom colors
27
- - **Keyboard Accessible** - Full keyboard navigation support
28
- - **File Validation** - Size and type validation
29
26
  - **Multiple Providers** - ImgBB & Cloudinary support
27
+ - **File Validation** - Size, type, and count validation
28
+ - **Accessible** - Keyboard navigation and ARIA support
30
29
  - **Auto Import** - Works with VS Code, WebStorm, and all editors
31
- - **Remove Images** - Remove button on all image previews
30
+ - **Customization API** - Border radius, preview size, show/hide elements
32
31
 
33
32
  ## Installation
34
33
 
@@ -69,298 +68,433 @@ function App() {
69
68
 
70
69
  | Prop | Type | Default | Description |
71
70
  |------|------|---------|-------------|
71
+ | **Core** |
72
72
  | `images` | `File[]` | **Required** | Selected image files |
73
73
  | `setImages` | `(files: File[]) => void` | **Required** | Update images state |
74
+ | **Mode** |
74
75
  | `mode` | `'add' \| 'update'` | `'add'` | Upload mode |
75
76
  | `defaultImages` | `string[]` | `[]` | Default images (update mode) |
77
+ | **File Constraints** |
76
78
  | `multiple` | `boolean` | `true` | Allow multiple files |
77
79
  | `maxSize` | `number` | `52428800` | Max file size (50MB) |
78
80
  | `allowedTypes` | `string[]` | Image types | Allowed MIME types |
79
81
  | `maxImages` | `number` | `20` | Maximum images allowed |
80
- | `className` | `string` | `''` | Custom class name |
81
- | `containerClassName` | `string` | `'max-w-5xl mx-auto mt-10'` | Container styling |
82
- | `theme` | `'modern' \| 'fresh' \| 'nature' \| 'ocean' \| 'sunset'` | `'nature'` | Built-in theme |
83
- | `customTheme` | `Theme` | `undefined` | Custom theme object |
84
- | `showThemeSelector` | `boolean` | `true` | Show theme selector buttons |
85
- | `showImageCount` | `boolean` | `true` | Show image count header |
86
- | `autoUpload` | `boolean` | `false` | Auto-upload on selection |
82
+ | **Upload** |
87
83
  | `uploadConfig` | `{ provider, config }` | `undefined` | Upload configuration |
84
+ | `autoUpload` | `boolean` | `false` | Auto-upload on selection |
88
85
  | `onUploadComplete` | `(urls: string[]) => void` | `undefined` | Success callback |
89
86
  | `onUploadError` | `(error: Error) => void` | `undefined` | Error callback |
87
+ | **Theme & Styling** |
88
+ | `theme` | `'nature' \| 'modern' \| 'fresh'` | `'nature'` | Built-in theme |
89
+ | `customTheme` | `Theme` | `undefined` | Custom theme object |
90
+ | `showThemeSelector` | `boolean` | `false` | Show theme selector |
91
+ | `borderRadius` | `'none' \| 'sm' \| 'md' \| 'lg' \| 'full'` | `'md'` | Border radius |
92
+ | `previewSize` | `'sm' \| 'md' \| 'lg'` | `'md'` | Upload icon size |
93
+ | `className` | `string` | `''` | Custom class name |
94
+ | `containerClassName` | `string` | `'max-w-5xl mx-auto mt-10'` | Container styling |
95
+ | **UI Toggles** |
96
+ | `showImageCount` | `boolean` | `true` | Show image count badge |
97
+ | `showFileName` | `boolean` | `true` | Show file name under preview |
98
+ | `showFileSize` | `boolean` | `true` | Show file size under preview |
90
99
 
91
100
  ## Examples
92
101
 
93
102
  ### Basic Usage
94
103
 
95
104
  ```tsx
96
- <ImageUploader
97
- images={images}
98
- setImages={setImages}
99
- multiple
100
- />
105
+ import { ImageUploader } from "ultra-image-uploader";
106
+ import { useState } from "react";
107
+
108
+ function BasicExample() {
109
+ const [images, setImages] = useState<File[]>([]);
110
+
111
+ return (
112
+ <ImageUploader
113
+ images={images}
114
+ setImages={setImages}
115
+ multiple
116
+ />
117
+ );
118
+ }
101
119
  ```
102
120
 
103
121
  ### Different Themes
104
122
 
105
123
  ```tsx
106
- // Modern theme (purple gradient)
107
- <ImageUploader
108
- images={images}
109
- setImages={setImages}
110
- theme="modern"
111
- />
112
-
113
- // Fresh theme (mint/rose gradient)
114
- <ImageUploader
115
- images={images}
116
- setImages={setImages}
117
- theme="fresh"
118
- />
124
+ // Nature theme (green) - Default
125
+ <ImageUploader theme="nature" images={images} setImages={setImages} />
119
126
 
120
- // Nature theme (green gradient)
121
- <ImageUploader
122
- images={images}
123
- setImages={setImages}
124
- theme="nature"
125
- />
126
-
127
- // Ocean theme (blue gradient)
128
- <ImageUploader
129
- images={images}
130
- setImages={setImages}
131
- theme="ocean"
132
- />
127
+ // Modern theme (neutral/monochrome)
128
+ <ImageUploader theme="modern" images={images} setImages={setImages} />
133
129
 
134
- // Sunset theme (orange gradient)
135
- <ImageUploader
136
- images={images}
137
- setImages={setImages}
138
- theme="sunset"
139
- />
130
+ // Fresh theme (blue)
131
+ <ImageUploader theme="fresh" images={images} setImages={setImages} />
140
132
  ```
141
133
 
142
- ### Custom Theme
134
+ ### Upload with ImgBB
143
135
 
144
136
  ```tsx
145
- function CustomThemeExample() {
146
- const [images, setImages] = useState<File[]>([]);
137
+ import { ImageUploader } from "ultra-image-uploader";
147
138
 
148
- const customTheme = {
149
- name: 'Corporate',
150
- colors: {
151
- primary: '#2563eb',
152
- primaryHover: '#1d4ed8',
153
- background: 'linear-gradient(135deg, #3b82f6 0%, #1e40af 100%)',
154
- border: '#dbeafe',
155
- text: '#1e3a8a',
156
- textSecondary: '#1e40af',
157
- cardBg: '#eff6ff',
158
- cardBorder: '#dbeafe',
159
- shadow: '0 10px 40px rgba(37, 99, 235, 0.15)',
160
- },
161
- };
139
+ function ImgBBUpload() {
140
+ const [images, setImages] = useState<File[]>([]);
162
141
 
163
142
  return (
164
143
  <ImageUploader
165
144
  images={images}
166
145
  setImages={setImages}
167
- customTheme={customTheme}
168
- showThemeSelector={false}
146
+ multiple
147
+ theme="nature"
148
+ uploadConfig={{
149
+ provider: 'imgbb',
150
+ config: { apiKey: process.env.IMGBB_API_KEY! }
151
+ }}
152
+ onUploadComplete={(urls) => {
153
+ console.log('Uploaded URLs:', urls);
154
+ }}
155
+ onUploadError={(error) => {
156
+ console.error('Upload failed:', error.message);
157
+ }}
169
158
  />
170
159
  );
171
160
  }
172
161
  ```
173
162
 
174
- ### Update Mode
163
+ ### Upload with Cloudinary
175
164
 
176
165
  ```tsx
177
- function UpdateExample() {
166
+ function CloudinaryUpload() {
178
167
  const [images, setImages] = useState<File[]>([]);
179
168
 
180
169
  return (
181
170
  <ImageUploader
182
171
  images={images}
183
172
  setImages={setImages}
184
- mode="update"
185
- defaultImages={['https://example.com/image1.jpg', 'https://example.com/image2.jpg']}
186
- theme="ocean"
173
+ multiple
174
+ theme="fresh"
175
+ uploadConfig={{
176
+ provider: 'cloudinary',
177
+ config: {
178
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME!,
179
+ uploadPreset: process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET!
180
+ }
181
+ }}
182
+ onUploadComplete={(urls) => {
183
+ console.log('Uploaded URLs:', urls);
184
+ }}
187
185
  />
188
186
  );
189
187
  }
190
188
  ```
191
189
 
192
- ### With Upload (ImgBB)
190
+ ### Auto Upload
193
191
 
194
192
  ```tsx
195
- function UploadExample() {
193
+ function AutoUploadExample() {
196
194
  const [images, setImages] = useState<File[]>([]);
197
195
 
198
196
  return (
199
197
  <ImageUploader
200
198
  images={images}
201
199
  setImages={setImages}
202
- multiple
203
- theme="modern"
200
+ autoUpload
204
201
  uploadConfig={{
205
202
  provider: 'imgbb',
206
- config: { apiKey: process.env.IMGBB_API_KEY }
203
+ config: { apiKey: process.env.IMGBB_API_KEY! }
207
204
  }}
208
205
  onUploadComplete={(urls) => {
209
- console.log('Uploaded:', urls);
206
+ // Automatically upload when images are selected
207
+ saveUrlsToDatabase(urls);
210
208
  }}
211
209
  />
212
210
  );
213
211
  }
214
212
  ```
215
213
 
216
- ### Auto Upload
214
+ ### Update Mode (Existing Images)
217
215
 
218
216
  ```tsx
219
- <ImageUploader
220
- images={images}
221
- setImages={setImages}
222
- theme="sunset"
223
- autoUpload
224
- uploadConfig={{
225
- provider: 'cloudinary',
226
- config: {
227
- cloudName: 'your-cloud',
228
- uploadPreset: 'your-preset'
229
- }
230
- }}
231
- />
217
+ function UpdateExample() {
218
+ const [newImages, setNewImages] = useState<File[]>([]);
219
+
220
+ const existingImages = [
221
+ 'https://example.com/image1.jpg',
222
+ 'https://example.com/image2.jpg'
223
+ ];
224
+
225
+ return (
226
+ <ImageUploader
227
+ images={newImages}
228
+ setImages={setNewImages}
229
+ mode="update"
230
+ defaultImages={existingImages}
231
+ theme="modern"
232
+ multiple
233
+ />
234
+ );
235
+ }
232
236
  ```
233
237
 
234
- ### Hide Theme Selector & Image Count
238
+ ### Custom Theme
235
239
 
236
240
  ```tsx
237
- <ImageUploader
238
- images={images}
239
- setImages={setImages}
240
- theme="fresh"
241
- showThemeSelector={false}
242
- showImageCount={false}
243
- />
241
+ import { ImageUploader, type CustomTheme } from "ultra-image-uploader";
242
+
243
+ function CustomThemeExample() {
244
+ const [images, setImages] = useState<File[]>([]);
245
+
246
+ const customTheme: CustomTheme = {
247
+ name: 'MyBrand',
248
+ colors: {
249
+ primary: '#FF6B35',
250
+ primaryHover: '#E55A2B',
251
+ background: '#FFF5F0',
252
+ border: '#FFE5D9',
253
+ text: '#2D3142',
254
+ textSecondary: '#4F5D75',
255
+ cardBg: '#FFFFFF',
256
+ cardBorder: '#FFE5D9',
257
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
258
+ },
259
+ };
260
+
261
+ return (
262
+ <ImageUploader
263
+ images={images}
264
+ setImages={setImages}
265
+ customTheme={customTheme}
266
+ showThemeSelector={false}
267
+ />
268
+ );
269
+ }
244
270
  ```
245
271
 
246
- ## Built-in Themes
272
+ ### Customization Options
247
273
 
248
- The component comes with 5 beautiful themes:
274
+ ```tsx
275
+ function CustomizedExample() {
276
+ const [images, setImages] = useState<File[]>([]);
249
277
 
250
- ### Modern (Purple)
251
- - Gradient: Purple to violet
252
- - Primary: `#6366f1`
253
- - Perfect for modern web apps
278
+ return (
279
+ <ImageUploader
280
+ images={images}
281
+ setImages={setImages}
282
+ // Border radius
283
+ borderRadius="lg"
284
+ // Preview size (affects upload icon)
285
+ previewSize="lg"
286
+ // Container width
287
+ containerClassName="max-w-3xl mx-auto mt-8"
288
+ // Show/hide elements
289
+ showImageCount={true}
290
+ showFileName={true}
291
+ showFileSize={true}
292
+ // Constraints
293
+ multiple={true}
294
+ maxImages={10}
295
+ maxSize={10 * 1024 * 1024} // 10MB
296
+ // Theme
297
+ theme="fresh"
298
+ />
299
+ );
300
+ }
301
+ ```
254
302
 
255
- ### Fresh (Mint/Rose)
256
- - Gradient: Mint to rose
257
- - Primary: `#10b981`
258
- - Fresh and clean look
303
+ ### Single Image Upload
259
304
 
260
- ### Nature (Green)
261
- - Gradient: Lime to emerald
262
- - Primary: `#22c55e`
263
- - Nature-inspired design
305
+ ```tsx
306
+ function SingleImageExample() {
307
+ const [avatar, setAvatar] = useState<File[]>([]);
264
308
 
265
- ### Ocean (Blue)
266
- - Gradient: Blue to purple
267
- - Primary: `#0ea5e9`
268
- - Calm ocean vibes
309
+ return (
310
+ <ImageUploader
311
+ images={avatar}
312
+ setImages={setAvatar}
313
+ multiple={false}
314
+ maxImages={1}
315
+ theme="modern"
316
+ showImageCount={false}
317
+ showFileName={false}
318
+ showFileSize={false}
319
+ />
320
+ );
321
+ }
322
+ ```
269
323
 
270
- ### Sunset (Orange)
271
- - Gradient: Yellow to orange
272
- - Primary: `#f59e0b`
273
- - Warm sunset colors
324
+ ### Product Gallery
274
325
 
275
- ## Animations
326
+ ```tsx
327
+ function ProductGallery() {
328
+ const [productImages, setProductImages] = useState<File[]>([]);
329
+
330
+ const handleUploadComplete = async (urls: string[]) => {
331
+ // Save to database
332
+ await fetch('/api/products/images', {
333
+ method: 'POST',
334
+ headers: { 'Content-Type': 'application/json' },
335
+ body: JSON.stringify({ images: urls }),
336
+ });
337
+ };
276
338
 
277
- The component includes smooth animations:
278
- - Scale effect on drag over
279
- - Fade-in for image previews
280
- - Bounce-in for upload complete checkmark
281
- - Hover scale on image cards
282
- - Progress overlay with backdrop blur
283
- - Button hover effects
339
+ return (
340
+ <ImageUploader
341
+ images={productImages}
342
+ setImages={setProductImages}
343
+ multiple={true}
344
+ maxImages={8}
345
+ maxSize={5 * 1024 * 1024} // 5MB
346
+ theme="nature"
347
+ borderRadius="lg"
348
+ uploadConfig={{
349
+ provider: 'cloudinary',
350
+ config: {
351
+ cloudName: process.env.CLOUDINARY_CLOUD_NAME!,
352
+ uploadPreset: 'products'
353
+ }
354
+ }}
355
+ onUploadComplete={handleUploadComplete}
356
+ />
357
+ );
358
+ }
359
+ ```
284
360
 
285
- ## Accessibility
361
+ ## Built-in Themes
286
362
 
287
- - Keyboard accessible (Enter/Space to upload)
288
- - Focus indicators on drag area
289
- - ARIA-compatible markup
290
- - Screen reader friendly
363
+ ### Nature (Green)
364
+ - Soft greens with organic feel
365
+ - Primary: `#16a34a`
366
+ - Background: `#f0fdf4`
367
+ - Perfect for: Nature, health, eco-friendly apps
291
368
 
292
- ## Responsive Design
369
+ ### Modern (Neutral)
370
+ - Clean monochrome design
371
+ - Primary: `#09090b`
372
+ - Background: `#fafafa`
373
+ - Perfect for: Professional apps, portfolios, dashboards
293
374
 
294
- The grid layout adapts to screen sizes:
295
- - Mobile: 2 columns
296
- - Tablet: 3 columns
297
- - Desktop: 4 columns
298
- - Wide: 5 columns
299
- - Default container: `max-w-5xl mx-auto mt-10`
375
+ ### Fresh (Blue)
376
+ - Light blue airy design
377
+ - Primary: `#0284c7`
378
+ - Background: `#f0f9ff`
379
+ - Perfect for: Social apps, SaaS, modern web apps
380
+
381
+ ## Customization
382
+
383
+ ### Border Radius Options
384
+
385
+ ```tsx
386
+ borderRadius="none" // 0
387
+ borderRadius="sm" // 0.25rem
388
+ borderRadius="md" // 0.375rem (default)
389
+ borderRadius="lg" // 0.5rem
390
+ borderRadius="full" // 9999px (circular)
391
+ ```
392
+
393
+ ### Preview Size Options
300
394
 
301
- ## Upload Functions
395
+ ```tsx
396
+ previewSize="sm" // Small icon
397
+ previewSize="md" // Medium icon (default)
398
+ previewSize="lg" // Large icon
399
+ ```
400
+
401
+ ### Show/Hide Elements
302
402
 
303
403
  ```tsx
304
- import {
305
- uploadImage,
306
- uploadImages,
307
- uploadImagesToImageBB,
308
- uploadImagesToCloudinary
309
- } from "ultra-image-uploader";
310
-
311
- // Upload with progress
312
- const result = await uploadImage(file, 'imgbb', { apiKey }, {
313
- onProgress: (p) => console.log(p.percentage)
314
- });
315
-
316
- // Multiple uploads
317
- const results = await uploadImages(files, 'cloudinary', {
318
- cloudName: 'your-cloud'
319
- });
404
+ <ImageUploader
405
+ showImageCount={false} // Hide image count badge
406
+ showFileName={false} // Hide file names
407
+ showFileSize={false} // Hide file sizes
408
+ />
320
409
  ```
321
410
 
322
- ## API Configuration
411
+ ## Upload Providers
323
412
 
324
413
  ### ImgBB
414
+
325
415
  1. Get API key from [imgbb.com/settings/api](https://imgbb.com/settings/api)
326
- 2. Use `{ provider: 'imgbb', config: { apiKey } }`
416
+ 2. Configure:
417
+
418
+ ```tsx
419
+ uploadConfig={{
420
+ provider: 'imgbb',
421
+ config: { apiKey: 'your-api-key' }
422
+ }}
423
+ ```
327
424
 
328
425
  ### Cloudinary
426
+
329
427
  1. Sign up at [cloudinary.com](https://cloudinary.com)
330
428
  2. Get cloud name and create upload preset
331
- 3. Use `{ provider: 'cloudinary', config: { cloudName, uploadPreset } }`
429
+ 3. Configure:
430
+
431
+ ```tsx
432
+ uploadConfig={{
433
+ provider: 'cloudinary',
434
+ config: {
435
+ cloudName: 'your-cloud-name',
436
+ uploadPreset: 'your-upload-preset'
437
+ }
438
+ }}
439
+ ```
332
440
 
333
441
  ## TypeScript
334
442
 
335
443
  Full TypeScript support:
336
444
 
337
445
  ```tsx
338
- import type { ImageUploaderProps } from "ultra-image-uploader";
339
- import type { Theme } from "ultra-image-uploader";
446
+ import type { ImageUploaderProps, ThemeName, CustomTheme } from "ultra-image-uploader";
340
447
  ```
341
448
 
449
+ ## Animations
450
+
451
+ The component includes smooth, performance-friendly animations:
452
+ - Drag-over state with border color change
453
+ - Fade-in for image previews
454
+ - Hover effects with shadow and scale
455
+ - Progress overlay with backdrop blur
456
+ - Done indicator with checkmark
457
+ - All transitions use CSS transforms for 60fps performance
458
+
459
+ ## Accessibility
460
+
461
+ - Keyboard accessible (Tab to focus, Enter/Space to upload)
462
+ - Focus visible on drag area
463
+ - ARIA-compatible markup
464
+ - Screen reader friendly
465
+ - Semantic HTML structure
466
+
467
+ ## Responsive Design
468
+
469
+ The grid layout adapts to screen sizes:
470
+ - Mobile (2 columns): 320px+
471
+ - Tablet (3 columns): 640px+
472
+ - Desktop (4 columns): 768px+
473
+ - Wide (5 columns): 1024px+
474
+ - Default container: `max-w-5xl mx-auto mt-10`
475
+
342
476
  ## Browser Support
343
477
 
344
478
  - Chrome/Edge (latest)
345
479
  - Firefox (latest)
346
480
  - Safari (latest)
347
- - Mobile browsers
481
+ - Mobile browsers (iOS Safari, Chrome Mobile)
348
482
 
349
483
  ## Troubleshooting
350
484
 
351
485
  ### Auto imports not working
352
- - Restart TypeScript server in your editor
353
- - Ensure `node_modules` exists
354
-
355
- ### Theme not applying
356
- - Check that theme name matches one of the built-in themes
357
- - For custom themes, verify the structure matches the Theme type
486
+ - Restart TypeScript server in your editor (Cmd+Shift+P > "Restart TypeScript Server")
487
+ - Ensure `node_modules` exists (`npm install`)
358
488
 
359
489
  ### Images not uploading
360
- - Verify API credentials
490
+ - Verify API credentials in environment variables
361
491
  - Check browser console for errors
362
492
  - Ensure CORS is configured for your upload provider
363
493
 
494
+ ### Theme not applying
495
+ - Check that theme name matches: `'nature'` | `'modern'` | `'fresh'`
496
+ - For custom themes, verify the structure matches `CustomTheme` type
497
+
364
498
  ## License
365
499
 
366
500
  MIT © Digontha Das
@@ -1,33 +1,5 @@
1
1
  import type { UploadProvider, ProviderConfig } from '../types';
2
2
  export declare const themes: {
3
- modern: {
4
- name: string;
5
- colors: {
6
- primary: string;
7
- primaryHover: string;
8
- background: string;
9
- border: string;
10
- text: string;
11
- textSecondary: string;
12
- cardBg: string;
13
- cardBorder: string;
14
- shadow: string;
15
- };
16
- };
17
- fresh: {
18
- name: string;
19
- colors: {
20
- primary: string;
21
- primaryHover: string;
22
- background: string;
23
- border: string;
24
- text: string;
25
- textSecondary: string;
26
- cardBg: string;
27
- cardBorder: string;
28
- shadow: string;
29
- };
30
- };
31
3
  nature: {
32
4
  name: string;
33
5
  colors: {
@@ -42,7 +14,7 @@ export declare const themes: {
42
14
  shadow: string;
43
15
  };
44
16
  };
45
- ocean: {
17
+ modern: {
46
18
  name: string;
47
19
  colors: {
48
20
  primary: string;
@@ -56,7 +28,7 @@ export declare const themes: {
56
28
  shadow: string;
57
29
  };
58
30
  };
59
- sunset: {
31
+ fresh: {
60
32
  name: string;
61
33
  colors: {
62
34
  primary: string;
@@ -71,6 +43,8 @@ export declare const themes: {
71
43
  };
72
44
  };
73
45
  };
46
+ export type ThemeName = keyof typeof themes;
47
+ export type CustomTheme = typeof themes[ThemeName];
74
48
  export interface ImageUploaderProps {
75
49
  images: File[];
76
50
  setImages: (images: File[]) => void;
@@ -80,19 +54,23 @@ export interface ImageUploaderProps {
80
54
  maxSize?: number;
81
55
  allowedTypes?: string[];
82
56
  maxImages?: number;
83
- className?: string;
84
- containerClassName?: string;
85
- theme?: keyof typeof themes;
86
- customTheme?: typeof themes[keyof typeof themes];
87
- showThemeSelector?: boolean;
88
- showImageCount?: boolean;
89
- onUploadComplete?: (urls: string[]) => void;
90
- onUploadError?: (error: Error) => void;
91
- autoUpload?: boolean;
92
57
  uploadConfig?: {
93
58
  provider: UploadProvider;
94
59
  config: ProviderConfig;
95
60
  };
61
+ autoUpload?: boolean;
62
+ onUploadComplete?: (urls: string[]) => void;
63
+ onUploadError?: (error: Error) => void;
64
+ theme?: ThemeName;
65
+ customTheme?: CustomTheme;
66
+ showThemeSelector?: boolean;
67
+ previewSize?: 'sm' | 'md' | 'lg';
68
+ borderRadius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
69
+ className?: string;
70
+ containerClassName?: string;
71
+ showImageCount?: boolean;
72
+ showFileSize?: boolean;
73
+ showFileName?: boolean;
96
74
  }
97
- export declare function ImageUploader({ images, setImages, mode, defaultImages, multiple, maxSize, allowedTypes, maxImages, className, containerClassName, theme, customTheme, showThemeSelector, showImageCount, onUploadComplete, onUploadError, autoUpload, uploadConfig, }: ImageUploaderProps): import("react/jsx-runtime").JSX.Element;
75
+ export declare function ImageUploader({ images, setImages, mode, defaultImages, multiple, maxSize, allowedTypes, maxImages, uploadConfig, autoUpload, onUploadComplete, onUploadError, theme, customTheme, showThemeSelector, previewSize, borderRadius, className, containerClassName, showImageCount, showFileSize, showFileName, }: ImageUploaderProps): import("react/jsx-runtime").JSX.Element;
98
76
  //# sourceMappingURL=ImageUploader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUploader.d.ts","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuElB,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,OAAO,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,cAAc,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC;CACH;AASD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,IAAY,EACZ,aAAkB,EAClB,QAAe,EACf,OAA0B,EAC1B,YAAkF,EAClF,SAAc,EACd,SAAc,EACd,kBAA8C,EAC9C,KAAgB,EAChB,WAAW,EACX,iBAAwB,EACxB,cAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,UAAkB,EAClB,YAAY,GACb,EAAE,kBAAkB,2CA2fpB"}
1
+ {"version":3,"file":"ImageUploader.d.ts","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK/D,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2ClB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAC;AAC5C,MAAM,MAAM,WAAW,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAEnD,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAGpC,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAGzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE;QACb,QAAQ,EAAE,cAAc,CAAC;QACzB,MAAM,EAAE,cAAc,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAGvC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAiBD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,IAAY,EACZ,aAAkB,EAClB,QAAe,EACf,OAA0B,EAC1B,YAAmG,EACnG,SAAc,EACd,YAAY,EACZ,UAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,KAAgB,EAChB,WAAW,EACX,iBAAyB,EACzB,WAAkB,EAClB,YAAmB,EACnB,SAAc,EACd,kBAA8C,EAC9C,cAAqB,EACrB,YAAmB,EACnB,YAAmB,GACpB,EAAE,kBAAkB,2CAydpB"}
@@ -1,83 +1,62 @@
1
1
  'use client';
2
2
  import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useState, useRef, useCallback, useEffect } from 'react';
4
- import { Upload, X, Image as ImageIcon, Loader2, Sparkles } from 'lucide-react';
4
+ import { Upload, X, Image as ImageIcon, Loader2 } from 'lucide-react';
5
5
  import { uploadImage } from '../providers';
6
6
  import { isImageFile, formatFileSize } from '../utils/validation';
7
- // Theme definitions
7
+ // Theme definitions - shadcn/ui inspired
8
8
  export const themes = {
9
- modern: {
10
- name: 'Modern',
11
- colors: {
12
- primary: '#6366f1',
13
- primaryHover: '#4f46e5',
14
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
15
- border: '#e5e7eb',
16
- text: '#1f2937',
17
- textSecondary: '#6b7280',
18
- cardBg: '#ffffff',
19
- cardBorder: '#f3f4f6',
20
- shadow: '0 10px 40px rgba(0,0,0,0.1)',
21
- },
22
- },
23
- fresh: {
24
- name: 'Fresh',
25
- colors: {
26
- primary: '#10b981',
27
- primaryHover: '#059669',
28
- background: 'linear-gradient(135deg, #a8edea 0%, #fed6e3 100%)',
29
- border: '#d1fae5',
30
- text: '#064e3b',
31
- textSecondary: '#047857',
32
- cardBg: '#ffffff',
33
- cardBorder: '#ecfdf5',
34
- shadow: '0 8px 30px rgba(16, 185, 129, 0.15).',
35
- },
36
- },
37
9
  nature: {
38
10
  name: 'Nature',
39
11
  colors: {
40
- primary: '#22c55e',
41
- primaryHover: '#16a34a',
42
- background: 'linear-gradient(135deg, #d4fc79 0%, #96e6a1 100%)',
12
+ primary: '#16a34a',
13
+ primaryHover: '#15803d',
14
+ background: '#f0fdf4',
43
15
  border: '#bbf7d0',
44
16
  text: '#14532d',
45
17
  textSecondary: '#166534',
46
- cardBg: '#f0fdf4',
18
+ cardBg: '#ffffff',
47
19
  cardBorder: '#dcfce7',
48
- shadow: '0 12px 35px rgba(34, 197, 94, 0.15).',
20
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
49
21
  },
50
22
  },
51
- ocean: {
52
- name: 'Ocean',
23
+ modern: {
24
+ name: 'Modern',
53
25
  colors: {
54
- primary: '#0ea5e9',
55
- primaryHover: '#0284c7',
56
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
26
+ primary: '#09090b',
27
+ primaryHover: '#18181b',
28
+ background: '#fafafa',
29
+ border: '#e4e4e7',
30
+ text: '#18181b',
31
+ textSecondary: '#71717a',
32
+ cardBg: '#ffffff',
33
+ cardBorder: '#e4e4e7',
34
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
35
+ },
36
+ },
37
+ fresh: {
38
+ name: 'Fresh',
39
+ colors: {
40
+ primary: '#0284c7',
41
+ primaryHover: '#0369a1',
42
+ background: '#f0f9ff',
57
43
  border: '#bae6fd',
58
44
  text: '#0c4a6e',
59
45
  textSecondary: '#075985',
60
- cardBg: '#f0f9ff',
46
+ cardBg: '#ffffff',
61
47
  cardBorder: '#e0f2fe',
62
- shadow: '0 10px 40px rgba(14, 165, 233, 0.2).',
63
- },
64
- },
65
- sunset: {
66
- name: 'Sunset',
67
- colors: {
68
- primary: '#f59e0b',
69
- primaryHover: '#d97706',
70
- background: 'linear-gradient(135deg, #f6d365 0%, #fda085 100%)',
71
- border: '#fed7aa',
72
- text: '#78350f',
73
- textSecondary: '#9a3412',
74
- cardBg: '#fffbeb',
75
- cardBorder: '#fef3c7',
76
- shadow: '0 12px 40px rgba(245, 158, 11, 0.2).',
48
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
77
49
  },
78
50
  },
79
51
  };
80
- export function ImageUploader({ images, setImages, mode = 'add', defaultImages = [], multiple = true, maxSize = 50 * 1024 * 1024, allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif'], maxImages = 20, className = '', containerClassName = 'max-w-5xl mx-auto mt-10', theme = 'nature', customTheme, showThemeSelector = true, showImageCount = true, onUploadComplete, onUploadError, autoUpload = false, uploadConfig, }) {
52
+ const borderRadiusMap = {
53
+ none: '0',
54
+ sm: '0.25rem',
55
+ md: '0.375rem',
56
+ lg: '0.5rem',
57
+ full: '9999px',
58
+ };
59
+ export function ImageUploader({ images, setImages, mode = 'add', defaultImages = [], multiple = true, maxSize = 50 * 1024 * 1024, allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif', 'image/svg+xml'], maxImages = 20, uploadConfig, autoUpload = false, onUploadComplete, onUploadError, theme = 'nature', customTheme, showThemeSelector = false, previewSize = 'md', borderRadius = 'md', className = '', containerClassName = 'max-w-5xl mx-auto mt-10', showImageCount = true, showFileSize = true, showFileName = true, }) {
81
60
  const [selectedTheme, setSelectedTheme] = useState(theme);
82
61
  const [isDragging, setIsDragging] = useState(false);
83
62
  const [fileStates, setFileStates] = useState(new Map());
@@ -87,6 +66,7 @@ export function ImageUploader({ images, setImages, mode = 'add', defaultImages =
87
66
  const dragCounter = useRef(0);
88
67
  const currentTheme = customTheme || themes[selectedTheme];
89
68
  const t = currentTheme.colors;
69
+ const radius = borderRadiusMap[borderRadius];
90
70
  // Generate previews
91
71
  useEffect(() => {
92
72
  const newStates = new Map();
@@ -225,82 +205,64 @@ export function ImageUploader({ images, setImages, mode = 'add', defaultImages =
225
205
  const key = `${file.name}-${file.size}`;
226
206
  return fileStates.get(key) || { ...file, progress: 0, status: 'pending' };
227
207
  };
228
- return (_jsxs("div", { className: `image-uploader ${containerClassName} ${className}`, children: [_jsxs("div", { className: "flex items-center justify-between mb-8", children: [_jsxs("div", { children: [_jsxs("h2", { className: "text-3xl font-bold", style: { color: t.text, fontFamily: 'system-ui, sans-serif' }, children: [mode === 'update' ? 'Update' : 'Upload', " Images"] }), _jsx("p", { className: "mt-1", style: { color: t.textSecondary }, children: "Beautiful image upload with real-time previews" })] }), showImageCount && (_jsxs("div", { className: "flex items-center gap-2 px-4 py-2 rounded-full", style: { backgroundColor: t.cardBg, border: `1px solid ${t.border}` }, children: [_jsx(Sparkles, { size: 18, style: { color: t.primary } }), _jsxs("span", { className: "font-semibold", style: { color: t.text }, children: [images.length, " ", maxImages ? `/ ${maxImages}` : ''] })] }))] }), showThemeSelector && (_jsx("div", { className: "mb-6 flex flex-wrap gap-2", children: Object.entries(themes).map(([key, themeData]) => (_jsx("button", { onClick: () => setSelectedTheme(key), className: `px-4 py-2 rounded-lg font-medium transition-all duration-300 transform hover:scale-105 ${selectedTheme === key ? 'ring-2 ring-offset-2' : ''}`, style: {
229
- backgroundColor: selectedTheme === key ? themeData.colors.primary : themeData.colors.cardBg,
230
- color: selectedTheme === key ? 'white' : themeData.colors.text,
231
- borderColor: themeData.colors.border,
232
- boxShadow: selectedTheme === key ? themeData.colors.shadow : 'none',
233
- }, children: themeData.name }, key))) })), _jsxs("div", { className: "relative rounded-2xl border-2 transition-all duration-500 cursor-pointer", style: {
234
- background: t.background,
235
- borderColor: isDragging ? t.primary : t.border,
236
- boxShadow: isDragging ? `${t.shadow}, 0 0 0 4px ${t.primary}40` : t.shadow,
237
- transform: isDragging ? 'scale(1.02)' : 'scale(1)',
238
- }, onClick: () => fileInputRef.current?.click(), onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, children: [_jsx("input", { ref: fileInputRef, type: "file", accept: allowedTypes.join(','), multiple: multiple, onChange: handleChange, className: "absolute inset-0 opacity-0 cursor-pointer", style: { zIndex: 10 } }), _jsxs("div", { className: "flex flex-col items-center justify-center p-16", children: [_jsx("div", { className: `relative mb-6 transition-transform duration-500 ${isDragging ? 'scale-125 rotate-6' : 'scale-100'}`, children: _jsxs("div", { className: `rounded-full flex items-center justify-center relative`, style: {
239
- width: '120px',
240
- height: '120px',
241
- background: t.cardBg,
242
- border: `3px solid ${t.border}`,
243
- boxShadow: t.shadow,
244
- }, children: [_jsx(ImageIcon, { size: 48, style: { color: t.primary } }), _jsx("div", { className: "absolute -bottom-2 -right-2 w-12 h-12 rounded-full flex items-center justify-center transition-all duration-300", style: {
245
- background: t.primary,
246
- boxShadow: `0 4px 12px ${t.primary}40`,
247
- }, children: _jsx(Upload, { size: 24, className: "text-white" }) })] }) }), _jsx("h3", { className: "text-xl font-bold mb-2 transition-all duration-300", style: { color: isDragging ? t.primary : t.text }, children: isDragging ? 'Drop images here' : 'Click or drag to upload' }), _jsxs("p", { className: "text-sm mb-1", style: { color: t.textSecondary }, children: ["Maximum file size ", formatFileSize(maxSize)] }), maxImages && (_jsxs("p", { className: "text-xs", style: { color: t.textSecondary }, children: ["Up to ", maxImages, " images"] }))] })] }), (images.length > 0 || defaultImages.length > 0) && (_jsx("div", { className: "mt-10", children: _jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-6", children: [mode === 'update' &&
248
- defaultImages.map((url, index) => !removedDefaults.includes(index) && (_jsx("div", { className: "relative group", style: { animation: 'fadeIn 0.3s ease-out' }, children: _jsx("div", { className: `rounded-xl overflow-hidden transition-all duration-300`, style: {
249
- border: `2px solid ${t.cardBorder}`,
250
- boxShadow: t.shadow,
208
+ return (_jsxs("div", { className: `image-uploader ${containerClassName} ${className}`, children: [_jsxs("div", { className: "flex items-center justify-between mb-6", children: [_jsxs("div", { children: [_jsxs("h2", { className: "text-2xl font-semibold tracking-tight", style: { color: t.text }, children: [mode === 'update' ? 'Update' : 'Upload', " Images"] }), _jsx("p", { className: "text-sm", style: { color: t.textSecondary }, children: multiple ? 'Drag and drop or click to upload' : 'Select an image to upload' })] }), showImageCount && (_jsxs("div", { className: "inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-md border", style: {
209
+ backgroundColor: t.cardBg,
210
+ borderColor: t.cardBorder,
211
+ color: t.text,
212
+ }, children: [_jsx("span", { children: images.length }), maxImages && _jsxs("span", { className: "text-muted", style: { color: t.textSecondary }, children: ["/ ", maxImages] })] }))] }), showThemeSelector && (_jsx("div", { className: "mb-6 inline-flex gap-1 p-1 rounded-lg border", style: { backgroundColor: t.background, borderColor: t.cardBorder }, children: Object.keys(themes).map((key) => (_jsx("button", { onClick: () => setSelectedTheme(key), className: "px-3 py-1.5 text-sm font-medium rounded-md transition-colors", style: {
213
+ backgroundColor: selectedTheme === key ? t.cardBg : 'transparent',
214
+ color: selectedTheme === key ? t.text : t.textSecondary,
215
+ }, children: themes[key].name }, key))) })), _jsxs("div", { className: "relative group cursor-pointer overflow-hidden transition-all duration-200", style: {
216
+ borderRadius: radius,
217
+ border: `2px dashed ${isDragging ? t.primary : t.cardBorder}`,
218
+ backgroundColor: t.background,
219
+ }, onClick: () => fileInputRef.current?.click(), onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, children: [_jsx("input", { ref: fileInputRef, type: "file", accept: allowedTypes.join(','), multiple: multiple, onChange: handleChange, className: "absolute inset-0 opacity-0 cursor-pointer", style: { zIndex: 10 } }), _jsxs("div", { className: "flex flex-col items-center justify-center p-12", children: [_jsx("div", { className: "mb-4 flex items-center justify-center transition-transform duration-200", style: { color: isDragging ? t.primary : t.textSecondary }, children: _jsx("div", { className: "flex items-center justify-center rounded-full", style: {
220
+ width: previewSize === 'lg' ? '64px' : previewSize === 'md' ? '56px' : '48px',
221
+ height: previewSize === 'lg' ? '64px' : previewSize === 'md' ? '56px' : '48px',
222
+ backgroundColor: t.cardBg,
223
+ border: `1px solid ${t.cardBorder}`,
224
+ }, children: _jsx(ImageIcon, { size: 24 }) }) }), _jsxs("div", { className: "text-center space-y-1", children: [_jsx("p", { className: "text-sm font-medium", style: { color: t.text }, children: isDragging ? 'Drop images here' : multiple ? 'Drop images here' : 'Drop image here' }), _jsx("p", { className: "text-xs", style: { color: t.textSecondary }, children: "or click to browse" })] }), _jsxs("div", { className: "mt-4 text-xs space-y-0.5", style: { color: t.textSecondary }, children: [_jsxs("p", { children: ["Max size: ", formatFileSize(maxSize)] }), maxImages && _jsxs("p", { children: ["Up to ", maxImages, " image", maxImages > 1 ? 's' : ''] })] })] })] }), (images.length > 0 || defaultImages.length > 0) && (_jsx("div", { className: "mt-6", children: _jsxs("div", { className: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4", children: [mode === 'update' &&
225
+ defaultImages.map((url, index) => !removedDefaults.includes(index) && (_jsx("div", { className: "relative group aspect-square", style: { animation: 'fadeIn 0.2s ease-out' }, children: _jsxs("div", { className: "relative w-full h-full overflow-hidden border transition-all duration-200 hover:shadow-md", style: {
226
+ borderRadius: radius,
227
+ borderColor: t.cardBorder,
251
228
  backgroundColor: t.cardBg,
252
- }, children: _jsxs("div", { className: "relative aspect-square", children: [_jsx("img", { src: url, alt: `Preview ${index + 1}`, className: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" }), _jsx("button", { onClick: () => removeDefaultImage(index), className: "absolute top-3 right-3 w-10 h-10 flex items-center justify-center rounded-full bg-red-500 hover:bg-red-600 text-white opacity-0 group-hover:opacity-100 transition-all duration-300 transform hover:scale-110 shadow-lg", style: {
253
- boxShadow: '0 4px 12px rgba(239, 68, 68, 0.4)',
254
- }, children: _jsx(X, { size: 18 }) })] }) }) }, `default-${index}`))), images.map((file, index) => {
229
+ }, children: [_jsx("img", { src: url, alt: `Preview ${index + 1}`, className: "w-full h-full object-cover" }), _jsx("button", { onClick: () => removeDefaultImage(index), className: "absolute top-2 right-2 w-7 h-7 flex items-center justify-center rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200", style: {
230
+ backgroundColor: 'rgba(0,0,0,0.7)',
231
+ backdropFilter: 'blur(4px)',
232
+ }, children: _jsx(X, { size: 14, className: "text-white" }) })] }) }, `default-${index}`))), images.map((file, index) => {
255
233
  const state = getFileState(file);
256
234
  const isUploading = state.status === 'uploading';
257
235
  const isDone = state.status === 'done';
258
- return (_jsx("div", { className: "relative group", style: { animation: 'fadeIn 0.3s ease-out', animationDelay: `${index * 50}ms` }, children: _jsxs("div", { className: `rounded-xl overflow-hidden transition-all duration-300 transform hover:-translate-y-1 hover:shadow-2xl`, style: {
259
- border: `2px solid ${t.cardBorder}`,
260
- boxShadow: t.shadow,
261
- backgroundColor: t.cardBg,
262
- }, children: [_jsxs("div", { className: "relative aspect-square", children: [state.preview ? (_jsx("img", { src: state.preview, alt: file.name, className: "w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" })) : (_jsx("div", { className: "w-full h-full flex items-center justify-center", style: { backgroundColor: t.border }, children: _jsx(ImageIcon, { size: 48, style: { color: t.primary } }) })), _jsx("button", { onClick: () => removeFile(index), className: "absolute top-3 right-3 w-10 h-10 flex items-center justify-center rounded-full bg-red-500 hover:bg-red-600 text-white opacity-0 group-hover:opacity-100 transition-all duration-300 transform hover:scale-110 shadow-lg", style: {
263
- boxShadow: '0 4px 12px rgba(239, 68, 68, 0.4)',
264
- }, children: _jsx(X, { size: 18 }) }), isUploading && (_jsx("div", { className: "absolute inset-0 bg-black/70 backdrop-blur-sm flex items-center justify-center transition-opacity duration-300", children: _jsxs("div", { className: "text-center", children: [_jsx(Loader2, { size: 40, className: "animate-spin text-white mx-auto mb-3" }), _jsxs("p", { className: "text-white font-bold", children: [state.progress, "%"] })] }) })), isDone && (_jsx("div", { className: "absolute inset-0 bg-black/40 backdrop-blur-sm flex items-center justify-center", children: _jsx("div", { className: "w-20 h-20 bg-green-500 rounded-full flex items-center justify-center transform scale-0 animate-bounce-in", style: {
265
- boxShadow: '0 8px 24px rgba(34, 197, 94, 0.5)',
266
- }, children: _jsx("svg", { className: "w-10 h-10 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }) }))] }), _jsxs("div", { className: "p-4", children: [_jsx("p", { className: "font-semibold truncate mb-1", style: { color: t.text }, children: file.name }), _jsx("p", { className: "text-xs", style: { color: t.textSecondary }, children: formatFileSize(file.size) })] })] }) }, `${file.name}-${file.size}`));
267
- })] }) })), images.length > 0 && !autoUpload && (_jsxs("div", { className: "mt-10 flex items-center justify-end gap-4", children: [_jsx("button", { onClick: () => {
236
+ return (_jsxs("div", { className: "relative group aspect-square", style: { animation: 'fadeIn 0.2s ease-out', animationDelay: `${index * 30}ms` }, children: [_jsxs("div", { className: "relative w-full h-full overflow-hidden border transition-all duration-200 hover:shadow-md", style: {
237
+ borderRadius: radius,
238
+ borderColor: t.cardBorder,
239
+ backgroundColor: t.cardBg,
240
+ }, children: [state.preview ? (_jsx("img", { src: state.preview, alt: file.name, className: "w-full h-full object-cover" })) : (_jsx("div", { className: "w-full h-full flex items-center justify-center", style: { backgroundColor: t.border }, children: _jsx(ImageIcon, { size: 32, style: { color: t.primary } }) })), _jsx("button", { onClick: () => removeFile(index), className: "absolute top-2 right-2 w-7 h-7 flex items-center justify-center rounded-full opacity-0 group-hover:opacity-100 transition-opacity duration-200", style: {
241
+ backgroundColor: 'rgba(0,0,0,0.7)',
242
+ backdropFilter: 'blur(4px)',
243
+ }, children: _jsx(X, { size: 14, className: "text-white" }) }), isUploading && (_jsx("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx(Loader2, { size: 24, className: "animate-spin text-white mx-auto mb-2" }), _jsxs("p", { className: "text-white text-xs font-medium", children: [state.progress, "%"] })] }) })), isDone && (_jsx("div", { className: "absolute inset-0 bg-black/20 backdrop-blur-sm flex items-center justify-center", children: _jsx("div", { className: "w-12 h-12 bg-green-500 rounded-full flex items-center justify-center", style: {
244
+ boxShadow: '0 4px 12px rgba(34, 197, 94, 0.4)',
245
+ }, children: _jsx("svg", { className: "w-6 h-6 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 3, d: "M5 13l4 4L19 7" }) }) }) }))] }), (showFileName || showFileSize) && (_jsxs("div", { className: "mt-2 space-y-0.5", children: [showFileName && (_jsx("p", { className: "text-xs font-medium truncate", style: { color: t.text }, children: file.name })), showFileSize && (_jsx("p", { className: "text-xs", style: { color: t.textSecondary }, children: formatFileSize(file.size) }))] }))] }, `${file.name}-${file.size}`));
246
+ })] }) })), images.length > 0 && !autoUpload && uploadConfig && (_jsxs("div", { className: "mt-6 flex items-center justify-end gap-3", children: [_jsx("button", { onClick: () => {
268
247
  setImages([]);
269
248
  setRemovedDefaults([]);
270
- }, className: "px-6 py-3 rounded-lg font-medium transition-all duration-300 transform hover:scale-105", style: {
249
+ }, className: "px-4 py-2 text-sm font-medium rounded-md border transition-colors duration-200 hover:bg-opacity-80", style: {
271
250
  backgroundColor: t.cardBg,
272
251
  color: t.text,
273
- border: `2px solid ${t.border}`,
274
- }, children: "Clear All" }), _jsx("button", { onClick: handleAutoUpload, disabled: uploading, className: "px-8 py-3 rounded-lg font-medium text-white transition-all duration-300 transform hover:scale-105 disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2", style: {
275
- background: t.primary,
276
- boxShadow: `0 8px 20px ${t.primary}40`,
277
- }, children: uploading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { size: 20, className: "animate-spin" }), "Uploading..."] })) : (_jsxs(_Fragment, { children: [_jsx(Upload, { size: 20 }), "Upload ", images.length, " ", images.length === 1 ? 'Image' : 'Images'] })) })] })), _jsx("style", { children: `
252
+ borderColor: t.cardBorder,
253
+ }, children: "Clear" }), _jsx("button", { onClick: handleAutoUpload, disabled: uploading, className: "px-4 py-2 text-sm font-medium rounded-md text-white transition-all duration-200 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center gap-2", style: {
254
+ backgroundColor: t.primary,
255
+ }, children: uploading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { size: 16, className: "animate-spin" }), "Uploading..."] })) : (_jsxs(_Fragment, { children: [_jsx(Upload, { size: 16 }), "Upload ", images.length, " ", images.length === 1 ? 'image' : 'images'] })) })] })), _jsx("style", { children: `
278
256
  @keyframes fadeIn {
279
257
  from {
280
258
  opacity: 0;
281
- transform: translateY(10px);
259
+ transform: translateY(4px);
282
260
  }
283
261
  to {
284
262
  opacity: 1;
285
263
  transform: translateY(0);
286
264
  }
287
265
  }
288
-
289
- @keyframes bounce-in {
290
- 0% {
291
- transform: scale(0);
292
- }
293
- 50% {
294
- transform: scale(1.1);
295
- }
296
- 100% {
297
- transform: scale(1);
298
- }
299
- }
300
-
301
- .animate-bounce-in {
302
- animation: bounce-in 0.5s ease-out forwards;
303
- }
304
266
  ` })] }));
305
267
  }
306
268
  //# sourceMappingURL=ImageUploader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUploader.js","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ImageUploader.js","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ultra-image-uploader",
3
- "version": "2.0.4",
4
- "description": "A modern, beautiful React image upload component with ImgBB & Cloudinary support",
3
+ "version": "3.0.0",
4
+ "description": "A modern, shadcn/ui-inspired React image upload component with beautiful themes, drag-and-drop, and smooth animations",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",