feat(FN-094): add comment line for deployment verification
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
Some checks failed
Sync dev → Gitea / Mirror dev to Gitea (push) Has been cancelled
- Added a comment line to main.ts for deployment verification purposes
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import {
|
||||
AbsoluteFill,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
Sequence,
|
||||
interpolate,
|
||||
spring,
|
||||
Sequence,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
} from "remotion";
|
||||
|
||||
function getColors(isDark: boolean) {
|
||||
@@ -21,13 +21,7 @@ function getColors(isDark: boolean) {
|
||||
}
|
||||
|
||||
const VIN_TEXT = "WVWZZZ1JZ3W...";
|
||||
const SIDEBAR_ITEMS = [
|
||||
"Dashboard",
|
||||
"Şase Arama",
|
||||
"Katalog",
|
||||
"Şemalar",
|
||||
"Ayarlar",
|
||||
];
|
||||
const SIDEBAR_ITEMS = ["Dashboard", "Şase Arama", "Katalog", "Şemalar", "Ayarlar"];
|
||||
const CATEGORIES = ["Motor", "Şasi", "Elektrik", "Karoseri", "Fren"];
|
||||
const PARTS = [
|
||||
{ code: "1J0 820 803F", name: "Klima Kompresörü" },
|
||||
@@ -52,10 +46,7 @@ const VinInputScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
|
||||
// Typewriter effect starts at frame 30
|
||||
const typeStart = 30;
|
||||
const charsToShow = Math.min(
|
||||
Math.max(0, Math.floor((frame - typeStart) / 3)),
|
||||
VIN_TEXT.length,
|
||||
);
|
||||
const charsToShow = Math.min(Math.max(0, Math.floor((frame - typeStart) / 3)), VIN_TEXT.length);
|
||||
const typedText = VIN_TEXT.slice(0, charsToShow);
|
||||
|
||||
return (
|
||||
@@ -102,6 +93,8 @@ const VinInputScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="14"
|
||||
height="14"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -200,6 +193,8 @@ const VehicleInfoScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="14"
|
||||
height="14"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -212,11 +207,7 @@ const VehicleInfoScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
<circle cx="11" cy="11" r="8" />
|
||||
<line x1="21" y1="21" x2="16.65" y2="16.65" />
|
||||
</svg>
|
||||
<span
|
||||
style={{ fontFamily: "monospace", fontSize: 11, color: c.fg }}
|
||||
>
|
||||
{VIN_TEXT}
|
||||
</span>
|
||||
<span style={{ fontFamily: "monospace", fontSize: 11, color: c.fg }}>{VIN_TEXT}</span>
|
||||
</div>
|
||||
|
||||
{/* Vehicle card */}
|
||||
@@ -353,14 +344,9 @@ const CategoryScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
borderRadius: 8,
|
||||
fontSize: 11,
|
||||
fontFamily: "system-ui, sans-serif",
|
||||
color:
|
||||
highlightProgress > 0.5 ? c.fg : c.mutedFg,
|
||||
color: highlightProgress > 0.5 ? c.fg : c.mutedFg,
|
||||
backgroundColor:
|
||||
highlightProgress > 0.5
|
||||
? isDark
|
||||
? "#064e3b"
|
||||
: "#d1fae5"
|
||||
: c.muted,
|
||||
highlightProgress > 0.5 ? (isDark ? "#064e3b" : "#d1fae5") : c.muted,
|
||||
border: `1px solid ${highlightProgress > 0.5 ? c.emerald : c.border}`,
|
||||
opacity: itemOpacity,
|
||||
transform: `translateX(${translateX}px)`,
|
||||
@@ -384,10 +370,10 @@ const SchemaViewScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
const c = getColors(isDark);
|
||||
|
||||
const HOTSPOTS = [
|
||||
{ x: "30%", y: "35%" },
|
||||
{ x: "60%", y: "25%" },
|
||||
{ x: "45%", y: "60%" },
|
||||
{ x: "70%", y: "55%" },
|
||||
{ id: "hs-1", x: "30%", y: "35%" },
|
||||
{ id: "hs-2", x: "60%", y: "25%" },
|
||||
{ id: "hs-3", x: "45%", y: "60%" },
|
||||
{ id: "hs-4", x: "70%", y: "55%" },
|
||||
];
|
||||
|
||||
return (
|
||||
@@ -486,7 +472,7 @@ const SchemaViewScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
|
||||
return (
|
||||
<div
|
||||
key={i}
|
||||
key={spot.id}
|
||||
style={{
|
||||
position: "absolute",
|
||||
left: spot.x,
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import {
|
||||
AbsoluteFill,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
Sequence,
|
||||
interpolate,
|
||||
spring,
|
||||
Sequence,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
} from "remotion";
|
||||
|
||||
function getColors(isDark: boolean) {
|
||||
@@ -50,9 +50,7 @@ const StorefrontScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
const badgeScale = interpolate(badgeSpring, [0, 1], [0, 1]);
|
||||
|
||||
return (
|
||||
<AbsoluteFill
|
||||
style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}
|
||||
>
|
||||
<AbsoluteFill style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}>
|
||||
{/* Header */}
|
||||
<div
|
||||
style={{
|
||||
@@ -87,6 +85,8 @@ const StorefrontScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -112,6 +112,8 @@ const StorefrontScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
{/* Cart icon */}
|
||||
<div style={{ position: "relative" }}>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -284,9 +286,7 @@ const WidgetIntegrationScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
});
|
||||
|
||||
return (
|
||||
<AbsoluteFill
|
||||
style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}
|
||||
>
|
||||
<AbsoluteFill style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}>
|
||||
{/* Header */}
|
||||
<div
|
||||
style={{
|
||||
@@ -333,6 +333,8 @@ const WidgetIntegrationScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -395,6 +397,8 @@ const WidgetIntegrationScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
{/* Cart icon */}
|
||||
<div style={{ position: "relative", flexShrink: 0 }}>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -518,10 +522,7 @@ const VinFilterScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
const c = getColors(isDark);
|
||||
|
||||
// Typewriter (1 char / 3 frames)
|
||||
const charsToShow = Math.min(
|
||||
Math.max(0, Math.floor(frame / 3)),
|
||||
VIN_DISPLAY.length,
|
||||
);
|
||||
const charsToShow = Math.min(Math.max(0, Math.floor(frame / 3)), VIN_DISPLAY.length);
|
||||
const typedVin = VIN_DISPLAY.slice(0, charsToShow);
|
||||
|
||||
// Filter starts at ~frame 45
|
||||
@@ -533,9 +534,7 @@ const VinFilterScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
const incompatibleIndices = [2, 4, 5];
|
||||
|
||||
return (
|
||||
<AbsoluteFill
|
||||
style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}
|
||||
>
|
||||
<AbsoluteFill style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}>
|
||||
{/* Header */}
|
||||
<div
|
||||
style={{
|
||||
@@ -582,6 +581,8 @@ const VinFilterScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
}}
|
||||
>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="12"
|
||||
height="12"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -653,6 +654,8 @@ const VinFilterScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
{/* Cart */}
|
||||
<div style={{ position: "relative", flexShrink: 0 }}>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -721,13 +724,8 @@ const VinFilterScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
>
|
||||
{PRODUCTS.map((product, i) => {
|
||||
const isIncompatible = incompatibleIndices.includes(i);
|
||||
const cardOpacity = isIncompatible
|
||||
? interpolate(filterProgress, [0, 1], [1, 0.15])
|
||||
: 1;
|
||||
const borderColor =
|
||||
!isIncompatible && filterProgress > 0.5
|
||||
? c.emerald
|
||||
: c.border;
|
||||
const cardOpacity = isIncompatible ? interpolate(filterProgress, [0, 1], [1, 0.15]) : 1;
|
||||
const borderColor = !isIncompatible && filterProgress > 0.5 ? c.emerald : c.border;
|
||||
|
||||
return (
|
||||
<div
|
||||
@@ -826,9 +824,7 @@ const AddToCartScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
|
||||
// Click animation at frame 30
|
||||
const clickScale =
|
||||
frame >= 30 && frame <= 38
|
||||
? interpolate(frame, [30, 34, 38], [1, 0.95, 1])
|
||||
: 1;
|
||||
frame >= 30 && frame <= 38 ? interpolate(frame, [30, 34, 38], [1, 0.95, 1]) : 1;
|
||||
|
||||
// Notification slides down at frame 40
|
||||
const notifSpring = spring({
|
||||
@@ -857,9 +853,7 @@ const AddToCartScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
const incompatibleIndices = [2, 4, 5];
|
||||
|
||||
return (
|
||||
<AbsoluteFill
|
||||
style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}
|
||||
>
|
||||
<AbsoluteFill style={{ backgroundColor: c.bg, flexDirection: "column", padding: 0 }}>
|
||||
{/* Header */}
|
||||
<div
|
||||
style={{
|
||||
@@ -925,6 +919,8 @@ const AddToCartScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
{/* Cart icon with animated badge */}
|
||||
<div style={{ position: "relative", flexShrink: 0 }}>
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 24 24"
|
||||
@@ -954,9 +950,7 @@ const AddToCartScene: React.FC<{ isDark: boolean }> = ({ isDark }) => {
|
||||
display: "flex",
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
transform: showCartBadge
|
||||
? `scale(${cartScale})`
|
||||
: "scale(1)",
|
||||
transform: showCartBadge ? `scale(${cartScale})` : "scale(1)",
|
||||
}}
|
||||
>
|
||||
{showCartBadge ? "1" : "0"}
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
import {
|
||||
AbsoluteFill,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
interpolate,
|
||||
spring,
|
||||
} from "remotion";
|
||||
import { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion";
|
||||
|
||||
function getColors(isDark: boolean) {
|
||||
return {
|
||||
@@ -87,7 +81,7 @@ export const OnboardingProgress: React.FC<{
|
||||
|
||||
return (
|
||||
<div
|
||||
key={i}
|
||||
key={label}
|
||||
style={{
|
||||
position: "absolute",
|
||||
opacity: labelOpacity,
|
||||
@@ -158,7 +152,7 @@ export const OnboardingProgress: React.FC<{
|
||||
const circleSize = 28;
|
||||
|
||||
return (
|
||||
<div key={i}>
|
||||
<div key={step.label}>
|
||||
{/* Outer circle */}
|
||||
<div
|
||||
style={{
|
||||
@@ -188,6 +182,8 @@ export const OnboardingProgress: React.FC<{
|
||||
/>
|
||||
{/* Checkmark */}
|
||||
<svg
|
||||
role="img"
|
||||
aria-label="icon"
|
||||
viewBox="0 0 24 24"
|
||||
width={14}
|
||||
height={14}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import {
|
||||
AbsoluteFill,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
Sequence,
|
||||
interpolate,
|
||||
spring,
|
||||
Sequence,
|
||||
useCurrentFrame,
|
||||
useVideoConfig,
|
||||
} from "remotion";
|
||||
|
||||
const PARTS = ["P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9"];
|
||||
|
||||
Reference in New Issue
Block a user