ultra-image-uploader 2.0.1 → 2.0.3

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, beautiful React image upload component with progress tracking, drag-and-drop, and multi-provider support.
5
+ A modern, fancy React image upload component with responsive grid layout, drag-and-drop reordering, and beautiful 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** • **Progress Bars** • **ImgBB & Cloudinary** • **Auto Import Ready**
11
+ **Modern UI** • **Dark/Light Themes** • **Grid Layout** • **Drag Reorder**
12
12
 
13
13
  </div>
14
14
 
@@ -16,20 +16,21 @@ A modern, beautiful React image upload component with progress tracking, drag-an
16
16
 
17
17
  ## Features
18
18
 
19
- - **Modern UI** - Clean, professional file upload interface matching industry standards
20
- - **Progress Tracking** - Real-time upload progress with smooth animations
21
- - **Drag & Drop** - Intuitive drag-and-drop file handling
22
- - **Multiple Providers** - Built-in support for ImgBB and Cloudinary
23
- - **File Validation** - Type and size validation with helpful error messages
24
- - **Auto Upload** - Optional automatic upload on file selection
25
- - **Cancel/Remove** - Easy file management with cancel buttons
26
- - **TypeScript** - Fully typed for excellent DX
27
- - **Auto Import** - Works seamlessly with VS Code, WebStorm, and all popular editors
19
+ - **Modern UI** - Beautiful card-based design with shadows and rounded corners
20
+ - **Responsive Grid** - Adaptive grid layout (2-6 columns) for all screen sizes
21
+ - **Drag & Drop** - Upload files by dragging or clicking
22
+ - **Live Previews** - Instant image thumbnails with metadata
23
+ - **Drag Reorder** - Rearrange images by dragging
24
+ - **Progress Tracking** - Real-time upload progress with animations
25
+ - **Theme Support** - Built-in light/dark theme toggle
26
+ - **Smooth Animations** - Hover effects, fade transitions, scale animations
27
+ - **Keyboard Accessible** - Full keyboard navigation support
28
+ - **File Validation** - Size and type validation
29
+ - **Multiple Providers** - ImgBB & Cloudinary support
30
+ - **Auto Import** - Works with VS Code, WebStorm, and all editors
28
31
 
29
32
  ## Installation
30
33
 
31
- Install with any package manager:
32
-
33
34
  ```bash
34
35
  # npm
35
36
  npm install ultra-image-uploader
@@ -58,74 +59,101 @@ function App() {
58
59
  images={images}
59
60
  setImages={setImages}
60
61
  multiple
62
+ gridCols={4}
61
63
  />
62
64
  );
63
65
  }
64
66
  ```
65
67
 
66
- ## Usage Examples
67
-
68
- ### Basic File Upload
68
+ ## Props
69
69
 
