prettier plus updates to the header entry. Stream gets iframe page instead of redirect

This commit is contained in:
2026-05-09 21:22:59 +02:00
parent 8f5714ac28
commit d98b18aeb9
18 changed files with 513 additions and 462 deletions
+10
View File
@@ -12,3 +12,13 @@
.ui-btn-active { .ui-btn-active {
@apply bg-ctp-surface0 text-ctp-green border-ctp-green; @apply bg-ctp-surface0 text-ctp-green border-ctp-green;
} }
.stream-frame {
width: 96vw;
margin: 0 auto;
@apply aspect-video rounded-2xl overflow-hidden border border-ctp-lavender-800 bg-ctp-mantle shadow-lg;
}
.stream-frame iframe {
@apply w-full h-full border-0;
}
+9 -5
View File
@@ -2,13 +2,17 @@ import "./App.css";
import Layout from "./components/Layout"; import Layout from "./components/Layout";
import Home from "./pages/Home"; import Home from "./pages/Home";
import Stream from "./pages/Stream";
function App() { function App() {
return ( const path = window.location.pathname.toLowerCase();
<Layout>
<Home /> let content = <Home />;
</Layout> if (path === "/stream") {
); content = <Stream />;
}
return <Layout>{content}</Layout>;
} }
export default App; export default App;
+6 -2
View File
@@ -7,7 +7,7 @@ export default function Header({ theme }) {
{ label: "Nextcloud", url: "https://aramjonghu.nl/nextcloud" }, { label: "Nextcloud", url: "https://aramjonghu.nl/nextcloud" },
{ label: "Navidrome", url: "https://music.aramjonghu.nl" }, { label: "Navidrome", url: "https://music.aramjonghu.nl" },
{ label: "Forgejo Git", url: "https://git.aramjonghu.nl" }, { label: "Forgejo Git", url: "https://git.aramjonghu.nl" },
{ label: "Stream", url: "https://stream.aramjonghu.nl" }, { label: "Stream", url: "/stream" },
{ label: "SearXNG", url: "https://xng.aramjonghu.nl" }, { label: "SearXNG", url: "https://xng.aramjonghu.nl" },
{ label: "Gitea zach-dev", url: "https://git.zach-dev.cc" }, { label: "Gitea zach-dev", url: "https://git.zach-dev.cc" },
]; ];
@@ -27,7 +27,11 @@ export default function Header({ theme }) {
<nav className="flex flex-wrap gap-3 items-center"> <nav className="flex flex-wrap gap-3 items-center">
{navItems.map((item) => ( {navItems.map((item) => (
<a key={item.label} href={item.url} className="ui-btn ui-btn:hover"> <a
key={item.label}
href={item.url}
className="ui-btn ui-btn:hover"
>
{item.label} {item.label}
</a> </a>
))} ))}
+11 -4
View File
@@ -113,7 +113,8 @@ export default function ProjectsReadme({ repoUrl }) {
code({ className, children, ...props }) { code({ className, children, ...props }) {
const isBlock = const isBlock =
className || className ||
(typeof children === "string" && children.includes("\n")); (typeof children === "string" &&
children.includes("\n"));
if (isBlock) { if (isBlock) {
return ( return (
@@ -170,14 +171,20 @@ export default function ProjectsReadme({ repoUrl }) {
), ),
ul: ({ children }) => ( ul: ({ children }) => (
<ul className="list-disc pl-6 mb-4">{children}</ul> <ul className="list-disc pl-6 mb-4">
{children}
</ul>
), ),
ol: ({ children }) => ( ol: ({ children }) => (
<ol className="list-decimal pl-6 mb-4">{children}</ol> <ol className="list-decimal pl-6 mb-4">
{children}
</ol>
), ),
li: ({ children }) => <li className="mb-1">{children}</li>, li: ({ children }) => (
<li className="mb-1">{children}</li>
),
a: ({ children, href }) => ( a: ({ children, href }) => (
<a <a
+12 -7
View File
@@ -44,7 +44,8 @@ export default function Home() {
Prev Prev
</button> </button>
<span className="self-center mx-6 font-medium"> <span className="self-center mx-6 font-medium">
{projectList[projIdx].name} ({projIdx + 1}/{projectList.length}) {projectList[projIdx].name} ({projIdx + 1}/
{projectList.length})
</span> </span>
<button <button
onClick={nextProject} onClick={nextProject}
@@ -72,14 +73,16 @@ export default function Home() {
return ( return (
<div className="text-ctp-text flex flex-col items-center justify-center px-6 py-6"> <div className="text-ctp-text flex flex-col items-center justify-center px-6 py-6">
<div className="w-full max-w-6xl text-center"> <div className="w-full max-w-6xl text-center">
<h1 className="text-4xl font-bold text-ctp-mauve">AramJonghu</h1> <h1 className="text-4xl font-bold text-ctp-mauve">
AramJonghu
</h1>
<p className="mt-4"> <p className="mt-4">
Software engineer building systems, services, and experiments across a Software engineer building systems, services, and
self-hosted environment. experiments across a self-hosted environment.
</p> </p>
<p className="mt-3"> <p className="mt-3">
This site acts as a hub for projects, infrastructure, and personal This site acts as a hub for projects, infrastructure, and
tooling. personal tooling.
</p> </p>
<div className="mt-10 border rounded p-4"> <div className="mt-10 border rounded p-4">
<div className="flex flex-wrap justify-center gap-12 mb-6"> <div className="flex flex-wrap justify-center gap-12 mb-6">
@@ -88,7 +91,9 @@ export default function Home() {
key={section.id} key={section.id}
onClick={() => setActiveTab(section.id)} onClick={() => setActiveTab(section.id)}
className={`ui-btn ${ className={`ui-btn ${
activeTab === section.id ? "ui-btn-active" : "" activeTab === section.id
? "ui-btn-active"
: ""
}`} }`}
> >
{section.title} {section.title}
+21
View File
@@ -0,0 +1,21 @@
export default function Stream() {
return (
<div className="text-ctp-text flex flex-col min-h-screen px-4 py-6">
<div className="w-full text-center flex flex-col flex-1">
<h1 className="text-4xl font-bold text-ctp-mauve mb-6">
Stream
</h1>
<div className="stream-frame w-full mx-auto flex-1 max-h-[85vh]">
<iframe
src="https://stream.aramjonghu.nl"
title="Stream"
allow="autoplay; fullscreen; picture-in-picture"
loading="lazy"
className="w-full h-full border-0 rounded-lg"
/>
</div>
</div>
</div>
);
}