Skip to main content

Styling your Wishlist Dialog with Custom CSS

A guide on how to style your wishlist dialog using custom CSS.

Written by Kris - Mage Loyalty
Updated today

Styling Your Wishlist Dialog

The wishlist dialog ships with a clean default design that looks great in most themes. When you need it to match your brand precisely, you can override any part of it with custom CSS.

All classes follow BEM naming conventions with the mage-wishlist__* prefix.


How Custom CSS Works

You can add custom CSS via:

  • Custom CSS field in the wishlist builder (Advanced tab)

  • Your Shopify theme stylesheet — target .mage-wishlist__* classes directly

We recommend using the code editor in the Advanced tab. The code editor features code autocomplete, code snippets and formatting.

Start typing .mage or --mage for autocomplete, and use snippets like card, header, signal-price-drop, or theme-vars to drop in pre-built blocks you can tweak.


CSS Variables (Theming)

The dialog uses 16 CSS custom properties. Override these to restyle the whole widget without touching individual classes.

Variable

Default

Controls

--mage-wishlist-surface

#fafaf9

Main dialog background, input backgrounds

--mage-wishlist-surface-muted

#f5f5f4

Subtle fills — variant dropdown background, card image placeholder, hovers

--mage-wishlist-text

#1c1917

Primary text — titles, prices, body copy

--mage-wishlist-text-muted

#78716c

Secondary text — availability info, captions, eyebrow labels

--mage-wishlist-border

#e7e5e4

Hairlines, input borders, divider under the header

--mage-wishlist-button-bg

#1c1917

Primary button background (Add to cart, Bulk add)

--mage-wishlist-button-text

#fafaf9

Primary button text color

--mage-wishlist-price-drop

#9a3412

Price drop badge + sale-price text

--mage-wishlist-low-stock

#6b5335

"Only N left" badge text color

--mage-wishlist-sold-out-bg

#1c1917

Sold-out badge background

--mage-wishlist-sold-out-text

#fafaf9

Sold-out badge text

--mage-wishlist-radius

4px

Base corner radius for cards, inputs, buttons

--mage-wishlist-font-display

ui-serif, Georgia, 'Fraunces', serif

Display font for the dialog title, empty-state headings

--mage-wishlist-font-sans

system sans-serif stack

Body and UI font

--mage-wishlist-font-caps

inherits --mage-wishlist-font-sans

Uppercase eyebrow labels ("3 ITEMS SAVED", signal badges, section headings)

--mage-wishlist-z-index

999999

Stacking order — raise if a fixed theme widget is sitting on top

Override variables in :root or scope to .mage-wishlist for higher specificity.


Shell & Layout

Class

Description

.mage-wishlist

Root wrapper (present on the backdrop element)

.mage-wishlist__backdrop

Full-screen overlay behind the dialog

.mage-wishlist__dialog

Dialog panel (centered, rounded, max-width 960px)


Header

Class

Description

.mage-wishlist__header

Top bar (padding, bottom border)

.mage-wishlist__header-lede

Left block — eyebrow + title wrapper

.mage-wishlist__eyebrow

"N ITEMS SAVED" label (uppercase, tracked)

.mage-wishlist__eyebrow--back

Clickable breadcrumb variant on the collection view

.mage-wishlist__title

Main title (display font, 32px)

.mage-wishlist__header-close

Close button (rounded, bordered)


Body

Class

Description

.mage-wishlist__body

Scrollable content area under the header (padding, gap)


Toolbar (Availability + Add-All-to-Cart)

Shown on the home view above the items grid when there are items to show.

Class

Description

.mage-wishlist__toolbar

Toolbar row (flex, space-between)

.mage-wishlist__toolbar-info

"N of M available" availability text

.mage-wishlist__bulk-add

"Add all to cart" button (pill, bordered)

.mage-wishlist__bulk-add-icon

Icon wrapper inside the bulk-add button


Section Headers

Used for "Items" and "Collections" section titles.

Class

Description

.mage-wishlist__section-header

Section header row (flex, baseline alignment)

.mage-wishlist__section-eyebrow

Section label (uppercase, tracked, muted)

.mage-wishlist__section-action

Trailing action link (e.g. "View all")


Items Grid

Class

Description

.mage-wishlist__items

Items section container

.mage-wishlist__grid

Product grid (auto-fill columns, 184px min card width)

.mage-wishlist__load-more

"Load more" button wrapper


Product Card

Class

Description

.mage-wishlist__card

Card wrapper (flex column, stretched to row height)

.mage-wishlist__card-media

Image frame (square, rounded, clipped)

.mage-wishlist__card-image-link

Link wrapping the image

.mage-wishlist__card-image

Product image (object-cover)

.mage-wishlist__card-heart

Heart button overlay (top-right of the image)

.mage-wishlist__card-veil

Sold-out veil over the image

.mage-wishlist__card-info

Title + price block

.mage-wishlist__card-title

Product title (clamped to 2 lines)

.mage-wishlist__card-price

Price row (current + compare-at)

.mage-wishlist__card-price--unavailable

Price modifier when the product is not purchasable

.mage-wishlist__card-price-current

Current price

.mage-wishlist__card-price-current--sale

Current price when on sale (usually red)

.mage-wishlist__card-price-compare

Compare-at price (strikethrough)

.mage-wishlist__card-variant

Variant dropdown wrapper (shown only for multi-variant)

.mage-wishlist__card-actions

Action row (Add-to-cart + more-menu button)


Signal Badges

Small pills that overlay the card image to highlight a state.

Class

Description

.mage-wishlist__signal

Base badge (frosted background, rounded, uppercase)

.mage-wishlist__signal--price-drop