70
- ```tsx
71
- import { ImageUploader } from "ultra-image-uploader";
70
+ | Prop | Type | Default | Description |
71
+ |------|------|---------|-------------|
72
+ | `images` | `File[]` | **Required** | Selected image files |
73
+ | `setImages` | `(files: File[]) => void` | **Required** | Update images state |
74
+ | `multiple` | `boolean` | `true` | Allow multiple files |
75
+ | `maxSize` | `number` | `52428800` | Max file size (50MB) |
76
+ | `allowedTypes` | `string[]` | Image types | Allowed MIME types |
77
+ | `maxImages` | `number` | `20` | Maximum images allowed |
78
+ | `theme` | `'light' \| 'dark'` | `undefined` | Theme (uses internal if not set) |
79
+ | `onThemeChange` | `(theme) => void` | `undefined` | Theme change callback |
80
+ | `showThemeToggle` | `boolean` | `true` | Show theme toggle button |
81
+ | `showImageCount` | `boolean` | `true` | Show image count header |
82
+ | `enableReorder` | `boolean` | `true` | Enable drag reordering |
83
+ | `gridCols` | `number` | `4` | Grid columns (2-6) |
84
+ | `cardClassName` | `string` | `''` | Custom card class |
85
+ | `containerClassName` | `string` | `'max-w-5xl mx-auto'` | Container styling |
86
+ | `uploadText` | `string` | `'Click or drag...'` | Upload area text |
87
+ | `dragText` | `string` | `'Drop images here'` | Drag over text |
88
+ | `autoUpload` | `boolean` | `false` | Auto-upload on selection |
89
+ | `uploadConfig` | `{ provider, config }` | `undefined` | Upload configuration |
90
+ | `onUploadComplete` | `(urls: string[]) => void` | `undefined` | Success callback |
91
+ | `onUploadError` | `(error: Error) => void` | `undefined` | Error callback |
72
92
 
73
- function BasicUpload() {
74
- const [images, setImages] = useState<File[]>([]);
93
+ ## Examples
75
94
 
76
- const handleUploadComplete = (urls: string[]) => {
77
- console.log('Uploaded URLs:', urls);
78
- };
95
+ ### Basic Grid Layout
79
96
 
80
- return (
81
- <ImageUploader
82
- images={images}
83
- setImages={setImages}
84
- multiple
85
- maxSize={50 * 1024 * 1024} // 50MB
86
- onUploadComplete={handleUploadComplete}
87
- uploadConfig={{
88
- provider: 'imgbb',
89
- config: { apiKey: 'your-api-key' }
90
- }}
91
- />
92
- );
93
- }
97
+ ```tsx
98
+ <ImageUploader
99
+ images={images}
100
+ setImages={setImages}
101
+ multiple
102
+ gridCols={4}
103
+ />
94
104
  ```
95
105
 
96
- ### Upload with ImgBB
106
+ ### Dark Theme
97
107
 
98
108
  ```tsx
