@adminide-stack/yantra-mobile 12.0.125-alpha.1 → 12.0.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/lib/features/canvas/AudioEditorExperience.js +207 -109
  2. package/lib/features/canvas/AudioEditorExperience.js.map +1 -1
  3. package/lib/features/canvas/CanvasAgentChatPane.js +87 -72
  4. package/lib/features/canvas/CanvasAgentChatPane.js.map +1 -1
  5. package/lib/features/canvas/CanvasBoardsGrid.js +494 -387
  6. package/lib/features/canvas/CanvasBoardsGrid.js.map +1 -1
  7. package/lib/features/canvas/CanvasChatResultCard.js +78 -59
  8. package/lib/features/canvas/CanvasChatResultCard.js.map +1 -1
  9. package/lib/features/canvas/CanvasEditToolsPanel.js +126 -84
  10. package/lib/features/canvas/CanvasEditToolsPanel.js.map +1 -1
  11. package/lib/features/canvas/CanvasExperience.js +108 -126
  12. package/lib/features/canvas/CanvasExperience.js.map +1 -1
  13. package/lib/features/canvas/CanvasGeneratePanel.js +178 -166
  14. package/lib/features/canvas/CanvasGeneratePanel.js.map +1 -1
  15. package/lib/features/canvas/CanvasLibrarySheet.js +119 -123
  16. package/lib/features/canvas/CanvasLibrarySheet.js.map +1 -1
  17. package/lib/features/canvas/CanvasLooksPanel.js +113 -89
  18. package/lib/features/canvas/CanvasLooksPanel.js.map +1 -1
  19. package/lib/features/canvas/CanvasModelPicker.js +79 -79
  20. package/lib/features/canvas/CanvasModelPicker.js.map +1 -1
  21. package/lib/features/canvas/CanvasTasksPanel.js +193 -128
  22. package/lib/features/canvas/CanvasTasksPanel.js.map +1 -1
  23. package/lib/features/canvas/CanvasTemplatesPanel.js +106 -94
  24. package/lib/features/canvas/CanvasTemplatesPanel.js.map +1 -1
  25. package/lib/features/canvas/CanvasToolDock.js +195 -127
  26. package/lib/features/canvas/CanvasToolDock.js.map +1 -1
  27. package/lib/features/canvas/FrameExtractorExperience.js +163 -100
  28. package/lib/features/canvas/FrameExtractorExperience.js.map +1 -1
  29. package/lib/features/canvas/GeneratorReferenceSlots.js +132 -69
  30. package/lib/features/canvas/GeneratorReferenceSlots.js.map +1 -1
  31. package/lib/features/canvas/ImageEditorExperience.js +278 -209
  32. package/lib/features/canvas/ImageEditorExperience.js.map +1 -1
  33. package/lib/features/canvas/InfluencerStudioExperience.js +167 -125
  34. package/lib/features/canvas/InfluencerStudioExperience.js.map +1 -1
  35. package/lib/features/canvas/MoodboardExperience.js +102 -85
  36. package/lib/features/canvas/MoodboardExperience.js.map +1 -1
  37. package/lib/features/canvas/NativeCanvasViewer.js +203 -192
  38. package/lib/features/canvas/NativeCanvasViewer.js.map +1 -1
  39. package/lib/features/canvas/PromoContextFields.js +125 -92
  40. package/lib/features/canvas/PromoContextFields.js.map +1 -1
  41. package/lib/features/canvas/SetStudioExperience.js +225 -143
  42. package/lib/features/canvas/SetStudioExperience.js.map +1 -1
  43. package/lib/features/canvas/VideoClipsExperience.js +126 -92
  44. package/lib/features/canvas/VideoClipsExperience.js.map +1 -1
  45. package/lib/features/canvas/VideoEditExperience.js +154 -142
  46. package/lib/features/canvas/VideoEditExperience.js.map +1 -1
  47. package/lib/features/canvas/VideoEditorExperience.js +551 -492
  48. package/lib/features/canvas/VideoEditorExperience.js.map +1 -1
  49. package/lib/features/canvas/VideoGeneratorExperience.js +284 -131
  50. package/lib/features/canvas/VideoGeneratorExperience.js.map +1 -1
  51. package/lib/features/canvas/canvasTasks.js +7 -3
  52. package/lib/features/canvas/canvasTasks.js.map +1 -1
  53. package/lib/features/canvas/canvasTheme.js +265 -0
  54. package/lib/features/canvas/canvasTheme.js.map +1 -0
  55. package/lib/features/canvas/canvasUi.js +381 -0
  56. package/lib/features/canvas/canvasUi.js.map +1 -0
  57. package/lib/features/canvas/recorder/CameraRecorderExperience.js +109 -52
  58. package/lib/features/canvas/recorder/CameraRecorderExperience.js.map +1 -1
  59. package/lib/features/canvas/serverTasks.js +1 -1
  60. package/lib/features/canvas/serverTasks.js.map +1 -1
  61. package/lib/features/canvas/set/SetViewportWebView.js +1 -1
  62. package/lib/features/canvas/set/SetViewportWebView.js.map +1 -1
  63. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js +8 -7
  64. package/lib/features/canvas/videoEditor/BlurBoxOverlay.js.map +1 -1
  65. package/lib/features/canvas/videoEditor/ExportTaskCard.js +44 -41
  66. package/lib/features/canvas/videoEditor/ExportTaskCard.js.map +1 -1
  67. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js +50 -45
  68. package/lib/features/canvas/videoEditor/agent/AgentCutPane.js.map +1 -1
  69. package/lib/features/canvas/videoEditor/exportTask.js +3 -2
  70. package/lib/features/canvas/videoEditor/exportTask.js.map +1 -1
  71. package/lib/features/canvas/videoEditor/formWidgets.js +116 -64
  72. package/lib/features/canvas/videoEditor/formWidgets.js.map +1 -1
  73. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js +77 -63
  74. package/lib/features/canvas/videoEditor/produce/ProduceVideoSheet.js.map +1 -1
  75. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js +95 -79
  76. package/lib/features/canvas/videoEditor/tools/ToolsDrawer.js.map +1 -1
  77. package/lib/features/design/DesignEditorExperience.js +241 -160
  78. package/lib/features/design/DesignEditorExperience.js.map +1 -1
  79. package/lib/features/design/DesignExperience.js +300 -143
  80. package/lib/features/design/DesignExperience.js.map +1 -1
  81. package/lib/features/webbuilder/WebBuilderExperience.js +1 -1
  82. package/lib/features/webbuilder/WebBuilderExperience.js.map +1 -1
  83. package/lib/features/webbuilder/buildFragments.js +3 -2
  84. package/lib/features/webbuilder/buildFragments.js.map +1 -1
  85. package/lib/features/webbuilder/components/PublishSheet.js +1 -1
  86. package/lib/features/webbuilder/components/PublishSheet.js.map +1 -1
  87. package/lib/features/webbuilder/webbuilderPrompts.js +2 -5
  88. package/lib/features/webbuilder/webbuilderPrompts.js.map +1 -1
  89. package/lib/screens/WebBuilderNative/sandboxProxyApi.js +120 -0
  90. package/lib/screens/WebBuilderNative/sandboxProxyApi.js.map +1 -0
  91. package/lib/screens/WebBuilderNative/useRestoredSandboxes.js.map +1 -1
  92. package/lib/screens/WebBuilderNative/useWebBuilderHost.js +26 -4
  93. package/lib/screens/WebBuilderNative/useWebBuilderHost.js.map +1 -1
  94. package/lib/screens/WebBuilderNative/webbuilderTransport.js +110 -7
  95. package/lib/screens/WebBuilderNative/webbuilderTransport.js.map +1 -1
  96. package/package.json +4 -4
@@ -1,4 +1,4 @@
1
- import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useState,useMemo,useRef,useCallback,useEffect}from'react';import {StyleSheet,useWindowDimensions,Platform,Alert,View,Text,Pressable,FlatList,ActivityIndicator,TextInput,ScrollView}from'react-native';import {KeyboardAwareScreen,KeyboardLiftSpacer}from'../../components/KeyboardComposerDock.js';import {dismissKeyboard}from'../../utils/keyboardController.js';import {GestureHandlerRootView,Gesture,GestureDetector}from'react-native-gesture-handler';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Image}from'expo-image';import {getVideoPreviewRenderer}from'./videoRenderer.js';import {friendlyMediaError,resultUrl,generationMediaUrl}from'./videoEditor/mediaActions.js';import {clipFromItem,emptyTimeline,timelineDuration,updateClip,clipFromColor,textClipAt,newSegment,buildExportSpec,removeClip,moveClip,trimClip,SPEED_PRESETS,SPEED_CURVES,TEXT_PRESETS,updateText,removeText,MOTION_MOVES,MOTION_STRENGTHS,CLIP_TRANSITIONS,moveIdOf,kenBurnsFor,DEFAULT_IMAGE_SEC,clipTimelineSec}from'./videoEditor/editorModel.js';import {filterById,FILTER_PRESETS}from'./videoEditor/filters.js';import {useSafeInsets}from'./withRemoteSafeArea.js';import {STATIC_VIDEO_MODELS,buildVideoGenerateParams}from'./generationModels.js';import {mapDesignCorpus,playableTemplatePreviewUrl}from'./canvasChatTemplates.js';import {config}from'../../config/env-config.js';import {useStudioCatalogTemplates}from'./useStudioCatalogTemplates.js';import {DESIGN_PROMPT_TEMPLATES}from'./designPromptTemplates.js';import {templateHasUsableConfig,loadTemplateTimeline}from'./templateImport/loadTemplate.js';import {loadVideoProjects,projectHasWork,newVideoProjectId,snapshotProject,upsertVideoProject,persistVideoProjects,relativeProjectTime}from'./videoEditor/videoProjectsStore.js';import {AgentCutPane}from'./videoEditor/agent/AgentCutPane.js';import {canvasForRatio,canvasForAspect}from'./videoEditor/compileTimeline.js';import {reflowSceneChildren,sceneSpans,stampScene,layerInView}from'./videoEditor/sceneLayers.js';import {BlurBoxOverlay}from'./videoEditor/BlurBoxOverlay.js';import {ToolsDrawer}from'./videoEditor/tools/ToolsDrawer.js';import {staleMediaUrls,withRenewedUrls}from'./videoEditor/renewLinks.js';import {ensureFetchableMediaUrl}from'./mediaUrls.js';import {ProduceVideoSheet}from'./videoEditor/produce/ProduceVideoSheet.js';import {sceneFootagePatch,produceScenes,produceJob,runProduce}from'./videoEditor/produce/produceScenes.js';var __defProp = Object.defineProperty;
1
+ import {jsxs,jsx,Fragment}from'react/jsx-runtime';import {useMemo,useState,useRef,useCallback,useEffect}from'react';import {useWindowDimensions,Platform,Alert,View,Text,FlatList,ActivityIndicator,TextInput,ScrollView,StyleSheet}from'react-native';import {KeyboardAwareScreen,KeyboardLiftSpacer}from'../../components/KeyboardComposerDock.js';import {dismissKeyboard}from'../../utils/keyboardController.js';import {GestureHandlerRootView,Gesture,GestureDetector}from'react-native-gesture-handler';import {MaterialCommunityIcons}from'@expo/vector-icons';import {Image}from'expo-image';import {getVideoPreviewRenderer}from'./videoRenderer.js';import {friendlyMediaError,resultUrl,generationMediaUrl}from'./videoEditor/mediaActions.js';import {clipFromItem,emptyTimeline,timelineDuration,updateClip,clipFromColor,textClipAt,newSegment,buildExportSpec,removeClip,moveClip,trimClip,SPEED_PRESETS,SPEED_CURVES,TEXT_PRESETS,updateText,removeText,MOTION_MOVES,MOTION_STRENGTHS,CLIP_TRANSITIONS,moveIdOf,kenBurnsFor,DEFAULT_IMAGE_SEC,clipTimelineSec}from'./videoEditor/editorModel.js';import {filterById,FILTER_PRESETS}from'./videoEditor/filters.js';import {useSafeInsets}from'./withRemoteSafeArea.js';import {STATIC_VIDEO_MODELS,buildVideoGenerateParams}from'./generationModels.js';import {mapDesignCorpus,playableTemplatePreviewUrl}from'./canvasChatTemplates.js';import {config}from'../../config/env-config.js';import {useStudioCatalogTemplates}from'./useStudioCatalogTemplates.js';import {DESIGN_PROMPT_TEMPLATES}from'./designPromptTemplates.js';import {templateHasUsableConfig,loadTemplateTimeline}from'./templateImport/loadTemplate.js';import {loadVideoProjects,projectHasWork,newVideoProjectId,snapshotProject,upsertVideoProject,persistVideoProjects,relativeProjectTime}from'./videoEditor/videoProjectsStore.js';import {AgentCutPane}from'./videoEditor/agent/AgentCutPane.js';import {canvasForRatio,canvasForAspect}from'./videoEditor/compileTimeline.js';import {reflowSceneChildren,sceneSpans,stampScene,layerInView}from'./videoEditor/sceneLayers.js';import {BlurBoxOverlay}from'./videoEditor/BlurBoxOverlay.js';import {ToolsDrawer}from'./videoEditor/tools/ToolsDrawer.js';import {staleMediaUrls,withRenewedUrls}from'./videoEditor/renewLinks.js';import {ensureFetchableMediaUrl}from'./mediaUrls.js';import {ProduceVideoSheet}from'./videoEditor/produce/ProduceVideoSheet.js';import {sceneFootagePatch,produceScenes,produceJob,runProduce}from'./videoEditor/produce/produceScenes.js';import {useCanvasTheme,themedStyles,CANVAS_DARK}from'./canvasTheme.js';import {Pressable,pressedStyle,RADIUS,SPACE,HIT,TYPE}from'./canvasUi.js';var __defProp = Object.defineProperty;
2
2
  var __defProps = Object.defineProperties;
3
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
4
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
@@ -17,6 +17,9 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ const HSCROLL = {
21
+ flexGrow: 0
22
+ };
20
23
  function nextProjectTitle(rows, currentTitle) {
21
24
  const used = new Set(rows.map((row) => row.title.trim()));
22
25
  used.add(currentTitle.trim());
@@ -132,6 +135,8 @@ function TemplateWebPreview({
132
135
  src,
133
136
  poster
134
137
  }) {
138
+ const theme = useCanvasTheme();
139
+ const styles = useMemo(() => makeStyles(theme), [theme]);
135
140
  const WebView = loadEditorWebView();
136
141
  const playable = playableTemplatePreviewUrl(src);
137
142
  if (!playable || !WebView) {
@@ -152,23 +157,25 @@ function TemplateCatalogCard({
152
157
  onPreview,
153
158
  onUse
154
159
  }) {
160
+ const theme = useCanvasTheme();
161
+ const styles = useMemo(() => makeStyles(theme), [theme]);
155
162
  const canPreview = Boolean(row.coverVideo || row.cover);
156
163
  const canUse = Boolean(onUse && templateHasUsableConfig(row));
157
164
  return /* @__PURE__ */ jsxs(View, { style: styles.templateCard, children: [
158
165
  row.cover ? /* @__PURE__ */ jsx(Image, { source: {
159
166
  uri: row.cover
160
- }, style: styles.templateCover, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [styles.templateCover, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "movie-open-outline", size: 22, color: "#9A9AA5" }) }),
167
+ }, style: styles.templateCover, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [styles.templateCover, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "movie-open-outline", size: 22, color: theme.edInk2 }) }),
161
168
  /* @__PURE__ */ jsx(Text, { style: styles.templateTitle, numberOfLines: 2, children: row.title }),
162
169
  /* @__PURE__ */ jsxs(View, { style: styles.templateActions, children: [
163
170
  canUse ? /* @__PURE__ */ jsxs(Pressable, { onPress: () => onUse == null ? void 0 : onUse(row), disabled: using || generating, style: [styles.templateGenerate, (using || generating) && styles.disabled], accessibilityRole: "button", accessibilityLabel: `Use template ${row.title}`, children: [
164
- using ? /* @__PURE__ */ jsx(ActivityIndicator, { color: "#F2F2F5", size: "small" }) : /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "layers-outline", size: 13, color: "#F2F2F5" }),
171
+ using ? /* @__PURE__ */ jsx(ActivityIndicator, { color: theme.edInk, size: "small" }) : /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "layers-outline", size: 13, color: theme.edInk }),
165
172
  /* @__PURE__ */ jsx(Text, { style: styles.templateGenerateLabel, numberOfLines: 1, children: "Use" })
166
173
  ] }) : /* @__PURE__ */ jsxs(Pressable, { onPress: () => onGenerate(row), disabled: generating || !row.prompt.trim(), style: [styles.templateGenerate, (generating || !row.prompt.trim()) && styles.disabled], accessibilityRole: "button", accessibilityLabel: `Generate ${row.title}`, children: [
167
- generating ? /* @__PURE__ */ jsx(ActivityIndicator, { color: "#F2F2F5", size: "small" }) : /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "auto-fix", size: 13, color: "#F2F2F5" }),
174
+ generating ? /* @__PURE__ */ jsx(ActivityIndicator, { color: theme.edInk, size: "small" }) : /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "auto-fix", size: 13, color: theme.edInk }),
168
175
  /* @__PURE__ */ jsx(Text, { style: styles.templateGenerateLabel, numberOfLines: 1, children: "Generate" })
169
176
  ] }),
170
177
  /* @__PURE__ */ jsxs(Pressable, { onPress: () => onPreview(row), disabled: !canPreview, style: [styles.templatePreviewBtn, !canPreview && styles.disabled], accessibilityRole: "button", accessibilityLabel: `Preview ${row.title}`, children: [
171
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "play", size: 13, color: "#D8D8E0" }),
178
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "play", size: 13, color: theme.edInk2 }),
172
179
  /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewLabel, numberOfLines: 1, children: "Preview" })
173
180
  ] })
174
181
  ] })
