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

import * as React from "react"

import { ElsewhereLinks } from "./components/elsewhere-links"
import { LinkList } from "./components/link-list"
import { MetaBlock } from "./components/meta-block"
import { PixelArtCanvas } from "./components/pixel-art-canvas"
import { TopLink } from "./components/top-link"
import {
  DEFAULT_FOUNDRY_LINKS,
  DEFAULT_LINKS,
  DEFAULT_MOODS,
  DEFAULT_TYPEFACES,
} from "./data/defaults"
import { useClock } from "./hooks/use-clock"
import { useMediaQuery } from "./hooks/use-media-query"
import { useMood } from "./hooks/use-mood"
import { usePixelArt } from "./hooks/use-pixel-art"
import { useTypefacePreview } from "./hooks/use-typeface-preview"
import { classNames } from "./lib/class-names"
import { MOBILE_QUERY, REDUCED_MOTION_QUERY } from "./lib/constants"
import { footerStyles } from "./styles"
import type { PixelFoundryFooterProps } from "./types"

export function PixelFoundryFooter({
  className,
  city = "Jakarta",
  country = ", Indonesia",
  timeZone = "Asia/Jakarta",
  zoneLabel = "WIB",
  statusLabel = "Currently:",
  moods = DEFAULT_MOODS,
  topLabel = "Back to top ↑",
  topHref = "#top",
  topShortLabel = "Top ↑",
  foundryTitle = "Foundry",
  foundryLinks = DEFAULT_FOUNDRY_LINKS,
  typefacesTitle = "Typefaces",
  typefaces = DEFAULT_TYPEFACES,
  linksTitle = "Links",
  links = DEFAULT_LINKS,
  copyright = "© 2026 Jolocky",
  artLabel = "Jolocky wordmark drawn in rounded pixel blocks",
}: PixelFoundryFooterProps) {
  const canvasRef = React.useRef<HTMLCanvasElement>(null)
  const reduceMotion = useMediaQuery(REDUCED_MOTION_QUERY)
  const mobile = useMediaQuery(MOBILE_QUERY)
  const time = useClock(timeZone)
  const mood = useMood(moods, reduceMotion)
  const art = usePixelArt(canvasRef, mobile, reduceMotion)

  const preview = useTypefacePreview(art, typefaces)

  return (
    <footer className={classNames("pf-footer", className)}>
      <style>{footerStyles}</style>
      <div className="pf-top">
        <MetaBlock
          city={city}
          country={country}
          zoneLabel={zoneLabel}
          time={time}
          statusLabel={statusLabel}
          mood={mood}
        />

        <TopLink
          className="pf-totop"
          href={topHref}
          label={topLabel}
          reduceMotion={reduceMotion}
        />

        <LinkList title={foundryTitle} links={foundryLinks} />
        <LinkList
          title={typefacesTitle}
          links={typefaces}
          onActivate={preview.show}
          onLeave={preview.reset}
        />
        <ElsewhereLinks title={linksTitle} links={links} />

        <div className="pf-legal">
          <span>{copyright}</span>
          <TopLink
            href={topHref}
            label={topShortLabel}
            reduceMotion={reduceMotion}
          />
        </div>
      </div>

      <PixelArtCanvas canvasRef={canvasRef} label={artLabel} />
    </footer>
  )
}
Pixel Foundry Specimen
pixel-foundry
Jakarta, Indonesia → WIB
Currently:OFF-DUTY
Back to top ↑
Kinetic & Canvas 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

Pixel Foundry Specimen — A quiet monospaced footer for a type foundry, ending in a huge wordmark built from rounded pixel blocks on a canvas. The blocks assemble one by one when it scrolls into view, and a click builds it again. Move the cursor or drag a finger near it and the blocks break apart into separate pixels with a faint grid underneath. Hover or focus a typeface in the list and the whole wordmark morphs into that cut, whether it is studded, wobbly, dripping or fat. Above it sit a live clock for the studio's city and a status that rotates every few seconds and scrambles in, followed by link lists that turn into ruled rows with numbers on mobile.
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, scoped CSS and one canvas. There is no UI primitive library, no animation library, no image files and nothing extra to install.
02
Pixel Wordmark: the letters are 6 by 12 cell shapes laid out on a grid. Settled neighbouring cells merge into solid shapes with rounded outer corners, and empty inner corners are filled with a curve so the letters flow into each other.
03
Build Block by Block: when 30% of the canvas is visible, or after 2.5 seconds anyway, every cell fades in over 300ms. The delay grows with the column and row plus a little scatter, so the word builds from the top left. Clicking replays it.
04
Pointer Breaks the Blocks: cells near the cursor, or a dragging finger, ease away from the solid shape into rounded single pixels that are pushed outward, and a small grid dot appears in the empty cells they leave.
05
Four Typeface Cuts: Petak adds studs between letters, Kelok shifts the rows into a wobble, Lontong drips cells down and Gembul thickens every stroke by one cell. Hovering, focusing or touching a typeface morphs the art with a short stagger, and leaving the list returns to Petak.
06
Live Clock Without Mismatch: the studio's local time ticks every second from the Intl time formatter. The server render shows dashes so hydration always matches.
07
Rotating Status: every 3.6 seconds a new status scrambles in over nine 40ms frames. Letters settle from the left, spaces stay, and a square keeps blinking next to it. With reduced motion it switches at once.
08
Two Cell Shapes: on mobile the art is mounted again with taller cells, 2.6 times their width instead of 1.25, so it keeps its height in a narrow screen.
09
Three Layouts: desktop puts the meta on the left and three link columns from 53% across. Tablet adds a Back to top link and hides the country. Mobile makes ruled rows of 44px with numbers at the right, lists the outside links in one row and adds a copyright row with a short Top link.
10
Reduced Motion: the art appears at once, the status does not scramble, and the square stops blinking.
Last Updated
Oct 5, 2026
Tags & Specifications
Pixel WordmarkCanvas ArtTypeface MorphLive ClockStatus ScrambleZero Primitive
Color Palette
#efeeeb
#262626
Technology Stack
Engineered using established and reliable modern web technologies for peak runtime performance and developer ergonomics.
React
Next.js
TypeScript
Scoped CSS
HTML Canvas
Inline SVG
Zero Primitive