Skip to content

Commit f110864

Browse files
committed
✨ v1.0.0-alpha to staging
2 parents 23fd217 + d01884d commit f110864

21 files changed

Lines changed: 570 additions & 47 deletions

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
> portfolio-next
1+
> portfolio-next v1.0.0-alpha
22
33
Rebuilding [my website](https://jacobmoy.com) in Next.js to do some more
44
cool stuff!
@@ -10,7 +10,7 @@ cool stuff!
1010
- [ ] Design new mobile-friendly tag filter
1111
- [ ] Blog post
1212
- [ ] Move theme and achievements to a hamburger menu button in toolbar for mobile
13-
- [ ] Add CI/CD for staging
13+
- [X] Add CI/CD for staging
1414

1515
#### Strech/Misc.
1616
- [ ] Add hobbies/niche projects
@@ -22,3 +22,6 @@ cool stuff!
2222

2323
### KNOWN BUGS
2424
- [ ] Footnote hyperlinks aren't working (thanks remark-gfm)
25+
- [ ] Achievements hide content in the drawer and are unclickable in drawer
26+
- [ ] The light mode theme box does not appear correctly in dark mode drawer
27+
- [ ] Sometimes secret achievements count towards "Completionist" achievement

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@radix-ui/react-dialog": "^1.1.14",
1616
"@radix-ui/react-dropdown-menu": "^2.1.15",
1717
"@radix-ui/react-slot": "^1.2.3",
18+
"@radix-ui/react-tabs": "^1.1.12",
1819
"@types/mdx": "^2.0.13",
1920
"class-variance-authority": "^0.7.1",
2021
"clsx": "^2.1.1",
@@ -29,7 +30,8 @@
2930
"rehype-unwrap-images": "^1.0.0",
3031
"remark-gfm": "^4.0.1",
3132
"sonner": "^2.0.6",
32-
"tailwind-merge": "^3.3.1"
33+
"tailwind-merge": "^3.3.1",
34+
"vaul": "^1.1.2"
3335
},
3436
"devDependencies": {
3537
"@biomejs/biome": "2.0.6",

pnpm-lock.yaml

Lines changed: 50 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/blog/posts/[slug]/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,14 @@ export default async function Page({ params }: {
3232
const components = getMDXComponents({});
3333

3434
return (
35-
<main className="max-w-3xl m-auto">
35+
<main className="md:max-w-3xl w-full px-8 m-auto">
3636
<BlogPostTracker postId={idx}/>
3737
<h1
38-
className={`${post.title.length <= 20 ? "text-4xl" : "text-3xl"} font-bold dark:text-zinc-300`}
38+
className={`${post.title.length <= 20 ? "text-4xl" : "text-3xl"} font-bold text-foreground`}
3939
>
4040
{post.title}
4141
</h1>
42-
<h2 className="text-xl mb-2 dark:text-zinc-400">
42+
<h2 className="text-xl mb-2 text-foreground/60">
4343
{post.date}{post.author}
4444
</h2>
4545
<MDXRemote
@@ -55,7 +55,7 @@ export default async function Page({ params }: {
5555
{(prev || next) && (
5656
<BlogFooter prevSlug={prev?.slug} nextSlug={next?.slug} />
5757
)}
58-
<p className="mb-2 text-zinc-500 dark:text-zinc-400">
58+
<p className="mb-2 text-foreground/60">
5959
jacobmoy.com • {new Date().getFullYear()}
6060
</p>
6161
</main>

src/app/content/ai-schedule.mdx

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,21 @@ into Google Calendar. After formatting it, it looked like this:
4949
<img
5050
src="/ai-schedule-screenshot.webp"
5151
className="m-auto rounded-lg"
52+
alt="A screenshot of a Google Calendar schedule created by an AI."
5253
/>
5354

5455
# Putting the Schedule into Practice
5556
On one of the days I did not have class, I decided to follow along with it.
5657

57-
<iframe
58-
width="560"
59-
height="315"
60-
src="https://www.youtube.com/embed/9jv_4zpgoe4"
61-
title="YouTube video player"
62-
referrerPolicy="norel"
63-
allowFullScreen
64-
className="m-auto my-4 rounded-lg"
65-
/>
58+
<div className="relative my-4 h-0 pb-[56.25%] max-w-full">
59+
<iframe
60+
className="absolute left-0 top-0 h-full w-full rounded-lg"
61+
src="https://www.youtube.com/embed/9jv_4zpgoe4"
62+
title="YouTube video player"
63+
allowFullScreen
64+
referrerPolicy="no-referrer"
65+
/>
66+
</div>
6667

6768
# Conclusions
6869
`tl;dr`: I really enjoyed the schedule it made for me. I never felt like I was

src/app/globals.css

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
--color-input: var(--input);
2626
--color-border: var(--border);
2727
--color-destructive: var(--destructive);
28+
--color-selected: var(--selected);
2829
--color-accent-foreground: var(--accent-foreground);
2930
--color-accent: var(--accent);
3031
--color-muted-foreground: var(--muted-foreground);
@@ -137,6 +138,7 @@ body {
137138
--rarity-epic: var(--color-purple-700);
138139
--rarity-legendary: var(--color-yellow-600);
139140
--flavor: var(--color-yellow-600);
141+
--selected: var(--color-green-600)
140142
}
141143

142144
.dark {
@@ -172,6 +174,7 @@ body {
172174
--sidebar-border: oklch(1 0 0 / 10%);
173175
--sidebar-ring: oklch(0.552 0.016 285.938);
174176
--divider: #8f8f8f;
177+
--selected: var(--color-green-700);
175178
}
176179

177180
.latte, .mocha {
@@ -185,6 +188,7 @@ body {
185188
--popover-foreground: var(--color-ctp-text);
186189
--normal-bg: var(--color-ctp-base);
187190
--normal-border: var(--color-surface0);
191+
--muted: var(--color-ctp-surface0)
188192
}
189193

190194
.mocha {
@@ -194,6 +198,7 @@ body {
194198
--rarity-epic: var(--color-ctp-mauve-800);
195199
--rarity-legendary: var(--color-ctp-peach-800);
196200
--flavor: var(--color-ctp-blue-500);
201+
--selected: var(--color-ctp-blue-500);
197202
}
198203

199204
.latte {
@@ -203,6 +208,7 @@ body {
203208
--rarity-epic: var(--color-ctp-mauve-300);
204209
--rarity-legendary: var(--color-ctp-yellow-300);
205210
--flavor: var(--color-ctp-rosewater-500);
211+
--selected: var(--color-ctp-rosewater-500);
206212
}
207213

208214
.habamax {
@@ -238,6 +244,9 @@ body {
238244
--rarity-epic: var(--color-habamax-fuschia);
239245
--rarity-legendary: var(--color-habamax-yellow);
240246
--flavor: var(--color-habamax-blue);
247+
--selected: var(--color-habamax-blue);
248+
249+
--muted: #313131;
241250
}
242251

243252
@layer base {

src/app/layout.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ export default function RootLayout({
3838
>
3939
<ShopProvider>
4040
<AchievementsProvider numPosts={posts.getNumPosts()}>
41-
<Toolbar />
42-
<ThemeToggle />
43-
<AchievementButton/>
41+
<Toolbar/>
42+
<div className="hidden md:block">
43+
<ThemeToggle />
44+
<AchievementButton/>
45+
</div>
4446
<main className="flex flex-col flex-grow">
4547
{children}
4648
</main>

src/components/toaster-provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ export function ToasterProvider() {
1515
const sonnerTheme = theme === 'system' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme;
1616

1717
return (
18-
<Toaster theme={sonnerTheme as "light" | "dark" | "system"} richColors />
18+
<Toaster theme={sonnerTheme as "light" | "dark" | "system"} richColors closeButton/>
1919
);
2020
}

src/components/ui/achievement-unlock-toast.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,33 @@
11
import type { AchievementInfo } from "@/utils/achievement-handler";
2-
import { BadgeCent } from "lucide-react";
2+
import { BadgeCent, X } from "lucide-react";
33
import { AchievementIcon } from "./achievement";
44
import { cn } from "@/utils/utils";
5+
import { Button } from "./button";
6+
import { toast } from "sonner";
57

68
interface AchievementUnlockToastProps {
79
info: AchievementInfo;
10+
id: string | number;
811
}
912

1013

1114
export default function AchievementUnlockToast({
12-
info
15+
info,
16+
id,
1317
} : AchievementUnlockToastProps) {
1418
return (
15-
<div className="flex flex-row gap-2 w-full items-center">
19+
<div
20+
className="flex flex-row gap-2 max-w-full min-w-fit items-center
21+
bg-background border border-border p-4 rounded-md
22+
md:w-lg"
23+
style={{ fontFamily: 'var(--font-karla)' }}>
24+
<Button
25+
className="absolute top-2 right-2"
26+
variant="outline"
27+
size="icon"
28+
onClick={() => {toast.dismiss(id)}}>
29+
<X/>
30+
</Button>
1631
<div className={cn(
1732
`w-12 h-12 rounded-md flex items-center justify-center flex-shrink-0`,
1833
info.rarity === "COMMON" && `bg-rarity-common`,

src/components/ui/achievement.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default function Achievement({
3131
<div className="w-full">
3232
<div className="grid grid-cols-[1fr_7fr] w-full">
3333
<div className={cn(
34-
"w-12 h-12 rounded-md flex items-center justify-center",
34+
"w-10 h-10 md:w-12 md:h-12 rounded-md flex items-center justify-center",
3535
!unlocked && "",
3636
unlocked && info.rarity === "COMMON" && `bg-rarity-common`,
3737
unlocked && info.rarity === "UNCOMMON" && `bg-rarity-uncommon`,

0 commit comments

Comments
 (0)