@@ -192,6 +199,9 @@ function VideoEditorExperience({
192
199
  initialRailTab
193
200
  }) {
194
201
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
202
+ const theme = useCanvasTheme();
203
+ const styles = useMemo(() => makeStyles(theme), [theme]);
204
+ const stageStyles = useMemo(() => makeStyles(CANVAS_DARK), []);
195
205
  const insets = useSafeInsets();
196
206
  const {
197
207
  width: windowWidth
@@ -485,7 +495,7 @@ function VideoEditorExperience({
485
495
  setSelectedClipId(clip.id);
486
496
  setSelectedTextId(title.id);
487
497
  setRailTab(null);
488
- setNotice("Blank scene added \u2014 edit the title or open Media.");
498
+ setNotice("Blank scene added. Edit the title or open Media.");
489
499
  }, []);
490
500
  const previewStudioTemplate = useCallback((row) => {
491
501
  const sample = playableTemplatePreviewUrl(row.coverVideo);
@@ -559,7 +569,7 @@ function VideoEditorExperience({
559
569
  }
560
570
  setRailTab("media");
561
571
  setTab("media");
562
- setNotice(picked.length === 1 ? "In Media \u2014 tap it to add to the timeline" : `${picked.length} items in Media \u2014 tap one to add`);
572
+ setNotice(picked.length === 1 ? "In Media. Tap it to add to the timeline" : `${picked.length} items in Media. Tap one to add`);
563
573
  }).catch((err) => {
564
574
  setNotice(friendlyMediaError(err, "media pick"));
565
575
  }).finally(() => {
@@ -625,7 +635,7 @@ function VideoEditorExperience({
625
635
  setNotice("Recording added as the soundtrack.");
626
636
  return;
627
637
  }
628
- setNotice("Saved in Media \u2014 tap it to add to the timeline.");
638
+ setNotice("Saved in Media. Tap it to add to the timeline.");
629
639
  }).catch((err) => {
630
640
  setRecordError(friendlyMediaError(err, "record"));
631
641
  }).finally(() => {
@@ -750,7 +760,7 @@ function VideoEditorExperience({
750
760
  }, []);
751
761
  const dropSegment = useCallback((kind) => {
752
762
  if (timeline.clips.length === 0) {
753
- setNotice("Add a scene first \u2014 segments sit across the cut.");
763
+ setNotice("Add a scene first. Segments sit across the cut.");
754
764
  return;
755
765
  }
756
766
  const seg = newSegment(kind, playhead, Math.max(total.knownSec, 2));
@@ -892,6 +902,13 @@ function VideoEditorExperience({
892
902
  /* @__PURE__ */ jsx(ProduceVideoSheet, { visible: produceOpen, onClose: () => setProduceOpen(false), timeline, sourceSec, aspectRatio: produceAspect, runAction, onFootage: applyFootage }),
893
903
  /* @__PURE__ */ jsxs(KeyboardAwareScreen, { style: styles.root, testID: "video-editor", children: [
894
904
  /* @__PURE__ */ jsxs(View, { style: styles.header, children: [
905
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => {
906
+ flushProject();
907
+ dismissKeyboard();
908
+ onClose();
909
+ }, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close editor", style: ({
910
+ pressed
911
+ }) => [styles.headerCloseBtn, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: theme.edInk }) }),
895
912
  /* @__PURE__ */ jsxs(View, { style: styles.headerCopy, children: [
896
913
  /* @__PURE__ */ jsx(Text, { style: styles.headerProject, numberOfLines: 1, children: localTitle }),
897
914
  /* @__PURE__ */ jsxs(Text, { style: styles.headerSaved, children: [
@@ -899,47 +916,48 @@ function VideoEditorExperience({
899
916
  /* @__PURE__ */ jsx(Text, { style: styles.headerSavedDim, children: " \xB7 30 fps MP4" })
900
917
  ] })
901
918
  ] }),
902
- timeline.clips.some((c) => c.fillColor) ? /* @__PURE__ */ jsx(Pressable, { onPress: () => setProduceOpen(true), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Produce video - film the colour scenes", style: styles.headerGhostBtn, testID: "video-editor-produce", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "movie-open-play-outline", size: 18, color: "#F7F7FA" }) }) : null,
903
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setToolsOpen(true), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Tools", style: styles.headerGhostBtn, testID: "video-editor-tools", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "toolbox-outline", size: 18, color: "#F7F7FA" }) }),
919
+ timeline.clips.some((c) => c.fillColor) ? /* @__PURE__ */ jsx(Pressable, { onPress: () => setProduceOpen(true), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Produce video - film the colour scenes", style: ({
920
+ pressed
921
+ }) => [styles.headerGhostBtn, pressedStyle(pressed)], testID: "video-editor-produce", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "movie-open-play-outline", size: 20, color: theme.edInk }) }) : null,
922
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setToolsOpen(true), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Tools", style: ({
923
+ pressed
924
+ }) => [styles.headerGhostBtn, pressedStyle(pressed)], testID: "video-editor-tools", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "toolbox-outline", size: 20, color: theme.edInk }) }),
904
925
  /* @__PURE__ */ jsx(Pressable, { onPress: previewPlay, disabled: timeline.clips.length === 0, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: playing ? "Pause preview" : "Preview", style: timeline.clips.length === 0 ? styles.disabled : styles.headerGhostBtn, children: /* @__PURE__ */ jsx(Text, { style: styles.headerGhost, children: playing ? "Pause" : "Preview" }) }),
905
- /* @__PURE__ */ jsx(Pressable, { onPress: exportTimeline, disabled: timeline.clips.length === 0, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Export video", accessibilityHint: timeline.clips.length === 0 ? "Add a scene or clip before exporting" : void 0, style: [styles.exportBtn, timeline.clips.length === 0 ? styles.disabled : null], children: /* @__PURE__ */ jsx(Text, { style: styles.exportBtnLabel, children: "Export" }) }),
906
- /* @__PURE__ */ jsx(Pressable, { onPress: () => {
907
- flushProject();
908
- dismissKeyboard();
909
- onClose();
910
- }, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close editor", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 22, color: "#E8E8EE" }) })
926
+ /* @__PURE__ */ jsx(Pressable, { onPress: exportTimeline, disabled: timeline.clips.length === 0, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Export video", accessibilityHint: timeline.clips.length === 0 ? "Add a scene or clip before exporting" : void 0, style: ({
927
+ pressed
928
+ }) => [styles.exportBtn, timeline.clips.length === 0 ? styles.disabled : null, pressedStyle(pressed)], children: /* @__PURE__ */ jsx(Text, { style: styles.exportBtnLabel, children: "Export" }) })
911
929
  ] }),
912
930
  /* @__PURE__ */ jsxs(View, { style: styles.workspace, children: [
913
931
  railTab || recordOpen ? /* @__PURE__ */ jsxs(View, { style: [styles.sheet, railTab === "templates" && !recordOpen ? styles.sheetTall : null], children: [
914
932
  /* @__PURE__ */ jsxs(View, { style: styles.sheetHead, children: [
915
933
  /* @__PURE__ */ jsx(Text, { style: styles.sheetTitle, children: recordOpen ? "Record" : (_i = (_h = TABS.find((entry) => entry.id === railTab)) == null ? void 0 : _h.label) != null ? _i : "Tools" }),
916
934
  railTab === "projects" && !recordOpen ? /* @__PURE__ */ jsxs(Pressable, { onPress: startNewProject, style: styles.sheetNewBtn, accessibilityRole: "button", accessibilityLabel: "New project", children: [
917
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 14, color: "#101013" }),
935
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 14, color: theme.edOnInk }),
918
936
  /* @__PURE__ */ jsx(Text, { style: styles.sheetNewBtnLabel, children: "New" })
919
937
  ] }) : null,
920
938
  /* @__PURE__ */ jsx(Pressable, { onPress: () => {
921
939
  setRailTab(null);
922
940
  setRecordOpen(false);
923
941
  setMicTakeOn(false);
924
- }, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close tools", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 18, color: "#F2F2F5" }) })
942
+ }, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close tools", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 18, color: theme.edInk }) })
925
943
  ] }),
926
944
  railTab === "templates" && !recordOpen ? /* @__PURE__ */ jsx(View, { style: styles.templateSheetBody, children: /* @__PURE__ */ jsx(FlatList, { data: templateGrid, keyExtractor: (pair) => pair.map((row) => row.id).join(":"), keyboardShouldPersistTaps: "handled", style: styles.templateList, contentContainerStyle: styles.templateListInner, extraData: `${templatesLoadingMore}:${templates.length}`, ListHeaderComponent: /* @__PURE__ */ jsxs(View, { style: styles.templatesPane, children: [
927
945
  /* @__PURE__ */ jsxs(View, { style: styles.searchField, children: [
928
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "magnify", size: 20, color: "#8A8A94" }),
929
- /* @__PURE__ */ jsx(TextInput, { value: templateQuery, onChangeText: setTemplateQuery, placeholder: "Search templates\u2026", placeholderTextColor: "#6A6A74", style: styles.searchInput, autoCorrect: false, autoCapitalize: "none", autoFocus: false, returnKeyType: "search", accessibilityLabel: "Search templates", onSubmitEditing: () => setTemplateSearch(templateQuery.trim()) }),
946
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "magnify", size: 20, color: theme.edInk3 }),
947
+ /* @__PURE__ */ jsx(TextInput, { value: templateQuery, onChangeText: setTemplateQuery, placeholder: "Search templates\u2026", placeholderTextColor: theme.edInk3, style: styles.searchInput, autoCorrect: false, autoCapitalize: "none", autoFocus: false, returnKeyType: "search", accessibilityLabel: "Search templates", onSubmitEditing: () => setTemplateSearch(templateQuery.trim()) }),
930
948
  templateQuery.length > 0 ? /* @__PURE__ */ jsx(Pressable, { onPress: () => {
931
949
  setTemplateQuery("");
932
950
  setTemplateSearch("");
933
951
  dismissKeyboard();
934
- }, style: styles.searchClear, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Clear search", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close-circle", size: 18, color: "#8A8A94" }) }) : null
952
+ }, style: styles.searchClear, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Clear search", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close-circle", size: 18, color: theme.edInk3 }) }) : null
935
953
  ] }),
936
- templatesLoading && templates.length === 0 ? /* @__PURE__ */ jsx(View, { style: styles.emptyPanel, children: /* @__PURE__ */ jsx(ActivityIndicator, { color: "#E8E8EE" }) }) : templates.length === 0 ? /* @__PURE__ */ jsxs(View, { style: styles.emptyPanel, children: [
937
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "view-grid-outline", size: 22, color: "#6A6A74" }),
954
+ templatesLoading && templates.length === 0 ? /* @__PURE__ */ jsx(View, { style: styles.emptyPanel, children: /* @__PURE__ */ jsx(ActivityIndicator, { color: theme.edInk }) }) : templates.length === 0 ? /* @__PURE__ */ jsxs(View, { style: styles.emptyPanel, children: [
955
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "view-grid-outline", size: 22, color: theme.edInk3 }),
938
956
  /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyTitle, children: "No templates" }),
939
957
  /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyDetail, children: templateSearch ? "No templates match that search." : "The studio catalog is empty in this environment." })
940
958
  ] }) : null
941
- ] }), ListFooterComponent: templates.length === 0 ? null : /* @__PURE__ */ jsx(View, { style: styles.templateLoadBar, children: /* @__PURE__ */ jsx(Pressable, { onPress: loadMoreTemplates, disabled: templatesLoadingMore, style: [styles.loadMoreBtn, templatesLoadingMore ? styles.disabled : null], accessibilityRole: "button", accessibilityLabel: "Load more templates", children: templatesLoadingMore ? /* @__PURE__ */ jsx(ActivityIndicator, { color: "#101013" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
942
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chevron-down", size: 20, color: "#101013" }),
959
+ ] }), ListFooterComponent: templates.length === 0 ? null : /* @__PURE__ */ jsx(View, { style: styles.templateLoadBar, children: /* @__PURE__ */ jsx(Pressable, { onPress: loadMoreTemplates, disabled: templatesLoadingMore, style: [styles.loadMoreBtn, templatesLoadingMore ? styles.disabled : null], accessibilityRole: "button", accessibilityLabel: "Load more templates", children: templatesLoadingMore ? /* @__PURE__ */ jsx(ActivityIndicator, { color: theme.edOnInk }) : /* @__PURE__ */ jsxs(Fragment, { children: [
960
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "chevron-down", size: 20, color: theme.edOnInk }),
943
961
  /* @__PURE__ */ jsx(Text, { style: styles.loadMoreBtnLabel, children: "Load more" })
944
962
  ] }) }) }), renderItem: ({
945
963
  item: pair
@@ -952,7 +970,7 @@ function VideoEditorExperience({
952
970
  flex: 1
953
971
  } }) : null
954
972
  ] }) }) }) : /* @__PURE__ */ jsx(ScrollView, { style: styles.sidePaneScroll, contentContainerStyle: styles.sidePaneInner, keyboardShouldPersistTaps: "always", children: /* @__PURE__ */ jsx(View, { style: styles.panel, children: recordOpen ? /* @__PURE__ */ jsxs(View, { style: styles.recordPane, children: [
955
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Web records the screen, a window, or the camera, then drops the take on the timeline. On the phone that is camera, mic, or the library \u2014 screen capture stays on desktop." }),
973
+ /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Web records the screen, a window, or the camera, then drops the take on the timeline. On the phone that is camera, mic, or the library; screen capture stays on desktop." }),
956
974
  recordError ? /* @__PURE__ */ jsx(Text, { style: styles.recordError, children: recordError }) : null,
957
975
  [{
958
976
  id: "camera-video",
@@ -975,14 +993,14 @@ function VideoEditorExperience({
975
993
  label: "Choose file",
976
994
  hint: "Video, image, or audio"
977
995
  }].map((row) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => captureFromRecord(row.id), disabled: recordOn || !onPickLocalMedia, style: [styles.recordRow, (recordOn || !onPickLocalMedia) && styles.disabled], accessibilityRole: "button", children: [
978
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: row.icon, size: 22, color: "#F2F2F5" }),
996
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: row.icon, size: 22, color: theme.edInk }),
979
997
  /* @__PURE__ */ jsxs(View, { style: styles.segmentMenuCopy, children: [
980
998
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuLabel, children: row.label }),
981
999
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuHint, children: row.hint })
982
1000
  ] })
983
1001
  ] }, row.id)),
984
1002
  /* @__PURE__ */ jsxs(Pressable, { onPress: toggleMicTake, disabled: !audioRecorder, style: [styles.recordRow, !audioRecorder && styles.disabled], accessibilityRole: "button", children: [
985
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: micTakeOn ? "stop-circle-outline" : "microphone-outline", size: 22, color: micTakeOn ? "#F87171" : "#F2F2F5" }),
1003
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: micTakeOn ? "stop-circle-outline" : "microphone-outline", size: 22, color: micTakeOn ? theme.edDanger : theme.edInk }),
986
1004
  /* @__PURE__ */ jsxs(View, { style: styles.segmentMenuCopy, children: [
987
1005
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuLabel, children: micTakeOn ? "Stop voice take" : "Record voice" }),
988
1006
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuHint, children: audioRecorder ? "Adds a voiceover on the Audio lane" : "Host microphone is not wired in this build" })
@@ -1002,11 +1020,11 @@ function VideoEditorExperience({
1002
1020
  icon: "folder-outline",
1003
1021
  label: "Files"
1004
1022
  }].map((source) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => pickIntoLibrary(source.id), disabled: mediaBusy, style: [styles.pickBtn, mediaBusy && styles.disabled], accessibilityRole: "button", accessibilityLabel: `Upload from ${source.label}`, children: [
1005
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: source.icon, size: 18, color: "#E8E8EE" }),
1023
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: source.icon, size: 18, color: theme.edInk }),
1006
1024
  /* @__PURE__ */ jsx(Text, { style: styles.pickBtnLabel, children: source.label })
1007
1025
  ] }, source.id)) }) : null,
1008
1026
  media.length === 0 ? /* @__PURE__ */ jsxs(View, { style: styles.emptyPanel, children: [
1009
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-plus", size: 22, color: "#6A6A74" }),
1027
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-plus", size: 22, color: theme.edInk3 }),
1010
1028
  /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyTitle, children: "No media yet" }),
1011
1029
  /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyDetail, children: "Upload from this phone, or tap a clip from this canvas to add it to the timeline." })
1012
1030
  ] }) : /* @__PURE__ */ jsx(View, { style: styles.mediaGrid, children: media.map((item) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => {
@@ -1026,16 +1044,16 @@ function VideoEditorExperience({
1026
1044
  }, style: styles.mediaTile, children: [
1027
1045
  item.type === "image" ? /* @__PURE__ */ jsx(Image, { source: {
1028
1046
  uri: item.src
1029
- }, style: styles.mediaThumb, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [styles.mediaThumb, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: item.type === "audio" ? "music" : "play", size: 18, color: "#9A9AA5" }) }),
1030
- /* @__PURE__ */ jsx(View, { style: styles.mediaAdd, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 12, color: "#0A0A0C" }) })
1047
+ }, style: styles.mediaThumb, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [styles.mediaThumb, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: item.type === "audio" ? "music" : "play", size: 18, color: theme.edInk2 }) }),
1048
+ /* @__PURE__ */ jsx(View, { style: styles.mediaAdd, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 12, color: theme.edOnInk }) })
1031
1049
  ] }, item.id)) })
1032
1050
  ] }) : railTab === "projects" ? /* @__PURE__ */ jsxs(View, { style: styles.projectsPane, children: [
1033
1051
  /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "A project is a saved timeline. Create one, then add clips from Media." }),
1034
1052
  /* @__PURE__ */ jsxs(Pressable, { onPress: startNewProject, style: styles.solidBtn, accessibilityRole: "button", accessibilityLabel: "New project", children: [
1035
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: "#101013" }),
1053
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: theme.edOnInk }),
1036
1054
  /* @__PURE__ */ jsx(Text, { style: styles.solidBtnLabel, children: "Create project" })
1037
1055
  ] }),
