@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,84 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "Lever de soleil", description: "Soleil chaud bas, longues ombres" },
6
+ "golden-hour": { label: "Heure dorée", description: "Lueur chaude de coucher de soleil" },
7
+ "noon": { label: "Midi", description: "Soleil zénithal dur de midi" },
8
+ "harsh-midday": { label: "Midi cru", description: "Zénith blanc soleil délavé" },
9
+ "overcast": { label: "Couvert", description: "Lumière du jour douce diffusée" },
10
+ "blue-hour": { label: "Heure bleue", description: "Crépuscule froid au coucher" },
11
+ "twilight": { label: "Crépuscule", description: "Entre l'heure bleue et la nuit" },
12
+ "night": { label: "Nuit", description: "Nuit profonde, ambiance basse" },
13
+ "moonlight": { label: "Clair de lune", description: "Scène froide bleue éclairée par la lune" },
14
+ "neon-night": { label: "Nuit néon", description: "Nuit citadine néon saturée" },
15
+ // Style
16
+ "three-point": { label: "Trois points", description: "Classique key + fill + back" },
17
+ "rembrandt": { description: "Triangle de lumière sur la joue" },
18
+ "chiaroscuro": { description: "Fort contraste lumière/ombre" },
19
+ "silhouette": { label: "Silhouette", description: "Sujet en pure forme" },
20
+ "high-key": { description: "Clair, faible contraste" },
21
+ "low-key": { description: "Sombre, fort contraste" },
22
+ "split": { label: "Latérale", description: "Visage moitié éclairé moitié dans l'ombre" },
23
+ "hard": { label: "Dure", description: "Ombres aux contours tranchants" },
24
+ "soft": { label: "Douce", description: "Lumière diffusée et douce" },
25
+ "practical": { label: "Sources visibles", description: "Lumières visibles dans la scène" },
26
+ "ring-light": { description: "Catchlight beauté/vlog" },
27
+ "phone-screen-glow": { label: "Lueur d'écran de téléphone", description: "Sous-éclairage froid d'écran" },
28
+ "selfie-natural": { label: "Selfie naturel", description: "Selfie à la lumière de fenêtre" },
29
+ "natural": { label: "Naturelle", description: "Lumière ambiante disponible" },
30
+ "volumetric": { label: "Volumétrique", description: "Faisceaux de lumière visibles dans la brume" },
31
+ "noir": { label: "Noir", description: "Film noir N&B à fort contraste" },
32
+ "on-camera-flash": { label: "Flash sur appareil", description: "Flash direct paparazzi/iPhone" },
33
+ "mirror-bounce-flash": { label: "Flash rebond miroir", description: "Rebond de flash dans selfie miroir" },
34
+ "bounced-flash": { label: "Flash rebondi", description: "Doux remplissage rebond plafond" },
35
+ "softbox-key": { label: "Key softbox", description: "Grande key mode diffusée" },
36
+ "beauty-dish": { description: "Lumière hero, chute nette" },
37
+ "gridded-snoot": { label: "Snoot grillé", description: "Petit faisceau de lumière focalisé" },
38
+ "silk-diffusion": { label: "Diffusion en soie", description: "Key douce adoucie en soie" },
39
+ "kicker-rim": { label: "Kicker / Accent rim", description: "Accent latéral bas de séparation" },
40
+ "candlelight": { label: "Lumière de bougie", description: "Lumière de feu chaude vacillante" },
41
+ "edison-tungsten": { label: "Tungstène Edison", description: "Lueur chaleureuse d'ampoule globe" },
42
+ "dappled-light": { label: "Lumière tachetée / filtrée par les feuilles", description: "Lumière mouchetée à travers le feuillage" },
43
+ "raking-sidelight": { label: "Lumière latérale rasante", description: "Latérale extrême basse, texture" },
44
+ "stage-spotlight": { label: "Projecteur de scène", description: "Projecteur dur en plongée unique" },
45
+ "underwater-caustics": { label: "Caustiques sous-marines", description: "Motifs ondulés réfractés" },
46
+ "bioluminescence": { description: "Lueur biologique froide et étrange" },
47
+ // Direction
48
+ "front": { label: "Face", description: "Lumière depuis l'axe de la caméra" },
49
+ "three-quarter": { label: "Lumière 3/4", description: "Angle key portrait classique" },
50
+ "side": { label: "Latérale", description: "Lumière depuis un côté" },
51
+ "back-rim": { label: "Contre-jour / Rim", description: "Contre-jour autour du sujet" },
52
+ "silhouette-backlight": { label: "Contre-jour silhouette", description: "Halo lumineux, sujet sombre" },
53
+ "top-overhead": { label: "Au-dessus / Plongée", description: "Lumière directement au-dessus" },
54
+ "under-uplight": { label: "Sous / Contre-plongée", description: "Lumière depuis le bas" },
55
+ "window": { label: "Fenêtre", description: "Lumière latérale douce de fenêtre" },
56
+ // Lighting ratio (technical units kept)
57
+ "ratio-1-1": { description: "Plat, aucun contraste d'ombre" },
58
+ "ratio-1-2": { description: "Doux fall-off d'un diaph" },
59
+ "ratio-1-3": { description: "Contraste modéré de deux diaphs" },
60
+ "ratio-1-4": { description: "Fort contraste éditorial" },
61
+ "ratio-1-8": { description: "Chiaroscuro low-key extrême" },
62
+ "ratio-1-16": { description: "Fall-off film-noir source unique" },
63
+ // Color temperature (technical units kept)
64
+ "temp-2700k": { label: "2700K Bougie", description: "Ambre profond bougie/tungstène" },
65
+ "temp-3200k": { label: "3200K Tungstène", description: "Intérieur jaune chaud" },
66
+ "temp-4000k": { label: "4000K Mixte", description: "Blanc neutre" },
67
+ "temp-5600k": { label: "5600K Lumière du jour", description: "Soleil de midi équilibré lumière du jour" },
68
+ "temp-6500k": { label: "6500K Couvert", description: "Légère teinte bleue froide" },
69
+ "temp-9000k": { label: "9000K Ombre", description: "Ombre bleue franchement froide" },
70
+ "butterfly": { label: "Lumière papillon", description: "Lumière en plongée projetant une ombre papillon sous le nez" },
71
+ "loop": { label: "Lumière loop", description: "Légère latérale + plongée projetant une petite boucle d'ombre sur la joue" },
72
+ "broad": { label: "Lumière broad", description: "Côté éclairé tourné vers la caméra, visage à l'air plus large" },
73
+ "short": { label: "Lumière short", description: "Côté éclairé opposé à la caméra, effet amincissant" },
74
+ "hatchet": { label: "Lumière hatchet", description: "Effleurement zénithal, ombre profonde du côté opposé" },
75
+ "clamshell": { label: "Lumière clamshell", description: "Plongée + réflecteur en dessous, beauté en sandwich" },
76
+ // Location-studio extension (PR #2505 follow-up)
77
+ "dawn": { label: "Aube", description: "Lueur pâle avant le lever du soleil" },
78
+ "morning": { label: "Matin", description: "Lumière matinale fraîche et brillante" },
79
+ "afternoon": { label: "Après-midi", description: "Chaude lueur de fin d'après-midi" },
80
+ "dusk": { label: "Crépuscule du soir", description: "Lumière fanée après le coucher du soleil" },
81
+ "midnight": { label: "Minuit", description: "Nuit profonde, ciel presque noir" },
82
+ }
83
+
84
+ export default map
@@ -0,0 +1,88 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "זריחה", description: "שמש נמוכה חמה, צללים ארוכים" },
6
+ "golden-hour": { label: "Golden Hour", description: "זוהר חם של שקיעה" },
7
+ "noon": { label: "צהריים", description: "שמש צהריים חזקה מלמעלה" },
8
+ "harsh-midday": { label: "צהריים חזקים", description: "זנית של שמש לבנה מולבנת" },
9
+ "overcast": { label: "מעונן", description: "אור יום רך מפוזר" },
10
+ "blue-hour": { label: "Blue Hour", description: "דמדומים קרים של בין הערביים" },
11
+ "twilight": { label: "דמדומים", description: "בין Blue Hour ללילה מלא" },
12
+ "night": { label: "לילה", description: "לילה עמוק, אור סביבתי נמוך" },
13
+ "moonlight": { label: "אור ירח", description: "סצנה מוארת בכחול ירח קר" },
14
+ "neon-night": { label: "לילה ניאון", description: "ליל עיר ניאון רווי" },
15
+
16
+ // Style
17
+ "three-point": { label: "שלוש נקודות", description: "Key + fill + back קלאסי" },
18
+ "rembrandt": { label: "Rembrandt", description: "משולש של אור על הלחי" },
19
+ "chiaroscuro": { label: "chiaroscuro", description: "קונטרסט חזק בין אור לחושך" },
20
+ "silhouette": { label: "צללית", description: "סובייקט כצורה טהורה" },
21
+ "high-key": { label: "High-Key", description: "בהיר, קונטרסט נמוך" },
22
+ "low-key": { label: "Low-Key", description: "כהה, קונטרסט גבוה" },
23
+ "split": { label: "Split", description: "פנים מוארים-לחצי, מוצלים-לחצי" },
24
+ "hard": { label: "קשה", description: "צללים עם קצוות חדים" },
25
+ "soft": { label: "רך", description: "אור עדין מפוזר" },
26
+ "practical": { label: "מעשי", description: "אורות נראים בתוך הסצנה" },
27
+ "ring-light": { label: "Ring Light", description: "Catchlight של ring beauty/vlog" },
28
+ "phone-screen-glow": { label: "זוהר מסך טלפון", description: "תאורה תחתונה קרה ממסך" },
29
+ "selfie-natural": { label: "סלפי טבעי", description: "סלפי באור חלון" },
30
+ "natural": { label: "טבעי", description: "אור סביבה זמין" },
31
+ "volumetric": { label: "Volumetric", description: "קרני אור נראות באובך" },
32
+ "noir": { label: "Noir", description: "Film noir שחור-לבן בקונטרסט גבוה" },
33
+ "on-camera-flash": { label: "פלאש על המצלמה", description: "פלאש ישיר של פפראצי/iPhone" },
34
+ "mirror-bounce-flash": { label: "פלאש קפיצת מראה", description: "Bounce של פלאש בסלפי במראה" },
35
+ "bounced-flash": { label: "פלאש מוקפץ", description: "Fill רך מוקפץ מהתקרה" },
36
+ "softbox-key": { label: "Softbox Key", description: "Key אופנה רחב מפוזר" },
37
+ "beauty-dish": { label: "Beauty Dish", description: "אור גיבור, נפילה חדה" },
38
+ "gridded-snoot": { label: "Snoot מורם", description: "בריכת אור הדוקה ממוקדת" },
39
+ "silk-diffusion": { label: "פיזור משי", description: "Key רך עדין מפוזר במשי" },
40
+ "kicker-rim": { label: "Kicker / Rim Accent", description: "מפריד מבטא צד-נמוך" },
41
+ "candlelight": { label: "אור נר", description: "זוהר אש מהבהב חמים" },
42
+ "edison-tungsten": { label: "Edison Tungsten", description: "זוהר נורת גלובוס חמים נעים" },
43
+ "dappled-light": { label: "אור עלוותי", description: "אור עלים מנוקד" },
44
+ "raking-sidelight": { label: "Sidelight גורף", description: "צד נמוך קיצוני, טקסטורה" },
45
+ "stage-spotlight": { label: "זרקור במה", description: "זרקור קשה יחיד מלמעלה" },
46
+ "underwater-caustics": { label: "Caustics תת-מימיים", description: "דפוסים מרוצדים נשברים" },
47
+ "bioluminescence": { label: "ביו-לומינסנציה", description: "זוהר ביולוגי קר ומצמרר" },
48
+
49
+ // Direction
50
+ "front": { label: "חזית", description: "אור מכיוון המצלמה" },
51
+ "three-quarter": { label: "אור 3/4", description: "זווית key פורטרט קלאסית" },
52
+ "side": { label: "צד", description: "אור מצד אחד" },
53
+ "back-rim": { label: "Back / Rim", description: "תאורה אחורית סביב הסובייקט" },
54
+ "silhouette-backlight": { label: "תאורת צללית מאחור", description: "הילה בהירה, סובייקט כהה" },
55
+ "top-overhead": { label: "Top / Overhead", description: "אור ישירות מלמעלה" },
56
+ "under-uplight": { label: "מתחת / Uplight", description: "אור מלמטה" },
57
+ "window": { label: "חלון", description: "Sidelight רך מחלון" },
58
+
59
+ // Lighting ratio
60
+ "ratio-1-1": { description: "שטוח, ללא קונטרסט צללים" },
61
+ "ratio-1-2": { description: "נפילה רכה של צעד אחד" },
62
+ "ratio-1-3": { description: "קונטרסט מתון של שני צעדים" },
63
+ "ratio-1-4": { description: "קונטרסט אדיטוריאלי חזק" },
64
+ "ratio-1-8": { description: "Chiaroscuro Low-key קיצוני" },
65
+ "ratio-1-16": { description: "נפילה Film-noir ממקור יחיד" },
66
+
67
+ // Color temperature
68
+ "temp-2700k": { label: "2700K נר", description: "ענבר עמוק של נר/טונגסטן" },
69
+ "temp-3200k": { label: "3200K טונגסטן", description: "פנים חמים בצהוב" },
70
+ "temp-4000k": { label: "4000K מעורב", description: "לבן נייטרלי" },
71
+ "temp-5600k": { label: "5600K אור יום", description: "שמש צהריים מאוזנת לאור יום" },
72
+ "temp-6500k": { label: "6500K מעונן", description: "גוון כחול מעט קר" },
73
+ "temp-9000k": { label: "9000K צל", description: "צל כחול קר במובהק" },
74
+ "butterfly": { label: "Butterfly", description: "אור מלמעלה מטיל צל פרפר מתחת לאף" },
75
+ "loop": { label: "Loop", description: "מעט מהצד ומלמעלה מטיל לולאה קטנה על הלחי" },
76
+ "broad": { label: "Broad", description: "הצד המואר פונה למצלמה, מראה רחב יותר של הפנים" },
77
+ "short": { label: "Short", description: "הצד המואר פונה הרחק מהמצלמה, מצמצם" },
78
+ "hatchet": { label: "Hatchet", description: "Skim עליון, צל עמוק בצד הנגדי" },
79
+ "clamshell": { label: "Clamshell", description: "מלמעלה + רפלקטור מלמטה, ביוטי כריך" },
80
+ // Location-studio extension (PR #2505 follow-up)
81
+ "dawn": { label: "שחר", description: "זוהר חיוור לפני זריחת השמש" },
82
+ "morning": { label: "בוקר", description: "אור בוקר טרי ובהיר" },
83
+ "afternoon": { label: "אחר הצהריים", description: "זוהר חם של אחר הצהריים המאוחר" },
84
+ "dusk": { label: "בין הערביים", description: "אור דועך אחרי השקיעה" },
85
+ "midnight": { label: "חצות", description: "הלילה העמוק ביותר, שמיים כמעט שחורים" },
86
+ }
87
+
88
+ export default map
@@ -0,0 +1,90 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "सूर्योदय", description: "गर्म नीचा सूरज, लंबी छायाएँ" },
6
+ "golden-hour": { label: "Golden Hour", description: "गर्म sunset glow" },
7
+ "noon": { label: "दोपहर", description: "तीखा ऊपर का दोपहर का सूरज" },
8
+ "harsh-midday": { label: "तीखी दोपहर", description: "Bleached सफ़ेद-सूरज zenith" },
9
+ "overcast": { label: "बादल भरा", description: "नरम विसरित दिन की रोशनी" },
10
+ "blue-hour": { label: "Blue Hour", description: "ठंडी शाम की twilight" },
11
+ "twilight": { label: "Twilight", description: "Blue hour और रात के बीच" },
12
+ "night": { label: "रात", description: "गहरी रात, कम ambient" },
13
+ "moonlight": { label: "चाँदनी", description: "ठंडा नीला चाँदनी से भरा scene" },
14
+ "neon-night": { label: "Neon रात", description: "संतृप्त neon city की रात" },
15
+
16
+ // Style
17
+ "three-point": { label: "Three-Point", description: "क्लासिक key + fill + back" },
18
+ "rembrandt": { label: "Rembrandt", description: "गाल पर रोशनी का त्रिकोण" },
19
+ "chiaroscuro": { label: "Chiaroscuro", description: "मज़बूत light/dark contrast" },
20
+ "silhouette": { label: "Silhouette", description: "Subject केवल आकार के रूप में" },
21
+ "high-key": { label: "High-Key", description: "उज्ज्वल, low-contrast" },
22
+ "low-key": { label: "Low-Key", description: "गहरा, high-contrast" },
23
+ "split": { label: "Split", description: "आधा-रोशन आधा-छाया चेहरा" },
24
+ "hard": { label: "Hard", description: "तीखी-धार वाली छायाएँ" },
25
+ "soft": { label: "Soft", description: "विसरित कोमल रोशनी" },
26
+ "practical": { label: "Practical", description: "Scene में दिखाई देती रोशनियाँ" },
27
+ // Modern social-video
28
+ "ring-light": { label: "Ring Light", description: "Beauty/vlog ring catchlight" },
29
+ "phone-screen-glow": { label: "Phone Screen Glow", description: "ठंडा screen underlight" },
30
+ "selfie-natural": { label: "Selfie Natural", description: "खिड़की की रोशनी वाला selfie" },
31
+ "natural": { label: "Natural", description: "उपलब्ध ambient रोशनी" },
32
+ "volumetric": { label: "Volumetric", description: "धुंध में दिखाई देती light beams" },
33
+ "noir": { label: "Noir", description: "High-contrast B&W film noir" },
34
+ // Flash & camera-flash
35
+ "on-camera-flash": { label: "On-Camera Flash", description: "Paparazzi/iPhone direct flash" },
36
+ "mirror-bounce-flash": { label: "Mirror-Bounce Flash", description: "Mirror-selfie flash bounce" },
37
+ "bounced-flash": { label: "Bounced Flash", description: "नरम छत-bounce वाली fill" },
38
+ "softbox-key": { label: "Softbox Key", description: "बड़ी विसरित fashion key" },
39
+ "beauty-dish": { label: "Beauty Dish", description: "Hero light, साफ़ falloff" },
40
+ "gridded-snoot": { label: "Gridded Snoot", description: "तंग केंद्रित रोशनी का pool" },
41
+ "silk-diffusion": { label: "Silk Diffusion", description: "Silk-softened कोमल key" },
42
+ "kicker-rim": { label: "Kicker / Rim Accent", description: "नीचे-side accent separator" },
43
+ "candlelight": { label: "मोमबत्ती की रोशनी", description: "गर्म टिमटिमाती आग की रोशनी" },
44
+ "edison-tungsten": { label: "Edison Tungsten", description: "Cozy गर्म globe-bulb glow" },
45
+ "dappled-light": { label: "Dappled / Leaf-Filtered", description: "धब्बेदार पत्तियों से छनी रोशनी" },
46
+ "raking-sidelight": { label: "Raking Sidelight", description: "अत्यधिक नीची side, texture" },
47
+ "stage-spotlight": { label: "Stage Spotlight", description: "एक तीखी ऊपर की spot" },
48
+ "underwater-caustics": { label: "Underwater Caustics", description: "लहराते अपवर्तित patterns" },
49
+ "bioluminescence": { label: "Bioluminescence", description: "ठंडी eerie जैविक चमक" },
50
+
51
+ // Direction
52
+ "front": { label: "सामने", description: "Camera की दिशा से रोशनी" },
53
+ "three-quarter": { label: "3/4 Light", description: "क्लासिक portrait key angle" },
54
+ "side": { label: "Side", description: "एक side से रोशनी" },
55
+ "back-rim": { label: "Back / Rim", description: "Subject के चारों ओर backlight rim" },
56
+ "silhouette-backlight": { label: "Silhouette Backlight", description: "उज्ज्वल halo, गहरा subject" },
57
+ "top-overhead": { label: "Top / Overhead", description: "सीधा ऊपर से रोशनी" },
58
+ "under-uplight": { label: "Under / Uplight", description: "नीचे से रोशनी" },
59
+ "window": { label: "खिड़की", description: "खिड़की से नरम sidelight" },
60
+
61
+ // Lighting ratio
62
+ "ratio-1-1": { description: "Flat, कोई shadow contrast नहीं" },
63
+ "ratio-1-2": { description: "नरम एक-stop falloff" },
64
+ "ratio-1-3": { description: "मध्यम दो-stop contrast" },
65
+ "ratio-1-4": { description: "मज़बूत editorial contrast" },
66
+ "ratio-1-8": { description: "अत्यधिक low-key chiaroscuro" },
67
+ "ratio-1-16": { description: "एकल-source film-noir falloff" },
68
+
69
+ // Color temperature
70
+ "temp-2700k": { description: "गहरा amber मोमबत्ती/tungsten" },
71
+ "temp-3200k": { description: "गर्म पीला अंदरूनी" },
72
+ "temp-4000k": { description: "तटस्थ सफ़ेद" },
73
+ "temp-5600k": { description: "Daylight-संतुलित दोपहर का सूरज" },
74
+ "temp-6500k": { description: "थोड़ा ठंडा नीला cast" },
75
+ "temp-9000k": { description: "स्पष्ट रूप से ठंडी नीली छाँव" },
76
+ "butterfly": { label: "Butterfly Lighting", description: "ऊपर से रोशनी नाक के नीचे butterfly छाया डालती है" },
77
+ "loop": { label: "Loop Lighting", description: "थोड़ा side+ऊपर गाल पर छोटा loop डालता है" },
78
+ "broad": { label: "Broad Lighting", description: "Camera की ओर रोशन side, चौड़ा चेहरा look" },
79
+ "short": { label: "Short Lighting", description: "Camera से दूर रोशन side, slimming" },
80
+ "hatchet": { label: "Hatchet Lighting", description: "ऊपर से skim, विपरीत side पर गहरी छाया" },
81
+ "clamshell": { label: "Clamshell Lighting", description: "ऊपर + नीचे reflector, sandwiched beauty" },
82
+ // Location-studio extension (PR #2505 follow-up)
83
+ "dawn": { label: "उषाकाल", description: "सूर्योदय से पहले की पीली रोशनी" },
84
+ "morning": { label: "सुबह", description: "ताज़ी चमकदार सुबह की रोशनी" },
85
+ "afternoon": { label: "दोपहर बाद", description: "देर दोपहर की गर्म चमक" },
86
+ "dusk": { label: "गोधूलि", description: "सूर्यास्त के बाद की मद्धम रोशनी" },
87
+ "midnight": { label: "मध्यरात्रि", description: "गहरी रात, लगभग काला आकाश" },
88
+ }
89
+
90
+ export default map
@@ -0,0 +1,90 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "日の出", description: "暖かな低い太陽、長い影" },
6
+ "golden-hour": { label: "ゴールデンアワー", description: "夕暮れの暖かな輝き" },
7
+ "noon": { label: "正午", description: "頭上からの厳しい真昼の太陽" },
8
+ "harsh-midday": { label: "厳しい真昼", description: "白い太陽が真上にある真昼" },
9
+ "overcast": { label: "曇天", description: "柔らかく拡散した昼光" },
10
+ "blue-hour": { label: "ブルーアワー", description: "クールな夕方のトワイライト" },
11
+ "twilight": { label: "トワイライト", description: "ブルーアワーと夜の間" },
12
+ "night": { label: "夜", description: "深い夜、低いアンビエント" },
13
+ "moonlight": { label: "月明かり", description: "クールな青の月光のシーン" },
14
+ "neon-night": { label: "ネオンナイト", description: "彩度の高いネオンの都会の夜" },
15
+
16
+ // Style
17
+ "three-point": { label: "三点照明", description: "クラシックなキー+フィル+バック" },
18
+ "rembrandt": { label: "レンブラント", description: "頬に三角形の光" },
19
+ "chiaroscuro": { description: "強い明暗のコントラスト" },
20
+ "silhouette": { label: "シルエット", description: "純粋な形状としての被写体" },
21
+ "high-key": { label: "ハイキー", description: "明るく低コントラスト" },
22
+ "low-key": { label: "ローキー", description: "暗く高コントラスト" },
23
+ "split": { label: "スプリット照明", description: "顔の半分が照らされ半分が影" },
24
+ "hard": { label: "ハード", description: "鋭い縁の影" },
25
+ "soft": { label: "ソフト", description: "拡散した穏やかな光" },
26
+ "practical": { label: "プラクティカル", description: "シーン内の見える光源" },
27
+ "ring-light": { label: "リングライト", description: "ビューティ/ヴログのリング状キャッチライト" },
28
+ "phone-screen-glow": { label: "スマホ画面の光", description: "クールな画面のアンダーライト" },
29
+ "selfie-natural": { label: "自然光の自撮り", description: "窓の光を使った自撮り" },
30
+ "natural": { label: "自然光", description: "利用可能なアンビエント光" },
31
+ "volumetric": { label: "ヴォリュメトリック", description: "霞の中で目に見える光線" },
32
+ "noir": { description: "高コントラストの白黒フィルム・ノワール" },
33
+ "on-camera-flash": { label: "オンカメラ・フラッシュ", description: "パパラッチ/iPhoneの直接フラッシュ" },
34
+ "mirror-bounce-flash": { label: "ミラーバウンス・フラッシュ", description: "鏡自撮りのフラッシュ反射" },
35
+ "bounced-flash": { label: "バウンスフラッシュ", description: "天井反射の柔らかなフィル" },
36
+ "softbox-key": { label: "ソフトボックス・キー", description: "大きく拡散したファッション系のキーライト" },
37
+ "beauty-dish": { label: "ビューティーディッシュ", description: "ヒーローライト、シャープな減光" },
38
+ "gridded-snoot": { label: "グリッドスヌート", description: "タイトに集中した光のプール" },
39
+ "silk-diffusion": { label: "シルクディフュージョン", description: "シルクで柔らかく和らげたキー" },
40
+ "kicker-rim": { label: "キッカー/リムアクセント", description: "低い側面のアクセントによる分離" },
41
+ "candlelight": { label: "ろうそくの光", description: "暖かく揺らめく炎の明かり" },
42
+ "edison-tungsten": { label: "エジソン・タングステン", description: "落ち着いた暖かいグローブ電球の光" },
43
+ "dappled-light": { label: "木漏れ日/葉のフィルター", description: "木の葉を通した斑模様の光" },
44
+ "raking-sidelight": { label: "レーキング・サイドライト", description: "極端な低い側面、質感を引き出す" },
45
+ "stage-spotlight": { label: "ステージ・スポットライト", description: "上からの単一のハードスポット" },
46
+ "underwater-caustics": { label: "水中コースティクス", description: "波紋状に屈折したパターン" },
47
+ "bioluminescence": { label: "生物発光", description: "クールで不気味な生物的な輝き" },
48
+
49
+ // Direction
50
+ "front": { label: "正面", description: "カメラ方向からの光" },
51
+ "three-quarter": { label: "3/4ライト", description: "クラシックなポートレートのキー角度" },
52
+ "side": { label: "サイド", description: "片側からの光" },
53
+ "back-rim": { label: "バック/リム", description: "被写体の周囲にリムを作る逆光" },
54
+ "silhouette-backlight": { label: "シルエット・バックライト", description: "明るいハロー、暗い被写体" },
55
+ "top-overhead": { label: "トップ/真上", description: "真上からの光" },
56
+ "under-uplight": { label: "下/アップライト", description: "下からの光" },
57
+ "window": { label: "窓", description: "窓からの柔らかなサイドライト" },
58
+
59
+ // Lighting ratio — keep technical labels (1:1, 1:2, etc.)
60
+ "ratio-1-1": { description: "フラット、影のコントラストなし" },
61
+ "ratio-1-2": { description: "柔らかな1段の減光" },
62
+ "ratio-1-3": { description: "中程度の2段コントラスト" },
63
+ "ratio-1-4": { description: "強いエディトリアル・コントラスト" },
64
+ "ratio-1-8": { description: "極端なローキーのキアロスクーロ" },
65
+ "ratio-1-16": { description: "単一光源のフィルム・ノワール的減光" },
66
+
67
+ // Color temperature — keep K labels
68
+ "temp-2700k": { description: "深い琥珀色のキャンドル/タングステン" },
69
+ "temp-3200k": { description: "暖かい黄色の室内光" },
70
+ "temp-4000k": { description: "ニュートラルな白" },
71
+ "temp-5600k": { description: "昼光バランスの真昼の太陽" },
72
+ "temp-6500k": { description: "わずかにクールな青みのキャスト" },
73
+ "temp-9000k": { description: "明らかにクールな青みのシェード" },
74
+
75
+ // Portrait setups
76
+ "butterfly": { label: "バタフライ照明", description: "頭上からの光が鼻の下にチョウ形の影を作る" },
77
+ "loop": { label: "ループ照明", description: "わずかに横上からの光が頬に小さなループを作る" },
78
+ "broad": { label: "ブロード照明", description: "カメラ側の顔を照らし、顔を広く見せる" },
79
+ "short": { label: "ショート照明", description: "カメラの反対側を照らし、顔を細く見せる" },
80
+ "hatchet": { label: "ハチェット照明", description: "頭上から斜めに当たる光、反対側に深い影" },
81
+ "clamshell": { label: "クラムシェル照明", description: "上からの光と下からのレフ板で挟むビューティ照明" },
82
+ // Location-studio extension (PR #2505 follow-up)
83
+ "dawn": { label: "夜明け", description: "日の出前の淡い光" },
84
+ "morning": { label: "朝", description: "新鮮で明るい朝の光" },
85
+ "afternoon": { label: "午後", description: "暖かい午後の光" },
86
+ "dusk": { label: "夕暮れ", description: "日没後の薄れゆく光" },
87
+ "midnight": { label: "真夜中", description: "最も深い夜、ほぼ真っ黒な空" },
88
+ }
89
+
90
+ export default map
@@ -0,0 +1,90 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "일출", description: "따뜻하고 낮은 태양, 긴 그림자입니다" },
6
+ "golden-hour": { label: "골든 아워", description: "따뜻한 노을빛입니다" },
7
+ "noon": { label: "정오", description: "강한 머리 위 한낮의 태양입니다" },
8
+ "harsh-midday": { label: "한낮의 강한 햇볕", description: "탈색된 흰 태양의 천정입니다" },
9
+ "overcast": { label: "흐림", description: "부드럽게 확산된 일광입니다" },
10
+ "blue-hour": { label: "블루 아워", description: "차가운 황혼의 트와일라잇입니다" },
11
+ "twilight": { label: "트와일라잇", description: "블루 아워와 밤 사이입니다" },
12
+ "night": { label: "밤", description: "깊은 밤, 낮은 주변광입니다" },
13
+ "moonlight": { label: "달빛", description: "차가운 푸른 달빛 풍경입니다" },
14
+ "neon-night": { label: "네온 나이트", description: "채도 높은 네온 도시의 밤입니다" },
15
+
16
+ // Style
17
+ "three-point": { label: "삼점 조명", description: "키 + 필 + 백의 클래식 조명입니다" },
18
+ "rembrandt": { label: "렘브란트", description: "뺨에 빛의 삼각형이 떨어지는 스타일입니다" },
19
+ "chiaroscuro": { description: "강한 명암 대비입니다" },
20
+ "silhouette": { label: "실루엣", description: "순수한 형태로 표현된 피사체입니다" },
21
+ "high-key": { label: "하이키", description: "밝고 저대비입니다" },
22
+ "low-key": { label: "로우키", description: "어둡고 고대비입니다" },
23
+ "split": { label: "스플릿", description: "절반은 빛, 절반은 그림자인 얼굴입니다" },
24
+ "hard": { label: "하드", description: "날카로운 그림자 가장자리입니다" },
25
+ "soft": { label: "소프트", description: "확산된 부드러운 빛입니다" },
26
+ "practical": { label: "프랙티컬", description: "장면 안에 보이는 광원들입니다" },
27
+ "ring-light": { label: "링 라이트", description: "뷰티/블로그 링 캐치라이트입니다" },
28
+ "phone-screen-glow": { label: "폰 스크린 글로우", description: "차가운 화면 아래 조명입니다" },
29
+ "selfie-natural": { label: "셀카 내추럴", description: "창문 빛 셀카입니다" },
30
+ "natural": { label: "내추럴", description: "사용 가능한 주변광입니다" },
31
+ "volumetric": { label: "볼류메트릭", description: "안개 속 가시 광선 빔입니다" },
32
+ "noir": { label: "느와르", description: "고대비 흑백 필름 느와르입니다" },
33
+ "on-camera-flash": { label: "온 카메라 플래시", description: "파파라치/아이폰 직접 플래시입니다" },
34
+ "mirror-bounce-flash": { label: "거울 바운스 플래시", description: "거울 셀카 플래시 바운스입니다" },
35
+ "bounced-flash": { label: "바운스 플래시", description: "부드러운 천장 바운스 필 라이트입니다" },
36
+ "softbox-key": { label: "소프트박스 키", description: "큼직하게 확산된 패션 키 라이트입니다" },
37
+ "beauty-dish": { label: "뷰티 디시", description: "히어로 라이트, 또렷한 폴오프입니다" },
38
+ "gridded-snoot": { label: "그리드 스누트", description: "타이트하게 집중된 빛의 풀입니다" },
39
+ "silk-diffusion": { label: "실크 디퓨전", description: "실크로 부드러워진 키 라이트입니다" },
40
+ "kicker-rim": { label: "키커 / 림 액센트", description: "낮은 측면의 액센트 분리 라이트입니다" },
41
+ "candlelight": { label: "촛불", description: "따뜻하게 깜빡이는 불빛입니다" },
42
+ "edison-tungsten": { label: "에디슨 텅스텐", description: "아늑하고 따뜻한 글로브 전구의 빛입니다" },
43
+ "dappled-light": { label: "다플드 / 잎새 사이 빛", description: "잎으로 얼룩진 빛입니다" },
44
+ "raking-sidelight": { label: "레이킹 사이드라이트", description: "극단적으로 낮은 측면, 텍스처를 강조합니다" },
45
+ "stage-spotlight": { label: "스테이지 스포트라이트", description: "단일의 강한 머리 위 스폿입니다" },
46
+ "underwater-caustics": { label: "수중 코스틱", description: "물결치는 굴절 패턴입니다" },
47
+ "bioluminescence": { label: "생체 발광", description: "차갑고 기묘한 생물학적 빛입니다" },
48
+
49
+ // Direction
50
+ "front": { label: "정면", description: "카메라 방향에서 오는 빛입니다" },
51
+ "three-quarter": { label: "3/4 라이트", description: "클래식 인물 사진 키 앵글입니다" },
52
+ "side": { label: "측면", description: "한쪽에서 오는 빛입니다" },
53
+ "back-rim": { label: "백 / 림", description: "피사체 주위에 림을 만드는 백라이트입니다" },
54
+ "silhouette-backlight": { label: "실루엣 백라이트", description: "밝은 후광, 어두운 피사체입니다" },
55
+ "top-overhead": { label: "탑 / 오버헤드", description: "정수직 위에서 오는 빛입니다" },
56
+ "under-uplight": { label: "언더 / 업라이트", description: "아래에서 오는 빛입니다" },
57
+ "window": { label: "창문", description: "창문에서 오는 부드러운 측면광입니다" },
58
+
59
+ // Lighting ratio (technical alphanumeric)
60
+ "ratio-1-1": { description: "평면적, 그림자 대비 없음입니다" },
61
+ "ratio-1-2": { description: "1스탑 정도의 부드러운 폴오프입니다" },
62
+ "ratio-1-3": { description: "2스탑 정도의 중간 대비입니다" },
63
+ "ratio-1-4": { description: "강한 에디토리얼한 대비입니다" },
64
+ "ratio-1-8": { description: "극단적 로우키 키아로스쿠로입니다" },
65
+ "ratio-1-16": { description: "단일 광원의 필름 느와르 폴오프입니다" },
66
+
67
+ // Color temperature (technical Kelvin units stay in alphanumeric)
68
+ "temp-2700k": { label: "2700K 캔들", description: "진한 호박색 캔들/텅스텐입니다" },
69
+ "temp-3200k": { label: "3200K 텅스텐", description: "따뜻한 노란색 실내 조명입니다" },
70
+ "temp-4000k": { label: "4000K 믹스", description: "중성 화이트입니다" },
71
+ "temp-5600k": { label: "5600K 데이라이트", description: "데이라이트 균형의 한낮 태양입니다" },
72
+ "temp-6500k": { label: "6500K 흐림", description: "약간 차가운 푸른 캐스트입니다" },
73
+ "temp-9000k": { label: "9000K 그늘", description: "확연히 차가운 푸른 그늘입니다" },
74
+
75
+ // Portrait setups
76
+ "butterfly": { label: "버터플라이 라이팅", description: "위에서 비춘 빛이 코 아래에 나비 모양 그림자를 만듭니다" },
77
+ "loop": { label: "루프 라이팅", description: "약간 측면 위에서 비춘 빛이 뺨에 작은 루프 그림자를 만듭니다" },
78
+ "broad": { label: "브로드 라이팅", description: "카메라를 향한 쪽이 밝아 얼굴이 더 넓게 보입니다" },
79
+ "short": { label: "쇼트 라이팅", description: "카메라 반대쪽이 밝아 얼굴이 슬림해 보입니다" },
80
+ "hatchet": { label: "해칫 라이팅", description: "위에서 스쳐 비춰 반대쪽에 짙은 그림자가 드리웁니다" },
81
+ "clamshell": { label: "클램셸 라이팅", description: "위 + 아래 리플렉터로 샌드위치된 뷰티 라이팅입니다" },
82
+ // Location-studio extension (PR #2505 follow-up)
83
+ "dawn": { label: "새벽", description: "일출 전 창백한 빛" },
84
+ "morning": { label: "아침", description: "신선하고 밝은 아침 빛" },
85
+ "afternoon": { label: "오후", description: "따뜻한 늦은 오후의 빛" },
86
+ "dusk": { label: "황혼", description: "일몰 후 사라지는 빛" },
87
+ "midnight": { label: "자정", description: "가장 깊은 밤, 거의 검은 하늘" },
88
+ }
89
+
90
+ export default map
@@ -0,0 +1,90 @@
1
+ import type { LocaleCatalogMap } from "./types.js"
2
+
3
+ const map: LocaleCatalogMap = {
4
+ // Time of day
5
+ "sunrise": { label: "Nascer do Sol", description: "Sol baixo e quente, sombras longas" },
6
+ "golden-hour": { label: "Hora Dourada", description: "Brilho quente do pôr do sol" },
7
+ "noon": { label: "Meio-Dia", description: "Sol forte de cima do meio-dia" },
8
+ "harsh-midday": { label: "Meio-Dia Forte", description: "Zênite com sol branco estourado" },
9
+ "overcast": { label: "Nublado", description: "Luz do dia suave e difusa" },
10
+ "blue-hour": { label: "Hora Azul", description: "Crepúsculo frio do anoitecer" },
11
+ "twilight": { label: "Crepúsculo", description: "Entre a hora azul e a noite plena" },
12
+ "night": { label: "Noite", description: "Noite profunda, pouca luz ambiente" },
13
+ "moonlight": { label: "Luar", description: "Cena fria iluminada pela lua em azul" },
14
+ "neon-night": { label: "Noite Neon", description: "Noite saturada com neons da cidade" },
15
+
16
+ // Style
17
+ "three-point": { label: "Três Pontos", description: "Clássica chave + fill + back" },
18
+ "rembrandt": { description: "Triângulo de luz na bochecha" },
19
+ "chiaroscuro": { description: "Forte contraste entre luz e sombra" },
20
+ "silhouette": { label: "Silhueta", description: "Sujeito como pura forma" },
21
+ "high-key": { description: "Iluminada, baixo contraste" },
22
+ "low-key": { description: "Escura, alto contraste" },
23
+ "split": { label: "Dividida", description: "Rosto metade iluminado, metade na sombra" },
24
+ "hard": { label: "Dura", description: "Sombras de bordas duras" },
25
+ "soft": { label: "Suave", description: "Luz difusa e gentil" },
26
+ "practical": { label: "Prática", description: "Luzes visíveis dentro da cena" },
27
+ "ring-light": { description: "Catchlight de ring light estilo beleza/vlog" },
28
+ "phone-screen-glow": { description: "Subiluminação fria da tela do celular" },
29
+ "selfie-natural": { label: "Selfie Natural", description: "Selfie com luz de janela" },
30
+ "natural": { label: "Natural", description: "Luz ambiente disponível" },
31
+ "volumetric": { label: "Volumétrica", description: "Feixes de luz visíveis na névoa" },
32
+ "noir": { description: "P&B noir de alto contraste" },
33
+ "on-camera-flash": { label: "Flash na Câmera", description: "Flash direto estilo paparazzi/iPhone" },
34
+ "mirror-bounce-flash": { description: "Flash refletido em espelho de selfie" },
35
+ "bounced-flash": { description: "Fill suave de flash rebatido no teto" },
36
+ "softbox-key": { description: "Luz chave de moda em softbox grande e difusa" },
37
+ "beauty-dish": { description: "Luz hero, queda nítida" },
38
+ "gridded-snoot": { description: "Foco apertado de luz pontual" },
39
+ "silk-diffusion": { description: "Luz chave gentil suavizada por seda" },
40
+ "kicker-rim": { label: "Kicker / Acento de Contorno", description: "Acento lateral baixo separando o sujeito" },
41
+ "candlelight": { label: "Luz de Vela", description: "Luz de fogo bruxuleante e quente" },
42
+ "edison-tungsten": { description: "Brilho aconchegante de globo Edison" },
43
+ "dappled-light": { label: "Luz Filtrada / Filtrada por Folhas", description: "Luz pontilhada filtrada por folhagem" },
44
+ "raking-sidelight": { description: "Lateral muito baixa, realça textura" },
45
+ "stage-spotlight": { label: "Spotlight de Palco", description: "Spotlight duro e único vindo de cima" },
46
+ "underwater-caustics": { description: "Padrões refratados ondulantes" },
47
+ "bioluminescence": { label: "Bioluminescência", description: "Brilho biológico estranho e frio" },
48
+
49
+ // Direction
50
+ "front": { label: "Frontal", description: "Luz vindo da direção da câmera" },
51
+ "three-quarter": { label: "Luz 3/4", description: "Ângulo clássico da luz chave em retrato" },
52
+ "side": { label: "Lateral", description: "Luz vindo de um dos lados" },
53
+ "back-rim": { label: "Contraluz / Rim", description: "Contraluz formando halo no sujeito" },
54
+ "silhouette-backlight": { description: "Halo brilhante, sujeito escuro" },
55
+ "top-overhead": { label: "Topo / De Cima", description: "Luz vindo direto de cima" },
56
+ "under-uplight": { label: "Embaixo / Uplight", description: "Luz vindo de baixo" },
57
+ "window": { label: "Janela", description: "Lateral suave vinda de janela" },
58
+
59
+ // Lighting ratio — keep ratios as labels
60
+ "ratio-1-1": { description: "Plana, sem contraste de sombra" },
61
+ "ratio-1-2": { description: "Queda suave de um stop" },
62
+ "ratio-1-3": { description: "Contraste moderado de dois stops" },
63
+ "ratio-1-4": { description: "Contraste editorial forte" },
64
+ "ratio-1-8": { description: "Chiaroscuro low-key extremo" },
65
+ "ratio-1-16": { description: "Queda noir de fonte única" },
66
+
67
+ // Color temperature — Kelvin units kept
68
+ "temp-2700k": { label: "2700K Vela", description: "Âmbar profundo, vela/tungstênio" },
69
+ "temp-3200k": { label: "3200K Tungstênio", description: "Interior amarelo quente" },
70
+ "temp-4000k": { label: "4000K Misto", description: "Branco neutro" },
71
+ "temp-5600k": { label: "5600K Luz do Dia", description: "Sol do meio-dia equilibrado para luz do dia" },
72
+ "temp-6500k": { label: "6500K Nublado", description: "Discreto azulado" },
73
+ "temp-9000k": { label: "9000K Sombra", description: "Tom azul nitidamente frio na sombra" },
74
+
75
+ // Additional portrait setups — names sometimes kept in English
76
+ "butterfly": { label: "Butterfly Lighting", description: "Luz acima projeta sombra em forma de borboleta sob o nariz" },
77
+ "loop": { label: "Loop Lighting", description: "Leve lateral + acima projeta pequena sombra em loop na bochecha" },
78
+ "broad": { label: "Broad Lighting", description: "Lado iluminado voltado para a câmera, rosto parece mais largo" },
79
+ "short": { label: "Short Lighting", description: "Lado iluminado afastado da câmera, efeito afinador" },
80
+ "hatchet": { label: "Hatchet Lighting", description: "Luz rasante de cima, sombra profunda no lado oposto" },
81
+ "clamshell": { label: "Clamshell Lighting", description: "Acima + rebatedor abaixo, beleza prensada como concha" },
82
+ // Location-studio extension (PR #2505 follow-up)
83
+ "dawn": { label: "Alvorada", description: "Brilho pálido antes do nascer do sol" },
84
+ "morning": { label: "Manhã", description: "Luz matinal fresca e brilhante" },
85
+ "afternoon": { label: "Tarde", description: "Brilho quente do fim de tarde" },
86
+ "dusk": { label: "Crepúsculo", description: "Luz desbotada após o pôr do sol" },
87
+ "midnight": { label: "Meia-noite", description: "Noite profunda, céu quase preto" },
88
+ }
89
+
90
+ export default map