ultra-image-uploader 2.0.4 → 3.0.1

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
+ - **5 Built-in Themes** - Nature, Modern, Fresh, Dark (gradient), Ocean (blue gradient)
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 (xs to 2xl), show/hide elements
32
31
 
33
32
  ## Installation
34
33
 
@@ -69,298 +68,454 @@ 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' \| 'dark' \| 'ocean'` | `'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` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| '2xl'` | `'lg'` | 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
- />
124
+ // Nature theme (green) - Default
125
+ <ImageUploader theme="nature" images={images} setImages={setImages} />
112
126
 
113
- // Fresh theme (mint/rose gradient)
114
- <ImageUploader
115
- images={images}
116
- setImages={setImages}
117
- theme="fresh"
118
- />
127
+ // Modern theme (neutral/monochrome)
128
+ <ImageUploader theme="modern" images={images} setImages={setImages} />
119
129
 
120
- // Nature theme (green gradient)
121
- <ImageUploader
122
- images={images}
123
- setImages={setImages}
124
- theme="nature"
125
- />
130
+ // Fresh theme (blue)
131
+ <ImageUploader theme="fresh" images={images} setImages={setImages} />
126
132
 
127
- // Ocean theme (blue gradient)
128
- <ImageUploader
129
- images={images}
130
- setImages={setImages}
131
- theme="ocean"
132
- />
133
+ // Dark theme (dark gradient with blue accent)
134
+ <ImageUploader theme="dark" images={images} setImages={setImages} />
133
135
 
134
- // Sunset theme (orange gradient)
135
- <ImageUploader
136
- images={images}
137
- setImages={setImages}
138
- theme="sunset"
139
- />
136
+ // Ocean theme (blue gradient)
137
+ <ImageUploader theme="ocean" images={images} setImages={setImages} />
140
138
  ```
141
139
 
142
- ### Custom Theme
140
+ ### Upload with ImgBB
143
141
 
144
142
  ```tsx
145
- function CustomThemeExample() {
146
- const [images, setImages] = useState<File[]>([]);
143
+ import { ImageUploader } from "ultra-image-uploader";
147
144
 
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
- };
145
+ function ImgBBUpload() {
146
+ const [images, setImages] = useState<File[]>([]);
162
147
 
163
148
  return (
164
149
  <ImageUploader
165
150
  images={images}
166
151
  setImages={setImages}
167
- customTheme={customTheme}
168
- showThemeSelector={false}
152
+ multiple
153
+ theme="nature"
154
+ uploadConfig={{
155
+ provider: 'imgbb',
156
+ config: { apiKey: process.env.IMGBB_API_KEY! }
157
+ }}
158
+ onUploadComplete={(urls) => {
159
+ console.log('Uploaded URLs:', urls);
160
+ }}
161
+ onUploadError={(error) => {
162
+ console.error('Upload failed:', error.message);
163
+ }}
169
164
  />
170
165
  );
171
166
  }
172
167
  ```
173
168
 
174
- ### Update Mode
169
+ ### Upload with Cloudinary
175
170
 
176
171
  ```tsx
