@vibecuting/video-project-core 0.1.29 → 0.1.31

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 (182) hide show
  1. package/package.json +9 -5
  2. package/src/base/BaseRemotionScene.test.tsx +11 -1
  3. package/src/base/index.ts +1 -0
  4. package/src/base/utils/asset-source.ts +11 -0
  5. package/src/base/utils/background-audio-layer.tsx +90 -0
  6. package/src/base/utils/background-layer.tsx +84 -0
  7. package/src/base/utils/chapter-progress-foreground.tsx +125 -0
  8. package/src/base/utils/chapter-progress-state.test.ts +28 -0
  9. package/src/base/utils/chapter-progress-state.ts +33 -0
  10. package/src/base/utils/display-motion.test.ts +21 -0
  11. package/src/base/utils/display-motion.ts +52 -0
  12. package/src/base/utils/display-surface.ts +57 -0
  13. package/src/base/utils/index.ts +10 -0
  14. package/src/base/utils/subtitle-style.ts +28 -0
  15. package/src/base/utils/video-layer-types.test.ts +145 -0
  16. package/src/base/utils/video-layer-types.ts +220 -0
  17. package/src/base/utils/voice-captions-foreground.tsx +169 -0
  18. package/src/core/intro/index.ts +18 -18
  19. package/src/core/outro/index.ts +33 -33
  20. package/src/core/scene/2dscene/{default-2d-scene-Horizontal.stories.tsx → default-2d-scene/default-2d-scene-Horizontal.stories.tsx} +1 -1
  21. package/src/core/scene/2dscene/{default-2d-scene-Horizontal.tsx → default-2d-scene/default-2d-scene-Horizontal.tsx} +1 -1
  22. package/src/core/scene/2dscene/{default-2d-scene-Landscape.tsx → default-2d-scene/default-2d-scene-Landscape.tsx} +1 -1
  23. package/src/core/scene/2dscene/{default-2d-scene.stories.tsx → default-2d-scene/default-2d-scene.stories.tsx} +1 -1
  24. package/src/core/scene/2dscene/{default-2d-scene.tsx → default-2d-scene/default-2d-scene.tsx} +4 -4
  25. package/src/core/scene/2dscene/index.ts +3 -3
  26. package/src/core/scene/3dscene/{default-3d-scene-Horizontal.stories.tsx → default-3d-scene/default-3d-scene-Horizontal.stories.tsx} +1 -1
  27. package/src/core/scene/3dscene/{default-3d-scene-Horizontal.tsx → default-3d-scene/default-3d-scene-Horizontal.tsx} +1 -1
  28. package/src/core/scene/3dscene/{default-3d-scene-Landscape.tsx → default-3d-scene/default-3d-scene-Landscape.tsx} +1 -1
  29. package/src/core/scene/3dscene/{default-3d-scene.stories.tsx → default-3d-scene/default-3d-scene.stories.tsx} +1 -1
  30. package/src/core/scene/3dscene/{default-3d-scene.tsx → default-3d-scene/default-3d-scene.tsx} +4 -4
  31. package/src/core/scene/3dscene/index.ts +3 -3
  32. package/src/core/scene/html-in-canvas/browser/default-html-in-canvas-browser-scene-Horizontal.stories.tsx +35 -0
  33. package/src/core/scene/html-in-canvas/browser/default-html-in-canvas-browser-scene-Landscape.stories.tsx +80 -0
  34. package/src/core/scene/html-in-canvas/dashboard/default-html-in-canvas-dashboard-scene-Horizontal.stories.tsx +35 -0
  35. package/src/core/scene/html-in-canvas/dashboard/default-html-in-canvas-dashboard-scene-Landscape.stories.tsx +35 -0
  36. package/src/core/scene/html-in-canvas/dashboard-shell/default-dashboard-shell-html-in-canvas-scene.stories.tsx +40 -0
  37. package/src/core/scene/html-in-canvas/dashboard-shell/default-dashboard-shell-html-in-canvas-scene.tsx +44 -0
  38. package/src/core/scene/html-in-canvas/dashboard-shell/index.ts +8 -0
  39. package/src/core/scene/html-in-canvas/docs/default-html-in-canvas-docs-scene-Horizontal.stories.tsx +35 -0
  40. package/src/core/scene/html-in-canvas/docs/default-html-in-canvas-docs-scene-Landscape.stories.tsx +35 -0
  41. package/src/core/scene/html-in-canvas/document/article/default-article-html-in-canvas-scene.stories.tsx +38 -0
  42. package/src/core/scene/html-in-canvas/document/article/default-article-html-in-canvas-scene.tsx +50 -0
  43. package/src/core/scene/html-in-canvas/document/article/index.ts +8 -0
  44. package/src/core/scene/html-in-canvas/document/default-document-html-in-canvas-scene.stories.tsx +40 -0
  45. package/src/core/scene/html-in-canvas/document/default-document-html-in-canvas-scene.tsx +50 -0
  46. package/src/core/scene/html-in-canvas/document/index.ts +31 -0
  47. package/src/core/scene/html-in-canvas/document/report/default-report-html-in-canvas-scene.stories.tsx +38 -0
  48. package/src/core/scene/html-in-canvas/document/report/default-report-html-in-canvas-scene.tsx +51 -0
  49. package/src/core/scene/html-in-canvas/document/report/index.ts +8 -0
  50. package/src/core/scene/html-in-canvas/document/whitepaper/default-whitepaper-html-in-canvas-scene.stories.tsx +41 -0
  51. package/src/core/scene/html-in-canvas/document/whitepaper/default-whitepaper-html-in-canvas-scene.tsx +50 -0
  52. package/src/core/scene/html-in-canvas/document/whitepaper/index.ts +8 -0
  53. package/src/core/scene/html-in-canvas/editor/default-html-in-canvas-editor-scene-Horizontal.stories.tsx +35 -0
  54. package/src/core/scene/html-in-canvas/editor/default-html-in-canvas-editor-scene-Landscape.stories.tsx +35 -0
  55. package/src/core/scene/html-in-canvas/full-bleed/default-full-bleed-html-in-canvas-scene.stories.tsx +40 -0
  56. package/src/core/scene/html-in-canvas/full-bleed/default-full-bleed-html-in-canvas-scene.tsx +38 -0
  57. package/src/core/scene/html-in-canvas/full-bleed/index.ts +8 -0
  58. package/src/core/scene/html-in-canvas/index.ts +6 -0
  59. package/src/core/scene/html-in-canvas/landing-page/default-landing-page-html-in-canvas-scene.stories.tsx +40 -0
  60. package/src/core/scene/html-in-canvas/landing-page/default-landing-page-html-in-canvas-scene.tsx +46 -0
  61. package/src/core/scene/html-in-canvas/landing-page/feature-grid/default-feature-grid-html-in-canvas-scene.stories.tsx +38 -0
  62. package/src/core/scene/html-in-canvas/landing-page/feature-grid/default-feature-grid-html-in-canvas-scene.tsx +41 -0
  63. package/src/core/scene/html-in-canvas/landing-page/feature-grid/index.ts +8 -0
  64. package/src/core/scene/html-in-canvas/landing-page/hero/default-hero-html-in-canvas-scene.stories.tsx +38 -0
  65. package/src/core/scene/html-in-canvas/landing-page/hero/default-hero-html-in-canvas-scene.tsx +46 -0
  66. package/src/core/scene/html-in-canvas/landing-page/hero/index.ts +8 -0
  67. package/src/core/scene/html-in-canvas/landing-page/index.ts +31 -0
  68. package/src/core/scene/html-in-canvas/landing-page/pricing/default-pricing-html-in-canvas-scene.stories.tsx +38 -0
  69. package/src/core/scene/html-in-canvas/landing-page/pricing/default-pricing-html-in-canvas-scene.tsx +42 -0
  70. package/src/core/scene/html-in-canvas/landing-page/pricing/index.ts +8 -0
  71. package/src/core/scene/html-in-canvas/media-wall/collage/default-collage-html-in-canvas-scene.stories.tsx +38 -0
  72. package/src/core/scene/html-in-canvas/media-wall/collage/default-collage-html-in-canvas-scene.tsx +42 -0
  73. package/src/core/scene/html-in-canvas/media-wall/collage/index.ts +8 -0
  74. package/src/core/scene/html-in-canvas/media-wall/default-media-wall-html-in-canvas-scene.stories.tsx +40 -0
  75. package/src/core/scene/html-in-canvas/media-wall/default-media-wall-html-in-canvas-scene.tsx +35 -0
  76. package/src/core/scene/html-in-canvas/media-wall/gallery/default-gallery-html-in-canvas-scene.stories.tsx +38 -0
  77. package/src/core/scene/html-in-canvas/media-wall/gallery/default-gallery-html-in-canvas-scene.tsx +43 -0
  78. package/src/core/scene/html-in-canvas/media-wall/gallery/index.ts +8 -0
  79. package/src/core/scene/html-in-canvas/media-wall/grid/default-grid-html-in-canvas-scene.stories.tsx +38 -0
  80. package/src/core/scene/html-in-canvas/media-wall/grid/default-grid-html-in-canvas-scene.tsx +35 -0
  81. package/src/core/scene/html-in-canvas/media-wall/grid/index.ts +8 -0
  82. package/src/core/scene/html-in-canvas/media-wall/index.ts +31 -0
  83. package/src/core/scene/html-in-canvas/shared/default-html-in-canvas-scene.tsx +1315 -0
  84. package/src/core/scene/index.ts +1 -0
  85. package/src/core/scene/photo/3dvr-photo/{default-3dvr-photo-scene.stories.tsx → default-3dvr-photo-scene/default-3dvr-photo-scene.stories.tsx} +2 -2
  86. package/src/core/scene/photo/3dvr-photo/{default-3dvr-photo-scene.tsx → default-3dvr-photo-scene/default-3dvr-photo-scene.tsx} +4 -4
  87. package/src/core/scene/photo/3dvr-photo/{default-3dvr-photo-scene-Horizontal.stories.tsx → default-3dvr-photo-scene-Horizontal/default-3dvr-photo-scene-Horizontal.stories.tsx} +1 -1
  88. package/src/core/scene/photo/3dvr-photo/{default-3dvr-photo-scene-Horizontal.tsx → default-3dvr-photo-scene-Horizontal/default-3dvr-photo-scene-Horizontal.tsx} +4 -4
  89. package/src/core/scene/photo/3dvr-photo/{default-3dvr-photo-scene-Landscape.tsx → default-3dvr-photo-scene-Landscape/default-3dvr-photo-scene-Landscape.tsx} +4 -4
  90. package/src/core/scene/photo/3dvr-photo/default-dolly-3dvr-photo-scene/default-dolly-3dvr-photo-scene.stories.tsx +38 -0
  91. package/src/core/scene/photo/3dvr-photo/default-dolly-3dvr-photo-scene/default-dolly-3dvr-photo-scene.tsx +36 -0
  92. package/src/core/scene/photo/3dvr-photo/default-orbit-3dvr-photo-scene/default-orbit-3dvr-photo-scene.stories.tsx +38 -0
  93. package/src/core/scene/photo/3dvr-photo/default-orbit-3dvr-photo-scene/default-orbit-3dvr-photo-scene.tsx +34 -0
  94. package/src/core/scene/photo/3dvr-photo/default-poster-3dvr-photo-scene/default-poster-3dvr-photo-scene.stories.tsx +38 -0
  95. package/src/core/scene/photo/3dvr-photo/default-poster-3dvr-photo-scene/default-poster-3dvr-photo-scene.tsx +39 -0
  96. package/src/core/scene/photo/3dvr-photo/index.ts +6 -3
  97. package/src/core/scene/photo/effects-photo/default-chrome-effects-photo-scene/default-chrome-effects-photo-scene.stories.tsx +24 -0
  98. package/src/core/scene/photo/effects-photo/default-chrome-effects-photo-scene/default-chrome-effects-photo-scene.tsx +39 -0
  99. package/src/core/scene/photo/effects-photo/default-cool-tone-effects-photo-scene/default-cool-tone-effects-photo-scene.stories.tsx +24 -0
  100. package/src/core/scene/photo/effects-photo/default-cool-tone-effects-photo-scene/default-cool-tone-effects-photo-scene.tsx +39 -0
  101. package/src/core/scene/photo/effects-photo/default-dream-effects-photo-scene/default-dream-effects-photo-scene.stories.tsx +23 -0
  102. package/src/core/scene/photo/effects-photo/default-dream-effects-photo-scene/default-dream-effects-photo-scene.tsx +37 -0
  103. package/src/core/scene/photo/effects-photo/default-duotone-effects-photo-scene/default-duotone-effects-photo-scene.stories.tsx +25 -0
  104. package/src/core/scene/photo/effects-photo/default-duotone-effects-photo-scene/default-duotone-effects-photo-scene.tsx +41 -0
  105. package/src/core/scene/photo/effects-photo/{default-effects-photo-scene.stories.tsx → default-effects-photo-scene/default-effects-photo-scene.stories.tsx} +2 -2
  106. package/src/core/scene/photo/effects-photo/default-effects-photo-scene/default-effects-photo-scene.tsx +639 -0
  107. package/src/core/scene/photo/effects-photo/{default-effects-photo-scene-Horizontal.stories.tsx → default-effects-photo-scene-Horizontal/default-effects-photo-scene-Horizontal.stories.tsx} +1 -1
  108. package/src/core/scene/photo/effects-photo/{default-effects-photo-scene-Horizontal.tsx → default-effects-photo-scene-Horizontal/default-effects-photo-scene-Horizontal.tsx} +4 -4
  109. package/src/core/scene/photo/effects-photo/{default-effects-photo-scene-Landscape.tsx → default-effects-photo-scene-Landscape/default-effects-photo-scene-Landscape.tsx} +4 -4
  110. package/src/core/scene/photo/effects-photo/default-glow-effects-photo-scene/default-glow-effects-photo-scene.stories.tsx +39 -0
  111. package/src/core/scene/photo/effects-photo/default-glow-effects-photo-scene/default-glow-effects-photo-scene.tsx +37 -0
  112. package/src/core/scene/photo/effects-photo/default-grain-effects-photo-scene/default-grain-effects-photo-scene.stories.tsx +39 -0
  113. package/src/core/scene/photo/effects-photo/default-grain-effects-photo-scene/default-grain-effects-photo-scene.tsx +37 -0
  114. package/src/core/scene/photo/effects-photo/default-halation-effects-photo-scene/default-halation-effects-photo-scene.stories.tsx +24 -0
  115. package/src/core/scene/photo/effects-photo/default-halation-effects-photo-scene/default-halation-effects-photo-scene.tsx +39 -0
  116. package/src/core/scene/photo/effects-photo/default-infrared-effects-photo-scene/default-infrared-effects-photo-scene.stories.tsx +24 -0
  117. package/src/core/scene/photo/effects-photo/default-infrared-effects-photo-scene/default-infrared-effects-photo-scene.tsx +39 -0
  118. package/src/core/scene/photo/effects-photo/default-light-leak-effects-photo-scene/default-light-leak-effects-photo-scene.stories.tsx +24 -0
  119. package/src/core/scene/photo/effects-photo/default-light-leak-effects-photo-scene/default-light-leak-effects-photo-scene.tsx +39 -0
  120. package/src/core/scene/photo/effects-photo/default-mono-effects-photo-scene/default-mono-effects-photo-scene.stories.tsx +23 -0
  121. package/src/core/scene/photo/effects-photo/default-mono-effects-photo-scene/default-mono-effects-photo-scene.tsx +37 -0
  122. package/src/core/scene/photo/effects-photo/default-noir-effects-photo-scene/default-noir-effects-photo-scene.stories.tsx +23 -0
  123. package/src/core/scene/photo/effects-photo/default-noir-effects-photo-scene/default-noir-effects-photo-scene.tsx +37 -0
  124. package/src/core/scene/photo/effects-photo/default-pastel-effects-photo-scene/default-pastel-effects-photo-scene.stories.tsx +24 -0
  125. package/src/core/scene/photo/effects-photo/default-pastel-effects-photo-scene/default-pastel-effects-photo-scene.tsx +39 -0
  126. package/src/core/scene/photo/effects-photo/default-retro-effects-photo-scene/default-retro-effects-photo-scene.stories.tsx +24 -0
  127. package/src/core/scene/photo/effects-photo/default-retro-effects-photo-scene/default-retro-effects-photo-scene.tsx +39 -0
  128. package/src/core/scene/photo/effects-photo/default-sepia-effects-photo-scene/default-sepia-effects-photo-scene.stories.tsx +23 -0
  129. package/src/core/scene/photo/effects-photo/default-sepia-effects-photo-scene/default-sepia-effects-photo-scene.tsx +37 -0
  130. package/src/core/scene/photo/effects-photo/default-soft-focus-effects-photo-scene/default-soft-focus-effects-photo-scene.stories.tsx +39 -0
  131. package/src/core/scene/photo/effects-photo/default-soft-focus-effects-photo-scene/default-soft-focus-effects-photo-scene.tsx +37 -0
  132. package/src/core/scene/photo/effects-photo/default-vibrant-effects-photo-scene/default-vibrant-effects-photo-scene.stories.tsx +23 -0
  133. package/src/core/scene/photo/effects-photo/default-vibrant-effects-photo-scene/default-vibrant-effects-photo-scene.tsx +37 -0
  134. package/src/core/scene/photo/effects-photo/default-vignette-effects-photo-scene/default-vignette-effects-photo-scene.stories.tsx +39 -0
  135. package/src/core/scene/photo/effects-photo/default-vignette-effects-photo-scene/default-vignette-effects-photo-scene.tsx +37 -0
  136. package/src/core/scene/photo/effects-photo/default-warmth-effects-photo-scene/default-warmth-effects-photo-scene.stories.tsx +40 -0
  137. package/src/core/scene/photo/effects-photo/default-warmth-effects-photo-scene/default-warmth-effects-photo-scene.tsx +39 -0
  138. package/src/core/scene/photo/effects-photo/index.ts +21 -3
  139. package/src/core/scene/photo/index.ts +25 -9
  140. package/src/core/scene/photo/{default-live-photo-scene-Horizontal.stories.tsx → live-photo/default-live-photo-scene-Horizontal.stories.tsx} +1 -1
  141. package/src/core/scene/photo/{default-live-photo-scene-Horizontal.tsx → live-photo/default-live-photo-scene-Horizontal.tsx} +1 -1
  142. package/src/core/scene/photo/{default-live-photo-scene-Landscape.tsx → live-photo/default-live-photo-scene-Landscape.tsx} +1 -1
  143. package/src/core/scene/photo/{default-live-photo-scene.stories.tsx → live-photo/default-live-photo-scene.stories.tsx} +1 -1
  144. package/src/core/scene/photo/{default-live-photo-scene.tsx → live-photo/default-live-photo-scene.tsx} +5 -3
  145. package/src/core/scene/photo/photo-storybook.test.tsx +2 -2
  146. package/src/core/scene/photo/{default-photo-strip-scene-Horizontal.tsx → photo-strip/default-photo-strip-scene-Horizontal.tsx} +1 -1
  147. package/src/core/scene/photo/{default-photo-strip-scene-Landscape.tsx → photo-strip/default-photo-strip-scene-Landscape.tsx} +1 -1
  148. package/src/core/scene/photo/{default-photo-strip-scene.stories.tsx → photo-strip/default-photo-strip-scene.stories.tsx} +1 -1
  149. package/src/core/scene/photo/{default-photo-strip-scene.tsx → photo-strip/default-photo-strip-scene.tsx} +2 -2
  150. package/src/core/scene/photo/{default-photo-wall-scene-Horizontal.tsx → photo-wall/default-photo-wall-scene-Horizontal.tsx} +1 -1
  151. package/src/core/scene/photo/{default-photo-wall-scene-Landscape.tsx → photo-wall/default-photo-wall-scene-Landscape.tsx} +1 -1
  152. package/src/core/scene/photo/{default-photo-wall-scene.stories.tsx → photo-wall/default-photo-wall-scene.stories.tsx} +1 -1
  153. package/src/core/scene/photo/{default-photo-wall-scene.tsx → photo-wall/default-photo-wall-scene.tsx} +2 -2
  154. package/src/core/scene/slide/{default-slide-scene-Horizontal.animated.stories.tsx → default-slide-scene/default-slide-scene-Horizontal.animated.stories.tsx} +1 -1
  155. package/src/core/scene/slide/{default-slide-scene-Horizontal.tsx → default-slide-scene/default-slide-scene-Horizontal.tsx} +1 -1
  156. package/src/core/scene/slide/{default-slide-scene-Landscape.tsx → default-slide-scene/default-slide-scene-Landscape.tsx} +1 -1
  157. package/src/core/scene/slide/{default-slide-scene.animated.stories.tsx → default-slide-scene/default-slide-scene.animated.stories.tsx} +1 -1
  158. package/src/core/scene/slide/{default-slide-scene.tsx → default-slide-scene/default-slide-scene.tsx} +5 -5
  159. package/src/core/scene/slide/index.ts +3 -3
  160. package/src/core/scene/video/{default-video-scene-Horizontal.stories.tsx → default-video-scene/default-video-scene-Horizontal.stories.tsx} +1 -1
  161. package/src/core/scene/video/{default-video-scene-Horizontal.tsx → default-video-scene/default-video-scene-Horizontal.tsx} +1 -1
  162. package/src/core/scene/video/{default-video-scene-Landscape.tsx → default-video-scene/default-video-scene-Landscape.tsx} +1 -1
  163. package/src/core/scene/video/{default-video-scene.stories.tsx → default-video-scene/default-video-scene.stories.tsx} +1 -1
  164. package/src/core/scene/video/{default-video-scene.tsx → default-video-scene/default-video-scene.tsx} +3 -3
  165. package/src/core/scene/video/{default-video-split-scene-Horizontal.tsx → default-video-split-scene/default-video-split-scene-Horizontal.tsx} +1 -1
  166. package/src/core/scene/video/{default-video-split-scene-Landscape.tsx → default-video-split-scene/default-video-split-scene-Landscape.tsx} +1 -1
  167. package/src/core/scene/video/{default-video-split-scene.stories.tsx → default-video-split-scene/default-video-split-scene.stories.tsx} +1 -1
  168. package/src/core/scene/video/{default-video-split-scene.tsx → default-video-split-scene/default-video-split-scene.tsx} +2 -2
  169. package/src/core/scene/video/{default-video-wall-scene-Horizontal.tsx → default-video-wall-scene/default-video-wall-scene-Horizontal.tsx} +1 -1
  170. package/src/core/scene/video/{default-video-wall-scene-Landscape.tsx → default-video-wall-scene/default-video-wall-scene-Landscape.tsx} +1 -1
  171. package/src/core/scene/video/{default-video-wall-scene.stories.tsx → default-video-wall-scene/default-video-wall-scene.stories.tsx} +1 -1
  172. package/src/core/scene/video/{default-video-wall-scene.tsx → default-video-wall-scene/default-video-wall-scene.tsx} +2 -2
  173. package/src/core/scene/video/index.ts +9 -9
  174. package/src/lint/index.ts +2 -0
  175. package/src/lint/scene-convention-lint.test.ts +86 -0
  176. package/src/lint/scene-convention-lint.ts +247 -0
  177. package/src/storybook/index.ts +19 -0
  178. package/src/storybook/remotion-preview.test.tsx +53 -0
  179. package/src/storybook/remotion-preview.tsx +85 -11
  180. package/src/core/scene/photo/effects-photo/default-effects-photo-scene.tsx +0 -352
  181. /package/src/core/scene/slide/{default-slide-scene-Horizontal.stories.tsx → default-slide-scene/default-slide-scene-Horizontal.stories.tsx} +0 -0
  182. /package/src/core/scene/slide/{default-slide-scene.stories.tsx → default-slide-scene/default-slide-scene.stories.tsx} +0 -0
