Compare changes

Choose any two refs to compare.

+1
src/assets/butterfly.svg
···
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-butterfly-icon lucide-butterfly"><path d="M15.8 2C12 3.8 12 9 12 9s0-5.2-3.8-7"/><path d="M12 9v11"/><path d="M20 5c-3.5 0-6.5 3.9-8 6.3C10.5 8.9 7.5 5 4 5a2 2 0 0 0-2 2c0 2.3.6 4.4 1.5 5.6C4 13.5 4.9 14 6 14h2c-.9.4-2.1.9-2.6 1.5-1.6 1.6-.9 3.4.7 4.9 1.6 1.6 3.4 2.3 4.9.7.3-.3 1-1.1 1-1.1s.6.8 1 1.1c1.6 1.6 3.4.9 4.9-.7 1.6-1.6 2.3-3.4.7-4.9-.5-.5-1.7-1.1-2.6-1.5h2c1.1 0 2-.5 2.5-1.4.9-1.2 1.5-3.3 1.5-5.6a2 2 0 0 0-2-2"/></svg>
+11 -3
src/components/Badgebar.astro
···
import LucideIcon from "./LucideIcon.astro";
interface Badge {
-
icon: string,
+
icon: string | any,
href: string
color: string
+
svg?: boolean
}
interface Props {
···
}
const { badges, size } = Astro.props
+
---
<span class="flex gap-2 bg-ctp-crust p-2 pl-3 pr-3 rounded-full h-min">
{badges.map(badge =>
<a href=`${badge.href}` target="_blank" rel="noopener noreferrer">
+
{ badge.svg && badge.icon && (
+
<badge.icon width={size} height={size} style={`stroke:${badge.color}`}
+
class="hover:rotate-15 hover:scale-110 ease-in hover:ease-out transition-transform active:scale-80"
+
/>
+
)}
+
{ !badge.svg && (
<LucideIcon name=`${badge.icon}` width=`${size}` height=`${size}` style={`stroke:${badge.color}`}
-
class="hover:rotate-15 ease-in hover:ease-out transition-transform"
+
class="hover:rotate-15 hover:scale-110 ease-in hover:ease-out transition-transform active:scale-80"
/>
+
)}
</a>
)}
</span>
-
+8 -3
src/components/Footer.astro
···
---
-
import { Heart, Rocket, Copyright } from "@lucide/astro"
+
import { Heart, Rocket, Copyright, Code } from "@lucide/astro"
---
<div class="flex justify-between bg-ctp-base p-6 pl-12 pr-12">
-
<span class="inline-flex gap-2">
+
<span class="inline-flex gap-2 items-center">
Copyright
<Copyright size="20" class="stroke-ctp-text"/>
2026 Banana
</span>
-
<span class="inline-flex gap-2">
+
<span class="inline-flex gap-2 items-center">
+
<a href="https://tangled.org/@banana.tngl.sh/mywebsite-2026"
+
class="text-xs text-ctp-overlay0 flex gap-1 hover:underline"><Code size="16" />src</a>
+
+
</span>
+
<span class="inline-flex gap-2 items-center">
Made with
<Heart size="20" class="stroke-ctp-red"/>
using Astro
+3 -1
src/components/PortfolioItem.astro
···
import Tag from "./Tag.astro"
---
<div class="p-4 border border-ctp-surface0 flex flex-col -mt-px w-full">
-
<div class="flex justify-between gap-4">
+
<div class="flex flex-wrap sm:flex-nowrap justify-between gap-2 sm:gap-4">
<a href=`${href}` class="flex flex-col gap-1 group">
<span class="text-xl flex gap-2 items-center">
<LucideIcon name=`${iconName}` width="20" height="20" style={`stroke:${colorCss}`} />
<span class="group-hover:underline font-bold">{title} </span>
+
<span class="hidden md:flex items-center">
{tag && tagcolor && (
<Tag text={tag} color={tagcolor}/>
)}
+
</span>
</span>
<span class="text-sm">
<span class="flex gap-1">{subtitle}</span>
+1 -1
src/components/Tag.astro
···
const { text, color } = Astro.props
const colorCss = "var(" + color + "-700)"
---
-
<span class="p-1 pl-2 pr-2 text-xs rounded-full scale-95 font-bold bg-ctp-base border border-ctp-surface0"
+
<span class="p-1 pl-2 pr-2 text-xs rounded-full font-bold bg-ctp-base border border-ctp-surface0"
style={`color:${colorCss};`}>
{text}
</span>
+1 -4
src/components/navbar/Navbar.astro
···
---
import Btn from "./NavbarLink.astro"
-
import { Code } from "@lucide/astro"
let href = Astro.url.toString()
href = href.replace(Astro.url.host.toString(), "")
···
---
<div class="fixed z-40 bg-ctp-base
left-[2%] right-[2%] md:left-[4%] md:right-[4%] xl:left-[8%] xl:right-[8%]
-
pl-8 pr-8 pt-4 pb-4 flex justify-between rounded-bl-2xl rounded-br-2xl">
+
pl-8 pr-8 pt-4 pb-4 flex justify-between rounded-bl-2xl rounded-br-2xl squircle">
<div class="flex gap-4 items-center">
<span class="flex flex-col">
<span>~/banana{href}</span>
-
<a href="https://tangled.org/@banana.tngl.sh/mywebsite-2026"
-
class="text-xs text-ctp-overlay0 flex gap-1 hover:underline"><Code size="16" />src</a>
</span>
</div>
<div class="flex gap-6 items-center">
+2 -2
src/components/projects/PotassiumSh.astro
···
<Item
type="team"
title="potassium.sh"
-
subtitle="An indie software development studio for the creative and insane, founded by me!"
-
href="https://tangled.org/@banana.tngl.sh/dotfiles"
+
subtitle="An indie software development studio for the creative and insane, founded by me, with some friends!"
+
href="https://potassium.sh"
tag="Founder"
tagcolor="--catppuccin-color-rosewater"
badges={[
+31 -17
src/components/section/Profile.astro
···
---
import Label from '../Label.astro';
import Quote from './Quote.astro'
-
import { Github, Spool, Icon } from '@lucide/astro'
-
import { butterfly } from '@lucide/lab'
+
import BadgeBar from "../Badgebar.astro"
+
import Butterfly from "../../assets/butterfly.svg"
+
+
let home = "hidden lg:flex"
+
if (Astro.url.pathname == "/") {
+
home = "flex"
+
}
---
-
<div class="flex flex-col md:col-span-2 border border-ctp-surface0 gap-[-1px] w-full h-min">
+
<div class=`${home} flex-col md:col-span-2 border border-ctp-surface0 gap-[-1px] w-full h-min`>
<span class="p-4 pb-0 border-b border-ctp-surface0 relative">
<img src="/banner.png" class="w-full"/>
</span>
···
<span class="text-base flex justify-between w-full flex-wrap gap-2">
<span class="flex flex-col">
<span class="text-2xl font-bold">Banana</span>
-
<a href="mailto:banana@potassium.sh" class="hover:underline ease-in hover:ease-out transition-all">banana@potassium.sh</a>
+
<a href="mailto:banana@potassium.sh" class="hover:underline ease-in hover:ease-out transition-all">
+
banana@potassium.sh</a>
</span>
-
<span class="flex gap-2 bg-ctp-crust p-2 pl-3 pr-3 rounded-full h-min">
-
<a href="https://github.com/imabanana80" target="_blank" rel="noopener noreferrer">
-
<Github size="20"
-
class="stroke-ctp-green hover:rotate-15 ease-in hover:ease-out transition-transform" /></a>
-
<a href="https://tangled.org/@banana.tngl.sh/" target="_blank" rel="noopener noreferrer">
-
<Spool size="20"
-
class="stroke-ctp-lavender hover:rotate-15 ease-in hover:ease-out transition-transform"/></a>
-
-
</a>
-
<a href="https://bsky.app/profile/imabanana80.com" target="_blank" rel="noopener noreferrer">
-
<Icon iconNode={butterfly} size="20"
-
class="stroke-ctp-sapphire hover:rotate-15 ease-in hover:ease-out transition-transform"/></a>
-
</span>
+
<BadgeBar
+
badges={[
+
{
+
icon: "Github",
+
color: "var(--catppuccin-color-green)",
+
href: "https://github.com/imabanana80"
+
},
+
{
+
icon: "Spool",
+
color: "var(--catppuccin-color-lavender)",
+
href: "https://tangled.org/@banana.tngl.sh"
+
},
+
{
+
icon: Butterfly,
+
color: "var(--catppuccin-color-sapphire)",
+
href: "https://bsky.app/profile/imabanana80.com",
+
svg: true
+
}
+
]}
+
size='20'
+
/>
</span>
<span class="relative p-3 mt-4 border border-ctp-surface0 text-sm">
<Label name="Currently"/>
+3
src/components/section/Quote.astro
···
const quotes: Quote[] = [
{ quote: "America is a nation that can be defined in a single word: asufutimaehaehfutbw", quotee: "Joseph Robinette Biden Jr."},
{ quote: "What if they- what if anything- what if a bomb drops on your head right now?", quotee: "Donald John Trump"},
+
{ quote: "This is a tough hurricane. One of the wettest we've ever seen from the standpoint of water.", quotee: "Donald John Trump"},
{ quote: "Heh heh heh, oh it's focused. I say it's err- I think it's- I- I- I haven't-- look.", quotee: "Joseph Robinette Biden Jr."},
{ quote: "the color orange is named after the fruit", quotee: "Elon Reeve Musk" },
{ quote: "I'm excited about electric school busses, I love electric school busses, I just love them..", quotee: "Kamala Devi Harris"},
+
{ quote: "How dare we speak marry christmas! How dare we!", quotee: "Kamala Devi Harris"},
{ quote: "One thing that really encourages me is AI. I love AI. I love ChatGPT. I love it. ChatGPT is frankly fantastic.", quotee: "Alexander Boris de Pfeffel Johnson" },
{ quote: "I am a fighter and not a quitter!", quotee: "Elizabeth Mary Truss" },
+
{ quote: "I call again for an immediate ceasefire in Gaza, the return of the sausages- the hostages..", quotee: "Keir Rodney Starmer" },
]
const quote: Quote = quotes[Math.floor(Math.random()*quotes.length)]
+1 -1
src/layouts/Layout.astro
···
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="generator" content={Astro.generator} />
-
<title>banana@potassium.sh</title>
+
<title>banana's page</title>
</head>
<body class="bg-ctp-crust pl-[2%] pr-[2%]
md:pl-[4%] md:pr-[4%] xl:pl-[8%] xl:pr-[8%]
+2 -2
src/layouts/Page.astro
···
<Layout>
<section class="h-[50%]
flex flex-col lg:grid-cols-5 lg:grid
-
p-10 pt-20 md:p-12 md:pt-24 xl:p-24 xl:pt-48 md:gap-8 xl:gap-16">
+
p-10 pt-15 md:p-12 md:pt-18 xl:p-24 xl:pt-36 gap-4 md:gap-8 xl:gap-16">
<Profile/>
-
<div class="md:col-span-3 lg:gap-8 xl:gap-12 flex flex-col">
+
<div class="md:col-span-3 gap-4 md:gap-8 xl:gap-12 flex flex-col">
<slot/>
</div>
</section>
+4
src/styles/global.css
···
--ease-out: cubic-bezier(0,0.69,0.44,0.99);
--default-font-family: "JetBrains Mono", monospaced;
}
+
+
.squircle {
+
corner-shape: squircle
+
}