Components & Elements
A living reference of San Pedro's reusable design-system pieces — 100 sitewide background patterns and a catalog of the theme's real interactive effects.
100 sitewide CSS background patterns (pure gradients, no images —
see assets/css/bg-patterns.css). Any page or post
gets one automatically, picked consistently from its own URL.
To force a specific one instead, add the matching tag below to
that page/post in Ghost Admin — Ghost's own {{body_class}}
helper does the rest, no template changes needed.
Original set
01 · Grid
bg-pattern-102 · Dot grid
bg-pattern-203 · Diagonal lines
bg-pattern-304 · Circuit
bg-pattern-405 · Triangular mesh
bg-pattern-506 · Waves
bg-pattern-607 · Blueprint crosses
bg-pattern-708 · Data streaks
bg-pattern-809 · Topographic rings
bg-pattern-910 · Dither noise
bg-pattern-10Tech-themed (11–30)
11 · Circle glow
bg-pattern-1112 · Hex grid
bg-pattern-1213 · Terminal scanlines
bg-pattern-1314 · Matrix rain streaks
bg-pattern-1415 · Binary dot columns
bg-pattern-1516 · Motherboard traces
bg-pattern-1617 · Server rack lines
bg-pattern-1718 · Radar sweep
bg-pattern-1819 · Fiber optic glow
bg-pattern-1920 · Cloud nodes
bg-pattern-2021 · Chip pins
bg-pattern-2122 · Signal bars
bg-pattern-2223 · Pixel grid
bg-pattern-2324 · Data grid blueprint
bg-pattern-2425 · Halftone dots
bg-pattern-2526 · Wireframe sphere
bg-pattern-2627 · Neural mesh
bg-pattern-2728 · Voltage waves
bg-pattern-2829 · QR fragments
bg-pattern-2930 · Aurora glow
bg-pattern-30Fun & business-themed (31–50)
31 · Confetti scatter
bg-pattern-3132 · Bubbles
bg-pattern-3233 · Polka dot classic
bg-pattern-3334 · Bunting triangles
bg-pattern-3435 · Coffee ring stains
bg-pattern-3536 · Growth chart
bg-pattern-3637 · Handshake weave
bg-pattern-3738 · Calendar grid
bg-pattern-3839 · Sticky note scatter
bg-pattern-3940 · Linked rings
bg-pattern-4041 · Target rings
bg-pattern-4142 · Stock ticker lines
bg-pattern-4243 · Envelope flap chevrons
bg-pattern-4344 · ID badge stripe
bg-pattern-4445 · Quilted diamond
bg-pattern-4546 · Checklist dashes
bg-pattern-4647 · Sparkle scatter
bg-pattern-4748 · World dots
bg-pattern-4849 · Confetti streamers
bg-pattern-4950 · Champagne bubbles
bg-pattern-50Nature & organic (51–75)
51 · Falling leaves
bg-pattern-5152 · Grass blades
bg-pattern-5253 · Mountain ridges
bg-pattern-5354 · Star field
bg-pattern-5455 · Rain streaks
bg-pattern-5556 · Sand dunes
bg-pattern-5657 · Honeycomb
bg-pattern-5758 · Wood grain
bg-pattern-5859 · Marble veins
bg-pattern-5960 · Ripples
bg-pattern-6061 · Feather texture
bg-pattern-6162 · Floral silhouette
bg-pattern-6263 · Forest tree-line
bg-pattern-6364 · Ocean current lines
bg-pattern-6465 · Cloud wisps
bg-pattern-6566 · Root/branch fractal
bg-pattern-6667 · Pebbles
bg-pattern-6768 · Snowflake lattice
bg-pattern-6869 · Coral
bg-pattern-6970 · Moss texture
bg-pattern-7071 · Canyon layers
bg-pattern-7172 · Ice crack
bg-pattern-7273 · Sun rays
bg-pattern-7374 · Moon phases
bg-pattern-7475 · Topographic ecology
bg-pattern-75Retro & geometric (76–100)
76 · Memphis dots
bg-pattern-7677 · 80s grid
bg-pattern-7778 · Art deco fan
bg-pattern-7879 · Op-art stripes
bg-pattern-7980 · Geometric triangles
bg-pattern-8081 · Retro sunburst
bg-pattern-8182 · Terrazzo speckle
bg-pattern-8283 · Brutalist blocks
bg-pattern-8384 · Isometric cubes
bg-pattern-8485 · Chevron zigzag bold
bg-pattern-8586 · Vaporwave grid
bg-pattern-8687 · Punch card holes
bg-pattern-8788 · Mid-century starburst
bg-pattern-8889 · Houndstooth
bg-pattern-8990 · Argyle diamond
bg-pattern-9091 · Tessellation hexagon
bg-pattern-9192 · Kaleidoscope wedge
bg-pattern-9293 · Pinstripe suit
bg-pattern-9394 · Windowpane check
bg-pattern-9495 · Basket weave bold
bg-pattern-9596 · Cross-hatch shading
bg-pattern-9697 · Plaid crossing
bg-pattern-9798 · Scallop wave
bg-pattern-9899 · Brick wall
bg-pattern-99100 · Herringbone
bg-pattern-100The real interactive features built into San Pedro, cataloged here so they're easy to find and reuse — not a separate demo system, this is exactly the code running on the live site.
Robot Theme Toggle
The Human/Cyber switch in the header (#robot-theme-toggle) swaps every CSS token in main.css between a light editorial palette and a neon cyber palette, with a pulse animation on activation. See it live in the header above.
CountUp Stats
Numbers animate from 0 to their target value once scrolled into view, via the countup.js library wired to an IntersectionObserver so it only fires once, on first reveal.
Kinetic Text
Any element with data-kinetic-text gets its letters split and staggered with a fade-and-rise animation on load — used on the About page's heading. The softer of the theme's two letter effects. See a live replay below.
Curtain Text
data-curtain-text is the sharper sibling: each word becomes a mask and its letters rise out from behind the edge — no cross-fade, so every letter lands fully solid. Used on the Cheatsheet Libraries title. Letters are grouped per word, so a heading can never wrap mid-word. Tunable via --curtain-stagger, --curtain-offset and --curtain-duration.
Scroll Reveal
Post cards and similar elements fade/rise into view as they cross the viewport, via a custom IntersectionObserver in main.js — no external library. Add .reveal-text to any element to opt it in; .is-revealed is applied once it crosses into view and the CSS handles the animation.
Parallax
Hero images and tagged background elements ([data-parallax]) shift at a fraction of scroll speed for a subtle depth effect — disabled automatically under prefers-reduced-motion.
Slide-out Drawer Menu
The header's menu button opens a left-side drawer with a backdrop, built from scratch (no menu library) — try the Menu button at the top of this page.
Auto Icon Matching
Nav links, footer links, and tag-cloud items get a Font Awesome icon automatically chosen by keyword-matching their own text (navIconRules in main.js) — no icon has to be hand-assigned per link in Ghost Admin.
Glow-Link Hover
A blurred glow blob tracks the cursor inside a link and fades in on hover, via a CSS custom property (--glow-x/--glow-y) updated on mousemove. Now live on the footer's DigitalOcean credit link — try it below.
Live demos
Every demo below runs the exact production code — the same classes, selectors, and (where JS is involved) the same functions main.js uses sitewide — not a separate reimplementation.
Robot Theme Toggle
Triggers the real header toggle.
CountUp Stats
Auto-plays once on scroll into view.
Kinetic Text
Fade + rise, per letter. Replays on click.
Curtain Text
Masked rise, no fade — letters emerge from behind each word's edge. Replays on click.
Scroll Reveal + Blog-Post Hover
A real .post-card (same markup as partials/card.hbs) — fades in via scroll reveal, then hover it.
Hover to see the lift, zoom, and underline
translateY(-6px), image scale(1.05), title underline — all from the real .post-card:hover rule.
Parallax
Scroll the page — this is the real .parallax-hero-img, not a copy.
Slide-out Drawer
Opens the real site menu.
Click up to 10 swatches to build a shortlist. Auto-rotation will
then pick only from that list instead of all 50 (a page tagged
bg-pattern-N still always uses that exact one,
regardless of this list). Your clicks are saved as a draft in
this browser only — nothing sitewide changes until you copy the
string below and paste it into Ghost Admin.
Selected: 0 / 10
(none yet — click swatches above)
Paste that into Ghost Admin → Settings → Design → Brand (scroll to Theme settings) → Site BG Favorites, save, then a Ghost restart picks it up (same as any theme file deploy). Leave the field empty to go back to rotating all 50.
Every Ghost Admin theme setting this project has added, in one place — Settings → Design → Brand → Theme settings in Ghost Admin. Some apply sitewide; most are scoped to just one page (Components or About), so changing them can never leak onto anything else.
| Setting | Scope | What it does |
|---|---|---|
About BG Color | About | Same as Components BG Color, scoped to the About page's bio card instead. |
About BG Pattern | About | Same as Components BG Pattern, scoped to the About page instead. |
About Text Cyber | About | Same as Components Text Cyber, for the About page. |
About Text Human | About | Same as Components Text Human, for the About page. |
Components BG Color | Components | Background color of the bounded content card (not the full page) — the sitewide pattern still shows through the margin around it. |
Components BG Icon Color | Components | Color of this page's Font Awesome icons plus the pill-button/swatch border-and-hover accent. |
Components BG Pattern | Components | Forces one specific pattern (1–100) behind this page only, instead of the automatic per-URL pattern. Leave empty to use Auto. |
Components BG Transparent | Components | Makes the bounded content card transparent so the sitewide background pattern shows through the whole page instead of only the margin. Overrides Components BG Color while on. |
Components Text Cyber | Components | Body/heading text color for this page while the site is in Cyber mode — kept separate from Human so a fixed card background never goes low-contrast when the toggle flips. |
Components Text Human | Components | Body/heading text color for this page while the site is in Human mode. |
Changelog Theme | Changelog | Same picker for the Changelog timeline — accents the milestone dots, dates, and card hover borders. |
Components Theme | Components | Repaints this page's accent chrome using any cheatsheet brand's colours. Set to none to fall back to the sitewide Human/Cyber accent. |
Dashboard Theme | Dashboard | Same picker, scoped to the Dashboard page. Stamped as data-cheatsheet-brand so cheatsheet.css's brand rules supply --cs-accent. |
Style Guide Theme | Style Guide | Same picker for the Style Guide. Colours only that page's own chrome — the documented Human/Cyber tokens stay true regardless. |
Default Mode | Sitewide | Starting Human/Cyber theme on first visit — the robot toggle in the header still lets a visitor switch it live, this just sets which one loads by default. |
Site BG Favorites | Sitewide | Comma-separated pattern numbers (1–100). When set, every page's automatic background pattern is picked only from this shortlist instead of all 100 — build the list on the Pick Favorites tab above. |
Ghost Admin → Settings → Design → Theme. Fields render in the
order they are declared in the theme's package.json,
and their labels are derived from the key names — Ghost provides no way for a
theme to set a label, add a heading, or insert a separator.