@nodaro/shared 1.4.1

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 (665) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +32 -0
  3. package/dist/index.cjs +12506 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +12269 -0
  6. package/dist/index.d.ts +12269 -0
  7. package/dist/index.js +11831 -0
  8. package/dist/index.js.map +1 -0
  9. package/package.json +54 -0
  10. package/src/__tests__/__snapshots__/prompt-builder-segments.test.ts.snap +65 -0
  11. package/src/__tests__/ai-avatar-pricing.test.ts +321 -0
  12. package/src/__tests__/apply-video-negative-prompt.test.ts +76 -0
  13. package/src/__tests__/attach-columns.test.ts +28 -0
  14. package/src/__tests__/audio-crossfade-curves.test.ts +33 -0
  15. package/src/__tests__/build-model-menu.test.ts +58 -0
  16. package/src/__tests__/character-aspect-defaults.test.ts +142 -0
  17. package/src/__tests__/character-mention-slug.test.ts +199 -0
  18. package/src/__tests__/character-reference-photo-kinds.test.ts +32 -0
  19. package/src/__tests__/character-usage-mode.test.ts +147 -0
  20. package/src/__tests__/character-variant-assets.test.ts +142 -0
  21. package/src/__tests__/character-voice.test.ts +130 -0
  22. package/src/__tests__/cinematic-avatar-pricing.test.ts +119 -0
  23. package/src/__tests__/combine-transitions.test.ts +137 -0
  24. package/src/__tests__/component-types.test.ts +87 -0
  25. package/src/__tests__/condition-variables.test.ts +98 -0
  26. package/src/__tests__/credit-identifiers.test.ts +811 -0
  27. package/src/__tests__/default-video-provider.test.ts +63 -0
  28. package/src/__tests__/entity-image-handle.test.ts +43 -0
  29. package/src/__tests__/entity-variants.test.ts +33 -0
  30. package/src/__tests__/fal-lip-sync-sets.test.ts +31 -0
  31. package/src/__tests__/featured-entities.test.ts +33 -0
  32. package/src/__tests__/film-pricing.test.ts +64 -0
  33. package/src/__tests__/filter-condition.test.ts +285 -0
  34. package/src/__tests__/freecut-protocol.test.ts +35 -0
  35. package/src/__tests__/generate-text-items.test.ts +19 -0
  36. package/src/__tests__/generated-results.test.ts +50 -0
  37. package/src/__tests__/graph-utils.test.ts +618 -0
  38. package/src/__tests__/group-aggregation.test.ts +83 -0
  39. package/src/__tests__/i18n-locale-completeness.test.ts +156 -0
  40. package/src/__tests__/image-critic-node.test.ts +86 -0
  41. package/src/__tests__/image-mask-mode.test.ts +16 -0
  42. package/src/__tests__/image-ref-limit.test.ts +78 -0
  43. package/src/__tests__/inpaint-region.test.ts +24 -0
  44. package/src/__tests__/input-field-map-parity.test.ts +30 -0
  45. package/src/__tests__/json-evaluator.test.ts +289 -0
  46. package/src/__tests__/json-path.test.ts +64 -0
  47. package/src/__tests__/lip-sync-pricing.test.ts +142 -0
  48. package/src/__tests__/list-merge.test.ts +96 -0
  49. package/src/__tests__/list-sort.test.ts +134 -0
  50. package/src/__tests__/llm-models.test.ts +445 -0
  51. package/src/__tests__/location-mention-slug.test.ts +246 -0
  52. package/src/__tests__/locations-coverage-critic-schema.test.ts +92 -0
  53. package/src/__tests__/loop-delimiter.test.ts +39 -0
  54. package/src/__tests__/lottie-slots.test.ts +245 -0
  55. package/src/__tests__/model-catalog-flux2-resolutions.test.ts +21 -0
  56. package/src/__tests__/model-constants-location.test.ts +20 -0
  57. package/src/__tests__/model-constants.test.ts +122 -0
  58. package/src/__tests__/model-tree.test.ts +86 -0
  59. package/src/__tests__/no-internal-imports.test.ts +25 -0
  60. package/src/__tests__/node-default-mappings.test.ts +175 -0
  61. package/src/__tests__/node-mappable-fields.test.ts +7 -0
  62. package/src/__tests__/node-preset-export.test.ts +46 -0
  63. package/src/__tests__/node-preset-extract.test.ts +166 -0
  64. package/src/__tests__/node-refs-canonical.test.ts +54 -0
  65. package/src/__tests__/node-refs-combine.test.ts +54 -0
  66. package/src/__tests__/node-refs.test.ts +187 -0
  67. package/src/__tests__/node-runtime-keys.test.ts +99 -0
  68. package/src/__tests__/object-aspect-defaults.test.ts +59 -0
  69. package/src/__tests__/parameter-node-value.test.ts +137 -0
  70. package/src/__tests__/pinterest-url.test.ts +35 -0
  71. package/src/__tests__/pipeline-chat.test.ts +110 -0
  72. package/src/__tests__/pipeline-validation.test.ts +98 -0
  73. package/src/__tests__/presentation-utils.test.ts +1137 -0
  74. package/src/__tests__/producer-types.test.ts +47 -0
  75. package/src/__tests__/prompt-length-limits.test.ts +156 -0
  76. package/src/__tests__/provider-directive-defaults.test.ts +46 -0
  77. package/src/__tests__/reduce-strategy-registry.test.ts +43 -0
  78. package/src/__tests__/reference-board-templates.test.ts +33 -0
  79. package/src/__tests__/reference-roles.test.ts +36 -0
  80. package/src/__tests__/resolve-field-mappings.test.ts +110 -0
  81. package/src/__tests__/resolve-pipeline-model.test.ts +76 -0
  82. package/src/__tests__/scene-node-types.test.ts +80 -0
  83. package/src/__tests__/scraper-actors.test.ts +67 -0
  84. package/src/__tests__/seedance-2-catalog.test.ts +18 -0
  85. package/src/__tests__/seedance-2-credit-id.test.ts +23 -0
  86. package/src/__tests__/seedance-aspects.test.ts +52 -0
  87. package/src/__tests__/selector.test.ts +1151 -0
  88. package/src/__tests__/settled-with-limit.test.ts +214 -0
  89. package/src/__tests__/social-media-specs.test.ts +129 -0
  90. package/src/__tests__/sub-workflow-validation.test.ts +88 -0
  91. package/src/__tests__/switchx-pricing.test.ts +28 -0
  92. package/src/__tests__/to-connected-references.test.ts +153 -0
  93. package/src/__tests__/utilities.test.ts +541 -0
  94. package/src/__tests__/video-analysis-pricing.test.ts +58 -0
  95. package/src/__tests__/video-analysis.test.ts +63 -0
  96. package/src/__tests__/video-audio-capability.test.ts +204 -0
  97. package/src/__tests__/video-gen-providers.test.ts +28 -0
  98. package/src/__tests__/video-mode-aliases.test.ts +150 -0
  99. package/src/__tests__/video-ref-limits.test.ts +72 -0
  100. package/src/__tests__/video-utils.test.ts +303 -0
  101. package/src/__tests__/voice-changer-models.test.ts +33 -0
  102. package/src/__tests__/workflow-export-strip.test.ts +46 -0
  103. package/src/ai-avatar-pricing.ts +213 -0
  104. package/src/ancestor-refs.ts +48 -0
  105. package/src/animals.ts +231 -0
  106. package/src/audio-crossfade-curves.ts +73 -0
  107. package/src/audio-fx-presets.ts +64 -0
  108. package/src/avatar-payload-validators.ts +214 -0
  109. package/src/caption-styles.ts +31 -0
  110. package/src/character-aspect-defaults.ts +102 -0
  111. package/src/character-facets.ts +37 -0
  112. package/src/character-mention-slug.ts +166 -0
  113. package/src/character-usage-mode.ts +109 -0
  114. package/src/character-variant-assets.ts +121 -0
  115. package/src/character-voice.ts +151 -0
  116. package/src/cinematic-avatar-pricing.ts +111 -0
  117. package/src/clone-utils.ts +46 -0
  118. package/src/combine-transitions.ts +482 -0
  119. package/src/community.ts +112 -0
  120. package/src/component-types.ts +127 -0
  121. package/src/condition-variables.ts +65 -0
  122. package/src/credit-estimators/index.ts +15 -0
  123. package/src/credit-estimators/video-utils.ts +165 -0
  124. package/src/credit-identifiers.ts +304 -0
  125. package/src/entity-approval-types.ts +31 -0
  126. package/src/entity-aspect-defaults.ts +82 -0
  127. package/src/entity-asset-types.ts +296 -0
  128. package/src/entity-image-handle.ts +36 -0
  129. package/src/extra-refs.ts +139 -0
  130. package/src/featured-entities.ts +136 -0
  131. package/src/film-pricing.ts +117 -0
  132. package/src/filter-condition.ts +250 -0
  133. package/src/flux2-pricing.ts +18 -0
  134. package/src/freecut-protocol.ts +52 -0
  135. package/src/furniture.ts +167 -0
  136. package/src/generate-text-items.ts +15 -0
  137. package/src/generated-results.ts +63 -0
  138. package/src/group-aggregation.ts +75 -0
  139. package/src/hint-graph-types.ts +18 -0
  140. package/src/i18n/action-fx.ar.ts +89 -0
  141. package/src/i18n/action-fx.de.ts +89 -0
  142. package/src/i18n/action-fx.es.ts +89 -0
  143. package/src/i18n/action-fx.fr.ts +89 -0
  144. package/src/i18n/action-fx.he.ts +89 -0
  145. package/src/i18n/action-fx.hi.ts +89 -0
  146. package/src/i18n/action-fx.ja.ts +89 -0
  147. package/src/i18n/action-fx.ko.ts +89 -0
  148. package/src/i18n/action-fx.pt-BR.ts +89 -0
  149. package/src/i18n/action-fx.ru.ts +89 -0
  150. package/src/i18n/action-fx.zh-CN.ts +89 -0
  151. package/src/i18n/aesthetic.ar.ts +170 -0
  152. package/src/i18n/aesthetic.de.ts +48 -0
  153. package/src/i18n/aesthetic.es.ts +169 -0
  154. package/src/i18n/aesthetic.fr.ts +52 -0
  155. package/src/i18n/aesthetic.he.ts +169 -0
  156. package/src/i18n/aesthetic.hi.ts +55 -0
  157. package/src/i18n/aesthetic.ja.ts +165 -0
  158. package/src/i18n/aesthetic.ko.ts +169 -0
  159. package/src/i18n/aesthetic.pt-BR.ts +148 -0
  160. package/src/i18n/aesthetic.ru.ts +155 -0
  161. package/src/i18n/aesthetic.zh-CN.ts +172 -0
  162. package/src/i18n/animals.ar.ts +145 -0
  163. package/src/i18n/animals.de.ts +144 -0
  164. package/src/i18n/animals.es.ts +158 -0
  165. package/src/i18n/animals.fr.ts +144 -0
  166. package/src/i18n/animals.he.ts +155 -0
  167. package/src/i18n/animals.hi.ts +157 -0
  168. package/src/i18n/animals.ja.ts +159 -0
  169. package/src/i18n/animals.ko.ts +159 -0
  170. package/src/i18n/animals.pt-BR.ts +157 -0
  171. package/src/i18n/animals.ru.ts +155 -0
  172. package/src/i18n/animals.zh-CN.ts +155 -0
  173. package/src/i18n/atmosphere.ar.ts +49 -0
  174. package/src/i18n/atmosphere.de.ts +47 -0
  175. package/src/i18n/atmosphere.es.ts +50 -0
  176. package/src/i18n/atmosphere.fr.ts +47 -0
  177. package/src/i18n/atmosphere.he.ts +47 -0
  178. package/src/i18n/atmosphere.hi.ts +49 -0
  179. package/src/i18n/atmosphere.ja.ts +49 -0
  180. package/src/i18n/atmosphere.ko.ts +49 -0
  181. package/src/i18n/atmosphere.pt-BR.ts +49 -0
  182. package/src/i18n/atmosphere.ru.ts +47 -0
  183. package/src/i18n/atmosphere.zh-CN.ts +152 -0
  184. package/src/i18n/backdrop.ar.ts +53 -0
  185. package/src/i18n/backdrop.de.ts +46 -0
  186. package/src/i18n/backdrop.es.ts +54 -0
  187. package/src/i18n/backdrop.fr.ts +52 -0
  188. package/src/i18n/backdrop.he.ts +51 -0
  189. package/src/i18n/backdrop.hi.ts +59 -0
  190. package/src/i18n/backdrop.ja.ts +61 -0
  191. package/src/i18n/backdrop.ko.ts +59 -0
  192. package/src/i18n/backdrop.pt-BR.ts +59 -0
  193. package/src/i18n/backdrop.ru.ts +57 -0
  194. package/src/i18n/backdrop.zh-CN.ts +57 -0
  195. package/src/i18n/camera-format.ar.ts +40 -0
  196. package/src/i18n/camera-format.de.ts +37 -0
  197. package/src/i18n/camera-format.es.ts +41 -0
  198. package/src/i18n/camera-format.fr.ts +37 -0
  199. package/src/i18n/camera-format.he.ts +37 -0
  200. package/src/i18n/camera-format.hi.ts +42 -0
  201. package/src/i18n/camera-format.ja.ts +37 -0
  202. package/src/i18n/camera-format.ko.ts +37 -0
  203. package/src/i18n/camera-format.pt-BR.ts +46 -0
  204. package/src/i18n/camera-format.ru.ts +42 -0
  205. package/src/i18n/camera-format.zh-CN.ts +42 -0
  206. package/src/i18n/camera-motions.ar.ts +86 -0
  207. package/src/i18n/camera-motions.de.ts +74 -0
  208. package/src/i18n/camera-motions.es.ts +86 -0
  209. package/src/i18n/camera-motions.fr.ts +86 -0
  210. package/src/i18n/camera-motions.he.ts +86 -0
  211. package/src/i18n/camera-motions.hi.ts +99 -0
  212. package/src/i18n/camera-motions.ja.ts +99 -0
  213. package/src/i18n/camera-motions.ko.ts +99 -0
  214. package/src/i18n/camera-motions.pt-BR.ts +99 -0
  215. package/src/i18n/camera-motions.ru.ts +99 -0
  216. package/src/i18n/camera-motions.zh-CN.ts +99 -0
  217. package/src/i18n/character-fx.ar.ts +72 -0
  218. package/src/i18n/character-fx.de.ts +72 -0
  219. package/src/i18n/character-fx.es.ts +72 -0
  220. package/src/i18n/character-fx.fr.ts +72 -0
  221. package/src/i18n/character-fx.he.ts +72 -0
  222. package/src/i18n/character-fx.hi.ts +72 -0
  223. package/src/i18n/character-fx.ja.ts +72 -0
  224. package/src/i18n/character-fx.ko.ts +72 -0
  225. package/src/i18n/character-fx.pt-BR.ts +72 -0
  226. package/src/i18n/character-fx.ru.ts +72 -0
  227. package/src/i18n/character-fx.zh-CN.ts +72 -0
  228. package/src/i18n/color-look.ar.ts +50 -0
  229. package/src/i18n/color-look.de.ts +47 -0
  230. package/src/i18n/color-look.es.ts +50 -0
  231. package/src/i18n/color-look.fr.ts +50 -0
  232. package/src/i18n/color-look.he.ts +49 -0
  233. package/src/i18n/color-look.hi.ts +52 -0
  234. package/src/i18n/color-look.ja.ts +54 -0
  235. package/src/i18n/color-look.ko.ts +54 -0
  236. package/src/i18n/color-look.pt-BR.ts +54 -0
  237. package/src/i18n/color-look.ru.ts +52 -0
  238. package/src/i18n/color-look.zh-CN.ts +53 -0
  239. package/src/i18n/composition-effects.ar.ts +26 -0
  240. package/src/i18n/composition-effects.de.ts +25 -0
  241. package/src/i18n/composition-effects.es.ts +27 -0
  242. package/src/i18n/composition-effects.fr.ts +25 -0
  243. package/src/i18n/composition-effects.he.ts +25 -0
  244. package/src/i18n/composition-effects.hi.ts +27 -0
  245. package/src/i18n/composition-effects.ja.ts +27 -0
  246. package/src/i18n/composition-effects.ko.ts +27 -0
  247. package/src/i18n/composition-effects.pt-BR.ts +25 -0
  248. package/src/i18n/composition-effects.ru.ts +82 -0
  249. package/src/i18n/composition-effects.zh-CN.ts +25 -0
  250. package/src/i18n/era.ar.ts +37 -0
  251. package/src/i18n/era.de.ts +34 -0
  252. package/src/i18n/era.es.ts +37 -0
  253. package/src/i18n/era.fr.ts +37 -0
  254. package/src/i18n/era.he.ts +36 -0
  255. package/src/i18n/era.hi.ts +39 -0
  256. package/src/i18n/era.ja.ts +41 -0
  257. package/src/i18n/era.ko.ts +39 -0
  258. package/src/i18n/era.pt-BR.ts +41 -0
  259. package/src/i18n/era.ru.ts +121 -0
  260. package/src/i18n/era.zh-CN.ts +39 -0
  261. package/src/i18n/exposure-settings.ar.ts +28 -0
  262. package/src/i18n/exposure-settings.de.ts +26 -0
  263. package/src/i18n/exposure-settings.es.ts +28 -0
  264. package/src/i18n/exposure-settings.fr.ts +29 -0
  265. package/src/i18n/exposure-settings.he.ts +28 -0
  266. package/src/i18n/exposure-settings.hi.ts +31 -0
  267. package/src/i18n/exposure-settings.ja.ts +31 -0
  268. package/src/i18n/exposure-settings.ko.ts +31 -0
  269. package/src/i18n/exposure-settings.pt-BR.ts +31 -0
  270. package/src/i18n/exposure-settings.ru.ts +31 -0
  271. package/src/i18n/exposure-settings.zh-CN.ts +31 -0
  272. package/src/i18n/framing.ar.ts +78 -0
  273. package/src/i18n/framing.de.ts +73 -0
  274. package/src/i18n/framing.es.ts +78 -0
  275. package/src/i18n/framing.fr.ts +78 -0
  276. package/src/i18n/framing.he.ts +77 -0
  277. package/src/i18n/framing.hi.ts +82 -0
  278. package/src/i18n/framing.ja.ts +84 -0
  279. package/src/i18n/framing.ko.ts +82 -0
  280. package/src/i18n/framing.pt-BR.ts +84 -0
  281. package/src/i18n/framing.ru.ts +82 -0
  282. package/src/i18n/framing.zh-CN.ts +82 -0
  283. package/src/i18n/furniture.ar.ts +92 -0
  284. package/src/i18n/furniture.de.ts +93 -0
  285. package/src/i18n/furniture.es.ts +101 -0
  286. package/src/i18n/furniture.fr.ts +93 -0
  287. package/src/i18n/furniture.he.ts +101 -0
  288. package/src/i18n/furniture.hi.ts +101 -0
  289. package/src/i18n/furniture.ja.ts +101 -0
  290. package/src/i18n/furniture.ko.ts +101 -0
  291. package/src/i18n/furniture.pt-BR.ts +101 -0
  292. package/src/i18n/furniture.ru.ts +101 -0
  293. package/src/i18n/furniture.zh-CN.ts +101 -0
  294. package/src/i18n/held-prop.ar.ts +74 -0
  295. package/src/i18n/held-prop.de.ts +65 -0
  296. package/src/i18n/held-prop.es.ts +83 -0
  297. package/src/i18n/held-prop.fr.ts +74 -0
  298. package/src/i18n/held-prop.he.ts +73 -0
  299. package/src/i18n/held-prop.hi.ts +82 -0
  300. package/src/i18n/held-prop.ja.ts +84 -0
  301. package/src/i18n/held-prop.ko.ts +84 -0
  302. package/src/i18n/held-prop.pt-BR.ts +84 -0
  303. package/src/i18n/held-prop.ru.ts +82 -0
  304. package/src/i18n/held-prop.zh-CN.ts +82 -0
  305. package/src/i18n/index.ts +208 -0
  306. package/src/i18n/instrumentation.ar.ts +195 -0
  307. package/src/i18n/instrumentation.de.ts +195 -0
  308. package/src/i18n/instrumentation.es.ts +195 -0
  309. package/src/i18n/instrumentation.fr.ts +195 -0
  310. package/src/i18n/instrumentation.he.ts +195 -0
  311. package/src/i18n/instrumentation.hi.ts +195 -0
  312. package/src/i18n/instrumentation.ja.ts +195 -0
  313. package/src/i18n/instrumentation.ko.ts +195 -0
  314. package/src/i18n/instrumentation.pt-BR.ts +195 -0
  315. package/src/i18n/instrumentation.ru.ts +195 -0
  316. package/src/i18n/instrumentation.zh-CN.ts +195 -0
  317. package/src/i18n/lens.ar.ts +24 -0
  318. package/src/i18n/lens.de.ts +24 -0
  319. package/src/i18n/lens.es.ts +24 -0
  320. package/src/i18n/lens.fr.ts +24 -0
  321. package/src/i18n/lens.he.ts +24 -0
  322. package/src/i18n/lens.hi.ts +24 -0
  323. package/src/i18n/lens.ja.ts +24 -0
  324. package/src/i18n/lens.ko.ts +24 -0
  325. package/src/i18n/lens.pt-BR.ts +24 -0
  326. package/src/i18n/lens.ru.ts +25 -0
  327. package/src/i18n/lens.zh-CN.ts +24 -0
  328. package/src/i18n/lighting.ar.ts +86 -0
  329. package/src/i18n/lighting.de.ts +84 -0
  330. package/src/i18n/lighting.es.ts +89 -0
  331. package/src/i18n/lighting.fr.ts +84 -0
  332. package/src/i18n/lighting.he.ts +88 -0
  333. package/src/i18n/lighting.hi.ts +90 -0
  334. package/src/i18n/lighting.ja.ts +90 -0
  335. package/src/i18n/lighting.ko.ts +90 -0
  336. package/src/i18n/lighting.pt-BR.ts +90 -0
  337. package/src/i18n/lighting.ru.ts +88 -0
  338. package/src/i18n/lighting.zh-CN.ts +92 -0
  339. package/src/i18n/loop-subject.ar.ts +39 -0
  340. package/src/i18n/loop-subject.de.ts +39 -0
  341. package/src/i18n/loop-subject.es.ts +39 -0
  342. package/src/i18n/loop-subject.fr.ts +39 -0
  343. package/src/i18n/loop-subject.he.ts +39 -0
  344. package/src/i18n/loop-subject.hi.ts +39 -0
  345. package/src/i18n/loop-subject.ja.ts +39 -0
  346. package/src/i18n/loop-subject.ko.ts +39 -0
  347. package/src/i18n/loop-subject.pt-BR.ts +39 -0
  348. package/src/i18n/loop-subject.ru.ts +39 -0
  349. package/src/i18n/loop-subject.zh-CN.ts +39 -0
  350. package/src/i18n/materials.ar.ts +80 -0
  351. package/src/i18n/materials.de.ts +80 -0
  352. package/src/i18n/materials.es.ts +87 -0
  353. package/src/i18n/materials.fr.ts +80 -0
  354. package/src/i18n/materials.he.ts +86 -0
  355. package/src/i18n/materials.hi.ts +86 -0
  356. package/src/i18n/materials.ja.ts +88 -0
  357. package/src/i18n/materials.ko.ts +88 -0
  358. package/src/i18n/materials.pt-BR.ts +88 -0
  359. package/src/i18n/materials.ru.ts +86 -0
  360. package/src/i18n/materials.zh-CN.ts +86 -0
  361. package/src/i18n/mood.ar.ts +61 -0
  362. package/src/i18n/mood.de.ts +61 -0
  363. package/src/i18n/mood.es.ts +66 -0
  364. package/src/i18n/mood.fr.ts +61 -0
  365. package/src/i18n/mood.he.ts +64 -0
  366. package/src/i18n/mood.hi.ts +66 -0
  367. package/src/i18n/mood.ja.ts +66 -0
  368. package/src/i18n/mood.ko.ts +66 -0
  369. package/src/i18n/mood.pt-BR.ts +64 -0
  370. package/src/i18n/mood.ru.ts +64 -0
  371. package/src/i18n/mood.zh-CN.ts +64 -0
  372. package/src/i18n/music-genre.ar.ts +302 -0
  373. package/src/i18n/music-genre.de.ts +302 -0
  374. package/src/i18n/music-genre.es.ts +302 -0
  375. package/src/i18n/music-genre.fr.ts +302 -0
  376. package/src/i18n/music-genre.he.ts +302 -0
  377. package/src/i18n/music-genre.hi.ts +302 -0
  378. package/src/i18n/music-genre.ja.ts +302 -0
  379. package/src/i18n/music-genre.ko.ts +302 -0
  380. package/src/i18n/music-genre.pt-BR.ts +302 -0
  381. package/src/i18n/music-genre.ru.ts +302 -0
  382. package/src/i18n/music-genre.zh-CN.ts +302 -0
  383. package/src/i18n/music-mood.ar.ts +75 -0
  384. package/src/i18n/music-mood.de.ts +75 -0
  385. package/src/i18n/music-mood.es.ts +75 -0
  386. package/src/i18n/music-mood.fr.ts +75 -0
  387. package/src/i18n/music-mood.he.ts +75 -0
  388. package/src/i18n/music-mood.hi.ts +75 -0
  389. package/src/i18n/music-mood.ja.ts +75 -0
  390. package/src/i18n/music-mood.ko.ts +75 -0
  391. package/src/i18n/music-mood.pt-BR.ts +75 -0
  392. package/src/i18n/music-mood.ru.ts +75 -0
  393. package/src/i18n/music-mood.zh-CN.ts +75 -0
  394. package/src/i18n/person.ar.ts +638 -0
  395. package/src/i18n/person.de.ts +629 -0
  396. package/src/i18n/person.es.ts +645 -0
  397. package/src/i18n/person.fr.ts +621 -0
  398. package/src/i18n/person.he.ts +656 -0
  399. package/src/i18n/person.hi.ts +654 -0
  400. package/src/i18n/person.ja.ts +662 -0
  401. package/src/i18n/person.ko.ts +662 -0
  402. package/src/i18n/person.pt-BR.ts +656 -0
  403. package/src/i18n/person.ru.ts +656 -0
  404. package/src/i18n/person.zh-CN.ts +656 -0
  405. package/src/i18n/photo-genre.ar.ts +58 -0
  406. package/src/i18n/photo-genre.de.ts +52 -0
  407. package/src/i18n/photo-genre.es.ts +64 -0
  408. package/src/i18n/photo-genre.fr.ts +58 -0
  409. package/src/i18n/photo-genre.he.ts +62 -0
  410. package/src/i18n/photo-genre.hi.ts +63 -0
  411. package/src/i18n/photo-genre.ja.ts +65 -0
  412. package/src/i18n/photo-genre.ko.ts +63 -0
  413. package/src/i18n/photo-genre.pt-BR.ts +65 -0
  414. package/src/i18n/photo-genre.ru.ts +63 -0
  415. package/src/i18n/photo-genre.zh-CN.ts +63 -0
  416. package/src/i18n/photographer.ar.ts +75 -0
  417. package/src/i18n/photographer.de.ts +74 -0
  418. package/src/i18n/photographer.es.ts +77 -0
  419. package/src/i18n/photographer.fr.ts +77 -0
  420. package/src/i18n/photographer.he.ts +78 -0
  421. package/src/i18n/photographer.hi.ts +80 -0
  422. package/src/i18n/photographer.ja.ts +84 -0
  423. package/src/i18n/photographer.ko.ts +84 -0
  424. package/src/i18n/photographer.pt-BR.ts +83 -0
  425. package/src/i18n/photographer.ru.ts +78 -0
  426. package/src/i18n/photographer.zh-CN.ts +78 -0
  427. package/src/i18n/pose.ar.ts +95 -0
  428. package/src/i18n/pose.de.ts +96 -0
  429. package/src/i18n/pose.es.ts +104 -0
  430. package/src/i18n/pose.fr.ts +96 -0
  431. package/src/i18n/pose.he.ts +104 -0
  432. package/src/i18n/pose.hi.ts +104 -0
  433. package/src/i18n/pose.ja.ts +104 -0
  434. package/src/i18n/pose.ko.ts +104 -0
  435. package/src/i18n/pose.pt-BR.ts +104 -0
  436. package/src/i18n/pose.ru.ts +104 -0
  437. package/src/i18n/pose.zh-CN.ts +104 -0
  438. package/src/i18n/post-process-effects.ar.ts +25 -0
  439. package/src/i18n/post-process-effects.de.ts +24 -0
  440. package/src/i18n/post-process-effects.es.ts +26 -0
  441. package/src/i18n/post-process-effects.fr.ts +24 -0
  442. package/src/i18n/post-process-effects.he.ts +24 -0
  443. package/src/i18n/post-process-effects.hi.ts +26 -0
  444. package/src/i18n/post-process-effects.ja.ts +26 -0
  445. package/src/i18n/post-process-effects.ko.ts +26 -0
  446. package/src/i18n/post-process-effects.pt-BR.ts +24 -0
  447. package/src/i18n/post-process-effects.ru.ts +24 -0
  448. package/src/i18n/post-process-effects.zh-CN.ts +24 -0
  449. package/src/i18n/render-quality.ar.ts +34 -0
  450. package/src/i18n/render-quality.de.ts +30 -0
  451. package/src/i18n/render-quality.es.ts +35 -0
  452. package/src/i18n/render-quality.fr.ts +34 -0
  453. package/src/i18n/render-quality.he.ts +33 -0
  454. package/src/i18n/render-quality.hi.ts +39 -0
  455. package/src/i18n/render-quality.ja.ts +39 -0
  456. package/src/i18n/render-quality.ko.ts +39 -0
  457. package/src/i18n/render-quality.pt-BR.ts +37 -0
  458. package/src/i18n/render-quality.ru.ts +37 -0
  459. package/src/i18n/render-quality.zh-CN.ts +37 -0
  460. package/src/i18n/seasons.ar.ts +10 -0
  461. package/src/i18n/seasons.de.ts +10 -0
  462. package/src/i18n/seasons.es.ts +10 -0
  463. package/src/i18n/seasons.fr.ts +10 -0
  464. package/src/i18n/seasons.he.ts +10 -0
  465. package/src/i18n/seasons.hi.ts +10 -0
  466. package/src/i18n/seasons.ja.ts +10 -0
  467. package/src/i18n/seasons.ko.ts +10 -0
  468. package/src/i18n/seasons.pt-BR.ts +10 -0
  469. package/src/i18n/seasons.ru.ts +10 -0
  470. package/src/i18n/seasons.zh-CN.ts +10 -0
  471. package/src/i18n/setting.ar.ts +73 -0
  472. package/src/i18n/setting.de.ts +73 -0
  473. package/src/i18n/setting.es.ts +77 -0
  474. package/src/i18n/setting.fr.ts +73 -0
  475. package/src/i18n/setting.he.ts +76 -0
  476. package/src/i18n/setting.hi.ts +76 -0
  477. package/src/i18n/setting.ja.ts +78 -0
  478. package/src/i18n/setting.ko.ts +76 -0
  479. package/src/i18n/setting.pt-BR.ts +78 -0
  480. package/src/i18n/setting.ru.ts +76 -0
  481. package/src/i18n/setting.zh-CN.ts +76 -0
  482. package/src/i18n/style.ar.ts +55 -0
  483. package/src/i18n/style.de.ts +54 -0
  484. package/src/i18n/style.es.ts +54 -0
  485. package/src/i18n/style.fr.ts +54 -0
  486. package/src/i18n/style.he.ts +54 -0
  487. package/src/i18n/style.hi.ts +54 -0
  488. package/src/i18n/style.ja.ts +54 -0
  489. package/src/i18n/style.ko.ts +54 -0
  490. package/src/i18n/style.pt-BR.ts +56 -0
  491. package/src/i18n/style.ru.ts +54 -0
  492. package/src/i18n/style.zh-CN.ts +54 -0
  493. package/src/i18n/styling.ar.ts +295 -0
  494. package/src/i18n/styling.de.ts +285 -0
  495. package/src/i18n/styling.es.ts +317 -0
  496. package/src/i18n/styling.fr.ts +285 -0
  497. package/src/i18n/styling.he.ts +307 -0
  498. package/src/i18n/styling.hi.ts +323 -0
  499. package/src/i18n/styling.ja.ts +317 -0
  500. package/src/i18n/styling.ko.ts +311 -0
  501. package/src/i18n/styling.pt-BR.ts +301 -0
  502. package/src/i18n/styling.ru.ts +301 -0
  503. package/src/i18n/styling.zh-CN.ts +307 -0
  504. package/src/i18n/temporal.ar.ts +31 -0
  505. package/src/i18n/temporal.de.ts +24 -0
  506. package/src/i18n/temporal.es.ts +27 -0
  507. package/src/i18n/temporal.fr.ts +28 -0
  508. package/src/i18n/temporal.he.ts +31 -0
  509. package/src/i18n/temporal.hi.ts +31 -0
  510. package/src/i18n/temporal.ja.ts +31 -0
  511. package/src/i18n/temporal.ko.ts +31 -0
  512. package/src/i18n/temporal.pt-BR.ts +31 -0
  513. package/src/i18n/temporal.ru.ts +31 -0
  514. package/src/i18n/temporal.zh-CN.ts +31 -0
  515. package/src/i18n/transitions.ar.ts +97 -0
  516. package/src/i18n/transitions.de.ts +97 -0
  517. package/src/i18n/transitions.es.ts +97 -0
  518. package/src/i18n/transitions.fr.ts +97 -0
  519. package/src/i18n/transitions.he.ts +97 -0
  520. package/src/i18n/transitions.hi.ts +97 -0
  521. package/src/i18n/transitions.ja.ts +97 -0
  522. package/src/i18n/transitions.ko.ts +97 -0
  523. package/src/i18n/transitions.pt-BR.ts +97 -0
  524. package/src/i18n/transitions.ru.ts +97 -0
  525. package/src/i18n/transitions.zh-CN.ts +97 -0
  526. package/src/i18n/types.ts +158 -0
  527. package/src/i18n/vehicles.ar.ts +137 -0
  528. package/src/i18n/vehicles.de.ts +125 -0
  529. package/src/i18n/vehicles.es.ts +138 -0
  530. package/src/i18n/vehicles.fr.ts +125 -0
  531. package/src/i18n/vehicles.he.ts +136 -0
  532. package/src/i18n/vehicles.hi.ts +138 -0
  533. package/src/i18n/vehicles.ja.ts +138 -0
  534. package/src/i18n/vehicles.ko.ts +138 -0
  535. package/src/i18n/vehicles.pt-BR.ts +136 -0
  536. package/src/i18n/vehicles.ru.ts +136 -0
  537. package/src/i18n/vehicles.zh-CN.ts +136 -0
  538. package/src/i18n/voice-character.ar.ts +126 -0
  539. package/src/i18n/voice-character.de.ts +126 -0
  540. package/src/i18n/voice-character.es.ts +126 -0
  541. package/src/i18n/voice-character.fr.ts +126 -0
  542. package/src/i18n/voice-character.he.ts +126 -0
  543. package/src/i18n/voice-character.hi.ts +126 -0
  544. package/src/i18n/voice-character.ja.ts +126 -0
  545. package/src/i18n/voice-character.ko.ts +126 -0
  546. package/src/i18n/voice-character.pt-BR.ts +126 -0
  547. package/src/i18n/voice-character.ru.ts +126 -0
  548. package/src/i18n/voice-character.zh-CN.ts +126 -0
  549. package/src/i18n/voice-delivery.ar.ts +77 -0
  550. package/src/i18n/voice-delivery.de.ts +77 -0
  551. package/src/i18n/voice-delivery.es.ts +77 -0
  552. package/src/i18n/voice-delivery.fr.ts +77 -0
  553. package/src/i18n/voice-delivery.he.ts +77 -0
  554. package/src/i18n/voice-delivery.hi.ts +77 -0
  555. package/src/i18n/voice-delivery.ja.ts +77 -0
  556. package/src/i18n/voice-delivery.ko.ts +77 -0
  557. package/src/i18n/voice-delivery.pt-BR.ts +77 -0
  558. package/src/i18n/voice-delivery.ru.ts +77 -0
  559. package/src/i18n/voice-delivery.zh-CN.ts +77 -0
  560. package/src/i18n/weapons.ar.ts +115 -0
  561. package/src/i18n/weapons.de.ts +114 -0
  562. package/src/i18n/weapons.es.ts +116 -0
  563. package/src/i18n/weapons.fr.ts +103 -0
  564. package/src/i18n/weapons.he.ts +114 -0
  565. package/src/i18n/weapons.hi.ts +116 -0
  566. package/src/i18n/weapons.ja.ts +116 -0
  567. package/src/i18n/weapons.ko.ts +116 -0
  568. package/src/i18n/weapons.pt-BR.ts +114 -0
  569. package/src/i18n/weapons.ru.ts +114 -0
  570. package/src/i18n/weapons.zh-CN.ts +114 -0
  571. package/src/image-critic-node.ts +61 -0
  572. package/src/image-critic-types.ts +40 -0
  573. package/src/index.ts +866 -0
  574. package/src/inject-upstream.ts +15 -0
  575. package/src/inpaint-region.ts +51 -0
  576. package/src/json-evaluator.ts +732 -0
  577. package/src/json-path.ts +52 -0
  578. package/src/lip-sync-pricing.ts +90 -0
  579. package/src/list-merge.ts +40 -0
  580. package/src/list-sort.ts +122 -0
  581. package/src/list-source-resolver.ts +50 -0
  582. package/src/llm-models.ts +245 -0
  583. package/src/location-mention-slug.ts +291 -0
  584. package/src/location-preset-catalog-map.ts +128 -0
  585. package/src/loop-delimiter.ts +73 -0
  586. package/src/lora-routing.ts +95 -0
  587. package/src/lottie-overlay-catalog.ts +175 -0
  588. package/src/lottie-slots.ts +309 -0
  589. package/src/model-catalog.ts +2386 -0
  590. package/src/model-constants.ts +1910 -0
  591. package/src/model-tree.ts +120 -0
  592. package/src/monetization.ts +15 -0
  593. package/src/multi-pick.ts +42 -0
  594. package/src/node-default-mappings.ts +262 -0
  595. package/src/node-mappable-fields.ts +70 -0
  596. package/src/node-preset-export.ts +56 -0
  597. package/src/node-preset-extract.ts +147 -0
  598. package/src/node-refs.ts +253 -0
  599. package/src/node-runtime-keys.ts +117 -0
  600. package/src/object-aspect-defaults.ts +72 -0
  601. package/src/object-picker-types.ts +22 -0
  602. package/src/parameter-node-value.ts +284 -0
  603. package/src/pinterest-url.ts +28 -0
  604. package/src/pipeline-chat.ts +72 -0
  605. package/src/pipeline-defaults.ts +318 -0
  606. package/src/pipeline-events.ts +162 -0
  607. package/src/pipeline-state-types.ts +196 -0
  608. package/src/pipeline-types.ts +647 -0
  609. package/src/pipeline-validation.ts +87 -0
  610. package/src/presentation-types.ts +23 -0
  611. package/src/presentation-utils.ts +397 -0
  612. package/src/producer-types.ts +188 -0
  613. package/src/progress-curve.ts +99 -0
  614. package/src/provider-directive-defaults.ts +69 -0
  615. package/src/reduce-strategy-registry.ts +121 -0
  616. package/src/reference-board-templates.ts +81 -0
  617. package/src/reference-roles.ts +153 -0
  618. package/src/reference-sheet/__tests__/board-to-column.test.ts +20 -0
  619. package/src/reference-sheet/__tests__/catalog.test.ts +50 -0
  620. package/src/reference-sheet/__tests__/cost.test.ts +38 -0
  621. package/src/reference-sheet/__tests__/no-drift.test.ts +28 -0
  622. package/src/reference-sheet/__tests__/panel-plan.test.ts +61 -0
  623. package/src/reference-sheet/__tests__/panel-prompts.test.ts +17 -0
  624. package/src/reference-sheet/__tests__/plan-generation.test.ts +72 -0
  625. package/src/reference-sheet/__tests__/presets.test.ts +54 -0
  626. package/src/reference-sheet/__tests__/types.test.ts +24 -0
  627. package/src/reference-sheet/catalog.ts +144 -0
  628. package/src/reference-sheet/cost.ts +37 -0
  629. package/src/reference-sheet/credit-id.ts +7 -0
  630. package/src/reference-sheet/index.ts +8 -0
  631. package/src/reference-sheet/panel-plan.ts +65 -0
  632. package/src/reference-sheet/panel-prompts.ts +14 -0
  633. package/src/reference-sheet/plan-generation.ts +79 -0
  634. package/src/reference-sheet/presets.ts +77 -0
  635. package/src/reference-sheet/types.ts +92 -0
  636. package/src/repeat-types.ts +97 -0
  637. package/src/resolve-field-mappings.ts +119 -0
  638. package/src/route-filter.ts +80 -0
  639. package/src/scene-helper-types.ts +249 -0
  640. package/src/scene-node-types.ts +281 -0
  641. package/src/scraper-actors.ts +57 -0
  642. package/src/scraper-output-schemas.ts +25 -0
  643. package/src/seasons.ts +45 -0
  644. package/src/selector.ts +864 -0
  645. package/src/settled-with-limit.ts +42 -0
  646. package/src/shot-element.ts +43 -0
  647. package/src/social-media-specs.ts +121 -0
  648. package/src/social-post.ts +24 -0
  649. package/src/sub-workflow-validation.ts +78 -0
  650. package/src/supported-fonts.ts +40 -0
  651. package/src/surround.ts +113 -0
  652. package/src/switchx-pricing.ts +33 -0
  653. package/src/text-separators.ts +59 -0
  654. package/src/to-connected-references.ts +77 -0
  655. package/src/types.ts +272 -0
  656. package/src/variant-job-id.ts +17 -0
  657. package/src/vehicles.ts +213 -0
  658. package/src/video-analysis-pricing.ts +74 -0
  659. package/src/video-analysis.ts +127 -0
  660. package/src/video-duration.ts +25 -0
  661. package/src/voice-changer-models.ts +36 -0
  662. package/src/voice-matcher-types.ts +37 -0
  663. package/src/voices.ts +92 -0
  664. package/src/weapons.ts +190 -0
  665. package/src/workflow-export.ts +153 -0