177
- function UpdateExample() {
172
+ function CloudinaryUpload() {
178
173
  const [images, setImages] = useState<File[]>([]);
179
174
 
180
175
  return (
181
176
  <ImageUploader
182
177
  images={images}
183
178
  setImages={setImages}
184
- mode="update"
185
- defaultImages={['https://example.com/image1.jpg', 'https://example.com/image2.jpg']}
186
- theme="ocean"
179
+ multiple
180
+ theme="fresh"
181
+ uploadConfig={{
182
+ provider: 'cloudinary',
183
+ config: {
184
+ cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME!,
185
+ uploadPreset: process.env.NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET!
186
+ }
187
+ }}
188
+ onUploadComplete={(urls) => {
189
+ console.log('Uploaded URLs:', urls);
190
+ }}
187
191
  />
188
192
  );
189
193
  }
190
194
  ```
191
195
 
192
- ### With Upload (ImgBB)
196
+ ### Auto Upload
193
197
 
194
198
  ```tsx
195
- function UploadExample() {
199
+ function AutoUploadExample() {
196
200
  const [images, setImages] = useState<File[]>([]);
197
201
 
198
202
  return (
199
203
  <ImageUploader
200
204
  images={images}
201
205
  setImages={setImages}
202
- multiple
203
- theme="modern"
206
+ autoUpload
204
207
  uploadConfig={{
205
208
  provider: 'imgbb',
206
- config: { apiKey: process.env.IMGBB_API_KEY }
209
+ config: { apiKey: process.env.IMGBB_API_KEY! }
207
210
  }}
208
211
  onUploadComplete={(urls) => {
209
- console.log('Uploaded:', urls);
212
+ // Automatically upload when images are selected
213
+ saveUrlsToDatabase(urls);
210
214
  }}
211
215
  />
212
216
  );
213
217
  }
214
218
  ```
215
219
 
216
- ### Auto Upload
220
+ ### Update Mode (Existing Images)
217
221
 
218
222
  ```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
- />
223
+ function UpdateExample() {
224
+ const [newImages, setNewImages] = useState<File[]>([]);
225
+
226
+ const existingImages = [
227
+ 'https://example.com/image1.jpg',
228
+ 'https://example.com/image2.jpg'
229
+ ];
230
+
231
+ return (
232
+ <ImageUploader
233
+ images={newImages}
234
+ setImages={setNewImages}
235
+ mode="update"
236
+ defaultImages={existingImages}
237
+ theme="modern"
238
+ multiple
239
+ />
240
+ );
241
+ }
232
242
  ```
233
243
 
234
- ### Hide Theme Selector & Image Count
244
+ ### Custom Theme
235
245
 
236
246
  ```tsx
237
- <ImageUploader
238
- images={images}
239
- setImages={setImages}
240
- theme="fresh"
241
- showThemeSelector={false}
242
- showImageCount={false}
243
- />
247
+ import { ImageUploader, type CustomTheme } from "ultra-image-uploader";
248
+
249
+ function CustomThemeExample() {
250
+ const [images, setImages] = useState<File[]>([]);
251
+
252
+ const customTheme: CustomTheme = {
253
+ name: 'MyBrand',
254
+ colors: {
255
+ primary: '#FF6B35',
256
+ primaryHover: '#E55A2B',
257
+ background: '#FFF5F0',
258
+ border: '#FFE5D9',
259
+ text: '#2D3142',
260
+ textSecondary: '#4F5D75',
261
+ cardBg: '#FFFFFF',
262
+ cardBorder: '#FFE5D9',
263
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
264
+ },
265
+ };
266
+
267
+ return (
268
+ <ImageUploader
269
+ images={images}
270
+ setImages={setImages}
271
+ customTheme={customTheme}
272
+ showThemeSelector={false}
273
+ />
274
+ );
275
+ }
244
276
  ```
245
277
 
246
- ## Built-in Themes
278
+ ### Customization Options
247
279
 
248
- The component comes with 5 beautiful themes:
280
+ ```tsx
281
+ function CustomizedExample() {
282
+ const [images, setImages] = useState<File[]>([]);
249
283
 
250
- ### Modern (Purple)
251
- - Gradient: Purple to violet
252
- - Primary: `#6366f1`
253
- - Perfect for modern web apps
284
+ return (
285
+ <ImageUploader
286
+ images={images}
287
+ setImages={setImages}
288
+ // Border radius
289
+ borderRadius="lg"
290
+ // Preview size (affects upload icon)
291
+ previewSize="lg"
292
+ // Container width
293
+ containerClassName="max-w-3xl mx-auto mt-8"
294
+ // Show/hide elements
295
+ showImageCount={true}
296
+ showFileName={true}
297
+ showFileSize={true}
298
+ // Constraints
299
+ multiple={true}
300
+ maxImages={10}
301
+ maxSize={10 * 1024 * 1024} // 10MB
302
+ // Theme
303
+ theme="fresh"
304
+ />
305
+ );
306
+ }
307
+ ```
254
308
 
255
- ### Fresh (Mint/Rose)
256
- - Gradient: Mint to rose
257
- - Primary: `#10b981`
258
- - Fresh and clean look
309
+ ### Single Image Upload
259
310
 
260
- ### Nature (Green)
261
- - Gradient: Lime to emerald
262
- - Primary: `#22c55e`
263
- - Nature-inspired design
311
+ ```tsx
312
+ function SingleImageExample() {
313
+ const [avatar, setAvatar] = useState<File[]>([]);
264
314
 
265
- ### Ocean (Blue)
266
- - Gradient: Blue to purple
267
- - Primary: `#0ea5e9`
268
- - Calm ocean vibes
315
+ return (
316
+ <ImageUploader
317
+ images={avatar}
318
+ setImages={setAvatar}
319
+ multiple={false}
320
+ maxImages={1}
321
+ theme="modern"
322
+ showImageCount={false}
323
+ showFileName={false}
324
+ showFileSize={false}
325
+ />
326
+ );
327
+ }
328
+ ```
269
329
 
270
- ### Sunset (Orange)
271
- - Gradient: Yellow to orange
272
- - Primary: `#f59e0b`
273
- - Warm sunset colors
330
+ ### Product Gallery
274
331
 
275
- ## Animations
332
+ ```tsx
333
+ function ProductGallery() {
334
+ const [productImages, setProductImages] = useState<File[]>([]);
335
+
336
+ const handleUploadComplete = async (urls: string[]) => {
337
+ // Save to database
338
+ await fetch('/api/products/images', {
339
+ method: 'POST',
340
+ headers: { 'Content-Type': 'application/json' },
341
+ body: JSON.stringify({ images: urls }),
342
+ });
343
+ };
276
344
 
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
345
+ return (
346
+ <ImageUploader
347
+ images={productImages}
348
+ setImages={setProductImages}
349
+ multiple={true}
350
+ maxImages={8}
351
+ maxSize={5 * 1024 * 1024} // 5MB
352
+ theme="nature"
353
+ borderRadius="lg"
354
+ uploadConfig={{
355
+ provider: 'cloudinary',
356
+ config: {
357
+ cloudName: process.env.CLOUDINARY_CLOUD_NAME!,
358
+ uploadPreset: 'products'
359
+ }
360
+ }}
361
+ onUploadComplete={handleUploadComplete}
362
+ />
363
+ );
364
+ }
365
+ ```
284
366
 
285
- ## Accessibility
367
+ ## Built-in Themes
286
368
 
287
- - Keyboard accessible (Enter/Space to upload)
288
- - Focus indicators on drag area
289
- - ARIA-compatible markup
290
- - Screen reader friendly
369
+ ### Nature (Green)
370
+ - Soft greens with organic feel
371
+ - Primary: `#16a34a`
372
+ - Background: `#f0fdf4`
373
+ - Perfect for: Nature, health, eco-friendly apps
374
+
375
+ ### Modern (Neutral)
376
+ - Clean monochrome design
377
+ - Primary: `#09090b`
378
+ - Background: `#fafafa`
379
+ - Perfect for: Professional apps, portfolios, dashboards
380
+
381
+ ### Fresh (Blue)
382
+ - Light blue airy design
383
+ - Primary: `#0284c7`
384
+ - Background: `#f0f9ff`
385
+ - Perfect for: Social apps, SaaS, modern web apps
386
+
387
+ ### Dark (Dark Gradient)
388
+ - Dark gradient with blue accent
389
+ - Primary: `#3b82f6`
390
+ - Background: `linear-gradient(135deg, #1e293b 0%, #0f172a 100%)`
391
+ - Perfect for: Dark mode apps, modern interfaces
392
+
393
+ ### Ocean (Blue Gradient)
394
+ - Beautiful blue to purple gradient
395
+ - Primary: `#06b6d4`
396
+ - Background: `linear-gradient(135deg, #0ea5e9 0%, #6366f1 100%)`
397
+ - Perfect for: Creative apps, vibrant interfaces
398
+
399
+ ## Customization
400
+
401
+ ### Border Radius Options
291
402
 
292
- ## Responsive Design
403
+ ```tsx
404
+ borderRadius="none" // 0
405
+ borderRadius="sm" // 0.25rem
406
+ borderRadius="md" // 0.375rem (default)
407
+ borderRadius="lg" // 0.5rem
408
+ borderRadius="full" // 9999px (circular)
409
+ ```
293
410
 
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`
411
+ ### Preview Size Options
300
412
 
301
- ## Upload Functions
413
+ ```tsx
414
+ previewSize="xs" // Extra small (40px)
415
+ previewSize="sm" // Small (48px)
416
+ previewSize="md" // Medium (56px)
417
+ previewSize="lg" // Large (64px) - default
418
+ previewSize="xl" // Extra large (80px)
419
+ previewSize="2xl" // Double extra large (96px)
420
+ ```
421
+
422
+ ### Show/Hide Elements
302
423
 
303
424
  ```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
- });
425
+ <ImageUploader
426
+ showImageCount={false} // Hide image count badge
427
+ showFileName={false} // Hide file names
428
+ showFileSize={false} // Hide file sizes
429
+ />
320
430
  ```
321
431
 
322
- ## API Configuration
432
+ ## Upload Providers
323
433
 
324
434
  ### ImgBB
435
+
325
436
  1. Get API key from [imgbb.com/settings/api](https://imgbb.com/settings/api)
326
- 2. Use `{ provider: 'imgbb', config: { apiKey } }`
437
+ 2. Configure:
438
+
439
+ ```tsx
440
+ uploadConfig={{
441
+ provider: 'imgbb',
442
+ config: { apiKey: 'your-api-key' }
443
+ }}
444
+ ```
327
445
 
328
446
  ### Cloudinary
447
+
329
448
  1. Sign up at [cloudinary.com](https://cloudinary.com)
330
449
  2. Get cloud name and create upload preset
331
- 3. Use `{ provider: 'cloudinary', config: { cloudName, uploadPreset } }`
450
+ 3. Configure:
451
+
452
+ ```tsx
453
+ uploadConfig={{
454
+ provider: 'cloudinary',
455
+ config: {
456
+ cloudName: 'your-cloud-name',
457
+ uploadPreset: 'your-upload-preset'
458
+ }
459
+ }}
460
+ ```
332
461
 
333
462
  ## TypeScript
334
463
 
335
464
  Full TypeScript support:
336
465
 
337
466
  ```tsx
