All files / components/Layout layout.tsx

100% Statements 3/3
100% Branches 2/2
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37                1x                         8x   8x                          
import React from "react";
 
import Transition from "@/components/Transition";
import Navbar from "@/components/Navbar";
import Head from "./Head";
import Footer from "@/components/Footer";
import "./index.scss";
 
const Layout = ({
  children,
  location,
  isPostPage,
}: {
  children: React.ReactNode;
  location: {
    pathname: string;
  };
  isPostPage?: boolean;
}) => {
  // isPostPageが明示的に渡されていない場合、pathnameから判定
  // ブログポストページは /20XX-XX-XX のようなパターンを持つ
  const isPost = isPostPage ?? /^\/20\d{2}-/.test(location.pathname);
 
  return (
    <div className="layout">
      <Head />
      <Navbar isPostPage={isPost} />
      <Transition location={location}>
        <div className="container-fluid">{children}</div>
      </Transition>
      <Footer />
    </div>
  );
};
 
export default Layout;