@@ -0,0 +1,52 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Palette
5
+ "warm": { label: "Тёплый", description: "Тёплые оранжево-красные тона" },
6
+ "cool": { label: "Холодный", description: "Прохладные сине-бирюзовые тона" },
7
+ "teal-orange": { label: "Бирюзовый и оранжевый", description: "Голливудская дополняющая цветокоррекция" },
8
+ "split-toning": { label: "Сплит-тонирование", description: "Прохладные тени, тёплые света" },
9
+ "selective-color": { label: "Избирательный цвет", description: "Ч/Б с одним акцентным цветом" },
10
+ "faded-matte": { label: "Выцветший матовый", description: "Поднятые чёрные, молочные приглушённые тона" },
11
+ "log-flat": { label: "Лог / Плоский", description: "Нейтральный пред-грейдинг S-Log/V-Log" },
12
+ "desaturated": { label: "Десатурация", description: "Низкая насыщенность, приглушённый" },
13
+ "monochrome-bw": { label: "Монохром Ч/Б", description: "Чистый чёрно-белый" },
14
+ "sepia": { label: "Сепия", description: "Винтажный коричневый тон" },
15
+ "pastel": { label: "Пастель", description: "Мягкие низкоконтрастные пастельные тона" },
16
+ "high-contrast": { label: "Высокий контраст", description: "Яркий контраст, глубокие чёрные" },
17
+ "vibrant": { label: "Насыщенный", description: "Сильно насыщенные цвета" },
18
+
19
+ // Film emulation — brand names kept English
20
+ "kodak-portra": { description: "Мягкие тона кожи, тонкое зерно" },
21
+ "kodak-ektar": { description: "Насыщенный, тонкое зерно" },
22
+ "kodak-vision3": { description: "Кинематографическая киноплёнка" },
23
+ "fuji-pro-400h": { description: "Пастельные зелёные и небо" },
24
+ "cinestill-800t": { description: "Вольфрамовая плёнка с красной гало" },
25
+ "bleach-bypass": { label: "Bleach Bypass", description: "Высокий контраст, десатурированный" },
26
+ "technicolor": { label: "Technicolor 3-strip", description: "Яркий ретро-Technicolor" },
27
+ "two-strip-technicolor": { label: "Two-Strip Technicolor", description: "Красно-синий Technicolor 1920-30-х" },
28
+ "eastman-color": { description: "Тёплая выцветшая плёнка 1950-60-х" },
29
+ "hand-tinted": { label: "Раскрашенный вручную", description: "Ч/Б с вручную нанесённым цветом" },
30
+ "agfa-orwo": { description: "Прохладные восточноевропейские зелёные" },
31
+ "day-for-night": { label: "День под ночь", description: "Дневная съёмка с ночной цветокоррекцией" },
32
+ "cross-processed": { label: "Cross-Processed", description: "Цветовые сдвиги от xpro" },
33
+
34
+ // Social-preset
35
+ "instagram-warm": { label: "Тёплый Instagram", description: "Тёплый фильтр в стиле Valencia" },
36
+ "tiktok-saturated": { label: "Насыщенный TikTok", description: "Яркая контрастная социальная палитра" },
37
+ "youtube-vlog-flat": { label: "YouTube Vlog Flat", description: "Чистая плоская цветокоррекция влога" },
38
+ "iphone-hdr": { description: "Вычислительный HDR-вид" },
39
+ "y2k-saturated": { label: "Y2K насыщенный", description: "Цифровая поп-эстетика начала 2000-х" },
40
+ "mtv-90s-vhs": { label: "MTV 90s VHS", description: "Перенасыщенная хрома VHS 90-х" },
41
+ "polaroid-faded": { label: "Polaroid выцветший", description: "Выцветший Polaroid с пурпурным оттенком" },
42
+ "lifestyle-warm-magazine": { label: "Тёплый лайфстайл-журнал", description: "Современная тёплая редакторская цветокоррекция" },
43
+ "kodachrome-64": { description: "Насыщенные красные и янтарные света, винтажная теплота NatGeo" },
44
+ "ektachrome-100": { description: "Прохладные чистые синие, чёткость слайд-плёнки" },
45
+ "kodak-tri-x-400": { description: "Ч/Б уличная съёмка с пуш-зерном, грубый 35 мм" },
46
+ "aerochrome": { label: "Aerochrome / Color IR", description: "Сюрреалистичная розово-пурпурная листва, ложноцветный пейзаж" },
47
+ "fuji-instax": { description: "Мягкие пастельные средние тона, квадратная мгновенная плёнка" },
48
+ "cinestill-50d": { description: "Дневная кинематографическая плёнка, контролируемые синие, ощущение Вонг Кар-Вая" },
49
+ "expired-film": { label: "Просроченная плёнка", description: "Цветовые сдвиги, переэкспонированные пурпурные, световые засветки" },
50
+ }
51
+
52
+ export default map
@@ -0,0 +1,53 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Palette
5
+ "warm": { label: "暖色调", description: "暖橙红色调" },
6
+ "cool": { label: "冷色调", description: "冷蓝青色调" },
7
+ "teal-orange": { label: "青橙互补", description: "好莱坞互补色调色" },
8
+ "split-toning": { label: "分离色调", description: "冷阴影、暖高光" },
9
+ "selective-color": { label: "局部色彩", description: "黑白配单一强调色" },
10
+ "faded-matte": { label: "褪色哑光", description: "提亮黑、低对比的奶白调" },
11
+ "log-flat": { label: "Log 平片", description: "S-Log/V-Log 中性预调色" },
12
+ "desaturated": { label: "低饱和度", description: "低饱和、柔和" },
13
+ "monochrome-bw": { label: "黑白单色", description: "纯黑白" },
14
+ "sepia": { label: "深褐色调", description: "复古的棕色调" },
15
+ "pastel": { label: "粉彩色", description: "柔和低对比的粉彩" },
16
+ "high-contrast": { label: "高对比", description: "强对比、深黑" },
17
+ "vibrant": { label: "鲜艳", description: "高度饱和的色彩" },
18
+
19
+ // Film emulation — keep famous film stock names in English
20
+ "kodak-portra": { description: "柔和肤色,细腻颗粒" },
21
+ "kodak-ektar": { description: "高饱和,细腻颗粒" },
22
+ "kodak-vision3": { description: "电影动态画面胶片" },
23
+ "fuji-pro-400h": { description: "粉彩绿与天空感" },
24
+ "cinestill-800t": { description: "钨光胶片带红色光晕" },
25
+ "bleach-bypass": { label: "漂白工艺", description: "高对比、低饱和度" },
26
+ "technicolor": { description: "鲜艳的复古 Technicolor 三色" },
27
+ "two-strip-technicolor":{ description: "1920–30 年代红蓝双色 Technicolor" },
28
+ "eastman-color": { description: "1950 / 60 年代褪色暖调胶片" },
29
+ "hand-tinted": { label: "手工上色", description: "黑白上手绘色彩" },
30
+ "agfa-orwo": { description: "东欧冷绿色调" },
31
+ "day-for-night": { label: "日转夜", description: "白天调色为夜景" },
32
+ "cross-processed": { label: "交叉冲印", description: "交叉冲印带来的色彩偏移" },
33
+
34
+ "kodachrome-64": { description: "饱和的红色与琥珀色高光,复古《国家地理》式的暖意" },
35
+ "ektachrome-100": { description: "干净冷调的蓝色,反转片般的清晰度" },
36
+ "kodak-tri-x-400": { description: "推感冲洗的颗粒黑白街拍,粗砺的 35mm 质感" },
37
+ "aerochrome": { description: "超现实的粉品红植被,假色风光胶片" },
38
+ "fuji-instax": { description: "柔和粉彩中间调,方画幅即时胶片" },
39
+ "cinestill-50d": { description: "日光电影胶片,克制的蓝色,王家卫式的氛围" },
40
+ "expired-film": { label: "过期胶片", description: "色彩偏移、过曝品红与漏光" },
41
+
42
+ // Social-preset
43
+ "instagram-warm": { description: "Valencia 风格的暖色滤镜" },
44
+ "tiktok-saturated": { description: "明亮饱和的社交媒体色板" },
45
+ "youtube-vlog-flat": { description: "干净的 vlog 平调色" },
46
+ "iphone-hdr": { description: "计算式 HDR 的视觉" },
47
+ "y2k-saturated": { description: "千禧年初期数码饱和感" },
48
+ "mtv-90s-vhs": { description: "高饱和的 90 年代 VHS 色度" },
49
+ "polaroid-faded": { description: "洋红偏色的褪色宝丽来" },
50
+ "lifestyle-warm-magazine":{ description: "现代杂志暖色调编辑大片" },
51
+ }
52
+
53
+ export default map
@@ -0,0 +1,26 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "اختراق الإطار", description: "تمزق ورقي ثلاثي الأبعاد يكسر الإطار" },
5
+ "breaking-out-of-frame": { label: "الخروج من الإطار", description: "طرف يمتد خارج حدود اللوحة" },
6
+ "pixel-disintegration": { label: "تفكك بكسلي", description: "الموضوع يتحلل إلى جسيمات" },
7
+ "smoke-sculpture": { label: "نحت دخاني", description: "الموضوع مكون من دخان متموج" },
8
+ "liquid-sculpture": { label: "نحت سائل", description: "الموضوع مكون من سائل متدفق" },
9
+ "shattering-glass": { label: "زجاج محطم", description: "شظايا زجاج مجمدة في الهواء" },
10
+ "emerging-from-background": { label: "خروج من الخلفية", description: "بروز جزئي من سطح بنسيج" },
11
+ "fragmented-mosaic": { label: "فسيفساء مجزأة", description: "بورتريه مبني من بلاطات فسيفساء" },
12
+ "glitch-distortion": { label: "تشوه Glitch", description: "تلف رقمي بانزياح RGB" },
13
+ "doubled-mirror": { label: "تكرار بالمرآة", description: "تضاعف بانعكاس مرآوي" },
14
+ "floating-fragments": { label: "شظايا عائمة", description: "أجزاء من الجسم تنجرف بعيدا" },
15
+ "silhouette-outline": { label: "ظل خارجي", description: "ظل أسود نقي على خلفية مسطحة" },
16
+ "exploding-particles": { label: "جسيمات منفجرة", description: "الخط الخارجي يتطاير إلى جسيمات" },
17
+ "3x3-grid-collage": { label: "كولاج شبكة 3×3", description: "مونتاج تسع وضعيات على ورقة اتصال" },
18
+
19
+ "matte-painting": { label: "رسم Matte", description: "خلفية مرسومة بـ Matte مدمجة مع Live Action" },
20
+ "double-exposure": { label: "تعريض مزدوج", description: "تعريضان فوتوغرافيان متراكبان مدمجان" },
21
+ "multiple-exposure": { label: "تعريض متعدد", description: "ثلاثة تعريضات أو أكثر مكدسة" },
22
+ "in-camera-effects": { label: "تأثيرات داخل الكاميرا", description: "تأثيرات بصرية عملية داخل الكاميرا، بدون Post" },
23
+ "prism-flares": { label: "وهج المنشور", description: "وهج ضوئي منكسر بمنشور بلوري ينقسم إلى نطاقات طيفية" },
24
+ }
25
+
26
+ export default map
@@ -0,0 +1,25 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "Durch den Rahmen brechen", description: "3D-Papierriss durchbricht den Rahmen" },
5
+ "breaking-out-of-frame": { label: "Aus dem Rahmen ausbrechen", description: "Glied erstreckt sich über den Bildrand" },
6
+ "pixel-disintegration": { label: "Pixel-Zerfall", description: "Motiv löst sich in Partikel auf" },
7
+ "smoke-sculpture": { label: "Rauchskulptur", description: "Motiv aus wirbelndem Rauch geformt" },
8
+ "liquid-sculpture": { label: "Flüssigkeitsskulptur", description: "Motiv aus fließender Flüssigkeit geformt" },
9
+ "shattering-glass": { label: "Splitterndes Glas", description: "Eingefrorene Glasscherben im Flug" },
10
+ "emerging-from-background": { label: "Aus dem Hintergrund auftauchen", description: "Halb aus einer strukturierten Oberfläche auftauchend" },
11
+ "fragmented-mosaic": { label: "Fragmentiertes Mosaik", description: "Porträt aus Mosaikfliesen aufgebaut" },
12
+ "glitch-distortion": { label: "Glitch-Verzerrung", description: "RGB-Shift digitale Korruption" },
13
+ "doubled-mirror": { label: "Verdoppelter Spiegel", description: "Spiegelreflexion-Verdopplung" },
14
+ "floating-fragments": { label: "Schwebende Fragmente", description: "Körper schwebt teilweise davon" },
15
+ "silhouette-outline": { label: "Silhouetten-Umriss", description: "Saubere schwarze Silhouette auf flachem Hintergrund" },
16
+ "exploding-particles": { label: "Explodierende Partikel", description: "Umriss zerstreut sich in Partikel" },
17
+ "3x3-grid-collage": { label: "3x3-Raster-Collage", description: "Kontaktbogen mit 9 Posen-Montage" },
18
+ "matte-painting": { label: "Matte Painting", description: "Kompositiertes Matte-Painting-Hintergrund mit Live-Action verbunden" },
19
+ "double-exposure": { label: "Doppelbelichtung", description: "Zwei geschichtete fotografische Belichtungen verschmolzen" },
20
+ "multiple-exposure": { label: "Mehrfachbelichtung", description: "Drei oder mehr übereinander gestapelte Belichtungen" },
21
+ "in-camera-effects": { label: "In-Camera-Effekte", description: "Praktische optische Effekte direkt in der Kamera, ohne Postproduktion" },
22
+ "prism-flares": { label: "Prismenreflexe", description: "Kristallprisma-gebrochene Lichtreflexe, die in spektrale Bänder aufspalten" },
23
+ }
24
+
25
+ export default map
@@ -0,0 +1,27 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "Atravesando el Marco", description: "Rasgado de papel 3D rompiendo el marco" },
5
+ "breaking-out-of-frame": { label: "Rompiendo el Marco", description: "Extremidad se extiende más allá del borde del lienzo" },
6
+ "pixel-disintegration": { label: "Desintegración de Píxeles", description: "Sujeto disolviéndose en partículas" },
7
+ "smoke-sculpture": { label: "Escultura de Humo", description: "Sujeto formado de humo en remolinos" },
8
+ "liquid-sculpture": { label: "Escultura Líquida", description: "Sujeto formado de líquido fluido" },
9
+ "shattering-glass": { label: "Cristal Rompiéndose", description: "Esquirlas de cristal congeladas en vuelo" },
10
+ "emerging-from-background": { label: "Emergiendo del Fondo", description: "Medio emergiendo de una superficie texturizada" },
11
+ "fragmented-mosaic": { label: "Mosaico Fragmentado", description: "Retrato construido con teselas de mosaico" },
12
+ "glitch-distortion": { label: "Distorsión Glitch", description: "Corrupción digital con desplazamiento RGB" },
13
+ "doubled-mirror": { label: "Espejo Doble", description: "Duplicación reflejada en espejo" },
14
+ "floating-fragments": { label: "Fragmentos Flotantes", description: "Cuerpo derivando parcialmente" },
15
+ "silhouette-outline": { label: "Silueta Contorno", description: "Silueta negra limpia sobre fondo plano" },
16
+ "exploding-particles": { label: "Partículas Explotando", description: "Contorno disipándose en partículas" },
17
+ "3x3-grid-collage": { label: "Collage en Cuadrícula 3x3", description: "Montaje tipo hoja de contactos de 9 poses" },
18
+
19
+ // -------------------- Round 2 --------------------
20
+ "matte-painting": { label: "Matte Painting", description: "Fondo de matte painting compuesto y mezclado con acción real" },
21
+ "double-exposure": { label: "Doble Exposición", description: "Dos exposiciones fotográficas superpuestas y fusionadas" },
22
+ "multiple-exposure": { label: "Exposición Múltiple", description: "Tres o más exposiciones apiladas" },
23
+ "in-camera-effects": { label: "Efectos en Cámara", description: "Efectos ópticos prácticos en cámara, sin postproducción" },
24
+ "prism-flares": { label: "Destellos de Prisma", description: "Destellos de luz refractada por prisma de cristal dividiéndose en bandas espectrales" },
25
+ }
26
+
27
+ export default map
@@ -0,0 +1,25 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "Surgissant à travers le cadre", description: "Déchirure de papier 3D brisant le cadre" },
5
+ "breaking-out-of-frame": { label: "Sortant du cadre", description: "Membre s'étendant au-delà de la bordure du tableau" },
6
+ "pixel-disintegration": { label: "Désintégration en pixels", description: "Sujet se dissolvant en particules" },
7
+ "smoke-sculpture": { label: "Sculpture de fumée", description: "Sujet formé de fumée tourbillonnante" },
8
+ "liquid-sculpture": { label: "Sculpture liquide", description: "Sujet formé de liquide en mouvement" },
9
+ "shattering-glass": { label: "Verre brisé", description: "Éclats de verre figés en plein vol" },
10
+ "emerging-from-background": { label: "Émergeant du fond", description: "À demi sortant d'une surface texturée" },
11
+ "fragmented-mosaic": { label: "Mosaïque fragmentée", description: "Portrait composé de carreaux de mosaïque" },
12
+ "glitch-distortion": { label: "Distorsion glitch", description: "Corruption numérique avec décalage RVB" },
13
+ "doubled-mirror": { label: "Miroir doublé", description: "Duplication par reflet de miroir" },
14
+ "floating-fragments": { label: "Fragments flottants", description: "Corps se dispersant partiellement" },
15
+ "silhouette-outline": { label: "Silhouette en contour", description: "Silhouette noire nette sur fond uni" },
16
+ "exploding-particles": { label: "Particules explosives", description: "Contour se dispersant en particules" },
17
+ "3x3-grid-collage": { label: "Collage en grille 3x3", description: "Montage planche-contact de 9 poses" },
18
+ "matte-painting": { label: "Matte painting", description: "Fond peint en matte painting fondu avec prise de vue réelle" },
19
+ "double-exposure": { label: "Double exposition", description: "Deux expositions photographiques superposées et fondues" },
20
+ "multiple-exposure": { label: "Exposition multiple", description: "Trois expositions ou plus empilées" },
21
+ "in-camera-effects": { label: "Effets in-camera", description: "Effets optiques pratiques in-camera, sans post-prod" },
22
+ "prism-flares": { label: "Flares de prisme", description: "Flares de lumière réfractée par prisme de cristal se décomposant en bandes spectrales" },
23
+ }
24
+
25
+ export default map
@@ -0,0 +1,25 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "פורץ דרך הפריים", description: "קריעת נייר תלת-ממדית הפורצת את הפריים" },
5
+ "breaking-out-of-frame": { label: "פורץ מחוץ לפריים", description: "גף נמתח מעבר לגבול הקנבס" },
6
+ "pixel-disintegration": { label: "פירוק לפיקסלים", description: "סובייקט מתפרק לחלקיקים" },
7
+ "smoke-sculpture": { label: "פסל עשן", description: "סובייקט הבנוי מעשן מסולסל" },
8
+ "liquid-sculpture": { label: "פסל נוזל", description: "סובייקט הבנוי מנוזל זורם" },
9
+ "shattering-glass": { label: "זכוכית מתנפצת", description: "שברי זכוכית קפואים באוויר" },
10
+ "emerging-from-background": { label: "צץ מהרקע", description: "צץ למחצה ממשטח עם טקסטורה" },
11
+ "fragmented-mosaic": { label: "פסיפס מקוטע", description: "פורטרט הבנוי מאריחי פסיפס" },
12
+ "glitch-distortion": { label: "עיוות Glitch", description: "השחתה דיגיטלית עם הזזת RGB" },
13
+ "doubled-mirror": { label: "מראה כפולה", description: "שכפול בהשתקפות מראה" },
14
+ "floating-fragments": { label: "שברים מרחפים", description: "גוף נסחף חלקית" },
15
+ "silhouette-outline": { label: "מתאר צללית", description: "צללית שחורה נקייה על רקע שטוח" },
16
+ "exploding-particles": { label: "חלקיקים מתפוצצים", description: "מתאר מתפזר לחלקיקים" },
17
+ "3x3-grid-collage": { label: "קולאז' רשת 3x3", description: "מונטז' של 9 פוזות בסגנון contact sheet" },
18
+ "matte-painting": { label: "Matte Painting", description: "רקע matte-painting מורכב מעורב עם צילום חי" },
19
+ "double-exposure": { label: "חשיפה כפולה", description: "שתי חשיפות צילום שכבתיות מוזגות" },
20
+ "multiple-exposure": { label: "חשיפה מרובה", description: "שלוש חשיפות או יותר מוערמות" },
21
+ "in-camera-effects": { label: "אפקטים בתוך-מצלמה", description: "אפקטים אופטיים מעשיים בתוך-מצלמה, ללא post" },
22
+ "prism-flares": { label: "Prism Flares", description: "Flares של אור שבור על ידי פריזמת קריסטל המתפצל לפסים ספקטרליים" },
23
+ }
24
+
25
+ export default map
@@ -0,0 +1,27 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "Frame से बाहर निकलता हुआ", description: "Frame को तोड़ता 3D paper-tear" },
5
+ "breaking-out-of-frame": { label: "Frame से बाहर निकलना", description: "अंग canvas की सीमा से बाहर निकलता है" },
6
+ "pixel-disintegration": { label: "Pixel Disintegration", description: "Subject कणों में घुलता हुआ" },
7
+ "smoke-sculpture": { label: "धुएँ की मूर्ति", description: "घूमते धुएँ से बना subject" },
8
+ "liquid-sculpture": { label: "तरल मूर्ति", description: "बहते तरल से बना subject" },
9
+ "shattering-glass": { label: "टूटता काँच", description: "Mid-flight में जमी हुई काँच की किरचें" },
10
+ "emerging-from-background": { label: "पृष्ठभूमि से उभरना", description: "Textured सतह से आधा उभरता हुआ" },
11
+ "fragmented-mosaic": { label: "खंडित Mosaic", description: "Mosaic tiles से बना portrait" },
12
+ "glitch-distortion": { label: "Glitch Distortion", description: "RGB-shift digital corruption" },
13
+ "doubled-mirror": { label: "Doubled Mirror", description: "Mirror-परावर्तित नक़ल" },
14
+ "floating-fragments": { label: "तैरते टुकड़े", description: "बदन आंशिक रूप से दूर बहता हुआ" },
15
+ "silhouette-outline": { label: "Silhouette की रेखा", description: "Flat BG पर साफ़ काला silhouette" },
16
+ "exploding-particles": { label: "विस्फोटक कण", description: "रेखा कणों में बिखर रही है" },
17
+ "3x3-grid-collage": { label: "3x3 Grid Collage", description: "Contact-sheet 9-pose montage" },
18
+
19
+ // -------------------- Round 2 --------------------
20
+ "matte-painting": { label: "Matte Painting", description: "Live action के साथ blended composite matte-painted background" },
21
+ "double-exposure": { label: "Double Exposure", description: "दो layered photographic exposures fused" },
22
+ "multiple-exposure": { label: "Multiple Exposure", description: "तीन या उससे ज़्यादा exposures stacked" },
23
+ "in-camera-effects": { label: "In-Camera Effects", description: "Practical in-camera optical effects, no post" },
24
+ "prism-flares": { label: "Prism Flares", description: "Crystal prism refracted light flares spectral bands में बँटते हुए" },
25
+ }
26
+
27
+ export default map
@@ -0,0 +1,27 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "フレームを突き破る", description: "フレームを破る3D紙破り効果" },
5
+ "breaking-out-of-frame": { label: "フレームから飛び出す", description: "手足がキャンバスの境界を越える" },
6
+ "pixel-disintegration": { label: "ピクセル崩壊", description: "粒子に溶け込む被写体" },
7
+ "smoke-sculpture": { label: "煙の彫刻", description: "渦巻く煙でできた被写体" },
8
+ "liquid-sculpture": { label: "液体の彫刻", description: "流れる液体でできた被写体" },
9
+ "shattering-glass": { label: "砕け散るガラス", description: "飛び散る瞬間で凍ったガラス片" },
10
+ "emerging-from-background": { label: "背景から現れる", description: "テクスチャのある表面から半分浮かび上がる" },
11
+ "fragmented-mosaic": { label: "断片化したモザイク", description: "モザイクタイルで構築された肖像" },
12
+ "glitch-distortion": { label: "グリッチ歪み", description: "RGBシフトのデジタル破損" },
13
+ "doubled-mirror": { label: "二重の鏡", description: "鏡面反射による複製" },
14
+ "floating-fragments": { label: "浮かぶ断片", description: "体が部分的に漂い去る" },
15
+ "silhouette-outline": { label: "シルエットの輪郭", description: "フラットな背景上の真っ黒なシルエット" },
16
+ "exploding-particles": { label: "爆発する粒子", description: "粒子に飛散する輪郭" },
17
+ "3x3-grid-collage": { label: "3×3グリッド・コラージュ", description: "コンタクトシート風の9ポーズモンタージュ" },
18
+
19
+ // Additional composition effects
20
+ "matte-painting": { label: "マットペインティング", description: "実写と合成されたマットペイントの背景" },
21
+ "double-exposure": { label: "二重露光", description: "2層の写真露光を融合" },
22
+ "multiple-exposure": { label: "多重露光", description: "3層以上の露光を重ね合わせ" },
23
+ "in-camera-effects": { label: "カメラ内エフェクト", description: "ポストプロセスなしのカメラ内実写光学効果" },
24
+ "prism-flares": { label: "プリズムフレア", description: "クリスタルプリズムが光を屈折させスペクトル帯に分けるフレア" },
25
+ }
26
+
27
+ export default map
@@ -0,0 +1,27 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "프레임을 뚫고 나오기", description: "프레임을 찢고 나오는 3D 페이퍼-티어 효과입니다" },
5
+ "breaking-out-of-frame": { label: "프레임 밖으로 나오기", description: "사지가 캔버스 경계 너머로 뻗어 나옵니다" },
6
+ "pixel-disintegration": { label: "픽셀 디스인테그레이션", description: "피사체가 입자로 분해되어 흩어집니다" },
7
+ "smoke-sculpture": { label: "스모크 스컬프처", description: "피사체가 소용돌이치는 연기로 형성됩니다" },
8
+ "liquid-sculpture": { label: "리퀴드 스컬프처", description: "피사체가 흐르는 액체로 형성됩니다" },
9
+ "shattering-glass": { label: "산산이 부서지는 유리", description: "비행 중 정지된 유리 파편입니다" },
10
+ "emerging-from-background": { label: "배경에서 떠오르기", description: "텍스처 표면에서 절반쯤 떠오릅니다" },
11
+ "fragmented-mosaic": { label: "프래그먼티드 모자이크", description: "모자이크 타일로 구성된 초상화입니다" },
12
+ "glitch-distortion": { label: "글리치 디스토션", description: "RGB 시프트 디지털 손상입니다" },
13
+ "doubled-mirror": { label: "더블드 미러", description: "거울로 반사되어 중복된 이미지입니다" },
14
+ "floating-fragments": { label: "플로팅 프래그먼츠", description: "몸이 부분적으로 떠다니며 흩어집니다" },
15
+ "silhouette-outline": { label: "실루엣 아웃라인", description: "평면 배경 위의 깔끔한 검은 실루엣입니다" },
16
+ "exploding-particles": { label: "익스플로딩 파티클", description: "윤곽이 입자로 흩뿌려집니다" },
17
+ "3x3-grid-collage": { label: "3x3 그리드 콜라주", description: "9 포즈 콘택트 시트 몽타주입니다" },
18
+
19
+ // Additional composition effects
20
+ "matte-painting": { label: "매트 페인팅", description: "라이브 액션과 합성된 매트 페인팅 배경입니다" },
21
+ "double-exposure": { label: "다중 노출", description: "두 개의 사진 노출이 겹쳐 결합된 모습입니다" },
22
+ "multiple-exposure": { label: "다중 다중 노출", description: "세 개 이상의 노출을 쌓은 모습입니다" },
23
+ "in-camera-effects": { label: "인 카메라 이펙트", description: "후보정 없이 카메라 안에서 만들어진 실용적 광학 효과입니다" },
24
+ "prism-flares": { label: "프리즘 플레어", description: "스펙트럼 밴드로 분광되는 크리스털 프리즘 굴절 라이트 플레어입니다" },
25
+ }
26
+
27
+ export default map
@@ -0,0 +1,25 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "Rompendo o Quadro", description: "Rasgo de papel 3D quebrando o quadro" },
5
+ "breaking-out-of-frame": { label: "Saindo do Quadro", description: "Membro se estende além da borda do quadro" },
6
+ "pixel-disintegration": { label: "Desintegração em Pixels", description: "Sujeito se dissolvendo em partículas" },
7
+ "smoke-sculpture": { label: "Escultura de Fumaça", description: "Sujeito formado por fumaça em redemoinhos" },
8
+ "liquid-sculpture": { label: "Escultura Líquida", description: "Sujeito formado por líquido em fluxo" },
9
+ "shattering-glass": { label: "Vidro Estilhaçando", description: "Estilhaços de vidro congelados em pleno voo" },
10
+ "emerging-from-background": { label: "Emergindo do Fundo", description: "Meio emergindo de uma superfície texturizada" },
11
+ "fragmented-mosaic": { label: "Mosaico Fragmentado", description: "Retrato montado a partir de pequenos azulejos" },
12
+ "glitch-distortion": { label: "Distorção Glitch", description: "Corrupção digital com deslocamento RGB" },
13
+ "doubled-mirror": { label: "Espelhamento Duplicado", description: "Duplicação por reflexo em espelho" },
14
+ "floating-fragments": { label: "Fragmentos Flutuando", description: "Corpo se afastando parcialmente em pedaços" },
15
+ "silhouette-outline": { label: "Contorno em Silhueta", description: "Silhueta preta limpa sobre fundo plano" },
16
+ "exploding-particles": { label: "Partículas Explodindo", description: "Contorno se desfazendo em partículas" },
17
+ "3x3-grid-collage": { label: "Colagem em Grade 3x3", description: "Folha-contato com 9 poses" },
18
+ "matte-painting": { label: "Matte Painting", description: "Fundo composto em matte painting integrado a captação real" },
19
+ "double-exposure": { label: "Dupla Exposição", description: "Duas exposições fotográficas sobrepostas e fundidas" },
20
+ "multiple-exposure": { label: "Múltipla Exposição", description: "Três ou mais exposições empilhadas" },
21
+ "in-camera-effects": { label: "Efeitos In-Camera", description: "Efeitos ópticos práticos feitos in-camera, sem pós" },
22
+ "prism-flares": { label: "Flares de Prisma", description: "Flares de luz refratados por prisma de cristal, decompondo-se em bandas espectrais" },
23
+ }
24
+
25
+ export default map
@@ -0,0 +1,82 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": {
5
+ label: "Прорыв сквозь рамку",
6
+ description: "3D-эффект разорванной бумаги, ломающий рамку",
7
+ },
8
+ "breaking-out-of-frame": {
9
+ label: "Выход за рамки",
10
+ description: "Конечность выходит за границу холста",
11
+ },
12
+ "pixel-disintegration": {
13
+ label: "Пиксельная дезинтеграция",
14
+ description: "Объект растворяется в частицах",
15
+ },
16
+ "smoke-sculpture": {
17
+ label: "Скульптура из дыма",
18
+ description: "Объект, сформированный из клубящегося дыма",
19
+ },
20
+ "liquid-sculpture": {
21
+ label: "Жидкая скульптура",
22
+ description: "Объект, сформированный из текучей жидкости",
23
+ },
24
+ "shattering-glass": {
25
+ label: "Разбивающееся стекло",
26
+ description: "Замёрзшие осколки стекла в полёте",
27
+ },
28
+ "emerging-from-background": {
29
+ label: "Выход из фона",
30
+ description: "Полу-выход из текстурированной поверхности",
31
+ },
32
+ "fragmented-mosaic": {
33
+ label: "Фрагментированная мозаика",
34
+ description: "Портрет, собранный из мозаичных плиток",
35
+ },
36
+ "glitch-distortion": {
37
+ label: "Глитч-искажение",
38
+ description: "Цифровое искажение со сдвигом RGB",
39
+ },
40
+ "doubled-mirror": {
41
+ label: "Удвоенное зеркало",
42
+ description: "Зеркальное удвоение",
43
+ },
44
+ "floating-fragments": {
45
+ label: "Парящие фрагменты",
46
+ description: "Тело частично уплывает прочь",
47
+ },
48
+ "silhouette-outline": {
49
+ label: "Силуэтный контур",
50
+ description: "Чистый чёрный силуэт на плоском фоне",
51
+ },
52
+ "exploding-particles": {
53
+ label: "Взрыв частиц",
54
+ description: "Контур разлетается на частицы",
55
+ },
56
+ "3x3-grid-collage": {
57
+ label: "Коллаж 3×3",
58
+ description: "Контактный лист из 9 поз",
59
+ },
60
+ "matte-painting": {
61
+ label: "Маттовая живопись",
62
+ description: "Композитный нарисованный матовый фон, смешанный с живой съёмкой",
63
+ },
64
+ "double-exposure": {
65
+ label: "Двойная экспозиция",
66
+ description: "Две наложенные фотографические экспозиции, сплавленные вместе",
67
+ },
68
+ "multiple-exposure": {
69
+ label: "Множественная экспозиция",
70
+ description: "Три или более экспозиций, наложенных друг на друга",
71
+ },
72
+ "in-camera-effects": {
73
+ label: "Внутрикамерные эффекты",
74
+ description: "Практические внутрикамерные оптические эффекты, без пост-обработки",
75
+ },
76
+ "prism-flares": {
77
+ label: "Призматические блики",
78
+ description: "Преломлённые хрустальной призмой световые блики, разделяющиеся на спектральные полосы",
79
+ },
80
+ }
81
+
82
+ export default map
@@ -0,0 +1,25 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "bursting-through-frame": { label: "撕纸破框", description: "3D 撕纸效果冲破画框" },
5
+ "breaking-out-of-frame": { label: "破出画框", description: "肢体伸出画布边缘" },
6
+ "pixel-disintegration": { label: "像素崩解", description: "主体崩解为颗粒" },
7
+ "smoke-sculpture": { label: "烟雾雕塑", description: "由烟雾盘旋而成的主体" },
8
+ "liquid-sculpture": { label: "液体雕塑", description: "由液体流动构成的主体" },
9
+ "shattering-glass": { label: "碎裂玻璃", description: "凝固在飞行中的玻璃碎片" },
10
+ "emerging-from-background": { label: "从背景中浮现", description: "从带肌理的表面半显现" },
11
+ "fragmented-mosaic": { label: "马赛克拼贴", description: "由马赛克瓷砖拼成的肖像" },
12
+ "glitch-distortion": { label: "故障失真", description: "RGB 错位的数字损坏" },
13
+ "doubled-mirror": { label: "镜面双生", description: "镜面反射的复制" },
14
+ "floating-fragments": { label: "漂浮碎片", description: "身体部分飘散远去" },
15
+ "silhouette-outline": { label: "剪影轮廓", description: "纯色背景上的干净黑剪影" },
16
+ "exploding-particles": { label: "粒子爆裂", description: "轮廓向外炸成颗粒" },
17
+ "3x3-grid-collage": { label: "3x3 网格拼贴", description: "9 格姿势接触印样拼贴" },
18
+ "matte-painting": { label: "接景绘画", description: "接景背景与实拍画面合成" },
19
+ "double-exposure": { label: "二次曝光", description: "两层摄影曝光叠合" },
20
+ "multiple-exposure": { label: "多重曝光", description: "三次或更多次曝光叠合" },
21
+ "in-camera-effects": { label: "机内特效", description: "实拍机内光学特效,无后期" },
22
+ "prism-flares": { label: "棱镜光斑", description: "水晶棱镜折射出的光斑,分裂成光谱色带" },
23
+ }
24
+
25
+ export default map
@@ -0,0 +1,37 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "1920s-flapper": { label: "Flapper العشرينيات", description: "بريق Speakeasy عصر الجاز" },
5
+ "1930s-art-deco": { label: "Art Deco الثلاثينيات", description: "بريق Deco انسيابي" },
6
+ "1940s-wartime": { label: "زمن الحرب الأربعينيات", description: "ملابس عملية ولفائف نصر" },
7
+ "1950s-diner": { label: "Diner / Pin-up الخمسينيات", description: "Diners كرومية ولفات شعر منتفخة" },
8
+ "1960s-mod": { label: "Mod الستينيات", description: "غرافيك Mod من Swinging-London" },
9
+ "1970s-disco": { label: "Disco السبعينيات", description: "بريق كرة المرايا في Studio-54" },
10
+ "1980s-neon": { label: "نيون الثمانينيات", description: "إفراط نيون MTV ببدلات قوة" },
11
+ "1990s-mall": { label: "مولات التسعينيات", description: "تسعينيات Grunge وبوب فتيان المول" },
12
+ "2000s-y2k": { label: "تابلويد الألفينيات / Y2K", description: "تابلويد Paparazzi ببنطلونات منخفضة الخصر" },
13
+
14
+ "medieval": { label: "العصور الوسطى", description: "العصور الوسطى الأوروبية بقلاع حجرية" },
15
+ "renaissance": { label: "عصر النهضة", description: "فخامة فلورنسية بمخمل وفريسكو" },
16
+ "victorian": { label: "العصر الفيكتوري", description: "القرن 19 بمشدات ودانتيل وضوء غاز" },
17
+ "edwardian": { label: "العصر الإدواردي", description: "رقي حديقة شاي من Belle Époque" },
18
+ "wild-west": { label: "الغرب المتوحش", description: "أجواء راعي بقر أمريكية مشمسة" },
19
+ "ancient-rome": { label: "روما القديمة", description: "روما الإمبراطورية بأعمدة رخامية" },
20
+ "ancient-egypt": { label: "مصر القديمة", description: "نيل فرعوني بذهب وكتان" },
21
+ "feudal-japan": { label: "اليابان الإقطاعية", description: "ساموراي وغايشا من عصر إيدو" },
22
+ "roaring-prewar": { label: "ما قبل الحرب الصاخب", description: "حافة Art Nouveau في أواخر العقد الثاني" },
23
+
24
+ "near-future": { label: "المستقبل القريب", description: "5-15 سنة قادمة محتملة" },
25
+ "far-future": { label: "المستقبل البعيد", description: "سفر فضائي بعد قرون" },
26
+ "dieselpunk": { label: "Dieselpunk", description: "تاريخ بديل صناعي للثلاثينيات والأربعينيات" },
27
+ "atompunk": { label: "Atompunk", description: "تفاؤل عصر الفضاء بمستقبل الخمسينيات" },
28
+ "cyberpunk-future": { label: "مستقبل Cyberpunk", description: "ميغاسيتي نيون بتقنية عالية وحياة منخفضة" },
29
+ "post-apocalyptic": { label: "ما بعد المحرقة", description: "نجاة Wasteland للبحث في المخلفات" },
30
+ "retrofuturism": { label: "Retrofuturism", description: "حنين غد بالأمس" },
31
+
32
+ "atomic-age-50s": { label: "العصر الذري الخمسينيات", description: "خيال علمي خمسيني مستقبلي + قلق الحرب الباردة" },
33
+ "gen-z-2020s": { label: "جيل Z العشرينيات الجديدة", description: "تأليف يبدأ بالهاتف، أسلوب TikTok، إحياء Y2K" },
34
+ "fin-de-siecle": { label: "Fin-de-siècle", description: "أناقة أوروبية من نهاية القرن في عصر Belle Époque" },
35
+ }
36
+
37
+ export default map
@@ -0,0 +1,34 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "1920s-flapper": { label: "1920er Flapper", description: "Jazz-Age-Flüsterkneipen-Glamour" },
5
+ "1930s-art-deco": { label: "1930er Art Déco", description: "Stromlinienförmiger Deco-Glamour" },
6
+ "1940s-wartime": { label: "1940er Kriegszeit", description: "Kriegszeit-Zweckmäßigkeit und Victory Rolls" },
7
+ "1950s-diner": { label: "1950er Diner / Pin-up", description: "Chrom-Diners und Pin-up-Bouffants" },
8
+ "1960s-mod": { label: "1960er Mod", description: "Swinging-London-Mod-Grafik" },
9
+ "1970s-disco": { label: "1970er Disco", description: "Studio-54-Discokugel-Glitzer" },
10
+ "1980s-neon": { label: "1980er Neon", description: "Power-Suit-MTV-Neon-Exzess" },
11
+ "1990s-mall": { label: "1990er Shoppingmall", description: "Mall-Rat-Grunge-und-Pop-Neunziger" },
12
+ "2000s-y2k": { label: "2000er Tabloid / Y2K", description: "Paparazzi-Blitz mit Low-Rise-Tabloid" },
13
+ "medieval": { label: "Mittelalter", description: "Steinburgliches europäisches Mittelalter" },
14
+ "renaissance": { label: "Renaissance", description: "Florentinische Samt-und-Fresken-Pracht" },
15
+ "victorian": { label: "Viktorianisch", description: "Gaslicht-Korsett-und-Spitzen-19. Jahrhundert" },
16
+ "edwardian": { label: "Edwardianisch", description: "Belle-Époque-Teegarten-Raffinesse" },
17
+ "wild-west": { label: "Wilder Westen", description: "Sonnengebrannte Frontier-Cowboy-Americana" },
18
+ "ancient-rome": { label: "Antikes Rom", description: "Marmorsäulen-kaiserliches Rom" },
19
+ "ancient-egypt": { label: "Altes Ägypten", description: "Pharaonisches Gold-und-Leinen-Nilland" },
20
+ "feudal-japan": { label: "Feudales Japan", description: "Edo-Zeit Samurai-und-Geisha" },
21
+ "roaring-prewar": { label: "Vorkriegs-Goldene-Zwanziger", description: "Späte 1910er Art-Nouveau-Schwelle" },
22
+ "near-future": { label: "Nahe Zukunft", description: "Plausible 5-bis-15-Jahre-Zukunft" },
23
+ "far-future": { label: "Ferne Zukunft", description: "Jahrhunderte voraus, Raumfahrt" },
24
+ "dieselpunk": { label: "Dieselpunk", description: "1930er-40er industrielle Alt-Geschichte" },
25
+ "atompunk": { label: "Atompunk", description: "1950er-Zukunft Weltraumzeitalter-Optimismus" },
26
+ "cyberpunk-future": { label: "Cyberpunk-Zukunft", description: "Neon-Megacity High-Tech-Low-Life" },
27
+ "post-apocalyptic": { label: "Postapokalyptisch", description: "Plünderer-Ödland-Überleben" },
28
+ "retrofuturism": { label: "Retrofuturismus", description: "Nostalgie für das Morgen von gestern" },
29
+ "atomic-age-50s": { label: "Atomzeitalter 50er", description: "1950er Sci-Fi-Futurismus + Kalter-Krieg-Angst" },
30
+ "gen-z-2020s": { label: "Gen Z 2020er", description: "Phone-First-Komposition, TikTok-codiertes Styling, Y2K-Revival" },
31
+ "fin-de-siecle": { label: "Fin de siècle", description: "Belle-Époque-Eleganz Europas an der Jahrhundertwende" },
32
+ }
33
+
34
+ export default map
@@ -0,0 +1,37 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "1920s-flapper": { label: "Flapper de los 1920s", description: "Glamour de speakeasy de la era del jazz" },
5
+ "1930s-art-deco": { label: "Art Deco de los 1930s", description: "Glamour deco aerodinámico" },
6
+ "1940s-wartime": { label: "Tiempos de Guerra de los 1940s", description: "Utilidad de guerra y rolls de victoria" },
7
+ "1950s-diner": { label: "Diner / Pin-up de los 1950s", description: "Diners cromados y pin-ups con bouffant" },
8
+ "1960s-mod": { label: "Mod de los 1960s", description: "Gráfico mod del Swinging London" },
9
+ "1970s-disco": { label: "Disco de los 1970s", description: "Brillos de bola de espejos del Studio 54" },
10
+ "1980s-neon": { label: "Neón de los 1980s", description: "Excesos neón con power-suit estilo MTV" },
11
+ "1990s-mall": { label: "Mall de los 1990s", description: "Noventas mall-rat entre grunge y pop" },
12
+ "2000s-y2k": { label: "Tabloide / Y2K de los 2000s", description: "Tabloide con flash de paparazzi y jeans de tiro bajo" },
13
+
14
+ "medieval": { label: "Medieval", description: "Edad Media europea de castillos de piedra" },
15
+ "renaissance": { label: "Renacimiento", description: "Grandeza florentina de terciopelo y fresco" },
16
+ "victorian": { label: "Victoriano", description: "Siglo XIX corseteado con encaje y luz de gas" },
17
+ "edwardian": { label: "Eduardiano", description: "Refinamiento Belle Époque de jardín de té" },
18
+ "wild-west": { label: "Salvaje Oeste", description: "Americana fronteriza de vaquero bajo el sol" },
19
+ "ancient-rome": { label: "Antigua Roma", description: "Roma imperial con columnas de mármol" },
20
+ "ancient-egypt": { label: "Antiguo Egipto", description: "Nilo faraónico de oro y lino" },
21
+ "feudal-japan": { label: "Japón Feudal", description: "Samuráis y geishas del periodo Edo" },
22
+ "roaring-prewar": { label: "Roaring Prebélico", description: "Cúspide art-nouveau de finales de los 1910s" },
23
+
24
+ "near-future": { label: "Futuro Cercano", description: "Plausible 5-15 años hacia adelante" },
25
+ "far-future": { label: "Futuro Lejano", description: "Era espacial de siglos por venir" },
26
+ "dieselpunk": { label: "Dieselpunk", description: "Historia alternativa industrial de los 1930-40s" },
27
+ "atompunk": { label: "Atompunk", description: "Optimismo de la era espacial futura de los 1950s" },
28
+ "cyberpunk-future": { label: "Futuro Cyberpunk", description: "Megaciudad neón de alta tecnología y baja vida" },
29
+ "post-apocalyptic": { label: "Postapocalíptico", description: "Supervivencia carroñera en un páramo" },
30
+ "retrofuturism": { label: "Retrofuturismo", description: "Nostalgia del mañana de ayer" },
31
+
32
+ "atomic-age-50s": { label: "Era Atómica de los 50s", description: "Futurismo sci-fi de los años 50 + ansiedad de la Guerra Fría" },
33
+ "gen-z-2020s": { label: "Gen Z de los 2020s", description: "Composición phone-first, estética codificada de TikTok, revival Y2K" },
34
+ "fin-de-siecle": { label: "Fin-de-siècle", description: "Elegancia europea de cambio de siglo Belle Époque" },
35
+ }
36
+
37
+ export default map