33import { usePathname } from "next/navigation"
44import { useMounted } from "nextra/hooks"
55
6+ import { StripesDecoration } from "@/app/conf/_design-system/stripes-decoration"
7+ import stripesMask from "@/components/404-page/image.webp"
8+
69import { Button } from "./conf/_design-system/button"
710import MainLayout from "./(main)/layout"
811
912import "@/globals.css"
1013import "@/app/colors.css"
1114
12- export default function Page ( ) {
15+ export default function NotFoundPage ( ) {
1316 const pathname = usePathname ( )
1417 const mounted = useMounted ( )
1518
@@ -29,22 +32,51 @@ export default function Page() {
2932
3033 return (
3134 < MainLayout >
32- < div className = "flex h-[500px] flex-col items-center justify-center gap-8 bg-neu-0 font-sans lg:h-[600px] lg:gap-10" >
33- < FourOhFourIcon className = "text-pri-base" />
34- < h1 className = "text-4xl text-neu-900" > Page not found</ h1 >
35- < div className = "flex gap-4 max-sm:flex-col" >
36- < Button variant = "primary" href = { url } >
37- Submit an issue about broken link
38- </ Button >
39- < Button variant = "secondary" href = "/" >
40- Go back home
41- </ Button >
35+ < style > { ".nextra-nav-container.sticky { position: fixed }" } </ style >
36+ < div className = "relative" >
37+ < Stripes />
38+ < div className = "relative z-10 flex h-[500px] flex-col items-center justify-center gap-8 pt-[--nextra-navbar-height] font-sans lg:h-[600px] lg:gap-10" >
39+ < FourOhFourIcon className = "text-pri-base" />
40+ < h1 className = "text-4xl text-neu-900" > Page not found</ h1 >
41+ < div className = "flex gap-4 max-sm:flex-col" >
42+ < Button variant = "primary" href = { url } >
43+ Submit an issue about broken link
44+ </ Button >
45+ < Button variant = "secondary" href = "/" >
46+ Go back home
47+ </ Button >
48+ </ div >
4249 </ div >
4350 </ div >
4451 </ MainLayout >
4552 )
4653}
4754
55+ function Stripes ( ) {
56+ return (
57+ < div
58+ aria-hidden
59+ className = "pointer-events-none absolute inset-0"
60+ style = { {
61+ maskImage : `url(${ stripesMask . src } )` ,
62+ WebkitMaskImage : `url(${ stripesMask . src } )` ,
63+ maskRepeat : "no-repeat" ,
64+ WebkitMaskRepeat : "no-repeat" ,
65+ maskPosition : "center 100%" ,
66+ WebkitMaskPosition : "center 100%" ,
67+ maskSize : "160%" ,
68+ WebkitMaskSize : "160%" ,
69+ } }
70+ >
71+ < StripesDecoration
72+ stripeWidth = "8px"
73+ evenClassName = "bg-[linear-gradient(180deg,hsl(var(--color-pri-light)/.4)_0%,hsl(var(--color-neu-0)/.2)_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-pri-dark)/0.6)_0%,hsl(var(--color-pri-darker)/0.3)_100%)]"
74+ oddClassName = "bg-[linear-gradient(180deg,hsl(var(--color-neu-0))_0%,hsl(var(--color-neu-0)/0)_100%)] dark:bg-[linear-gradient(180deg,hsl(var(--color-sec-dark)/0.4)_0%,transparent_100%)]"
75+ />
76+ </ div >
77+ )
78+ }
79+
4880function FourOhFourIcon ( { className } : { className ?: string } ) {
4981 return (
5082 < svg
0 commit comments