99
- import { ImageUploader } from "ultra-image-uploader";
100
-
101
- function ImgBBUpload() {
109
+ function DarkExample() {
110
+ const [theme, setTheme] = useState<'light' | 'dark'>('dark');
102
111
  const [images, setImages] = useState<File[]>([]);
103
112
 
104
113
  return (
105
- <div>
114
+ <div className={theme === 'dark' ? 'dark' : ''}>
106
115
  <ImageUploader
107
116
  images={images}
108
117
  setImages={setImages}
118
+ theme={theme}
119
+ onThemeChange={setTheme}
109
120
  multiple
110
- uploadConfig={{
111
- provider: 'imgbb',
112
- config: { apiKey: process.env.IMGBB_API_KEY }
113
- }}
114
- onUploadComplete={(urls) => {
115
- console.log('Images uploaded to ImgBB:', urls);
116
- }}
121
+ gridCols={3}
117
122
  />
118
123
  </div>
119
124
  );
120
125
  }
121
126
  ```
122
127
 
123
- ### Upload with Cloudinary
128
+ ### Custom Grid & Styling
124
129
 
125
130
  ```tsx
126
- import { ImageUploader } from "ultra-image-uploader";
131
+ <ImageUploader
132
+ images={images}
133
+ setImages={setImages}
134
+ gridCols={3}
135
+ maxImages={10}
136
+ maxSize={10 * 1024 * 1024}
137
+ containerClassName="max-w-4xl mx-auto"
138
+ cardClassName="border-2"
139
+ />
140
+ ```
127
141
 
128
- function CloudinaryUpload() {
142
+ ### Without Reordering
143
+
144
+ ```tsx
145
+ <ImageUploader
146
+ images={images}
147
+ setImages={setImages}
148
+ enableReorder={false}
149
+ gridCols={5}
150
+ />
151
+ ```
152
+
153
+ ### With Upload (ImgBB)
154
+
155
+ ```tsx
156
+ function UploadExample() {
129
157
  const [images, setImages] = useState<File[]>([]);
130
158
 
131
159
  return (
@@ -133,65 +161,73 @@ function CloudinaryUpload() {
133
161
  images={images}
134
162
  setImages={setImages}
135
163
  multiple
164
+ gridCols={4}
136
165
  uploadConfig={{
137
- provider: 'cloudinary',
138
- config: {
139
- cloudName: 'your-cloud-name',
140
- uploadPreset: 'your-upload-preset'
141
- }
166
+ provider: 'imgbb',
167
+ config: { apiKey: process.env.IMGBB_API_KEY }
142
168
  }}
143
169
  onUploadComplete={(urls) => {
144
- console.log('Images uploaded to Cloudinary:', urls);
170
+ console.log('Uploaded:', urls);
145
171
  }}
146
172
  />
147
173
  );
148
174
  }
149
175
  ```
150
176
 
151
- ### Auto Upload Mode
177
+ ### Responsive Grid
178
+
179
+ ```tsx
180
+ // 2 columns on mobile, 4 on desktop
181
+ <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
182
+ <ImageUploader images={images} setImages={setImages} gridCols={1} />
183
+ </div>
184
+ ```
185
+
186
+ ## Theme Support
187
+
188
+ The component includes built-in light and dark themes:
152
189
 
153
190
  ```tsx
191
+ // Controlled theme
154
192
  <ImageUploader
155
193
  images={images}
156
194
  setImages={setImages}
157
- multiple
158
- autoUpload
159
- uploadConfig={{
160
- provider: 'imgbb',
161
- config: { apiKey: 'your-api-key' }
162
- }}
195
+ theme="dark"
196
+ showThemeToggle={false}
163
197
  />
164
- ```
165
-
166
- ### Single File Upload
167
198
 
168
- ```tsx
199
+ // Uncontrolled theme (with toggle)
169
200
  <ImageUploader
170
- images={avatar}
171
- setImages={setAvatar}
172
- multiple={false}
173
- maxSize={2 * 1024 * 1024} // 2MB
201
+ images={images}
202
+ setImages={setImages}
203
+ showThemeToggle={true}
174
204
  />
175
205
  ```
176
206
 
177
- ## Component Props
207
+ ## Animations
178
208
 
179
- | Prop | Type | Default | Description |
180
- |------|------|---------|-------------|
181
- | `images` | `File[]` | **Required** | Selected image files |
182
- | `setImages` | `(files: File[]) => void` | **Required** | Update images state |
183
- | `multiple` | `boolean` | `true` | Allow multiple file selection |
184
- | `maxSize` | `number` | `52428800` | Max file size in bytes (50MB) |
185
- | `allowedTypes` | `string[]` | Image types | Allowed MIME types |
186
- | `className` | `string` | `''` | Extra CSS classes |
187
- | `autoUpload` | `boolean` | `false` | Auto-upload on selection |
188
- | `uploadConfig` | `{ provider, config }` | `undefined` | Upload configuration |
189
- | `onUploadComplete` | `(urls: string[]) => void` | `undefined` | Upload success callback |
190
- | `onUploadError` | `(error: Error) => void` | `undefined` | Upload error callback |
209
+ The component includes smooth animations:
210
+ - Scale effect on drag over
211
+ - Fade-in/out for previews
212
+ - Hover scale on image cards
213
+ - Smooth progress bar transitions
214
+ - Button hover effects
191
215
 
192
- ## Upload Functions
216
+ ## Accessibility
217
+
218
+ - Keyboard accessible (Enter/Space to upload)
219
+ - Focus indicators on drag area
220
+ - ARIA-compatible markup
221
+ - Screen reader friendly
222
+
223
+ ## Responsive Design
193
224
 
194
- You can also use the upload functions directly:
225
+ The grid layout adapts to screen sizes:
226
+ - Default: `max-w-5xl mx-auto` container
227
+ - Configurable grid columns (2-6)
228
+ - Works on mobile, tablet, and desktop
229
+
230
+ ## Upload Functions
195
231
 
196
232
  ```tsx
197
233
  import {
@@ -201,137 +237,66 @@ import {
201
237
  uploadImagesToCloudinary
202
238
  } from "ultra-image-uploader";
203
239
 
204
- // Upload single image
205
- const result = await uploadImage(file, 'imgbb', { apiKey: 'key' });
240
+ // Upload with progress
241
+ const result = await uploadImage(file, 'imgbb', { apiKey }, {
242
+ onProgress: (p) => console.log(p.percentage)
243
+ });
206
244
 
207
- // Upload multiple images
245
+ // Multiple uploads
208
246
  const results = await uploadImages(files, 'cloudinary', {
209
247
  cloudName: 'your-cloud'
210
248
  });
211
-
212
- // Convenience functions
213
- const { urls } = await uploadImagesToImageBB(images, apiKey);
214
- const uploads = await uploadImagesToCloudinary(images, config);
215
249
  ```
216
250
 
217
251
  ## API Configuration
218
252
 
219
253
  ### ImgBB
220
-
221
- 1. Go to [imgbb.com/settings/api](https://imgbb.com/settings/api)
222
- 2. Copy your API key
223
- 3. Use in the component:
224
-
225
- ```tsx
226
- uploadConfig={{
227
- provider: 'imgbb',
228
- config: { apiKey: 'your-api-key' }
229
- }}
230
- ```
254
+ 1. Get API key from [imgbb.com/settings/api](https://imgbb.com/settings/api)
255
+ 2. Use `{ provider: 'imgbb', config: { apiKey } }`
231
256
 
232
257
  ### Cloudinary
233
-
234
258
  1. Sign up at [cloudinary.com](https://cloudinary.com)
235
- 2. Get your **cloud name** from dashboard
236
- 3. Create an **upload preset** (Settings Upload Upload presets)
237
- 4. Use in the component:
238
-
239
- ```tsx
240
- uploadConfig={{
241
- provider: 'cloudinary',
242
- config: {
243
- cloudName: 'your-cloud-name',
244
- uploadPreset: 'your-upload-preset'
245
- }
246
- }}
247
- ```
259
+ 2. Get cloud name and create upload preset
260
+ 3. Use `{ provider: 'cloudinary', config: { cloudName, uploadPreset } }`
248
261
 
249
- ## TypeScript
262
+ ## Customization
250
263
 
251
- All exports are fully typed:
264
+ ### Card Styling
252
265
 
253
266
  ```tsx
254
- import type {
255
- ImageUploaderProps,
256
- UploadProvider,
257
- UploadResult,
258
- ProviderConfig,
259
- UploadOptions
260
- } from "ultra-image-uploader";
267
+ <ImageUploader
268
+ images={images}
269
+ setImages={setImages}
270
+ cardClassName="border-2 border-purple-500"
271
+ />
261
272
  ```
262
273
 
263
- ## Auto Import Support
264
-
265
- This package supports auto-import in all major editors:
266
-
267
- - **VS Code** - Auto-suggestions work out of the box
268
- - **WebStorm** - Full IntelliSense support
269
- - **Neovim** - Works with LSP and completion plugins
270
- - **Sublime Text** - Works with LSP packages
271
- - **All TypeScript editors** - Full type checking and suggestions
272
-
273
- ## Styling
274
-
275
- The component uses Tailwind CSS classes. You can add custom styling:
274
+ ### Container Size
276
275
 
277
276
  ```tsx
278
277
  <ImageUploader
279
278
  images={images}
280
279
  setImages={setImages}
281
- className="max-w-2xl mx-auto"
280
+ containerClassName="max-w-7xl mx-auto"
282
281
  />
283
282
  ```
284
283
 
285
- ### Custom Styling
286
-
287
- For complete customization, you can wrap and override styles:
284
+ ### Grid Columns
288
285
 
289
286
  ```tsx
290
- <div className="your-custom-wrapper">
291
- <ImageUploader
292
- images={images}
293
- setImages={setImages}
294
- className="your-custom-class"
295
- />
296
- </div>
297
- ```
298
-
299
- ## Troubleshooting
300
-
301
- ### Auto imports not working
302
-
303
- **VS Code:**
304
- 1. Ensure TypeScript is enabled in your project
305
- 2. Restart the TypeScript server: `Cmd/Ctrl + Shift + P` → "TypeScript: Restart TS Server"
306
- 3. Check that `node_modules/ultra-image-uploader` exists
307
-
308
- **WebStorm:**
309
- 1. Invalidate caches: `File` → `Invalidate Caches and Restart`
310
- 2. Ensure TypeScript plugin is enabled
311
-
312
- ### Uploads failing
287
+ // 2 columns
288
+ <ImageUploader gridCols={2} />
313
289
 
314
- 1. **Check API keys** - Verify your ImgBB or Cloudinary credentials
315
- 2. **CORS issues** - Ensure your domain is whitelisted
316
- 3. **File size** - Check if file exceeds provider limits
317
- 4. **Network** - Check browser console for network errors
318
-
319
- ### TypeScript errors
320
-
321
- ```bash
322
- # Reinstall dependencies
323
- rm -rf node_modules package-lock.json
324
- npm install
325
-
326
- # Restart TypeScript server in your editor
290
+ // 6 columns
291
+ <ImageUploader gridCols={6} />
327
292
  ```
328
293
 
329
- ### Build issues
294
+ ## TypeScript
330
295
 
331
- ```bash
332
- # Clean and rebuild
333
- npm run clean
334
- npm run build
296
+ Full TypeScript support:
297
+
298
+ ```tsx
299
+ import type { ImageUploaderProps } from "ultra-image-uploader";
335
300
  ```
336
301
 
337
302
  ## Browser Support
@@ -339,12 +304,21 @@ npm run build
339
304
  - Chrome/Edge (latest)
340
305
  - Firefox (latest)
341
306
  - Safari (latest)
342
- - Mobile browsers (iOS Safari, Chrome Mobile)
307
+ - Mobile browsers
308
+
309
+ ## Troubleshooting
343
310
 
344
- ## Requirements
311
+ ### Auto imports not working
312
+ - Restart TypeScript server in your editor
313
+ - Ensure `node_modules` exists
345
314
 
346
- - React >= 18.0.0
347
- - TypeScript (optional but recommended)
315
+ ### Theme not applying
316
+ - Wrap parent div with `dark` class for dark mode
317
+ - Check Tailwind CSS dark mode config
318
+
319
+ ### Grid not responsive
320
+ - Adjust `gridCols` prop for different breakpoints
321
+ - Use wrapper with responsive classes
348
322
 
349
323
  ## License
350
324
 
@@ -354,16 +328,7 @@ MIT © Digontha Das
354
328
 
355
329
  - [GitHub](https://github.com/digontha/ultra-image-uploader)
356
330
  - [NPM](https://www.npmjs.com/package/ultra-image-uploader)
357
- - [Report Issues](https://github.com/digontha/ultra-image-uploader/issues)
358
-
359
- ## Changelog
360
-
361
- ### v2.0.0
362
- - 🎨 Modern UI redesign with progress bars
363
- - ✅ Auto import support for all editors
364
- - 📦 Simplified package structure
365
- - 🚀 Improved drag-and-drop experience
366
- - 🎯 Better TypeScript support
331
+ - [Issues](https://github.com/digontha/ultra-image-uploader/issues)
367
332
 
368
333
  ---
369
334
 
@@ -5,7 +5,6 @@ export interface ImageUploaderProps {
5
5
  multiple?: boolean;
6
6
  maxSize?: number;
7
7
  allowedTypes?: string[];
8
- uploadText?: string;
9
8
  className?: string;
10
9
  onUploadComplete?: (urls: string[]) => void;
11
10
  onUploadError?: (error: Error) => void;
@@ -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;AAI/D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,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;AAQD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,QAAe,EACf,OAA0B,EAC1B,YAAkF,EAClF,SAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAkB,EAClB,YAAY,GACb,EAAE,kBAAkB,2CA0SpB"}
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;AAI/D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,IAAI,EAAE,CAAC;IACf,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IACpC,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,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;AAQD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,QAAe,EACf,OAA0B,EAC1B,YAAkF,EAClF,SAAc,EACd,gBAAgB,EAChB,aAAa,EACb,UAAkB,EAClB,YAAY,GACb,EAAE,kBAAkB,2CA8SpB"}
@@ -147,14 +147,14 @@ export function ImageUploader({ images, setImages, multiple = true, maxSize = 50
147
147
  return (_jsxs("div", { className: `image-uploader ${className}`, children: [_jsxs("div", { className: "relative border-2 border-dashed border-gray-300 rounded-lg p-12 transition-colors duration-200", style: {
148
148
  borderColor: isDragging ? '#1E88E5' : undefined,
149
149
  backgroundColor: isDragging ? '#F5F5F5' : 'white',
150
- }, 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" }), _jsxs("div", { className: "flex flex-col items-center justify-center", children: [_jsxs("div", { className: "relative mb-4", children: [_jsx("div", { className: "w-16 h-16 rounded-full border-2 border-gray-300 flex items-center justify-center bg-white", children: _jsx(FileText, { size: 32, className: "text-gray-400" }) }), _jsx("div", { className: "absolute -bottom-1 -right-1 w-8 h-8 bg-gray-800 rounded-full flex items-center justify-center", children: _jsx(Upload, { size: 16, className: "text-white" }) })] }), _jsxs("p", { className: "text-base text-gray-700 mb-2", children: [_jsx("span", { className: "underline decoration-1 underline-offset-2 cursor-pointer hover:text-gray-900", children: "Click to upload" }), ' ', "or drag and drop"] }), _jsxs("p", { className: "text-sm text-gray-500", children: ["Maximum file size ", formatFileSize(maxSize)] })] })] }), images.length > 0 && (_jsx("div", { className: "mt-6 space-y-4", children: images.map((file) => {
150
+ }, 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" }), _jsxs("div", { className: "flex flex-col items-center justify-center", children: [_jsxs("div", { className: "relative mb-4", children: [_jsx("div", { className: "w-16 h-16 rounded-full border-2 border-gray-300 flex items-center justify-center bg-white", children: _jsx(FileText, { size: 32, className: "text-gray-400" }) }), _jsx("div", { className: "absolute -bottom-1 -right-1 w-8 h-8 bg-gray-800 rounded-full flex items-center justify-center", children: _jsx(Upload, { size: 16, className: "text-white" }) })] }), _jsxs("p", { className: "text-base text-gray-700 mb-2", children: [_jsx("span", { className: "underline decoration-1 underline-offset-2 cursor-pointer hover:text-gray-900", children: "Click to upload" }), ' ', "or drag and drop"] }), _jsxs("p", { className: "text-sm text-gray-500", children: ["Maximum file size ", formatFileSize(maxSize)] })] })] }), images.length > 0 && (_jsx("div", { className: "mt-6 grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4", children: images.map((file) => {
151
151
  const state = getFileState(file);
152
152
  const isUploading = state.status === 'uploading';
153
153
  const isDone = state.status === 'done';
154
- return (_jsx("div", { className: "border border-gray-300 rounded-lg p-4 transition-all duration-200 hover:border-gray-400", children: _jsxs("div", { className: "flex items-start gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded bg-gray-100 flex items-center justify-center flex-shrink-0", children: _jsx(FileText, { size: 20, className: "text-gray-500" }) }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: "text-sm font-medium text-gray-900 truncate", children: file.name }), _jsx("p", { className: "text-sm text-gray-500", children: formatFileSize(file.size) }), isUploading || isDone ? (_jsx("div", { className: "mt-3", children: _jsxs("div", { className: "flex items-center justify-between mb-1", children: [_jsx("div", { className: "flex-1 mr-4", children: _jsx("div", { className: "w-full bg-gray-200 rounded-full h-1.5", children: _jsx("div", { className: "bg-gray-900 h-1.5 rounded-full transition-all duration-300", style: { width: `${state.progress || 0}%` } }) }) }), _jsxs("span", { className: "text-sm text-gray-700 font-medium", children: [state.progress || 0, "%"] })] }) })) : null] }), _jsx("button", { onClick: (e) => {
155
- e.stopPropagation();
156
- removeFile(file);
157
- }, className: "flex-shrink-0 w-6 h-6 flex items-center justify-center text-gray-400 hover:text-gray-600 hover:bg-gray-100 rounded-full transition-colors", children: _jsx(X, { size: 16 }) })] }) }, `${file.name}-${file.size}`));
154
+ return (_jsxs("div", { className: "relative group", children: [_jsxs("div", { className: "relative aspect-square rounded-lg overflow-hidden border border-gray-300", children: [_jsx("img", { src: URL.createObjectURL(file), alt: file.name, className: "w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" }), _jsx("button", { onClick: (e) => {
155
+ e.stopPropagation();
156
+ removeFile(file);
157
+ }, className: "absolute top-2 right-2 w-8 h-8 flex items-center justify-center bg-red-500 hover:bg-red-600 rounded-full text-white opacity-0 group-hover:opacity-100 transition-all shadow-lg hover:scale-110", children: _jsx(X, { size: 16 }) }), isUploading && (_jsx("div", { className: "absolute inset-0 bg-black/60 flex items-center justify-center", children: _jsxs("div", { className: "text-center", children: [_jsx(Loader2, { size: 32, className: "animate-spin text-white mx-auto mb-2" }), _jsxs("p", { className: "text-white font-semibold text-sm", children: [state.progress, "%"] })] }) })), isDone && (_jsx("div", { className: "absolute inset-0 bg-black/40 flex items-center justify-center", children: _jsx("div", { className: "w-16 h-16 bg-green-500 rounded-full flex items-center justify-center", children: _jsx("svg", { className: "w-8 h-8 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: "mt-2", children: [_jsx("p", { className: "text-sm font-medium text-gray-900 truncate", children: file.name }), _jsx("p", { className: "text-xs text-gray-500", children: formatFileSize(file.size) })] })] }, `${file.name}-${file.size}`));
158
158
  }) })), images.length > 0 && !autoUpload && (_jsxs("div", { className: "mt-6 flex items-center justify-end gap-3", children: [_jsx("button", { onClick: () => setImages([]), className: "px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors", children: "Cancel" }), _jsx("button", { onClick: handleAutoUpload, disabled: uploading, className: "px-4 py-2 text-sm font-medium text-white bg-gray-900 rounded-lg hover:bg-gray-800 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2", children: uploading ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { size: 16, className: "animate-spin" }), "Uploading..."] })) : ('Attach files') })] }))] }));
159
159
  }
160
160
  //# sourceMappingURL=ImageUploader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUploader.js","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAyBlE,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,EAC1B,YAAY,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,EAClF,SAAS,GAAG,EAAE,EACd,gBAAgB,EAChB,aAAa,EACb,UAAU,GAAG,KAAK,EAClB,YAAY,GACO;IACnB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgC,IAAI,GAAG,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE9B,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClE,gBAAgB,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACxB,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACxC,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;oBACrB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;oBAC7D,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE;oBACjF,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;wBAChB,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;4BACrB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;4BAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BAC9B,IAAI,OAAO,EAAE,CAAC;gCACZ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;4BACxD,CAAC;4BACD,OAAO,IAAI,CAAC;wBACd,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF,CAAC,CAAC;gBAEH,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE;oBACrB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,OAAO,EAAE,CAAC;wBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC/D,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;gBAEH,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACtE,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAe,EAAsC,EAAE;QACtD,MAAM,KAAK,GAAW,EAAE,CAAC;QACzB,MAAM,OAAO,GAAW,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC,EACD,CAAC,OAAO,EAAE,YAAY,CAAC,CACxB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAe,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE/B,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,EACD,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAC7C,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,CAAsC,EAAE,EAAE;QAC9D,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YAC3B,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE;QAC7C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM;YAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,CAAkB,EAAE,EAAE;QAC7C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,WAAW,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,WAAW,CAAC,OAAO,KAAK,CAAC;YAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,CAAkB,EAAE,EAAE;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,CAAkB,EAAE,EAAE;QACxC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACjC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,EAAE;QAChC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,IAAU,EAAoB,EAAE;QACpD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC5E,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,kBAAkB,SAAS,EAAE,aAE3C,eACE,SAAS,EAAC,gGAAgG,EAC1G,KAAK,EAAE;oBACL,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAC/C,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;iBAClD,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,EAC5C,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,UAAU,aAElB,gBACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAC,2CAA2C,GACrD,EAEF,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,eAAe,aAC5B,cAAK,SAAS,EAAC,2FAA2F,YACxG,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,eAAe,GAAG,GAC5C,EACN,cAAK,SAAS,EAAC,+FAA+F,YAC5G,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,YAAY,GAAG,GACvC,IACF,EAEN,aAAG,SAAS,EAAC,8BAA8B,aACzC,eAAM,SAAS,EAAC,8EAA8E,gCAEvF,EAAC,GAAG,wBAET,EAEJ,aAAG,SAAS,EAAC,uBAAuB,mCAAoB,cAAc,CAAC,OAAO,CAAC,IAAK,IAChF,IACF,EAGL,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CACpB,cAAK,SAAS,EAAC,gBAAgB,YAC5B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACnB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBACjC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC;oBACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;oBAEvC,OAAO,CACL,cAEE,SAAS,EAAC,yFAAyF,YAEnG,eAAK,SAAS,EAAC,wBAAwB,aAErC,cAAK,SAAS,EAAC,8EAA8E,YAC3F,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,eAAe,GAAG,GAC5C,EAGN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,YAAG,SAAS,EAAC,4CAA4C,YAAE,IAAI,CAAC,IAAI,GAAK,EACzE,YAAG,SAAS,EAAC,uBAAuB,YAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAK,EAGnE,WAAW,IAAI,MAAM,CAAC,CAAC,CAAC,CACvB,cAAK,SAAS,EAAC,MAAM,YACnB,eAAK,SAAS,EAAC,wCAAwC,aACrD,cAAK,SAAS,EAAC,aAAa,YAC1B,cAAK,SAAS,EAAC,uCAAuC,YACpD,cACE,SAAS,EAAC,4DAA4D,EACtE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,GAC3C,GACE,GACF,EACN,gBAAM,SAAS,EAAC,mCAAmC,aAChD,KAAK,CAAC,QAAQ,IAAI,CAAC,SACf,IACH,GACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EAGN,iBACE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;wCACb,CAAC,CAAC,eAAe,EAAE,CAAC;wCACpB,UAAU,CAAC,IAAI,CAAC,CAAC;oCACnB,CAAC,EACD,SAAS,EAAC,2IAA2I,YAErJ,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,GAAI,GACR,IACL,IA5CD,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CA6C5B,CACP,CAAC;gBACJ,CAAC,CAAC,GACE,CACP,EAGA,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CACnC,eAAK,SAAS,EAAC,0CAA0C,aACvD,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAC5B,SAAS,EAAC,2HAA2H,uBAG9H,EACT,iBACE,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAC,6KAA6K,YAEtL,SAAS,CAAC,CAAC,CAAC,CACX,8BACE,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,GAAG,oBAE7C,CACJ,CAAC,CAAC,CAAC,CACF,cAAc,CACf,GACM,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ImageUploader.js","sourceRoot":"","sources":["../../src/components/ImageUploader.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultra-image-uploader",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "A modern, beautiful React image upload component with ImgBB & Cloudinary support",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",