Add live clock to top bar
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m59s

This commit is contained in:
openhands committed 2026-07-23 18:32:45 +02:00
1 parent b9c09f58d3
commit eb603b50a9
4 files changed
+39

No files matched your search

+3
View File
@@ -12,6 +12,7 @@ import { siteSettings } from "@/lib/services/site-settings";
import { ThemeSwitcher } from "@/components/theme-switcher";
import { LanguageSwitcher } from "@/components/language-switcher";
import { Reveal } from "@/components/motion-reveal";
import { Clock } from "@/components/clock";
export default async function LoginPage() {
const t = await getTranslations("pages.login");
@@ -79,6 +80,8 @@ export default async function LoginPage() {
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<ThemeSwitcher />
</div>
</div>
+3
View File
@@ -15,6 +15,7 @@ import { ThemeSwitcher } from "@/components/theme-switcher";
import { LanguageSwitcher } from "@/components/language-switcher";
import { HomeLoginForm } from "@/components/auth/home-login-form";
import { Reveal } from "@/components/motion-reveal";
import { Clock } from "@/components/clock";
export const revalidate = 120;
@@ -105,6 +106,8 @@ export default async function Home() {
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<ThemeSwitcher />
</div>
</div>
+3
View File
@@ -12,6 +12,7 @@ import { siteSettings } from "@/lib/services/site-settings";
import { ThemeSwitcher } from "@/components/theme-switcher";
import { LanguageSwitcher } from "@/components/language-switcher";
import { Reveal } from "@/components/motion-reveal";
import { Clock } from "@/components/clock";
export default async function RegisterPage() {
const th = await getTranslations("header");
@@ -79,6 +80,8 @@ export default async function RegisterPage() {
)}
<LanguageSwitcher />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<Clock />
<div className="w-px h-5" style={{ background: "color-mix(in srgb, var(--color-text-muted) 12%, transparent)" }} />
<ThemeSwitcher />
</div>
</div>
+30
View File
@@ -0,0 +1,30 @@
"use client";
import { useEffect, useState } from "react";
export function Clock() {
const [time, setTime] = useState("");
useEffect(() => {
function update() {
const now = new Date();
setTime(
now.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }),
);
}
update();
const id = setInterval(update, 30_000);
return () => clearInterval(id);
}, []);
if (!time) return null;
return (
<span
className="text-[11px] font-bold tabular-nums select-none"
style={{ color: "color-mix(in srgb, var(--color-text-muted) 60%, transparent)" }}
>
{time}
</span>
);
}