1038
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: dirty ? "Unsaved changes \u2014 saves as soon as you edit." : projectHasWork(timeline) ? "All changes saved" : "Saves as soon as you edit." }),
1056
+ /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: dirty ? "Unsaved changes. Saves as soon as you edit." : projectHasWork(timeline) ? "All changes saved" : "Saves as soon as you edit." }),
1039
1057
  projectList.map((row) => {
1040
1058
  const current = row.id === "__current__" || row.id === activeProjectId;
1041
1059
  const clips = row.timeline.clips.length;
@@ -1068,14 +1086,14 @@ function VideoEditorExperience({
1068
1086
  /* @__PURE__ */ jsx(Pressable, { onPress: () => {
1069
1087
  setRenameId(row.id);
1070
1088
  setRenameDraft(row.title);
1071
- }, hitSlop: 8, accessibilityLabel: "Rename project", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "pencil-outline", size: 16, color: "#8B8B96" }) }),
1072
- /* @__PURE__ */ jsx(Pressable, { onPress: () => deleteSavedProject(row.id), hitSlop: 8, accessibilityLabel: "Delete project", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "trash-can-outline", size: 16, color: "#FF6B6B" }) })
1089
+ }, hitSlop: 8, accessibilityLabel: "Rename project", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "pencil-outline", size: 16, color: theme.edInk3 }) }),
1090
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => deleteSavedProject(row.id), hitSlop: 8, accessibilityLabel: "Delete project", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "trash-can-outline", size: 16, color: theme.edDanger }) })
1073
1091
  ] }) : /* @__PURE__ */ jsx(Text, { style: styles.projectRowMeta, children: "Current" })
1074
1092
  ] }, row.id);
1075
1093
  })
1076
1094
  ] }) : tab === "ai" ? /* @__PURE__ */ jsxs(View, { children: [
1077
1095
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "Create with AI" }),
1078
- /* @__PURE__ */ jsx(TextInput, { value: aiPrompt, onChangeText: setAiPrompt, placeholder: "Continue the scene\u2026", placeholderTextColor: "#5A5A66", style: styles.textInput, multiline: true }),
1096
+ /* @__PURE__ */ jsx(TextInput, { value: aiPrompt, onChangeText: setAiPrompt, placeholder: "Continue the scene\u2026", placeholderTextColor: theme.edInk3, style: styles.textInput, multiline: true }),
1079
1097
  /* @__PURE__ */ jsx(Pressable, { onPress: () => generateAiScene(), disabled: aiBusy || !aiPrompt.trim(), style: [styles.chip, styles.chipActive, styles.chipWide], children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: aiBusy ? "Generating\u2026" : "Generate scene" }) })
1080
1098
  ] }) : railTab === "elements" ? /* @__PURE__ */ jsxs(View, { children: [
1081
1099
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "Blank scene" }),
@@ -1090,7 +1108,7 @@ function VideoEditorExperience({
1090
1108
  }, style: [styles.sceneSwatch, {
1091
1109
  backgroundColor: color
1092
1110
  }], accessibilityRole: "button", accessibilityLabel: `Add blank scene ${color}` }, color)) }),
1093
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Adds a colored still at the end of the timeline \u2014 hold duration in clip tools." })
1111
+ /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Adds a colored still at the end of the timeline. Set how long it holds in clip tools." })
1094
1112
  ] }) : railTab === "logo" ? /* @__PURE__ */ jsxs(View, { children: [
1095
1113
  logoSrc ? /* @__PURE__ */ jsx(Image, { source: {
1096
1114
  uri: logoSrc
@@ -1104,7 +1122,7 @@ function VideoEditorExperience({
1104
1122
  }), onMove: (dir) => setTimeline((t) => moveClip(t, selected.id, dir)), onRemove: () => {
1105
1123
  setTimeline((t) => removeClip(t, selected.id));
1106
1124
  setSelectedClipId(null);
1107
- }, canMoveLeft: selectedIndex > 0, canMoveRight: selectedIndex >= 0 && selectedIndex < timeline.clips.length - 1 }) : /* @__PURE__ */ jsx(Text, { style: styles.panelEmpty, children: "Pick a clip on the timeline to change its timing, trim, motion, look and audio." }) : tab === "filter" && selected ? /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: FILTER_PRESETS.map((preset) => {
1125
+ }, canMoveLeft: selectedIndex > 0, canMoveRight: selectedIndex >= 0 && selectedIndex < timeline.clips.length - 1 }) : /* @__PURE__ */ jsx(Text, { style: styles.panelEmpty, children: "Pick a clip on the timeline to change its timing, trim, motion, look and audio." }) : tab === "filter" && selected ? /* @__PURE__ */ jsx(ScrollView, { style: HSCROLL, horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: FILTER_PRESETS.map((preset) => {
1108
1126
  const active = selected.filter === preset.id;
1109
1127
  return /* @__PURE__ */ jsxs(Pressable, { onPress: () => patchSelected({
1110
1128
  filter: preset.id
@@ -1119,7 +1137,7 @@ function VideoEditorExperience({
1119
1137
  backgroundColor: color,
1120
1138
  opacity
1121
1139
  }] }, `${color}-${opacity}`)),
1122
- preset.id === "none" ? /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "cancel", size: 18, color: "#9A9AA5", style: styles.filterNoneGlyph }) : null
1140
+ preset.id === "none" ? /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "cancel", size: 18, color: theme.edInk2, style: styles.filterNoneGlyph }) : null
1123
1141
  ] }),
1124
1142
  /* @__PURE__ */ jsx(Text, { style: [styles.filterLabel, active && styles.filterLabelActive], children: preset.label })
1125
1143
  ] }, preset.id);
@@ -1149,7 +1167,7 @@ function VideoEditorExperience({
1149
1167
  "\xD7."
1150
1168
  ] }) : null
1151
1169
  ] }) : railTab === "text" ? /* @__PURE__ */ jsxs(View, { children: [
1152
- /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: TEXT_PRESETS.map((preset) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => addText({
1170
+ /* @__PURE__ */ jsx(ScrollView, { style: HSCROLL, horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: TEXT_PRESETS.map((preset) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => addText({
1153
1171
  text: preset.text,
1154
1172
  x: preset.x,
1155
1173
  y: preset.y
@@ -1161,7 +1179,7 @@ function VideoEditorExperience({
1161
1179
  selectedText ? /* @__PURE__ */ jsxs(Fragment, { children: [
1162
1180
  /* @__PURE__ */ jsx(TextInput, { value: selectedText.text, onChangeText: (text) => setTimeline((t) => updateText(t, selectedText.id, {
1163
1181
  text
1164
- })), style: styles.textInput, placeholder: "Title", placeholderTextColor: "#5A5A66", selectionColor: "#8B7CFF", selectTextOnFocus: true, returnKeyType: "done", onSubmitEditing: dismissKeyboard }),
1182
+ })), style: styles.textInput, placeholder: "Title", placeholderTextColor: theme.edInk3, selectionColor: theme.edAccent, selectTextOnFocus: true, returnKeyType: "done", onSubmitEditing: dismissKeyboard }),
1165
1183
  /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1166
1184
  /* @__PURE__ */ jsx(Stepper, { label: "Start", value: `${selectedText.startSec.toFixed(1)}s`, onLess: () => setTimeline((t) => updateText(t, selectedText.id, {
1167
1185
  startSec: Math.max(0, selectedText.startSec - 0.5)
@@ -1185,7 +1203,7 @@ function VideoEditorExperience({
1185
1203
  voiceover
1186
1204
  })), onSceneAudio: addSceneAudio, onNotice: setNotice }) : railTab === "agent" ? /* @__PURE__ */ jsx(AgentCutPane, { timeline, setTimeline, token, indexUrl, runAction, uploadMedia, onAddMedia: addLibraryMedia, onFilm: filmScenes }) : railTab === "captions" ? /* @__PURE__ */ jsxs(View, { children: [
1187
1205
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "Captions" }),
1188
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "One captions lane \u2014 add at the playhead, then tap a row to edit." }),
1206
+ /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "One captions lane. Add at the playhead, then tap a row to edit." }),
1189
1207
  /* @__PURE__ */ jsx(Pressable, { onPress: () => {
1190
1208
  const preset = TEXT_PRESETS.find((p) => p.id === "caption");
1191
1209
  addText(preset ? {
@@ -1210,9 +1228,9 @@ function VideoEditorExperience({
1210
1228
  ] }, row.id))
1211
1229
  ] }) : railTab === "audio" ? /* @__PURE__ */ jsxs(View, { children: [
1212
1230
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "AI audio" }),
1213
- /* @__PURE__ */ jsx(TextInput, { value: audioPrompt, onChangeText: setAudioPrompt, placeholder: "Music or narration prompt\u2026", placeholderTextColor: "#5A5A66", style: styles.textInput, multiline: true }),
1231
+ /* @__PURE__ */ jsx(TextInput, { value: audioPrompt, onChangeText: setAudioPrompt, placeholder: "Music or narration prompt\u2026", placeholderTextColor: theme.edInk3, style: styles.textInput, multiline: true }),
1214
1232
  /* @__PURE__ */ jsx(Pressable, { onPress: generateAiAudio, disabled: audioBusy || !audioPrompt.trim(), style: [styles.chip, styles.chipActive, styles.chipWide], children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: audioBusy ? "Generating\u2026" : "Generate" }) }),
1215
- /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Lands in the media library \u2014 tap it there to add to the timeline. Mood music with auto-duck lives under Music." })
1233
+ /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Lands in the media library. Tap it there to add to the timeline. Mood music with auto-duck lives under Music." })
1216
1234
  ] }) : tab === "segment" ? /* @__PURE__ */ jsxs(View, { children: [
1217
1235
  /* @__PURE__ */ jsx(Text, { style: styles.panelBarTitle, children: "Segment" }),
1218
1236
  (selectedBlur == null ? void 0 : selectedBlur.blur) ? /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
@@ -1237,27 +1255,27 @@ function VideoEditorExperience({
1237
1255
  ] }) : /* @__PURE__ */ jsx(Text, { style: styles.panelEmpty, children: "Pick a clip on the timeline to change its timing, trim, motion, look and audio." }) }) })
1238
1256
  ] }) : null,
1239
1257
  /* @__PURE__ */ jsxs(View, { style: styles.stageCol, children: [
1240
- /* @__PURE__ */ jsx(View, { style: styles.stageWell, onTouchStart: dismissKeyboard, children: /* @__PURE__ */ jsx(View, { style: styles.stage, children: selected === null ? /* @__PURE__ */ jsxs(View, { style: styles.stageEmptyCopy, children: [
1241
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "filmstrip-box-multiple", size: 32, color: "#6A6A74" }),
1242
- /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyTitle, children: "Start a scene" }),
1243
- /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyDetail, children: "Drop in a photo, a camera take, or a blank card \u2014 the same doors as the web studio." }),
1244
- /* @__PURE__ */ jsxs(View, { style: styles.stageEmptyActions, children: [
1245
- /* @__PURE__ */ jsxs(Pressable, { onPress: addBlankScene, style: styles.solidBtn, accessibilityRole: "button", accessibilityLabel: "Add blank scene", children: [
1246
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: "#101013" }),
1247
- /* @__PURE__ */ jsx(Text, { style: styles.solidBtnLabel, children: "Blank scene" })
1258
+ /* @__PURE__ */ jsx(View, { style: styles.stageWell, onTouchStart: dismissKeyboard, children: /* @__PURE__ */ jsx(View, { style: stageStyles.stage, children: selected === null ? /* @__PURE__ */ jsxs(View, { style: stageStyles.stageEmptyCopy, children: [
1259
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "filmstrip-box-multiple", size: 32, color: CANVAS_DARK.edInk3 }),
1260
+ /* @__PURE__ */ jsx(Text, { style: stageStyles.stageEmptyTitle, children: "Start a scene" }),
1261
+ /* @__PURE__ */ jsx(Text, { style: stageStyles.stageEmptyDetail, children: "Drop in a photo, a camera take, or a blank card, the same doors as the web studio." }),
1262
+ /* @__PURE__ */ jsxs(View, { style: stageStyles.stageEmptyActions, children: [
1263
+ /* @__PURE__ */ jsxs(Pressable, { onPress: addBlankScene, style: stageStyles.solidBtn, accessibilityRole: "button", accessibilityLabel: "Add blank scene", children: [
1264
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: CANVAS_DARK.edOnInk }),
1265
+ /* @__PURE__ */ jsx(Text, { style: stageStyles.solidBtnLabel, children: "Blank scene" })
1248
1266
  ] }),
1249
1267
  /* @__PURE__ */ jsxs(Pressable, { onPress: () => {
1250
1268
  setRailTab("media");
1251
1269
  setTab("media");
1252
- }, style: styles.ghostBtn, accessibilityRole: "button", children: [
1253
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-plus", size: 16, color: "#F2F2F5" }),
1254
- /* @__PURE__ */ jsx(Text, { style: styles.ghostBtnLabel, children: "Open Media" })
1270
+ }, style: stageStyles.ghostBtn, accessibilityRole: "button", children: [
1271
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-plus", size: 16, color: CANVAS_DARK.edInk }),
1272
+ /* @__PURE__ */ jsx(Text, { style: stageStyles.ghostBtnLabel, children: "Open Media" })
1255
1273
  ] })
1256
1274
  ] })
1257
1275
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1258
- selected.type === "video" && VideoPreview ? /* @__PURE__ */ jsx(VideoPreview, { src: selected.src, playing, rate: selected.speed, volume: selected.volume, muted: selected.muted, trimStartSec: selected.trimStartSec, trimEndSec: selected.trimEndSec, scrubToSec: scrub.sec, scrubNonce: scrub.nonce, onTime: onPreviewTime }) : selected.type === "video" ? /* @__PURE__ */ jsxs(View, { style: styles.stageEmpty, children: [
1276
+ selected.type === "video" && VideoPreview ? /* @__PURE__ */ jsx(VideoPreview, { src: selected.src, playing, rate: selected.speed, volume: selected.volume, muted: selected.muted, trimStartSec: selected.trimStartSec, trimEndSec: selected.trimEndSec, scrubToSec: scrub.sec, scrubNonce: scrub.nonce, onTime: onPreviewTime }) : selected.type === "video" ? /* @__PURE__ */ jsxs(View, { style: stageStyles.stageEmpty, children: [
1259
1277
  /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "play-circle-outline", size: 40, color: "#4A4A55" }),
1260
- /* @__PURE__ */ jsx(Text, { style: styles.stageEmptyDetail, children: "Video preview needs the host's player - editing still works." })
1278
+ /* @__PURE__ */ jsx(Text, { style: stageStyles.stageEmptyDetail, children: "Video preview needs the host's player - editing still works." })
1261
1279
  ] }) : /* @__PURE__ */ jsx(Image, { source: {
1262
1280
  uri: selected.src
1263
1281
  }, style: StyleSheet.absoluteFill, contentFit: "contain" }),
@@ -1275,14 +1293,14 @@ function VideoEditorExperience({
1275
1293
  })) }, t.id)),
1276
1294
  logoSrc ? /* @__PURE__ */ jsx(Image, { source: {
1277
1295
  uri: logoSrc
1278
- }, style: styles.logoOverlay, contentFit: "contain", pointerEvents: "none" }) : null,
1279
- /* @__PURE__ */ jsxs(View, { style: styles.stageToolbar, children: [
1280
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "animate" ? null : "animate"), style: [styles.stagePill, selected.kenBurns && styles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: styles.stagePillLabel, children: "Animate" }) }),
1281
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "look" ? null : "look"), style: [styles.stagePill, selected.filter !== "none" && styles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: styles.stagePillLabel, children: "Look" }) }),
1282
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "transition" ? null : "transition"), style: [styles.stagePill, selected.transitionIn && styles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: styles.stagePillLabel, children: "Transition" }) })
1296
+ }, style: stageStyles.logoOverlay, contentFit: "contain", pointerEvents: "none" }) : null,
1297
+ /* @__PURE__ */ jsxs(View, { style: stageStyles.stageToolbar, children: [
1298
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "animate" ? null : "animate"), style: [stageStyles.stagePill, selected.kenBurns && stageStyles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: stageStyles.stagePillLabel, children: "Animate" }) }),
1299
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "look" ? null : "look"), style: [stageStyles.stagePill, selected.filter !== "none" && stageStyles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: stageStyles.stagePillLabel, children: "Look" }) }),
1300
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setStageTool((t) => t === "transition" ? null : "transition"), style: [stageStyles.stagePill, selected.transitionIn && stageStyles.stagePillOn], children: /* @__PURE__ */ jsx(Text, { style: stageStyles.stagePillLabel, children: "Transition" }) })
1283
1301
  ] })
1284
1302
  ] }) }) }),
1285
- selected && stageTool ? /* @__PURE__ */ jsxs(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.stageToolRow, children: [
1303
+ selected && stageTool ? /* @__PURE__ */ jsxs(ScrollView, { style: HSCROLL, horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.stageToolRow, children: [
1286
1304
  stageTool === "animate" ? MOTION_MOVES.map((m) => {
1287
1305
  const on = moveIdOf(selected.kenBurns) === m.id;
1288
1306
  return /* @__PURE__ */ jsx(Pressable, { onPress: () => {
@@ -1359,10 +1377,12 @@ function VideoEditorExperience({
1359
1377
  setRailTab(null);
1360
1378
  setRecordError(null);
1361
1379
  setRecordOpen((open) => !open);
1362
- }, style: [styles.dockTab, styles.dockRecord, recordOpen && styles.dockRecordOn], accessibilityRole: "button", accessibilityLabel: "Record", accessibilityState: {
1380
+ }, style: ({
1381
+ pressed
1382
+ }) => [styles.dockTab, styles.dockRecord, recordOpen && styles.dockRecordOn, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: "Record", accessibilityState: {
1363
1383
  selected: recordOpen
1364
1384
  }, children: [
1365
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "record-circle", size: 22, color: recordOpen || recordOn ? "#F87171" : "#8B8B96" }),
1385
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "record-circle", size: 22, color: recordOpen || recordOn ? theme.edDanger : theme.edInk3 }),
1366
1386
  /* @__PURE__ */ jsx(Text, { style: [styles.dockLabel, recordOpen && styles.dockRecordLabel], children: "Record" })
1367
1387
  ] }),
1368
1388
  /* @__PURE__ */ jsx(View, { style: styles.dockRule }),
@@ -1372,10 +1392,12 @@ function VideoEditorExperience({
1372
1392
  setRecordOpen(false);
1373
1393
  setRailTab((cur) => cur === entry.id ? null : entry.id);
1374
1394
  setTab(entry.id);
1375
- }, style: [styles.dockTab, active && styles.dockTabOn], accessibilityRole: "tab", accessibilityState: {
1395
+ }, style: ({
1396
+ pressed
1397
+ }) => [styles.dockTab, active && styles.dockTabOn, pressedStyle(pressed)], accessibilityRole: "tab", accessibilityState: {
1376
1398
  selected: active
1377
1399
  }, accessibilityLabel: entry.label, children: [
1378
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: entry.icon, size: 20, color: active ? "#F2F2F5" : "#8B8B96" }),
1400
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: entry.icon, size: 22, color: active ? theme.edInk : theme.edInk3 }),
1379
1401
  /* @__PURE__ */ jsx(Text, { style: [styles.dockLabel, active && styles.dockLabelOn], children: entry.label })
1380
1402
  ] }, entry.id);
1381
1403
  })
