@nodaro/prompts 1.42.1 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/{chunk-PHFOKGYS.js → chunk-2HJJBXGA.js} +6 -6
  2. package/dist/{chunk-PHFOKGYS.js.map → chunk-2HJJBXGA.js.map} +1 -1
  3. package/dist/{chunk-HL6PZ4A6.js → chunk-2OIKQ4WB.js} +5 -5
  4. package/dist/{chunk-HL6PZ4A6.js.map → chunk-2OIKQ4WB.js.map} +1 -1
  5. package/dist/{chunk-ZFOXGNLK.js → chunk-57PTYJJX.js} +4 -4
  6. package/dist/{chunk-ZFOXGNLK.js.map → chunk-57PTYJJX.js.map} +1 -1
  7. package/dist/{chunk-ZGA72NCT.cjs → chunk-C4FDHCEZ.cjs} +125 -125
  8. package/dist/{chunk-ZGA72NCT.cjs.map → chunk-C4FDHCEZ.cjs.map} +1 -1
  9. package/dist/chunk-CLHIPYTC.js +10913 -0
  10. package/dist/chunk-CLHIPYTC.js.map +1 -0
  11. package/dist/{chunk-QJACEKMZ.js → chunk-CPKYIVWP.js} +3 -3
  12. package/dist/{chunk-QJACEKMZ.js.map → chunk-CPKYIVWP.js.map} +1 -1
  13. package/dist/{chunk-JDNHMVEV.cjs → chunk-FCTK7RGO.cjs} +35 -35
  14. package/dist/{chunk-JDNHMVEV.cjs.map → chunk-FCTK7RGO.cjs.map} +1 -1
  15. package/dist/{chunk-IFRFYBGE.js → chunk-IKHRZ5UQ.js} +3 -3
  16. package/dist/{chunk-IFRFYBGE.js.map → chunk-IKHRZ5UQ.js.map} +1 -1
  17. package/dist/{chunk-SB7AYE6S.cjs → chunk-JHEZJKTX.cjs} +250 -6
  18. package/dist/chunk-JHEZJKTX.cjs.map +1 -0
  19. package/dist/{chunk-GIO77YH5.js → chunk-NN4FL7SB.js} +4 -4
  20. package/dist/{chunk-GIO77YH5.js.map → chunk-NN4FL7SB.js.map} +1 -1
  21. package/dist/{chunk-I3QS7BSY.cjs → chunk-OSKABA64.cjs} +8 -8
  22. package/dist/{chunk-I3QS7BSY.cjs.map → chunk-OSKABA64.cjs.map} +1 -1
  23. package/dist/{chunk-AXQK7UH7.cjs → chunk-OY7XOPDG.cjs} +49 -49
  24. package/dist/{chunk-AXQK7UH7.cjs.map → chunk-OY7XOPDG.cjs.map} +1 -1
  25. package/dist/{chunk-ZLRB5BVT.cjs → chunk-PHR4UETI.cjs} +18 -18
  26. package/dist/{chunk-ZLRB5BVT.cjs.map → chunk-PHR4UETI.cjs.map} +1 -1
  27. package/dist/chunk-S3H4TI6N.cjs +10948 -0
  28. package/dist/chunk-S3H4TI6N.cjs.map +1 -0
  29. package/dist/{chunk-6JABZ5OC.js → chunk-SMKIVT7P.js} +4 -4
  30. package/dist/{chunk-6JABZ5OC.js.map → chunk-SMKIVT7P.js.map} +1 -1
  31. package/dist/{chunk-CYMIXKFT.js → chunk-TXHFL725.js} +247 -3
  32. package/dist/chunk-TXHFL725.js.map +1 -0
  33. package/dist/{chunk-WARNUGXT.cjs → chunk-UNR34GYU.cjs} +191 -2
  34. package/dist/chunk-UNR34GYU.cjs.map +1 -0
  35. package/dist/{chunk-4YUXR23B.cjs → chunk-VAK4RUNU.cjs} +13 -13
  36. package/dist/{chunk-4YUXR23B.cjs.map → chunk-VAK4RUNU.cjs.map} +1 -1
  37. package/dist/{chunk-JCYK7NSR.js → chunk-XZXUU3YH.js} +191 -2
  38. package/dist/chunk-XZXUU3YH.js.map +1 -0
  39. package/dist/{chunk-H4JMZWOE.cjs → chunk-YCCQXX3U.cjs} +39 -39
  40. package/dist/{chunk-H4JMZWOE.cjs.map → chunk-YCCQXX3U.cjs.map} +1 -1
  41. package/dist/entries/assembly.cjs +29 -29
  42. package/dist/entries/assembly.js +6 -6
  43. package/dist/entries/picker-art.cjs +19 -19
  44. package/dist/entries/picker-art.d.cts +188 -0
  45. package/dist/entries/picker-art.d.ts +188 -0
  46. package/dist/entries/picker-art.js +1 -1
  47. package/dist/entries/picker-catalogs.cjs +57 -57
  48. package/dist/entries/picker-catalogs.js +5 -5
  49. package/dist/entries/pickers.cjs +374 -374
  50. package/dist/entries/pickers.d.cts +1 -1
  51. package/dist/entries/pickers.d.ts +1 -1
  52. package/dist/entries/pickers.js +3 -3
  53. package/dist/entries/presets.cjs +47 -31
  54. package/dist/entries/presets.d.cts +37 -1
  55. package/dist/entries/presets.d.ts +37 -1
  56. package/dist/entries/presets.js +1 -1
  57. package/dist/entries/prompt-builder.cjs +76 -76
  58. package/dist/entries/prompt-builder.js +5 -5
  59. package/dist/index.cjs +591 -575
  60. package/dist/index.d.cts +1 -1
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.js +10 -10
  63. package/package.json +2 -2
  64. package/src/__tests__/factory-preset-previews.test.ts +98 -25
  65. package/src/__tests__/factory-preset-references.test.ts +4 -0
  66. package/src/__tests__/fixtures/parameter-hint-golden.json +6 -6
  67. package/src/__tests__/preset-tiles-generated.test.ts +88 -0
  68. package/src/factory-presets/generate-image.ts +8 -0
  69. package/src/factory-presets/index.ts +10 -1
  70. package/src/factory-presets/preview-files.generated.ts +639 -1
  71. package/src/factory-presets/previews.ts +34 -2
  72. package/src/factory-presets/tiles/business-and-marketing.generated.ts +426 -0
  73. package/src/factory-presets/tiles/business.generated.ts +261 -0
  74. package/src/factory-presets/tiles/content-and-creative.generated.ts +286 -0
  75. package/src/factory-presets/tiles/family-and-events.generated.ts +222 -0
  76. package/src/factory-presets/tiles/home-and-spaces.generated.ts +231 -0
  77. package/src/factory-presets/tiles/index.generated.ts +32 -0
  78. package/src/factory-presets/tiles/layout.generated.ts +110 -0
  79. package/src/factory-presets/tiles/life-and-events.generated.ts +246 -0
  80. package/src/factory-presets/tiles/personal-photos.generated.ts +306 -0
  81. package/src/factory-presets/tiles/products-and-fashion.generated.ts +303 -0
  82. package/src/factory-presets/tiles/shorts-tiktok.generated.ts +156 -0
  83. package/src/factory-presets/tiles/social-and-ads.generated.ts +606 -0
  84. package/src/factory-presets/tiles/text.generated.ts +591 -0
  85. package/src/factory-presets/tiles/youtube.generated.ts +906 -0
  86. package/src/factory-presets/types.ts +14 -0
  87. package/src/photographer.ts +277 -0
  88. package/src/picker-art/look-preview-sets.ts +189 -0
  89. package/dist/chunk-CYMIXKFT.js.map +0 -1
  90. package/dist/chunk-JCYK7NSR.js.map +0 -1
  91. package/dist/chunk-LZ53F5BN.cjs +0 -5652
  92. package/dist/chunk-LZ53F5BN.cjs.map +0 -1
  93. package/dist/chunk-RB2F5JQF.js +0 -5621
  94. package/dist/chunk-RB2F5JQF.js.map +0 -1
  95. package/dist/chunk-SB7AYE6S.cjs.map +0 -1
  96. package/dist/chunk-WARNUGXT.cjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/brand-tokens.ts","../src/factory-presets/shared-image.ts","../src/factory-presets/tiles/youtube.generated.ts","../src/factory-presets/tiles/shorts-tiktok.generated.ts","../src/factory-presets/tiles/social-and-ads.generated.ts","../src/factory-presets/tiles/business.generated.ts","../src/factory-presets/tiles/life-and-events.generated.ts","../src/factory-presets/tiles/layout.generated.ts","../src/factory-presets/tiles/text.generated.ts","../src/factory-presets/tiles/business-and-marketing.generated.ts","../src/factory-presets/tiles/personal-photos.generated.ts","../src/factory-presets/tiles/products-and-fashion.generated.ts","../src/factory-presets/tiles/content-and-creative.generated.ts","../src/factory-presets/tiles/home-and-spaces.generated.ts","../src/factory-presets/tiles/family-and-events.generated.ts","../src/factory-presets/tiles/index.generated.ts","../src/factory-presets/generate-image.ts","../src/factory-presets/generate-video.ts","../src/factory-presets/music.ts","../src/factory-presets/voice.ts","../src/factory-presets/sfx.ts","../src/factory-presets/text.ts","../src/factory-presets/video-edit.ts","../src/factory-presets/switchx.ts","../src/factory-presets/motion-graphics.ts","../src/factory-presets/lottie-overlay.ts","../src/factory-presets/types.ts","../src/factory-presets/references.ts","../src/factory-presets/preview-files.generated.ts","../src/factory-presets/previews.ts","../src/factory-presets/index.ts","../src/caption-treatments.ts","../src/style-presets.ts","../src/object-asset-presets.ts","../src/factory-snippets/catalog.ts","../src/factory-snippets/types.ts","../src/factory-snippets/index.ts"],"names":[],"mappings":"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A,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CAAA;AAAA,EAClC,gCAAA,EAAkC,8CA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","file":"chunk-CLHIPYTC.js","sourcesContent":["import type { SupportedFontName } from \"@nodaro/shared/captions\"\n\n/**\n * Brand layer (Phase 3a). A pragmatic brand-token set — palette + fonts + logo —\n * authored/selected ONCE and threaded through the shot-sequence pipeline as\n * defaults. Preset palettes are adapted from HyperFrames' Apache-2.0\n * `hyperframes-creative/frame-presets`, re-grounded on SUPPORTED_FONT_NAMES.\n */\nexport interface BrandPalette {\n /** Canvas background. */\n bg: string\n /** Secondary surface (cards/panels). Carried for forward-compat; unconsumed in 3a. */\n bgAlt?: string\n /** Primary on-bg text. */\n text: string\n /** Secondary text. Carried for forward-compat; unconsumed in 3a. */\n textMuted?: string\n /** Primary accent — the brand color. */\n accent: string\n /** Secondary accent. Carried for forward-compat; unconsumed in 3a. */\n accent2?: string\n /** Hairline/divider. Carried for forward-compat; unconsumed in 3a. */\n line?: string\n}\n\nexport type BrandCasing = \"uppercase\" | \"lowercase\" | \"none\"\n\nexport interface BrandTypeSpec {\n /** CSS font-weight. MUST be a weight loaded for the role's font (guarded in remotion). */\n weight?: number\n /** absent => inherit call-site; \"none\" => force no transform; else force that transform. */\n casing?: BrandCasing\n /** letter-spacing in em; suppressed for Arabic at render time. */\n tracking?: number\n}\n\nexport interface BrandFonts {\n heading: SupportedFontName\n body: SupportedFontName\n headingType?: BrandTypeSpec\n bodyType?: BrandTypeSpec\n}\n\nexport interface BrandLogo {\n name: string\n tagline?: string\n /** Optional logo image — an https URL on an allowlisted Nodaro-CDN host (v1: URL only; obtain from the upload tools). */\n image?: string\n /** Optional hex color for a rounded panel rendered behind the logo. */\n imageBackdrop?: string\n}\n\nexport interface BrandTokens {\n palette: BrandPalette\n fonts: BrandFonts\n logo?: BrandLogo\n}\n\nexport interface BrandPresetMeta {\n id: BrandPresetId\n label: string\n mood: string\n description: string\n}\n\nexport type BrandPresetId =\n | \"midnight-violet\"\n | \"editorial-cream\"\n | \"cobalt-corporate\"\n | \"sandstone-warm\"\n | \"poster-contrast\"\n | \"mono-slate\"\n | \"vibrant-pulse\"\n | \"pastel-calm\"\n\nexport const BRAND_PRESET_IDS: readonly BrandPresetId[] = [\n \"midnight-violet\",\n \"editorial-cream\",\n \"cobalt-corporate\",\n \"sandstone-warm\",\n \"poster-contrast\",\n \"mono-slate\",\n \"vibrant-pulse\",\n \"pastel-calm\",\n]\n\nexport const BRAND_PRESETS: Record<BrandPresetId, BrandTokens> = {\n \"midnight-violet\": {\n palette: { bg: \"#0B0B12\", bgAlt: \"#16161F\", text: \"#FFFFFF\", textMuted: \"#A1A1AA\", accent: \"#8B5CF6\", accent2: \"#22D3EE\", line: \"#2A2A38\" },\n fonts: { heading: \"Montserrat\", body: \"Inter\", headingType: { weight: 700 }, bodyType: { weight: 400 } },\n },\n \"editorial-cream\": {\n palette: { bg: \"#F7F4EF\", bgAlt: \"#EDE8E0\", text: \"#1A1A1A\", textMuted: \"#5A5A5A\", accent: \"#C2410C\", line: \"#D6CEC1\" },\n fonts: { heading: \"Playfair Display\", body: \"Lora\", headingType: { weight: 400 }, bodyType: { weight: 400 } },\n },\n \"cobalt-corporate\": {\n palette: { bg: \"#0A1929\", bgAlt: \"#12263A\", text: \"#E8EEF5\", textMuted: \"#9FB3C8\", accent: \"#3B82F6\", line: \"#1E3A52\" },\n fonts: { heading: \"Inter\", body: \"Inter\", headingType: { weight: 700 }, bodyType: { weight: 400 } },\n },\n \"sandstone-warm\": {\n palette: { bg: \"#EDE8E0\", bgAlt: \"#E2DBD1\", text: \"#1A1A1A\", textMuted: \"#5A5A5A\", accent: \"#B45309\", line: \"#C9BEAE\" },\n fonts: { heading: \"Poppins\", body: \"Nunito\", headingType: { weight: 700 }, bodyType: { weight: 400 } },\n },\n \"poster-contrast\": {\n palette: { bg: \"#111111\", bgAlt: \"#1C1C1C\", text: \"#FFFFFF\", textMuted: \"#A3A3A3\", accent: \"#FACC15\", line: \"#333333\" },\n fonts: {\n heading: \"Anton\",\n body: \"Oswald\",\n headingType: { weight: 400, casing: \"uppercase\" },\n bodyType: { weight: 700, casing: \"uppercase\", tracking: 0.06 },\n },\n },\n \"mono-slate\": {\n palette: { bg: \"#1C1C1E\", bgAlt: \"#2C2C2E\", text: \"#F5F5F7\", textMuted: \"#98989D\", accent: \"#A1A1AA\", line: \"#3A3A3C\" },\n fonts: {\n heading: \"Roboto\",\n body: \"Roboto Mono\",\n headingType: { weight: 400, casing: \"uppercase\", tracking: 0.12 },\n bodyType: { weight: 400 },\n },\n },\n \"vibrant-pulse\": {\n palette: { bg: \"#0F172A\", bgAlt: \"#1E293B\", text: \"#F8FAFC\", textMuted: \"#94A3B8\", accent: \"#EC4899\", accent2: \"#22D3EE\", line: \"#334155\" },\n fonts: { heading: \"Raleway\", body: \"Open Sans\", headingType: { weight: 900 }, bodyType: { weight: 400 } },\n },\n \"pastel-calm\": {\n palette: { bg: \"#FDF2F8\", bgAlt: \"#FCE7F3\", text: \"#4C1D95\", textMuted: \"#7C3AED\", accent: \"#A855F7\", line: \"#F0D9EA\" },\n fonts: { heading: \"Nunito\", body: \"Lato\", headingType: { weight: 700 }, bodyType: { weight: 400 } },\n },\n}\n\nexport const BRAND_PRESET_META: Record<BrandPresetId, BrandPresetMeta> = {\n \"midnight-violet\": { id: \"midnight-violet\", label: \"Midnight Violet\", mood: \"bold / dark tech\", description: \"Near-black canvas, violet accent, cyan secondary — SaaS/tech launches.\" },\n \"editorial-cream\": { id: \"editorial-cream\", label: \"Editorial Cream\", mood: \"editorial / light\", description: \"Warm paper background, burnt-orange accent, serif type — magazine/editorial.\" },\n \"cobalt-corporate\": { id: \"cobalt-corporate\", label: \"Cobalt Corporate\", mood: \"corporate blue\", description: \"Deep navy, clean blue accent, Inter throughout — B2B/enterprise.\" },\n \"sandstone-warm\": { id: \"sandstone-warm\", label: \"Sandstone Warm\", mood: \"warm neutral\", description: \"Sandstone canvas, amber accent, rounded sans — approachable/lifestyle.\" },\n \"poster-contrast\": { id: \"poster-contrast\", label: \"Poster Contrast\", mood: \"high-contrast poster\", description: \"Ink-black, yellow accent, condensed display type — punchy/bold statements.\" },\n \"mono-slate\": { id: \"mono-slate\", label: \"Mono Slate\", mood: \"muted monochrome\", description: \"Slate greys, monospace body — technical/developer tone.\" },\n \"vibrant-pulse\": { id: \"vibrant-pulse\", label: \"Vibrant Pulse\", mood: \"vibrant\", description: \"Deep slate, magenta + cyan accents — energetic consumer/creator.\" },\n \"pastel-calm\": { id: \"pastel-calm\", label: \"Pastel Calm\", mood: \"calm pastel\", description: \"Soft pink canvas, purple accent — gentle/wellness/education.\" },\n}\n\n/** Resolve a preset-name string OR an inline BrandTokens object to BrandTokens. */\nexport function resolveBrandInput(brand: string | BrandTokens): BrandTokens {\n if (typeof brand === \"string\") {\n if (!Object.prototype.hasOwnProperty.call(BRAND_PRESETS, brand)) {\n throw new Error(\n `Unknown brand preset \"${brand}\". Valid presets: ${BRAND_PRESET_IDS.join(\", \")}.`,\n )\n }\n return BRAND_PRESETS[brand as BrandPresetId]\n }\n return brand\n}\n","import type { FactoryPreset } from \"./types.js\"\nimport { REALISM_FINISH, REALISM_PASS_INSTRUCTION } from \"../realism-wording.js\"\n\n/**\n * Selective-stylization presets shared by `modify-image` (transform an input photo) and\n * `generate-image` (use a connected reference image). `modify-image` is slated for deprecation in\n * favor of `generate-image`, so the catalog lives in ONE place to prevent the two from drifting —\n * when `modify-image` is removed, just drop its key from `FACTORY_PRESETS` below. The provider is\n * set per node by {@link editProviderFor}.\n */\nconst STYLIZED_SUBJECT: ReadonlyArray<{\n readonly slug: string\n readonly name: string\n readonly description: string\n readonly data: Readonly<Record<string, unknown>>\n}> = [\n {\n slug: \"cartoon-person-real-world\",\n name: \"Cartoon Person, Real World\",\n description: \"Subject → 3D cartoon, rest stays photoreal.\",\n data: {\n promptPrefix:\n \"Restyle ONLY the person in the reference image into a polished 3D animated character — Pixar/Disney sensibility: soft subsurface skin shading, expressive oversized eyes, smoothly stylized hair, clean rounded forms. Preserve their identity, exact pose, expression, and framing. Everything else stays untouched and fully photorealistic: keep the original background, props, clothing fabric and texture, and the scene's real lighting, shadows, and color grade. Composite the stylized figure into the real plate so it sits naturally — matched light direction, contact shadows, and depth.\",\n negativePrompt:\n \"changing the background, altering the unstylized parts, restyling clothing fabric or props, relighting the scene, distorting the subject, changing identity or pose, flat 2D look, extra limbs, deformed hands, warped face\",\n },\n },\n {\n slug: \"caricature-real-photo\",\n name: \"Caricature, Real Photo\",\n description: \"Exaggerated cartoon head on a real scene.\",\n data: {\n promptPrefix:\n \"Turn ONLY the person into a playful hand-illustrated caricature: enlarge the head, exaggerate their most recognizable features, and amplify expression with bold, confident linework and clean cel-style shading — while keeping them clearly identifiable. Leave everything else exactly as shot and photorealistic: the body proportions below the neck, the clothing, the background, props, and the scene's real lighting and shadows remain unchanged. Blend the caricature head onto the real photo seamlessly with matched lighting and a believable neckline.\",\n negativePrompt:\n \"changing the background, altering the unstylized parts, restyling the body or clothing, relighting the scene, distorting the subject beyond intent, losing likeness, photorealistic head, harsh seam at the neck, deformed features\",\n },\n },\n {\n slug: \"anime-person-real-bg\",\n name: \"Anime Person, Real Background\",\n description: \"Subject → 2D anime, real environment.\",\n data: {\n promptPrefix:\n \"Restyle ONLY the person as a crisp 2D anime character — clean ink outlines, flat cel shading with sharp shadow shapes, glossy stylized hair, and expressive anime eyes — while preserving their identity, pose, expression, and framing. Keep the real-world background, environment, props, and the original photographic lighting, shadows, and color completely untouched and photorealistic. Integrate the 2D figure into the live-action plate so the light direction and contact shadows read naturally.\",\n negativePrompt:\n \"changing the background, altering the unstylized parts, restyling the environment or props, relighting the scene, distorting the subject, 3D render look, photorealistic skin on the subject, extra fingers, warped anatomy, broken outlines\",\n },\n },\n {\n slug: \"real-person-cartoon-world\",\n name: \"Real Person, Cartoon World\",\n description: \"Inverse — real subject, stylized world.\",\n data: {\n promptPrefix:\n \"Inverse stylization: keep the PERSON completely photorealistic and unchanged — real skin, hair, clothing, identity, pose, and framing all preserved exactly. Restyle ONLY the surrounding world into a vibrant, hand-crafted cartoon environment: simplified painterly shapes, bold saturated colors, soft graphic shading, and whimsical stylized props and scenery. Light the real person to match the cartoon world's color and direction so they sit convincingly inside it, with believable contact shadows.\",\n negativePrompt:\n \"stylizing or cartoonifying the person, altering the subject's skin, face, hair or clothing, distorting the subject, changing the subject's pose, photorealistic background, flat lifeless scene, harsh cut-out edges around the person\",\n },\n },\n {\n slug: \"claymation-figure-real-set\",\n name: \"Claymation Figure, Real Set\",\n description: \"Subject → clay figure, real surroundings.\",\n data: {\n promptPrefix:\n \"Restyle ONLY the person into a tactile stop-motion claymation figure — molded plasticine surface with visible fingerprints, tool marks, subtle seams, and a soft matte sheen, in the handmade spirit of Aardman puppets — while keeping their identity, pose, expression, and framing. Everything else stays exactly as shot and photorealistic: the real background, set, props, and the scene's natural lighting and shadows are unchanged. Seat the clay figure into the real plate with matched light direction and grounded contact shadows.\",\n negativePrompt:\n \"changing the background or set, altering the unstylized parts, restyling props, relighting the scene, distorting the subject, smooth plastic toy look, glossy CGI surface, melted or deformed figure, missing fingerprints, extra limbs\",\n },\n },\n]\n\n/** Build the Stylized Subject presets for a node type (id = `<nodeType>/<slug>`). */\n/**\n * Both preset families are edits of a connected photo, so they run on the platform's edit model,\n * GPT Image 2.5 Flare (decided 2026-10-08 from the image model bake-off: it kept pose, framing and\n * product design on every edit). Modify Image takes the i2i id; Generate Image takes the t2i id,\n * which the platform swaps to the same i2i model whenever a reference image is connected.\n */\nexport function editProviderFor(nodeType: string): string {\n return nodeType === \"modify-image\" ? \"gpt-image-2-5-flare-i2i\" : \"gpt-image-2-5-flare\"\n}\n\nexport function stylizedSubjectFor(nodeType: string): FactoryPreset[] {\n return STYLIZED_SUBJECT.map((p) => ({\n id: `${nodeType}/${p.slug}`,\n name: p.name,\n description: p.description,\n group: \"Stylized Subject\",\n data: { provider: editProviderFor(nodeType), ...p.data },\n // Restyles the person in the connected photo (\"the reference image\").\n minReferences: 1,\n }))\n}\n\n/**\n * Image-edit presets shared by `modify-image` and `generate-image` (with a connected reference\n * image) — common photo-edit operations where the instruction lives in the prompt. Same\n * single-source rationale as STYLIZED_SUBJECT; when modify-image is removed, generate-image keeps them.\n */\nconst IMAGE_EDITS: ReadonlyArray<{\n readonly slug: string\n readonly name: string\n readonly description: string\n readonly data: Readonly<Record<string, unknown>>\n}> = [\n {\n slug: \"background-remove\",\n name: \"Remove Background\",\n description: \"Cut out the subject on white.\",\n data: {\n promptPrefix:\n \"Cleanly cut the main subject out of the reference image and place it on a pure, solid white background. Trace a crisp, accurate edge — preserve fine detail like hair strands, fur, and translucent or wispy edges — with no leftover background pixels and no color fringing. Keep the subject itself completely unchanged: same pose, lighting, color, and full silhouette, nothing cropped.\",\n negativePrompt:\n \"fringing, color halo, cut-off subject, leftover background, jagged or rough edges, missing hair detail, semi-transparent matte, drop shadow, gray or off-white background, altering the subject\",\n },\n },\n {\n slug: \"background-replace\",\n name: \"Replace Background\",\n description: \"Swap in a new scene.\",\n data: {\n prompt:\n \"Replace the background behind the subject with {scene || a sunlit Mediterranean terrace}. Keep the subject perfectly unchanged — identity, pose, edges, and proportions intact — and composite it into the new scene so it looks truly photographed there: relight the subject's rim and ambient tones to match the new environment, cast believable contact shadows, and match perspective, depth of field, and color grade.\",\n negativePrompt:\n \"altering the subject, changing the subject's pose or proportions, fringing, halo, floating subject, missing or wrong-direction shadows, mismatched lighting, flat composite, harsh cut-out edges, perspective mismatch\",\n },\n },\n {\n slug: \"colorize\",\n name: \"Colorize B&W Photo\",\n description: \"Natural color from grayscale.\",\n data: {\n promptPrefix:\n \"Colorize this black-and-white photograph with natural, historically plausible color. Give skin realistic, even tones, and assign believable hues to clothing, foliage, sky, and materials. Preserve every original detail, grain, contrast, and the exact composition — add color only, never invent or remove content.\",\n negativePrompt:\n \"oversaturated, anachronistic colors, neon or cartoon tones, color bleeding outside edges, blotchy or uneven skin, lost detail, altered composition, added or hallucinated objects, washed-out contrast\",\n },\n },\n {\n slug: \"restore-photo\",\n name: \"Restore Old Photo\",\n description: \"Repair scratches, denoise, sharpen.\",\n data: {\n promptPrefix:\n \"Restore this old, damaged photograph: remove scratches, dust, creases, stains, and noise, repair torn or missing areas by reconstructing what is plainly there, and gently recover sharpness and tonal detail. Keep the result authentic and true to the original — preserve identity, era, natural film grain, and composition. Repair only; do not beautify, restyle, or invent new features.\",\n negativePrompt:\n \"over-smoothed, plastic skin, waxy or airbrushed look, hallucinated details, invented faces or objects, changing identity or age, removing authentic grain, modern restyling, oversharpening halos, altered composition\",\n },\n },\n {\n slug: \"relight\",\n name: \"Relight Scene\",\n description: \"New lighting, same subject.\",\n data: {\n prompt:\n \"Relight the image with {lighting style || soft golden-hour key light from the left}. Re-derive highlights, shadows, ambient fill, and color temperature consistently across the whole frame for a believable, physically plausible result. Keep the subject, pose, expression, materials, and composition completely unchanged — only the lighting changes.\",\n negativePrompt:\n \"changing the subject, pose, expression, or composition, altering materials or clothing, flat or inconsistent lighting, blown-out highlights, crushed shadows, color casts on skin, double or contradictory light directions, repositioning anything\",\n },\n },\n {\n slug: \"restyle-whole\",\n name: \"Restyle (whole image)\",\n description: \"Apply an art style to everything.\",\n data: {\n prompt:\n \"Restyle the entire image in a {art style || soft watercolor illustration} look, applying the style consistently to the subject, background, and every element. Keep the composition, subject placement, and the subject clearly recognizable — reinterpret texture, color, and rendering, not the underlying content or layout.\",\n negativePrompt:\n \"changing the composition or layout, moving or removing the subject, losing recognizability, applying the style to only part of the image, photorealistic patches, added or hallucinated objects, distorted anatomy, inconsistent style across the frame\",\n },\n },\n {\n slug: \"doodle-overlay\",\n name: \"Doodle Overlay\",\n description: \"Hand-drawn marker doodles on top — photo stays untouched.\",\n data: {\n promptPrefix:\n \"Layer playful hand-drawn doodles ON TOP of the reference photo while keeping every pixel of the underlying photograph completely unchanged — same people, same colors, same lighting, same crop. Doodle style: wobbly hand-drawn felt-tip marker lines in white with a few yellow accents, like quick sketches on a printed photo. Add: loose outline traces hugging one or two key shapes, small sparkles and stars, a hand-drawn thought cloud or speech bubble with a short witty handwritten phrase that reacts to what is actually happening in the photo, and simple arrows or underlines pointing at fun details. Outlines only — never fill shapes with color. Never cover faces or the main focal point; place doodles in empty areas like sky, walls or margins. Keep it balanced: four to seven doodle elements total, charming and confident, not cluttered. The photo is the hero — the doodles are the seasoning.\",\n negativePrompt:\n \"altered photo, restyled or recolored scene, redrawn subject, covered faces, filled color shapes, digital sticker or emoji look, vector clipart, cluttered doodles, garbled or misspelled handwriting, watermark, blurry\",\n },\n },\n {\n slug: \"doodle-overlay-expressive\",\n name: \"Doodle Overlay · Expressive\",\n description: \"Looser free-form doodles — the model improvises.\",\n data: {\n promptPrefix:\n \"Decorate the reference photo with expressive hand-drawn doodles layered on top, keeping the underlying photograph itself completely unchanged. Free, confident hand-drawn marker linework — wobbly outlines, sparkles, squiggles, little flames or hearts where they fit the mood, and a short handwritten phrase that responds cleverly to the content of the photo (never a generic cliché). Mix of white and one or two bright accent colors. Outline style only, no filled shapes. Compose the doodles around the subject — never on top of faces or the focal point — using empty areas and edges. Loose, playful, zine-like energy: it should feel like a bored genius doodled on a printed photo. Keep the original image pixels intact beneath the doodle layer.\",\n negativePrompt:\n \"altered photo, restyled or recolored scene, covered faces, filled color blocks, sticker or clipart look, cliché phrases, garbled or misspelled handwriting, cluttered composition, watermark, blurry\",\n },\n },\n {\n slug: \"add-skin-realism\",\n name: \"Add Skin Realism\",\n description: \"Brings back visible skin texture — same person, same photo.\",\n data: { provider: \"nano-banana-2-1\", aspectRatio: \"auto\", resolution: \"2K\", promptPrefix: REALISM_PASS_INSTRUCTION },\n },\n {\n slug: \"natural-photo-finish\",\n name: \"Natural Photo Finish\",\n description: \"Takes out a rendered-looking finish, keeps the photo.\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"auto\",\n resolution: \"2K\",\n promptPrefix: `Keep this photo as it is and take out only what makes it look rendered: smoothed, waxy or airbrushed skin, a glow, over-sharpened edges, hair too perfect to be real. ${REALISM_FINISH} Otherwise the same people, framing, pose and background.`,\n },\n },\n {\n slug: \"phone-camera-look\",\n name: \"Phone Camera Look\",\n description: \"Re-finishes a photo as an everyday snapshot.\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"auto\",\n resolution: \"2K\",\n promptPrefix: `Re-finish this photo, changing nothing in it: ${REALISM_FINISH} Same people, framing, pose and background.`,\n },\n },\n {\n slug: \"undo-beauty-filter\",\n name: \"Undo Beauty Filter\",\n description: \"Reverses smoothing and reshaping on a real photo.\",\n data: {\n provider: \"seedream-5-pro\",\n // \"auto\" keeps the photo's shape: this model lists no native \"auto\", so on either node the\n // run takes its listed ratio nearest the connected photo.\n aspectRatio: \"auto\",\n quality: \"high\",\n promptPrefix: \"Undo the beauty filter on this photo: bring back the person's real skin texture, the natural shape of the face, jaw, nose and eyes, and the real colour of skin and lips. Change nothing else: the same person, expression, hair, clothing, framing and background.\",\n },\n },\n]\n\n/** Build the Edits presets for a node type (id = `<nodeType>/<slug>`). */\nexport function editsFor(nodeType: string): FactoryPreset[] {\n return IMAGE_EDITS.map((p) => ({\n id: `${nodeType}/${p.slug}`,\n name: p.name,\n description: p.description,\n group: \"Edits\",\n data: { provider: editProviderFor(nodeType), ...p.data },\n // Every edit operates on the connected photo.\n minReferences: 1,\n }))\n}\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"YouTube\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_YOUTUBE: readonly FactoryPreset[] = [\n {\n id: \"generate-image/thumb-versus-battle\",\n name: \"Versus Battle\",\n description: \"Tech reviewers, food tests, product comparisons. 'X vs Y' every week.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. Two generic unbranded smartphones with plain blank dark screens and no logos face the camera on opposite sides of the frame, one on a red half and one on a blue half, separated by a jagged lightning split down the middle. A giant chrome \\\"{TEXT || VS}\\\" badge in the center with a thick black outline. A creator's face peeks from the bottom center with a torn expression, looking between the two. Two bold saturated halves, white text only. Crisp, high contrast, no small text, no brand marks. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, apple logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-hero-object\",\n name: \"Hero Object\",\n description: \"Tech, gadgets, cooking tools, DIY. The product alone, no face, big and clean.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A single matte black wireless headphone set floats centered, huge, lit by a clean rim light, casting a soft shadow on a bright orange background with a subtle radial gradient. Headline \\\"{TEXT || WORTH IT?}\\\" in giant heavy white all-caps with a thick black outline at the top. No people. Three colors: orange, black, white. Crisp product photography, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"misspelled text, extra words, small unreadable text, watermark, logo, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-unboxing\",\n name: \"Unboxing\",\n description: \"Unboxing channels and gadget reviewers. Hands + box + shock.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. Close-up of two hands lifting the lid of a sleek white box, a bright glow spilling out, on a wooden desk; a creator's astonished face peeks above the box from the top right. Headline \\\"{TEXT || FINALLY HERE}\\\" in huge heavy yellow all-caps with a thick black outline across the bottom. Background: dark teal. Three colors: teal, yellow, white. Crisp, high contrast, no small text, no brand marks. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-tech-glitch\",\n name: \"Tech Glitch\",\n description: \"Cybersecurity, hacking stories, tech drama.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A young man in a dark hoodie lit by green monitor glow stares at the camera with a worried look, right third, his face partially broken by horizontal RGB glitch slices. Left: giant red block letters \\\"{TEXT || HACKED}\\\" with a thick black outline and digital glitch displacement over a dark background of scrolling green code. Three colors: black, green, red. Crisp, high contrast, no small readable text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-minimal-tech\",\n name: \"Minimal Tech\",\n description: \"Apple-style tech reviewers. Calm, white, one product, one word.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A single generic unbranded silver laptop seen slightly from above on a pure white seamless background with a soft shadow, a creator's calm face in a plain black t-shirt at the right edge, arms crossed, slight smirk. Headline \\\"{TEXT || OVERRATED.}\\\" in large heavy black all-caps across the top, lots of clean negative space. Three colors: white, black, one small red dot accent. Crisp, minimal, no other text, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, apple logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-ai-tool-reveal\",\n name: \"AI Tool Reveal\",\n description: \"AI influencers. 'This new AI does X' every day. Laptop glow, mind-blown face.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"A visually irresistible original AI tool reveal thumbnail with tangible physical miracle rather than purple abstract orb. Center LEFT a glowing matte black laptop opens to reveal a crisp luminous abstract 3D miniature production studio emerging from the SCREEN: tiny suspended cameras, floating building models, elegant data ribbons and a golden light plume in physical perspective. On RIGHT big beautiful expressive fictional female founder with genuinely amazed eyes, cropped upper torso, hands out of view, warm blue rim on face. At upper left giant immaculate bright ivory type exactly \\\"{TEXT || THIS AI}\\\" / \\\"{TEXT2 || IS INSANE}\\\", editorial offset yellow underscore. Rich charcoal-copper-teal studio backdrop, layered real reflections, no recognizable logos, no tiny UI junk. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-coding-tutorial\",\n name: \"Coding Tutorial\",\n description: \"Programming channels. Code editor, language badge, 'in 10 minutes'.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Professional cinematic coding tutorial YouTube thumbnail. Dark laptop developer workspace filmed at realistic angle with beautiful restrained emerald code-like syntax glowing on LARGE background monitor (not readable gibberish text). Fictional approachable developer in glasses occupies RIGHT third, confident playful smile, hands out of frame. LEFT massive white condensed headline exactly \\\"{TEXT || LEARN IT}\\\" / \\\"{TEXT2 || IN 10 MIN}\\\" with bright yellow \\\"10\\\" and strong shadow; type partially masks into real monitor to establish editorial depth. A single giant precise bright yellow pair of curly braces as chunky 3D shape behind the number 10, realistic monitor and skin light, subtle green-black photographic grain, sophisticated poster, no extra text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-ai-feature-grid\",\n name: \"AI Feature Grid\",\n description: \"AI educators: 'every new feature explained'. Today: hours in Figma making icon cards.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail. A row of four glossy rounded orange-glass cards, each with a simple glowing white line icon (a chat bubble, a network of nodes, a checklist, a branching fork) and a one-word label under it in clean white type: \\\"ADVISOR\\\", \\\"PROJECTS\\\", \\\"EVALS\\\", \\\"FORKS\\\". Below them the headline \\\"{TEXT || 15 CONCEPTS}\\\" in giant heavy white all-caps with a soft orange glow. Background: deep black-to-orange gradient with soft light rays. Three colors: black, orange, white. Crisp premium tech look, no logos, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/thumb-ai-os-icons\",\n name: \"AI Os Icons\",\n description: \"AI consultants selling systems to businesses. Icon row + one promise.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail. Headline \\\"{TEXT || AI OS}\\\" in giant heavy white all-caps at the top with a small glowing abstract starburst icon beside it. Center: a dark rounded panel holding five square outlined icon tiles in a row with simple white line icons (an ID card, a chip, stacked documents, a wrench, a brain) and tiny labels \\\"IDENTITY\\\", \\\"MEMORY\\\", \\\"SESSIONS\\\", \\\"SKILLS\\\", \\\"BRAIN\\\". Bottom: \\\"{TEXT2 || FOR YOUR BUSINESS}\\\" in heavy white all-caps. Background: near-black navy with a faint orange rim glow around the panel. Three colors: black, orange, white. Crisp, premium, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/thumb-new-model-drop\",\n name: \"New Model Drop\",\n description: \"AI news channels: 'model X released today, we tested it'. Daily.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A creator with raised eyebrows and an impressed open-mouth look holds a phone up, right third, lit by cool blue monitor light. Left: a big glowing abstract AI orb icon on a dark card with a red rounded \\\"NEW\\\" badge in the corner, and the headline \\\"{TEXT || JUST DROPPED}\\\" in giant heavy white all-caps with a thick black outline on two lines, a small \\\"{TEXT2 || WE TESTED IT}\\\" line in yellow under it. Three colors: dark navy, electric blue, yellow. Crisp, no logos, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/thumb-model-vs-model\",\n name: \"Model VS Model\",\n description: \"AI reviewers comparing two image or video models. 'Which is better?'\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. Two generated-looking portraits of the same woman side by side as two tall cards, the left slightly softer and the right sharper, each with a small white label \\\"MODEL A\\\" and \\\"MODEL B\\\" at the bottom. Between them a chrome \\\"VS\\\" badge. Headline \\\"{TEXT || WHICH IS BETTER?}\\\" in giant heavy white all-caps with a thick black outline across the top. A creator's squinting face peeks from the bottom center. Three colors: black, white, cyan accent. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/thumb-node-diagram\",\n name: \"Node Diagram\",\n description: \"Automation and AI-agent channels: one person at the hub of a clean workflow diagram.\",\n group: \"YouTube\",\n section: \"AI & Tech\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Ultra-clear futuristic but sophisticated educational technology YouTube thumbnail, PHOTO-REAL adult fictional founder with confident engaging expression on RIGHT, wearing simple charcoal crewneck. On LEFT a visually precise LARGE workflow hub: central luminous amber circle containing a crisp generic person silhouette, connected with exactly six slender clean arcs to distinct clear outline icons for calendar, email, chat, chart, document, code, arranged in radial constellation. Tight professional navy-black and amber visual language, no UI screenshot, no illegible interface junk. Along bottom left huge two-line immaculate white typography exactly \\\"{TEXT || ONE PERSON}\\\" / \\\"{TEXT2 || WHOLE TEAM}\\\". Center-to-right handover has gentle cinematic rim light; refined SaaS design not chaotic sci-fi. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-finance-shock\",\n name: \"Finance Shock\",\n description: \"Personal finance and crypto channels. Loss or gain number, head in hands.\",\n group: \"YouTube\",\n section: \"Finance & Crypto\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A man in his 30s in a white shirt with both hands gripping his hair, mouth open in despair, filling the right third, flat bright light. Behind him a dark stock chart crashing down in red with a thick red arrow. Headline \\\"{TEXT || I LOST IT ALL}\\\" in giant heavy white all-caps with a thick black outline across the left two thirds, stacked on two lines. Three colors: black, white, red. Crisp, no small numbers or labels. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-earnings-proof\",\n name: \"Earnings Proof\",\n description: \"Side-hustle and make-money-online creators. Screenshot of a dashboard, proud point.\",\n group: \"YouTube\",\n section: \"Finance & Crypto\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A young woman points with a proud grin at a large floating rounded dashboard card beside her showing only the number \\\"{TEXT || $12,847}\\\" in giant bold green digits and a small bar \\\"{TEXT2 || THIS MONTH}\\\" under it, nothing else on the card. Background: dark navy with a soft spotlight. A thick neon-green arrow points at the number. Three colors: navy, white, neon green. Crisp, no other numbers or text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-analytics-growth\",\n name: \"Analytics Growth\",\n description: \"Channel-growth and marketing creators. One rocket line, one big number.\",\n group: \"YouTube\",\n section: \"Finance & Crypto\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A smiling creator in a bright room, fists raised in celebration, left third. Right two thirds: one huge simple line chart rising steeply to the upper right, drawn as a thick neon-green line with a glowing arrowhead over a dark rounded card, no axis labels. Headline \\\"{TEXT || 0 TO 100K}\\\" in heavy white all-caps with a thick black outline across the top. Three colors: dark teal, white, neon green. Crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-crypto-pump\",\n name: \"Crypto Pump\",\n description: \"Crypto YouTubers / Telegram signal sellers. Daily covers, coin + rocket + number.\",\n group: \"YouTube\",\n section: \"Finance & Crypto\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A glowing gold generic crypto coin with a plain abstract symbol (no real logo) flies upward trailing fire like a rocket, right half, over a dark background with a neon-green candlestick chart rising. Left: a young man with a greedy wide grin rubbing his hands, lit by green glow. Headline \\\"{TEXT || 100X?}\\\" in giant heavy neon-green all-caps with a thick black outline at the top. Three colors: black, gold, neon green. Crisp, no small text, no real coin logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"bitcoin logo, brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-stock-call\",\n name: \"Stock Call\",\n description: \"Stock-picking channels. Buy/sell verdict, chart, serious face.\",\n group: \"YouTube\",\n section: \"Finance & Crypto\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A man in a navy blazer with a serious, slightly raised eyebrow look points at a large candlestick chart behind him with a thick green upward arrow, left third. Right: headline \\\"{TEXT || BUY NOW?}\\\" in giant heavy white all-caps with a thick black outline on two lines, and a small green \\\"BUY\\\" badge and a red \\\"SELL\\\" badge under it. Background: dark slate. Three colors: slate, green, red. Crisp, no tickers or small numbers. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"ticker symbols, brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-creator-milestone\",\n name: \"Creator Milestone\",\n description: \"Any creator hitting a number: 100K, 1M, first paycheck.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Immensely emotional premium creator milestone thumbnail. A fictional adult woman creator with authentic tears of joy and mouth-open smile photographed in close-up on the RIGHT, hugging an elegantly designed plain gold metal award plaque with NO platform icon or text. Warm golden backlight and beautiful crisp free-floating paper confetti at multiple depths. On LEFT gigantic dimensional matte polished gold numerals exact \\\"{TEXT || 100K}\\\", wrapping behind her shoulder with physically coherent occlusion and realistic shadows, underneath clean small but readable \\\"{TEXT2 || SUBSCRIBERS}\\\". Dark sumptuous garnet velvet bokeh background, dramatic premium campaign craft, photographic realism, celebratory mood, crisp at small scale, absolutely no other typography. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-founder-story\",\n name: \"Founder Story\",\n description: \"Entrepreneurs and startup channels. Office, number, 'how I built'.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A founder in his 30s in a plain black t-shirt stands with arms crossed in a bright modern office with a whiteboard behind him, right half, confident half-smile. Left: headline \\\"{TEXT || $0 TO $1M}\\\" in giant heavy black all-caps with a thick white outline on a warm yellow background panel, a thin upward arrow under it. Three colors: yellow, black, white. Crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-course-launch\",\n name: \"Course Launch\",\n description: \"Course sellers and coaches. Webinar look, laptop, 'free training'.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A smiling woman in a blazer gestures toward an open laptop whose screen shows a blurred slide with a big play button, bright clean home office, right two thirds. Left: headline \\\"{TEXT || FREE TRAINING}\\\" in giant heavy white all-caps with a thick dark-blue outline on two lines, and a small orange \\\"LIVE\\\" badge. Three colors: white, dark blue, orange. Crisp, trustworthy, no readable slide text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-motivation\",\n name: \"Motivation\",\n description: \"Motivation and mindset channels. Dark stage, spotlight, one punch line.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A man in a black t-shirt on a dark stage under a single white spotlight, mid-speech, hand clenched in a fist, intense look, right half, black background with haze. Left: headline \\\"{TEXT || NO EXCUSES}\\\" in giant heavy white condensed all-caps on two lines, the second line in bright orange. Three colors: black, white, orange. Cinematic, crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-stage-talk\",\n name: \"Stage Talk\",\n description: \"Conference speakers and SaaS founders reposting talks.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A speaker in a light shirt and glasses talks on a dark conference stage, lit by a spotlight with blue stage lights behind, left half, mid-gesture. Right half: headline stacked on three lines in heavy condensed all-caps: \\\"{TEXT || FEATURES}\\\" in white, \\\"{TEXT2 || WON'T}\\\" in bright yellow, \\\"{TEXT3 || SAVE YOU}\\\" in white, over a dark background. Three colors: dark navy, yellow, white. Crisp, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/thumb-screen-portals\",\n name: \"Screen Portals\",\n description: \"Ads and marketing creators: floating phone screens sweep around a surprised host.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Wild yet completely readable creator business thumbnail. A fictional energetic young male creator in middle third with truly surprised expression, hands close to chest and not obscuring screens. Multiple physically convincing floating vertical smartphone SCREEN PORTALS sweep around him in perspective, each a sharp distinct abstract advertising campaign or analytics design, two foreground screens giant, others receding behind, lively cyan and orange dimensional lighting. Behind him warmly lit creator studio, believable shadows and reflections, no actual brand icons. On lower third enormous clean exact text \\\"{TEXT || 100 ADS}\\\" in punchy white-black heavy type, with secondary small but legible text \\\"{TEXT2 || IN 5 MIN}\\\". Highly dynamic premium commercial composition, no cramped tiny user-interface text, no duplicate fingers. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-copy-me-arrow\",\n name: \"Copy Me Arrow\",\n description: \"Entrepreneur channels: from anonymous silhouette to confident founder, one big yellow arrow.\",\n group: \"YouTube\",\n section: \"Business & Creators\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Viral entrepreneurial transformation thumbnail, two compelling fictional adults. LEFT a hooded anonymous creator rendered as black silhouette against smoky golden wall; RIGHT a powerful confident female founder in minimalist black blazer lit by warm cinematic sunrise, expressive authentic face. A single unmistakable huge sculpted curved YELLOW arrow crossing from anonymous left to successful right, bright dimensional cast shadow. Top center custom clean white type exactly \\\"{TEXT || COPY THIS}\\\" in two lines, with one small red x over the old silhouette and a green tick near the founder. Controlled editorial contrast, powerful story clear at mobile scale, realistic compositing, no other labels or unreadable words. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-challenge-timer\",\n name: \"Challenge Timer\",\n description: \"Challenge channels: 24 hours, 30 days, last to leave.\",\n group: \"YouTube\",\n section: \"Gaming & Challenges\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Dramatic 24-hour challenge storytelling thumbnail. Cinematic photoreal fictional young adult athlete on left in damp dark activewear sprinting across stormy rooftop at night, face close enough to reveal tense determination; atmospheric rain, wind and red edge lighting. On RIGHT absolutely massive pristine realistic red LED digital clock in physical industrial steel housing, exact readable digits \\\"{TEXT || 24:00:00}\\\" and giant ivory condensed headline \\\"{TEXT2 || 24 HOURS}\\\" arranged above clock, no other text. A single diagonal lightning-like white divider and subtle sparks bridge left and right, physically consistent camera perspective, high-end dramatic movie poster instead of generic timer UI, safe human anatomy, no brands. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-tier-list\",\n name: \"Tier List\",\n description: \"Gaming and ranking channels. S to D rows, judging face.\",\n group: \"YouTube\",\n section: \"Gaming & Challenges\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Highly polished clean gamer ranking thumbnail with premium interface graphic craft, not a spreadsheet screenshot. On LEFT enormous dimensional vertical tier-list panel tilted in perspective, FIVE rows each clearly labeled S A B C D exactly once, distinctive saturated band colors, each row containing only large generic blank square game item cards. An oversized GOLD 3D crown rests above S-tier, a vivid downward red accent arrow to D-tier. On RIGHT close-up of a fictional adult male gaming creator wearing black sweater with humorous disapproving face, hands safely out of frame. At top giant crisp white word exactly \\\"{TEXT || RANKED}\\\", tightly spaced typography partly behind host, dramatic soft light, no logo or nonsensical text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-gaming-rush\",\n name: \"Gaming Rush\",\n description: \"Gaming channels. Headset, neon, explosive moment.\",\n group: \"YouTube\",\n section: \"Gaming & Challenges\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Wildly premium high energy gaming highlight thumbnail. On LEFT giant cropped photoreal fictional gamer wearing matte white headphones, throwing his head back in joyous victory, perfect natural facial anatomy; on RIGHT dramatic original fantasy video-game world with enormous electric violet armored cyber-creature appearing through collapsing portal, cinematic cinematic particles, neon crimson jagged lightning, splashing fragments and smoke. Giant intensely designed exact word \\\"{TEXT || CLUTCH!}\\\" in angular custom lime-green/white 3D extruded letters slices across scene at an upward angle, some shards IN FRONT of type and some behind. Rich layered game art with convincing physical scale, strong high-contrast mobile readability, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-gaming-golden-item\",\n name: \"Gaming Golden Item\",\n description: \"Gaming YouTubers: huge face + glowing golden loot + fantasy map. The #1 gaming format.\",\n group: \"YouTube\",\n section: \"Gaming & Challenges\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism for the person, vivid game-art for the background. A young gamer with white headphones, mouth wide open in amazement, points at a giant glowing golden sniper rifle floating on the left over a colorful floating-island game world with purple and blue clouds; a small gold crown hovers above the rifle. No text. Saturated, high contrast, crisp, no game logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"game logo, brand logo, text, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/thumb-squad-chaos\",\n name: \"Squad Chaos\",\n description: \"Gaming / challenge squads: three friends, one vehicle, chaos.\",\n group: \"YouTube\",\n section: \"Gaming & Challenges\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism blended with vivid game art. Three young men in matching white shirts and pilot harnesses cling to the back of a flying blue vehicle over a cartoonish city, screaming and laughing, the front one holding up a gold trophy crown toward the camera. Headline \\\"{TEXT || WHO WINS?}\\\" in giant heavy yellow all-caps with a thick black outline across the bottom. Saturated, crisp, no game logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"game logo, brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/thumb-before-after\",\n name: \"Before After\",\n description: \"Home makeover, beauty, fitness, car detailing. Split screen is the format of the whole category.\",\n group: \"YouTube\",\n section: \"Health, Fitness & Beauty\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Visually spectacular yet trustworthy home makeover split-screen thumbnail, EXACT SAME CAMERA ANGLE AND ROOM GEOMETRY on both halves. Left overcrowded dull lived-in small bedroom, unmade bed, aged lighting, clutter; right same windows, wall boundaries, floor and proportions but professionally re-designed Japandi bedroom with oak bed, calm linens, greenery, gorgeous sunlight. Dramatic 50/50 vertical split with a clean bright separation line; huge subtle embossed \\\"{TEXT || BEFORE}\\\" at bottom left, and \\\"{TEXT2 || AFTER}\\\" at bottom right, each perfectly spelled and readable. Tiny fictional smiling female interior designer portrait cutout along center seam, natural hands cropped out. Rich warm cinematography, not impossible architectural changes. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-fitness-transform\",\n name: \"Fitness Transform\",\n description: \"Fitness coach / transformation channel. Body split + day count.\",\n group: \"YouTube\",\n section: \"Health, Fitness & Beauty\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. Split screen of the same man: left side a tired slouched posture in a plain grey t-shirt with a flat cool tint, right side standing tall, athletic, in a black tank top under warm gym lighting, flexing slightly with a confident grin. A giant \\\"{TEXT || 90 DAYS}\\\" in heavy white all-caps with a thick black outline across the center, and a thick neon-green arrow pointing from left to right. Three colors: grey, black, neon green. Crisp, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"misspelled text, extra words, small unreadable text, watermark, logo, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-beauty-makeup\",\n name: \"Beauty Makeup\",\n description: \"Beauty creators. Half face done / half not, product in hand.\",\n group: \"YouTube\",\n section: \"Health, Fitness & Beauty\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Top-tier beauty creator transformation thumbnail, gorgeous extremely crisp authentic editorial beauty close-up of one fictional adult woman's face occupying RIGHT TWO THIRDS, vertical split directly along her face center. Left bare skin with natural pores and subtle under-eye darkness; right same exact face with striking professional modern glam eyeliner, luminous cheekbone and glossy raspberry lip; exact feature proportions align across split (no changed identity). In the LEFT third oversized beautiful thick ivory fashion typography exactly \\\"{TEXT || 5 MIN}\\\" on top and \\\"{TEXT2 || GLAM}\\\" below, subtle lipstick coral underlining, small reflective makeup brush as diagonal visual lead, pearl-cream and vibrant fuchsia studio gradients, exquisite realistic skin, no clutter, no extra text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-diet-plan\",\n name: \"Diet Plan\",\n description: \"Dietitians and nutrition coaches. Plate split, calories, 'what I eat'.\",\n group: \"YouTube\",\n section: \"Health, Fitness & Beauty\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism, top-down split. Left half: a greasy fast-food meal on a tray with a thick red X over it; right half: a colorful healthy bowl with salmon, avocado and greens with a big green checkmark. A dietitian in a white top smiles from the bottom center holding a fork. Headline \\\"{TEXT || EAT THIS NOT THAT}\\\" in giant heavy white all-caps with a thick black outline across the top. Three colors: white, red, green. Crisp, bright, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-doctor-health\",\n name: \"Doctor Health\",\n description: \"Doctors and health channels. White coat, one organ or symptom, warning.\",\n group: \"YouTube\",\n section: \"Health, Fitness & Beauty\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A doctor in a white coat with a stethoscope holds up one finger with a serious cautionary look, left half, clean clinic background. Right: a large simple glowing red heart icon with a warning triangle. Headline \\\"{TEXT || DOCTORS WON'T TELL YOU}\\\" in giant heavy white all-caps with a thick black outline on three lines. Three colors: light blue, red, white. Crisp, clean, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-travel-wanderlust\",\n name: \"Travel Wanderlust\",\n description: \"Travel vloggers. Epic place, small person, one claim.\",\n group: \"YouTube\",\n section: \"Food & Travel\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A turquoise lagoon between towering limestone cliffs at golden hour, a woman with a backpack standing small on a rock in the lower left looking at it, a bright red circle drawn around her. Headline \\\"{TEXT || HIDDEN PARADISE}\\\" in huge heavy white all-caps with a thick black outline across the top. Saturated and sunny. Three colors: turquoise, gold, white. Crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-map-pin\",\n name: \"Map Pin\",\n description: \"Travel, geopolitics and history channels. A map, a pin, a question.\",\n group: \"YouTube\",\n section: \"Food & Travel\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A stylized dark world map fills the frame with one country glowing orange and a giant red location pin dropped on it. A creator's face in the lower left with a curious raised-eyebrow look. Headline \\\"{TEXT || WHAT HAPPENED HERE?}\\\" in heavy white all-caps with a thick black outline on two lines at the top. Three colors: dark navy, orange, white. Crisp, no small labels on the map. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, map labels, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-food-feast\",\n name: \"Food Feast\",\n description: \"Food vloggers and recipe channels. Close food, hungry face, one price or claim.\",\n group: \"YouTube\",\n section: \"Food & Travel\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A huge glossy double smash burger with caramelized onions, crisp pickles, lettuce and a dripping red-orange sauce, no cheese and no dairy at all, next to a pile of crispy golden fries, fills the left half, extremely appetizing under warm light. Right: a young man with a hungry wide-eyed grin holding a fork, mouth open. Headline \\\"{TEXT || $5 FEAST}\\\" in giant heavy white all-caps letters with a thick red outline, top-left, fully inside the frame. Three colors: red, white, golden brown. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"cheese, melted cheese, dairy, bacon, watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/thumb-vlog-bright\",\n name: \"Vlog Bright\",\n description: \"Travel and lifestyle vloggers: a sunny street, a big smile, hand-painted three-line type.\",\n group: \"YouTube\",\n section: \"Food & Travel\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Fun premium lifestyle YouTube thumbnail that instantly invites a click. Fictional joyful young woman photographed in golden sunny Lisbon-style outdoor cafe street, realistic candid big smile, wind-swept curls, holding an iced coffee, sparkling highlights. Giant playful hand-painted hot-pink and tangerine three-line typography on the LEFT spelling exactly \\\"{TEXT || BEST}\\\" / \\\"{TEXT2 || DAY}\\\" / \\\"{TEXT3 || EVER}\\\". Cut-paper white border around subject overlaps the letters. Add just two tiny hand-drawn star doodles, strong 3D foreground-midground separation, authentic bustling photo background in tasteful defocus, editorial mixed-media finish. The face is large and joyful, crisp readable at 250px, no other readable words. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-science-explainer\",\n name: \"Science Explainer\",\n description: \"Science and education channels. One big object, one wow claim.\",\n group: \"YouTube\",\n section: \"Experts & Teachers\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Premium scientific discovery documentary thumbnail, conceptual photography not generic sci-fi wallpaper. A HUGE physically convincing brilliant glass sphere on RIGHT contains a miniature stormy glowing ocean planet with crisp curved atmosphere, thin bright orbital halo and dark mathematical observational lab beyond; realistic glass caustics. On LEFT close-up fictional female scientist in dark jacket with genuine astonished expression as turquoise light from sphere illuminates her eyes, hand cropped below frame. The sharp two-line white and light-aqua headline reads exactly \\\"{TEXT || THIS CHANGES}\\\" / \\\"{TEXT2 || EVERYTHING}\\\", intelligently layered behind scientist and in front of dark atmosphere, editorial documentary art direction, moody emerald-charcoal tones, no extra symbols/text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-real-estate-agent\",\n name: \"Real Estate Agent\",\n description: \"Agents and house-tour channels. House hero, price, 'inside'.\",\n group: \"YouTube\",\n section: \"Experts & Teachers\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A modern white villa with a pool at dusk, warm interior lights on, fills the frame; a sharply dressed agent in the lower left gestures toward it with an inviting smile. Headline \\\"{TEXT || $2.5M HOUSE TOUR}\\\" in giant heavy white all-caps with a thick black outline across the top. A small gold key icon beside the text. Three colors: dusk blue, gold, white. Crisp, aspirational, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-legal-explainer\",\n name: \"Legal Explainer\",\n description: \"Lawyers on YouTube. Gavel, verdict word, authoritative face.\",\n group: \"YouTube\",\n section: \"Experts & Teachers\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A lawyer in a dark suit with a knowing raised eyebrow, arms folded, right third, in front of dark wood bookshelves. Left: a wooden gavel large in the foreground and the headline \\\"{TEXT || IS THIS LEGAL?}\\\" in giant heavy white all-caps with a thick black outline on two lines, the word \\\"LEGAL\\\" in gold. Three colors: dark brown, gold, white. Crisp, authoritative, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-language-learning\",\n name: \"Language Learning\",\n description: \"Language teachers. Flags, speech bubble, '30 days'.\",\n group: \"YouTube\",\n section: \"Experts & Teachers\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A cheerful young teacher points at a big white speech bubble beside her head containing the word \\\"HOLA!\\\" in bold black letters, left half, bright clean background. Right: headline \\\"{TEXT || FLUENT IN 30 DAYS}\\\" in giant heavy white all-caps with a thick black outline on three lines over a saturated orange panel. Three colors: orange, white, black. Crisp, friendly, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-docu-expose\",\n name: \"Docu Expose\",\n description: \"True-story and investigative channels. Redacted eyes, newspaper feel.\",\n group: \"YouTube\",\n section: \"News & Investigation\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A man in a suit from an old press photo, a thick red redaction bar across his eyes, centered, over a collage of torn newspaper clippings and a deep red background. Headline \\\"{TEXT || THE UNTOLD STORY}\\\" in huge condensed white serif all-caps letters, slightly distressed, across the frame. Three colors: red, black, cream. Gritty, cinematic, no readable small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-true-crime-board\",\n name: \"True Crime Board\",\n description: \"True crime channels. Cork board, red string, photos.\",\n group: \"YouTube\",\n section: \"News & Investigation\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A cork evidence board covered with pinned photos, maps and notes connected by red string, lit by a single desk lamp; a woman in the lower right looks at the camera gravely. Headline \\\"{TEXT || CASE CLOSED?}\\\" in heavy white all-caps with a thick black outline across the top. Three colors: brown cork, red, white. Moody, crisp, no readable small text on the notes. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-breaking-news\",\n name: \"Breaking News\",\n description: \"News commentary and geopolitics channels. Red banner, serious face.\",\n group: \"YouTube\",\n section: \"News & Investigation\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A serious man in a dark jacket looks straight at the camera, right third, lit like a newsroom. Left: a blurred city skyline at dusk. A thick red horizontal banner across the lower third with the word \\\"{TEXT || BREAKING}\\\" in giant heavy white all-caps. Three colors: dark blue, red, white. Crisp, urgent, no ticker text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, ticker, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-interview-two-up\",\n name: \"Interview Two Up\",\n description: \"Podcast and interview channels. Host + guest, quote in the middle.\",\n group: \"YouTube\",\n section: \"Talk, Podcast & Music\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"World-class podcast YouTube thumbnail: Cinematic close-up portrait of two original fictional adult podcasters facing toward each other, man on LEFT mid-reaction in honest surprise, woman on RIGHT leaning forward with intense intelligent gaze. Authentic professional black microphones in foreground correctly connected to boom arms, subtle purple and warm peach studio lighting, strong rim light and deep shadow, believable depth, no distorted accessories. BETWEEN faces oversized perfectly rendered quote marks and enormous clean bold exact words \\\"{TEXT || REAL TALK}\\\" stacked, white editorial lettering partially tucked BEHIND foreground microphones. Subtle waveform glowing at bottom, crop tight enough for expressions on phone, visually premium not cluttered. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-live-show\",\n name: \"Live Show\",\n description: \"Musicians, DJs, event promoters. Stage lights, crowd, date-style title.\",\n group: \"YouTube\",\n section: \"Talk, Podcast & Music\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A DJ with raised arms silhouetted against blazing magenta and cyan stage lights, a crowd of hands in the foreground, haze and lasers. Headline \\\"{TEXT || LIVE TONIGHT}\\\" in giant heavy white condensed all-caps with a glowing magenta outline across the center. Three colors: black, magenta, cyan. Energetic, crisp, no small text, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-quote-highlight\",\n name: \"Quote Highlight\",\n description: \"Podcast clips and interview channels. Two faces, a quote, one word highlighted.\",\n group: \"YouTube\",\n section: \"Talk, Podcast & Music\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. Two men mid-conversation at podcast microphones, one on the far left in yellow glasses, one on the far right with a beard, both looking toward the center, dark studio. Center: a three-line quote in large clean white sans-serif: the first word \\\"{TEXT || MONEY}\\\" sits on a solid bright-yellow highlight box in black letters, followed by \\\"{TEXT2 || changes everything}\\\" in white, and a third line \\\"{TEXT3 || (do this now!)}\\\" in white. Three colors: black, yellow, white. Crisp, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/thumb-burning-question\",\n name: \"Burning Question\",\n description: \"Explainer / commentary YouTuber. Today: hires a designer per video or fights Canva for an hour.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"A compelling premium documentary inquiry thumbnail. Fictional male host on the right in large dramatic mid-shot, a thoughtful doubtful expression, eyebrows raised, hands not visible, warm directional film light. On the left a physically massive gold question-mark sculpture standing inside a dark concrete archive room, hard spotlight and shadows, floating torn file fragments with blank surfaces. In foreground huge exact word \\\"{TEXT || WHY?}\\\" in heavy condensed ivory poster letters placed behind the host's shoulder in believable layers. Cinematic mystery, refined gold-charcoal contrast with subtle warm grain, authentic depth, clean legibility, no other writing. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-shocked-reaction\",\n name: \"Shocked Reaction\",\n description: \"Reaction / entertainment channel. The classic 'NO WAY' cover, every upload.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"A thumbnail with extraordinary photojournalistic impact. LEFT a LARGE authentic photoreal close-up of a fictional young male creator, wide-eyed jaw-dropped shocked face brightly separated from background, one hand pointing OUT OF FRAME to avoid broken fingers; RIGHT a colossal hyper-detailed tornado made entirely of flying banknotes touching a stormy open field, hard rim sun through swirling money debris. Hand-painted enormous title exactly \\\"{TEXT || NO WAY!}\\\" across upper left, dimensional thick cream letters with black extrusion and citrus-yellow face. Bold red curved arrow integrated INTO photo and pointing to the tornado, layered lighting, natural face, no generic blue neon, crisp at mobile size. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-mystery-blur\",\n name: \"Mystery Blur\",\n description: \"Unboxing / reveal / leak channels. Curiosity gap is the whole click.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A creator in her 30s looks sideways at the camera with a suspicious squint and a finger to her lips, left third. Right: a rectangular object on a table heavily pixelated and blurred with a bright red circle drawn around it and three red question marks over it. Headline \\\"{TEXT || THEY HID THIS}\\\" in huge heavy white all-caps with a thick black outline across the top. Background: dark charcoal with a red glow. Three colors: charcoal, red, white. No readable small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"misspelled text, extra words, small unreadable text, watermark, logo, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-listicle-number\",\n name: \"Listicle Number\",\n description: \"Top-10 and tips channels. The giant number is the hook.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A huge glossy 3D yellow numeral \\\"{TEXT || 7}\\\" with a thick black outline fills the left half. Right: a surprised creator with raised eyebrows holding up one finger. Headline \\\"{TEXT2 || MISTAKES}\\\" in heavy white all-caps with a black outline under the number. Background: saturated royal blue with a radial gradient. Three colors: blue, yellow, white. Flat bright light, crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-red-x-green-check\",\n name: \"Red X Green Check\",\n description: \"How-to and advice channels: do this, not that.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism, split in half by a jagged vertical tear. Left half: a cluttered desk in a dull grey-blue tint with a giant red X stamped over it and the word \\\"{TEXT || WRONG}\\\" in heavy white all-caps. Right half: a clean organized desk in a warm bright tint with a giant green checkmark and the word \\\"{TEXT2 || RIGHT}\\\" in heavy white all-caps. A creator's face in the bottom center, half frowning, half smiling, pointing to the right. Crisp, high contrast, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-playful-cast\",\n name: \"Playful Cast\",\n description: \"Animation and kids-content creators: a host surrounded by original 3D companions.\",\n group: \"YouTube\",\n section: \"Entertainment & Reactions\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Explosive playful animation-creator YouTube thumbnail, fictional cheerful young adult male host in realistic high-resolution photograph filling the center, radiant smile and both hands out of frame. Around him six completely original lovable colorful three-dimensional animated fantasy companions: teal fuzzy round monster, tiny orange flying dragon, purple playful plush cyclops, lime bouncy blob, gold toy robot, pink jelly creature. Characters fly into foreground with different scale and believable lighting integration, confetti and bright white sky studio backdrop. Giant exuberant clean exact words \\\"{TEXT || ANIMATED FILMS}\\\" at top in glossy azure outlined typography, dimensional occlusion, toy-commercial craft, high contrast, no existing copyrighted animation characters, no extra words. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-pets\",\n name: \"Pets\",\n description: \"Pet channels and animal rescue stories.\",\n group: \"YouTube\",\n section: \"Family, Pets & Sports\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A golden retriever with a guilty tilted head and big eyes fills the right half, a shredded pillow with feathers around it. Left: a creator's face with an exasperated open-mouthed laugh. Headline \\\"{TEXT || HE DID WHAT?!}\\\" in giant heavy yellow all-caps with a thick black outline across the top. Background: bright sky blue. Three colors: sky blue, yellow, white. Flat bright light, crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small unreadable text, watermark, cluttered, blurry, 3D render, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-sports-highlight\",\n name: \"Sports Highlight\",\n description: \"Sports channels. Frozen action, one word.\",\n group: \"YouTube\",\n section: \"Family, Pets & Sports\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A basketball player frozen mid-dunk, muscles tense, motion blur in the crowd behind, dramatic arena lighting, right two thirds. Headline \\\"{TEXT || UNSTOPPABLE}\\\" in giant heavy white italic all-caps with a thick black outline across the left. A diagonal neon-orange stripe behind the text. Three colors: black, orange, white. Crisp, energetic, no team logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"team logo, brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-parenting\",\n name: \"Parenting\",\n description: \"Family and parenting creators. Parent + child, relatable chaos.\",\n group: \"YouTube\",\n section: \"Family, Pets & Sports\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"YouTube thumbnail, photographic realism. A tired but laughing mother holds a giggling toddler on her hip in a messy bright living room with toys everywhere, right two thirds. Left: headline \\\"{TEXT || WE SURVIVED}\\\" in giant heavy white all-caps with a thick black outline on two lines, a small yellow star burst behind it. Three colors: warm cream, yellow, white. Flat bright light, crisp, no small text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, small readable text, watermark, cluttered, blurry, cartoon, illustration\",\n },\n },\n {\n id: \"generate-image/thumb-swiss-collage\",\n name: \"Swiss Collage\",\n description: \"Designers, architects and brand channels: a Swiss print collage with a cut-out portrait and giant type.\",\n group: \"YouTube\",\n section: \"Editorial & Design\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"A premium Swiss editorial collage thumbnail. A charismatic fictional 30-year-old male designer photographed in sharp black-and-white cutout on the LEFT, striking thoughtful pose with fingertip on temple. Electric cobalt hand-drawn outline tracks his silhouette, floating small geometric registration circles and offset paper blocks. On the RIGHT enormous immaculate condensed grotesk typography exactly \\\"{TEXT || THINK}\\\" above \\\"{TEXT2 || BIG}\\\", black first word and vivid cobalt second word, on warm aged ivory newsprint. Fine micro-grid and asymmetrical editorial grid. Restrained blue, black, white, paper. The portrait overlaps a few giant letters, convincing layered print craft, professionally art-directed, visibly unlike a generic YouTube neon thumbnail. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-editorial-type\",\n name: \"Editorial Type\",\n description: \"Fashion, beauty and culture channels: one face through one monumental word, campaign-poster restraint.\",\n group: \"YouTube\",\n section: \"Editorial & Design\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"High-impact avant-garde fashion editorial thumbnail. Original fictional young woman with beautiful natural skin and sculptural black turtleneck occupies the center, direct intense gaze, side profile turned slightly. Behind her monumental custom deep red condensed serif typography reading exactly \\\"{TEXT || FOCUS}\\\" spans 85% of frame width. Her head and shoulder cut THROUGH foreground and background letter layers with realistic occlusion. Off-white photographic studio ground, printed poster sensibility, expensive fashion campaign direction, dramatic black shadow and a single bold red plane. Giant letters remain correctly legible. Bold restraint, not neon gradients, no small invented copy. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n {\n id: \"generate-image/thumb-reel-cover-bold\",\n name: \"Reel Cover Bold\",\n description: \"Motivation and mindset channels: two monumental words in fog, a tiny figure for scale.\",\n group: \"YouTube\",\n section: \"Editorial & Design\",\n platforms: [\"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"A cinematic motivational YouTube thumbnail. Dramatically minimal: giant monumental clean ivory typography exactly \\\"{TEXT || MIND}\\\" on line one, \\\"{TEXT2 || SET}\\\" on line two, occupying center 65% of canvas, lettering integrated into charcoal fog. Bottom center a tiny silhouette of an adult walking toward a storm-lit modern skyline; powerful scale contrast, atmospheric shafts of pale light and moody texture. One narrow accent red line under the word SET; expertly balanced editorial composition with genuine depth, evocative photographic matte-painting, absolutely no electric-blue gradient, no other text, clear 2-word hook at tiny sizes. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra words, watermarks, garbled typography, duplicate limbs, deformed hands, trademarks, illegible tiny filler text, random blue purple neon gradient\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Shorts · TikTok\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_SHORTS_TIKTOK: readonly FactoryPreset[] = [\n {\n id: \"generate-image/short-pov-hook\",\n name: \"POV Hook\",\n description: \"TikTok creators: the POV format, the most copied hook on the app. Today: Canva vertical template + a selfie.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok / Reels cover, photographic realism. A woman in her late twenties in a bright kitchen, mouth open in a mock-shocked face, holding a wooden spoon, phone-camera look. In the top third, the headline \\\"{TEXT || POV:}\\\" on one line and \\\"{TEXT2 || YOU'RE THE COOK}\\\" below it, huge heavy white all-caps letters with a thick black outline, fully inside the frame and away from the edges. Three colors: white, black, warm yellow. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-morning-routine\",\n name: \"Morning Routine\",\n description: \"Lifestyle and productivity creators: day-in-the-life and routine videos.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok / Reels cover, photographic realism. A woman in her thirties in a grey hoodie stretching by a big window at sunrise, a mug on the sill, soft golden light, calm face. In the top third, the headline \\\"{TEXT || 5AM ROUTINE}\\\" in huge heavy white all-caps letters with a thick black outline, one line, fully inside the frame. Three colors: white, black, peach. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters, bed\",\n },\n },\n {\n id: \"generate-image/short-three-steps\",\n name: \"Three Steps\",\n description: \"How-to and tips creators: numbered steps, a pointing hand, one promise.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok / Shorts cover, photographic realism. A man in his late twenties in a plain navy t-shirt holding a generic unbranded smartphone toward the camera and pointing up at the headline, confident half-smile, plain light-grey studio wall. In the top third, \\\"{TEXT || 3 STEPS}\\\" in huge heavy white all-caps letters with a thick black outline, and below it in smaller yellow letters \\\"{TEXT2 || TO FIX THIS}\\\". Three colors: white, black, yellow. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, apple logo, extra text, child, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-storytime\",\n name: \"Storytime\",\n description: \"Storytime creators: car selfie, wide eyes, one word.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok cover, photographic realism, front-camera selfie look. A woman in her twenties sitting in the driver seat of a parked car in daylight, wide eyes and a hand over her mouth, seatbelt on, plain sweater. In the top third, \\\"{TEXT || STORYTIME}\\\" in huge heavy white all-caps letters with a thick black outline, one line, fully inside the frame. Three colors: white, black, red. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-quick-recipe\",\n name: \"Quick Recipe\",\n description: \"Food creators: top-down pan, a fork, a time claim.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Reels / TikTok food cover, photographic realism, top-down. A black pan of creamy tomato pasta with basil, a hand twirling a fork, wooden table, steam. In the top third, \\\"{TEXT || 30-SEC PASTA}\\\" in huge heavy white all-caps letters with a thick black outline, one line, fully inside the frame. Three colors: white, black, tomato red. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-fitness-daily\",\n name: \"Fitness Daily\",\n description: \"Fitness coaches: one exercise, one command.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Reels / TikTok fitness cover, photographic realism. A strong woman in her thirties in a full-length black training outfit holding a plank on a gym floor mat, focused face toward the camera, dark gym with one warm light. In the top third, \\\"{TEXT || DO THIS DAILY}\\\" in huge heavy white all-caps letters with a thick black outline, fully inside the frame. Three colors: white, black, lime green. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters, revealing clothing\",\n },\n },\n {\n id: \"generate-image/short-grwm-outfit\",\n name: \"GRWM Outfit\",\n description: \"Fashion creators: get-ready-with-me, mirror selfie, season label.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Reels / TikTok fashion cover, photographic realism, full-length mirror selfie. A woman in her late twenties in a beige long coat over a cream knit and wide jeans, white sneakers, holding a generic phone, in a tidy bright hallway with a tall mirror. In the top third, \\\"{TEXT || GRWM}\\\" in huge heavy white all-caps letters with a thick black outline, and below it in smaller letters \\\"{TEXT2 || FALL EDITION}\\\". Three colors: white, black, camel. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters, revealing clothing\",\n },\n },\n {\n id: \"generate-image/short-side-income\",\n name: \"Side Income\",\n description: \"Finance TikTok: a number, a chart, a pointing finger.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok money-tips cover, photographic realism. A man in his late twenties in a plain black t-shirt at a tidy desk with a laptop showing a generic green line chart, pointing up at the headline with raised eyebrows. In the top third, \\\"{TEXT || $1,000/MO}\\\" in huge heavy green all-caps numerals with a thick black outline, and below it in smaller white letters \\\"{TEXT2 || SIDE INCOME}\\\". Three colors: white, black, green. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours. Use only the figure given in the headline; never invent numbers presented as real results.\",\n negativePrompt: \"watermark, logo, brand, apple logo, extra text, child, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-ai-free-tool\",\n name: \"AI Free Tool\",\n description: \"AI creators on TikTok and Shorts: 'this tool is free', mind-blown face, laptop glow.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"TikTok AI-tool cover, photographic realism. A woman in her twenties lit by the cool glow of a laptop in a dark room, mind-blown face with both hands on her head, plain dark sweater. In the top third, \\\"{TEXT || THIS AI IS FREE}\\\" in huge heavy white all-caps letters with a thick black outline, fully inside the frame. Three colors: white, black, electric blue. No brands, no logos, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/short-dance-trend\",\n name: \"Dance Trend\",\n description: \"Dance and music creators: trend cover, neon room, motion.\",\n group: \"Shorts · TikTok\",\n section: \"Vertical covers\",\n platforms: [\"TikTok\", \"Reels\", \"Shorts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Reels / TikTok dance-trend cover, photographic realism. A woman in her twenties mid-dance move in a loose white shirt and baggy jeans, in a room lit by purple and pink LED light, motion energy, full-length. In the top third, \\\"{TEXT || NEW TREND}\\\" in huge heavy white all-caps letters with a thick black outline, one line, fully inside the frame. Three colors: white, black, magenta. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, child, blurry text, cut-off letters, revealing clothing\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Social & Ads\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_SOCIAL_AND_ADS: readonly FactoryPreset[] = [\n {\n id: \"generate-image/post-old-vs-new\",\n name: \"Old VS New\",\n description: \"Tech influencers on LinkedIn/Facebook: 'old tools ✗ vs my new way ✓', face in the middle, caption below.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"LinkedIn\", \"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Social media post, photographic realism. A young developer in a dark hoodie stares at the camera, centered, waist-up, dark background. Left of him a dark rounded panel with a red glow holding a 2x3 grid of generic app icons (plain colored squares with simple glyphs) and a red X badge above it; right of him a matching panel with a green glow holding six colorful animal-emblem app icons and a green checkmark badge above it; a white curved arrow from the X to the check at the top. Bottom third: four lines of bold white headline text in heavy sans-serif all-caps: \\\"{TEXT || ONE DEVELOPER}\\\", \\\"{TEXT2 || REBUILT THE}\\\", \\\"{TEXT3 || WHOLE SUITE}\\\", \\\"{TEXT4 || WITH AI AGENTS}\\\". Three colors: black, red, green. Crisp, no real brand logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"adobe logo, brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/post-big-caption\",\n name: \"Big Caption\",\n description: \"Anyone posting a hot take: face + 3-line caption. The most common Facebook format.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"Facebook\", \"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Social media post, photographic realism. A woman in her 30s in a blazer looks at the camera with a confident half-smile, centered, upper two thirds, soft studio light, plain dark grey background. Lower third: three lines of heavy white all-caps text with a thick black outline: \\\"{TEXT || I QUIT MY JOB}\\\", \\\"{TEXT2 || HERE'S WHAT}\\\", \\\"{TEXT3 || HAPPENED NEXT}\\\". One small yellow underline under the last line. Three colors: grey, white, yellow. Crisp, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/post-carousel-cover\",\n name: \"Carousel Cover\",\n description: \"LinkedIn carousel creators. Slide 1 = big promise + swipe arrow.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Carousel cover, clean graphic design with a photo. Top half: the headline \\\"{TEXT || 7 AI TOOLS I USE EVERY DAY}\\\" in heavy black sans-serif on three lines over a warm cream background. Bottom right: a photo cut-out of a smiling man in a dark sweater pointing to the right. Bottom left: a small black rounded pill reading \\\"SWIPE →\\\". Three colors: cream, black, one orange accent dot. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/post-quote-card\",\n name: \"Quote Card\",\n description: \"Coaches, speakers, brands. A quote on a textured background.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"Instagram\", \"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Quote card. Centered serif text in warm off-white on a deep forest-green textured paper background: \\\"{TEXT || DONE IS BETTER THAN PERFECT}\\\" on three lines with large opening and closing quotation marks in gold, and a thin gold line under it. Lots of calm negative space. Three colors: forest green, off-white, gold. Crisp, elegant, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/post-hiring\",\n name: \"Hiring\",\n description: \"HR and founders: 'We're hiring' post. Weekly in every company.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Social media post, photographic realism with a graphic panel. Left half: a diverse team of three smiling people in a bright modern office. Right half: a solid navy panel with the headline \\\"{TEXT || WE'RE HIRING}\\\" in giant heavy white all-caps, under it \\\"{TEXT2 || SENIOR DESIGNER}\\\" in yellow, and a small white outlined pill \\\"APPLY NOW\\\". Three colors: navy, white, yellow. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/post-employee-spotlight\",\n name: \"Employee Spotlight\",\n description: \"Employer-branding managers. Portrait + name banner.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Social media post, photographic realism. A friendly woman engineer in a plain teal t-shirt smiles at the camera, waist-up, bright office with plants, filling the upper two thirds. Bottom third: a solid teal horizontal band with \\\"{TEXT || MEET THE TEAM}\\\" in heavy white all-caps and, under it, \\\"{TEXT2 || DANA · ENGINEERING}\\\" in smaller white text. Three colors: teal, white, dark grey. Crisp, no logos, all text fully inside the frame. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"cropped text, brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/post-event-announcement\",\n name: \"Event Announcement\",\n description: \"Communities and companies announcing a meetup or webinar.\",\n group: \"Social & Ads\",\n section: \"Posts\",\n platforms: [\"LinkedIn\", \"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Event announcement post, graphic design with a photo strip. Top: \\\"{TEXT || AI MEETUP}\\\" in giant heavy white all-caps on a deep purple background with a soft neon-pink glow. Middle: a wide photo strip of a crowd at a tech event. Bottom: three white pills in a row reading \\\"{TEXT2 || THU 21}\\\", \\\"{TEXT3 || 19:00}\\\", \\\"{TEXT4 || TEL AVIV}\\\" in bold dark text, and a small \\\"FREE ENTRY\\\" tag in pink. Three colors: purple, pink, white. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ig-carousel-cover\",\n name: \"Carousel Cover\",\n description: \"Instagram educators and coaches: slide 1 of a carousel, big promise, swipe arrow. Daily format.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Instagram carousel cover, clean graphic design. A coral-to-pink gradient background. Top: \\\"{TEXT || 5 MISTAKES}\\\" in huge heavy white all-caps letters and under it in smaller white letters \\\"{TEXT2 || NEW FREELANCERS MAKE}\\\". Bottom half: a photo of a woman in her thirties in a white shirt at a laptop in a bright café, cut out and placed on the gradient. A small white arrow with \\\"SWIPE\\\" at the bottom-right corner. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/ig-flatlay\",\n name: \"Flatlay\",\n description: \"Lifestyle brands and creators: the calm flat lay that fills a feed between launches.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Instagram feed photo, photographic realism, top-down flat lay. A ceramic cup of latte with foam art, an open linen notebook, a pair of reading glasses, a sprig of eucalyptus and a plain unbranded skincare bottle, arranged on a warm oak table in soft morning window light, calm beige and cream palette. No text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, text\",\n },\n },\n {\n id: \"generate-image/ig-photo-dump\",\n name: \"Photo Dump\",\n description: \"Travel and lifestyle creators: the photo-dump collage, four moments in one post.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Instagram photo-dump collage. Four travel snapshots with thin white borders on an off-white background, slightly rotated like printed photos: a turquoise sea from a boat, a plate of pasta in a trattoria, a woman in her twenties in a sun hat and linen shirt laughing on a cobbled street, a sunset over terracotta rooftops. Warm film-grain look. No text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, text\",\n },\n },\n {\n id: \"generate-image/ig-giveaway\",\n name: \"Giveaway\",\n description: \"Brands and shops: giveaway post, product + confetti + 'tag a friend'.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Instagram giveaway post, photographic realism with a graphic headline. A plain unbranded matte-black wireless headphone set standing on a pastel yellow surface with colorful confetti falling around it. Top: \\\"{TEXT || GIVEAWAY}\\\" in huge heavy black all-caps letters, and under it in smaller letters \\\"{TEXT2 || TAG A FRIEND}\\\". No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/ig-new-drop\",\n name: \"New Drop\",\n description: \"Fashion and product brands: new-drop announcement, one product, one color wall.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Instagram fashion-brand post, photographic realism. A plain unbranded olive-green canvas tote bag hanging on a single hook against a solid cobalt-blue studio wall, hard sunlight and a crisp shadow. Top-left: \\\"{TEXT || NEW DROP}\\\" in bold white all-caps letters, and under it in smaller letters \\\"{TEXT2 || FRIDAY 10AM}\\\". No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/ig-testimonial\",\n name: \"Testimonial\",\n description: \"Service businesses: a customer quote with stars and a small photo. Weekly social proof.\",\n group: \"Social & Ads\",\n section: \"Instagram feed\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Instagram testimonial post, clean graphic design. A soft sage-green background. Centered: five gold stars in a row, under them the quote in dark serif letters: \\\"{TEXT || Best decision we made this year.}\\\" Below the quote a small round photo of a smiling woman in her forties in a blazer, and under it in small letters \\\"{TEXT2 || DANA, STUDIO OWNER}\\\". Lots of clean space. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/story-this-or-that\",\n name: \"This Or That\",\n description: \"Shops and creators: a story built for the poll sticker, two options top and bottom.\",\n group: \"Social & Ads\",\n section: \"Stories\",\n platforms: [\"Stories\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Instagram story, photographic realism with a graphic headline. Two plain unbranded sneakers, one white and one black, photographed on a split background: top half light grey, bottom half dark grey, each shoe centered in its half. In the top area \\\"{TEXT || THIS OR THAT?}\\\" in bold white all-caps letters with a thin black outline. Empty space in the middle for a poll sticker. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/story-countdown\",\n name: \"Countdown\",\n description: \"Brands before a launch: dark teaser with room for the countdown sticker.\",\n group: \"Social & Ads\",\n section: \"Stories\",\n platforms: [\"Stories\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Instagram story teaser, photographic realism. A plain unbranded product box under a dark cloth in a dark studio, one dramatic rim light, mostly black frame with the shape half-revealed. In the top third \\\"{TEXT || LAUNCHING TOMORROW}\\\" in bold white all-caps letters, and an empty dark area below the product for a countdown sticker. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/story-link-above\",\n name: \"Link Above\",\n description: \"Bloggers and newsletters: 'new post' story with the link sticker.\",\n group: \"Social & Ads\",\n section: \"Stories\",\n platforms: [\"Stories\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Instagram story, photographic realism. A woman in her thirties in a mustard sweater typing on a laptop at a bright desk with plants, seen from the side, smiling. In the top third \\\"{TEXT || NEW BLOG POST}\\\" in bold white all-caps letters with a thin black outline, and at the bottom a white upward arrow with \\\"LINK ABOVE\\\" in small letters. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, apple logo, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/wa-status-offer\",\n name: \"Status Offer\",\n description: \"Small shops, bakeries, salons: a WhatsApp status offer. Huge in Israel, daily.\",\n group: \"Social & Ads\",\n section: \"WhatsApp status\",\n platforms: [\"WhatsApp\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"WhatsApp status offer, photographic realism with a graphic band. A tray of fresh golden croissants and a cinnamon babka on a wooden counter in a warm bakery, soft morning light. Across the middle a cream band with \\\"{TEXT || TODAY ONLY}\\\" in huge heavy brown all-caps letters and under it \\\"{TEXT2 || 20% OFF ALL PASTRIES}\\\" in smaller letters. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/x-statement-card\",\n name: \"Statement Card\",\n description: \"Thought leaders on X: a one-line hot take as an image, so the tweet gets a picture.\",\n group: \"Social & Ads\",\n section: \"X\",\n platforms: [\"X\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"X (Twitter) post card, clean graphic design. A near-black background with subtle grain. Left-aligned big bold white sans-serif statement in two lines: \\\"{TEXT || AI WON'T REPLACE YOU.}\\\" and below it in smaller grey letters \\\"{TEXT2 || Someone using it will.}\\\" Bottom-left: a small round placeholder avatar circle in grey and a thin grey line for a handle. Lots of empty space. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters, face\",\n },\n },\n {\n id: \"generate-image/x-chart-take\",\n name: \"Chart Take\",\n description: \"Finance and tech accounts on X: one rising line, one word.\",\n group: \"Social & Ads\",\n section: \"X\",\n platforms: [\"X\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"X (Twitter) chart post, minimal graphic design. A dark navy background with a single thin bright-green line chart rising steeply from bottom-left to top-right, faint grid, no axis labels or numbers. Top-left one word in bold white all-caps: \\\"{TEXT || FINALLY.}\\\" Clean, lots of space. No brands, no other text, no numbers. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, numbers, blurry text\",\n },\n },\n {\n id: \"generate-image/pin-recipe\",\n name: \"Recipe\",\n description: \"Recipe bloggers: the tall pin with a photo and a text band that drives blog traffic.\",\n group: \"Social & Ads\",\n section: \"Pinterest\",\n platforms: [\"Pinterest\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Pinterest recipe pin, photographic realism with a text band. Top two thirds: a bright overhead photo of a glazed lemon loaf cake sliced on a white marble board with lemon halves and mint. Bottom third: a cream band with \\\"{TEXT || EASY LEMON CAKE}\\\" in large dark serif capitals and under it in small letters \\\"{TEXT2 || ONE BOWL · 40 MINUTES}\\\". No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/pin-home-decor\",\n name: \"Home Decor\",\n description: \"Home and decor bloggers: the listicle pin over a room photo.\",\n group: \"Social & Ads\",\n section: \"Pinterest\",\n platforms: [\"Pinterest\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Pinterest home-decor pin, photographic realism with a text overlay. A cozy small living room: beige sofa, woven rug, a tall plant, warm lamp light, arched window. Across the middle a semi-transparent white box with \\\"{TEXT || 10 SMALL LIVING ROOM IDEAS}\\\" in dark serif capitals on three lines. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters, people\",\n },\n },\n {\n id: \"generate-image/pin-outfit-ideas\",\n name: \"Outfit Ideas\",\n description: \"Fashion bloggers and shops: stacked outfit collage pin.\",\n group: \"Social & Ads\",\n section: \"Pinterest\",\n platforms: [\"Pinterest\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Pinterest outfit-ideas pin, a collage of three photos stacked with thin white gaps: a woman in her thirties in a camel coat and boots on an autumn street, a close-up of a knit scarf and leather bag, and the same woman in a green sweater with a coffee, photographic realism, warm tones. A small white label at the top with \\\"{TEXT || FALL OUTFITS}\\\" in dark capitals. Fully covered outfits. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters, revealing clothing\",\n },\n },\n {\n id: \"generate-image/fb-event-cover\",\n name: \"Event Cover\",\n description: \"Communities and clubs: Facebook event cover with name, day and place.\",\n group: \"Social & Ads\",\n section: \"Facebook\",\n platforms: [\"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Facebook event cover, photographic realism with a graphic headline. A group of adults of mixed ages in bright running shirts jogging together on a park path at dawn, warm backlight, smiling. On the left \\\"{TEXT || COMMUNITY RUN}\\\" in huge heavy white all-caps letters with a thin dark outline, and under it in smaller letters \\\"{TEXT2 || SUNDAY 7AM · CITY PARK}\\\". No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/fb-group-cover\",\n name: \"Group Cover\",\n description: \"Group admins: Facebook group cover with the group name and what it is about.\",\n group: \"Social & Ads\",\n section: \"Facebook\",\n platforms: [\"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Facebook group cover, photographic realism with a graphic headline. Three happy dogs of different breeds sitting in a row on green grass in a sunny park, owners' legs blurred behind them. On the right \\\"{TEXT || LOCAL DOG OWNERS}\\\" in big heavy white all-caps letters with a thin dark outline, and under it in smaller letters \\\"{TEXT2 || WALKS · TIPS · MEETUPS}\\\". No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters\",\n },\n },\n {\n id: \"generate-image/li-certified\",\n name: \"Certified\",\n description: \"Professionals: the 'happy to share' certification post. Every week on LinkedIn.\",\n group: \"Social & Ads\",\n section: \"LinkedIn\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"LinkedIn achievement post, photographic realism. A woman in her thirties in a navy blazer proudly holding up a framed certificate with a blank cream page and a gold seal (no readable text on it), in a bright modern office, warm smile. At the top a small white banner with \\\"{TEXT || CERTIFIED}\\\" in bold dark capitals. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters, readable certificate text\",\n },\n },\n {\n id: \"generate-image/li-infographic\",\n name: \"Infographic\",\n description: \"Consultants and B2B marketers: a three-point infographic, icons and labels.\",\n group: \"Social & Ads\",\n section: \"LinkedIn\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"LinkedIn infographic post, flat clean graphic design on an off-white background. Title at the top in bold dark navy capitals: \\\"{TEXT || 3 WAYS TO SAVE TIME}\\\". Below it three rows, each with a simple navy line icon in a circle (a clock, a checklist, a chat bubble) and a short bold label next to it: \\\"{TEXT2 || AUTOMATE}\\\", \\\"{TEXT3 || BATCH}\\\", \\\"{TEXT4 || DELEGATE}\\\". Thin divider lines, one teal accent color. No brands, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, logo, brand, extra text, blurry text, cut-off letters, photo\",\n },\n },\n {\n id: \"generate-image/ad-restaurant-special\",\n name: \"Restaurant Special\",\n description: \"Restaurant owners: today's special, Instagram and the window. Every week.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Restaurant promo post, photographic realism. A steaming plate of pasta with shaved parmesan on a rustic wooden table, overhead-angled, warm light, fills the upper two thirds. Bottom third: a solid deep-red band with \\\"{TEXT || TONIGHT'S SPECIAL}\\\" in heavy white all-caps and \\\"{TEXT2 || ONLY $14}\\\" in bold yellow under it. Three colors: warm brown, red, yellow. Crisp, appetizing, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-store-sale\",\n name: \"Store Sale\",\n description: \"Shop owners: Black Friday / end-of-season sale banner.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Facebook\", \"Web\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Sale banner, bold graphic design with a photo. Left half: giant heavy white all-caps \\\"{TEXT || 50% OFF}\\\" on a bright red background, with \\\"{TEXT2 || THIS WEEKEND ONLY}\\\" smaller in white under it and a small white pill \\\"SHOP NOW\\\". Right half: a photo of neatly folded colorful sweaters on a shelf. Three colors: red, white, one black accent. Crisp, loud, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-salon-promo\",\n name: \"Salon Promo\",\n description: \"Hair and nail salons: new-client offer on Instagram.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Salon promo post, photographic realism. A woman with glossy fresh blowout hair smiles over her shoulder in a bright white salon with a round mirror, upper two thirds. Bottom third: a blush-pink band with \\\"{TEXT || NEW CLIENTS -20%}\\\" in heavy dark-rose all-caps and \\\"BOOK TODAY\\\" smaller in white. Three colors: white, blush pink, dark rose. Crisp, soft, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-gym-offer\",\n name: \"Gym Offer\",\n description: \"Gyms and trainers: January offer, summer challenge.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Gym offer post, photographic realism. A strong woman mid-rep lifting a barbell in a dark gym with hard side light, chalk in the air, upper two thirds. Bottom third: a black band with \\\"{TEXT || FIRST MONTH FREE}\\\" in giant heavy neon-green all-caps and \\\"JOIN NOW\\\" in white under it. Three colors: black, neon green, white. Crisp, intense, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-clinic\",\n name: \"Clinic\",\n description: \"Dental and medical clinics. Trust + one offer.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Facebook\", \"Web\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Clinic ad banner, photographic realism. A smiling dentist in a white coat beside a happy patient in a bright clean clinic, right two thirds. Left third: a light-blue panel with \\\"{TEXT || FREE CHECK-UP}\\\" in heavy dark-blue all-caps on two lines, a small white pill \\\"{TEXT2 || THIS MONTH}\\\", and a tiny tooth icon. Three colors: light blue, dark blue, white. Crisp, trustworthy, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-service-van\",\n name: \"Service Van\",\n description: \"Plumbers, electricians, movers. Local service ad.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Facebook\", \"Google Ads\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Local service ad, photographic realism. A friendly plumber in a navy uniform with a toolbox stands in front of a white van on a suburban street, bright daylight, right half. Left half: headline \\\"{TEXT || SAME-DAY REPAIRS}\\\" in giant heavy navy all-caps on a yellow panel, with \\\"CALL NOW\\\" in a white rounded pill and a small phone icon. Three colors: yellow, navy, white. Crisp, no logos, no phone number. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"phone number, brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-real-estate-listing\",\n name: \"Real Estate Listing\",\n description: \"Real estate agents: 'Just listed' card for Instagram and portals.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Real estate listing post, photographic realism. A bright modern living room with large windows and a city view, upper two thirds. Bottom third: a white panel with \\\"{TEXT || JUST LISTED}\\\" in heavy black all-caps, a line \\\"{TEXT2 || 3 BED · 2 BATH · 120 m²}\\\" in grey, and the price \\\"{TEXT3 || $890,000}\\\" in bold dark green. A small gold corner ribbon reading \\\"NEW\\\". Three colors: white, black, gold. Crisp, premium, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-facebook-lead\",\n name: \"Facebook Lead\",\n description: \"Performance marketers: a lead-gen ad with one offer and one button.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Facebook ad creative, photographic realism with a graphic band. A relaxed man on a sofa smiles at a tablet, soft home light, upper two thirds. Bottom third: a solid blue band with \\\"{TEXT || SAVE 2 HOURS A DAY}\\\" in heavy white all-caps and a white rounded button reading \\\"TRY FREE\\\". Three colors: warm beige, blue, white. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/ad-app-store-screenshot\",\n name: \"App Store Screenshot\",\n description: \"App makers: App Store screenshot with phone + benefit line.\",\n group: \"Social & Ads\",\n section: \"Ads & promos\",\n platforms: [\"App Store\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"App Store screenshot, clean graphic design. Top quarter: \\\"{TEXT || TRACK EVERY HABIT}\\\" in heavy black sans-serif on two lines over a soft mint background. Below: a generic smartphone mockup, slightly tilted, showing a clean habit-tracker app screen with colorful progress rings and checkmarks (no readable small text). Three colors: mint, black, coral accent. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, apple logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/brand-profile-picture\",\n name: \"Profile Picture\",\n description: \"Freelancers and founders: a clean profile picture for LinkedIn / X.\",\n group: \"Social & Ads\",\n section: \"Profiles & banners\",\n platforms: [\"LinkedIn\", \"X\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Profile picture, photographic realism. A head-and-shoulders portrait of a friendly man in his 30s in a dark crew-neck, soft studio key light, slight smile, direct eye contact, on a plain warm-grey background with a subtle vignette. Sharp eyes, clean skin, no text, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, brand logo, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/brand-linkedin-banner\",\n name: \"Linkedin Banner\",\n description: \"Professionals: LinkedIn cover banner with a tagline.\",\n group: \"Social & Ads\",\n section: \"Profiles & banners\",\n platforms: [\"LinkedIn\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"21:9\",\n prompt: \"LinkedIn banner, clean design with a photo. Left two thirds: a soft blurred photo of a modern office desk with a laptop and plants in warm light. Right third: a solid navy panel with \\\"{TEXT || I HELP STARTUPS SHIP FASTER}\\\" in heavy white sans-serif on three lines and a thin teal underline. Three colors: navy, teal, white. Crisp, lots of breathing room, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/brand-twitch-banner\",\n name: \"Twitch Banner\",\n description: \"Streamers: Twitch / YouTube channel banner.\",\n group: \"Social & Ads\",\n section: \"Profiles & banners\",\n platforms: [\"Twitch\", \"YouTube\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"21:9\",\n prompt: \"Streamer channel banner. A dark background with diagonal neon-purple and cyan light streaks and subtle hexagon texture. Center: the channel name \\\"{TEXT || NOVA PLAYS}\\\" in giant heavy italic white all-caps with a cyan glow, and a small line \\\"{TEXT2 || LIVE EVERY NIGHT · 21:00}\\\" under it in white. A stylized gamepad silhouette faintly behind. Three colors: black, purple, cyan. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/brand-podcast-cover\",\n name: \"Podcast Cover\",\n description: \"Podcasters: square cover art for Spotify and Apple.\",\n group: \"Social & Ads\",\n section: \"Profiles & banners\",\n platforms: [\"Spotify\", \"Apple Podcasts\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Podcast cover art, photographic realism. A close head-and-shoulders portrait of a woman in her 30s speaking into a large broadcast microphone, warm orange rim light, dark background. Top: \\\"{TEXT || THE DEEP WORK SHOW}\\\" in heavy white condensed all-caps on two lines; bottom-right: a small white pill \\\"WEEKLY\\\". Three colors: black, orange, white. Crisp, bold, readable at tiny size, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/brand-spotify-canvas\",\n name: \"Vertical Single Promo Cover\",\n description: \"Musicians: vertical promotional still for stories or a video poster (a static image, not a Spotify Canvas animation).\",\n group: \"Social & Ads\",\n section: \"Profiles & banners\",\n platforms: [\"Stories\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Vertical single cover, photographic realism. A singer in a glittering jacket lit by a single magenta spotlight on a dark stage, haze, mid-shot, looking down with eyes closed. Bottom third: the title \\\"{TEXT || MIDNIGHT RUN}\\\" in large elegant white serif and \\\"SINGLE · OUT NOW\\\" in small spaced caps. Three colors: black, magenta, white. Crisp, moody, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Business\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_BUSINESS: readonly FactoryPreset[] = [\n {\n id: \"generate-image/ecom-amazon-hero\",\n name: \"Amazon Hero\",\n description: \"Amazon and Shopify sellers: main listing image, white background, product huge.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Amazon\", \"Shopify\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"E-commerce main product image, photographic realism. A stainless steel insulated water bottle with a matte black cap stands centered on a pure white seamless background, soft studio light, crisp reflections, slight shadow under it, filling 80% of the frame height. No text, no props, no logos. Clean, sharp, catalog-ready. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, brand logo, props, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/ecom-lifestyle-shot\",\n name: \"Lifestyle Shot\",\n description: \"Sellers' secondary image: product in use, real setting.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Amazon\", \"Shopify\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"E-commerce lifestyle image, photographic realism. A woman in hiking clothes drinks from a stainless steel water bottle on a sunny mountain trail, mid-shot, natural golden light, shallow depth of field, the bottle sharp and prominent. No text, no logos. Warm, aspirational, crisp. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, brand logo, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/ecom-infographic\",\n name: \"Infographic\",\n description: \"Sellers' feature image: product + 3 callouts.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Amazon\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"E-commerce infographic image. A stainless steel water bottle centered on a soft light-grey background, with three thin dark lines pointing from it to three short white rounded callout labels in bold dark text: \\\"{TEXT || 24H COLD}\\\", \\\"{TEXT2 || LEAK-PROOF}\\\", \\\"{TEXT3 || BPA FREE}\\\". Clean flat design over a photoreal product, three colors: light grey, dark navy, one teal accent. Crisp, no other text, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/ecom-etsy-handmade\",\n name: \"Etsy Handmade\",\n description: \"Etsy makers: handmade product, cozy flat lay.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Etsy\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Etsy product photo, photographic realism. A hand-poured soy candle in an amber glass jar on a linen cloth with dried eucalyptus sprigs and a small wooden spoon, soft window light, warm neutral tones, top-down angle. No text, no logos. Cozy, crisp, handmade feel. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, brand logo, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/ecom-fashion-ghost\",\n name: \"Fashion Ghost\",\n description: \"Clothing sellers: ghost-mannequin apparel shot.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Shopify\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"E-commerce apparel photo, photographic realism. A navy linen button-down shirt shown in invisible ghost-mannequin style, perfectly shaped as if worn, centered on a pure white background, even studio light, every seam crisp. No text, no logos, no model. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"person, mannequin head, text, brand logo, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/ecom-sale-badge\",\n name: \"Sale Badge\",\n description: \"Sellers' promo tile: product + big discount badge.\",\n group: \"Business\",\n section: \"E-commerce\",\n platforms: [\"Shopify\", \"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"E-commerce promo tile, photographic realism. A sleek black over-ear headphone set, generic design with no logo, centered on a bright yellow background with a soft shadow. Top-right corner: a large red circular badge with \\\"{TEXT || -40%}\\\" in heavy white type. Bottom: \\\"{TEXT2 || LIMITED TIME}\\\" in heavy black all-caps. Three colors: yellow, red, black. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, apple product, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/work-report-cover\",\n name: \"Report Cover\",\n description: \"Consultants and analysts: a report or whitepaper cover.\",\n group: \"Business\",\n section: \"Work & marketing\",\n platforms: [\"PDF\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Report cover, corporate design with a photo. Top half: an aerial photo of a city at dusk with a subtle dark-blue overlay. Bottom half: white with \\\"{TEXT || STATE OF RETAIL 2027}\\\" in heavy navy sans-serif on two lines, a thin teal rule, and \\\"{TEXT2 || ANNUAL INSIGHTS REPORT}\\\" in small spaced caps. Three colors: navy, teal, white. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/work-email-header\",\n name: \"Email Header\",\n description: \"Marketers: newsletter / email header image.\",\n group: \"Business\",\n section: \"Work & marketing\",\n platforms: [\"Email\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"21:9\",\n prompt: \"Email header banner, clean design with a photo. Soft peach background; left: \\\"{TEXT || THE MONDAY BRIEF}\\\" in heavy black serif and \\\"{TEXT2 || ISSUE #42}\\\" in small spaced caps; right: a cut-out photo of a steaming coffee cup and a folded newspaper. Three colors: peach, black, white. Crisp, airy, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/work-landing-hero\",\n name: \"Landing Hero\",\n description: \"Founders: landing-page hero image with product on screen.\",\n group: \"Business\",\n section: \"Work & marketing\",\n platforms: [\"Web\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Landing page hero, clean design with a device photo. Left half: on a soft off-white background, the headline \\\"{TEXT || PLAN YOUR WEEK IN 5 MINUTES}\\\" in heavy black sans-serif on three lines, and a dark rounded button \\\"START FREE\\\". Right half: a laptop at a slight angle showing a clean calendar app interface with colored blocks (no readable small text). Three colors: off-white, black, one violet accent. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, apple logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/edu-slide-title\",\n name: \"Slide Title\",\n description: \"Teachers, trainers, consultants: a presentation title slide.\",\n group: \"Business\",\n section: \"Education\",\n platforms: [\"Slides\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Presentation title slide, clean design with a photo. Left two thirds: dark charcoal background with the title \\\"{TEXT || THE SCIENCE OF SLEEP}\\\" in giant heavy white sans-serif on two lines, a thin coral line, and \\\"{TEXT2 || LESSON 3 · BIOLOGY}\\\" in small spaced caps. Right third: a full-height photo of a calm bedroom at dawn. Three colors: charcoal, coral, white. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/edu-worksheet-header\",\n name: \"Worksheet Header\",\n description: \"Teachers: a worksheet or handout header.\",\n group: \"Business\",\n section: \"Education\",\n platforms: [\"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"21:9\",\n prompt: \"Worksheet header banner, friendly flat illustration style. A row of simple flat icons (a pencil, a ruler, a planet, a magnifying glass, a book) on a soft mint background, with \\\"{TEXT || FRACTIONS PRACTICE}\\\" in chunky rounded navy letters in the center and a small \\\"{TEXT2 || GRADE 4}\\\" pill in coral. Three colors: mint, navy, coral. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/edu-flashcard\",\n name: \"Flashcard\",\n description: \"Students and language apps: flashcard with word + picture.\",\n group: \"Business\",\n section: \"Education\",\n platforms: [\"Print\", \"Apps\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Flashcard, clean design. Top two thirds: a bright photorealistic image of a red apple on a white background. Bottom third: the word \\\"{TEXT || APPLE}\\\" in giant heavy black letters and \\\"{TEXT2 || /ˈæp.əl/}\\\" in grey under it, on a pale yellow band. Three colors: white, yellow, black. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/merch-tshirt-design\",\n name: \"Tshirt Design\",\n description: \"Print-on-demand sellers: a t-shirt graphic, front print.\",\n group: \"Business\",\n section: \"Merch\",\n platforms: [\"Print\", \"Etsy\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"T-shirt design mockup, photographic realism. A plain black t-shirt on a flat surface, centered, with a bold front print: a retro-style sunset of horizontal orange and yellow stripes behind a black mountain silhouette, and the words \\\"{TEXT || TAKE THE LONG WAY}\\\" in heavy cream retro type under it. Soft even light. Three print colors: orange, yellow, cream. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/merch-standalone-print-art\",\n name: \"Standalone T-shirt Print Artwork\",\n description: \"Print-on-demand sellers: the flat shirt-front artwork on its own, without the shirt, on white for masking.\",\n group: \"Business\",\n section: \"Merch\",\n platforms: [\"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Flat standalone T-shirt print artwork, vector screen-print style, not a garment or a mockup. A retro design: horizontal orange and yellow stripe sunset behind a dark mountain silhouette, and under the mountain the headline \\\"{TEXT || TAKE THE LONG WAY}\\\" in large readable cream retro lettering. Balanced, centered, crisp edges, a limited palette of orange, yellow, cream and charcoal inks, isolated on a uniform solid white background so a printer can mask it easily. No clothing, mannequin, fabric or mockup. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"t-shirt, fabric, mannequin, mockup, misspelled text, extra words, watermark, blurry\",\n },\n },\n {\n id: \"generate-image/layout-visionary-magazine-cover\",\n name: \"Visionary Magazine Cover\",\n description: \"Founders, coaches and personal brands: a 9:16 fashion-magazine cover with masthead, kicker and cover story.\",\n group: \"Business\",\n section: \"Covers & print\",\n platforms: [\"Print\"],\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"An original ultra-premium entrepreneurial fashion magazine cover, art-directed like an influential global independent style magazine. A confident fictional male entrepreneur in his early 30s lounges diagonally across an unusual distressed CAMOUFLAGE FABRIC sofa, effortless power and playful understatement. His styling is meticulously specific: crisp pure white T-shirt, relaxed open flowing black designer cardigan, premium relaxed dark-blue denim, vivid scarlet RED canvas high-top sneakers as a single commanding fashion accent, discreet refined luxury watch, clean natural skin, stylish slightly messy dark hair. Camera is deliberately DUTCH-TILTED 12 degrees and close: expressive model and sofa form a kinetic lower-left to upper-right diagonal, but all magazine typography remains LEVEL and perfectly legible. Refined industrial loft with textured gray concrete wall, oversized window off-frame casting dramatic geometric bands of late-afternoon light, subtle depth haze. Authentic 85mm f/1.4 full-frame editorial photography aesthetic, very shallow depth of field, razor-sharp subject eyes and fabrics, softly receding background, natural skin pores, rich deep blacks, realistic folds and worn camouflage texture, impeccable studio-quality lighting and cinematic color grading. Design as a real exquisitely typeset printed magazine cover, NOT a thumbnail, not a collage, not a generic poster. Large custom high-contrast editorial serif MASTHEAD across the very top: EXACT TEXT \\\"{TEXT || THE VISIONARY}\\\". A smaller vivid red editorial kicker at upper left: EXACT TEXT \\\"{TEXT2 || THE NEW RULES}\\\". Place a crisp clean elegant bold cover story in uncluttered negative space beside the model: EXACT TEXT \\\"{TEXT3 || BUILT DIFFERENT}\\\". Under it in small but readable restrained sans-serif: EXACT TEXT \\\"{TEXT4 || An interview about ideas, risk & reinvention}\\\". At lower corner: a convincing tiny generic BARCODE graphic plus \\\"VOL. 01\\\" and \\\"2026\\\". Hierarchy: masthead > model > headline > secondary lines, careful breathing room, strong legibility, beautiful editorial details, sophisticated typographic kerning. Every visible word must be exact; avoid filler gibberish and extra fake stories. No real magazine brand, no celebrity, no third-party logos, no watermarks, no other title. Strong distinctive aspiration, elegant rather than flashy. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra text, distorted face, incorrect anatomy, duplicate limbs, erroneous letters, imitation of existing magazine brands, watermarks, overprocessed waxy skin\",\n },\n },\n {\n id: \"generate-image/merch-sticker-sheet\",\n name: \"Sticker Sheet\",\n description: \"Sticker sellers and brands: die-cut sticker sheet.\",\n group: \"Business\",\n section: \"Merch\",\n platforms: [\"Print\", \"Etsy\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Die-cut sticker sheet, flat graphic design, top-down photo look. Six glossy stickers with thick white borders arranged on a light grey surface: a smiling coffee cup, a lightning bolt, a cat face, a retro cassette, a cactus, and a speech bubble reading \\\"{TEXT || YES!}\\\". Bold flat colors: coral, teal, mustard, black. Crisp vector look, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/merch-mug\",\n name: \"Mug\",\n description: \"Gift shops and POD: mug mockup with a quote.\",\n group: \"Business\",\n section: \"Merch\",\n platforms: [\"Print\", \"Etsy\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Mug mockup, photographic realism. A white ceramic mug on a wooden table beside a croissant in soft morning window light, the mug printed with \\\"{TEXT || BUT FIRST, COFFEE}\\\" in bold black serif on two lines. Three colors: white, black, warm wood. Crisp, cozy, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Life & Events\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_LIFE_AND_EVENTS: readonly FactoryPreset[] = [\n {\n id: \"generate-image/event-wedding-invite\",\n name: \"Wedding Invite\",\n description: \"Couples and planners: wedding invitation. Huge market, everyone pays once.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"Print\", \"WhatsApp\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Wedding invitation, elegant design. Cream textured paper with a delicate watercolor eucalyptus wreath; inside it the names \\\"{TEXT || NOA & DANIEL}\\\" in large gold calligraphy script, under them \\\"SAVE THE DATE\\\" in small spaced serif caps and \\\"{TEXT2 || 12 · 06 · 2027}\\\" in thin serif. Three colors: cream, sage green, gold. Crisp, refined, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"misspelled text, extra words, watermark, cluttered, blurry, photo of people\",\n },\n },\n {\n id: \"generate-image/event-birthday-invite\",\n name: \"Birthday Invite\",\n description: \"Parents: kids' birthday invitation. Monthly for every family with kids.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"WhatsApp\", \"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Kids birthday invitation, bright playful design with a photo. Top: \\\"{TEXT || LIA IS TURNING 6!}\\\" in chunky rounded colorful letters. Center: a photo of a cheerful girl with a party hat blowing a paper horn, cut out over a sky-blue background with confetti and balloons. Bottom: a white rounded card with \\\"{TEXT2 || SATURDAY · 16:00 · OUR BACKYARD}\\\" in bold dark text. Three colors: sky blue, pink, yellow. Crisp, joyful, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/event-club-flyer\",\n name: \"Club Flyer\",\n description: \"Promoters and DJs: club night flyer. Weekly.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"Instagram\", \"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Club night flyer. Giant heavy condensed white all-caps \\\"{TEXT || NEON NIGHTS}\\\" stacked on two lines over a dark background with magenta and electric-blue neon light streaks and a silhouetted crowd with raised hands at the bottom. Under the title a thin line \\\"{TEXT2 || SAT 28 · DOORS 23:00}\\\" in white. Three colors: black, magenta, electric blue. Crisp, loud, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/event-conference-banner\",\n name: \"Conference Banner\",\n description: \"Event organizers: conference hero banner for the site and LinkedIn.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"LinkedIn\", \"Web\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Conference banner, photographic realism with a graphic panel. Right half: a photo of a packed auditorium with a lit stage. Left half: a dark navy panel with \\\"{TEXT || FUTURE OF WORK}\\\" in giant heavy white all-caps on two lines, \\\"{TEXT2 || SUMMIT 2027}\\\" in bright teal under it, and a row of three small white pills \\\"{TEXT3 || MAY 14}\\\", \\\"{TEXT4 || BERLIN}\\\", \\\"2 DAYS\\\". Three colors: navy, teal, white. Crisp, corporate, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/event-holiday-greeting\",\n name: \"Holiday Greeting\",\n description: \"Every business and family: holiday greeting card. Seasonal spike.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"WhatsApp\", \"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Holiday greeting card, photographic realism. A warm cozy table with golden string lights, a sprig of pine and a steaming mug, soft bokeh, deep green and gold tones. Centered: \\\"{TEXT || HAPPY HOLIDAYS}\\\" in elegant gold script with a thin line and \\\"{TEXT2 || FROM OUR TEAM TO YOURS}\\\" in small spaced white serif caps under it. Three colors: forest green, gold, white. Crisp, warm, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/event-baby-shower\",\n name: \"Baby Shower\",\n description: \"Friends and family: baby shower / newborn announcement.\",\n group: \"Life & Events\",\n section: \"Events & invitations\",\n platforms: [\"WhatsApp\", \"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Baby announcement card, soft photographic realism. Tiny newborn feet wrapped in a knitted cream blanket, soft window light, pale pastel tones. Bottom: \\\"{TEXT || WELCOME, ARI}\\\" in large soft serif and \\\"{TEXT2 || BORN 03 · 04 · 2027 · 3.2 KG}\\\" in small spaced caps on a cream band. Three colors: cream, pale blue, soft grey. Crisp, tender, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/personal-birthday-card\",\n name: \"Birthday Card\",\n description: \"Everyone: a birthday card for a friend.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"WhatsApp\", \"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Birthday card, photographic realism. A small chocolate cake with three lit candles on a pastel pink table, confetti and a few balloons blurred behind, soft light. Top: \\\"{TEXT || HAPPY BIRTHDAY, MAYA!}\\\" in large playful rounded white letters with a soft shadow. Three colors: pink, chocolate brown, white. Crisp, warm, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/personal-pet-portrait\",\n name: \"Pet Portrait\",\n description: \"Pet owners: a painted-style portrait of their pet. Gift market.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Pet portrait, classical oil-painting style. A golden retriever wearing a navy royal uniform with gold epaulettes, posed like an 18th-century aristocrat, dark moody background, warm painterly brushstrokes, ornate gold frame edge visible. No text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, watermark, blurry, photo\",\n },\n },\n {\n id: \"generate-image/personal-family-holiday-card\",\n name: \"Family Holiday Card\",\n description: \"Families: holiday card with the family photo and a greeting.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"Print\", \"WhatsApp\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Family holiday card, photographic realism. A smiling family of four in matching cream knit sweaters in front of a decorated tree with warm string lights, soft focus. Bottom band in deep green: \\\"{TEXT || MERRY & BRIGHT}\\\" in gold script and \\\"{TEXT2 || THE COHEN FAMILY · 2027}\\\" in small white spaced caps. Three colors: green, gold, cream. Crisp, warm, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/personal-phone-wallpaper\",\n name: \"Phone Wallpaper\",\n description: \"Everyone: a phone wallpaper. Daily volume, free-tier magnet.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"Phone\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Phone wallpaper, photographic realism. Misty pine forest at blue hour with a single warm light in a distant cabin window, deep teal and navy tones, lots of calm empty sky at the top for the clock. No text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, watermark, blurry, people\",\n },\n },\n {\n id: \"generate-image/personal-meme-template\",\n name: \"Meme Template\",\n description: \"Everyone: a reaction meme template with top text.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"X\", \"Instagram\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Meme image, photographic realism. A man in a grey hoodie squints suspiciously at a laptop screen in a dim room, side-lit, classic reaction shot. Top: \\\"{TEXT || WHEN THE CODE WORKS ON THE FIRST TRY}\\\" in classic heavy white Impact-style all-caps with a black outline. Natural tones. Crisp, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/personal-dating-profile\",\n name: \"Dating Profile\",\n description: \"Singles: a flattering natural profile photo.\",\n group: \"Life & Events\",\n section: \"Personal\",\n platforms: [\"Dating apps\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Dating profile photo, photographic realism. A woman in her late 20s laughing naturally at an outdoor café table in warm late-afternoon light, candid feel, shallow depth of field, a coffee cup in hand, soft city background. No text, no logos, natural skin. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, brand logo, watermark, blurry, heavy retouching\",\n },\n },\n {\n id: \"generate-image/sport-match-day\",\n name: \"Match Day\",\n description: \"Amateur clubs and leagues: match-day graphic. Weekly.\",\n group: \"Life & Events\",\n section: \"Sports\",\n platforms: [\"Instagram\", \"WhatsApp\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Match day graphic, photographic realism with a graphic panel. Upper two thirds: a football player in a plain red kit striking the ball under stadium floodlights, motion blur, dark moody background. Bottom third: a black band with \\\"{TEXT || MATCH DAY}\\\" in giant heavy white italic all-caps, under it \\\"{TEXT2 || HAPOEL VS MACCABI}\\\" in red and \\\"{TEXT3 || SAT · 20:00}\\\" in white. Three colors: black, red, white. Crisp, no real club logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"club logo, brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/sport-player-card\",\n name: \"Player Card\",\n description: \"Youth leagues and fantasy groups: a trading-card style player card.\",\n group: \"Life & Events\",\n section: \"Sports\",\n platforms: [\"Instagram\", \"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Player trading card, photographic realism with a card frame. A young basketball player in a plain blue jersey holding a ball, mid-shot, dramatic side light, cut out over a radiant gold-and-navy card background with a thin gold frame. Bottom: \\\"{TEXT || ADAM LEVI}\\\" in heavy white all-caps, a line \\\"{TEXT2 || #23 · GUARD}\\\" in gold, and a small \\\"MVP\\\" badge. Three colors: navy, gold, white. Crisp, no real team logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"team logo, brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/community-fundraiser\",\n name: \"Fundraiser\",\n description: \"NGOs and schools: fundraiser poster.\",\n group: \"Life & Events\",\n section: \"Community\",\n platforms: [\"Print\", \"Facebook\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Fundraiser poster, photographic realism with a graphic band. Upper two thirds: volunteers in matching green t-shirts planting a tree together in a park, warm sunlight. Bottom third: a white band with \\\"{TEXT || PLANT 1,000 TREES}\\\" in heavy forest-green all-caps, a thin progress bar two-thirds full, and \\\"DONATE TODAY\\\" in a green rounded pill. Three colors: green, white, warm brown. Crisp, hopeful, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n {\n id: \"generate-image/community-menu-board\",\n name: \"Menu Board\",\n description: \"Cafés and food trucks: a printable menu board.\",\n group: \"Life & Events\",\n section: \"Community\",\n platforms: [\"Print\"],\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Café menu board, chalkboard design. A dark chalkboard with hand-lettered white chalk: \\\"{TEXT || COFFEE}\\\" as a big heading, then three items on separate lines \\\"{TEXT2 || ESPRESSO 2.5}\\\", \\\"{TEXT3 || FLAT WHITE 4}\\\", \\\"{TEXT4 || COLD BREW 4.5}\\\", with small chalk doodles of a coffee bean and a cup, and a yellow chalk underline under the heading. Three colors: chalkboard green-black, white, yellow. Crisp, legible, no logos. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"brand logo, misspelled text, extra words, watermark, cluttered, blurry\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Layout\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_LAYOUT: readonly FactoryPreset[] = [\n {\n id: \"generate-image/layout-storyboard-6\",\n name: \"Storyboard 6\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Film storyboard sheet, exactly 6 panels in a 3x2 grid separated by thin white gutters on a white background, each panel a realistic cinematic photograph frame telling one continuous scene: a woman leaves a house at dawn, walks down a street, waits at a bus stop, boards a bus, looks out of the window, arrives at a city square. Under each panel a thin grey line with a small panel number 1-6. Consistent character, consistent muted color grade. No other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"extra text, watermark, blurry, inconsistent character, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-production-storyboard\",\n name: \"Production Storyboard\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Production storyboard page, a clean document layout on white: a header line \\\"{TEXT || PRODUCTION STORYBOARD}\\\" in small bold caps at the top left, then a 3x2 grid of cinematic photo frames of the same man in a trench coat crossing a rainy city street at night, each frame followed by a short caption block of three thin grey placeholder lines and a small label \\\"SHOT 1\\\" through \\\"SHOT 6\\\" in bold. Consistent character and teal-orange grade in every frame. Crisp, no other readable text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"readable paragraph text, watermark, blurry, inconsistent character, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-multi-shot\",\n name: \"Multi Shot\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Multi-shot sheet, exactly 4 panels in a 2x2 grid separated by thin white gutters: the SAME scene of a woman in a yellow raincoat standing on a pier at sunset, shown from four camera angles: a wide establishing shot, a medium shot from the front, a close-up of her face in profile, and a low-angle shot from behind looking at the sea. Identical wardrobe, light and color grade in all four. Photographic realism, no text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, watermark, blurry, inconsistent character, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-2x2-grid\",\n name: \"2x2 Grid\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"2x2 grid, four equal square photo panels separated by thin white gutters: four different flavors of the same ice-cream cone (strawberry pink, mint green, chocolate brown, vanilla cream), each on a matching pastel background, same angle, same soft studio light. Photographic realism, no text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, watermark, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-headless-sheet\",\n name: \"Headless Sheet\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Headless character reference sheet, exactly 3 panels left to right on a plain neutral grey background separated by thin flat divider lines: full-body front view, full-body back view and full-body side view of the same person in a dark green utility jacket, black jeans and brown boots, framed from the neck down so the head is cropped out of every panel on purpose, feet fully visible, identical outfit and proportions in all three. Realistic DSLR photo quality, no text.\",\n negativePrompt: \"face, head, text, watermark, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-sprite-sheet\",\n name: \"Sprite Sheet\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Game sprite sheet, pixel-art style on a flat light-grey checkered background: a single small knight character in blue armor shown in a walk cycle of 8 frames in a row across the top, and an attack animation of 8 frames across the bottom, each frame the same size with even spacing, consistent character, clean crisp pixels. No text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"text, watermark, blurry, photo\",\n },\n },\n {\n id: \"generate-image/layout-props-sheet\",\n name: \"Props Sheet\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Props reference sheet, a neat grid of 8 objects on a plain light-grey background, each isolated with a soft shadow and even studio light: a leather satchel, a brass compass, a worn journal, a vintage camera, a pocket knife, a tin canteen, a folded map, a lantern. Same scale logic, same angle, consistent warm adventurer style. Photographic realism, no text.\",\n negativePrompt: \"text, watermark, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/layout-comic-page\",\n name: \"Comic Page\",\n group: \"Layout\",\n section: \"Sheets, grids, boards\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Comic book page, classic American comic style with bold ink lines and flat halftone colors: five panels of varying sizes with black gutters telling a short scene of a detective in a trench coat entering a rainy alley, finding a clue, and looking up in surprise; speech balloons with short words \\\"{TEXT || WHO'S THERE?}\\\" and \\\"{TEXT2 || GOT IT.}\\\" and one sound effect \\\"{TEXT3 || KRAK!}\\\" in bold lettering. Consistent character. Crisp, no other text. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"misspelled text, extra words, watermark, blurry, photo\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Text\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_TEXT: readonly FactoryPreset[] = [\n {\n id: \"generate-image/text-blockbuster\",\n name: \"Blockbuster\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Epic blockbuster movie title. The single word \\\"{TEXT || TITAN}\\\" in massive 3D letters carved from weathered stone and brushed steel, filling most of the frame, dramatic rim lighting, drifting smoke and dust, dark background with a faint red glow above, heavy cinematic atmosphere, photoreal texture detail. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, blurry, cartoon\",\n },\n },\n {\n id: \"generate-image/text-horror-poster\",\n name: \"Horror Poster\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Horror movie poster title. The word \\\"{TEXT || HOLLOW}\\\" in tall scratched distressed letters, blood-red with dripping edges, over a black background with faint fog and a torn-paper texture, harsh grain, unsettling. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, cartoon, gore\",\n },\n },\n {\n id: \"generate-image/text-scifi-chrome\",\n name: \"Scifi Chrome\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Sci-fi chrome title. The word \\\"{TEXT || ORBITAL}\\\" in beveled mirror-chrome letters with sharp blue edge highlights and lens flares, hovering over a dark star field with a faint planet horizon glow, cinematic, photoreal reflections. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, cartoon\",\n },\n },\n {\n id: \"generate-image/text-western\",\n name: \"Western\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Western wanted-poster title. The word \\\"{TEXT || OUTLAW}\\\" in heavy slab-serif wood-type letters, dark brown ink on sun-bleached cracked parchment, with ornamental corner flourishes and a thin double border, dusty and worn. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, cartoon\",\n },\n },\n {\n id: \"generate-image/text-film-noir\",\n name: \"Film Noir\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Film noir title. The words \\\"{TEXT || DEAD END}\\\" in tall high-contrast white condensed letters with a hard black drop shadow, lit through venetian-blind shadows that stripe across the letters, black-and-white, cigarette smoke drifting, 1940s mood. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, cartoon, color\",\n },\n },\n {\n id: \"generate-image/text-anime-title\",\n name: \"Anime Title\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Anime title logo. The word \\\"{TEXT || KIZUNA}\\\" in bold brush-stroke style letters, white with a red outline and a slight italic slant, over radial speed lines and a flat sunburst of red and gold, a small ink splash accent, clean cel-shaded look. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo\",\n },\n },\n {\n id: \"generate-image/text-comic-hero\",\n name: \"Comic Hero\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Comic hero title. The word \\\"{TEXT || KABOOM!}\\\" in chunky 3D metallic yellow letters with a thick black outline and a red bevel, bursting out of a jagged white comic explosion shape over a blue halftone-dot background, action lines around it. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo\",\n },\n },\n {\n id: \"generate-image/text-retro-serif-70s\",\n name: \"Retro Serif 70s\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"1970s retro title. The word \\\"{TEXT || GROOVY}\\\" in rounded warm serif letters with a stacked triple outline in orange, mustard and brown, over a cream background with curved rainbow stripes sweeping behind it, slight paper texture. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo\",\n },\n },\n {\n id: \"generate-image/text-vhs-glow\",\n name: \"VHS Glow\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"VHS tape title. The word \\\"{TEXT || REWIND}\\\" in a blocky 1980s video font, white with heavy chromatic aberration (red and cyan fringes), over a dark grainy frame with horizontal scanlines, tracking noise at the bottom and a small \\\"PLAY ▶\\\" overlay in the top-left corner. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-chrome-y2k\",\n name: \"Chrome Y2K\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Y2K chrome title. The word \\\"{TEXT || FUTURE}\\\" in liquid-chrome bubble letters with pink and baby-blue reflections, glossy and inflated, over a soft lavender gradient with a few sparkle stars and a faint grid horizon, early-2000s look. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-psychedelic-60s\",\n name: \"Psychedelic 60s\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Psychedelic 1960s poster title. The word \\\"{TEXT || BLOOM}\\\" in melting wavy letters that flow into each other, filled with swirling rainbow bands of orange, magenta, teal and yellow, over a dark purple background with concentric wavy lines, concert-poster style. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo\",\n },\n },\n {\n id: \"generate-image/text-disco-funk\",\n name: \"Disco Funk\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Disco funk title. The word \\\"{TEXT || BOOGIE}\\\" in fat rounded gold letters with a glittering outline, lit by a spinning mirror ball that scatters light flecks across a deep purple background with a pink starburst, 1970s dance-floor glamour. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-art-deco\",\n name: \"Art Deco\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Art Deco title. The word \\\"{TEXT || ELEGANCE}\\\" in tall geometric gold letters with thin inner lines, framed by symmetrical fan motifs and sunburst rays in gold leaf over a black lacquer background, 1920s style, crisp metallic sheen. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, people\",\n },\n },\n {\n id: \"generate-image/text-80s-synthwave\",\n name: \"80s Synthwave\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"80s synthwave title. The word \\\"{TEXT || NEON DRIVE}\\\" in chrome italic letters with a hot-pink to cyan gradient and a glowing outline, over a dark background with a glowing perspective grid floor, a striped retro sun on the horizon and a few palm silhouettes. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-pixel-8bit\",\n name: \"Pixel 8BIT\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Pixel 8-bit game title. The words \\\"{TEXT || PRESS START}\\\" in chunky blocky pixel letters, bright yellow with a dark blue pixel shadow, centered on a deep navy background with a few pixel stars and a faint CRT scanline glow, retro arcade look. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo\",\n },\n },\n {\n id: \"generate-image/text-graffiti-drip\",\n name: \"Graffiti Drip\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Graffiti title. The word \\\"{TEXT || STREET}\\\" in wildstyle spray-paint letters, electric blue fill with a pink outline and white highlights, wet paint drips running down, sprayed on a weathered red brick wall with faint older tags behind. Photoreal wall texture. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-grunge-stamp\",\n name: \"Grunge Stamp\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Grunge stamp title. The word \\\"{TEXT || APPROVED}\\\" in heavy distressed rubber-stamp letters, faded red ink with worn edges and missing specks, stamped slightly tilted on torn beige cardboard with a rough texture. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-brutalist-acid\",\n name: \"Brutalist Acid\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Brutalist acid-graphics title. The word \\\"{TEXT || RAW}\\\" in an oversized heavy black grotesk typeface, cropped hard by the frame edges, over an acid-green background with a thin black grid, a small black rectangle and a few stray underscores, raw flat layout, no gradients. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark, photo, gradient\",\n },\n },\n {\n id: \"generate-image/text-sticker-pop\",\n name: \"Sticker Pop\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Sticker pop title. The word \\\"{TEXT || YAY!}\\\" in fat bubbly letters, glossy coral pink with a thick white die-cut border and a soft drop shadow, like a vinyl sticker peeling slightly at one corner, on a flat mint background. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-ransom-note\",\n name: \"Ransom Note\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Ransom note title. The words \\\"{TEXT || PAY UP}\\\" spelled with mismatched letters cut from magazines and newspapers, different fonts, sizes and colors, glued slightly crooked on a sheet of cream paper with visible paper edges and glue shine. Photoreal collage. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-glitch\",\n name: \"Glitch\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Glitch title. The word \\\"{TEXT || ERROR}\\\" in bold white sans-serif letters torn apart by horizontal glitch slices, RGB channel split with red and cyan offsets, blocky datamosh artifacts and a few scanlines, over a near-black background. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-gold-foil-luxury\",\n name: \"Gold Foil Luxury\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Gold foil luxury title. The word \\\"{TEXT || LUXE}\\\" in elegant tall serif letters embossed in shiny gold foil with fine specular highlights, on a matte black textured card, soft warm bokeh light from the corner. Photoreal foil. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-molten-gold\",\n name: \"Molten Gold\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Molten gold title. The word \\\"{TEXT || GOLD}\\\" formed from thick liquid molten gold, glossy and dripping heavy drops that fall off the letters, intense warm reflections, over a pure black background. Photoreal liquid metal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-neon-sign\",\n name: \"Neon Sign\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Neon sign title. The word \\\"{TEXT || OPEN}\\\" in glowing pink neon tube letters in a cursive script, mounted on a dark brick wall at night, with a soft pink glow on the bricks, visible tube supports and wires, slight reflection. Photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-frosted-glass\",\n name: \"Frosted Glass\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Frosted glass title. The word \\\"{TEXT || CLEAR}\\\" in thick translucent frosted-glass letters with soft refractions and crisp bevelled edges, standing on a pale grey studio surface with a soft shadow, cool white light. Photoreal glass. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-ice\",\n name: \"Ice\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Ice title. The word \\\"{TEXT || FROZEN}\\\" in letters sculpted from clear blue ice with frost crystals on the surface and small icicles hanging from the bottom edges, over a cold pale-blue misty background. Photoreal ice. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-liquid-water\",\n name: \"Liquid Water\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Liquid water title. The word \\\"{TEXT || SPLASH}\\\" formed from clear splashing water, frozen mid-motion with droplets flying off, lit from the side, over a deep teal background. Photoreal high-speed liquid. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-marble-carved\",\n name: \"Marble Carved\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Marble carved title. The word \\\"{TEXT || ETERNAL}\\\" chiselled deep into a white Carrara marble slab with grey veins, letters in a classic Roman capital style, soft daylight raking across the surface to show the carved depth. Photoreal stone. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-carved-wood\",\n name: \"Carved Wood\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Carved wood title. The word \\\"{TEXT || TIMBER}\\\" carved into a thick oak plank with visible chisel marks and warm grain, sawdust in the grooves, workshop light from a side window. Photoreal wood. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-rusted-metal\",\n name: \"Rusted Metal\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Rusted metal title. The word \\\"{TEXT || FORGE}\\\" in heavy industrial iron letters covered in orange rust and scratches, bolted with rivets onto a dark corrugated steel wall, harsh workshop light, grit and dust. Photoreal metal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-holographic\",\n name: \"Holographic\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Holographic title. The word \\\"{TEXT || PRISM}\\\" in smooth rounded letters with an iridescent holographic foil surface shifting through pink, mint, lilac and gold, soft studio reflections, over a pale silver background. Photoreal foil. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-fire-embers\",\n name: \"Fire Embers\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Fire and embers title. The word \\\"{TEXT || BLAZE}\\\" in dark charred letters burning with real orange flames, glowing embers and sparks rising, smoke curling up, over a black background. Photoreal fire. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-smoke\",\n name: \"Smoke\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Smoke title. The word \\\"{TEXT || VAPOR}\\\" formed from soft grey-white smoke wisps that still read clearly as letters, curling at the edges, lit from the side, over a pure black background. Photoreal smoke. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-inflated-clay\",\n name: \"Inflated Clay\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Inflated clay title. The word \\\"{TEXT || SOFT}\\\" in puffy inflated 3D letters with a matte pastel clay finish in peach, mint and lilac, soft studio light with gentle shadows, on a pale cream background, playful Pixar-like render. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-balloon-foil\",\n name: \"Balloon Foil\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Balloon foil title. The word \\\"{TEXT || PARTY}\\\" spelled with shiny gold metallic foil balloon letters floating against a soft pink wall, slight wrinkles and reflections on the foil, strings hanging down, celebratory. Photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-chalkboard\",\n name: \"Chalkboard\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Chalkboard title. The words \\\"{TEXT || TODAY'S MENU}\\\" hand-lettered in white chalk with decorative flourishes, a small chalk banner and a few chalk doodles of leaves, on a dark green chalkboard with faint smudges. Photoreal chalk. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-typewriter\",\n name: \"Typewriter\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Typewriter title. The words \\\"{TEXT || CHAPTER ONE}\\\" typed in black monospace typewriter letters with slightly uneven ink and a faint double-strike, on aged cream paper with a visible paper texture, a vintage typewriter's edge blurred at the bottom. Photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-handwritten-marker\",\n name: \"Handwritten Marker\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Handwritten marker title. The words \\\"{TEXT || BIG IDEA}\\\" written in thick black marker handwriting with an underline swoosh, on a clean white whiteboard, a blue marker and an eraser blurred at the bottom edge. Photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-embroidered-patch\",\n name: \"Embroidered Patch\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Embroidered patch title. The word \\\"{TEXT || EXPLORER}\\\" stitched in thick orange and cream thread on a round dark-green felt patch with a stitched border, visible thread texture, resting on a denim jacket. Photoreal embroidery. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-paper-cutout\",\n name: \"Paper Cutout\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Paper cutout title. The word \\\"{TEXT || CRAFT}\\\" cut from layered colored paper, each letter a different soft pastel layer with crisp cut edges and soft drop shadows between layers, on a textured cream paper background. Photoreal papercraft. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-botanical-serif\",\n name: \"Botanical Serif\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Botanical serif title. The word \\\"{TEXT || GARDEN}\\\" in an elegant thin serif in deep green, with delicate watercolor leaves, eucalyptus sprigs and small wildflowers woven around and between the letters, on a cream paper background. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-wedding-script\",\n name: \"Wedding Script\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Wedding script title. The words \\\"{TEXT || Forever Yours}\\\" in flowing gold calligraphy script with thin flourishes, on a blush-pink textured paper with a few scattered rose petals and a soft gold-leaf fleck accent. Elegant, photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-kids-party\",\n name: \"Kids Party\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Kids party title. The word \\\"{TEXT || HOORAY!}\\\" in chunky bubbly letters, each letter a different bright color (red, yellow, blue, green, orange, pink) with a white outline, confetti and streamers around, on a sky-blue background. Playful, crisp. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-varsity-sport\",\n name: \"Varsity Sport\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Varsity sport title. The word \\\"{TEXT || CHAMPS}\\\" in classic college block letters, cream felt letters with a navy outline and a red second outline, stitched onto a navy wool varsity jacket fabric with visible texture. Photoreal. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"misspelled text, extra words, watermark\",\n },\n },\n {\n id: \"generate-image/text-indie-title-card\",\n name: \"Indie Title Card\",\n group: \"Text\",\n section: \"Type styles\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Indie film title card. The words \\\"{TEXT || THE QUIET HOUR}\\\" in thin elegant white serif letters with wide letter spacing, centered, large enough to fill about half the frame width and clearly readable even as a small thumbnail, over a muted out-of-focus film still of an empty diner at dusk, lots of negative space around the title, subtle film grain, soft warm grade. If a picture is attached, it is the backdrop: the lettering sits over it, in its light and colours, and it replaces the background described here. No other text.\",\n negativePrompt: \"watermark, extra text, bold heavy font, people\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Business & Marketing\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_BUSINESS_AND_MARKETING: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-001-business\",\n name: \"Brand Identity Starter\",\n description: \"Complete elegant new bakery brand identity presentation with an original bakery emblem, business card, paper pastry bag, sticker and storefront sign on warm travertine; cream, plum and butter-yellow, premium typography.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Create a finished Brand Identity Starter image for direct use. Complete elegant new bakery brand identity presentation with an original bakery emblem, business card, paper pastry bag, sticker and storefront sign on warm travertine; cream, plum and butter-yellow, premium typography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the existing logo or brand reference: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-002-business\",\n name: \"Salon Opening Campaign\",\n description: \"Real ready-to-post salon grand opening advertisement, high-fashion photo of glossy chestnut hair, chic curved coral shapes and huge exact headline \\\"NOW OPEN\\\", understated call-to-action space.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Salon Opening Campaign image for direct use. Real ready-to-post salon grand opening advertisement, high-fashion photo of glossy chestnut hair, chic curved coral shapes and huge exact headline {TEXT || NOW OPEN}, understated call-to-action space. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the salon/stylist photo or logo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-003-business\",\n name: \"Restaurant Menu Design\",\n description: \"Photoreal overhead Mediterranean cafe food photography incorporated into a sophisticated printed two-page brunch menu, large enticing hero dish and legible section headings, olive and ivory.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Restaurant Menu Design image for direct use. Photoreal overhead Mediterranean cafe food photography incorporated into a sophisticated printed two-page brunch menu, large enticing hero dish and legible section headings, olive and ivory. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the real food photographs: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-004-business\",\n name: \"Flash Sale Advertising\",\n description: \"Dynamic true e-commerce social ad for modern black running shoes, huge exact words \\\"48H FLASH SALE\\\", sneakers frozen in energetic motion, bold yellow black white graphic composition.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Flash Sale Advertising image for direct use. Dynamic true e-commerce social ad for modern black running shoes, huge exact words {TEXT || 48H FLASH SALE}, sneakers frozen in energetic motion, bold yellow black white graphic composition. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the the product to advertise: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-005-business\",\n name: \"Neighborhood Dentist Ad\",\n description: \"Trustworthy local dental clinic campaign showing an approachable fictional dentist in a bright modern practice, candid smile, exact title \\\"LOVE YOUR SMILE\\\", airy reassuring design.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Neighborhood Dentist Ad image for direct use. Trustworthy local dental clinic campaign showing an approachable fictional dentist in a bright modern practice, candid smile, exact title {TEXT || LOVE YOUR SMILE}, airy reassuring design. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the clinic, staff or business logo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-006-business\",\n name: \"Property Listing Cover\",\n description: \"Real estate promotional cover for a gorgeous sunlit modern villa, editorial architectural photography, large clear exact title \\\"JUST LISTED\\\", unobstructed house and polished understated contact-safe layout.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Property Listing Cover image for direct use. Real estate promotional cover for a gorgeous sunlit modern villa, editorial architectural photography, large clear exact title {TEXT || JUST LISTED}, unobstructed house and polished understated contact-safe layout. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the property photograph: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-007-business\",\n name: \"Fitness Studio Membership\",\n description: \"Strong gym launch ad with athletic woman in a real high-end training studio, powerful action moment, exact main text \\\"START STRONG\\\", charcoal and citrus yellow with purposeful typography.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Fitness Studio Membership image for direct use. Strong gym launch ad with athletic woman in a real high-end training studio, powerful action moment, exact main text {TEXT || START STRONG}, charcoal and citrus yellow with purposeful typography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the gym, trainer or logo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-008-business\",\n name: \"Product Launch Landing Hero\",\n description: \"High-end website hero visual for a wireless white speaker on sculptural stone plinth, soft morning sun, impressive editorial typography exactly \\\"PURE SOUND\\\", generous clean copy space.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Product Launch Landing Hero image for direct use. High-end website hero visual for a wireless white speaker on sculptural stone plinth, soft morning sun, impressive editorial typography exactly {TEXT || PURE SOUND}, generous clean copy space. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the product photograph: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-009-business\",\n name: \"Hiring Poster\",\n description: \"Modern restaurant hiring poster with cheerful authentic kitchen brigade preparing dishes, elegant restrained headline \\\"JOIN OUR TEAM\\\", inviting personality and professionally structured layout.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Hiring Poster image for direct use. Modern restaurant hiring poster with cheerful authentic kitchen brigade preparing dishes, elegant restrained headline {TEXT || JOIN OUR TEAM}, inviting personality and professionally structured layout. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the real team or restaurant: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-010-business\",\n name: \"Verified Customer Testimonial\",\n description: \"Trust-building promotional design, portrait of fictional happy pottery studio customer beside a ceramic bowl and large exact quote \\\"MY FAVORITE PLACE\\\", warm human tone, no fabricated rating count.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Verified Customer Testimonial image for direct use. Trust-building promotional design, portrait of fictional happy pottery studio customer beside a ceramic bowl and large exact quote {TEXT || MY FAVORITE PLACE}, warm human tone, no fabricated rating count. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the testimonial photo and approved quote: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-011-business\",\n name: \"Service Pricing Flyer\",\n description: \"Print-ready stylish massage studio service pricing flyer; serene realistic hands-and-stones photograph, understated typography with clear headings and three believable service tiers, calm cream and sage.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Service Pricing Flyer image for direct use. Print-ready stylish massage studio service pricing flyer; serene realistic hands-and-stones photograph, understated typography with clear headings and three believable service tiers, calm cream and sage. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the service photo, pricing if available: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-012-business\",\n name: \"Spa Gift Certificate\",\n description: \"Luxury gift certificate design with embossed gold detailing, beautiful minimal botanical background, exact words \\\"GIFT CARD\\\", foil finish, high-end print presentation.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Spa Gift Certificate image for direct use. Luxury gift certificate design with embossed gold detailing, beautiful minimal botanical background, exact words {TEXT || GIFT CARD}, foil finish, high-end print presentation. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the spa logo or photography: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-013-business\",\n name: \"Real Estate Agent Brand Photo\",\n description: \"Fictional real estate professional in sharply tailored beige jacket beside bright apartment window; premium clean personal brand campaign, exact headline \\\"YOUR NEXT CHAPTER\\\", friendly direct eye contact.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Real Estate Agent Brand Photo image for direct use. Fictional real estate professional in sharply tailored beige jacket beside bright apartment window; premium clean personal brand campaign, exact headline {TEXT || YOUR NEXT CHAPTER}, friendly direct eye contact. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the person portrait: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-014-business\",\n name: \"Food Delivery Hero Ad\",\n description: \"Appetizing gourmet smash burger photographed midair with floating pickles and sauce against vibrant warm coral background, huge exact headline \\\"DINNER SORTED\\\", contemporary food-delivery social ad.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Food Delivery Hero Ad image for direct use. Appetizing gourmet smash burger photographed midair with floating pickles and sauce against vibrant warm coral background, huge exact headline {TEXT || DINNER SORTED}, contemporary food-delivery social ad. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the real dish photograph: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-015-business\",\n name: \"Online Course Campaign\",\n description: \"Authentic skilled illustrator at work surrounded by colorful drawing papers and tablet screen; impressive clear course campaign with exact title \\\"LEARN TO DRAW\\\", playful art-school identity.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Online Course Campaign image for direct use. Authentic skilled illustrator at work surrounded by colorful drawing papers and tablet screen; impressive clear course campaign with exact title {TEXT || LEARN TO DRAW}, playful art-school identity. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the teacher or course artwork: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-016-business\",\n name: \"Webinar Registration Banner\",\n description: \"Professional online webinar banner, polished host portrait right, subtle abstract strategy diagram left, exact title \\\"GROW SMARTER\\\", white navy and amber premium editorial layout.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Webinar Registration Banner image for direct use. Professional online webinar banner, polished host portrait right, subtle abstract strategy diagram left, exact title {TEXT || GROW SMARTER}, white navy and amber premium editorial layout. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the presenter headshot: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-017-business\",\n name: \"Charity Fundraiser Appeal\",\n description: \"Emotionally warm documentary photograph of community volunteers planting a shared garden, hopeful fundraising campaign art with exact simple headline \\\"GROW TOGETHER\\\", avoid fake charity emblems or donation facts.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Charity Fundraiser Appeal image for direct use. Emotionally warm documentary photograph of community volunteers planting a shared garden, hopeful fundraising campaign art with exact simple headline {TEXT || GROW TOGETHER}, avoid fake charity emblems or donation facts. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the real volunteer/community photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-018-business\",\n name: \"SaaS Feature Announcement\",\n description: \"Modern software launch advertisement, realistic polished analytics product interface artwork in a perspective browser window, precise exact title \\\"MEET YOUR NEW WORKSPACE\\\", black-and-white with bright lime accent.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished SaaS Feature Announcement image for direct use. Modern software launch advertisement, realistic polished analytics product interface artwork in a perspective browser window, precise exact title {TEXT || MEET YOUR NEW WORKSPACE}, black-and-white with bright lime accent. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the app screenshot: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-019-business\",\n name: \"B2B Case Study Cover\",\n description: \"Corporate but compelling case study cover showing sustainable packaging factory in cinematic documentary photography, restrained type exactly \\\"BETTER BY DESIGN\\\", proof-oriented elegant layout, no invented statistics.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished B2B Case Study Cover image for direct use. Corporate but compelling case study cover showing sustainable packaging factory in cinematic documentary photography, restrained type exactly {TEXT || BETTER BY DESIGN}, proof-oriented elegant layout, no invented statistics. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the company/factory photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-020-business\",\n name: \"Trade Show Booth Design\",\n description: \"Photoreal exhibition hall mockup of modern modular booth for fictional brand \\\"NOVA\\\", illuminated sign, striking curved reception counter and overhead banners, human-scale visitors, professional branded materials.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Trade Show Booth Design image for direct use. Photoreal exhibition hall mockup of modern modular booth for fictional brand {TEXT || NOVA}, illuminated sign, striking curved reception counter and overhead banners, human-scale visitors, professional branded materials. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the booth or original brand identity: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-021-business\",\n name: \"Storefront Sign Mockup\",\n description: \"Believable street-level artisan coffee storefront before opening, premium projecting metal signage reading \\\"MORNING CLUB\\\", attractive awning, window decals, warm golden hour photography.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Storefront Sign Mockup image for direct use. Believable street-level artisan coffee storefront before opening, premium projecting metal signage reading {TEXT || MORNING CLUB}, attractive awning, window decals, warm golden hour photography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the actual storefront photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-022-business\",\n name: \"Newsletter Cover Visual\",\n description: \"Elegant business newsletter header for a creative consulting firm, sculptural folded paper and minimalist editorial photography, simple exact title \\\"THE WEEKLY EDIT\\\", impeccable hierarchy.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Newsletter Cover Visual image for direct use. Elegant business newsletter header for a creative consulting firm, sculptural folded paper and minimalist editorial photography, simple exact title {TEXT || THE WEEKLY EDIT}, impeccable hierarchy. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the brand or editorial photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-023-business\",\n name: \"Luxury Brand Teaser\",\n description: \"High-end fashion campaign image for an original watch brand: dramatic macro mechanical watch partly veiled in sheer linen, luxurious shadows and precisely one line \\\"COMING SOON\\\".\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Luxury Brand Teaser image for direct use. High-end fashion campaign image for an original watch brand: dramatic macro mechanical watch partly veiled in sheer linen, luxurious shadows and precisely one line {TEXT || COMING SOON}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the actual luxury product: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-024-business\",\n name: \"Coffee Shop Menu Board\",\n description: \"Interior scene centered on beautifully designed large readable hanging coffee menu board, small cafe counter with cups, warm hand-lettered typography and charming realistic shop identity.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Coffee Shop Menu Board image for direct use. Interior scene centered on beautifully designed large readable hanging coffee menu board, small cafe counter with cups, warm hand-lettered typography and charming realistic shop identity. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the café photo or menu board: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-025-business\",\n name: \"App Download Ad\",\n description: \"Fun polished advertisement for a fictional habit tracking mobile app, huge phone screen showing friendly illustrated habit checklist, joyful person beside it, exact headline \\\"MAKE IT A HABIT\\\".\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished App Download Ad image for direct use. Fun polished advertisement for a fictional habit tracking mobile app, huge phone screen showing friendly illustrated habit checklist, joyful person beside it, exact headline {TEXT || MAKE IT A HABIT}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the real app screenshot: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-026-business\",\n name: \"Branded Merchandise Kit\",\n description: \"Overhead professional brand identity flat lay of embroidered tote bag, enamel pin, water bottle and notebook carrying a coherent original geometric sun logo, warm neutral background, immaculate product staging.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Create a finished Branded Merchandise Kit image for direct use. Overhead professional brand identity flat lay of embroidered tote bag, enamel pin, water bottle and notebook carrying a coherent original geometric sun logo, warm neutral background, immaculate product staging. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the original logo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-027-business\",\n name: \"Service Explainer Graphic\",\n description: \"Informative stylish three-step infographic for home plant-care subscription, watering can, plant, and delivery box illustrated in sophisticated cut-paper style, 3 numbered steps, minimal readable copy.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Service Explainer Graphic image for direct use. Informative stylish three-step infographic for home plant-care subscription, watering can, plant, and delivery box illustrated in sophisticated cut-paper style, 3 numbered steps, minimal readable copy. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the business image or existing steps: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-028-business\",\n name: \"Holiday Campaign for Shop\",\n description: \"Sophisticated festive seasonal advertisement for a small chocolate business, ribboned artisan praline box with winter foliage and warm candlelight, exact headline \\\"A LITTLE MAGIC\\\", no logos.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Holiday Campaign for Shop image for direct use. Sophisticated festive seasonal advertisement for a small chocolate business, ribboned artisan praline box with winter foliage and warm candlelight, exact headline {TEXT || A LITTLE MAGIC}, no logos. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the actual shop product: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-029-business\",\n name: \"Local Business Business Card\",\n description: \"Beautiful double-sided business card mockup for fictional floral designer \\\"ELLA BLOOM\\\", engraved serif logo, embossed botanical symbol, lightly textured uncoated paper on natural stone.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Create a finished Local Business Business Card image for direct use. Beautiful double-sided business card mockup for fictional floral designer {TEXT || ELLA BLOOM}, engraved serif logo, embossed botanical symbol, lightly textured uncoated paper on natural stone. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the real logo or business card: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-030-business\",\n name: \"New Restaurant Opening Poster\",\n description: \"Editorial poster for a new Japanese ramen restaurant with extraordinary steamy bowl photography, confident vermilion and cream typographic frame, exact main title \\\"RAMEN NIGHT\\\", professional print finish.\",\n group: \"Business & Marketing\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Create a finished New Restaurant Opening Poster image for direct use. Editorial poster for a new Japanese ramen restaurant with extraordinary steamy bowl photography, confident vermilion and cream typographic frame, exact main title {TEXT || RAMEN NIGHT}, professional print finish. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the restaurant food image: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Personal Photos\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_PERSONAL_PHOTOS: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-031-personal\",\n name: \"Old Family Photo Restoration\",\n description: \"Sensitive before-and-after split demonstration: same fictional 1940s family portrait, left with cracks and sepia fading, right faithfully restored in subtle authentic natural color and preserved facial features, no text.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Old Family Photo Restoration\\\"; preserve essential content when reframing. Restore the uploaded OLD FAMILY PHOTOGRAPH itself. Keep every person, face, pose, clothing item, composition and historical context faithful. Remove cracks, faded areas and stains, then make restrained historically plausible colorization. For a demonstration result, show original on left and restored on right. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-032-personal\",\n name: \"Black and White Colorization\",\n description: \"Side-by-side authentic 1960s street portrait of same fictional woman, left monochrome, right historically sensitive lifelike colorized version, preserving expression, period clothing and original environment.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Black and White Colorization\\\"; preserve essential content when reframing. Colorize the exact uploaded monochrome photograph, preserving original faces, placement, expression, garments and era. Assign physically plausible historically consistent colors and realistic natural skin tones; do not invent new objects or people. Show original and colorized version side by side. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-033-personal\",\n name: \"Scratch Removal Photo Repair\",\n description: \"Compelling clean before/after of fictional vintage childhood photograph torn and deeply scratched versus nearly flawless faithful digital restoration, aligned faces, no invented extra people.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Scratch Removal Photo Repair\\\"; preserve essential content when reframing. Repair the exact submitted torn or scratched photograph. Preserve original composition and identity while repairing tears, folds, dust and missing surface detail conservatively. Present before-and-after comparison with aligned composition. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-034-personal\",\n name: \"Faded Portrait Enhancement\",\n description: \"Same fictional grandmother's old washed-out color portrait shown before and after gentle correction of exposure, warmth and facial detail, preserving natural wrinkles and authenticity.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Faded Portrait Enhancement\\\"; preserve essential content when reframing. Enhance the uploaded faded portrait itself. Recover believable skin color, natural dynamic range and sharpness while keeping wrinkles, expression, age and identity intact. Show gentle faithful before-and-after. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-035-personal\",\n name: \"Photo Background Change\",\n description: \"Before-and-after sample with same fictional person and clothing, left ordinary messy backyard, right beautiful tasteful natural lakeside scene, believable matching light and hair edges, no collage outside two panels.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Photo Background Change\\\"; preserve essential content when reframing. Replace ONLY the background of the uploaded photograph with an attractive natural lakeside landscape. Preserve the subject’s exact face, body, hair, clothing and pose, with believable contact shadows and matching light. Show before and after side by side. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-036-personal\",\n name: \"Corporate Headshot Upgrade\",\n description: \"Authentic approachable head-and-shoulders corporate portrait of fictional professional woman, neutral tailored clothing, flattering soft window light, warm gray clean studio setting, indistinguishable from real photography.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Corporate Headshot Upgrade\\\"; preserve essential content when reframing. Turn the uploaded selfie or portrait into an authentic professional corporate headshot. Preserve the person’s identity, apparent age, ethnicity, hairstyle and natural facial features. Improve posture, background, wardrobe polish and studio-soft lighting without changing who the person is. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-037-personal\",\n name: \"Actor Casting Headshot\",\n description: \"Candid expressive theatrical casting headshot of fictional young male actor with freckles, neutral earth-toned top, soft directional natural light and rich but unobtrusive studio background.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Actor Casting Headshot\\\"; preserve essential content when reframing. Transform the actor’s uploaded portrait into a professional natural casting headshot. Preserve distinctive facial features, hair, freckles and authentic age, with simple clothes, controlled directional light and neutral distraction-free framing. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-038-personal\",\n name: \"Professional ID Portrait Example\",\n description: \"Neutral passport-style headshot sample for fictional subject on plain white background, directly facing camera, even shadowless lighting, cropped head and shoulders; photographic portrait only, no ID document.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Professional ID Portrait Example\\\"; preserve essential content when reframing. Convert the uploaded face photo into a clean neutral passport-style PORTRAIT PHOTO. Preserve the person’s appearance, direct gaze and natural features; straighten framing, remove background distractions, use even light and clean white backdrop. This is NOT an official ID document or guarantee of acceptance. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-039-personal\",\n name: \"Try a New Haircut\",\n description: \"Side-by-side same fictional woman's portrait before with long straight hair and after with precise chic short bob haircut, face identity preserved and lighting matched.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Try a New Haircut\\\"; preserve essential content when reframing. Apply a chic short-bob HAIRCUT to the hair of the person in the provided photograph. Keep the same exact face, head geometry, hair texture, age, expression and posture. Display a faithful original and an after version side by side. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-040-personal\",\n name: \"Try a New Hair Color\",\n description: \"Same fictional woman's face and curly hairstyle in three clean adjacent realistic portrait variations: chestnut brunette, honey blonde and copper auburn, consistent identity and posture, neutral daylight.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Try a New Hair Color\\\"; preserve essential content when reframing. Show three plausible hair-color options on the exact person in the uploaded portrait: chestnut, honey blonde and copper auburn, keeping their face, hairstyle, light and skin tone consistent; no facial identity changes. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-041-personal\",\n name: \"Beard Style Preview\",\n description: \"Clean comparative three portrait looks of same fictional adult man: clean shaven, neatly trimmed stubble, sculpted full beard; equal lighting, faithful facial identity, understated photographic styling.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Beard Style Preview\\\"; preserve essential content when reframing. Create a three-option beard preview for the exact adult male in the uploaded picture: clean shaven, tidy stubble and full sculpted beard. Preserve face, jaw structure and skin texture across matched realistic panels. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-042-personal\",\n name: \"Tattoo Design Preview\",\n description: \"Professional tattoo studio concept showing a refined botanical fine-line forearm tattoo in close-up, natural arm skin and beautiful ink details, plus small matching paper flash illustration in the composition.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Tattoo Design Preview\\\"; preserve essential content when reframing. Show an original fine-line botanical tattoo DESIGN on the actual body area or arm photo supplied. Retain the natural anatomy, skin texture, lighting and pose; fit the tattoo naturally to the surface; include a small clean design preview. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-043-personal\",\n name: \"Wedding Portrait Retouch\",\n description: \"Tasteful wedding portrait of fictional couple outdoors at sunset, naturally refined skin tones, restored highlight detail in dress, enhanced gentle golden light, premium fine-art wedding photography.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Wedding Portrait Retouch\\\"; preserve essential content when reframing. Retouch the actual supplied couple’s wedding photograph, preserving both identities, faces, clothes, scene and their emotional expressions. Improve highlights, exposure and gently golden natural skin tones without plastic skin or invented people. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-044-personal\",\n name: \"Travel Portrait Relocation\",\n description: \"Fictional solo traveler wearing practical linen clothes photographed at iconic Positano seaside steps at warm sunrise, casual authentic travel editorial and natural atmospheric perspective, realistic skin textures.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Travel Portrait Relocation\\\"; preserve essential content when reframing. Relocate the uploaded traveler into the atmosphere of morning in Positano. Preserve their exact facial identity, hair and clothes, adjusting only plausible perspective, setting and natural ambient light, with realistic integration. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-045-personal\",\n name: \"Imaginative Travel Selfie\",\n description: \"Fictional smiling young woman taking spontaneous arm-length selfie in Kyoto bamboo forest after rain, lush depth, realistic perspective and travel blogger energy, natural candid imperfections.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"9:16\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Imaginative Travel Selfie\\\"; preserve essential content when reframing. Use the supplied person’s reference portrait or selfie; preserve their face and visible clothing, placing them as if taking a candid arm-length phone photo in Kyoto’s bamboo grove after rain. Match authentic selfie perspective and soft outdoor lighting. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-046-personal\",\n name: \"Fine Art Pet Portrait\",\n description: \"Beloved golden retriever posed regally in a painterly 19th-century oil portrait, velvet emerald chair, realistic expressive dog face and magnificent brushwork, museum quality.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Fine Art Pet Portrait\\\"; preserve essential content when reframing. Turn the user’s uploaded PET photo into a dignified richly painted 19th-century oil portrait. Preserve the animal’s exact face, breed/species, distinctive markings and expression; stage it on an emerald velvet chair with historic painterly brushwork. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-047-personal\",\n name: \"Cartoon Avatar from Portrait\",\n description: \"Split demonstration of an original fictional girl's realistic smiling photograph alongside faithful colorful 3D animated character avatar retaining distinctive glasses, haircut and freckles, polished studio illustration.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Cartoon Avatar from Portrait\\\"; preserve essential content when reframing. Make a side-by-side realistic portrait and charming polished 3D cartoon avatar from the exact uploaded person. Preserve their signature face geometry, glasses, hairstyle, freckles and expression; clearly keep the stylized character recognizably the same person. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-048-personal\",\n name: \"Fantasy Cosplay Selfie\",\n description: \"Fictional ordinary teenage adult woman reimagined as noble fantasy adventurer wearing intricate non-branded leather armor, cinematic forest waterfall, face consistent and recognizably human, highly realistic film costume.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Fantasy Cosplay Selfie\\\"; preserve essential content when reframing. Transform the uploaded adult person into a believable noble fantasy-adventurer portrait. Preserve identity, skin, age and facial expression while replacing outfit with intricate non-branded adventure armor and placing them in cinematic forest setting. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-049-personal\",\n name: \"Elegant Maternity Portrait\",\n description: \"Fine-art photographic maternity portrait of fictional adult expecting mother in modest flowing cream dress against sculptural warm beige studio backdrop, tender peaceful expression, elegant supportive pose.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Elegant Maternity Portrait\\\"; preserve essential content when reframing. Restyle the submitted adult pregnancy portrait into dignified fine-art maternity studio photography. Preserve the actual person’s features and natural body shape; use a modest cream garment, sculptural warm beige setting and softly directional light. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-050-personal\",\n name: \"Virtual Outfit Preview\",\n description: \"Same fictional professional woman's face and pose shown wearing three distinctly different sophisticated interview outfits, aligned clean editorial panels against neutral studio background.\",\n group: \"Personal Photos\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Virtual Outfit Preview\\\"; preserve essential content when reframing. Use the uploaded person as a fixed reference and display that SAME person in three smart interview outfits. Preserve face, height, body proportions, hair and pose; change only clothing and accessory combinations, with matched consistent studio lighting. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Products & Fashion\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_PRODUCTS_AND_FASHION: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-051-products\",\n name: \"Phone Photo to Hero Product\",\n description: \"Strong split before-and-after: same original matte cobalt water bottle photographed casually on kitchen table then transformed into dramatic premium advertising hero image with spray droplets and realistic reflections, exact object geometry.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Phone Photo to Hero Product\\\"; preserve essential content when reframing. Transform the uploaded REAL product photo into a premium hero advertisement. Keep the same actual product geometry, branding, colors and surface details. Show a before-and-after comparison: the casual input photo then a dramatic premium staged version with realistic droplets and reflections. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-052-products\",\n name: \"Clean E-commerce White Packshot\",\n description: \"Pristine catalogue image of original modern tan leather crossbody bag floating at clean three-quarter angle against pure white seamless studio background, true neutral shadow, precise texture and commercial realism.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Clean E-commerce White Packshot\\\"; preserve essential content when reframing. Retouch and relight the uploaded real handbag or other product into a pristine commercial white-seamless-background packshot. Preserve exact materials, design, logos, zips and proportions, with accurate clean contact shadow. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-053-products\",\n name: \"Luxury Perfume Campaign\",\n description: \"Cinematic luxury fragrance campaign featuring original faceted clear glass perfume bottle standing on dark polished basalt above reflective water, golden dawn shaft of light and delicate fog; no brand logos.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Luxury Perfume Campaign\\\"; preserve essential content when reframing. Use the uploaded REAL perfume bottle without altering its faceting, colors, labels or cap geometry. Turn it into a cinematic luxury fragrance photograph on reflective black basalt and shallow water, with gold dawn light and subtle fog. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-054-products\",\n name: \"Skincare Water Splash\",\n description: \"Refreshing commercial product campaign for unbranded white minimalist face serum in frosted glass bottle with clear blue water splash frozen in time, exquisite highlights and perfectly crisp label-free surface.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Skincare Water Splash\\\"; preserve essential content when reframing. Preserve the uploaded original cosmetic serum bottle and its exact label and shape. Create a high-end water-splash beauty product shot, with frozen transparent splash and accurate glossy highlights; no added or changed claims. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-055-products\",\n name: \"Cosmetics Macro Studio\",\n description: \"Exceptional editorial makeup close-up showing original coral-pink lipstick with tactile satin pigment and tiny powder cloud, monochrome art-directed pink background, precise macro studio lighting.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Cosmetics Macro Studio\\\"; preserve essential content when reframing. Use the uploaded actual lipstick or cosmetic product as the hero, preserving shade, printed brand information and packaging shape. Photograph in stylized editorial extreme macro with powder pigment and immaculate believable surface detail. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-056-products\",\n name: \"Designer Handbag Editorial\",\n description: \"A rich oxblood leather women's handbag floating above sculptural limestone and folded sand-colored fabric, fashion editorial photography with premium tactile detail, original unbranded design.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Designer Handbag Editorial\\\"; preserve essential content when reframing. Show the uploaded exact luxury handbag in high-end editorial product staging above limestone and folded linen. Keep its color, straps, hardware, stitches, material texture and silhouette identical. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-057-products\",\n name: \"Sneaker Lifestyle Hero\",\n description: \"Photoreal dynamic promotional image of original cream and orange running shoe worn by runner sprinting on rain-dark pavement, shoe in tack sharp focus, energetic urban background motion, unbranded.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Sneaker Lifestyle Hero\\\"; preserve essential content when reframing. Preserve the uploaded shoe’s exact design, logo, sole and color. Integrate it realistically on an athlete running on rain-dark pavement, with crisp focus on the actual shoe and dynamic non-distorting motion. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-058-products\",\n name: \"Jewelry Gemstone Macro\",\n description: \"Extraordinary macro still life of original rose gold rings with emerald gemstones on textured black slate, precise gem refractions and luxurious soft highlights, fine jewelry catalogue photography.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Jewelry Gemstone Macro\\\"; preserve essential content when reframing. Preserve exact rings, gemstone count, setting design and metal from the user’s jewellery photo. Create a convincing premium macro jewelry image on dark slate with accurate gemstone refraction. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-059-products\",\n name: \"Luxury Watch Details\",\n description: \"Premium architectural macro commercial photograph of unbranded stainless steel automatic wristwatch showing elegant skeleton dial and polished links on shadowy concrete, no brand marks.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Luxury Watch Details\\\"; preserve essential content when reframing. Use the real uploaded watch as product reference. Keep precise dial, hands, markings and bracelet geometry intact, in sophisticated premium macro lighting against concrete; no invented features. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-060-products\",\n name: \"Coffee Packaging Concept\",\n description: \"Original upscale specialty coffee packaging design: matte terracotta resealable pouch with simple original abstract mountain emblem, accompanying scattered beans and espresso cup on warm stone, professional product photography.\",\n group: \"Products & Fashion\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Coffee Packaging Concept image for direct use. Original upscale specialty coffee packaging design: matte terracotta resealable pouch with simple original abstract mountain emblem, accompanying scattered beans and espresso cup on warm stone, professional product photography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the coffee packaging logo/photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-061-products\",\n name: \"Ceramics Product Showcase\",\n description: \"Artisan handmade cream stoneware vases, each unique organically asymmetrical silhouette, staged with dried branches in a serene sunlit Japanese inspired gallery, artisan e-commerce photo.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Ceramics Product Showcase\\\"; preserve essential content when reframing. Preserve the exact uploaded handmade ceramics and their distinctive silhouettes and glaze. Stage them as tasteful sunlit craft-commerce photography with understated Japanese-inspired arrangement. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-062-products\",\n name: \"Electronics Exploded Illustration\",\n description: \"High quality technical but beautiful exploded-view visualization of compact wireless earbuds separated into shell, drivers, battery and charging case floating in clear precise layers, graphite background, no labels or logos.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Electronics Exploded Illustration\\\"; preserve essential content when reframing. Use the supplied product photo or accurate specification as the only source of design truth for a polished exploded-view technical illustration. Preserve recognizable earbud forms; avoid inventing unseen internal component locations as if factual. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-063-products\",\n name: \"Virtual Fashion Model\",\n description: \"Professional fashion e-commerce model photo of fictional young adult woman wearing original emerald linen blouse and high-waisted cream trousers, full-body neutral studio shot, realistic fabric drape and tailoring.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Virtual Fashion Model\\\"; preserve essential content when reframing. Use the uploaded garment photo as garment-reference and, if supplied, a separate person photo as identity-reference. Dress an adult fashion model realistically in that SAME garment, preserving fabric color, seams, collar, cut, pattern and fit; neutral full-body studio photograph. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-064-products\",\n name: \"Inclusive Model Apparel Grid\",\n description: \"A coherent 3-person fashion lookbook image, diverse adult fictional models each wearing same original blue unbranded denim jacket styled differently, attractive clean studio triptych with consistent jacket stitching.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Inclusive Model Apparel Grid\\\"; preserve essential content when reframing. Use the actual uploaded denim jacket as a FIXED product reference across three different adult models in coordinated lookbook panels. Keep zipper/buttons, pockets, silhouette, texture and exact jacket color identical in all looks. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-065-products\",\n name: \"Accessory Lifestyle Campaign\",\n description: \"Designer tortoise-shell sunglasses worn by fictional fashionable woman in sun-drenched Mediterranean street cafe, sophisticated candid editorial photo with focus on recognizable original sunglasses frame.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Accessory Lifestyle Campaign\\\"; preserve essential content when reframing. Preserve the exact uploaded sunglasses frame shape, lens tint, distinctive details and logo. Integrate them naturally onto a fictional adult model photographed in a sophisticated sunlit Mediterranean cafe. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-066-products\",\n name: \"Fashion Flat Lay Outfit\",\n description: \"Neatly art-directed fashionable men's capsule wardrobe top-down flat lay of linen shirt, pleated trousers, brown loafers, leather watch and tote, warm seamless neutral background and soft daylight.\",\n group: \"Products & Fashion\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Create a finished Fashion Flat Lay Outfit image for direct use. Neatly art-directed fashionable men's capsule wardrobe top-down flat lay of linen shirt, pleated trousers, brown loafers, leather watch and tote, warm seamless neutral background and soft daylight. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the wardrobe clothing/accessory photos: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-067-products\",\n name: \"Four-Product Catalog Grid\",\n description: \"Beautiful clean premium four-cell e-commerce catalog grid of coordinated unbranded sustainable skincare bottles each unique form and material, matched lighting, pure cream backdrop, no prices.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Four-Product Catalog Grid\\\"; preserve essential content when reframing. Use the uploaded brand packaging or products as references. Create a neat premium four-cell commercial catalog with accurate product shapes, label designs and finish, identical lighting and spacing, no invented pricing. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-068-products\",\n name: \"Product Rotation Reference Sheet\",\n description: \"Reference-style commercial contact sheet showing SAME unique pale-green ceramic teapot from clean front, side, rear and three-quarter angles, identical material and proportions, simple studio background.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Product Rotation Reference Sheet\\\"; preserve essential content when reframing. Use the uploaded product as the SAME fixed object in four realistic reference views: front, left side, rear and three-quarter. Preserve exact silhouette, materials, design and decorative details; do not manufacture contradictory rear details if not inferable from source. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-069-products\",\n name: \"Product Scale Comparison\",\n description: \"Side-by-side explanatory commercial photo of original compact travel umbrella folded next to a standard ceramic coffee cup, then unfolded above same cafe setting, believable physical scale.\",\n group: \"Products & Fashion\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Product Scale Comparison\\\"; preserve essential content when reframing. Use the uploaded real umbrella or compact product; preserve recognizable design and scale, then present a believable folded/unfolded visual size comparison beside an everyday standard coffee cup, clearly illustrative rather than measured proof. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-070-products\",\n name: \"Premium Food Package Mockup\",\n description: \"Hyperreal shelf-ready packaging concept for organic dark chocolate bar with illustrated cacao botanical motif on recycled black paper wrapper, product bar broken beside it, sophisticated original logo mark.\",\n group: \"Products & Fashion\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Premium Food Package Mockup image for direct use. Hyperreal shelf-ready packaging concept for organic dark chocolate bar with illustrated cacao botanical motif on recycled black paper wrapper, product bar broken beside it, sophisticated original logo mark. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the packaging graphic or food label: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Content & Creative\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_CONTENT_AND_CREATIVE: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-071-creative\",\n name: \"Indie Music Album Cover\",\n description: \"A square final album cover for imaginary atmospheric dream-pop album, lone woman silhouette on rooftop beneath astonishing amber dusk sky, subtle photographic film grain, meaningful minimal title \\\"AFTER THE RAIN\\\" and no other text.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Create a finished Indie Music Album Cover image for direct use. A square final album cover for imaginary atmospheric dream-pop album, lone woman silhouette on rooftop beneath astonishing amber dusk sky, subtle photographic film grain, meaningful minimal title {TEXT || AFTER THE RAIN} and no other text. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the artist portrait or source cover art: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-072-creative\",\n name: \"Electronic Music Cover\",\n description: \"A final square psychedelic techno release cover, abstract kinetic impossible chrome ring sculpture above cracked volcanic salt flat, acid green laser geometry and deep black night, title \\\"PULSE\\\" in commanding unusual typography.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Create a finished Electronic Music Cover image for direct use. A final square psychedelic techno release cover, abstract kinetic impossible chrome ring sculpture above cracked volcanic salt flat, acid green laser geometry and deep black night, title {TEXT || PULSE} in commanding unusual typography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the inspiration or album artwork: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-073-creative\",\n name: \"Thriller Book Jacket\",\n description: \"A complete gripping vertical thriller book cover: remote foggy lakeside house, tiny solitary silhouette approaching narrow illuminated door, haunting cinematic photographic realism, large exact novel title \\\"THE LAST WINDOW\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Create a finished Thriller Book Jacket image for direct use. A complete gripping vertical thriller book cover: remote foggy lakeside house, tiny solitary silhouette approaching narrow illuminated door, haunting cinematic photographic realism, large exact novel title {TEXT || THE LAST WINDOW}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the book subject artwork or location image: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-074-creative\",\n name: \"Romance Novel Cover\",\n description: \"A finished commercially plausible romantic novel front cover featuring original fictional couple gazing over scenic Amalfi coastline in golden afternoon, refined illustrated painterly style, exact title \\\"ONE SUMMER IN ITALY\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Create a finished Romance Novel Cover image for direct use. A finished commercially plausible romantic novel front cover featuring original fictional couple gazing over scenic Amalfi coastline in golden afternoon, refined illustrated painterly style, exact title {TEXT || ONE SUMMER IN ITALY}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the couple or location image: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-075-creative\",\n name: \"Science Fiction Movie Poster\",\n description: \"Finished cinematic film poster with astronaut standing before enormous abandoned ring station above a frozen planet, monumental photographic visual effects, confident typography with exact film title \\\"ORBIT ZERO\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Create a finished Science Fiction Movie Poster image for direct use. Finished cinematic film poster with astronaut standing before enormous abandoned ring station above a frozen planet, monumental photographic visual effects, confident typography with exact film title {TEXT || ORBIT ZERO}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the actor portrait or film concept: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-076-creative\",\n name: \"YouTube Channel Banner\",\n description: \"A ready-to-use ultra-wide banner design for a fictional science explainer YouTube channel: host photo on left, dynamic floating planetary rings and microscopic particles, beautiful centered clear title \\\"CURIOUS LAB\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished YouTube Channel Banner image for direct use. A ready-to-use ultra-wide banner design for a fictional science explainer YouTube channel: host photo on left, dynamic floating planetary rings and microscopic particles, beautiful centered clear title {TEXT || CURIOUS LAB}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the channel host photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-077-creative\",\n name: \"Podcast Cover Artwork\",\n description: \"Square sophisticated podcast cover for original entrepreneurship podcast, expressive two fictional hosts wearing studio headphones in rich softly lit recording studio, huge legible exact title \\\"THE NEXT MOVE\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Create a finished Podcast Cover Artwork image for direct use. Square sophisticated podcast cover for original entrepreneurship podcast, expressive two fictional hosts wearing studio headphones in rich softly lit recording studio, huge legible exact title {TEXT || THE NEXT MOVE}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the podcast host photo(s): build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-078-creative\",\n name: \"History Video Thumbnail\",\n description: \"A publishable 16:9 YouTube thumbnail about ancient history, close-up fictional historian looking amazed on right, monumental Roman architecture and dramatic storm on left, huge exact words \\\"ROME'S SECRET\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished History Video Thumbnail image for direct use. A publishable YouTube thumbnail about ancient history, close-up fictional historian looking amazed on right, monumental Roman architecture and dramatic storm on left, huge exact words {TEXT || ROME'S SECRET}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the channel presenter photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-079-creative\",\n name: \"Fantasy Game App Icon\",\n description: \"A professional square mobile game icon showing original fierce yet charming fox wizard head with tiny golden runes and amber magical flame, handcrafted polished 3D illustration, readable at app-icon size, no typography.\",\n group: \"Content & Creative\",\n section: \"From words\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Create a finished Fantasy Game App Icon image for direct use. A professional square mobile game icon showing original fierce yet charming fox wizard head with tiny golden runes and amber magical flame, handcrafted polished 3D illustration, readable at app-icon size, no typography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-080-creative\",\n name: \"RPG Character Concept Sheet\",\n description: \"Clear fantasy game character design reference sheet for original desert ranger heroine, one full body front pose plus side and rear silhouette and a detailed close-up of outfit accessories, consistent shapes, pale drawing-board background.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished RPG Character Concept Sheet image for direct use. Clear fantasy game character design reference sheet for original desert ranger heroine, one full body front pose plus side and rear silhouette and a detailed close-up of outfit accessories, consistent shapes, pale drawing-board background. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the character sheet or drawing: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-081-creative\",\n name: \"Fantasy Item Inventory\",\n description: \"A perfectly organized 4x3 set of twelve distinct original fantasy game inventory objects (potions, amulets, helmet, boots, spellbook, lantern), consistent premium painterly game art each in own panel, no text.\",\n group: \"Content & Creative\",\n section: \"From words\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"4:3\",\n prompt: \"Create a finished Fantasy Item Inventory image for direct use. A perfectly organized 4x3 set of twelve distinct original fantasy game inventory objects (potions, amulets, helmet, boots, spellbook, lantern), consistent premium painterly game art each in own panel, no text. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-082-creative\",\n name: \"Worldbuilding Environment Art\",\n description: \"Breathtaking original fantasy game environment concept art of enormous limestone city carved into a sheer coastal cliff with hanging bridges and distant birds, atmospheric worldbuilding wide shot, intricate visual storytelling.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Worldbuilding Environment Art image for direct use. Breathtaking original fantasy game environment concept art of enormous limestone city carved into a sheer coastal cliff with hanging bridges and distant birds, atmospheric worldbuilding wide shot, intricate visual storytelling. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the environment/world concept: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-083-creative\",\n name: \"Four-Panel Comic Story\",\n description: \"A complete four-panel friendly comic page of an original mischievous cat trying to steal cake in sunny kitchen, visually readable sequential story with consistent cat and humor, vivid hand-drawn graphic novel art, no speech balloons.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Four-Panel Comic Story image for direct use. A complete four-panel friendly comic page of an original mischievous cat trying to steal cake in sunny kitchen, visually readable sequential story with consistent cat and humor, vivid hand-drawn graphic novel art, no speech balloons. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the cat character or mascot: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-084-creative\",\n name: \"Children's Story Illustration\",\n description: \"Enchanting double-page watercolor children's picture book illustration of a tiny adventurous hedgehog discovering a giant luminous mushroom at twilight, warm gentle fairytale atmosphere, empty upper margin for later text.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Children's Story Illustration image for direct use. Enchanting double-page watercolor children's picture book illustration of a tiny adventurous hedgehog discovering a giant luminous mushroom at twilight, warm gentle fairytale atmosphere, empty upper margin for later text. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, it is the storybook character design: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-085-creative\",\n name: \"Educational Science Infographic\",\n description: \"Clear visual infographic teaching four stages of a butterfly life cycle, scientifically recognizable egg, caterpillar, chrysalis, adult butterfly connected by arrows, beautiful botanical illustration, accurate order, minimal numbered labels.\",\n group: \"Content & Creative\",\n section: \"From words\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Educational Science Infographic image for direct use. Clear visual infographic teaching four stages of a butterfly life cycle, scientifically recognizable egg, caterpillar, chrysalis, adult butterfly connected by arrows, beautiful botanical illustration, accurate order, minimal numbered labels. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-086-creative\",\n name: \"Executive Presentation Slide\",\n description: \"One completed corporate keynote slide about renewable energy transition with a striking photographic wind-farm background on right, clean bold title \\\"POWERING TOMORROW\\\" and a strong simple stylized upward data visual on left.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Executive Presentation Slide image for direct use. One completed corporate keynote slide about renewable energy transition with a striking photographic wind-farm background on right, clean bold title {TEXT || POWERING TOMORROW} and a strong simple stylized upward data visual on left. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the reference slide or actual chart: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-087-creative\",\n name: \"Scientific Research Poster\",\n description: \"Editorial conference research poster about marine coral ecosystems, professional underwater photography, three neatly aligned scientific illustration diagrams, clean hierarchy with headline \\\"CORAL IN FOCUS\\\", no fake research results.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Scientific Research Poster image for direct use. Editorial conference research poster about marine coral ecosystems, professional underwater photography, three neatly aligned scientific illustration diagrams, clean hierarchy with headline {TEXT || CORAL IN FOCUS}, no fake research results. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the actual research figures: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-088-creative\",\n name: \"Recipe Instruction Card\",\n description: \"Beautiful vertical cooking recipe card for rustic lemon pasta with appetizing overhead food shot, expressive original line drawings of lemon, basil and pasta, title \\\"LEMON PASTA\\\", elegant short ingredient list.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Recipe Instruction Card image for direct use. Beautiful vertical cooking recipe card for rustic lemon pasta with appetizing overhead food shot, expressive original line drawings of lemon, basil and pasta, title {TEXT || LEMON PASTA}, elegant short ingredient list. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the dish photo and recipe: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-089-creative\",\n name: \"Music Festival Poster\",\n description: \"Finished dramatic vertical independent electronic music festival poster, ecstatic real crowd dancing under open-air desert sunrise and abstract sculpture, stunning experiential composition, exact event title \\\"DUST & SOUND\\\".\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Create a finished Music Festival Poster image for direct use. Finished dramatic vertical independent electronic music festival poster, ecstatic real crowd dancing under open-air desert sunrise and abstract sculpture, stunning experiential composition, exact event title {TEXT || DUST & SOUND}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the event photo/logo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-090-creative\",\n name: \"Travel Magazine Cover\",\n description: \"Stunning vertical travel guide cover featuring dreamy aerial view of dramatic Greek island harbor and bright blue sea, clear authoritative headline \\\"ISLAND ESCAPES\\\", polished premium travel editorial design.\",\n group: \"Content & Creative\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Travel Magazine Cover image for direct use. Stunning vertical travel guide cover featuring dreamy aerial view of dramatic Greek island harbor and bright blue sea, clear authoritative headline {TEXT || ISLAND ESCAPES}, polished premium travel editorial design. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the destination photograph: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Home & Spaces\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_HOME_AND_SPACES: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-091-home\",\n name: \"Scandinavian Living Room Redesign\",\n description: \"Wide finished photorealistic interior design visualization of a typical compact living room reimagined with pale oak floors, ivory sofa, linen curtains and warm lamps, natural daylight, professionally styled yet lived-in.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Scandinavian Living Room Redesign\\\"; preserve essential content when reframing. Redesign the UPLOADED living room as a realistic Scandinavian makeover. Preserve the original camera angle, wall geometry, doors, windows, ceiling height and fixed structural features. Introduce pale oak finishes, ivory sofa, linen curtains and warm lamps only where plausible. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-092-home\",\n name: \"Contemporary Kitchen Renovation\",\n description: \"Convincing premium interior renovation render of family kitchen with warm walnut lower cabinetry, cream stone island, bronze hardware and generous daylight, realistic construction proportions, attractive real estate photo.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Contemporary Kitchen Renovation\\\"; preserve essential content when reframing. Redesign the exact uploaded kitchen in a modern contemporary style. Preserve room dimensions, architecture, windows, utility positions and camera; replace cabinetry with walnut fronts, warm cream island finish and brass hardware where physically possible. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-093-home\",\n name: \"Japandi Bedroom Makeover\",\n description: \"Quiet photoreal design vision for ordinary bedroom transformed with low oak platform bed, cream shoji screens, tactile linen, discreet cove lighting and restrained organic decor, natural atmosphere.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Japandi Bedroom Makeover\\\"; preserve essential content when reframing. Edit the UPLOADED bedroom into a believable Japandi interior. Preserve its walls, windows, doors, room size, ceiling, camera perspective and fixed elements. Restyle furniture to a low oak platform bed, cream shoji-inspired screens where they physically fit, tactile linen, discreet cove lighting and restrained natural decor. Do NOT generate a different bedroom. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-094-home\",\n name: \"Spa Bathroom Upgrade\",\n description: \"Photo-real small bathroom redesign with walk-in fluted glass shower, travertine wall tile, curved solid oak vanity, elegantly integrated lighting and realistic reflections, professional architecture photography.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Spa Bathroom Upgrade\\\"; preserve essential content when reframing. Renovate the uploaded bathroom photo into a believable spa-inspired design. Preserve walls, openings, overall room footprint and major plumbing constraints. Introduce travertine, fluted shower glass, oak vanity and softly integrated lighting in realistic proportions. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-095-home\",\n name: \"Work-From-Home Office\",\n description: \"Beautiful functional modest home-office interior featuring ergonomic oak desk, shelving and plants, daylight from large side window, subtle monitor setup and immaculate but usable workspace, editorial interior photo.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Work-From-Home Office\\\"; preserve essential content when reframing. Use the uploaded actual spare room or home-office photo and retain its floor plan, window placement and built-in structures. Reconfigure furniture into a pleasant highly functional work-from-home desk, shelves and plant layout, accurately scaled. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-096-home\",\n name: \"Nursery Room Concept\",\n description: \"Gentle baby nursery visualization with cream walls, natural maple furniture, safe crib, sweet handmade woodland motifs, textured rug and realistic soft morning sunshine, warm welcoming family design.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Nursery Room Concept\\\"; preserve essential content when reframing. Transform the uploaded child’s room or spare room into a welcoming safe nursery design. Preserve room geometry and openings. Add practical maple crib, calm cream palette, woodland touches and appropriate walking clearance; no impossible spatial changes. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-097-home\",\n name: \"Small Balcony Garden\",\n description: \"Inviting apartment balcony transformation showing compact teak seating, vertical planters, hanging herbs and fairy lights at golden hour, plausible tight dimensions and cozy city view.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Small Balcony Garden\\\"; preserve essential content when reframing. Reimagine the uploaded exact small balcony into a functional compact urban garden. Preserve floor slab, railings, door, neighboring buildings and view. Add proportional teak seating, vertical planters and cozy lighting without changing its size. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-098-home\",\n name: \"Backyard Landscape Design\",\n description: \"Beautiful wide residential backyard redesign including outdoor dining pergola, native planting, stepping stones and soft landscaping, realistic grass and afternoon light, aspirational but buildable.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Backyard Landscape Design\\\"; preserve essential content when reframing. Redesign the user’s real uploaded backyard. Keep boundary walls, slopes, existing building, doors and access paths. Add plausible pergola, native planting, stepping stones and usable lawn, realistic architecture and landscaping. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-099-home\",\n name: \"Modern House Facade\",\n description: \"A believable photoreal before-style 1980s suburban house transformed into modern white stucco and dark timber facade, new entry garden and contemporary slim windows, daylight architecture photograph.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Modern House Facade\\\"; preserve essential content when reframing. Upgrade the uploaded house facade to a modern style. KEEP the actual building’s size, roofline, doors, windows and massing consistent; alter external finishes, trim, entry landscaping and lighting only, to show a buildable-looking concept. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-100-home\",\n name: \"Exterior Paint Options\",\n description: \"Accurate clean three-panel comparison of SAME small townhome facade, with matching camera and building geometry painted pale sage, warm white and charcoal, natural daylight, visual material color chooser.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Exterior Paint Options\\\"; preserve essential content when reframing. Produce a clean three-panel exterior paint preview of the SAME uploaded building, same camera, roof, windows and surroundings, changing only facade paint between sage green, warm ivory and dark charcoal. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-101-home\",\n name: \"Place a Sofa in Your Room\",\n description: \"Photoreal visualization of a new sand-colored modular sofa in an existing-style living room with original windows and rug preserved, realistic scale and contact shadows, no people.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Place a Sofa in Your Room\\\"; preserve essential content when reframing. Place a new sand-colored modular sofa into the uploaded real living room photo. Preserve every other furnishing, windows, floor perspective and architectural geometry, with correct human scale, contact shadows and matching ambient light. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-102-home\",\n name: \"Cabinet Repaint Preview\",\n description: \"Split comparison of same real-looking shaker kitchen cabinets before in old orange pine and after in muted forest green with brushed brass handles, locked framing and appliances, convincing renovation demo.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Cabinet Repaint Preview\\\"; preserve essential content when reframing. Repaint the cabinets in the exact uploaded kitchen from existing wood or paint to forest green. Keep original cabinet door profiles, handles except optional brass swap, countertops, appliances, dimensions and camera exactly; show side-by-side original and after. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-103-home\",\n name: \"Dining Room Lighting Try-on\",\n description: \"Architectural comparison of a comfortable home dining room under three different pendant light styles with same furniture preserved, consistent camera, realistic shadows and warm material rendering.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Dining Room Lighting Try-on\\\"; preserve essential content when reframing. Use the SAME uploaded dining-room image for three distinct pendant-light alternatives. Maintain exact furniture, room and camera geometry; change only hanging fixtures and the realistic way light falls in the room. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-104-home\",\n name: \"Tiny Apartment Space Saving\",\n description: \"Functional 35-square-meter apartment design showing clever foldaway wall bed, compact dining table and light built-in oak storage, clean wide-angle architectural photograph, honest human scale.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Tiny Apartment Space Saving\\\"; preserve essential content when reframing. Optimize the uploaded small apartment design WITHOUT changing the building dimensions, windows, doorways or structural partitions. Suggest proportional foldaway bed, small dining table and integrated storage, respecting plausible clearances. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-105-home\",\n name: \"Boutique Cafe Interior Design\",\n description: \"Stunning yet buildable small cafe interior with warm terracotta banquette, original oak counters, beautiful pendant lighting and cozy seating niches, hospitality design visualization, no signage.\",\n group: \"Home & Spaces\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Boutique Cafe Interior Design\\\"; preserve essential content when reframing. Restyle the original uploaded café interior into a charming boutique hospitality space while preserving floor plan, entries, front windows, ceiling and real size. Add warm terracotta banquettes, functional oak counter and intimate realistic pendant lighting. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Create Image tiles, tab \"Family & Events\": each preset's prompt is the one that rendered its picture.\nimport type { FactoryPreset } from \"../types.js\"\n\nexport const TILES_FAMILY_AND_EVENTS: readonly FactoryPreset[] = [\n {\n id: \"generate-image/uc-106-family\",\n name: \"Elegant Wedding Invitation\",\n description: \"Final sophisticated printed wedding invitation card and matching RSVP on cream cotton paper with elegant botanical embossed motif, calligraphic headline \\\"WE'RE GETTING MARRIED\\\", understated gold details, dreamy stationery photograph.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Elegant Wedding Invitation image for direct use. Final sophisticated printed wedding invitation card and matching RSVP on cream cotton paper with elegant botanical embossed motif, calligraphic headline {TEXT || WE'RE GETTING MARRIED}, understated gold details, dreamy stationery photograph. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the couple photo or wedding motif: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-107-family\",\n name: \"Kids Birthday Party Invitation\",\n description: \"Playful professionally designed rainbow dinosaur birthday invitation with original friendly dinosaurs wearing party hats, balloon confetti and joyful typography exactly \\\"LET'S PARTY\\\", lively clean pastel illustration.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Kids Birthday Party Invitation image for direct use. Playful professionally designed rainbow dinosaur birthday invitation with original friendly dinosaurs wearing party hats, balloon confetti and joyful typography exactly {TEXT || LET'S PARTY}, lively clean pastel illustration. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the party photo or original artwork: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-108-family\",\n name: \"Bar Mitzvah Invitation\",\n description: \"Premium bar mitzvah event invitation mockup with tasteful Jerusalem stone arches illustrated in modern line-art, navy and antique gold typography, exact title \\\"BAR MITZVAH\\\", elegant bilingual-safe clear space.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Bar Mitzvah Invitation image for direct use. Premium bar mitzvah event invitation mockup with tasteful Jerusalem stone arches illustrated in modern line-art, navy and antique gold typography, exact title {TEXT || BAR MITZVAH}, elegant bilingual-safe clear space. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the event portrait or motif: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-109-family\",\n name: \"Baby Shower Invitation\",\n description: \"Charming watercolor invitation card with hand-painted moon, tiny stars and clouds in soft sage ivory and faded peach, crisp text \\\"BABY SHOWER\\\", beautiful warm handmade stationery.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Baby Shower Invitation image for direct use. Charming watercolor invitation card with hand-painted moon, tiny stars and clouds in soft sage ivory and faded peach, crisp text {TEXT || BABY SHOWER}, beautiful warm handmade stationery. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the baby shower photo or palette: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-110-family\",\n name: \"Graduation Celebration Invite\",\n description: \"Chic young adult graduation party invitation featuring playful black mortarboard, sculptural metallic gold ribbon, rich emerald background and giant exact headline \\\"GRADUATION NIGHT\\\".\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Graduation Celebration Invite image for direct use. Chic young adult graduation party invitation featuring playful black mortarboard, sculptural metallic gold ribbon, rich emerald background and giant exact headline {TEXT || GRADUATION NIGHT}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the graduate portrait: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-111-family\",\n name: \"Save the Date Postcard\",\n description: \"Minimal editorial couple's save-the-date postcard, natural candid photograph of fictional engaged couple at coastal cliff in warm sunset with tasteful serif exact phrase \\\"SAVE THE DATE\\\", clean gallery-style layout.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Save the Date Postcard image for direct use. Minimal editorial couple's save-the-date postcard, natural candid photograph of fictional engaged couple at coastal cliff in warm sunset with tasteful serif exact phrase {TEXT || SAVE THE DATE}, clean gallery-style layout. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the engaged couple photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-112-family\",\n name: \"Family Movie Poster Portrait\",\n description: \"Original fictional multigenerational happy family of six as protagonists of a playful blockbuster adventure film poster, tropical jungle temple ruins and dramatic cinematic light, exact title \\\"OUR BIG ADVENTURE\\\".\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2-5-flare\",\n resolution: \"1K\",\n aspectRatio: \"2:3\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Family Movie Poster Portrait\\\"; preserve essential content when reframing. Transform the uploaded FAMILY group photo into a cinematic adventure movie poster. Keep all family members, count, relative ages and recognizable facial features, retaining distinct identities, while adding fun jungle-temple setting and a bold original title. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements. Render the words exactly as given; do not invent extra headlines.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-113-family\",\n name: \"Newborn Announcement Card\",\n description: \"Tender newborn birth announcement stationery featuring sleeping fictional baby close-up wrapped in cream blanket, hand painted linework, simple clear exact headline \\\"HELLO LITTLE ONE\\\", natural intimate photography.\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Newborn Announcement Card\\\"; preserve essential content when reframing. Use the supplied newborn photo as the central portrait with exact infant identity and natural skin color preserved. Integrate into a gentle high-end birth announcement layout with delicate botanical accents, no invented names, dates or measurements. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements. Render the words exactly as given; do not invent extra headlines.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-114-family\",\n name: \"Pet Birthday Party Portrait\",\n description: \"Fun premium party photo of an adorable French bulldog sitting proudly at its small dog-friendly birthday cake, confetti and festive streamers, charming believable dog expression, card-ready composition.\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"1:1\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Pet Birthday Party Portrait\\\"; preserve essential content when reframing. Use the uploaded actual pet photo and preserve species, facial markings, size and expression. Stage a joyful dog-safe pet birthday scene with small cake and decorations in premium realistic party photography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-115-family\",\n name: \"Winter Holiday Family Card\",\n description: \"Heartwarming original fictional family of four posing candidly under cozy cabin porch string lights, fresh snow outside, tasteful lettering \\\"WARM WISHES\\\", welcoming season-neutral winter card design.\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Winter Holiday Family Card\\\"; preserve essential content when reframing. Use the real uploaded family photograph and keep all faces, count and expressions recognizable. Transform the environment into a cozy snowy chalet card with natural warm porch lighting, without inventing new family members. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements. Render the words exactly as given; do not invent extra headlines.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-116-family\",\n name: \"Rosh Hashanah Greeting\",\n description: \"Beautiful contemporary Jewish New Year greeting card centered around richly photographed apples, pomegranate and honey bowl on fine linen with olive branches, elegant original Hebrew typography \\\"שנה טובה\\\".\",\n group: \"Family & Events\",\n section: \"From words\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Rosh Hashanah Greeting image for direct use. Beautiful contemporary Jewish New Year greeting card centered around richly photographed apples, pomegranate and honey bowl on fine linen with olive branches, elegant original Hebrew typography {TEXT || שנה טובה}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-117-family\",\n name: \"Ramadan Celebration Greeting\",\n description: \"Respectful elegant Ramadan greeting illustration with delicate golden crescent moon, intricate geometric arches and softly glowing lanterns, warm deep indigo night sky, beautiful exact Arabic headline \\\"رمضان كريم\\\".\",\n group: \"Family & Events\",\n section: \"From words\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Create a finished Ramadan Celebration Greeting image for direct use. Respectful elegant Ramadan greeting illustration with delicate golden crescent moon, intricate geometric arches and softly glowing lanterns, warm deep indigo night sky, beautiful exact Arabic headline {TEXT || رمضان كريم}. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, use it: a person in it is the person shown here, a product in it is the product, and a scene is the backdrop, in its light and colours.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-118-family\",\n name: \"Party Photo Booth Backdrop\",\n description: \"Photoreal event styling concept with spectacular shimmering fringe photo-booth wall, asymmetrical balloon arch in apricot gold and cream, giant luminous number \\\"30\\\" and small matching props table.\",\n group: \"Family & Events\",\n section: \"With or without a photo\",\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"16:9\",\n prompt: \"Create a finished Party Photo Booth Backdrop image for direct use. Photoreal event styling concept with spectacular shimmering fringe photo-booth wall, asymmetrical balloon arch in apricot gold and cream, giant luminous number {TEXT || 30} and small matching props table. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. Render the words exactly as given; do not invent extra headlines. If a picture is attached, it is the event venue photo: build the piece on it and keep what it shows true.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-119-family\",\n name: \"Memorial Tribute Photo Card\",\n description: \"Understated dignified memorial tribute card featuring a fictional elderly person's warm smiling classic portrait, delicate botanical border, quiet ivory and muted blue palette, no names, dates or invented biography.\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Memorial Tribute Photo Card\\\"; preserve essential content when reframing. Use the exact loved person’s uploaded portrait as the only identity source. Preserve recognizability, age and natural expression, making a dignified understated remembrance card; never invent their name, dates or biography. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n {\n id: \"generate-image/uc-120-family\",\n name: \"Anniversary Celebration Card\",\n description: \"Elegant fiftieth anniversary celebration card with original fictional elderly couple dancing lovingly in garden at sunset, subtle golden numeral \\\"50\\\", beautiful fine-art photo, sophisticated celebratory layout.\",\n group: \"Family & Events\",\n section: \"From your photo\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n resolution: \"1K\",\n aspectRatio: \"3:4\",\n prompt: \"Edit the supplied reference image(s) to produce a FINISHED result for \\\"Anniversary Celebration Card\\\"; preserve essential content when reframing. Use the real uploaded anniversary couple photo. Keep both people’s facial identity, apparent age, clothes and relationship recognizable, placing them into a beautifully lit gentle garden celebration card with elegant gold anniversary numeral. Produce the FINAL usable image, not a product dashboard, tutorial, screenshot of a template, or behind-the-scenes demonstration. Compose professionally, with clear visual hierarchy where typography is present. No watermark or random filler copy. When an uploaded image is supplied, it is the visual source of truth: preserve identifying features, spatial geometry, true wording and original object details relevant to the task. Do not invent real-world claims, ratings, measurements or endorsements. Render the words exactly as given; do not invent extra headlines.\",\n negativePrompt: \"watermark, app UI mockup, random filler text, illegible nonsense copy\",\n },\n },\n]\n","// GENERATED by tools/preset-tiles/build.mts from tools/preset-tiles/ledger.json — do not edit.\n// Every Create Image tile preset, tab by tab, in ledger order.\nimport type { FactoryPreset } from \"../types.js\"\nimport { TILES_YOUTUBE } from \"./youtube.generated.js\"\nimport { TILES_SHORTS_TIKTOK } from \"./shorts-tiktok.generated.js\"\nimport { TILES_SOCIAL_AND_ADS } from \"./social-and-ads.generated.js\"\nimport { TILES_BUSINESS } from \"./business.generated.js\"\nimport { TILES_LIFE_AND_EVENTS } from \"./life-and-events.generated.js\"\nimport { TILES_LAYOUT } from \"./layout.generated.js\"\nimport { TILES_TEXT } from \"./text.generated.js\"\nimport { TILES_BUSINESS_AND_MARKETING } from \"./business-and-marketing.generated.js\"\nimport { TILES_PERSONAL_PHOTOS } from \"./personal-photos.generated.js\"\nimport { TILES_PRODUCTS_AND_FASHION } from \"./products-and-fashion.generated.js\"\nimport { TILES_CONTENT_AND_CREATIVE } from \"./content-and-creative.generated.js\"\nimport { TILES_HOME_AND_SPACES } from \"./home-and-spaces.generated.js\"\nimport { TILES_FAMILY_AND_EVENTS } from \"./family-and-events.generated.js\"\n\nexport const GENERATE_IMAGE_TILE_PRESETS: readonly FactoryPreset[] = [\n ...TILES_YOUTUBE,\n ...TILES_SHORTS_TIKTOK,\n ...TILES_SOCIAL_AND_ADS,\n ...TILES_BUSINESS,\n ...TILES_LIFE_AND_EVENTS,\n ...TILES_LAYOUT,\n ...TILES_TEXT,\n ...TILES_BUSINESS_AND_MARKETING,\n ...TILES_PERSONAL_PHOTOS,\n ...TILES_PRODUCTS_AND_FASHION,\n ...TILES_CONTENT_AND_CREATIVE,\n ...TILES_HOME_AND_SPACES,\n ...TILES_FAMILY_AND_EVENTS,\n]\n","import type { FactoryPreset } from \"./types.js\"\nimport { stylizedSubjectFor, editsFor } from \"./shared-image.js\"\nimport { NEUTRAL_PERSON, REALISM_FINISH, REALISM_SKIN, realismEmptyHands, realismViewpoint } from \"../realism-wording.js\"\nimport { GENERATE_IMAGE_TILE_PRESETS } from \"./tiles/index.generated.js\"\n\n/** Joins the sentences of one prompt with single spaces. */\nconst sentences = (...parts: string[]): string => parts.join(\" \")\n/** The model and resolution the Realism & Authentic presets render with. */\nconst REALISM_MODEL = { provider: \"gpt-image-2\", resolution: \"2K\" } as const\n/** The model and quality the close skin studies render with (Macro Skin Study, Skin Detail Sheet). */\nconst SKIN_STUDY_MODEL = { provider: \"seedream-5-pro\", quality: \"high\" } as const\n\nexport const GENERATE_IMAGE_PRESETS: readonly FactoryPreset[] = [\n // `minReferences` marks a preset that works from connected photos its prompt\n // describes in words (\"the attached photo\"); `{image:N}` tokens count on their\n // own, so a tokenized preset declares nothing. The groups stay all-or-nothing\n // (factory-preset-references.test.ts), so a new preset copies the line along.\n // ── Reference Sheet ──────────────────────────────────────────────────────\n {\n id: \"generate-image/character-board\",\n name: \"Character Board\",\n description: \"Connect a sharp, well-lit photo → dense character sheet; reuse it as a reference for consistent shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed character reference sheet titled \"CHARACTER BOARD\" using the attached photo of the person as the single source of truth for face, hair, beard, eyes, skin tone and body proportions. The same person must appear in every panel — same age, same features. Outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the main portrait, metadata, and supporting panels to shift position naturally within the board. The panel arrangement can vary from generation to generation while remaining readable, balanced, and premium. Design the board so it works cleanly in different aspect ratios without depending on a fixed left-column structure. Include: A large hero portrait or 3/4-length character image, accompanied by a detailed metadata block: NAME · AGE · HEIGHT · BUILD · HAIR · EYES · FEATURES · OUTFIT (describe the exact clothing from the attached photo) · CHARACTER · MOOD. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 full-body shots, neutral pose, identical outfit and lighting, neutral tan backdrop): FRONT · 3/4 LEFT · SIDE LEFT · BACK · 3/4 RIGHT. PANEL 02 — EXPRESSIONS (5 tight headshots, same lighting): CALM · LAUGHING · INTENSE · CONTEMPLATIVE · CONFIDENT. PANEL 03 — DETAILS (3 macros): face/eyes close-up · hand close-up (showing ring, watch or cuff) · distinctive outfit detail. PANEL 04 — OUTFIT FLAT-LAYS (5 isolated product shots on dark background): outerwear · top · bottom · footwear · main accessory. PANEL 05 — LIGHTING / MOOD (4 same-pose portraits under different lighting): SOFT WINDOW LIGHT · GOLDEN HOUR · COOL BLUE NIGHT · DRAMATIC RIM-LIGHT. PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: \"Use this character board as a visual reference for consistent depiction of the character across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent face across every single panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/pose-board\",\n name: \"Pose Board\",\n description: \"Connect a sharp photo → animation-ready pose & expression sheet; reuse it as a reference for consistent action.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed pose reference sheet titled \"POSE BOARD\" using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, body proportions and outfit. The same person must appear in every panel — same age, same features, outfit identical to the attached photo across all panels. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade animation-planning UI. The composition should feel organized but not rigidly locked: allow the hero figure, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large full-body hero shot in a relaxed standing pose with a metadata block: NAME · AGE · BUILD · HEIGHT · OUTFIT · POSE LANGUAGE · CENTER OF GRAVITY · DOMINANT HAND · PURPOSE. Also include five content groupings — render ALL five panel headings exactly as written, never merging or omitting a panel: PANEL 01 — BASIC POSES (5 full-body shots, identical outfit and lighting, neutral tan backdrop): STANDING · SITTING · WALKING · RUNNING · JUMPING. PANEL 02 — ACTION POSES (5 dynamic full-body shots with clear silhouettes): FIGHT STANCE · THROW · DODGE · CLIMB · LAND. PANEL 03 — EXPRESSIONS (5 tight headshots, same lighting): NEUTRAL · LAUGHING · ANGRY · SAD · SURPRISED. PANEL 04 — ANGLE COVERAGE (4 chest-up portraits): FRONT · 3/4 · SIDE · BACK. PANEL 05 — COLOR PALETTE: 6 swatches with HEX codes derived from the outfit and skin tones. Bottom caption: \"Use this pose board as a visual reference for consistent posing of the character across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent identity across every single panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, inconsistent identity between panels, extra limbs, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/location-board\",\n name: \"Location Board\",\n description: \"Connect a photo → dense location sheet; reuse it as a reference for consistent scenes.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed location reference sheet titled \"LOCATION BOARD\" using the attached photo of the location as the single source of truth for its architecture, atmosphere, lighting, materials and color palette. The space must be identical across every panel — same place, same materials, same era. All on-image labels in ENGLISH. Editorial location-reference board layout with a dark near-black background, thin yellow neon accent light on the far left, faint film-grain overlay, subtle cinematic interface elements, and production-grade location-scout UI. The composition should feel structured but not rigidly fixed: allow the hero location view, metadata, environmental studies, and supporting panels to shift position naturally within the board. The arrangement may vary from generation to generation while remaining readable, balanced, and premium. Design the board so it adapts cleanly to different aspect ratios without depending on a fixed left-column layout. Include a prominent hero shot of the location, ideally a wide establishing or defining view, accompanied by a detailed metadata block: NAME · TYPE (street / interior / exterior / forest) · ERA · SCALE (intimate / vast) ARCHITECTURE: (key features) MATERIALS: (stone, brick, wood, glass, etc.) ATMOSPHERE: (busy / quiet / eerie / romantic) DEFAULT TIME · DEFAULT WEATHER · PURPOSE (e.g. chase sequence, dialogue scene). Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 same-location shots, identical lighting): WIDE · MID · TIGHT · ALT ANGLE · OVERHEAD. PANEL 02 — TIME OF DAY (4 same-angle shots): DAWN · NOON · DUSK · NIGHT. PANEL 03 — DETAILS (2 macros): material/texture close-up · distinctive architectural detail. PANEL 04 — SET DRESSING / PROPS (5 isolated prop or signage studies on dark background): 5 key props or signage elements from the location. PANEL 05 — WEATHER / MOOD (4 same-angle shots): CLEAR SUNNY · OVERCAST · RAIN-SOAKED · MISTY FOG. PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the location's dominant tones. Bottom caption: \"Use this location board as a visual reference for consistent depiction of the environment across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent location across every panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/product-board\",\n name: \"Product Board\",\n description: \"Connect a photo → dense product sheet; reuse it as a reference for consistent shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed product reference sheet titled \"PRODUCT BOARD\" using the attached photo of the product as the single source of truth for its shape, materials, colorway, proportions, branding and finish. The same product must appear in every panel — identical model, identical colorway and markings. All on-image labels in ENGLISH. Editorial product-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade industrial-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally within the board while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero product shot with a metadata block: NAME · CATEGORY · BRAND · DIMENSIONS · WEIGHT · MATERIALS · FINISH · KEY FEATURES · COLORWAY. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 studio shots on a seamless background, identical lighting): FRONT · 3/4 · SIDE · BACK · TOP. PANEL 02 — DETAILS (3 macros): material/texture close-up · seam/joint or mechanism · logo/branding detail. PANEL 03 — COLORWAYS (4 isolated shots of the same product in alternate finishes). PANEL 04 — SCALE (the product beside a common reference object, with a dimension callout). PANEL 05 — IN USE / CONTEXT (3 lifestyle shots in a real setting). PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the product's materials and finish. Bottom caption: \"Use this product board as a visual reference for consistent depiction of the product across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Studio.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent product across every panel. 8K, fine grain, studio product photography, crisp reflections.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/outfit-board\",\n name: \"Outfit Board\",\n description: \"Connect a photo → dense wardrobe sheet; reuse it as a reference for consistent looks.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed wardrobe reference sheet titled \"OUTFIT BOARD\" using the attached photo of the outfit as the single source of truth for its garments, fabrics, colorway, silhouette and styling. The same outfit must appear in every panel — identical garments, identical colors and trims. All on-image labels in ENGLISH. Editorial fashion-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade stylist UI. The composition should feel organized but not rigidly locked: allow the hero look, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero full-look shot with a metadata block: LOOK NAME · STYLE · SEASON · FABRICS · PALETTE · FIT · OCCASION. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — ON-BODY VIEWS (5 full-length shots, identical lighting): FRONT · 3/4 LEFT · SIDE · BACK · 3/4 RIGHT. PANEL 02 — FLAT-LAYS (5 isolated garment shots on a dark surface): top · bottom · outerwear · footwear · headwear. PANEL 03 — FABRIC & DETAIL (3 macros): weave/texture close-up · stitching or hardware · print or trim detail. PANEL 04 — ACCESSORIES (4 isolated accessory studies: bag · jewelry · belt · eyewear). PANEL 05 — COLORWAYS (3 alternate colorways of the same look). PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the garments. Bottom caption: \"Use this outfit board as a visual reference for consistent depiction of the wardrobe across all generations.\" Bottom-right tags: STYLE · Modern · Editorial · Fashion.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent outfit across every panel. 8K, fine grain, editorial fashion photography.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/scene-board\",\n name: \"Scene Board\",\n description: \"Connect a photo → set-dressing & props study; reuse it as a reference for consistent sets.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed set-dressing reference sheet titled \"SCENE BOARD\" using the attached photo of the scene as the single source of truth for its props, set dressing, materials, signage and mood. The space and its contents must be consistent across every panel — same props, same materials, same era. All on-image labels in ENGLISH. Editorial set-decoration layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade art-department UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a hero establishing shot with a metadata block: SCENE NAME · TYPE · ERA · MOOD · KEY MATERIALS · PURPOSE. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — KEY PROPS (5 isolated prop studies on a dark background). PANEL 02 — SIGNAGE / GRAPHICS (3 readable signage or printed-graphic elements from the scene). PANEL 03 — MATERIALS & TEXTURES (3 macros: surface · fabric/wood/metal · wear/patina). PANEL 04 — LAYOUT / BLOCKING (a simple top-down or wide diagram of where key elements sit). PANEL 05 — LIGHTING STATES (3 same-angle shots: day · practical-lit night · dramatic). PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the scene's dominant tones. Bottom caption: \"Use this scene board as a visual reference for consistent set dressing across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent scene across every panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/creature-board\",\n name: \"Creature Board\",\n description: \"Connect a sharp photo → dense creature sheet; reuse it as a reference for consistent shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed creature reference sheet titled \"CREATURE BOARD\" using the attached photo of the creature as the single source of truth for its anatomy, silhouette, coloration, textures and features. The same creature must appear in every panel — identical species, identical markings and proportions. All on-image labels in ENGLISH. Editorial creature-design layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade concept-design UI. The composition should feel organized but not rigidly locked: allow the hero render, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero full-body render with a metadata block: NAME · SPECIES · SIZE · BUILD · COLORATION · TEXTURES · TEMPERAMENT · FEATURES · MOVEMENT · VOCALIZATION. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 full-body angles, neutral pose, identical lighting): FRONT · 3/4 · SIDE · BACK · TOP-DOWN. PANEL 02 — POSES (4 dynamic full-body poses: idle · moving · alert · aggressive). PANEL 03 — DETAILS (3 macros): head/face close-up · hide/scale/fur texture · distinctive feature (claw, horn, fin). PANEL 04 — EXPRESSIONS (4 head studies showing temperament range). PANEL 05 — SCALE (the creature beside a human silhouette for size reference). PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the creature's coloration. Bottom caption: \"Use this creature board as a visual reference for consistent depiction of the creature across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent creature across every panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed faces, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/vehicle-board\",\n name: \"Vehicle Board\",\n description: \"Connect a photo → dense vehicle sheet; reuse it as a reference for consistent shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed vehicle reference sheet titled \"VEHICLE BOARD\" using the attached photo of the vehicle as the single source of truth for its body shape, proportions, paintwork, trim, wheels and condition. The same vehicle must appear in every panel — identical model, identical colorway, markings and wear. All on-image labels in ENGLISH. Editorial vehicle-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade transportation-design UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large three-quarter hero shot with a metadata block: NAME · TYPE · ERA · SCALE · BODY & MATERIALS · FINISH · SEATS · TOP SPEED · SIGNATURE FEATURE · ROLE. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 studio shots, identical lighting): FRONT · 3/4 · SIDE · BACK · TOP-DOWN. PANEL 02 — INTERIOR / CABIN (4 close shots): cockpit through the window · dashboard detail · seats or cargo area · driver POV. PANEL 03 — DETAIL MACROS (4): headlight or light cluster · wheel and tire · badge or panel line · paint and wear close-up. PANEL 04 — IN MOTION (4 staged frames): driving straight · cornering · parked on an incline · night with headlights on. PANEL 05 — LIGHTING / MOOD (4 same-angle hero shots): DESERT MIDDAY · GOLDEN HOUR · STORMY OVERCAST · NIGHT NEON. PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the paintwork and trim. Bottom caption: \"Use this vehicle board as a visual reference for consistent depiction of the vehicle across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent vehicle across every panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, warped body panels, distorted geometry, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/food-board\",\n name: \"Food Board\",\n description: \"Connect a photo → dense dish sheet; reuse it as a reference for consistent food shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed dish reference sheet titled \"FOOD BOARD\" using the attached photo of the dish as the single source of truth for its ingredients, plating, colors, textures and garnish. The same dish must appear in every panel — identical recipe, identical plating, bowl or plate, and props. All on-image labels in ENGLISH. Editorial culinary-reference layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade food-styling UI. The composition should feel organized but not rigidly locked: allow the hero shot, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large appetizing hero shot with a metadata block: DISH NAME · CUISINE · CATEGORY · KEY INGREDIENTS · TEXTURES · GARNISH · SERVED · AUDIENCE. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — PLATING ANGLES (5 beauty shots, identical styling): TOP-DOWN · 3/4 HERO · SIDE · EXTREME CLOSE-UP · IN HAND OR WITH UTENSIL. PANEL 02 — INGREDIENT BREAKDOWN (5 isolated ingredient studies on a dark background). PANEL 03 — DETAIL MACROS (4): surface texture · glaze or sauce sheen · steam or freshness cue · garnish detail. PANEL 04 — IN CONTEXT (4 staged frames): steam rising · utensil lifting a bite · sauce pour frozen mid-action · hands holding the dish. PANEL 05 — LIGHTING / MOOD (4 same-angle hero shots): WARM APPETIZING · COOL EDITORIAL · HARD COMMERCIAL · MOODY DRAMATIC. PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the dish and plating. Bottom caption: \"Use this food board as a visual reference for consistent depiction of the dish across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Commercial.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent dish across every panel. 8K, fine grain, appetizing commercial color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, unappetizing, plastic fake food, messy spills, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/mascot-board\",\n name: \"Mascot Board\",\n description: \"Connect a mascot image → brand-character sheet with brand applications; reuse it for a consistent mascot.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed mascot reference sheet titled \"MASCOT BOARD\" using the attached image of the mascot as the single source of truth for its design, proportions, colors, materials and personality. The same mascot must appear in every panel — identical design, identical colors and details — rendered in the mascot's native art style read from the attached image (illustrated, plush, costumed or 3D), never drifting between styles. All on-image labels in ENGLISH. Editorial brand-character layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade brand-design UI. The composition should feel organized but not rigidly locked: allow the hero pose, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero pose with a metadata block: MASCOT NAME · BRAND · CATEGORY · MATERIAL / STYLE · PERSONALITY · CATCHPHRASE · SIZE · USE CASES. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 full-body angles, identical lighting): FRONT · 3/4 LEFT · SIDE · BACK · 3/4 RIGHT. PANEL 02 — EXPRESSIONS (6 head studies): HAPPY · WAVING · SHOCKED · WINKING · SLEEPY · CURIOUS. PANEL 03 — DETAIL MACROS (3): face detail · material or texture close-up · signature accessory. PANEL 04 — BRAND APPLICATIONS (4 mockups): on product packaging · on a storefront sign · in a print ad · on merch. PANEL 05 — POSES (4 action poses): GREETING · CELEBRATING · PRESENTING · THUMBS-UP. PANEL 06 — BRAND COLOR PALETTE: 6 swatches with HEX codes from the mascot's colors. Bottom caption: \"Use this mascot board as a visual reference for consistent depiction of the mascot across all generations.\" Bottom-right tags: STYLE · Brand · Character · Consistent.`,\n promptSuffix: `Consistent mascot and consistent art style across every panel. 8K, fine grain, premium brand-design finish.`,\n negativePrompt:\n \"inconsistent art style between panels, design drift, off-model mascot, garbled text, misspelled labels, watermark, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/pet-board\",\n name: \"Pet Board\",\n description: \"Connect a sharp photo → dense pet sheet; reuse it as a reference for consistent shots.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n promptPrefix: `Create a single high-resolution, densely packed pet reference sheet titled \"PET BOARD\" using the attached photo of the pet as the single source of truth for its species, breed, coat colors, markings, eyes and build. The same animal must appear in every panel — identical markings, identical proportions, identical collar or accessories. All on-image labels in ENGLISH. Editorial reference-board layout with a dark near-black background, thin yellow neon accent light, faint film-grain overlay, and production-grade character-design UI. The composition should feel organized but not rigidly locked: allow the hero portrait, metadata, and supporting panels to shift position naturally while remaining readable, balanced, and premium. Design the board to adapt cleanly to different aspect ratios without depending on a fixed left-column layout. Include a large hero portrait with a metadata block: NAME · SPECIES · BREED · AGE · SIZE · COAT & MARKINGS · EYES · COLLAR / ACCESSORIES · TEMPERAMENT · SIGNATURE BEHAVIOR. Also include six content groupings — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — VIEWS (5 full-body angles, neutral stance, identical lighting): FRONT · 3/4 · SIDE · BACK · TOP-DOWN. PANEL 02 — EXPRESSIONS & MOODS (6 head studies): ALERT · CURIOUS · PLAYFUL · SLEEPY · GRUMPY · HAPPY. PANEL 03 — DETAIL MACROS (4): eye close-up · coat or fur texture · paw detail · collar tag or accessory. PANEL 04 — POSES (5 natural poses): SITTING · LYING DOWN · WALKING · PLAYING · CURLED ASLEEP. PANEL 05 — LIGHTING / MOOD (4 same-pose portraits): SOFT WINDOW LIGHT · GOLDEN HOUR · COOL BLUE NIGHT · DRAMATIC RIM-LIGHT. PANEL 06 — COLOR PALETTE: 6 swatches with HEX codes from the coat and accessories. Bottom caption: \"Use this pet board as a visual reference for consistent depiction of the pet across all generations.\" Bottom-right tags: STYLE · Modern · Realistic · Cinematic.`,\n promptSuffix: `Style: photorealistic, no illustration. Consistent animal across every single panel. 8K, fine grain, cinematic color grading.`,\n negativePrompt:\n \"illustration, cartoon, 3d render, garbled text, misspelled labels, watermark, deformed anatomy, inconsistent markings between panels, wrong breed, blurry, low resolution\",\n },\n },\n {\n id: \"generate-image/skin-detail-sheet\",\n name: \"Skin Detail Sheet\",\n description: \"Connect a sharp face photo → a six-panel skin reference.\",\n group: \"Reference Sheet\",\n minReferences: 1,\n data: {\n ...SKIN_STUDY_MODEL,\n aspectRatio: \"3:2\",\n promptPrefix: sentences(\n \"Create a single skin detail reference sheet titled \\\"SKIN DETAIL SHEET\\\" from the attached photo of the person, the single source of truth for identity, skin tone and features. The same person, the same light and the same unretouched skin in every panel. Six panels — render ALL six panel headings exactly as written, never merging or omitting a panel: PANEL 01 — FULL FACE (front, eye level) · PANEL 02 — LEFT CHEEK & NOSE · PANEL 03 — RIGHT CHEEK & JAW · PANEL 04 — FOREHEAD & HAIRLINE · PANEL 05 — EYES & BROWS · PANEL 06 — LIPS & CHIN. In every panel:\",\n REALISM_SKIN,\n \"Flat, even daylight, neutral colour, everything sharp.\",\n ),\n promptSuffix: \"Plain neutral grey background, thin white panel labels in English. Use this sheet as a visual reference for consistent skin detail of this person across generations.\",\n },\n },\n // ── Cast & Consistency (clean grids per the multi-character workflow:\n // sterile neutral-background reference grids built to be FED BACK as identity\n // anchors — unlike the editorial boards above, decoration here is noise.\n // GPT Image 2 (decided 2026-10-08 from the image model bake-off: it built the\n // best reference grid and kept both identities on the cast sheet); 4K so\n // panel faces stay sharp when reused as refs.) ──\n {\n id: \"generate-image/character-reference-grid\",\n name: \"Character Reference Grid\",\n description: \"Connect a photo → clean 4-angle identity grid (no decorations) — the strongest consistency anchor.\",\n group: \"Cast & Consistency\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n resolution: \"4K\",\n promptPrefix: `Create a clean character reference grid using the attached photo of the person as the single source of truth for face, hair, eyes, skin tone, build and outfit. Four equal panels arranged in a tidy two-by-two grid on a single seamless neutral light-grey studio background: a tight front-facing portrait close-up, a 3/4-view portrait, a full-body shot from the front in a relaxed neutral stance, and a full-body shot from the back. The SAME person in every panel — identical age, features, hairstyle and outfit from the attached photo. Identical soft, even studio lighting in all four panels with no dramatic shadows. No decorations, no background props, no text, no UI elements — a sterile, production-neutral reference sheet built to be reused as an identity reference in later generations.`,\n promptSuffix: `Photorealistic, sharp focus, accurate natural skin texture, true-to-life color.`,\n negativePrompt:\n \"stylization, illustration, decorative background, props, text, labels, UI elements, dramatic lighting, inconsistent face between panels, identity drift, changed outfit, deformed, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/cast-mega-grid\",\n name: \"Cast Mega Grid\",\n description: \"Connect 2–4 character refs → one labeled cast sheet; then reference cast members by name in scenes.\",\n group: \"Cast & Consistency\",\n // A cast sheet is two characters or more (\"Connect 2–4 character refs\").\n minReferences: 2,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n resolution: \"4K\",\n prompt: `Create a clean multi-character cast reference sheet composed as horizontal strips stacked vertically in one image — one strip per character from the attached reference images, in the order they are attached, using exactly as many strips as there are attached characters. Each strip shows that character in four aligned studio panels: tight front portrait close-up · 3/4 portrait · full body front · full body back, all in a relaxed neutral stance. Label each strip on the left edge with the character's name in clean bold lettering: {character names || ALEX · MAYA · SAM}. Every character must match their attached reference exactly — same face, hair, skin tone, build and outfit — with no identity blending between rows. Single seamless neutral light-grey studio background across the whole sheet, identical soft even lighting in every panel, consistent panel sizing and alignment. No decorations, no props, no UI elements beyond the row name labels. A sterile production casting sheet built to be reused as the single identity reference for this cast in later generations. Photorealistic, sharp focus, natural skin texture, true-to-life color.`,\n negativePrompt:\n \"blended or swapped identities between rows, inconsistent faces, missing characters, misspelled name labels, garbled text, decorative background, props, dramatic lighting, stylization, illustration, deformed, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/cast-scene\",\n name: \"Cast Scene (by name)\",\n description: \"Connect a cast grid → stage a scene naming the characters; never re-describe their looks.\",\n group: \"Cast & Consistency\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n resolution: \"2K\",\n prompt: `Using the attached character reference sheet as the single source of truth for every named character's face, hair, build and outfit, generate one photorealistic scene: {scene || ALEX and MAYA share a quiet laugh at the counter of a sunlit ramen bar while SAM studies the menu}. Refer to the characters ONLY by the names labeled on the reference sheet and keep each one perfectly consistent with their reference row — do not invent new physical traits, do not blend identities, and do not alter outfits unless the scene says so. Stage them naturally in the environment with believable eye-lines, interactions and spacing. Cinematic photography, 35mm lens look with gentle depth of field, soft motivated lighting that matches the location, cohesive filmic color grade, natural skin texture, sharp detail on every character.`,\n negativePrompt:\n \"identity drift, blended or swapped faces, re-invented outfits, reference-sheet grid visible in the result, panel borders, name labels in the scene, deformed, extra fingers, blurry, lowres, watermark, text\",\n },\n },\n // ── Edit by Name (two-step recipe) ───────────────────────────────────────\n {\n id: \"generate-image/label-elements\",\n name: \"Label Elements\",\n description: \"Step 1 · connect a photo → the same image with a numbered label on each changeable element.\",\n group: \"Edit by Name\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n quality: \"high\",\n promptPrefix: `Using the attached photo as the exact source, return the SAME image unchanged except for added annotations: overlay a small, clearly legible callout label on each distinct element a user might want to edit. Draw a thin leader line from each label to the element it names. Use short lowercase names in clear English (e.g. \"drink 1\", \"drink 2\", \"flower basket\", \"hammock\", \"table\", \"sky\", \"sand\", \"palm tree\"). Number duplicate element types (\"drink 1\", \"drink 2\"). Place labels on empty areas so they never overlap each other or hide the element they point to. Label only distinct, meaningful, editable objects — about 6 to 10 of them — and skip trivial background texture. Do NOT restyle, recolor, relight, or redraw the scene; keep every pixel of the underlying photo as close to the original as possible. The labels are an overlay on top of the otherwise-unchanged image.`,\n negativePrompt:\n \"garbled text, misspelled labels, overlapping labels, illegible text, restyled scene, recolored scene, redrawn image, cartoon, illustration, watermark, blurry\",\n },\n },\n {\n id: \"generate-image/edit-by-name\",\n name: \"Apply Named Edit\",\n description: \"Step 2 · connect the labeled sheet → type your change in the prompt (e.g. change \\\"drink 1\\\" to blue); the labels are removed from the result.\",\n group: \"Edit by Name\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n quality: \"high\",\n promptPrefix: `This image has callout labels naming its elements (made with the Label Elements preset). Use the labels ONLY to locate elements, then produce a clean edited photo with NO labels. Apply the change described next, referring to elements by their labels:`,\n promptSuffix: `REMOVE every callout label, text box and leader line so none appear in the final image. Keep everything else exactly as it is.`,\n negativePrompt:\n \"leftover callout labels, visible text labels, text boxes, leader lines, garbled text, restyled scene, recolored unrelated elements, redrawn image, cartoon, illustration, watermark, blurry\",\n },\n },\n // ── Face Privacy (connect the photo → {image:1}) ─────────────────────────\n // gpt-image-2 + aspectRatio \"auto\" so the output keeps the input photo's\n // shape. NOTE: KIE's gpt-image-2 spec forces resolution 1K when aspect is\n // \"auto\" (the config panel's fail-safe snaps any other value back), so\n // these pin 1K explicitly rather than shipping a self-contradicting 2K.\n {\n id: \"generate-image/faceless-3d-head\",\n name: \"Faceless · 3D Blank Head\",\n description: \"Persons' faces → smooth generic white 3D head shape; everything else untouched.\",\n group: \"Face Privacy\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"auto\",\n resolution: \"1K\",\n promptPrefix:\n \"make the persons in {image:1} faceless by making it 3d white generic face shape, keep everything else the same\",\n negativePrompt:\n \"visible facial features, eyes, nose, mouth, skin texture on the face, changing the background, altering clothing, hair or body, restyling the scene, relighting, changing pose or framing, cartoon look, distorted anatomy, watermark, blurry\",\n },\n },\n {\n id: \"generate-image/remove-faces\",\n name: \"Remove Faces\",\n description: \"Erase persons' faces entirely; everything else untouched.\",\n group: \"Face Privacy\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"auto\",\n resolution: \"1K\",\n promptPrefix: \"remove persons faces from {image:1}, keep everything else the same\",\n negativePrompt:\n \"visible facial features, eyes, nose, mouth, leftover face fragments, changing the background, altering clothing, hair or body, restyling the scene, relighting, changing pose or framing, horror or gore look, distorted anatomy, watermark, blurry\",\n },\n },\n {\n id: \"generate-image/transparent-faces\",\n name: \"Transparent Faces\",\n description: \"Persons' faces become transparent; everything else untouched.\",\n group: \"Face Privacy\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"auto\",\n resolution: \"1K\",\n promptPrefix: \"make faces transparent in {image:1}, keep everything else the same\",\n negativePrompt:\n \"opaque faces, visible facial features, eyes, nose, mouth, changing the background, altering clothing, hair or body, restyling the scene, relighting, changing pose or framing, distorted anatomy, watermark, blurry\",\n },\n },\n // ── Photography & Cinematic ──────────────────────────────────────────────\n {\n id: \"generate-image/cinematic-portrait\",\n name: \"Cinematic Portrait\",\n description: \"Moody, shallow-depth portrait look.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"9:16\",\n prompt:\n \"cinematic portrait of {subject || a pensive young man with stubble}, 85mm lens at f/1.8, shallow depth of field with creamy bokeh, soft key with warm rim separation against a moody low-key background, gentle film grain, filmic teal-and-amber grade, natural skin texture, tack-sharp eyes\",\n negativePrompt:\n \"flat lighting, deep focus, plastic skin, blown highlights, extra fingers, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/cinematic-still\",\n name: \"Cinematic Still\",\n description: \"Film-grade scene, dramatic lighting.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"cinematic film still of {subject || a lone detective in a rain-slicked alley at night}, anamorphic lens at 40mm and f/2, shallow depth of field with oval bokeh and subtle horizontal flares, dramatic motivated key light with deep falloff, off-center framing with negative space, tense noir mood in a moody teal-and-amber grade, fine film grain, photoreal detail\",\n negativePrompt:\n \"flat lighting, deep focus, oversaturated, washed out, video-game render, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/cinematic-widescreen\",\n name: \"Cinematic Widescreen (21:9)\",\n description: \"Epic anamorphic 2.39:1 frame.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"21:9\",\n prompt:\n \"epic ultra-wide cinematic still of {subject || a lone traveler dwarfed by towering desert canyons}, anamorphic widescreen framing, 35mm lens at f/4 with deep focus, layered atmospheric haze catching backlight, dramatic god-ray lighting, expansive scale with the subject small against the vista, awe-struck mood in a cool cinematic grade, subtle film grain, crisp distant detail\",\n negativePrompt:\n \"cropped framing, cluttered composition, flat lighting, oversaturated, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/studio-portrait\",\n name: \"Studio Portrait\",\n description: \"Soft-lit 85mm studio headshot.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"studio portrait of {subject || a confident woman with sleek dark hair}, 85mm lens at f/2.8, shallow depth of field, soft octabox key with gentle fill and a subtle hair light, clean seamless gray backdrop, tight head-and-shoulders framing, polished editorial mood with a neutral true-to-life palette, natural skin texture, catchlights and tack-sharp eyes\",\n negativePrompt:\n \"harsh shadows, plastic skin, over-retouched, blown highlights, busy background, extra fingers, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/corporate-headshot\",\n name: \"Corporate Headshot\",\n description: \"Clean professional headshot.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"professional corporate headshot of {subject || a friendly executive in a tailored navy blazer}, 85mm lens at f/4, soft even three-point lighting with a broad key and clean fill, smooth neutral gray-blue background, centered head-and-shoulders framing, approachable confident expression, crisp business mood with a clean neutral palette, sharp focus and natural skin texture\",\n negativePrompt:\n \"harsh shadows, busy background, casual snapshot, over-retouched, plastic skin, extra fingers, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/golden-hour-portrait\",\n name: \"Golden Hour Portrait\",\n description: \"Warm backlit outdoor portrait.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"2:3\",\n prompt:\n \"outdoor portrait of {subject || a smiling woman with windswept hair in a field}, 85mm lens at f/1.8, shallow depth of field with creamy bokeh, low golden-hour sun as a warm backlight with a glowing rim and gentle lens flare, off-center rule-of-thirds framing, dreamy romantic mood in a warm amber grade, soft halation, natural skin texture and sharp eyes\",\n negativePrompt:\n \"harsh midday shadows, flat lighting, overexposed sky, plastic skin, extra fingers, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/bw-portrait\",\n name: \"Black & White Portrait\",\n description: \"High-contrast editorial mono.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"black and white editorial portrait of {subject || a weathered old fisherman with a lined face}, 85mm lens at f/2, shallow depth of field, dramatic single-source chiaroscuro with deep falloff, tight off-center framing, timeless brooding mood with a rich high-contrast monochrome tonal range, deep blacks and luminous highlights, fine silver grain, sharp eyes and natural skin texture\",\n negativePrompt:\n \"color, muddy gray tones, flat lighting, low contrast, plastic skin, extra fingers, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/macro-shot\",\n name: \"Macro Close-Up\",\n description: \"Extreme detail, focus-stacked.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"1:1\",\n prompt:\n \"extreme macro photograph of {subject || a dew-covered bee on a flower petal}, 100mm macro lens at f/8, focus-stacked for razor-sharp life-size detail with a softly defocused background, soft diffused studio light with a subtle rim, centered close-up composition, intimate jewel-like mood with rich saturated color, glistening micro-textures and crisp surface detail\",\n negativePrompt:\n \"blurry, out of focus, soft detail, harsh glare, dust spots, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/food-photography\",\n name: \"Food Photography\",\n description: \"Appetizing 45° hero shot.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"appetizing hero food photograph of {dish || a rustic bowl of ramen with a soft-boiled egg}, 50mm lens at f/2.8, shallow depth of field, soft diffused window light from the side with a gentle fill, 45-degree angle on a weathered rustic surface, props and steam fading into a clean background, warm mouth-watering mood with natural color, fresh garnish, glistening textures and crisp focus on the hero\",\n negativePrompt:\n \"unappetizing, plastic look, fake glossy food, messy spills, dull colors, harsh flash, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/food-flatlay\",\n name: \"Food Flat-Lay\",\n description: \"Overhead styled food spread.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"overhead flat-lay food photograph of {dish || a colorful brunch spread with coffee and pastries}, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room and scattered ingredients, fresh vibrant editorial mood with a clean color palette on a textured surface, crisp appetizing detail\",\n negativePrompt:\n \"cluttered, overcrowded, tilted angle, harsh shadows, plastic look, dull colors, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/aerial-drone\",\n name: \"Aerial / Drone\",\n description: \"Top-down golden-hour aerial.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"16:9\",\n prompt:\n \"aerial drone photograph of {scene || a winding coastal road along turquoise cliffs}, ultra-wide 24mm lens at f/5.6 with crisp deep focus, straight-down top-down perspective from high altitude, low golden-hour sun casting long raking shadows that reveal terrain, bold graphic composition emphasizing pattern and scale, expansive serene mood with rich warm color, sharp detail across the frame\",\n negativePrompt:\n \"blurry, soft focus, flat midday light, tilted horizon, lens distortion, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/landscape-vista\",\n name: \"Landscape Vista (21:9)\",\n description: \"Ultra-wide dramatic scenery.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"21:9\",\n prompt:\n \"sweeping ultra-wide landscape photograph of {scene || a misty mountain range over a glassy alpine lake at dawn}, 16mm lens at f/11 with edge-to-edge deep focus, layered foreground, midground and distant peaks for depth, dramatic golden-hour sky with breaking light, rule-of-thirds horizon, awe-inspiring grand mood with high dynamic range and natural color, crisp detail and a sense of vast scale\",\n negativePrompt:\n \"oversaturated, hdr halos, blown sky, flat lighting, soft focus, lens distortion, lowres, deformed, watermark, text\",\n },\n },\n\n // ── Characters (incl. the character-sheet family) ────────────────────────\n {\n id: \"generate-image/character-turnaround\",\n name: \"Character Sheet · Turnaround (3-view)\",\n description: \"Front / side / back, T-pose.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"full-body character turnaround model sheet of {character description || a rugged space mercenary with a scarred jaw and worn leather armor}, three matching views in a row — front, side profile, and back — held in a clean T-pose with a neutral expression, identical proportions and costume details across all three views, flat even studio lighting with no harsh shadows so every view reads the same, evenly spaced on a plain light-grey backdrop, crisp concept-art model-sheet style, clean line work and consistent color palette across panels\",\n negativePrompt:\n \"inconsistent design between views, mismatched proportions, extra limbs, deformed anatomy, dynamic pose, dramatic shadows, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-action-4\",\n name: \"Character Sheet · Action Poses ×4\",\n description: \"Four dynamic full-body poses.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"character action model sheet of {character description || a nimble rogue archer in a hooded green cloak}, four distinct full-body dynamic action poses in a row — running, leaping, attacking, landing — strictly consistent face, character design, and outfit across every pose, full-figure framing with confident gesture and clear silhouettes, even studio lighting that stays identical across all four poses, plain neutral backdrop, energetic concept-art model sheet, clean linework and matching color palette\",\n negativePrompt:\n \"inconsistent design between poses, changed outfit, deformed anatomy, extra limbs, fused figures, static stiff posture, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-expressions-6\",\n name: \"Character Sheet · Expressions ×6\",\n description: \"6 emotions, 2 rows of 3.\",\n group: \"Characters\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:3\",\n prompt:\n \"character expression model sheet of {character description || a cheerful freckled teen with messy red hair}, six head-and-shoulders portraits arranged in two even rows of three, labeled emotions in order — neutral, happy, angry, surprised, sad, determined — strictly consistent face, hairstyle, and features across every panel with only the expression changing, flat even portrait lighting identical in all six panels, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette\",\n negativePrompt:\n \"inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven lighting, busy background, watermark, garbled text\",\n },\n },\n {\n id: \"generate-image/character-expressions-16\",\n name: \"Character Sheet · Expression Grid ×16\",\n description: \"4×4 emotion grid, one face.\",\n group: \"Characters\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"1:1\",\n prompt:\n \"16-panel character expression grid of {character description || a stoic silver-haired knight with a faint scar}, evenly spaced 4x4 layout of head-and-shoulders portraits, sixteen distinct facial emotions ranging from calm to intense, strictly consistent face, hairstyle, and design across every cell with only the expression changing, flat even portrait lighting identical in all panels, plain neutral backdrop, clean concept-art model sheet, natural facial detail and matching color palette\",\n negativePrompt:\n \"inconsistent face, drifting features, changed hairstyle, deformed, asymmetrical eyes, uneven panels, uneven lighting, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-outfits\",\n name: \"Character Sheet · Outfit Variations\",\n description: \"Same character, 4 outfits.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"outfit variation model sheet of {character description || a confident young woman with a sleek dark bob}, the same character shown full-body in four different complete outfits side by side — casual, formal, athletic, seasonal — strictly consistent face, body, and hairstyle across all four with only the wardrobe changing, full-figure framing in a relaxed standing pose, flat even studio lighting identical across every panel, evenly spaced on a plain neutral backdrop, clean concept-art model sheet, matching color palette and crisp fabric detail\",\n negativePrompt:\n \"inconsistent face, changed body or hairstyle, deformed, mismatched proportions, repeated identical outfit, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-turnaround-labeled\",\n name: \"Character Sheet · With Text Labels\",\n description: \"Turnaround + labels + height chart.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"annotated full-body character turnaround model sheet of {character description || a seasoned bounty hunter in a weathered duster and wide-brim hat}, front, side, and back views in a row with crisp legible text labels reading FRONT, SIDE, and BACK beneath each view, a vertical height reference chart with tick marks along one edge, strictly consistent design and proportions across all three views, flat even studio lighting identical across every view, neat production-reference layout on a clean light-grey backdrop, sharp typography and tidy annotations, consistent color palette\",\n negativePrompt:\n \"misspelled labels, garbled text, inconsistent design between views, mismatched proportions, deformed, dynamic pose, dramatic shadows, busy background, watermark\",\n },\n },\n {\n id: \"generate-image/character-chibi\",\n name: \"Character Sheet · Chibi\",\n description: \"Cute super-deformed poses.\",\n group: \"Characters\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"1:1\",\n prompt:\n \"chibi character model sheet of {character description || a tiny brave knight with oversized armor}, adorable super-deformed proportions with a big head and small body, several cute mini full-body poses arranged across the sheet, strictly consistent design and color palette across every pose, soft even flat lighting identical across all poses, evenly spaced on a plain pastel backdrop, clean bold outlines and flat cel shading, charming concept-art model sheet\",\n negativePrompt:\n \"realistic proportions, inconsistent design, deformed, off-model, gritty shading, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-portrait\",\n name: \"Character Portrait\",\n description: \"Single expressive hero portrait.\",\n group: \"Characters\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"2:3\",\n prompt:\n \"detailed character portrait of {character description || a battle-worn elven ranger with piercing green eyes}, painterly fantasy concept art, fine brushwork with crisp edge detail, dramatic chiaroscuro key light with a soft rim separating the subject from a moody dark background, tight three-quarter view framing the face and shoulders, expressive confident gaze, rich saturated color grade, intricate costume detail and tack-sharp eyes\",\n negativePrompt:\n \"flat lighting, lowres, deformed, extra fingers, asymmetrical eyes, plastic skin, blurry, washed-out colors, watermark, text\",\n },\n },\n {\n id: \"generate-image/character-fullbody-hero\",\n name: \"Character Full-Body Hero\",\n description: \"Dynamic full-body hero shot.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2-5-sunburst\",\n aspectRatio: \"2:3\",\n prompt:\n \"full-body hero shot of {character description || a heroic armored warrior with a flowing crimson cape}, cinematic character key art, confident dynamic power pose, dramatic rim lighting with a warm key and cool back-light carving the silhouette, low camera angle for an imposing heroic stance, softly blurred atmospheric background, bold dramatic color grade, intricately detailed costume and crisp material textures\",\n negativePrompt:\n \"flat lighting, static stiff pose, lowres, deformed, extra limbs, cropped feet, cluttered background, blurry, watermark, text\",\n },\n },\n {\n id: \"generate-image/creature-design\",\n name: \"Creature Design Sheet\",\n description: \"Concept creature, multi-angle.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"creature design model sheet of {creature description || a six-legged bioluminescent forest beast with mossy scales}, several full-body views from multiple angles plus inset anatomy and texture close-ups, strictly consistent species, markings, and proportions across every view, professional creature-concept art, flat even studio lighting identical across all views so the design reads clearly, neatly arranged on a plain neutral backdrop, detailed believable anatomy and crisp surface textures, cohesive color palette\",\n negativePrompt:\n \"inconsistent design between views, mismatched proportions, deformed anatomy, extra or missing limbs, dramatic shadows, busy background, watermark, text\",\n },\n },\n {\n id: \"generate-image/avatar-pfp\",\n name: \"Avatar / Profile Picture\",\n description: \"Centered, bold, clean bg.\",\n group: \"Characters\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"stylized avatar profile picture of {character or subject || a friendly fox with bright amber eyes}, clean modern character illustration, bold thick outlines with smooth flat shading, soft even front lighting with a gentle glow, perfectly centered head-and-shoulders composition with comfortable margins, vibrant punchy color palette on a clean solid-color background, crisp friendly and instantly readable as a small icon\",\n negativePrompt:\n \"off-center, cropped face, busy background, lowres, deformed, muddy colors, harsh shadows, watermark, text\",\n },\n },\n\n // ── Product & Commerce ───────────────────────────────────────────────────\n {\n id: \"generate-image/product-shot\",\n name: \"Product Shot (white bg)\",\n description: \"Clean e-commerce product photo on white.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"e-commerce studio product photograph of {product || a matte-black wireless headphone}, on a seamless pure-white background, 100mm lens at f/8 with deep focus, soft even high-key lighting from a large diffused softbox with gentle fill, perfectly centered with generous margins, clean catalog-ready mood with true-to-life color, crisp edges and accurate material texture\",\n negativePrompt:\n \"clutter, props, harsh shadows, blown highlights, color cast, reflections, tilted angle, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/product-lifestyle\",\n name: \"Product Lifestyle\",\n description: \"Product in-use, editorial.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"4:3\",\n prompt:\n \"lifestyle product photograph of {product || a ceramic pour-over coffee set} in {setting || a sunlit minimalist kitchen}, shown naturally in use, 50mm lens at f/2.8 with shallow depth of field, soft directional window light with a warm glow, off-center rule-of-thirds framing with the product as hero, aspirational editorial mood with a warm natural palette, tactile materials and crisp focus on the product\",\n negativePrompt:\n \"clutter, busy background, distracting props, harsh flash, dull colors, plastic look, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/product-flatlay\",\n name: \"Product Flat-Lay\",\n description: \"Overhead styled arrangement.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"overhead flat-lay product photograph of {product || a leather travel wallet} surrounded by complementary props, 35mm lens at f/5.6 with even focus, perfect top-down ninety-degree angle, soft diffused daylight casting gentle natural shadows, balanced styled arrangement with breathing room around the hero, clean modern editorial mood with a cohesive palette on a textured surface, crisp material detail\",\n negativePrompt:\n \"cluttered, overcrowded, tilted angle, harsh shadows, dull colors, plastic look, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/packaging-mockup\",\n name: \"Packaging Mockup\",\n description: \"Box / bottle / pouch render.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"photorealistic product packaging mockup of {product || an artisanal coffee brand}, presented as {format || a standing kraft pouch}, with a crisp accurately-printed label wrapping the form, 85mm lens at f/8 with deep focus, soft studio lighting with a subtle highlight and grounded contact shadow, centered hero composition on a clean seamless background, premium retail mood with true-to-life color, sharp legible label artwork and realistic material finish\",\n negativePrompt:\n \"distorted label, warped text, misspelled words, floating object, harsh shadows, clutter, lowres, deformed, watermark\",\n },\n },\n {\n id: \"generate-image/device-mockup\",\n name: \"Device / Screen Mockup\",\n description: \"Phone / laptop showing a screen.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"product mockup of {device || a modern smartphone} displaying {screen content || a clean mobile app dashboard}, crisp pixel-accurate screen with no glare obscuring the UI, 50mm lens at f/5.6 with the device tack-sharp, soft studio lighting with gentle reflections on the bezel and a subtle grounded shadow, slight three-quarter angle on a clean minimal surface, sleek premium tech mood with a neutral palette, sharp screen content and realistic device materials\",\n negativePrompt:\n \"distorted screen, warped UI, glare washout, off-model device, wrong proportions, clutter, lowres, deformed, watermark\",\n },\n },\n {\n id: \"generate-image/beauty-hero\",\n name: \"Beauty Product Hero\",\n description: \"Premium cosmetic hero shot.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"luxury beauty product hero shot of {product || a frosted-glass serum bottle with a gold dropper}, 100mm macro lens at f/8 with crisp focus, dramatic single-source key light with a soft gradient falloff and a bright specular edge, fresh water droplets beading on the surface, centered low hero angle on a premium glossy reflective surface, elegant high-end mood with a refined jewel-toned palette, immaculate detail and luminous reflections\",\n negativePrompt:\n \"cheap plastic look, fingerprints, dust, busy background, flat lighting, dull colors, lowres, deformed, watermark, text\",\n },\n },\n\n // ── Branding & Logos (text-strong providers) ─────────────────────────────\n {\n id: \"generate-image/logo-wordmark\",\n name: \"Logo · Wordmark\",\n description: \"Clean typographic brand name.\",\n group: \"Branding & Logos\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"minimalist wordmark logo for '{BRAND}', clean geometric sans-serif, balanced letter-spacing, flat vector, centered on a solid background, crisp edges, professional brand identity, legible correctly-spelled text\",\n negativePrompt:\n \"photorealistic, 3d, gradient mesh, cluttered, misspelled letters, garbled text, extra characters, watermark\",\n },\n },\n {\n id: \"generate-image/logo-emblem\",\n name: \"Logo · Emblem / Badge\",\n description: \"Circular badge emblem.\",\n group: \"Branding & Logos\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"emblem badge logo for '{BRAND}', built around {concept || a mountain peak and pine motif}, symmetrical circular composition with the brand name set cleanly along the ring, flat vector with a limited two-or-three-color palette, crisp edges and even line weights, centered on a white background, heritage brand-identity feel, legible correctly-spelled text\",\n negativePrompt:\n \"photorealistic, 3d, gradient mesh, cluttered, asymmetrical, misspelled letters, garbled text, watermark\",\n },\n },\n {\n id: \"generate-image/logo-mascot\",\n name: \"Logo · Mascot\",\n description: \"Friendly mascot character logo.\",\n group: \"Branding & Logos\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"mascot logo for '{BRAND}', a friendly {character || a plucky cartoon fox} mascot with an approachable expression and a clear readable silhouette, bold flat colors with confident thick outlines, clean vector style with the brand name set neatly below, centered on a white background, playful memorable brand-identity feel, legible correctly-spelled text\",\n negativePrompt:\n \"photorealistic, 3d, gradient mesh, cluttered, busy detail, off-model, misspelled letters, garbled text, watermark\",\n },\n },\n {\n id: \"generate-image/app-icon\",\n name: \"App Icon\",\n description: \"Rounded-square app glyph.\",\n group: \"Branding & Logos\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"modern app icon for '{APP}', rounded-square tile with a single bold simple glyph of {concept || a paper-plane}, smooth subtle gradient fill, perfectly centered with balanced padding inside the rounded square, flat clean design with crisp edges, vibrant cohesive color, instantly readable at small sizes\",\n negativePrompt:\n \"cluttered, intricate detail, photorealistic, harsh drop shadow, off-center, lettering, text, watermark\",\n },\n },\n {\n id: \"generate-image/monogram\",\n name: \"Monogram\",\n description: \"Elegant initials mark.\",\n group: \"Branding & Logos\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"elegant monogram logo gracefully interlocking the letters '{INITIALS}', refined geometric construction with balanced symmetry and even line weights, flat vector in a single sophisticated color, centered on a white background, crisp edges, timeless luxury brand-identity feel, legible correctly-spelled letters\",\n negativePrompt:\n \"cluttered, photorealistic, 3d, gradient mesh, extra letters, misspelled letters, garbled text, watermark\",\n },\n },\n\n // ── Marketing & Social ───────────────────────────────────────────────────\n {\n id: \"generate-image/youtube-thumbnail\",\n name: \"YouTube Thumbnail\",\n description: \"Bold, punchy, big text.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"16:9\",\n prompt:\n \"punchy YouTube thumbnail featuring {subject || a wide-eyed creator reacting in shock}, bold expressive close-up subject cut out against a saturated high-contrast background, dramatic off-center composition with the face large and a clear focal point, large bold sans-serif headline text '{TEXT}' in a heavy outlined style with a strong drop shadow, vivid eye-catching color grade, crisp clickable poster look, legible correctly-spelled text\",\n negativePrompt:\n \"muddy low-contrast colors, tiny unreadable text, cluttered busy layout, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/instagram-post\",\n name: \"Instagram Post (1:1)\",\n description: \"Square branded social graphic.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"square Instagram post graphic about {topic || launching a new product}, modern branded design with a clean grid layout and generous margins, a clear visual focal point paired with bold headline text '{TEXT}', confident contemporary type hierarchy, cohesive on-brand color palette, crisp flat finish, balanced centered composition, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered busy layout, tiny unreadable text, misspelled text, garbled letters, off-brand clashing colors, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/story-vertical\",\n name: \"Story / Reel (9:16)\",\n description: \"Vertical full-bleed promo.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"9:16\",\n prompt:\n \"vertical full-bleed social story graphic about {topic || a weekend flash sale}, immersive edge-to-edge background image, bold stacked headline text '{TEXT}' set high with breathing room, thumb-friendly safe margins top and bottom, modern punchy design with a vibrant cohesive palette, strong type hierarchy and a single clear focal point, crisp mobile-first finish, legible correctly-spelled text\",\n negativePrompt:\n \"letterboxed bars, cramped edges, tiny unreadable text, cluttered layout, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/ad-creative\",\n name: \"Ad Creative\",\n description: \"Headline + hero, CTA space.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n prompt:\n \"polished advertising creative for {product || a sleek wireless earbud case}, attention-grabbing hero product shot as the centerpiece, clear bold headline '{TEXT}' across the top, clean studio lighting with a soft gradient backdrop, confident brand-grade composition with deliberate negative space reserved at the bottom for a call-to-action button, premium commercial finish, vibrant on-brand color, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered busy layout, no negative space, tiny unreadable text, misspelled text, garbled letters, amateurish, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/quote-card\",\n name: \"Quote Card\",\n description: \"Typographic quote graphic.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"elegant inspirational quote card centered on the text '{QUOTE}', refined typographic design as the hero with a tasteful serif-and-sans pairing and graceful line breaks, {background style || a soft minimal gradient with subtle paper texture}, generous margins and balanced symmetrical composition, calm sophisticated color palette, crisp print-ready finish, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered layout, clashing fonts, busy distracting background, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/web-banner\",\n name: \"Web Banner / Header\",\n description: \"Wide site header with text.\",\n group: \"Marketing & Social\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"16:9\",\n prompt:\n \"wide web banner header for {brand or topic || a modern SaaS startup}, clean modern design with a horizontal layout, headline text '{TEXT}' set on the left with clear hierarchy, a complementary hero graphic on the right and deliberate clear space reserved for a logo, cohesive on-brand palette, crisp flat web-ready finish, balanced composition, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered busy layout, tiny unreadable text, no clear space, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n\n // ── Print & Posters ──────────────────────────────────────────────────────\n {\n id: \"generate-image/movie-poster\",\n name: \"Movie Poster\",\n description: \"Cinematic key art, title + tagline.\",\n group: \"Print & Posters\",\n data: {\n provider: \"gpt-image-2-5-sunburst\",\n aspectRatio: \"2:3\",\n prompt:\n \"theatrical movie poster for '{TITLE}', cinematic key art in a {genre || gritty sci-fi thriller} mood, dramatic vertical hero composition with a commanding central figure, moody atmospheric lighting with strong rim light and volumetric haze, rich filmic teal-and-amber color grade, bold title treatment along the bottom with a short tagline above it and a small billing-block strip, premium high-detail finish, legible correctly-spelled text\",\n negativePrompt:\n \"flat lighting, cluttered composition, amateurish layout, misspelled text, garbled letters, extra limbs, deformed faces, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/event-poster\",\n name: \"Event Poster\",\n description: \"Bold graphic event flyer.\",\n group: \"Print & Posters\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"3:4\",\n prompt:\n \"bold graphic event poster for '{EVENT}', with the detail line '{date and venue || Saturday Sept 14 · The Grand Hall}' set cleanly below, striking oversized display typography as the hero, dynamic eye-catching layout with strong shapes and a vivid high-energy color palette, clear type hierarchy and generous margins, crisp flat print-ready finish, balanced composition, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered busy layout, muddy colors, tiny unreadable text, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/book-cover\",\n name: \"Book Cover\",\n description: \"Genre cover, title + author.\",\n group: \"Print & Posters\",\n data: {\n provider: \"gpt-image-2-5-sunburst\",\n aspectRatio: \"2:3\",\n prompt:\n \"professional book cover for '{TITLE}' by {AUTHOR}, evocative {genre || literary thriller} mood and symbolic central imagery, vertical composition with a strong focal point, bold title typography across the top and the author name along the bottom with clear hierarchy, atmospheric lighting and a cohesive genre-appropriate color palette, refined bookstore-quality finish, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered layout, clashing fonts, generic stock look, misspelled text, garbled letters, deformed faces, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/tshirt-design\",\n name: \"T-Shirt / POD Design\",\n description: \"Print-ready isolated graphic.\",\n group: \"Print & Posters\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"print-ready t-shirt graphic of {concept || a snarling wolf in a moonlit forest}, bold centered illustration with confident clean linework, limited flat screen-print color palette, strong silhouette that reads at a glance, crisp vector-style edges, perfectly isolated on a plain flat background as artwork only with no garment and no mockup\",\n negativePrompt:\n \"t-shirt mockup, person wearing shirt, photographic background, soft gradients, photorealistic, busy clutter, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n {\n id: \"generate-image/sticker-diecut\",\n name: \"Die-Cut Sticker\",\n description: \"White-border glossy sticker.\",\n group: \"Print & Posters\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"die-cut sticker design of {subject || a smiling cartoon avocado}, thick clean white die-cut border hugging the silhouette, bold flat colors with a confident dark outline, cute kawaii style, subtle glossy vinyl sheen and a soft contact shadow, single centered subject isolated on a plain flat background\",\n negativePrompt:\n \"photographic background, scene, no white border, soft blurry edges, photorealistic, busy clutter, misspelled text, garbled letters, lowres, watermark\",\n },\n },\n {\n id: \"generate-image/album-cover\",\n name: \"Album Cover\",\n description: \"Square cover art, mood-driven.\",\n group: \"Print & Posters\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"1:1\",\n prompt:\n \"striking square album cover art for '{TITLE}', bold {genre || dreamy synthwave} aesthetic, single arresting central image as the focal point, dramatic mood-setting lighting and a distinctive cohesive color palette, the title set as clean tasteful typography that complements the artwork, refined high-detail finish, balanced composition, legible correctly-spelled text\",\n negativePrompt:\n \"cluttered busy layout, muddy colors, weak focal point, misspelled text, garbled letters, lowres, blurry, watermark\",\n },\n },\n\n // ── Illustration & Art Styles (pin the global `style` look) ───────────────\n {\n id: \"generate-image/anime-scene\",\n name: \"Anime Scene\",\n description: \"Cel-shaded anime look.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n style: \"anime\",\n prompt: \"{scene or subject || a girl watching fireworks over a summer festival}, cel-shaded with crisp linework, expressive eyes, soft gradient sky, gentle bloom\",\n negativePrompt: \"photorealistic, 3d render, muddy colors, lowres, deformed, extra fingers, watermark, text\",\n },\n },\n {\n id: \"generate-image/comic-panel\",\n name: \"Comic Panel\",\n description: \"Inked panel with action.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"4:3\",\n style: \"comic-book\",\n prompt: \"{scene || a caped hero landing on a rooftop at dusk}, dynamic comic panel composition, bold ink outlines, motion lines, clear space for a speech bubble\",\n negativePrompt: \"photorealistic, muddy colors, cluttered, lowres, deformed, extra fingers, watermark\",\n },\n },\n {\n id: \"generate-image/manga-bw\",\n name: \"Manga Panel (B&W)\",\n description: \"Screentone black-and-white.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n style: \"manga\",\n prompt: \"{scene || a swordsman bracing against the wind}, black-and-white manga panel, crisp inking, screentone shading, dramatic low angle, speed lines\",\n negativePrompt: \"color, grayscale photo, muddy tones, lowres, deformed, extra fingers, watermark\",\n },\n },\n {\n id: \"generate-image/watercolor\",\n name: \"Watercolor\",\n description: \"Soft transparent washes.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"flux\",\n aspectRatio: \"4:3\",\n style: \"watercolor\",\n prompt: \"{subject || a quiet harbor at dawn}, loose wet-on-wet washes, soft bleeding edges, paper texture showing through, gentle pastel palette\",\n negativePrompt: \"hard edges, photorealistic, heavy outlines, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/oil-painting\",\n name: \"Oil Painting\",\n description: \"Classical canvas brushwork.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"flux\",\n aspectRatio: \"4:3\",\n style: \"oil-painting\",\n prompt: \"{subject || a still life of fruit on a draped table}, thick impasto brushstrokes, visible canvas texture, warm chiaroscuro light, rich classical palette\",\n negativePrompt: \"photorealistic, flat digital, smooth airbrush, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/flat-vector-illustration\",\n name: \"Flat Vector Illustration\",\n description: \"Modern flat SaaS-style art.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"16:9\",\n style: \"flat-vector\",\n prompt: \"{subject or scene || a person working at a laptop in a cozy home office}, clean flat shapes, bold simple forms, limited modern palette, generous negative space\",\n negativePrompt: \"photorealistic, gradient mesh, heavy texture, drop shadows, lowres, watermark\",\n },\n },\n {\n id: \"generate-image/isometric-illustration\",\n name: \"Isometric Illustration\",\n description: \"3/4 axonometric scene.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n style: \"isometric\",\n prompt: \"isometric {building or scene || a cozy corner coffee shop}, true 3/4 axonometric angle, clean miniature game-art forms, soft even lighting, tidy modular detail\",\n negativePrompt: \"perspective distortion, vanishing-point view, photorealistic, lowres, watermark\",\n },\n },\n {\n id: \"generate-image/pixel-art\",\n name: \"Pixel Art Scene\",\n description: \"Retro low-res pixel grid.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n style: \"pixel-art\",\n prompt: \"{subject || a hero exploring a torch-lit dungeon}, retro 16-bit pixel art, crisp pixel grid, limited dithered palette, hard-edged sprite detail\",\n negativePrompt: \"smooth gradients, antialiasing, blur, photorealistic, vector art, watermark\",\n },\n },\n {\n id: \"generate-image/pixar-3d\",\n name: \"3D Animated (Pixar-style)\",\n description: \"Polished CG character look.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n style: \"pixar-3d\",\n prompt: \"{character or subject || a curious round-cheeked kid with big expressive eyes}, polished 3D animated render, soft subsurface skin, warm key light with gentle bounce, charming appeal\",\n negativePrompt: \"photorealistic, uncanny, flat 2d, lowres, deformed, extra fingers, watermark, text\",\n },\n },\n {\n id: \"generate-image/line-art-coloring\",\n name: \"Coloring Page (line art)\",\n description: \"Clean B&W outlines, no shading.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"black and white line-art coloring page of {subject || a friendly dinosaur in a jungle}, clean even-weight ink outlines, simple uncluttered shapes with generous open areas to fill in, pure white background, crisp vector-style edges, no shading and no color\",\n negativePrompt: \"color, shading, grayscale fill, gradients, sketchy hatching, photorealistic, busy background, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/tattoo-flash\",\n name: \"Tattoo Flash\",\n description: \"Bold linework, isolated.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2-5-sunburst\",\n aspectRatio: \"2:3\",\n prompt:\n \"tattoo flash design of {subject || a roaring tiger with peony flowers} in {tattoo style || bold American traditional} style, confident clean linework with strong outlines, limited tattoo-ink palette, solid black fills and tasteful negative space, single centered motif isolated on a plain white sheet\",\n negativePrompt: \"photographic background, scene, soft gradients, photorealistic, fine grayscale shading, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/concept-art-env\",\n name: \"Concept Art (environment)\",\n description: \"Painterly pre-production art.\",\n group: \"Illustration & Art Styles\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n style: \"concept-art\",\n prompt: \"concept art of {environment or subject || ancient ruins reclaimed by a glowing jungle}, sweeping sense of scale, atmospheric depth and haze, dramatic god-ray light\",\n negativePrompt: \"flat lighting, photo, cluttered, lowres, deformed, watermark, text\",\n },\n },\n\n // ── Handmade & Stop-Motion (tactile crafted looks — the in-prompt\n // \"NOT digital CG, NOT a 3D render\" clause is what holds the handmade feel;\n // named quality anchors (Aardman/Laika/Henson/Gondry) pin the reference bar) ──\n {\n id: \"generate-image/claymation-scene\",\n name: \"Claymation Scene\",\n description: \"Plasticine stop-motion look, thumbprints included.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"{scene || a tiny clay fisherman rowing across a stormy plasticine sea}, tactile stop-motion claymation scene — real plasticine clay characters and set with visible thumbprints, tool marks, seam lines and a soft matte sheen, miniature studio photography with shallow depth of field and warm practical lighting, handmade Aardman-quality charm. NOT digital CG, NOT a 3D render, NOT 2D illustration — a physically sculpted miniature scene photographed on a real stop-motion stage\",\n negativePrompt:\n \"smooth plastic CGI surface, digital 3d render, 2d illustration, cartoon shading, perfect seamless surfaces, real human actors, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/needle-felt\",\n name: \"Needle-Felt\",\n description: \"Fuzzy felted-wool miniature.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"{subject || a round little fox curled in a mossy nest}, needle-felted wool sculpture — soft wool roving with visible fluffy fibers and a halo of stray strands, glass-bead eyes with a tiny sheen, embroidered nose and stitched details, handcrafted miniature photographed in a cozy diorama with soft window light, Laika-quality handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration — real felted wool photographed up close\",\n negativePrompt:\n \"smooth plastic surface, digital 3d render, 2d illustration, real animal fur, photorealistic animal, hard CGI edges, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/sock-puppet\",\n name: \"Sock Puppet\",\n description: \"Stitched-sock character on stage.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"4:3\",\n prompt:\n \"{character || a cheerful sock-puppet chef holding a tiny wooden spoon}, handmade sock puppet — thick cotton knit texture, stitched felt mouth, ping-pong-ball eyes with painted pupils, yarn hair, visible seams and hot-glue details, puppet-studio photography with soft even lighting and a simple stage backdrop, Henson-style handmade charm. NOT digital CG, NOT a 3D render, NOT 2D illustration — a real fabric puppet photographed on a puppet stage\",\n negativePrompt:\n \"smooth CGI fabric, digital 3d render, 2d illustration, human face, realistic skin, plastic toy look, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/cardboard-diorama\",\n name: \"Cardboard Diorama\",\n description: \"Cut-cardboard craft set, tape & paint.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"{scene || a rocket launching over a tiny cardboard city}, handmade cardboard-craft diorama — corrugated cardboard structures with visible cut edges, masking tape, hot-glue joints and hand-painted acrylic surfaces, hand-lettered signs, miniature set photography with warm practical lighting and gentle depth of field, Michel Gondry handmade-prop charm. NOT digital CG, NOT a 3D render, NOT 2D illustration — a real cardboard miniature set photographed in studio\",\n negativePrompt:\n \"clean vector shapes, digital 3d render, 2d illustration, smooth plastic surfaces, real buildings, photoreal city, lowres, deformed, watermark, garbled text\",\n },\n },\n {\n id: \"generate-image/embroidered-art\",\n name: \"Embroidered Art\",\n description: \"Hand-stitched thread on hooped linen.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"{subject || a songbird on a blossoming branch} rendered as fine hand embroidery — visible individual thread stitches, satin-stitch fills and chain-stitch outlines, subtle thread sheen, slight fabric pucker around dense stitching, hooped natural linen background with a few loose thread tails, soft daylight craft photography, artisan needlework quality. NOT digital CG, NOT a 3D render, NOT 2D illustration, NOT a print — real stitched thread on real fabric\",\n negativePrompt:\n \"printed fabric, flat digital illustration, 3d render, smooth painted texture, photorealistic subject, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/faux-food-clay\",\n name: \"Faux-Food (Clay)\",\n description: \"Plasticine dish styled as a commercial.\",\n group: \"Handmade & Stop-Motion\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"{dish || a steaming bowl of ramen with a soft egg and curled noodles} sculpted entirely from plasticine modeling clay and styled as a glossy food commercial — visible sculpting tool marks, clear gloss varnish standing in for broth sheen, wool-tuft steam, clay ingredients with charming hand-modeled imperfection, miniature studio food-commercial lighting with a warm appetizing key, Aardman-quality handmade charm. NOT real food photography, NOT digital CG, NOT a 3D render, NOT 2D illustration — a physically sculpted clay dish photographed like a commercial\",\n negativePrompt:\n \"real food, photorealistic food, digital 3d render, 2d illustration, smooth plastic CGI, melted shapeless clay, unappetizing, lowres, watermark, text\",\n },\n },\n\n // ── Film & Storyboard ────────────────────────────────────────────────────\n {\n id: \"generate-image/storyboard-frame\",\n name: \"Storyboard Frame\",\n description: \"Rough B&W shot sketch.\",\n group: \"Film & Storyboard\",\n data: {\n provider: \"nano-banana\",\n aspectRatio: \"16:9\",\n prompt:\n \"rough storyboard frame of {shot description || a detective shouldering open a warehouse door}, loose black-and-white pencil sketch, {shot size || medium} shot framing with clear staging and readable blocking, gestural hatching for tone, {camera angle || slight low angle}, bold directional arrows indicating subject and camera motion, quick previsualization sketch — not a finished render\",\n negativePrompt:\n \"color, photorealistic, rendered, polished finish, fine detail, grayscale photo, lowres, watermark, garbled text\",\n },\n },\n {\n id: \"generate-image/cinematic-keyframe\",\n name: \"Cinematic Keyframe\",\n description: \"Graded film-still keyframe.\",\n group: \"Film & Storyboard\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"16:9\",\n prompt:\n \"cinematic keyframe of {scene || a weary traveler pausing at a neon-lit roadside diner}, film still, anamorphic 40mm look with shallow depth of field and gentle bokeh, {mood || tense and intimate} motivated lighting with soft key and deep falloff, off-center framing with negative space, richly color-graded teal-and-amber palette, atmospheric haze, fine film grain, photoreal detail\",\n negativePrompt:\n \"flat lighting, deep focus, oversaturated, washed out, video-game render, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/matte-painting\",\n name: \"Matte Painting (21:9)\",\n description: \"Epic environment establishing.\",\n group: \"Film & Storyboard\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"21:9\",\n prompt:\n \"epic ultra-wide matte painting of {environment || a ruined citadel half-swallowed by jungle at sunrise}, sweeping cinematic vista, painterly photoreal rendering with crisp distant detail, layered foreground, midground and background for deep atmospheric perspective, dramatic god-ray lighting breaking through haze, vast awe-inspiring scale, rich filmic color grade, fine detail\",\n negativePrompt:\n \"flat, low detail, shallow composition, cluttered foreground, oversaturated, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/moodboard-tile\",\n name: \"Mood Board Tile\",\n description: \"Single cohesive aesthetic tile.\",\n group: \"Film & Storyboard\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"single cohesive mood-board tile capturing {aesthetic or theme || warm Scandinavian minimalism}, one unified evocative image — not a collage or grid, soft natural lighting with gentle texture and tactile materials, balanced editorial composition, restrained {color palette || muted oat, sage and terracotta} grade, calm atmospheric mood, crisp tasteful detail\",\n negativePrompt:\n \"collage, grid, split panels, multiple frames, text, labels, busy clutter, watermark, lowres\",\n },\n },\n {\n id: \"generate-image/establishing-shot\",\n name: \"Establishing Shot (21:9)\",\n description: \"Wide sense-of-place opener.\",\n group: \"Film & Storyboard\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"21:9\",\n prompt:\n \"sweeping ultra-wide establishing shot of {location || a fog-wrapped fishing village at first light}, cinematic film still, wide lens with edge-to-edge deep focus, layered foreground, midground and distant background conveying a strong sense of place and scale, soft directional dawn light with atmospheric haze, expansive epic composition, evocative filmic color grade, crisp detail across the frame\",\n negativePrompt:\n \"cropped framing, cluttered composition, flat lighting, oversaturated, soft focus, lowres, watermark, text\",\n },\n },\n\n // ── Architecture & Interiors ─────────────────────────────────────────────\n {\n id: \"generate-image/exterior-render\",\n name: \"Architecture · Exterior\",\n description: \"Photoreal building, golden hour.\",\n group: \"Architecture & Interiors\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"16:9\",\n prompt:\n \"photoreal architectural exterior visualization of {building || a glass-and-timber hillside villa}, {architectural style || warm modern minimalism}, professional architecture photography with a tilt-shift lens keeping verticals perfectly straight, warm golden-hour light raking across the facade with soft long shadows, three-quarter hero angle with clean foreground landscaping, aspirational editorial mood with natural color, accurate geometry and crisp material detail\",\n negativePrompt:\n \"distorted geometry, warped perspective, bent verticals, melting structure, flat lighting, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/interior-design\",\n name: \"Architecture · Interior\",\n description: \"Magazine-quality room render.\",\n group: \"Architecture & Interiors\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"4:3\",\n prompt:\n \"photoreal interior design visualization of {room || a sunlit open-plan living room}, {style || warm contemporary Scandinavian}, soft natural light pouring through large windows with gentle ambient fill, wide-angle architectural lens with straight true verticals and corrected perspective, balanced styled composition with curated furnishings and breathing room, inviting magazine-quality mood with a cohesive natural palette, accurate geometry and crisp material texture\",\n negativePrompt:\n \"distorted geometry, warped perspective, bent verticals, fisheye bulge, cluttered, dark, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/real-estate-hero\",\n name: \"Real Estate Hero\",\n description: \"Bright, inviting listing shot.\",\n group: \"Architecture & Interiors\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"professional real estate photograph of {property || a bright open-concept living room with patio doors}, wide-angle architectural lens with straight true verticals and corrected perspective, bright airy natural daylight balanced with warm interior fill for a high-dynamic-range look, clean tasteful staging with uncluttered surfaces, welcoming aspirational mood with a fresh neutral palette, accurate geometry and crisp listing-ready detail\",\n negativePrompt:\n \"distorted geometry, warped perspective, bent verticals, fisheye bulge, dark, dingy, cluttered, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/building-tall\",\n name: \"Skyscraper / Tall Building\",\n description: \"Dramatic upward portrait view.\",\n group: \"Architecture & Interiors\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"2:3\",\n prompt:\n \"photoreal architectural photograph of {tall building || a sleek glass-and-steel skyscraper}, dramatic worm's-eye upward angle exaggerating its soaring height, wide lens with controlled converging verticals, crisp midday sun glinting off the facade against a deep blue sky with wispy clouds, bold graphic composition emphasizing repeating structure, striking modern mood with clean color, accurate geometry and sharp reflective detail\",\n negativePrompt:\n \"distorted geometry, warped perspective, melting structure, leaning collapse, overcast haze, lowres, watermark, text\",\n },\n },\n\n // ── Icons, Game Assets & Textures ────────────────────────────────────────\n {\n id: \"generate-image/game-icon\",\n name: \"Game Icon\",\n description: \"Glossy RPG inventory icon.\",\n group: \"Icons, Game Assets & Textures\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"polished RPG inventory game icon of {item || a glowing enchanted health potion in a crystal vial}, rounded glossy 3D style with smooth beveled edges and a subtle inner glow, soft studio key light with a bright specular highlight and a faint magical rim, single object perfectly centered with generous margins, isolated on a clean dark gradient background, vibrant saturated game-art palette, crisp readable silhouette at small sizes\",\n negativePrompt: \"flat, 2d, lowres, cluttered background, multiple objects, busy scene, harsh shadows, watermark, text\",\n },\n },\n {\n id: \"generate-image/seamless-texture\",\n name: \"Seamless Texture\",\n description: \"Tileable PBR-style material.\",\n group: \"Icons, Game Assets & Textures\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"seamless tileable PBR-style surface texture of {material || weathered mossy cobblestone}, perfectly repeating with no visible seams, dead-flat top-down orthographic view, even diffuse flat lighting across the whole frame with no shadows or hotspots, edges that wrap cleanly when tiled, fine high-resolution material detail, true-to-life color, crisp uniform grain\",\n negativePrompt: \"visible seams, perspective, lighting gradient, shadows, vignette, hotspots, single object, foreground subject, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/seamless-pattern\",\n name: \"Seamless Pattern\",\n description: \"Tileable decorative motif.\",\n group: \"Icons, Game Assets & Textures\",\n data: {\n provider: \"ideogram-v3\",\n aspectRatio: \"1:1\",\n prompt:\n \"seamless repeating decorative surface pattern of {motif || delicate botanical leaves and blossoms}, perfectly tileable with no visible seams where edges meet, flat clean vector colors, even balanced top-down composition with uniform motif spacing and consistent flat lighting, cohesive limited palette, crisp print-ready finish\",\n negativePrompt: \"visible seams, perspective, lighting gradient, shadows, photorealistic, 3d render, uneven spacing, single centered subject, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/emoji-set\",\n name: \"Emoji / Reaction Set\",\n description: \"Glossy 3D emoji variations.\",\n group: \"Icons, Game Assets & Textures\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"a set of glossy 3D emoji-style reaction icons of {subject || a round smiling yellow face}, several distinct expressions arranged in an even grid — happy, laughing, surprised, sad, angry, love — strictly consistent style, shading, and proportions across every icon with only the expression changing, smooth rounded inflatable forms with a candy-gloss finish, soft even studio lighting identical on each icon with a bright specular highlight, evenly spaced on a clean plain background, vibrant saturated palette, crisp and instantly readable at small sizes\",\n negativePrompt: \"inconsistent style, mismatched shading, off-model, realistic photo, flat 2d, muddy colors, cluttered background, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/pixel-sprite\",\n name: \"Pixel Sprite\",\n description: \"Game-ready pixel sprite.\",\n group: \"Icons, Game Assets & Textures\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n style: \"pixel-art\",\n prompt: \"game-ready sprite of {character or item || a plucky knight with a tiny sword}, crisp clean pixels, bold readable silhouette, limited palette, centered on a plain background\",\n negativePrompt: \"smooth, antialiased, blurry, soft gradients, 3d render, cluttered background, watermark, text\",\n },\n },\n\n // ── More Photography & Cinematic ─────────────────────────────────────────\n {\n id: \"generate-image/silhouette\",\n name: \"Silhouette\",\n description: \"Backlit subject, dramatic sky.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"dramatic silhouette of {subject || a lone figure on a hilltop with arms outstretched}, 50mm lens at f/8 with crisp deep focus, subject fully backlit against a vivid sunset sky and rendered as a clean dark shape with a glowing rim, low-angle composition with the figure off-center on the horizon, bold high-contrast mood in a fiery orange-to-purple gradient, smooth graded sky, minimal interior detail and clean recognizable outline\",\n negativePrompt:\n \"flat lighting, front lighting, visible face detail, washed-out sky, muddy tones, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/long-exposure\",\n name: \"Long Exposure\",\n description: \"Silky motion, light trails.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"seedream\",\n aspectRatio: \"16:9\",\n prompt:\n \"long-exposure photograph of {scene || a coastal lighthouse above mist-smoothed ocean waves}, 24mm lens at f/11 on a tripod with a multi-second shutter, silky smooth motion blur with streaking light trails and glassy water, razor-sharp stationary elements, balanced wide composition during the cool blue hour, tranquil ethereal mood with deep clean shadows and minimal noise, crisp fine detail where the frame is still\",\n negativePrompt:\n \"noise, harsh motion artifacts, double exposure, banding, blurry stationary objects, blown highlights, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/tilt-shift\",\n name: \"Tilt-Shift Miniature\",\n description: \"Fake-miniature selective blur.\",\n group: \"Photography & Cinematic\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"16:9\",\n prompt:\n \"tilt-shift miniature photograph of {scene || a bustling city intersection with tiny cars and crowds}, tilt-shift lens with a narrow band of sharp focus and strong blur above and below, high elevated bird's-eye angle, tiny people and vehicles reading like toys, centered subject band, playful diorama mood with punchy high saturation and crisp clean detail in the focus zone\",\n negativePrompt:\n \"uniform sharp focus, eye-level angle, flat colors, dull lighting, realistic scale, lowres, deformed, watermark, text\",\n },\n },\n\n // ── More Product & Commerce ──────────────────────────────────────────────\n {\n id: \"generate-image/knolling\",\n name: \"Knolling Flat-Lay\",\n description: \"Objects arranged at 90°.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"1:1\",\n prompt:\n \"knolling flat-lay photograph of {items || an everyday-carry kit — knife, pen, watch, wallet and keys}, every object precisely aligned at ninety-degree right angles and evenly spaced in a tidy grid, 35mm lens at f/8 with even edge-to-edge focus, perfect top-down ninety-degree angle, soft diffused overhead light with gentle even shadows, organized symmetrical composition with consistent gaps, satisfying orderly editorial mood with a clean palette on a smooth neutral surface, crisp product detail\",\n negativePrompt:\n \"cluttered, messy, overlapping objects, diagonal placement, uneven spacing, tilted angle, harsh shadows, lowres, deformed, watermark, text\",\n },\n },\n {\n id: \"generate-image/ghost-mannequin\",\n name: \"Ghost-Mannequin Apparel\",\n description: \"Invisible-mannequin clothing shot.\",\n group: \"Product & Commerce\",\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"ghost-mannequin apparel photograph of {garment || a tailored wool blazer}, invisible-mannequin hollow three-dimensional effect with the garment holding its worn shape and a visible hollow neckline and cuffs, 85mm lens at f/8 with deep focus, soft even studio lighting from large diffusers with a subtle grounding shadow, centered front-facing composition on a clean pure-white background, crisp commercial e-commerce mood with true-to-life color, accurate fabric texture and sharp seams\",\n negativePrompt:\n \"visible mannequin, body, person, neck, hands, flat lifeless shape, wrinkles, color cast, lowres, deformed, watermark, text\",\n },\n },\n\n // ── More Illustration & Art Styles ───────────────────────────────────────\n {\n id: \"generate-image/double-exposure\",\n name: \"Double Exposure\",\n description: \"Silhouette filled with a 2nd scene.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"seedream\", aspectRatio: \"2:3\", prompt: \"double-exposure portrait, the silhouette of {subject || a person's profile} cleanly filled with {secondary scene || a misty pine forest}, the second scene contained within the silhouette and fading to a clean light background at the edges, crisp high-contrast blend, fine art monochrome-to-color treatment\", negativePrompt: \"muddy overlap, low contrast, cluttered background, lowres, deformed, watermark, text\" },\n },\n {\n id: \"generate-image/vaporwave\",\n name: \"Vaporwave\",\n description: \"80s neon pastel aesthetic.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"16:9\", style: \"vaporwave\", prompt: \"{subject || a marble bust beside a glowing palm tree}, neon pink-and-cyan glow, retro grid horizon, dreamy gradient sunset, subtle VHS haze\", negativePrompt: \"muted colors, photorealistic, dull, lowres, watermark, text\" },\n },\n {\n id: \"generate-image/cyberpunk-scene\",\n name: \"Cyberpunk Scene\",\n description: \"Neon-lit dystopian night.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"16:9\", style: \"cyberpunk\", prompt: \"{scene || a crowded neon market street}, rain-slicked night with glowing reflections, holographic signage, dense atmospheric haze, moody teal-and-magenta glow\", negativePrompt: \"daylight, flat lighting, washed out, lowres, deformed, watermark, text\" },\n },\n {\n id: \"generate-image/pop-art\",\n name: \"Pop Art\",\n description: \"Bold Warhol/Lichtenstein graphic.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"1:1\", style: \"pop-art\", prompt: \"{subject || a woman in sunglasses blowing a bubble}, bold flat color blocks, thick black outlines, halftone Ben-Day dots, punchy primary palette\", negativePrompt: \"muted colors, photorealistic, soft gradients, lowres, watermark, text\" },\n },\n {\n id: \"generate-image/low-poly\",\n name: \"Low Poly\",\n description: \"Faceted geometric 3D.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"1:1\", style: \"low-poly\", prompt: \"{subject || a stylized mountain fox}, faceted triangular geometry, crisp flat-shaded polygons, clean gradient color blocking, soft studio light\", negativePrompt: \"smooth surfaces, rounded organic detail, photorealistic, lowres, watermark, text\" },\n },\n {\n id: \"generate-image/paper-cut\",\n name: \"Paper Cut\",\n description: \"Layered cut-paper craft.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"1:1\", style: \"paper-cutout\", prompt: \"{subject || a fox in a layered forest}, layered cut-paper craft, stacked depth with soft drop shadows between layers, clean torn-and-cut edges, warm tactile palette\", negativePrompt: \"photorealistic, flat single-layer, smooth gradients, lowres, watermark, text\" },\n },\n {\n id: \"generate-image/stained-glass\",\n name: \"Stained Glass\",\n description: \"Leaded colored-glass mosaic.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2-5-sunburst\", aspectRatio: \"2:3\", style: \"stained-glass\", prompt: \"{subject || a phoenix rising in flames}, bold black leading lines between glowing colored glass panes, luminous backlit jewel tones, symmetrical mosaic composition\", negativePrompt: \"photorealistic, flat, muddy colors, broken composition, lowres, watermark, text\" },\n },\n\n // ── Diagrams & Infographics ──────────────────────────────────────────────\n {\n id: \"generate-image/blueprint\",\n name: \"Blueprint Schematic\",\n description: \"White-on-blue technical drawing.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"4:3\", style: \"blueprint\", prompt: \"technical blueprint schematic of {subject || a vintage propeller aircraft}, crisp white line work on deep blue drafting paper, dimension lines with measurements and callout labels, legible correctly-spelled labels, tidy orthographic engineering-drawing layout\", negativePrompt: \"photorealistic, color fill, shading, misspelled labels, garbled text, sloppy lines, lowres, watermark\" },\n },\n {\n id: \"generate-image/infographic\",\n name: \"Infographic\",\n description: \"Icons + labels data layout.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"4:3\", prompt: \"clean modern infographic about {topic || how renewable energy works}, structured data-visualization layout with simple flat icons, short labeled callouts and a few key stats, clear visual hierarchy with a strong title and numbered sections, generous spacing and aligned grid, cohesive limited palette, legible correctly-spelled text, crisp flat editorial finish\", negativePrompt: \"cluttered busy layout, misspelled text, gibberish labels, overlapping elements, tiny unreadable type, photorealistic, lowres, watermark\" },\n },\n {\n id: \"generate-image/ui-mockup\",\n name: \"UI / App Mockup\",\n description: \"Clean app/website screen design.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"16:9\", prompt: \"modern UI design mockup of {app or website screen || a fitness tracker dashboard}, clean polished product interface with a clear navigation bar, real cards, buttons, charts and icons, consistent spacing and alignment on a tidy grid, contemporary design-system styling with a cohesive accent color, realistic legible correctly-spelled text and labels, crisp flat high-fidelity finish\", negativePrompt: \"cluttered, misspelled text, gibberish labels, garbled UI text, misaligned elements, blurry, photorealistic photo, lowres, watermark\" },\n },\n {\n id: \"generate-image/flowchart\",\n name: \"Flowchart / Diagram\",\n description: \"Boxes, arrows, labels.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"16:9\", prompt: \"clean flowchart diagram of {process || a customer onboarding workflow}, clearly labeled rounded boxes connected by directional arrows, logical left-to-right flow with decision diamonds and a clear top-down hierarchy, evenly spaced nodes on a tidy grid, cohesive limited palette, legible correctly-spelled labels, crisp flat modern finish\", negativePrompt: \"cluttered, tangled crossing arrows, misspelled text, gibberish labels, overlapping boxes, tiny unreadable type, photorealistic, lowres, watermark\" },\n },\n {\n id: \"generate-image/chart-graph\",\n name: \"Chart / Graph\",\n description: \"Bar / line / pie data viz.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"4:3\", prompt: \"clean data-visualization chart of {data || quarterly revenue growth}, a {bar, line or pie || bar} graph with clearly labeled axes, gridlines, value labels and a legend, balanced composition with a clear title and generous margins, cohesive limited palette with one accent color, legible correctly-spelled text, crisp flat modern finish\", negativePrompt: \"cluttered, distorted proportions, misleading scale, misspelled text, gibberish labels, overlapping elements, tiny unreadable type, photorealistic, lowres, watermark\" },\n },\n {\n id: \"generate-image/timeline\",\n name: \"Timeline\",\n description: \"Milestones along an axis.\",\n group: \"Diagrams & Infographics\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"16:9\", prompt: \"horizontal timeline infographic of {topic || the history of space exploration}, evenly spaced chronological milestones along a central axis, each marked with a date, a simple icon and a short labeled caption alternating above and below the line, clear left-to-right reading order with a strong title, cohesive limited palette, legible correctly-spelled text, crisp flat modern finish\", negativePrompt: \"cluttered, out-of-order milestones, uneven spacing, misspelled text, gibberish labels, overlapping elements, tiny unreadable type, photorealistic, lowres, watermark\" },\n },\n {\n id: \"generate-image/x-ray\",\n name: \"X-Ray / See-Through\",\n description: \"Internal-structure radiograph look.\",\n group: \"Illustration & Art Styles\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"4:3\", prompt: \"x-ray see-through render of {subject || a blooming flower}, translucent body revealing the internal structure and skeleton beneath, glowing luminous white-and-cyan lines on a deep black background, crisp radiograph aesthetic, centered specimen composition\", negativePrompt: \"opaque solid surface, full color, photorealistic skin, cluttered background, lowres, watermark, text\" },\n },\n\n // ── More Icons, Game Assets & Textures ───────────────────────────────────\n {\n id: \"generate-image/3d-icon\",\n name: \"3D Icon\",\n description: \"Glossy single 3D-rendered icon.\",\n group: \"Icons, Game Assets & Textures\",\n data: { provider: \"gpt-image-2\", aspectRatio: \"1:1\", prompt: \"a single glossy 3D rendered icon of {subject || a friendly chat bubble}, smooth rounded clay-like form with soft beveled edges, soft studio key light with a gentle gradient falloff, a bright specular highlight and a soft contact shadow, perfectly centered with generous padding, isolated on a clean plain background, vibrant cohesive palette, crisp and readable at small sizes\", negativePrompt: \"flat, 2d, multiple objects, cluttered background, harsh shadows, photographic scene, lowres, watermark, text\" },\n },\n\n // ── More Architecture & Interiors ────────────────────────────────────────\n {\n id: \"generate-image/floor-plan\",\n name: \"Floor Plan\",\n description: \"Top-down labeled layout.\",\n group: \"Architecture & Interiors\",\n data: { provider: \"ideogram-v3\", aspectRatio: \"1:1\", prompt: \"clean top-down architectural floor plan of {space || a two-bedroom apartment}, precise orthographic plan view, crisp thin black line work on a white background, clearly labeled rooms with legible correctly-spelled text, dimension lines with measurements, simple furniture symbols, a north arrow and a scale bar, tidy professional blueprint style, accurate proportions\", negativePrompt: \"perspective, 3d view, photorealistic, misspelled labels, garbled text, sloppy lines, lowres, watermark\" },\n },\n {\n id: \"generate-image/aerial-site\",\n name: \"Aerial Site View\",\n description: \"Drone view of building + context.\",\n group: \"Architecture & Interiors\",\n data: { provider: \"seedream\", aspectRatio: \"16:9\", prompt: \"photoreal aerial architectural site view of {building || a modern campus among landscaped grounds}, high top-down drone perspective revealing the building footprint, surrounding context, roads and landscaping, warm golden-hour sun casting long raking shadows that define the layout, bold graphic composition emphasizing site planning and scale, expansive serene mood with natural color, accurate geometry and crisp detail across the frame\", negativePrompt: \"distorted geometry, warped perspective, tilted horizon, lens distortion, flat midday light, lowres, watermark, text\" },\n },\n\n // ── Portrait Transformations (identity-locked, from a connected reference photo) ──\n // Like Stylized Subject, these are TRANSFORM presets: connect a clean front-facing\n // reference portrait and GPT Image 2 rebuilds it. The \"Timeless Soul\" age\n // progression renders ONE person at several ages in a single studio composite — the\n // whole effect rides on the identity-lock clause (same eyes/brow/nose/ears/bone\n // structure), so it stays one person aging rather than several different people.\n {\n id: \"generate-image/age-progression-5\",\n name: \"Five Ages (Timeless Soul)\",\n description: \"One person at 5 ages, studio line-up. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single photorealistic studio composite of the SAME person from the reference image at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: a child around 7, a teen around 15, a young adult around 27, a mature adult around 45, and an elder around 70. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, all facing camera with the same calm expression. CRITICAL identity lock — same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines and wrinkles, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate wardrobe per stage. Even soft cinematic studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the five figures fill the frame.\",\n negativePrompt:\n \"different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, extra fingers, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/age-progression-3\",\n name: \"Three-Age Triptych\",\n description: \"Same person at 3 ages (~10 / 40 / 75). Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single photorealistic studio composite of the SAME person from the reference image as a three-age triptych, shoulder-to-shoulder left to right: around age 10, around age 40, and around age 75. Editorial portrait photography, 85mm lens at f/2.8, each figure framed chest-up, facing camera with the same calm expression. CRITICAL identity lock — same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all three, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color (darker in youth, greying with age), and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft cinematic studio key light with gentle rim separation, clean dark-grey gradient seamless backdrop, refined neutral grade, natural skin tones, tack-sharp facial detail; the three figures fill the frame.\",\n negativePrompt:\n \"different person, inconsistent face between figures, distorted features, identity drift across ages, wrong eye color, plastic skin, deformed, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/age-progression-bw\",\n name: \"Five Ages — B&W\",\n description: \"Monochrome age line-up. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single black-and-white photorealistic studio composite of the SAME person from the reference image rendered at five stages of life, shoulder-to-shoulder left to right in a smooth age progression: around 7, 15, 27, 45, and 70. Fine-art monochrome portraiture, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock — same eyes, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, greying hair, and a slight shift in facial fullness. Age-appropriate clothing per stage. Even soft studio key light with gentle rim separation, clean dark-grey gradient backdrop. Deep tonal range from rich blacks to clean highlights, fine silver-gelatin film grain, tack-sharp facial detail; the five figures fill the frame.\",\n negativePrompt:\n \"color, color tint, different person, inconsistent face between figures, distorted features, identity drift across ages, plastic skin, deformed, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/decade-timeline\",\n name: \"Decade Timeline\",\n description: \"Same person across the '80s–2020s. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single photorealistic studio composite of the SAME person from the reference image across five decades, shoulder-to-shoulder left to right with a smooth age progression and period-accurate styling: a 1980s child, a 1990s teen, a 2000s young adult, a 2010s adult, and a 2020s mature adult. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression. CRITICAL identity lock — same eyes, eye color, brow, nose, ears, jawline and facial bone structure across every figure, unmistakably the same person; age ONLY via skin texture, fine lines, hairline, hair color, and a slight shift in facial fullness. Style each to its decade in hair and wardrobe with a subtle period-accurate film treatment per decade: 1980s bold colors and big hair, 1990s casual grunge, 2000s frosted tips, 2010s clean modern, 2020s contemporary. Even soft studio key with gentle rim separation, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the five figures fill the frame.\",\n negativePrompt:\n \"different person, inconsistent face between figures, distorted features, identity drift across decades, anachronistic styling, plastic skin, deformed, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/four-seasons\",\n name: \"Four Seasons\",\n description: \"Same person in spring / summer / autumn / winter. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single photorealistic studio composite of the SAME person from the reference image in four seasonal looks, shoulder-to-shoulder left to right: spring, summer, autumn, and winter. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference — this is seasons, not aging. CRITICAL identity lock — same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY wardrobe, hair styling and a subtle seasonal color grade change. Spring: light pastel layers, fresh airy tone. Summer: light tee, warm sunny tone. Autumn: knit sweater, golden amber tone. Winter: coat and scarf, cool crisp tone. Even soft studio key light with a gentle seasonal color cast and rim separation per figure, clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.\",\n negativePrompt:\n \"different person, inconsistent face between figures, distorted features, aging, age differences between figures, plastic skin, deformed, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/times-of-day\",\n name: \"Times of Day\",\n description: \"Same person at dawn / midday / golden hour / night. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"gpt-image-2\",\n aspectRatio: \"3:4\",\n promptPrefix:\n \"Single photorealistic composite of the SAME person from the reference image across four times of day, shoulder-to-shoulder left to right: dawn, midday, golden hour, and night. Editorial portrait photography, 85mm lens at f/2.8, chest-up framing, all facing camera with the same calm expression, all at the SAME age as the reference. CRITICAL identity lock — same eyes, eye color, brow, nose, ears, jawline and facial bone structure across all four figures, unmistakably the same person; ONLY the lighting and color temperature change between figures. Dawn: soft cool blue light. Midday: bright neutral daylight. Golden hour: warm amber backlight with a gentle glow. Night: moody low light with a cool rim. Consistent chest-up framing and a clean dark-grey gradient seamless backdrop, natural skin tones, tack-sharp facial detail; the four figures fill the frame.\",\n negativePrompt:\n \"different person, inconsistent face between figures, distorted features, aging, age differences between figures, blown highlights, plastic skin, deformed, blurry, lowres, watermark, text\",\n },\n },\n {\n id: \"generate-image/sports-jersey-portrait\",\n name: \"Sports Jersey Portrait\",\n description: \"You in an oversized team jersey, studio editorial. Needs a reference photo.\",\n group: \"Portrait Transformations\",\n minReferences: 1,\n data: {\n provider: \"nano-banana-2-1\",\n aspectRatio: \"4:5\",\n prompt:\n \"Premium studio editorial portrait of the SAME person from the reference image wearing an oversized modern football jersey in the colors of {team || deep crimson and gold}. Sports-fashion editorial photography, 85mm lens at f/2, shallow depth of field with the subject tack-sharp against a softly blurred background. CRITICAL identity lock — same eyes, brow, nose, ears, jawline and facial bone structure, unmistakably the same person, exact skin tone preserved. Soft directional stadium-spotlight key with natural shadow depth and a subtle rim; gradient backdrop in the jersey colors with a faint geometric pattern and soft pitch markings; gentle atmospheric haze and light film grain. Confident, relaxed three-quarter pose, rich saturated grade. Crisp fabric weave and clean jersey graphics.\",\n negativePrompt:\n \"different person, inconsistent face, distorted features, altered skin tone, distorted or garbled logo, misspelled team name, deformed, extra fingers, blurry, lowres, watermark, text artifacts\",\n },\n },\n // ── Stylized Subject + Edits (shared with the deprecating modify-image) ──\n // Transform patterns — work here when a reference image is connected\n // (GPT Image 2.5 Flare edits it while preserving untouched regions). The\n // instruction lives in the prompt, not `style`.\n ...stylizedSubjectFor(\"generate-image\"),\n ...editsFor(\"generate-image\"),\n\n // ── Realism & Authentic ──────────────────────────────────────────────────\n {\n id: \"generate-image/unretouched-portrait\",\n name: \"Unretouched Portrait\",\n description: \"Straight-on head-and-shoulders portrait, real skin, everyday finish.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"3:4\",\n prompt: sentences(\"{subject || An adult woman in her thirties with dark shoulder-length hair}, a straight-on head-and-shoulders portrait at eye level against a plain pale wall, soft daylight from one side.\", REALISM_SKIN, REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/phone-selfie\",\n name: \"Phone Selfie\",\n description: \"Eye-level, arm's-length self-portrait look.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"3:4\",\n prompt: sentences(\"{subject || An adult woman in her late twenties with her hair tied back}, {setting || on a couch at home, a cushion and a lamp behind}.\", realismViewpoint(NEUTRAL_PERSON), realismEmptyHands(NEUTRAL_PERSON), REALISM_SKIN, REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/candid-snapshot\",\n name: \"Candid Phone Snapshot\",\n description: \"Caught mid-moment, an everyday snapshot.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"3:4\",\n prompt: sentences(\"{subject || An adult man in his thirties} caught mid-moment, not posing, glancing away, the framing a little crooked, part of the scene cut by the edge, {setting || at a kitchen table at home}.\", REALISM_SKIN, REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/mirror-selfie\",\n name: \"Mirror Selfie\",\n description: \"Mirror self-portrait, phone in hand.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"9:16\",\n prompt: sentences(\"{subject || An adult woman in her twenties} photographs their reflection in a full-length mirror {setting || in a hallway at home}, a phone held at chest height with its back toward the mirror.\", REALISM_SKIN, REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/creator-at-home\",\n name: \"Creator at Home · Waist-Up\",\n description: \"A waist-up reference of the same person — wire a face photo into the references.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"9:16\",\n prompt: sentences(\"Waist-up photo of {image:1:person}, an adult, standing at home in front of a plain wall, arms relaxed, empty hands.\", REALISM_SKIN, REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/video-call-frame\",\n name: \"Webcam / Video-Call Frame\",\n description: \"Chest-up video-call framing.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"16:9\",\n prompt: sentences(\"{subject || An adult man in his forties}, chest-up, a little off-centre, slightly wide, seen from a fixed point just above eye level about an arm's length away, a softly lit room behind, flat even light from the front.\", REALISM_FINISH),\n },\n },\n {\n id: \"generate-image/macro-skin-study\",\n name: \"Macro Skin Study\",\n description: \"A close study of one area of skin.\",\n group: \"Realism & Authentic\",\n data: {\n ...SKIN_STUDY_MODEL,\n aspectRatio: \"1:1\",\n prompt: sentences(\"{feature || the left cheek and the side of the nose} of {subject || an adult woman in her thirties}, filling the frame, everything sharp front to back, flat cool daylight, neutral colour, a plain study of the skin, not a glamour shot.\", REALISM_SKIN),\n },\n },\n {\n id: \"generate-image/product-in-hand\",\n name: \"Product in Hand — phone photo\",\n description: \"Wire a photo of the product into the references.\",\n group: \"Realism & Authentic\",\n data: {\n ...REALISM_MODEL,\n aspectRatio: \"3:4\",\n prompt: sentences(\"{subject || An adult woman in her thirties} holds {image:1:product} at chest height toward the viewer, label facing out, {setting || in a bright room at home}.\", REALISM_FINISH),\n },\n },\n // ── Create Image tiles (tools.nodaro.ai \"Choose image preset\") ──────────────\n // One tab per group (YouTube, Shorts · TikTok, Social & Ads, Business, Life &\n // Events, Layout, Text); each preset's prompt is the one that rendered its tile\n // picture, with the on-image headline as a {TEXT || …} slot. Generated from\n // tools/preset-tiles/ledger.json — edit the ledger, then run its build. Last,\n // so the editor's folders and the API listing keep their order before them.\n ...GENERATE_IMAGE_TILE_PRESETS,\n]\n","import type { FactoryPreset } from \"./types.js\"\n\n// ── UGC & Creator: shared sentences, kept word for word ─────────────────\nconst UGC_TAIL = \"Keep it subtitle-free, do not generate a watermark.\"\nconst UGC_PAUSE = \"A short natural pause before the first word and after the last.\"\nconst ugcSpeech = (line: string): string =>\n `The person says, in a natural American accent, lively and conversational, quicker on connecting words and slower on numbers: \"{line || ${line}}\"`\n/** Seedance 2.5, vertical, 8 s, 720p with audio — pinned, so every surface renders and bills the same clip. */\nconst UGC_VIDEO = { provider: \"seedance-2-5\", aspectRatio: \"9:16\", duration: 8, resolution: \"720p\", generateAudio: true } as const\n/** The same clip at 5 s, for a one-line answer or a quick reaction that 8 s would leave mostly silent. */\nconst UGC_SHORT_VIDEO = { ...UGC_VIDEO, duration: 5 } as const\nconst ugcPrompt = (...parts: string[]): string => [...parts, UGC_TAIL].join(\" \")\nconst TALKING_AT_HOME =\n \"{image:1:person} talks straight to the viewer at eye level at home, face and shoulders close, the framing a little crooked, deep focus, plain colour, a faint natural sway;\"\n\nexport const GENERATE_VIDEO_PRESETS: readonly FactoryPreset[] = [\n // ── Camera Moves (composable cinematography fragments) ───────────────────\n {\n id: \"generate-video/slow-push-in\",\n name: \"Slow Push-In\",\n description: \"Gradual dolly toward the subject.\",\n group: \"Camera Moves\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"slow cinematic push-in toward {subject || a lone figure at a rain-streaked window}, gradual forward dolly on a smooth gimbal, shallow depth of field with soft bokeh, motivated low-key lighting, deliberate and steady pacing with subtle parallax, filmic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, speed changes, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/dolly-out\",\n name: \"Dolly Out (reveal)\",\n description: \"Pull back to reveal the scene.\",\n group: \"Camera Moves\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"smooth dolly-out pulling back from {subject || a lone figure standing in an empty hall}, gradually revealing the surrounding {environment || a vast cathedral interior at dusk}, wide reveal on a steadicam, expanding sense of scale and depth, soft volumetric light, deliberate and graceful pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/orbit-360\",\n name: \"360° Orbit\",\n description: \"Camera circles the subject.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"camera orbits a full 360 degrees around {subject || a hero standing on a rooftop at sunset}, smooth circular tracking on a gimbal, medium shot with shallow depth of field, dynamic parallax as the background sweeps past, golden-hour rim light, continuous and even orbital pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, duplicate subject, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/arc-shot\",\n name: \"Arc Shot\",\n description: \"Sweeping lateral arc.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"sweeping arc shot gliding laterally around {subject || a vintage sports car on a coastal road}, smooth curved dolly on a steadicam, medium-wide shot with subtle depth, layered parallax between foreground and background, warm directional light, fluid and continuous pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/crane-up\",\n name: \"Crane Up\",\n description: \"Rise up and over to reveal scale.\",\n group: \"Camera Moves\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"cinematic crane shot rising up and over {subject || a lone traveler on a desert dune}, craning into a high wide angle to reveal the larger {scene || an endless dune sea at golden hour}, smooth vertical boom on a crane, dramatic sense of scale, warm low-angle sun, slow and majestic pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/tracking-follow\",\n name: \"Tracking Follow\",\n description: \"Follow the subject from behind.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"tracking shot following {subject || a runner sprinting down a forest trail} from behind, steady gimbal glide matching their pace, medium shot with the background streaming past, immersive sense of momentum, dappled natural light, energetic but smooth pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/slow-pan\",\n name: \"Slow Pan\",\n description: \"Horizontal sweep across the scene.\",\n group: \"Camera Moves\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"slow cinematic pan across {scene || a misty mountain valley at dawn}, smooth horizontal sweep on a locked tripod head, wide establishing shot, gradually revealing layered detail across the frame, soft atmospheric light, unhurried and graceful pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/tilt-reveal\",\n name: \"Tilt-Up Reveal\",\n description: \"Vertical reveal from base to top.\",\n group: \"Camera Moves\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"vertical tilt-up reveal of {subject || a towering skyscraper of glass and steel}, camera tilts smoothly from base to top on a locked head, low-angle wide shot, dramatic sense of scale and height, crisp directional daylight, slow and deliberate pacing, cinematic motion\",\n negativePrompt: \"jitter, camera shake, warping, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/whip-pan\",\n name: \"Whip Pan\",\n description: \"Fast energetic transition.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"fast whip pan snapping across to reveal {subject || a dancer mid-pose in a neon studio}, rapid horizontal swish with directional motion blur, medium shot that lands and settles, punchy energetic transition, bold neon practical light, quick whip-then-hold pacing, cinematic motion\",\n negativePrompt: \"warping, morphing, stutter, ghosting, distorted features, extra limbs, duplicate subject, low quality, blurry mush, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/dolly-zoom\",\n name: \"Dolly Zoom (Vertigo)\",\n description: \"Background warps, subject fixed.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"dolly zoom Vertigo effect on {subject || a man frozen at the end of a long corridor}, camera dollies back while zooming in so the background stretches and the subject stays the same size, medium shot locked on the subject, unsettling spatial distortion, moody low-key light, slow building dread, cinematic motion\",\n negativePrompt: \"wrong vertigo direction, reversed perspective, subject changing size, subject drift, jitter, camera shake, morphing, stutter, distorted features, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Shot Types & Angles ──────────────────────────────────────────────────\n {\n id: \"generate-video/establishing-wide\",\n name: \"Establishing Wide\",\n description: \"Vast opening shot with scale.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"sweeping establishing wide shot of {location || a snow-capped mountain range at sunrise}, slow gentle camera drift on a locked tripod, ultra-wide framing with deep focus, vast cinematic sense of place and scale, soft golden-hour light raking across the landscape, unhurried and majestic pacing with subtle atmospheric movement, filmic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, camera shake, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/medium-shot\",\n name: \"Medium Shot\",\n description: \"Balanced waist-up framing.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"medium shot of {subject || a person in conversation in a sunlit cafe}, locked steady framing on a tripod with a faint breathing handheld feel, waist-up composition with a natural 50mm look and gentle depth of field, soft motivated daylight, relaxed natural movement and subtle gestures at an even, lifelike pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/close-up\",\n name: \"Close-Up\",\n description: \"Intimate, shallow focus.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"intimate close-up of {subject || a face lit by warm window light}, slow micro push-in on a smooth gimbal, tight framing with a long lens and very shallow depth of field and creamy bokeh, soft motivated key light, delicate emotional micro-expressions and breathing at a slow, tender pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, deformed face, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/macro-detail\",\n name: \"Macro Detail\",\n description: \"Extreme close-up reveal.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"extreme macro shot of {subject || a dewdrop trembling on a leaf}, slow creeping slider move on a macro rail, ultra-close framing with a true macro lens and razor-thin depth of field, soft diffused light catching fine texture, mesmerizing slow reveal of tactile micro-detail at a hypnotic, deliberate pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, focus hunting, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/low-angle-hero\",\n name: \"Low-Angle Hero\",\n description: \"Looking up — powerful, imposing.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"dramatic low-angle hero shot of {subject || a confident figure against a stormy sky}, camera looking steeply up with a slow rising push on a steadicam, wide angle that exaggerates height and stature, powerful and imposing framing, bold backlit rim light against dark clouds, commanding presence with slow, weighty motion, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/overhead-topdown\",\n name: \"Overhead Top-Down\",\n description: \"Bird's-eye with slow rotation.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"overhead top-down shot of {scene || a beautifully plated meal on a wooden table}, perfectly flat bird's-eye perspective with a slow even rotation on an overhead rig, wide framing with deep focus across the surface, soft directional light defining shape and texture, graceful continuous turning motion at a calm, steady pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, wobble, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/fpv-drone\",\n name: \"FPV Drone Flythrough\",\n description: \"Immersive first-person flight.\",\n group: \"Shot Types & Angles\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"fast FPV drone flythrough of {location || a narrow canyon carved by a rushing river}, aggressive first-person racing-drone flight diving and banking through the space, ultra-wide action-cam lens with deep focus, immersive sense of speed and momentum, bright natural daylight streaking past, exhilarating fast yet fluid pacing, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, motion sickness wobble, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Cinematic & Specialty ────────────────────────────────────────────────\n {\n id: \"generate-video/handheld-doc\",\n name: \"Handheld Documentary\",\n description: \"Raw, realistic camera shake.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"wan-2.7-t2v\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"handheld documentary shot of {subject || a street vendor at work in a busy market}, organic handheld energy with natural micro-shake and subtle reframing, loose medium shot on a documentary lens, realistic and raw available light, candid spontaneous movement at a lively, observational pace, gritty cinema-verite motion\",\n negativePrompt: \"warping, morphing, flickering, violent jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/slow-motion\",\n name: \"Slow Motion\",\n description: \"High-frame-rate dramatic movement.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"epic high-speed slow-motion shot of {subject || a sprinter exploding off the blocks}, smooth gliding gimbal move tracking the action, medium shot with shallow depth of field, silky high-frame-rate slow motion rendering every detail, dramatic motivated light, fluid weighty movement stretched into graceful slow-mo, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, choppy frames, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/timelapse\",\n name: \"Timelapse\",\n description: \"Fast passage of time.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"timelapse of {scene || a city skyline from day into night}, locked tripod with a slow subtle creep, wide deep-focus framing, fast-moving clouds streaking overhead and light shifting across the scene, dramatic changing sky, accelerated dynamic passage of time at a smooth, steady cadence, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, strobing, flicker, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/hyperlapse\",\n name: \"Hyperlapse\",\n description: \"Moving timelapse through space.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"hyperlapse traveling through {location || a neon-lit city street at night}, stabilized moving timelapse gliding forward with the world rushing past, wide deep-focus framing, motion locked to a vanishing point for a dynamic perspective shift, vivid practical light streaking by, fast yet smooth accelerated pacing, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, strobing, flicker, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/bullet-time\",\n name: \"Bullet Time\",\n description: \"Frozen moment, camera rotates.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"bullet-time effect around {subject || a person leaping in mid-air}, the moment frozen in time while the camera sweeps in a smooth arc on a circular rig, medium shot with shallow depth of field, action suspended motionless in mid-air, dramatic rim light catching the frozen pose, only the camera moves at a continuous, gliding orbital pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, subject moving during freeze, distorted anatomy, extra limbs, duplicate subject, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/rack-focus\",\n name: \"Rack Focus\",\n description: \"Shift focus between planes.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"rack focus pulling from a foreground {subject || a hand resting on a windowsill} to a background {target || a figure approaching in the distance}, locked tripod with a deliberate focus pull between planes, medium shot on a long lens with very shallow depth of field, soft motivated light, cinematic depth as attention shifts at a slow, intentional pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, focus hunting, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Social & Reels (9:16) ────────────────────────────────────────────────\n {\n id: \"generate-video/vertical-hero\",\n name: \"Vertical Hero\",\n description: \"Punchy 9:16 hero clip.\",\n group: \"Social & Reels\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt: \"cinematic vertical hero shot of {subject || a confident athlete poised against a bold backdrop}, snappy push-in on a smooth gimbal, tight vertical medium framing with a punchy wide-aperture look and shallow depth of field, bold high-contrast lighting with a glowing rim, dynamic and energetic movement at a punchy, scroll-stopping pace built for social reels, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n {\n id: \"generate-video/talking-head\",\n name: \"Talking Head\",\n description: \"Vertical creator-to-camera.\",\n group: \"Social & Reels\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt: \"vertical talking-head shot of {subject || a friendly creator addressing the camera} speaking directly to the lens with steady eye contact, locked steady framing with a faint breathing handheld feel, vertical waist-up composition with a flattering 50mm look and gently blurred clean background, soft motivated key light on the face, natural expressive gestures and lifelike micro-expressions at an even, conversational pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, deformed face, wandering eyes, extra limbs, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n {\n id: \"generate-video/product-reveal-vertical\",\n name: \"Product Reveal (vertical)\",\n description: \"9:16 product show-off.\",\n group: \"Social & Reels\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"vertical product reveal of {product || a sleek matte-black smartwatch}, dynamic snap-rotation and a satisfying hero pop on a smooth turntable move, tight vertical close-up framing with crisp focus and shallow depth of field, bright punchy studio lighting with a clean glowing highlight, eye-catching energetic motion at a quick, scroll-stopping social pace, the product staying perfectly crisp and intact, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n {\n id: \"generate-video/trend-quickcut\",\n name: \"Trend Quick-Cut\",\n description: \"Energetic vertical clip.\",\n group: \"Social & Reels\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"high-energy vertical clip of {subject || a dancer mid-move in a neon-lit room}, snappy quick-cut energy with fast whip moves and punchy reframes, tight vertical framing with a dynamic wide look and shallow depth of field, vibrant bold practical lighting, fast trendy movement at a rapid, beat-driven social pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, ghosting, distorted anatomy, extra limbs, low quality, blurry mush, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n {\n id: \"generate-video/pov-vertical\",\n name: \"POV Walk (vertical)\",\n description: \"Immersive first-person reel.\",\n group: \"Social & Reels\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"immersive first-person POV walking through {location || a sunlit city street market}, the camera bobbing naturally with each step as the world moves toward the viewer, vertical wide action-cam framing with deep focus, bright natural daylight, energetic yet smooth handheld momentum at a brisk, immersive walking pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, violent shake, stutter, motion sickness wobble, distorted anatomy, extra limbs, visible body or hands, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n\n // ── Product & Ads ────────────────────────────────────────────────────────\n {\n id: \"generate-video/product-hero\",\n name: \"Product Hero\",\n description: \"Filmic handheld ad close-up.\",\n group: \"Product & Ads\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"premium product hero shot of {product || a matte-black smartwatch} resting on {surface || a polished dark stone slab}, slow handheld micro push-in with a gentle organic drift, tight close-up on a macro lens with shallow depth of field and creamy bokeh, soft window key light with a warm hero glow catching the edges, subtle elegant motion at a slow, luxurious advertising pace, the product staying perfectly crisp and undistorted, soft filmic grade, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/product-spin\",\n name: \"Product 360 Spin\",\n description: \"Clean rotating studio loop.\",\n group: \"Product & Ads\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"1:1\",\n duration: 5,\n prompt: \"{product || a sleek glass perfume bottle} rotating a smooth full turn on a clean studio turntable, locked centered framing with crisp focus and a softly blurred seamless backdrop, even diffused studio lighting with a clean glowing highlight, continuous silky turntable motion at a steady, even spin that loops seamlessly with no visible seam, the product staying perfectly crisp and undistorted, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, visible seam, jump cut, warping, morphing, flickering, jitter, stutter, wobble, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/liquid-splash\",\n name: \"Liquid Splash\",\n description: \"Slow-mo commercial splash.\",\n group: \"Product & Ads\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"dramatic slow-motion liquid splash erupting around {product || a frosted beverage can}, smooth locked-off framing on a macro lens with shallow depth of field, crisp studio lighting catching every droplet, dynamic crowns and ribbons of liquid suspended in silky high-frame-rate slow motion at a graceful, weighty pace, premium commercial look with the product staying perfectly crisp and undistorted, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, warping, morphing, flickering, jitter, stutter, choppy frames, smeared droplets, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/unboxing\",\n name: \"Unboxing\",\n description: \"Cinematic reveal of the package.\",\n group: \"Product & Ads\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"cinematic unboxing of {product || a premium pair of wireless headphones}, hands lifting the lid and easing the product from its packaging, slow handheld push-in on a smooth gimbal, tight close-up on a 50mm lens with shallow depth of field, soft warm window light with a gentle hero glow, deliberate motion building a sense of anticipation at a slow, premium reveal pace, the product staying perfectly crisp and undistorted, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, warping, morphing, flickering, jitter, stutter, distorted anatomy, deformed hands, extra fingers, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/lifestyle-ad\",\n name: \"Lifestyle Ad\",\n description: \"Aspirational product-in-use.\",\n group: \"Product & Ads\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt: \"vertical lifestyle ad clip of {subject || a smiling young woman} naturally using {product || a sleek stainless-steel water bottle} in {setting || a bright sunlit kitchen}, gentle handheld follow on a smooth gimbal, vertical medium framing with a warm wide-aperture look and shallow depth of field, soft natural window light, relaxed authentic movement at an easy, aspirational pace, the product staying perfectly crisp and undistorted, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, warping, morphing, flickering, jitter, stutter, distorted anatomy, deformed hands, extra limbs, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n\n // ── Motion Graphics & Logo ───────────────────────────────────────────────\n {\n id: \"generate-video/logo-sting\",\n name: \"Logo Sting\",\n description: \"Short punchy brand reveal.\",\n group: \"Motion Graphics & Logo\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"premium animated logo sting for {BRAND || a modern minimalist brand}, the crisp logo mark assembling and animating in cleanly with sweeping light streaks and a polished glint, centered hero composition on a solid background with subtle depth, sleek motivated studio light, short and punchy with a confident snap-into-place reveal, the logo staying crisp, legible and correctly proportioned, premium motion-graphics polish, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, misspelled text, garbled letters, jumbled type, distorted logo, deformed mark, extra elements\",\n },\n },\n {\n id: \"generate-video/title-reveal\",\n name: \"Title Reveal\",\n description: \"Cinematic text reveal.\",\n group: \"Motion Graphics & Logo\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"cinematic title reveal of the text '{TITLE}', the letters resolving into focus with a dynamic animated title build, slow push-in on a smooth virtual camera, centered hero framing with shallow depth and soft bokeh, dramatic motivated key light with drifting particles and atmospheric haze, deliberate and majestic pacing that settles into a clean hold, the title staying legible, correctly-spelled and crisp with sharp typography, premium motion-graphics polish, cinematic motion\",\n negativePrompt: \"misspelled text, garbled letters, jumbled type, gibberish characters, warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, distorted text, deformed letters\",\n },\n },\n {\n id: \"generate-video/particle-bg\",\n name: \"Particle Background\",\n description: \"Abstract drifting overlay.\",\n group: \"Motion Graphics & Logo\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"abstract flowing particle background in a {color || deep indigo and teal} gradient, soft glowing motes and fine bokeh particles drifting gently across the frame, full-frame ambient field with layered depth and a soft falloff, dreamy diffused light with a gentle glow, slow hypnotic drifting motion at a calm, even pace, seamless loop with no visible seam, ideal for overlays and backgrounds, premium motion-graphics polish, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, text, harsh strobing, banding\",\n },\n },\n {\n id: \"generate-video/loop-background\",\n name: \"Loop Background\",\n description: \"Seamless looping motion bg.\",\n group: \"Motion Graphics & Logo\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"seamless looping abstract background of smooth flowing {color || violet and magenta} gradient waves, soft liquid ribbons undulating gently across the full frame with layered depth, dreamy diffused light with a subtle inner glow, slow hypnotic motion that drifts and returns smoothly to the start, seamless loop with no visible seam, ideal as a motion backdrop, premium motion-graphics polish, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, text, harsh strobing, banding\",\n },\n },\n\n // ── B-Roll & Nature ──────────────────────────────────────────────────────\n {\n id: \"generate-video/clouds-timelapse\",\n name: \"Clouds Timelapse\",\n description: \"Dramatic rolling sky.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"dramatic timelapse of billowing clouds rolling and churning over {landscape || a rugged mountain ridgeline}, locked tripod with a slow subtle creep, wide deep-focus establishing framing, towering cloud banks streaking across a vast dynamic sky as golden light rakes the terrain, accelerated yet smooth passage of time at a steady cadence, serene cinematic b-roll, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, strobing, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/water-slowmo\",\n name: \"Water Slow-Mo\",\n description: \"Glistening water in slow motion.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"slow-motion close-up of {water || a clear mountain stream cascading over rocks}, smooth locked-off framing on a macro lens with shallow depth of field, glistening droplets and silvery ribbons of water suspended in silky high-frame-rate slow motion, soft natural light catching every bead, serene and mesmerizing flow at a graceful, weighty pace, serene cinematic b-roll, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, choppy frames, smeared droplets, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/forest-drift\",\n name: \"Forest Drift\",\n description: \"Peaceful sunlit drift.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"gentle forward drift through a lush sunlit forest, slow steadicam glide weaving between mossy trunks, wide framing with soft depth and natural bokeh, golden light rays streaming through the canopy in drifting volumetric beams with floating dust motes, calm and unhurried movement at a peaceful, meditative pace, serene cinematic b-roll, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, camera shake, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/aerial-landscape\",\n name: \"Aerial Landscape\",\n description: \"Sweeping drone vista.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"sweeping aerial drone shot soaring over {landscape || a snow-capped mountain range at sunrise}, smooth high-altitude glide on a stabilized gimbal, ultra-wide framing with deep focus and layered atmospheric haze, vast cinematic vista with a powerful sense of scale, warm golden-hour light raking across the terrain, graceful and majestic forward motion at an unhurried pace, serene cinematic b-roll, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, camera shake, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/ocean-loop\",\n name: \"Ocean Loop\",\n description: \"Calm seamless waves.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"calm ocean waves rolling gently toward a quiet shore, locked-off wide framing with deep focus across the water, soft natural light glinting off the swell with gentle foam and ripples, slow soothing rhythmic motion at a serene, even pace that returns smoothly to the start, seamless loop with no visible seam, serene ambient cinematic b-roll, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Animation & Style ────────────────────────────────────────────────────\n {\n id: \"generate-video/anime-motion\",\n name: \"Anime Motion\",\n description: \"Cel-shaded animated scene.\",\n group: \"Animation & Style\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"2D anime cel-animation scene of {subject || a determined young hero on a windswept rooftop}, hand-drawn anime style with bold cel-shading, clean ink linework and flat vibrant color, smooth dynamic anime motion with expressive action and speed lines, medium shot with a gentle camera push and subtle parallax, dramatic anime lighting with crisp highlights and saturated skies, lively energetic pacing true to the animated look\",\n negativePrompt: \"photorealistic, live-action, 3D render, off-model, inconsistent style, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/cartoon-3d\",\n name: \"3D Cartoon\",\n description: \"Playful Pixar-like motion.\",\n group: \"Animation & Style\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"polished 3D-cartoon animated scene of {subject || a cheerful round-faced character on a colorful adventure}, glossy Pixar-style rendering with soft subsurface skin, big expressive eyes and squash-and-stretch appeal, smooth bouncy character animation with playful exaggerated motion, medium shot with a gentle dynamic camera move, warm cinematic 3D lighting with soft shadows and a bright color palette, lively upbeat pacing true to a feature-animation look\",\n negativePrompt: \"photorealistic, live-action, 2D flat, off-model, inconsistent style, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/claymation-move\",\n name: \"Claymation\",\n description: \"Tactile stop-motion feel.\",\n group: \"Animation & Style\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"claymation stop-motion animation of {subject || a quirky little clay character in a handmade diorama}, sculpted modeling-clay with visible fingerprints, seams and tactile matte texture, charming handcrafted stop-motion movement with a slightly stepped frame-by-frame cadence, medium shot with a gentle deliberate camera move, warm soft studio lighting on a miniature set, cozy whimsical pacing true to a tactile stop-motion look\",\n negativePrompt: \"photorealistic, live-action, smooth CG, off-model, inconsistent style, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/watercolor-motion\",\n name: \"Living Watercolor\",\n description: \"Flowing painterly motion.\",\n group: \"Animation & Style\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"living watercolor painting of {scene || a misty riverside village in spring}, flowing hand-painted watercolor style with visible paper texture and soft feathered edges, pigments blooming and bleeding gently as wet washes drift and diffuse, slow graceful camera drift across the artwork, luminous translucent layers with soft natural light, calm dreamlike pacing true to a flowing watercolor look\",\n negativePrompt: \"photorealistic, live-action, 3D render, hard digital edges, off-model, inconsistent style, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Looping & Backgrounds ────────────────────────────────────────────────\n {\n id: \"generate-video/subtle-motion\",\n name: \"Subtle Motion\",\n description: \"Gentle, natural movement (great for animating a still).\",\n group: \"Looping & Backgrounds\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"subtle natural ambient motion bringing a still image to life, gentle slow camera drift on a smooth gimbal with delicate parallax, soft micro-movement in the scene that stays understated and lifelike, soft motivated light, calm unhurried pacing, seamless loop with no visible seam, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, flicker, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/living-wallpaper\",\n name: \"Living Wallpaper\",\n description: \"Ambient looping scene.\",\n group: \"Looping & Backgrounds\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"living wallpaper of {scene || a tranquil moonlit lake beneath drifting clouds}, soft ambient motion gently animating the scene with delicate parallax and layered depth, slow hypnotic camera drift, dreamy diffused light with a calm glow, soothing meditative pacing that returns smoothly to the start, seamless loop with no visible seam, ideal as an ambient motion backdrop, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, flicker, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/parallax\",\n name: \"Parallax (2.5D)\",\n description: \"Depth move over a still.\",\n group: \"Looping & Backgrounds\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"2.5D parallax camera move over {scene || a foggy forest valley at dawn}, foreground, midground and background separated into layered planes that slide at different speeds for true depth, smooth slow dolly on a virtual gimbal bringing the still image to life, soft atmospheric light with gentle haze between the layers, calm deliberate pacing, seamless loop with no visible seam, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, flicker, flat single plane, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/cinemagraph\",\n name: \"Cinemagraph\",\n description: \"Mostly still, one moving element.\",\n group: \"Looping & Backgrounds\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"cinemagraph of {scene || a quiet cafe table by a rainy window}, the entire frame held perfectly still and frozen except for one single element in gentle, subtle motion ({moving element || rain trickling down the glass}), locked-off framing with no camera movement, soft natural light, hypnotic minimal motion at a calm, even pace, seamless loop with no visible seam, cinematic\",\n negativePrompt: \"visible seam, jump cut, pop, flicker, whole scene moving, multiple moving elements, camera movement, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/fire-smoke-loop\",\n name: \"Fire & Smoke FX\",\n description: \"Looping embers and smoke.\",\n group: \"Looping & Backgrounds\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"looping fire and smoke FX over a deep black background, glowing embers drifting upward and slow rolling volumetric smoke curling through the frame, locked-off framing with fine particle detail and soft depth, warm fiery glow against the darkness, hypnotic slow drifting motion at a steady pace that returns smoothly to the start, seamless loop with no visible seam, ideal as an FX overlay, cinematic motion\",\n negativePrompt: \"visible seam, jump cut, pop, flicker, warping, morphing, flickering, jitter, stutter, harsh strobing, low quality, blurry, artifacts, watermark, text\",\n },\n },\n // additional Camera Moves / Cinematic / Social / Product / Motion-graphics / B-roll\n {\n id: \"generate-video/crash-zoom\",\n name: \"Crash Zoom\",\n description: \"Sudden energetic punch-in.\",\n group: \"Camera Moves\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"rapid crash zoom punching in toward {subject || a startled face reacting to bad news}, sudden aggressive snap-zoom from wide to tight close-up, directional motion blur on the push, high-impact dramatic emphasis, hard contrasty light, explosive quick-in then hold pacing, cinematic motion\",\n negativePrompt: \"warping, morphing, stutter, ghosting, distorted features, extra limbs, duplicate subject, low quality, blurry mush, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/slowmo-reveal\",\n name: \"Slow-Mo Reveal\",\n description: \"Speed-ramped hero slowdown.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"dramatic hero reveal of {subject || a warrior turning to face the camera}, smooth push-in on a gimbal that speed-ramps from real-time into silky slow motion at the moment of reveal, medium shot with shallow depth of field, bold dramatic rim light, the action stretches into majestic slow-mo at the peak beat, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, abrupt speed jump, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/match-cut\",\n name: \"Match Cut / Morph\",\n description: \"Object A morphs into B.\",\n group: \"Cinematic & Specialty\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"seamless match cut morphing {subject A || a blooming flower} into {subject B || a spinning galaxy}, matched framing and motion so the first subject flows directly into the second, medium shot with shallow depth of field, soft even light through the transition, one continuous fluid transformation at a smooth, hypnotic pace, cinematic motion\",\n negativePrompt: \"warping, morphing artifacts, flickering, jitter, stutter, abrupt jump cut, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/before-after\",\n name: \"Before / After Reveal\",\n description: \"Wipe between two states.\",\n group: \"Product & Ads\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"before and after reveal of {subject || a freshly renovated living room}, a smooth wipe sweeping across the frame to transition cleanly from the 'before' state to the polished 'after' state, locked steady framing with crisp focus and matched composition on both sides, even flattering lighting, one continuous fluid wipe-reveal at a satisfying, deliberate pace, the subject staying crisp and undistorted through the transition, cinematic motion\",\n negativePrompt: \"distorted product, melting edges, warped logo, deformed packaging, misaligned wipe, double exposure, ghosting, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/kinetic-typography\",\n name: \"Kinetic Typography\",\n description: \"Words animate in with rhythm.\",\n group: \"Motion Graphics & Logo\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt: \"kinetic typography animation of the words '{TEXT}', the words flying and snapping into place in time with a driving rhythm, words scaling and sliding through layered 3D depth with a virtual camera weaving between them, centered dynamic composition on a clean background with soft shadows, punchy motivated light, energetic beat-synced pacing with confident accents, the words staying legible, correctly-spelled and crisp with sharp typography, premium motion-graphics polish, cinematic motion\",\n negativePrompt: \"misspelled text, garbled letters, jumbled type, gibberish characters, warping, morphing, flickering, jitter, stutter, low quality, blurry, artifacts, watermark, distorted text, deformed letters\",\n },\n },\n {\n id: \"generate-video/fashion-walk\",\n name: \"Fashion Walk\",\n description: \"Runway stride, fabric in motion.\",\n group: \"Social & Reels\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"vertical fashion runway walk, {model || a striking high-fashion model in a flowing couture gown} striding confidently toward the camera with a poised runway strut, slow tracking pull-back on a smooth gimbal, vertical full-body framing with an editorial wide-aperture look and shallow depth of field, dramatic editorial lighting with a crisp rim, fabric billowing and rippling in motion at a steady, commanding catwalk pace, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, stutter, distorted anatomy, deformed face, extra limbs, mangled fabric, low quality, blurry, artifacts, watermark, text, letterboxing, horizontal bars\",\n },\n },\n {\n id: \"generate-video/weather-atmosphere\",\n name: \"Weather Atmosphere\",\n description: \"Rain / snow / fog rolling in.\",\n group: \"B-Roll & Nature\",\n data: {\n provider: \"runway-kie\",\n aspectRatio: \"16:9\",\n duration: 5,\n prompt: \"atmospheric weather rolling into {scene || a quiet forest clearing at dusk}: {weather || e.g. drifting fog, soft rain, or falling snow} sweeping across the frame, slow gentle camera drift on a locked head, wide deep-focus framing, moody motivated light filtering through the atmosphere with rich depth and haze, calm and immersive movement at an unhurried, brooding pace, serene cinematic b-roll, cinematic motion\",\n negativePrompt: \"warping, morphing, flickering, jitter, camera shake, stutter, strobing, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Viral & Effects (transformation / POV effects — best with an input image) ──\n {\n id: \"generate-video/frozen-in-ice\",\n name: \"Frozen in Ice\",\n description: \"Subject freezes into solid ice.\",\n group: \"Viral & Effects\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt: \"{subject || a standing person} slowly freezes into solid ice — frost spreads across the skin, crystals form, then a final shimmer as the figure becomes a glassy ice sculpture; cold blue light, drifting frost, cinematic\",\n negativePrompt: \"identity change, distorted face, deformed features, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/superhero-transformation\",\n name: \"Superhero Transformation\",\n description: \"Ordinary subject → superhero reveal.\",\n group: \"Viral & Effects\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"{subject || an ordinary person} transforms into a superhero — a swirl of energy spirals around them, a cape and suit form, then a confident heroic reveal; dynamic light streaks, dramatic, cinematic\",\n negativePrompt: \"identity change, distorted face, deformed features, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/elevator-doors-reveal\",\n name: \"Elevator Doors Reveal\",\n description: \"Doors open, objects cascade out.\",\n group: \"Viral & Effects\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"locked static camera: {subject || a stylish person} stands perfectly still inside a luxury mirrored elevator; the doors slowly slide open and {objects, e.g. roses, balloons, butterflies || roses, balloons, butterflies} cascade out and fill the space, soft cinematic light, the subject stays completely frozen, editorial\",\n negativePrompt: \"subject moving, identity change, distorted face, deformed features, camera movement, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/pov-skydive\",\n name: \"POV Skydive\",\n description: \"First-person freefall over a place.\",\n group: \"Viral & Effects\",\n data: {\n provider: \"kling-3.0\",\n aspectRatio: \"9:16\",\n duration: 5,\n prompt: \"first-person POV skydiving freefall over {location || a sweeping tropical coastline}, the ground far below rushing closer, clouds and wind streaking past, wide action-cam lens, exhilarating\",\n negativePrompt: \"warping, morphing, flickering, jitter, violent shake, stutter, motion sickness wobble, visible body or hands, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n {\n id: \"generate-video/underwater-pov\",\n name: \"Underwater POV\",\n description: \"First-person dive, sunbeams + bubbles.\",\n group: \"Viral & Effects\",\n data: {\n provider: \"veo3.1\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt: \"first-person POV diving underwater toward {subject || a sunken coral reef teeming with fish}, shafts of sunlight piercing the deep blue, drifting bubbles and gentle currents, serene and immersive\",\n negativePrompt: \"warping, morphing, flickering, jitter, violent shake, stutter, motion sickness wobble, visible body or hands, murky muddy water, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, text\",\n },\n },\n\n // ── Scene Recipes (board-driven Step-2 scenes; ports of the viral guide\n // workflows). Step 1 lives in generate-image (Reference Sheet boards /\n // Cast & Consistency grids); these stage beat-scripted scenes on seedance-2\n // — native audio, quoted-line lip-sync, up to 9 reference images. The\n // source guides' \"avoid…\" tail lives in negativePrompt, where the\n // reveal-timing line (\"noticing … before impact\") is load-bearing. Quoted\n // {line} placeholders are spoken, lip-synced dialogue. Cartoon recipes hold\n // the look with an in-prompt \"NOT photorealistic\" clause (the mirror of the\n // image catalog's \"NOT digital CG\" guard). ──\n {\n id: \"generate-video/viral-meteor-scene\",\n name: \"Viral Meteor Scene\",\n description: \"Step 2 · connect two Character Boards → the argument-meteor-tsunami-embrace short.\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 15,\n prompt:\n `Beat-scripted prestige drama using the attached character boards as the single source of truth for both characters' faces, hair and outfits. Wide cinematic shot of {location || a stormy rocky northern Atlantic coast} — gray sky, dark waves crashing, wind-whipped grass, salt mist, howling wind and distant ocean roar, mournful strings underneath. The two characters stand in profile facing each other in a heated argument, faces inches apart, shouting, eyes blazing. The first: \"{line 1 || You never listened to me.}\" The second: \"{line 2 || I gave you everything I had.}\" Slow handheld push-in. camera switch. The argument escalates, neither looks away. The first: \"{line 3 || Then why does it feel like nothing?}\" The second, voice cracking: \"{line 4 || Because you stopped looking at me.}\" Behind them unnoticed, a bright streak of fire tears across the sky — a massive flaming meteor with a long burning tail of white fire and black smoke, a faint screaming whistle, slamming into the far horizon with a blinding white-orange flash, a deafening sub-bass boom and an erupting mushroom fireball. Only at the shockwave do both flinch and freeze mid-shout, expressions snapping to shock; they slowly turn together toward the ocean, backs to camera. Wide pull-back as shockwave rings spread across the water and a colossal tsunami wall rises from the glowing crater, hellish red-orange glow crowning its top, apocalyptic and unstoppable, low rumble. camera switch. His arm comes around her shoulder, she leans into him, both silhouetted against the impossibly tall wave, embers drifting. The camera circles to a tight close-up as they turn to each other — anger gone, tender resigned love, faint tears; tragic string crescendo. camera switch. Tight close-up profile — a deep passionate kiss, hands clutching each other's coats, the colossal wave curling overhead in slow majestic motion, then crashing down with explosive force, sweeping figures and camera into a violent torrent of foam, spray and darkness — a thunderous water crash, the frame shakes hard and cuts to black mid-impact, sudden silence. Hyper-realistic premium feature-film look, cold desaturated slate-gray and steel-blue palette, anamorphic widescreen letterbox feel, shallow depth of field on close-ups, fine film grain, dramatic backlit storm rim lighting, IMAX-scale water and meteor VFX, clear lip-sync on every spoken line.`,\n negativePrompt:\n \"characters noticing the meteor before impact, meteor appearing too early, multiple meteors, comet flying upward, sunny weather, peaceful ending, slow fade out, cartoon style, on-screen text, subtitles, identity drift from the reference boards, distorted faces, out-of-sync lips, extra fingers, morphing limbs, shaky cam during dialogue, oversaturated colors, cheap CGI water, warping, flickering, stutter, low quality, blurry, artifacts, watermark\",\n },\n },\n {\n id: \"generate-video/cartoon-short-opening\",\n name: \"Cartoon Short · Opening\",\n description: \"Step 2 · connect Character + Location Boards → beat-scripted comedy setup (covet → notice → launch).\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"9:16\",\n duration: 6,\n prompt:\n `Hyper-cute premium 3D cartoon animation, NOT photorealistic — strong silhouettes, enormous expressive eyes, clean simplified shading, vivid family-friendly color. Use the attached character and location boards as the single source of truth for every character's design and the set. Opening scene of a comedy short in {location || a bright modern family kitchen with warm morning sunlight}: Beat 1 (0-1.5s) — {character 1 || the dad} holds {the prize || a glorious gourmet burger} reverently, eyes half-closed in bliss, leaning in for the first bite with a stylized sparkle. Beat 2 (1.5-3s) — quick pan to {character 2 || the lazy house cat}: one eye opens slowly, focuses on the prize, narrows in mild interest, closes again with a tiny comedic snore. Beat 3 (3-4.5s) — the camera pulls back to reveal {character 3 || the toddler} peeking around the counter, eyes scanning, then LOCKING onto the prize with an audible target-acquisition ping, eyes widening with the prize reflected in each pupil. Beat 4 (4.5-6s) — close-up of grim tactical determination, then a sudden launch into a high-speed crawl; {character 1 || the dad} glances down, sees them coming, eyes widening to enormous saucers in slow-motion silent horror; cut to black on a single dramatic comedic horn-sting. Snappy classic-animation pause-and-reaction comedy timing, exaggerated expressions, dramatic golden hero-light on the prize. Audio: cheerful warm morning score with light strings and piano, soft ambient room tone, a contented hum, a tactical music shift on a single violin pizzicato, the bright ping, the horn-sting at the cut.`,\n negativePrompt:\n \"photorealistic rendering, live-action look, realistic skin, identity drift from the reference boards, off-model characters, dull muted colors, scary or sinister tone, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, on-screen text, subtitles\",\n },\n },\n {\n id: \"generate-video/cartoon-short-chase\",\n name: \"Cartoon Short · Chase\",\n description: \"Step 2 · connect boards → the centerpiece chase (torch-run, vault, pet-explosion, slow-mo flight).\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"9:16\",\n duration: 8,\n prompt:\n `Hyper-cute premium 3D cartoon animation, NOT photorealistic — strong silhouettes, enormous expressive eyes, clean simplified shading, vivid family-friendly color, maximum comedic chase chaos. Use the attached character and location boards as the single source of truth for every character and the set. Chase scene through {location || an open-plan family home with warm side-window light}: Beat 1 (0-2s) — wide tracking shot: {character 1 || the dad} sprints holding {the prize || the burger} high overhead like a sacred torch; {character 2 || the toddler} pursues at impossibly fast comedic crawl speed and shoots UNDERNEATH {an obstacle || the dining table} without slowing, gaining ground. Beat 2 (2-4s) — a desperate one-handed vault over {a set piece || the sofa}, a throw pillow puffing feathers — revealing {character 3 || the sleeping cat} directly in the landing path; eyes widen — too late. Beat 3 (4-6s) — IMPACT: the startled {character 3 || cat} EXPLODES upward in pure panic — legs splayed, fur puffed to triple size, a silent screaming yowl, comedic exclamation marks — then scrambles onto the runner's head and face; the runner goes cross-eyed, the prize wobbles, feathers float in slow motion. Beat 4 (6-8s) — a slip into a slow-motion fall, the prize flying from his hand in a stylized spinning arc trailing golden light; all three faces track it as it lands perfectly in {character 2 || the toddler}'s reaching starfish-hands — the grim tactical face FINALLY breaking into pure joy. Cut to black on a comedic timing-pause. Classic cartoon sight-gag timing — hold the animal-explosion beat long enough to land. Audio: urgent building chase score with strings and percussion, panicked grunts, rapid pitter-patter, a dramatic vault swoosh, a pillow-puff, one comically loud yowl, a single shimmering chime as the prize flies in slow motion, a soft landing thump.`,\n negativePrompt:\n \"photorealistic rendering, live-action look, realistic skin, identity drift from the reference boards, off-model characters, missing chase beats, characters teleporting, real violence or injury, dull muted colors, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, on-screen text, subtitles\",\n },\n },\n {\n id: \"generate-video/cartoon-short-resolution\",\n name: \"Cartoon Short · Resolution\",\n description: \"Step 2 · connect boards → the heartwarming share-the-prize finale with FIN card.\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"9:16\",\n duration: 6,\n prompt:\n `Hyper-cute premium 3D cartoon animation with warm soft lighting, NOT photorealistic — the heartwarming finale of a comedy short, vivid family-friendly color, slower tender timing. Use the attached character and location boards as the single source of truth for every character and the set. Resolution scene in {location || the living-room floor in warm golden morning light, a few feathers still drifting down}: Beat 1 (0-2s) — wide warm establishing shot: the three characters sit in a perfect triangle around {the prize || the burger}, now divided into three fair portions on a plate between them; {character 2 || the toddler} is mid-bite with comically bulging cheeks, {character 3 || the cat} regards its own portion with regal approval. Beat 2 (2-4s) — slow push-in on {character 1 || the dad}: he looks at one happy face, then the other, and a slow tender realization-smile spreads — it was never about the prize; he picks a stray crumb from his chin and offers it to {character 3 || the cat}, who accepts with a regal head-tilt. Beat 3 (4-6s) — final warm hero shot: all three eat together in synchronized contentment — a blissful closed-eye first bite, another enormous cheek-stuffing bite, a delicate paw-assisted nibble — feathers drifting in slow motion, the warm light brightening around them like a hug; final hold, then a tiny stylized FIN title card in warm gold lettering. Gentle classic-animation resolution timing; the triangle composition is the visual key; every character equally important in the final frame. Audio: warm gentle piano-and-strings score, three distinct contented eating sounds, a happy baby-sigh, a soft purring trill, a warm chuckle, a final musical sting on the FIN card.`,\n negativePrompt:\n \"photorealistic rendering, live-action look, realistic skin, identity drift from the reference boards, off-model characters, frantic pacing, sad or bitter tone, dull muted colors, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, subtitles, misspelled FIN card text\",\n },\n },\n {\n id: \"generate-video/two-character-dialogue\",\n name: \"Two-Character Dialogue\",\n description: \"Step 2 · connect Character Boards → a charged two-line exchange with lip-sync and a held beat.\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 10,\n prompt:\n `Board-driven dialogue scene using the attached character boards as the single source of truth for every speaker's face, hair and outfit. Two characters in {location || a dim late-night kitchen with one practical light on} play a charged exchange: the framing opens on a balanced two-shot with a slow handheld push-in as tension builds. The first speaks: \"{line 1 || I wasn't going to tell you like this.}\" camera switch to a clean single on the second, who answers: \"{line 2 || Then you should have said nothing at all.}\" camera switch back to a tighter two-shot for the silent beat after — held eye contact, a breath, an unresolved ending on held tension. Naturalistic performances with subtle facial micro-expressions, clear lip-sync on every spoken line, motivated practical lighting with soft falloff, shallow depth of field, fine film grain, restrained cinematic color grade, intimate drama blocking with believable eye-lines. Audio: quiet room tone, a low sparse score entering under the second line, the spoken dialogue clean and intelligible.`,\n negativePrompt:\n \"out-of-sync lips, garbled speech, identity drift from the reference boards, swapped speakers, distorted faces, cartoon style, on-screen text, subtitles, jump cuts during lines, shaky cam during dialogue, warping, morphing, flickering, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark\",\n },\n },\n {\n id: \"generate-video/disaster-reveal\",\n name: \"Disaster Reveal\",\n description: \"Step 2 · connect boards → unnoticed background catastrophe, shockwave, the slow turn.\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 10,\n prompt:\n `Board-driven spectacle scene using the attached character boards (and location board if attached) as the single source of truth. Characters in the foreground of {location || a windswept clifftop overlook} are absorbed in {foreground action || an animated argument}, NOT noticing the background. Behind them, {the event || a colossal meteor streaks down and detonates on the horizon} — staged in three beats: first a subtle distant cue only the audience catches; then the full event erupting with a blinding flash and a rolling shockwave; only when the shockwave arrives do the characters flinch, freeze, and slowly turn together toward it, backs to camera, dwarfed by the aftermath as {the aftermath || a glowing dust wall climbs the sky}. Wide cinematic staging with deep layered depth, the characters small against the spectacle, dramatic scale contrast, motivated environmental lighting that shifts when the event hits, fine film grain, premium feature-film VFX look. Audio: ambient location sound, a faint early whistle or rumble the characters miss, a deafening impact with sub-bass, then stunned near-silence under wind.`,\n negativePrompt:\n \"characters noticing the event before the shockwave, event happening too early, characters reacting instantly, multiple simultaneous events, cartoon style, identity drift from the reference boards, distorted faces, on-screen text, subtitles, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark, cheap CGI\",\n },\n },\n {\n id: \"generate-video/chase-scene\",\n name: \"Chase Scene\",\n description: \"Step 2 · connect boards → three-beat pursuit with an obstacle gag and a near-catch.\",\n group: \"Scene Recipes\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n prompt:\n `Board-driven chase scene using the attached character boards as the single source of truth for every character. {pursued || A breathless courier clutching a satchel} flees through {location || a crowded night market}, pursued by {pursuer || two relentless figures in dark coats}. Three-beat choreography: Beat 1 — a fast tracking shot weaving with the pursued through obstacles, the pursuers gaining. Beat 2 — an obstacle beat at {set piece || a fruit stall}: the pursued slides under it cleanly while the pursuers crash through in a burst of debris. Beat 3 — a near-catch lunge, fingertips brushing the satchel, then the pursued breaks away around a corner and the camera skids to a halt on the empty turn, the pursuers arriving a beat too late. Dynamic handheld energy with motivated whip-pans between beats, kinetic but readable action with clear screen direction, practical motivated lighting, shallow focus pulls between pursued and pursuers, fine film grain, gritty cinematic grade. Audio: a driving percussive chase score, layered footfalls and crowd reactions, the debris crash, hard breathing close to camera, the score cutting to a tense pulse on the empty corner.`,\n negativePrompt:\n \"identity drift from the reference boards, swapped pursuer and pursued, characters teleporting, unreadable screen direction, motion-sickness shake, cartoon style, on-screen text, subtitles, warping, morphing, flickering, jitter, stutter, distorted anatomy, extra limbs, low quality, blurry, artifacts, watermark\",\n },\n },\n // ── Seedance Director (official Seedance 2.0 doctrine — BytePlus prompt guide).\n // No negativePrompt by design: Seedance has no native negative param, so the\n // fallback would append \"Avoid: …\" to the prompt — constraints live in-prompt\n // instead. Audio is cued with the official symbols: (music), <sfx>, \"dialogue\".\n {\n id: \"generate-video/seedance-calm-scene\",\n name: \"Calm Scene Close-Up\",\n description: \"Hyper-real quiet moment with layered ambient audio.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"Extreme close-up of {subject || a young woman in a thick knitted wool sweater holding a steaming ceramic mug}, 85mm portrait lens, fixed camera with a slow imperceptible push-in, shallow depth of field. {environment || A dark wooden coffee shop interior at golden hour}, soft window light mixed with cool side light, subtle volumetric dust in the air. She slowly lifts the mug, eyes softening, the corners of her mouth rising faintly. Hyper-realistic skin and fabric texture, film grain, cinematic color grading. (soft muffled jazz piano playing far away)<steady rain tapping on the window glass, slow gentle breathing> HD, rich details, cinematic texture, natural colors, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-multi-shot-story\",\n name: \"Multi-Shot Mini Story\",\n description: \"Three-shot storyboard with dialogue and per-shot audio.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 12,\n generateAudio: true,\n prompt:\n \"{subject || A young courier} in {environment || a rainy neon-lit city street at night}. Shot 1: wide establishing shot, slow push-in; the courier weaves through the crowd, shoulders hunched against the rain. <city traffic, rain on umbrellas> Shot 2: medium tracking shot from the side; they stop under a doorway, check a small parcel, slightly lower their head. (low tense synth pulse building) Shot 3: close-up; they look up, the corners of the mouth rising into a relieved smile, and say \\\"It's finally here\\\". The camera slowly pulls back and freezes. Warm-against-cold color contrast, cinematic documentary style. HD, rich details, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-continuous-take\",\n name: \"One Continuous Take\",\n description: \"Single unbroken FPV shot along a chronological route.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 10,\n generateAudio: true,\n prompt:\n \"ONE CONTINUOUS UNINTERRUPTED TAKE, single unbroken shot, no cuts. FPV camera flying smoothly: it starts {route_start || diving from a glass rooftop}, glides {route_mid || through an open window into a sunlit empty office where loose papers swirl in the draft}, and exits {route_end || through the far doorway into a dark stairwell}. The environment unfolds as one chronological route; dynamic lighting shifts from bright exterior sun to cold interior shadow; one fluid camera path at steady speed. <howling wind, papers rustling, a deep echo as the space closes in> Cinematic motion, photorealistic render. HD, rich details, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-action-beat\",\n name: \"Action Beat (Chase)\",\n description: \"Two-shot parkour beat — body-specific action, one move per shot.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"{subject || A parkour runner in a worn gray hoodie} sprints down {environment || a narrow brick alley at dusk}. Shot 1: low tracking shot from behind; he pushes hard off the ground and vaults a low barrier, arms swinging with momentum. Shot 2: handheld side shot with motion blur; he lands, knees bending to absorb the impact, and keeps running without breaking stride. <pounding footsteps, sharp breathing, fabric rustling>(fast percussive beat)High-contrast dusk light, gritty cinematic style. HD, rich details, stable picture, accurate anatomy, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-food-macro\",\n name: \"Food Macro Commercial\",\n description: \"Sizzling macro food shot with foley-rich native audio.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"Extreme macro shot of {dish || a gourmet smash burger on a charred rustic wooden board}. The camera glides slowly across the surface and tilts up toward the top. {action || A thick strand of glossy melted cheddar slowly falls over the hot patty}, dense steam rising, glistening highlights on the juicy surface. Harsh warm backlight to catch the steam, soft fill light, brutal shallow depth of field. <loud crisp sizzling, soft bubbling, one heavy juicy drip> Commercial food styling, photorealistic textures. HD, rich macro details, cinematic texture, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-film-noir\",\n name: \"Film Noir Scene\",\n description: \"Chiaroscuro single-source lighting, oppressive mood.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"{subject || A detective in a long trench coat} stands in {environment || a dead-end alley at midnight}. Extreme low-key chiaroscuro lighting: a single flickering tungsten street lamp directly above carves a harsh cone of light, the rest of the frame sinks into deep black shadow. Fixed camera, slow imperceptible push-in. His face stays half-hidden under the hat brim; he slowly raises his head into the light. Film noir, heavy film grain, deep blacks, moody oppressive atmosphere. <hissing wind, the low broken electrical hum of the lamp, distant thunder>(sparse lonely saxophone, very quiet)HD, cinematic contrast, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-asmr-foley\",\n name: \"ASMR Foley Close-Up\",\n description: \"First-person trigger sounds, no music — pure foley.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"9:16\",\n duration: 10,\n generateAudio: true,\n prompt:\n \"Immersive first-person hand ASMR video. Close-up shot under warm, soft lighting, fixed camera. A pair of slender hands gently triggers {objects || frosted glass, plush fabric, an acrylic board, bubble wrap and a wooden comb} in sequence: light scratching, slow rubbing, gentle tapping, soft pinching. Finger movements are slow, gentle and continuous. <pure natural trigger sounds only: scratching, rubbing, tapping, popping> No background music. Relaxing, healing visual atmosphere. HD, rich details, natural colors, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-silhouette-crowd\",\n name: \"Epic Silhouette Crowd\",\n description: \"Backlit crowd at scale — silhouettes hide face complexity.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"{crowd || A massive army} marching over {terrain || a hill ridge} at sunset, backlit by a blazing low sun so the crowd reads as dark epic silhouettes against the burning orange sky. 24mm wide-angle establishing shot, slow lateral pan, waist-high dust haze drifting through the ranks. One {foreground_figure || banner-bearer} in the near foreground in sharp focus, the masses soft behind. (slow war drums building)<rhythmic marching feet, wind sweeping over the ridge> Epic cinematic scale, volumetric light. HD, rich details, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-speed-ramp-duel\",\n name: \"Speed-Ramp Duel\",\n description: \"Wuxia clash with ultra-slow-motion ramp (official showcase).\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 10,\n generateAudio: true,\n prompt:\n \"A wuxia duel in {environment || a rain-soaked bamboo forest}. Shot 1: the camera slowly pushes in between {fighter_a || a white-clad swordsman} and {fighter_b || a straw-caped blademaster}, focus shifting between falling raindrops and sword hilts; the air is oppressive and only rain is heard. <heavy rain, a low rumble of thunder> Shot 2: both charge at once; a fast side tracking shot catches mud splashing under their steps. At the exact moment the weapons clash, the footage switches to ultra slow motion, showing ring-shaped shockwaves of rainwater blasted away by the blades, then normal speed resumes as they land back-to-back. (one sharp orchestral hit on the clash, then silence)Cinematic wuxia style, high contrast. HD, rich details, stable picture, accurate anatomy, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-vertical-dance-reel\",\n name: \"Vertical Dance Reel\",\n description: \"9:16 music-driven dance edit with whip-pan energy.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2-fast\",\n aspectRatio: \"9:16\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"Vertical reel of {subject || a street dancer in a neon-lit underpass}. Shot 1: full-body fixed low-angle shot; she hits sharp isolations, arms snapping in time with the beat. Shot 2: quick whip pan into a closer medium shot; footwork detail, sneakers splashing a shallow neon puddle. Shot 3: high-angle overhead shot for the final frozen pose. Movement speed and cut rhythm follow the music. (aggressive bass-heavy phonk beat driving the edit)<sneaker squeaks, water splashes> Neon magenta and cyan rim light, cinematic motion. HD, rich details, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n {\n id: \"generate-video/seedance-creature-feature\",\n name: \"Creature Feature\",\n description: \"Mythic creature anchored to real-animal anatomy.\",\n group: \"Seedance Director\",\n data: {\n provider: \"seedance-2\",\n aspectRatio: \"16:9\",\n duration: 8,\n generateAudio: true,\n prompt:\n \"{creature || A monstrous yeti with the physique and bone structure of a giant silverback gorilla}, {texture || thick matted white fur with snow crusted on the shoulders}, charges forward and smashes both fists into the ground. Low-angle ground shot looking up to emphasize its scale, heavy camera shake on impact, snow and debris bursting toward the lens. Overcast mountain light, volumetric breath mist around its muzzle. <deep guttural roar, the crunch of impact, debris scattering>(low ominous brass drone)Biologically accurate anatomy, epic cinematic scale. HD, sharp micro-details, stable picture, keep it subtitle-free, do not generate a watermark.\",\n },\n },\n // ── Video Editing ─────────────────────────────────────────────────────────\n // Seedance 2.5 EDITS a wired reference clip when the prompt reads as an edit\n // instruction. Edit mode takes the source clip's own ratio and length, so the\n // preset ships the exact shape the provider requires — Adaptive + Auto\n // (duration -1) — and the run goes through on the first submit. The user's\n // own sentence is the whole prompt: the preset only supplies the pre & post\n // text, with the clip bound as {video:1} (wire it into Video Refs).\n {\n id: \"generate-video/edit-video\",\n name: \"Edit Video\",\n description: \"Change a wired clip by instruction — keeps its length, ratio and everything you don't mention.\",\n group: \"Video Editing\",\n data: {\n provider: \"seedance-2-5\",\n aspectRatio: \"adaptive\",\n duration: -1,\n generateAudio: true,\n promptPrefix: \"edit {video:1} as follows:\\n\",\n promptSuffix:\n \"Keep everything else in the clip unchanged: the same people, motion, framing and timing. Keep it subtitle-free, do not generate a watermark.\",\n },\n },\n\n // ── UGC & Creator (everyday talking-to-camera clips) ──────────────────────\n {\n id: \"generate-video/ugc-talking-head\",\n name: \"UGC Talking Head\",\n description: \"Talks to the viewer at home — type the line to be spoken; write numbers as words.\",\n group: \"UGC & Creator\",\n data: { ...UGC_VIDEO, prompt: ugcPrompt(`${TALKING_AT_HOME} hands move naturally while talking and hold nothing.`, ugcSpeech(\"I cut my weekly reporting from three hours to twenty minutes.\"), UGC_PAUSE) },\n },\n {\n id: \"generate-video/ugc-product-closer\",\n name: \"UGC Product Closer\",\n description: \"Holds your product up while talking — wire a face photo and a product photo; type the line, numbers as words.\",\n group: \"UGC & Creator\",\n data: { ...UGC_VIDEO, prompt: ugcPrompt(`${TALKING_AT_HOME} hands move naturally while talking and hold nothing until the first word.`, \"In the pause before the first word, they glance down for a moment as one hand reaches for the product; their eyes are back on the viewer as they say the first word and the hand lifts {image:2:product} into view and holds it up beside their face, turned to the viewer as it is in its photo, while they talk; the other hand keeps moving naturally.\", ugcSpeech(\"Honestly, this is the one I keep coming back to.\"), UGC_PAUSE, \"After the last word, they keep it up beside their face and tilt it slowly toward the viewer.\", \"Then they lower it with a small smile.\") },\n },\n {\n id: \"generate-video/handheld-unboxing\",\n name: \"Handheld Unboxing\",\n description: \"Opens a box with their own hands and reveals your product — wire a face photo and a product photo.\",\n group: \"UGC & Creator\",\n data: { ...UGC_VIDEO, prompt: ugcPrompt(\n \"Close on a table at home, seen the whole time through the eyes of {image:1:person} as they look down at it.\",\n \"From the first moment their own two hands are on the lid of a plain box, both forearms coming up from the bottom of the frame.\",\n \"One adult's left and right hand, no one else's; only their hands and forearms are seen.\",\n \"They open the box at once and lift out {image:2:product} with both hands, clear of the box by the middle of the clip.\",\n \"Until the end they hold it up in front of them, the whole of it in frame, tilting it slowly in the light with the same side toward them.\",\n \"Daylight, deep focus from their hands to the background, plain colour, the framing a little crooked, a faint natural sway.\",\n ) },\n },\n {\n id: \"generate-video/get-ready-with-me\",\n name: \"Get Ready With Me\",\n description: \"Gets ready at a mirror while chatting — type the line, numbers as words.\",\n group: \"UGC & Creator\",\n data: { ...UGC_VIDEO, prompt: ugcPrompt(\"{image:1:person} at a bathroom mirror applies a little makeup while chatting to the viewer, everyday light, deep focus, plain colour.\", ugcSpeech(\"Two minutes and I'm ready to go.\"), UGC_PAUSE) },\n },\n {\n id: \"generate-video/street-qa\",\n name: \"Street-Style Q&A\",\n description: \"A staged street-interview look — cast it yourself; type a short answer, numbers as words.\",\n group: \"UGC & Creator\",\n data: { ...UGC_SHORT_VIDEO, prompt: ugcPrompt(\"A staged street-interview look: {image:1:person} stands on a sidewalk answering an interviewer who stays out of frame, beside the viewer; only the interviewer's hand is seen, holding a plain microphone out toward them from a lower corner of the frame, passers-by soft in the background.\", \"Their eyes stay on the interviewer the whole time, off to the side the microphone comes from.\", \"The answer starts at once, with no wait before the first word.\", ugcSpeech(\"I'd say about twenty minutes a day, tops.\"), \"After the last word, a small laugh and a shrug, eyes still on the interviewer.\") },\n },\n {\n id: \"generate-video/reaction-shot\",\n name: \"Reaction Shot\",\n description: \"A quick reaction to something out of frame.\",\n group: \"UGC & Creator\",\n data: { ...UGC_SHORT_VIDEO, prompt: ugcPrompt(\"{image:1:person} sits on a couch at home, a cushion and a lamp behind them, looking off to one side at something just out of frame; at eye level, the framing a little crooked, deep focus, plain colour, a faint natural sway.\", \"Almost at once, what they see catches them by surprise: their eyes go wide, a hand flies to their mouth and they break into a laugh, their shoulders shaking.\", \"Still laughing, they glance briefly at the viewer, then look back off to the side, shaking their head.\", \"A short exclamation at most.\") },\n },\n {\n id: \"generate-video/acts-on-phone\",\n name: \"Acts on Phone, Screen Hidden\",\n description: \"Taps a phone whose screen faces away — type the line, numbers as words.\",\n group: \"UGC & Creator\",\n data: { ...UGC_VIDEO, prompt: ugcPrompt(`${TALKING_AT_HOME} hands move naturally while talking and hold nothing until the last seconds.`, ugcSpeech(\"That's the whole setup, and it took me five minutes.\"), UGC_PAUSE, \"In the last seconds the person glances down, picks up a phone and looks into its screen while typing on it for a moment, then looks back up at the viewer; the screen faces away from the camera.\") },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\nexport const GENERATE_MUSIC_PRESETS: readonly FactoryPreset[] = [\n // ── By Use-Case ──────────────────────────────────────────────────────────\n {\n id: \"generate-music/lofi-study\",\n name: \"Lo-fi Study Beat\",\n description: \"Mellow focus beat.\",\n group: \"By Use-Case\",\n data: {\n genre: \"lofi\",\n mood: \"chill, relaxed, nostalgic\",\n instrumental: true,\n duration: 30,\n prompt: \"lo-fi hip-hop study beat, mellow Rhodes piano, vinyl crackle, soft boom-bap drums, around 75 BPM\",\n },\n },\n {\n id: \"generate-music/podcast-intro\",\n name: \"Podcast Intro\",\n description: \"Short energetic opener.\",\n group: \"By Use-Case\",\n data: {\n genre: \"electronic\",\n mood: \"upbeat, confident\",\n instrumental: true,\n duration: 15,\n prompt: \"short energetic podcast intro, modern and catchy synth hook, clean punchy beat\",\n },\n },\n {\n id: \"generate-music/cinematic-trailer\",\n name: \"Cinematic Trailer\",\n description: \"Epic orchestral build.\",\n group: \"By Use-Case\",\n data: {\n genre: \"cinematic\",\n mood: \"epic, dramatic, intense\",\n instrumental: true,\n duration: 30,\n prompt: \"epic cinematic trailer cue, full orchestra, taiko drums, brass swells, rising tension into a powerful hit\",\n },\n },\n {\n id: \"generate-music/corporate-upbeat\",\n name: \"Corporate Upbeat\",\n description: \"Bright, motivational bed.\",\n group: \"By Use-Case\",\n data: {\n genre: \"pop\",\n mood: \"uplifting, optimistic, motivational\",\n instrumental: true,\n duration: 30,\n prompt: \"upbeat corporate background music, bright piano, claps, positive and clean, around 120 BPM\",\n },\n },\n {\n id: \"generate-music/vlog-background\",\n name: \"Vlog Background\",\n description: \"Feel-good, unobtrusive.\",\n group: \"By Use-Case\",\n data: {\n genre: \"pop\",\n mood: \"happy, light, breezy\",\n instrumental: true,\n duration: 30,\n prompt: \"light feel-good vlog background, acoustic guitar, claps, warm and unobtrusive\",\n },\n },\n {\n id: \"generate-music/ambient-loop\",\n name: \"Ambient Loop\",\n description: \"Calm evolving soundscape.\",\n group: \"By Use-Case\",\n data: {\n genre: \"ambient-genre\",\n mood: \"calm, peaceful, serene\",\n instrumental: true,\n duration: 30,\n prompt: \"ambient soundscape, soft evolving synth pads, gentle textures, meditative and seamless\",\n },\n },\n {\n id: \"generate-music/edm-drop\",\n name: \"EDM Drop\",\n description: \"Festival build and drop.\",\n group: \"By Use-Case\",\n data: {\n genre: \"electronic\",\n mood: \"euphoric, energetic\",\n instrumental: true,\n duration: 30,\n prompt: \"festival EDM, big synth leads, sidechain bass, build-up and a powerful drop, around 128 BPM\",\n },\n },\n {\n id: \"generate-music/game-loop\",\n name: \"Game Loop\",\n description: \"Catchy adventurous loop.\",\n group: \"By Use-Case\",\n data: {\n genre: \"video-game\",\n mood: \"playful, adventurous\",\n instrumental: true,\n duration: 30,\n prompt: \"looping video game background music, chiptune-inspired, catchy melody, energetic\",\n },\n },\n\n // ── By Mood / Score (instrumental scoring beds) ──────────────────────────\n {\n id: \"generate-music/score-uplifting\",\n name: \"Uplifting\",\n description: \"Hopeful, building score.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"cinematic\",\n mood: \"uplifting, hopeful, inspiring\",\n instrumental: true,\n duration: 30,\n prompt: \"uplifting inspirational orchestral score, building piano and strings, hopeful crescendo\",\n },\n },\n {\n id: \"generate-music/score-emotional\",\n name: \"Emotional\",\n description: \"Tender, moving piano.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"cinematic\",\n mood: \"emotional, melancholic, tender\",\n instrumental: true,\n duration: 30,\n prompt: \"emotional piano score, soft strings, intimate and moving, slow tempo\",\n },\n },\n {\n id: \"generate-music/score-tense\",\n name: \"Tense / Suspense\",\n description: \"Pulsing underscore.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"cinematic\",\n mood: \"tense, suspenseful, dark\",\n instrumental: true,\n duration: 30,\n prompt: \"suspenseful underscore, pulsing low strings, ticking tension, ominous and building\",\n },\n },\n {\n id: \"generate-music/score-epic\",\n name: \"Epic / Heroic\",\n description: \"Triumphant, powerful.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"cinematic\",\n mood: \"epic, heroic, powerful\",\n instrumental: true,\n duration: 30,\n prompt: \"epic heroic orchestral score, soaring brass, pounding drums, triumphant\",\n },\n },\n {\n id: \"generate-music/score-happy\",\n name: \"Happy / Playful\",\n description: \"Cheerful and light.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"pop\",\n mood: \"happy, playful, quirky\",\n instrumental: true,\n duration: 30,\n prompt: \"happy playful tune, ukulele, whistling, claps, cheerful and bouncy\",\n },\n },\n {\n id: \"generate-music/score-dark\",\n name: \"Dark / Brooding\",\n description: \"Ominous atmosphere.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"electronic\",\n mood: \"dark, brooding, ominous\",\n instrumental: true,\n duration: 30,\n prompt: \"dark brooding atmosphere, deep drones, distant percussion, cinematic dread\",\n },\n },\n {\n id: \"generate-music/score-romantic\",\n name: \"Romantic\",\n description: \"Warm, heartfelt.\",\n group: \"By Mood / Score\",\n data: {\n genre: \"classical\",\n mood: \"romantic, warm, tender\",\n instrumental: true,\n duration: 30,\n prompt: \"romantic score, warm strings and piano, gentle and heartfelt\",\n },\n },\n\n // ── By Genre (starting points) ───────────────────────────────────────────\n {\n id: \"generate-music/ambient-cinematic\",\n name: \"Ambient Cinematic\",\n description: \"Atmospheric instrumental bed.\",\n group: \"By Genre\",\n data: {\n genre: \"cinematic\",\n mood: \"atmospheric\",\n instrumental: true,\n duration: 30,\n prompt: \"atmospheric cinematic ambient bed, evolving pads, subtle swells\",\n },\n },\n {\n id: \"generate-music/genre-lofi\",\n name: \"Lo-fi Hip-Hop\",\n description: \"Laid-back jazzy beat.\",\n group: \"By Genre\",\n data: {\n genre: \"lofi\",\n mood: \"chill, mellow\",\n instrumental: true,\n duration: 30,\n prompt: \"lo-fi hip-hop, jazzy chords, vinyl warmth, laid-back groove\",\n },\n },\n {\n id: \"generate-music/genre-edm\",\n name: \"EDM / House\",\n description: \"Club-energy four-on-the-floor.\",\n group: \"By Genre\",\n data: {\n genre: \"electronic\",\n mood: \"energetic, euphoric\",\n instrumental: true,\n duration: 30,\n prompt: \"house / EDM, four-on-the-floor beat, catchy plucky synths, club energy\",\n },\n },\n {\n id: \"generate-music/genre-rock\",\n name: \"Rock\",\n description: \"Driving electric guitars.\",\n group: \"By Genre\",\n data: {\n genre: \"rock\",\n mood: \"energetic, driving\",\n instrumental: true,\n duration: 30,\n prompt: \"energetic rock instrumental, distorted electric guitars, driving drums, powerful\",\n },\n },\n {\n id: \"generate-music/genre-jazz\",\n name: \"Smooth Jazz\",\n description: \"Late-night sax and brushes.\",\n group: \"By Genre\",\n data: {\n genre: \"jazz\",\n mood: \"smooth, relaxed, sophisticated\",\n instrumental: true,\n duration: 30,\n prompt: \"smooth jazz, warm saxophone, brushed drums, walking bass, late-night mood\",\n },\n },\n {\n id: \"generate-music/genre-orchestral\",\n name: \"Orchestral\",\n description: \"Grand cinematic ensemble.\",\n group: \"By Genre\",\n data: {\n genre: \"classical\",\n mood: \"grand, cinematic\",\n instrumental: true,\n duration: 30,\n prompt: \"full orchestral piece, sweeping strings, brass and woodwinds, dramatic and rich\",\n },\n },\n {\n id: \"generate-music/genre-synthwave\",\n name: \"Synthwave / Retro\",\n description: \"80s neon nostalgia.\",\n group: \"By Genre\",\n data: {\n genre: \"electronic\",\n mood: \"nostalgic, retro, cool\",\n instrumental: true,\n duration: 30,\n prompt: \"80s synthwave, retro analog synths, pulsing bass, neon nostalgia, around 110 BPM\",\n },\n },\n {\n id: \"generate-music/genre-funk\",\n name: \"Funk / Soul\",\n description: \"Groovy, danceable.\",\n group: \"By Genre\",\n data: {\n genre: \"funk\",\n mood: \"groovy, fun\",\n instrumental: true,\n duration: 30,\n prompt: \"funky groove, slap bass, wah guitar, tight horns, danceable\",\n },\n },\n // ── More By Use-Case ─────────────────────────────────────────────────────\n {\n id: \"generate-music/trailer-riser\",\n name: \"Trailer Riser / Braam\",\n description: \"Pure rising tension hit.\",\n group: \"By Use-Case\",\n data: { genre: \"cinematic\", mood: \"tense, building\", instrumental: true, duration: 15, prompt: \"cinematic trailer riser and braam hit, rising tension whoosh into a deep impact, no melody\" },\n },\n {\n id: \"generate-music/calm-corporate\",\n name: \"Calm Corporate / Tech\",\n description: \"Soft, professional bed.\",\n group: \"By Use-Case\",\n data: { genre: \"electronic\", mood: \"calm, professional\", instrumental: true, duration: 30, prompt: \"calm corporate tech bed, soft synth pads, gentle pulse, steady and unobtrusive\" },\n },\n {\n id: \"generate-music/holiday\",\n name: \"Holiday / Festive\",\n description: \"Warm seasonal cheer.\",\n group: \"By Use-Case\",\n data: { genre: \"holiday\", mood: \"festive, warm, cheerful\", instrumental: true, duration: 30, prompt: \"festive holiday music, sleigh bells, warm orchestration, cheerful and cozy\" },\n },\n {\n id: \"generate-music/kids\",\n name: \"Kids / Children's\",\n description: \"Playful and simple.\",\n group: \"By Use-Case\",\n data: { genre: \"children\", mood: \"playful, happy\", instrumental: true, duration: 30, prompt: \"playful children's music, simple cheerful melody, xylophone and ukulele, bouncy and friendly\" },\n },\n {\n id: \"generate-music/meditation-spa\",\n name: \"Meditation / Spa\",\n description: \"Healing singing bowls.\",\n group: \"By Use-Case\",\n data: { genre: \"ambient-genre\", mood: \"serene, healing\", instrumental: true, duration: 30, prompt: \"meditation and spa music, singing bowls, soft drones, gentle and calming, very slow\" },\n },\n {\n id: \"generate-music/workout\",\n name: \"Workout / Gym\",\n description: \"High-energy motivation.\",\n group: \"By Use-Case\",\n data: { genre: \"electronic\", mood: \"energetic, motivational\", instrumental: true, duration: 30, prompt: \"high-energy workout music, driving beat, motivational synths, around 140 BPM\" },\n },\n // ── More By Genre ────────────────────────────────────────────────────────\n {\n id: \"generate-music/trap\",\n name: \"Trap Beat\",\n description: \"Booming 808s, dark.\",\n group: \"By Genre\",\n data: { genre: \"hip-hop\", mood: \"dark, hard\", instrumental: true, duration: 30, prompt: \"trap beat, booming 808s, crisp rapid hi-hats, dark and moody\" },\n },\n {\n id: \"generate-music/dnb\",\n name: \"Drum & Bass\",\n description: \"Fast breakbeats, deep bass.\",\n group: \"By Genre\",\n data: { genre: \"electronic\", mood: \"fast, energetic\", instrumental: true, duration: 30, prompt: \"drum and bass, fast breakbeats, deep rolling bassline, energetic, around 174 BPM\" },\n },\n {\n id: \"generate-music/afrobeats\",\n name: \"Afrobeats\",\n description: \"Warm syncopated groove.\",\n group: \"By Genre\",\n data: { genre: \"afrobeats\", mood: \"groovy, warm\", instrumental: true, duration: 30, prompt: \"afrobeats, syncopated percussion, warm bass groove, bright melodies, danceable\" },\n },\n {\n id: \"generate-music/country\",\n name: \"Country / Americana\",\n description: \"Acoustic, heartfelt.\",\n group: \"By Genre\",\n data: { genre: \"country\", mood: \"warm, heartfelt\", instrumental: true, duration: 30, prompt: \"country americana, acoustic and slide guitar, warm storytelling feel\" },\n },\n {\n id: \"generate-music/phonk\",\n name: \"Phonk\",\n description: \"Dark drift-phonk for reels.\",\n group: \"By Genre\",\n data: { genre: \"hip-hop\", mood: \"dark, aggressive\", instrumental: true, duration: 30, prompt: \"drift phonk, distorted 808 cowbell, dark menacing beat, lo-fi grit\" },\n },\n {\n id: \"generate-music/reggae\",\n name: \"Reggae / Dub\",\n description: \"Laid-back island groove.\",\n group: \"By Genre\",\n data: { genre: \"reggae\", mood: \"laid-back, sunny\", instrumental: true, duration: 30, prompt: \"reggae dub, off-beat skank guitar, deep dub bassline, relaxed island groove\" },\n },\n]\n\nexport const SUNO_GENERATE_PRESETS: readonly FactoryPreset[] = [\n // ── By Use-Case ──────────────────────────────────────────────────────────\n {\n id: \"suno-generate/lofi-study\",\n name: \"Lo-fi Study\",\n description: \"Mellow focus beat.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"lo-fi hip-hop, chill and mellow, jazzy Rhodes chords, vinyl crackle, soft boom-bap drums, Andante 80 BPM, instrumental\",\n },\n },\n {\n id: \"suno-generate/podcast-intro\",\n name: \"Podcast Intro\",\n description: \"Short confident opener.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"modern podcast intro, upbeat and confident, catchy synth hook, punchy beat, Allegro, instrumental\",\n },\n },\n {\n id: \"suno-generate/cinematic-trailer\",\n name: \"Cinematic Trailer\",\n description: \"Epic orchestral build.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"epic cinematic trailer, dramatic and intense, full orchestra, taiko drums, brass swells, crescendo into a powerful hit, instrumental\",\n },\n },\n {\n id: \"suno-generate/corporate-upbeat\",\n name: \"Corporate Upbeat\",\n description: \"Bright, motivational.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"upbeat corporate, optimistic and motivational, bright piano, claps, clean electronic beat, Allegro 120 BPM, instrumental\",\n },\n },\n {\n id: \"suno-generate/vlog-background\",\n name: \"Vlog Background\",\n description: \"Feel-good acoustic bed.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"feel-good vlog background, light and breezy, acoustic guitar, claps, warm and unobtrusive, Andante, instrumental\",\n },\n },\n {\n id: \"suno-generate/ambient-loop\",\n name: \"Ambient Loop\",\n description: \"Calm meditative pads.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"ambient soundscape, calm and meditative, soft evolving synth pads, gentle textures, reverb-heavy, Adagio, instrumental\",\n },\n },\n {\n id: \"suno-generate/edm-drop\",\n name: \"EDM Drop\",\n description: \"Festival build and drop.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"festival EDM, euphoric and energetic, big supersaw leads, sidechain bass, build-up and powerful drop, Allegro 128 BPM, instrumental\",\n },\n },\n {\n id: \"suno-generate/game-chiptune\",\n name: \"Game Chiptune\",\n description: \"Playful 8-bit loop.\",\n group: \"By Use-Case\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"video game chiptune, playful and adventurous, 8-bit synths, catchy melody, energetic, instrumental\",\n },\n },\n\n // ── By Genre ─────────────────────────────────────────────────────────────\n {\n id: \"suno-generate/genre-lofi\",\n name: \"Lo-fi Hip-Hop\",\n description: \"Dusty laid-back groove.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"lo-fi hip-hop, jazzy and mellow, dusty Rhodes chords, vinyl warmth, laid-back boom-bap groove, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-house\",\n name: \"EDM / House\",\n description: \"Club-energy four-on-the-floor.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"house EDM, energetic and euphoric, four-on-the-floor beat, catchy plucky synths, club energy, Allegro 124 BPM, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-rock\",\n name: \"Rock\",\n description: \"Driving anthemic guitars.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"rock anthem, energetic and driving, distorted electric guitars, pounding drums, anthemic, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-jazz\",\n name: \"Smooth Jazz\",\n description: \"Late-night sophistication.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"smooth jazz, relaxed and sophisticated, warm saxophone, brushed drums, walking bass, late-night, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-ambient\",\n name: \"Ambient\",\n description: \"Spacious and serene.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"ambient, serene and spacious, lush synth pads, field-recording textures, slow and meditative, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-orchestral\",\n name: \"Orchestral\",\n description: \"Grand cinematic ensemble.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"epic orchestral, grand and cinematic, sweeping strings, brass, woodwinds, timpani, dramatic, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-synthwave\",\n name: \"Synthwave / Retro\",\n description: \"80s neon nostalgia.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"80s synthwave, nostalgic and cool, retro analog synths, pulsing bass, gated drums, neon, Andante 110 BPM, instrumental\",\n },\n },\n {\n id: \"suno-generate/genre-funk\",\n name: \"Funk / Soul\",\n description: \"Groovy and danceable.\",\n group: \"By Genre\",\n data: {\n model: \"V6\",\n instrumental: true,\n style: \"funk and soul, groovy and fun, slap bass, wah guitar, tight horn section, danceable, instrumental\",\n },\n },\n\n // ── Vocals & Songs (add your lyrics) ─────────────────────────────────────\n {\n id: \"suno-generate/song-pop\",\n name: \"Pop Song\",\n description: \"Catchy vocal pop — add lyrics.\",\n group: \"Vocals & Songs\",\n data: {\n model: \"V6\",\n instrumental: false,\n style: \"upbeat pop, catchy and bright, shimmering synths, four-on-the-floor, female vocals, Allegro 120 BPM, verse-chorus-verse with bridge\",\n },\n },\n {\n id: \"suno-generate/song-rap\",\n name: \"Rap / Hip-Hop\",\n description: \"Hard-hitting verses — add bars.\",\n group: \"Vocals & Songs\",\n data: {\n model: \"V6\",\n instrumental: false,\n style: \"modern hip-hop, confident, hard-hitting 808s, trap hi-hats, male rap vocals, verse-hook-verse\",\n },\n },\n {\n id: \"suno-generate/song-ballad\",\n name: \"Emotional Ballad\",\n description: \"Heartfelt vocals — add lyrics.\",\n group: \"Vocals & Songs\",\n data: {\n model: \"V6\",\n instrumental: false,\n style: \"emotional ballad, tender and heartfelt, piano and strings, soulful vocals, Adagio, verse-chorus with a big bridge\",\n },\n },\n {\n id: \"suno-generate/song-rock\",\n name: \"Rock Anthem (vocal)\",\n description: \"Soaring chorus — add lyrics.\",\n group: \"Vocals & Songs\",\n data: {\n model: \"V6\",\n instrumental: false,\n style: \"anthemic rock, powerful, driving guitars, big drums, male vocals, soaring chorus, verse-pre-chorus-chorus\",\n },\n },\n {\n id: \"suno-generate/song-acoustic\",\n name: \"Acoustic Singer-Songwriter\",\n description: \"Warm and intimate — add lyrics.\",\n group: \"Vocals & Songs\",\n data: {\n model: \"V6\",\n instrumental: false,\n style: \"acoustic singer-songwriter, warm and intimate, fingerpicked guitar, soft vocals, Andante, verse-chorus\",\n },\n },\n // ── More By Use-Case ─────────────────────────────────────────────────────\n {\n id: \"suno-generate/trailer-riser\",\n name: \"Trailer Riser / Braam\",\n description: \"Pure rising tension hit.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"cinematic trailer riser and braam, tense and building, rising whoosh into a deep brass impact, no melody, instrumental\" },\n },\n {\n id: \"suno-generate/calm-corporate\",\n name: \"Calm Corporate / Tech\",\n description: \"Soft, professional bed.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"calm corporate tech, professional and clean, soft synth pads, gentle pulse, Andante, instrumental\" },\n },\n {\n id: \"suno-generate/holiday\",\n name: \"Holiday / Festive\",\n description: \"Warm seasonal cheer.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"festive holiday music, warm and cheerful, sleigh bells, warm orchestration, cozy, instrumental\" },\n },\n {\n id: \"suno-generate/kids\",\n name: \"Kids / Children's\",\n description: \"Playful and simple.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"children's music, playful and happy, simple cheerful melody, xylophone and ukulele, bouncy, instrumental\" },\n },\n {\n id: \"suno-generate/meditation-spa\",\n name: \"Meditation / Spa\",\n description: \"Healing singing bowls.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"meditation and spa, serene and healing, singing bowls, soft drones, Adagio, reverb-heavy, instrumental\" },\n },\n {\n id: \"suno-generate/workout\",\n name: \"Workout / Gym\",\n description: \"High-energy motivation.\",\n group: \"By Use-Case\",\n data: { model: \"V6\", instrumental: true, style: \"high-energy workout, motivational and driving, pumping electronic beat, big synths, Allegro 140 BPM, instrumental\" },\n },\n // ── More By Genre ────────────────────────────────────────────────────────\n {\n id: \"suno-generate/trap\",\n name: \"Trap Beat\",\n description: \"Booming 808s, dark.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"trap beat, dark and hard, booming 808s, crisp rapid hi-hats, moody, instrumental\" },\n },\n {\n id: \"suno-generate/dnb\",\n name: \"Drum & Bass\",\n description: \"Fast breakbeats, deep bass.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"drum and bass, fast and energetic, breakbeats, deep rolling bassline, Presto 174 BPM, instrumental\" },\n },\n {\n id: \"suno-generate/afrobeats\",\n name: \"Afrobeats\",\n description: \"Warm syncopated groove.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"afrobeats, groovy and warm, syncopated percussion, warm bass, bright melodies, danceable, instrumental\" },\n },\n {\n id: \"suno-generate/country\",\n name: \"Country / Americana\",\n description: \"Acoustic, heartfelt.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"country americana, warm and heartfelt, acoustic and slide guitar, storytelling feel, instrumental\" },\n },\n {\n id: \"suno-generate/phonk\",\n name: \"Phonk\",\n description: \"Dark drift-phonk for reels.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"drift phonk, dark and aggressive, distorted 808 cowbell, menacing beat, lo-fi grit, instrumental\" },\n },\n {\n id: \"suno-generate/reggae\",\n name: \"Reggae / Dub\",\n description: \"Laid-back island groove.\",\n group: \"By Genre\",\n data: { model: \"V6\", instrumental: true, style: \"reggae dub, laid-back and sunny, off-beat skank guitar, deep dub bassline, relaxed island groove, instrumental\" },\n },\n // ── More Vocals & Songs ──────────────────────────────────────────────────\n {\n id: \"suno-generate/song-rnb\",\n name: \"R&B / Soul (vocal)\",\n description: \"Smooth soulful vocals — add lyrics.\",\n group: \"Vocals & Songs\",\n data: { model: \"V6\", instrumental: false, style: \"smooth R&B soul, sensual and warm, lush chords, soft drums, soulful vocals, Andante, verse-chorus with ad-libs\" },\n },\n {\n id: \"suno-generate/song-kpop\",\n name: \"K-Pop (vocal)\",\n description: \"Polished hook — add lyrics.\",\n group: \"Vocals & Songs\",\n data: { model: \"V6\", instrumental: false, style: \"K-pop, polished and energetic, bright synths, punchy drums, layered vocals, Allegro 120 BPM, verse-pre-chorus-chorus\" },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\nexport const TEXT_TO_SPEECH_PRESETS: readonly FactoryPreset[] = [\n // ── Narration ────────────────────────────────────────────────────────────\n {\n id: \"text-to-speech/narrator-calm\",\n name: \"Calm Narrator\",\n description: \"Even, measured narration.\",\n group: \"Narration\",\n data: { speed: 1, stability: 0.6, similarityBoost: 0.75, style: 0 },\n },\n {\n id: \"text-to-speech/audiobook\",\n name: \"Audiobook\",\n description: \"Warm, steady, slightly slower.\",\n group: \"Narration\",\n data: { speed: 0.95, stability: 0.75, similarityBoost: 0.8, style: 0.1 },\n },\n {\n id: \"text-to-speech/documentary\",\n name: \"Documentary\",\n description: \"Measured delivery with gravitas.\",\n group: \"Narration\",\n data: { speed: 0.95, stability: 0.78, similarityBoost: 0.85, style: 0.25 },\n },\n {\n id: \"text-to-speech/news-anchor\",\n name: \"News Anchor\",\n description: \"Neutral, authoritative, even pace.\",\n group: \"Narration\",\n data: { speed: 1, stability: 0.7, similarityBoost: 0.8, style: 0.2 },\n },\n {\n id: \"text-to-speech/explainer\",\n name: \"Explainer / Tutorial\",\n description: \"Clear, friendly, mid-pace.\",\n group: \"Narration\",\n data: { speed: 1, stability: 0.55, similarityBoost: 0.75, style: 0.3 },\n },\n\n // ── Advertising & Hype ───────────────────────────────────────────────────\n {\n id: \"text-to-speech/commercial\",\n name: \"Commercial Read\",\n description: \"Energetic, persuasive, punchy.\",\n group: \"Advertising & Hype\",\n data: { speed: 1.05, stability: 0.48, similarityBoost: 0.75, style: 0.6 },\n },\n {\n id: \"text-to-speech/hype\",\n name: \"Hype / High-Energy\",\n description: \"Fast, excited, dynamic.\",\n group: \"Advertising & Hype\",\n data: { speed: 1.15, stability: 0.25, similarityBoost: 0.7, style: 0.8 },\n },\n\n // ── Conversational & Calm ────────────────────────────────────────────────\n {\n id: \"text-to-speech/podcast-host\",\n name: \"Podcast Host\",\n description: \"Natural, casual, conversational.\",\n group: \"Conversational & Calm\",\n data: { speed: 1.05, stability: 0.45, similarityBoost: 0.75, style: 0.4 },\n },\n {\n id: \"text-to-speech/character\",\n name: \"Character / Storyteller\",\n description: \"Expressive, dramatic range.\",\n group: \"Conversational & Calm\",\n data: { speed: 1, stability: 0.3, similarityBoost: 0.7, style: 0.7 },\n },\n {\n id: \"text-to-speech/meditation\",\n name: \"Meditation / ASMR\",\n description: \"Very slow, soft, soothing.\",\n group: \"Conversational & Calm\",\n data: { speed: 0.8, stability: 0.85, similarityBoost: 0.75, style: 0 },\n },\n]\n\nexport const VOICE_DESIGN_PRESETS: readonly FactoryPreset[] = [\n // ── Narration & Character ────────────────────────────────────────────────\n {\n id: \"voice-design/trailer-narrator\",\n name: \"Movie-Trailer Narrator\",\n description: \"Deep, dramatic, commanding.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"A deep, powerful male movie-trailer narrator with dramatic gravitas and a slow, commanding delivery.\" },\n },\n {\n id: \"voice-design/audiobook-female\",\n name: \"Warm Female Audiobook\",\n description: \"Soothing, clear, intimate.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"A warm, soothing female audiobook narrator with clear articulation and a gentle, intimate tone.\" },\n },\n {\n id: \"voice-design/old-wizard\",\n name: \"Old Wizard\",\n description: \"Gravelly, wise, theatrical.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"A gravelly, wise old wizard with a deep raspy voice and a slow, theatrical cadence.\" },\n },\n {\n id: \"voice-design/noir-detective\",\n name: \"Noir Detective\",\n description: \"Raspy, smoky, brooding.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"A raspy, world-weary noir detective with a low, smoky, brooding voice.\" },\n },\n {\n id: \"voice-design/meditation-guide\",\n name: \"Meditation Guide\",\n description: \"Calm, soft, breathy.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"A calm, soft-spoken meditation guide with a slow, breathy, reassuring delivery.\" },\n },\n {\n id: \"voice-design/casual-creator-female\",\n name: \"Casual Creator (female)\",\n description: \"Relaxed, warm, everyday.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"An adult woman in her late twenties talking casually to the viewer as if telling a friend about something she tried: relaxed, warm and upbeat, a natural conversational pace with small pauses, a light neutral American accent, recorded close and dry in a quiet room, never polished or announcer-like.\" },\n },\n {\n id: \"voice-design/casual-creator-male\",\n name: \"Casual Creator (male)\",\n description: \"Relaxed, warm, everyday.\",\n group: \"Narration & Character\",\n data: { voiceDescription: \"An adult man in his late twenties talking casually to the viewer as if telling a friend about something he tried: relaxed, warm and upbeat, a natural conversational pace with small pauses, a light neutral American accent, recorded close and dry in a quiet room, never polished or announcer-like.\" },\n },\n\n // ── Professional & Assistant ─────────────────────────────────────────────\n {\n id: \"voice-design/hype-announcer\",\n name: \"Energetic Hype\",\n description: \"Fast, excited, punchy.\",\n group: \"Professional & Assistant\",\n data: { voiceDescription: \"An energetic young hype announcer: fast-paced, excited and punchy.\" },\n },\n {\n id: \"voice-design/friendly-assistant\",\n name: \"Friendly Assistant\",\n description: \"Bright, clear, approachable.\",\n group: \"Professional & Assistant\",\n data: { voiceDescription: \"A bright, friendly, professional virtual-assistant voice, clear and approachable.\" },\n },\n {\n id: \"voice-design/corporate-ivr\",\n name: \"Corporate IVR\",\n description: \"Neutral, articulate, pro.\",\n group: \"Professional & Assistant\",\n data: { voiceDescription: \"A neutral, clear corporate phone-system voice, articulate and professional.\" },\n },\n]\n\nexport const VOICE_CHANGER_PRESETS: readonly FactoryPreset[] = [\n {\n id: \"voice-changer/faithful\",\n name: \"Faithful (Natural)\",\n description: \"Preserves original delivery.\",\n group: \"Revoice Styles\",\n data: { stability: 0.4, similarityBoost: 0.85, style: 0, removeBackgroundNoise: false },\n },\n {\n id: \"voice-changer/clean-stable\",\n name: \"Clean & Stable\",\n description: \"Smooth, consistent, denoised.\",\n group: \"Revoice Styles\",\n data: { stability: 0.8, similarityBoost: 0.8, style: 0, removeBackgroundNoise: true },\n },\n {\n id: \"voice-changer/expressive\",\n name: \"Expressive\",\n description: \"Amplifies the delivery.\",\n group: \"Revoice Styles\",\n data: { stability: 0.3, similarityBoost: 0.7, style: 0.45, removeBackgroundNoise: false },\n },\n {\n id: \"voice-changer/studio-clean\",\n name: \"Studio Clean\",\n description: \"Broadcast-ready, denoised.\",\n group: \"Revoice Styles\",\n data: { stability: 0.65, similarityBoost: 0.85, style: 0, removeBackgroundNoise: true },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\nexport const TEXT_TO_AUDIO_PRESETS: readonly FactoryPreset[] = [\n // ── Transitions & Impacts ────────────────────────────────────────────────\n {\n id: \"text-to-audio/whoosh\",\n name: \"Whoosh Transition\",\n description: \"Fast clean swoosh.\",\n group: \"Transitions & Impacts\",\n data: { provider: \"elevenlabs-sfx\", duration: 1, promptInfluence: 0.7, prompt: \"fast clean whoosh transition swoosh, smooth air movement\" },\n },\n {\n id: \"text-to-audio/impact-boom\",\n name: \"Impact / Boom\",\n description: \"Deep cinematic hit.\",\n group: \"Transitions & Impacts\",\n data: { provider: \"elevenlabs-sfx\", duration: 2, promptInfluence: 0.7, prompt: \"deep cinematic impact boom, powerful sub hit with tail\" },\n },\n {\n id: \"text-to-audio/riser\",\n name: \"Riser / Build-Up\",\n description: \"Rising tension sweep.\",\n group: \"Transitions & Impacts\",\n data: { provider: \"elevenlabs-sfx\", duration: 4, promptInfluence: 0.6, prompt: \"tension riser build-up sweep rising to a peak\" },\n },\n\n // ── Ambiences (loopable) ─────────────────────────────────────────────────\n {\n id: \"text-to-audio/rain-ambience\",\n name: \"Rain Ambience\",\n description: \"Steady gentle rain.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"steady gentle rain ambience with distant soft thunder\" },\n },\n {\n id: \"text-to-audio/forest-ambience\",\n name: \"Forest Ambience\",\n description: \"Birds and rustling leaves.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"calm forest ambience, birdsong, gentle wind through leaves\" },\n },\n {\n id: \"text-to-audio/fire-crackle\",\n name: \"Fire Crackle\",\n description: \"Cozy fireplace loop.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"cozy fireplace crackling, warm popping embers\" },\n },\n {\n id: \"text-to-audio/scifi-drone\",\n name: \"Sci-Fi Drone\",\n description: \"Ominous ambient hum.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.5, prompt: \"low sci-fi ambient drone, ominous spaceship hum\" },\n },\n {\n id: \"text-to-audio/living-room-tone\",\n name: \"Living Room Tone\",\n description: \"Quiet, lived-in room.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"quiet living room room tone, faint air and a soft distant household hum, steady and even, an empty room at rest\" },\n },\n {\n id: \"text-to-audio/kitchen-hum\",\n name: \"Kitchen Hum\",\n description: \"Fridge hum in a still kitchen.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"home kitchen room tone, a low steady refrigerator hum with faint air, calm and continuous, an empty kitchen at rest\" },\n },\n {\n id: \"text-to-audio/cafe-murmur\",\n name: \"Café Murmur\",\n description: \"Soft, indistinct café chatter.\",\n group: \"Ambiences (loopable)\",\n data: { provider: \"elevenlabs-sfx\", duration: 22, loop: true, promptInfluence: 0.4, prompt: \"café background ambience, a soft indistinct murmur of distant conversation and the occasional faint cup clink, steady and even, no clear words\" },\n },\n\n // ── UI & Stingers ────────────────────────────────────────────────────────\n {\n id: \"text-to-audio/ui-click\",\n name: \"UI Click / Pop\",\n description: \"Crisp interface tap.\",\n group: \"UI & Stingers\",\n data: { provider: \"elevenlabs-sfx\", duration: 1, promptInfluence: 0.8, prompt: \"crisp UI click pop, clean modern interface tap\" },\n },\n {\n id: \"text-to-audio/notification\",\n name: \"Notification Chime\",\n description: \"Bright pleasant alert.\",\n group: \"UI & Stingers\",\n data: { provider: \"elevenlabs-sfx\", duration: 2, promptInfluence: 0.8, prompt: \"pleasant bright notification chime, short and clean\" },\n },\n {\n id: \"text-to-audio/applause\",\n name: \"Applause / Crowd\",\n description: \"Enthusiastic cheering.\",\n group: \"UI & Stingers\",\n data: { provider: \"elevenlabs-sfx\", duration: 5, promptInfluence: 0.6, prompt: \"enthusiastic crowd applause and cheering\" },\n },\n // ── Foley & Action ───────────────────────────────────────────────────────\n {\n id: \"text-to-audio/footsteps\",\n name: \"Footsteps\",\n description: \"Walking on a hard floor.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 4, promptInfluence: 0.6, prompt: \"footsteps walking on a hard wooden floor, steady pace\" },\n },\n {\n id: \"text-to-audio/door\",\n name: \"Door Open / Close\",\n description: \"Creak then shut.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 3, promptInfluence: 0.7, prompt: \"wooden door slowly creaking open then closing with a soft latch\" },\n },\n {\n id: \"text-to-audio/glass-break\",\n name: \"Glass Break\",\n description: \"Sharp shatter.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 2, promptInfluence: 0.8, prompt: \"glass shattering, sharp break with falling shards\" },\n },\n {\n id: \"text-to-audio/keyboard-typing\",\n name: \"Keyboard Typing\",\n description: \"Mechanical key clicks.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 5, promptInfluence: 0.6, prompt: \"fast mechanical keyboard typing, crisp key clicks\" },\n },\n {\n id: \"text-to-audio/explosion\",\n name: \"Explosion\",\n description: \"Deep boom + debris.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 3, promptInfluence: 0.7, prompt: \"large explosion, deep boom with rumbling debris and tail\" },\n },\n {\n id: \"text-to-audio/magic-sparkle\",\n name: \"Magic Sparkle\",\n description: \"Shimmering chime FX.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 2, promptInfluence: 0.7, prompt: \"magical sparkle shimmer, twinkling fairy-dust chimes\" },\n },\n {\n id: \"text-to-audio/camera-shutter\",\n name: \"Camera Shutter\",\n description: \"DSLR click.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 1, promptInfluence: 0.8, prompt: \"DSLR camera shutter click, single crisp photo snap\" },\n },\n {\n id: \"text-to-audio/error-buzzer\",\n name: \"Error Buzzer\",\n description: \"Wrong / fail tone.\",\n group: \"Foley & Action\",\n data: { provider: \"elevenlabs-sfx\", duration: 1, promptInfluence: 0.8, prompt: \"short error buzzer, negative fail tone\" },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\nexport const LLM_CHAT_PRESETS: readonly FactoryPreset[] = [\n // ── Assistants ───────────────────────────────────────────────────────────\n {\n id: \"llm-chat/concise-assistant\",\n name: \"Concise Assistant\",\n description: \"Short, direct answers.\",\n group: \"Assistants\",\n data: {\n systemPrompt: \"You are a concise assistant. Answer in 1-3 sentences. No preamble.\",\n temperature: 0.3,\n },\n },\n {\n id: \"llm-chat/brainstorm\",\n name: \"Brainstorm / Ideas\",\n description: \"10 diverse ideas, high variety.\",\n group: \"Assistants\",\n data: {\n systemPrompt:\n \"You are a creative brainstorming partner. Given a topic, return a numbered list of 10 diverse, original ideas. No preamble, no explanations.\",\n temperature: 1,\n },\n },\n\n // ── Writing & Marketing ──────────────────────────────────────────────────\n {\n id: \"llm-chat/copywriter\",\n name: \"Copywriter / Headlines\",\n description: \"Punchy marketing copy.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"You are an expert direct-response copywriter. Write punchy, persuasive, benefit-led copy. When asked for headlines, return 5 distinct options as a list.\",\n temperature: 0.8,\n },\n },\n {\n id: \"llm-chat/social-caption\",\n name: \"Social Caption + Hashtags\",\n description: \"Caption then hashtags.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"Write one engaging social-media caption for the user's topic, then on a new line add 8-12 relevant hashtags. Match a modern, friendly tone.\",\n temperature: 0.8,\n },\n },\n {\n id: \"llm-chat/seo-metadata\",\n name: \"SEO Metadata\",\n description: \"Title, meta, keywords.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"Generate SEO metadata for the user's topic: a title (<=60 chars), a meta description (<=155 chars), and 8 keywords. Label each section.\",\n temperature: 0.4,\n },\n },\n {\n id: \"llm-chat/rewrite-tone\",\n name: \"Rewrite / Tone Shifter\",\n description: \"Restyle text, keep meaning.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"Rewrite the user's text in the requested tone (e.g. formal, casual, friendly, confident). Preserve the meaning. Return only the rewrite.\",\n temperature: 0.5,\n },\n },\n {\n id: \"llm-chat/script-writer\",\n name: \"Script / Storyboard Writer\",\n description: \"Shot-by-shot video script.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"You are a short-form video scriptwriter. Turn the user's idea into a shot-by-shot script. For each shot give: Scene, Visual, Voiceover. Keep it tight and production-ready.\",\n temperature: 0.7,\n },\n },\n {\n id: \"llm-chat/hook-generator\",\n name: \"Hook Generator\",\n description: \"10 opening lines for a talking-to-camera video.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"You write opening lines for short vertical videos in which one person talks straight to the camera about a product, a site or an idea. Given the user's topic, write 10 different opening lines.\\n\\n\" +\n \"Every line:\\n\" +\n \"- is one short spoken clause of at most 8 words;\\n\" +\n \"- leads with the payload the viewer can check: a number, a price, a time saved, a before and after, a contrast with the usual way, or a named result;\\n\" +\n \"- opens on the claim itself — no greeting, no filler word, no introduction of the product before the claim;\\n\" +\n \"- sounds said, not written: plain words, contractions welcome, no hashtags, no emoji, no stage directions;\\n\" +\n \"- spells the product or brand exactly as the user gives it and writes numbers as digits.\\n\\n\" +\n \"Vary the angle across the 10: a surprising number, a price, time saved, a mistake to avoid, a before and after, a contrast, a named result, a direct question. Write in the language the user writes in. Return only the numbered list, one line each.\",\n temperature: 0.9,\n },\n },\n {\n id: \"llm-chat/ugc-monologue-writer\",\n name: \"UGC Monologue Writer\",\n description: \"A talking-to-camera script as JSON: hook, beats, closer.\",\n group: \"Writing & Marketing\",\n data: {\n systemPrompt:\n \"You write the script of a short vertical video in which one person talks straight to the camera about a product, a site or an idea. Return it as JSON with three parts.\\n\\n\" +\n \"hook — the first line: one short spoken clause of at most 8 words. It leads with the payload the viewer can check (a number, a price, a time saved, a before and after, a named result) and opens on the claim itself — no greeting, no filler, no introduction first.\\n\\n\" +\n \"beats — one beat per point the video makes, in order. When the user lists screenshots, write one beat per screenshot, in the same order. The first beat names the product. Every beat is one short spoken sentence a person says in one easy breath; nothing is crammed in.\\n\\n\" +\n \"closer — the last line. It ends on one simple physical action the speaker can do on camera.\\n\\n\" +\n \"Leave room for a short pause at the start and the end of each clip. Sound said, not written: contractions, one connecting word, sentences of mixed length, and one live, imperfect moment such as a small self-correction or an aside. Carry emphasis with word choice and repetition, never with capitals or stage directions. Write only what is spoken: no speaker names, brackets, emoji or sound effects.\\n\\n\" +\n \"Spell the brand exactly as the user gives it, every time. Write numbers as digits, except inside the brand's own name. Use only figures the user supplies. Write in the language the user writes in.\\n\\n\" +\n \"When the script is in Hebrew: write spoken Israeli Hebrew, the way a person talks to their phone, not ad copy. Every first-person verb and adjective agrees with the speaker's gender, and never switches. Speak to the viewer in the plural (\\\"תנסו\\\"), so the viewer is not given a gender. Keep sentences short. Write numbers and prices as digits (\\\"3\\\", \\\"₪49\\\", \\\"20%\\\"). Keep the brand exactly as given, usually in Latin letters; when a Hebrew prefix joins it, use a hyphen (\\\"ב-Planwell\\\"). Leave out vowel points. The hook is at most 8 words, as in English, a word with a joined prefix counting as one word, and opens on the result, the number or the contrast — never on a greeting or a filler word.\\n\\n\" +\n \"Return only this JSON, no code fences, no commentary:\\n{\\\"hook\\\": \\\"…\\\", \\\"beats\\\": [\\\"…\\\", \\\"…\\\"], \\\"closer\\\": \\\"…\\\"}\",\n llmModel: \"claude-opus-5.5\",\n reasoningEffort: \"high\",\n temperature: 0.8,\n maxTokens: 2048,\n },\n },\n\n // ── Utility ──────────────────────────────────────────────────────────────\n {\n id: \"llm-chat/prompt-enhancer\",\n name: \"Prompt Enhancer\",\n description: \"Idea → rich image prompt.\",\n group: \"Utility\",\n data: {\n systemPrompt:\n \"Expand the user's short idea into a single rich, vivid image-generation prompt covering subject, setting, lighting, composition, lens and style. Return only the prompt, no preamble.\",\n temperature: 0.8,\n },\n },\n {\n id: \"llm-chat/translator\",\n name: \"Translator\",\n description: \"Translate, preserve tone.\",\n group: \"Utility\",\n data: {\n systemPrompt:\n \"Translate the user's text into the requested target language, preserving tone and meaning. Return only the translation.\",\n temperature: 0.2,\n },\n },\n {\n id: \"llm-chat/summarizer\",\n name: \"Summarizer (TL;DR)\",\n description: \"3-5 bullet summary.\",\n group: \"Utility\",\n data: {\n systemPrompt: \"Summarize the user's text into 3-5 concise bullet points capturing the key takeaways. No preamble.\",\n temperature: 0.2,\n },\n },\n {\n id: \"llm-chat/qa-context\",\n name: \"Q&A over Context\",\n description: \"Grounded answers only.\",\n group: \"Utility\",\n data: {\n systemPrompt:\n \"Answer the user's question using ONLY the provided context. If the answer is not in the context, say you don't know rather than guessing.\",\n temperature: 0.1,\n },\n },\n\n // ── Structured Output ────────────────────────────────────────────────────\n {\n id: \"llm-chat/json-extractor\",\n name: \"JSON Extractor\",\n description: \"Returns strict JSON only.\",\n group: \"Structured Output\",\n data: {\n systemPrompt:\n \"Extract the requested fields and return ONLY valid minified JSON. No prose, no code fences.\",\n temperature: 0,\n },\n },\n {\n id: \"llm-chat/classifier\",\n name: \"Classifier / Sentiment\",\n description: \"Returns one label.\",\n group: \"Structured Output\",\n data: {\n systemPrompt:\n \"Classify the user's input. Return ONLY a single label from the allowed set (default: positive / neutral / negative). No explanation.\",\n temperature: 0,\n },\n },\n]\n\nexport const GENERATE_SCRIPT_PRESETS: readonly FactoryPreset[] = [\n // ── By Format ────────────────────────────────────────────────────────────\n {\n id: \"generate-script/yt-short\",\n name: \"YouTube Short / Hook\",\n description: \"Punchy, hook-first, ~30s.\",\n group: \"By Format\",\n data: { tone: \"energetic, punchy, hook-first\", sceneCount: 5, targetLength: 30 },\n },\n {\n id: \"generate-script/explainer\",\n name: \"Explainer (how-to)\",\n description: \"Clear 8-step walkthrough.\",\n group: \"By Format\",\n data: {\n tone: \"clear, friendly, educational\",\n sceneCount: 8,\n targetLength: 90,\n styleGuide:\n \"A how-to walkthrough in eight steps, one step per scene, in the order the viewer does them. Open on what the viewer will be able to do by the end; in each scene name the step, then show it; close on the finished result.\",\n },\n },\n {\n id: \"generate-script/ad-spot\",\n name: \"Ad / Commercial Spot\",\n description: \"Persuasive 30s spot.\",\n group: \"By Format\",\n data: { tone: \"persuasive, upbeat, benefit-led\", sceneCount: 4, targetLength: 30 },\n },\n {\n id: \"generate-script/product-demo\",\n name: \"Product Demo VO\",\n description: \"Confident feature walkthrough.\",\n group: \"By Format\",\n data: { tone: \"confident, informative\", sceneCount: 6, targetLength: 60 },\n },\n {\n id: \"generate-script/listicle\",\n name: \"Listicle (Top 5)\",\n description: \"Snappy countdown.\",\n group: \"By Format\",\n data: { tone: \"engaging, energetic\", sceneCount: 6, targetLength: 60 },\n },\n {\n id: \"generate-script/ugc-ad\",\n name: \"UGC Ad (Hook–Show–Proof–Opinion)\",\n description: \"Selfie-style product testimonial.\",\n group: \"By Format\",\n data: {\n tone: \"casual, authentic, conversational\",\n sceneCount: 4,\n targetLength: 30,\n llmModel: \"claude-opus-5.5\",\n reasoningEffort: \"high\",\n styleGuide:\n \"Selfie-style UGC testimonial for {product}. Open on the payload: the first spoken line is a short claim the viewer can check — a number, a price, a time saved, a before and after — never a greeting or an introduction. Then Show (the product in real use) → Proof (a concrete result or detail) → Opinion (a genuine personal take). Sound said, not written: contractions, sentences of mixed length, one small aside; carry emphasis with word choice, never capitals or stage directions. Spell the brand exactly as given and write numbers as digits. Use only figures the user supplies, in what is said and what is shown, and take the Proof from the topic. Short spoken sentences for clean lip-sync; no salesy voiceover.\",\n },\n },\n\n // ── Long-Form & Narrative ────────────────────────────────────────────────\n {\n id: \"generate-script/podcast-outline\",\n name: \"Podcast Outline\",\n description: \"Conversational episode beats.\",\n group: \"Long-Form & Narrative\",\n data: { tone: \"conversational, curious\", sceneCount: 10, targetLength: 600 },\n },\n {\n id: \"generate-script/trailer-narration\",\n name: \"Trailer Narration\",\n description: \"Dramatic voiceover beats.\",\n group: \"Long-Form & Narrative\",\n data: { tone: \"dramatic, epic\", sceneCount: 6, targetLength: 60 },\n },\n {\n id: \"generate-script/story-beats\",\n name: \"Story Beats\",\n description: \"Emotional narrative arc.\",\n group: \"Long-Form & Narrative\",\n data: {\n tone: \"narrative, emotional\",\n sceneCount: 8,\n targetLength: 120,\n styleGuide:\n \"An eight-beat story arc, one beat per scene: the world as it is, the moment that changes it, the first attempt, a complication, the low point, the turn, the climax, and the world changed.\",\n },\n },\n]\n\nexport const IMAGE_TO_TEXT_PRESETS: readonly FactoryPreset[] = [\n // ── Accessibility & SEO ──────────────────────────────────────────────────\n {\n id: \"image-to-text/alt-text\",\n name: \"Alt Text\",\n description: \"Accessible, ≤125 chars.\",\n group: \"Accessibility & SEO\",\n data: { detailLevel: \"brief\", customPrompt: \"Write concise alt text for this image for accessibility, under 125 characters. Describe only what is essential.\" },\n },\n {\n id: \"image-to-text/seo-caption\",\n name: \"SEO Caption\",\n description: \"Caption + keywords.\",\n group: \"Accessibility & SEO\",\n data: { detailLevel: \"detailed\", customPrompt: \"Write an SEO-friendly caption for this image, then list 8 relevant keywords.\" },\n },\n {\n id: \"image-to-text/social-caption\",\n name: \"Social Caption\",\n description: \"Caption + hashtags.\",\n group: \"Accessibility & SEO\",\n data: { detailLevel: \"detailed\", customPrompt: \"Write an engaging social-media caption for this image, then 8-12 relevant hashtags.\" },\n },\n\n // ── Extraction ───────────────────────────────────────────────────────────\n {\n id: \"image-to-text/ocr\",\n name: \"Extract Text (OCR)\",\n description: \"Return only visible text.\",\n group: \"Extraction\",\n data: { detailLevel: \"structured\", customPrompt: \"Extract and return ONLY the text visible in this image, preserving line breaks. No commentary.\" },\n },\n {\n id: \"image-to-text/tags\",\n name: \"Tags / Keywords\",\n description: \"Comma-separated tags.\",\n group: \"Extraction\",\n data: { detailLevel: \"brief\", customPrompt: \"List 10-15 descriptive tags for this image, comma-separated. No sentences.\" },\n },\n {\n id: \"image-to-text/product-desc\",\n name: \"Product Description\",\n description: \"E-commerce copy from a photo.\",\n group: \"Extraction\",\n data: { detailLevel: \"detailed\", customPrompt: \"Write a compelling e-commerce product description based on this product image.\" },\n },\n {\n id: \"image-to-text/site-screenshot-summary\",\n name: \"Site Screenshot Summary\",\n description: \"Section, headings and figures from a web page.\",\n group: \"Extraction\",\n data: {\n detailLevel: \"structured\",\n customPrompt:\n \"Describe this website screenshot as five labelled lines. Section: which part of the site it is (for example the top of the home page, a feature, how it works, reviews, pricing, sign-up, navigation or footer). Headings: every heading exactly as written. Figures: every number, price, rating and date exactly as written, each with what it refers to. Brand: the product or company name exactly as spelled. First look: what a viewer notices first, in one sentence. Write \\\"none\\\" on a line with nothing to report.\",\n },\n },\n\n // ── Creative ─────────────────────────────────────────────────────────────\n {\n id: \"image-to-text/scene-description\",\n name: \"Detailed Description\",\n description: \"Vivid prose description.\",\n group: \"Creative\",\n data: { detailLevel: \"detailed\", customPrompt: \"Provide a vivid, comprehensive description of this image: subjects, setting, lighting, mood and composition, in flowing prose.\" },\n },\n {\n id: \"image-to-text/reverse-prompt\",\n name: \"Reverse Prompt\",\n description: \"Image → text-to-image prompt.\",\n group: \"Creative\",\n data: { detailLevel: \"detailed\", customPrompt: \"Describe this image as a detailed text-to-image generation prompt: subject, style, lighting, composition and lens. Return only the prompt.\" },\n },\n {\n id: \"image-to-text/realism-audit\",\n name: \"Realism Audit\",\n description: \"Lists the signs an image was generated, with a count.\",\n group: \"Creative\",\n data: {\n detailLevel: \"structured\",\n customPrompt:\n \"Check this image for signs that it was generated rather than photographed. Answer each question yes or no, with a few words why. 1. Is the skin smooth, waxy or airbrushed, with no visible pores? 2. Is the face unusually symmetrical, or are the teeth unnaturally even and white? 3. Are any hands or fingers malformed, merged or the wrong count? 4. Is any text, logo or sign garbled? 5. Is the background blurred far more than an everyday snapshot would be? 6. Are the catchlights in the eyes perfect rings, or identical in both eyes? 7. Is the hair uniformly perfect, with no flyaways? 8. Do edges look over-sharpened or haloed? 9. Is there a glow or bloom on the skin? 10. Do shadows or reflections disagree with the light? Finish with one line: \\\"Tells found: N of 10\\\".\",\n },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\nimport { REALISM_FINISH } from \"../realism-wording.js\"\n\nexport const VIDEO_TO_VIDEO_PRESETS: readonly FactoryPreset[] = [\n {\n id: \"video-to-video/anime\",\n name: \"Anime Restyle\",\n description: \"2D cel-shaded anime look.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle this video as a 2D cel-shaded anime: vibrant colors, clean linework, expressive cel shading. Preserve the original motion, composition, and timing.\", negativePrompt: \"photorealistic, blurry, distorted, flickering\" },\n },\n {\n id: \"video-to-video/claymation\",\n name: \"Claymation\",\n description: \"Tactile stop-motion clay.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle as tactile stop-motion claymation with plasticine textures and subtle fingerprints. Keep the original motion and framing.\", negativePrompt: \"photorealistic, smooth, flickering\" },\n },\n {\n id: \"video-to-video/cyberpunk-neon\",\n name: \"Cyberpunk Neon\",\n description: \"Rain-slicked neon city look.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle with a neon cyberpunk aesthetic: rain-slicked surfaces, glowing magenta and cyan lighting, moody atmosphere. Preserve the original motion.\", negativePrompt: \"daylight, flat lighting, blurry, distorted\" },\n },\n {\n id: \"video-to-video/oil-painting\",\n name: \"Oil Painting\",\n description: \"Moving painterly brushwork.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle as a moving oil painting with visible brushstrokes, rich impasto texture, and painterly color. Keep the original motion and composition.\", negativePrompt: \"photorealistic, flat, blurry, flickering\" },\n },\n {\n id: \"video-to-video/pixar-3d\",\n name: \"3D Animated\",\n description: \"Polished CG film look.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle as a polished 3D animated film: soft global illumination, expressive characters, clean stylized surfaces. Preserve the original motion and timing.\", negativePrompt: \"photorealistic, lowres, distorted, flickering\" },\n },\n {\n id: \"video-to-video/watercolor\",\n name: \"Watercolor\",\n description: \"Flowing washes on paper.\",\n group: \"Restyle Looks\",\n data: { provider: \"wan\", promptPrefix: \"Restyle as a flowing watercolor animation with soft washes, bleeding edges, and visible paper texture. Keep the original motion and composition.\", negativePrompt: \"photorealistic, harsh edges, blurry, flickering\" },\n },\n {\n id: \"video-to-video/phone-footage-look\",\n name: \"Phone Footage Look\",\n description: \"Everyday handheld look for b-roll — it re-renders faces, so not for talking clips.\",\n group: \"Restyle Looks\",\n data: {\n provider: \"wan-videoedit\",\n v2vResolution: \"720p\",\n videoEditDuration: \"0\",\n audioSetting: \"origin\",\n promptExtend: false,\n promptPrefix: `Keep everything in this clip as it is — the same people, objects, colours and light — and only make it look like everyday handheld digital video, left unedited. ${REALISM_FINISH} The edges of the frame keep the light they have in the clip, and each moment keeps the brightness it has in the clip, from the first frame to the last. Preserve the original motion, composition and timing.`,\n negativePrompt: \"cinematic grade, shallow depth of field, glow, skin smoothing, flickering, light leaks, flare, coloured bands at the edges of the frame, colour cast, shifted colours, oversaturated colours, vintage film look, overexposure, pulsing brightness, heavy grain\",\n },\n },\n]\n\nexport const ADD_CAPTIONS_PRESETS: readonly FactoryPreset[] = [\n {\n id: \"add-captions/clean-subtitles\",\n name: \"Clean Subtitles\",\n description: \"Classic bottom subtitles.\",\n group: \"Caption Styles\",\n data: { style: \"subtitle\", position: \"bottom\", fontSize: 32, color: \"#FFFFFF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/tiktok-bold\",\n name: \"TikTok Bold\",\n description: \"Big centered word-by-word.\",\n group: \"Caption Styles\",\n data: { style: \"tiktok-words\", position: \"center\", fontSize: 72, color: \"#FFFFFF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/karaoke\",\n name: \"Karaoke Highlight\",\n description: \"Words fill as spoken.\",\n group: \"Caption Styles\",\n data: { style: \"karaoke\", position: \"bottom\", fontSize: 56, color: \"#FFFFFF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/word-pop\",\n name: \"Word Pop\",\n description: \"Each word pops in.\",\n group: \"Caption Styles\",\n data: { style: \"word-pop\", position: \"center\", fontSize: 64, color: \"#FFE600\", autoTranscribe: true },\n },\n {\n id: \"add-captions/bouncy\",\n name: \"Bouncy Captions\",\n description: \"Energetic bouncing words.\",\n group: \"Caption Styles\",\n data: { style: \"bouncy\", position: \"bottom\", fontSize: 64, color: \"#FFFFFF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/word-highlight\",\n name: \"Word Highlight\",\n description: \"Active word highlighted.\",\n group: \"Caption Styles\",\n data: { style: \"word-highlight\", position: \"bottom\", fontSize: 48, color: \"#00E5FF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/top-banner\",\n name: \"Top Banner\",\n description: \"Subtitles along the top.\",\n group: \"Caption Styles\",\n data: { style: \"subtitle\", position: \"top\", fontSize: 36, color: \"#FFFFFF\", autoTranscribe: true },\n },\n {\n id: \"add-captions/hook-plate\",\n name: \"Hook Plate\",\n description: \"Your opening line as a bold plate near the top.\",\n group: \"Caption Styles\",\n data: { style: \"subtitle\", look: \"clean\", position: \"top\", positionY: 20, fontSize: 32, fontWeight: 800, maxWordsPerLine: 4, color: \"#111111\", backgroundColor: \"#FFFFFF\", autoTranscribe: false },\n },\n {\n id: \"add-captions/body-captions\",\n name: \"Body Captions\",\n description: \"Word-by-word captions under the face.\",\n group: \"Caption Styles\",\n data: { style: \"word-highlight\", look: \"outline\", position: \"bottom\", positionY: 72, fontSize: 32, maxWordsPerLine: 3, color: \"#FFFFFF\", autoTranscribe: true },\n },\n]\n\nexport const COMBINE_VIDEOS_PRESETS: readonly FactoryPreset[] = [\n {\n id: \"combine-videos/seamless-join\",\n name: \"Seamless Join (One-Shot)\",\n description: \"Jump-free join for scene-extension / start-end-frame clips.\",\n group: \"Joins & Transitions\",\n data: { transition: \"cut\", transitionDuration: 0.5, audioMode: \"crossfade\", audioCrossfadeCurve: \"equal-power\", trimEndFrames: 4, trimStartFrames: 3 },\n },\n {\n id: \"combine-videos/hard-cut\",\n name: \"Hard Cut\",\n description: \"Instant switch, no blend. Fastest.\",\n group: \"Joins & Transitions\",\n data: { transition: \"cut\", audioMode: \"keep\", trimStartFrames: 0, trimEndFrames: 0 },\n },\n {\n id: \"combine-videos/crossfade\",\n name: \"Crossfade\",\n description: \"Smooth alpha cross-fade between clips.\",\n group: \"Joins & Transitions\",\n data: { transition: \"fade\", transitionDuration: 0.7, audioMode: \"crossfade\", audioCrossfadeCurve: \"equal-power\" },\n },\n {\n id: \"combine-videos/dissolve\",\n name: \"Dissolve\",\n description: \"Grainy organic blend for memory beats.\",\n group: \"Joins & Transitions\",\n data: { transition: \"dissolve\", transitionDuration: 1, audioMode: \"crossfade\", audioCrossfadeCurve: \"equal-power\" },\n },\n {\n id: \"combine-videos/fade-through-black\",\n name: \"Fade Through Black\",\n description: \"Dip to black between scenes.\",\n group: \"Joins & Transitions\",\n data: { transition: \"dip-to-black\", transitionDuration: 1, audioMode: \"crossfade\", audioCrossfadeCurve: \"equal-power\" },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\n// SwitchX (Beeble) relight & composite starting points — one per common job,\n// so users get a tuned prompt + the right alpha mode instead of a blank node.\n// Presets set alphaMode + a starter promptPrefix (and keyframe for select); they\n// deliberately leave resolution alone so they don't override the user's choice.\n// A connected reference image is the biggest quality lever for all of these.\nexport const SWITCHX_PRESETS: readonly FactoryPreset[] = [\n {\n id: \"switchx/relight-subject\",\n name: \"Relight Subject\",\n description: \"Auto-mask the subject and relight it to match a reference.\",\n group: \"Relight & Composite\",\n data: {\n alphaMode: \"auto\",\n promptPrefix:\n \"Relight the subject to match the reference: match its colour temperature, key-light direction and intensity, and add matching contact shadows. Keep the subject's motion, pose and identity unchanged.\",\n },\n },\n {\n id: \"switchx/swap-background\",\n name: \"Swap Background\",\n description: \"Keep the subject, replace the background, relight to fit.\",\n group: \"Relight & Composite\",\n data: {\n alphaMode: \"auto\",\n promptPrefix:\n \"Keep the foreground subject and replace the background with the environment from the reference. Relight the subject so it sits naturally in the new scene — match light direction, colour and shadows.\",\n },\n },\n {\n id: \"switchx/restyle-scene\",\n name: \"Restyle Whole Scene\",\n description: \"No mask — restyle the entire frame from a reference/prompt.\",\n group: \"Relight & Composite\",\n data: {\n alphaMode: \"fill\",\n promptPrefix:\n \"Restyle the entire frame to match the reference look — colour grade, lighting and mood — while preserving the original motion, composition and timing.\",\n },\n },\n {\n id: \"switchx/masked-composite\",\n name: \"Masked Composite\",\n description: \"Precise control via a one-frame mask (wire a Generate Mask node).\",\n group: \"Relight & Composite\",\n data: {\n alphaMode: \"select\",\n alphaKeyframeIndex: 0,\n promptPrefix:\n \"Composite the masked region against the reference and relight it to match. Leave everything outside the mask untouched.\",\n },\n },\n {\n id: \"switchx/frame-accurate-matte\",\n name: \"Frame-Accurate Matte\",\n description: \"Exact per-frame control via a supplied alpha matte video.\",\n group: \"Relight & Composite\",\n data: {\n alphaMode: \"custom\",\n promptPrefix:\n \"Composite using the supplied per-frame matte and relight the kept region to match the reference. Preserve the original motion.\",\n },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\n/**\n * Factory presets for the `motion-graphics` node — all targeting the Lottie\n * engine (`engine: \"lottie\"`), which has an LLM author a complete, valid Lottie\n * (Bodymovin) JSON document with named editable slots.\n *\n * Each preset's `data` sets every portable configurable field (engine,\n * motionPrompt, aspectRatio, durationSeconds, backgroundColor) so switching\n * presets never leaves stale canvas settings. `fps` (node default 30) and\n * `llmModel` (the user's tier choice) are deliberately NOT set. `label` is NOT\n * carried either — factory `data` is capture-shaped (the FactoryPreset.data\n * contract excludes label/fieldMappings/runtime keys, pinned by the\n * `extractPresetData(data).toEqual(data)` round-trip test); the dropdown already\n * surfaces the active preset's `name` in its trigger. No preset carries\n * `motionPlan` — generated-plan staleness is solved generically via\n * PRESET_APPLY_CLEAR_KEYS (see node-preset-extract.ts), not per-preset.\n *\n * The prompts are written to work WITH the engine's contract (see\n * backend/src/prompts/lottie-graphic-system.ts): group-wrapped shapes, 0–1\n * colors, a root `slots` map with `{\"sid\"}` refs, raw-string text slots, the\n * 20-font safelist, vector-only output, ≤50 layers, and seamless-loop or\n * exit-before-`op` discipline. Every prompt ends with\n * `Expose slots: <sids>.` using stable lowerCamelCase sids so slot edits\n * survive regeneration and published-app field exposure is dependable.\n *\n * fps is 30, so frame counts below map to seconds as frames = seconds × 30\n * (a 5s preset = 150 frames; \"20 frames before the end\" = 0.67s before `op`).\n */\nexport const MOTION_GRAPHICS_PRESETS: readonly FactoryPreset[] = [\n // ── Titles & Text ─────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/lower-third\",\n name: \"Lower Third\",\n description: \"Animated lower third with editable name, role and accent color.\",\n group: \"Titles & Text\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 5,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"Lower third for a name and role, anchored in the lower-left title-safe area (x ≈ 8% of width, baseline ≈ 84% of height). A slim accent bar (the brand color) slides in from the left with a slight overshoot and settles over about 14 frames; the name in bold white rises and fades in above the role in lighter gray, staggered 6–8 frames after the bar, each easing out. Hold steady through the middle, then everything exits with a clean fade and a small slide-left completing 20 frames before the end — nothing cuts mid-motion. Palette: one saturated brand accent plus white and a neutral gray, restrained and broadcast-clean. Transparent background — this overlays footage, so add no full-frame backdrop. One-shot, not looped: the entrance plays once and the exit finishes before the out point. Use the placeholder name \\\"Jane Doe\\\" and role \\\"Product Designer\\\" so users retype their own. Expose slots: primaryColor, nameText, roleText.\",\n },\n },\n {\n id: \"motion-graphics/title-card\",\n name: \"Title Card\",\n description: \"Centered title and subtitle with a confident scale-up entrance.\",\n group: \"Titles & Text\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#0b0b12\",\n motionPrompt:\n \"A centered title card with a clear type hierarchy: a large bold headline above a smaller subtitle, generously spaced and optically centered. The headline scales up from about 92% with a touch of overshoot and fades in over 16 frames; the subtitle follows 8 frames later, rising a few pixels as it fades. A thin decorative accent rule draws in beneath the title using a trim-path reveal. Hold the composition still in the middle, then let everything fade out together completing 20 frames before the end. Easing: ease-out on the hero scale, gentle ease on supporting elements. Palette: white and light-gray type with a single accent-colored rule, set against the dark opaque background. One-shot, not looped — the exit completes before the out point. Use the placeholder title \\\"Your Title Here\\\" and subtitle \\\"A short supporting line\\\". Expose slots: primaryColor, titleText, subtitleText.\",\n },\n },\n {\n id: \"motion-graphics/kinetic-typography\",\n name: \"Kinetic Typography\",\n description: \"Three words cascade in with punchy staggered motion.\",\n group: \"Titles & Text\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 5,\n backgroundColor: \"#0a0a0a\",\n motionPrompt:\n \"Punchy kinetic typography: three bold words stacked or marching across the center, each its own text layer, entering in a staggered cascade 7–9 frames apart. Vary the rhythm — the first word slides up from below with overshoot, the second snaps in from the left, the third scales up from 85% and settles — so the motion feels choreographed, not uniform. Use a heavy display family from the safelist (Anton, Bebas Neue or Oswald). One word is rendered in the accent color for emphasis; the rest are white. Hold the full phrase briefly, then exit each word on a quick staggered fade completing 20 frames before the end. Dark opaque background, no full-frame rectangle beyond the stated bg. One-shot, not looped. Use placeholder words \\\"MAKE\\\", \\\"IT\\\", \\\"MOVE\\\" so users retype their own copy. Expose slots: accentColor, wordOne, wordTwo, wordThree.\",\n },\n },\n {\n id: \"motion-graphics/quote-card\",\n name: \"Quote Card\",\n description: \"Elegant pull-quote with attribution and a draw-on accent mark.\",\n group: \"Titles & Text\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 6,\n backgroundColor: \"#11131a\",\n motionPrompt:\n \"An elegant pull-quote card. A large accent-colored quotation mark draws on first via a trim-path reveal over about 18 frames, then the quote text fades and rises into the center set in a refined serif from the safelist (Playfair Display or Lora). The attribution line fades in 10 frames later, smaller and in lighter gray, beneath a short accent rule that wipes in from the left. Let it breathe in the middle of the timeline, then fade the whole group out together completing 24 frames before the end. Easing is soft and unhurried throughout — ease-out, no overshoot — to match the editorial tone. Palette: warm white type, a muted gray attribution, and one accent color on the quote mark and rule, over the dark opaque background. One-shot, not looped. Use the placeholder quote \\\"Design is intelligence made visible.\\\" and attribution \\\"— Alina Wheeler\\\". Expose slots: accentColor, quoteText, attributionText.\",\n },\n },\n {\n id: \"motion-graphics/end-card-cta\",\n name: \"End Card (CTA)\",\n description: \"Outro card with a headline and a pulsing call-to-action button.\",\n group: \"Titles & Text\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 5,\n backgroundColor: \"#0b0b12\",\n motionPrompt:\n \"An outro end card that drives action. A bold white headline scales up from 90% with a hint of overshoot and fades in over 16 frames, centered in the upper-middle. Below it, a rounded call-to-action button (filled with the primary color, label in white) springs in from slightly below 10 frames later with an anticipation-and-overshoot settle. Once settled, the button breathes with a subtle scale pulse (about 100%→104%→100%) on a gentle loop to draw the eye. Keep the headline static after it lands. Exit is optional and soft — if present, fade only, completing 20 frames before the end. Palette: white headline, one saturated primary on the button, dark opaque background. The headline is one-shot; the button's pulse loops seamlessly. Use the placeholder headline \\\"Thanks for watching\\\" and CTA label \\\"SUBSCRIBE\\\". Expose slots: primaryColor, headlineText, ctaText.\",\n },\n },\n\n // ── Intros & Logos ────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/logo-sting\",\n name: \"Logo Sting\",\n description: \"Punchy brand reveal with anticipation and overshoot.\",\n group: \"Intros & Logos\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#000000\",\n motionPrompt:\n \"A tight, punchy logo sting built from vector shapes. A simple geometric brand mark (in the brand color) performs the hero move with real anticipation and overshoot: it scales down slightly and counter-rotates a few degrees over the first 8 frames, then snaps up to full size, overshooting to about 108% before settling back over the next 12 frames. As the mark lands, the brand name wordmark wipes or fades in beside or beneath it, 6 frames behind, easing out. Hold the locked-up logo still through the middle. Exit on a clean fade (and optional slight scale-down) completing 20 frames before the end — never cut to black mid-motion. Keep total action under two seconds. Palette: the brand color plus white, restrained. Opaque black background. One-shot, not looped. Use the placeholder brand name \\\"ACME\\\". Expose slots: brandColor, brandName.\",\n },\n },\n {\n id: \"motion-graphics/channel-intro\",\n name: \"Channel Intro\",\n description: \"Energetic channel open with name, tagline and accent shapes.\",\n group: \"Intros & Logos\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 5,\n backgroundColor: \"#0a0a14\",\n motionPrompt:\n \"An energetic channel intro. Two or three accent-colored geometric shapes (a bar, a circle, a triangle) sweep in from opposite edges with overshoot and converge toward center over the first 18 frames, establishing rhythm. The channel name then scales up from 88% with overshoot and fades in, set in a bold family from the safelist (Montserrat or Poppins); the tagline fades in 8 frames later beneath it in lighter gray. The accent shapes settle into a tidy lockup behind or beside the type. Hold briefly, then exit everything together with a fade and a small slide completing 20 frames before the end. Easing: snappy overshoot on the shapes and the name, ease-out on the tagline. Palette: one or two accent colors plus white over the dark opaque background. One-shot, not looped. Use the placeholder channel name \\\"My Channel\\\" and tagline \\\"new videos every week\\\". Expose slots: primaryColor, channelName, taglineText.\",\n },\n },\n {\n id: \"motion-graphics/countdown\",\n name: \"Countdown\",\n description: \"5-second ring countdown from 5 to 1 with a sweeping arc.\",\n group: \"Intros & Logos\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 6,\n backgroundColor: \"#000000\",\n motionPrompt:\n \"A centered countdown from 5 down to 1. A circular ring (stroked in the ring color) sits in the center; a second arc in the same color sweeps around it once per second via an animated trim path, completing one full revolution every 30 frames as a steady visual metronome. Inside the ring, a SINGLE text layer shows the current number in a large bold face (number color), keyframed once per second so the displayed digit steps 5 → 4 → 3 → 2 → 1 across the timeline — the digits are deliberately baked into the keyframes, NOT slotted. On each step, give the number a quick scale-pop (about 120%→100%) and a fast cross-fade so the change reads crisply. After \\\"1\\\", let the ring and number fade out together completing 20 frames before the end so nothing cuts abruptly. Palette: a single accent ring color and a white-ish number color over the opaque black background. One-shot, not looped. Expose slots: ringColor, numberColor.\",\n },\n },\n\n // ── Social & CTA ──────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/subscribe-reminder\",\n name: \"Subscribe Reminder\",\n description: \"Overlay subscribe button that pops in and pulses.\",\n group: \"Social & CTA\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"An overlay subscribe button for the lower-third area (lower-center or lower-left, inside the title-safe margin). A rounded pill filled with the button color springs in from slightly below with anticipation and overshoot, settling over about 12 frames; the button label in bold white fades in 4 frames behind it. A small play-triangle or bell glyph (white, vector) sits to the left of the label and gives a quick wiggle-free nod — a single tilt and return — as the button lands. Once settled, the whole button breathes with a gentle scale pulse (100%→104%→100%) on a seamless loop to attract attention, then fades out cleanly completing 16 frames before the end. Palette: one saturated button color plus white. Transparent background — this overlays footage, so add no backdrop. The entrance is one-shot; the pulse loops seamlessly. Use the placeholder label \\\"SUBSCRIBE\\\". Expose slots: buttonColor, buttonText.\",\n },\n },\n {\n id: \"motion-graphics/like-follow-bug\",\n name: \"Like + Follow Bug\",\n description: \"Corner bug with a heart pop and editable handle.\",\n group: \"Social & CTA\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 3,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A compact corner bug for the lower-left, sized small so it never blocks the shot. A heart icon built from a vector path (filled with the accent color) pops in with anticipation and overshoot — scaling from 0 with a slight squash-and-stretch over about 10 frames — and emits two or three small accent particles that fan out and fade as it lands. Beside the heart, a handle label in bold white slides in from the left 4 frames behind, easing out. Hold the lockup briefly, then exit with a quick fade and slight slide-down completing 12 frames before the end. Keep it lively but short — under three seconds total. Palette: one accent color on the heart and particles plus white text. Transparent background — overlays footage, no backdrop. One-shot, not looped. Use the placeholder handle \\\"@yourhandle\\\". Expose slots: accentColor, handleText.\",\n },\n },\n {\n id: \"motion-graphics/sale-badge\",\n name: \"Sale Badge\",\n description: \"Square promo badge that stamps in with a starburst.\",\n group: \"Social & CTA\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"1:1\",\n durationSeconds: 3,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A bold square promo badge centered in frame. A starburst or rounded medallion (filled with the badge color, built as a star/polygon or circle group) stamps in with strong anticipation and overshoot — counter-scaling down then snapping up past 100% to about 110% and settling over 12 frames, with a small counter-rotation for energy. The headline sale text scales up inside it in heavy white type from the safelist (Anton or Bebas Neue) 4 frames behind, and a smaller detail line fades in below 6 frames after that. Add a subtle continuous slow rotation (a few degrees back and forth) to keep the badge alive. Exit on a quick scale-down and fade completing 14 frames before the end. Palette: one vivid badge color plus white text. Transparent background — overlays a product shot or post, no backdrop. One-shot entrance; the gentle rotation loops seamlessly. Use the placeholder sale text \\\"50% OFF\\\" and detail \\\"this weekend only\\\". Expose slots: badgeColor, saleText, detailText.\",\n },\n },\n {\n id: \"motion-graphics/story-highlight\",\n name: \"Story Highlight\",\n description: \"Vertical story title card with headline and subtext.\",\n group: \"Social & CTA\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"9:16\",\n durationSeconds: 5,\n backgroundColor: \"#10101a\",\n motionPrompt:\n \"A vertical (portrait) story highlight title card composed for the upper-middle of a tall phone frame, clear of phone UI at top and bottom. A short accent bar wipes in from the left, then a punchy headline scales up from 90% with overshoot and fades in beneath it in bold white (Poppins or Montserrat from the safelist); a subtext line fades in 8 frames later in lighter gray. A couple of small accent dots or a thin underline animate in to add rhythm. Hold the layout still through the middle, then fade everything out together completing 20 frames before the end. Easing: overshoot on the headline, ease-out on supporting elements. Palette: white and gray type with one accent color, over the dark opaque background. One-shot, not looped. Use the placeholder headline \\\"BEHIND THE SCENES\\\" and subtext \\\"swipe up to watch\\\". Expose slots: primaryColor, headlineText, subText.\",\n },\n },\n\n // ── UI & Icons ────────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/loader-spinner\",\n name: \"Loader / Spinner\",\n description: \"Seamless dot-trail loading spinner for UI overlays.\",\n group: \"UI & Icons\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"1:1\",\n durationSeconds: 3,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A clean, seamless loading spinner centered in frame, built for UI overlays. Arrange a ring of small dots (about 8–12, group-wrapped ellipses) around a circle; rotate the whole group continuously and smoothly so it completes an exact whole number of revolutions across the timeline and the last frame matches the first — a perfect seamless loop with no visible seam or stutter. Drive a chasing fade around the ring so each dot brightens then dims in sequence (a trailing comet effect): the lead dots use the dot color at full opacity and the tail fades toward the trail color. Use linear, constant-speed rotation (mechanical, not eased) so it spins forever evenly. Keep it under the layer budget by reusing a repeater or a tight set of dot groups. Transparent background — overlays a UI, no backdrop. Seamless loop — every animated property's last keyframe repeats its first. Expose slots: dotColor, trailColor.\",\n },\n },\n {\n id: \"motion-graphics/success-check\",\n name: \"Success Check\",\n description: \"Checkmark that draws on inside a popping ring.\",\n group: \"UI & Icons\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"1:1\",\n durationSeconds: 2,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A satisfying success confirmation centered in frame. A circular ring (stroked in the ring color) scales in from about 0 with a crisp overshoot and settles over the first 12 frames. The moment it lands, a checkmark drawn as a single stroked path (in the stroke color) draws on left-to-right via an animated trim path from 0% to 100% over about 10 frames, with a slight ease-out so the tick snaps confidently at the end. Add a single soft pulse on the ring as the check completes (a brief scale to ~105% and back). Hold the finished mark, then fade the whole group out completing 8 frames before the end so it doesn't pop off. Easing: overshoot on the ring, ease-out on the trim. Palette: a positive accent on both the ring and the check. Transparent background — overlays a UI, no backdrop. One-shot, not looped. Expose slots: strokeColor, ringColor.\",\n },\n },\n {\n id: \"motion-graphics/error-cross\",\n name: \"Error Cross\",\n description: \"Error X that draws on inside a shaking ring.\",\n group: \"UI & Icons\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"1:1\",\n durationSeconds: 2,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A clear error indicator centered in frame. A circular ring (stroked in the ring color) scales in with overshoot over the first 12 frames. Then an X drawn as two stroked paths (in the stroke color) draws on in quick succession via animated trim paths — the first stroke over about 6 frames, the second starting 3 frames later — each easing out so they land decisively. As the X completes, give the whole group a short, sharp horizontal shake (a damped left-right wobble over ~8 frames) to signal failure, then settle. Hold the finished mark, then fade out completing 8 frames before the end. Easing: overshoot on the ring, ease-out on the strokes, a quick damped shake on the lockup. Palette: an alert accent on both the ring and the cross. Transparent background — overlays a UI, no backdrop. One-shot, not looped. Expose slots: strokeColor, ringColor.\",\n },\n },\n {\n id: \"motion-graphics/progress-bar\",\n name: \"Progress Bar\",\n description: \"Horizontal progress bar that fills with an editable label.\",\n group: \"UI & Icons\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A horizontal progress bar centered in frame. A rounded track (filled with the track color) fades in first; then a fill bar (the bar color) grows from left to right inside it — animate the fill rectangle's width (or use a left-anchored scale on x) from 0 to full over about 60 frames with an ease-in-out so it accelerates then eases to completion. A short label sits above or beside the track in bold white and fades in as the fill starts. Optionally let a soft highlight sweep along the fill as it grows. When the bar reaches full, give it a small confirming pulse, hold, then fade the whole group out completing 16 frames before the end. Easing: ease-in-out on the fill, ease-out on the label. Palette: a muted track color and one saturated bar color, plus white text. Transparent background — overlays a UI, no backdrop. One-shot, not looped. Use the placeholder label \\\"Loading…\\\". Expose slots: barColor, trackColor, labelText.\",\n },\n },\n {\n id: \"motion-graphics/notification-pop\",\n name: \"Notification Pop\",\n description: \"Toast notification card that slides in with title and body.\",\n group: \"UI & Icons\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 3,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A toast notification card that slides into the top-right corner. A rounded rectangle card (filled with the card color) springs in from above-right with anticipation and overshoot, settling over about 12 frames. A small accent dot or icon pops in on the left of the card, then the title text fades and slides in 4 frames behind in bold white, with the body line following 6 frames later in lighter gray. Keep the card crisp and clean — a subtle drop of opacity from the bg color is fine, but no heavy effects. Hold the toast for the middle of the timeline, then slide it back out up-and-right with a fade completing 14 frames before the end. Easing: overshoot on the card entrance, ease-out on the text. Palette: a card color, white title, gray body, and one small accent. Transparent background — overlays a UI, no backdrop. One-shot, not looped. Use the placeholder title \\\"New message\\\" and body \\\"You have 1 unread notification\\\". Expose slots: cardColor, titleText, bodyText.\",\n },\n },\n\n // ── FX Overlays ───────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/confetti-burst\",\n name: \"Confetti Burst\",\n description: \"Celebratory confetti burst overlay in four colors.\",\n group: \"FX Overlays\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A celebratory confetti burst that overlays footage. Small vector confetti pieces erupt from a point near the lower-center, fountaining up and outward then drifting down under a gentle gravity-like ease, tumbling slowly and fading out as they fall so the frame clears by the end. Build it compactly: author ONE small group-wrapped rectangle or ellipse per color — colorA, colorB, colorC, colorD — and multiply each with a repeater (8–14 copies, with per-copy position/rotation offsets in the repeater's own transform so the copies fan out instead of stacking). Stagger the four groups' launch a few frames apart for an organic burst — never author individual confetti pieces. KEEP THE JSON COMPACT: at most 4 shape layers and 3–4 keyframes per animated property. Linear-ish motion on launch easing into a soft fall. Transparent background — overlays footage, so add no backdrop. One-shot, not looped: the burst plays once and fully clears before the out point. Expose slots: colorA, colorB, colorC, colorD.\",\n },\n },\n {\n id: \"motion-graphics/sparkle-shimmer\",\n name: \"Sparkle Shimmer\",\n description: \"Looping sparkle twinkles for a magical overlay.\",\n group: \"FX Overlays\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 4,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A gentle, looping sparkle shimmer that overlays footage. Scatter a dozen or so four-point star sparkles (vector star/polygon paths or thin crossed strokes, group-wrapped) across the frame at varied sizes. Each sparkle twinkles by scaling up from 0 and back down while its opacity rises and falls, on its own offset cycle so the field shimmers continuously rather than pulsing in unison — stagger their phase across the timeline. Add a slow, subtle rotation to a few for life. Keep every sparkle the sparkle color (let opacity and scale carry the variation). Use a repeater or a compact set of groups to stay under the layer budget. Soft ease-in-out on each twinkle. Transparent background — overlays footage, so add no backdrop. Seamless loop — every sparkle's last keyframe returns exactly to its first so the shimmer repeats without a seam. Expose slots: sparkleColor.\",\n },\n },\n {\n id: \"motion-graphics/speed-lines\",\n name: \"Speed Lines\",\n description: \"Anime-style speed lines whooshing across the frame.\",\n group: \"FX Overlays\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 2,\n backgroundColor: \"#00000000\",\n motionPrompt:\n \"A short, high-energy burst of anime-style speed lines that overlays footage. Author a set of thin horizontal streaks (narrow tapered rectangles or stroked paths, group-wrapped) at varied vertical positions and lengths; whoosh them across the frame left-to-right (or converging toward center) with a fast linear motion, staggered 1–2 frames apart over the first 10 frames so they read as a rushing swarm. Each line fades in as it enters and fades out as it exits so none lingers. Keep them all the line color and lean on length, position and timing for variety; use a repeater to multiply streaks and stay well under the layer budget. Fast, mechanical linear motion — no easing — for impact. Transparent background — overlays footage, so add no backdrop. One-shot, not looped: the whoosh fires once and clears before the out point. Expose slots: lineColor.\",\n },\n },\n\n // ── Backgrounds ───────────────────────────────────────────────────────────\n {\n id: \"motion-graphics/gradient-blob-loop\",\n name: \"Gradient Blob Loop\",\n description: \"Slow morphing gradient blobs for a looping backdrop.\",\n group: \"Backgrounds\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 8,\n backgroundColor: \"#0a0a12\",\n motionPrompt:\n \"A calm, full-frame animated backdrop of slow-morphing gradient blobs, designed to loop forever behind other content. Place two or three large soft organic blobs (big group-wrapped ellipses or gradient-filled paths) using colorA and colorB, drifting slowly across the frame on gentle looping paths and breathing in scale, so the color softly shifts and overlaps over the full eight seconds. Keep the motion unhurried and continuous with smooth ease-in-out, never sharp. Because this is a standalone backdrop, fill the frame edge-to-edge with the dark opaque base and let the blobs float over it — this preset is allowed a full-frame background. Seamless loop — every blob's position, scale and any gradient stop returns exactly to its starting value on the last frame so the eight-second cycle repeats with no visible seam. Palette: two accent colors blending over the dark base. Expose slots: colorA, colorB.\",\n },\n },\n {\n id: \"motion-graphics/geometric-pattern-loop\",\n name: \"Geometric Pattern Loop\",\n description: \"Tiling geometric shapes animating in a seamless loop.\",\n group: \"Backgrounds\",\n data: {\n engine: \"lottie\",\n aspectRatio: \"16:9\",\n durationSeconds: 8,\n backgroundColor: \"#0b0b0b\",\n motionPrompt:\n \"A full-frame geometric pattern backdrop that loops forever behind other content. Tile a grid of simple shapes (circles, triangles or diamonds — group-wrapped) in the shape color across the dark backdrop color, and animate the field with a traveling wave: each shape scales, rotates or fades on an offset tied to its grid position so a smooth ripple moves diagonally across the frame and wraps continuously. Use a repeater or a compact grid of groups to build the tiling while staying under the 50-layer budget — do not author every cell as its own layer. Keep the motion calm and hypnotic with ease-in-out. Because this is a standalone backdrop, fill the frame with the opaque backdrop color — this preset is allowed a full-frame background. Seamless loop — the wave's phase returns exactly to its start on the last frame so the eight-second cycle repeats with no seam or jump. Palette: one shape color over the dark backdrop color. Expose slots: shapeColor, backdropColor.\",\n },\n },\n]\n","import type { FactoryPreset } from \"./types.js\"\n\n/**\n * Factory presets for the `lottie-overlay` node — placement/timing briefs the\n * overlay planner LLM (see backend/src/prompts/lottie-overlay-system.ts) turns\n * into a timed LottieOverlayPlan over the source video.\n *\n * Each preset's `data` carries ONLY `overlayPrompt`. Deliberately NOT set:\n * `durationSeconds` (the plan timeline must track the SOURCE VIDEO — a baked\n * preset duration would silently truncate the plan on longer footage), `fps`\n * (node default 30), `llmModel` (the user's tier choice), and `overlayPlan`\n * (generated state — cleared generically via PRESET_APPLY_CLEAR_KEYS).\n *\n * Every prompt uses the Nodaro `{variable || default}` reference syntax\n * (node-refs.ts, shipped in PR #3250): run unedited and the default applies;\n * type a value over the token; or wire an upstream node whose label matches\n * the variable name and its output fills the slot at execution time. Both DAG\n * engines resolve the tokens for this node's typed prompt, and the planner's\n * system prompt reads any token that survives unresolved (direct API/MCP\n * calls) as \"<variable> = <default>\" — so the braces never leak into a plan.\n *\n * The \"Connected Graphic\" folder targets the asset wired into the node's\n * `lottie` input (e.g. a Motion Graphics node's authored Lottie); each of\n * those prompts ends with the exclusivity clause \"only the connected graphic\"\n * so the planner never substitutes catalog animations. The other folders name\n * their built-in catalog assets explicitly (LOTTIE_OVERLAY_CATALOG slugs).\n */\nexport const LOTTIE_OVERLAY_PRESETS: readonly FactoryPreset[] = [\n // ── Connected Graphic ─────────────────────────────────────────────────────\n {\n id: \"lottie-overlay/connected-custom\",\n name: \"Overlay Connected Graphic\",\n description: \"Place the wired graphic — position, start time, size and play mode are variables.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Overlay the connected graphic {position || centered} over the video, starting at {start time || 1 second}. Play it {play mode || once at its natural duration, then remove it}. Size it {size || to about half the frame width}, keeping its aspect ratio. Use only the connected graphic — no built-in animations.\",\n },\n },\n {\n id: \"lottie-overlay/connected-full-canvas\",\n name: \"Full-Canvas Graphic\",\n description: \"Stretch the wired graphic across the whole frame — for lower thirds, titles and other full-canvas overlays.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Stretch the connected graphic across the entire frame (x 0, y 0, width 100, height 100) — it was authored on a full transparent canvas (a lower third, title or badge), so its own internal layout decides where content sits. Start it at {start time || 1 second} and play it {play mode || once at its natural duration}. Full opacity. Use only the connected graphic — no built-in animations.\",\n },\n },\n {\n id: \"lottie-overlay/connected-intro\",\n name: \"Intro Sting\",\n description: \"Open the video with the wired graphic, full-frame, then get out of the way.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Open the video with the connected graphic as an intro sting: full-frame from the very first frame, playing once at its natural duration (no loop), then gone for the rest of the video. {treatment || Full opacity, no other effects.} Use only the connected graphic — no built-in animations.\",\n },\n },\n {\n id: \"lottie-overlay/connected-outro\",\n name: \"Outro Sting\",\n description: \"Close the video with the wired graphic, timed to end on the last frame.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Close the video with the connected graphic: show it full-frame over the final {outro window || 4 seconds}, timed so it ends exactly on the video's last frame. If its natural duration is shorter than the window, start it later so it still finishes on the last frame; if it is a looping animation, loop it through the window. Use only the connected graphic — no built-in animations.\",\n },\n },\n {\n id: \"lottie-overlay/connected-corner-bug\",\n name: \"Corner Bug (Loop)\",\n description: \"The wired graphic as a small looping watermark in a corner.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Pin the connected graphic as a small corner bug in the {corner || bottom-right} corner, about {size || 14}% of the frame width, at {opacity || 80}% opacity, looping from the first frame to the last. Keep a small margin (about 3%) from the edges so it never clips. Use only the connected graphic — no built-in animations.\",\n },\n },\n {\n id: \"lottie-overlay/connected-reaction-pop\",\n name: \"Reaction Pop\",\n description: \"Pop the wired graphic in at a moment, sized like a reaction sticker.\",\n group: \"Connected Graphic\",\n data: {\n overlayPrompt:\n \"Pop the connected graphic in at {moment || 2 seconds}, {position || in the lower-right area}, sized like a reaction sticker ({size || about 22}% of the frame width). Play it {play mode || once at its natural duration} and remove it. Use only the connected graphic — no built-in animations.\",\n },\n },\n\n // ── Celebration & FX ──────────────────────────────────────────────────────\n {\n id: \"lottie-overlay/celebration-moment\",\n name: \"Celebration Moment\",\n description: \"Confetti burst at a key moment with a short sparkle tail.\",\n group: \"Celebration & FX\",\n data: {\n overlayPrompt:\n \"Fire a confetti burst at {moment || 3 seconds} covering most of the frame, one-shot. As it lands, add twinkling star sparkles over the {sparkle area || upper third} for {sparkle window || 3 seconds}, then clear the frame. Use the built-in confetti-burst and stars-sparkle assets.\",\n },\n },\n {\n id: \"lottie-overlay/grand-finale\",\n name: \"Grand Finale\",\n description: \"Fireworks and confetti building over the video's final seconds.\",\n group: \"Celebration & FX\",\n data: {\n overlayPrompt:\n \"Build a finale across the last {finale window || 4 seconds} of the video: fireworks bursting over the upper half of the frame, plus a confetti burst as the window opens, both timed to end on the video's last frame. One-shot energy — nothing keeps looping past the end. Use the built-in fireworks and confetti-burst assets.\",\n },\n },\n {\n id: \"lottie-overlay/ambient-particles\",\n name: \"Ambient Particles\",\n description: \"Soft full-frame particles for the whole video; the footage stays the hero.\",\n group: \"Celebration & FX\",\n data: {\n overlayPrompt:\n \"Lay the built-in floating-particles asset over the whole video: full-frame, looping from the first frame to the last, at {opacity || 40}% opacity so the footage stays the hero. Calm and ambient — add nothing else.\",\n },\n },\n\n // ── Reactions & Social ────────────────────────────────────────────────────\n {\n id: \"lottie-overlay/heart-reaction\",\n name: \"Heart Reaction\",\n description: \"Pulsing heart near a corner at a moment.\",\n group: \"Reactions & Social\",\n data: {\n overlayPrompt:\n \"Show the built-in heart-pulse near the {corner || bottom-right} corner, starting at {moment || 2 seconds} and looping for {window || 3 seconds}, about {size || 18}% of the frame width, then remove it.\",\n },\n },\n {\n id: \"lottie-overlay/hype-combo\",\n name: \"Hype Combo\",\n description: \"Thumbs-up pop plus fire emoji at a key beat.\",\n group: \"Reactions & Social\",\n data: {\n overlayPrompt:\n \"At {moment || 2 seconds}, pop the built-in thumbs-up near the {corner || bottom-right} corner (one-shot) and the fire-flame emoji right beside it, looping for {window || 3 seconds}. Medium reaction size (15-20% of the frame width each), staggered a few frames apart so they land with rhythm.\",\n },\n },\n\n // ── Emphasis & UI ─────────────────────────────────────────────────────────\n {\n id: \"lottie-overlay/point-it-out\",\n name: \"Point It Out\",\n description: \"Animated arrow aimed at a spot for a few seconds.\",\n group: \"Emphasis & UI\",\n data: {\n overlayPrompt:\n \"Aim the built-in arrow-pointer at {target || the center of the frame} from {start time || 1 second} for {window || 2.5 seconds}, small (about 12-15% of the frame width), looping while visible, positioned beside the target so it points clearly without covering it.\",\n },\n },\n {\n id: \"lottie-overlay/success-beat\",\n name: \"Success Beat\",\n description: \"Checkmark pop to mark a win or completed step.\",\n group: \"Emphasis & UI\",\n data: {\n overlayPrompt:\n \"Mark a success beat: pop the built-in checkmark-success {position || centered} at {moment || 2 seconds}, about {size || 20}% of the frame width, playing once and then gone. Crisp and quick — no lingering.\",\n },\n },\n]\n","export interface FactoryPreset {\n /** Stable slug \"<nodeType>/<kebab-name>\" — used as a React key and in exports. */\n readonly id: string\n readonly name: string\n readonly description?: string\n /** Optional folder/section label this preset is grouped under in the picker.\n * Presets sharing a `group` render together; \"variants of one idea\" (e.g. the\n * character-sheet family) are simply siblings in the same group. */\n readonly group?: string\n /** How the group renders: a collapsible \"folder\" (default) or a flat \"section\"\n * label. Taken from the first preset that opens the group. */\n readonly groupKind?: \"folder\" | \"section\"\n /**\n * A sub-heading inside the group, for a group large enough to need them (the\n * YouTube tab's topics: \"AI & Tech\", \"Finance & Crypto\"; the social tab's\n * \"Instagram feed\", \"Stories\"). Presets sharing a `section` render together\n * under it, in array order. Absent on a preset filed straight under its group.\n */\n readonly section?: string\n /**\n * Where the result is meant to be posted (\"YouTube\", \"TikTok\", \"LinkedIn\",\n * \"Print\"…), most fitting first, for a preset that makes a deliverable for a\n * place. A client shows the first as a badge and filters a tab by them.\n * Absent on a look or a layout, which has no destination of its own.\n */\n readonly platforms?: readonly string[]\n /** Capture-shaped config (no label / fieldMappings / runtime keys). */\n readonly data: Readonly<Record<string, unknown>>\n /**\n * How many connected reference images the preset works from, stated for a\n * preset whose prompt refers to \"the attached photo\" in words (Reference\n * Sheet, Portrait Transformations, Stylized Subject, Edits, …). Leave it out\n * otherwise: `{image:N}` tokens in the prompt are counted on their own, and\n * the count a client sees is the larger of the two (`presetMinReferences`).\n */\n readonly minReferences?: number\n}\n\n/** A render-ready bucket of factory presets sharing one `group` (or the leading\n * ungrouped bucket, `group: null`). Produced by {@link groupFactoryPresets}. */\nexport interface FactoryPresetGroup<T> {\n /** Stable key for React + collapse state (\"__root__\" for the ungrouped bucket). */\n readonly key: string\n /** Group label, or null for the ungrouped bucket. */\n readonly group: string | null\n readonly groupKind: \"folder\" | \"section\"\n readonly presets: T[]\n}\n\n/**\n * Bucket an ordered list of presets by their `group` field for rendering. Groups\n * appear in first-appearance order; presets keep their array order within a\n * group; ungrouped presets collect into a single leading `null` bucket. Pure and\n * UI-agnostic (operates on anything carrying `group`/`groupKind`) so the config\n * panel dropdown reuses it and it stays unit-testable.\n */\nexport function groupFactoryPresets<\n T extends { group?: string; groupKind?: \"folder\" | \"section\" },\n>(presets: readonly T[]): FactoryPresetGroup<T>[] {\n const buckets: FactoryPresetGroup<T>[] = []\n const byKey = new Map<string, FactoryPresetGroup<T>>()\n for (const p of presets) {\n const key = p.group ?? \"__root__\"\n let bucket = byKey.get(key)\n if (!bucket) {\n bucket = { key, group: p.group ?? null, groupKind: p.groupKind ?? \"folder\", presets: [] }\n byKey.set(key, bucket)\n buckets.push(bucket)\n }\n bucket.presets.push(p)\n }\n return buckets\n}\n","import { IMAGE_TOKEN_PATTERN } from \"../image-token-pattern.js\"\nimport { getPromptFields, nodeSupportsPromptAffixes, promptAffixCoreField } from \"../node-prompt-fields.js\"\nimport { NODE_PROMPT_CANDIDATE_FIELDS } from \"../resolve-prompt.js\"\nimport { ownEntry } from \"../own-entry.js\"\nimport { MODELS_WITH_REFERENCE_IMAGE_SUPPORT, imageReferenceLimit } from \"@nodaro/shared/models\"\n\n/**\n * The most reference images any image model takes. A preset can never need\n * more than some model could be sent, so a count is clamped to it — a typo\n * like `{image:99999}` must not tell a client to ask for 99,999 photos.\n */\nexport const MAX_PRESET_REFERENCES: number = Math.max(\n 1,\n ...[...MODELS_WITH_REFERENCE_IMAGE_SUPPORT].map((provider) => imageReferenceLimit(provider)),\n)\n\n/**\n * The data fields of `nodeType` a reference token can sit in — every field the\n * run reads its prompt from: the candidate fields `computeNodePrompt` joins\n * (`NODE_PROMPT_CANDIDATE_FIELDS` — how a preset's prompt is resolved when it\n * runs, on the canvas and through `presetId` alike), the prompt-field\n * registry's own prompt and negative fields, the field the run wraps with\n * pre/post text, and the pre/post text itself where the node takes it. A node\n * whose prompt lives elsewhere (`llm-chat` → `userInput`) is read where its\n * prompt really is; a type with no prompt (an app namespace) has none.\n */\nfunction promptFieldsOf(nodeType: string): string[] {\n const spec = getPromptFields(nodeType)\n const candidates = ownEntry(NODE_PROMPT_CANDIDATE_FIELDS, nodeType) ?? []\n if (!spec && candidates.length === 0) return []\n const fields = new Set<string>(candidates)\n if (spec) {\n fields.add(spec.prompt)\n if (spec.negative) fields.add(spec.negative)\n }\n const core = promptAffixCoreField(nodeType)\n if (core) fields.add(core)\n if (nodeSupportsPromptAffixes(nodeType)) {\n fields.add(\"promptPrefix\")\n fields.add(\"promptSuffix\")\n }\n return [...fields]\n}\n\n/** The highest `{image:N}` / `{image:N:label}` position in `text`, or 0. */\nfunction highestImageToken(text: string): number {\n let highest = 0\n for (const match of text.matchAll(IMAGE_TOKEN_PATTERN)) {\n const n = Number.parseInt(match[1] ?? \"\", 10)\n if (Number.isInteger(n) && n > highest) highest = n\n }\n return highest\n}\n\n/**\n * How many connected reference images a preset works from — 0 for a preset\n * that needs none. A client shows a preset with a non-zero count as \"needs a\n * photo\" (`needsImage`) and asks for that many before running it.\n *\n * Two sources, and the larger wins:\n * - the `{image:N}` / `{image:N:label}` tokens in the preset's prompt fields\n * (the highest N): a template that names its references always reports them;\n * - `declared` — the factory preset's own `minReferences`, for presets whose\n * prompt refers to \"the attached photo\" in words, which no data field marks.\n * A user preset has no declaration, so its count comes from its tokens.\n *\n * Pure; never throws. A declaration that is not a positive whole number is\n * ignored, and the result is at most {@link MAX_PRESET_REFERENCES}.\n */\nexport function presetMinReferences(\n nodeType: string,\n data: Readonly<Record<string, unknown>>,\n declared?: number,\n): number {\n let count = typeof declared === \"number\" && Number.isInteger(declared) && declared > 0 ? declared : 0\n for (const field of promptFieldsOf(nodeType)) {\n const value = data[field]\n if (typeof value === \"string\") count = Math.max(count, highestImageToken(value))\n }\n return Math.min(count, MAX_PRESET_REFERENCES)\n}\n","// GENERATED by tools/preset-previews/build.mts — do not edit. Factory preset id →\n// content-hashed file under frontend/public/preset-previews/: the tile picture\n// (`<nodeType>/<slug>.<hash8>.webp`, 512px wide) and the full-screen one\n// (`1024/<nodeType>/<slug>.<hash8>.webp`, at most 1024px wide, with its real width —\n// what `previewSrcSet` states).\nexport const FACTORY_PRESET_PREVIEW_FILES: Readonly<Record<string, string>> = {\n \"generate-image/ad-app-store-screenshot\": \"generate-image/ad-app-store-screenshot.cc4be436.webp\",\n \"generate-image/ad-clinic\": \"generate-image/ad-clinic.db626c20.webp\",\n \"generate-image/ad-facebook-lead\": \"generate-image/ad-facebook-lead.3579cc04.webp\",\n \"generate-image/ad-gym-offer\": \"generate-image/ad-gym-offer.f8ebab0a.webp\",\n \"generate-image/ad-real-estate-listing\": \"generate-image/ad-real-estate-listing.93d3a605.webp\",\n \"generate-image/ad-restaurant-special\": \"generate-image/ad-restaurant-special.73882d26.webp\",\n \"generate-image/ad-salon-promo\": \"generate-image/ad-salon-promo.eaa99657.webp\",\n \"generate-image/ad-service-van\": \"generate-image/ad-service-van.b57b1b54.webp\",\n \"generate-image/ad-store-sale\": \"generate-image/ad-store-sale.866fe79b.webp\",\n \"generate-image/brand-linkedin-banner\": \"generate-image/brand-linkedin-banner.d25b53a1.webp\",\n \"generate-image/brand-podcast-cover\": \"generate-image/brand-podcast-cover.e6fe54c6.webp\",\n \"generate-image/brand-profile-picture\": \"generate-image/brand-profile-picture.1d86969f.webp\",\n \"generate-image/brand-spotify-canvas\": \"generate-image/brand-spotify-canvas.e2a50b10.webp\",\n \"generate-image/brand-twitch-banner\": \"generate-image/brand-twitch-banner.758bed19.webp\",\n \"generate-image/community-fundraiser\": \"generate-image/community-fundraiser.927af9aa.webp\",\n \"generate-image/community-menu-board\": \"generate-image/community-menu-board.43c04fcf.webp\",\n \"generate-image/ecom-amazon-hero\": \"generate-image/ecom-amazon-hero.35c45bc6.webp\",\n \"generate-image/ecom-etsy-handmade\": \"generate-image/ecom-etsy-handmade.ef5a1aa3.webp\",\n \"generate-image/ecom-fashion-ghost\": \"generate-image/ecom-fashion-ghost.5261a8aa.webp\",\n \"generate-image/ecom-infographic\": \"generate-image/ecom-infographic.2a4e5c10.webp\",\n \"generate-image/ecom-lifestyle-shot\": \"generate-image/ecom-lifestyle-shot.1d696873.webp\",\n \"generate-image/ecom-sale-badge\": \"generate-image/ecom-sale-badge.f2255d26.webp\",\n \"generate-image/edu-flashcard\": \"generate-image/edu-flashcard.4e13348c.webp\",\n \"generate-image/edu-slide-title\": \"generate-image/edu-slide-title.1fd4218e.webp\",\n \"generate-image/edu-worksheet-header\": \"generate-image/edu-worksheet-header.74dcda6d.webp\",\n \"generate-image/event-baby-shower\": \"generate-image/event-baby-shower.648c65ca.webp\",\n \"generate-image/event-birthday-invite\": \"generate-image/event-birthday-invite.eba66a3d.webp\",\n \"generate-image/event-club-flyer\": \"generate-image/event-club-flyer.efefd1bf.webp\",\n \"generate-image/event-conference-banner\": \"generate-image/event-conference-banner.45f19abb.webp\",\n \"generate-image/event-holiday-greeting\": \"generate-image/event-holiday-greeting.105cd1e4.webp\",\n \"generate-image/event-wedding-invite\": \"generate-image/event-wedding-invite.14b5c728.webp\",\n \"generate-image/fb-event-cover\": \"generate-image/fb-event-cover.d67a0951.webp\",\n \"generate-image/fb-group-cover\": \"generate-image/fb-group-cover.83295b44.webp\",\n \"generate-image/ig-carousel-cover\": \"generate-image/ig-carousel-cover.72f07be4.webp\",\n \"generate-image/ig-flatlay\": \"generate-image/ig-flatlay.78abe5f6.webp\",\n \"generate-image/ig-giveaway\": \"generate-image/ig-giveaway.0c72e2c7.webp\",\n \"generate-image/ig-new-drop\": \"generate-image/ig-new-drop.13c4e4fd.webp\",\n \"generate-image/ig-photo-dump\": \"generate-image/ig-photo-dump.fb81aee7.webp\",\n \"generate-image/ig-testimonial\": \"generate-image/ig-testimonial.5cbc0fd1.webp\",\n \"generate-image/layout-2x2-grid\": \"generate-image/layout-2x2-grid.b9cd1f55.webp\",\n \"generate-image/layout-comic-page\": \"generate-image/layout-comic-page.436ef08d.webp\",\n \"generate-image/layout-headless-sheet\": \"generate-image/layout-headless-sheet.23a9a925.webp\",\n \"generate-image/layout-multi-shot\": \"generate-image/layout-multi-shot.f08a37c5.webp\",\n \"generate-image/layout-production-storyboard\": \"generate-image/layout-production-storyboard.455da369.webp\",\n \"generate-image/layout-props-sheet\": \"generate-image/layout-props-sheet.509d1b4e.webp\",\n \"generate-image/layout-sprite-sheet\": \"generate-image/layout-sprite-sheet.d0ede2b1.webp\",\n \"generate-image/layout-storyboard-6\": \"generate-image/layout-storyboard-6.af6a6ab9.webp\",\n \"generate-image/layout-visionary-magazine-cover\": \"generate-image/layout-visionary-magazine-cover.805af457.webp\",\n \"generate-image/li-certified\": \"generate-image/li-certified.b0814a67.webp\",\n \"generate-image/li-infographic\": \"generate-image/li-infographic.b172e374.webp\",\n \"generate-image/merch-mug\": \"generate-image/merch-mug.01fe6855.webp\",\n \"generate-image/merch-standalone-print-art\": \"generate-image/merch-standalone-print-art.029f21bf.webp\",\n \"generate-image/merch-sticker-sheet\": \"generate-image/merch-sticker-sheet.9ab6885a.webp\",\n \"generate-image/merch-tshirt-design\": \"generate-image/merch-tshirt-design.0d259ff3.webp\",\n \"generate-image/personal-birthday-card\": \"generate-image/personal-birthday-card.1584a19d.webp\",\n \"generate-image/personal-dating-profile\": \"generate-image/personal-dating-profile.043e4e70.webp\",\n \"generate-image/personal-family-holiday-card\": \"generate-image/personal-family-holiday-card.5884a5ae.webp\",\n \"generate-image/personal-meme-template\": \"generate-image/personal-meme-template.a2d4b6e3.webp\",\n \"generate-image/personal-pet-portrait\": \"generate-image/personal-pet-portrait.e21c130f.webp\",\n \"generate-image/personal-phone-wallpaper\": \"generate-image/personal-phone-wallpaper.9e2a506d.webp\",\n \"generate-image/pin-home-decor\": \"generate-image/pin-home-decor.2978c19c.webp\",\n \"generate-image/pin-outfit-ideas\": \"generate-image/pin-outfit-ideas.62711e8a.webp\",\n \"generate-image/pin-recipe\": \"generate-image/pin-recipe.40179850.webp\",\n \"generate-image/post-big-caption\": \"generate-image/post-big-caption.e4032391.webp\",\n \"generate-image/post-carousel-cover\": \"generate-image/post-carousel-cover.7fa5757a.webp\",\n \"generate-image/post-employee-spotlight\": \"generate-image/post-employee-spotlight.56105b53.webp\",\n \"generate-image/post-event-announcement\": \"generate-image/post-event-announcement.357fecca.webp\",\n \"generate-image/post-hiring\": \"generate-image/post-hiring.4432df15.webp\",\n \"generate-image/post-old-vs-new\": \"generate-image/post-old-vs-new.ebbdf54e.webp\",\n \"generate-image/post-quote-card\": \"generate-image/post-quote-card.7f84c0b3.webp\",\n \"generate-image/short-ai-free-tool\": \"generate-image/short-ai-free-tool.81720d0d.webp\",\n \"generate-image/short-dance-trend\": \"generate-image/short-dance-trend.7da41dd0.webp\",\n \"generate-image/short-fitness-daily\": \"generate-image/short-fitness-daily.4d4f0a35.webp\",\n \"generate-image/short-grwm-outfit\": \"generate-image/short-grwm-outfit.ecf4bb47.webp\",\n \"generate-image/short-morning-routine\": \"generate-image/short-morning-routine.13e001c8.webp\",\n \"generate-image/short-pov-hook\": \"generate-image/short-pov-hook.a9d99157.webp\",\n \"generate-image/short-quick-recipe\": \"generate-image/short-quick-recipe.323e7fd8.webp\",\n \"generate-image/short-side-income\": \"generate-image/short-side-income.28258977.webp\",\n \"generate-image/short-storytime\": \"generate-image/short-storytime.19767fd7.webp\",\n \"generate-image/short-three-steps\": \"generate-image/short-three-steps.feb9b9be.webp\",\n \"generate-image/sport-match-day\": \"generate-image/sport-match-day.16bc21c4.webp\",\n \"generate-image/sport-player-card\": \"generate-image/sport-player-card.6befd22a.webp\",\n \"generate-image/story-countdown\": \"generate-image/story-countdown.8189871a.webp\",\n \"generate-image/story-link-above\": \"generate-image/story-link-above.e8c6d2c7.webp\",\n \"generate-image/story-this-or-that\": \"generate-image/story-this-or-that.6c0aff42.webp\",\n \"generate-image/text-80s-synthwave\": \"generate-image/text-80s-synthwave.6f69d06d.webp\",\n \"generate-image/text-anime-title\": \"generate-image/text-anime-title.e76f360e.webp\",\n \"generate-image/text-art-deco\": \"generate-image/text-art-deco.682921f8.webp\",\n \"generate-image/text-balloon-foil\": \"generate-image/text-balloon-foil.0e360a7b.webp\",\n \"generate-image/text-blockbuster\": \"generate-image/text-blockbuster.dcbd6473.webp\",\n \"generate-image/text-botanical-serif\": \"generate-image/text-botanical-serif.e1b27958.webp\",\n \"generate-image/text-brutalist-acid\": \"generate-image/text-brutalist-acid.dd43a673.webp\",\n \"generate-image/text-carved-wood\": \"generate-image/text-carved-wood.b874b163.webp\",\n \"generate-image/text-chalkboard\": \"generate-image/text-chalkboard.e32081f9.webp\",\n \"generate-image/text-chrome-y2k\": \"generate-image/text-chrome-y2k.ee29009e.webp\",\n \"generate-image/text-comic-hero\": \"generate-image/text-comic-hero.7daa6131.webp\",\n \"generate-image/text-disco-funk\": \"generate-image/text-disco-funk.bf8a8ec0.webp\",\n \"generate-image/text-embroidered-patch\": \"generate-image/text-embroidered-patch.3a4eb952.webp\",\n \"generate-image/text-film-noir\": \"generate-image/text-film-noir.f2a5c80b.webp\",\n \"generate-image/text-fire-embers\": \"generate-image/text-fire-embers.97bdb301.webp\",\n \"generate-image/text-frosted-glass\": \"generate-image/text-frosted-glass.0890d83d.webp\",\n \"generate-image/text-glitch\": \"generate-image/text-glitch.9e97e6c7.webp\",\n \"generate-image/text-gold-foil-luxury\": \"generate-image/text-gold-foil-luxury.4d2f9b06.webp\",\n \"generate-image/text-graffiti-drip\": \"generate-image/text-graffiti-drip.f7ce0c89.webp\",\n \"generate-image/text-grunge-stamp\": \"generate-image/text-grunge-stamp.09c63502.webp\",\n \"generate-image/text-handwritten-marker\": \"generate-image/text-handwritten-marker.ce44d3a0.webp\",\n \"generate-image/text-holographic\": \"generate-image/text-holographic.0eda627a.webp\",\n \"generate-image/text-horror-poster\": \"generate-image/text-horror-poster.2a61704e.webp\",\n \"generate-image/text-ice\": \"generate-image/text-ice.50887312.webp\",\n \"generate-image/text-indie-title-card\": \"generate-image/text-indie-title-card.cfcebc48.webp\",\n \"generate-image/text-inflated-clay\": \"generate-image/text-inflated-clay.0057812c.webp\",\n \"generate-image/text-kids-party\": \"generate-image/text-kids-party.af5bd07a.webp\",\n \"generate-image/text-liquid-water\": \"generate-image/text-liquid-water.c64a9318.webp\",\n \"generate-image/text-marble-carved\": \"generate-image/text-marble-carved.91383794.webp\",\n \"generate-image/text-molten-gold\": \"generate-image/text-molten-gold.fdb906cd.webp\",\n \"generate-image/text-neon-sign\": \"generate-image/text-neon-sign.accc4e5b.webp\",\n \"generate-image/text-paper-cutout\": \"generate-image/text-paper-cutout.439e6f17.webp\",\n \"generate-image/text-pixel-8bit\": \"generate-image/text-pixel-8bit.323a5d2b.webp\",\n \"generate-image/text-psychedelic-60s\": \"generate-image/text-psychedelic-60s.27b09537.webp\",\n \"generate-image/text-ransom-note\": \"generate-image/text-ransom-note.39ac4b45.webp\",\n \"generate-image/text-retro-serif-70s\": \"generate-image/text-retro-serif-70s.f1b0d09a.webp\",\n \"generate-image/text-rusted-metal\": \"generate-image/text-rusted-metal.4343e0c0.webp\",\n \"generate-image/text-scifi-chrome\": \"generate-image/text-scifi-chrome.76c4d799.webp\",\n \"generate-image/text-smoke\": \"generate-image/text-smoke.75712a83.webp\",\n \"generate-image/text-sticker-pop\": \"generate-image/text-sticker-pop.73b1064e.webp\",\n \"generate-image/text-typewriter\": \"generate-image/text-typewriter.f13e6a34.webp\",\n \"generate-image/text-varsity-sport\": \"generate-image/text-varsity-sport.6c2264b8.webp\",\n \"generate-image/text-vhs-glow\": \"generate-image/text-vhs-glow.d5999982.webp\",\n \"generate-image/text-wedding-script\": \"generate-image/text-wedding-script.1c93a694.webp\",\n \"generate-image/text-western\": \"generate-image/text-western.5813ec6f.webp\",\n \"generate-image/thumb-ai-feature-grid\": \"generate-image/thumb-ai-feature-grid.ec511781.webp\",\n \"generate-image/thumb-ai-os-icons\": \"generate-image/thumb-ai-os-icons.b4c033bd.webp\",\n \"generate-image/thumb-ai-tool-reveal\": \"generate-image/thumb-ai-tool-reveal.a8c5c174.webp\",\n \"generate-image/thumb-analytics-growth\": \"generate-image/thumb-analytics-growth.dde8ff94.webp\",\n \"generate-image/thumb-beauty-makeup\": \"generate-image/thumb-beauty-makeup.d25dcf39.webp\",\n \"generate-image/thumb-before-after\": \"generate-image/thumb-before-after.0edb1f75.webp\",\n \"generate-image/thumb-breaking-news\": \"generate-image/thumb-breaking-news.b0336068.webp\",\n \"generate-image/thumb-burning-question\": \"generate-image/thumb-burning-question.1c114d30.webp\",\n \"generate-image/thumb-challenge-timer\": \"generate-image/thumb-challenge-timer.eaf939b4.webp\",\n \"generate-image/thumb-coding-tutorial\": \"generate-image/thumb-coding-tutorial.5f0d7bc9.webp\",\n \"generate-image/thumb-copy-me-arrow\": \"generate-image/thumb-copy-me-arrow.95fbf3ba.webp\",\n \"generate-image/thumb-course-launch\": \"generate-image/thumb-course-launch.f8162198.webp\",\n \"generate-image/thumb-creator-milestone\": \"generate-image/thumb-creator-milestone.23c2ee17.webp\",\n \"generate-image/thumb-crypto-pump\": \"generate-image/thumb-crypto-pump.6eac8cec.webp\",\n \"generate-image/thumb-diet-plan\": \"generate-image/thumb-diet-plan.eb2db844.webp\",\n \"generate-image/thumb-doctor-health\": \"generate-image/thumb-doctor-health.071de5b6.webp\",\n \"generate-image/thumb-docu-expose\": \"generate-image/thumb-docu-expose.86ab2103.webp\",\n \"generate-image/thumb-earnings-proof\": \"generate-image/thumb-earnings-proof.a0c42610.webp\",\n \"generate-image/thumb-editorial-type\": \"generate-image/thumb-editorial-type.a209b393.webp\",\n \"generate-image/thumb-finance-shock\": \"generate-image/thumb-finance-shock.722608c1.webp\",\n \"generate-image/thumb-fitness-transform\": \"generate-image/thumb-fitness-transform.5dcb2ad6.webp\",\n \"generate-image/thumb-food-feast\": \"generate-image/thumb-food-feast.d5aaf1c3.webp\",\n \"generate-image/thumb-founder-story\": \"generate-image/thumb-founder-story.2ece8b39.webp\",\n \"generate-image/thumb-gaming-golden-item\": \"generate-image/thumb-gaming-golden-item.25dd15c4.webp\",\n \"generate-image/thumb-gaming-rush\": \"generate-image/thumb-gaming-rush.293f3d32.webp\",\n \"generate-image/thumb-hero-object\": \"generate-image/thumb-hero-object.08b60e11.webp\",\n \"generate-image/thumb-interview-two-up\": \"generate-image/thumb-interview-two-up.ed0a0cb5.webp\",\n \"generate-image/thumb-language-learning\": \"generate-image/thumb-language-learning.c8e15dda.webp\",\n \"generate-image/thumb-legal-explainer\": \"generate-image/thumb-legal-explainer.7a623840.webp\",\n \"generate-image/thumb-listicle-number\": \"generate-image/thumb-listicle-number.794c1c9c.webp\",\n \"generate-image/thumb-live-show\": \"generate-image/thumb-live-show.70fb7ca4.webp\",\n \"generate-image/thumb-map-pin\": \"generate-image/thumb-map-pin.081875df.webp\",\n \"generate-image/thumb-minimal-tech\": \"generate-image/thumb-minimal-tech.ae0deae9.webp\",\n \"generate-image/thumb-model-vs-model\": \"generate-image/thumb-model-vs-model.d23fb5c3.webp\",\n \"generate-image/thumb-motivation\": \"generate-image/thumb-motivation.71c6ccbf.webp\",\n \"generate-image/thumb-mystery-blur\": \"generate-image/thumb-mystery-blur.ff13c355.webp\",\n \"generate-image/thumb-new-model-drop\": \"generate-image/thumb-new-model-drop.49f031b8.webp\",\n \"generate-image/thumb-node-diagram\": \"generate-image/thumb-node-diagram.201cde7a.webp\",\n \"generate-image/thumb-parenting\": \"generate-image/thumb-parenting.ae2fd11b.webp\",\n \"generate-image/thumb-pets\": \"generate-image/thumb-pets.7590cdb1.webp\",\n \"generate-image/thumb-playful-cast\": \"generate-image/thumb-playful-cast.430ec733.webp\",\n \"generate-image/thumb-quote-highlight\": \"generate-image/thumb-quote-highlight.e42c549d.webp\",\n \"generate-image/thumb-real-estate-agent\": \"generate-image/thumb-real-estate-agent.edc292a7.webp\",\n \"generate-image/thumb-red-x-green-check\": \"generate-image/thumb-red-x-green-check.97bd8f7d.webp\",\n \"generate-image/thumb-reel-cover-bold\": \"generate-image/thumb-reel-cover-bold.70cebb5d.webp\",\n \"generate-image/thumb-science-explainer\": \"generate-image/thumb-science-explainer.48d4e2b2.webp\",\n \"generate-image/thumb-screen-portals\": \"generate-image/thumb-screen-portals.3cc250a4.webp\",\n \"generate-image/thumb-shocked-reaction\": \"generate-image/thumb-shocked-reaction.b37536d5.webp\",\n \"generate-image/thumb-sports-highlight\": \"generate-image/thumb-sports-highlight.f7d2f73c.webp\",\n \"generate-image/thumb-squad-chaos\": \"generate-image/thumb-squad-chaos.29fa78d1.webp\",\n \"generate-image/thumb-stage-talk\": \"generate-image/thumb-stage-talk.bdedf024.webp\",\n \"generate-image/thumb-stock-call\": \"generate-image/thumb-stock-call.bdc1178d.webp\",\n \"generate-image/thumb-swiss-collage\": \"generate-image/thumb-swiss-collage.d249f1eb.webp\",\n \"generate-image/thumb-tech-glitch\": \"generate-image/thumb-tech-glitch.69e9b5a3.webp\",\n \"generate-image/thumb-tier-list\": \"generate-image/thumb-tier-list.5c321d2e.webp\",\n \"generate-image/thumb-travel-wanderlust\": \"generate-image/thumb-travel-wanderlust.dd11266d.webp\",\n \"generate-image/thumb-true-crime-board\": \"generate-image/thumb-true-crime-board.fde1a260.webp\",\n \"generate-image/thumb-unboxing\": \"generate-image/thumb-unboxing.411c89c6.webp\",\n \"generate-image/thumb-versus-battle\": \"generate-image/thumb-versus-battle.02a50899.webp\",\n \"generate-image/thumb-vlog-bright\": \"generate-image/thumb-vlog-bright.d3e9fc42.webp\",\n \"generate-image/uc-001-business\": \"generate-image/uc-001-business.760a560f.webp\",\n \"generate-image/uc-002-business\": \"generate-image/uc-002-business.9d82c3d6.webp\",\n \"generate-image/uc-003-business\": \"generate-image/uc-003-business.a56dcbbc.webp\",\n \"generate-image/uc-004-business\": \"generate-image/uc-004-business.a38bf3c8.webp\",\n \"generate-image/uc-005-business\": \"generate-image/uc-005-business.d65fa799.webp\",\n \"generate-image/uc-006-business\": \"generate-image/uc-006-business.65d51261.webp\",\n \"generate-image/uc-007-business\": \"generate-image/uc-007-business.3e2353e1.webp\",\n \"generate-image/uc-008-business\": \"generate-image/uc-008-business.9a43c2dd.webp\",\n \"generate-image/uc-009-business\": \"generate-image/uc-009-business.968256cd.webp\",\n \"generate-image/uc-010-business\": \"generate-image/uc-010-business.676a1df5.webp\",\n \"generate-image/uc-011-business\": \"generate-image/uc-011-business.2ec5aa3f.webp\",\n \"generate-image/uc-012-business\": \"generate-image/uc-012-business.9d8faaea.webp\",\n \"generate-image/uc-013-business\": \"generate-image/uc-013-business.689a58ed.webp\",\n \"generate-image/uc-014-business\": \"generate-image/uc-014-business.0bd5a82e.webp\",\n \"generate-image/uc-015-business\": \"generate-image/uc-015-business.dde857fe.webp\",\n \"generate-image/uc-016-business\": \"generate-image/uc-016-business.637f04ad.webp\",\n \"generate-image/uc-017-business\": \"generate-image/uc-017-business.904a9e63.webp\",\n \"generate-image/uc-018-business\": \"generate-image/uc-018-business.c7682cf5.webp\",\n \"generate-image/uc-019-business\": \"generate-image/uc-019-business.7687a220.webp\",\n \"generate-image/uc-020-business\": \"generate-image/uc-020-business.b5b27daf.webp\",\n \"generate-image/uc-021-business\": \"generate-image/uc-021-business.881c36ff.webp\",\n \"generate-image/uc-022-business\": \"generate-image/uc-022-business.d63f0b1d.webp\",\n \"generate-image/uc-023-business\": \"generate-image/uc-023-business.347a70bd.webp\",\n \"generate-image/uc-024-business\": \"generate-image/uc-024-business.994117c5.webp\",\n \"generate-image/uc-025-business\": \"generate-image/uc-025-business.b17a59d7.webp\",\n \"generate-image/uc-026-business\": \"generate-image/uc-026-business.f2f964bd.webp\",\n \"generate-image/uc-027-business\": \"generate-image/uc-027-business.ea31ce8e.webp\",\n \"generate-image/uc-028-business\": \"generate-image/uc-028-business.27d364c3.webp\",\n \"generate-image/uc-029-business\": \"generate-image/uc-029-business.b58bf20f.webp\",\n \"generate-image/uc-030-business\": \"generate-image/uc-030-business.6dfb9e34.webp\",\n \"generate-image/uc-031-personal\": \"generate-image/uc-031-personal.cdcab230.webp\",\n \"generate-image/uc-032-personal\": \"generate-image/uc-032-personal.087d4d5c.webp\",\n \"generate-image/uc-033-personal\": \"generate-image/uc-033-personal.84f62106.webp\",\n \"generate-image/uc-034-personal\": \"generate-image/uc-034-personal.3edca886.webp\",\n \"generate-image/uc-035-personal\": \"generate-image/uc-035-personal.b0a37302.webp\",\n \"generate-image/uc-036-personal\": \"generate-image/uc-036-personal.26a2b87c.webp\",\n \"generate-image/uc-037-personal\": \"generate-image/uc-037-personal.57a8458d.webp\",\n \"generate-image/uc-038-personal\": \"generate-image/uc-038-personal.32c37fe5.webp\",\n \"generate-image/uc-039-personal\": \"generate-image/uc-039-personal.3616068e.webp\",\n \"generate-image/uc-040-personal\": \"generate-image/uc-040-personal.2b765800.webp\",\n \"generate-image/uc-041-personal\": \"generate-image/uc-041-personal.8d579f95.webp\",\n \"generate-image/uc-042-personal\": \"generate-image/uc-042-personal.db9ad1e2.webp\",\n \"generate-image/uc-043-personal\": \"generate-image/uc-043-personal.8e6aa722.webp\",\n \"generate-image/uc-044-personal\": \"generate-image/uc-044-personal.3fb4b2cd.webp\",\n \"generate-image/uc-045-personal\": \"generate-image/uc-045-personal.f57edec5.webp\",\n \"generate-image/uc-046-personal\": \"generate-image/uc-046-personal.2b281bb4.webp\",\n \"generate-image/uc-047-personal\": \"generate-image/uc-047-personal.43c794e1.webp\",\n \"generate-image/uc-048-personal\": \"generate-image/uc-048-personal.d71146d6.webp\",\n \"generate-image/uc-049-personal\": \"generate-image/uc-049-personal.a83ebfe5.webp\",\n \"generate-image/uc-050-personal\": \"generate-image/uc-050-personal.21c217aa.webp\",\n \"generate-image/uc-051-products\": \"generate-image/uc-051-products.24525387.webp\",\n \"generate-image/uc-052-products\": \"generate-image/uc-052-products.aa1aadfe.webp\",\n \"generate-image/uc-053-products\": \"generate-image/uc-053-products.9a6ebc32.webp\",\n \"generate-image/uc-054-products\": \"generate-image/uc-054-products.1b1933a8.webp\",\n \"generate-image/uc-055-products\": \"generate-image/uc-055-products.7171ff88.webp\",\n \"generate-image/uc-056-products\": \"generate-image/uc-056-products.480d2b0e.webp\",\n \"generate-image/uc-057-products\": \"generate-image/uc-057-products.24f38670.webp\",\n \"generate-image/uc-058-products\": \"generate-image/uc-058-products.878df1de.webp\",\n \"generate-image/uc-059-products\": \"generate-image/uc-059-products.ce6554c6.webp\",\n \"generate-image/uc-060-products\": \"generate-image/uc-060-products.56d89fdd.webp\",\n \"generate-image/uc-061-products\": \"generate-image/uc-061-products.6d09dd18.webp\",\n \"generate-image/uc-062-products\": \"generate-image/uc-062-products.4e2c04eb.webp\",\n \"generate-image/uc-063-products\": \"generate-image/uc-063-products.abf6c4a1.webp\",\n \"generate-image/uc-064-products\": \"generate-image/uc-064-products.d31adf71.webp\",\n \"generate-image/uc-065-products\": \"generate-image/uc-065-products.f14f40d7.webp\",\n \"generate-image/uc-066-products\": \"generate-image/uc-066-products.9d3ea4a3.webp\",\n \"generate-image/uc-067-products\": \"generate-image/uc-067-products.ca03a387.webp\",\n \"generate-image/uc-068-products\": \"generate-image/uc-068-products.9e9f2da7.webp\",\n \"generate-image/uc-069-products\": \"generate-image/uc-069-products.b9b17447.webp\",\n \"generate-image/uc-070-products\": \"generate-image/uc-070-products.201c3f73.webp\",\n \"generate-image/uc-071-creative\": \"generate-image/uc-071-creative.45d7a815.webp\",\n \"generate-image/uc-072-creative\": \"generate-image/uc-072-creative.18eb4e6a.webp\",\n \"generate-image/uc-073-creative\": \"generate-image/uc-073-creative.09242481.webp\",\n \"generate-image/uc-074-creative\": \"generate-image/uc-074-creative.7f413534.webp\",\n \"generate-image/uc-075-creative\": \"generate-image/uc-075-creative.387a3475.webp\",\n \"generate-image/uc-076-creative\": \"generate-image/uc-076-creative.ca9c0ba9.webp\",\n \"generate-image/uc-077-creative\": \"generate-image/uc-077-creative.1073ba35.webp\",\n \"generate-image/uc-078-creative\": \"generate-image/uc-078-creative.df5a193b.webp\",\n \"generate-image/uc-079-creative\": \"generate-image/uc-079-creative.2d24dd5c.webp\",\n \"generate-image/uc-080-creative\": \"generate-image/uc-080-creative.f02367a0.webp\",\n \"generate-image/uc-081-creative\": \"generate-image/uc-081-creative.85518e53.webp\",\n \"generate-image/uc-082-creative\": \"generate-image/uc-082-creative.7ee9f51c.webp\",\n \"generate-image/uc-083-creative\": \"generate-image/uc-083-creative.32517748.webp\",\n \"generate-image/uc-084-creative\": \"generate-image/uc-084-creative.c5993518.webp\",\n \"generate-image/uc-085-creative\": \"generate-image/uc-085-creative.94dcdb1c.webp\",\n \"generate-image/uc-086-creative\": \"generate-image/uc-086-creative.c33c9a20.webp\",\n \"generate-image/uc-087-creative\": \"generate-image/uc-087-creative.d7534f34.webp\",\n \"generate-image/uc-088-creative\": \"generate-image/uc-088-creative.1083f785.webp\",\n \"generate-image/uc-089-creative\": \"generate-image/uc-089-creative.2fb5444a.webp\",\n \"generate-image/uc-090-creative\": \"generate-image/uc-090-creative.5cd1a01d.webp\",\n \"generate-image/uc-091-home\": \"generate-image/uc-091-home.f5898fa5.webp\",\n \"generate-image/uc-092-home\": \"generate-image/uc-092-home.5021abf9.webp\",\n \"generate-image/uc-093-home\": \"generate-image/uc-093-home.baa37f8f.webp\",\n \"generate-image/uc-094-home\": \"generate-image/uc-094-home.1897655a.webp\",\n \"generate-image/uc-095-home\": \"generate-image/uc-095-home.3dfc55d9.webp\",\n \"generate-image/uc-096-home\": \"generate-image/uc-096-home.b9e3bbde.webp\",\n \"generate-image/uc-097-home\": \"generate-image/uc-097-home.2f11d345.webp\",\n \"generate-image/uc-098-home\": \"generate-image/uc-098-home.29ca01eb.webp\",\n \"generate-image/uc-099-home\": \"generate-image/uc-099-home.b6b91b40.webp\",\n \"generate-image/uc-100-home\": \"generate-image/uc-100-home.bc9c4e59.webp\",\n \"generate-image/uc-101-home\": \"generate-image/uc-101-home.fdd82c66.webp\",\n \"generate-image/uc-102-home\": \"generate-image/uc-102-home.7c85dd0b.webp\",\n \"generate-image/uc-103-home\": \"generate-image/uc-103-home.b410a87f.webp\",\n \"generate-image/uc-104-home\": \"generate-image/uc-104-home.585ed9ce.webp\",\n \"generate-image/uc-105-home\": \"generate-image/uc-105-home.e89e17ed.webp\",\n \"generate-image/uc-106-family\": \"generate-image/uc-106-family.f341ecc9.webp\",\n \"generate-image/uc-107-family\": \"generate-image/uc-107-family.fdd44b57.webp\",\n \"generate-image/uc-108-family\": \"generate-image/uc-108-family.f473cca7.webp\",\n \"generate-image/uc-109-family\": \"generate-image/uc-109-family.a59bac72.webp\",\n \"generate-image/uc-110-family\": \"generate-image/uc-110-family.a9440efd.webp\",\n \"generate-image/uc-111-family\": \"generate-image/uc-111-family.83ebe991.webp\",\n \"generate-image/uc-112-family\": \"generate-image/uc-112-family.b4364fa4.webp\",\n \"generate-image/uc-113-family\": \"generate-image/uc-113-family.55ca0cd5.webp\",\n \"generate-image/uc-114-family\": \"generate-image/uc-114-family.aa9a516b.webp\",\n \"generate-image/uc-115-family\": \"generate-image/uc-115-family.e7382157.webp\",\n \"generate-image/uc-116-family\": \"generate-image/uc-116-family.f6268230.webp\",\n \"generate-image/uc-117-family\": \"generate-image/uc-117-family.f421ba8d.webp\",\n \"generate-image/uc-118-family\": \"generate-image/uc-118-family.903dd2af.webp\",\n \"generate-image/uc-119-family\": \"generate-image/uc-119-family.143f5cdc.webp\",\n \"generate-image/uc-120-family\": \"generate-image/uc-120-family.3e7b2f74.webp\",\n \"generate-image/wa-status-offer\": \"generate-image/wa-status-offer.bedd123b.webp\",\n \"generate-image/work-email-header\": \"generate-image/work-email-header.4edc95c9.webp\",\n \"generate-image/work-landing-hero\": \"generate-image/work-landing-hero.c3548096.webp\",\n \"generate-image/work-report-cover\": \"generate-image/work-report-cover.3ba0f74f.webp\",\n \"generate-image/x-chart-take\": \"generate-image/x-chart-take.bcae7ea0.webp\",\n \"generate-image/x-statement-card\": \"generate-image/x-statement-card.4f1c87b1.webp\",\n}\n\nexport const FACTORY_PRESET_PREVIEW_LARGE_FILES: Readonly<Record<string, { readonly file: string; readonly width: number }>> = {\n \"generate-image/ad-app-store-screenshot\": {\"file\":\"1024/generate-image/ad-app-store-screenshot.2bb32138.webp\",\"width\":940},\n \"generate-image/ad-clinic\": {\"file\":\"1024/generate-image/ad-clinic.1092b3db.webp\",\"width\":1024},\n \"generate-image/ad-facebook-lead\": {\"file\":\"1024/generate-image/ad-facebook-lead.dada7ce1.webp\",\"width\":1024},\n \"generate-image/ad-gym-offer\": {\"file\":\"1024/generate-image/ad-gym-offer.bc3cd8e5.webp\",\"width\":1008},\n \"generate-image/ad-real-estate-listing\": {\"file\":\"1024/generate-image/ad-real-estate-listing.ae7f333c.webp\",\"width\":1024},\n \"generate-image/ad-restaurant-special\": {\"file\":\"1024/generate-image/ad-restaurant-special.05575fe4.webp\",\"width\":1024},\n \"generate-image/ad-salon-promo\": {\"file\":\"1024/generate-image/ad-salon-promo.cb21782f.webp\",\"width\":1008},\n \"generate-image/ad-service-van\": {\"file\":\"1024/generate-image/ad-service-van.fa156585.webp\",\"width\":1024},\n \"generate-image/ad-store-sale\": {\"file\":\"1024/generate-image/ad-store-sale.e546d890.webp\",\"width\":1024},\n \"generate-image/brand-linkedin-banner\": {\"file\":\"1024/generate-image/brand-linkedin-banner.ea5666b5.webp\",\"width\":1024},\n \"generate-image/brand-podcast-cover\": {\"file\":\"1024/generate-image/brand-podcast-cover.e8314114.webp\",\"width\":1024},\n \"generate-image/brand-profile-picture\": {\"file\":\"1024/generate-image/brand-profile-picture.8adbbdba.webp\",\"width\":1024},\n \"generate-image/brand-spotify-canvas\": {\"file\":\"1024/generate-image/brand-spotify-canvas.cd31b7f2.webp\",\"width\":940},\n \"generate-image/brand-twitch-banner\": {\"file\":\"1024/generate-image/brand-twitch-banner.f7ad67da.webp\",\"width\":1024},\n \"generate-image/community-fundraiser\": {\"file\":\"1024/generate-image/community-fundraiser.a955a854.webp\",\"width\":1024},\n \"generate-image/community-menu-board\": {\"file\":\"1024/generate-image/community-menu-board.fb17751a.webp\",\"width\":1024},\n \"generate-image/ecom-amazon-hero\": {\"file\":\"1024/generate-image/ecom-amazon-hero.7cf620db.webp\",\"width\":1024},\n \"generate-image/ecom-etsy-handmade\": {\"file\":\"1024/generate-image/ecom-etsy-handmade.1a273f17.webp\",\"width\":1024},\n \"generate-image/ecom-fashion-ghost\": {\"file\":\"1024/generate-image/ecom-fashion-ghost.ec971004.webp\",\"width\":1024},\n \"generate-image/ecom-infographic\": {\"file\":\"1024/generate-image/ecom-infographic.444c6ee1.webp\",\"width\":1024},\n \"generate-image/ecom-lifestyle-shot\": {\"file\":\"1024/generate-image/ecom-lifestyle-shot.fbf36b99.webp\",\"width\":1024},\n \"generate-image/ecom-sale-badge\": {\"file\":\"1024/generate-image/ecom-sale-badge.85cc1dfe.webp\",\"width\":1024},\n \"generate-image/edu-flashcard\": {\"file\":\"1024/generate-image/edu-flashcard.f2b8da7f.webp\",\"width\":1008},\n \"generate-image/edu-slide-title\": {\"file\":\"1024/generate-image/edu-slide-title.a5831649.webp\",\"width\":1024},\n \"generate-image/edu-worksheet-header\": {\"file\":\"1024/generate-image/edu-worksheet-header.dee06653.webp\",\"width\":1024},\n \"generate-image/event-baby-shower\": {\"file\":\"1024/generate-image/event-baby-shower.97e05129.webp\",\"width\":1024},\n \"generate-image/event-birthday-invite\": {\"file\":\"1024/generate-image/event-birthday-invite.92093324.webp\",\"width\":1024},\n \"generate-image/event-club-flyer\": {\"file\":\"1024/generate-image/event-club-flyer.fe0137e5.webp\",\"width\":1024},\n \"generate-image/event-conference-banner\": {\"file\":\"1024/generate-image/event-conference-banner.30448c8e.webp\",\"width\":1024},\n \"generate-image/event-holiday-greeting\": {\"file\":\"1024/generate-image/event-holiday-greeting.cc100434.webp\",\"width\":1024},\n \"generate-image/event-wedding-invite\": {\"file\":\"1024/generate-image/event-wedding-invite.52643f55.webp\",\"width\":1024},\n \"generate-image/fb-event-cover\": {\"file\":\"1024/generate-image/fb-event-cover.5f0bffdb.webp\",\"width\":1024},\n \"generate-image/fb-group-cover\": {\"file\":\"1024/generate-image/fb-group-cover.360a3b29.webp\",\"width\":1024},\n \"generate-image/ig-carousel-cover\": {\"file\":\"1024/generate-image/ig-carousel-cover.890205c7.webp\",\"width\":1024},\n \"generate-image/ig-flatlay\": {\"file\":\"1024/generate-image/ig-flatlay.0876eb87.webp\",\"width\":1024},\n \"generate-image/ig-giveaway\": {\"file\":\"1024/generate-image/ig-giveaway.31f6aaef.webp\",\"width\":1024},\n \"generate-image/ig-new-drop\": {\"file\":\"1024/generate-image/ig-new-drop.511e3bda.webp\",\"width\":1024},\n \"generate-image/ig-photo-dump\": {\"file\":\"1024/generate-image/ig-photo-dump.cab59a1e.webp\",\"width\":1024},\n \"generate-image/ig-testimonial\": {\"file\":\"1024/generate-image/ig-testimonial.dbf447c1.webp\",\"width\":1024},\n \"generate-image/layout-2x2-grid\": {\"file\":\"1024/generate-image/layout-2x2-grid.bcd355f3.webp\",\"width\":1024},\n \"generate-image/layout-comic-page\": {\"file\":\"1024/generate-image/layout-comic-page.869a1919.webp\",\"width\":1024},\n \"generate-image/layout-headless-sheet\": {\"file\":\"1024/generate-image/layout-headless-sheet.1e6b6d71.webp\",\"width\":1024},\n \"generate-image/layout-multi-shot\": {\"file\":\"1024/generate-image/layout-multi-shot.cee0a695.webp\",\"width\":1024},\n \"generate-image/layout-production-storyboard\": {\"file\":\"1024/generate-image/layout-production-storyboard.d89078e3.webp\",\"width\":1024},\n \"generate-image/layout-props-sheet\": {\"file\":\"1024/generate-image/layout-props-sheet.8abf7b43.webp\",\"width\":1024},\n \"generate-image/layout-sprite-sheet\": {\"file\":\"1024/generate-image/layout-sprite-sheet.a26274ad.webp\",\"width\":1024},\n \"generate-image/layout-storyboard-6\": {\"file\":\"1024/generate-image/layout-storyboard-6.0f29999b.webp\",\"width\":1024},\n \"generate-image/layout-visionary-magazine-cover\": {\"file\":\"1024/generate-image/layout-visionary-magazine-cover.b19466fb.webp\",\"width\":1024},\n \"generate-image/li-certified\": {\"file\":\"1024/generate-image/li-certified.7d7a3f3b.webp\",\"width\":1024},\n \"generate-image/li-infographic\": {\"file\":\"1024/generate-image/li-infographic.f6ed35f9.webp\",\"width\":1024},\n \"generate-image/merch-mug\": {\"file\":\"1024/generate-image/merch-mug.86c2ed9e.webp\",\"width\":1024},\n \"generate-image/merch-standalone-print-art\": {\"file\":\"1024/generate-image/merch-standalone-print-art.5dc8b302.webp\",\"width\":1024},\n \"generate-image/merch-sticker-sheet\": {\"file\":\"1024/generate-image/merch-sticker-sheet.0044d6c2.webp\",\"width\":1024},\n \"generate-image/merch-tshirt-design\": {\"file\":\"1024/generate-image/merch-tshirt-design.60c27d5d.webp\",\"width\":1024},\n \"generate-image/personal-birthday-card\": {\"file\":\"1024/generate-image/personal-birthday-card.ec4516e1.webp\",\"width\":1024},\n \"generate-image/personal-dating-profile\": {\"file\":\"1024/generate-image/personal-dating-profile.76c9d7f6.webp\",\"width\":1024},\n \"generate-image/personal-family-holiday-card\": {\"file\":\"1024/generate-image/personal-family-holiday-card.cf51566c.webp\",\"width\":1024},\n \"generate-image/personal-meme-template\": {\"file\":\"1024/generate-image/personal-meme-template.ffdf6732.webp\",\"width\":1024},\n \"generate-image/personal-pet-portrait\": {\"file\":\"1024/generate-image/personal-pet-portrait.d9777301.webp\",\"width\":1024},\n \"generate-image/personal-phone-wallpaper\": {\"file\":\"1024/generate-image/personal-phone-wallpaper.b37876c5.webp\",\"width\":941},\n \"generate-image/pin-home-decor\": {\"file\":\"1024/generate-image/pin-home-decor.c28138cb.webp\",\"width\":1024},\n \"generate-image/pin-outfit-ideas\": {\"file\":\"1024/generate-image/pin-outfit-ideas.ff56ba94.webp\",\"width\":1024},\n \"generate-image/pin-recipe\": {\"file\":\"1024/generate-image/pin-recipe.52f03246.webp\",\"width\":1024},\n \"generate-image/post-big-caption\": {\"file\":\"1024/generate-image/post-big-caption.dbc8f544.webp\",\"width\":928},\n \"generate-image/post-carousel-cover\": {\"file\":\"1024/generate-image/post-carousel-cover.6cfe0794.webp\",\"width\":1024},\n \"generate-image/post-employee-spotlight\": {\"file\":\"1024/generate-image/post-employee-spotlight.79bf36d5.webp\",\"width\":1024},\n \"generate-image/post-event-announcement\": {\"file\":\"1024/generate-image/post-event-announcement.0df676ab.webp\",\"width\":1024},\n \"generate-image/post-hiring\": {\"file\":\"1024/generate-image/post-hiring.b0443482.webp\",\"width\":1024},\n \"generate-image/post-old-vs-new\": {\"file\":\"1024/generate-image/post-old-vs-new.7e871c2f.webp\",\"width\":928},\n \"generate-image/post-quote-card\": {\"file\":\"1024/generate-image/post-quote-card.126f2bdb.webp\",\"width\":1024},\n \"generate-image/short-ai-free-tool\": {\"file\":\"1024/generate-image/short-ai-free-tool.91904acc.webp\",\"width\":768},\n \"generate-image/short-dance-trend\": {\"file\":\"1024/generate-image/short-dance-trend.79ff545e.webp\",\"width\":940},\n \"generate-image/short-fitness-daily\": {\"file\":\"1024/generate-image/short-fitness-daily.ac6f0534.webp\",\"width\":940},\n \"generate-image/short-grwm-outfit\": {\"file\":\"1024/generate-image/short-grwm-outfit.51257d03.webp\",\"width\":768},\n \"generate-image/short-morning-routine\": {\"file\":\"1024/generate-image/short-morning-routine.004eb4df.webp\",\"width\":940},\n \"generate-image/short-pov-hook\": {\"file\":\"1024/generate-image/short-pov-hook.b83c09c9.webp\",\"width\":940},\n \"generate-image/short-quick-recipe\": {\"file\":\"1024/generate-image/short-quick-recipe.4b9dd3f0.webp\",\"width\":940},\n \"generate-image/short-side-income\": {\"file\":\"1024/generate-image/short-side-income.ca84751c.webp\",\"width\":768},\n \"generate-image/short-storytime\": {\"file\":\"1024/generate-image/short-storytime.650d4b53.webp\",\"width\":941},\n \"generate-image/short-three-steps\": {\"file\":\"1024/generate-image/short-three-steps.1e7fac95.webp\",\"width\":768},\n \"generate-image/sport-match-day\": {\"file\":\"1024/generate-image/sport-match-day.fe4b3a37.webp\",\"width\":1024},\n \"generate-image/sport-player-card\": {\"file\":\"1024/generate-image/sport-player-card.b775c4a1.webp\",\"width\":1024},\n \"generate-image/story-countdown\": {\"file\":\"1024/generate-image/story-countdown.e8d0a1da.webp\",\"width\":941},\n \"generate-image/story-link-above\": {\"file\":\"1024/generate-image/story-link-above.1c8a5837.webp\",\"width\":940},\n \"generate-image/story-this-or-that\": {\"file\":\"1024/generate-image/story-this-or-that.5d6ed7a2.webp\",\"width\":940},\n \"generate-image/text-80s-synthwave\": {\"file\":\"1024/generate-image/text-80s-synthwave.0b9961d8.webp\",\"width\":1024},\n \"generate-image/text-anime-title\": {\"file\":\"1024/generate-image/text-anime-title.c4be7567.webp\",\"width\":1024},\n \"generate-image/text-art-deco\": {\"file\":\"1024/generate-image/text-art-deco.e5a7ff49.webp\",\"width\":1024},\n \"generate-image/text-balloon-foil\": {\"file\":\"1024/generate-image/text-balloon-foil.7ba41f6a.webp\",\"width\":1024},\n \"generate-image/text-blockbuster\": {\"file\":\"1024/generate-image/text-blockbuster.281337f1.webp\",\"width\":1024},\n \"generate-image/text-botanical-serif\": {\"file\":\"1024/generate-image/text-botanical-serif.5b86648a.webp\",\"width\":1024},\n \"generate-image/text-brutalist-acid\": {\"file\":\"1024/generate-image/text-brutalist-acid.6e297af1.webp\",\"width\":1024},\n \"generate-image/text-carved-wood\": {\"file\":\"1024/generate-image/text-carved-wood.c9a2d703.webp\",\"width\":1024},\n \"generate-image/text-chalkboard\": {\"file\":\"1024/generate-image/text-chalkboard.9071a7cd.webp\",\"width\":1024},\n \"generate-image/text-chrome-y2k\": {\"file\":\"1024/generate-image/text-chrome-y2k.617d504f.webp\",\"width\":1024},\n \"generate-image/text-comic-hero\": {\"file\":\"1024/generate-image/text-comic-hero.1a7301ae.webp\",\"width\":1024},\n \"generate-image/text-disco-funk\": {\"file\":\"1024/generate-image/text-disco-funk.94b70339.webp\",\"width\":1024},\n \"generate-image/text-embroidered-patch\": {\"file\":\"1024/generate-image/text-embroidered-patch.cf1675ce.webp\",\"width\":1024},\n \"generate-image/text-film-noir\": {\"file\":\"1024/generate-image/text-film-noir.6697373a.webp\",\"width\":1024},\n \"generate-image/text-fire-embers\": {\"file\":\"1024/generate-image/text-fire-embers.2e9f6a7b.webp\",\"width\":1024},\n \"generate-image/text-frosted-glass\": {\"file\":\"1024/generate-image/text-frosted-glass.3ea80253.webp\",\"width\":1024},\n \"generate-image/text-glitch\": {\"file\":\"1024/generate-image/text-glitch.3d3e3c78.webp\",\"width\":1024},\n \"generate-image/text-gold-foil-luxury\": {\"file\":\"1024/generate-image/text-gold-foil-luxury.97113f84.webp\",\"width\":1024},\n \"generate-image/text-graffiti-drip\": {\"file\":\"1024/generate-image/text-graffiti-drip.3779b14f.webp\",\"width\":1024},\n \"generate-image/text-grunge-stamp\": {\"file\":\"1024/generate-image/text-grunge-stamp.fe4aef23.webp\",\"width\":1024},\n \"generate-image/text-handwritten-marker\": {\"file\":\"1024/generate-image/text-handwritten-marker.b7dc53f3.webp\",\"width\":1024},\n \"generate-image/text-holographic\": {\"file\":\"1024/generate-image/text-holographic.600aa08a.webp\",\"width\":1024},\n \"generate-image/text-horror-poster\": {\"file\":\"1024/generate-image/text-horror-poster.826b2eff.webp\",\"width\":1024},\n \"generate-image/text-ice\": {\"file\":\"1024/generate-image/text-ice.cf3223bb.webp\",\"width\":1024},\n \"generate-image/text-indie-title-card\": {\"file\":\"1024/generate-image/text-indie-title-card.5e7e8e3f.webp\",\"width\":1024},\n \"generate-image/text-inflated-clay\": {\"file\":\"1024/generate-image/text-inflated-clay.d6a0305d.webp\",\"width\":1024},\n \"generate-image/text-kids-party\": {\"file\":\"1024/generate-image/text-kids-party.b3033ee1.webp\",\"width\":1024},\n \"generate-image/text-liquid-water\": {\"file\":\"1024/generate-image/text-liquid-water.e73099ea.webp\",\"width\":1024},\n \"generate-image/text-marble-carved\": {\"file\":\"1024/generate-image/text-marble-carved.f3d62155.webp\",\"width\":1024},\n \"generate-image/text-molten-gold\": {\"file\":\"1024/generate-image/text-molten-gold.069e6e73.webp\",\"width\":1024},\n \"generate-image/text-neon-sign\": {\"file\":\"1024/generate-image/text-neon-sign.e4417aa0.webp\",\"width\":1024},\n \"generate-image/text-paper-cutout\": {\"file\":\"1024/generate-image/text-paper-cutout.0fec820a.webp\",\"width\":1024},\n \"generate-image/text-pixel-8bit\": {\"file\":\"1024/generate-image/text-pixel-8bit.e000b60e.webp\",\"width\":1024},\n \"generate-image/text-psychedelic-60s\": {\"file\":\"1024/generate-image/text-psychedelic-60s.cd47a898.webp\",\"width\":1024},\n \"generate-image/text-ransom-note\": {\"file\":\"1024/generate-image/text-ransom-note.a1687159.webp\",\"width\":1024},\n \"generate-image/text-retro-serif-70s\": {\"file\":\"1024/generate-image/text-retro-serif-70s.97df2810.webp\",\"width\":1024},\n \"generate-image/text-rusted-metal\": {\"file\":\"1024/generate-image/text-rusted-metal.fdf800ca.webp\",\"width\":1024},\n \"generate-image/text-scifi-chrome\": {\"file\":\"1024/generate-image/text-scifi-chrome.6b43d6ff.webp\",\"width\":1024},\n \"generate-image/text-smoke\": {\"file\":\"1024/generate-image/text-smoke.2a8dfa30.webp\",\"width\":1024},\n \"generate-image/text-sticker-pop\": {\"file\":\"1024/generate-image/text-sticker-pop.15488e46.webp\",\"width\":1024},\n \"generate-image/text-typewriter\": {\"file\":\"1024/generate-image/text-typewriter.eb274dbf.webp\",\"width\":1024},\n \"generate-image/text-varsity-sport\": {\"file\":\"1024/generate-image/text-varsity-sport.fb8ccf95.webp\",\"width\":1024},\n \"generate-image/text-vhs-glow\": {\"file\":\"1024/generate-image/text-vhs-glow.bbdcd8cb.webp\",\"width\":1024},\n \"generate-image/text-wedding-script\": {\"file\":\"1024/generate-image/text-wedding-script.b202ea1e.webp\",\"width\":1024},\n \"generate-image/text-western\": {\"file\":\"1024/generate-image/text-western.5b899156.webp\",\"width\":1024},\n \"generate-image/thumb-ai-feature-grid\": {\"file\":\"1024/generate-image/thumb-ai-feature-grid.ee1da720.webp\",\"width\":1024},\n \"generate-image/thumb-ai-os-icons\": {\"file\":\"1024/generate-image/thumb-ai-os-icons.4ebb91fe.webp\",\"width\":1024},\n \"generate-image/thumb-ai-tool-reveal\": {\"file\":\"1024/generate-image/thumb-ai-tool-reveal.56a28d61.webp\",\"width\":1024},\n \"generate-image/thumb-analytics-growth\": {\"file\":\"1024/generate-image/thumb-analytics-growth.fb9f26e0.webp\",\"width\":1024},\n \"generate-image/thumb-beauty-makeup\": {\"file\":\"1024/generate-image/thumb-beauty-makeup.4ffc5135.webp\",\"width\":1024},\n \"generate-image/thumb-before-after\": {\"file\":\"1024/generate-image/thumb-before-after.992e1e76.webp\",\"width\":1024},\n \"generate-image/thumb-breaking-news\": {\"file\":\"1024/generate-image/thumb-breaking-news.17114e4d.webp\",\"width\":1024},\n \"generate-image/thumb-burning-question\": {\"file\":\"1024/generate-image/thumb-burning-question.6c5d679d.webp\",\"width\":1024},\n \"generate-image/thumb-challenge-timer\": {\"file\":\"1024/generate-image/thumb-challenge-timer.9d2a55b5.webp\",\"width\":1024},\n \"generate-image/thumb-coding-tutorial\": {\"file\":\"1024/generate-image/thumb-coding-tutorial.54c66484.webp\",\"width\":1024},\n \"generate-image/thumb-copy-me-arrow\": {\"file\":\"1024/generate-image/thumb-copy-me-arrow.d1cdf285.webp\",\"width\":1024},\n \"generate-image/thumb-course-launch\": {\"file\":\"1024/generate-image/thumb-course-launch.b05d3686.webp\",\"width\":1024},\n \"generate-image/thumb-creator-milestone\": {\"file\":\"1024/generate-image/thumb-creator-milestone.979e85a2.webp\",\"width\":1024},\n \"generate-image/thumb-crypto-pump\": {\"file\":\"1024/generate-image/thumb-crypto-pump.a468d01e.webp\",\"width\":1024},\n \"generate-image/thumb-diet-plan\": {\"file\":\"1024/generate-image/thumb-diet-plan.5f5d3c5a.webp\",\"width\":1024},\n \"generate-image/thumb-doctor-health\": {\"file\":\"1024/generate-image/thumb-doctor-health.b9cc7ada.webp\",\"width\":1024},\n \"generate-image/thumb-docu-expose\": {\"file\":\"1024/generate-image/thumb-docu-expose.cf95066c.webp\",\"width\":1024},\n \"generate-image/thumb-earnings-proof\": {\"file\":\"1024/generate-image/thumb-earnings-proof.9be82c2a.webp\",\"width\":1024},\n \"generate-image/thumb-editorial-type\": {\"file\":\"1024/generate-image/thumb-editorial-type.1ad720c2.webp\",\"width\":1024},\n \"generate-image/thumb-finance-shock\": {\"file\":\"1024/generate-image/thumb-finance-shock.7d913028.webp\",\"width\":1024},\n \"generate-image/thumb-fitness-transform\": {\"file\":\"1024/generate-image/thumb-fitness-transform.7d8026bf.webp\",\"width\":1024},\n \"generate-image/thumb-food-feast\": {\"file\":\"1024/generate-image/thumb-food-feast.ce25598e.webp\",\"width\":1024},\n \"generate-image/thumb-founder-story\": {\"file\":\"1024/generate-image/thumb-founder-story.88382007.webp\",\"width\":1024},\n \"generate-image/thumb-gaming-golden-item\": {\"file\":\"1024/generate-image/thumb-gaming-golden-item.478eb2a3.webp\",\"width\":1024},\n \"generate-image/thumb-gaming-rush\": {\"file\":\"1024/generate-image/thumb-gaming-rush.9a933ebc.webp\",\"width\":1024},\n \"generate-image/thumb-hero-object\": {\"file\":\"1024/generate-image/thumb-hero-object.1454474a.webp\",\"width\":1024},\n \"generate-image/thumb-interview-two-up\": {\"file\":\"1024/generate-image/thumb-interview-two-up.b6f0aace.webp\",\"width\":1024},\n \"generate-image/thumb-language-learning\": {\"file\":\"1024/generate-image/thumb-language-learning.324a6a3b.webp\",\"width\":1024},\n \"generate-image/thumb-legal-explainer\": {\"file\":\"1024/generate-image/thumb-legal-explainer.38723d61.webp\",\"width\":1024},\n \"generate-image/thumb-listicle-number\": {\"file\":\"1024/generate-image/thumb-listicle-number.9f85356a.webp\",\"width\":1024},\n \"generate-image/thumb-live-show\": {\"file\":\"1024/generate-image/thumb-live-show.d8542424.webp\",\"width\":1024},\n \"generate-image/thumb-map-pin\": {\"file\":\"1024/generate-image/thumb-map-pin.873faed8.webp\",\"width\":1024},\n \"generate-image/thumb-minimal-tech\": {\"file\":\"1024/generate-image/thumb-minimal-tech.dd0fd9ca.webp\",\"width\":1024},\n \"generate-image/thumb-model-vs-model\": {\"file\":\"1024/generate-image/thumb-model-vs-model.de6f1dc9.webp\",\"width\":1024},\n \"generate-image/thumb-motivation\": {\"file\":\"1024/generate-image/thumb-motivation.1ec93f6f.webp\",\"width\":1024},\n \"generate-image/thumb-mystery-blur\": {\"file\":\"1024/generate-image/thumb-mystery-blur.973cdf4b.webp\",\"width\":1024},\n \"generate-image/thumb-new-model-drop\": {\"file\":\"1024/generate-image/thumb-new-model-drop.8e37ee64.webp\",\"width\":1024},\n \"generate-image/thumb-node-diagram\": {\"file\":\"1024/generate-image/thumb-node-diagram.e92a2c93.webp\",\"width\":1024},\n \"generate-image/thumb-parenting\": {\"file\":\"1024/generate-image/thumb-parenting.c05ecb5b.webp\",\"width\":1024},\n \"generate-image/thumb-pets\": {\"file\":\"1024/generate-image/thumb-pets.32c923ec.webp\",\"width\":1024},\n \"generate-image/thumb-playful-cast\": {\"file\":\"1024/generate-image/thumb-playful-cast.33ea59e3.webp\",\"width\":1024},\n \"generate-image/thumb-quote-highlight\": {\"file\":\"1024/generate-image/thumb-quote-highlight.3d0e0eec.webp\",\"width\":1024},\n \"generate-image/thumb-real-estate-agent\": {\"file\":\"1024/generate-image/thumb-real-estate-agent.8002d64d.webp\",\"width\":1024},\n \"generate-image/thumb-red-x-green-check\": {\"file\":\"1024/generate-image/thumb-red-x-green-check.20c093e8.webp\",\"width\":1024},\n \"generate-image/thumb-reel-cover-bold\": {\"file\":\"1024/generate-image/thumb-reel-cover-bold.f201d20e.webp\",\"width\":1024},\n \"generate-image/thumb-science-explainer\": {\"file\":\"1024/generate-image/thumb-science-explainer.83e3e440.webp\",\"width\":1024},\n \"generate-image/thumb-screen-portals\": {\"file\":\"1024/generate-image/thumb-screen-portals.bf6cb762.webp\",\"width\":1024},\n \"generate-image/thumb-shocked-reaction\": {\"file\":\"1024/generate-image/thumb-shocked-reaction.d36a2909.webp\",\"width\":1024},\n \"generate-image/thumb-sports-highlight\": {\"file\":\"1024/generate-image/thumb-sports-highlight.c2810516.webp\",\"width\":1024},\n \"generate-image/thumb-squad-chaos\": {\"file\":\"1024/generate-image/thumb-squad-chaos.1a99e558.webp\",\"width\":1024},\n \"generate-image/thumb-stage-talk\": {\"file\":\"1024/generate-image/thumb-stage-talk.a6283fb5.webp\",\"width\":1024},\n \"generate-image/thumb-stock-call\": {\"file\":\"1024/generate-image/thumb-stock-call.26c050db.webp\",\"width\":1024},\n \"generate-image/thumb-swiss-collage\": {\"file\":\"1024/generate-image/thumb-swiss-collage.fe5b6e81.webp\",\"width\":1024},\n \"generate-image/thumb-tech-glitch\": {\"file\":\"1024/generate-image/thumb-tech-glitch.48ef05cd.webp\",\"width\":1024},\n \"generate-image/thumb-tier-list\": {\"file\":\"1024/generate-image/thumb-tier-list.e1c68233.webp\",\"width\":1024},\n \"generate-image/thumb-travel-wanderlust\": {\"file\":\"1024/generate-image/thumb-travel-wanderlust.edf94820.webp\",\"width\":1024},\n \"generate-image/thumb-true-crime-board\": {\"file\":\"1024/generate-image/thumb-true-crime-board.e535247c.webp\",\"width\":1024},\n \"generate-image/thumb-unboxing\": {\"file\":\"1024/generate-image/thumb-unboxing.8f2dc427.webp\",\"width\":1024},\n \"generate-image/thumb-versus-battle\": {\"file\":\"1024/generate-image/thumb-versus-battle.2b5cfd25.webp\",\"width\":1024},\n \"generate-image/thumb-vlog-bright\": {\"file\":\"1024/generate-image/thumb-vlog-bright.cfc083a7.webp\",\"width\":1024},\n \"generate-image/uc-001-business\": {\"file\":\"1024/generate-image/uc-001-business.f91cd908.webp\",\"width\":1024},\n \"generate-image/uc-002-business\": {\"file\":\"1024/generate-image/uc-002-business.e4d71844.webp\",\"width\":1024},\n \"generate-image/uc-003-business\": {\"file\":\"1024/generate-image/uc-003-business.3de67676.webp\",\"width\":1024},\n \"generate-image/uc-004-business\": {\"file\":\"1024/generate-image/uc-004-business.3ba6d49b.webp\",\"width\":928},\n \"generate-image/uc-005-business\": {\"file\":\"1024/generate-image/uc-005-business.2e8e86ec.webp\",\"width\":928},\n \"generate-image/uc-006-business\": {\"file\":\"1024/generate-image/uc-006-business.cf4906fa.webp\",\"width\":1024},\n \"generate-image/uc-007-business\": {\"file\":\"1024/generate-image/uc-007-business.a689caf8.webp\",\"width\":928},\n \"generate-image/uc-008-business\": {\"file\":\"1024/generate-image/uc-008-business.391ed332.webp\",\"width\":1024},\n \"generate-image/uc-009-business\": {\"file\":\"1024/generate-image/uc-009-business.b130166e.webp\",\"width\":1024},\n \"generate-image/uc-010-business\": {\"file\":\"1024/generate-image/uc-010-business.b36121f4.webp\",\"width\":928},\n \"generate-image/uc-011-business\": {\"file\":\"1024/generate-image/uc-011-business.95925593.webp\",\"width\":1024},\n \"generate-image/uc-012-business\": {\"file\":\"1024/generate-image/uc-012-business.bb73883a.webp\",\"width\":1024},\n \"generate-image/uc-013-business\": {\"file\":\"1024/generate-image/uc-013-business.7fbc7437.webp\",\"width\":928},\n \"generate-image/uc-014-business\": {\"file\":\"1024/generate-image/uc-014-business.f3b3e493.webp\",\"width\":928},\n \"generate-image/uc-015-business\": {\"file\":\"1024/generate-image/uc-015-business.8ca637a6.webp\",\"width\":1024},\n \"generate-image/uc-016-business\": {\"file\":\"1024/generate-image/uc-016-business.04ba879f.webp\",\"width\":1024},\n \"generate-image/uc-017-business\": {\"file\":\"1024/generate-image/uc-017-business.a819c0c4.webp\",\"width\":928},\n \"generate-image/uc-018-business\": {\"file\":\"1024/generate-image/uc-018-business.ea966138.webp\",\"width\":1024},\n \"generate-image/uc-019-business\": {\"file\":\"1024/generate-image/uc-019-business.df30b045.webp\",\"width\":1024},\n \"generate-image/uc-020-business\": {\"file\":\"1024/generate-image/uc-020-business.403e3598.webp\",\"width\":1024},\n \"generate-image/uc-021-business\": {\"file\":\"1024/generate-image/uc-021-business.cc7e8c86.webp\",\"width\":1024},\n \"generate-image/uc-022-business\": {\"file\":\"1024/generate-image/uc-022-business.37208e6c.webp\",\"width\":1024},\n \"generate-image/uc-023-business\": {\"file\":\"1024/generate-image/uc-023-business.c050c695.webp\",\"width\":928},\n \"generate-image/uc-024-business\": {\"file\":\"1024/generate-image/uc-024-business.d8483fd4.webp\",\"width\":1024},\n \"generate-image/uc-025-business\": {\"file\":\"1024/generate-image/uc-025-business.159d7287.webp\",\"width\":928},\n \"generate-image/uc-026-business\": {\"file\":\"1024/generate-image/uc-026-business.8fc1e2bd.webp\",\"width\":1024},\n \"generate-image/uc-027-business\": {\"file\":\"1024/generate-image/uc-027-business.c37cc295.webp\",\"width\":1024},\n \"generate-image/uc-028-business\": {\"file\":\"1024/generate-image/uc-028-business.0ae68da2.webp\",\"width\":928},\n \"generate-image/uc-029-business\": {\"file\":\"1024/generate-image/uc-029-business.fb9f6f20.webp\",\"width\":1024},\n \"generate-image/uc-030-business\": {\"file\":\"1024/generate-image/uc-030-business.d1d6701f.webp\",\"width\":1024},\n \"generate-image/uc-031-personal\": {\"file\":\"1024/generate-image/uc-031-personal.eea23578.webp\",\"width\":1024},\n \"generate-image/uc-032-personal\": {\"file\":\"1024/generate-image/uc-032-personal.9f961ef2.webp\",\"width\":1024},\n \"generate-image/uc-033-personal\": {\"file\":\"1024/generate-image/uc-033-personal.a2e8f8f0.webp\",\"width\":1024},\n \"generate-image/uc-034-personal\": {\"file\":\"1024/generate-image/uc-034-personal.dce8b3fc.webp\",\"width\":1024},\n \"generate-image/uc-035-personal\": {\"file\":\"1024/generate-image/uc-035-personal.7b1b067c.webp\",\"width\":1024},\n \"generate-image/uc-036-personal\": {\"file\":\"1024/generate-image/uc-036-personal.b278313f.webp\",\"width\":1024},\n \"generate-image/uc-037-personal\": {\"file\":\"1024/generate-image/uc-037-personal.cda8d9f9.webp\",\"width\":1024},\n \"generate-image/uc-038-personal\": {\"file\":\"1024/generate-image/uc-038-personal.9e6a3537.webp\",\"width\":1024},\n \"generate-image/uc-039-personal\": {\"file\":\"1024/generate-image/uc-039-personal.a501fd03.webp\",\"width\":1024},\n \"generate-image/uc-040-personal\": {\"file\":\"1024/generate-image/uc-040-personal.93188c08.webp\",\"width\":1024},\n \"generate-image/uc-041-personal\": {\"file\":\"1024/generate-image/uc-041-personal.62a3864c.webp\",\"width\":1024},\n \"generate-image/uc-042-personal\": {\"file\":\"1024/generate-image/uc-042-personal.b7e01c44.webp\",\"width\":1024},\n \"generate-image/uc-043-personal\": {\"file\":\"1024/generate-image/uc-043-personal.891ed3d5.webp\",\"width\":1024},\n \"generate-image/uc-044-personal\": {\"file\":\"1024/generate-image/uc-044-personal.cefac882.webp\",\"width\":1024},\n \"generate-image/uc-045-personal\": {\"file\":\"1024/generate-image/uc-045-personal.d4efee4d.webp\",\"width\":940},\n \"generate-image/uc-046-personal\": {\"file\":\"1024/generate-image/uc-046-personal.91544f11.webp\",\"width\":1024},\n \"generate-image/uc-047-personal\": {\"file\":\"1024/generate-image/uc-047-personal.e1613676.webp\",\"width\":1024},\n \"generate-image/uc-048-personal\": {\"file\":\"1024/generate-image/uc-048-personal.cbdbabae.webp\",\"width\":1024},\n \"generate-image/uc-049-personal\": {\"file\":\"1024/generate-image/uc-049-personal.45560dda.webp\",\"width\":1024},\n \"generate-image/uc-050-personal\": {\"file\":\"1024/generate-image/uc-050-personal.c950da7a.webp\",\"width\":1024},\n \"generate-image/uc-051-products\": {\"file\":\"1024/generate-image/uc-051-products.540e3708.webp\",\"width\":1024},\n \"generate-image/uc-052-products\": {\"file\":\"1024/generate-image/uc-052-products.373e61dd.webp\",\"width\":1024},\n \"generate-image/uc-053-products\": {\"file\":\"1024/generate-image/uc-053-products.0bc7713f.webp\",\"width\":928},\n \"generate-image/uc-054-products\": {\"file\":\"1024/generate-image/uc-054-products.013425c7.webp\",\"width\":928},\n \"generate-image/uc-055-products\": {\"file\":\"1024/generate-image/uc-055-products.1504b884.webp\",\"width\":1024},\n \"generate-image/uc-056-products\": {\"file\":\"1024/generate-image/uc-056-products.e669bcb7.webp\",\"width\":1024},\n \"generate-image/uc-057-products\": {\"file\":\"1024/generate-image/uc-057-products.e9b3a3a5.webp\",\"width\":1024},\n \"generate-image/uc-058-products\": {\"file\":\"1024/generate-image/uc-058-products.9c8d8933.webp\",\"width\":1024},\n \"generate-image/uc-059-products\": {\"file\":\"1024/generate-image/uc-059-products.7ae42807.webp\",\"width\":1024},\n \"generate-image/uc-060-products\": {\"file\":\"1024/generate-image/uc-060-products.dd1c85e6.webp\",\"width\":928},\n \"generate-image/uc-061-products\": {\"file\":\"1024/generate-image/uc-061-products.202eca57.webp\",\"width\":1024},\n \"generate-image/uc-062-products\": {\"file\":\"1024/generate-image/uc-062-products.f1cea2ce.webp\",\"width\":1024},\n \"generate-image/uc-063-products\": {\"file\":\"1024/generate-image/uc-063-products.f07c00e9.webp\",\"width\":1024},\n \"generate-image/uc-064-products\": {\"file\":\"1024/generate-image/uc-064-products.b7580c26.webp\",\"width\":1024},\n \"generate-image/uc-065-products\": {\"file\":\"1024/generate-image/uc-065-products.43f5a8d6.webp\",\"width\":928},\n \"generate-image/uc-066-products\": {\"file\":\"1024/generate-image/uc-066-products.3bac85ac.webp\",\"width\":1024},\n \"generate-image/uc-067-products\": {\"file\":\"1024/generate-image/uc-067-products.a592aaef.webp\",\"width\":1024},\n \"generate-image/uc-068-products\": {\"file\":\"1024/generate-image/uc-068-products.a0869863.webp\",\"width\":1024},\n \"generate-image/uc-069-products\": {\"file\":\"1024/generate-image/uc-069-products.aa7bf52b.webp\",\"width\":1024},\n \"generate-image/uc-070-products\": {\"file\":\"1024/generate-image/uc-070-products.d63bff06.webp\",\"width\":928},\n \"generate-image/uc-071-creative\": {\"file\":\"1024/generate-image/uc-071-creative.c471a402.webp\",\"width\":1024},\n \"generate-image/uc-072-creative\": {\"file\":\"1024/generate-image/uc-072-creative.2d309a19.webp\",\"width\":1024},\n \"generate-image/uc-073-creative\": {\"file\":\"1024/generate-image/uc-073-creative.5b279da4.webp\",\"width\":1024},\n \"generate-image/uc-074-creative\": {\"file\":\"1024/generate-image/uc-074-creative.fb170541.webp\",\"width\":1024},\n \"generate-image/uc-075-creative\": {\"file\":\"1024/generate-image/uc-075-creative.20962975.webp\",\"width\":1024},\n \"generate-image/uc-076-creative\": {\"file\":\"1024/generate-image/uc-076-creative.54a3b6d4.webp\",\"width\":1024},\n \"generate-image/uc-077-creative\": {\"file\":\"1024/generate-image/uc-077-creative.484b6514.webp\",\"width\":1024},\n \"generate-image/uc-078-creative\": {\"file\":\"1024/generate-image/uc-078-creative.5fe041a5.webp\",\"width\":1024},\n \"generate-image/uc-079-creative\": {\"file\":\"1024/generate-image/uc-079-creative.9108f9a1.webp\",\"width\":1024},\n \"generate-image/uc-080-creative\": {\"file\":\"1024/generate-image/uc-080-creative.d55a036e.webp\",\"width\":1024},\n \"generate-image/uc-081-creative\": {\"file\":\"1024/generate-image/uc-081-creative.bf9160c8.webp\",\"width\":1024},\n \"generate-image/uc-082-creative\": {\"file\":\"1024/generate-image/uc-082-creative.f63ce013.webp\",\"width\":1024},\n \"generate-image/uc-083-creative\": {\"file\":\"1024/generate-image/uc-083-creative.4870d10a.webp\",\"width\":1024},\n \"generate-image/uc-084-creative\": {\"file\":\"1024/generate-image/uc-084-creative.a8a3ab46.webp\",\"width\":1024},\n \"generate-image/uc-085-creative\": {\"file\":\"1024/generate-image/uc-085-creative.995a1837.webp\",\"width\":1024},\n \"generate-image/uc-086-creative\": {\"file\":\"1024/generate-image/uc-086-creative.55270f6d.webp\",\"width\":1024},\n \"generate-image/uc-087-creative\": {\"file\":\"1024/generate-image/uc-087-creative.676a5d5d.webp\",\"width\":1024},\n \"generate-image/uc-088-creative\": {\"file\":\"1024/generate-image/uc-088-creative.00ed14af.webp\",\"width\":1024},\n \"generate-image/uc-089-creative\": {\"file\":\"1024/generate-image/uc-089-creative.0244f14b.webp\",\"width\":1024},\n \"generate-image/uc-090-creative\": {\"file\":\"1024/generate-image/uc-090-creative.e4c3ae75.webp\",\"width\":1024},\n \"generate-image/uc-091-home\": {\"file\":\"1024/generate-image/uc-091-home.4daf767e.webp\",\"width\":1024},\n \"generate-image/uc-092-home\": {\"file\":\"1024/generate-image/uc-092-home.d6858a3f.webp\",\"width\":1024},\n \"generate-image/uc-093-home\": {\"file\":\"1024/generate-image/uc-093-home.b623ec7f.webp\",\"width\":1024},\n \"generate-image/uc-094-home\": {\"file\":\"1024/generate-image/uc-094-home.4ae948c7.webp\",\"width\":1024},\n \"generate-image/uc-095-home\": {\"file\":\"1024/generate-image/uc-095-home.9022bd72.webp\",\"width\":1024},\n \"generate-image/uc-096-home\": {\"file\":\"1024/generate-image/uc-096-home.683b3367.webp\",\"width\":1024},\n \"generate-image/uc-097-home\": {\"file\":\"1024/generate-image/uc-097-home.52ba0aa6.webp\",\"width\":1024},\n \"generate-image/uc-098-home\": {\"file\":\"1024/generate-image/uc-098-home.d12c9c3d.webp\",\"width\":1024},\n \"generate-image/uc-099-home\": {\"file\":\"1024/generate-image/uc-099-home.78a478b9.webp\",\"width\":1024},\n \"generate-image/uc-100-home\": {\"file\":\"1024/generate-image/uc-100-home.3b0f17d5.webp\",\"width\":1024},\n \"generate-image/uc-101-home\": {\"file\":\"1024/generate-image/uc-101-home.b08cd107.webp\",\"width\":1024},\n \"generate-image/uc-102-home\": {\"file\":\"1024/generate-image/uc-102-home.998f6d9a.webp\",\"width\":1024},\n \"generate-image/uc-103-home\": {\"file\":\"1024/generate-image/uc-103-home.45f9f932.webp\",\"width\":1024},\n \"generate-image/uc-104-home\": {\"file\":\"1024/generate-image/uc-104-home.8e8ef864.webp\",\"width\":1024},\n \"generate-image/uc-105-home\": {\"file\":\"1024/generate-image/uc-105-home.734de0d6.webp\",\"width\":1024},\n \"generate-image/uc-106-family\": {\"file\":\"1024/generate-image/uc-106-family.fe9ad913.webp\",\"width\":1024},\n \"generate-image/uc-107-family\": {\"file\":\"1024/generate-image/uc-107-family.360deec4.webp\",\"width\":1024},\n \"generate-image/uc-108-family\": {\"file\":\"1024/generate-image/uc-108-family.6c16ace0.webp\",\"width\":1024},\n \"generate-image/uc-109-family\": {\"file\":\"1024/generate-image/uc-109-family.6987f6a5.webp\",\"width\":1024},\n \"generate-image/uc-110-family\": {\"file\":\"1024/generate-image/uc-110-family.6becf488.webp\",\"width\":1024},\n \"generate-image/uc-111-family\": {\"file\":\"1024/generate-image/uc-111-family.92b37824.webp\",\"width\":1024},\n \"generate-image/uc-112-family\": {\"file\":\"1024/generate-image/uc-112-family.d7493de7.webp\",\"width\":1024},\n \"generate-image/uc-113-family\": {\"file\":\"1024/generate-image/uc-113-family.fbeaeff4.webp\",\"width\":1008},\n \"generate-image/uc-114-family\": {\"file\":\"1024/generate-image/uc-114-family.32bb784e.webp\",\"width\":1024},\n \"generate-image/uc-115-family\": {\"file\":\"1024/generate-image/uc-115-family.85509cc3.webp\",\"width\":1008},\n \"generate-image/uc-116-family\": {\"file\":\"1024/generate-image/uc-116-family.f0121f77.webp\",\"width\":1024},\n \"generate-image/uc-117-family\": {\"file\":\"1024/generate-image/uc-117-family.bf354508.webp\",\"width\":1024},\n \"generate-image/uc-118-family\": {\"file\":\"1024/generate-image/uc-118-family.5ba66a14.webp\",\"width\":1024},\n \"generate-image/uc-119-family\": {\"file\":\"1024/generate-image/uc-119-family.0060578a.webp\",\"width\":1024},\n \"generate-image/uc-120-family\": {\"file\":\"1024/generate-image/uc-120-family.60f4c52e.webp\",\"width\":1024},\n \"generate-image/wa-status-offer\": {\"file\":\"1024/generate-image/wa-status-offer.61177c7c.webp\",\"width\":941},\n \"generate-image/work-email-header\": {\"file\":\"1024/generate-image/work-email-header.81f95077.webp\",\"width\":1024},\n \"generate-image/work-landing-hero\": {\"file\":\"1024/generate-image/work-landing-hero.cc00e9fc.webp\",\"width\":1024},\n \"generate-image/work-report-cover\": {\"file\":\"1024/generate-image/work-report-cover.c5395fb4.webp\",\"width\":1024},\n \"generate-image/x-chart-take\": {\"file\":\"1024/generate-image/x-chart-take.d1a909c0.webp\",\"width\":1024},\n \"generate-image/x-statement-card\": {\"file\":\"1024/generate-image/x-statement-card.93c12a0c.webp\",\"width\":1024},\n}\n","import { FACTORY_PRESET_PREVIEW_FILES, FACTORY_PRESET_PREVIEW_LARGE_FILES } from \"./preview-files.generated.js\"\n\nexport { FACTORY_PRESET_PREVIEW_FILES, FACTORY_PRESET_PREVIEW_LARGE_FILES }\n\n/**\n * Where the factory preset previews live, relative to the app's origin:\n * `frontend/public/preset-previews/` is served at `/preset-previews/` in every\n * edition. Each name carries its content hash (`<slug>.<hash8>.webp`), so the\n * server caches them as immutable and a regenerated picture is a new URL.\n */\nexport const PRESET_PREVIEW_PATH = \"/preset-previews/\"\n\n/** The tile picture (`previewUrl`) is this wide. */\nexport const PRESET_PREVIEW_WIDTH = 512\n/** The full-screen picture (the second entry of `previewSrcSet`) is at most this wide; the map records its real width. */\nexport const PRESET_PREVIEW_LARGE_WIDTH = 1024\n\n/** A full-screen picture as the large map records it: its file under /preset-previews/ and its real width. */\nexport interface PresetPreviewLargeFile {\n readonly file: string\n readonly width: number\n}\n\nfunction originOf(baseUrl: string): string | undefined {\n try {\n const url = new URL(baseUrl)\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") return undefined\n return url.origin + url.pathname.replace(/\\/+$/, \"\")\n } catch {\n return undefined\n }\n}\n\n/**\n * The absolute URL of a factory preset's example picture on the installation\n * at `baseUrl` (its public origin, e.g. \"https://app.nodaro.ai\"), or null when\n * the preset has none. Only a preset whose file is in the committed map gets a\n * URL, so it never points at a file that does not exist.\n *\n * @param files the preset id → file map; defaults to the committed one\n */\nexport function factoryPresetPreviewUrl(\n presetId: string,\n baseUrl: string,\n files: Readonly<Record<string, string>> = FACTORY_PRESET_PREVIEW_FILES,\n): string | null {\n const file = Object.prototype.hasOwnProperty.call(files, presetId) ? files[presetId] : undefined\n if (!file) return null\n const origin = originOf(baseUrl)\n return origin ? `${origin}${PRESET_PREVIEW_PATH}${file}` : null\n}\n\n/**\n * The same picture at its two sizes as an `<img srcset>` value — the tile\n * picture at 512w and the full-screen one at its real width (up to 1024w) —\n * so a client lets the browser pick by the room it has. Null when either size\n * is missing, so a srcset never names a file that does not exist.\n *\n * @param files the small map; @param largeFiles the large map — both default to the committed ones\n */\nexport function factoryPresetPreviewSrcSet(\n presetId: string,\n baseUrl: string,\n files: Readonly<Record<string, string>> = FACTORY_PRESET_PREVIEW_FILES,\n largeFiles: Readonly<Record<string, PresetPreviewLargeFile>> = FACTORY_PRESET_PREVIEW_LARGE_FILES,\n): string | null {\n const small = factoryPresetPreviewUrl(presetId, baseUrl, files)\n const big = Object.prototype.hasOwnProperty.call(largeFiles, presetId) ? largeFiles[presetId] : undefined\n const large = big ? factoryPresetPreviewUrl(presetId, baseUrl, { [presetId]: big.file }) : null\n if (!small || !large || !big) return null\n return `${small} ${PRESET_PREVIEW_WIDTH}w, ${large} ${big.width}w`\n}\n","import { T2I_TO_I2I_VARIANT } from \"@nodaro/shared/models\"\nimport { ownEntry } from \"../own-entry.js\"\nimport type { FactoryPreset } from \"./types.js\"\nimport { stylizedSubjectFor, editsFor } from \"./shared-image.js\"\nimport { GENERATE_IMAGE_PRESETS } from \"./generate-image.js\"\nimport { GENERATE_VIDEO_PRESETS } from \"./generate-video.js\"\nimport { GENERATE_MUSIC_PRESETS, SUNO_GENERATE_PRESETS } from \"./music.js\"\nimport { TEXT_TO_SPEECH_PRESETS, VOICE_DESIGN_PRESETS, VOICE_CHANGER_PRESETS } from \"./voice.js\"\nimport { TEXT_TO_AUDIO_PRESETS } from \"./sfx.js\"\nimport { LLM_CHAT_PRESETS, GENERATE_SCRIPT_PRESETS, IMAGE_TO_TEXT_PRESETS } from \"./text.js\"\nimport { VIDEO_TO_VIDEO_PRESETS, ADD_CAPTIONS_PRESETS, COMBINE_VIDEOS_PRESETS } from \"./video-edit.js\"\nimport { SWITCHX_PRESETS } from \"./switchx.js\"\nimport { MOTION_GRAPHICS_PRESETS } from \"./motion-graphics.js\"\nimport { LOTTIE_OVERLAY_PRESETS } from \"./lottie-overlay.js\"\n\nexport type { FactoryPreset, FactoryPresetGroup } from \"./types.js\"\nexport { groupFactoryPresets } from \"./types.js\"\nexport { MAX_PRESET_REFERENCES, presetMinReferences } from \"./references.js\"\nexport {\n FACTORY_PRESET_PREVIEW_FILES,\n FACTORY_PRESET_PREVIEW_LARGE_FILES,\n PRESET_PREVIEW_LARGE_WIDTH,\n PRESET_PREVIEW_PATH,\n PRESET_PREVIEW_WIDTH,\n factoryPresetPreviewSrcSet,\n factoryPresetPreviewUrl,\n} from \"./previews.js\"\nexport type { PresetPreviewLargeFile } from \"./previews.js\"\n\n/**\n * A shared preset as Modify Image takes it. Modify Image always works from a source photo, so its\n * provider list names a model's image-to-image id where the model has a separate one\n * (`seedream-5-pro` → `seedream-5-pro-i2i`). The shared catalogs may carry the text-to-image id\n * Generate Image takes — its route switches to that same image-to-image model once a photo is\n * connected. Providers with no separate image-to-image id are left as they are.\n */\nfunction forModifyImage(p: FactoryPreset): FactoryPreset {\n const provider = p.data.provider\n const imageToImage = typeof provider === \"string\" ? T2I_TO_I2I_VARIANT[provider] : undefined\n return imageToImage ? { ...p, data: { ...p.data, provider: imageToImage } } : p\n}\n\n/** System/factory presets shipped with the app. Assembled here in the original\n * single-file key order; each value lives in its per-domain module. */\nexport const FACTORY_PRESETS: Readonly<Record<string, readonly FactoryPreset[]>> = {\n \"generate-image\": GENERATE_IMAGE_PRESETS,\n\n // modify-image shares the Stylized Subject + Edits catalogs with generate-image\n // (single source of truth in STYLIZED_SUBJECT / IMAGE_EDITS). modify-image is\n // slated for deprecation in favor of generate-image — when removed, drop this key.\n \"modify-image\": [...stylizedSubjectFor(\"modify-image\"), ...editsFor(\"modify-image\")].map(forModifyImage),\n \"generate-video\": GENERATE_VIDEO_PRESETS,\n \"text-to-speech\": TEXT_TO_SPEECH_PRESETS,\n \"text-to-audio\": TEXT_TO_AUDIO_PRESETS,\n \"generate-music\": GENERATE_MUSIC_PRESETS,\n \"suno-generate\": SUNO_GENERATE_PRESETS,\n \"llm-chat\": LLM_CHAT_PRESETS,\n \"generate-script\": GENERATE_SCRIPT_PRESETS,\n \"image-to-text\": IMAGE_TO_TEXT_PRESETS,\n \"voice-design\": VOICE_DESIGN_PRESETS,\n \"video-to-video\": VIDEO_TO_VIDEO_PRESETS,\n \"switchx\": SWITCHX_PRESETS,\n \"voice-changer\": VOICE_CHANGER_PRESETS,\n \"add-captions\": ADD_CAPTIONS_PRESETS,\n \"combine-videos\": COMBINE_VIDEOS_PRESETS,\n \"motion-graphics\": MOTION_GRAPHICS_PRESETS,\n \"lottie-overlay\": LOTTIE_OVERLAY_PRESETS,\n}\n\n/** The catalog for `nodeType`, or an empty one — also for a name that is an\n * Object.prototype member (`constructor`), which is no catalog of ours. */\nexport function getFactoryPresets(nodeType: string): readonly FactoryPreset[] {\n return ownEntry(FACTORY_PRESETS, nodeType) ?? []\n}\n","// packages/prompts/src/caption-treatments.ts\nimport type { CaptionPlan, SupportedFontName } from \"@nodaro/shared/captions\"\nimport { ADD_CAPTIONS_PRESETS } from \"./factory-presets/video-edit.js\"\n\nexport const HOOK_PLATE_PRESET_ID = \"add-captions/hook-plate\"\nexport const BODY_CAPTIONS_PRESET_ID = \"add-captions/body-captions\"\n\n/** Levers a spoken language needs on every caption segment; a language with no entry adds none. */\nexport interface CaptionLanguageLevers {\n readonly fontFamily?: SupportedFontName\n readonly uppercase?: boolean\n}\n\n/**\n * Keyed by primary language tag. Hebrew: one face that carries Hebrew and Latin, so a Latin\n * brand inside a Hebrew line is drawn in the same face, and no upper-casing, so the brand keeps\n * its spelling.\n */\nexport const CAPTION_LEVERS_BY_LANGUAGE: Readonly<Record<string, CaptionLanguageLevers>> = {\n he: { fontFamily: \"Rubik\", uppercase: false },\n}\n\n/** The add-captions segment keys a lever set may carry: the segment schema minus times and words. */\nexport const CAPTION_SEGMENT_LEVER_KEYS: readonly string[] = [\n \"style\", \"position\", \"fontSize\", \"color\", \"backgroundColor\", \"look\", \"fontFamily\", \"fontWeight\",\n \"strokeColor\", \"strokeWidth\", \"highlightColor\", \"uppercase\", \"positionY\", \"animate\", \"maxWordsPerLine\",\n]\n\nexport type CaptionSegmentRole = \"hook\" | \"body\"\n\nexport interface HookPlateSegmentsOptions {\n /** The body's levers; default = the Body Captions preset. Keys outside CAPTION_SEGMENT_LEVER_KEYS are ignored. */\n readonly bodyLevers?: Readonly<Record<string, unknown>>\n}\n\nexport interface HookPlateSegmentsResult {\n /** Route-shaped (camelCase) `segments`. Empty means \"no captions\". */\n readonly segments: Record<string, unknown>[]\n /** Segments left out, in order hook, body. */\n readonly dropped: CaptionSegmentRole[]\n}\n\nconst LEVER_KEYS: ReadonlySet<string> = new Set(CAPTION_SEGMENT_LEVER_KEYS)\n\n/** A lever set: segment lever keys only, without null or undefined values. */\nfunction pickLevers(source: Readonly<Record<string, unknown>> | undefined): Record<string, unknown> {\n const out: Record<string, unknown> = {}\n if (!source) return out\n for (const [k, v] of Object.entries(source)) if (LEVER_KEYS.has(k) && v !== undefined && v !== null) out[k] = v\n return out\n}\n\nfunction presetLevers(id: string): Record<string, unknown> {\n const preset = ADD_CAPTIONS_PRESETS.find((p) => p.id === id)\n if (!preset) throw new Error(`The ${id} caption preset is missing from the catalog.`)\n return pickLevers(preset.data)\n}\n\nconst PLATE_LEVERS = presetLevers(HOOK_PLATE_PRESET_ID)\nconst BODY_LEVERS = presetLevers(BODY_CAPTIONS_PRESET_ID)\n\nfunction languageLevers(tag: string | undefined): CaptionLanguageLevers {\n if (typeof tag !== \"string\") return {}\n const primary = tag.trim().split(/[-_]/)[0]!.toLowerCase()\n return Object.hasOwn(CAPTION_LEVERS_BY_LANGUAGE, primary) ? CAPTION_LEVERS_BY_LANGUAGE[primary]! : {}\n}\n\nconst isTime = (n: unknown): n is number => typeof n === \"number\" && Number.isFinite(n)\n\n/**\n * One caption plan → the `segments` of one add-captions request: the opening line as the Hook\n * Plate, then the body's words in the Body Captions style (or the caller's own body levers).\n * The styling is read from the two presets, never restated here. Pure: no I/O.\n */\nexport function hookPlateCaptionSegments(plan: CaptionPlan, opts: HookPlateSegmentsOptions = {}): HookPlateSegmentsResult {\n const hookEnd = plan.hookEndMs\n if (!isTime(hookEnd) || hookEnd < 0) return { segments: [], dropped: [\"hook\", \"body\"] }\n const language = languageLevers(plan.language)\n const limit = typeof plan.videoDurationMs === \"number\" ? plan.videoDurationMs : Number.POSITIVE_INFINITY\n const segments: Record<string, unknown>[] = []\n const dropped: CaptionSegmentRole[] = []\n\n const plateEnd = Math.min(hookEnd, limit)\n if (plateEnd > 0 && typeof plan.hookText === \"string\" && /\\S/.test(plan.hookText)) {\n segments.push({ startMs: 0, endMs: plateEnd, text: plan.hookText, ...PLATE_LEVERS, ...language })\n } else {\n dropped.push(\"hook\")\n }\n\n // The body starts where the opening line ends, even when no plate is shown, so it never\n // draws over the opening line.\n const bodyEnd = Math.min(plan.bodyEndMs, limit)\n const words = Array.isArray(plan.captions) ? plan.captions : []\n const chosen = pickLevers(opts.bodyLevers)\n const bodyLevers = Object.keys(chosen).length > 0 ? chosen : BODY_LEVERS\n if (bodyEnd > hookEnd && words.length > 0) {\n segments.push({\n startMs: hookEnd,\n endMs: bodyEnd,\n captions: words.map((w) => ({ text: w.text, startMs: w.startMs, endMs: w.endMs })),\n ...bodyLevers,\n ...language,\n })\n } else {\n dropped.push(\"body\")\n }\n\n return { segments, dropped }\n}\n","import type { StyleDirectives } from \"@nodaro/shared/pipeline\"\n\n/**\n * Style Gallery presets.\n *\n * Each preset is a named \"look\" the user picks at Start. Picking one sets the\n * pipeline's `style_directives`, which the Showrunner folds into the plan's\n * `global_style` — and from there it propagates into every entity reference\n * sheet, scene keyframe, and shot prompt, plus the image/location critics. So\n * the whole film stays visually consistent in the chosen style.\n *\n * The catalog is intentionally style/genre-agnostic (not just \"cinematic\"):\n * films, explainers, animated ads, kids' content, education. A per-shot style\n * override lives in the Focus composer (follow-up).\n *\n * `swatch` is a CSS gradient used as a lightweight thumbnail until real sample\n * images ship — it gives each look a recognizable visual without bundling\n * assets.\n */\nexport interface StylePreset {\n /** Stable id stored on the pipeline (do not rename — breaks recall). */\n id: string\n label: string\n /** One-line description shown under the label. */\n description: string\n /** CSS `background` value for the card's thumbnail swatch. */\n swatch: string\n /** Conditioning fed to the Showrunner → plan.global_style → all generation. */\n directives: StyleDirectives\n}\n\nexport const STYLE_PRESETS: readonly StylePreset[] = [\n {\n id: \"cinematic\",\n label: \"Cinematic Photography\",\n description: \"Photoreal film look, shallow depth, filmic grade.\",\n swatch: \"linear-gradient(135deg,#1b2a4a,#c97b4a)\",\n directives: {\n visualStyle:\n \"photorealistic cinematic film still, 35mm anamorphic, shallow depth of field, subtle film grain\",\n colorPalette: \"rich natural tones with a teal-and-orange grade\",\n lighting: \"dramatic motivated lighting, soft key with rim light\",\n cameraLanguage: \"cinematic composition, smooth dolly and crane moves\",\n avoid: \"cartoon, illustration, flat shading, low detail\",\n },\n },\n {\n id: \"flat2d\",\n label: \"Modern Flat 2D\",\n description: \"Bold flat vector shapes, clean outlines.\",\n swatch: \"linear-gradient(135deg,#ff6b6b,#ffd93d)\",\n directives: {\n visualStyle:\n \"modern flat 2D vector illustration, bold geometric shapes, clean outlines\",\n colorPalette: \"bright saturated flat colors\",\n lighting: \"even flat lighting, no gradients\",\n cameraLanguage: \"straight-on framing, simple pans and cuts\",\n avoid: \"photorealism, 3D render, gradients, texture noise\",\n },\n },\n {\n id: \"clay3d\",\n label: \"Soft 3D Clay\",\n description: \"Rounded claymation forms, matte texture.\",\n swatch: \"linear-gradient(135deg,#f5b5c8,#a8d8c0)\",\n directives: {\n visualStyle:\n \"soft 3D claymation look, rounded forms, matte clay texture, fingerprint detail\",\n colorPalette: \"warm pastel palette\",\n lighting: \"soft studio lighting with gentle shadows\",\n cameraLanguage: \"playful slow orbits and push-ins\",\n avoid: \"photorealism, harsh shadows, flat 2D\",\n },\n },\n {\n id: \"lineart\",\n label: \"Minimal Line-Art\",\n description: \"Single-weight black strokes, one accent.\",\n swatch: \"linear-gradient(135deg,#ffffff,#111111)\",\n directives: {\n visualStyle: \"minimal black line-art on white, single-weight strokes\",\n colorPalette: \"monochrome with a single accent color\",\n lighting: \"no rendered lighting, line only\",\n cameraLanguage: \"static, centered compositions\",\n avoid: \"color fills, shading, photorealism, 3D\",\n },\n },\n {\n id: \"papercut\",\n label: \"Paper-Cut\",\n description: \"Layered construction-paper collage.\",\n swatch: \"linear-gradient(135deg,#e8a87c,#85cdca)\",\n directives: {\n visualStyle:\n \"layered paper-cut collage, stacked construction-paper layers with soft drop shadows\",\n colorPalette: \"warm crafted paper tones\",\n lighting: \"soft layered shadows between paper planes\",\n cameraLanguage: \"gentle parallax between paper layers\",\n avoid: \"photorealism, smooth gradients, 3D render\",\n },\n },\n {\n id: \"isometric\",\n label: \"Isometric\",\n description: \"Clean 2:1 axonometric diorama.\",\n swatch: \"linear-gradient(135deg,#6a82fb,#a6c1ee)\",\n directives: {\n visualStyle: \"clean isometric 3D, 2:1 axonometric, miniature diorama\",\n colorPalette: \"soft uniform palette\",\n lighting: \"even ambient occlusion, no harsh shadows\",\n cameraLanguage: \"fixed isometric angle with smooth pans\",\n avoid: \"perspective distortion, photorealism, hand-drawn lines\",\n },\n },\n {\n id: \"tiltshift\",\n label: \"Tilt-Shift Miniature\",\n description: \"Toy-scale hyperreal, shifted focus.\",\n swatch: \"linear-gradient(135deg,#43cea2,#185a9d)\",\n directives: {\n visualStyle: \"tilt-shift miniature photography, hyperreal toy-like scale\",\n colorPalette: \"vivid high-saturation\",\n lighting: \"bright midday daylight\",\n cameraLanguage: \"top-down tilt-shift angle, slow push-ins\",\n avoid: \"flat illustration, low saturation, line-art\",\n },\n },\n {\n id: \"anime\",\n label: \"Anime / Cel\",\n description: \"Cel-shaded, crisp lines, expressive.\",\n swatch: \"linear-gradient(135deg,#ff9a9e,#fad0c4)\",\n directives: {\n visualStyle:\n \"anime cel-shaded illustration, crisp linework, expressive characters\",\n colorPalette: \"vibrant cel colors\",\n lighting: \"stylized cel shading with bold highlights\",\n cameraLanguage: \"dynamic anime framing with occasional speed lines\",\n avoid: \"photorealism, 3D render, muted colors\",\n },\n },\n {\n id: \"watercolor\",\n label: \"Watercolor Storybook\",\n description: \"Soft washes, paper texture, bleeding edges.\",\n swatch: \"linear-gradient(135deg,#cfd9df,#e2ebf0)\",\n directives: {\n visualStyle:\n \"soft watercolor storybook painting, visible paper texture, bleeding edges\",\n colorPalette: \"muted pastel washes\",\n lighting: \"soft diffuse light\",\n cameraLanguage: \"gentle, slow movements\",\n avoid: \"hard edges, photorealism, 3D render\",\n },\n },\n] as const\n\n/** Resolve a preset by id. Returns undefined for the \"Auto\" / unknown case. */\nexport function getStylePreset(id: string | undefined): StylePreset | undefined {\n if (!id) return undefined\n return STYLE_PRESETS.find((s) => s.id === id)\n}\n","// Object Studio asset presets — SINGLE SOURCE OF TRUTH for the Angles /\n// Materials / Variations preset chips AND their generation prompt fragments.\n//\n// Both the frontend tab wrappers (`object-studio/{angles,materials,variations}-tab.tsx`)\n// and the backend route (`generate-object-asset.ts` — VARIANTS validation +\n// buildVariantPrompt) import from here, so the preset list can never drift\n// between client and server.\n//\n// Why this file exists: the frontend shipped 9 / 13 / 11 presets while the\n// backend enum only accepted 5 / 6 / 5, so ~17 chips 400'd with a silent\n// failure (the route rejects any variant not in VARIANTS, and the studio sent\n// them as assetType:\"angles|materials|variations\", NOT \"custom\"). Deriving both\n// sides from one constant is the drift-proof fix.\n//\n// To add a preset: add ONE entry to the matching prompt map below. The key list\n// and the backend validation update automatically.\n\n/** Angle preset → prompt fragment (slotted into \"<name>, <fragment>. <base>\"). */\nexport const OBJECT_ANGLE_PROMPTS: Record<string, string> = {\n front: \"front view, facing camera directly\",\n side: \"side profile view\",\n top: \"top-down view, bird's eye perspective\",\n back: \"back view, rear perspective\",\n \"three-quarter\": \"three-quarter angle view, dynamic perspective\",\n detail: \"extreme close-up detail shot, macro view of the surface and craftsmanship\",\n \"in-context\": \"shown in its natural environment and use context, real-world setting\",\n exploded: \"exploded technical view, components separated and floating apart\",\n perspective: \"dramatic low-angle perspective view, strong sense of depth\",\n}\n\n/** Material preset → prompt fragment. */\nexport const OBJECT_MATERIAL_PROMPTS: Record<string, string> = {\n wood: \"made of polished wood, wood grain texture visible\",\n metal: \"made of brushed metal, metallic surface with subtle reflections\",\n glass: \"made of transparent glass, see-through with subtle reflections\",\n plastic: \"made of smooth plastic, matte finish\",\n fabric: \"covered in soft fabric texture, textile material\",\n stone: \"carved from stone, rough granite or marble texture\",\n ceramic: \"made of glazed ceramic, smooth glossy fired-clay surface\",\n leather: \"wrapped in tanned leather, natural grain and visible stitching\",\n paper: \"made of folded paper and cardboard, matte fibrous texture\",\n gold: \"made of polished gold, warm reflective precious-metal sheen\",\n silver: \"made of polished silver, cool bright reflective metal\",\n copper: \"made of copper, warm reddish metal with a subtle patina\",\n marble: \"carved from marble, smooth polished stone with natural veining\",\n}\n\n/** Variation preset → prompt fragment. */\nexport const OBJECT_VARIATION_PROMPTS: Record<string, string> = {\n clean: \"brand new pristine condition, perfect and clean\",\n weathered: \"slightly weathered and aged, with wear marks\",\n damaged: \"battle-damaged with scratches and dents\",\n ornate: \"ornately decorated with intricate details and patterns\",\n minimal: \"minimalist design, clean simple lines\",\n broken: \"broken and cracked, shattered with missing pieces\",\n antique: \"antique vintage version, aged patina and period detailing\",\n futuristic: \"sleek futuristic sci-fi redesign, advanced materials with a subtle glow\",\n holographic: \"iridescent holographic finish, rainbow refractive sheen\",\n dirty: \"dirty and grimy, covered in dust, mud and stains\",\n polished: \"immaculately polished, mirror-bright showroom finish\",\n}\n\nexport const OBJECT_ANGLE_PRESETS: readonly string[] = Object.keys(OBJECT_ANGLE_PROMPTS)\nexport const OBJECT_MATERIAL_PRESETS: readonly string[] = Object.keys(OBJECT_MATERIAL_PROMPTS)\nexport const OBJECT_VARIATION_PRESETS: readonly string[] = Object.keys(OBJECT_VARIATION_PROMPTS)\n\nexport type ObjectPresetAssetType = \"angles\" | \"materials\" | \"variations\"\n\n/** Preset key lists per asset type — backend VARIANTS validation reads this. */\nexport const OBJECT_ASSET_PRESETS: Record<ObjectPresetAssetType, readonly string[]> = {\n angles: OBJECT_ANGLE_PRESETS,\n materials: OBJECT_MATERIAL_PRESETS,\n variations: OBJECT_VARIATION_PRESETS,\n}\n\n/** Prompt-fragment maps per asset type — backend buildVariantPrompt reads this. */\nexport const OBJECT_ASSET_PROMPTS: Record<ObjectPresetAssetType, Record<string, string>> = {\n angles: OBJECT_ANGLE_PROMPTS,\n materials: OBJECT_MATERIAL_PROMPTS,\n variations: OBJECT_VARIATION_PROMPTS,\n}\n","/** Factory snippet catalog (v1: image + video; audio/text follow later).\n * Order within a category = menu order = pill quick-cycle order. */\nimport type { FactorySnippet } from \"./types.js\"\nimport { REFERENCE_RULES, SCENE_FRAME_RULE, FILM_STILL_PREFIX, CINEMATIC_LOOK_TAIL } from \"../reference-rules.js\"\n\nconst B = [\"image\", \"video\"] as const\nconst I = [\"image\"] as const\nconst V = [\"video\"] as const\n\nexport const FACTORY_SNIPPETS: readonly FactorySnippet[] = [\n // ── Identity & Consistency (prompt) ──\n { id: \"identity-lock\", name: \"Identity Lock\", description: \"Hard-preserve the person's identity vs the reference\", text: \"preserve the exact same face, facial features, eye color, age, and expression as the reference image — do not alter identity\", target: \"prompt\", media: B, category: \"Identity & Consistency\" },\n { id: \"same-person-as-reference\", name: \"Same Person as Reference\", description: \"Bind generation to the reference human\", text: \"the same person as in the reference image: identical face, hairstyle, build, and skin tone\", target: \"prompt\", media: B, category: \"Identity & Consistency\" },\n { id: \"edit-only-the-request\", name: \"Edit Only the Request\", description: \"Change one thing, freeze everything else (Kontext/gpt-image edit pattern)\", text: \"change only the requested element; keep the face, pose, lighting, framing, and everything else exactly the same\", target: \"prompt\", media: I, category: \"Identity & Consistency\" },\n { id: \"wardrobe-lock\", name: \"Wardrobe Lock\", description: \"Outfit continuity across shots and edits\", text: \"wearing exactly the same outfit as the reference — same garments, colors, fabrics, and accessories, unchanged\", target: \"prompt\", media: B, category: \"Identity & Consistency\" },\n { id: \"no-beautify\", name: \"No Beautify\", description: \"Stop the model 'improving' a face\", text: \"preserve natural skin texture, age lines, and asymmetries; do not beautify, smooth, slim, or rejuvenate the face\", target: \"prompt\", media: I, category: \"Identity & Consistency\" },\n\n // ── Reference locks (prompt) — insert at the START of a reference prompt ──\n // Text comes from the shared constant, not a hand-written twin. This entry used\n // to carry its own wording — no face rules, likeness phrased as a passive —\n // which scored 0/4 on moving a garment between references where the merged\n // block scored 4/4 (see reference-rules.ts). A snippet is copied into the\n // prompt at INSERT time, so changing it here only affects future insertions.\n { id: \"reference-lock\", name: \"Reference Lock\", description: \"Default-deny + preserve likeness + compose into one image (full scenes)\", text: REFERENCE_RULES, target: \"prompt\", media: I, category: \"Reference locks\" },\n // The eyeline suppressor, kept OUT of Reference Lock on purpose: a portrait\n // or a piece to camera wants the eyeline. 4/4 on a brief where the lock alone\n // was 0/4, at no measured cost to identity or wardrobe.\n { id: \"scene-frame\", name: \"Scene Frame\", description: \"Reads as a frame from a film, not a posed photo — nobody faces the lens\", text: SCENE_FRAME_RULE, target: \"prompt\", media: I, category: \"Reference locks\" },\n // A PREFIX, not a sentence — it swallows the scene that follows it, which is\n // exactly why it costs nothing. The same idea written as a standalone claim\n // (\"This image is a scene start frame of a video.\") lost the lead's identity\n // in 3 of 3 draws. Goes at the very TOP, above the scene.\n { id: \"film-still-of\", name: \"Film Still Of\", description: \"Put at the very top, before the scene — lead with the shot size, e.g. \\\"Medium wide…\\\"\", text: `Medium wide ${FILM_STILL_PREFIX.charAt(0).toLowerCase()}${FILM_STILL_PREFIX.slice(1)}`, target: \"prompt\", media: I, category: \"Reference locks\" },\n // Goes at the very END. An example to edit — a different film wants a\n // different stock; what generalises is that the look comes LAST.\n { id: \"cinematic-look\", name: \"Cinematic Look (16mm)\", description: \"Append at the END — film stock, lens, light and palette\", text: CINEMATIC_LOOK_TAIL, target: \"prompt\", media: I, category: \"Reference locks\" },\n { id: \"reference-extract\", name: \"Reference Extract\", description: \"Isolate only the specified elements — no scene, no figure\", text: \"Take only what is specified from the reference images. Do not take anything else.\", target: \"prompt\", media: I, category: \"Reference locks\" },\n { id: \"ghost-mannequin\", name: \"Ghost Mannequin\", description: \"Show worn garments without a wearer (product shot)\", text: \"Ghost-mannequin product shot: the garment in its natural worn shape, with no person, body, face, or mannequin visible.\", target: \"prompt\", media: I, category: \"Reference locks\" },\n\n // ── Quality (prompt) ──\n { id: \"cinematic-quality\", name: \"Cinematic Quality\", description: \"Concrete film language that works on all modern models\", text: \"cinematic still, shallow depth of field, filmic color grade, soft motivated lighting, subtle film grain\", target: \"prompt\", media: B, category: \"Quality\" },\n { id: \"editorial-photo\", name: \"Editorial Photo\", description: \"Magazine-grade photographic quality\", text: \"professional editorial photography, sharp focus, balanced natural exposure, magazine-quality composition\", target: \"prompt\", media: I, category: \"Quality\" },\n { id: \"photoreal-anchor\", name: \"Photoreal Anchor\", description: \"Realism via camera language instead of 'realistic'\", text: \"photorealistic, shot on a full-frame camera, 50mm lens, natural color science, realistic skin tones\", target: \"prompt\", media: I, category: \"Quality\" },\n { id: \"crisp-detail\", name: \"Crisp Detail\", description: \"Detail booster that survives on modern models\", text: \"intricate fine detail, crisp micro-textures, tack-sharp focus on the subject\", target: \"prompt\", media: B, category: \"Quality\" },\n { id: \"polished-3d-render\", name: \"Polished 3D Render\", description: \"Quality language for CGI / product looks\", text: \"physically based rendering, ray-traced global illumination, studio HDRI reflections\", target: \"prompt\", media: I, category: \"Quality\" },\n\n // ── Lighting (prompt) ──\n { id: \"golden-hour\", name: \"Golden Hour\", description: \"Warm low sun\", text: \"bathed in warm golden-hour sunlight, long soft shadows, gentle lens flare\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"blue-hour\", name: \"Blue Hour\", description: \"Cool twilight mood\", text: \"cool blue-hour twilight, soft ambient dusk glow, practical lights just switching on\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"rembrandt-portrait\", name: \"Rembrandt Portrait\", description: \"Classic dramatic portrait key light\", text: \"Rembrandt lighting, single key at 45 degrees, triangle of light on the shadowed cheek, dark backdrop\", target: \"prompt\", media: I, category: \"Lighting\" },\n { id: \"studio-softbox\", name: \"Studio Softbox\", description: \"Clean commercial / product light\", text: \"clean studio lighting, large softbox key with gentle fill, seamless background, no harsh shadows\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"neon-noir\", name: \"Neon Noir\", description: \"Cyberpunk night palette\", text: \"neon signs reflecting on wet pavement, cyan and magenta rim light, moody cinematic glow\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"volumetric-rays\", name: \"Volumetric Rays\", description: \"Visible god-rays / atmosphere\", text: \"volumetric light rays cutting through haze, god rays, visible atmospheric dust\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"candlelit\", name: \"Candlelit\", description: \"Single warm practical source\", text: \"lit only by warm flickering candlelight, deep chiaroscuro shadows, intimate atmosphere\", target: \"prompt\", media: B, category: \"Lighting\" },\n { id: \"rim-backlight\", name: \"Rim Backlight\", description: \"Subject separation from the background\", text: \"strong backlight rim separating the subject from the background, glowing hair light\", target: \"prompt\", media: B, category: \"Lighting\" },\n\n // ── Camera & Lens (prompt) ──\n { id: \"85mm-portrait\", name: \"85mm Portrait\", description: \"Flattering portrait compression\", text: \"85mm portrait lens at f/1.8, creamy bokeh, flattering compression, tack-sharp eyes\", target: \"prompt\", media: I, category: \"Camera & Lens\" },\n { id: \"35mm-documentary\", name: \"35mm Documentary\", description: \"Natural reportage perspective\", text: \"35mm lens, documentary photography feel, natural perspective, candid framing\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"wide-angle-24mm\", name: \"Wide Angle 24mm\", description: \"Sweeping environment / scale\", text: \"24mm wide-angle lens, expansive perspective, dramatic foreground-to-background depth\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"macro-detail\", name: \"Macro Detail\", description: \"Extreme close texture work\", text: \"extreme macro close-up, 100mm macro lens, razor-thin focus plane, fine surface detail\", target: \"prompt\", media: I, category: \"Camera & Lens\" },\n { id: \"shallow-depth-of-field\", name: \"Shallow Depth of Field\", description: \"Bokeh subject isolation\", text: \"shallow depth of field at f/1.8, subject in crisp focus, background melting into soft bokeh\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"deep-focus\", name: \"Deep Focus\", description: \"Everything sharp, landscape / architecture\", text: \"deep depth of field at f/11, sharp focus from foreground to horizon\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"kodak-portra-look\", name: \"Kodak Portra Look\", description: \"Beloved warm-skin film stock\", text: \"shot on Kodak Portra 400, warm natural skin tones, gentle contrast, fine film grain\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"cinestill-night-look\", name: \"CineStill Night Look\", description: \"Tungsten night-film aesthetic\", text: \"shot on CineStill 800T, tungsten white balance, teal shadows, halation glow around lights\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n { id: \"anamorphic-widescreen\", name: \"Anamorphic Widescreen\", description: \"Cinema lens character\", text: \"anamorphic widescreen, oval bokeh, subtle horizontal lens flares\", target: \"prompt\", media: B, category: \"Camera & Lens\" },\n\n // ── Composition (prompt) ──\n { id: \"rule-of-thirds\", name: \"Rule of Thirds\", description: \"Off-center balance\", text: \"composed on the rule of thirds, subject off-center, generous negative space\", target: \"prompt\", media: B, category: \"Composition\" },\n { id: \"extreme-close-up\", name: \"Extreme Close-Up\", description: \"Detail / emotion framing\", text: \"extreme close-up tightly framing the face, eyes as the focal point\", target: \"prompt\", media: B, category: \"Composition\" },\n { id: \"full-body-in-frame\", name: \"Full Body in Frame\", description: \"Forces head-to-toe (fights auto-cropping)\", text: \"full-body shot, entire figure visible head to toe, feet in frame\", target: \"prompt\", media: B, category: \"Composition\" },\n { id: \"overhead-flat-lay\", name: \"Overhead Flat Lay\", description: \"Top-down product / food\", text: \"top-down overhead shot, flat-lay composition, items neatly arranged on a clean surface\", target: \"prompt\", media: I, category: \"Composition\" },\n { id: \"low-angle-hero\", name: \"Low-Angle Hero\", description: \"Power / scale from below\", text: \"dramatic low-angle shot looking up at the subject, towering heroic perspective\", target: \"prompt\", media: B, category: \"Composition\" },\n { id: \"centered-symmetry\", name: \"Centered Symmetry\", description: \"Wes Anderson one-point look\", text: \"perfectly centered symmetrical composition, one-point perspective, meticulous balance\", target: \"prompt\", media: B, category: \"Composition\" },\n\n // ── Realism (prompt) ──\n { id: \"real-skin-texture\", name: \"Real Skin Texture\", description: \"The no-plastic-skin anchor\", text: \"natural skin texture with visible pores, fine lines, and subtle imperfections — no airbrushing\", target: \"prompt\", media: B, category: \"Realism\" },\n { id: \"candid-phone-photo\", name: \"Candid Phone Photo\", description: \"Amateurism reads as real\", text: \"candid unstaged smartphone photo, slightly imperfect framing, natural ambient light, casual realism\", target: \"prompt\", media: I, category: \"Realism\" },\n { id: \"film-grain\", name: \"Film Grain\", description: \"Grain breaks the synthetic-clean look\", text: \"subtle 35mm film grain, faint halation, natural sensor noise\", target: \"prompt\", media: B, category: \"Realism\" },\n { id: \"muted-true-color\", name: \"Muted True Color\", description: \"Kills the oversaturated AI grade\", text: \"muted naturalistic color palette, accurate white balance, restrained saturation\", target: \"prompt\", media: B, category: \"Realism\" },\n { id: \"lived-in-detail\", name: \"Lived-In Detail\", description: \"Anti-sterile environments\", text: \"lived-in scene with natural clutter, wear and tear, scuffed surfaces and dust\", target: \"prompt\", media: B, category: \"Realism\" },\n\n // ── Text Rendering (prompt) ──\n { id: \"legible-sign-text\", name: \"Legible Sign Text\", description: \"Verbatim text via quotes — replace YOUR TEXT\", text: 'a sign that reads \"YOUR TEXT\" in clear, legible, correctly spelled lettering, high contrast against the background', target: \"prompt\", media: I, category: \"Text Rendering\" },\n { id: \"clean-typography\", name: \"Clean Typography\", description: \"Poster / headline typography control\", text: \"bold sans-serif headline, accurate spelling rendered verbatim, professional kerning, clear negative space around the text\", target: \"prompt\", media: I, category: \"Text Rendering\" },\n\n // ── Camera Motion (prompt, video) ──\n { id: \"slow-dolly-in\", name: \"Slow Dolly-In\", description: \"The most reliable AI camera move\", text: \"slow steady dolly-in toward the subject, gradual and smooth\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"orbit-shot\", name: \"Orbit Shot\", description: \"Arc around the subject\", text: \"camera orbits smoothly around the subject at constant speed\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"tracking-shot\", name: \"Tracking Shot\", description: \"Follow movement from the side\", text: \"smooth tracking shot following the subject from the side\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"handheld-energy\", name: \"Handheld Energy\", description: \"Documentary realism\", text: \"handheld camera with subtle natural shake, documentary energy\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"crane-reveal\", name: \"Crane Reveal\", description: \"Vertical reveal\", text: \"crane shot rising slowly to reveal the full scene below\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"locked-tripod\", name: \"Locked Tripod\", description: \"Stops unwanted camera drift\", text: \"static locked-off tripod shot, fixed framing, no camera movement\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n { id: \"fpv-fly-through\", name: \"FPV Fly-Through\", description: \"Drone racing energy\", text: \"FPV drone shot flying forward through the scene, fast and fluid\", target: \"prompt\", media: V, category: \"Camera Motion\" },\n\n // ── Motion Quality (prompt, video) ──\n { id: \"natural-physics\", name: \"Natural Physics\", description: \"Sora/Veo-era physics anchor\", text: \"natural realistic physics, accurate weight and momentum, grounded believable movement\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n { id: \"cinematic-slow-motion\", name: \"Cinematic Slow Motion\", description: \"Graceful slo-mo\", text: \"smooth cinematic slow motion, graceful deliberate movement, fine detail visible\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n { id: \"subtle-ambient-motion\", name: \"Subtle Ambient Motion\", description: \"i2v 'living photo' — prevents overshoot\", text: \"subtle natural motion only: gentle breathing, hair moving in the breeze, soft ambient movement\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n { id: \"single-action-beat\", name: \"Single Action Beat\", description: \"One action + endpoint prevents loop failures\", text: \"performs one single continuous action, then settles naturally back into place\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n { id: \"i2v-fidelity-lock\", name: \"I2V Fidelity Lock\", description: \"Animate without redrawing the input image\", text: \"keep the exact appearance, outfit, colors, and background from the input image; animate only the described motion\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n { id: \"stable-scene-lock\", name: \"Stable Scene Lock\", description: \"Anti scene-mutation across the clip\", text: \"consistent lighting and stable framing throughout, the environment stays unchanged, no scene transitions\", target: \"prompt\", media: V, category: \"Motion Quality\" },\n\n // ── Audio & Dialogue (prompt, video) ──\n { id: \"ambient-sound-bed\", name: \"Ambient Sound Bed\", description: \"Audio: label syntax for audio-capable video models\", text: \"Audio: ambient environmental sound matching the scene, quiet room tone, no music\", target: \"prompt\", media: V, category: \"Audio & Dialogue\" },\n { id: \"no-subtitles\", name: \"No Subtitles\", description: \"The #1 Veo community staple (inline — these models have no negative field)\", text: \"(no subtitles, no on-screen text, no captions)\", target: \"prompt\", media: V, category: \"Audio & Dialogue\" },\n { id: \"silence-lock\", name: \"Silence Lock\", description: \"Stops AI gibberish-speech when no dialogue is wanted\", text: \"no dialogue, mouth closed, ambient sound only\", target: \"prompt\", media: V, category: \"Audio & Dialogue\" },\n\n // ── Negative — Image (negative) ──\n { id: \"anatomy-cleanup\", name: \"Anatomy Cleanup\", description: \"The classic hands/limbs scrub\", text: \"deformed hands, extra fingers, fused fingers, bad anatomy, extra limbs, distorted face\", target: \"negative\", media: I, category: \"Negative — Image\" },\n { id: \"watermark-scrub\", name: \"Watermark Scrub\", description: \"Stock-photo residue removal\", text: \"watermark, signature, text overlay, logo, username, jpeg artifacts\", target: \"negative\", media: I, category: \"Negative — Image\" },\n { id: \"low-quality-scrub\", name: \"Low-Quality Scrub\", description: \"Legacy quality negative (SD-era models)\", text: \"worst quality, low quality, lowres, blurry, out of focus, pixelated\", target: \"negative\", media: I, category: \"Negative — Image\" },\n { id: \"stray-text-scrub\", name: \"Stray Text Scrub\", description: \"Kills the gibberish-text habit\", text: \"text, captions, lettering, watermarks, logos\", target: \"negative\", media: B, category: \"Negative — Image\" },\n { id: \"ai-look-scrub\", name: \"AI-Look Scrub\", description: \"Kills plastic skin + HDR glow\", text: \"airbrushed, plastic skin, waxy smooth, overexposed HDR glow, oversaturated colors, beauty filter\", target: \"negative\", media: B, category: \"Negative — Image\" },\n { id: \"clutter-scrub\", name: \"Clutter Scrub\", description: \"Composition clarity\", text: \"cluttered composition, busy background, distracting elements\", target: \"negative\", media: I, category: \"Negative — Image\" },\n { id: \"garbled-text-scrub\", name: \"Garbled Text Scrub\", description: \"Text-rendering quality\", text: \"misspelled text, garbled letters, gibberish writing\", target: \"negative\", media: I, category: \"Negative — Image\" },\n\n // ── Negative — Video (negative) ──\n { id: \"artifact-scrub\", name: \"Artifact Scrub\", description: \"The big-three video failure modes\", text: \"morphing, warping, flickering, jitter, frame strobing, melting background\", target: \"negative\", media: V, category: \"Negative — Video\" },\n { id: \"body-stability\", name: \"Body Stability\", description: \"Anatomy over time\", text: \"extra limbs, duplicate limbs, face distortion, body deformation, floating objects\", target: \"negative\", media: V, category: \"Negative — Video\" },\n { id: \"camera-discipline\", name: \"Camera Discipline\", description: \"For locked shots — pairs with Locked Tripod\", text: \"camera drift, sudden zooms, handheld shake, unintended scene cuts\", target: \"negative\", media: V, category: \"Negative — Video\" },\n { id: \"identity-drift-scrub\", name: \"Identity Drift Scrub\", description: \"Video face stability (Kling/Wan)\", text: \"changing facial features, face morphing, identity drift, face distortion\", target: \"negative\", media: V, category: \"Negative — Video\" },\n]\n","/** Which prompt field a snippet belongs to. Negative-target snippets only\n * surface in negative-prompt fields, and are bare comma lists by convention\n * (per Google's Veo guidance, a negative FIELD must name the unwanted thing,\n * never \"no X\"). */\nexport type SnippetTarget = \"prompt\" | \"negative\"\n\n/** Node modality a snippet applies to. A node declares its modality once in\n * the frontend's NODE_PROMPT_FIELDS; the menu shows snippets whose `media`\n * contains it. */\nexport type SnippetMedia = \"image\" | \"video\" | \"audio\" | \"text\"\n\nexport const SNIPPET_MEDIA_VALUES: readonly SnippetMedia[] = [\n \"image\",\n \"video\",\n \"audio\",\n \"text\",\n]\n\nexport interface FactorySnippet {\n /** Stable kebab slug, e.g. \"identity-lock\". Unique across the catalog. */\n readonly id: string\n readonly name: string\n /** One-liner shown in the menu and matched by search. */\n readonly description?: string\n /** The exact fragment inserted into the prompt. Single line; never contains\n * `{`, `}`, or `@` (guard-tested) so it can never form a mention/variable\n * token in the editor. */\n readonly text: string\n readonly target: SnippetTarget\n readonly media: readonly SnippetMedia[]\n /** Menu group AND the pill-swap sibling pool (swap lists same-category). */\n readonly category: string\n}\n","import { FACTORY_SNIPPETS } from \"./catalog.js\"\nimport type { SnippetMedia, SnippetTarget, FactorySnippet } from \"./types.js\"\n\nexport type { SnippetTarget, SnippetMedia, FactorySnippet } from \"./types.js\"\nexport { SNIPPET_MEDIA_VALUES } from \"./types.js\"\nexport { FACTORY_SNIPPETS } from \"./catalog.js\"\n\n/** Factory snippets for one field: target match + media membership. */\nexport function getFactorySnippets(\n target: SnippetTarget,\n media: SnippetMedia,\n): readonly FactorySnippet[] {\n return FACTORY_SNIPPETS.filter(\n (s) => s.target === target && s.media.includes(media),\n )\n}\n"]}