mirror of
https://github.com/sune-org/store.git
synced 2026-01-13 16:17:58 +00:00
1 line
41 KiB
JSON
1 line
41 KiB
JSON
[{"id":"kaie63p","name":"IMG Prompt Assist","pinned":false,"avatar":"","url":"gh://sune-org/store/img-prompt-assist.sune","updatedAt":1767276687176,"settings":{"model":"","temperature":"","top_p":"","top_k":"","frequency_penalty":"","repetition_penalty":"","min_p":"","top_a":"","verbosity":"","reasoning_effort":"default","system_prompt":"","html":"<div x-data=\"imgPromptAssist()\" class=\"p-3 space-y-3 text-sm\">\n <div class=\"flex items-center justify-between\">\n <span class=\"font-semibold text-base\">IMG Prompt Assist</span>\n <span class=\"text-xs text-gray-400\">v1.0.0</span>\n </div>\n\n <!-- Output Preview -->\n <div class=\"relative\">\n <div class=\"bg-gray-50 border rounded-xl p-3 min-h-[60px] text-xs break-words\" x-text=\"output || 'Select options below...'\"></div>\n <button @click=\"copy()\" class=\"absolute top-2 right-2 px-2 py-1 text-xs bg-black text-white rounded-lg hover:bg-gray-800\">\n <span x-text=\"copied ? '✓ Copied' : 'Copy'\"></span>\n </button>\n </div>\n\n <!-- Quick Actions -->\n <div class=\"flex gap-2 flex-wrap\">\n <button @click=\"clearAll()\" class=\"px-2 py-1 text-xs border rounded-lg hover:bg-gray-100\">Clear All</button>\n <button @click=\"randomize()\" class=\"px-2 py-1 text-xs border rounded-lg hover:bg-gray-100\">🎲 Random</button>\n <button @click=\"presetAnime()\" class=\"px-2 py-1 text-xs bg-purple-100 border-purple-200 border rounded-lg hover:bg-purple-200\">Anime Girl</button>\n <button @click=\"presetPhoto()\" class=\"px-2 py-1 text-xs bg-blue-100 border-blue-200 border rounded-lg hover:bg-blue-200\">Photo Real</button>\n <button @click=\"presetFantasy()\" class=\"px-2 py-1 text-xs bg-amber-100 border-amber-200 border rounded-lg hover:bg-amber-200\">Fantasy</button>\n </div>\n\n <!-- Tabs -->\n <div class=\"flex gap-1 overflow-x-auto no-scrollbar text-xs border-b\">\n <template x-for=\"t in tabs\" :key=\"t\">\n <button @click=\"tab=t\" :class=\"tab===t?'border-b-2 border-black font-medium':'text-gray-500'\" class=\"px-3 py-2 whitespace-nowrap\" x-text=\"t\"></button>\n </template>\n </div>\n\n <!-- Subject Tab -->\n <div x-show=\"tab==='Subject'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Gender/Type</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.subject.gender\"><button @click=\"toggle('gender',o)\" :class=\"sel.gender.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Age</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.subject.age\"><button @click=\"toggle('age',o)\" :class=\"sel.age.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Body Type</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.subject.body\"><button @click=\"toggle('body',o)\" :class=\"sel.body.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Ethnicity/Skin</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.subject.ethnicity\"><button @click=\"toggle('ethnicity',o)\" :class=\"sel.ethnicity.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Personality/Archetype (JP)</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.subject.archetype\"><button @click=\"toggle('archetype',o)\" :class=\"sel.archetype.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Face Tab -->\n <div x-show=\"tab==='Face'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Expression</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.face.expression\"><button @click=\"toggle('expression',o)\" :class=\"sel.expression.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Eyes</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.face.eyes\"><button @click=\"toggle('eyes',o)\" :class=\"sel.eyes.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Lips</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.face.lips\"><button @click=\"toggle('lips',o)\" :class=\"sel.lips.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Makeup</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.face.makeup\"><button @click=\"toggle('makeup',o)\" :class=\"sel.makeup.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Hair Tab -->\n <div x-show=\"tab==='Hair'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Hair Color</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.hair.color\"><button @click=\"toggle('hairColor',o)\" :class=\"sel.hairColor.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Hair Length</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.hair.length\"><button @click=\"toggle('hairLength',o)\" :class=\"sel.hairLength.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Hair Style</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.hair.style\"><button @click=\"toggle('hairStyle',o)\" :class=\"sel.hairStyle.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Clothing Tab -->\n <div x-show=\"tab==='Clothing'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Top</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.top\"><button @click=\"toggle('clothTop',o)\" :class=\"sel.clothTop.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Bottom</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.bottom\"><button @click=\"toggle('clothBottom',o)\" :class=\"sel.clothBottom.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Full Outfits</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.outfit\"><button @click=\"toggle('outfit',o)\" :class=\"sel.outfit.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Legwear</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.legwear\"><button @click=\"toggle('legwear',o)\" :class=\"sel.legwear.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Footwear</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.footwear\"><button @click=\"toggle('footwear',o)\" :class=\"sel.footwear.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Color Scheme</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.colorScheme\"><button @click=\"toggle('clothColor',o)\" :class=\"sel.clothColor.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Fabric/Material</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.clothing.fabric\"><button @click=\"toggle('fabric',o)\" :class=\"sel.fabric.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Accessories Tab -->\n <div x-show=\"tab==='Accessories'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Head Accessories</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.accessories.head\"><button @click=\"toggle('accHead',o)\" :class=\"sel.accHead.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Eyewear</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.accessories.eyewear\"><button @click=\"toggle('eyewear',o)\" :class=\"sel.eyewear.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Jewelry</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.accessories.jewelry\"><button @click=\"toggle('jewelry',o)\" :class=\"sel.jewelry.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Props</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.accessories.props\"><button @click=\"toggle('props',o)\" :class=\"sel.props.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Pose Tab -->\n <div x-show=\"tab==='Pose'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Pose Type</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.pose.type\"><button @click=\"toggle('poseType',o)\" :class=\"sel.poseType.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Hand Pose</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.pose.hands\"><button @click=\"toggle('hands',o)\" :class=\"sel.hands.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Action</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.pose.action\"><button @click=\"toggle('action',o)\" :class=\"sel.action.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Camera Tab -->\n <div x-show=\"tab==='Camera'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Shot Type</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.camera.shot\"><button @click=\"toggle('shot',o)\" :class=\"sel.shot.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Angle</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.camera.angle\"><button @click=\"toggle('angle',o)\" :class=\"sel.angle.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Focus</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.camera.focus\"><button @click=\"toggle('focus',o)\" :class=\"sel.focus.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Lighting Tab -->\n <div x-show=\"tab==='Lighting'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Light Type</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.lighting.type\"><button @click=\"toggle('lightType',o)\" :class=\"sel.lightType.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Light Direction</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.lighting.direction\"><button @click=\"toggle('lightDir',o)\" :class=\"sel.lightDir.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Mood</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.lighting.mood\"><button @click=\"toggle('mood',o)\" :class=\"sel.mood.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Background Tab -->\n <div x-show=\"tab==='Background'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Setting</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.background.setting\"><button @click=\"toggle('bgSetting',o)\" :class=\"sel.bgSetting.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Time of Day</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.background.time\"><button @click=\"toggle('timeOfDay',o)\" :class=\"sel.timeOfDay.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Weather</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.background.weather\"><button @click=\"toggle('weather',o)\" :class=\"sel.weather.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Season</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.background.season\"><button @click=\"toggle('season',o)\" :class=\"sel.season.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Style Tab -->\n <div x-show=\"tab==='Style'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Art Style</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.style.artStyle\"><button @click=\"toggle('artStyle',o)\" :class=\"sel.artStyle.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Quality</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.style.quality\"><button @click=\"toggle('quality',o)\" :class=\"sel.quality.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Render</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.style.render\"><button @click=\"toggle('render',o)\" :class=\"sel.render.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Color Palette</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.style.palette\"><button @click=\"toggle('palette',o)\" :class=\"sel.palette.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Vibe Tab -->\n <div x-show=\"tab==='Vibe'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Atmosphere</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.vibe.atmosphere\"><button @click=\"toggle('atmosphere',o)\" :class=\"sel.atmosphere.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Exposure Level</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.vibe.exposure\"><button @click=\"toggle('exposure',o)\" :class=\"sel.exposure.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Special Effects</div>\n <div class=\"flex flex-wrap gap-1\">\n <template x-for=\"o in opts.vibe.effects\"><button @click=\"toggle('effects',o)\" :class=\"sel.effects.includes(o)?'bg-black text-white':'bg-gray-100'\" class=\"px-2 py-1 text-xs rounded-lg\" x-text=\"o\"></button></template>\n </div>\n </div>\n </div>\n\n <!-- Custom Tab -->\n <div x-show=\"tab==='Custom'\" class=\"space-y-3\">\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Custom Tags (comma separated)</div>\n <textarea x-model=\"customTags\" placeholder=\"Enter custom tags...\" class=\"w-full border rounded-xl p-2 text-xs h-20 resize-none\"></textarea>\n </div>\n <div>\n <div class=\"text-xs font-medium text-gray-600 mb-1\">Negative Prompt</div>\n <textarea x-model=\"negative\" placeholder=\"Enter negative prompts...\" class=\"w-full border rounded-xl p-2 text-xs h-16 resize-none\"></textarea>\n </div>\n </div>\n\n</div>\n\n<script>\nfunction imgPromptAssist(){\n const K=window.SUNE?.id||'img_prompt_assist';\n const saved=JSON.parse(localStorage.getItem(K)||'{}');\n return {\n tab:'Subject',\n tabs:['Subject','Face','Hair','Clothing','Accessories','Pose','Camera','Lighting','Background','Style','Vibe','Custom'],\n copied:false,\n customTags:saved.customTags||'',\n negative:saved.negative||'',\n sel:Object.assign({\n gender:[],age:[],body:[],ethnicity:[],archetype:[],\n expression:[],eyes:[],lips:[],makeup:[],\n hairColor:[],hairLength:[],hairStyle:[],\n clothTop:[],clothBottom:[],outfit:[],legwear:[],footwear:[],clothColor:[],fabric:[],\n accHead:[],eyewear:[],jewelry:[],props:[],\n poseType:[],hands:[],action:[],\n shot:[],angle:[],focus:[],\n lightType:[],lightDir:[],mood:[],\n bgSetting:[],timeOfDay:[],weather:[],season:[],\n artStyle:[],quality:[],render:[],palette:[],\n atmosphere:[],exposure:[],effects:[]\n },saved.sel||{}),\n opts:{\n subject:{\n gender:['1girl','2girls','3girls','multiple girls','1boy','2boys','multiple boys','couple','group','solo','androgynous','genderless','futanari'],\n age:['loli','young teen','teenage','young adult','adult','mature','milf','elderly','ageless','child-like','youthful'],\n body:['petite','slender','slim','average','athletic','toned','curvy','voluptuous','thicc','chubby','plump','muscular','tall','short','long legs','wide hips','narrow waist','hourglass','pear-shaped','big breasts','medium breasts','small breasts','flat chest'],\n ethnicity:['pale skin','fair skin','light skin','tan','olive skin','brown skin','dark skin','ebony','porcelain','alabaster','freckled','rosy cheeks','sun-kissed','asian','japanese','korean','chinese','european','caucasian','latina','african','mixed race'],\n archetype:['kuudere','tsundere','yandere','dandere','deredere','himedere','kamidere','bakadere','sadodere','mayadere','bodere','hinedere','shundere','utsudere','yangire','megane','meganekko','ojou-sama','imouto','onee-san','senpai','kouhai','miko','gyaru','kogal','yamato nadeshiko','bokukko','chuunibyou','genki girl','goth','punk','tomboy','femme fatale','innocent','mysterious','elegant','playful','seductive','shy','confident','dominant','submissive']\n },\n face:{\n expression:['smiling','grinning','laughing','blushing','embarrassed','shy','pouty','serious','stoic','neutral','angry','crying','tears','teary eyes','sad','surprised','shocked','scared','disgusted','confused','thinking','dreamy','sleepy','tired','winking','ahegao','tongue out','lip bite','smirk','seductive gaze','bedroom eyes','innocent look','determined','fierce','gentle','melancholic','nostalgic','content','peaceful'],\n eyes:['big eyes','narrow eyes','round eyes','almond eyes','upturned eyes','downturned eyes','heterochromia','glowing eyes','sparkling eyes','half-lidded','closed eyes','one eye closed','eye contact','looking away','looking up','looking down','side glance','red eyes','blue eyes','green eyes','amber eyes','purple eyes','pink eyes','gold eyes','silver eyes','black eyes','gradient eyes','heart-shaped pupils','star pupils','slit pupils','empty eyes','innocent eyes','sharp eyes'],\n lips:['glossy lips','matte lips','natural lips','full lips','thin lips','pouty lips','parted lips','closed lips','smile','open mouth','teeth showing','fangs','tongue visible','lip gloss','lipstick','red lips','pink lips','nude lips','dark lips','wet lips'],\n makeup:['no makeup','natural makeup','light makeup','heavy makeup','smoky eyes','cat eye','winged eyeliner','false lashes','thick eyebrows','thin eyebrows','arched eyebrows','blush','contour','highlighter','glitter','gothic makeup','gyaru makeup','Korean makeup','Japanese makeup','dewy skin','matte skin','glass skin']\n },\n hair:{\n color:['black hair','brown hair','blonde','platinum blonde','golden blonde','strawberry blonde','ginger','red hair','auburn','pink hair','blue hair','purple hair','green hair','white hair','silver hair','gray hair','rainbow hair','ombre','gradient hair','two-tone','highlights','streaks','roots showing'],\n length:['very short hair','short hair','medium hair','long hair','very long hair','floor-length hair','waist-length','hip-length','shoulder-length','chin-length','pixie cut','bob cut','asymmetrical'],\n style:['straight hair','wavy hair','curly hair','messy hair','neat hair','windswept','wet hair','slicked back','side-swept','bangs','blunt bangs','side bangs','parted bangs','curtain bangs','forehead','no bangs','twin tails','pigtails','ponytail','side ponytail','high ponytail','low ponytail','braids','twin braids','side braid','french braid','fishtail braid','bun','double buns','odango','half up','updo','chignon','drill hair','ringlets','hime cut','ahoge','antenna hair','hair over eye','hair covering face','loose strands','flyaways','hair ornament','hair clip','hairpin','ribbon in hair','flower in hair','hair tie','scrunchie']\n },\n clothing:{\n top:['t-shirt','crop top','tank top','tube top','camisole','blouse','button-up shirt','dress shirt','sweater','cardigan','hoodie','jacket','blazer','vest','corset','bustier','bralette','sports bra','bikini top','halter top','off-shoulder','one-shoulder','strapless','turtleneck','mock neck','v-neck','crew neck','scoop neck','collared','oversized','fitted','tight','loose','sheer','see-through','backless','sleeveless','short sleeves','long sleeves','bell sleeves','puff sleeves'],\n bottom:['pants','jeans','shorts','hot pants','micro shorts','daisy dukes','skirt','mini skirt','micro skirt','pleated skirt','pencil skirt','a-line skirt','maxi skirt','high-waisted','low-rise','leggings','yoga pants','sweatpants','culottes','bloomers','panties visible','thong visible','no panties'],\n outfit:['dress','sundress','cocktail dress','evening gown','ball gown','wedding dress','little black dress','bodycon dress','wrap dress','shirt dress','sweater dress','qipao','cheongsam','kimono','yukata','hanbok','ao dai','sari','dirndl','sailor uniform','school uniform','seifuku','blazer uniform','gym uniform','buruma','cheerleader','maid outfit','french maid','nurse uniform','bunny suit','playboy bunny','cat keyhole lingerie','china dress','santa costume','witch costume','vampire costume','angel costume','demon costume','military uniform','police uniform','pilot uniform','office lady','business suit','casual','streetwear','athleisure','formal','elegant','gothic','lolita','gothic lolita','sweet lolita','punk','cyberpunk','steampunk','fantasy armor','bikini armor','leotard','bodysuit','catsuit','latex suit','plugsuit','swimsuit','one-piece swimsuit','bikini','string bikini','micro bikini','slingshot swimsuit','lingerie','babydoll','negligee','nightgown','pajamas','underwear only','naked apron','nude','naked','topless','bottomless'],\n legwear:['bare legs','thigh highs','over-knee socks','knee highs','ankle socks','no socks','stockings','fishnet stockings','lace stockings','hold-up stockings','garter belt','pantyhose','sheer pantyhose','opaque tights','fishnet tights','patterned tights','leg warmers','thigh strap','garter','black legwear','white legwear','striped legwear','polka dot'],\n footwear:['barefoot','bare feet','high heels','stilettos','platform heels','wedges','pumps','mary janes','loafers','oxfords','boots','ankle boots','knee-high boots','thigh-high boots','combat boots','cowboy boots','rain boots','sneakers','canvas shoes','sandals','flip flops','slippers','uwabaki','ballet flats','wedge sandals','gladiator sandals','socks with sandals'],\n colorScheme:['all black','all white','black and white','monochrome','red outfit','blue outfit','pink outfit','pastel colors','neon colors','earth tones','jewel tones','neutral colors','warm colors','cool colors','contrasting','matching','coordinated','mismatched','gradient','ombre effect','color blocked'],\n fabric:['cotton','silk','satin','velvet','lace','leather','latex','PVC','vinyl','denim','wool','cashmere','chiffon','organza','tulle','mesh','fishnet','sheer','transparent','opaque','matte','glossy','shiny','metallic','sequined','beaded','embroidered','printed','striped','plaid','checkered','polka dot','floral','animal print','camouflage']\n },\n accessories:{\n head:['hat','beret','cap','baseball cap','sun hat','witch hat','crown','tiara','headband','hairband','hair ribbon','bow','cat ears','bunny ears','fox ears','wolf ears','horns','halo','headphones','ear muffs','veil','mask','face mask','eye mask','glasses on head'],\n eyewear:['glasses','round glasses','rectangular glasses','cat-eye glasses','aviator glasses','rimless glasses','thick frame','sunglasses','monocle','eyepatch','goggles','3D glasses','heart-shaped glasses'],\n jewelry:['earrings','stud earrings','hoop earrings','drop earrings','necklace','choker','pendant','collar','chain necklace','pearl necklace','bracelet','bangle','cuff','anklet','ring','rings','belly button piercing','nose ring','lip ring','ear cuff','body chain','waist chain'],\n props:['umbrella','parasol','fan','folding fan','hand fan','book','phone','smartphone','camera','microphone','guitar','violin','sword','katana','staff','wand','magic wand','broom','plushie','teddy bear','balloon','flower','rose','bouquet','candy','lollipop','ice cream','cup','wine glass','cigarette','bag','handbag','backpack','shopping bags','gun','pistol']\n },\n pose:{\n type:['standing','sitting','kneeling','squatting','lying down','reclining','leaning','bending over','crouching','jumping','floating','flying','falling','running','walking','dancing','stretching','yoga pose','contrapposto','s-curve','dynamic pose','action pose','relaxed pose','tense pose','elegant pose','cute pose','sexy pose','pin-up pose','model pose','candid pose'],\n hands:['hands visible','hands on hips','hands behind back','hands in pockets','hand on face','hand on chin','hand on chest','hand on hair','hands clasped','fingers interlaced','peace sign','v sign','heart hands','finger pointing','beckoning','waving','reaching out','grabbing','holding','gripping','fist','open palm','spread fingers','finger to lips','covering mouth','covering eyes','prayer hands','namaste'],\n action:['looking at viewer','looking away','looking back','looking up','looking down','head tilt','hair flip','hair toss','blowing kiss','adjusting clothes','adjusting hair','putting on clothes','taking off clothes','undressing','dressing','eating','drinking','reading','writing','typing','gaming','cooking','cleaning','bathing','showering','sleeping','waking up','yawning','sneezing','crying','laughing','singing','humming','whispering','shouting']\n },\n camera:{\n shot:['portrait','headshot','bust shot','waist up','cowboy shot','thigh up','full body','wide shot','extreme close-up','close-up','medium shot','long shot','establishing shot','aerial shot','birds eye view','worms eye view'],\n angle:['front view','side view','3/4 view','profile','back view','from above','from below','from side','from behind','dutch angle','tilted','straight on','eye level','high angle','low angle','overhead','upskirt angle','downblouse angle'],\n focus:['sharp focus','soft focus','selective focus','deep focus','shallow depth of field','bokeh','motion blur','radial blur','tilt-shift','macro','fish eye','wide angle','telephoto','zoom','panoramic']\n },\n lighting:{\n type:['natural light','sunlight','daylight','golden hour','blue hour','moonlight','starlight','candlelight','firelight','neon lights','studio lighting','softbox','ring light','flash','spotlight','backlight','rim light','fill light','key light','ambient light','volumetric lighting','god rays','lens flare'],\n direction:['front lighting','side lighting','back lighting','top lighting','bottom lighting','rembrandt lighting','butterfly lighting','loop lighting','split lighting','broad lighting','short lighting','high key','low key','silhouette','chiaroscuro'],\n mood:['bright','dark','dim','shadowy','moody','dramatic','soft','harsh','warm','cool','neutral','colorful','monochromatic','contrasty','flat','dreamy','ethereal','mystical','eerie','romantic','sensual','intimate','steamy','hazy','foggy','misty','smoky']\n },\n background:{\n setting:['plain background','white background','black background','gradient background','simple background','detailed background','blurred background','abstract background','patterned background','indoor','outdoor','bedroom','bathroom','kitchen','living room','office','classroom','library','cafe','restaurant','bar','club','gym','pool','beach','park','garden','forest','mountain','city','street','alley','rooftop','balcony','bridge','train','bus','car','airplane','space','underwater','fantasy world','cyberpunk city','medieval castle','japanese temple','shrine','onsen','hot spring','bath house','locker room','dressing room','studio','stage','concert','festival','party','wedding'],\n time:['dawn','sunrise','morning','midday','afternoon','evening','sunset','dusk','twilight','night','midnight','golden hour','blue hour'],\n weather:['clear sky','cloudy','overcast','partly cloudy','sunny','rainy','stormy','thunderstorm','lightning','snowy','blizzard','foggy','misty','windy','humid','hot','cold','tropical','desert'],\n season:['spring','summer','autumn','fall','winter','cherry blossoms','sakura','autumn leaves','snow','christmas','halloween','new year','valentines','hanami','matsuri']\n },\n style:{\n artStyle:['anime','manga','realistic','photorealistic','hyper-realistic','semi-realistic','cartoon','comic','chibi','super deformed','moe','kawaii','bishoujo','shoujo','seinen','kemonomimi','furry','western','disney','pixar','ghibli','makoto shinkai','kyoto animation','ufotable','trigger','gainax','shaft','madhouse','production ig','wit studio','mappa','clamp','mucha','art nouveau','art deco','impressionist','expressionist','surrealist','pop art','ukiyo-e','ink wash','watercolor','oil painting','digital art','3D render','cel shaded','flat color','lineart','sketch','concept art','illustration','official art','fan art','doujinshi'],\n quality:['masterpiece','best quality','high quality','ultra quality','absurdres','highres','extremely detailed','intricate details','fine details','sharp','crisp','clean','polished','professional','award winning','trending','viral','aesthetic','beautiful','gorgeous','stunning','breathtaking','exquisite'],\n render:['8k','4k','HD','ultra HD','ray tracing','global illumination','ambient occlusion','subsurface scattering','physically based rendering','PBR','unreal engine','octane render','cinema 4D','blender','daz3d','vray','arnold','cycles','eevee'],\n palette:['vibrant','saturated','desaturated','muted','pastel','neon','fluorescent','warm palette','cool palette','earth tones','jewel tones','monochrome','sepia','vintage','retro','faded','washed out','high contrast','low contrast','complementary colors','analogous colors','triadic colors']\n },\n vibe:{\n atmosphere:['serene','peaceful','calm','relaxing','cozy','warm','inviting','cheerful','happy','joyful','playful','energetic','dynamic','exciting','thrilling','tense','suspenseful','mysterious','dark','gloomy','melancholic','sad','lonely','nostalgic','romantic','passionate','sensual','erotic','provocative','alluring','seductive','teasing','innocent','pure','angelic','demonic','evil','sinister','creepy','horror','cute','adorable','sweet','lovely','elegant','graceful','sophisticated','classy','glamorous','luxurious','opulent','minimalist','simple','clean','neat','messy','chaotic','wild','raw','gritty','edgy','cool','badass','powerful','majestic','epic','grand','magical','fantastical','otherworldly','ethereal','dreamlike','surreal','psychedelic','trippy'],\n exposure:['modest','covered','clothed','partially clothed','revealing','exposed skin','lots of skin','bare shoulders','bare back','bare midriff','bare legs','sideboob','underboob','cleavage','deep cleavage','visible navel','visible panties','visible bra','wardrobe malfunction','wet clothes','see-through when wet','body outline','form-fitting','skin tight','body conscious','suggestive','implied nudity','strategic covering','barely covered','almost nude'],\n effects:['sparkles','glitter','particles','petals','falling leaves','snow particles','bubbles','water droplets','steam','smoke','fire','flames','electricity','lightning effects','magic effects','aura','glow','bloom','light rays','lens flare','chromatic aberration','film grain','noise','vignette','dust','scratches','light leaks','rainbow','prism','holographic','iridescent','pearlescent','metallic sheen','wet look','oiled','sweaty','glistening']\n }\n },\n get output(){\n const parts=[];\n Object.keys(this.sel).forEach(k=>{if(this.sel[k].length)parts.push(...this.sel[k])});\n if(this.customTags.trim())parts.push(...this.customTags.split(',').map(t=>t.trim()).filter(Boolean));\n const main=parts.join(', ');\n if(this.negative.trim())return main+'\\n\\nNegative: '+this.negative.trim();\n return main;\n },\n toggle(key,val){\n const i=this.sel[key].indexOf(val);\n if(i>=0)this.sel[key].splice(i,1);else this.sel[key].push(val);\n this.save();\n },\n save(){localStorage.setItem(K,JSON.stringify({sel:this.sel,customTags:this.customTags,negative:this.negative}))},\n clearAll(){\n Object.keys(this.sel).forEach(k=>this.sel[k]=[]);\n this.customTags='';this.negative='';this.save();\n },\n async copy(){\n try{await navigator.clipboard.writeText(this.output);this.copied=true;setTimeout(()=>this.copied=false,1500)}catch{}\n },\n randomize(){\n this.clearAll();\n const pick=(arr,n=1)=>{const s=[...arr].sort(()=>Math.random()-.5);return s.slice(0,n)};\n this.sel.gender=pick(this.opts.subject.gender);\n this.sel.body=pick(this.opts.subject.body,2);\n this.sel.archetype=pick(this.opts.subject.archetype);\n this.sel.expression=pick(this.opts.face.expression);\n this.sel.hairColor=pick(this.opts.hair.color);\n this.sel.hairLength=pick(this.opts.hair.length);\n this.sel.hairStyle=pick(this.opts.hair.style,2);\n this.sel.outfit=pick(this.opts.clothing.outfit);\n this.sel.shot=pick(this.opts.camera.shot);\n this.sel.artStyle=pick(this.opts.style.artStyle);\n this.sel.quality=pick(this.opts.style.quality,2);\n this.sel.bgSetting=pick(this.opts.background.setting);\n this.save();\n },\n presetAnime(){\n this.clearAll();\n this.sel.gender=['1girl'];\n this.sel.body=['slender'];\n this.sel.archetype=['kuudere'];\n this.sel.expression=['neutral'];\n this.sel.hairColor=['black hair'];\n this.sel.hairLength=['long hair'];\n this.sel.hairStyle=['straight hair','bangs'];\n this.sel.outfit=['school uniform'];\n this.sel.legwear=['thigh highs'];\n this.sel.shot=['cowboy shot'];\n this.sel.artStyle=['anime','moe'];\n this.sel.quality=['masterpiece','best quality','extremely detailed'];\n this.sel.bgSetting=['classroom'];\n this.save();\n },\n presetPhoto(){\n this.clearAll();\n this.sel.gender=['1girl'];\n this.sel.age=['young adult'];\n this.sel.body=['athletic'];\n this.sel.ethnicity=['fair skin'];\n this.sel.expression=['smiling'];\n this.sel.hairColor=['brown hair'];\n this.sel.hairLength=['medium hair'];\n this.sel.hairStyle=['wavy hair'];\n this.sel.outfit=['casual'];\n this.sel.shot=['portrait'];\n this.sel.lightType=['natural light','golden hour'];\n this.sel.artStyle=['photorealistic','hyper-realistic'];\n this.sel.quality=['8k','ultra quality','sharp'];\n this.sel.bgSetting=['outdoor','park'];\n this.sel.render=['ray tracing'];\n this.save();\n },\n presetFantasy(){\n this.clearAll();\n this.sel.gender=['1girl'];\n this.sel.body=['slender','long legs'];\n this.sel.ethnicity=['pale skin'];\n this.sel.archetype=['elegant','mysterious'];\n this.sel.expression=['stoic'];\n this.sel.hairColor=['silver hair'];\n this.sel.hairLength=['very long hair'];\n this.sel.hairStyle=['straight hair','flowing'];\n this.sel.outfit=['fantasy armor','elegant'];\n this.sel.accHead=['crown'];\n this.sel.props=['sword'];\n this.sel.shot=['full body'];\n this.sel.lightType=['volumetric lighting','god rays'];\n this.sel.artStyle=['digital art','concept art'];\n this.sel.quality=['masterpiece','extremely detailed','intricate details'];\n this.sel.bgSetting=['fantasy world','medieval castle'];\n this.sel.atmosphere=['majestic','epic'];\n this.save();\n }\n }\n}\n</script>\n","extension_html":"<sune src='https://raw.githubusercontent.com/sune-org/store/refs/heads/main/sync.sune' private></sune>","hide_composer":true,"include_thoughts":false,"json_output":false,"img_output":false,"aspect_ratio":"1:1","image_size":"1K","ignore_master_prompt":false,"json_schema":""},"storage":{}}] |