@@ -1385,9 +1407,9 @@ function VideoEditorExperience({
1385
1407
  /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewKicker, children: "Template preview" }),
1386
1408
  /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewBarTitle, numberOfLines: 1, children: templatePreview.title }),
1387
1409
  templatePreview.aspect ? /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewAspect, children: templatePreview.aspect }) : null,
1388
- /* @__PURE__ */ jsx(Pressable, { onPress: () => setTemplatePreview(null), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close template preview", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 18, color: "#F2F2F5" }) })
1410
+ /* @__PURE__ */ jsx(Pressable, { onPress: () => setTemplatePreview(null), hitSlop: 8, accessibilityRole: "button", accessibilityLabel: "Close template preview", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "close", size: 18, color: theme.edInk }) })
1389
1411
  ] }),
1390
- /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewHint, children: "Not part of your video \u2014 Generate adds a fresh clip" }),
1412
+ /* @__PURE__ */ jsx(Text, { style: styles.templatePreviewHint, children: "Not part of your video. Generate adds a fresh clip" }),
1391
1413
  /* @__PURE__ */ jsx(View, { style: styles.templatePreviewMedia, children: templatePreview.kind === "video" ? /* @__PURE__ */ jsx(TemplateWebPreview, { src: templatePreview.src, poster: templatePreview.poster }) : /* @__PURE__ */ jsx(Image, { source: {
1392
1414
  uri: templatePreview.poster || templatePreview.src
1393
1415
  }, style: styles.templatePreviewImage, contentFit: "contain", recyclingKey: templatePreview.src }) })
@@ -1398,7 +1420,7 @@ function VideoEditorExperience({
1398
1420
  /* @__PURE__ */ jsx(Pressable, { onPress: () => setNotice(null), hitSlop: 8, children: /* @__PURE__ */ jsx(Text, { style: styles.noticeDismiss, children: "OK" }) })
1399
1421
  ] }) : null,
1400
1422
  mediaBusy || aiBusy ? /* @__PURE__ */ jsx(View, { style: styles.busyOverlay, pointerEvents: "auto", children: /* @__PURE__ */ jsxs(View, { style: styles.busyCard, children: [
1401
- /* @__PURE__ */ jsx(ActivityIndicator, { color: "#F7F7FA" }),
1423
+ /* @__PURE__ */ jsx(ActivityIndicator, { color: theme.edInk }),
1402
1424
  /* @__PURE__ */ jsx(Text, { style: styles.busyTitle, children: aiBusy ? "Generating scene" : mediaBusy ? "Uploading" : "Working" }),
1403
1425
  /* @__PURE__ */ jsx(Text, { style: styles.busyDetail, children: aiBusy ? "This can take a minute. Keep the editor open." : uploadStatus || "Preparing your media\u2026" }),
1404
1426
  mediaBusy ? /* @__PURE__ */ jsx(View, { style: styles.busyTrack, children: /* @__PURE__ */ jsx(View, { style: styles.busyTrackFill }) }) : null
@@ -1420,6 +1442,7 @@ function DraggableText({
1420
1442
  onSelect,
1421
1443
  onMove
1422
1444
  }) {
1445
+ const styles = useMemo(() => makeStyles(CANVAS_DARK), []);
1423
1446
  const stage = useRef({
1424
1447
  w: 1,
1425
1448
  h: 1
@@ -1470,20 +1493,34 @@ function TimelineTrack({
1470
1493
  onSkipEnd
1471
1494
  }) {
1472
1495
  var _a, _b;
1496
+ const theme = useCanvasTheme();
1497
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1473
1498
  const segments = ((_a = timeline.segments) != null ? _a : []).filter((seg) => layerInView(seg, selectedClipId));
1474
1499
  const texts = timeline.texts.filter((t) => layerInView(t, selectedClipId));
1475
1500
  const sceneAudio = ((_b = timeline.sceneAudio) != null ? _b : []).filter((a) => layerInView(a, selectedClipId));
1476
1501
  const hasAudio = Boolean(timeline.voiceover || timeline.soundtrack || sceneAudio.length);
1477
1502
  return /* @__PURE__ */ jsxs(View, { style: [styles.timeline, compact && styles.timelineCompact], children: [
1478
1503
  /* @__PURE__ */ jsxs(View, { style: styles.timelineBar, children: [
1479
- /* @__PURE__ */ jsx(Pressable, { onPress: onLayers, hitSlop: 6, style: styles.timelineIconBtn, accessibilityRole: "button", accessibilityLabel: "Open layers", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "layers-outline", size: 20, color: "#F2F2F5" }) }),
1504
+ /* @__PURE__ */ jsx(Pressable, { onPress: onLayers, hitSlop: 6, style: ({
1505
+ pressed
1506
+ }) => [styles.timelineIconBtn, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: "Open layers", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "layers-outline", size: 20, color: theme.edInk }) }),
1480
1507
  /* @__PURE__ */ jsx(View, { style: styles.timelineRule }),
1481
- /* @__PURE__ */ jsx(Pressable, { onPress: onAddScene, hitSlop: 6, style: styles.timelineIconBtn, accessibilityRole: "button", accessibilityLabel: "Add blank scene", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 22, color: "#F2F2F5" }) }),
1482
- /* @__PURE__ */ jsx(Pressable, { onPress: onToggleSegmentMenu, hitSlop: 6, style: [styles.timelineIconBtn, segmentMenuOpen && styles.dockTabOn], accessibilityRole: "button", accessibilityLabel: "Add segment (speed, zoom, crop, trim)", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-split-horizontal", size: 20, color: "#F2F2F5" }) }),
1508
+ /* @__PURE__ */ jsx(Pressable, { onPress: onAddScene, hitSlop: 6, style: ({
1509
+ pressed
1510
+ }) => [styles.timelineIconBtn, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: "Add blank scene", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 22, color: theme.edInk }) }),
1511
+ /* @__PURE__ */ jsx(Pressable, { onPress: onToggleSegmentMenu, hitSlop: 6, style: ({
1512
+ pressed
1513
+ }) => [styles.timelineIconBtn, segmentMenuOpen && styles.dockTabOn, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: "Add segment (speed, zoom, crop, trim)", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-split-horizontal", size: 20, color: theme.edInk }) }),
1483
1514
  /* @__PURE__ */ jsx(View, { style: styles.headerSpacer }),
1484
- /* @__PURE__ */ jsx(Pressable, { onPress: onSkipStart, hitSlop: 8, style: styles.transportBtn, accessibilityLabel: "Skip to start", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "skip-previous", size: 24, color: "#F2F2F5" }) }),
1485
- /* @__PURE__ */ jsx(Pressable, { onPress: onTogglePlay, style: styles.transportPlay, accessibilityLabel: playing ? "Pause" : "Play", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: playing ? "pause" : "play", size: 26, color: "#101013" }) }),
1486
- /* @__PURE__ */ jsx(Pressable, { onPress: onSkipEnd, hitSlop: 8, style: styles.transportBtn, accessibilityLabel: "Skip to end", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "skip-next", size: 24, color: "#F2F2F5" }) }),
1515
+ /* @__PURE__ */ jsx(Pressable, { onPress: onSkipStart, hitSlop: 8, style: ({
1516
+ pressed
1517
+ }) => [styles.transportBtn, pressedStyle(pressed)], accessibilityLabel: "Skip to start", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "skip-previous", size: 24, color: theme.edInk }) }),
1518
+ /* @__PURE__ */ jsx(Pressable, { onPress: onTogglePlay, style: ({
1519
+ pressed
1520
+ }) => [styles.transportPlay, pressedStyle(pressed)], accessibilityLabel: playing ? "Pause" : "Play", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: playing ? "pause" : "play", size: 26, color: theme.edOnInk }) }),
1521
+ /* @__PURE__ */ jsx(Pressable, { onPress: onSkipEnd, hitSlop: 8, style: ({
1522
+ pressed
1523
+ }) => [styles.transportBtn, pressedStyle(pressed)], accessibilityLabel: "Skip to end", children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "skip-next", size: 24, color: theme.edInk }) }),
1487
1524
  /* @__PURE__ */ jsxs(Text, { style: styles.transportTime, children: [
1488
1525
  formatSec(playhead),
1489
1526
  /* @__PURE__ */ jsxs(Text, { style: styles.transportTimeDim, children: [
@@ -1493,8 +1530,10 @@ function TimelineTrack({
1493
1530
  ] })
1494
1531
  ] }),
1495
1532
  segmentMenuOpen ? /* @__PURE__ */ jsxs(View, { style: styles.segmentMenu, children: [
1496
- SEGMENT_KINDS.map((entry) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => onAddSegment(entry.kind), style: styles.segmentMenuRow, accessibilityRole: "button", accessibilityLabel: entry.label, children: [
1497
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: entry.icon, size: 16, color: "#A9A9B4" }),
1533
+ SEGMENT_KINDS.map((entry) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => onAddSegment(entry.kind), style: ({
1534
+ pressed
1535
+ }) => [styles.segmentMenuRow, pressedStyle(pressed)], accessibilityRole: "button", accessibilityLabel: entry.label, children: [
1536
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: entry.icon, size: 16, color: theme.edInk2 }),
1498
1537
  /* @__PURE__ */ jsxs(View, { style: styles.segmentMenuCopy, children: [
1499
1538
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuLabel, children: entry.label }),
1500
1539
  /* @__PURE__ */ jsx(Text, { style: styles.segmentMenuHint, children: entry.hint })
@@ -1505,11 +1544,11 @@ function TimelineTrack({
1505
1544
  /* @__PURE__ */ jsxs(ScrollView, { showsVerticalScrollIndicator: false, children: [
1506
1545
  /* @__PURE__ */ jsxs(View, { style: styles.laneRow, children: [
1507
1546
  /* @__PURE__ */ jsxs(View, { style: styles.laneGutter, children: [
1508
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "video", size: 14, color: "#8B8B96" }),
1547
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "video", size: 14, color: theme.edInk3 }),
1509
1548
  /* @__PURE__ */ jsx(Text, { style: styles.laneLabel, children: "Video" })
1510
1549
  ] }),
1511
1550
  /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, style: styles.laneBody, children: /* @__PURE__ */ jsx(View, { style: styles.clipTrack, children: timeline.clips.length === 0 ? /* @__PURE__ */ jsxs(Pressable, { onPress: onAddScene, style: styles.clipTrackEmpty, accessibilityRole: "button", accessibilityLabel: "Add blank scene", children: [
1512
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: "#8B8B96" }),
1551
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 16, color: theme.edInk3 }),
1513
1552
  /* @__PURE__ */ jsx(Text, { style: styles.clipTrackEmptyLabel, children: "Blank scene" })
1514
1553
  ] }) : timeline.clips.map((clip, index) => {
1515
1554
  const active = clip.id === selectedClipId;
@@ -1517,7 +1556,7 @@ function TimelineTrack({
1517
1556
  return /* @__PURE__ */ jsxs(Pressable, { onPress: () => onSelectClip(clip.id), style: [styles.clipBlock, active && styles.clipBlockActive], children: [
1518
1557
  clip.type === "image" ? /* @__PURE__ */ jsx(Image, { source: {
1519
1558
  uri: clip.src
1520
- }, style: StyleSheet.absoluteFill, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "play", size: 14, color: "#9A9AA5" }) }),
1559
+ }, style: StyleSheet.absoluteFill, contentFit: "cover" }) : /* @__PURE__ */ jsx(View, { style: [StyleSheet.absoluteFill, styles.mediaThumbVideo], children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "play", size: 14, color: theme.edInk2 }) }),
1521
1560
  /* @__PURE__ */ jsxs(View, { style: styles.clipMeta, children: [
1522
1561
  /* @__PURE__ */ jsx(Text, { style: styles.clipMetaText, children: index + 1 }),
1523
1562
  /* @__PURE__ */ jsxs(Text, { style: styles.clipMetaText, children: [
@@ -1530,44 +1569,44 @@ function TimelineTrack({
1530
1569
  ] }),
1531
1570
  compact ? null : /* @__PURE__ */ jsxs(View, { style: styles.laneRow, children: [
1532
1571
  /* @__PURE__ */ jsxs(View, { style: styles.laneGutter, children: [
1533
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-outline", size: 14, color: "#9A9AA5" }),
1572
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "image-outline", size: 14, color: theme.edInk2 }),
1534
1573
  /* @__PURE__ */ jsx(Text, { style: styles.laneLabel, children: "Overlay" })
1535
1574
  ] }),
1536
1575
  /* @__PURE__ */ jsx(View, { style: styles.laneBody })
1537
1576
  ] }),
1538
1577
  compact && texts.length === 0 ? null : /* @__PURE__ */ jsxs(View, { style: styles.laneRow, children: [
1539
1578
  /* @__PURE__ */ jsxs(View, { style: styles.laneGutter, children: [
1540
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "format-title", size: 14, color: "#8B8B96" }),
1579
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "format-title", size: 14, color: theme.edInk3 }),
1541
1580
  /* @__PURE__ */ jsx(Text, { style: styles.laneLabel, children: "Text" })
1542
1581
  ] }),
1543
1582
  /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, style: styles.laneBody, children: /* @__PURE__ */ jsx(View, { style: styles.textTrack, children: texts.map((t) => /* @__PURE__ */ jsxs(Pressable, { onPress: () => onSelectText(t.id), style: [styles.textPill, t.id === selectedTextId && styles.textPillActive], children: [
1544
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "format-text", size: 11, color: "#F7F7FA" }),
1583
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "format-text", size: 11, color: theme.edInk }),
1545
1584
  /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: styles.textPillLabel, children: t.text })
1546
1585
  ] }, t.id)) }) })
1547
1586
  ] }),
1548
1587
  compact && !hasAudio ? null : /* @__PURE__ */ jsxs(View, { style: styles.laneRow, children: [
1549
1588
  /* @__PURE__ */ jsxs(View, { style: styles.laneGutter, children: [
1550
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 14, color: "#9A9AA5" }),
1589
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 14, color: theme.edInk2 }),
1551
1590
  /* @__PURE__ */ jsx(Text, { style: styles.laneLabel, children: "Audio" })
1552
1591
  ] }),
1553
1592
  /* @__PURE__ */ jsxs(View, { style: styles.laneBody, children: [
1554
1593
  timeline.voiceover ? /* @__PURE__ */ jsxs(View, { style: styles.voTrack, children: [
1555
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "account-voice", size: 11, color: "#DCD6FF" }),
1594
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "account-voice", size: 11, color: theme.edAccent }),
1556
1595
  /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: styles.voTrackLabel, children: timeline.voiceover.voiceLabel || "Voiceover" })
1557
1596
  ] }) : null,
1558
1597
  timeline.soundtrack ? /* @__PURE__ */ jsxs(View, { style: styles.voTrack, children: [
1559
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 11, color: "#DCD6FF" }),
1598
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 11, color: theme.edAccent }),
1560
1599
  /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: styles.voTrackLabel, children: timeline.soundtrack.title || "Soundtrack" })
1561
1600
  ] }) : null,
1562
1601
  sceneAudio.map((a) => /* @__PURE__ */ jsxs(View, { style: styles.voTrack, children: [
1563
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "waveform", size: 11, color: "#DCD6FF" }),
1602
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "waveform", size: 11, color: theme.edAccent }),
1564
1603
  /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: styles.voTrackLabel, children: a.label || "Scene audio" })
1565
1604
  ] }, a.id))
1566
1605
  ] })
1567
1606
  ] }),
1568
1607
  compact && segments.length === 0 ? null : /* @__PURE__ */ jsxs(View, { style: styles.laneRow, children: [
1569
1608
  /* @__PURE__ */ jsxs(View, { style: styles.laneGutter, children: [
1570
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-split-horizontal", size: 14, color: "#8B8B96" }),
1609
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "arrow-split-horizontal", size: 14, color: theme.edInk3 }),
1571
1610
  /* @__PURE__ */ jsx(Text, { style: styles.laneLabel, children: "Segment" })
1572
1611
  ] }),
1573
1612
  /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, style: styles.laneBody, children: /* @__PURE__ */ jsx(View, { style: styles.textTrack, children: segments.map((seg) => /* @__PURE__ */ jsx(Pressable, { onPress: () => onSelectSegment(seg.id), style: [styles.textPill, seg.id === selectedSegmentId && styles.textPillActive], children: /* @__PURE__ */ jsx(Text, { numberOfLines: 1, style: styles.textPillLabel, children: seg.name }) }, seg.id)) }) })
@@ -1586,6 +1625,8 @@ function TrimPanel({
1586
1625
  canMoveRight
1587
1626
  }) {
1588
1627
  var _a, _b;
1628
+ const theme = useCanvasTheme();
1629
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1589
1630
  const [trackW, setTrackW] = useState(1);
1590
1631
  const source = sourceSec && sourceSec > 0 ? sourceSec : null;
1591
1632
  const end = (_a = clip.trimEndSec) != null ? _a : source;
@@ -1634,7 +1675,7 @@ function TrimPanel({
1634
1675
  /* @__PURE__ */ jsx(IconChip, { icon: "arrow-left", disabled: !canMoveLeft, onPress: () => onMove(-1), label: "Move left" }),
1635
1676
  /* @__PURE__ */ jsx(IconChip, { icon: "arrow-right", disabled: !canMoveRight, onPress: () => onMove(1), label: "Move right" }),
1636
1677
  /* @__PURE__ */ jsxs(Pressable, { onPress: onRemove, style: styles.chip, accessibilityRole: "button", children: [
1637
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "trash-can-outline", size: 14, color: "#FF6B6B" }),
1678
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "trash-can-outline", size: 14, color: theme.edDanger }),
1638
1679
  /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipDanger], children: "Remove" })
1639
1680
  ] })
1640
1681
  ] })
