Design Book
This document defines the shared design language for GTV, the JACB Services helpdesk app, and any future projects. It follows GOV.UK Design System structure and principles, with tokens adapted to our brand and themes.
The system uses two themes — light (GTV default) and dark (helpdesk and invoice app) — driven by CSS custom properties. Use the Light / Dark buttons in the top bar to switch.
Colour
All colours are defined as CSS custom properties. The dark theme overrides the same properties — no additional class names needed on components.
Brand
Status
Typography
IBM Plex Sans for UI text, IBM Plex Mono for code, metadata, and monospace contexts. Sizes follow a modular scale.
Spacing
4px base unit. Use the named scale rather than arbitrary values.
Button
Buttons follow GOV.UK conventions — the primary action per page or section gets the primary button. Destructive actions use the warning variant. Ghost buttons are for low-emphasis actions inline with text.
Primary
ExampleSecondary
ExampleWarning (destructive)
ExampleGhost
ExampleAll variants
ExampleNotification banner
Used for system feedback — confirmation, error, caution, or neutral information. Always placed at the top of the main content area, above the page heading.
Success
ExampleError
ExampleWarning
ExampleInfo
ExampleCard
Cards are used for content listings — news items, testimonials, tickets, records. The branded variant with a top border is the primary pattern. Cards in a grid use card-grid.
Standard card
ExampleRuth Adler — Glasgow, 1938
Ruth fled Vienna with her family after Kristallnacht. She settled in Glasgow and later became a teacher.
View testimony →Card grid (3-up)
ExampleExhibition opens in Edinburgh
The interactive exhibition visits the Scottish Parliament next month.
Partnership with NLS confirmed
The National Library of Scotland will host the archive from 2026.
Table
Use for structured data with clear column relationships. Avoid tables for layout. Numeric columns align right with mono font. Add table--striped for longer lists.
Standard table
Example| Name | Status | Country of origin | Year arrived |
|---|---|---|---|
| Ruth Adler | Published | Austria | 1938 |
| Max Freedman | Draft | Germany | 1936 |
| Hana Kovač | Published | Czechoslovakia | 1939 |
Striped variant
Example| Ticket | Assigned to | Priority | Created |
|---|---|---|---|
| #1042 | Jeremy | High | 21 Mar |
| #1041 | Unassigned | Low | 20 Mar |
| #1040 | Jeremy | Medium | 19 Mar |
| #1039 | Unassigned | High | 19 Mar |
Breadcrumb
Place directly above the page heading. The current page is not a link. Use chevron (›) as separator. Do not use breadcrumbs on top-level pages.
Standard breadcrumb
ExampleAccordion
Use to let users show and hide sections of content. Good for FAQs, supporting detail, and anything where most users won't need all the content. Do not use to hide information that most users need — keep that visible.
Standard accordion
ExampleGathering the Voices is a Scottish charity that records and preserves oral testimonies from Holocaust survivors and refugees who settled in Scotland.
All testimonies are available on the GTV website. Some include audio recordings, transcripts, and photographs contributed by families.
Yes. If you or a family member has a testimony to share, get in touch through the contact page. GTV works with families to record and preserve stories sensitively.
Notes
Toggle is handled with a small JS snippet — clicking the button toggles accordion__item--open on the parent item and updates aria-expanded. Multiple items can be open at once. To restrict to one open at a time, close siblings on open.
Search
Used for in-page or site-wide search. The input and button are equal height and flush to each other. The header variant uses a compact 32px version; the standard component uses 44px for better touch targets.
Standard search
ExampleNotes
Always include role="search" on the wrapper for accessibility. Use type="search" on the input to get the browser's built-in clear button. The icon is the Unicode search symbol ⌕ (U+2315) — no icon library required. For the header compact variant, see the Navigation / header component.
Open source
This design system is free to use, adapt, and build on.
Our position
We built this design system for our own projects — GTV and the JACB Services helpdesk app — but we're happy for anyone to use it. If it saves you time, that's a good thing. Take what's useful, leave what isn't, and adapt it freely to your own context.
We don't require attribution, though it's always appreciated. We don't place any restrictions on commercial use. If you improve something or spot a mistake, feel free to share it back — but there's no obligation.
What you're free to do
- Use the HTML, CSS, and JS in your own projects
- Adapt the tokens and components to your own brand
- Use it commercially
- Build on top of it without crediting us
- Redistribute it as part of your own work
Built on the shoulders of others
This system is built on the principles and patterns of the GOV.UK Design System, which is itself open source and maintained by the Government Digital Service. We've adapted their approach, not copied their code. IBM Plex Sans and IBM Plex Mono are released under the SIL Open Font Licence.
FAQ
Common questions about using the design system.
How do I switch between light and dark theme?
Add data-theme="dark" to the <html> element for the dark theme. Remove it (or set it to "light") for the GTV light theme. All component styles respond automatically — no extra classes needed on individual elements.
Do I need to include all the CSS?
For now, yes — copy the full :root token block and the component styles you need. Once the system matures we'll split this into a base stylesheet plus per-project overrides.
Why no border-radius?
GOV.UK uses sharp corners throughout — it reads as clear and utilitarian rather than decorative. This is a deliberate choice and should be kept consistent across all projects.
What fonts are required?
IBM Plex Sans (weights 400, 500, 700) and IBM Plex Mono (weights 400, 500). Load from Google Fonts:
Can I add new components?
Yes — add them to this file with the same structure: a db-subsection block with a rendered example and the code snippet below it. Add an entry to the sidebar nav and a db-nav-group if it's a new category. Update the changelog with the version and date.
What's the GTV brand colour?
Primary brand purple is #4b286d. Use --color-brand rather than hardcoding the hex, so theme overrides work correctly.
Changelog
A record of changes to the design system.
v1.6 — Tarbert · 21 March 2026
- Search icon and input now equal height (32px in header, 44px in component)
- Working in-page search — scans section titles, descriptions, and subheadings; results overlay with keyword highlighting; closes on Escape or outside click
- Added Search as a component with standard variant, code example, and usage notes
- Search added to sidebar navigation
v1.5 — Tarbert · 21 March 2026
- Header nav hover colour corrected — stronger white underline with subtle background tint on hover
- Header logo mark changed from GTV to JACB on both pages
- Footer updated to JACB Services branding on both pages
- Added Open source section — position statement, permissions, and attribution notes
- Open source acknowledgement added to footers of index.html and design-book.html
- Open source added to sidebar navigation
v1.4 — Tarbert · 21 March 2026
- Added
index.htmlhomepage in GOV.UK Design System style - Design book chrome updated to full-width header bar + vertical nav panel layout
- Theme toggle moved to header bar (Light / Dark buttons)
- Navigation / header component example colours corrected — inline styles replace component class to avoid theme interference
- Added Vertical nav component with grouped sections, active state, and hover treatment
- Vertical nav added to sidebar navigation
v1.3 — Tarbert · 21 March 2026
- Added Accordion component with CSS-only open/close animation and ARIA support
- Introduced named version scheme — towns and villages on the west coast of Scotland, changing weekly
- Retconned v0.1 and v0.2 into v1.1 and v1.2 under the Tarbert release
v1.2 — Tarbert · 21 March 2026
- Navigation header height increased to 72px
- Fixed nav link hover jitter caused by border-bottom layout shift
- Added FAQ section
- Added Changelog section
- Added FAQ and Changelog entries to sidebar navigation
v1.1 — Tarbert · 21 March 2026
- Initial release
- Foundations: colour tokens, typography scale, spacing scale
- Two themes: light (GTV) and dark (Helpdesk/Invoice), driven by CSS custom properties
- Components: Button (primary, secondary, warning, ghost), Notification banner (4 variants), Card + card grid, Table (standard + striped), Navigation/header, Breadcrumb
Design Book v1.6 Tarbert — JACB Services. Built on GOV.UK Design System principles.
This design system is open source. We're happy for anyone to use, adapt, or build on it — no strings attached. If it's useful to you, use it. Read our open source note →