@vibecuting/video-project-core 0.1.26 → 0.1.28

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 (266) hide show
  1. package/package.json +4 -4
  2. package/src/base/BaseRemotionScene.tsx +4 -3
  3. package/src/core/index.test.ts +40 -0
  4. package/src/core/intro/_shared/intro-layout.test.ts +18 -0
  5. package/src/core/intro/_shared/intro-layout.ts +50 -0
  6. package/src/core/intro/cyberpunk-intro-holo/default-cyberpunk-intro-bumper-Horizontal.tsx +25 -0
  7. package/src/core/intro/cyberpunk-intro-holo/default-cyberpunk-intro-bumper-Landscape.tsx +25 -0
  8. package/src/core/intro/cyberpunk-intro-holo/default-cyberpunk-intro-bumper.stories.tsx +31 -0
  9. package/src/core/intro/cyberpunk-intro-holo/default-cyberpunk-intro-bumper.tsx +118 -0
  10. package/src/core/intro/cyberpunk-intro-holo/index.ts +11 -0
  11. package/src/core/intro/cyberpunk-intro-neon/default-cyberpunk-intro-bumper-Horizontal.tsx +24 -0
  12. package/src/core/intro/cyberpunk-intro-neon/default-cyberpunk-intro-bumper-Landscape.tsx +24 -0
  13. package/src/core/intro/cyberpunk-intro-neon/default-cyberpunk-intro-bumper.stories.tsx +30 -0
  14. package/src/core/intro/cyberpunk-intro-neon/default-cyberpunk-intro-bumper.tsx +108 -0
  15. package/src/core/intro/cyberpunk-intro-neon/index.ts +10 -0
  16. package/src/core/intro/default-cinematic-intro-bumper/default-cinematic-intro-bumper-Horizontal.tsx +24 -0
  17. package/src/core/intro/default-cinematic-intro-bumper/default-cinematic-intro-bumper-Landscape.tsx +24 -0
  18. package/src/core/intro/default-cinematic-intro-bumper/default-cinematic-intro-bumper.stories.tsx +29 -0
  19. package/src/core/intro/default-cinematic-intro-bumper/default-cinematic-intro-bumper.tsx +234 -0
  20. package/src/core/intro/default-cinematic-intro-bumper/index.ts +11 -0
  21. package/src/core/intro/default-festival-intro-bumper/default-festival-intro-bumper-Horizontal.tsx +24 -0
  22. package/src/core/intro/default-festival-intro-bumper/default-festival-intro-bumper-Landscape.tsx +24 -0
  23. package/src/core/intro/default-festival-intro-bumper/default-festival-intro-bumper.stories.tsx +29 -0
  24. package/src/core/intro/default-festival-intro-bumper/default-festival-intro-bumper.tsx +187 -0
  25. package/src/core/intro/default-festival-intro-bumper/index.ts +11 -0
  26. package/src/core/intro/default-intro-bumper/default-intro-bumper-Horizontal.tsx +24 -0
  27. package/src/core/intro/default-intro-bumper/default-intro-bumper-Landscape.tsx +24 -0
  28. package/src/core/intro/default-intro-bumper/default-intro-bumper.stories.tsx +41 -0
  29. package/src/core/intro/default-intro-bumper/default-intro-bumper.tsx +256 -0
  30. package/src/core/intro/default-intro-bumper/index.ts +11 -0
  31. package/src/core/intro/default-noir-intro-bumper/default-noir-intro-bumper-Horizontal.tsx +24 -0
  32. package/src/core/intro/default-noir-intro-bumper/default-noir-intro-bumper-Landscape.tsx +24 -0
  33. package/src/core/intro/default-noir-intro-bumper/default-noir-intro-bumper.stories.tsx +29 -0
  34. package/src/core/intro/default-noir-intro-bumper/default-noir-intro-bumper.tsx +122 -0
  35. package/src/core/intro/default-noir-intro-bumper/index.ts +11 -0
  36. package/src/core/intro/default-trailer-intro-bumper/default-trailer-intro-bumper-Horizontal.tsx +24 -0
  37. package/src/core/intro/default-trailer-intro-bumper/default-trailer-intro-bumper-Landscape.tsx +24 -0
  38. package/src/core/intro/default-trailer-intro-bumper/default-trailer-intro-bumper.stories.tsx +29 -0
  39. package/src/core/intro/default-trailer-intro-bumper/default-trailer-intro-bumper.tsx +181 -0
  40. package/src/core/intro/default-trailer-intro-bumper/index.ts +11 -0
  41. package/src/core/intro/documentary-intro-observation/default-documentary-intro-bumper-Horizontal.tsx +18 -0
  42. package/src/core/intro/documentary-intro-observation/default-documentary-intro-bumper-Landscape.tsx +18 -0
  43. package/src/core/intro/documentary-intro-observation/default-documentary-intro-bumper.stories.tsx +31 -0
  44. package/src/core/intro/documentary-intro-observation/default-documentary-intro-bumper.tsx +158 -0
  45. package/src/core/intro/documentary-intro-observation/index.ts +10 -0
  46. package/src/core/intro/family-intro-reunion/default-family-intro-bumper-Horizontal.tsx +18 -0
  47. package/src/core/intro/family-intro-reunion/default-family-intro-bumper-Landscape.tsx +18 -0
  48. package/src/core/intro/family-intro-reunion/default-family-intro-bumper.stories.tsx +43 -0
  49. package/src/core/intro/family-intro-reunion/default-family-intro-bumper.tsx +165 -0
  50. package/src/core/intro/family-intro-reunion/index.ts +10 -0
  51. package/src/core/intro/festival-intro-spotlight/default-festival-intro-bumper-Horizontal.tsx +1 -0
  52. package/src/core/intro/festival-intro-spotlight/default-festival-intro-bumper-Landscape.tsx +1 -0
  53. package/src/core/intro/festival-intro-spotlight/default-festival-intro-bumper.stories.tsx +30 -0
  54. package/src/core/intro/festival-intro-spotlight/default-festival-intro-bumper.tsx +105 -0
  55. package/src/core/intro/festival-intro-spotlight/index.ts +10 -0
  56. package/src/core/intro/index.test.ts +45 -0
  57. package/src/core/intro/index.ts +17 -0
  58. package/src/core/intro/noir-intro-city/default-noir-intro-bumper-Horizontal.tsx +24 -0
  59. package/src/core/intro/noir-intro-city/default-noir-intro-bumper-Landscape.tsx +24 -0
  60. package/src/core/intro/noir-intro-city/default-noir-intro-bumper.stories.tsx +31 -0
  61. package/src/core/intro/noir-intro-city/default-noir-intro-bumper.tsx +96 -0
  62. package/src/core/intro/noir-intro-city/index.ts +10 -0
  63. package/src/core/intro/noir-intro-deluxe/default-noir-intro-bumper-Horizontal.tsx +1 -0
  64. package/src/core/intro/noir-intro-deluxe/default-noir-intro-bumper-Landscape.tsx +1 -0
  65. package/src/core/intro/noir-intro-deluxe/default-noir-intro-bumper.stories.tsx +31 -0
  66. package/src/core/intro/noir-intro-deluxe/default-noir-intro-bumper.tsx +117 -0
  67. package/src/core/intro/noir-intro-deluxe/index.ts +10 -0
  68. package/src/core/intro/sci-fi-intro/default-sci-fi-intro-bumper-Horizontal.tsx +1 -0
  69. package/src/core/intro/sci-fi-intro/default-sci-fi-intro-bumper-Landscape.tsx +1 -0
  70. package/src/core/intro/sci-fi-intro/default-sci-fi-intro-bumper.stories.tsx +48 -0
  71. package/src/core/intro/sci-fi-intro/default-sci-fi-intro-bumper.tsx +105 -0
  72. package/src/core/intro/sci-fi-intro/index.ts +10 -0
  73. package/src/core/intro/thriller-intro-suspense/default-thriller-intro-bumper-Horizontal.tsx +18 -0
  74. package/src/core/intro/thriller-intro-suspense/default-thriller-intro-bumper-Landscape.tsx +18 -0
  75. package/src/core/intro/thriller-intro-suspense/default-thriller-intro-bumper.stories.tsx +31 -0
  76. package/src/core/intro/thriller-intro-suspense/default-thriller-intro-bumper.tsx +155 -0
  77. package/src/core/intro/thriller-intro-suspense/index.ts +10 -0
  78. package/src/core/intro/trailer-intro-premiere/default-trailer-intro-bumper-Horizontal.tsx +1 -0
  79. package/src/core/intro/trailer-intro-premiere/default-trailer-intro-bumper-Landscape.tsx +1 -0
  80. package/src/core/intro/trailer-intro-premiere/default-trailer-intro-bumper.stories.tsx +30 -0
  81. package/src/core/intro/trailer-intro-premiere/default-trailer-intro-bumper.tsx +104 -0
  82. package/src/core/intro/trailer-intro-premiere/index.ts +10 -0
  83. package/src/core/intro/travel-intro-journey/default-travel-intro-bumper-Horizontal.tsx +18 -0
  84. package/src/core/intro/travel-intro-journey/default-travel-intro-bumper-Landscape.tsx +18 -0
  85. package/src/core/intro/travel-intro-journey/default-travel-intro-bumper.stories.tsx +43 -0
  86. package/src/core/intro/travel-intro-journey/default-travel-intro-bumper.tsx +158 -0
  87. package/src/core/intro/travel-intro-journey/index.ts +10 -0
  88. package/src/core/intro/western-intro/default-western-intro-bumper-Horizontal.tsx +24 -0
  89. package/src/core/intro/western-intro/default-western-intro-bumper-Landscape.tsx +24 -0
  90. package/src/core/intro/western-intro/default-western-intro-bumper.stories.tsx +29 -0
  91. package/src/core/intro/western-intro/default-western-intro-bumper.tsx +146 -0
  92. package/src/core/intro/western-intro/index.ts +4 -0
  93. package/src/core/intro/western-intro-gangster/default-western-intro-bumper-Horizontal.tsx +25 -0
  94. package/src/core/intro/western-intro-gangster/default-western-intro-bumper-Landscape.tsx +25 -0
  95. package/src/core/intro/western-intro-gangster/default-western-intro-bumper.stories.tsx +31 -0
  96. package/src/core/intro/western-intro-gangster/default-western-intro-bumper.tsx +105 -0
  97. package/src/core/intro/western-intro-gangster/index.ts +11 -0
  98. package/src/core/outro/_shared/outro-layout.test.ts +32 -0
  99. package/src/core/outro/_shared/outro-layout.ts +72 -0
  100. package/src/core/outro/award-outro-celebration/default-award-outro-bumper-Horizontal.tsx +18 -0
  101. package/src/core/outro/award-outro-celebration/default-award-outro-bumper-Landscape.tsx +18 -0
  102. package/src/core/outro/award-outro-celebration/default-award-outro-bumper.stories.tsx +42 -0
  103. package/src/core/outro/award-outro-celebration/default-award-outro-bumper.tsx +152 -0
  104. package/src/core/outro/award-outro-celebration/index.ts +10 -0
  105. package/src/core/outro/blackout-outro-finale/default-blackout-outro-bumper-Horizontal.tsx +1 -0
  106. package/src/core/outro/blackout-outro-finale/default-blackout-outro-bumper-Landscape.tsx +1 -0
  107. package/src/core/outro/blackout-outro-finale/default-blackout-outro-bumper.stories.tsx +28 -0
  108. package/src/core/outro/blackout-outro-finale/default-blackout-outro-bumper.tsx +71 -0
  109. package/src/core/outro/blackout-outro-finale/index.ts +10 -0
  110. package/src/core/outro/credits-roll-outro-epic/default-credits-roll-outro-Horizontal.tsx +24 -0
  111. package/src/core/outro/credits-roll-outro-epic/default-credits-roll-outro-Landscape.tsx +24 -0
  112. package/src/core/outro/credits-roll-outro-epic/default-credits-roll-outro.stories.tsx +31 -0
  113. package/src/core/outro/credits-roll-outro-epic/default-credits-roll-outro.tsx +106 -0
  114. package/src/core/outro/credits-roll-outro-epic/index.ts +10 -0
  115. package/src/core/outro/credits-roll-outro-premium/default-credits-roll-outro-Horizontal.tsx +1 -0
  116. package/src/core/outro/credits-roll-outro-premium/default-credits-roll-outro-Landscape.tsx +1 -0
  117. package/src/core/outro/credits-roll-outro-premium/default-credits-roll-outro.stories.tsx +30 -0
  118. package/src/core/outro/credits-roll-outro-premium/default-credits-roll-outro.tsx +88 -0
  119. package/src/core/outro/credits-roll-outro-premium/index.ts +10 -0
  120. package/src/core/outro/credits-roll-outro-royal/default-credits-roll-outro-Horizontal.tsx +25 -0
  121. package/src/core/outro/credits-roll-outro-royal/default-credits-roll-outro-Landscape.tsx +25 -0
  122. package/src/core/outro/credits-roll-outro-royal/default-credits-roll-outro.stories.tsx +32 -0
  123. package/src/core/outro/credits-roll-outro-royal/default-credits-roll-outro.tsx +110 -0
  124. package/src/core/outro/credits-roll-outro-royal/index.ts +11 -0
  125. package/src/core/outro/default-blackout-outro-bumper/default-blackout-outro-bumper-Horizontal.tsx +22 -0
  126. package/src/core/outro/default-blackout-outro-bumper/default-blackout-outro-bumper-Landscape.tsx +22 -0
  127. package/src/core/outro/default-blackout-outro-bumper/default-blackout-outro-bumper.stories.tsx +48 -0
  128. package/src/core/outro/default-blackout-outro-bumper/default-blackout-outro-bumper.tsx +124 -0
  129. package/src/core/outro/default-blackout-outro-bumper/index.ts +11 -0
  130. package/src/core/outro/default-credits-roll-outro/default-credits-roll-outro-Horizontal.tsx +22 -0
  131. package/src/core/outro/default-credits-roll-outro/default-credits-roll-outro-Landscape.tsx +22 -0
  132. package/src/core/outro/default-credits-roll-outro/default-credits-roll-outro.stories.tsx +48 -0
  133. package/src/core/outro/default-credits-roll-outro/default-credits-roll-outro.tsx +208 -0
  134. package/src/core/outro/default-credits-roll-outro/index.ts +11 -0
  135. package/src/core/outro/default-epilogue-outro/default-epilogue-outro-Horizontal.tsx +22 -0
  136. package/src/core/outro/default-epilogue-outro/default-epilogue-outro-Landscape.tsx +22 -0
  137. package/src/core/outro/default-epilogue-outro/default-epilogue-outro.stories.tsx +48 -0
  138. package/src/core/outro/default-epilogue-outro/default-epilogue-outro.tsx +115 -0
  139. package/src/core/outro/default-epilogue-outro/index.ts +11 -0
  140. package/src/core/outro/default-outro-bumper/default-outro-bumper-Horizontal.tsx +22 -0
  141. package/src/core/outro/default-outro-bumper/default-outro-bumper-Landscape.tsx +22 -0
  142. package/src/core/outro/default-outro-bumper/default-outro-bumper.stories.tsx +48 -0
  143. package/src/core/outro/default-outro-bumper/default-outro-bumper.tsx +159 -0
  144. package/src/core/outro/default-outro-bumper/index.ts +11 -0
  145. package/src/core/outro/default-sunset-outro-bumper/default-sunset-outro-bumper-Horizontal.tsx +22 -0
  146. package/src/core/outro/default-sunset-outro-bumper/default-sunset-outro-bumper-Landscape.tsx +22 -0
  147. package/src/core/outro/default-sunset-outro-bumper/default-sunset-outro-bumper.stories.tsx +48 -0
  148. package/src/core/outro/default-sunset-outro-bumper/default-sunset-outro-bumper.tsx +183 -0
  149. package/src/core/outro/default-sunset-outro-bumper/index.ts +11 -0
  150. package/src/core/outro/festival-outro-encore/default-festival-outro-bumper-Horizontal.tsx +18 -0
  151. package/src/core/outro/festival-outro-encore/default-festival-outro-bumper-Landscape.tsx +18 -0
  152. package/src/core/outro/festival-outro-encore/default-festival-outro-bumper.stories.tsx +31 -0
  153. package/src/core/outro/festival-outro-encore/default-festival-outro-bumper.tsx +130 -0
  154. package/src/core/outro/festival-outro-encore/index.ts +10 -0
  155. package/src/core/outro/heist-outro/default-heist-outro-bumper-Horizontal.tsx +24 -0
  156. package/src/core/outro/heist-outro/default-heist-outro-bumper-Landscape.tsx +24 -0
  157. package/src/core/outro/heist-outro/default-heist-outro-bumper.stories.tsx +29 -0
  158. package/src/core/outro/heist-outro/default-heist-outro-bumper.tsx +160 -0
  159. package/src/core/outro/heist-outro/index.ts +4 -0
  160. package/src/core/outro/index.test.ts +88 -0
  161. package/src/core/outro/index.ts +73 -0
  162. package/src/core/outro/memoir-outro-reflection/default-memoir-outro-bumper-Horizontal.tsx +18 -0
  163. package/src/core/outro/memoir-outro-reflection/default-memoir-outro-bumper-Landscape.tsx +18 -0
  164. package/src/core/outro/memoir-outro-reflection/default-memoir-outro-bumper.stories.tsx +42 -0
  165. package/src/core/outro/memoir-outro-reflection/default-memoir-outro-bumper.tsx +158 -0
  166. package/src/core/outro/memoir-outro-reflection/index.ts +10 -0
  167. package/src/core/outro/romance-outro/default-romance-outro-bumper-Horizontal.tsx +1 -0
  168. package/src/core/outro/romance-outro/default-romance-outro-bumper-Landscape.tsx +1 -0
  169. package/src/core/outro/romance-outro/default-romance-outro-bumper.stories.tsx +48 -0
  170. package/src/core/outro/romance-outro/default-romance-outro-bumper.tsx +123 -0
  171. package/src/core/outro/romance-outro/index.ts +10 -0
  172. package/src/core/outro/sunset-outro-coda/default-sunset-outro-bumper-Horizontal.tsx +1 -0
  173. package/src/core/outro/sunset-outro-coda/default-sunset-outro-bumper-Landscape.tsx +1 -0
  174. package/src/core/outro/sunset-outro-coda/default-sunset-outro-bumper.stories.tsx +30 -0
  175. package/src/core/outro/sunset-outro-coda/default-sunset-outro-bumper.tsx +75 -0
  176. package/src/core/outro/sunset-outro-coda/index.ts +10 -0
  177. package/src/core/scene/2dscene/default-2d-scene-Horizontal.stories.tsx +1 -1
  178. package/src/core/scene/2dscene/default-2d-scene.stories.tsx +1 -1
  179. package/src/core/scene/3dscene/default-3d-scene-Horizontal.stories.tsx +1 -1
  180. package/src/core/scene/3dscene/default-3d-scene.stories.tsx +1 -1
  181. package/src/core/scene/index.ts +3 -0
  182. package/src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Horizontal.stories.tsx +46 -0
  183. package/src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Horizontal.tsx +20 -0
  184. package/src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene-Landscape.tsx +20 -0
  185. package/src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene.stories.tsx +46 -0
  186. package/src/core/scene/photo/3dvr-photo/default-3dvr-photo-scene.tsx +255 -0
  187. package/src/core/scene/photo/3dvr-photo/index.ts +3 -0
  188. package/src/core/scene/photo/default-live-photo-scene-Horizontal.stories.tsx +33 -0
  189. package/src/core/scene/photo/default-live-photo-scene-Horizontal.tsx +20 -0
  190. package/src/core/scene/photo/default-live-photo-scene-Landscape.tsx +20 -0
  191. package/src/core/scene/photo/default-live-photo-scene.stories.tsx +33 -0
  192. package/src/core/scene/photo/default-live-photo-scene.tsx +432 -0
  193. package/src/core/scene/photo/default-photo-strip-scene-Horizontal.tsx +20 -0
  194. package/src/core/scene/photo/default-photo-strip-scene-Landscape.tsx +20 -0
  195. package/src/core/scene/photo/default-photo-strip-scene.stories.tsx +38 -0
  196. package/src/core/scene/photo/default-photo-strip-scene.tsx +19 -0
  197. package/src/core/scene/photo/default-photo-wall-scene-Horizontal.tsx +20 -0
  198. package/src/core/scene/photo/default-photo-wall-scene-Landscape.tsx +20 -0
  199. package/src/core/scene/photo/default-photo-wall-scene.stories.tsx +38 -0
  200. package/src/core/scene/photo/default-photo-wall-scene.tsx +19 -0
  201. package/src/core/scene/photo/effects-photo/default-effects-photo-scene-Horizontal.stories.tsx +44 -0
  202. package/src/core/scene/photo/effects-photo/default-effects-photo-scene-Horizontal.tsx +20 -0
  203. package/src/core/scene/photo/effects-photo/default-effects-photo-scene-Landscape.tsx +20 -0
  204. package/src/core/scene/photo/effects-photo/default-effects-photo-scene.stories.tsx +44 -0
  205. package/src/core/scene/photo/effects-photo/default-effects-photo-scene.tsx +352 -0
  206. package/src/core/scene/photo/effects-photo/index.ts +3 -0
  207. package/src/core/scene/photo/index.ts +25 -0
  208. package/src/core/scene/photo/photo-storybook.test.tsx +112 -0
  209. package/src/core/scene/slide/_shared/index.ts +27 -0
  210. package/src/core/scene/slide/_shared/media-templates.test.ts +47 -0
  211. package/src/core/scene/slide/_shared/media-templates.tsx +324 -0
  212. package/src/core/scene/slide/default-slide-scene-Horizontal.animated.stories.tsx +1 -1
  213. package/src/core/scene/slide/default-slide-scene-Horizontal.stories.tsx +1 -1
  214. package/src/core/scene/slide/default-slide-scene.animated.stories.tsx +1 -1
  215. package/src/core/scene/slide/default-slide-scene.stories.tsx +1 -1
  216. package/src/core/scene/slide/index.test.ts +28 -0
  217. package/src/core/scene/slide/index.ts +14 -0
  218. package/src/core/scene/slide/person-intro/default-person-intro-duo-slide.tsx +19 -0
  219. package/src/core/scene/slide/person-intro/default-person-intro-group-slide.tsx +168 -0
  220. package/src/core/scene/slide/person-intro/default-person-intro-quad-slide.tsx +19 -0
  221. package/src/core/scene/slide/person-intro/default-person-intro-slide-Horizontal.animated.stories.tsx +47 -0
  222. package/src/core/scene/slide/person-intro/default-person-intro-slide-Horizontal.stories.tsx +46 -0
  223. package/src/core/scene/slide/person-intro/default-person-intro-slide-Horizontal.tsx +302 -0
  224. package/src/core/scene/slide/person-intro/default-person-intro-slide-Landscape.tsx +20 -0
  225. package/src/core/scene/slide/person-intro/default-person-intro-slide.animated.stories.tsx +126 -0
  226. package/src/core/scene/slide/person-intro/default-person-intro-slide.stories.tsx +119 -0
  227. package/src/core/scene/slide/person-intro/default-person-intro-slide.tsx +363 -0
  228. package/src/core/scene/slide/person-intro/default-person-intro-trio-slide.tsx +19 -0
  229. package/src/core/scene/slide/person-intro/index.ts +8 -0
  230. package/src/core/scene/slide/photo-album/default-photo-album-multi-slide.tsx +19 -0
  231. package/src/core/scene/slide/photo-album/default-photo-album-pair-slide.tsx +19 -0
  232. package/src/core/scene/slide/photo-album/default-photo-album-single-slide.tsx +19 -0
  233. package/src/core/scene/slide/photo-album/default-photo-album-slide-Horizontal.animated.stories.tsx +26 -0
  234. package/src/core/scene/slide/photo-album/default-photo-album-slide-Horizontal.stories.tsx +25 -0
  235. package/src/core/scene/slide/photo-album/default-photo-album-slide-Horizontal.tsx +20 -0
  236. package/src/core/scene/slide/photo-album/default-photo-album-slide-Landscape.tsx +20 -0
  237. package/src/core/scene/slide/photo-album/default-photo-album-slide.animated.stories.tsx +94 -0
  238. package/src/core/scene/slide/photo-album/default-photo-album-slide.stories.tsx +87 -0
  239. package/src/core/scene/slide/photo-album/default-photo-album-slide.tsx +414 -0
  240. package/src/core/scene/slide/photo-album/index.ts +7 -0
  241. package/src/core/scene/slide/video-showcase/default-video-showcase-multi-slide.tsx +195 -0
  242. package/src/core/scene/slide/video-showcase/default-video-showcase-slide-Horizontal.tsx +212 -0
  243. package/src/core/scene/slide/video-showcase/default-video-showcase-slide-Landscape.tsx +20 -0
  244. package/src/core/scene/slide/video-showcase/default-video-showcase-slide.animated.stories.tsx +78 -0
  245. package/src/core/scene/slide/video-showcase/default-video-showcase-slide.stories.tsx +74 -0
  246. package/src/core/scene/slide/video-showcase/default-video-showcase-slide.tsx +365 -0
  247. package/src/core/scene/slide/video-showcase/index.ts +5 -0
  248. package/src/core/scene/video/default-video-scene-Horizontal.stories.tsx +26 -0
  249. package/src/core/scene/video/default-video-scene-Horizontal.tsx +20 -0
  250. package/src/core/scene/video/default-video-scene-Landscape.tsx +20 -0
  251. package/src/core/scene/video/default-video-scene.stories.tsx +26 -0
  252. package/src/core/scene/video/default-video-scene.tsx +283 -0
  253. package/src/core/scene/video/default-video-split-scene-Horizontal.tsx +20 -0
  254. package/src/core/scene/video/default-video-split-scene-Landscape.tsx +20 -0
  255. package/src/core/scene/video/default-video-split-scene.stories.tsx +41 -0
  256. package/src/core/scene/video/default-video-split-scene.tsx +19 -0
  257. package/src/core/scene/video/default-video-wall-scene-Horizontal.tsx +20 -0
  258. package/src/core/scene/video/default-video-wall-scene-Landscape.tsx +20 -0
  259. package/src/core/scene/video/default-video-wall-scene.stories.tsx +40 -0
  260. package/src/core/scene/video/default-video-wall-scene.tsx +19 -0
  261. package/src/core/scene/video/index.ts +9 -0
  262. package/src/storybook/remotion-preview.tsx +112 -6
  263. package/src/core/intro/default-intro-bumper.stories.tsx +0 -19
  264. package/src/core/intro/default-intro-bumper.tsx +0 -218
  265. package/src/core/outro/default-outro-bumper.stories.tsx +0 -19
  266. package/src/core/outro/default-outro-bumper.tsx +0 -218
