• Template
  • Added on: v4.5.0 (07/12/18)

Profile landing page

Use this single page template to rapidly create a profile landing page within your project.


Design and usage

Structure

Desktop

  • All content sits within the defined 12 columns and is left aligned
  • Spacing above sections should be 80px
  • Last section out should be 60px

Tablet

  • All content sits within the defined 8 columns and is left aligned
  • Spacing above sections should be 60px
  • Last section out should be 40px

Mobile

  • All content sits within the 4 columns and is left aligned
  • Spacing above sections should be 60px
  • Last section out should be 40px

All breakpoints

  • Header uses the standard Masthead pattern from Framework
  • Page heading must be H1 regular (#5C596D)
  • Section heading must be H2 semi-bold (#5C596D)
  • Field labels must be H3 Regular (#5C596D)
  • Body copy (16px #444444)
  • Keyline can be used between sections when the content is light
  • Section keylines sit centre aligned full width per respective device grid structure (#CCC)
  • Space above and below 'edit' tertiary buttons 15px (55px total height includes hit area)
  • Button usage rules as per FW guidance (secondary button style for edit functions)
  • Primary CTA button should only be used once, any other buttons should be secondary/tertiary
  • Call us panel has a H2 semi bold header and content is left aligned
  • Logo image can be placed within cards text floated left (size 87px x 65px) if needed
  • Call us panel can have a maximum of three phone numbers (follows the same content rules as the current Contact us page element)
  • Prohibited: Contact us panel title has no key line under the title

Labels

  • Data replay used in cards
  • Modal includes new rule for field labels (H3 regular)
  • Radio buttons used in modal for 4 or more selectable options

Errors

  • Notification card errors follow existing rules.

Non-JS requirements and screen readers

  • Follows standard form rules for Non-JS.

Placement

  • All content on profile landing page template sits within the 12 columns on Desktop, 8 columns on Tablet and is full width on mobile with the content left aligned on all.

Use cases and exception scenarios

  • Edit functionality can be delivered in full screen modal or alternatively take the user to an edit page.

Interactive examples

Profile landing page template

A static example is shown below, and a working example can be seen on the profile landing page template page.

Download spacing design guidance PDF
Profile landing page

Profile landing page with preferences variation template

A static example is shown below, and a working example can be seen on the profile landing page with preferences variation template page.

Profile landing page with preferences variation

Profile landing page with payment details

A static example is shown below, and a working example can be seen on the profile landing page with payment details page.

Profile landing page with payment details

Profile landing page full screen modal template

A static example is shown below, and a working example can be seen on the profile landing page full screen modal template page.

Profile landing page full screen modal

Code examples

Profile landing page template

While the pages can be created using standard elements, be sure to add some utility classes to remove the top margin of the first element within the section u-margin--top-none and again the bottom margin from the last element within the section u-margin--bottom-none to retain the correct section spacing.

The bottom margin will also need to be removed from each data group m-data-group using the same utility class u-margin--bottom-none to retain the correct spacing between it and the tertiary edit buttons.

<div class="l-section l-section--in">
	<div class="l-content-container">
		<ol class="a-wayfinder-list">
			<li class="a-wayfinder-list__item">
				<a class="a-wayfinder-link" href="...">
					<span class="a-wayfinder-link__inner">...</span>
				</a>
			</li>
			<li class="a-wayfinder-list__item">
				<a class="a-wayfinder-link" href="...">
					<span class="a-wayfinder-link__inner">...</span>
				</a>
			</li>
			<li class="a-wayfinder-list__item">
				<a class="a-wayfinder-link" href="...">
					<span class="a-wayfinder-link__inner">...</span>
				</a>
			</li>
		</ol>
		<h1 class="a-heading a-heading--1 u-margin--bottom-none">...</h1>
	</div>
</div><div class="l-section l-section--in">
	<div class="l-content-container">
		<h2 class="a-heading a-heading--2 a-heading--semibold u-margin--top-none">...</h2>
		<hr class="a-divider-line a-divider-line--horizontal-solid a-divider-line--10-all">
		<ul class="m-data-group m-data-group--4-column m-data-group--double m-data-group--data-small u-margin--bottom-none">
			<li class="m-data-group-item">
				<h3 class="m-data-group-item__title">...</h3>
				<p class="m-data-group-item__data">...</p>
			</li>
			...
		</ul>
		<button class="a-button a-button--secondary a-button--edit"><span class="a-button__inner">...</span></button>
		...
	</div>
</div><div class="l-section l-section--in">
	<div class="l-content-container">
		<h2 class="a-heading a-heading--2 a-heading--semibold u-margin--top-none">...</h2>
		<hr class="a-divider-line a-divider-line--horizontal-solid a-divider-line--10-all">
		<div class="l-max l-max--left l-max--8-column-large">
			<div class="m-card m-card-notification m-card-notification--information t-accent-light t-accent-light--1" role="status">
				<div class="m-card-content">
					<div class="m-card-content__inner">
						<p>...</p>
					</div>
				</div>
			</div>
		</div>
		<div class="l-columns l-columns--2-large u-margin--bottom-none">
			<div class="l-columns__column">
				<div class="l-columns l-columns--2-medium l-columns--2-large">
					<div class="l-columns__column">
						<ul class="m-data-group m-data-group--data-small">
							<li class="m-data-group-item">
								<h3 class="m-data-group-item__title">...</h3>
								<p class="m-data-group-item__data">...</p>
							</li>
						</ul>
						<button class="a-button a-button--secondary"><span class="a-button__inner">...</span></button>
					</div>
					<div class="l-columns__column">
						<ul class="m-data-group m-data-group--data-small">
							<li class="m-data-group-item">
								<h3 class="m-data-group-item__title">...</h3>
								<p class="m-data-group-item__data">...</p>
							</li>
						</ul>
						<button class="a-button a-button--secondary"><span class="a-button__inner">...</span></button>
					</div>
				</div>
			</div>
		</div>
	</div>
</div><div class="l-section l-section--in">
	<div class="l-content-container">
		<h2 class="a-heading a-heading--2 a-heading--semibold u-margin--top-none">...</h2>
		<ul class="a-list-plain l-columns l-columns--2-large u-margin--bottom-none">
			<li class="l-columns__column m-card m-card--tertiary">
				<div class="m-card-content">
					<div class="m-card-content__inner">
						<h2 class="a-heading a-heading--2">...</h2>
						<p>...</p>
						<div class="m-data-replay m-data-replay--no-keyline m-data-replay--reversed-bold m-data-replay--larger-font">
							<dl>
								<div class="m-data-replay-item">
									<dt class="m-data-replay-item__title">...</dt>
									<dd class="m-data-replay-item__data">...</dd>
								</div>
								...
							</dl>
						</div>
						<div class="a-legal-text-image">
							<img src="..." decoding="async" width="..." height="..." alt="">
							<p>...<br />
							<a href="...">...</a></p>
						</div>
						<div class="m-card-content__inner m-card-content__inner--bottom">
							<ul class="m-button-group">
								<li class="m-button-group__item"><a href="..." class="a-button a-button--tertiary a-button--edit" data-module="o-modal" data-module-load="true" data-modal-fullscreen="true"><span class="a-button__inner">...</span></a></li>
							</ul>
						</div>
					</div>
				</div>
			</li>
			<li class="l-columns__column m-card m-card--tertiary">
				<div class="m-card-content">
					<div class="m-card-content__inner">
						<h2 class="a-heading a-heading--2">...</h2>
						<p>...</p>
						<div class="m-data-replay m-data-replay--no-keyline m-data-replay--reversed-bold m-data-replay--larger-font">
							<dl>
								<div class="m-data-replay-item">
									<dt class="m-data-replay-item__title">...</dt>
									<dd class="m-data-replay-item__data">...</dd>
								</div>
								...
							</dl>
						</div>
					</div>
					<div class="m-card-content__inner m-card-content__inner--bottom">
						<ul class="m-button-group">
							<li class="m-button-group__item"><a href="#example" class="a-button a-button--tertiary a-button--edit"><span class="a-button__inner">...</span></a></li>
						</ul>
					</div>
				</div>
			</li>
		</ul>
	</div>
</div><div class="l-section l-section--in">
	<div class="l-content-container">
		<h2 class="a-heading a-heading--2 a-heading--semibold u-margin--top-none">...</h2>
		<hr class="a-divider-line a-divider-line--horizontal-solid a-divider-line--10-all">
		<div class="l-max l-max--left l-max--8-column-large">
			<p>...</p>
		</div>
		<div class="l-max">
			<div class="m-showhide u-margin--bottom-none" data-module="m-showhide" data-module-load="true" data-accordion="true">
				<h3 class="a-heading a-heading--3 a-heading--light m-showhide__heading">...</h3>
				<div class="m-showhide__content">
					<p>...</p>
				</div>
				...
			</div>
		</div>
	</div>
</div><div class="l-section l-section--in-out">
	<div class="l-content-container">
		<div class="l-max l-max--left l-max--6-column-medium l-max--8-column-large u-margin--bottom-none">
			<div class="o-call-us-panel o-call-us-panel--one o-call-us-panel--left u-margin--top-none" itemprop="contactPoint" itemscope="" itemtype="https://schema.org/ContactPoint">
				<h2 class="a-heading a-heading--2 a-heading--semibold o-call-us-panel__heading">...</h2>
				<div class="o-call-us-panel-entries">
					<div class="o-call-us-panel-entry">
						<p class="a-heading a-heading--2 a-heading--semibold o-call-us-panel-entry__number"><a href="..." itemprop="telephone" content="...">...</a></p>
					</div>
				</div>
				<p class="o-call-us-panel__opening-day" itemprop="hoursAvailable" itemscope="" itemtype="https://schema.org/OpeningHoursSpecification">
					<meta itemprop="dayOfWeek" content="..." />
					<span>...</span>
					<meta itemprop="opens" content="..." />
					<meta itemprop="closes" content="..." />
					...
				</p>
				...
				<p class="o-call-us-panel__small-print"><small>...</small></p>
			</div>
		</div>
	</div>
</div>
<div class="o-modal-target"></div>

Preferences variation section

<div class="l-section l-section--in">
	<div class="l-content-container">
		<h2 class="a-heading a-heading--2 a-heading--semibold u-margin--top-none">...</h2>
		<ul class="a-list-plain l-columns l-columns--2-medium l-columns--3-large u-margin--bottom-none">
			<li class="l-columns__column m-card t-accent-light t-accent-light--3">
				<div class="m-card-content">
					<div class="m-card-content__inner">
						<h2 class="a-heading a-heading--3 a-heading--semibold">...</h2>
						<p>...</p>
					</div>
					<div class="m-card-content__inner m-card-content__inner--bottom">
						<button class="a-button a-button--tertiary a-button--edit"><span class="a-button__inner">...</span></button>
					</div>
				</div>
			</li>
			...
		</ul>
	</div>
</div>

Profile landing page full screen modal template

<div id="...">
	<form action="..." method="...">
		<fieldset>
			<legend>...</legend>
			<div class="l-content-container">
				<div class="l-section l-section--in">
					<div class="l-content-container">
						<div class="l-max l-max--left l-max--6-column-large l-max--6-column-medium">
							<h1 class="a-heading a-heading--1 a-heading--1-form u-margin--bottom-none">...</h1>
						</div>
					</div>
				</div>
				<div class="l-section l-section--in">
					<div class="l-content-container">
						<div class="l-max l-max--left l-max--6-column-large l-max--6-column-medium">
							<h2 class="a-heading a-heading--2 a-heading--2-form a-heading--semibold u-margin--top-none">...</h2>
							<hr class="a-divider-line a-divider-line--horizontal-solid a-divider-line--15-all">
							<p>...</p>
							<div class="m-form-row m-form-row--full-width">
								...
							</div>							...							<div class="a-legal-text-image u-margin--bottom-none">
								<img src="..." decoding="async" width="..." height="..." alt="">
								<p>...</p>
							</div>
						</div>
					</div>
				</div>
				<div class="l-section l-section--in-out">
					<div class="l-content-container">
						<div class="l-max l-max--left l-max--6-column-large l-max--6-column-medium">
							<h2 class="a-heading a-heading--2 a-heading--2-form a-heading--semibold u-margin--top-none">...</h2>
							<hr class="a-divider-line a-divider-line--horizontal-solid a-divider-line--15-all">
							<div class="m-form-row m-form-row--full-width">
								...
							</div>							<div class="m-form-row m-form-row--full-width">
								<ul class="m-button-group u-margin--bottom-none">
									<li class="m-button-group__item"><button class="a-button a-button--primary" type="submit">...</button></li>
									<li class="m-button-group__item"><button class="a-button a-button--secondary">...</button></li>
								</ul>
							</div>
						</div>
					</div>
				</div>
			</div>
		</fieldset>
	</form>
</div>

Development and test

Notes for developers

The code example below shows how to set up the basic elements within the page. It is not prescriptive, as the page can contain additional sections / form elements if required, but care should be taken to stay as close to the suggestion as possible to ensure consistency of spacing.

Documentation for other helpful modules/organisms when setting up your form may include:

Want something new in Framework, or to chat about an issue you're having with it?

Contact the team