@nodaro/shared 1.4.2

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,31 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Aperture — keep f-stop labels (technical units)
5
+ "aperture-f1-2": { description: "極薄の被写界深度、夢のようなボケ" },
6
+ "aperture-f1-4": { description: "強い被写体の分離" },
7
+ "aperture-f1-8": { description: "クラシックなポートレートの分離" },
8
+ "aperture-f2-8": { description: "被写体はシャープ、背景は柔らかく" },
9
+ "aperture-f4": { description: "バランスの取れた日常的な被写界深度" },
10
+ "aperture-f5-6": { description: "被写体全体にシャープ" },
11
+ "aperture-f8": { description: "スイートスポットのシャープネス" },
12
+ "aperture-f11": { description: "深い風景の被写界深度" },
13
+ "aperture-f16": { description: "ハイパーフォーカル、太陽の星形" },
14
+
15
+ // Shutter Speed — keep technical labels
16
+ "shutter-1-30": { description: "手持ちブレのほのかな気配" },
17
+ "shutter-1-60": { description: "標準的な日常用シャッター" },
18
+ "shutter-1-200": { description: "ほとんどの被写体でシャープ" },
19
+ "shutter-1-500": { description: "素早いアクションでもシャープ" },
20
+ "shutter-1-1000": { description: "凍ったスポーツ/野生動物" },
21
+ "shutter-long-1s": { description: "ストリークと動きの軌跡" },
22
+
23
+ // ISO — keep ISO numeric labels
24
+ "iso-100": { description: "ノイズ最小、細かい粒子" },
25
+ "iso-400": { description: "わずかな質感、毎日使えるISO" },
26
+ "iso-800": { description: "目に見えるが心地よい粒子" },
27
+ "iso-1600": { description: "エディトリアルな低光量の質感" },
28
+ "iso-3200": { description: "プッシュ処理されたざらついたドキュメンタリー感" },
29
+ }
30
+
31
+ export default map
@@ -0,0 +1,31 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Aperture (technical units stay in alphanumeric)
5
+ "aperture-f1-2": { description: "면도날처럼 얇은 DOF, 몽환적인 보케입니다" },
6
+ "aperture-f1-4": { description: "공격적인 피사체 분리입니다" },
7
+ "aperture-f1-8": { description: "클래식한 인물 분리입니다" },
8
+ "aperture-f2-8": { description: "피사체는 또렷하고, 배경은 부드럽습니다" },
9
+ "aperture-f4": { description: "균형 잡힌 일상적인 DOF입니다" },
10
+ "aperture-f5-6": { description: "피사체 전반에 걸쳐 또렷합니다" },
11
+ "aperture-f8": { description: "가장 선명한 스위트 스팟 샤프니스입니다" },
12
+ "aperture-f11": { description: "깊은 풍경 사진용 DOF입니다" },
13
+ "aperture-f16": { description: "초점 무한대, 햇빛이 별 모양으로 표현됩니다" },
14
+
15
+ // Shutter Speed
16
+ "shutter-1-30": { label: "1/30 (핸드헬드 블러)", description: "핸드헬드 모션의 미묘한 흔적입니다" },
17
+ "shutter-1-60": { description: "표준적인 일상용 셔터 스피드입니다" },
18
+ "shutter-1-200": { description: "대부분의 피사체에 또렷합니다" },
19
+ "shutter-1-500": { description: "빠른 액션에서도 선명합니다" },
20
+ "shutter-1-1000": { label: "1/1000 (액션 정지)", description: "스포츠/야생동물의 동작을 정지시킵니다" },
21
+ "shutter-long-1s": { label: "장노출 (1초)", description: "광선과 모션 트레일이 만들어집니다" },
22
+
23
+ // ISO
24
+ "iso-100": { label: "ISO 100 (클린)", description: "최소한의 노이즈와 미세한 그레인입니다" },
25
+ "iso-400": { description: "약간의 텍스처가 있는 일상용 ISO입니다" },
26
+ "iso-800": { description: "보이지만 기분 좋은 그레인입니다" },
27
+ "iso-1600": { label: "ISO 1600 (가시 그레인)", description: "에디토리얼한 저조도 텍스처입니다" },
28
+ "iso-3200": { label: "ISO 3200 (강한 그레인)", description: "푸시 처리된 거친 다큐멘터리 느낌입니다" },
29
+ }
30
+
31
+ export default map
@@ -0,0 +1,31 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Aperture — labels are technical units (f/1.2 etc.), kept as-is
5
+ "aperture-f1-2": { description: "Profundidade de campo mínima, bokeh dos sonhos" },
6
+ "aperture-f1-4": { description: "Isolamento agressivo do sujeito" },
7
+ "aperture-f1-8": { description: "Separação clássica de retrato" },
8
+ "aperture-f2-8": { description: "Sujeito nítido, fundo desfocado" },
9
+ "aperture-f4": { description: "Profundidade de campo equilibrada do dia a dia" },
10
+ "aperture-f5-6": { description: "Nitidez consistente em todo o sujeito" },
11
+ "aperture-f8": { description: "Ponto ideal de nitidez" },
12
+ "aperture-f11": { description: "Profundidade de campo grande para paisagem" },
13
+ "aperture-f16": { description: "Hiperfocal, estrelinhas no sol" },
14
+
15
+ // Shutter speed — units kept as-is, fragment after slash translated
16
+ "shutter-1-30": { label: "1/30 (tremido na mão)", description: "Toque de movimento na câmera na mão" },
17
+ "shutter-1-60": { description: "Velocidade padrão do dia a dia" },
18
+ "shutter-1-200": { description: "Nítido na maioria dos sujeitos" },
19
+ "shutter-1-500": { description: "Nítido em ações rápidas" },
20
+ "shutter-1-1000": { label: "1/1000 (congelar ação)", description: "Esportes/animais selvagens congelados" },
21
+ "shutter-long-1s": { label: "Longa exposição (1s)", description: "Riscos e rastros de movimento" },
22
+
23
+ // ISO — units in English, descriptors translated
24
+ "iso-100": { label: "ISO 100 (limpo)", description: "Mínimo ruído, granulação fina" },
25
+ "iso-400": { description: "Textura discreta, ISO do dia a dia" },
26
+ "iso-800": { description: "Granulação visível, mas agradável" },
27
+ "iso-1600": { label: "ISO 1600 (granulação visível)", description: "Textura editorial em pouca luz" },
28
+ "iso-3200": { label: "ISO 3200 (granulação pesada)", description: "Sensação documental, granulada e crua" },
29
+ }
30
+
31
+ export default map
@@ -0,0 +1,31 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // ---------------------------- Aperture (technical units, keep label) ----------------------------
5
+ "aperture-f1-2": { description: "Бритвенно тонкая ГРИП, мечтательное боке" },
6
+ "aperture-f1-4": { description: "Агрессивное выделение объекта" },
7
+ "aperture-f1-8": { description: "Классическое портретное разделение" },
8
+ "aperture-f2-8": { description: "Объект резкий, фон мягкий" },
9
+ "aperture-f4": { description: "Сбалансированная ГРИП на каждый день" },
10
+ "aperture-f5-6": { description: "Резкость по всему объекту" },
11
+ "aperture-f8": { description: "Резкость в идеальной точке диафрагмы" },
12
+ "aperture-f11": { description: "Глубокая ГРИП для пейзажа" },
13
+ "aperture-f16": { description: "Гиперфокальная, солнечные звёзды" },
14
+
15
+ // ---------------------------- Shutter Speed (technical units, keep label) ----------------------------
16
+ "shutter-1-30": { description: "Лёгкое смазывание при съёмке с рук" },
17
+ "shutter-1-60": { description: "Стандартная повседневная выдержка" },
18
+ "shutter-1-200": { description: "Резко на большинстве объектов" },
19
+ "shutter-1-500": { description: "Резко при быстром движении" },
20
+ "shutter-1-1000": { description: "Заморозка спорта/дикой природы" },
21
+ "shutter-long-1s": { description: "Полосы и следы движения" },
22
+
23
+ // ---------------------------- ISO (technical units, keep label) ----------------------------
24
+ "iso-100": { description: "Минимум шума, тонкое зерно" },
25
+ "iso-400": { description: "Лёгкая текстура, рабочее ISO" },
26
+ "iso-800": { description: "Заметное, но приятное зерно" },
27
+ "iso-1600": { description: "Редакторская текстура слабого света" },
28
+ "iso-3200": { description: "Подтянутое, грубое документальное ощущение" },
29
+ }
30
+
31
+ export default map
@@ -0,0 +1,31 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Aperture — keep f/x.x in alphanumeric form
5
+ "aperture-f1-2": { description: "极薄景深,梦幻散景" },
6
+ "aperture-f1-4": { description: "强烈的主体分离" },
7
+ "aperture-f1-8": { description: "经典人像景深分离" },
8
+ "aperture-f2-8": { description: "主体清晰、背景柔化" },
9
+ "aperture-f4": { description: "均衡的日常景深" },
10
+ "aperture-f5-6": { description: "主体上下完全清晰" },
11
+ "aperture-f8": { description: "甜点光圈般的锐利" },
12
+ "aperture-f11": { description: "深景深的风光光圈" },
13
+ "aperture-f16": { description: "超焦距景深与太阳星芒" },
14
+
15
+ // Shutter
16
+ "shutter-1-30": { label: "1/30(手持模糊)", description: "微妙的手持运动暗示" },
17
+ "shutter-1-60": { label: "1/60", description: "标准的日常快门速度" },
18
+ "shutter-1-200": { label: "1/200", description: "对大多数主体清晰" },
19
+ "shutter-1-500": { label: "1/500", description: "对快速动作清晰" },
20
+ "shutter-1-1000": { label: "1/1000(凝固动作)", description: "凝固运动 / 野生动物" },
21
+ "shutter-long-1s":{ label: "长曝光(1 秒)", description: "拉丝与运动轨迹" },
22
+
23
+ // ISO
24
+ "iso-100": { label: "ISO 100(纯净)", description: "极少噪点,细腻颗粒" },
25
+ "iso-400": { label: "ISO 400", description: "略带肌理的日常 ISO" },
26
+ "iso-800": { label: "ISO 800", description: "可见但悦目的颗粒" },
27
+ "iso-1600": { label: "ISO 1600(明显颗粒)", description: "大片感低光肌理" },
28
+ "iso-3200": { label: "ISO 3200(大量颗粒)", description: "推感、纪实般粗砺" },
29
+ }
30
+
31
+ export default map
@@ -0,0 +1,78 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "extreme-wide-shot": { label: "لقطة عريضة جدا", description: "موضوع صغير في بيئة شاسعة" },
5
+ "wide-shot": { label: "لقطة عريضة", description: "جسم كامل مع المحيط" },
6
+ "medium-wide-shot": { label: "متوسطة عريضة", description: "موضوع من الركبتين فأعلى" },
7
+ "medium-shot": { label: "لقطة متوسطة", description: "موضوع من الخصر فأعلى" },
8
+ "medium-close-up": { label: "متوسطة قريبة", description: "موضوع من الصدر فأعلى" },
9
+ "close-up": { label: "لقطة قريبة", description: "وجه الموضوع يملأ الإطار" },
10
+ "extreme-close-up": { label: "قريبة جدا", description: "تفصيل ضيق لميزة في الوجه" },
11
+ "ecu-eye": { label: "ECU: عين", description: "لقطة قريبة جدا بأسلوب Sergio Leone، ضيقة على عين واحدة" },
12
+ "ecu-mouth": { label: "ECU: شفاه/فم", description: "لقطة قريبة جدا ضيقة على الفم والشفاه والأسنان" },
13
+ "ecu-hands": { label: "ECU: يدين", description: "لقطة قريبة جدا ضيقة على اليدين" },
14
+ "big-close-up": { label: "Big Close-up (BCU)", description: "أضيق من اللقطة القريبة القياسية، فقط الوجه من الذقن إلى الجبين" },
15
+ "choker": { label: "لقطة Choker", description: "مؤطرة عند الحلق، الرأس والرقبة فقط، شدة حميمية" },
16
+ "italian-shot": { label: "اللقطة الإيطالية / Trinity Shot", description: "حيلة Western عند Sergio Leone: ECU مقتطع على العينين فقط" },
17
+ "insert": { label: "Insert", description: "لقطة تفصيلية لجسم" },
18
+ "macro": { label: "ماكرو", description: "تفصيل قريب جدا لموضوع صغير" },
19
+ "full-shot": { label: "لقطة كاملة", description: "الجسم بالكامل من الرأس إلى القدم في الإطار" },
20
+ "cowboy-shot": { label: "لقطة Cowboy", description: "من منتصف الفخذ فأعلى، تأطير غربي كلاسيكي" },
21
+ "head-to-knees": { label: "من الرأس للركبتين", description: "من الرأس نزولا للركبتين" },
22
+ "head-to-hip": { label: "من الرأس للخصر", description: "من الرأس نزولا للوركين" },
23
+ "half-body": { label: "نصف جسم", description: "بورتريه نظيف من الخصر فأعلى" },
24
+
25
+ "eye-level": { label: "مستوى العين", description: "كاميرا بارتفاع عيني الموضوع" },
26
+ "high-angle": { label: "زاوية مرتفعة", description: "كاميرا فوق الموضوع تنظر للأسفل" },
27
+ "low-angle": { label: "زاوية منخفضة", description: "كاميرا تحت الموضوع تنظر للأعلى" },
28
+ "overhead": { label: "علوي", description: "منظر علوي مباشر من فوق" },
29
+ "worms-eye-angle": { label: "عين الدودة", description: "زاوية منخفضة جدا من الأرض" },
30
+ "dutch-angle": { label: "Dutch Angle", description: "أفق مائل منحرف" },
31
+ "birds-eye": { label: "عين الطائر", description: "منظر علوي جوي مرتفع" },
32
+ "slightly-downward": { label: "منحدر قليلا", description: "إمالة لطيفة من الأعلى، بأسلوب سيلفي" },
33
+
34
+ "single": { label: "فردية", description: "لقطة نظيفة لموضوع واحد" },
35
+ "two-shot": { label: "ثنائية", description: "كلا الموضوعين في الإطار" },
36
+ "three-shot": { label: "ثلاثية", description: "ثلاثة مواضيع في الإطار" },
37
+ "over-the-shoulder-framing": { label: "فوق الكتف", description: "عبر كتف الشخصية إلى الأخرى" },
38
+ "reverse-shot": { label: "لقطة عكسية", description: "وجهة نظر معاكسة للقطة السابقة" },
39
+ "pov-framing": { label: "POV", description: "عبر عيني الموضوع" },
40
+ "selfie-framing": { label: "سيلفي", description: "صورة ذاتية بطول الذراع" },
41
+ "mirror-selfie": { label: "سيلفي بالمرآة", description: "هاتف مرئي في انعكاس مرآة" },
42
+ "gym-mirror-selfie": { label: "سيلفي بالمرآة في الصالة الرياضية", description: "زاوية ثلاثة أرباع جانبية-خلفية عبر مرآة صالة رياضية" },
43
+ "through-glass": { label: "عبر زجاج", description: "مؤطر عبر لوح زجاج في المقدمة" },
44
+ "top-down-flat-lay": { label: "Flat Lay علوي", description: "ترتيب علوي للأشياء على سطح" },
45
+ "establishing-shot": { label: "لقطة تأسيس", description: "لقطة بيئية واسعة، الموضوع صغير" },
46
+ "dirty-single": { label: "Dirty Single", description: "فردية مع شخصية أخرى عند الحافة" },
47
+
48
+ "rule-of-thirds": { label: "قاعدة الأثلاث", description: "موضوع على تقاطع أثلاث" },
49
+ "centered": { label: "مركزي", description: "موضوع في المنتصف تماما، متماثل" },
50
+ "headroom-tight": { label: "Headroom ضيق", description: "رأس الموضوع قرب أعلى الإطار" },
51
+ "negative-space": { label: "فراغ سلبي", description: "موضوع منزاح بفراغ" },
52
+ "leading-lines": { label: "خطوط موجهة", description: "خطوط تجذب العين للموضوع" },
53
+ "3x3-grid-collage": { label: "كولاج شبكة 3×3", description: "موضوع في شبكة 3×3 من المتغيرات" },
54
+ "diptych": { label: "Diptych", description: "تأليف ثنائي جنبا إلى جنب" },
55
+ "triptych": { label: "Triptych", description: "تأليف من ثلاثة إطارات" },
56
+ "multi-frame-mosaic": { label: "فسيفساء متعددة الإطارات", description: "وجه مبني من فسيفساء بلاطات صغيرة" },
57
+ "contact-sheet": { label: "ورقة اتصال", description: "ورقة اتصال صور للصور المصغرة" },
58
+ "magazine-spread": { label: "صفحة مجلة مفتوحة", description: "تخطيط مجلة على صفحتين بطباعة" },
59
+ "cutaway-cross-section": { label: "Cutaway / مقطع عرضي", description: "مقطع معماري بجدران مقشرة" },
60
+
61
+ "front-on": { label: "أمامي مباشر", description: "موضوع يواجه الكاميرا" },
62
+ "three-quarter-front": { label: "ثلاثة أرباع أمامي", description: "خارج المحور قليلا من الأمام" },
63
+ "profile-left": { label: "بروفايل يسار", description: "منظر جانبي من يسار الموضوع" },
64
+ "profile-right": { label: "بروفايل يمين", description: "منظر جانبي من يمين الموضوع" },
65
+ "three-quarter-back": { label: "ثلاثة أرباع خلفي", description: "خارج المحور من الخلف" },
66
+ "behind": { label: "خلف", description: "منظر خلفي مباشر" },
67
+ "side-back-angle": { label: "زاوية جانبية-خلفية", description: "ثلاثة أرباع من خلف كتف واحد" },
68
+
69
+ "golden-spiral": { label: "اللولب الذهبي", description: "تأليف على لولب نسبة Fibonacci" },
70
+ "frame-within-frame": { label: "إطار داخل إطار", description: "موضوع مؤطر بعنصر معماري داخلي" },
71
+ "s-curve": { label: "منحنى S", description: "تدفق قطري متعرج يوجه العين" },
72
+ "diagonal-composition": { label: "قطري", description: "خط قطري قوي يقطع الإطار" },
73
+ "triangular-composition": { label: "ثلاثي", description: "ترتيب ثلاثي النقاط" },
74
+ "symmetrical-mirror": { label: "متماثل / مرآة", description: "تماثل دقيق يمين-يسار" },
75
+ "vignette-composition": { label: "تظليل", description: "تعتيم محيطي ثقيل يركز على المركز" },
76
+ }
77
+
78
+ export default map
@@ -0,0 +1,73 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "extreme-wide-shot": { label: "Extreme Totale", description: "Motiv winzig in weiter Umgebung" },
5
+ "wide-shot": { label: "Totale", description: "Ganzkörper mit Umgebung" },
6
+ "medium-wide-shot": { label: "Halbtotale", description: "Motiv ab den Knien aufwärts" },
7
+ "medium-shot": { label: "Halbnah", description: "Motiv ab der Hüfte aufwärts" },
8
+ "medium-close-up": { label: "Nah", description: "Motiv ab der Brust aufwärts" },
9
+ "close-up": { label: "Großaufnahme", description: "Motivgesicht füllt das Bild" },
10
+ "extreme-close-up": { label: "Detailaufnahme", description: "Enges Detail eines Gesichtszugs" },
11
+ "ecu-eye": { label: "ECU: Auge", description: "Detailaufnahme im Sergio-Leone-Stil, eng auf ein einzelnes Auge" },
12
+ "ecu-mouth": { label: "ECU: Lippen/Mund", description: "Detailaufnahme eng auf Mund, Lippen und Zähne" },
13
+ "ecu-hands": { label: "ECU: Hände", description: "Detailaufnahme eng auf die Hände" },
14
+ "big-close-up": { label: "Big Close-up (BCU)", description: "Enger als die Standard-Großaufnahme, nur das Gesicht von Kinn bis Stirn" },
15
+ "choker": { label: "Choker Shot", description: "Auf Kehle gerahmt, nur Kopf und Hals, intime Intensität" },
16
+ "italian-shot": { label: "Italian Shot / Trinity Shot", description: "Sergio-Leone-Western-Trope: ECU mit Beschnitt nur auf die Augen" },
17
+ "insert": { label: "Insert", description: "Detailaufnahme eines Objekts" },
18
+ "macro": { label: "Makro", description: "Extremes Nahdetail eines kleinen Motivs" },
19
+ "full-shot": { label: "Ganzkörper-Aufnahme", description: "Ganzer Körper von Kopf bis Fuß im Bild" },
20
+ "cowboy-shot": { label: "Cowboy Shot", description: "Ab Mitte Oberschenkel, klassische Western-Einstellung" },
21
+ "head-to-knees": { label: "Kopf bis Knie", description: "Vom Kopf bis zu den Knien" },
22
+ "head-to-hip": { label: "Kopf bis Hüfte", description: "Vom Kopf bis zur Hüftlinie" },
23
+ "half-body": { label: "Halbporträt", description: "Sauberes Porträt ab der Hüfte aufwärts" },
24
+ "eye-level": { label: "Augenhöhe", description: "Kamera auf Augenhöhe des Motivs" },
25
+ "high-angle": { label: "Aufsicht", description: "Kamera über dem Motiv, blickt nach unten" },
26
+ "low-angle": { label: "Untersicht", description: "Kamera unter dem Motiv, blickt nach oben" },
27
+ "overhead": { label: "Vogelperspektive", description: "Direkte Top-Down-Gottesperspektive" },
28
+ "worms-eye-angle": { label: "Froschperspektive", description: "Extremer Tiefblick vom Boden aus" },
29
+ "dutch-angle": { description: "Geneigter, schräger Horizont" },
30
+ "birds-eye": { label: "Vogelperspektive (Hoch)", description: "Hohe Luftaufnahme von oben" },
31
+ "slightly-downward": { label: "Leicht nach unten", description: "Sanfte Neigung von oben, Selfie-Stil" },
32
+ "single": { label: "Einzelaufnahme", description: "Saubere Aufnahme einer Person" },
33
+ "two-shot": { label: "Zweier-Aufnahme", description: "Beide Personen im Bild" },
34
+ "three-shot": { label: "Dreier-Aufnahme", description: "Drei Personen im Bild" },
35
+ "over-the-shoulder-framing": { label: "Über die Schulter", description: "An einer Schulter vorbei auf eine andere Person" },
36
+ "reverse-shot": { label: "Gegenschuss", description: "Entgegengesetzte Sichtweise zur vorherigen Aufnahme" },
37
+ "pov-framing": { label: "POV", description: "Durch die Augen des Motivs" },
38
+ "selfie-framing": { label: "Selfie", description: "Selbstporträt auf Armlänge" },
39
+ "mirror-selfie": { label: "Spiegelselfie", description: "Telefon sichtbar in einer Spiegelreflexion" },
40
+ "gym-mirror-selfie": { label: "Fitnessstudio-Spiegelselfie", description: "3/4-Seiten-Rückenansicht durch einen Fitnessstudio-Spiegel" },
41
+ "through-glass": { label: "Durch Glas", description: "Eingerahmt durch eine vordergründige Glasscheibe" },
42
+ "top-down-flat-lay": { label: "Top-Down Flat Lay", description: "Anordnung von Objekten auf einer Oberfläche von oben" },
43
+ "establishing-shot": { label: "Etablierende Einstellung", description: "Weite Umgebungsaufnahme, Motiv klein" },
44
+ "dirty-single": { label: "Dirty Single", description: "Einzelaufnahme mit anderer Person am Rand" },
45
+ "rule-of-thirds": { label: "Drittel-Regel", description: "Motiv auf Drittel-Schnittpunkt" },
46
+ "centered": { label: "Zentriert", description: "Motiv genau in der Mitte, symmetrisch" },
47
+ "headroom-tight": { label: "Knapper Kopfraum", description: "Motivkopf nahe oberem Bildrand" },
48
+ "negative-space": { label: "Negativer Raum", description: "Motiv versetzt mit leerem Raum" },
49
+ "leading-lines": { label: "Führungslinien", description: "Linien lenken den Blick zum Motiv" },
50
+ "3x3-grid-collage": { label: "3×3-Raster-Collage", description: "Motiv in einem 3×3-Raster aus Variationen" },
51
+ "diptych": { label: "Diptychon", description: "Zweiteilige nebeneinanderliegende Komposition" },
52
+ "triptych": { label: "Triptychon", description: "Dreiteilige Komposition" },
53
+ "multi-frame-mosaic": { label: "Mehrbild-Mosaik", description: "Gesicht aus einem Mosaik kleiner Kacheln aufgebaut" },
54
+ "contact-sheet": { label: "Kontaktbogen", description: "Foto-Kontaktbogen mit Miniaturen" },
55
+ "magazine-spread": { label: "Magazin-Doppelseite", description: "Zweiseitiges Magazinlayout mit Typografie" },
56
+ "cutaway-cross-section": { label: "Schnittbild / Querschnitt", description: "Architektonischer Querschnitt mit abgenommenen Wänden" },
57
+ "front-on": { label: "Frontal", description: "Motiv blickt zur Kamera" },
58
+ "three-quarter-front": { label: "Drei-Viertel-Front", description: "Leicht aus der Achse von vorn" },
59
+ "profile-left": { label: "Profil links", description: "Seitenansicht, links vom Motiv" },
60
+ "profile-right": { label: "Profil rechts", description: "Seitenansicht, rechts vom Motiv" },
61
+ "three-quarter-back": { label: "Drei-Viertel-Rücken", description: "Aus der Achse von hinten" },
62
+ "behind": { label: "Von hinten", description: "Direkte Rückansicht" },
63
+ "side-back-angle": { label: "Seiten-Rücken-Winkel", description: "3/4-Ansicht von hinten über eine Schulter" },
64
+ "golden-spiral": { label: "Goldene Spirale", description: "Komposition auf Fibonacci-Verhältnis-Spirale" },
65
+ "frame-within-frame": { label: "Rahmen im Rahmen", description: "Motiv eingerahmt durch ein inneres architektonisches Element" },
66
+ "s-curve": { label: "S-Kurve", description: "Geschwungener diagonaler Verlauf, der das Auge führt" },
67
+ "diagonal-composition": { label: "Diagonal", description: "Starke diagonale Linie quer durchs Bild" },
68
+ "triangular-composition": { label: "Triangulär", description: "Dreipunktige dreieckige Anordnung" },
69
+ "symmetrical-mirror": { label: "Symmetrisch / Spiegelung", description: "Exakte Links-Rechts-Symmetrie" },
70
+ "vignette-composition": { label: "Vignette", description: "Starke Randabdunklung fokussiert die Mitte" },
71
+ }
72
+
73
+ export default map
@@ -0,0 +1,78 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "extreme-wide-shot": { label: "Plano General Extremo", description: "Sujeto diminuto en un entorno vasto" },
5
+ "wide-shot": { label: "Plano General", description: "Cuerpo entero con entorno" },
6
+ "medium-wide-shot": { label: "Plano General Medio", description: "Sujeto desde las rodillas hacia arriba" },
7
+ "medium-shot": { label: "Plano Medio", description: "Sujeto desde la cintura hacia arriba" },
8
+ "medium-close-up": { label: "Primer Plano Medio", description: "Sujeto desde el pecho hacia arriba" },
9
+ "close-up": { label: "Primer Plano", description: "Rostro del sujeto llenando el cuadro" },
10
+ "extreme-close-up": { label: "Primerísimo Primer Plano", description: "Detalle ajustado de un rasgo del rostro" },
11
+ "ecu-eye": { label: "ECU: Ojo", description: "Primerísimo plano al estilo Sergio Leone, ajustado a un solo ojo" },
12
+ "ecu-mouth": { label: "ECU: Labios/Boca", description: "Primerísimo plano ajustado a la boca, los labios y los dientes" },
13
+ "ecu-hands": { label: "ECU: Manos", description: "Primerísimo plano ajustado a las manos" },
14
+ "big-close-up": { label: "Big Close-up (BCU)", description: "Más ajustado que el primer plano estándar, solo el rostro de la barbilla a la frente" },
15
+ "choker": { label: "Plano Choker", description: "Encuadrado en la garganta, solo cabeza y cuello, intensidad íntima" },
16
+ "italian-shot": { label: "Plano Italiano / Trinity", description: "Tropo del Western de Sergio Leone: ECU recortando solo a los ojos" },
17
+ "insert": { label: "Inserto", description: "Plano de detalle de un objeto" },
18
+ "macro": { label: "Macro", description: "Detalle extremamente cercano de un sujeto pequeño" },
19
+ "full-shot": { label: "Plano Entero", description: "Cuerpo entero de cabeza a pies en el cuadro" },
20
+ "cowboy-shot": { label: "Plano Vaquero", description: "Desde mitad del muslo hacia arriba, encuadre clásico del Oeste" },
21
+ "head-to-knees": { label: "De Cabeza a Rodillas", description: "Desde la cabeza hasta las rodillas" },
22
+ "head-to-hip": { label: "De Cabeza a Cadera", description: "Desde la cabeza hasta las caderas" },
23
+ "half-body": { label: "Medio Cuerpo", description: "Retrato limpio de cintura para arriba" },
24
+
25
+ "eye-level": { label: "Nivel de Ojos", description: "Cámara a la altura de los ojos del sujeto" },
26
+ "high-angle": { label: "Ángulo Alto", description: "Cámara sobre el sujeto mirando hacia abajo" },
27
+ "low-angle": { label: "Ángulo Bajo", description: "Cámara debajo del sujeto mirando hacia arriba" },
28
+ "overhead": { label: "Cenital", description: "Vista cenital directa de arriba abajo" },
29
+ "worms-eye-angle": { label: "Vista de Gusano", description: "Ángulo extremadamente bajo desde el suelo" },
30
+ "dutch-angle": { description: "Horizonte inclinado y ladeado" },
31
+ "birds-eye": { label: "Vista de Pájaro", description: "Vista aérea cenital" },
32
+ "slightly-downward": { label: "Ligeramente Hacia Abajo", description: "Inclinación suave desde arriba, estilo selfie" },
33
+
34
+ "single": { label: "Plano Individual", description: "Toma limpia de un solo sujeto" },
35
+ "two-shot": { label: "Plano de Dos", description: "Ambos sujetos en el cuadro" },
36
+ "three-shot": { label: "Plano de Tres", description: "Tres sujetos en el cuadro" },
37
+ "over-the-shoulder-framing": { label: "Sobre el Hombro", description: "Sobre el hombro de un sujeto hacia otro" },
38
+ "reverse-shot": { label: "Plano Reverso", description: "POV opuesto a la toma anterior" },
39
+ "pov-framing": { label: "POV", description: "A través de los ojos del sujeto" },
40
+ "selfie-framing": { label: "Selfie", description: "Autorretrato con brazo extendido" },
41
+ "mirror-selfie": { label: "Selfie en Espejo", description: "Teléfono visible en un reflejo de espejo" },
42
+ "gym-mirror-selfie": { label: "Selfie en Espejo de Gimnasio", description: "Ángulo 3/4 lateral-trasero a través de un espejo de gimnasio" },
43
+ "through-glass": { label: "A Través de Cristal", description: "Encuadrado a través de un cristal en primer plano" },
44
+ "top-down-flat-lay": { label: "Flat Lay Cenital", description: "Disposición cenital de objetos sobre una superficie" },
45
+ "establishing-shot": { label: "Plano de Establecimiento", description: "Plano amplio del entorno, sujeto pequeño" },
46
+ "dirty-single": { label: "Single Sucio", description: "Plano individual con otro personaje en el borde" },
47
+
48
+ "rule-of-thirds": { label: "Regla de los Tercios", description: "Sujeto en una intersección de tercios" },
49
+ "centered": { label: "Centrado", description: "Sujeto al centro, simétrico" },
50
+ "headroom-tight": { label: "Espacio Sobre Cabeza Ajustado", description: "Cabeza del sujeto cerca de la parte superior del cuadro" },
51
+ "negative-space": { label: "Espacio Negativo", description: "Sujeto desplazado con espacio vacío" },
52
+ "leading-lines": { label: "Líneas Guía", description: "Líneas dirigen la vista hacia el sujeto" },
53
+ "3x3-grid-collage": { label: "Collage en Cuadrícula 3×3", description: "Sujeto en una cuadrícula 3×3 de variaciones" },
54
+ "diptych": { label: "Díptico", description: "Composición de dos cuadros lado a lado" },
55
+ "triptych": { label: "Tríptico", description: "Composición de tres cuadros" },
56
+ "multi-frame-mosaic": { label: "Mosaico Multi-cuadro", description: "Rostro construido a partir de un mosaico de pequeñas teselas" },
57
+ "contact-sheet": { label: "Hoja de Contactos", description: "Hoja de contactos fotográfica con miniaturas" },
58
+ "magazine-spread": { label: "Doble Página de Revista", description: "Diseño de doble página de revista con tipografía" },
59
+ "cutaway-cross-section": { label: "Sección Transversal", description: "Sección arquitectónica con paredes peladas" },
60
+
61
+ "front-on": { label: "De Frente", description: "Sujeto mirando a la cámara" },
62
+ "three-quarter-front": { label: "Tres Cuartos Frontal", description: "Ligeramente fuera del eje desde el frente" },
63
+ "profile-left": { label: "Perfil Izquierdo", description: "Vista lateral, lado izquierdo del sujeto" },
64
+ "profile-right": { label: "Perfil Derecho", description: "Vista lateral, lado derecho del sujeto" },
65
+ "three-quarter-back": { label: "Tres Cuartos Trasero", description: "Fuera del eje desde atrás" },
66
+ "behind": { label: "Detrás", description: "Vista trasera directa" },
67
+ "side-back-angle": { label: "Ángulo Lateral-Trasero", description: "Vista 3/4 desde detrás de un hombro" },
68
+
69
+ "golden-spiral": { label: "Espiral Áurea", description: "Composición sobre la espiral de proporción Fibonacci" },
70
+ "frame-within-frame": { label: "Cuadro Dentro de Cuadro", description: "Sujeto enmarcado por un elemento arquitectónico interior" },
71
+ "s-curve": { label: "Curva en S", description: "Flujo diagonal sinuoso que guía la mirada" },
72
+ "diagonal-composition": { label: "Diagonal", description: "Línea diagonal fuerte cortando el cuadro" },
73
+ "triangular-composition": { label: "Triangular", description: "Disposición triangular de tres puntos" },
74
+ "symmetrical-mirror": { label: "Simétrica / Espejo", description: "Simetría exacta izquierda-derecha" },
75
+ "vignette-composition": { label: "Viñeta", description: "Oscurecimiento periférico fuerte que enfoca el centro" },
76
+ }
77
+
78
+ export default map
@@ -0,0 +1,78 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Shot size
5
+ "extreme-wide-shot": { label: "Plan d'ensemble extrême", description: "Sujet minuscule dans un environnement vaste" },
6
+ "wide-shot": { label: "Plan large", description: "Corps entier avec environnement" },
7
+ "medium-wide-shot": { label: "Plan moyen-large", description: "Sujet pris à partir des genoux" },
8
+ "medium-shot": { label: "Plan moyen", description: "Sujet pris à partir de la taille" },
9
+ "medium-close-up": { label: "Plan rapproché poitrine", description: "Sujet pris à partir de la poitrine" },
10
+ "close-up": { label: "Gros plan", description: "Visage du sujet remplissant le cadre" },
11
+ "extreme-close-up": { label: "Très gros plan", description: "Détail serré d'un trait du visage" },
12
+ "ecu-eye": { label: "ECU : Œil", description: "Très gros plan style Sergio Leone serré sur un seul œil" },
13
+ "ecu-mouth": { label: "ECU : Lèvres/Bouche", description: "Très gros plan serré sur la bouche, les lèvres et les dents" },
14
+ "ecu-hands": { label: "ECU : Mains", description: "Très gros plan serré sur les mains" },
15
+ "big-close-up": { label: "Big Close-up (BCU)", description: "Plus serré que le gros plan standard, juste le visage du menton au front" },
16
+ "choker": { label: "Plan choker", description: "Cadré sur la gorge, tête et cou uniquement, intensité intime" },
17
+ "italian-shot": { label: "Plan italien / Trinity Shot", description: "Trope du Western de Sergio Leone : ECU recadré sur les seuls yeux" },
18
+ "insert": { label: "Plan d'insert", description: "Plan de détail d'un objet" },
19
+ "macro": { description: "Détail extrêmement rapproché d'un petit sujet" },
20
+ "full-shot": { label: "Plan en pied", description: "Corps entier de la tête aux pieds dans le cadre" },
21
+ "cowboy-shot": { description: "Du milieu des cuisses, cadrage western classique" },
22
+ "head-to-knees": { label: "De la tête aux genoux", description: "De la tête jusqu'aux genoux" },
23
+ "head-to-hip": { label: "De la tête à la hanche", description: "De la tête jusqu'aux hanches" },
24
+ "half-body": { label: "Demi-corps", description: "Portrait propre à partir de la taille" },
25
+ // Angle
26
+ "eye-level": { label: "Hauteur des yeux", description: "Caméra à la hauteur des yeux du sujet" },
27
+ "high-angle": { label: "Plongée", description: "Caméra au-dessus du sujet regardant vers le bas" },
28
+ "low-angle": { label: "Contre-plongée", description: "Caméra sous le sujet regardant vers le haut" },
29
+ "overhead": { label: "Plan plongeant vertical", description: "Vue à la verticale plongeante directe" },
30
+ "worms-eye-angle": { label: "Vue de ver", description: "Contre-plongée extrême au ras du sol" },
31
+ "dutch-angle": { description: "Horizon incliné, cadre penché" },
32
+ "birds-eye": { label: "Vue d'oiseau", description: "Vue aérienne plongeante" },
33
+ "slightly-downward": { label: "Légèrement plongeant", description: "Inclinaison douce d'en haut, style selfie" },
34
+ // Coverage
35
+ "single": { label: "Plan individuel", description: "Plan propre d'un seul sujet" },
36
+ "two-shot": { label: "Plan à deux", description: "Les deux sujets dans le cadre" },
37
+ "three-shot": { label: "Plan à trois", description: "Trois sujets dans le cadre" },
38
+ "over-the-shoulder-framing": { label: "Par-dessus l'épaule", description: "Au-delà de l'épaule d'un sujet vers un autre" },
39
+ "reverse-shot": { label: "Champ-contrechamp", description: "POV opposé au plan précédent" },
40
+ "pov-framing": { label: "POV", description: "À travers les yeux du sujet" },
41
+ "selfie-framing": { label: "Selfie", description: "Autoportrait à bout de bras" },
42
+ "mirror-selfie": { label: "Selfie miroir", description: "Téléphone visible dans le reflet d'un miroir" },
43
+ "gym-mirror-selfie": { label: "Selfie miroir de salle de sport", description: "Angle 3/4 arrière à travers le miroir d'une salle" },
44
+ "through-glass": { label: "À travers une vitre", description: "Cadré à travers une vitre au premier plan" },
45
+ "top-down-flat-lay": { label: "Flat lay vue de dessus", description: "Disposition vue de dessus d'objets sur une surface" },
46
+ "establishing-shot": { label: "Plan d'établissement", description: "Plan environnemental large, sujet petit" },
47
+ "dirty-single": { description: "Plan individuel avec un autre personnage en bord de cadre" },
48
+ // Composition
49
+ "rule-of-thirds": { label: "Règle des tiers", description: "Sujet sur une intersection des tiers" },
50
+ "centered": { label: "Centré", description: "Sujet en plein centre, symétrique" },
51
+ "headroom-tight": { label: "Tête serrée en haut", description: "Tête du sujet près du haut du cadre" },
52
+ "negative-space": { label: "Espace négatif", description: "Sujet décalé avec espace vide" },
53
+ "leading-lines": { label: "Lignes directrices", description: "Lignes attirant l'œil vers le sujet" },
54
+ "3x3-grid-collage": { label: "Collage en grille 3×3", description: "Sujet dans une grille 3×3 de variations" },
55
+ "diptych": { label: "Diptyque", description: "Composition à deux cadres côte à côte" },
56
+ "triptych": { label: "Triptyque", description: "Composition à trois cadres" },
57
+ "multi-frame-mosaic": { label: "Mosaïque multi-cadres", description: "Visage construit à partir d'une mosaïque de petits carreaux" },
58
+ "contact-sheet": { label: "Planche-contact", description: "Planche-contact photo de vignettes" },
59
+ "magazine-spread": { label: "Double-page magazine", description: "Mise en page magazine sur deux pages avec typographie" },
60
+ "cutaway-cross-section": { label: "Coupe / Section transversale", description: "Coupe architecturale aux murs ouverts" },
61
+ // Vantage
62
+ "front-on": { label: "De face", description: "Sujet face à la caméra" },
63
+ "three-quarter-front": { label: "Trois-quarts face", description: "Légèrement décalé par rapport à la face" },
64
+ "profile-left": { label: "Profil gauche", description: "Vue de côté, gauche du sujet" },
65
+ "profile-right": { label: "Profil droit", description: "Vue de côté, droite du sujet" },
66
+ "three-quarter-back": { label: "Trois-quarts dos", description: "Décalé par rapport à l'arrière" },
67
+ "behind": { label: "Par derrière", description: "Vue arrière directe" },
68
+ "side-back-angle": { label: "Angle côté-arrière", description: "Vue 3/4 par-dessus une épaule" },
69
+ "golden-spiral": { label: "Spirale dorée", description: "Composition sur la spirale du nombre d'or" },
70
+ "frame-within-frame": { label: "Cadre dans le cadre", description: "Sujet encadré par un élément architectural intérieur" },
71
+ "s-curve": { label: "Courbe en S", description: "Flux diagonal sinueux guidant le regard" },
72
+ "diagonal-composition": { label: "Diagonale", description: "Forte ligne diagonale traversant le cadre" },
73
+ "triangular-composition": { label: "Triangulaire", description: "Disposition triangulaire à trois points" },
74
+ "symmetrical-mirror": { label: "Symétrique / Miroir", description: "Symétrie gauche-droite parfaite" },
75
+ "vignette-composition": { label: "Vignettage", description: "Fort assombrissement périphérique focalisant le centre" },
76
+ }
77
+
78
+ export default map
@@ -0,0 +1,77 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ "extreme-wide-shot": { label: "Extreme Wide Shot", description: "סובייקט קטן בסביבה ענקית" },
5
+ "wide-shot": { label: "Wide Shot", description: "כל הגוף עם הסביבה" },
6
+ "medium-wide-shot": { label: "Medium Wide", description: "סובייקט מהברכיים ומעלה" },
7
+ "medium-shot": { label: "Medium Shot", description: "סובייקט מהמותניים ומעלה" },
8
+ "medium-close-up": { label: "Medium Close-up", description: "סובייקט מהחזה ומעלה" },
9
+ "close-up": { label: "Close-up", description: "פני הסובייקט ממלאים את הפריים" },
10
+ "extreme-close-up": { label: "Extreme Close-up", description: "פרט הדוק של תווי פנים" },
11
+ "ecu-eye": { label: "ECU: עין", description: "Extreme close-up בסגנון Sergio Leone, הדוק על עין יחידה" },
12
+ "ecu-mouth": { label: "ECU: שפתיים/פה", description: "Extreme close-up הדוק על הפה, השפתיים והשיניים" },
13
+ "ecu-hands": { label: "ECU: ידיים", description: "Extreme close-up הדוק על הידיים" },
14
+ "big-close-up": { label: "Big Close-up (BCU)", description: "הדוק יותר מ-close-up רגיל, רק הפנים מהסנטר עד המצח" },
15
+ "choker": { label: "Choker Shot", description: "ממוסגר על הצוואר, רק ראש וצוואר, עוצמה אינטימית" },
16
+ "italian-shot": { label: "Italian Shot / Trinity Shot", description: "טרופ Western של Sergio Leone: ECU עם crop רק על העיניים" },
17
+ "insert": { label: "Insert", description: "צילום פרט של עצם" },
18
+ "macro": { label: "Macro", description: "פרט קרוב קיצוני של סובייקט קטן" },
19
+ "full-shot": { label: "Full Shot", description: "כל הגוף מראש עד רגליים בפריים" },
20
+ "cowboy-shot": { label: "Cowboy Shot", description: "מאמצע הירך ומעלה, מסגור Western קלאסי" },
21
+ "head-to-knees": { label: "ראש עד ברכיים", description: "מהראש למטה עד הברכיים" },
22
+ "head-to-hip": { label: "ראש עד מותן", description: "מהראש למטה עד המותניים" },
23
+ "half-body": { label: "חצי גוף", description: "פורטרט נקי מהמותניים ומעלה" },
24
+
25
+ "eye-level": { label: "גובה עיניים", description: "מצלמה בגובה עיני הסובייקט" },
26
+ "high-angle": { label: "זווית גבוהה", description: "מצלמה מעל הסובייקט מסתכלת למטה" },
27
+ "low-angle": { label: "זווית נמוכה", description: "מצלמה מתחת לסובייקט מסתכלת למעלה" },
28
+ "overhead": { label: "מעל הראש", description: "מבט אלוהי מלמעלה ישירות" },
29
+ "worms-eye-angle": { label: "מבט תולעת", description: "זווית נמוכה קיצונית מהקרקע" },
30
+ "dutch-angle": { label: "Dutch Angle", description: "אופק מוטה" },
31
+ "birds-eye": { label: "מבט ציפור", description: "מבט אווירי גבוה מלמעלה" },
32
+ "slightly-downward": { label: "מעט כלפי מטה", description: "הטיה עדינה מלמעלה, סטייל סלפי" },
33
+
34
+ "single": { label: "Single", description: "צילום נקי של סובייקט אחד" },
35
+ "two-shot": { label: "Two-Shot", description: "שני סובייקטים בפריים" },
36
+ "three-shot": { label: "Three-Shot", description: "שלושה סובייקטים בפריים" },
37
+ "over-the-shoulder-framing": { label: "מעל הכתף", description: "מעבר לכתף של אחד אל השני" },
38
+ "reverse-shot": { label: "Reverse Shot", description: "POV הפוך לצילום הקודם" },
39
+ "pov-framing": { label: "POV", description: "דרך עיני הסובייקט" },
40
+ "selfie-framing": { label: "סלפי", description: "פורטרט עצמי בטווח זרוע" },
41
+ "mirror-selfie": { label: "סלפי במראה", description: "טלפון נראה בהשתקפות מראה" },
42
+ "gym-mirror-selfie": { label: "סלפי במראה של חדר כושר", description: "זווית 3/4 צד-אחור דרך מראת חדר כושר" },
43
+ "through-glass": { label: "דרך זכוכית", description: "ממוסגר דרך לוח זכוכית בקדמה" },
44
+ "top-down-flat-lay": { label: "Top-down Flat Lay", description: "סידור מלמעלה של פריטים על משטח" },
45
+ "establishing-shot": { label: "Establishing Shot", description: "צילום סביבתי רחב, סובייקט קטן" },
46
+ "dirty-single": { label: "Dirty Single", description: "Single עם דמות נוספת בקצה" },
47
+
48
+ "rule-of-thirds": { label: "כלל השלישים", description: "סובייקט בנקודת הצטלבות של שלישים" },
49
+ "centered": { label: "במרכז", description: "סובייקט במרכז המוחלט, סימטרי" },
50
+ "headroom-tight": { label: "Headroom הדוק", description: "ראש הסובייקט קרוב לחלק העליון של הפריים" },
51
+ "negative-space": { label: "Negative Space", description: "סובייקט בצד עם מרחב ריק" },
52
+ "leading-lines": { label: "Leading Lines", description: "קווים מובילים את העין לסובייקט" },
53
+ "3x3-grid-collage": { label: "קולאז' רשת 3×3", description: "סובייקט ברשת 3×3 של וריאציות" },
54
+ "diptych": { label: "Diptych", description: "הרכב דו-פריימי זה לצד זה" },
55
+ "triptych": { label: "Triptych", description: "הרכב תלת-פריימי" },
56
+ "multi-frame-mosaic": { label: "פסיפס רב-פריימי", description: "פנים בנויות מפסיפס של אריחים קטנים" },
57
+ "contact-sheet": { label: "Contact Sheet", description: "Contact Sheet של תמונות מצומצמות" },
58
+ "magazine-spread": { label: "Magazine Spread", description: "Layout של מגזין דו-עמודי עם טיפוגרפיה" },
59
+ "cutaway-cross-section": { label: "Cutaway / Cross-Section", description: "חתך אדריכלי עם קירות מקולפים" },
60
+
61
+ "front-on": { label: "Front-on", description: "סובייקט פונה למצלמה" },
62
+ "three-quarter-front": { label: "Three-Quarter Front", description: "מעט מחוץ לציר מהקדמה" },
63
+ "profile-left": { label: "פרופיל שמאל", description: "מבט צד, שמאל הסובייקט" },
64
+ "profile-right": { label: "פרופיל ימין", description: "מבט צד, ימין הסובייקט" },
65
+ "three-quarter-back": { label: "Three-Quarter Back", description: "מחוץ לציר מאחור" },
66
+ "behind": { label: "מאחור", description: "מבט אחורי ישיר" },
67
+ "side-back-angle": { label: "זווית צד-אחור", description: "מבט 3/4 מאחורי כתף אחת" },
68
+ "golden-spiral": { label: "ספירלת הזהב", description: "הרכב על ספירלת יחס Fibonacci" },
69
+ "frame-within-frame": { label: "מסגרת בתוך מסגרת", description: "סובייקט ממוסגר על ידי אלמנט אדריכלי פנימי" },
70
+ "s-curve": { label: "עקומת S", description: "זרימה אלכסונית מתפתלת מנחה את העין" },
71
+ "diagonal-composition": { label: "אלכסוני", description: "קו אלכסוני חזק חוצה את הפריים" },
72
+ "triangular-composition": { label: "משולשי", description: "סידור משולשי תלת-נקודתי" },
73
+ "symmetrical-mirror": { label: "סימטרי / מראה", description: "סימטריה מדויקת בין שמאל לימין" },
74
+ "vignette-composition": { label: "ויניטה", description: "החשכה היקפית כבדה ממקדת את המרכז" },
75
+ }
76
+
77
+ export default map