@@ -0,0 +1,46 @@
1
+ import { Default3DVRPhotoSceneLandscape } from './default-3dvr-photo-scene-Landscape'
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/Default3DVRPhotoSceneLandscape',
7
+ component: Default3DVRPhotoSceneLandscape,
8
+ args: {
9
+ title: 'Stereo Window',
10
+ subtitle: '3D camera controls over a still frame with subtle orbit, pitch and depth.',
11
+ badge: '3D VR Photo',
12
+ imageSrc: photoUrl,
13
+ yaw: 12,
14
+ pitch: 4,
15
+ roll: 0,
16
+ perspective: 980,
17
+ zoom: 1,
18
+ depth: 26,
19
+ focusX: 0.5,
20
+ focusY: 0.45,
21
+ accent: '#020617',
22
+ secondaryAccent: '#1d4ed8',
23
+ },
24
+ }
25
+
26
+ export default meta
27
+
28
+ export const Default = {
29
+ parameters: {
30
+ scenePreviewAspectRatio: '16:9',
31
+ },
32
+ }
33
+
34
+ export const Animated = {
35
+ parameters: {
36
+ scenePreviewAspectRatio: '16:9',
37
+ scenePreviewMode: 'animation',
38
+ },
39
+ }
40
+
41
+ export const Both = {
42
+ parameters: {
43
+ scenePreviewAspectRatio: '16:9',
44
+ scenePreviewMode: 'both',
45
+ },
46
+ }
@@ -0,0 +1,255 @@
1
+ import { z } from 'zod'
2
+
3
+ import { VideoComponent, defineScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+ import { Img, interpolate, spring, useCurrentFrame, useVideoConfig } from 'remotion'
5
+
6
+ import { BaseRemotionScene, type BaseRemotionSceneProps, useRemotionSceneRuntime, useSceneConfig } from '../../../../base'
7
+ import { defineSceneComponent } from '../../../../plugins/scene-component'
8
+
9
+ export interface Default3DVRPhotoSceneProps extends BaseRemotionSceneProps {
10
+ sceneId?: string
11
+ sceneName?: string
12
+ title?: string
13
+ subtitle?: string
14
+ badge?: string
15
+ imageSrc: string
16
+ yaw?: number
17
+ pitch?: number
18
+ roll?: number
19
+ perspective?: number
20
+ zoom?: number
21
+ depth?: number
22
+ focusX?: number
23
+ focusY?: number
24
+ accent?: string
25
+ secondaryAccent?: string
26
+ textColor?: string
27
+ }
28
+
29
+ export const componentMetadata = defineScenePluginMetadata({
30
+ resourceKind: 'scene',
31
+ name: 'Default3DVRPhotoScene',
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',
34
+ pluginKey: 'core.photo.3dvr-photo',
35
+ tags: ['scene', 'photo', '3d', 'vr', 'perspective'],
36
+ aspectRatio: '16:9',
37
+ sceneType: 'scene',
38
+ sceneFamily: 'custom',
39
+ rootLayout: 'absolute-fill',
40
+ propsTypeName: 'Default3DVRPhotoSceneProps',
41
+ })
42
+
43
+ export const Default3DVRPhotoScene = VideoComponent(componentMetadata)(
44
+ defineSceneComponent({
45
+ family: 'custom',
46
+ propsSchema: z.object({
47
+ sceneId: z.string().optional(),
48
+ sceneName: z.string().optional(),
49
+ title: z.string().optional(),
50
+ subtitle: z.string().optional(),
51
+ badge: z.string().optional(),
52
+ imageSrc: z.string(),
53
+ yaw: z.number().optional(),
54
+ pitch: z.number().optional(),
55
+ roll: z.number().optional(),
56
+ perspective: z.number().optional(),
57
+ zoom: z.number().optional(),
58
+ depth: z.number().optional(),
59
+ focusX: z.number().min(0).max(1).optional(),
60
+ focusY: z.number().min(0).max(1).optional(),
61
+ accent: z.string().optional(),
62
+ secondaryAccent: z.string().optional(),
63
+ textColor: z.string().optional(),
64
+ }),
65
+ component: function Default3DVRPhotoScene({
66
+ id,
67
+ name,
68
+ sceneId,
69
+ sceneName,
70
+ title,
71
+ subtitle,
72
+ badge,
73
+ imageSrc,
74
+ yaw = 12,
75
+ pitch = 4,
76
+ roll = 0,
77
+ perspective = 980,
78
+ zoom = 1,
79
+ depth = 24,
80
+ focusX = 0.5,
81
+ focusY = 0.5,
82
+ accent,
83
+ secondaryAccent,
84
+ textColor,
85
+ }: Default3DVRPhotoSceneProps) {
86
+ const runtime = useRemotionSceneRuntime()
87
+ const sceneConfig = useSceneConfig()
88
+ const frame = useCurrentFrame()
89
+ const { fps } = useVideoConfig()
90
+ const portrait = runtime.height > runtime.width
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
93
+ const orbit = animated ? Math.sin((frame / fps) * Math.PI * 0.55) : 0
94
+ const cameraYaw = yaw + orbit * 4 + (1 - entrance) * (portrait ? -3 : -4)
95
+ const cameraPitch = pitch + Math.sin((frame / fps) * Math.PI * 0.35) * 1.5 + (1 - entrance) * 1.6
96
+ const cameraRoll = roll + Math.sin((frame / fps) * Math.PI * 0.25) * 0.45
97
+ const cameraZoom = zoom + entrance * 0.06 + (1 - entrance) * 0.02
98
+ const titleSize = Math.round(runtime.height * (portrait ? 0.034 : 0.04))
99
+ const subtitleSize = Math.round(runtime.height * 0.017)
100
+ const focusOffsetX = interpolate(focusX, [0, 1], [-12, 12])
101
+ const focusOffsetY = interpolate(focusY, [0, 1], [12, -12])
102
+ const imageFilter = animated ? 'brightness(1.08) contrast(1.04) saturate(1.08)' : 'brightness(2.05) contrast(1.22) saturate(1.3)'
103
+ const framePaddingX = Math.round(runtime.width * (portrait ? 0.025 : 0.02))
104
+ const framePaddingY = Math.round(runtime.height * (portrait ? 0.02 : 0.018))
105
+ const mainFrameLeft = framePaddingX
106
+ const mainFrameTop = framePaddingY
107
+ const mainFrameWidth = Math.max(1, runtime.width - framePaddingX * 2)
108
+ const mainFrameHeight = Math.max(1, runtime.height - framePaddingY * 2)
109
+ const mainFrameShadow = portrait
110
+ ? '0 26px 90px rgba(0,0,0,0.38)'
111
+ : '0 34px 110px rgba(0,0,0,0.42)'
112
+ const imageTransform = animated
113
+ ? `translate3d(${focusOffsetX}px, ${focusOffsetY}px, ${depth}px) rotateX(${cameraPitch}deg) rotateY(${cameraYaw}deg) rotateZ(${cameraRoll}deg) scale(${cameraZoom})`
114
+ : `translate3d(${focusOffsetX * 0.4}px, ${focusOffsetY * 0.35}px, ${depth * 0.45}px) rotateX(${pitch * 0.15}deg) rotateY(${yaw * 0.12}deg) rotateZ(${roll * 0.08}deg) scale(${1.01 + (zoom - 1) * 0.4})`
115
+
116
+ return (
117
+ <BaseRemotionScene
118
+ id={id ?? sceneId}
119
+ name={name ?? sceneName ?? title}
120
+ style={{
121
+ background:
122
+ portrait
123
+ ? `linear-gradient(180deg, ${accent ?? '#020617'} 0%, #000000 100%)`
124
+ : `radial-gradient(circle at 50% 20%, ${secondaryAccent ?? 'rgba(255,255,255,0.08)'} 0%, ${accent ?? '#020617'} 52%, #000000 100%)`,
125
+ color: textColor ?? '#f8fafc',
126
+ padding: Math.round(runtime.height * (portrait ? 0.02 : 0.03)),
127
+ }}
128
+ >
129
+ <div
130
+ style={{
131
+ position: 'absolute',
132
+ inset: 0,
133
+ overflow: 'hidden',
134
+ border: '1px solid rgba(255,255,255,0.12)',
135
+ background: 'rgba(2,6,23,0.84)',
136
+ perspective: `${perspective}px`,
137
+ transformStyle: 'preserve-3d',
138
+ isolation: 'isolate',
139
+ }}
140
+ >
141
+ <div
142
+ aria-hidden="true"
143
+ style={{
144
+ position: 'absolute',
145
+ top: Math.max(0, mainFrameTop - 18),
146
+ left: Math.max(0, mainFrameLeft - 18),
147
+ width: Math.max(1, mainFrameWidth + 36),
148
+ height: Math.max(1, mainFrameHeight + 36),
149
+ opacity: animated ? 0.2 + entrance * 0.08 : 0.04,
150
+ filter: animated ? 'blur(18px) saturate(1.12) brightness(0.95)' : 'blur(10px) saturate(1.05) brightness(1.05)',
151
+ transform: `translate3d(${focusOffsetX * 0.3}px, ${focusOffsetY * 0.22}px, -20px) scale(${1.05 + entrance * 0.04})`,
152
+ }}
153
+ >
154
+ <Img
155
+ src={imageSrc}
156
+ alt={title ?? '3D VR photo'}
157
+ style={{
158
+ width: '100%',
159
+ height: '100%',
160
+ objectFit: 'cover',
161
+ }}
162
+ />
163
+ </div>
164
+
165
+ <div
166
+ style={{
167
+ position: 'absolute',
168
+ top: mainFrameTop,
169
+ left: mainFrameLeft,
170
+ width: mainFrameWidth,
171
+ height: mainFrameHeight,
172
+ transformStyle: 'preserve-3d',
173
+ transform: imageTransform,
174
+ border: animated ? '1px solid rgba(255,255,255,0.12)' : '1px solid rgba(255,255,255,0.2)',
175
+ backgroundColor: animated ? 'rgba(2,6,23,0.2)' : 'rgba(248,250,252,0.08)',
176
+ backgroundImage: `url(${imageSrc})`,
177
+ backgroundSize: 'cover',
178
+ backgroundPosition: `${Math.round(focusX * 100)}% ${Math.round((1 - focusY) * 100)}%`,
179
+ backgroundRepeat: 'no-repeat',
180
+ boxShadow: animated ? '0 22px 70px rgba(0,0,0,0.32)' : '0 14px 42px rgba(0,0,0,0.2)',
181
+ overflow: 'hidden',
182
+ borderRadius: 0,
183
+ filter: imageFilter,
184
+ }}
185
+ >
186
+ </div>
187
+
188
+ <div
189
+ aria-hidden="true"
190
+ style={{
191
+ position: 'absolute',
192
+ inset: 0,
193
+ background:
194
+ animated
195
+ ? 'radial-gradient(circle at center, rgba(255,255,255,0.06) 0%, rgba(255,255,255,0.01) 26%, rgba(2,6,23,0.14) 52%, rgba(2,6,23,0.46) 100%)'
196
+ : 'radial-gradient(circle at center, rgba(255,255,255,0.00) 0%, rgba(255,255,255,0.00) 44%, rgba(2,6,23,0.01) 76%, rgba(2,6,23,0.04) 100%)',
197
+ pointerEvents: 'none',
198
+ }}
199
+ />
200
+
201
+ <div
202
+ aria-hidden="true"
203
+ style={{
204
+ position: 'absolute',
205
+ top: mainFrameTop,
206
+ left: mainFrameLeft,
207
+ width: mainFrameWidth,
208
+ height: mainFrameHeight,
209
+ border: '1px solid rgba(255,255,255,0.18)',
210
+ pointerEvents: 'none',
211
+ }}
212
+ />
213
+
214
+ <div
215
+ style={{
216
+ position: 'absolute',
217
+ inset: 0,
218
+ display: 'grid',
219
+ alignContent: 'space-between',
220
+ padding: Math.round(runtime.height * (portrait ? 0.02 : 0.03)),
221
+ zIndex: 2,
222
+ pointerEvents: 'none',
223
+ }}
224
+ >
225
+ <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'start', gap: 12 }}>
226
+ <div
227
+ style={{
228
+ display: 'inline-flex',
229
+ alignItems: 'center',
230
+ gap: 8,
231
+ border: '1px solid rgba(255,255,255,0.18)',
232
+ background: 'rgba(2,6,23,0.6)',
233
+ color: '#f8fafc',
234
+ padding: '8px 12px',
235
+ letterSpacing: '0.22em',
236
+ textTransform: 'uppercase',
237
+ fontSize: 11,
238
+ lineHeight: 1,
239
+ }}
240
+ >
241
+ {badge ?? '3D VR Photo'}
242
+ </div>
243
+ </div>
244
+
245
+ <div style={{ display: 'grid', gap: 8, maxWidth: portrait ? '86%' : '58%' }}>
246
+ {title ? <div style={{ fontSize: titleSize, fontWeight: 800, letterSpacing: '-0.06em', lineHeight: 0.94 }}>{title}</div> : null}
247
+ {subtitle ? <div style={{ fontSize: subtitleSize, lineHeight: 1.45, opacity: 0.84 }}>{subtitle}</div> : null}
248
+ </div>
249
+ </div>
250
+ </div>
251
+ </BaseRemotionScene>
252
+ )
253
+ },
254
+ }),
255
+ )
@@ -0,0 +1,3 @@
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'
@@ -0,0 +1,33 @@
1
+ import { DefaultLivePhotoSceneHorizontal } from './default-live-photo-scene-Horizontal'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+ const photo = <img src={photoUrl} alt="Night Street" />
5
+
6
+ const meta = {
7
+ title: 'core/scene/photo/DefaultLivePhotoSceneHorizontal',
8
+ component: DefaultLivePhotoSceneHorizontal,
9
+ args: {
10
+ title: 'Night Street',
11
+ subtitle: 'Portrait live-photo treatment with a tighter frame and the same subtle motion language.',
12
+ badge: 'Live Photo',
13
+ accent: '#020617',
14
+ secondaryAccent: '#7c3aed',
15
+ },
16
+ }
17
+
18
+ export default meta
19
+
20
+ export const Default = {
21
+ render: (storyArgs: (typeof meta)['args']) => <DefaultLivePhotoSceneHorizontal {...storyArgs} image={photo} />,
22
+ parameters: {
23
+ scenePreviewAspectRatio: '9:16',
24
+ },
25
+ }
26
+
27
+ export const Animated = {
28
+ render: (storyArgs: (typeof meta)['args']) => <DefaultLivePhotoSceneHorizontal {...storyArgs} image={photo} />,
29
+ parameters: {
30
+ scenePreviewAspectRatio: '9:16',
31
+ scenePreviewMode: 'animation',
32
+ },
33
+ }
@@ -0,0 +1,20 @@
1
+ import type { ComponentProps } from 'react'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultLivePhotoScene, componentMetadata as baseComponentMetadata } from './default-live-photo-scene'
6
+
7
+ export const componentMetadata: ScenePluginMetadata = {
8
+ ...baseComponentMetadata,
9
+ name: 'DefaultLivePhotoSceneHorizontal',
10
+ description: 'Apple-style live photo scene for 9:16 portrait previews with a tighter vertical crop',
11
+ sourceFile: 'src/core/scene/photo/default-live-photo-scene-Horizontal.tsx',
12
+ aspectRatio: '9:16',
13
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'horizontal'])),
14
+ }
15
+
16
+ export const DefaultLivePhotoSceneHorizontal = VideoComponent(componentMetadata)(function DefaultLivePhotoSceneHorizontal(
17
+ props: ComponentProps<typeof DefaultLivePhotoScene>,
18
+ ) {
19
+ return <DefaultLivePhotoScene {...props} />
20
+ })
@@ -0,0 +1,20 @@
1
+ import type { ComponentProps } from 'react'
2
+
3
+ import { VideoComponent, type ScenePluginMetadata } from '@vibecuting/component-project-helper'
4
+
5
+ import { DefaultLivePhotoScene, componentMetadata as baseComponentMetadata } from './default-live-photo-scene'
6
+
7
+ export const componentMetadata: ScenePluginMetadata = {
8
+ ...baseComponentMetadata,
9
+ name: 'DefaultLivePhotoSceneLandscape',
10
+ description: 'Apple-style live photo scene for 16:9 landscape previews with a wider cinematic crop',
11
+ sourceFile: 'src/core/scene/photo/default-live-photo-scene-Landscape.tsx',
12
+ aspectRatio: '16:9',
13
+ tags: Array.from(new Set([...(baseComponentMetadata.tags ?? []), 'landscape'])),
14
+ }
15
+
16
+ export const DefaultLivePhotoSceneLandscape = VideoComponent(componentMetadata)(function DefaultLivePhotoSceneLandscape(
17
+ props: ComponentProps<typeof DefaultLivePhotoScene>,
18
+ ) {
19
+ return <DefaultLivePhotoScene {...props} />
20
+ })
@@ -0,0 +1,33 @@
1
+ import { DefaultLivePhotoSceneLandscape } from './default-live-photo-scene-Landscape'
2
+
3
+ const photoUrl = 'https://heyaai-statics-1342239856.cos.ap-guangzhou.myqcloud.com/tmp/premium_photo-1779404552087-0f905162376f-121.jpeg'
4
+ const photo = <img src={photoUrl} alt="Summer Harbor" />
5
+
6
+ const meta = {
7
+ title: 'core/scene/photo/DefaultLivePhotoSceneLandscape',
8
+ component: DefaultLivePhotoSceneLandscape,
9
+ args: {
10
+ title: 'Summer Harbor',
11
+ subtitle: 'A single image scene with an Apple-style live push-in and luminous framing.',
12
+ badge: 'Live Photo',
13
+ accent: '#020617',
14
+ secondaryAccent: '#1d4ed8',
15
+ },
16
+ }
17
+
18
+ export default meta
19
+
20
+ export const Default = {
21
+ render: (storyArgs: (typeof meta)['args']) => <DefaultLivePhotoSceneLandscape {...storyArgs} image={photo} />,
22
+ parameters: {
23
+ scenePreviewAspectRatio: '16:9',
24
+ },
25
+ }
26
+
27
+ export const Animated = {
28
+ render: (storyArgs: (typeof meta)['args']) => <DefaultLivePhotoSceneLandscape {...storyArgs} image={photo} />,
29
+ parameters: {
30
+ scenePreviewAspectRatio: '16:9',
31
+ scenePreviewMode: 'animation',
32
+ },
33
+ }