@@ -1646,7 +1687,9 @@ function IconChip({
1646
1687
  disabled,
1647
1688
  onPress
1648
1689
  }) {
1649
- return /* @__PURE__ */ jsx(Pressable, { onPress, disabled, style: [styles.chip, disabled && styles.chipDisabled], accessibilityRole: "button", accessibilityLabel: label, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: icon, size: 14, color: "#F7F7FA" }) });
1690
+ const theme = useCanvasTheme();
1691
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1692
+ return /* @__PURE__ */ jsx(Pressable, { onPress, disabled, style: [styles.chip, disabled && styles.chipDisabled], accessibilityRole: "button", accessibilityLabel: label, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: icon, size: 14, color: theme.edInk }) });
1650
1693
  }
1651
1694
  function Stepper({
1652
1695
  label,
@@ -1654,11 +1697,13 @@ function Stepper({
1654
1697
  onLess,
1655
1698
  onMore
1656
1699
  }) {
1700
+ const theme = useCanvasTheme();
1701
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1657
1702
  return /* @__PURE__ */ jsxs(View, { style: styles.stepper, children: [
1658
1703
  /* @__PURE__ */ jsx(Text, { style: styles.stepperLabel, children: label }),
1659
- /* @__PURE__ */ jsx(Pressable, { onPress: onLess, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: `${label} less`, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "minus", size: 15, color: "#F7F7FA" }) }),
1704
+ /* @__PURE__ */ jsx(Pressable, { onPress: onLess, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: `${label} less`, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "minus", size: 15, color: theme.edInk }) }),
1660
1705
  /* @__PURE__ */ jsx(Text, { style: styles.stepperValue, children: value }),
1661
- /* @__PURE__ */ jsx(Pressable, { onPress: onMore, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: `${label} more`, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 15, color: "#F7F7FA" }) })
1706
+ /* @__PURE__ */ jsx(Pressable, { onPress: onMore, hitSlop: 8, accessibilityRole: "button", accessibilityLabel: `${label} more`, children: /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "plus", size: 15, color: theme.edInk }) })
1662
1707
  ] });
1663
1708
  }
1664
1709
  function parseVoices(result) {
@@ -1693,6 +1738,8 @@ function VoicePanel({
1693
1738
  onNotice
1694
1739
  }) {
1695
1740
  var _a;
1741
+ const theme = useCanvasTheme();
1742
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1696
1743
  const [sceneOnly, setSceneOnly] = useState(false);
1697
1744
  const [voices, setVoices] = useState([]);
1698
1745
  const [voice, setVoice] = useState(null);
@@ -1818,7 +1865,7 @@ function VoicePanel({
1818
1865
  }).catch((err) => onNotice(friendlyMediaError(err, "voiceover"))).finally(() => setBusy(null));
1819
1866
  };
1820
1867
  return /* @__PURE__ */ jsxs(ScrollView, { style: styles.voiceScroll, keyboardShouldPersistTaps: "handled", children: [
1821
- /* @__PURE__ */ jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: voices.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Loading voices\u2026" }) : voices.map((v) => {
1868
+ /* @__PURE__ */ jsx(ScrollView, { style: HSCROLL, horizontal: true, showsHorizontalScrollIndicator: false, contentContainerStyle: styles.panelRow, children: voices.length === 0 ? /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "Loading voices\u2026" }) : voices.map((v) => {
1822
1869
  const active = (voice == null ? void 0 : voice.id) === v.id;
1823
1870
  return /* @__PURE__ */ jsx(Pressable, { onPress: () => setVoice(v), style: [styles.chip, active && styles.chipActive], accessibilityRole: "button", accessibilityState: {
1824
1871
  selected: active
@@ -1827,11 +1874,11 @@ function VoicePanel({
1827
1874
  v.label
1828
1875
  ] }) }, `${v.profile ? "p" : "v"}-${v.id}`);
1829
1876
  }) }),
1830
- /* @__PURE__ */ jsx(TextInput, { value: instruct, onChangeText: setInstruct, placeholder: "Direction (optional) - calm, warm, excited\u2026", placeholderTextColor: "#5A5A66", style: styles.voiceInstruct, selectionColor: "#8B7CFF" }),
1831
- /* @__PURE__ */ jsx(TextInput, { value: text, onChangeText: setText, placeholder: "What should the voice say?", placeholderTextColor: "#5A5A66", style: styles.voiceText, selectionColor: "#8B7CFF", multiline: true }),
1877
+ /* @__PURE__ */ jsx(TextInput, { value: instruct, onChangeText: setInstruct, placeholder: "Direction (optional) - calm, warm, excited\u2026", placeholderTextColor: theme.edInk3, style: styles.voiceInstruct, selectionColor: theme.edAccent }),
1878
+ /* @__PURE__ */ jsx(TextInput, { value: text, onChangeText: setText, placeholder: "What should the voice say?", placeholderTextColor: theme.edInk3, style: styles.voiceText, selectionColor: theme.edAccent, multiline: true }),
1832
1879
  /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1833
1880
  canRecord ? /* @__PURE__ */ jsxs(Pressable, { onPress: () => toggleRecord("dictate"), style: [styles.chip, recording === "dictate" && styles.chipRecording], accessibilityRole: "button", accessibilityLabel: recording === "dictate" ? "Stop recording" : "Speak instead of typing", children: [
1834
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: recording === "dictate" ? "stop-circle-outline" : "microphone", size: 14, color: recording === "dictate" ? "#FF8484" : "#F7F7FA" }),
1881
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: recording === "dictate" ? "stop-circle-outline" : "microphone", size: 14, color: recording === "dictate" ? theme.edDanger : theme.edInk }),
1835
1882
  /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, recording === "dictate" && styles.chipDanger], children: recording === "dictate" ? "Stop" : "Speak" })
1836
1883
  ] }) : null,
1837
1884
  (selectedClip == null ? void 0 : selectedClip.type) === "video" ? /* @__PURE__ */ jsx(Pressable, { onPress: transcribeClip, style: styles.chip, accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.chipLabel, children: busy === "Transcribing" ? "Transcribing\u2026" : "From clip" }) }) : null,
@@ -1841,18 +1888,18 @@ function VoicePanel({
1841
1888
  /* @__PURE__ */ jsx(Pressable, { onPress: generate, disabled: !text.trim() || busy !== null, style: [styles.chip, styles.chipActive, (!text.trim() || busy !== null) && styles.chipDisabled], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: busy === "Generating" ? "Generating\u2026" : voiceover ? "Regenerate" : "Generate voiceover" }) })
1842
1889
  ] }),
1843
1890
  canRecord ? /* @__PURE__ */ jsxs(View, { style: styles.cloneBox, children: [
1844
- /* @__PURE__ */ jsx(Text, { style: styles.cloneTitle, children: "MY VOICE" }),
1891
+ /* @__PURE__ */ jsx(Text, { style: styles.cloneTitle, children: "My voice" }),
1845
1892
  cloneSample === null ? /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1846
1893
  /* @__PURE__ */ jsxs(Pressable, { onPress: () => toggleRecord("clone"), style: [styles.chip, recording === "clone" && styles.chipRecording], accessibilityRole: "button", children: [
1847
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: recording === "clone" ? "stop-circle-outline" : "microphone-plus", size: 14, color: recording === "clone" ? "#FF8484" : "#F7F7FA" }),
1894
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: recording === "clone" ? "stop-circle-outline" : "microphone-plus", size: 14, color: recording === "clone" ? theme.edDanger : theme.edInk }),
1848
1895
  /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, recording === "clone" && styles.chipDanger], children: recording === "clone" ? "Stop" : "Record a sample" })
1849
1896
  ] }),
1850
1897
  /* @__PURE__ */ jsx(Text, { style: styles.cloneHint, children: "Read a sentence or two, naturally." })
1851
1898
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1852
- /* @__PURE__ */ jsx(TextInput, { value: cloneName, onChangeText: setCloneName, placeholder: "Name this voice - e.g. Me", placeholderTextColor: "#5A5A66", style: styles.voiceInstruct, selectionColor: "#8B7CFF" }),
1899
+ /* @__PURE__ */ jsx(TextInput, { value: cloneName, onChangeText: setCloneName, placeholder: "Name this voice - e.g. Me", placeholderTextColor: theme.edInk3, style: styles.voiceInstruct, selectionColor: theme.edAccent }),
1853
1900
  /* @__PURE__ */ jsx(TextInput, { value: cloneSample.referenceText, onChangeText: (referenceText) => setCloneSample(__spreadProps(__spreadValues({}, cloneSample), {
1854
1901
  referenceText
1855
- })), placeholder: "What you said in the sample", placeholderTextColor: "#5A5A66", style: styles.voiceText, selectionColor: "#8B7CFF", multiline: true }),
1902
+ })), placeholder: "What you said in the sample", placeholderTextColor: theme.edInk3, style: styles.voiceText, selectionColor: theme.edAccent, multiline: true }),
1856
1903
  /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1857
1904
  /* @__PURE__ */ jsx(Pressable, { onPress: createCloneVoice, disabled: !cloneName.trim() || !cloneSample.referenceText.trim() || busy !== null, style: [styles.chip, styles.chipActive, (!cloneName.trim() || !cloneSample.referenceText.trim() || busy !== null) && styles.chipDisabled], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipLabelActive], children: busy === "Creating your voice" ? "Creating\u2026" : "Create my voice" }) }),
1858
1905
  /* @__PURE__ */ jsx(Pressable, { onPress: () => setCloneSample(null), style: styles.chip, accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: styles.chipLabel, children: "Discard" }) })
@@ -1877,6 +1924,8 @@ function SoundtrackPanel({
1877
1924
  onSoundtrack,
1878
1925
  onNotice
1879
1926
  }) {
1927
+ const theme = useCanvasTheme();
1928
+ const styles = useMemo(() => makeStyles(theme), [theme]);
1880
1929
  const [prompt, setPrompt] = useState("");
1881
1930
  const [busy, setBusy] = useState(false);
1882
1931
  const generate = useCallback(async () => {
@@ -1904,7 +1953,7 @@ function SoundtrackPanel({
1904
1953
  }, [prompt, runAction, busy, totalSec, onSoundtrack, onNotice]);
1905
1954
  if (!runAction) return null;
1906
1955
  return /* @__PURE__ */ jsx(View, { style: styles.soundtrackSection, children: soundtrack ? /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1907
- /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 14, color: "#8B7CFF" }),
1956
+ /* @__PURE__ */ jsx(MaterialCommunityIcons, { name: "music-note", size: 14, color: theme.edAccent }),
1908
1957
  /* @__PURE__ */ jsx(Text, { style: styles.soundtrackTitle, numberOfLines: 1, children: soundtrack.title || "Soundtrack" }),
1909
1958
  ["mix", "replace"].map((mode) => {
1910
1959
  const active = soundtrack.mode === mode;
@@ -1915,108 +1964,122 @@ function SoundtrackPanel({
1915
1964
  /* @__PURE__ */ jsx(Pressable, { onPress: () => onSoundtrack(null), style: styles.chip, accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, styles.chipDanger], children: "Remove" }) })
1916
1965
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
1917
1966
  /* @__PURE__ */ jsxs(View, { style: styles.panelRow, children: [
1918
- /* @__PURE__ */ jsx(TextInput, { value: prompt, onChangeText: setPrompt, style: [styles.textInput, styles.soundtrackInput], placeholder: "Soundtrack style - e.g. energetic Punjabi hip hop, heavy bassline", placeholderTextColor: "#5A5A66", selectionColor: "#8B7CFF", returnKeyType: "done", editable: !busy }),
1967
+ /* @__PURE__ */ jsx(TextInput, { value: prompt, onChangeText: setPrompt, style: [styles.textInput, styles.soundtrackInput], placeholder: "Soundtrack style - e.g. energetic Punjabi hip hop, heavy bassline", placeholderTextColor: theme.edInk3, selectionColor: theme.edAccent, returnKeyType: "done", editable: !busy }),
1919
1968
  /* @__PURE__ */ jsx(Pressable, { onPress: () => void generate(), disabled: busy || !prompt.trim(), style: [styles.chip, prompt.trim() && !busy ? styles.chipActive : null], accessibilityRole: "button", children: /* @__PURE__ */ jsx(Text, { style: [styles.chipLabel, prompt.trim() && !busy ? styles.chipLabelActive : null], children: busy ? "Composing\u2026" : "Generate" }) })
1920
1969
  ] }),
1921
1970
  /* @__PURE__ */ jsx(Text, { style: styles.panelHint, children: "An original track is composed for the whole cut - describe genre, mood, and energy." })
1922
1971
  ] }) });
1923
1972
  }
