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,
|
|
5
|
+
A modern, production-ready React image upload component with shadcn/ui-inspired design, beautiful themes, and smooth animations.
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/ultra-image-uploader)
|
|
8
8
|

|
|
9
9
|
[](https://opensource.org/licenses/MIT)
|
|
10
10
|
|
|
11
|
-
**
|
|
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** -
|
|
20
|
-
- **
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
23
|
-
- **
|
|
24
|
-
- **
|
|
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
|
-
- **
|
|
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
|
-
|
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
###
|
|
134
|
+
### Upload with ImgBB
|
|
143
135
|
|
|
144
136
|
```tsx
|
|
145
|
-
|
|
146
|
-
const [images, setImages] = useState<File[]>([]);
|
|
137
|
+
import { ImageUploader } from "ultra-image-uploader";
|
|
147
138
|
|
|
148
|
-
|
|
149
|
-
|
|
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
|
-
|
|
168
|
-
|
|
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
|
-
###
|
|
163
|
+
### Upload with Cloudinary
|
|
175
164
|
|
|
176
165
|
```tsx
|
|
177
|
-
function
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
###
|
|
190
|
+
### Auto Upload
|
|
193
191
|
|
|
194
192
|
```tsx
|
|
195
|
-
function
|
|
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
|
-
|
|
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
|
-
|
|
206
|
+
// Automatically upload when images are selected
|
|
207
|
+
saveUrlsToDatabase(urls);
|
|
210
208
|
}}
|
|
211
209
|
/>
|
|
212
210
|
);
|
|
213
211
|
}
|
|
214
212
|
```
|
|
215
213
|
|
|
216
|
-
###
|
|
214
|
+
### Update Mode (Existing Images)
|
|
217
215
|
|
|
218
216
|
```tsx
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
-
###
|
|
238
|
+
### Custom Theme
|
|
235
239
|
|
|
236
240
|
```tsx
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
272
|
+
### Customization Options
|
|
247
273
|
|
|
248
|
-
|
|
274
|
+
```tsx
|
|
275
|
+
function CustomizedExample() {
|
|
276
|
+
const [images, setImages] = useState<File[]>([]);
|
|
249
277
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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
|
-
###
|
|
256
|
-
- Gradient: Mint to rose
|
|
257
|
-
- Primary: `#10b981`
|
|
258
|
-
- Fresh and clean look
|
|
303
|
+
### Single Image Upload
|
|
259
304
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
- Nature-inspired design
|
|
305
|
+
```tsx
|
|
306
|
+
function SingleImageExample() {
|
|
307
|
+
const [avatar, setAvatar] = useState<File[]>([]);
|
|
264
308
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
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
|
-
###
|
|
271
|
-
- Gradient: Yellow to orange
|
|
272
|
-
- Primary: `#f59e0b`
|
|
273
|
-
- Warm sunset colors
|
|
324
|
+
### Product Gallery
|
|
274
325
|
|
|
275
|
-
|
|
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
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
##
|
|
361
|
+
## Built-in Themes
|
|
286
362
|
|
|
287
|
-
|
|
288
|
-
-
|
|
289
|
-
-
|
|
290
|
-
-
|
|
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
|
-
|
|
369
|
+
### Modern (Neutral)
|
|
370
|
+
- Clean monochrome design
|
|
371
|
+
- Primary: `#09090b`
|
|
372
|
+
- Background: `#fafafa`
|
|
373
|
+
- Perfect for: Professional apps, portfolios, dashboards
|
|
293
374
|
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
297
|
-
-
|
|
298
|
-
-
|
|
299
|
-
|
|
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
|
-
|
|
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
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
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
|
-
##
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
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: '#
|
|
41
|
-
primaryHover: '#
|
|
42
|
-
background: '
|
|
12
|
+
primary: '#16a34a',
|
|
13
|
+
primaryHover: '#15803d',
|
|
14
|
+
background: '#f0fdf4',
|
|
43
15
|
border: '#bbf7d0',
|
|
44
16
|
text: '#14532d',
|
|
45
17
|
textSecondary: '#166534',
|
|
46
|
-
cardBg: '#
|
|
18
|
+
cardBg: '#ffffff',
|
|
47
19
|
cardBorder: '#dcfce7',
|
|
48
|
-
shadow: '0
|
|
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
|
-
|
|
52
|
-
name: '
|
|
23
|
+
modern: {
|
|
24
|
+
name: 'Modern',
|
|
53
25
|
colors: {
|
|
54
|
-
primary: '#
|
|
55
|
-
primaryHover: '#
|
|
56
|
-
background: '
|
|
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: '#
|
|
46
|
+
cardBg: '#ffffff',
|
|
61
47
|
cardBorder: '#e0f2fe',
|
|
62
|
-
shadow: '0
|
|
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
|
-
|
|
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-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}, children:
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
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:
|
|
253
|
-
|
|
254
|
-
|
|
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 (
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
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-
|
|
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
|
-
|
|
274
|
-
}, children: "Clear
|
|
275
|
-
|
|
276
|
-
|
|
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(
|
|
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": "
|
|
4
|
-
"description": "A modern,
|
|
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",
|