feat(studio): theme picker — 4-color brand theme + curated preset swatches

Extends the studio's 2-color palette to the full 4-color brand theme
(accent / secondary / background / text) matching the Remotion SceneColors,
so the studio's colour state maps 1:1 to the scene engine.

- studio-store: add sceneSecondaryColor + sceneTextColor + their setters + an
  applySceneTheme(accent,secondary,background,text) action (sets all four +
  recolours canvas layers: bg→background, overlays→secondary, shapes→accent,
  text→text explicitly); persist both new fields in hydrate + getSceneDataForSave.
- studio-scene-data: carry sceneSecondaryColor + sceneTextColor through
  VideoPersistedSceneData / build / parse (with defaults).
- ColorsCustomTab: 6 one-click theme presets (Warm/Berry/Midnight/Ocean/Sunset/
  Mono) + 4 manual colour inputs + Apply.
- i18n: secondaryColor/textColor/themePresets/applyTheme(+preset) in fa + en.

Verified with `npm run build`. NOTE: the theme persists in scene_data and
recolours the canvas; wiring the 4 colours all the way to a FlexStory render's
saved_shared_colors depends on the studio-svc shared-colour sync (a small
follow-up). Block-FIELD editing remains the Phase 4 follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-23 14:56:14 +03:30
parent 8ddca5647b
commit 8582e956c9
5 changed files with 161 additions and 46 deletions
+7 -2
View File
@@ -1148,8 +1148,13 @@
"description": "صداگذاری را مستقیماً از روی متن خود در استودیو بسازید."
},
"componentsStudioSidebarColorsCustomTab": {
"mainColor": "رنگ اصلی",
"additionalColor": "رنگ مکمل",
"mainColor": "پس‌زمینه",
"additionalColor": "رنگ اصلی",
"secondaryColor": "رنگ دوم",
"textColor": "رنگ متن",
"themePresets": "تم‌ها",
"applyThemePreset": "اعمال تم {name}",
"applyTheme": "اعمال تم",
"applyToAllScenes": "اعمال به همه صحنه‌ها"
},
"componentsStudioSidebarColorsPalettesTab": {