From 56f5126a284b56b9f3e5c8dd8e7572c3b513e51e Mon Sep 17 00:00:00 2001 From: namidapoo <83203852+ve1997@users.noreply.github.com> Date: Thu, 26 Dec 2024 09:43:17 +0900 Subject: [PATCH 1/4] =?UTF-8?q?chore:=20Biome=E3=81=A8Git=E3=81=AE?= =?UTF-8?q?=E7=B5=B1=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- biome.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/biome.json b/biome.json index 2eb0751..208387f 100644 --- a/biome.json +++ b/biome.json @@ -1,9 +1,9 @@ { "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", "vcs": { - "enabled": false, + "enabled": true, "clientKind": "git", - "useIgnoreFile": false + "useIgnoreFile": true }, "files": { "ignoreUnknown": false, From 5421e465fb166902f44ae3ee36b54f350c86ce5c Mon Sep 17 00:00:00 2001 From: namidapoo <83203852+ve1997@users.noreply.github.com> Date: Thu, 26 Dec 2024 09:43:54 +0900 Subject: [PATCH 2/4] =?UTF-8?q?fix:=20=E3=83=93=E3=83=AB=E3=83=89=E3=82=A8?= =?UTF-8?q?=E3=83=A9=E3=83=BC=E3=82=92=E8=A7=A3=E6=B6=88=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=9F=E3=82=81=E3=81=AB=E3=83=A9=E3=83=B3=E3=82=BF=E3=82=A4?= =?UTF-8?q?=E3=83=A0=E8=A8=AD=E5=AE=9A=E3=81=97=E3=81=9F`not-found`?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/not-found.tsx | 20 +++++++++++++ bun.lockb | Bin 199834 -> 201844 bytes components/ui/button.tsx | 57 ++++++++++++++++++++++++++++++++++++ components/ui/separator.tsx | 31 ++++++++++++++++++++ package.json | 2 ++ 5 files changed, 110 insertions(+) create mode 100644 app/not-found.tsx create mode 100644 components/ui/button.tsx create mode 100644 components/ui/separator.tsx diff --git a/app/not-found.tsx b/app/not-found.tsx new file mode 100644 index 0000000..3559b51 --- /dev/null +++ b/app/not-found.tsx @@ -0,0 +1,20 @@ +import { Button } from "@/components/ui/button"; +import { Separator } from "@/components/ui/separator"; +import Link from "next/link"; +export const runtime = "edge"; +export default function NotFound() { + return ( +
+
+

+ 404 +

+ +

This page could not be found.

+ +
+
+ ); +} diff --git a/bun.lockb b/bun.lockb index e5ed4050362e9d369ce025778ab09feccd972e83..c22628616f85a60ca1fd17de89b50d00a5dbb43a 100755 GIT binary patch delta 35521 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ƈtojqv!5tN0O^|83vw}|2Qi28A3mOxb|`kqMp?Rz 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 Urj#aGs(9fHuzSinxqim~0|j1*f&c&j delta 33739 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 diff --git a/components/ui/button.tsx b/components/ui/button.tsx new file mode 100644 index 0000000..d18eb21 --- /dev/null +++ b/components/ui/button.tsx @@ -0,0 +1,57 @@ +import { Slot } from "@radix-ui/react-slot"; +import { type VariantProps, cva } from "class-variance-authority"; +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/components/ui/separator.tsx b/components/ui/separator.tsx new file mode 100644 index 0000000..d750f7f --- /dev/null +++ b/components/ui/separator.tsx @@ -0,0 +1,31 @@ +"use client"; + +import * as SeparatorPrimitive from "@radix-ui/react-separator"; +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +const Separator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>( + ( + { className, orientation = "horizontal", decorative = true, ...props }, + ref, + ) => ( + + ), +); +Separator.displayName = SeparatorPrimitive.Root.displayName; + +export { Separator }; diff --git a/package.json b/package.json index b715f3b..3e88d47 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,8 @@ "deploy": "bun pages:build && wrangler pages deploy" }, "dependencies": { + "@radix-ui/react-separator": "^1.1.1", + "@radix-ui/react-slot": "^1.1.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.469.0", From 4030f11e30b56b3d90f9c7b2c8c6ad57efe9e3bc Mon Sep 17 00:00:00 2001 From: namidapoo <83203852+ve1997@users.noreply.github.com> Date: Thu, 26 Dec 2024 09:46:54 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E3=83=88=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.tsx | 125 +++++++++-------------------------- public/github-mark-white.svg | 1 + 2 files changed, 33 insertions(+), 93 deletions(-) create mode 100644 public/github-mark-white.svg diff --git a/app/page.tsx b/app/page.tsx index 0604b54..9aaeda4 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,103 +1,42 @@ +import { Button } from "@/components/ui/button"; +import { auth } from "@/lib/auth"; +import GitHub from "@/public/github-mark-white.svg"; import Image from "next/image"; +import Link from "next/link"; export const runtime = "edge"; -export default function Home() { +export default async function Home() { + const session = await auth(); + if (!session?.user) return null; + return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - app/page.tsx - - . -
  2. -
  3. Save and see your changes instantly.
  4. -
+
+
+

+ Dev Recap 2024 +

-
- - Vercel logomark - Deploy now - - - Read our docs - +
+

Hi, {session.user.name} !

+

+ 1年間おつかれさまでした。 +

+

+ あなたの1年間を振り返りましょう🥳 +

-
- + + +
); } diff --git a/public/github-mark-white.svg b/public/github-mark-white.svg new file mode 100644 index 0000000..d5e6491 --- /dev/null +++ b/public/github-mark-white.svg @@ -0,0 +1 @@ + \ No newline at end of file From 017cd39fefe6b6e6d0ca1bd868290846c829b9b5 Mon Sep 17 00:00:00 2001 From: namidapoo <83203852+ve1997@users.noreply.github.com> Date: Thu, 26 Dec 2024 09:49:35 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20Session=E3=82=92=E6=8B=A1=E5=BC=B5?= =?UTF-8?q?=E3=81=97=E3=81=A6github=E3=81=AE=E3=83=A6=E3=83=BC=E3=82=B6?= =?UTF-8?q?=E3=83=BC=E5=90=8D=E3=82=92=E5=8F=96=E5=BE=97=E3=83=BB=E8=A1=A8?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.tsx | 2 +- lib/auth.ts | 38 +++++++++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 9aaeda4..55854de 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -18,7 +18,7 @@ export default async function Home() {
-

Hi, {session.user.name} !

+

Hi, @{session.user.login} !

1年間おつかれさまでした。

diff --git a/lib/auth.ts b/lib/auth.ts index e8e42a1..85c62c5 100644 --- a/lib/auth.ts +++ b/lib/auth.ts @@ -1,5 +1,41 @@ -import NextAuth from "next-auth"; +import NextAuth, { type DefaultSession } from "next-auth"; import GitHub from "next-auth/providers/github"; +import "next-auth/jwt"; + export const { handlers, auth, signIn, signOut } = NextAuth({ providers: [GitHub], + callbacks: { + async jwt({ token, profile }) { + if (profile) { + const { login } = profile; + token.user = { ...token.user, login }; + } + return token; + }, + async session({ session, token }) { + const { login } = token.user; + session.user = { ...session.user, login }; + return session; + }, + }, }); +declare module "next-auth" { + interface Session { + user: { + login: string; + } & DefaultSession["user"]; + } + interface User { + login: string; + } + interface Profile { + login: string; + } +} +declare module "next-auth/jwt" { + interface JWT { + user: { + login: string; + }; + } +}