diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 0f949be2..03ee0db9 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -5,6 +5,7 @@ import "./globals.css";
import { ThemeProvider } from "@/components/ThemeProvider";
import { ThemeToggle } from "@/components/ThemeToggle";
import ScrollToTop from "@/components/ScrollToTop";
+import BrandLogo from "@/components/BrandLogo";
export const metadata: Metadata = {
title: "Reframe — Resize, trim, and export videos in your browser",
@@ -90,7 +91,10 @@ export default function RootLayout({
role="banner"
className="sticky top-0 z-50 flex items-center justify-between px-6 py-3 border-b border-[var(--border)] bg-[var(--bg)]"
>
-
diff --git a/src/components/BrandLogo.tsx b/src/components/BrandLogo.tsx
new file mode 100644
index 00000000..06d17492
--- /dev/null
+++ b/src/components/BrandLogo.tsx
@@ -0,0 +1,29 @@
+import { cn } from "@/lib/utils";
+
+interface BrandLogoProps {
+ className?: string;
+ size?: number;
+}
+
+export default function BrandLogo({ className, size = 32 }: BrandLogoProps) {
+ return (
+
+ );
+}
diff --git a/src/components/DownloadResult.tsx b/src/components/DownloadResult.tsx
index 35bb9460..320968f2 100644
--- a/src/components/DownloadResult.tsx
+++ b/src/components/DownloadResult.tsx
@@ -101,10 +101,10 @@ export default function DownloadResult({ result, onReset, soundOnCompletion }: P
href={isValid ? result.blobUrl : undefined}
download={isValid ? filename : undefined}
className={cn(
- "flex-1 min-w-[10rem] flex items-center justify-center gap-2 py-3 text-white text-sm font-heading font-bold uppercase tracking-wide rounded-lg transition-all",
- isValid
- ? "bg-film-600 hover:bg-film-700 hover:scale-[1.01] active:scale-[0.99] cursor-pointer"
- : "bg-film-600/50 cursor-not-allowed"
+ "flex-1 min-w-[10rem] flex items-center justify-center gap-2 py-3 text-sm font-heading font-bold uppercase tracking-wide rounded-lg transition-all",
+ isValid
+ ? "bg-film-600 text-white hover:bg-film-700 hover:scale-[1.01] active:scale-[0.99] cursor-pointer"
+ : "bg-[var(--border)] text-[var(--muted)] cursor-not-allowed"
)}
onClick={(e) => {
if (!isValid) e.preventDefault();
diff --git a/src/components/VideoEditor.tsx b/src/components/VideoEditor.tsx
index 6e297539..1f477bdc 100644
--- a/src/components/VideoEditor.tsx
+++ b/src/components/VideoEditor.tsx
@@ -16,6 +16,7 @@ import ExportSettings from "./ExportSettings";
import ExportOverlay from "./ExportOverlay";
import DownloadResult from "./DownloadResult";
import ImageOverlay from "./ImageOverlay"
+
import { cn } from "@/lib/utils";
import {
Layers, Crop, Scissors, RotateCw, Volume2,
@@ -243,6 +244,7 @@ export default function VideoEditor() {
} title="Audio & Speed" delay={150}>
+
updateRecipe({ brightness: Number(e.target.value) })}
aria-label="Adjust brightness"
- className="w-full"
+ className="w-full accent-film-600"
/>
{/* Contrast */}
@@ -298,7 +300,7 @@ export default function VideoEditor() {
value={recipe.contrast}
onChange={(e) => updateRecipe({ contrast: Number(e.target.value) })}
aria-label="Adjust contrast"
- className="w-full"
+ className="w-full accent-film-600"
/>
{/* Saturation */}
@@ -323,7 +325,7 @@ export default function VideoEditor() {
value={recipe.saturation}
onChange={(e) => updateRecipe({ saturation: Number(e.target.value) })}
aria-label="Adjust saturation"
- className="w-full"
+ className="w-full accent-film-600"
/>
@@ -445,7 +447,7 @@ export default function VideoEditor() {
"font-display text-2xl tracking-widest transition-all duration-200",
file && !isProcessing
? "bg-film-600 hover:bg-film-700 hover:scale-[1.01] text-white shadow-lg shadow-film-200 active:scale-[0.98] cursor-pointer"
- : "bg-[var(--border)] text-[var(--muted)] opacity-40 cursor-not-allowed"
+ : "bg-[var(--border)] text-[var(--muted)] cursor-not-allowed"
)}
>