Developer Demo

Display Templates

Every display template variant in this project, rendered side by side with sample content. Editors pick these same templates and settings in Visual Builder - no content changes, no code changes.

Feature Item

Three visual layouts for the same title and description. The fallback (no template selected) renders a plain white card.

No template (fallback)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Outlined card

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Colored card

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Flat (divider only)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Shared setting: Background color

One shared setting definition drives every block. Here the Outlined card template sweeps all seven background choices.

White

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Off-white

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Blue

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Blue gradient

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Purple

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Dark

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

None

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Shared settings: Heading size and Font style

Heading size maps to responsive Tailwind text classes. Font style switches between Plus Jakarta Sans (Modern) and Inter (Classic).

Extra large (H1)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Large (H2)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Medium (H3)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Small (H4)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Modern (Plus Jakarta Sans)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Classic (Inter)

Instant transfers

Move money between Mosey accounts in seconds, any time of day, with no fees on standard transfers.

Product Card

Default and Featured templates share the same settings; Featured adds a highlight ring. Backgrounds come from the shared set.

Call to Action

Four button treatments for the same label and link, plus a size setting on each.

No template (brand button)

Outlined button

White background button

Text link with arrow

Section Heading

Left-aligned with an optional accent bar, or centered. Both accept the shared background, heading size, alignment, and font settings.

Default (left-aligned), accent bar

Banking that fits your life

Everything you need to manage money day to day, in one app.

Centered heading, Off-white background

Banking that fits your life

Everything you need to manage money day to day, in one app.

Testimonial

A boxed card with background choices, or a minimal pull-quote with an accent rail.

Card (boxed), White

Switching to Mosey Bank took one afternoon. The app does everything my old bank needed a branch visit for.

Sarah Chen

Small business owner

Card (boxed), Blue gradient

Switching to Mosey Bank took one afternoon. The app does everything my old bank needed a branch visit for.

Sarah Chen

Small business owner

Minimal (pull-quote with accent)

Switching to Mosey Bank took one afternoon. The app does everything my old bank needed a branch visit for.

Sarah Chen

Small business owner

Stats Counter

An accent rail with a number color setting, or a highlighted box with layout density. The fallback renders a plain centered stat.

No template (fallback)

2.4M

Active customers

Accent rail, Blue number

2.4M

Active customers

Accent rail, Purple number

2.4M

Active customers

Highlighted, Dark, compact

2.4M

Active customers

Outcome Stat

Inline places the number and label side by side; Boxed defaults to the blue gradient.

Inline stat

98%

of support chats answered in under a minute

Inline stat, Off-white badge

98%

of support chats answered in under a minute

Boxed stat

98%

of support chats answered in under a minute

Author

A compact byline, a profile card, and the full-bio fallback rendered when no template is selected.

Author byline

Priya Patel

Head of Personal Banking

LinkedIn

Profile card

Priya Patel

Head of Personal Banking

LinkedIn

No template (full bio)

Priya Patel

Head of Personal Banking

LinkedIn

Priya writes about everyday money management and leads the personal banking product team at Mosey Bank.

Team Member

Vertical card fallback versus the horizontal card template with a background choice.

No template (vertical card)

M

Marcus Webb

Chief Technology Officer

Marcus leads the engineering teams behind the Mosey app and open banking platform.

LinkedIn →

Horizontal card

M

Marcus Webb

Chief Technology Officer

Marcus leads the engineering teams behind the Mosey app and open banking platform.

LinkedIn →

Horizontal card, Blue

M

Marcus Webb

Chief Technology Officer

Marcus leads the engineering teams behind the Mosey app and open banking platform.

LinkedIn →

Pricing Tier

Standard versus the Compact template, which tightens padding and type. Highlighting comes from content; backgrounds from the shared set.

No template (standard)

Everyday

£0/month
  • Free instant transfers
  • Round-up savings
  • Spending insights
  • 24/7 chat support
Open an account

Standard, highlighted

Recommended

Everyday

£0/month
  • Free instant transfers
  • Round-up savings
  • Spending insights
  • 24/7 chat support
Open an account

Compact

Everyday

£0/month
  • Free instant transfers
  • Round-up savings
  • Spending insights
  • 24/7 chat support
Open an account

Compact, Blue gradient

Everyday

£0/month
  • Free instant transfers
  • Round-up savings
  • Spending insights
  • 24/7 chat support
Open an account

FAQ Item

Boxed card fallback versus the minimal divider-only template. Click a question to expand it.

No template (boxed)

How long does it take to open an account?
Most customers finish sign-up in under ten minutes. You will need photo ID and a UK address to get started.

Minimal (divider only)

How long does it take to open an account?
Most customers finish sign-up in under ten minutes. You will need photo ID and a UK address to get started.

Text Block

The Narrow layout template constrains line length and adds text size, alignment, font, and vertical padding settings.

No template (standard width)

Display templates separate what content says from how it looks. The editor picks a template and settings in Visual Builder; the component maps those choices to Tailwind classes at render time.

Narrow layout, large text, compact padding

Display templates separate what content says from how it looks. The editor picks a template and settings in Visual Builder; the component maps those choices to Tailwind classes at render time.

Image

The Rounded corners template adds a radius and an aspect ratio setting that crops the image to a fixed shape.

No template (natural size)

Sample gradient
Original aspect ratio

Rounded corners, 1:1 Square

Sample gradient
Cropped square with rounded corners

Logo Grid

Logo size, partner names, and alignment settings. Placeholder tiles render here because no CMS images are attached; in the CMS the Color template disables the grayscale filter.

No template (grayscale, centered)

Trusted by teams everywhere

Logo 1
Logo 2
Logo 3
Logo 4
Logo 5
Logo 6

