This commit is contained in:
2026-04-09 18:56:59 +01:00
parent 9121fd18b5
commit 42a6846208
11 changed files with 112 additions and 80 deletions
+8
View File
@@ -98,6 +98,14 @@ export const work = {
"Azure",
],
},
{
title: "Bunext",
description:
"A Next.js-style full-stack meta-framework built on Bun and React.",
href: "https://git.tben.me/Moduletrace/bunext",
metrics: [""],
technologies: ["Bun", "React", "Typescript", "React-Dom"],
},
{
title: "Personal Mail Server",
description:
@@ -9,6 +9,7 @@ import React from "react";
import Row from "@/src/components/lib/layout/Row";
import { twMerge } from "tailwind-merge";
import Divider from "@/src/components/lib/layout/Divider";
import ArrowedLink from "@/src/components/lib/layout/ArrowedLink";
type Props = {
noTitle?: boolean;
@@ -20,21 +21,36 @@ export default function MySkillsSection({ noTitle, expand }: Props) {
React.useState<keyof typeof skills>("Devops");
const categories = Object.keys(skills) as (keyof typeof skills)[];
const TitleSection = (
<Row className="w-full justify-between">
<Stack>
{noTitle ? null : (
<React.Fragment>
<H2 className="leading-snug m-0">My Skills</H2>
<Span>
A summary of the tools I've mastered over the years
</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
</Stack>
{noTitle ? null : (
<ArrowedLink
link={{
url: `/skills`,
title: `See all my Skills`,
}}
/>
)}
</Row>
);
if (expand) {
return (
<Section>
<Stack className="w-full">
{!noTitle && (
<React.Fragment>
<H2 className="leading-snug m-0">My Skills</H2>
<Span>
A summary of the vast array of tools I've
mastered over the years
</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
{TitleSection}
<Stack className="items-stretch gap-20 flex-row xl:flex-col flex-wrap md:flex-nowrap">
{categories.map((ctgr, i) => {
return (
@@ -76,17 +92,7 @@ export default function MySkillsSection({ noTitle, expand }: Props) {
return (
<Section>
<Stack className="w-full">
{!noTitle && (
<React.Fragment>
<H2 className="leading-snug m-0">My Skills</H2>
<Span>
A summary of the vast array of tools I've mastered
over the years
</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
{TitleSection}
<Row className="flex-nowrap items-start gap-x-10 flex-col xl:flex-row gap-y-10">
<Stack className="xl:max-w-[200px] items-stretch gap-10 flex-row xl:flex-col flex-wrap md:flex-nowrap">
{categories.map((ctgr, i) => {
@@ -11,6 +11,7 @@ import Row from "@/src/components/lib/layout/Row";
import Divider from "@/src/components/lib/layout/Divider";
import { twMerge } from "tailwind-merge";
import { CheckCircle2, Circle } from "lucide-react";
import ArrowedLink from "@/src/components/lib/layout/ArrowedLink";
type Props = {
noTitle?: boolean;
@@ -23,17 +24,34 @@ export default function MyWorkSection({ noTitle, expand }: Props) {
categories[0],
);
const TitleSection = (
<Row className="w-full justify-between">
<Stack>
{!noTitle && (
<React.Fragment>
<H2 className="leading-snug m-0">My Work</H2>
<Span>Some work I've done in the past</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
</Stack>
{noTitle ? null : (
<ArrowedLink
link={{
url: `/work`,
title: `See my work`,
}}
/>
)}
</Row>
);
if (expand) {
return (
<Section>
<Stack className="w-full">
{!noTitle && (
<React.Fragment>
<H2 className="leading-snug m-0">My Work</H2>
<Span>Some work I've done in the past</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
{TitleSection}
<Stack className="items-stretch gap-20 flex-row xl:flex-col flex-wrap md:flex-nowrap">
{categories.map((ctgr, i) => {
@@ -70,13 +88,7 @@ export default function MyWorkSection({ noTitle, expand }: Props) {
return (
<Section>
<Stack className="w-full">
{!noTitle && (
<React.Fragment>
<H2 className="leading-snug m-0">My Work</H2>
<Span>Some work I've done in the past</Span>
<Divider className="opacity-0 my-2" />
</React.Fragment>
)}
{TitleSection}
<Row className="flex-nowrap items-start gap-x-14 flex-col xl:flex-row gap-y-10">
<Stack className="xl:max-w-[200px] items-stretch gap-6 flex-row xl:flex-col flex-wrap md:flex-nowrap">
+11 -2
View File
@@ -1,6 +1,5 @@
import LucideIcon from "@/src/components/lib/elements/lucide-icon";
import Button from "@/src/components/lib/layout/Button";
import Divider from "@/src/components/lib/layout/Divider";
import H1 from "@/src/components/lib/layout/H1";
import Row from "@/src/components/lib/layout/Row";
import Section from "@/src/components/lib/layout/Section";
@@ -51,11 +50,21 @@ export default function Main() {
<Terminal size={17} className="font-normal" />
}
href="/work"
className="grow w-full bg-transparent!"
className="grow w-full"
variant="outlined"
>
View My Work
</Button>
<Button
title="View My Work"
beforeIcon={
<Terminal size={17} className="font-normal" />
}
href="/work"
className="grow w-full"
>
Learn More
</Button>
{/* <Button
beforeIcon={
<ScrollText size={17} className="font-normal" />
@@ -1,4 +1,3 @@
import EmptyContent from "@/src/components/lib/elements/EmptyContent";
import H1 from "@/src/components/lib/layout/H1";
import Section from "@/src/components/lib/layout/Section";
import Span from "@/src/components/lib/layout/Span";
@@ -14,8 +13,8 @@ export default function Hero() {
<Stack className="w-full gap-0">
<H1 className="leading-snug">Tech Musings</H1>
<Span>
A few takes and tips from my encyclopedia of knowledge in
the tech industry
A few takes and tips from my experience and knowledge in the
tech industry
</Span>
</Stack>
</Section>
+1 -4
View File
@@ -8,10 +8,7 @@ export default function Main() {
<Section>
<Stack className="w-full max-w-full xl:max-w-[50vw]">
<H1 className="leading-snug">My Skills</H1>
<Span>
A summary of the vast array of tools I've mastered over the
years
</Span>
<Span>A summary of the tools I've mastered over the years</Span>
</Stack>
</Section>
);
+1 -1
View File
@@ -23,7 +23,7 @@ export default function Footer({}: Props) {
<Span className="text-sm opacity-70">
Made with{" "}
<a
href="https://github.com/Moduletrace/bunext"
href="https://git.tben.me/Moduletrace/bunext"
target="_blank"
>
Bunext
-1
View File
@@ -1,6 +1,5 @@
import Layout from "@/src/layouts/main";
import Main from "@/src/components/pages/blog/slug";
import { PagePropsType } from "@/src/types";
import { BunextPageModuleMetaFn } from "@moduletrace/bunext/types";
export default function SingleBlogPost() {