Price drop modifier (uses --mage-wishlist-price-drop)

.mage-wishlist__signal--low-stock

"Only N left" modifier (uses --mage-wishlist-low-stock)

.mage-wishlist__signal--sold-out

Sold-out modifier (uses --mage-wishlist-sold-out-*)

.mage-wishlist__signal-dot

Leading status dot


Buttons

Class

Description

.mage-wishlist__btn

Base button styles (font, cursor, transitions)

.mage-wishlist__btn--add-to-cart

Primary add-to-cart CTA (flex-1, filled)

.mage-wishlist__btn--notify

Disabled back-in-stock notify state

.mage-wishlist__btn--more

Square more-menu button (three-dots)

.mage-wishlist__btn--primary

Primary button (logged-out CTA, rename save)

.mage-wishlist__btn--subtle

Subtle button (muted fill — cancel, secondary actions)

.mage-wishlist__btn--destructive

Destructive text button (for inline delete)

.mage-wishlist__btn--destructive-inline

Inline destructive toolbar action (trash + label)

.mage-wishlist__btn--danger

Solid danger button (delete-confirm sheet)


Inputs

Class

Description

.mage-wishlist__select

Variant dropdown (custom chevron, rounded)

.mage-wishlist__input

Text input (rename, create collection, share URL)


Empty / Logged-Out / Loading States

Class

Description

.mage-wishlist__empty

Empty-wishlist container (centered, padded)

.mage-wishlist__empty-heading

Empty-state heading (display font, 20px)

.mage-wishlist__empty-body

Empty-state body copy (muted)

.mage-wishlist__logged-out

Logged-out CTA container (centered)

.mage-wishlist__logged-out-heading

Sign-in heading (display font, 22px)

.mage-wishlist__logged-out-body

Sign-in body copy (muted)

.mage-wishlist__loading

Loading state container (centered)

.mage-wishlist__spinner

Loading spinner (28px, border animation)


Collections (Tiles)

Shown on the home view under the items grid.

Class

Description

.mage-wishlist__collections

Collections section container

.mage-wishlist__tiles

Tile row (flex, wraps on desktop, scrolls on mobile)

.mage-wishlist__tile

Tile button (pill shape, hover lifts)

.mage-wishlist__tile-covers

Cover stack wrapper (holds 1 or 2 product thumbnails)

.mage-wishlist__tile-cover

Individual cover circle

.mage-wishlist__tile-meta

Name + count stack to the right of the covers

.mage-wishlist__tile-name

Collection name

.mage-wishlist__tile-count

"N items" subtitle


Collection Page

Class

Description

.mage-wishlist__collection-toolbar

Toolbar on the collection page (share / rename / delete)

Rename Sheet

Class

Description

.mage-wishlist__rename-body

Sheet body for rename form

Share Drawer

Class

Description

.mage-wishlist__share-body

Body wrapper

.mage-wishlist__share-description

Helper copy above the link

.mage-wishlist__share-row

Input + Copy button row

Delete Confirm

Class

Description

.mage-wishlist__confirm-body

Confirmation sheet body

.mage-wishlist__confirm-name

Collection name in the confirmation

.mage-wishlist__confirm-message

Destructive-action explanation copy

.mage-wishlist__confirm-actions

Button row (Cancel + Delete)


Bottom Sheet (Action Sheet)

Shown when the shopper taps the three-dots button on a card.

Class

Description

.mage-wishlist__sheet-backdrop

Dim backdrop behind the sheet

.mage-wishlist__sheet

Sheet container (bottom on mobile)

.mage-wishlist__sheet-header

Sheet header (product name + close)

.mage-wishlist__sheet-title

Product title in the sheet header

.mage-wishlist__sheet-close

Close button

.mage-wishlist__sheet-actions

Action list container

.mage-wishlist__sheet-action

Individual action row

.mage-wishlist__sheet-action--danger

Destructive action (red text)


Collection Picker

Shown when the shopper adds an item to a collection from the action sheet.

Class

Description

.mage-wishlist__picker-list

Collections list

.mage-wishlist__picker-item

Collection row (clickable)

.mage-wishlist__picker-item--create

"Create new collection" option

.mage-wishlist__picker-item-name

Collection name

.mage-wishlist__picker-item-count

Item count on the right

.mage-wishlist__picker-create

Inline create-collection form

.mage-wishlist__picker-create-actions

Create form button row


Common Recipes

Match your brand colors in one shot

:root {   --mage-wishlist-surface: #ffffff;   --mage-wishlist-text: #0f172a;   --mage-wishlist-text-muted: #64748b;   --mage-wishlist-border: #e2e8f0;   --mage-wishlist-button-bg: #4f46e5;   --mage-wishlist-button-text: #ffffff;   --mage-wishlist-radius: 12px; }

Swap the dialog title font

:root {   --mage-wishlist-font-display: 'Playfair Display', Georgia, serif; }

Replace the price-drop accent

:root {   --mage-wishlist-price-drop: #16a34a; }

Raise the dialog above a sticky theme header

:root {   --mage-wishlist-z-index: 2147483000; }

Tighten the card grid

.mage-wishlist__grid {   grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));   gap: 32px 24px; }

Reorder sections on the home view

The home view lays out .mage-wishlist__toolbar, .mage-wishlist__items, and .mage-wishlist__collections as flex children — use order to rearrange them without markup changes:

.mage-wishlist__items       { order: 0; } .mage-wishlist__toolbar     { order: 1; } .mage-wishlist__collections { order: 2; }

Need help?

If you're trying to match a specific pattern from your theme and can't work out the right selector, reach out and we'll help.

Did this answer your question?