thetwistedpixie commited on
Commit
e348e14
·
verified ·
1 Parent(s): e04ef7d

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +888 -19
index.html CHANGED
@@ -1,19 +1,888 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>AI Prompt Craft - Creative Image Prompt Generator</title>
7
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
+ <style>
9
+ * {
10
+ margin: 0;
11
+ padding: 0;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ :root {
16
+ --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
17
+ --secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
18
+ --accent-gradient: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
19
+ --dark-bg: #0f0f23;
20
+ --card-bg: rgba(255, 255, 255, 0.05);
21
+ --text-primary: #ffffff;
22
+ --text-secondary: #b8b8d1;
23
+ --border-color: rgba(255, 255, 255, 0.1);
24
+ --success: #00ff88;
25
+ --warning: #ffaa00;
26
+ }
27
+
28
+ body {
29
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
30
+ background: var(--dark-bg);
31
+ color: var(--text-primary);
32
+ min-height: 100vh;
33
+ overflow-x: hidden;
34
+ position: relative;
35
+ }
36
+
37
+ body::before {
38
+ content: '';
39
+ position: fixed;
40
+ top: 0;
41
+ left: 0;
42
+ right: 0;
43
+ bottom: 0;
44
+ background:
45
+ radial-gradient(circle at 20% 50%, rgba(120, 119, 198, 0.3) 0%, transparent 50%),
46
+ radial-gradient(circle at 80% 80%, rgba(255, 119, 198, 0.3) 0%, transparent 50%),
47
+ radial-gradient(circle at 40% 20%, rgba(120, 219, 255, 0.2) 0%, transparent 50%);
48
+ z-index: -1;
49
+ animation: floatGradient 20s ease infinite;
50
+ }
51
+
52
+ @keyframes floatGradient {
53
+ 0%, 100% { transform: translate(0, 0) rotate(0deg); }
54
+ 33% { transform: translate(-20px, -20px) rotate(120deg); }
55
+ 66% { transform: translate(20px, -10px) rotate(240deg); }
56
+ }
57
+
58
+ header {
59
+ padding: 2rem;
60
+ text-align: center;
61
+ border-bottom: 1px solid var(--border-color);
62
+ backdrop-filter: blur(10px);
63
+ background: rgba(15, 15, 35, 0.8);
64
+ position: sticky;
65
+ top: 0;
66
+ z-index: 100;
67
+ }
68
+
69
+ .header-content {
70
+ max-width: 1200px;
71
+ margin: 0 auto;
72
+ }
73
+
74
+ h1 {
75
+ font-size: 2.5rem;
76
+ background: var(--primary-gradient);
77
+ -webkit-background-clip: text;
78
+ -webkit-text-fill-color: transparent;
79
+ margin-bottom: 0.5rem;
80
+ animation: glow 3s ease-in-out infinite;
81
+ }
82
+
83
+ @keyframes glow {
84
+ 0%, 100% { filter: brightness(1); }
85
+ 50% { filter: brightness(1.2); }
86
+ }
87
+
88
+ .subtitle {
89
+ color: var(--text-secondary);
90
+ font-size: 1.1rem;
91
+ margin-bottom: 1rem;
92
+ }
93
+
94
+ .built-with {
95
+ display: inline-block;
96
+ padding: 0.5rem 1rem;
97
+ background: var(--card-bg);
98
+ border: 1px solid var(--border-color);
99
+ border-radius: 20px;
100
+ text-decoration: none;
101
+ color: var(--text-secondary);
102
+ transition: all 0.3s ease;
103
+ }
104
+
105
+ .built-with:hover {
106
+ background: rgba(255, 255, 255, 0.1);
107
+ color: var(--text-primary);
108
+ transform: translateY(-2px);
109
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3);
110
+ }
111
+
112
+ main {
113
+ max-width: 1200px;
114
+ margin: 0 auto;
115
+ padding: 3rem 2rem;
116
+ }
117
+
118
+ .controls-section {
119
+ display: grid;
120
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
121
+ gap: 2rem;
122
+ margin-bottom: 3rem;
123
+ }
124
+
125
+ .control-card {
126
+ background: var(--card-bg);
127
+ border: 1px solid var(--border-color);
128
+ border-radius: 20px;
129
+ padding: 1.5rem;
130
+ backdrop-filter: blur(10px);
131
+ transition: all 0.3s ease;
132
+ }
133
+
134
+ .control-card:hover {
135
+ transform: translateY(-5px);
136
+ box-shadow: 0 20px 40px rgba(102, 126, 234, 0.2);
137
+ border-color: rgba(102, 126, 234, 0.3);
138
+ }
139
+
140
+ .control-card h3 {
141
+ margin-bottom: 1rem;
142
+ display: flex;
143
+ align-items: center;
144
+ gap: 0.5rem;
145
+ font-size: 1.2rem;
146
+ }
147
+
148
+ .control-card i {
149
+ background: var(--primary-gradient);
150
+ -webkit-background-clip: text;
151
+ -webkit-text-fill-color: transparent;
152
+ }
153
+
154
+ .tag-group {
155
+ display: flex;
156
+ flex-wrap: wrap;
157
+ gap: 0.5rem;
158
+ margin-top: 0.5rem;
159
+ }
160
+
161
+ .tag {
162
+ padding: 0.3rem 0.8rem;
163
+ background: rgba(102, 126, 234, 0.2);
164
+ border: 1px solid rgba(102, 126, 234, 0.3);
165
+ border-radius: 15px;
166
+ font-size: 0.85rem;
167
+ cursor: pointer;
168
+ transition: all 0.3s ease;
169
+ }
170
+
171
+ .tag:hover {
172
+ background: rgba(102, 126, 234, 0.3);
173
+ transform: scale(1.05);
174
+ }
175
+
176
+ .tag.active {
177
+ background: var(--primary-gradient);
178
+ border-color: transparent;
179
+ }
180
+
181
+ .prompt-display {
182
+ background: var(--card-bg);
183
+ border: 1px solid var(--border-color);
184
+ border-radius: 20px;
185
+ padding: 2rem;
186
+ margin-bottom: 2rem;
187
+ backdrop-filter: blur(10px);
188
+ min-height: 200px;
189
+ position: relative;
190
+ overflow: hidden;
191
+ }
192
+
193
+ .prompt-display::before {
194
+ content: '';
195
+ position: absolute;
196
+ top: -2px;
197
+ left: -2px;
198
+ right: -2px;
199
+ bottom: -2px;
200
+ background: var(--primary-gradient);
201
+ border-radius: 20px;
202
+ opacity: 0;
203
+ transition: opacity 0.3s ease;
204
+ z-index: -1;
205
+ }
206
+
207
+ .prompt-display.enhanced::before {
208
+ opacity: 0.3;
209
+ }
210
+
211
+ .prompt-text {
212
+ font-size: 1.2rem;
213
+ line-height: 1.6;
214
+ margin-bottom: 1rem;
215
+ animation: fadeIn 0.5s ease;
216
+ }
217
+
218
+ @keyframes fadeIn {
219
+ from { opacity: 0; transform: translateY(10px); }
220
+ to { opacity: 1; transform: translateY(0); }
221
+ }
222
+
223
+ .prompt-tags {
224
+ display: flex;
225
+ flex-wrap: wrap;
226
+ gap: 0.5rem;
227
+ margin-top: 1rem;
228
+ }
229
+
230
+ .prompt-tag {
231
+ padding: 0.2rem 0.6rem;
232
+ background: rgba(79, 172, 254, 0.2);
233
+ border: 1px solid rgba(79, 172, 254, 0.3);
234
+ border-radius: 10px;
235
+ font-size: 0.75rem;
236
+ color: #4facfe;
237
+ }
238
+
239
+ .action-buttons {
240
+ display: flex;
241
+ gap: 1rem;
242
+ justify-content: center;
243
+ flex-wrap: wrap;
244
+ }
245
+
246
+ .btn {
247
+ padding: 1rem 2rem;
248
+ border: none;
249
+ border-radius: 50px;
250
+ font-size: 1rem;
251
+ font-weight: 600;
252
+ cursor: pointer;
253
+ transition: all 0.3s ease;
254
+ display: inline-flex;
255
+ align-items: center;
256
+ gap: 0.5rem;
257
+ position: relative;
258
+ overflow: hidden;
259
+ }
260
+
261
+ .btn::before {
262
+ content: '';
263
+ position: absolute;
264
+ top: 50%;
265
+ left: 50%;
266
+ width: 0;
267
+ height: 0;
268
+ border-radius: 50%;
269
+ background: rgba(255, 255, 255, 0.3);
270
+ transform: translate(-50%, -50%);
271
+ transition: width 0.6s, height 0.6s;
272
+ }
273
+
274
+ .btn:active::before {
275
+ width: 300px;
276
+ height: 300px;
277
+ }
278
+
279
+ .btn-primary {
280
+ background: var(--primary-gradient);
281
+ color: white;
282
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3);
283
+ }
284
+
285
+ .btn-primary:hover {
286
+ transform: translateY(-3px);
287
+ box-shadow: 0 15px 40px rgba(102, 126, 234, 0.4);
288
+ }
289
+
290
+ .btn-secondary {
291
+ background: transparent;
292
+ color: var(--text-primary);
293
+ border: 2px solid var(--border-color);
294
+ }
295
+
296
+ .btn-secondary:hover {
297
+ background: rgba(255, 255, 255, 0.05);
298
+ border-color: rgba(102, 126, 234, 0.5);
299
+ transform: translateY(-3px);
300
+ }
301
+
302
+ .history-section {
303
+ margin-top: 3rem;
304
+ }
305
+
306
+ .history-header {
307
+ display: flex;
308
+ justify-content: space-between;
309
+ align-items: center;
310
+ margin-bottom: 1.5rem;
311
+ }
312
+
313
+ .history-grid {
314
+ display: grid;
315
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
316
+ gap: 1rem;
317
+ }
318
+
319
+ .history-item {
320
+ background: var(--card-bg);
321
+ border: 1px solid var(--border-color);
322
+ border-radius: 15px;
323
+ padding: 1rem;
324
+ cursor: pointer;
325
+ transition: all 0.3s ease;
326
+ position: relative;
327
+ overflow: hidden;
328
+ }
329
+
330
+ .history-item:hover {
331
+ transform: scale(1.02);
332
+ border-color: rgba(102, 126, 234, 0.3);
333
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.2);
334
+ }
335
+
336
+ .history-item-text {
337
+ font-size: 0.9rem;
338
+ color: var(--text-secondary);
339
+ margin-bottom: 0.5rem;
340
+ display: -webkit-box;
341
+ -webkit-line-clamp: 2;
342
+ -webkit-box-orient: vertical;
343
+ overflow: hidden;
344
+ }
345
+
346
+ .history-item-time {
347
+ font-size: 0.75rem;
348
+ color: var(--text-secondary);
349
+ opacity: 0.6;
350
+ }
351
+
352
+ .toast {
353
+ position: fixed;
354
+ bottom: 2rem;
355
+ right: 2rem;
356
+ padding: 1rem 1.5rem;
357
+ background: var(--card-bg);
358
+ border: 1px solid var(--border-color);
359
+ border-radius: 15px;
360
+ backdrop-filter: blur(10px);
361
+ display: flex;
362
+ align-items: center;
363
+ gap: 0.5rem;
364
+ transform: translateX(400px);
365
+ transition: transform 0.3s ease;
366
+ z-index: 1000;
367
+ }
368
+
369
+ .toast.show {
370
+ transform: translateX(0);
371
+ }
372
+
373
+ .toast.success {
374
+ border-color: var(--success);
375
+ background: rgba(0, 255, 136, 0.1);
376
+ }
377
+
378
+ .enhancement-tips {
379
+ background: var(--card-bg);
380
+ border: 1px solid var(--border-color);
381
+ border-radius: 15px;
382
+ padding: 1.5rem;
383
+ margin-top: 2rem;
384
+ }
385
+
386
+ .tips-header {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: 0.5rem;
390
+ margin-bottom: 1rem;
391
+ font-size: 1.1rem;
392
+ }
393
+
394
+ .tips-list {
395
+ list-style: none;
396
+ }
397
+
398
+ .tips-list li {
399
+ padding: 0.5rem 0;
400
+ color: var(--text-secondary);
401
+ display: flex;
402
+ align-items: center;
403
+ gap: 0.5rem;
404
+ }
405
+
406
+ .tips-list li::before {
407
+ content: '✨';
408
+ }
409
+
410
+ @media (max-width: 768px) {
411
+ h1 {
412
+ font-size: 2rem;
413
+ }
414
+
415
+ .controls-section {
416
+ grid-template-columns: 1fr;
417
+ }
418
+
419
+ .history-grid {
420
+ grid-template-columns: 1fr;
421
+ }
422
+
423
+ .btn {
424
+ padding: 0.8rem 1.5rem;
425
+ font-size: 0.9rem;
426
+ }
427
+ }
428
+
429
+ .slider-container {
430
+ margin-top: 1rem;
431
+ }
432
+
433
+ .slider-label {
434
+ display: flex;
435
+ justify-content: space-between;
436
+ margin-bottom: 0.5rem;
437
+ font-size: 0.9rem;
438
+ color: var(--text-secondary);
439
+ }
440
+
441
+ .slider {
442
+ width: 100%;
443
+ height: 6px;
444
+ border-radius: 3px;
445
+ background: rgba(255, 255, 255, 0.1);
446
+ outline: none;
447
+ -webkit-appearance: none;
448
+ }
449
+
450
+ .slider::-webkit-slider-thumb {
451
+ -webkit-appearance: none;
452
+ appearance: none;
453
+ width: 20px;
454
+ height: 20px;
455
+ border-radius: 50%;
456
+ background: var(--primary-gradient);
457
+ cursor: pointer;
458
+ transition: all 0.3s ease;
459
+ }
460
+
461
+ .slider::-webkit-slider-thumb:hover {
462
+ transform: scale(1.2);
463
+ box-shadow: 0 0 20px rgba(102, 126, 234, 0.5);
464
+ }
465
+
466
+ .slider::-moz-range-thumb {
467
+ width: 20px;
468
+ height: 20px;
469
+ border-radius: 50%;
470
+ background: var(--primary-gradient);
471
+ cursor: pointer;
472
+ transition: all 0.3s ease;
473
+ }
474
+ </style>
475
+ </head>
476
+ <body>
477
+ <header>
478
+ <div class="header-content">
479
+ <h1>AI Prompt Craft</h1>
480
+ <p class="subtitle">Master the Art of AI Image Generation with Creative Prompts</p>
481
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="built-with">
482
+ <i class="fas fa-code"></i> Built with anycoder
483
+ </a>
484
+ </div>
485
+ </header>
486
+
487
+ <main>
488
+ <section class="controls-section">
489
+ <div class="control-card">
490
+ <h3><i class="fas fa-palette"></i> Art Style</h3>
491
+ <div class="tag-group" id="styleTags">
492
+ <span class="tag" data-type="style" data-value="photorealistic">Photorealistic</span>
493
+ <span class="tag" data-type="style" data-value="digital painting">Digital Painting</span>
494
+ <span class="tag" data-type="style" data-value="anime style">Anime Style</span>
495
+ <span class="tag" data-type="style" data-value="oil painting">Oil Painting</span>
496
+ <span class="tag" data-type="style" data-value="watercolor">Watercolor</span>
497
+ <span class="tag" data-type="style" data-value="3D render">3D Render</span>
498
+ <span class="tag" data-type="style" data-value="sketch">Sketch</span>
499
+ <span class="tag" data-type="style" data-value="abstract">Abstract</span>
500
+ </div>
501
+ </div>
502
+
503
+ <div class="control-card">
504
+ <h3><i class="fas fa-magic"></i> Enhancement Words</h3>
505
+ <div class="tag-group" id="enhancementTags">
506
+ <span class="tag" data-type="enhancement" data-value="hyperdetailed">Hyperdetailed</span>
507
+ <span class="tag" data-type="enhancement" data-value="cinematic lighting">Cinematic</span>
508
+ <span class="tag" data-type="enhancement" data-value="vibrant colors">Vibrant</span>
509
+ <span class="tag" data-type="enhancement" data-value="dramatic">Dramatic</span>
510
+ <span class="tag" data-type="enhancement" data-value="ethereal">Ethereal</span>
511
+ <span class="tag" data-type="enhancement" data-value="surreal">Surreal</span>
512
+ <span class="tag" data-type="enhancement" data-value="majestic">Majestic</span>
513
+ <span class="tag" data-type="enhancement" data-value="intricate">Intricate</span>
514
+ </div>
515
+ </div>
516
+
517
+ <div class="control-card">
518
+ <h3><i class="fas fa-camera"></i> Camera & Composition</h3>
519
+ <div class="tag-group" id="cameraTags">
520
+ <span class="tag" data-type="camera" data-value="wide angle">Wide Angle</span>
521
+ <span class="tag" data-type="camera" data-value="macro shot">Macro</span>
522
+ <span class="tag" data-type="camera" data-value="bird's eye view">Bird's Eye</span>
523
+ <span class="tag" data-type="camera" data-value="close up">Close Up</span>
524
+ <span class="tag" data-type="camera" data-value="panoramic">Panoramic</span>
525
+ <span class="tag" data-type="camera" data-value="portrait">Portrait</span>
526
+ <span class="tag" data-type="camera" data-value="action shot">Action Shot</span>
527
+ <span class="tag" data-type="camera" data-value="depth of field">Depth of Field</span>
528
+ </div>
529
+ </div>
530
+
531
+ <div class="control-card">
532
+ <h3><i class="fas fa-adjust"></i> Quality Settings</h3>
533
+ <div class="slider-container">
534
+ <div class="slider-label">
535
+ <span>Detail Level</span>
536
+ <span id="detailValue">50</span>
537
+ </div>
538
+ <input type="range" class="slider" id="detailSlider" min="0" max="100" value="50">
539
+ </div>
540
+ <div class="slider-container">
541
+ <div class="slider-label">
542
+ <span>Creativity</span>
543
+ <span id="creativityValue">50</span>
544
+ </div>
545
+ <input type="range" class="slider" id="creativitySlider" min="0" max="100" value="50">
546
+ </div>
547
+ </div>
548
+ </section>
549
+
550
+ <section class="prompt-display" id="promptDisplay">
551
+ <div class="prompt-text" id="promptText">
552
+ Click "Generate Prompt" to create a unique AI image prompt with artistic enhancements and professional composition techniques.
553
+ </div>
554
+ <div class="prompt-tags" id="promptTags"></div>
555
+ </section>
556
+
557
+ <section class="action-buttons">
558
+ <button class="btn btn-primary" id="generateBtn">
559
+ <i class="fas fa-sparkles"></i> Generate Prompt
560
+ </button>
561
+ <button class="btn btn-secondary" id="randomizeBtn">
562
+ <i class="fas fa-dice"></i> Randomize All
563
+ </button>
564
+ <button class="btn btn-secondary" id="copyBtn">
565
+ <i class="fas fa-copy"></i> Copy Prompt
566
+ </button>
567
+ <button class="btn btn-secondary" id="enhanceBtn">
568
+ <i class="fas fa-wand-magic-sparkles"></i> Enhance
569
+ </button>
570
+ </section>
571
+
572
+ <section class="enhancement-tips">
573
+ <div class="tips-header">
574
+ <i class="fas fa-lightbulb"></i>
575
+ <span>Pro Tips for Better Prompts</span>
576
+ </div>
577
+ <ul class="tips-list">
578
+ <li>Combine multiple styles for unique results (e.g., "photorealistic with anime elements")</li>
579
+ <li>Use specific lighting descriptions like "golden hour" or "neon glow"</li>
580
+ <li>Include emotional words like "nostalgic", "mysterious", or "serene"</li>
581
+ <li>Add technical details like "8K resolution", "Unreal Engine 5", or "Octane render"</li>
582
+ <li>Experiment with negative prompts to refine your results</li>
583
+ </ul>
584
+ </section>
585
+
586
+ <section class="history-section">
587
+ <div class="history-header">
588
+ <h2><i class="fas fa-history"></i> Recent Prompts</h2>
589
+ <button class="btn btn-secondary" id="clearHistoryBtn">
590
+ <i class="fas fa-trash"></i> Clear
591
+ </button>
592
+ </div>
593
+ <div class="history-grid" id="historyGrid">
594
+ <!-- History items will be added here -->
595
+ </div>
596
+ </section>
597
+ </main>
598
+
599
+ <div class="toast" id="toast">
600
+ <i class="fas fa-check-circle"></i>
601
+ <span id="toastMessage">Prompt copied to clipboard!</span>
602
+ </div>
603
+
604
+ <script>
605
+ // Prompt Generator Class
606
+ class PromptGenerator {
607
+ constructor() {
608
+ this.subjects = [
609
+ 'a mystical forest with glowing mushrooms',
610
+ 'an ancient dragon sleeping on treasure',
611
+ 'a futuristic city at sunset',
612
+ 'a serene Japanese garden in spring',
613
+ 'a cosmic nebula with stars',
614
+ 'a steampunk airship in clouds',
615
+ 'an underwater coral kingdom',
616
+ 'a medieval castle on a mountain',
617
+ 'a cyberpunk street in rain',
618
+ 'a magical library with floating books',
619
+ 'a desert oasis with palm trees',
620
+ 'a Viking longship in stormy seas',
621
+ 'a space station orbiting Earth',
622
+ 'a enchanted cottage with fairy lights',
623
+ 'a tropical paradise waterfall'
624
+ ];
625
+
626
+ this.atmospheres = [
627
+ 'dreamlike atmosphere',
628
+ 'mysterious ambiance',
629
+ 'peaceful and serene',
630
+ 'dramatic and intense',
631
+ 'whimsical and playful',
632
+ 'dark and moody',
633
+ 'bright and cheerful',
634
+ 'elegant and sophisticated',
635
+ 'rustic and natural',
636
+ 'futuristic and sleek'
637
+ ];
638
+
639
+ this.technicalTerms = [
640
+ '8K resolution',
641
+ 'Unreal Engine 5',
642
+ 'Octane render',
643
+ 'V-Ray',
644
+ 'photorealistic details',
645
+ 'sharp focus',
646
+ 'depth of field',
647
+ 'bokeh effect',
648
+ 'global illumination',
649
+ 'ambient occlusion'
650
+ ];
651
+
652
+ this.selectedStyles = new Set();
653
+ this.selectedEnhancements = new Set();
654
+ this.selectedCamera = new Set();
655
+ this.detailLevel = 50;
656
+ this.creativity = 50;
657
+ this.history = [];
658
+ }
659
+
660
+ generatePrompt() {
661
+ const subject = this.getRandomElement(this.subjects);
662
+ const atmosphere = this.getRandomElement(this.atmospheres);
663
+ const technical = this.getRandomElement(this.technicalTerms);
664
+
665
+ let prompt = subject + ', ' + atmosphere;
666
+
667
+ // Add selected styles
668
+ if (this.selectedStyles.size > 0) {
669
+ prompt += ', ' + Array.from(this.selectedStyles).join(', ');
670
+ }
671
+
672
+ // Add selected enhancements
673
+ if (this.selectedEnhancements.size > 0) {
674
+ prompt += ', ' + Array.from(this.selectedEnhancements).join(', ');
675
+ }
676
+
677
+ // Add camera/composition
678
+ if (this.selectedCamera.size > 0) {
679
+ prompt += ', ' + Array.from(this.selectedCamera).join(' ');
680
+ }
681
+
682
+ // Add technical terms based on detail level
683
+ if (this.detailLevel > 70) {
684
+ prompt += ', ' + technical;
685
+ }
686
+ if (this.detailLevel > 85) {
687
+ prompt += ', masterpiece, best quality';
688
+ }
689
+
690
+ // Add creativity boosters
691
+ if (this.creativity > 70) {
692
+ prompt += ', surreal, imaginative, unique perspective';
693
+ }
694
+
695
+ return prompt;
696
+ }
697
+
698
+ getRandomElement(array) {
699
+ return array[Math.floor(Math.random() * array.length)];
700
+ }
701
+
702
+ enhancePrompt(prompt) {
703
+ const enhancements = [
704
+ 'masterpiece, best quality, highly detailed',
705
+ 'ultra realistic, 8K, sharp focus',
706
+ 'cinematic lighting, dramatic shadows',
707
+ 'vibrant colors, rich textures',
708
+ 'award-winning photography',
709
+ 'professional composition'
710
+ ];
711
+
712
+ const randomEnhancement = this.getRandomElement(enhancements);
713
+ return prompt + ', ' + randomEnhancement;
714
+ }
715
+
716
+ addToHistory(prompt) {
717
+ const historyItem = {
718
+ text: prompt,
719
+ timestamp: new Date().toLocaleTimeString()
720
+ };
721
+ this.history.unshift(historyItem);
722
+ if (this.history.length > 6) {
723
+ this.history.pop();
724
+ }
725
+ this.updateHistoryDisplay();
726
+ }
727
+
728
+ updateHistoryDisplay() {
729
+ const historyGrid = document.getElementById('historyGrid');
730
+ historyGrid.innerHTML = '';
731
+
732
+ this.history.forEach(item => {
733
+ const historyDiv = document.createElement('div');
734
+ historyDiv.className = 'history-item';
735
+ historyDiv.innerHTML = `
736
+ <div class="history-item-text">${item.text}</div>
737
+ <div class="history-item-time">${item.timestamp}</div>
738
+ `;
739
+ historyDiv.addEventListener('click', () => {
740
+ document.getElementById('promptText').textContent = item.text;
741
+ this.showToast('History prompt loaded!');
742
+ });
743
+ historyGrid.appendChild(historyDiv);
744
+ });
745
+ }
746
+
747
+ showToast(message, type = 'success') {
748
+ const toast = document.getElementById('toast');
749
+ const toastMessage = document.getElementById('toastMessage');
750
+ toastMessage.textContent = message;
751
+ toast.className = `toast ${type} show`;
752
+ setTimeout(() => {
753
+ toast.classList.remove('show');
754
+ }, 3000);
755
+ }
756
+ }
757
+
758
+ // Initialize
759
+ const generator = new PromptGenerator();
760
+
761
+ // Event Listeners
762
+ document.getElementById('generateBtn').addEventListener('click', () => {
763
+ const prompt = generator.generatePrompt();
764
+ const promptText = document.getElementById('promptText');
765
+ promptText.style.animation = 'none';
766
+ setTimeout(() => {
767
+ promptText.textContent = prompt;
768
+ promptText.style.animation = 'fadeIn 0.5s ease';
769
+ }, 10);
770
+
771
+ generator.addToHistory(prompt);
772
+ updatePromptTags();
773
+ generator.showToast('New prompt generated!');
774
+ });
775
+
776
+ document.getElementById('randomizeBtn').addEventListener('click', () => {
777
+ // Randomize all tags
778
+ document.querySelectorAll('.tag').forEach(tag => {
779
+ if (Math.random() > 0.5) {
780
+ tag.classList.add('active');
781
+ } else {
782
+ tag.classList.remove('active');
783
+ }
784
+ });
785
+
786
+ // Update selections
787
+ updateSelections();
788
+
789
+ // Randomize sliders
790
+ const randomDetail = Math.floor(Math.random() * 100);
791
+ const randomCreativity = Math.floor(Math.random() * 100);
792
+ document.getElementById('detailSlider').value = randomDetail;
793
+ document.getElementById('creativitySlider').value = randomCreativity;
794
+ document.getElementById('detailValue').textContent = randomDetail;
795
+ document.getElementById('creativityValue').textContent = randomCreativity;
796
+ generator.detailLevel = randomDetail;
797
+ generator.creativity = randomCreativity;
798
+
799
+ // Generate new prompt
800
+ document.getElementById('generateBtn').click();
801
+ });
802
+
803
+ document.getElementById('copyBtn').addEventListener('click', () => {
804
+ const promptText = document.getElementById('promptText').textContent;
805
+ navigator.clipboard.writeText(promptText).then(() => {
806
+ generator.showToast('Prompt copied to clipboard!');
807
+ });
808
+ });
809
+
810
+ document.getElementById('enhanceBtn').addEventListener('click', () => {
811
+ const currentPrompt = document.getElementById('promptText').textContent;
812
+ const enhanced = generator.enhancePrompt(currentPrompt);
813
+ const promptText = document.getElementById('promptText');
814
+ promptText.textContent = enhanced;
815
+ document.getElementById('promptDisplay').classList.add('enhanced');
816
+ setTimeout(() => {
817
+ document.getElementById('promptDisplay').classList.remove('enhanced');
818
+ }, 1000);
819
+ generator.showToast('Prompt enhanced!');
820
+ });
821
+
822
+ document.getElementById('clearHistoryBtn').addEventListener('click', () => {
823
+ generator.history = [];
824
+ generator.updateHistoryDisplay();
825
+ generator.showToast('History cleared!');
826
+ });
827
+
828
+ // Tag selection
829
+ document.querySelectorAll('.tag').forEach(tag => {
830
+ tag.addEventListener('click', function() {
831
+ this.classList.toggle('active');
832
+ updateSelections();
833
+ });
834
+ });
835
+
836
+ function updateSelections() {
837
+ generator.selectedStyles.clear();
838
+ generator.selectedEnhancements.clear();
839
+ generator.selectedCamera.clear();
840
+
841
+ document.querySelectorAll('.tag.active').forEach(tag => {
842
+ const type = tag.dataset.type;
843
+ const value = tag.dataset.value;
844
+
845
+ if (type === 'style') generator.selectedStyles.add(value);
846
+ else if (type === 'enhancement') generator.selectedEnhancements.add(value);
847
+ else if (type === 'camera') generator.selectedCamera.add(value);
848
+ });
849
+ }
850
+
851
+ function updatePromptTags() {
852
+ const promptTags = document.getElementById('promptTags');
853
+ promptTags.innerHTML = '';
854
+
855
+ const allTags = [
856
+ ...generator.selectedStyles,
857
+ ...generator.selectedEnhancements,
858
+ ...generator.selectedCamera
859
+ ];
860
+
861
+ allTags.forEach(tag => {
862
+ const tagSpan = document.createElement('span');
863
+ tagSpan.className = 'prompt-tag';
864
+ tagSpan.textContent = tag;
865
+ promptTags.appendChild(tagSpan);
866
+ });
867
+ }
868
+
869
+ // Sliders
870
+ document.getElementById('detailSlider').addEventListener('input', function() {
871
+ generator.detailLevel = this.value;
872
+ document.getElementById('detailValue').textContent = this.value;
873
+ });
874
+
875
+ document.getElementById('creativitySlider').addEventListener('input', function() {
876
+ generator.creativity = this.value;
877
+ document.getElementById('creativityValue').textContent = this.value;
878
+ });
879
+
880
+ // Initialize with a random prompt on load
881
+ window.addEventListener('load', () => {
882
+ setTimeout(() => {
883
+ document.getElementById('generateBtn').click();
884
+ }, 500);
885
+ });
886
+ </script>
887
+ </body>
888
+ </html>