@@ -1,5 +1,6 @@
1
1
  export * from './2dscene'
2
2
  export * from './3dscene'
3
+ export * from './html-in-canvas'
3
4
  export * from './photo'
4
5
  export * from './video'
5
6
  export * from './slide'
@@ -1,9 +1,9 @@
1
- import { Default3DVRPhotoSceneLandscape } from './default-3dvr-photo-scene-Landscape'
1
+ import { Default3DVRPhotoSceneLandscape } from '../default-3dvr-photo-scene-Landscape/default-3dvr-photo-scene-Landscape'
2
2
 
3
3
  const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
4
 
5
5
  const meta = {
6
- title: 'core/scene/photo/3dvr-photo/Default3DVRPhotoSceneLandscape',
6
+ title: 'core/scene/photo/3dvr-photo/default-3dvr-photo-scene/Default3DVRPhotoSceneLandscape',
7
7
  component: Default3DVRPhotoSceneLandscape,
8
8
  args: {
9
9
  title: 'Stereo Window',
@@ -3,8 +3,8 @@ import { z } from 'zod'
3
3
  import { VideoComponent, defineScenePluginMetadata } from '@vibecuting/component-project-helper'
4
4
  import { Img, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion'
5
5
 
6
- import { BaseRemotionScene, type BaseRemotionSceneProps, useRemotionSceneRuntime, useSceneConfig } from '../../../../base'
7
- import { defineSceneComponent } from '../../../../plugins/scene-component'
6
+ import { BaseRemotionScene, type BaseRemotionSceneProps, useRemotionSceneRuntime, useSceneConfig } from '../../../../../base'
7
+ import { defineSceneComponent } from '../../../../../plugins/scene-component'
8
8
 
9
9
  export interface Default3DVRPhotoSceneProps extends BaseRemotionSceneProps {
10
10
  sceneId?: string
@@ -30,7 +30,7 @@ export const componentMetadata = defineScenePluginMetadata({
30
30
  resourceKind: 'scene',
31
31
  name: 'Default3DVRPhotoScene',
32
32
  description: 'Photo scene with 3D VR camera controls and perspective motion',
33
- sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene.tsx',
33
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene/default-3dvr-photo-scene.tsx',
34
34
  pluginKey: 'core.photo.3dvr-photo',
35
35
  tags: ['scene', 'photo', '3d', 'vr', 'perspective'],
36
36
  aspectRatio: '16:9',
@@ -89,7 +89,7 @@ export const Default3DVRPhotoScene = VideoComponent(componentMetadata)(
89
89
  const { fps } = useVideoConfig()
90
90
  const portrait = runtime.height > runtime.width
91
91
  const animated = sceneConfig.sceneType === 'animation'
92
- const entrance = sceneConfig.sceneType === 'animation' ? spring({ frame, fps, delay: 4, config: { damping: 18, mass: 0.8, stiffness: 120 } }) : 1
92
+ const entrance = sceneConfig.sceneType === 'animation' ? spring({ frame: Math.max(0, frame - 4), fps, config: { damping: 18, mass: 0.8, stiffness: 120 } }) : 1
93
93
  const orbit = animated ? Math.sin((frame / fps) * Math.PI * 0.55) : 0
94
94
  const cameraYaw = yaw + orbit * 4 + (1 - entrance) * (portrait ? -3 : -4)
95
95
  const cameraPitch = pitch + Math.sin((frame / fps) * Math.PI * 0.35) * 1.5 + (1 - entrance) * 1.6
@@ -3,7 +3,7 @@ import { Default3DVRPhotoSceneHorizontal } from './default-3dvr-photo-scene-Hori
3
3
  const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
4
 
5
5
  const meta = {
6
- title: 'core/scene/photo/3dvr-photo/Default3DVRPhotoSceneHorizontal',
6
+ title: 'core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Horizontal/Default3DVRPhotoSceneHorizontal',
7
7
  component: Default3DVRPhotoSceneHorizontal,
8
8
  args: {
9
9
  title: 'Stereo Window',
@@ -1,20 +1,20 @@
1
- import type { ComponentProps } from 'react'
1
+ import type { Default3DVRPhotoSceneProps } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
2
2
 
3
3
  import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
4
 
5
- import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from './default-3dvr-photo-scene'
5
+ import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
6
6
 
7
7
  export const componentMetadata: ScenePluginMetadata = {
8
8
  ...baseComponentMetadata,
9
9
  name: 'Default3DVRPhotoSceneHorizontal',
10
10
  description: '3D VR photo scene for 9:16 portrait previews with a vertical layout',
11
- sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Horizontal.tsx',
11
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Horizontal/default-3dvr-photo-scene-Horizontal.tsx',
12
12
  aspectRatio: '9:16',
13
13
  tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'horizontal'])),
14
14
  }
15
15
 
16
16
  export const Default3DVRPhotoSceneHorizontal = VideoComponent(componentMetadata)(function Default3DVRPhotoSceneHorizontal(
17
- props: ComponentProps<typeof Default3DVRPhotoScene>,
17
+ props: Default3DVRPhotoSceneProps,
18
18
  ) {
19
19
  return <Default3DVRPhotoScene {...props} />
20
20
  })
@@ -1,20 +1,20 @@
1
- import type { ComponentProps } from 'react'
1
+ import type { Default3DVRPhotoSceneProps } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
2
2
 
3
3
  import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
4
 
5
- import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from './default-3dvr-photo-scene'
5
+ import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
6
6
 
7
7
  export const componentMetadata: ScenePluginMetadata = {
8
8
  ...baseComponentMetadata,
9
9
  name: 'Default3DVRPhotoSceneLandscape',
10
10
  description: '3D VR photo scene for 16:9 landscape previews with a wide cinematic layout',
11
- sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Landscape.tsx',
11
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Landscape/default-3dvr-photo-scene-Landscape.tsx',
12
12
  aspectRatio: '16:9',
13
13
  tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'landscape'])),
14
14
  }
15
15
 
16
16
  export const Default3DVRPhotoSceneLandscape = VideoComponent(componentMetadata)(function Default3DVRPhotoSceneLandscape(
17
- props: ComponentProps<typeof Default3DVRPhotoScene>,
17
+ props: Default3DVRPhotoSceneProps,
18
18
  ) {
19
19
  return <Default3DVRPhotoScene {...props} />
20
20
  })
@@ -0,0 +1,38 @@
1
+ import { DefaultDolly3DVRPhotoScene } from './default-dolly-3dvr-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/3dvr-photo/default-dolly-3dvr-photo-scene/DefaultDolly3DVRPhotoScene',
7
+ component: DefaultDolly3DVRPhotoScene,
8
+ args: {
9
+ title: 'Dolly Frame',
10
+ subtitle: 'A closer dolly cut with tighter focus and deeper framing.',
11
+ badge: 'Dolly',
12
+ imageSrc: photoUrl,
13
+ accent: '#020617',
14
+ secondaryAccent: '#1d4ed8',
15
+ },
16
+ }
17
+
18
+ export default meta
19
+
20
+ export const Default = {
21
+ parameters: {
22
+ scenePreviewAspectRatio: '16:9',
23
+ },
24
+ }
25
+
26
+ export const Animated = {
27
+ parameters: {
28
+ scenePreviewAspectRatio: '16:9',
29
+ scenePreviewMode: 'animation',
30
+ },
31
+ }
32
+
33
+ export const Both = {
34
+ parameters: {
35
+ scenePreviewAspectRatio: '9:16',
36
+ scenePreviewMode: 'both',
37
+ },
38
+ }
@@ -0,0 +1,36 @@
1
+ import type { Default3DVRPhotoSceneProps } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
6
+
7
+ type BaseProps = Default3DVRPhotoSceneProps
8
+
9
+ export interface DefaultDolly3DVRPhotoSceneProps extends BaseProps {
10
+ dollyDepth?: number
11
+ }
12
+
13
+ export const componentMetadata: ScenePluginMetadata = {
14
+ ...baseComponentMetadata,
15
+ name: 'DefaultDolly3DVRPhotoScene',
16
+ description: '3D VR photo scene with a closer dolly feel and tighter framing',
17
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-dolly-3dvr-photo-scene/default-dolly-3dvr-photo-scene.tsx',
18
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'dolly', 'single-style'])),
19
+ }
20
+
21
+ export const DefaultDolly3DVRPhotoScene = VideoComponent(componentMetadata)(function DefaultDolly3DVRPhotoScene(
22
+ props: DefaultDolly3DVRPhotoSceneProps,
23
+ ) {
24
+ const { dollyDepth = 34, depth, zoom, perspective, focusX, focusY, ...rest } = props
25
+
26
+ return (
27
+ <Default3DVRPhotoScene
28
+ {...rest}
29
+ depth={depth ?? dollyDepth}
30
+ zoom={zoom ?? 1.12}
31
+ perspective={perspective ?? 1120}
32
+ focusX={focusX ?? 0.5}
33
+ focusY={focusY ?? 0.48}
34
+ />
35
+ )
36
+ })
@@ -0,0 +1,38 @@
1
+ import { DefaultOrbit3DVRPhotoScene } from './default-orbit-3dvr-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/3dvr-photo/default-orbit-3dvr-photo-scene/DefaultOrbit3DVRPhotoScene',
7
+ component: DefaultOrbit3DVRPhotoScene,
8
+ args: {
9
+ title: 'Orbit Frame',
10
+ subtitle: 'A stronger orbit motion with a cinematic three-dimensional feel.',
11
+ badge: 'Orbit',
12
+ imageSrc: photoUrl,
13
+ accent: '#020617',
14
+ secondaryAccent: '#1d4ed8',
15
+ },
16
+ }
17
+
18
+ export default meta
19
+
20
+ export const Default = {
21
+ parameters: {
22
+ scenePreviewAspectRatio: '16:9',
23
+ },
24
+ }
25
+
26
+ export const Animated = {
27
+ parameters: {
28
+ scenePreviewAspectRatio: '16:9',
29
+ scenePreviewMode: 'animation',
30
+ },
31
+ }
32
+
33
+ export const Both = {
34
+ parameters: {
35
+ scenePreviewAspectRatio: '9:16',
36
+ scenePreviewMode: 'both',
37
+ },
38
+ }
@@ -0,0 +1,34 @@
1
+ import type { Default3DVRPhotoSceneProps } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
6
+
7
+ type BaseProps = Default3DVRPhotoSceneProps
8
+
9
+ export interface DefaultOrbit3DVRPhotoSceneProps extends BaseProps {
10
+ orbitStrength?: number
11
+ }
12
+
13
+ export const componentMetadata: ScenePluginMetadata = {
14
+ ...baseComponentMetadata,
15
+ name: 'DefaultOrbit3DVRPhotoScene',
16
+ description: '3D VR photo scene with stronger orbit motion and parallax depth',
17
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-orbit-3dvr-photo-scene/default-orbit-3dvr-photo-scene.tsx',
18
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'orbit', 'single-style'])),
19
+ }
20
+
21
+ export const DefaultOrbit3DVRPhotoScene = VideoComponent(componentMetadata)(function DefaultOrbit3DVRPhotoScene(
22
+ props: DefaultOrbit3DVRPhotoSceneProps,
23
+ ) {
24
+ const { orbitStrength = 1.25, yaw, pitch, roll, ...rest } = props
25
+
26
+ return (
27
+ <Default3DVRPhotoScene
28
+ {...rest}
29
+ yaw={(yaw ?? 12) * orbitStrength}
30
+ pitch={(pitch ?? 4) + 1}
31
+ roll={(roll ?? 0) + 0.3}
32
+ />
33
+ )
34
+ })
@@ -0,0 +1,38 @@
1
+ import { DefaultPoster3DVRPhotoScene } from './default-poster-3dvr-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/3dvr-photo/default-poster-3dvr-photo-scene/DefaultPoster3DVRPhotoScene',
7
+ component: DefaultPoster3DVRPhotoScene,
8
+ args: {
9
+ title: 'Poster Frame',
10
+ subtitle: 'Flatter framing that behaves more like a print or poster.',
11
+ badge: 'Poster',
12
+ imageSrc: photoUrl,
13
+ accent: '#020617',
14
+ secondaryAccent: '#1d4ed8',
15
+ },
16
+ }
17
+
18
+ export default meta
19
+
20
+ export const Default = {
21
+ parameters: {
22
+ scenePreviewAspectRatio: '16:9',
23
+ },
24
+ }
25
+
26
+ export const Animated = {
27
+ parameters: {
28
+ scenePreviewAspectRatio: '16:9',
29
+ scenePreviewMode: 'animation',
30
+ },
31
+ }
32
+
33
+ export const Both = {
34
+ parameters: {
35
+ scenePreviewAspectRatio: '9:16',
36
+ scenePreviewMode: 'both',
37
+ },
38
+ }
@@ -0,0 +1,39 @@
1
+ import type { Default3DVRPhotoSceneProps } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { Default3DVRPhotoScene, componentMetadata as baseComponentMetadata } from '../default-3dvr-photo-scene/default-3dvr-photo-scene'
6
+
7
+ type BaseProps = Default3DVRPhotoSceneProps
8
+
9
+ export interface DefaultPoster3DVRPhotoSceneProps extends BaseProps {
10
+ posterDepth?: number
11
+ }
12
+
13
+ export const componentMetadata: ScenePluginMetadata = {
14
+ ...baseComponentMetadata,
15
+ name: 'DefaultPoster3DVRPhotoScene',
16
+ description: '3D VR photo scene tuned toward a flatter poster-like presentation',
17
+ sourceFile: 'src/core/scene/photo/3dvr-photo/default-poster-3dvr-photo-scene/default-poster-3dvr-photo-scene.tsx',
18
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'poster', 'single-style'])),
19
+ }
20
+
21
+ export const DefaultPoster3DVRPhotoScene = VideoComponent(componentMetadata)(function DefaultPoster3DVRPhotoScene(
22
+ props: DefaultPoster3DVRPhotoSceneProps,
23
+ ) {
24
+ const { posterDepth = 14, yaw, pitch, roll, perspective, zoom, focusX, focusY, ...rest } = props
25
+
26
+ return (
27
+ <Default3DVRPhotoScene
28
+ {...rest}
29
+ yaw={yaw ?? 6}
30
+ pitch={pitch ?? 1.5}
31
+ roll={roll ?? 0}
32
+ perspective={perspective ?? 840}
33
+ zoom={zoom ?? 1.04}
34
+ depth={posterDepth}
35
+ focusX={focusX ?? 0.5}
36
+ focusY={focusY ?? 0.5}
37
+ />
38
+ )
39
+ })
@@ -1,3 +1,6 @@
1
- export { Default3DVRPhotoScene, componentMetadata as Default3DVRPhotoSceneMetadata } from './default-3dvr-photo-scene'
2
- export { Default3DVRPhotoSceneLandscape, componentMetadata as Default3DVRPhotoSceneLandscapeMetadata } from './default-3dvr-photo-scene-Landscape'
3
- export { Default3DVRPhotoSceneHorizontal, componentMetadata as Default3DVRPhotoSceneHorizontalMetadata } from './default-3dvr-photo-scene-Horizontal'
1
+ export { Default3DVRPhotoScene, componentMetadata as Default3DVRPhotoSceneMetadata } from './default-3dvr-photo-scene/default-3dvr-photo-scene'
2
+ export { Default3DVRPhotoSceneLandscape, componentMetadata as Default3DVRPhotoSceneLandscapeMetadata } from './default-3dvr-photo-scene-Landscape/default-3dvr-photo-scene-Landscape'
3
+ export { Default3DVRPhotoSceneHorizontal, componentMetadata as Default3DVRPhotoSceneHorizontalMetadata } from './default-3dvr-photo-scene-Horizontal/default-3dvr-photo-scene-Horizontal'
4
+ export { DefaultOrbit3DVRPhotoScene, componentMetadata as DefaultOrbit3DVRPhotoSceneMetadata } from './default-orbit-3dvr-photo-scene/default-orbit-3dvr-photo-scene'
5
+ export { DefaultDolly3DVRPhotoScene, componentMetadata as DefaultDolly3DVRPhotoSceneMetadata } from './default-dolly-3dvr-photo-scene/default-dolly-3dvr-photo-scene'
6
+ export { DefaultPoster3DVRPhotoScene, componentMetadata as DefaultPoster3DVRPhotoSceneMetadata } from './default-poster-3dvr-photo-scene/default-poster-3dvr-photo-scene'
@@ -0,0 +1,24 @@
1
+ import { DefaultChromeEffectsPhotoScene } from './default-chrome-effects-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/effects-photo/default-chrome-effects-photo-scene/DefaultChromeEffectsPhotoScene',
7
+ component: DefaultChromeEffectsPhotoScene,
8
+ args: {
9
+ title: 'Chrome Shine',
10
+ subtitle: 'Metallic contrast with brighter highlights and polish.',
11
+ badge: 'Chrome',
12
+ imageSrc: photoUrl,
13
+ intensity: 0.56,
14
+ hue: '#f8fafc',
15
+ accent: '#020617',
16
+ secondaryAccent: '#94a3b8',
17
+ },
18
+ }
19
+
20
+ export default meta
21
+
22
+ export const Default = { parameters: { scenePreviewAspectRatio: '16:9' } }
23
+ export const Animated = { parameters: { scenePreviewAspectRatio: '16:9', scenePreviewMode: 'animation' } }
24
+ export const Both = { parameters: { scenePreviewAspectRatio: '9:16', scenePreviewMode: 'both' } }
@@ -0,0 +1,39 @@
1
+ import type { DefaultEffectsPhotoSceneProps } from '../default-effects-photo-scene/default-effects-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultEffectsPhotoScene, componentMetadata as baseComponentMetadata } from '../default-effects-photo-scene/default-effects-photo-scene'
6
+
7
+ type BaseProps = DefaultEffectsPhotoSceneProps
8
+
9
+ export interface DefaultChromeEffectsPhotoSceneProps extends Omit<BaseProps, 'effects'> {
10
+ intensity?: number
11
+ hue?: string
12
+ }
13
+
14
+ export const componentMetadata: ScenePluginMetadata = {
15
+ ...baseComponentMetadata,
16
+ name: 'DefaultChromeEffectsPhotoScene',
17
+ description: 'Photo scene focused on polished chrome-style contrast and highlights',
18
+ sourceFile: 'src/core/scene/photo/effects-photo/default-chrome-effects-photo-scene/default-chrome-effects-photo-scene.tsx',
19
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'chrome', 'single-effect'])),
20
+ }
21
+
22
+ export const DefaultChromeEffectsPhotoScene = VideoComponent(componentMetadata)(function DefaultChromeEffectsPhotoScene(
23
+ props: DefaultChromeEffectsPhotoSceneProps,
24
+ ) {
25
+ const { intensity = 0.56, hue = '#f8fafc', ...rest } = props
26
+
27
+ return (
28
+ <DefaultEffectsPhotoScene
29
+ {...rest}
30
+ effects={[
31
+ {
32
+ type: 'chrome',
33
+ intensity,
34
+ hue,
35
+ },
36
+ ]}
37
+ />
38
+ )
39
+ })
@@ -0,0 +1,24 @@
1
+ import { DefaultCoolToneEffectsPhotoScene } from './default-cool-tone-effects-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/effects-photo/default-cool-tone-effects-photo-scene/DefaultCoolToneEffectsPhotoScene',
7
+ component: DefaultCoolToneEffectsPhotoScene,
8
+ args: {
9
+ title: 'Cool Tone',
10
+ subtitle: 'Blue-green graded still with a colder film bias.',
11
+ badge: 'Cool Tone',
12
+ imageSrc: photoUrl,
13
+ intensity: 0.66,
14
+ hue: '#0f172a',
15
+ accent: '#020617',
16
+ secondaryAccent: '#38bdf8',
17
+ },
18
+ }
19
+
20
+ export default meta
21
+
22
+ export const Default = { parameters: { scenePreviewAspectRatio: '16:9' } }
23
+ export const Animated = { parameters: { scenePreviewAspectRatio: '16:9', scenePreviewMode: 'animation' } }
24
+ export const Both = { parameters: { scenePreviewAspectRatio: '9:16', scenePreviewMode: 'both' } }
@@ -0,0 +1,39 @@
1
+ import type { DefaultEffectsPhotoSceneProps } from '../default-effects-photo-scene/default-effects-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultEffectsPhotoScene, componentMetadata as baseComponentMetadata } from '../default-effects-photo-scene/default-effects-photo-scene'
6
+
7
+ type BaseProps = DefaultEffectsPhotoSceneProps
8
+
9
+ export interface DefaultCoolToneEffectsPhotoSceneProps extends Omit<BaseProps, 'effects'> {
10
+ intensity?: number
11
+ hue?: string
12
+ }
13
+
14
+ export const componentMetadata: ScenePluginMetadata = {
15
+ ...baseComponentMetadata,
16
+ name: 'DefaultCoolToneEffectsPhotoScene',
17
+ description: 'Photo scene focused on a cool blue-green tonal palette',
18
+ sourceFile: 'src/core/scene/photo/effects-photo/default-cool-tone-effects-photo-scene/default-cool-tone-effects-photo-scene.tsx',
19
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'cool-tone', 'single-effect'])),
20
+ }
21
+
22
+ export const DefaultCoolToneEffectsPhotoScene = VideoComponent(componentMetadata)(function DefaultCoolToneEffectsPhotoScene(
23
+ props: DefaultCoolToneEffectsPhotoSceneProps,
24
+ ) {
25
+ const { intensity = 0.66, hue = '#0f172a', ...rest } = props
26
+
27
+ return (
28
+ <DefaultEffectsPhotoScene
29
+ {...rest}
30
+ effects={[
31
+ {
32
+ type: 'cool-tone',
33
+ intensity,
34
+ hue,
35
+ },
36
+ ]}
37
+ />
38
+ )
39
+ })
@@ -0,0 +1,23 @@
1
+ import { DefaultDreamEffectsPhotoScene } from './default-dream-effects-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/effects-photo/default-dream-effects-photo-scene/DefaultDreamEffectsPhotoScene',
7
+ component: DefaultDreamEffectsPhotoScene,
8
+ args: {
9
+ title: 'Dream Blur',
10
+ subtitle: 'Soft haze and blur for a cinematic dream sequence.',
11
+ badge: 'Dream',
12
+ imageSrc: photoUrl,
13
+ intensity: 0.5,
14
+ accent: '#020617',
15
+ secondaryAccent: '#a855f7',
16
+ },
17
+ }
18
+
19
+ export default meta
20
+
21
+ export const Default = { parameters: { scenePreviewAspectRatio: '16:9' } }
22
+ export const Animated = { parameters: { scenePreviewAspectRatio: '16:9', scenePreviewMode: 'animation' } }
23
+ export const Both = { parameters: { scenePreviewAspectRatio: '9:16', scenePreviewMode: 'both' } }
@@ -0,0 +1,37 @@
1
+ import type { DefaultEffectsPhotoSceneProps } from '../default-effects-photo-scene/default-effects-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultEffectsPhotoScene, componentMetadata as baseComponentMetadata } from '../default-effects-photo-scene/default-effects-photo-scene'
6
+
7
+ type BaseProps = DefaultEffectsPhotoSceneProps
8
+
9
+ export interface DefaultDreamEffectsPhotoSceneProps extends Omit<BaseProps, 'effects'> {
10
+ intensity?: number
11
+ }
12
+
13
+ export const componentMetadata: ScenePluginMetadata = {
14
+ ...baseComponentMetadata,
15
+ name: 'DefaultDreamEffectsPhotoScene',
16
+ description: 'Photo scene focused on a dreamy blur and haze treatment',
17
+ sourceFile: 'src/core/scene/photo/effects-photo/default-dream-effects-photo-scene/default-dream-effects-photo-scene.tsx',
18
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'dream', 'single-effect'])),
19
+ }
20
+
21
+ export const DefaultDreamEffectsPhotoScene = VideoComponent(componentMetadata)(function DefaultDreamEffectsPhotoScene(
22
+ props: DefaultDreamEffectsPhotoSceneProps,
23
+ ) {
24
+ const { intensity = 0.5, ...rest } = props
25
+
26
+ return (
27
+ <DefaultEffectsPhotoScene
28
+ {...rest}
29
+ effects={[
30
+ {
31
+ type: 'dream',
32
+ intensity,
33
+ },
34
+ ]}
35
+ />
36
+ )
37
+ })
@@ -0,0 +1,25 @@
1
+ import { DefaultDuotoneEffectsPhotoScene } from './default-duotone-effects-photo-scene'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+
5
+ const meta = {
6
+ title: 'core/scene/photo/effects-photo/default-duotone-effects-photo-scene/DefaultDuotoneEffectsPhotoScene',
7
+ component: DefaultDuotoneEffectsPhotoScene,
8
+ args: {
9
+ title: 'Duotone Contrast',
10
+ subtitle: 'Blue-orange split tone with strong tonal shaping.',
11
+ badge: 'Duotone',
12
+ imageSrc: photoUrl,
13
+ intensity: 0.76,
14
+ hue: '#2563eb',
15
+ secondaryHue: '#f97316',
16
+ accent: '#020617',
17
+ secondaryAccent: '#1d4ed8',
18
+ },
19
+ }
20
+
21
+ export default meta
22
+
23
+ export const Default = { parameters: { scenePreviewAspectRatio: '16:9' } }
24
+ export const Animated = { parameters: { scenePreviewAspectRatio: '16:9', scenePreviewMode: 'animation' } }
25
+ export const Both = { parameters: { scenePreviewAspectRatio: '9:16', scenePreviewMode: 'both' } }
@@ -0,0 +1,41 @@
1
+ import type { DefaultEffectsPhotoSceneProps } from '../default-effects-photo-scene/default-effects-photo-scene'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultEffectsPhotoScene, componentMetadata as baseComponentMetadata } from '../default-effects-photo-scene/default-effects-photo-scene'
6
+
7
+ type BaseProps = DefaultEffectsPhotoSceneProps
8
+
9
+ export interface DefaultDuotoneEffectsPhotoSceneProps extends Omit<BaseProps, 'effects'> {
10
+ intensity?: number
11
+ hue?: string
12
+ secondaryHue?: string
13
+ }
14
+
15
+ export const componentMetadata: ScenePluginMetadata = {
16
+ ...baseComponentMetadata,
17
+ name: 'DefaultDuotoneEffectsPhotoScene',
18
+ description: 'Photo scene focused on duotone color grading with strong tonal separation',
19
+ sourceFile: 'src/core/scene/photo/effects-photo/default-duotone-effects-photo-scene/default-duotone-effects-photo-scene.tsx',
20
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'duotone', 'single-effect'])),
21
+ }
22
+
23
+ export const DefaultDuotoneEffectsPhotoScene = VideoComponent(componentMetadata)(function DefaultDuotoneEffectsPhotoScene(
24
+ props: DefaultDuotoneEffectsPhotoSceneProps,
25
+ ) {
26
+ const { intensity = 0.76, hue = '#2563eb', secondaryHue = '#f97316', ...rest } = props
27
+
28
+ return (
29
+ <DefaultEffectsPhotoScene
30
+ {...rest}
31
+ effects={[
32
+ {
33
+ type: 'duotone',
34
+ intensity,
35
+ hue,
36
+ secondaryHue,
37
+ },
38
+ ]}
39
+ />
40
+ )
41
+ })
@@ -1,9 +1,9 @@
1
- import { DefaultEffectsPhotoSceneLandscape } from './default-effects-photo-scene-Landscape'
1
+ import { DefaultEffectsPhotoSceneLandscape } from '../default-effects-photo-scene-Landscape/default-effects-photo-scene-Landscape'
2
2
 
3
3
  const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
4
 
5
5
  const meta = {
6
- title: 'core/scene/photo/effects-photo/DefaultEffectsPhotoSceneLandscape',
6
+ title: 'core/scene/photo/effects-photo/default-effects-photo-scene/DefaultEffectsPhotoSceneLandscape',
7
7
  component: DefaultEffectsPhotoSceneLandscape,
8
8
  args: {
9
9
  title: 'Golden Echo',