Full color, small, names, left-aligned

Trusted by teams everywhere

Logo 1
Logo 2
Logo 3
Logo 4
Logo 5
Logo 6
Shared settings library1 file
src/components/blocks/_shared/displayTemplateSettings.ts
// Shared display template settings — spread these into displayTemplate() settings
// objects so every block exposes the same controls with the same plain-English labels.

type SelectSetting = {
  editor: "select";
  displayName: string;
  sortOrder: number;
  choices: Record<string, { displayName: string; sortOrder: number }>;
};

type CheckboxSetting = {
  editor: "checkbox";
  displayName: string;
  sortOrder: number;
  choices: Record<string, never>;
};

// Background color options — for any block that renders with a card or section background
export const BACKGROUND: { background: SelectSetting } = {
  background: {
    editor: "select",
    displayName: "Background color",
    sortOrder: 0,
    choices: {
      white:       { displayName: "White",          sortOrder: 0 },
      offWhite:    { displayName: "Off-white",       sortOrder: 1 },
      blue:        { displayName: "Blue",            sortOrder: 2 },
      blueGrad:    { displayName: "Blue gradient",   sortOrder: 3 },
      purple:      { displayName: "Purple",          sortOrder: 4 },
      dark:        { displayName: "Dark",            sortOrder: 5 },
      transparent: { displayName: "None",            sortOrder: 6 },
    },
  },
};

// Heading size — for any block with a visible heading or title
export const HEADING_SIZE: { headingSize: SelectSetting } = {
  headingSize: {
    editor: "select",
    displayName: "Heading size",
    sortOrder: 1,
    choices: {
      xl: { displayName: "Extra large (H1)", sortOrder: 0 },
      lg: { displayName: "Large (H2)",       sortOrder: 1 },
      md: { displayName: "Medium (H3)",      sortOrder: 2 },
      sm: { displayName: "Small (H4)",       sortOrder: 3 },
    },
  },
};

// Text alignment — for blocks where centering or right-alignment is meaningful
export const TEXT_ALIGN: { textAlign: SelectSetting } = {
  textAlign: {
    editor: "select",
    displayName: "Text alignment",
    sortOrder: 2,
    choices: {
      left:   { displayName: "Left",   sortOrder: 0 },
      center: { displayName: "Center", sortOrder: 1 },
      right:  { displayName: "Right",  sortOrder: 2 },
    },
  },
};

// Font style — Plus Jakarta Sans (display) and Inter (body) are both installed
export const FONT_STYLE: { fontStyle: SelectSetting } = {
  fontStyle: {
    editor: "select",
    displayName: "Font style",
    sortOrder: 3,
    choices: {
      modern:  { displayName: "Modern (Plus Jakarta Sans)", sortOrder: 0 },
      classic: { displayName: "Classic (Inter)",            sortOrder: 1 },
    },
  },
};

// Body text size — for blocks where the prose reading size should be adjustable
export const TEXT_SIZE: { textSize: SelectSetting } = {
  textSize: {
    editor: "select",
    displayName: "Text size",
    sortOrder: 4,
    choices: {
      sm: { displayName: "Small",  sortOrder: 0 },
      md: { displayName: "Medium", sortOrder: 1 },
      lg: { displayName: "Large",  sortOrder: 2 },
    },
  },
};

// ─── Tailwind class lookups ────────────────────────────────────────────────────

// Background → wrapper/text Tailwind classes
export const BG_CLASSES: Record<string, { wrapper: string; text: string; textMuted: string }> = {
  white:       { wrapper: "bg-surface-lowest border border-outline-variant",  text: "text-on-surface",     textMuted: "text-on-surface-variant" },
  offWhite:    { wrapper: "bg-surface-low border border-outline-variant",     text: "text-on-surface",     textMuted: "text-on-surface-variant" },
  blue:        { wrapper: "bg-brand/10 border border-brand/20",               text: "text-brand",          textMuted: "text-on-surface-variant" },
  blueGrad:    { wrapper: "bg-gradient-brand",                                text: "text-on-brand",       textMuted: "text-on-brand-subtle" },
  purple:      { wrapper: "bg-tertiary/10 border border-tertiary/20",         text: "text-tertiary",       textMuted: "text-on-surface-variant" },
  dark:        { wrapper: "bg-on-surface",                                    text: "text-surface-lowest", textMuted: "text-on-brand-subtle" },
  transparent: { wrapper: "",                                                 text: "text-on-surface",     textMuted: "text-on-surface-variant" },
};

// Heading size → Tailwind text size classes
export const HEADING_CLASSES: Record<string, string> = {
  xl: "text-5xl md:text-6xl",
  lg: "text-4xl md:text-5xl",
  md: "text-3xl md:text-4xl",
  sm: "text-2xl md:text-3xl",
};

// Font style → Tailwind font-family classes
export const FONT_CLASSES: Record<string, string> = {
  modern:  "font-display",
  classic: "font-body",
};

// Text size → Tailwind prose size classes
export const TEXT_SIZE_CLASSES: Record<string, string> = {
  sm: "text-sm",
  md: "text-base",
  lg: "text-lg",
};

// Text alignment → Tailwind text-align classes
export const TEXT_ALIGN_CLASSES: Record<string, string> = {
  left:   "text-left",
  center: "text-center",
  right:  "text-right",
};

Heroes

Full-width blocks with their own template settings: the Hero Default template controls alignment, height, heading size, and font; the Product Hero Compact template reduces height.

Hero, Default template, centered

Money, made simple

Join two million customers who switched to smarter everyday banking.

Product Hero, Compact template

New

Flex Saver

A savings account that adapts to your habits with automatic round-ups.