| | <!DOCTYPE html> |
| | <html lang="en"> |
| | <head> |
| | <meta charset="UTF-8" /> |
| | <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | <meta name="description" content="Random prompts generator with multiple options for Stable Diffusion and Midjourney, AI Art generators." /> |
| | <link href="css/styles.css" rel="stylesheet" /> |
| | <link rel="icon" type="image/x-icon" href="assets/images/favicon.png" /> |
| | <title>Stable Diffusion Prompts Generator</title> |
| | </head> |
| | <body class="pb-8 text-xs text-fublu-600 sm:text-base md:text-lg lg:text-xl"> |
| | |
| | <div class="mb-7 lg:mb-10"> |
| | <nav class="flex items-center justify-between px-3 py-1 md:justify-center bg-fublu-800"> |
| | |
| | <ul class="flex items-center justify-center w-full max-w-5xl text-sm text-center lg:text-lg max-md:flex-col md:gap-20 text-fublu-50 max-md:hidden"> |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 randomLink"><a href="#" class="randomLink">Home</a></li> |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 portraitLink" |
| | ><a href="#" class="portraitLink">Portraits</a></li |
| | > |
| | <li class="flex-1 px-4 py-2 min-w-fit" |
| | ><img src="assets/images/logo.webp" alt="Stable Diffusion Prompts Generator" class="m-auto" width="50px" height="50px" |
| | /></li> |
| |
|
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 landscapesLink" |
| | ><a href="#" class="landscapesLink">Landscapes</a></li |
| | > |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 randomLink"><a href="#" class="randomLink">Random</a></li> |
| | </ul> |
| | |
| | |
| | <div class="z-50 flex justify-between w-full px-2 py-4 md:hidden"> |
| | <img src="assets/images/logo.webp" alt="Stable Diffusion Prompts Generator" width="50px" height="50px" /> |
| | <button class="relative group" id="hamburgerButton" name="hamburgerButton" aria-label="Menu Button"> |
| | <div |
| | class="relative flex overflow-hidden items-center justify-center rounded-full w-[50px] h-[50px] transform transition-all bg-slate-700 ring-0 ring-fublu-300 hover:ring-8 group-focus:ring-4 ring-opacity-30 duration-200" |
| | > |
| | <div class="flex flex-col justify-between w-[20px] h-[20px] transform transition-all duration-300 origin-center overflow-hidden"> |
| | <div class="bg-white h-[2px] w-7 transform transition-all duration-300 origin-left group-focus:translate-y-6 delay-100"></div> |
| | <div class="bg-white h-[2px] w-7 rounded transform transition-all duration-300 group-focus:translate-y-6 delay-75"></div> |
| | <div class="bg-white h-[2px] w-7 transform transition-all duration-300 origin-left group-focus:translate-y-6"></div> |
| |
|
| | <div |
| | class="absolute items-center justify-between transform transition-all duration-500 top-2.5 -translate-x-10 group-focus:translate-x-0 flex w-0 group-focus:w-12" |
| | > |
| | <div class="absolute bg-white h-[2px] w-5 transform transition-all duration-500 rotate-0 delay-300 group-focus:rotate-45"></div> |
| | <div class="absolute bg-white h-[2px] w-5 transform transition-all duration-500 -rotate-0 delay-300 group-focus:-rotate-45"></div> |
| | </div> |
| | </div> |
| | </div> |
| | </button> |
| | </div> |
| | |
| | </nav> |
| | |
| | <div class="fixed top-[90px] left-0 w-screen h-screen bg-opacity-70 bg-fublu-900 z-40 hidden" id="bgMobileMenu"> |
| | <nav class="flex items-center justify-between hidden px-3 pt-4 pb-8 md:justify-center bg-fublu-800" id="menuList"> |
| | <ul class="flex-col items-center justify-center w-full h-full max-w-5xl text-2xl text-center md:gap-20 text-fublu-50"> |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 randomLink"><a href="#" class="randomLink">Home</a></li> |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 portraitLink" |
| | ><a href="#" class="portraitLink">Portraits</a></li |
| | > |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 landscapesLink" |
| | ><a href="#" class="landscapesLink">Landscapes</a></li |
| | > |
| | <li class="flex-1 px-4 py-2 transition-all rounded-md cursor-pointer hover:bg-fublu-700 randomLink"><a href="#" class="randomLink">Random</a></li> |
| | </ul> |
| | </nav> |
| | </div> |
| | |
| | </div> |
| | |
| | |
| | <div class="px-5 lg:px-20"> |
| | |
| | <div class="flex flex-col items-center justify-center hidden text-center" id="portraitDiv"> |
| | <h2 class="mb-5 text-xl font-bold sm:text-3xl md:text-5xl lg:text-6xl">Portrait prompts generator</h2> |
| | <section class="mb-4 text-base sm:text-lg md:text-xl"> |
| | <h3 class="mb-2 font-bold">Type of shot</h3> |
| | <select name="portraitShotSelect" id="portraitShotSelect" class="p-2 text-center border-2 rounded-md border-fublu-800"> |
| | <option value="Random Shot" title="Choose a random type of portrait shot." selected>Random shot</option> |
| | <option value="Full-Length Shot" title="A shot that shows the person or object in its complete environment.">Full-length shot</option> |
| | <option value="American Shot" title="A shot that shows the person or object from the waist to the knees.">American shot</option> |
| | <option value="Medium Shot" title="A shot that shows the person or object from the waist to the hips or knees.">Medium shot</option> |
| | <option value="Close-Up Shot" title="A shot that shows the person or object up close, cut just above the shoulders or higher." |
| | >Close-up shot</option |
| | > |
| | <option value="Extreme Close-Up Shot" title="A shot that shows a very specific part of the person or object, such as the eyes, mouth, or hands." |
| | >Extreme close-up shot</option |
| | > |
| | </select> |
| | </section> |
| | </div> |
| | |
| | |
| | <div class="flex flex-col items-center justify-center hidden text-center" id="landscapesDiv"> |
| | <h2 class="mb-5 text-xl font-bold sm:text-3xl md:text-5xl lg:text-6xl">Landscapes prompts generator</h2> |
| | <section class="mb-4 text-base sm:text-lg md:text-xl"> |
| | <h3 class="mb-2 font-bold">Type of shot</h3> |
| | <select name="landscapesShotSelect" id="landscapesShotSelect" class="p-2 text-center border-2 rounded-md border-fublu-800"> |
| | <option value="Random Shot" title="Choose a random type of portrait shot." selected>Random shot</option> |
| | <option value="Long Shot" title="A shot that shows an overall view of the landscape.">Long shot</option> |
| | <option value="Medium Shot" title="A shot that shows a specific part of the landscape, such as a mountain or a valley.">Medium shot</option> |
| | <option value="Close-Up Shot" title="A shot that shows a particular element of the landscape, such as a flower or a rock.">Close-up shot</option> |
| | <option |
| | value="Extreme Close-Up Shot" |
| | title="A shot that shows a very specific detail of the landscape, such as the texture of a tree or the shape of clouds." |
| | >Extreme close-up shot</option |
| | > |
| | </select> |
| | </section> |
| | </div> |
| | |
| | |
| | <div class="flex flex-col items-center justify-center text-center" id="randomDiv"> |
| | <h2 class="mb-5 text-xl font-bold sm:text-3xl md:text-5xl lg:text-6xl">Random prompts generator</h2> |
| | </div> |
| | |
| | |
| | <div class="flex items-center justify-center mb-5"> |
| | <section class="flex flex-col items-center justify-center text-base text-center sm:text-lg md:text-xl w-80 placeholder:p-0 placeholder:text-center"> |
| | <h3 class="mb-4 font-bold">How many prompts to generate</h3> |
| | <input |
| | type="text" |
| | id="promptsNumberInput" |
| | name="promptsNumberInput" |
| | value="10" |
| | title="How many prompts you want to generate" |
| | class="w-24 px-2 py-1 mb-5 text-center border-2 border-solid rounded-md md:w-32 border-fublu-800" |
| | /> |
| | <button |
| | class="p-4 border-2 rounded-md text-fublu-800 md:w-80 bg-fublu-200 hover:bg-fublu-100 border-fublu-800" |
| | id="generatorOptionsButton" |
| | aria-label="Show options" |
| | >Show options</button |
| | > |
| | </section> |
| | </div> |
| | |
| | |
| | <div class="flex flex-col items-center hidden mb-7" id="inputsDisclaimer"> |
| | <p class="mb-5 text-center" |
| | >* All inputs are optional. If you leave them empty, random ideas from our lists will replace them accordingly to their core concept (places, |
| | characters, objects, artists...).</p |
| | > |
| | <button |
| | class="p-4 border-2 rounded-md text-thunderbird-50 md:w-80 bg-thunderbird-500 hover:bg-thunderbird-600 border-thunderbird-800" |
| | id="resetInputsButton" |
| | aria-label="Reset inputs" |
| | >Reset inputs</button |
| | > |
| | </div> |
| | <div class="flex flex-wrap justify-center hidden gap-5 mb-8" id="generatorOptionsDiv"> |
| | <section class="flex flex-col flex-1 max-w-md mb-3" id="charactersInputDiv"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <h3 class="font-bold text-center">Characters</h3> |
| | </div> |
| | <textarea |
| | id="charactersTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add characters to the generator, one per line (e.g. Medusa, Dog, Hercules...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-3" id="objectsInputDiv"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="objectsActive" |
| | id="objectsActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /><h3 class="font-bold text-center">Objects</h3> |
| | </div> |
| | <textarea |
| | id="objectsTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add Objects to the generator, one per line (e.g. Pan, Sword, Helmet...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-3"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="placesActive" |
| | id="placesActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Places</h3> |
| | </div> |
| | <textarea |
| | id="placesTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add places to the generator, one per line (e.g. Hidden Cave, Space Station, Underwater City...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-3"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="artistsActive" |
| | id="artistsActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Artists</h3> |
| | <input |
| | type="number" |
| | min="1" |
| | max="5" |
| | value="1" |
| | class="w-10 text-sm text-center border-2 border-solid rounded-md md:text-base border-fublu-800" |
| | title="How many artists do you want to include in the prompt ? (max: 5)" |
| | id="numArtists" |
| | /> |
| | </div> |
| | <textarea |
| | id="artistsTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add artists to the generator, one per line (e.g. Makoto Shinkai, Artgerm, Rebeca Saray...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-3"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="stylesActive" |
| | id="stylesActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Styles & Mediums</h3> |
| | <input |
| | type="number" |
| | min="1" |
| | max="3" |
| | value="1" |
| | class="w-10 text-sm text-center border-2 border-solid rounded-md md:text-base border-fublu-800" |
| | title="How many styles and mediums do you want to include in the prompt ? (max: 3)" |
| | id="numStyles" |
| | /> |
| | </div> |
| | <textarea |
| | id="stylesTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add styles and mediums to the generator, one per line (e.g. Anime, Futurism, Woodcut Print...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="colorsActive" |
| | id="colorsActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Colors</h3> |
| | </div> |
| | <textarea |
| | id="colorsTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add colors to the generator, one per line (e.g. Black and White, Complimentary Colors, Sepia...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="adjectivesActive" |
| | id="adjectivesActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Adjectives</h3> |
| | </div> |
| | <textarea |
| | id="adjectivesTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add adjectives to the generator, one per line (e.g. Mystic, Heavenly, Majestic...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5" id="elementsInputDiv"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="elementsActive" |
| | id="elementsActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Elements</h3> |
| | </div> |
| | <textarea |
| | id="elementsTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add elements to the generator, one per line (e.g. Water, Ice, Fire...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="improversActive" |
| | id="improversActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Improvers</h3> |
| | </div> |
| | <textarea |
| | id="improversTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add improvers to the generator, one per line (e.g. trending on Artstation, masterpiece...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5" id="prefixesInputDiv"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="prefixesActive" |
| | id="prefixesActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Prefixes</h3> |
| | </div> |
| | <textarea |
| | id="prefixesTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add prefixes to the generator, one per line (e.g. zombie, superhero, wizard...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | <section class="flex flex-col flex-1 max-w-md mb-5" id="suffixesInputDiv"> |
| | <div class="flex items-center justify-center gap-4 mb-4"> |
| | <input |
| | type="checkbox" |
| | name="suffixesActive" |
| | id="suffixesActive" |
| | checked |
| | class="align-middle rounded md:w-4 md:h-4 text-fublu-600 bg-fublu-900 border-fublu-300 focus:ring-fublu-500 focus:ring-2" |
| | /> |
| | <h3 class="font-bold text-center">Suffixes</h3> |
| | </div> |
| | <textarea |
| | id="suffixesTextArea" |
| | cols="30" |
| | rows="4" |
| | placeholder="Add suffixes to the generator, one per line (e.g. dancing, flying, summoning...)" |
| | class="p-3 border-2 rounded-md shadow-sm placeholder:p-0 placeholder:text-center border-fublu-800 focus-visible:border-fublu-900 shadow-fublu-200" |
| | ></textarea> |
| | </section> |
| | </div> |
| | |
| | |
| | <div class="flex justify-center mb-8"> |
| | <button |
| | class="p-4 text-white border-2 rounded-md w-60 bg-fublu-600 hover:bg-fublu-500 border-fublu-800" |
| | id="generatePromptsButton" |
| | aria-label="Generate prompts" |
| | >Generate prompts</button |
| | > |
| | </div> |
| | |
| | </div> |
| | |
| | |
| | <div class="relative w-11/12 max-w-6xl p-3 mx-auto mb-10 text-center border-2 rounded-md shadow-sm py-9 bg-fublu-100 border-fublu-800 shadow-fublu-200"> |
| | <button class="absolute text-xs top-2 right-2 md:text-sm" id="promptsCopyButton" aria-label="Copy Prompts" |
| | ><img src="assets/icons/copypaste.png" alt="Copy" title="Copy prompts" class="w-5 h-5 md:h-8 md:w-8" width="32px" height="32px" |
| | /></button> |
| | <div class="w-full text-xs md:text-sm lg:text-base text-fublu-800" id="prompts"></div> |
| | </div> |
| | |
| | |
| | <div class="flex flex-col items-center justify-center"> |
| | <p class="" |
| | >Made by <span class="font-bold">Kevin Mulier</span> | <a href="https://github.com/kevinmulier" class="font-bold">GitHub</a> | |
| | <a href="https://twitter.com/KevinMulierDev" class="font-bold">Twitter</a></p |
| | > |
| | </div> |
| | |
| | <script src="js/main.js"></script> |
| | </body> |
| | </html> |
| |
|