338
- import type { ImageUploaderProps } from "ultra-image-uploader";
339
- import type { Theme } from "ultra-image-uploader";
467
+ import type { ImageUploaderProps, ThemeName, CustomTheme } from "ultra-image-uploader";
340
468
  ```
341
469
 
470
+ ## Animations
471
+
472
+ The component includes smooth, performance-friendly animations:
473
+ - Drag-over state with border color change
474
+ - Fade-in for image previews
475
+ - Hover effects with shadow and scale
476
+ - Progress overlay with backdrop blur
477
+ - Done indicator with checkmark
478
+ - All transitions use CSS transforms for 60fps performance
479
+
480
+ ## Accessibility
481
+
482
+ - Keyboard accessible (Tab to focus, Enter/Space to upload)
483
+ - Focus visible on drag area
484
+ - ARIA-compatible markup
485
+ - Screen reader friendly
486
+ - Semantic HTML structure
487
+
488
+ ## Responsive Design
489
+
490
+ The grid layout adapts to screen sizes:
491
+ - Mobile (2 columns): 320px+
492
+ - Tablet (3 columns): 640px+
493
+ - Desktop (4 columns): 768px+
494
+ - Wide (5 columns): 1024px+
495
+ - Default container: `max-w-5xl mx-auto mt-10`
496
+
342
497
  ## Browser Support
343
498
 
344
499
  - Chrome/Edge (latest)
345
500
  - Firefox (latest)
346
501
  - Safari (latest)
347
- - Mobile browsers
502
+ - Mobile browsers (iOS Safari, Chrome Mobile)
348
503
 
349
504
  ## Troubleshooting
350
505
 
351
506
  ### 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
507
+ - Restart TypeScript server in your editor (Cmd+Shift+P > "Restart TypeScript Server")
508
+ - Ensure `node_modules` exists (`npm install`)
358
509
 
359
510
  ### Images not uploading
360
- - Verify API credentials
511
+ - Verify API credentials in environment variables
361
512
  - Check browser console for errors
362
513
  - Ensure CORS is configured for your upload provider
363
514
 
515
+ ### Theme not applying
516
+ - Check that theme name matches: `'nature'` | `'modern'` | `'fresh'`
517
+ - For custom themes, verify the structure matches `CustomTheme` type
518
+
364
519
  ## License
365
520
 
366
521
  MIT © Digontha Das
@@ -1,6 +1,6 @@
1
1
  import type { UploadProvider, ProviderConfig } from '../types';
2
2
  export declare const themes: {
3
- modern: {
3
+ nature: {
4
4
  name: string;
5
5
  colors: {
6
6
  primary: string;
@@ -14,7 +14,7 @@ export declare const themes: {
14
14
  shadow: string;
15
15
  };
16
16
  };
17
- fresh: {
17
+ modern: {
18
18
  name: string;
19
19
  colors: {
20
20
  primary: string;
@@ -28,7 +28,7 @@ export declare const themes: {
28
28
  shadow: string;
29
29
  };
30
30
  };
31
- nature: {
31
+ fresh: {
32
32
  name: string;
33
33
  colors: {
34
34
  primary: string;
@@ -42,7 +42,7 @@ export declare const themes: {
42
42
  shadow: string;
43
43
  };
44
44
  };
45
- ocean: {
45
+ dark: {
46
46
  name: string;
47
47
  colors: {
48
48
  primary: string;
@@ -56,7 +56,7 @@ export declare const themes: {
56
56
  shadow: string;
57
57
  };
58
58
  };
59
- sunset: {
59
+ ocean: {
60
60
  name: string;
61
61
  colors: {
62
62
  primary: string;
@@ -71,6 +71,8 @@ export declare const themes: {
71
71
  };
72
72
  };
73
73
  };
74
+ export type ThemeName = keyof typeof themes;
75
+ export type CustomTheme = typeof themes[ThemeName];
74
76
  export interface ImageUploaderProps {
75
77
  images: File[];
76
78
  setImages: (images: File[]) => void;
@@ -80,19 +82,23 @@ export interface ImageUploaderProps {
80
82
  maxSize?: number;
81
83
  allowedTypes?: string[];
82
84
  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
85
  uploadConfig?: {
93
86
  provider: UploadProvider;
94
87
  config: ProviderConfig;
95
88
  };
89
+ autoUpload?: boolean;
90
+ onUploadComplete?: (urls: string[]) => void;
91
+ onUploadError?: (error: Error) => void;
92
+ theme?: ThemeName;
93
+ customTheme?: CustomTheme;
94
+ showThemeSelector?: boolean;
95
+ previewSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
96
+ borderRadius?: 'none' | 'sm' | 'md' | 'lg' | 'full';
97
+ className?: string;
98
+ containerClassName?: string;
99
+ showImageCount?: boolean;
100
+ showFileSize?: boolean;
101
+ showFileName?: boolean;
96
102
  }
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;
103
+ 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
104
  //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuElB,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,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IACvD,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,2CAoepB"}
@@ -1,83 +1,90 @@
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
+ nature: {
10
+ name: 'Nature',
11
+ colors: {
12
+ primary: '#16a34a',
13
+ primaryHover: '#15803d',
14
+ background: '#f0fdf4',
15
+ border: '#bbf7d0',
16
+ text: '#14532d',
17
+ textSecondary: '#166534',
18
+ cardBg: '#ffffff',
19
+ cardBorder: '#dcfce7',
20
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
21
+ },
22
+ },
9
23
  modern: {
10
24
  name: 'Modern',
11
25
  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',
26
+ primary: '#09090b',
27
+ primaryHover: '#18181b',
28
+ background: '#fafafa',
29
+ border: '#e4e4e7',
30
+ text: '#18181b',
31
+ textSecondary: '#71717a',
18
32
  cardBg: '#ffffff',
19
- cardBorder: '#f3f4f6',
20
- shadow: '0 10px 40px rgba(0,0,0,0.1)',
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)',
21
35
  },
22
36
  },
23
37
  fresh: {
24
38
  name: 'Fresh',
25
39
  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',
40
+ primary: '#0284c7',
41
+ primaryHover: '#0369a1',
42
+ background: '#f0f9ff',
43
+ border: '#bae6fd',
44
+ text: '#0c4a6e',
45
+ textSecondary: '#075985',
32
46
  cardBg: '#ffffff',
33
- cardBorder: '#ecfdf5',
34
- shadow: '0 8px 30px rgba(16, 185, 129, 0.15).',
47
+ cardBorder: '#e0f2fe',
48
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',
35
49
  },
36
50
  },
37
- nature: {
38
- name: 'Nature',
51
+ dark: {
52
+ name: 'Dark',
39
53
  colors: {
40
- primary: '#22c55e',
41
- primaryHover: '#16a34a',
42
- background: 'linear-gradient(135deg, #d4fc79 0%, #96e6a1 100%)',
43
- border: '#bbf7d0',
44
- text: '#14532d',
45
- textSecondary: '#166534',
46
- cardBg: '#f0fdf4',
47
- cardBorder: '#dcfce7',
48
- shadow: '0 12px 35px rgba(34, 197, 94, 0.15).',
54
+ primary: '#3b82f6',
55
+ primaryHover: '#2563eb',
56
+ background: 'linear-gradient(135deg, #1e293b 0%, #0f172a 100%)',
57
+ border: '#334155',
58
+ text: '#f8fafc',
59
+ textSecondary: '#94a3b8',
60
+ cardBg: '#1e293b',
61
+ cardBorder: '#334155',
62
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.5), 0 1px 2px -1px rgb(0 0 0 / 0.3)',
49
63
  },
50
64
  },
51
65
  ocean: {
52
66
  name: 'Ocean',
53
67
  colors: {
54
- primary: '#0ea5e9',
55
- primaryHover: '#0284c7',
56
- background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
57
- border: '#bae6fd',
58
- text: '#0c4a6e',
59
- textSecondary: '#075985',
60
- cardBg: '#f0f9ff',
61
- 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).',
68
+ primary: '#06b6d4',
69
+ primaryHover: '#0891b2',
70
+ background: 'linear-gradient(135deg, #0ea5e9 0%, #6366f1 100%)',
71
+ border: '#7dd3fc',
72
+ text: '#f0f9ff',
73
+ textSecondary: '#bae6fd',
74
+ cardBg: '#0c4a6e',
75
+ cardBorder: '#0369a1',
76
+ shadow: '0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.2)',
77
77
  },
78
78
  },
79
79
  };
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, }) {
80
+ const borderRadiusMap = {
81
+ none: '0',
82
+ sm: '0.25rem',
83
+ md: '0.375rem',
84
+ lg: '0.5rem',
85
+ full: '9999px',
86
+ };
87
+ 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 = 'lg', borderRadius = 'md', className = '', containerClassName = 'max-w-5xl mx-auto mt-10', showImageCount = true, showFileSize = true, showFileName = true, }) {
81
88
  const [selectedTheme, setSelectedTheme] = useState(theme);
82
89
  const [isDragging, setIsDragging] = useState(false);
83
90
  const [fileStates, setFileStates] = useState(new Map());
@@ -87,6 +94,7 @@ export function ImageUploader({ images, setImages, mode = 'add', defaultImages =
87
94
  const dragCounter = useRef(0);
88
95
  const currentTheme = customTheme || themes[selectedTheme];
89
96
  const t = currentTheme.colors;
97
+ const radius = borderRadiusMap[borderRadius];
90
98
  // Generate previews
91
99
  useEffect(() => {
92
100
  const newStates = new Map();
@@ -225,82 +233,78 @@ export function ImageUploader({ images, setImages, mode = 'add', defaultImages =
225
233
  const key = `${file.name}-${file.size}`;
226
234
  return fileStates.get(key) || { ...file, progress: 0, status: 'pending' };
227
235
  };
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,
236
+ 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: {
237
+ backgroundColor: t.cardBg,
238
+ borderColor: t.cardBorder,
239
+ color: t.text,
240
+ }, 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: {
241
+ backgroundColor: selectedTheme === key ? t.cardBg : 'transparent',
242
+ color: selectedTheme === key ? t.text : t.textSecondary,
243
+ }, children: themes[key].name }, key))) })), _jsxs("div", { role: "button", tabIndex: 0, "aria-label": "Upload images", className: "relative group cursor-pointer overflow-hidden transition-all duration-200", style: {
244
+ borderRadius: radius,
245
+ border: `2px dashed ${isDragging ? t.primary : t.cardBorder}`,
246
+ backgroundColor: t.background,
247
+ }, onClick: () => fileInputRef.current?.click(), onKeyDown: (e) => {
248
+ if (e.key === 'Enter' || e.key === ' ') {
249
+ e.preventDefault();
250
+ fileInputRef.current?.click();
251
+ }
252
+ }, 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: {
253
+ zIndex: 10,
254
+ width: '0.1px',
255
+ height: '0.1px',
256
+ padding: 0,
257
+ margin: 0,
258
+ overflow: 'hidden',
259
+ clip: 'rect(0, 0, 0, 0)',
260
+ whiteSpace: 'nowrap',
261
+ }, tabIndex: -1 }), _jsxs("div", { className: "flex flex-col items-center justify-center p-8", 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: {
262
+ width: previewSize === '2xl' ? '96px' : previewSize === 'xl' ? '80px' : previewSize === 'lg' ? '64px' : previewSize === 'md' ? '56px' : previewSize === 'sm' ? '48px' : '40px',
263
+ height: previewSize === '2xl' ? '96px' : previewSize === 'xl' ? '80px' : previewSize === 'lg' ? '64px' : previewSize === 'md' ? '56px' : previewSize === 'sm' ? '48px' : '40px',
264
+ backgroundColor: t.cardBg,
265
+ border: `1px solid ${t.cardBorder}`,
266
+ }, children: _jsx(ImageIcon, { size: 24 }) }) }), _jsx("div", { className: "text-center space-y-1", children: _jsx("p", { className: "text-sm font-medium", style: { color: t.text }, children: isDragging ? 'Drop here' : 'Click or drop to upload' }) })] })] }), (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' &&
267
+ 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: {
268
+ borderRadius: radius,
269
+ borderColor: t.cardBorder,
251
270
  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) => {
271
+ }, 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: {
272
+ backgroundColor: 'rgba(0,0,0,0.7)',
273
+ backdropFilter: 'blur(4px)',
274
+ }, children: _jsx(X, { size: 14, className: "text-white" }) })] }) }, `default-${index}`))), images.map((file, index) => {
255
275
  const state = getFileState(file);
256
276
  const isUploading = state.status === 'uploading';
257
277
  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: () => {
278
+ 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: {
279
+ borderRadius: radius,
280
+ borderColor: t.cardBorder,
281
+ backgroundColor: t.cardBg,
282
+ }, 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: {
283
+ backgroundColor: 'rgba(0,0,0,0.7)',
284
+ backdropFilter: 'blur(4px)',
285
+ }, 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: {
286
+ boxShadow: '0 4px 12px rgba(34, 197, 94, 0.4)',
287
+ }, 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}`));
288
+ })] }) })), images.length > 0 && !autoUpload && uploadConfig && (_jsxs("div", { className: "mt-6 flex items-center justify-end gap-3", children: [_jsx("button", { onClick: () => {
268
289
  setImages([]);
269
290
  setRemovedDefaults([]);
270
- }, className: "px-6 py-3 rounded-lg font-medium transition-all duration-300 transform hover:scale-105", style: {
291
+ }, className: "px-4 py-2 text-sm font-medium rounded-md border transition-colors duration-200 hover:bg-opacity-80", style: {
271
292
  backgroundColor: t.cardBg,
272
293
  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: `
294
+ borderColor: t.cardBorder,
295
+ }, 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: {
296
+ backgroundColor: t.primary,
297
+ }, 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
298
  @keyframes fadeIn {
279
299
  from {
280
300
  opacity: 0;
281
- transform: translateY(10px);
301
+ transform: translateY(4px);
282
302
  }
283
303
  to {
284
304
  opacity: 1;
285
305
  transform: translateY(0);
286
306
  }
287
307
  }
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
308
  ` })] }));
305
309
  }
306
310
  //# 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.1",
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",