Updates
This commit is contained in:
@@ -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">
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
|
||||
@@ -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,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() {
|
||||
|
||||
Reference in New Issue
Block a user