1924
- const styles = StyleSheet.create({
1973
+ const makeStyles = themedStyles((theme) => StyleSheet.create({
1925
1974
  root: {
1926
1975
  flex: 1,
1927
- backgroundColor: "#101013"
1976
+ backgroundColor: theme.edPanel
1928
1977
  },
1929
1978
  header: {
1930
1979
  flexDirection: "row",
1931
1980
  alignItems: "center",
1932
- gap: 12,
1933
- height: 52,
1934
- paddingHorizontal: 14,
1981
+ gap: SPACE.xs,
1982
+ height: 56,
1983
+ paddingHorizontal: SPACE.sm,
1935
1984
  borderBottomWidth: StyleSheet.hairlineWidth,
1936
- borderBottomColor: "#26262c",
1937
- backgroundColor: "#17171b"
1985
+ borderBottomColor: theme.edLine,
1986
+ backgroundColor: theme.edPanel
1987
+ },
1988
+ headerCloseBtn: {
1989
+ width: HIT,
1990
+ height: HIT,
1991
+ borderRadius: RADIUS.pill,
1992
+ alignItems: "center",
1993
+ justifyContent: "center"
1938
1994
  },
1939
1995
  headerCopy: {
1940
1996
  flex: 1,
1941
1997
  minWidth: 0,
1942
- gap: 2
1998
+ gap: 2,
1999
+ paddingHorizontal: SPACE.xs
1943
2000
  },
1944
2001
  headerProject: {
1945
- color: "#F2F2F5",
2002
+ color: theme.edInk,
1946
2003
  fontSize: 16,
2004
+ lineHeight: 20,
1947
2005
  fontWeight: "600"
1948
2006
  },
1949
2007
  headerSaved: {
1950
- color: "#C8C8D0",
1951
- fontSize: 12,
2008
+ color: theme.edInk2,
2009
+ fontSize: 11,
2010
+ lineHeight: 14,
1952
2011
  fontWeight: "600"
1953
2012
  },
1954
2013
  headerSavedDim: {
1955
- color: "#8B8B96",
2014
+ color: theme.edInk3,
1956
2015
  fontWeight: "500"
1957
2016
  },
1958
2017
  headerGhostBtn: {
1959
- paddingHorizontal: 8,
1960
- paddingVertical: 8,
1961
- minHeight: 44,
2018
+ minWidth: HIT,
2019
+ minHeight: HIT,
2020
+ paddingHorizontal: SPACE.sm,
2021
+ borderRadius: RADIUS.pill,
2022
+ alignItems: "center",
1962
2023
  justifyContent: "center"
1963
2024
  },
1964
- headerGhost: {
1965
- color: "#E8E8EE",
1966
- fontSize: 14,
1967
- fontWeight: "600"
1968
- },
2025
+ headerGhost: __spreadValues({
2026
+ color: theme.edInk
2027
+ }, TYPE.label),
1969
2028
  headerSpacer: {
1970
2029
  flex: 1,
1971
2030
  minWidth: 8
1972
2031
  },
1973
2032
  exportBtn: {
1974
- paddingHorizontal: 12,
1975
- paddingVertical: 7,
1976
- borderRadius: 8,
1977
- backgroundColor: "#E8E8EE"
2033
+ minHeight: 36,
2034
+ paddingHorizontal: SPACE.lg,
2035
+ marginLeft: SPACE.xs,
2036
+ borderRadius: RADIUS.pill,
2037
+ alignItems: "center",
2038
+ justifyContent: "center",
2039
+ backgroundColor: theme.primary
1978
2040
  },
1979
2041
  exportBtnLabel: {
1980
- color: "#101013",
1981
- fontSize: 13,
2042
+ color: theme.primaryForeground,
2043
+ fontSize: 14,
2044
+ lineHeight: 18,
1982
2045
  fontWeight: "700"
1983
2046
  },
1984
2047
  projectsPane: {
1985
- gap: 10
2048
+ gap: SPACE.sm
1986
2049
  },
1987
2050
  projectActions: {
1988
2051
  flexDirection: "row",
1989
- gap: 8
2052
+ gap: SPACE.sm
1990
2053
  },
1991
2054
  solidBtn: {
1992
2055
  flexDirection: "row",
1993
2056
  alignItems: "center",
1994
2057
  justifyContent: "center",
1995
2058
  gap: 6,
1996
- minHeight: 44,
1997
- paddingHorizontal: 14,
1998
- borderRadius: 10,
1999
- backgroundColor: "#F2F2F5"
2059
+ minHeight: HIT,
2060
+ paddingHorizontal: SPACE.lg,
2061
+ borderRadius: RADIUS.pill,
2062
+ backgroundColor: theme.edInk
2000
2063
  },
2001
2064
  solidBtnLabel: {
2002
- color: "#101013",
2065
+ color: theme.edOnInk,
2003
2066
  fontSize: 14,
2004
2067
  fontWeight: "700"
2005
2068
  },
2006
2069
  projectRow: {
2007
2070
  flexDirection: "row",
2008
2071
  alignItems: "center",
2009
- gap: 8,
2010
- paddingHorizontal: 10,
2011
- paddingVertical: 10,
2012
- borderRadius: 10,
2013
- borderWidth: StyleSheet.hairlineWidth,
2014
- borderColor: "#32323a",
2015
- backgroundColor: "#1a1a20"
2072
+ gap: SPACE.sm,
2073
+ paddingHorizontal: SPACE.md,
2074
+ paddingVertical: SPACE.md,
2075
+ borderRadius: RADIUS.md,
2076
+ borderWidth: 1,
2077
+ borderColor: "transparent",
2078
+ backgroundColor: theme.edRaised
2016
2079
  },
2017
2080
  projectRowOn: {
2018
- borderColor: "#5B6CFF",
2019
- backgroundColor: "#1c2440"
2081
+ borderColor: theme.edAccent,
2082
+ backgroundColor: theme.edAccentSoft
2020
2083
  },
2021
2084
  projectRowCopy: {
2022
2085
  flex: 1,
@@ -2024,21 +2087,22 @@ const styles = StyleSheet.create({
2024
2087
  gap: 2
2025
2088
  },
2026
2089
  projectRowTitle: {
2027
- color: "#F2F2F5",
2090
+ color: theme.edInk,
2028
2091
  fontSize: 14,
2029
2092
  fontWeight: "600"
2030
2093
  },
2031
2094
  projectRowMeta: {
2032
- color: "#8B8B96",
2033
- fontSize: 11
2095
+ color: theme.edInk3,
2096
+ fontSize: 12,
2097
+ lineHeight: 16
2034
2098
  },
2035
2099
  renameInput: {
2036
2100
  flex: 1,
2037
- color: "#F2F2F5",
2101
+ color: theme.edInk,
2038
2102
  fontSize: 14,
2039
2103
  paddingVertical: 4,
2040
2104
  borderBottomWidth: StyleSheet.hairlineWidth,
2041
- borderBottomColor: "#5B6CFF"
2105
+ borderBottomColor: theme.edAccent
2042
2106
  },
2043
2107
  stageEmptyCopy: {
2044
2108
  flex: 1,
@@ -2058,15 +2122,13 @@ const styles = StyleSheet.create({
2058
2122
  alignItems: "center",
2059
2123
  justifyContent: "center",
2060
2124
  gap: 6,
2061
- minHeight: 44,
2062
- paddingHorizontal: 14,
2063
- borderRadius: 10,
2064
- borderWidth: StyleSheet.hairlineWidth,
2065
- borderColor: "#3A3A44",
2066
- backgroundColor: "#1A1A20"
2125
+ minHeight: HIT,
2126
+ paddingHorizontal: SPACE.lg,
2127
+ borderRadius: RADIUS.pill,
2128
+ backgroundColor: theme.edRaisedHi
2067
2129
  },
2068
2130
  ghostBtnLabel: {
2069
- color: "#F2F2F5",
2131
+ color: theme.edInk,
2070
2132
  fontSize: 14,
2071
2133
  fontWeight: "700"
2072
2134
  },
@@ -2085,11 +2147,11 @@ const styles = StyleSheet.create({
2085
2147
  bottom: 76,
2086
2148
  maxHeight: 360,
2087
2149
  zIndex: 40,
2088
- backgroundColor: "#17171b",
2089
- borderTopLeftRadius: 18,
2090
- borderTopRightRadius: 18,
2150
+ backgroundColor: theme.edPanel,
2151
+ borderTopLeftRadius: RADIUS.xl,
2152
+ borderTopRightRadius: RADIUS.xl,
2091
2153
  borderTopWidth: StyleSheet.hairlineWidth,
2092
- borderTopColor: "#2c2c34",
2154
+ borderTopColor: theme.edLine,
2093
2155
  overflow: "hidden",
2094
2156
  shadowColor: "#000",
2095
2157
  shadowOpacity: 0.35,
@@ -2111,30 +2173,30 @@ const styles = StyleSheet.create({
2111
2173
  sheetHead: {
2112
2174
  flexDirection: "row",
2113
2175
  alignItems: "center",
2114
- gap: 8,
2115
- paddingHorizontal: 14,
2116
- height: 44,
2176
+ gap: SPACE.sm,
2177
+ paddingLeft: SPACE.lg,
2178
+ paddingRight: SPACE.sm,
2179
+ height: 52,
2117
2180
  borderBottomWidth: StyleSheet.hairlineWidth,
2118
- borderBottomColor: "#26262c"
2181
+ borderBottomColor: theme.edLine
2119
2182
  },
2120
- sheetTitle: {
2121
- color: "#F2F2F5",
2122
- fontSize: 15,
2123
- fontWeight: "600",
2183
+ sheetTitle: __spreadProps(__spreadValues({
2184
+ color: theme.edInk
2185
+ }, TYPE.title), {
2124
2186
  flex: 1
2125
- },
2187
+ }),
2126
2188
  sheetNewBtn: {
2127
2189
  flexDirection: "row",
2128
2190
  alignItems: "center",
2129
- gap: 4,
2130
- paddingHorizontal: 10,
2131
- height: 30,
2132
- borderRadius: 8,
2133
- backgroundColor: "#F2F2F5"
2191
+ gap: SPACE.xs,
2192
+ paddingHorizontal: SPACE.md,
2193
+ height: 32,
2194
+ borderRadius: RADIUS.pill,
2195
+ backgroundColor: theme.edInk
2134
2196
  },
2135
2197
  sheetNewBtnLabel: {
2136
- color: "#101013",
2137
- fontSize: 12,
2198
+ color: theme.edOnInk,
2199
+ fontSize: 13,
2138
2200
  fontWeight: "700"
2139
2201
  },
2140
2202
  dock: {
@@ -2142,26 +2204,26 @@ const styles = StyleSheet.create({
2142
2204
  flexShrink: 0,
2143
2205
  maxHeight: 76,
2144
2206
  borderTopWidth: StyleSheet.hairlineWidth,
2145
- borderTopColor: "#26262c",
2146
- backgroundColor: "#141418"
2207
+ borderTopColor: theme.edLine,
2208
+ backgroundColor: theme.edPanel
2147
2209
  },
2148
2210
  dockInner: {
2149
2211
  flexDirection: "row",
2150
2212
  alignItems: "center",
2151
- paddingHorizontal: 8,
2152
- gap: 6,
2153
- paddingTop: 8
2213
+ paddingHorizontal: SPACE.sm,
2214
+ gap: SPACE.xs,
2215
+ paddingTop: SPACE.sm
2154
2216
  },
2155
2217
  dockTab: {
2156
- minWidth: 68,
2218
+ minWidth: 64,
2157
2219
  alignItems: "center",
2158
- gap: 4,
2159
- paddingVertical: 8,
2160
- paddingHorizontal: 6,
2161
- borderRadius: 12
2220
+ gap: SPACE.xs,
2221
+ paddingVertical: 6,
2222
+ paddingHorizontal: SPACE.sm,
2223
+ borderRadius: RADIUS.md
2162
2224
  },
2163
2225
  dockTabOn: {
2164
- backgroundColor: "#243a5e"
2226
+ backgroundColor: theme.edRaisedHi
2165
2227
  },
2166
2228
  recordPane: {
2167
2229
  gap: 8
@@ -2169,60 +2231,61 @@ const styles = StyleSheet.create({
2169
2231
  recordRow: {
2170
2232
  flexDirection: "row",
2171
2233
  alignItems: "center",
2172
- gap: 12,
2234
+ gap: SPACE.md,
2173
2235
  minHeight: 52,
2174
- paddingHorizontal: 10,
2175
- borderRadius: 12,
2176
- backgroundColor: "#1A1A20",
2177
- borderWidth: StyleSheet.hairlineWidth,
2178
- borderColor: "#32323A"
2236
+ paddingHorizontal: SPACE.md,
2237
+ borderRadius: RADIUS.md,
2238
+ backgroundColor: theme.edRaised
2179
2239
  },
2180
2240
  recordError: {
2181
- color: "#FECACA",
2241
+ color: theme.edDanger,
2182
2242
  fontSize: 13,
2183
2243
  lineHeight: 18,
2184
- padding: 10,
2185
- borderRadius: 10,
2186
- backgroundColor: "rgba(248, 113, 113, 0.12)"
2244
+ padding: SPACE.md,
2245
+ borderRadius: RADIUS.md,
2246
+ backgroundColor: theme.edDangerSoft
2187
2247
  },
2188
2248
  dockRecord: {
2189
2249
  minWidth: 72
2190
2250
  },
2191
2251
  dockRecordOn: {
2192
- backgroundColor: "rgba(248, 113, 113, 0.16)"
2252
+ backgroundColor: theme.edDangerSoft
2193
2253
  },
2194
2254
  dockRecordLabel: {
2195
- color: "#FECACA"
2255
+ color: theme.edDanger
2196
2256
  },
2197
2257
  dockRule: {
2198
2258
  width: StyleSheet.hairlineWidth,
2199
2259
  height: 28,
2200
- backgroundColor: "#32323A",
2260
+ backgroundColor: theme.edRaisedHi,
2201
2261
  marginHorizontal: 4
2202
2262
  },
2203
2263
  dockLabel: {
2204
- color: "#8B8B96",
2205
- fontSize: 10,
2264
+ color: theme.edInk3,
2265
+ fontSize: 11,
2266
+ lineHeight: 14,
2206
2267
  fontWeight: "600"
2207
2268
  },
2208
2269
  dockLabelOn: {
2209
- color: "#F2F2F5"
2270
+ color: theme.edInk
2210
2271
  },
2211
2272
  captionRow: {
2212
2273
  flexDirection: "row",
2213
2274
  alignItems: "center",
2214
- gap: 8,
2215
- paddingVertical: 10,
2275
+ gap: SPACE.sm,
2276
+ minHeight: HIT,
2277
+ paddingVertical: SPACE.sm,
2216
2278
  borderBottomWidth: StyleSheet.hairlineWidth,
2217
- borderBottomColor: "#26262c"
2279
+ borderBottomColor: theme.edLine
2218
2280
  },
2219
2281
  captionRowText: {
2220
2282
  flex: 1,
2221
- color: "#F2F2F5",
2222
- fontSize: 14
2283
+ color: theme.edInk,
2284
+ fontSize: 14,
2285
+ lineHeight: 20
2223
2286
  },
2224
2287
  captionRowMeta: {
2225
- color: "#8B8B96",
2288
+ color: theme.edInk3,
2226
2289
  fontSize: 11,
2227
2290
  fontVariant: ["tabular-nums"]
2228
2291
  },
@@ -2230,17 +2293,17 @@ const styles = StyleSheet.create({
2230
2293
  maxHeight: 268
2231
2294
  },
2232
2295
  sidePaneInner: {
2233
- paddingBottom: 20
2296
+ paddingBottom: SPACE.xl
2234
2297
  },
2235
2298
  stageCol: {
2236
2299
  flex: 1,
2237
2300
  minHeight: 0,
2238
- backgroundColor: "#101013"
2301
+ backgroundColor: theme.edPanel
2239
2302
  },
2240
2303
  stageWell: {
2241
2304
  flex: 1,
2242
- backgroundColor: "#08080a",
2243
- padding: 10,
2305
+ backgroundColor: theme.edWell,
2306
+ padding: SPACE.md,
2244
2307
  minHeight: 0,
2245
2308
  position: "relative"
2246
2309
  },
@@ -2248,20 +2311,20 @@ const styles = StyleSheet.create({
2248
2311
  flex: 1,
2249
2312
  overflow: "hidden",
2250
2313
  backgroundColor: "#000000",
2251
- borderRadius: 2
2314
+ borderRadius: RADIUS.sm
2252
2315
  },
2253
2316
  stageEmpty: {
2254
2317
  flex: 1,
2255
2318
  position: "relative"
2256
2319
  },
2257
- stageEmptyTitle: {
2258
- color: "#E8E8EE",
2259
- fontSize: 15,
2260
- fontWeight: "600"
2261
- },
2320
+ stageEmptyTitle: __spreadProps(__spreadValues({
2321
+ color: theme.edInk
2322
+ }, TYPE.title), {
2323
+ textAlign: "center"
2324
+ }),
2262
2325
  stageEmptyDetail: {
2263
- color: "#7A7A88",
2264
- fontSize: 12.5,
2326
+ color: theme.edInk3,
2327
+ fontSize: 13,
2265
2328
  textAlign: "center",
2266
2329
  lineHeight: 18
2267
2330
  },
@@ -2275,16 +2338,16 @@ const styles = StyleSheet.create({
2275
2338
  maxWidth: 160,
2276
2339
  paddingHorizontal: 10,
2277
2340
  paddingVertical: 5,
2278
- borderRadius: 8,
2341
+ borderRadius: RADIUS.sm,
2279
2342
  backgroundColor: "rgba(10, 10, 12, 0.55)",
2280
2343
  borderWidth: 1,
2281
2344
  borderColor: "transparent"
2282
2345
  },
2283
2346
  stageTextActive: {
2284
- borderColor: "#8B7CFF"
2347
+ borderColor: theme.edAccent
2285
2348
  },
2286
2349
  stageTextLabel: {
2287
- color: "#F7F7FA",
2350
+ color: "#f7f7fa",
2288
2351
  fontSize: 15,
2289
2352
  fontWeight: "600"
2290
2353
  },
@@ -2299,20 +2362,22 @@ const styles = StyleSheet.create({
2299
2362
  opacity: 0.3
2300
2363
  },
2301
2364
  transportTime: {
2302
- color: "#F7F7FA",
2303
- fontSize: 12.5,
2304
- fontVariant: ["tabular-nums"]
2365
+ color: theme.edInk,
2366
+ fontSize: 12,
2367
+ fontWeight: "600",
2368
+ fontVariant: ["tabular-nums"],
2369
+ marginLeft: SPACE.xs
2305
2370
  },
2306
2371
  transportTimeDim: {
2307
- color: "#7A7A88"
2372
+ color: theme.edInk3
2308
2373
  },
2309
2374
  timeline: {
2310
2375
  height: 200,
2311
2376
  flexGrow: 0,
2312
2377
  flexShrink: 0,
2313
- backgroundColor: "#17171b",
2378
+ backgroundColor: theme.edPanel,
2314
2379
  borderTopWidth: StyleSheet.hairlineWidth,
2315
- borderTopColor: "#26262c"
2380
+ borderTopColor: theme.edLine
2316
2381
  },
2317
2382
  timelineCompact: {
2318
2383
  height: 128
@@ -2321,27 +2386,30 @@ const styles = StyleSheet.create({
2321
2386
  flexDirection: "row",
2322
2387
  alignItems: "center",
2323
2388
  height: 52,
2324
- paddingHorizontal: 6,
2389
+ paddingHorizontal: SPACE.sm,
2390
+ gap: 2,
2325
2391
  borderBottomWidth: StyleSheet.hairlineWidth,
2326
- borderBottomColor: "#26262c"
2392
+ borderBottomColor: theme.edLine
2327
2393
  },
2328
2394
  timelineIconBtn: {
2329
2395
  width: 40,
2330
2396
  height: 40,
2397
+ borderRadius: RADIUS.pill,
2331
2398
  alignItems: "center",
2332
2399
  justifyContent: "center"
2333
2400
  },
2334
2401
  transportBtn: {
2335
2402
  width: 40,
2336
2403
  height: 40,
2404
+ borderRadius: RADIUS.pill,
2337
2405
  alignItems: "center",
2338
2406
  justifyContent: "center"
2339
2407
  },
2340
2408
  transportPlay: {
2341
- width: 44,
2342
- height: 44,
2343
- borderRadius: 22,
2344
- backgroundColor: "#F2F2F5",
2409
+ width: HIT,
2410
+ height: HIT,
2411
+ borderRadius: RADIUS.pill,
2412
+ backgroundColor: theme.edInk,
2345
2413
  alignItems: "center",
2346
2414
  justifyContent: "center",
2347
2415
  marginHorizontal: 4
@@ -2349,33 +2417,33 @@ const styles = StyleSheet.create({
2349
2417
  timelineRule: {
2350
2418
  width: StyleSheet.hairlineWidth,
2351
2419
  height: 16,
2352
- backgroundColor: "#26262c",
2420
+ backgroundColor: theme.edRaisedHi,
2353
2421
  marginHorizontal: 4
2354
2422
  },
2355
2423
  segmentMenu: {
2356
- paddingHorizontal: 10,
2357
- paddingBottom: 8,
2424
+ paddingHorizontal: SPACE.md,
2425
+ paddingBottom: SPACE.sm,
2358
2426
  borderBottomWidth: StyleSheet.hairlineWidth,
2359
- borderBottomColor: "#26262c",
2427
+ borderBottomColor: theme.edLine,
2360
2428
  gap: 2
2361
2429
  },
2362
2430
  segmentMenuRow: {
2363
2431
  flexDirection: "row",
2364
2432
  alignItems: "center",
2365
- gap: 8,
2366
- paddingVertical: 6
2433
+ gap: SPACE.md,
2434
+ minHeight: HIT,
2435
+ paddingVertical: 6,
2436
+ borderRadius: RADIUS.sm
2367
2437
  },
2368
2438
  segmentMenuCopy: {
2369
2439
  flex: 1,
2370
2440
  minWidth: 0
2371
2441
  },
2372
- segmentMenuLabel: {
2373
- color: "#F2F2F5",
2374
- fontSize: 13,
2375
- fontWeight: "600"
2376
- },
2442
+ segmentMenuLabel: __spreadValues({
2443
+ color: theme.edInk
2444
+ }, TYPE.label),
2377
2445
  segmentMenuHint: {
2378
- color: "#8B8B96",
2446
+ color: theme.edInk3,
2379
2447
  fontSize: 11
2380
2448
  },
2381
2449
  timelineBarActions: {
@@ -2387,17 +2455,17 @@ const styles = StyleSheet.create({
2387
2455
  flexDirection: "row",
2388
2456
  height: 56,
2389
2457
  borderBottomWidth: StyleSheet.hairlineWidth,
2390
- borderBottomColor: "#26262c"
2458
+ borderBottomColor: theme.edLine
2391
2459
  },
2392
2460
  laneGutter: {
2393
- width: 108,
2461
+ width: 96,
2394
2462
  flexDirection: "row",
2395
2463
  alignItems: "center",
2396
2464
  gap: 6,
2397
- paddingHorizontal: 8,
2465
+ paddingHorizontal: SPACE.sm,
2398
2466
  borderRightWidth: StyleSheet.hairlineWidth,
2399
- borderRightColor: "#26262c",
2400
- backgroundColor: "#17171b"
2467
+ borderRightColor: theme.edLine,
2468
+ backgroundColor: theme.edPanel
2401
2469
  },
2402
2470
  laneBody: {
2403
2471
  flex: 1,
@@ -2407,11 +2475,10 @@ const styles = StyleSheet.create({
2407
2475
  paddingBottom: 4
2408
2476
  },
2409
2477
  laneLabel: {
2410
- color: "#9A9AA5",
2411
- fontSize: 10,
2412
- fontWeight: "700",
2413
- letterSpacing: 0.6,
2414
- textTransform: "uppercase"
2478
+ color: theme.edInk2,
2479
+ fontSize: 11,
2480
+ lineHeight: 14,
2481
+ fontWeight: "600"
2415
2482
  },
2416
2483
  textTrack: {
2417
2484
  flexDirection: "row",
@@ -2422,20 +2489,21 @@ const styles = StyleSheet.create({
2422
2489
  flexDirection: "row",
2423
2490
  alignItems: "center",
2424
2491
  gap: 5,
2425
- paddingHorizontal: 9,
2426
- paddingVertical: 4,
2427
- borderRadius: 7,
2428
- backgroundColor: "#2A2440",
2492
+ paddingHorizontal: SPACE.sm,
2493
+ paddingVertical: SPACE.xs,
2494
+ borderRadius: RADIUS.pill,
2495
+ backgroundColor: theme.edAccentSoft,
2429
2496
  borderWidth: 1,
2430
2497
  borderColor: "transparent",
2431
2498
  maxWidth: 150
2432
2499
  },
2433
2500
  textPillActive: {
2434
- borderColor: "#8B7CFF"
2501
+ borderColor: theme.edAccent
2435
2502
  },
2436
2503
  textPillLabel: {
2437
- color: "#DCD6FF",
2438
- fontSize: 11.5
2504
+ color: theme.edAccent,
2505
+ fontSize: 11,
2506
+ fontWeight: "600"
2439
2507
  },
2440
2508
  clipTrack: {
2441
2509
  flexDirection: "row",
@@ -2446,31 +2514,31 @@ const styles = StyleSheet.create({
2446
2514
  flexDirection: "row",
2447
2515
  alignItems: "center",
2448
2516
  gap: 8,
2449
- margin: 8,
2450
- paddingHorizontal: 12,
2517
+ margin: SPACE.sm,
2518
+ paddingHorizontal: SPACE.md,
2451
2519
  height: 40,
2452
- borderRadius: 8,
2520
+ borderRadius: RADIUS.sm,
2453
2521
  borderWidth: StyleSheet.hairlineWidth,
2454
- borderColor: "#3A3A44",
2522
+ borderColor: theme.edLineHi,
2455
2523
  borderStyle: "dashed",
2456
- backgroundColor: "#1A1A20"
2524
+ backgroundColor: theme.edRaised
2457
2525
  },
2458
2526
  clipTrackEmptyLabel: {
2459
- color: "#8B8B96",
2527
+ color: theme.edInk3,
2460
2528
  fontSize: 13,
2461
2529
  fontWeight: "600"
2462
2530
  },
2463
2531
  clipBlock: {
2464
2532
  width: 96,
2465
2533
  height: 56,
2466
- borderRadius: 9,
2534
+ borderRadius: RADIUS.sm,
2467
2535
  overflow: "hidden",
2468
- backgroundColor: "#16161A",
2469
- borderWidth: 1.5,
2536
+ backgroundColor: theme.edRaised,
2537
+ borderWidth: 2,
2470
2538
  borderColor: "transparent"
2471
2539
  },
2472
2540
  clipBlockActive: {
2473
- borderColor: "#8B7CFF"
2541
+ borderColor: theme.edInk
2474
2542
  },
2475
2543
  clipMeta: {
2476
2544
  position: "absolute",
@@ -2484,102 +2552,99 @@ const styles = StyleSheet.create({
2484
2552
  backgroundColor: "rgba(10, 10, 12, 0.6)"
2485
2553
  },
2486
2554
  clipMetaText: {
2487
- color: "#E8E8EE",
2488
- fontSize: 9.5,
2555
+ color: "#ffffff",
2556
+ fontSize: 10,
2557
+ fontWeight: "600",
2489
2558
  fontVariant: ["tabular-nums"]
2490
2559
  },
2491
2560
  panel: {
2492
2561
  flex: 1,
2493
2562
  minHeight: 0,
2494
- paddingHorizontal: 10,
2495
- paddingVertical: 10
2563
+ paddingHorizontal: SPACE.lg,
2564
+ paddingVertical: SPACE.md
2496
2565
  },
2497
2566
  mediaPane: {
2498
- gap: 12
2567
+ gap: SPACE.md
2499
2568
  },
2500
2569
  pickRow: {
2501
2570
  flexDirection: "row",
2502
- gap: 8
2571
+ gap: SPACE.sm
2503
2572
  },
2504
2573
  pickBtn: {
2505
2574
  flex: 1,
2506
2575
  alignItems: "center",
2507
2576
  gap: 6,
2508
- paddingVertical: 12,
2509
- borderRadius: 12,
2510
- backgroundColor: "#222228",
2511
- borderWidth: StyleSheet.hairlineWidth,
2512
- borderColor: "#32323a"
2577
+ paddingVertical: SPACE.md,
2578
+ borderRadius: RADIUS.lg,
2579
+ backgroundColor: theme.edRaised
2513
2580
  },
2514
2581
  pickBtnLabel: {
2515
- color: "#E8E8EE",
2582
+ color: theme.edInk,
2516
2583
  fontSize: 12,
2517
2584
  fontWeight: "600"
2518
2585
  },
2519
2586
  dropzone: {
2520
2587
  alignItems: "center",
2521
2588
  gap: 4,
2522
- paddingVertical: 22,
2523
- paddingHorizontal: 10,
2524
- borderRadius: 12,
2589
+ paddingVertical: SPACE.xl,
2590
+ paddingHorizontal: SPACE.md,
2591
+ borderRadius: RADIUS.lg,
2525
2592
  borderWidth: 1,
2526
2593
  borderStyle: "dashed",
2527
- borderColor: "rgba(255,255,255,0.18)",
2528
- backgroundColor: "#16161A"
2529
- },
2530
- dropzoneTitle: {
2531
- color: "#F7F7FA",
2532
- fontSize: 13,
2533
- fontWeight: "600"
2594
+ borderColor: theme.edTint(0.18),
2595
+ backgroundColor: theme.edPanel
2534
2596
  },
2597
+ dropzoneTitle: __spreadValues({
2598
+ color: theme.edInk
2599
+ }, TYPE.label),
2535
2600
  dropzoneHint: {
2536
- color: "#7A7A88",
2601
+ color: theme.edInk3,
2537
2602
  fontSize: 11,
2538
2603
  textAlign: "center"
2539
2604
  },
2540
2605
  mediaGrid: {
2541
2606
  flexDirection: "row",
2542
2607
  flexWrap: "wrap",
2543
- gap: 8,
2544
- paddingBottom: 16
2608
+ gap: SPACE.sm,
2609
+ paddingBottom: SPACE.lg
2545
2610
  },
2546
2611
  panelRow: {
2547
2612
  flexDirection: "row",
2548
2613
  alignItems: "center",
2549
- gap: 8,
2550
- paddingVertical: 4
2614
+ flexWrap: "wrap",
2615
+ gap: SPACE.sm,
2616
+ paddingVertical: SPACE.xs
2551
2617
  },
2552
2618
  panelEmpty: {
2553
- color: "#7A7A88",
2619
+ color: theme.edInk3,
2554
2620
  fontSize: 13
2555
2621
  },
2556
2622
  panelHint: {
2557
- color: "#7A7A88",
2558
- fontSize: 11.5,
2559
- marginTop: 6
2623
+ color: theme.edInk3,
2624
+ fontSize: 12,
2625
+ lineHeight: 16,
2626
+ marginTop: SPACE.sm
2560
2627
  },
2561
2628
  panelBar: {
2562
2629
  flexDirection: "row",
2563
2630
  alignItems: "center",
2564
2631
  justifyContent: "space-between",
2565
- marginBottom: 8
2566
- },
2567
- panelBarTitle: {
2568
- color: "#C8C8D0",
2569
- fontSize: 11,
2570
- fontWeight: "700",
2571
- letterSpacing: 0.6,
2572
- textTransform: "uppercase"
2632
+ marginBottom: SPACE.sm
2573
2633
  },
2634
+ panelBarTitle: __spreadValues({
2635
+ color: theme.edInk
2636
+ }, TYPE.label),
2574
2637
  panelBarBtn: {
2575
2638
  flexDirection: "row",
2576
2639
  alignItems: "center",
2577
- gap: 4,
2578
- paddingHorizontal: 8,
2579
- paddingVertical: 5
2640
+ gap: SPACE.xs,
2641
+ paddingHorizontal: SPACE.md,
2642
+ paddingVertical: 6,
2643
+ borderRadius: RADIUS.pill,
2644
+ backgroundColor: theme.edRaised
2580
2645
  },
2581
2646
  panelBarBtnLabel: {
2582
- color: "#F7F7FA",
2647
+ color: theme.edInk,
2583
2648
  fontSize: 12,
2584
2649
  fontWeight: "600"
2585
2650
  },
@@ -2591,8 +2656,8 @@ const styles = StyleSheet.create({
2591
2656
  paddingHorizontal: 12
2592
2657
  },
2593
2658
  templatesPane: {
2594
- gap: 10,
2595
- paddingBottom: 12
2659
+ gap: SPACE.md,
2660
+ paddingBottom: SPACE.md
2596
2661
  },
2597
2662
  generateField: {
2598
2663
  flexDirection: "row",
@@ -2603,31 +2668,31 @@ const styles = StyleSheet.create({
2603
2668
  paddingTop: 12,
2604
2669
  paddingBottom: 10,
2605
2670
  gap: 10,
2606
- borderRadius: 12,
2607
- backgroundColor: "#141418",
2671
+ borderRadius: RADIUS.lg,
2672
+ backgroundColor: theme.edRaised,
2608
2673
  borderWidth: 1,
2609
- borderColor: "#2E2E38"
2674
+ borderColor: theme.edLine
2610
2675
  },
2611
2676
  generateIcon: {
2612
2677
  marginTop: 2
2613
2678
  },
2614
2679
  generateInput: {
2615
2680
  flex: 1,
2616
- color: "#F2F2F5",
2681
+ color: theme.edInk,
2617
2682
  fontSize: 16,
2618
2683
  lineHeight: 22,
2619
2684
  minHeight: 64,
2620
2685
  padding: 0
2621
2686
  },
2622
2687
  generateBtn: {
2623
- minHeight: 44,
2624
- borderRadius: 12,
2625
- backgroundColor: "#8B7CFF",
2688
+ minHeight: HIT,
2689
+ borderRadius: RADIUS.pill,
2690
+ backgroundColor: theme.edAccent,
2626
2691
  alignItems: "center",
2627
2692
  justifyContent: "center"
2628
2693
  },
2629
2694
  generateBtnLabel: {
2630
- color: "#0A0A0C",
2695
+ color: theme.edOnInk,
2631
2696
  fontSize: 15,
2632
2697
  fontWeight: "700"
2633
2698
  },
@@ -2639,14 +2704,14 @@ const styles = StyleSheet.create({
2639
2704
  paddingLeft: 12,
2640
2705
  paddingRight: 8,
2641
2706
  gap: 8,
2642
- borderRadius: 12,
2643
- backgroundColor: "#141418",
2707
+ borderRadius: RADIUS.pill,
2708
+ backgroundColor: theme.edRaised,
2644
2709
  borderWidth: 1,
2645
- borderColor: "#2E2E38"
2710
+ borderColor: theme.edLine
2646
2711
  },
2647
2712
  searchInput: {
2648
2713
  flex: 1,
2649
- color: "#F2F2F5",
2714
+ color: theme.edInk,
2650
2715
  fontSize: 16,
2651
2716
  paddingVertical: 10
2652
2717
  },
@@ -2660,14 +2725,14 @@ const styles = StyleSheet.create({
2660
2725
  flex: 1
2661
2726
  },
2662
2727
  templateListInner: {
2663
- paddingHorizontal: 12,
2664
- paddingBottom: 16
2728
+ paddingHorizontal: SPACE.lg,
2729
+ paddingBottom: SPACE.lg
2665
2730
  },
2666
2731
  templateRow: {
2667
2732
  flexDirection: "row",
2668
2733
  alignItems: "flex-start",
2669
- gap: 8,
2670
- marginBottom: 10
2734
+ gap: SPACE.md,
2735
+ marginBottom: SPACE.lg
2671
2736
  },
2672
2737
  templateGrid: {
2673
2738
  flexDirection: "row",
@@ -2682,11 +2747,11 @@ const styles = StyleSheet.create({
2682
2747
  templateCover: {
2683
2748
  width: "100%",
2684
2749
  aspectRatio: 16 / 9,
2685
- borderRadius: 8,
2686
- backgroundColor: "#121216"
2750
+ borderRadius: RADIUS.md,
2751
+ backgroundColor: theme.edRaised
2687
2752
  },
2688
2753
  templateTitle: {
2689
- color: "#E8E8EE",
2754
+ color: theme.edInk,
2690
2755
  fontSize: 12,
2691
2756
  fontWeight: "600",
2692
2757
  minHeight: 32
@@ -2703,14 +2768,12 @@ const styles = StyleSheet.create({
2703
2768
  alignItems: "center",
2704
2769
  justifyContent: "center",
2705
2770
  gap: 4,
2706
- borderRadius: 8,
2707
- backgroundColor: "#2A2A32",
2708
- borderWidth: 1,
2709
- borderColor: "#3A3A44",
2771
+ borderRadius: RADIUS.pill,
2772
+ backgroundColor: theme.edRaisedHi,
2710
2773
  paddingHorizontal: 4
2711
2774
  },
2712
2775
  templateGenerateLabel: {
2713
- color: "#F2F2F5",
2776
+ color: theme.edInk,
2714
2777
  fontSize: 11,
2715
2778
  fontWeight: "600"
2716
2779
  },
@@ -2721,14 +2784,12 @@ const styles = StyleSheet.create({
2721
2784
  alignItems: "center",
2722
2785
  justifyContent: "center",
2723
2786
  gap: 4,
2724
- borderRadius: 8,
2725
- backgroundColor: "#141418",
2726
- borderWidth: 1,
2727
- borderColor: "#2E2E38",
2787
+ borderRadius: RADIUS.pill,
2788
+ backgroundColor: theme.edRaised,
2728
2789
  paddingHorizontal: 4
2729
2790
  },
2730
2791
  templatePreviewLabel: {
2731
- color: "#D8D8E0",
2792
+ color: theme.edInk2,
2732
2793
  fontSize: 11,
2733
2794
  fontWeight: "600"
2734
2795
  },
@@ -2751,15 +2812,14 @@ const styles = StyleSheet.create({
2751
2812
  gap: 8
2752
2813
  },
2753
2814
  templatePreviewKicker: {
2754
- color: "#F2F2F5",
2755
- fontSize: 10,
2756
- fontWeight: "700",
2757
- letterSpacing: 0.3,
2815
+ color: "#f7f7fa",
2816
+ fontSize: 11,
2817
+ fontWeight: "600",
2758
2818
  backgroundColor: "rgba(255,255,255,0.15)",
2759
2819
  overflow: "hidden",
2760
2820
  paddingHorizontal: 8,
2761
2821
  paddingVertical: 3,
2762
- borderRadius: 99
2822
+ borderRadius: RADIUS.pill
2763
2823
  },
2764
2824
  templatePreviewBarTitle: {
2765
2825
  flex: 1,
@@ -2773,7 +2833,7 @@ const styles = StyleSheet.create({
2773
2833
  overflow: "hidden",
2774
2834
  paddingHorizontal: 6,
2775
2835
  paddingVertical: 2,
2776
- borderRadius: 4
2836
+ borderRadius: RADIUS.sm / 2
2777
2837
  },
2778
2838
  templatePreviewHint: {
2779
2839
  color: "rgba(255,255,255,0.5)",
@@ -2784,7 +2844,7 @@ const styles = StyleSheet.create({
2784
2844
  minHeight: 220,
2785
2845
  overflow: "hidden",
2786
2846
  backgroundColor: "#000",
2787
- borderRadius: 4
2847
+ borderRadius: RADIUS.md
2788
2848
  },
2789
2849
  templatePreviewMediaFill: {
2790
2850
  flex: 1,
@@ -2807,7 +2867,7 @@ const styles = StyleSheet.create({
2807
2867
  width: "100%",
2808
2868
  paddingTop: 10,
2809
2869
  paddingBottom: 16,
2810
- backgroundColor: "#17171b"
2870
+ backgroundColor: theme.edPanel
2811
2871
  },
2812
2872
  loadMoreBtn: {
2813
2873
  width: "100%",
@@ -2816,36 +2876,34 @@ const styles = StyleSheet.create({
2816
2876
  alignItems: "center",
2817
2877
  justifyContent: "center",
2818
2878
  gap: 8,
2819
- borderRadius: 12,
2820
- backgroundColor: "#E8E8EE"
2879
+ borderRadius: RADIUS.pill,
2880
+ backgroundColor: theme.edInk
2821
2881
  },
2822
2882
  loadMoreBtnPressed: {
2823
2883
  opacity: 0.88
2824
2884
  },
2825
2885
  loadMoreBtnLabel: {
2826
- color: "#101013",
2886
+ color: theme.edOnInk,
2827
2887
  fontSize: 16,
2828
2888
  fontWeight: "700"
2829
2889
  },
2830
2890
  templateFooterHint: {
2831
- color: "#6A6A74",
2891
+ color: theme.edInk3,
2832
2892
  fontSize: 11,
2833
2893
  textAlign: "center",
2834
2894
  paddingVertical: 8
2835
2895
  },
2836
2896
  clipInspector: {
2837
2897
  borderTopWidth: StyleSheet.hairlineWidth,
2838
- borderTopColor: "#26262c",
2839
- backgroundColor: "#141418",
2840
- paddingHorizontal: 12,
2841
- paddingVertical: 8,
2898
+ borderTopColor: theme.edLine,
2899
+ backgroundColor: theme.edPanel,
2900
+ paddingHorizontal: SPACE.lg,
2901
+ paddingVertical: SPACE.sm,
2842
2902
  gap: 6
2843
2903
  },
2844
- clipInspectorTitle: {
2845
- color: "#F2F2F5",
2846
- fontSize: 13,
2847
- fontWeight: "600"
2848
- },
2904
+ clipInspectorTitle: __spreadValues({
2905
+ color: theme.edInk
2906
+ }, TYPE.label),
2849
2907
  busyOverlay: __spreadProps(__spreadValues({}, StyleSheet.absoluteFillObject), {
2850
2908
  zIndex: 80,
2851
2909
  backgroundColor: "rgba(8,8,10,0.62)",
@@ -2856,20 +2914,18 @@ const styles = StyleSheet.create({
2856
2914
  busyCard: {
2857
2915
  width: "100%",
2858
2916
  maxWidth: 320,
2859
- borderRadius: 16,
2860
- backgroundColor: "#1c1c22",
2861
- paddingHorizontal: 20,
2862
- paddingVertical: 22,
2917
+ borderRadius: RADIUS.xl,
2918
+ backgroundColor: theme.edRaised,
2919
+ paddingHorizontal: SPACE.xl,
2920
+ paddingVertical: SPACE.xl,
2863
2921
  alignItems: "center",
2864
2922
  gap: 10
2865
2923
  },
2866
- busyTitle: {
2867
- color: "#F7F7FA",
2868
- fontSize: 16,
2869
- fontWeight: "600"
2870
- },
2924
+ busyTitle: __spreadValues({
2925
+ color: theme.edInk
2926
+ }, TYPE.title),
2871
2927
  busyDetail: {
2872
- color: "#A9A9B4",
2928
+ color: theme.edInk2,
2873
2929
  fontSize: 13,
2874
2930
  textAlign: "center",
2875
2931
  lineHeight: 18
@@ -2878,22 +2934,22 @@ const styles = StyleSheet.create({
2878
2934
  marginTop: 6,
2879
2935
  width: "100%",
2880
2936
  height: 4,
2881
- borderRadius: 99,
2882
- backgroundColor: "#2c2c34",
2937
+ borderRadius: RADIUS.pill,
2938
+ backgroundColor: theme.edRaisedHi,
2883
2939
  overflow: "hidden"
2884
2940
  },
2885
2941
  busyTrackFill: {
2886
2942
  width: "62%",
2887
2943
  height: "100%",
2888
- borderRadius: 99,
2889
- backgroundColor: "#7C8CFF"
2944
+ borderRadius: RADIUS.pill,
2945
+ backgroundColor: theme.edAccent
2890
2946
  },
2891
2947
  sceneSwatch: {
2892
2948
  width: 36,
2893
2949
  height: 36,
2894
- borderRadius: 8,
2950
+ borderRadius: RADIUS.sm,
2895
2951
  borderWidth: 1,
2896
- borderColor: "rgba(255,255,255,0.12)"
2952
+ borderColor: theme.edTint(0.12)
2897
2953
  },
2898
2954
  logoPreview: {
2899
2955
  height: 48,
@@ -2917,41 +2973,39 @@ const styles = StyleSheet.create({
2917
2973
  justifyContent: "center"
2918
2974
  },
2919
2975
  stagePill: {
2920
- paddingHorizontal: 10,
2976
+ paddingHorizontal: SPACE.md,
2921
2977
  paddingVertical: 6,
2922
- borderRadius: 999,
2978
+ borderRadius: RADIUS.pill,
2923
2979
  backgroundColor: "rgba(10,10,12,0.72)"
2924
2980
  },
2925
2981
  stagePillOn: {
2926
- backgroundColor: "#8B7CFF"
2982
+ backgroundColor: theme.edAccent
2927
2983
  },
2928
2984
  stagePillLabel: {
2929
- color: "#F7F7FA",
2985
+ color: "#ffffff",
2930
2986
  fontSize: 11,
2931
2987
  fontWeight: "600"
2932
2988
  },
2933
2989
  stageToolRow: {
2934
- paddingHorizontal: 12,
2990
+ paddingHorizontal: SPACE.md,
2935
2991
  paddingVertical: 6,
2936
- gap: 6,
2992
+ gap: SPACE.sm,
2937
2993
  flexDirection: "row"
2938
2994
  },
2939
2995
  textPreset: {
2940
2996
  minWidth: 108,
2941
- paddingHorizontal: 12,
2997
+ paddingHorizontal: SPACE.md,
2942
2998
  paddingVertical: 10,
2943
- borderRadius: 10,
2944
- backgroundColor: "#16161A",
2945
- borderWidth: 1,
2946
- borderColor: "rgba(255,255,255,0.08)"
2999
+ borderRadius: RADIUS.md,
3000
+ backgroundColor: theme.edRaised
2947
3001
  },
2948
3002
  textPresetSample: {
2949
- color: "#F7F7FA",
3003
+ color: theme.edInk,
2950
3004
  fontSize: 15,
2951
3005
  fontWeight: "700"
2952
3006
  },
2953
3007
  textPresetLabel: {
2954
- color: "#7A7A88",
3008
+ color: theme.edInk3,
2955
3009
  fontSize: 11,
2956
3010
  marginTop: 4
2957
3011
  },
@@ -2959,45 +3013,44 @@ const styles = StyleSheet.create({
2959
3013
  maxHeight: 240
2960
3014
  },
2961
3015
  voiceInstruct: {
2962
- color: "#F7F7FA",
3016
+ color: theme.edInk,
2963
3017
  fontSize: 13,
2964
- paddingHorizontal: 12,
2965
- paddingVertical: 8,
2966
- borderRadius: 9,
2967
- backgroundColor: "#16161A",
3018
+ paddingHorizontal: SPACE.md,
3019
+ paddingVertical: SPACE.sm,
3020
+ borderRadius: RADIUS.md,
3021
+ backgroundColor: theme.edRaised,
2968
3022
  marginTop: 6
2969
3023
  },
2970
3024
  voiceText: {
2971
3025
  minHeight: 64,
2972
- color: "#F7F7FA",
3026
+ color: theme.edInk,
2973
3027
  fontSize: 13.5,
2974
3028
  lineHeight: 19,
2975
- padding: 12,
2976
- borderRadius: 9,
2977
- backgroundColor: "#16161A",
2978
- marginTop: 8,
3029
+ padding: SPACE.md,
3030
+ borderRadius: RADIUS.md,
3031
+ backgroundColor: theme.edRaised,
3032
+ marginTop: SPACE.sm,
2979
3033
  textAlignVertical: "top"
2980
3034
  },
2981
3035
  chipRecording: {
2982
- backgroundColor: "rgba(255, 132, 132, 0.16)"
3036
+ backgroundColor: theme.edDangerSoft
2983
3037
  },
2984
3038
  cloneBox: {
2985
3039
  marginTop: 10,
2986
3040
  paddingTop: 10,
2987
3041
  borderTopWidth: StyleSheet.hairlineWidth,
2988
- borderTopColor: "rgba(255,255,255,0.08)",
3042
+ borderTopColor: theme.edTint(0.08),
2989
3043
  gap: 4
2990
3044
  },
2991
- cloneTitle: {
2992
- color: "#8B7CFF",
2993
- fontSize: 10.5,
2994
- fontWeight: "700",
2995
- letterSpacing: 0.8,
3045
+ cloneTitle: __spreadProps(__spreadValues({
3046
+ color: theme.edInk
3047
+ }, TYPE.label), {
2996
3048
  marginBottom: 2
2997
- },
3049
+ }),
2998
3050
  cloneHint: {
2999
- color: "#7A7A88",
3000
- fontSize: 11.5,
3051
+ color: theme.edInk3,
3052
+ fontSize: 12,
3053
+ lineHeight: 16,
3001
3054
  flexShrink: 1
3002
3055
  },
3003
3056
  voTrack: {
@@ -3009,7 +3062,7 @@ const styles = StyleSheet.create({
3009
3062
  marginBottom: 4
3010
3063
  },
3011
3064
  voTrackLabel: {
3012
- color: "#DCD6FF",
3065
+ color: theme.edAccent,
3013
3066
  fontSize: 11
3014
3067
  },
3015
3068
  mediaTile: {
@@ -3017,29 +3070,29 @@ const styles = StyleSheet.create({
3017
3070
  height: 56
3018
3071
  },
3019
3072
  devicePick: {
3020
- borderRadius: 10,
3073
+ borderRadius: RADIUS.sm,
3021
3074
  borderWidth: 1.5,
3022
- borderColor: "#2A2440",
3075
+ borderColor: theme.edAccentSoft,
3023
3076
  borderStyle: "dashed",
3024
3077
  alignItems: "center",
3025
3078
  justifyContent: "center",
3026
3079
  gap: 3
3027
3080
  },
3028
3081
  devicePickLabel: {
3029
- color: "#8B7CFF",
3030
- fontSize: 10,
3082
+ color: theme.edAccent,
3083
+ fontSize: 11,
3031
3084
  fontWeight: "600"
3032
3085
  },
3033
3086
  mediaThumb: {
3034
3087
  width: 84,
3035
3088
  height: 56,
3036
- borderRadius: 8,
3037
- backgroundColor: "#16161A"
3089
+ borderRadius: RADIUS.sm,
3090
+ backgroundColor: theme.edRaised
3038
3091
  },
3039
3092
  mediaThumbVideo: {
3040
3093
  alignItems: "center",
3041
3094
  justifyContent: "center",
3042
- backgroundColor: "#16161A"
3095
+ backgroundColor: theme.edRaised
3043
3096
  },
3044
3097
  mediaAdd: {
3045
3098
  position: "absolute",
@@ -3048,7 +3101,7 @@ const styles = StyleSheet.create({
3048
3101
  width: 18,
3049
3102
  height: 18,
3050
3103
  borderRadius: 9,
3051
- backgroundColor: "#8B7CFF",
3104
+ backgroundColor: theme.edAccent,
3052
3105
  alignItems: "center",
3053
3106
  justifyContent: "center"
3054
3107
  },
@@ -3060,14 +3113,14 @@ const styles = StyleSheet.create({
3060
3113
  filterThumb: {
3061
3114
  width: 56,
3062
3115
  height: 56,
3063
- borderRadius: 10,
3116
+ borderRadius: RADIUS.md,
3064
3117
  overflow: "hidden",
3065
- backgroundColor: "#16161A",
3066
- borderWidth: 1.5,
3118
+ backgroundColor: theme.edRaised,
3119
+ borderWidth: 2,
3067
3120
  borderColor: "transparent"
3068
3121
  },
3069
3122
  filterThumbActive: {
3070
- borderColor: "#8B7CFF"
3123
+ borderColor: theme.edInk
3071
3124
  },
3072
3125
  filterNoneGlyph: {
3073
3126
  position: "absolute",
@@ -3075,52 +3128,54 @@ const styles = StyleSheet.create({
3075
3128
  top: 19
3076
3129
  },
3077
3130
  filterLabel: {
3078
- color: "#9A9AA5",
3079
- fontSize: 10.5
3131
+ color: theme.edInk3,
3132
+ fontSize: 11
3080
3133
  },
3081
3134
  filterLabelActive: {
3082
- color: "#F7F7FA",
3135
+ color: theme.edInk,
3083
3136
  fontWeight: "600"
3084
3137
  },
3085
3138
  chip: {
3086
3139
  flexDirection: "row",
3087
3140
  alignItems: "center",
3088
- gap: 5,
3089
- paddingHorizontal: 12,
3090
- paddingVertical: 8,
3091
- borderRadius: 9,
3092
- backgroundColor: "#1F1F24"
3141
+ gap: 6,
3142
+ minHeight: 36,
3143
+ paddingHorizontal: SPACE.md,
3144
+ paddingVertical: SPACE.sm,
3145
+ borderRadius: RADIUS.pill,
3146
+ backgroundColor: theme.edRaised
3093
3147
  },
3094
3148
  chipWide: {
3095
3149
  alignSelf: "flex-start"
3096
3150
  },
3097
3151
  chipActive: {
3098
- backgroundColor: "#8B7CFF"
3152
+ backgroundColor: theme.edAccent
3099
3153
  },
3100
3154
  chipDisabled: {
3101
3155
  opacity: 0.35
3102
3156
  },
3103
3157
  chipLabel: {
3104
- color: "#F7F7FA",
3105
- fontSize: 12.5,
3106
- fontWeight: "500"
3158
+ color: theme.edInk,
3159
+ fontSize: 13,
3160
+ fontWeight: "600"
3107
3161
  },
3108
3162
  chipLabelActive: {
3109
- color: "#0A0A0C"
3163
+ color: theme.edOnInk
3110
3164
  },
3111
3165
  chipDanger: {
3112
- color: "#FF6B6B"
3166
+ color: theme.edDanger
3113
3167
  },
3114
3168
  textInput: {
3115
- color: "#F7F7FA",
3116
- fontSize: 14,
3117
- paddingHorizontal: 12,
3118
- paddingVertical: 9,
3119
- borderRadius: 9,
3120
- backgroundColor: "#16161A"
3169
+ color: theme.edInk,
3170
+ fontSize: 15,
3171
+ minHeight: HIT,
3172
+ paddingHorizontal: SPACE.md,
3173
+ paddingVertical: 10,
3174
+ borderRadius: RADIUS.md,
3175
+ backgroundColor: theme.edRaised
3121
3176
  },
3122
3177
  soundtrackSection: {
3123
- marginTop: 10
3178
+ marginTop: SPACE.md
3124
3179
  },
3125
3180
  soundtrackInput: {
3126
3181
  flex: 1,
@@ -3130,23 +3185,23 @@ const styles = StyleSheet.create({
3130
3185
  flexShrink: 1,
3131
3186
  fontSize: 12,
3132
3187
  fontWeight: "600",
3133
- color: "#F7F7FA"
3188
+ color: theme.edInk
3134
3189
  },
3135
3190
  stepper: {
3136
3191
  flexDirection: "row",
3137
3192
  alignItems: "center",
3138
- gap: 9,
3139
- paddingHorizontal: 12,
3140
- paddingVertical: 8,
3141
- borderRadius: 9,
3142
- backgroundColor: "#1F1F24"
3193
+ gap: SPACE.sm,
3194
+ paddingHorizontal: SPACE.md,
3195
+ paddingVertical: 6,
3196
+ borderRadius: RADIUS.pill,
3197
+ backgroundColor: theme.edRaised
3143
3198
  },
3144
3199
  stepperLabel: {
3145
- color: "#9A9AA5",
3146
- fontSize: 11.5
3200
+ color: theme.edInk2,
3201
+ fontSize: 12
3147
3202
  },
3148
3203
  stepperValue: {
3149
- color: "#F7F7FA",
3204
+ color: theme.edInk,
3150
3205
  fontSize: 12.5,
3151
3206
  fontVariant: ["tabular-nums"],
3152
3207
  minWidth: 34,
@@ -3154,8 +3209,8 @@ const styles = StyleSheet.create({
3154
3209
  },
3155
3210
  trimTrack: {
3156
3211
  height: 40,
3157
- borderRadius: 8,
3158
- backgroundColor: "#16161A",
3212
+ borderRadius: RADIUS.sm,
3213
+ backgroundColor: theme.edRaised,
3159
3214
  justifyContent: "center",
3160
3215
  marginBottom: 4
3161
3216
  },
@@ -3163,10 +3218,10 @@ const styles = StyleSheet.create({
3163
3218
  position: "absolute",
3164
3219
  top: 0,
3165
3220
  bottom: 0,
3166
- borderRadius: 8,
3167
- backgroundColor: "rgba(139, 124, 255, 0.28)",
3221
+ borderRadius: RADIUS.sm,
3222
+ backgroundColor: theme.edAccentSoft,
3168
3223
  borderWidth: 1.5,
3169
- borderColor: "#8B7CFF"
3224
+ borderColor: theme.edAccent
3170
3225
  },
3171
3226
  trimHandle: {
3172
3227
  position: "absolute",
@@ -3180,18 +3235,19 @@ const styles = StyleSheet.create({
3180
3235
  width: 4,
3181
3236
  height: 22,
3182
3237
  borderRadius: 2,
3183
- backgroundColor: "#F7F7FA"
3238
+ backgroundColor: theme.edInk
3184
3239
  },
3185
3240
  trimReadout: {
3186
- color: "#9A9AA5",
3187
- fontSize: 10.5,
3241
+ color: theme.edInk2,
3242
+ fontSize: 11,
3188
3243
  textAlign: "center",
3189
3244
  fontVariant: ["tabular-nums"]
3190
3245
  },
3191
3246
  toolbarScroll: {
3192
3247
  flexGrow: 0,
3193
3248
  borderTopWidth: StyleSheet.hairlineWidth,
3194
- borderTopColor: "rgba(255,255,255,0.08)"
3249
+ borderTopColor: theme.edLine,
3250
+ backgroundColor: theme.edPanel
3195
3251
  },
3196
3252
  toolbar: {
3197
3253
  flexDirection: "row",
@@ -3203,39 +3259,42 @@ const styles = StyleSheet.create({
3203
3259
  },
3204
3260
  toolbarTab: {
3205
3261
  alignItems: "center",
3206
- gap: 3,
3207
- minWidth: 56,
3208
- paddingHorizontal: 6
3262
+ gap: SPACE.xs,
3263
+ minWidth: 60,
3264
+ paddingHorizontal: 6,
3265
+ paddingVertical: SPACE.xs,
3266
+ borderRadius: RADIUS.md
3209
3267
  },
3210
3268
  toolbarLabel: {
3211
- color: "#C8C8D0",
3212
- fontSize: 10
3269
+ color: theme.edInk3,
3270
+ fontSize: 11,
3271
+ fontWeight: "600"
3213
3272
  },
3214
3273
  toolbarLabelActive: {
3215
- color: "#8B7CFF",
3216
- fontWeight: "600"
3274
+ color: theme.edInk
3217
3275
  },
3218
3276
  notice: {
3219
3277
  position: "absolute",
3220
- left: 20,
3221
- right: 20,
3278
+ left: SPACE.lg,
3279
+ right: SPACE.lg,
3222
3280
  bottom: 84,
3223
3281
  flexDirection: "row",
3224
3282
  alignItems: "center",
3225
- gap: 12,
3226
- paddingHorizontal: 14,
3227
- paddingVertical: 11,
3228
- borderRadius: 12,
3229
- backgroundColor: "rgba(248, 250, 252, 0.96)"
3283
+ gap: SPACE.md,
3284
+ paddingHorizontal: SPACE.lg,
3285
+ paddingVertical: SPACE.md,
3286
+ borderRadius: RADIUS.lg,
3287
+ backgroundColor: theme.edInk
3230
3288
  },
3231
3289
  noticeText: {
3232
3290
  flex: 1,
3233
- color: "#0f172a",
3234
- fontSize: 13
3291
+ color: theme.edOnInk,
3292
+ fontSize: 13,
3293
+ lineHeight: 18
3235
3294
  },
3236
3295
  noticeDismiss: {
3237
- color: "#6C5CE7",
3296
+ color: theme.edAccent,
3238
3297
  fontSize: 13,
3239
3298
  fontWeight: "600"
3240
3299
  }
3241
- });export{VideoEditorExperience,VideoEditorExperience as default};//# sourceMappingURL=VideoEditorExperience.js.map
3300
+ }));export{VideoEditorExperience,VideoEditorExperience as default};//# sourceMappingURL=VideoEditorExperience.js.map