Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions src/components/discovery/DiscoveryCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,20 @@ type Props = {
export default function DiscoveryCard({ post }: Props) {
return (
<article className="group">
<Link href={`/discovery/${post.slug}`} className="project-card discovery-card block">
<Link
href={`/discovery/${post.slug}`}
className="project-card discovery-card block"
>
{post.image ? (
<SafeImage src={post.image} alt={post.title} className="w-full h-44 object-cover rounded" />
<SafeImage
src={post.image}
alt={post.title}
className="w-full h-44 object-cover rounded"
/>
) : (
<div className="w-full h-44 bg-gray-800 flex items-center justify-center text-gray-400 rounded">No Image</div>
<div className="w-full h-44 bg-gray-800 flex items-center justify-center text-gray-400 rounded">
No Image
</div>
)}

<div className="p-4">
Expand All @@ -25,7 +34,10 @@ export default function DiscoveryCard({ post }: Props) {
<p className="discovery-description mt-2">{post.description}</p>
<div className="mt-3 flex flex-wrap gap-2">
{post.tags?.map((t) => (
<span key={t} className="text-xs bg-gray-700 text-gray-200 px-2 py-1 rounded">
<span
key={t}
className="text-xs bg-gray-700 text-gray-200 px-2 py-1 rounded"
>
{t}
</span>
))}
Expand Down
6 changes: 5 additions & 1 deletion src/components/discovery/DiscoveryList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ type Props = {

export default function DiscoveryList({ posts }: Props) {
if (!posts.length)
return <p className="text-center text-gray-400">No posts yet, come back later?</p>;
return (
<p className="text-center text-gray-400">
No posts yet, come back later?
</p>
);
// Ensure posts are sorted by date (newest first). Some posts may omit dates.
const sorted = [...posts].sort((a, b) => {
const da = a.date ? new Date(a.date).getTime() : 0;
Expand Down
21 changes: 5 additions & 16 deletions src/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,7 @@ const mcProjects = [
},
],
downloads: "2.0M+",
imgs: [
"/assets/mcProjs/tc.webp",
"/assets/mcProjs/tc/maxresdefault.webp",
],
imgs: ["/assets/mcProjs/tc.webp", "/assets/mcProjs/tc/maxresdefault.webp"],
},
{
title: "Scary Myth Mobs",
Expand Down Expand Up @@ -355,9 +352,7 @@ const mcProjects = [
link: "https://www.minecraft.net/en-us/marketplace/pdp?id=47c862c8-98c1-497c-94a5-3959eea3fec5",
},
],
imgs: [
"/assets/mcProjs/dl/Demonic_Legends_Thumbnail.webp",
],
imgs: ["/assets/mcProjs/dl/Demonic_Legends_Thumbnail.webp"],
},
{
title: "Fright Night",
Expand All @@ -370,9 +365,7 @@ const mcProjects = [
link: "https://www.minecraft.net/en-us/marketplace/pdp?id=7ddad910-7c39-46c0-8e6d-8ed38f870d04",
},
],
imgs: [
"/assets/mcProjs/fn/FrightNight_Thumbnail.webp",
],
imgs: ["/assets/mcProjs/fn/FrightNight_Thumbnail.webp"],
},
];

Expand Down Expand Up @@ -447,9 +440,7 @@ const Projects = [
link: "https://wiki.bedrock.dev/",
},
],
imgs: [
"/assets/Projs/wiki/wiki.webp",
],
imgs: ["/assets/Projs/wiki/wiki.webp"],
tags: ["Documentation", "Minecraft", "Community", "Education"],
status: "Live",
featured: false,
Expand All @@ -470,9 +461,7 @@ const Projects = [
link: "https://today-notes.keyyard.xyz",
},
],
imgs: [
"assets/Projs/today/4.webp",
],
imgs: ["assets/Projs/today/4.webp"],
tags: ["React", "PWA", "TypeScript", "Productivity"],
status: "Inactive",
featured: false,
Expand Down
136 changes: 68 additions & 68 deletions src/index.css
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,46 @@

/* Design Tokens - Easy to edit fonts and colors */
@font-face {
font-family: 'Inter';
src: url('/assets/fonts/Inter.ttf') format('truetype');
font-family: "Inter";
src: url("/assets/fonts/Inter.ttf") format("truetype");
font-weight: 400 700;
font-display: swap;
}
@font-face {
font-family: 'Be Vietnam Pro';
src: url('/assets/fonts/BeVietnamPro.ttf') format('truetype');
font-family: "Be Vietnam Pro";
src: url("/assets/fonts/BeVietnamPro.ttf") format("truetype");
font-weight: 400 700;
font-display: swap;
}

:root {
/* Fonts */
--font-primary: 'Inter', sans-serif;
--font-headings: 'Be Vietnam Pro', sans-serif;
--font-accent: 'Inter', sans-serif;
--font-primary: "Inter", sans-serif;
--font-headings: "Be Vietnam Pro", sans-serif;
--font-accent: "Inter", sans-serif;

/* Colors */
--color-primary: #F2F7F2;
--color-secondary: #7BA47C;
--color-primary: #f2f7f2;
--color-secondary: #7ba47c;
--color-background: #161618;
--color-surface: #393639;
--color-surface-light: #646464;
--color-border: #84a59d;

/* Card colors */
--color-card-bg: #1e1e21;
--color-card-selected: #1e1c1e;
--color-card-shadow: #161618;

/* Text colors */
--color-text-primary: #F2F7F2;
--color-text-primary: #f2f7f2;
--color-text-secondary: #d4d4d4;
--color-text-muted: #646464;
--color-text-light: #d4d4d4;

/* Accent colors */
--color-accent-blue: #84a59d;
--color-accent-blue-hover: #7BA47C;
--color-accent-blue-hover: #7ba47c;

/* Highlight colors */
--color-highlight: rgba(143, 169, 151, 0.15);
Expand All @@ -69,93 +69,93 @@
.section {
@apply min-h-[95vh];
}

.section-hero {
@apply flex flex-col items-center min-h-[860px];
}

/* Typography */
.section-title {
@apply text-4xl font-semibold pt-4 text-center;
}

.subsection-title {
@apply text-3xl font-semibold mb-2 text-center;
}

.hero-title {
@apply relative top-0 w-fit h-auto pt-4 flex bg-white bg-clip-text text-4xl font-extrabold text-transparent text-center select-auto;
}

.hero-title-blur {
@apply absolute pt-4 flex border w-fit bg-white blur-xl bg-clip-text text-4xl box-content font-extrabold text-transparent text-center select-none;
}

.hero-subtitle {
@apply text-center leading-3 mt-2;
}

/* Cards */
.card {
@apply p-6 bg-card-bg rounded-xl shadow-card-shadow drop-shadow;
}

.card-sm {
@apply p-4 bg-card-bg rounded-lg shadow-card-shadow drop-shadow;
}

.experience-card {
@apply mx-auto p-6 cursor-pointer border rounded-lg transition-colors;
}

.experience-card--selected {
@apply bg-card-selected;
}

.experience-details {
@apply mx-auto p-6 bg-black bg-opacity-20 rounded-xl shadow-card-shadow drop-shadow;
}

/* Layout */
.container-main {
@apply container mx-auto px-6 lg:px-20 mt-8;
}

.grid-two-col {
@apply grid grid-cols-1 md:grid-cols-2 gap-8;
}

.grid-experiences {
@apply p-4 grid grid-cols-1 lg:grid-cols-2 gap-4;
}

/* Content */
.content-text {
@apply text-lg leading-8 space-y-6;
}

.tech-list {
@apply list-disc list-inside space-y-2 text-text-secondary;
}

/* Interactive Elements */
.draggable-head {
@apply flex w-[50vw] h-[70vh] absolute;
}

.intro-text-container {
@apply flex flex-col items-center justify-items-center p-4 text-[15px];
}

.intro-text-content {
@apply text-start mt-32 md:mt-20;
}

/* Hero Buttons */
.hero-buttons {
@apply flex gap-4 mt-8 justify-center;
}

.hero-button-primary {
background-color: var(--color-secondary);
color: var(--color-primary);
Expand All @@ -168,13 +168,13 @@
transition: all 0.3s ease;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.hero-button-primary:hover {
background-color: var(--color-tertiary);
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}

.hero-button-secondary {
background-color: transparent;
color: var(--color-secondary);
Expand All @@ -186,26 +186,26 @@
cursor: pointer;
transition: all 0.3s ease;
}

.hero-button-secondary:hover {
background-color: var(--color-secondary);
color: var(--color-primary);
transform: translateY(-2px);
}

/* Project Cards */
.project-card {
@apply p-3 cursor-pointer bg-black bg-opacity-20 shadow-black inset-2 shadow-lg rounded-lg overflow-hidden;
}

.project-title {
@apply text-base font-bold flex justify-between items-center mb-1;
}

.project-subtitle {
@apply text-xs leading-3 mb-2 text-text-light;
}

.project-description {
@apply text-xs text-ellipsis overflow-hidden leading-4 group-hover:overflow-visible group-hover:whitespace-normal line-clamp-2 h-5 text-text-light;
}
Expand Down Expand Up @@ -340,39 +340,39 @@ button:focus-visible {

.contact-handle {
@apply text-base;
font-family: 'JetBrains Mono', monospace;
font-family: "JetBrains Mono", monospace;
}

/* Prose overrides for Markdown content rendered with tailwind-typography */
.prose img {
@apply mx-auto rounded-md;
max-width: 100%;
}
/* Prose overrides for Markdown content rendered with tailwind-typography */
.prose img {
@apply mx-auto rounded-md;
max-width: 100%;
}

.prose a {
@apply text-accent-blue hover:underline;
}
.prose a {
@apply text-accent-blue hover:underline;
}

/* TOC styling for discovery posts */
.toc ul {
list-style: none;
padding-left: 0;
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
/* TOC styling for discovery posts */
.toc ul {
list-style: none;
padding-left: 0;
display: flex;
gap: 1rem;
flex-wrap: wrap;
}

.toc li {
margin: 0;
padding: 0;
}
.toc li {
margin: 0;
padding: 0;
}

.toc a {
@apply text-accent-blue hover:underline;
}
.toc a {
@apply text-accent-blue hover:underline;
}

@supports (-ms-ime-align: auto) {
.icon-class {
font-size: 1rem;
}
}
}
Loading