// app/(auth)/layout.js
'use client';
import Link from "next/link";
import { usePathname } from "next/navigation";
import './styles.css'
import { useState } from "react";
const navLinks = [
{ name: 'Register', href: '/register' },
{ name: 'Login', href: '/login' },
{ name: 'Forgot Password', href: '/forgot-password' },
];
export default function AuthLayout({ children }) {
const pathname = usePathname();
const [input, setInput] = useState('')
return (
<div>
<div>
<input value={input} onChange={(e) => setInput(e.target.value)}></input>
</div>
<div className="button-container">
{navLinks.map((link) => {
const isActive = pathname.startsWith(link.href);
return (
<Link
href={link.href}
key={link.name}
className={isActive ? "red" : "blue"}
>
{link.name}
</Link>
)
})}
{children}
</div>
</div>
)
}
(auth)에 해당하는 페이지에 들어가면

위와 같이 input값을 입력 가능한 텍스트 박스를 만들었다.
해당 input 텍스트 박스는 layout이므로 register, login, forgot password 페이지를 이동하더라도 동일한 레이아웃을 공유하는 페이지이므로 input값은 그대로 유지된다.
하지만 해당 layout.js 파일의 이름을 template.js로 바꾸게 되면 레이아웃이 아닌 템플릿이 되어 다른 페이지로 이동할 때 마다 템플릿의 특성에 의해 상태를 초기화시켜 input값이 초기화된다.
템플릿과 레이아웃을 함께 사용할 수 있는데

이와 같은 구조를 가지게 된다.
예를 들어 
이런 식으로 layout.js와 template.js 파일을 같은 경로에 두게 되면

이와 같이 레이아웃 안에 템플릿이 들어가는 구조가 된다.