Back to Footers
Inspired by:Jolocky
Added on Oct 5, 2026
components/footers/notch-roastery/notch-roastery-footer.tsx
"use client"

import * as React from "react"

import { FooterView } from "./components/footer-view"
import { useBadgeSpin } from "./hooks/use-badge-spin"
import { useEntrance } from "./hooks/use-entrance"
import { useMediaQuery } from "./hooks/use-media-query"
import { useNotchClip } from "./hooks/use-notch-clip"
import { MOBILE_QUERY, REDUCED_MOTION_QUERY } from "./lib/constants"
import { resolveContent } from "./lib/resolve-content"
import type { NotchRoasteryFooterProps } from "./types"

export function NotchRoasteryFooter({
  className,
  onSubscribe,
  ...contentProps
}: NotchRoasteryFooterProps) {
  const content = resolveContent(contentProps)
  const footerRef = React.useRef<HTMLElement>(null)
  const panelRef = React.useRef<HTMLDivElement>(null)
  const badgeRef = React.useRef<HTMLDivElement>(null)

  const mobile = useMediaQuery(MOBILE_QUERY)
  const reduceMotion = useMediaQuery(REDUCED_MOTION_QUERY)

  useNotchClip(footerRef, panelRef)
  useEntrance(footerRef, panelRef, reduceMotion)
  useBadgeSpin(badgeRef, reduceMotion)

  return (
    <FooterView
      content={content}
      className={className}
      mobile={mobile}
      onSubscribe={onSubscribe}
      footerRef={footerRef}
      panelRef={panelRef}
      badgeRef={badgeRef}
    />
  )
}
Notch Roastery Footer
notch-roastery

Small-batch beans, roasted fresh.
One great cup at a time!

© 2026 Jolocky Coffee Co. / Roasted to order, delivered on repeat

Get the latest from Jolocky.

Follow us

Shaped Panels Architecture
Built from scratch by Jolocky, with our own layout, color and motion.
Signature Standard
Precision interaction engineering with zero external runtime bloat.
Open Source Registry
Production-ready multi-file tree built for modern Next.js and Tailwind CSS.

Engineering Breakdown

Notch Roastery Footer — A deep green footer for a coffee roaster, set on a black page as one big rounded panel with a quarter circle scooped out of its top right corner and a slowly turning text badge sitting in the gap. The tagline, link columns, newsletter field and round social icons fade up one after another when the footer scrolls into view, and then the huge cream wordmark rises letter by letter from behind the bottom edge. Links get an underline that draws in from the left, and the subscribe pill turns burnt orange on hover. On mobile the two link columns become accordions with a plus icon and the tagline wraps around the notch.
Every interaction state, motion curve, and responsive edge-case has been extracted and reconstructed for seamless integration into modern React applications.
01
Zero — Primitive Dependency & Pure Standalone Pattern: pure React and scoped CSS. There is no UI primitive library, no animation library, no image files and nothing extra to install.
02
Drawn Notch: the panel is clipped with a CSS path that has a rounded rectangle and a scoop with smooth fillets in the top right corner. It is calculated from the live size of the panel, so it stays exact at any width. The scoop radius and fillet come from CSS variables that change per breakpoint, and without script the panel is just a rounded rectangle.
03
Three Layouts: desktop from 1180px has four columns and a fixed 544px high panel with the wordmark at the bottom right, tablet puts the tagline on its own row above three columns and stretches the wordmark across, and mobile stacks everything in one column. Below 1400px the side padding on desktop gets tighter.
04
Entrance Once: the animations are built paused, which keeps everything hidden. When 20% of the panel is visible, the columns fade up 14px with a 60ms stagger and each wordmark letter then rises from 640px below with a 70ms stagger.
05
Letters as Groups: every letter of the wordmark is its own group in one SVG, so each can move on its own. The first letter holds its round dot as well.
06
Turning Badge: the text runs along a circle with a fixed text length and the whole badge turns once every 24 seconds. It is decorative and hidden from screen readers.
07
Accordions on Mobile Only: below 700px the column titles become buttons and the lists open by animating the grid row from 0fr to 1fr, while the plus turns into a minus. On larger screens the buttons are disabled and the lists stay open.
08
Text Wraps the Notch: on mobile an empty floating box with a circle shape pushes the tagline text away from the notch, so the lines follow the curve.
09
Newsletter Feedback: the browser checks the e — mail. A valid submit empties the field, changes the button to You're in and the placeholder to Check your inbox, and typing brings the normal text back. Pass an onSubscribe handler to send the e—mail to your provider; returning false or throwing shows Try again.
10
Reduced Motion: the entrance and the turning badge are skipped, so everything is simply visible.
Last Updated
Oct 5, 2026
Tags & Specifications
Notched PanelClip PathRising WordmarkRotating BadgeMobile AccordionsZero Primitive
Color Palette
#1F3B2B
#EDE6D6
Technology Stack
Engineered using established and reliable modern web technologies for peak runtime performance and developer ergonomics.
React
Next.js
TypeScript
Scoped CSS
Web Animations
Inline SVG
Zero Primitive