StudioNope Themes Get the module →
HubSpot CMS Module

A filterable work grid for agencies.

Category pills, masonry or equal-grid layouts, three card styles, and CreativeWork structured data. An index of your projects — not a slider.

Get it on the HubSpot Marketplace See it in action
Category filter pills Masonry + equal grid JSON-LD schema No jQuery

Add your projects, give each a category, and the filter pills build themselves. Masonry or equal grid, three card styles, every value an editor field.

01 — Masonry · meta below · category pills

The studio index

Masonry layout with natural image heights, category, title and client·year below each card. Click a pill to filter — try it.

02 — Equal grid · overlay on hover · Space Grotesk

Edge-to-edge tiles

Equal grid with a fixed ratio, the title and category revealed over the image on hover, an indigo active pill and a Space Grotesk type set.

03 — Masonry · minimal · Fraunces · 2 columns

Editorial, two-up

A quieter two-column masonry with image and title only, a Fraunces serif, square pills and no filter bar — for a short, curated set.

Documentation

Everything you need to set it up

This page is the demo and the manual. The three grids above are the live module; everything below explains how to build them and what every field does.


What it is

Portfolio Grid Pro turns a list of projects into a filterable work index — the kind of "Selected work" grid agencies and studios put on a homepage or a dedicated work page. Each project is an image card with a title, category, optional client and year, and a link to the project. It is an index, not a slider.

1–48 projectsA repeater — add as many as you need.
Auto filter pillsBuilt from the categories on your projects.
No dependenciesVanilla JS, no jQuery, no libraries.

Quick start


Filtering

Give each project a category and the module builds one pill per distinct category, plus an "All" pill. Clicking a pill shows only the matching projects (and the others hide with no page reload). The pills only appear when you have more than one category, and the whole bar can be turned off. Filtering is plain JavaScript — no libraries.


Layouts & cards


SEO / structured data

All titles, categories and links are real, crawlable text and anchors. With structured data on, the module outputs an ItemList of CreativeWork entries in JSON-LD — each project's name, image, category, link, client (as the creator) and year — so search engines understand the grid as a list of works. It's a single, valid block you can turn off if your page already defines its own schema.


Style & branding

Every visible value is a field: section padding, max width, gap, image radius; independent eyebrow, heading, title, category and meta typography; pill font, colours, border, radius and alignment; hover effect and zoom amount; overlay colour for the overlay card style. The heading and title fonts inherit your theme heading font, and the active pill inherits your theme primary colour, so it fits your brand on drop-in.


Field reference

FieldWhereWhat it does
HeaderContentOptional eyebrow, heading (H2/H3) and sub-text above the grid.
ProjectsContentRepeater: image, title, category, client, year, link.
FilterContentToggle the category pills and set the "All" label.
SEOContentToggle ItemList / CreativeWork JSON-LD and set the list name.
LayoutStyleMasonry or equal grid, columns, image ratio, gap, max width, padding, background.
TypographyStyleEyebrow, heading, sub, title, category and meta fonts.
CardsStyleCard style, hover effect, image radius, zoom, overlay colours.
Filter pillsStyleFont, colours, border, radius, alignment, active colour.
EffectsStyleEntrance animation and stagger.
ResponsiveStyleTablet and mobile breakpoints.

FAQ

How is this different from a carousel?
A carousel shows a few items at a time and slides. This is a full index — every project visible at once in a grid, with category filtering. Use it for a work or projects page.
Where do the filter pills come from?
They're built automatically from the categories you set on your projects. One pill per distinct category, plus "All". No separate list to maintain.
Does it output structured data?
Yes — an ItemList of CreativeWork entries in JSON-LD, with each project's name, image, category, link, client and year. You can turn it off.
Masonry or equal grid?
Both. Masonry keeps each image's natural height; equal grid crops to a fixed ratio. Pick per instance, in 2–4 columns.
Does it need any libraries?
No. Filtering and the reveal animation are plain JavaScript. No jQuery, no HubDB, no external scripts.
Is it responsive?
Yes — columns step down on tablet and collapse to one on mobile, and images lazy-load.

Studio Nope

Show your work properly

A filterable work grid for your HubSpot site.