diff --git a/jobdri/README.md b/jobdri/README.md
index e215bc4..de72287 100644
--- a/jobdri/README.md
+++ b/jobdri/README.md
@@ -2,16 +2,11 @@ This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-
## Getting Started
-First, run the development server:
+First, install dependencies and run the development server:
```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
+corepack pnpm install
+corepack pnpm dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
diff --git a/jobdri/app/globals.css b/jobdri/app/globals.css
index 13e58c8..cb54312 100644
--- a/jobdri/app/globals.css
+++ b/jobdri/app/globals.css
@@ -10,3 +10,27 @@
font-family: "Pretendard-Variable", sans-serif;
}
}
+
+:is(
+ button,
+ a[href],
+ summary,
+ label[for],
+ [role="button"],
+ input[type="button"],
+ input[type="submit"],
+ input[type="reset"]
+):not(:disabled):not([aria-disabled="true"]) {
+ cursor: pointer !important;
+}
+
+:is(
+ button,
+ [role="button"],
+ input[type="button"],
+ input[type="submit"],
+ input[type="reset"]
+):disabled,
+[aria-disabled="true"] {
+ cursor: not-allowed !important;
+}
diff --git a/jobdri/app/layout.tsx b/jobdri/app/layout.tsx
index ca60aa7..9034c22 100644
--- a/jobdri/app/layout.tsx
+++ b/jobdri/app/layout.tsx
@@ -1,7 +1,6 @@
import type { Metadata } from "next";
import "./globals.css";
-import Lnb from "@/components/common/lnb/Lnb";
-import PageHeader from "@/components/common/PageHeader";
+import AppShell from "@/components/common/AppShell";
export const metadata: Metadata = {
title: "JobDri",
@@ -15,16 +14,8 @@ export default function RootLayout({
}) {
return (
-
-
-
-
-
+
+ {children}
);
diff --git a/jobdri/app/login/page.tsx b/jobdri/app/login/page.tsx
new file mode 100644
index 0000000..b40fe56
--- /dev/null
+++ b/jobdri/app/login/page.tsx
@@ -0,0 +1,5 @@
+import { EmailLoginScreen } from "@/components/login";
+
+export default function LoginPage() {
+ return ;
+}
diff --git a/jobdri/app/page.tsx b/jobdri/app/page.tsx
index 5713ace..f468944 100644
--- a/jobdri/app/page.tsx
+++ b/jobdri/app/page.tsx
@@ -1,7 +1,6 @@
import IconBox from "@/components/common/icons/IconBox";
import CheckBox from "@/components/common/icons/CheckBox";
import Header from "@/components/common/header/Header";
-import { Lnb } from "@/components/common/lnb";
import {
Button,
ButtonCta,
@@ -9,9 +8,14 @@ import {
IconButton,
IconOnlyButton,
TextButton,
+ TextOnlyButton,
} from "@/components/common/buttons";
import { Toast, ToastFrame } from "@/components/common/toast";
-import { ChipRound, ChipRoundSelected, ChipQnumber } from "@/components/common/chips";
+import {
+ ChipRound,
+ ChipRoundSelected,
+ ChipQnumber,
+} from "@/components/common/chips";
import ChipMainDemo from "@/components/common/chips/ChipMainDemo";
import ModalLinkInputDemo from "@/components/common/modal/ModalLinkInputDemo";
import { CompleteBadge } from "@/components/common/badges";
@@ -211,6 +215,14 @@ export default function Home() {
+
diff --git a/jobdri/components/common/AppShell.tsx b/jobdri/components/common/AppShell.tsx
new file mode 100644
index 0000000..f5a4c07
--- /dev/null
+++ b/jobdri/components/common/AppShell.tsx
@@ -0,0 +1,30 @@
+"use client";
+
+import type { ReactNode } from "react";
+import { usePathname } from "next/navigation";
+import Lnb from "@/components/common/lnb/Lnb";
+import PageHeader from "@/components/common/PageHeader";
+
+const standaloneRoutes = new Set(["/login"]);
+
+export default function AppShell({ children }: { children: ReactNode }) {
+ const pathname = usePathname();
+
+ if (standaloneRoutes.has(pathname)) {
+ return <>{children}>;
+ }
+
+ return (
+
+ );
+}
diff --git a/jobdri/components/common/buttons/Button.tsx b/jobdri/components/common/buttons/Button.tsx
index 22a8bcc..b7e71a4 100644
--- a/jobdri/components/common/buttons/Button.tsx
+++ b/jobdri/components/common/buttons/Button.tsx
@@ -48,7 +48,7 @@ const styleTypeStyles: Record = {
};
const inactiveStyle =
- "bg-fill-disabled text-text-neutral-disabled hover:bg-fill-disabled";
+ "cursor-not-allowed bg-fill-disabled text-text-neutral-disabled hover:bg-fill-disabled";
const iconColorStyles: Record = {
primary: "text-icon-neutral-white",
@@ -80,7 +80,9 @@ export default function Button({
: "gap-1",
sizeStyles[size],
radiusStyles[size],
- isInactive ? inactiveStyle : styleTypeStyles[resolvedStyleType],
+ isInactive
+ ? inactiveStyle
+ : clsx("cursor-pointer", styleTypeStyles[resolvedStyleType]),
className,
)}
aria-disabled={isInactive || undefined}
diff --git a/jobdri/components/common/buttons/ButtonCtaModal.tsx b/jobdri/components/common/buttons/ButtonCtaModal.tsx
index b39e137..09f664e 100644
--- a/jobdri/components/common/buttons/ButtonCtaModal.tsx
+++ b/jobdri/components/common/buttons/ButtonCtaModal.tsx
@@ -31,7 +31,7 @@ function ModalIconButton({ label, iconType }: Stack3Item) {
return (