From f3056954c9c4bba688beea31ee0080a4369b7609 Mon Sep 17 00:00:00 2001 From: Dylan De Faoite Date: Sun, 16 Aug 2026 16:13:51 +0100 Subject: [PATCH] add extra colours in index.css and replace hex values --- frontend/src/components/Topbar.tsx | 6 +-- .../src/components/buttons/PrimaryButton.tsx | 2 +- frontend/src/components/video/VideoCard.tsx | 8 ++-- frontend/src/index.css | 27 +++++++++-- frontend/src/pages/ClipEdit.tsx | 6 +-- frontend/src/pages/EditClip.tsx | 2 +- frontend/src/pages/EditVod.tsx | 2 +- frontend/src/pages/Home.tsx | 2 +- frontend/src/pages/MediaPlayer.tsx | 28 +++++------ frontend/src/pages/MyClips.tsx | 2 +- frontend/src/pages/MyVods.tsx | 2 +- frontend/src/pages/Profile.tsx | 2 +- frontend/src/pages/StreamControl.tsx | 46 +++++++++---------- 13 files changed, 77 insertions(+), 58 deletions(-) diff --git a/frontend/src/components/Topbar.tsx b/frontend/src/components/Topbar.tsx index 4e67b4a..3212414 100644 --- a/frontend/src/components/Topbar.tsx +++ b/frontend/src/components/Topbar.tsx @@ -76,8 +76,8 @@ const Topbar = ({ {user.name} {isStreaming && ( - - + + )} @@ -86,7 +86,7 @@ const Topbar = ({ onClick={() => navigate("/profile")} /> handleLogout()} - className={"text-[#B5432E] font-medium"} /> + className={"text-error font-medium"} /> ) : diff --git a/frontend/src/components/buttons/PrimaryButton.tsx b/frontend/src/components/buttons/PrimaryButton.tsx index 81d143a..ddf8bfb 100644 --- a/frontend/src/components/buttons/PrimaryButton.tsx +++ b/frontend/src/components/buttons/PrimaryButton.tsx @@ -5,7 +5,7 @@ type Props = React.ButtonHTMLAttributes; const PrimaryButton: React.FC = ({ className = "", ...props }) => { return ( @@ -101,7 +101,7 @@ const VideoCard = ({ id, title, duration, createdAt, onEdit, onDelete, className {onDelete && ( @@ -113,7 +113,7 @@ const VideoCard = ({ id, title, duration, createdAt, onEdit, onDelete, className
diff --git a/frontend/src/index.css b/frontend/src/index.css index 6c91009..56e47c8 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -19,9 +19,28 @@ --color-text-secondary: #6E6559; --color-muted: #9A9084; + /* ── Accents ─────────────────────────────────────────────────────────── */ + --color-terracotta: #A85A38; + --color-terracotta-hover: #94492A; + --color-terracotta-light: #C87A52; + --color-terracotta-disabled: #C9AE9C; + --color-olive: #6E7A50; + + /* ── Status ──────────────────────────────────────────────────────────── */ + --color-live: #B5432E; + --color-error: #B5432E; + + /* ── Ink on dark / accent surfaces ───────────────────────────────────── */ + --color-on-dark: #FBF8F2; + --color-on-accent: #FDFBF7; + /* ── Lines, chips, placeholders ──────────────────────────────────────── */ --color-hairline: #F0EBE2; --color-hover: #E7E0D2; + --color-selected: #F6EFE6; + --color-ring: #E2DACB; + --color-inactive: #DED7CA; + --color-inactive-strong: #C4BAA9; } :root { @@ -43,7 +62,7 @@ body { @utility font-heading { font-family: "Newsreader", serif; font-weight: 400; - color: #2B2620; + color: var(--color-text-primary); } /* Clip trim slider (react-range-slider-input). Its own stylesheet ships blue @@ -55,16 +74,16 @@ body { } #range-slider .range-slider__range { - background: #C87A52; + background: var(--color-terracotta-light); } #range-slider .range-slider__thumb { width: 18px; height: 18px; - background: #A85A38; + background: var(--color-terracotta); box-shadow: 0 1px 2px rgba(90, 40, 20, 0.2); } #range-slider .range-slider__thumb:focus-visible { - box-shadow: 0 0 0 4px rgba(168, 90, 56, 0.35); + box-shadow: 0 0 0 4px color-mix(in oklab, var(--color-terracotta) 35%, transparent); } \ No newline at end of file diff --git a/frontend/src/pages/ClipEdit.tsx b/frontend/src/pages/ClipEdit.tsx index 0780230..38a216e 100644 --- a/frontend/src/pages/ClipEdit.tsx +++ b/frontend/src/pages/ClipEdit.tsx @@ -142,7 +142,7 @@ const ClipEdit = () => { { videoMetadata={metadata} sliderValue={playbackValue} setSliderValue={setPlaybackValue} - className={"w-full accent-[#A85A38]"} + className={"w-full accent-terracotta"} /> { /> {error && ( -
+
{error}
)} diff --git a/frontend/src/pages/EditClip.tsx b/frontend/src/pages/EditClip.tsx index 6ecf3b7..744ffb0 100644 --- a/frontend/src/pages/EditClip.tsx +++ b/frontend/src/pages/EditClip.tsx @@ -84,7 +84,7 @@ const EditClip = () => { />
- {error &&

{error}

} + {error &&

{error}

}
diff --git a/frontend/src/pages/EditVod.tsx b/frontend/src/pages/EditVod.tsx index 9e9d971..6b420ae 100644 --- a/frontend/src/pages/EditVod.tsx +++ b/frontend/src/pages/EditVod.tsx @@ -84,7 +84,7 @@ const EditVod = () => { />
- {error &&

{error}

} + {error &&

{error}

}
diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index e3960f5..28c15b2 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -59,7 +59,7 @@ const Home = () => { className="bg-card border border-hairline rounded-xl p-5 flex flex-col gap-3 shadow-sm" >
- +

{title}

diff --git a/frontend/src/pages/MediaPlayer.tsx b/frontend/src/pages/MediaPlayer.tsx index bd87f9d..a27111f 100644 --- a/frontend/src/pages/MediaPlayer.tsx +++ b/frontend/src/pages/MediaPlayer.tsx @@ -233,7 +233,7 @@ const MediaPlayer = ({ noun, getMediaUrl, fetchDetails }: MediaPlayerProps) => { {/* Player */}
isPlaying && setControlsVisible(false)} onClick={togglePlay} @@ -265,7 +265,7 @@ const MediaPlayer = ({ noun, getMediaUrl, fetchDetails }: MediaPlayerProps) => { {/* Buffering spinner */} {isWaiting && mediaUrl && (
-
+
)} @@ -282,20 +282,20 @@ const MediaPlayer = ({ noun, getMediaUrl, fetchDetails }: MediaPlayerProps) => { {/* Scrub bar */}
{ setIsDragging(true); seekTo(e.clientX); }} > -
-
+
+
{/* Buttons row */} -
-
@@ -312,18 +312,18 @@ const MediaPlayer = ({ noun, getMediaUrl, fetchDetails }: MediaPlayerProps) => { min={0} max={1} step={0.02} value={effectiveVolume} onChange={handleVolumeChange} - className="w-16 accent-[#FBF8F2] cursor-pointer" + className="w-16 accent-on-dark cursor-pointer" />
- + {formatTime(currentTime)} / {formatTime(duration)}
-
@@ -331,10 +331,10 @@ const MediaPlayer = ({ noun, getMediaUrl, fetchDetails }: MediaPlayerProps) => {
- {error &&
{error}
} + {error &&
{error}
} {!mediaLoaded && !error && (
-
+
Loading video...
)} diff --git a/frontend/src/pages/MyClips.tsx b/frontend/src/pages/MyClips.tsx index 2b04ea3..9f2ed4c 100644 --- a/frontend/src/pages/MyClips.tsx +++ b/frontend/src/pages/MyClips.tsx @@ -49,7 +49,7 @@ const MyClips = () => {
)} - {error &&

{error.toString()}

} + {error &&

{error.toString()}

}
); } diff --git a/frontend/src/pages/MyVods.tsx b/frontend/src/pages/MyVods.tsx index 7f45879..bd5a425 100644 --- a/frontend/src/pages/MyVods.tsx +++ b/frontend/src/pages/MyVods.tsx @@ -52,7 +52,7 @@ const MyVods = () => {
)} - {error &&

{error}

} + {error &&

{error}

}
); }; diff --git a/frontend/src/pages/Profile.tsx b/frontend/src/pages/Profile.tsx index 092a27a..46aee69 100644 --- a/frontend/src/pages/Profile.tsx +++ b/frontend/src/pages/Profile.tsx @@ -75,7 +75,7 @@ const Profile = () => { title="Copy key" className="p-2 rounded-md bg-fields hover:bg-hover transition-colors duration-150 text-text-secondary" > - {copied ? : } + {copied ? : }
diff --git a/frontend/src/pages/StreamControl.tsx b/frontend/src/pages/StreamControl.tsx index f5c44a0..9252299 100644 --- a/frontend/src/pages/StreamControl.tsx +++ b/frontend/src/pages/StreamControl.tsx @@ -24,8 +24,8 @@ type TrackedJob = { const CardHeader = ({ icon: Icon, title, accent = "primary" }: { icon: React.ElementType; title: string; accent?: "primary" | "accent" }) => (
-
- +
+

{title}

@@ -35,22 +35,22 @@ const JobStatus = ({ job }: { job: TrackedJob }) => { if (job.state === 'FAILED') { return (
- -

{job.label} failed: {job.errorOutput ?? "Unknown error"}

+ +

{job.label} failed: {job.errorOutput ?? "Unknown error"}

); } if (job.state === 'SUCCEEDED') { return (
- +

{job.label} saved

); } return (
- +

{job.label}…

@@ -246,12 +246,12 @@ const StreamControl = () => { {/* Hero status bar */}
- {isStreaming && } - + {isStreaming && } +

{isStreaming ? "Live" : "Offline"}

@@ -269,7 +269,7 @@ const StreamControl = () => {

elapsed

) : ( - + )} @@ -278,7 +278,7 @@ const StreamControl = () => { {/* Quick mark toolbar */}
- + { Add Marker
- {markerError &&

{markerError}

} + {markerError &&

{markerError}

} {markers.length > 0 && (
@@ -304,22 +304,22 @@ const StreamControl = () => { onClick={() => handleChipClick(m.id)} className={clsx( "flex flex-col items-start gap-0.5 rounded-lg border px-3 py-1.5 text-left transition-colors duration-150", - isStart && "border-[#A85A38] bg-[#F6EFE6] ring-1 ring-[#A85A38]", - isEnd && "border-[#6E7A50] bg-[#F6EFE6] ring-1 ring-[#6E7A50]", - !isStart && !isEnd && "border-hairline hover:border-[#E2DACB] hover:bg-hover" + isStart && "border-terracotta bg-selected ring-1 ring-terracotta", + isEnd && "border-olive bg-selected ring-1 ring-olive", + !isStart && !isEnd && "border-hairline hover:border-ring hover:bg-hover" )} > {m.message} {formatLocalDate(m.timestamp, { hour: "2-digit", minute: "2-digit", second: "2-digit" })} - {isStart && · start} - {isEnd && · end} + {isStart && · start} + {isEnd && · end} @@ -346,7 +346,7 @@ const StreamControl = () => {
setClipTitle(e.target.value)} className={inputClass} />