gregoWahoo commited on
Commit
3350cd8
·
verified ·
1 Parent(s): 11b0111

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +820 -19
index.html CHANGED
@@ -1,19 +1,820 @@
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>NSFW Prompt Generator for ZImage Turbo</title>
7
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
+ <style>
9
+ :root {
10
+ --primary-color: #6c5ce7;
11
+ --secondary-color: #a29bfe;
12
+ --accent-color: #fd79a8;
13
+ --dark-color: #2d3436;
14
+ --light-color: #f5f6fa;
15
+ --shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
16
+ --transition: all 0.3s ease;
17
+ }
18
+
19
+ * {
20
+ margin: 0;
21
+ padding: 0;
22
+ box-sizing: border-box;
23
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
24
+ }
25
+
26
+ body {
27
+ background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
28
+ min-height: 100vh;
29
+ display: flex;
30
+ flex-direction: column;
31
+ align-items: center;
32
+ padding: 20px;
33
+ }
34
+
35
+ header {
36
+ width: 100%;
37
+ max-width: 1200px;
38
+ display: flex;
39
+ justify-content: space-between;
40
+ align-items: center;
41
+ margin-bottom: 30px;
42
+ padding: 20px;
43
+ background-color: rgba(255, 255, 255, 0.9);
44
+ border-radius: 15px;
45
+ box-shadow: var(--shadow);
46
+ }
47
+
48
+ .logo {
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 10px;
52
+ text-decoration: none;
53
+ color: var(--dark-color);
54
+ }
55
+
56
+ .logo i {
57
+ font-size: 24px;
58
+ color: var(--primary-color);
59
+ }
60
+
61
+ .logo span {
62
+ font-weight: 700;
63
+ font-size: 18px;
64
+ }
65
+
66
+ .anycoder-link {
67
+ color: var(--primary-color);
68
+ text-decoration: none;
69
+ font-weight: 600;
70
+ font-size: 14px;
71
+ transition: var(--transition);
72
+ }
73
+
74
+ .anycoder-link:hover {
75
+ color: var(--accent-color);
76
+ }
77
+
78
+ .container {
79
+ width: 100%;
80
+ max-width: 1200px;
81
+ background-color: white;
82
+ border-radius: 20px;
83
+ box-shadow: var(--shadow);
84
+ padding: 30px;
85
+ margin-bottom: 30px;
86
+ }
87
+
88
+ h1 {
89
+ text-align: center;
90
+ color: var(--dark-color);
91
+ margin-bottom: 30px;
92
+ font-size: 28px;
93
+ font-weight: 700;
94
+ background: linear-gradient(to right, var(--primary-color), var(--accent-color));
95
+ -webkit-background-clip: text;
96
+ -webkit-text-fill-color: transparent;
97
+ }
98
+
99
+ .controls {
100
+ display: grid;
101
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
102
+ gap: 20px;
103
+ margin-bottom: 30px;
104
+ }
105
+
106
+ .control-group {
107
+ background-color: var(--light-color);
108
+ padding: 20px;
109
+ border-radius: 10px;
110
+ border: 2px solid transparent;
111
+ transition: var(--transition);
112
+ }
113
+
114
+ .control-group:hover {
115
+ border-color: var(--secondary-color);
116
+ }
117
+
118
+ .control-group h3 {
119
+ margin-bottom: 15px;
120
+ color: var(--primary-color);
121
+ font-size: 16px;
122
+ font-weight: 600;
123
+ }
124
+
125
+ .options {
126
+ display: flex;
127
+ flex-direction: column;
128
+ gap: 10px;
129
+ }
130
+
131
+ .option {
132
+ display: flex;
133
+ align-items: center;
134
+ gap: 10px;
135
+ padding: 10px;
136
+ background-color: white;
137
+ border-radius: 8px;
138
+ cursor: pointer;
139
+ transition: var(--transition);
140
+ border: 2px solid transparent;
141
+ }
142
+
143
+ .option:hover {
144
+ background-color: #e8e8e8;
145
+ }
146
+
147
+ .option input[type="radio"],
148
+ .option input[type="checkbox"] {
149
+ width: 18px;
150
+ height: 18px;
151
+ cursor: pointer;
152
+ }
153
+
154
+ .option label {
155
+ cursor: pointer;
156
+ font-size: 14px;
157
+ color: var(--dark-color);
158
+ }
159
+
160
+ .slider-container {
161
+ margin-top: 15px;
162
+ }
163
+
164
+ .slider-container label {
165
+ display: block;
166
+ margin-bottom: 8px;
167
+ font-size: 14px;
168
+ color: var(--dark-color);
169
+ }
170
+
171
+ .slider {
172
+ width: 100%;
173
+ height: 8px;
174
+ border-radius: 4px;
175
+ background: linear-gradient(to right, var(--secondary-color), var(--primary-color));
176
+ outline: none;
177
+ -webkit-appearance: none;
178
+ }
179
+
180
+ .slider::-webkit-slider-thumb {
181
+ -webkit-appearance: none;
182
+ appearance: none;
183
+ width: 20px;
184
+ height: 20px;
185
+ border-radius: 50%;
186
+ background: var(--accent-color);
187
+ cursor: pointer;
188
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
189
+ }
190
+
191
+ .slider::-moz-range-thumb {
192
+ width: 20px;
193
+ height: 20px;
194
+ border-radius: 50%;
195
+ background: var(--accent-color);
196
+ cursor: pointer;
197
+ border: none;
198
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
199
+ }
200
+
201
+ .buttons {
202
+ display: flex;
203
+ justify-content: center;
204
+ gap: 15px;
205
+ margin-top: 30px;
206
+ }
207
+
208
+ button {
209
+ padding: 12px 25px;
210
+ border: none;
211
+ border-radius: 8px;
212
+ font-size: 16px;
213
+ font-weight: 600;
214
+ cursor: pointer;
215
+ transition: var(--transition);
216
+ display: flex;
217
+ align-items: center;
218
+ gap: 8px;
219
+ }
220
+
221
+ .generate-btn {
222
+ background: linear-gradient(to right, var(--primary-color), var(--accent-color));
223
+ color: white;
224
+ }
225
+
226
+ .generate-btn:hover {
227
+ transform: translateY(-2px);
228
+ box-shadow: 0 5px 15px rgba(108, 92, 231, 0.4);
229
+ }
230
+
231
+ .copy-btn {
232
+ background-color: var(--light-color);
233
+ color: var(--primary-color);
234
+ border: 2px solid var(--primary-color);
235
+ }
236
+
237
+ .copy-btn:hover {
238
+ background-color: var(--primary-color);
239
+ color: white;
240
+ }
241
+
242
+ .result {
243
+ margin-top: 30px;
244
+ padding: 20px;
245
+ background-color: var(--light-color);
246
+ border-radius: 10px;
247
+ min-height: 100px;
248
+ border: 2px dashed var(--secondary-color);
249
+ position: relative;
250
+ }
251
+
252
+ .result h3 {
253
+ margin-bottom: 15px;
254
+ color: var(--primary-color);
255
+ font-size: 18px;
256
+ }
257
+
258
+ .prompt-text {
259
+ font-size: 16px;
260
+ line-height: 1.6;
261
+ color: var(--dark-color);
262
+ white-space: pre-wrap;
263
+ word-wrap: break-word;
264
+ }
265
+
266
+ .copy-notification {
267
+ position: fixed;
268
+ bottom: 20px;
269
+ right: 20px;
270
+ background-color: var(--primary-color);
271
+ color: white;
272
+ padding: 12px 20px;
273
+ border-radius: 8px;
274
+ box-shadow: var(--shadow);
275
+ display: none;
276
+ align-items: center;
277
+ gap: 8px;
278
+ z-index: 1000;
279
+ }
280
+
281
+ .loading {
282
+ display: none;
283
+ justify-content: center;
284
+ align-items: center;
285
+ gap: 10px;
286
+ margin-top: 20px;
287
+ }
288
+
289
+ .spinner {
290
+ width: 20px;
291
+ height: 20px;
292
+ border: 3px solid rgba(255, 255, 255, 0.3);
293
+ border-radius: 50%;
294
+ border-top-color: var(--accent-color);
295
+ animation: spin 1s ease-in-out infinite;
296
+ }
297
+
298
+ @keyframes spin {
299
+ to { transform: rotate(360deg); }
300
+ }
301
+
302
+ .additional-options {
303
+ margin-top: 20px;
304
+ padding-top: 20px;
305
+ border-top: 1px solid #ddd;
306
+ }
307
+
308
+ .additional-options h3 {
309
+ margin-bottom: 15px;
310
+ color: var(--primary-color);
311
+ font-size: 16px;
312
+ font-weight: 600;
313
+ }
314
+
315
+ .tags-container {
316
+ display: flex;
317
+ flex-wrap: wrap;
318
+ gap: 8px;
319
+ margin-bottom: 15px;
320
+ }
321
+
322
+ .tag {
323
+ background-color: white;
324
+ padding: 5px 12px;
325
+ border-radius: 20px;
326
+ font-size: 12px;
327
+ color: var(--dark-color);
328
+ border: 1px solid #ddd;
329
+ cursor: pointer;
330
+ transition: var(--transition);
331
+ }
332
+
333
+ .tag:hover {
334
+ background-color: var(--primary-color);
335
+ color: white;
336
+ border-color: var(--primary-color);
337
+ }
338
+
339
+ .tag.active {
340
+ background-color: var(--primary-color);
341
+ color: white;
342
+ border-color: var(--primary-color);
343
+ }
344
+
345
+ .custom-input {
346
+ width: 100%;
347
+ padding: 10px;
348
+ border: 2px solid #ddd;
349
+ border-radius: 8px;
350
+ font-size: 14px;
351
+ margin-top: 10px;
352
+ resize: vertical;
353
+ min-height: 60px;
354
+ font-family: inherit;
355
+ }
356
+
357
+ .custom-input:focus {
358
+ outline: none;
359
+ border-color: var(--primary-color);
360
+ }
361
+
362
+ @media (max-width: 768px) {
363
+ .container {
364
+ padding: 20px;
365
+ }
366
+
367
+ .controls {
368
+ grid-template-columns: 1fr;
369
+ }
370
+
371
+ header {
372
+ flex-direction: column;
373
+ gap: 15px;
374
+ text-align: center;
375
+ }
376
+
377
+ .buttons {
378
+ flex-direction: column;
379
+ }
380
+
381
+ button {
382
+ width: 100%;
383
+ justify-content: center;
384
+ }
385
+ }
386
+
387
+ @media (max-width: 480px) {
388
+ h1 {
389
+ font-size: 22px;
390
+ }
391
+
392
+ .container {
393
+ padding: 15px;
394
+ }
395
+
396
+ .control-group {
397
+ padding: 15px;
398
+ }
399
+ }
400
+ </style>
401
+ </head>
402
+ <body>
403
+ <header>
404
+ <a href="#" class="logo">
405
+ <i class="fas fa-magic"></i>
406
+ <span>NSFW Prompt Generator</span>
407
+ </a>
408
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link" target="_blank">
409
+ <i class="fas fa-code"></i> Built with anycoder
410
+ </a>
411
+ </header>
412
+
413
+ <div class="container">
414
+ <h1>Generate Detailed NSFW Prompts for ZImage Turbo</h1>
415
+
416
+ <div class="controls">
417
+ <div class="control-group">
418
+ <h3><i class="fas fa-layer-group"></i> Content Categories</h3>
419
+ <div class="options">
420
+ <div class="option">
421
+ <input type="checkbox" id="category-fantasy" checked>
422
+ <label for="category-fantasy">Fantasy/Sci-Fi</label>
423
+ </div>
424
+ <div class="option">
425
+ <input type="checkbox" id="category-realistic" checked>
426
+ <label for="category-realistic">Realistic</label>
427
+ </div>
428
+ <div class="option">
429
+ <input type="checkbox" id="category-anime" checked>
430
+ <label for="category-anime">Anime/Comic</label>
431
+ </div>
432
+ <div class="option">
433
+ <input type="checkbox" id="category-hentai">
434
+ <label for="category-hentai">Hentai</label>
435
+ </div>
436
+ <div class="option">
437
+ <input type="checkbox" id="category-cosplay">
438
+ <label for="category-cosplay">Cosplay</label>
439
+ </div>
440
+ </div>
441
+ </div>
442
+
443
+ <div class="control-group">
444
+ <h3><i class="fas fa-palette"></i> Art Style</h3>
445
+ <div class="options">
446
+ <div class="option">
447
+ <input type="radio" name="style" id="style-detailed" value="detailed" checked>
448
+ <label for="style-detailed">Highly Detailed</label>
449
+ </div>
450
+ <div class="option">
451
+ <input type="radio" name="style" id="style-artistic" value="artistic">
452
+ <label for="style-artistic">Artistic</label>
453
+ </div>
454
+ <div class="option">
455
+ <input type="radio" name="style" id="style-photorealistic" value="photorealistic">
456
+ <label for="style-photorealistic">Photorealistic</label>
457
+ </div>
458
+ <div class="option">
459
+ <input type="radio" name="style" id="style-sketch" value="sketch">
460
+ <label for="style-sketch">Sketch/Line Art</label>
461
+ </div>
462
+ <div class="option">
463
+ <input type="radio" name="style" id="style-cyberpunk" value="cyberpunk">
464
+ <label for="style-cyberpunk">Cyberpunk</label>
465
+ </div>
466
+ </div>
467
+ </div>
468
+
469
+ <div class="control-group">
470
+ <h3><i class="fas fa-sliders-h"></i> Intensity Level</h3>
471
+ <div class="slider-container">
472
+ <label for="intensity">NSFW Intensity: <span id="intensity-value">5</span>/10</label>
473
+ <input type="range" id="intensity" class="slider" min="1" max="10" value="5">
474
+ </div>
475
+ </div>
476
+
477
+ <div class="control-group">
478
+ <h3><i class="fas fa-lightbulb"></i> Special Features</h3>
479
+ <div class="options">
480
+ <div class="option">
481
+ <input type="checkbox" id="feature-multiple" checked>
482
+ <label for="feature-multiple">Multiple Characters</label>
483
+ </div>
484
+ <div class="option">
485
+ <input type="checkbox" id="feature-detailed-background">
486
+ <label for="feature-detailed-background">Detailed Background</label>
487
+ </div>
488
+ <div class="option">
489
+ <input type="checkbox" id="feature-special-effects">
490
+ <label for="feature-special-effects">Special Effects</label>
491
+ </div>
492
+ <div class="option">
493
+ <input type="checkbox" id="feature-close-up">
494
+ <label for="feature-close-up">Close-up Focus</label>
495
+ </div>
496
+ <div class="option">
497
+ <input type="checkbox" id="feature-outdoor">
498
+ <label for="feature-outdoor">Outdoor Setting</label>
499
+ </div>
500
+ </div>
501
+ </div>
502
+ </div>
503
+
504
+ <div class="additional-options">
505
+ <h3><i class="fas fa-tags"></i> Additional Tags</h3>
506
+ <p style="margin-bottom: 10px; color: #666; font-size: 14px;">Click tags to include them in your prompt</p>
507
+ <div class="tags-container">
508
+ <div class="tag" data-tag="ultra-detailed">Ultra Detailed</div>
509
+ <div class="tag" data-tag="8k resolution">8K Resolution</div>
510
+ <div class="tag" data-tag="cinematic lighting">Cinematic Lighting</div>
511
+ <div class="tag" data-tag="volumetric lighting">Volumetric Lighting</div>
512
+ <div class="tag" data-tag="hyper-realistic">Hyper Realistic</div>
513
+ <div class="tag" data-tag="dynamic pose">Dynamic Pose</div>
514
+ <div class="tag" data-tag="intricate details">Intricate Details</div>
515
+ <div class="tag" data-tag="vibrant colors">Vibrant Colors</div>
516
+ <div class="tag" data-tag="moody atmosphere">Moody Atmosphere</div>
517
+ <div class="tag" data-tag="fantasy setting">Fantasy Setting</div>
518
+ <div class="tag" data-tag="sci-fi elements">Sci-Fi Elements</div>
519
+ <div class="tag" data-tag="magical effects">Magical Effects</div>
520
+ </div>
521
+
522
+ <h3 style="margin-top: 20px;"><i class="fas fa-edit"></i> Custom Prompt Elements</h3>
523
+ <textarea class="custom-input" id="custom-prompt" placeholder="Add any specific elements you want to include in the prompt..."></textarea>
524
+ </div>
525
+
526
+ <div class="buttons">
527
+ <button class="generate-btn" id="generate-btn">
528
+ <i class="fas fa-magic"></i> Generate Prompt
529
+ </button>
530
+ <button class="copy-btn" id="copy-btn">
531
+ <i class="fas fa-copy"></i> Copy to Clipboard
532
+ </button>
533
+ </div>
534
+
535
+ <div class="loading" id="loading">
536
+ <div class="spinner"></div>
537
+ <span>Generating your NSFW prompt...</span>
538
+ </div>
539
+
540
+ <div class="result">
541
+ <h3><i class="fas fa-file-alt"></i> Generated Prompt</h3>
542
+ <div class="prompt-text" id="prompt-result">
543
+ Click "Generate Prompt" to create a detailed NSFW prompt for ZImage Turbo.
544
+ </div>
545
+ </div>
546
+ </div>
547
+
548
+ <div class="copy-notification" id="copy-notification">
549
+ <i class="fas fa-check-circle"></i>
550
+ <span>Prompt copied to clipboard!</span>
551
+ </div>
552
+
553
+ <script>
554
+ // DOM Elements
555
+ const generateBtn = document.getElementById('generate-btn');
556
+ const copyBtn = document.getElementById('copy-btn');
557
+ const promptResult = document.getElementById('prompt-result');
558
+ const copyNotification = document.getElementById('copy-notification');
559
+ const loading = document.getElementById('loading');
560
+ const intensitySlider = document.getElementById('intensity');
561
+ const intensityValue = document.getElementById('intensity-value');
562
+ const customPrompt = document.getElementById('custom-prompt');
563
+ const tags = document.querySelectorAll('.tag');
564
+
565
+ // Data for prompt generation
566
+ const categories = {
567
+ fantasy: [
568
+ "fantasy realm", "magical kingdom", "enchanted forest", "dragon's lair",
569
+ "elven city", "dwarven fortress", "ancient ruins", "mystical landscape",
570
+ "otherworldly dimension", "celestial palace"
571
+ ],
572
+ realistic: [
573
+ "modern apartment", "luxury bedroom", "beach house", "penthouse suite",
574
+ "hotel room", "studio apartment", "villa", "mansion", "yacht", "private jet"
575
+ ],
576
+ anime: [
577
+ "anime-style", "manga-inspired", "chibi proportions", "anime aesthetics",
578
+ "Japanese animation style", "cel-shaded", "anime character design"
579
+ ],
580
+ hentai: [
581
+ "hentai-style", "Japanese adult anime", "ecchi aesthetics", "hentai proportions",
582
+ "adult manga style", "explicit anime", "hentai character design"
583
+ ],
584
+ cosplay: [
585
+ "cosplay outfit", "character costume", "roleplay attire", "themed clothing",
586
+ "fantasy costume", "anime cosplay", "game character outfit"
587
+ ]
588
+ };
589
+
590
+ const styles = {
591
+ detailed: [
592
+ "hyper-detailed", "ultra-detailed", "intricate details", "highly detailed",
593
+ "meticulously detailed", "exquisitely detailed", "richly detailed"
594
+ ],
595
+ artistic: [
596
+ "artistic rendering", "painterly style", "watercolor texture", "oil painting style",
597
+ "digital painting", "artistic composition", "masterpiece quality"
598
+ ],
599
+ photorealistic: [
600
+ "photorealistic", "lifelike", "realistic textures", "true-to-life",
601
+ "hyper-realistic", "photo-quality", "realistic rendering"
602
+ ],
603
+ sketch: [
604
+ "sketch style", "line art", "pencil drawing", "ink sketch",
605
+ "charcoal drawing", "rough sketch", "detailed linework"
606
+ ],
607
+ cyberpunk: [
608
+ "cyberpunk aesthetic", "neon-lit", "futuristic cityscape", "high-tech environment",
609
+ "cybernetic enhancements", "digital rain", "holographic elements"
610
+ ]
611
+ };
612
+
613
+ const intensityDescriptors = {
614
+ 1: ["subtle", "suggestive", "implied", "hinted", "mild"],
615
+ 2: ["light", "gentle", "soft", "moderate", "tasteful"],
616
+ 3: ["moderate", "balanced", "standard", "typical", "average"],
617
+ 4: ["explicit", "detailed", "clear", "direct", "unambiguous"],
618
+ 5: ["intense", "graphic", "detailed", "explicit", "vivid"],
619
+ 6: ["very explicit", "highly detailed", "graphic", "intense", "detailed"],
620
+ 7: ["extremely explicit", "highly graphic", "very detailed", "intense", "explicit"],
621
+ 8: ["ultra-explicit", "extremely graphic", "highly detailed", "very intense", "explicit"],
622
+ 9: ["maximum explicit", "ultra-graphic", "extremely detailed", "highly intense", "explicit"],
623
+ 10: ["ultra-maximum explicit", "extremely graphic", "highly detailed", "very intense", "explicit"]
624
+ };
625
+
626
+ const features = {
627
+ multiple: [
628
+ "multiple characters", "group scene", "several people", "multiple figures",
629
+ "crowd of characters", "various individuals"
630
+ ],
631
+ background: [
632
+ "detailed background", "elaborate setting", "rich environment", "complex backdrop",
633
+ "intricate scenery", "detailed surroundings"
634
+ ],
635
+ effects: [
636
+ "special effects", "magical effects", "lighting effects", "visual effects",
637
+ "atmospheric effects", "dynamic effects"
638
+ ],
639
+ closeup: [
640
+ "close-up shot", "detailed focus", "intimate framing", "tight composition",
641
+ "detailed viewpoint", "focused perspective"
642
+ ],
643
+ outdoor: [
644
+ "outdoor setting", "natural environment", "open-air location", "exterior scene",
645
+ "outside setting", "al fresco environment"
646
+ ]
647
+ };
648
+
649
+ const additionalTags = [
650
+ "ultra-detailed", "8k resolution", "cinematic lighting", "volumetric lighting",
651
+ "hyper-realistic", "dynamic pose", "intricate details", "vibrant colors",
652
+ "moody atmosphere", "fantasy setting", "sci-fi elements", "magical effects"
653
+ ];
654
+
655
+ // Selected options
656
+ let selectedCategories = ['fantasy', 'realistic', 'anime'];
657
+ let selectedStyle = 'detailed';
658
+ let selectedFeatures = ['multiple'];
659
+ let selectedTags = [];
660
+ let intensityLevel = 5;
661
+
662
+ // Event Listeners
663
+ intensitySlider.addEventListener('input', function() {
664
+ intensityLevel = parseInt(this.value);
665
+ intensityValue.textContent = intensityLevel;
666
+ });
667
+
668
+ // Category checkboxes
669
+ document.querySelectorAll('input[type="checkbox"][id^="category-"]').forEach(checkbox => {
670
+ checkbox.addEventListener('change', function() {
671
+ const category = this.id.replace('category-', '');
672
+ if (this.checked) {
673
+ if (!selectedCategories.includes(category)) {
674
+ selectedCategories.push(category);
675
+ }
676
+ } else {
677
+ selectedCategories = selectedCategories.filter(c => c !== category);
678
+ }
679
+ });
680
+ });
681
+
682
+ // Style radio buttons
683
+ document.querySelectorAll('input[type="radio"][name="style"]').forEach(radio => {
684
+ radio.addEventListener('change', function() {
685
+ if (this.checked) {
686
+ selectedStyle = this.value;
687
+ }
688
+ });
689
+ });
690
+
691
+ // Feature checkboxes
692
+ document.querySelectorAll('input[type="checkbox"][id^="feature-"]').forEach(checkbox => {
693
+ checkbox.addEventListener('change', function() {
694
+ const feature = this.id.replace('feature-', '');
695
+ if (this.checked) {
696
+ if (!selectedFeatures.includes(feature)) {
697
+ selectedFeatures.push(feature);
698
+ }
699
+ } else {
700
+ selectedFeatures = selectedFeatures.filter(f => f !== feature);
701
+ }
702
+ });
703
+ });
704
+
705
+ // Tag selection
706
+ tags.forEach(tag => {
707
+ tag.addEventListener('click', function() {
708
+ this.classList.toggle('active');
709
+ const tagText = this.dataset.tag;
710
+
711
+ if (this.classList.contains('active')) {
712
+ if (!selectedTags.includes(tagText)) {
713
+ selectedTags.push(tagText);
714
+ }
715
+ } else {
716
+ selectedTags = selectedTags.filter(t => t !== tagText);
717
+ }
718
+ });
719
+ });
720
+
721
+ // Generate prompt
722
+ generateBtn.addEventListener('click', generatePrompt);
723
+
724
+ // Copy to clipboard
725
+ copyBtn.addEventListener('click', function() {
726
+ const promptText = promptResult.textContent;
727
+
728
+ if (promptText && promptText !== "Click \"Generate Prompt\" to create a detailed NSFW prompt for ZImage Turbo.") {
729
+ navigator.clipboard.writeText(promptText).then(function() {
730
+ // Show notification
731
+ copyNotification.style.display = 'flex';
732
+
733
+ // Hide notification after 3 seconds
734
+ setTimeout(function() {
735
+ copyNotification.style.display = 'none';
736
+ }, 3000);
737
+ }).catch(function(err) {
738
+ console.error('Could not copy text: ', err);
739
+ });
740
+ }
741
+ });
742
+
743
+ // Generate prompt function
744
+ function generatePrompt() {
745
+ loading.style.display = 'flex';
746
+ promptResult.textContent = "";
747
+
748
+ setTimeout(() => {
749
+ // Get random elements from each selected category
750
+ const categoryDescriptions = selectedCategories.map(category => {
751
+ const options = categories[category];
752
+ return options[Math.floor(Math.random() * options.length)];
753
+ });
754
+
755
+ // Get style description
756
+ const styleOptions = styles[selectedStyle];
757
+ const styleDescription = styleOptions[Math.floor(Math.random() * styleOptions.length)];
758
+
759
+ // Get intensity descriptors
760
+ const intensityDesc = intensityDescriptors[intensityLevel];
761
+ const intensityAdjective = intensityDesc[Math.floor(Math.random() * intensityDesc.length)];
762
+
763
+ // Get feature descriptions
764
+ const featureDescriptions = selectedFeatures.map(feature => {
765
+ const options = features[feature];
766
+ return options[Math.floor(Math.random() * options.length)];
767
+ });
768
+
769
+ // Build the prompt
770
+ let prompt = `Create a ${intensityAdjective} NSFW image featuring `;
771
+
772
+ // Add category descriptions
773
+ if (categoryDescriptions.length > 0) {
774
+ prompt += categoryDescriptions.join(", ") + ", ";
775
+ }
776
+
777
+ // Add style description
778
+ prompt += `with a ${styleDescription} art style, `;
779
+
780
+ // Add feature descriptions
781
+ if (featureDescriptions.length > 0) {
782
+ prompt += featureDescriptions.join(", ") + ", ";
783
+ }
784
+
785
+ // Add intensity level
786
+ prompt += `intensity level ${intensityLevel}/10, `;
787
+
788
+ // Add selected tags
789
+ if (selectedTags.length > 0) {
790
+ prompt += selectedTags.join(", ") + ", ";
791
+ }
792
+
793
+ // Add custom prompt elements
794
+ const customText = customPrompt.value.trim();
795
+ if (customText) {
796
+ prompt += customText + ", ";
797
+ }
798
+
799
+ // Add common NSFW prompt elements
800
+ prompt += `highly detailed, ultra HD, 8K resolution, cinematic composition, professional lighting, realistic textures, `;
801
+ prompt += `dynamic poses, intricate details, vibrant colors, moody atmosphere, ZImage Turbo optimized, `;
802
+ prompt += `masterpiece quality, award-winning composition, photorealistic rendering`;
803
+
804
+ // Clean up the prompt
805
+ prompt = prompt.replace(/,\s*,/g, ', ');
806
+ prompt = prompt.replace(/,\s*$/g, '');
807
+ prompt = prompt.replace(/\s+,/g, ',');
808
+ prompt = prompt.replace(/,\s*\./g, '.');
809
+
810
+ // Display the result
811
+ promptResult.textContent = prompt;
812
+ loading.style.display = 'none';
813
+ }, 1000);
814
+ }
815
+
816
+ // Initialize
817
+ intensityValue.textContent = intensityLevel;
818
+ </script>
819
+ </body>
820
+ </html>