indigo, xdark #060923
indigo, dark #161a3c
(base)
indigo #1f2656
indigo, light #545da6
indigo, xlight #abb3f2
yellow, xdark #664900
yellow, dark #e8ad17
(base)
yellow #ffcc4d
yellow, light #ffe299
yellow, xlight #fff1cc
teal, xdark #003333
teal, dark #0a6666
(base)
teal #009999
teal, light #7acdcd
teal, xlight #b7e6e6
orange, xdark #661a00
orange, dark #b53b12
(base)
orange #e84b17
orange, light #ff8c66
orange, xlight #ffc6b3
gray, xdark #2e2e33
gray, dark #5c5d66
(base)
gray #8d8e99
gray, light #e0e2eb
gray, xlight #f6f6f9
(base)
black #151619
(base)
white #ffffff
blue, dark #005380
(base)
blue #0074b3
blue, light #d6f1ff
success, dark #256940
(base)
success #357e38
success, light #dbf0dc
error, dark #9d2315
(base)
error #b42818
error, light #fad5d1
warning, dark #cfb317
(base)
warning #e8cd30
warning, light #faf4d1
  • indigo — xlight
    Aa
    Aa
  • White (2.01)
    fail
    fail
  • Black (10.46)
    pass
    pass
  • indigo — light
    Aa
    Aa
  • White (6.01)
    pass
    pass
  • Black (3.49)
    pass
    fail
  • indigo — base
    Aa
    Aa
  • White (14.29)
    pass
    pass
  • Black (1.47)
    fail
    fail
  • indigo — dark
    Aa
    Aa
  • White (16.84)
    pass
    pass
  • Black (1.25)
    fail
    fail
  • indigo — xdark
    Aa
    Aa
  • White (19.61)
    pass
    pass
  • Black (1.07)
    fail
    fail
  • yellow — xlight
    Aa
    Aa
  • White (1.12)
    fail
    fail
  • Black (18.71)
    pass
    pass
  • yellow — light
    Aa
    Aa
  • White (1.27)
    fail
    fail
  • Black (16.59)
    pass
    pass
  • yellow — base
    Aa
    Aa
  • White (1.5)
    fail
    fail
  • Black (14)
    pass
    pass
  • yellow — dark
    Aa
    Aa
  • White (2.02)
    fail
    fail
  • Black (10.42)
    pass
    pass
  • yellow — xdark
    Aa
    Aa
  • White (8.34)
    pass
    pass
  • Black (2.52)
    fail
    fail
  • teal — xlight
    Aa
    Aa
  • White (1.36)
    fail
    fail
  • Black (15.47)
    pass
    pass
  • teal — light
    Aa
    Aa
  • White (1.84)
    fail
    fail
  • Black (11.44)
    pass
    pass
  • teal — base
    Aa
    Aa
  • White (3.49)
    pass
    fail
  • Black (6.02)
    pass
    pass
  • teal — dark
    Aa
    Aa
  • White (6.76)
    pass
    pass
  • Black (3.11)
    pass
    fail
  • teal — xdark
    Aa
    Aa
  • White (13.8)
    pass
    pass
  • Black (1.52)
    fail
    fail
  • orange — xlight
    Aa
    Aa
  • White (1.5)
    fail
    fail
  • Black (13.98)
    pass
    pass
  • orange — light
    Aa
    Aa
  • White (2.28)
    fail
    fail
  • Black (9.2)
    pass
    pass
  • orange — base
    Aa
    Aa
  • White (3.85)
    pass
    fail
  • Black (5.45)
    pass
    pass
  • orange — dark
    Aa
    Aa
  • White (5.83)
    pass
    pass
  • Black (3.6)
    pass
    fail
  • orange — xdark
    Aa
    Aa
  • White (12.26)
    pass
    pass
  • Black (1.71)
    fail
    fail
  • gray — xlight
    Aa
    Aa
  • White (1.08)
    fail
    fail
  • Black (19.47)
    pass
    pass
  • gray — light
    Aa
    Aa
  • White (1.29)
    fail
    fail
  • Black (16.25)
    pass
    pass
  • gray — base
    Aa
    Aa
  • White (3.25)
    pass
    fail
  • Black (6.46)
    pass
    pass
  • gray — dark
    Aa
    Aa
  • White (6.54)
    pass
    pass
  • Black (3.21)
    pass
    fail
  • gray — xdark
    Aa
    Aa
  • White (13.51)
    pass
    pass
  • Black (1.55)
    fail
    fail
  • black — base
    Aa
    Aa
  • White (18.09)
    pass
    pass
  • Black (1.16)
    fail
    fail
  • white — base
    Aa
    Aa
  • White (1)
    fail
    fail
  • Black (21)
    pass
    pass
  • blue — light
    Aa
    Aa
  • White (1.17)
    fail
    fail
  • Black (17.89)
    pass
    pass
  • blue — base
    Aa
    Aa
  • White (5.06)
    pass
    pass
  • Black (4.15)
    pass
    fail
  • blue — dark
    Aa
    Aa
  • White (8.24)
    pass
    pass
  • Black (2.55)
    fail
    fail
  • success — light
    Aa
    Aa
  • White (1.2)
    fail
    fail
  • Black (17.51)
    pass
    pass
  • success — base
    Aa
    Aa
  • White (5.01)
    pass
    pass
  • Black (4.19)
    pass
    fail
  • success — dark
    Aa
    Aa
  • White (6.62)
    pass
    pass
  • Black (3.17)
    pass
    fail
  • error — light
    Aa
    Aa
  • White (1.35)
    fail
    fail
  • Black (15.5)
    pass
    pass
  • error — base
    Aa
    Aa
  • White (6.45)
    pass
    pass
  • Black (3.26)
    pass
    fail
  • error — dark
    Aa
    Aa
  • White (7.82)
    pass
    pass
  • Black (2.68)
    fail
    fail
  • warning — light
    Aa
    Aa
  • White (1.11)
    fail
    fail
  • Black (18.93)
    pass
    pass
  • warning — base
    Aa
    Aa
  • White (1.59)
    fail
    fail
  • Black (13.21)
    pass
    pass
  • warning — dark
    Aa
    Aa
  • White (2.08)
    fail
    fail
  • Black (10.11)
    pass
    pass
  • social — linkedin
    Aa
    Aa
  • White (4.93)
    pass
    pass
  • Black (4.26)
    pass
    fail
  • social — twitter
    Aa
    Aa
  • White (2.59)
    fail
    fail
  • Black (8.1)
    pass
    pass
  • social — facebook
    Aa
    Aa
  • White (6.95)
    pass
    pass
  • Black (3.02)
    pass
    fail

Spacing Sizes

Name: : 2rem
Name: xxsmall: 0.25rem
Name: xsmall: 0.5rem
Name: small: 1rem
Name: medium: 2rem
Name: large: 4rem
Name: xlarge: 8rem
Name: xxlarge: 16rem

How to use

.class {
  margin-bottom: bolt-spacing(NAME);
}

text

Typography is the voice of a brand. This set of typefaces best represent Pega’s brand attributes and personality. They should be used across all digital and print applications.

See more in "Styleguide > Typography"

Temporibus aliquid dolor ut enim. Quia repellat maxime delectus ducimus pariatur. Laboriosam id enim totam. Debitis architecto architecto eos distinctio dolore. Odio quibusdam ipsum nulla asperiores sint similique in. Qui totam dignissimos consequatur.

Header 1

Here's a link, a big bold statement, some emphasized comment, and some weird words. Sequi vero cupiditate iste quis atque voluptatum. Qui voluptatem aut molestiae occaecati iure sapiente voluptatem. Quia deleniti vel facilis quia aut voluptas. Exercitationem qui non eum fugit. Ea sed corporis aut amet est. Doloremque consequuntur quam eveniet. Laborum omnis consectetur sint esse. Est dolor repellat assumenda autem voluptate sint quod. Est vitae ut repudiandae sed. Omnis vero recusandae consequatur enim ea. Explicabo incidunt sit eum non. Vitae ut dolore saepe sunt velit enim doloremque. Vel quae qui itaque inventore quod quaerat. Sit sunt dicta aut doloribus. Reprehenderit eum veritatis cum eum eum sint blanditiis. Aspernatur omnis id non commodi architecto. Aut facilis molestiae quisquam ut. Ut magni atque dolor quia ipsam eum.

Header 2

Ut omnis natus rem optio ut. Voluptatem consequatur ut eveniet numquam. Repellat pariatur nobis ut aliquam omnis est. Nostrum eaque eum itaque nihil. Nulla eos labore repellendus eum tenetur est. Nemo rem eius omnis nihil rem. Qui ducimus sapiente provident. Similique velit enim iste dolorem magnam ut ullam. Quae eaque quaerat doloribus esse nesciunt quia minus. Vero consectetur enim reiciendis. Voluptas esse qui voluptas accusantium explicabo totam libero. Officia aliquam molestiae labore officia aut maiores et aperiam. Rerum non dolor sit. Est aut sed nisi rerum. Fugit voluptas rem totam tempore dolorem. Sint ex exercitationem vel ipsa deserunt laborum est.

Header 3

Voluptate et libero suscipit et ut laudantium ut. Saepe dolor distinctio repellendus impedit. Odio quis labore neque et assumenda tempore. Eveniet dicta reiciendis et non dolore vel. Ea porro voluptatem quia unde nihil eligendi. Quisquam qui voluptatibus culpa libero et modi. Pariatur ducimus nulla quis voluptatem. Ut voluptatem quia in dolor laboriosam. Vel necessitatibus ipsam in ullam exercitationem. Velit rerum quia sit officia dolorum. Dolorem officiis impedit et sunt. Molestiae accusamus est molestias quo. Quas delectus incidunt quasi aspernatur. Aperiam ea asperiores nihil porro aperiam pariatur.

I'm a blockquote: Molestiae quos repellat consequuntur sit qui. Ex quam quas consectetur debitis ratione dicta. Voluptatem sed harum est aut at et natus. Est et dicta totam deleniti dolorum est nam occaecati. Et magni ut aperiam eum. Cupiditate in sed eos voluptates odit voluptatem quia.

Et repudiandae sint quo nulla et. Hic sed occaecati quasi consequatur odit. Et qui ut molestias similique placeat vero reprehenderit. Et autem quae sequi numquam iusto praesentium. Ut placeat rem qui dicta. In reiciendis beatae sint cum eius repellat velit. Culpa cumque fugiat aspernatur non ut consequuntur error unde. Earum et blanditiis sequi iure. Qui accusantium ratione et iusto voluptatem ullam repudiandae. Cum corporis qui aut necessitatibus. Eius deserunt amet repudiandae quo rerum. Eveniet vero ut aperiam saepe dolores non blanditiis. Assumenda modi cumque molestias soluta ducimus in deserunt. Dolorem eos ea doloribus mollitia labore. Cumque sed atque odio qui in distinctio. Dolor laborum id fuga eum id voluptatum esse ea. Dolorem est sed voluptate dolores aliquam occaecati aliquam.

  • quidem consequuntur sint
  • error ducimus aut
  • consectetur velit iusto

Accusantium consectetur beatae numquam optio modi quis voluptates. Voluptatibus eum exercitationem vitae aperiam. Animi ducimus maiores voluptatem commodi rerum. Consequuntur voluptate qui nesciunt. Nemo sunt veniam soluta rerum. Rerum ea nam est ipsum labore dolorem. Enim eos molestiae est tempora. Fugiat voluptatem vitae ut alias laborum rerum.

Header 4

Saepe assumenda asperiores tempore sunt ad sequi labore. Molestiae quia porro facilis quo omnis. Voluptatibus recusandae quaerat rerum iure. Dolore at delectus aperiam aut quia. Minus nostrum molestiae consequatur qui vel. Quia est est sit in recusandae dignissimos. Et quis non et eum quae consequatur nihil. Saepe esse cum ut aspernatur et. Totam sit tempora facere mollitia.

Header 5

Impedit dolor at tempora consequatur ipsa nam. Eum qui eum tempore eum facilis fuga. Ducimus iure dolorem omnis cumque. Totam et et architecto aperiam quaerat. Et ut et occaecati quia beatae. Accusamus aut ut sint illo omnis. Quos officiis et in vel qui minus. Consequatur deserunt sunt qui. A illum maiores ipsa ipsum eos. Autem omnis voluptate ipsa quisquam sed sed. Ullam nam temporibus et et sint dolores sapiente. Commodi totam quo sed deserunt. Officiis ut id expedita et quis. Accusantium quia atque minus soluta fugit laborum. Vitae sed nulla expedita maxime consectetur. Ipsum ex odit autem itaque tempora magnam qui.

Header 6

Dolorum saepe eligendi optio dolore saepe. Consequatur voluptatem ipsam sunt enim. Voluptatem doloremque aut omnis non impedit ipsam. Mollitia et natus perferendis voluptas quo. Consectetur ut laboriosam vel eligendi sed natus sit. Consequatur consequuntur error saepe qui fugiat voluptas fugiat. Porro non nihil sunt id ut commodi impedit. Sunt molestiae consequuntur saepe reiciendis eum molestiae. Quia corporis et corrupti sequi facere. Autem rerum quaerat enim dignissimos. Tempora enim nihil ut assumenda.

  • xxsmall:
    320px
  • xsmall:
    400px
  • small:
    600px
  • medium:
    800px
  • large:
    1000px
  • xlarge:
    1200px
  • xxlarge:
    1400px
  • xxxlarge:
    1920px
  • iPhone Portrait: 320px
  • Galaxy Nexus Portrait: 360px
  • iPhone 6 Portrait: 375px
  • iPhone 6 Plus Portrait: 414px
  • Galaxy Note 3 Portrait: 540px
  • iPhone Landscape: 568px
  • Google Nexus 7 Portrait: 604px
  • Galaxy Nexus Landscape: 640px
  • iPhone 6 Landscape: 667px
  • iPhone 6 Plus Landscape: 738px
  • iPad Portrait: 768px
  • Galaxy Note 3 Landscape: 960px
  • Google Nexus 7 Landscape: 966px
  • iPad Landscape: 1024px
  • 11" MacBook Air: 1366px
  • 13" MacBook Air: 1440px
  • 21.5" iMac: 1980px

How to use

.c-component-name {
  // Setting a min (mobile first)
  @include bolt-mq(xsmall) {
    background-color: red;
  }

  // Setting a max (desktop first)
  @include bolt-mq($until: xsmall) {
    background-color: blue;
  }

  // Setting a range (adaptive)
  @include bolt-mq($from: medium, $until: xlarge) {
    background-color: yellow;
  }

  // Setting orientation or other media queries
  @include bolt-mq($from: xlarge, $until: xxxlarge, $and: '(orientation: portrait)') {
    background-color: green;
  }
}

Bolt Opacity

Add the utility class .u-bolt-opacity-xx where xx equals the opacity you wish to apply.

Possible values include:

  • 0
  • 20
  • 40
  • 60
  • 80
  • 100

Opacity class: .u-bolt-opacity-100

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Opacity class: .u-bolt-opacity-80

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Opacity class: .u-bolt-opacity-60

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Opacity class: .u-bolt-opacity-40

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Opacity class: .u-bolt-opacity-20

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Opacity class: .u-bolt-opacity-0

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Bolt Shadows

Add the utility class u-bolt-shadow-xx where xx equals the level of shadow you wish to apply.

For example: .u-bolt-shadow-level-10

level-10
Utility Class
.u-bolt-shadow-level-10
Scss Mixin
@include bolt-shadow("level-10");
level-20
Utility Class
.u-bolt-shadow-level-20
Scss Mixin
@include bolt-shadow("level-20");
level-30
Utility Class
.u-bolt-shadow-level-30
Scss Mixin
@include bolt-shadow("level-30");
level-40
Utility Class
.u-bolt-shadow-level-40
Scss Mixin
@include bolt-shadow("level-40");
level-50
Utility Class
.u-bolt-shadow-level-50
Scss Mixin
@include bolt-shadow("level-50");
level-60
Utility Class
.u-bolt-shadow-level-60
Scss Mixin
@include bolt-shadow("level-60");
level-70
Utility Class
.u-bolt-shadow-level-70
Scss Mixin
@include bolt-shadow("level-70");
Hoverable

To add an animated shadow that "lifts" on hover, add the u-bolt-shadow-xx-hoverable where xx equals the level of shadow you wish to use.

For example: .u-bolt-shadow-level-10-hoverable

level-10
Utility Class
.u-bolt-shadow-level-10-hoverable
Scss Mixin
@include bolt-shadow("level-10", true);
level-20
Utility Class
.u-bolt-shadow-level-20-hoverable
Scss Mixin
@include bolt-shadow("level-20", true);
level-30
Utility Class
.u-bolt-shadow-level-30-hoverable
Scss Mixin
@include bolt-shadow("level-30", true);
level-40
Utility Class
.u-bolt-shadow-level-40-hoverable
Scss Mixin
@include bolt-shadow("level-40", true);
level-50
Utility Class
.u-bolt-shadow-level-50-hoverable
Scss Mixin
@include bolt-shadow("level-50", true);
level-60
Utility Class
.u-bolt-shadow-level-60-hoverable
Scss Mixin
@include bolt-shadow("level-60", true);
level-70
Utility Class
.u-bolt-shadow-level-70-hoverable
Scss Mixin
@include bolt-shadow("level-70", true);
SassDoc references

Bolt Z-index

Add the utility class u-bolt-z-index-xx where xx equals the z index level you wish to apply.

For example: .u-bolt-z-index-fab

Z-Index: fab: 300
Utility Class: u-bolt-z-index-fab

Z-Index: modal: 200
Utility Class: u-bolt-z-index-modal

Z-Index: modalBG: 180
Utility Class: u-bolt-z-index-modalBG

Z-Index: navFixed: 160
Utility Class: u-bolt-z-index-navFixed

Z-Index: tooltip: 140
Utility Class: u-bolt-z-index-tooltip

Z-Index: popover: 120
Utility Class: u-bolt-z-index-popover

Z-Index: nav: 100
Utility Class: u-bolt-z-index-nav

Z-Index: contentTop: 80
Utility Class: u-bolt-z-index-contentTop

Z-Index: content: 60
Utility Class: u-bolt-z-index-content

Z-Index: contentBottom: 40
Utility Class: u-bolt-z-index-contentBottom

Z-Index: backgroundTop: 20
Utility Class: u-bolt-z-index-backgroundTop

Z-Index: background: 0
Utility Class: u-bolt-z-index-background

Z-Index: backgroundBottom: -20
Utility Class: u-bolt-z-index-backgroundBottom

SassDoc references

Bolt SassDoc

Major breakpoints used globally in Bolt.
$bolt-breakpoints: (
  xxsmall:  320px,
  xsmall:   400px,
  small:    600px,
  medium:   800px,
  large:    1000px,
  xlarge:   1200px,
  xxlarge:  1400px,
  xxxlarge: 1920px
);

Source

_settings-breakpoints.scss:9 01-settings/settings-breakpoints/_settings-breakpoints.scss
View on GitHub

Author

Salem Ghoweri
A duplicate of $bolt-breakpoints - used within mq()
$mq-breakpoints: $bolt-breakpoints;

Source

_settings-breakpoints.scss:22 01-settings/settings-breakpoints/_settings-breakpoints.scss
View on GitHub

Author

Salem Ghoweri
Bolt default color var.
$bolt-color-default: 'base';

Source

_settings-colors.scss:11 01-settings/settings-colors/_settings-colors.scss
View on GitHub
Bolt Brand Colors - merged into $bolt-colors map
$bolt-brand-colors: (
  'indigo': (
    'xdark': hsl(233, 71%, 8%),
    'dark': hsl(233, 47%, 16%),
    'base': hsl(233, 47%, 23%),
    'light': hsl(233, 33%, 49%),
    'xlight': hsl(233, 73%, 81%),
  ),
  'yellow': (
    'xdark': hsl(43, 100%, 20%),
    'dark': hsl(43, 82%, 50%),
    'base': hsl(43, 100%, 65%),
    'light': hsl(43, 100%, 80%),
    'xlight': hsl(43, 100%, 90%),
  ),
  'teal': (
    'xdark': hsl(180, 100%, 10%),
    'dark': hsl(180, 82%, 22%),
    'base': hsl(180, 100%, 30%),
    'light': hsl(180, 45%, 64%),
    'xlight': hsl(180, 48%, 81%),
  ),
  'orange': (
    'xdark': hsl(15, 100%, 20%),
    'dark': hsl(15, 82%, 39%),
    'base': hsl(15, 82%, 50%),
    'light': hsl(15, 100%, 70%),
    'xlight': hsl(15, 100%, 85%),
  ),
  'gray': (
    'xdark': hsl(233, 6%, 19%),
    'dark': hsl(233, 5.3%, 38%),
    'base': hsl(233, 5.7%, 57.6%),
    'light': hsl(233, 20%, 90%),
    'xlight': hsl(233, 23%, 97%),
  ),
  'black': (
    'base': hsl(225, 8%, 9%),
  ),
  'white': (
    'base': hsl(0, 0%, 100%),
  ),
);

Source

_settings-colors.scss:15 01-settings/settings-colors/_settings-colors.scss
View on GitHub
Bolt Status Colors - merged into $bolt-colors map
$bolt-status-colors: (
  'blue': (
    'dark': hsl(201, 100%, 25%),
    'base': hsl(201, 100%, 35%),
    'light': hsl(201, 100%, 92%),
  ),
  'success': (
    'dark': rgb(37, 41%, 25%),
    'base': hsl(123, 41%, 35%),
    'light': hsl(123, 41%, 90%),
  ),
  'error': (
    'dark': hsl(6, 76%, 35%),
    'base': hsl(6, 76%, 40%),
    'light': hsl(6, 80%, 90%),
  ),
  'warning': (
    'dark': hsl(51, 80%, 45%),
    'base': hsl(51, 80%, 55%),
    'light': hsl(51, 80%, 90%),
  ),
);

Source

_settings-colors.scss:61 01-settings/settings-colors/_settings-colors.scss
View on GitHub
Bolt Social Colors - merged into $bolt-colors map
$bolt-social-colors: (
  'social': (
    'facebook': hsl(222, 46%, 42%),
    'twitter': hsl(196, 100%, 46%),
    'linkedin': hsl(201, 96%, 36%),
  ),
);

Source

_settings-colors.scss:86 01-settings/settings-colors/_settings-colors.scss
View on GitHub
All Bolt Colors - used within bolt-color @mixin and @function
$bolt-colors: map-merge(
  map-merge($bolt-brand-colors, $bolt-status-colors),
  $bolt-social-colors
);

Source

_settings-colors.scss:98 01-settings/settings-colors/_settings-colors.scss
View on GitHub
Global Default Min Base Font Size
$bolt-base-font-size--min: 15px;

Source

_settings-global.scss:18 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Global Default Max Base Font Size
$bolt-base-font-size--max: 18px;

Source

_settings-global.scss:20 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Async Default font subset loaded class.
$bolt-fonts--subset-loaded-class: 'js-fonts-subset-loaded';

Source

_settings-global.scss:24 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Async Default font loaded class.
$bolt-fonts--loaded-class: 'js-fonts-loaded';

Source

_settings-global.scss:26 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt shadow color
$bolt-shadow-color: bolt-color(black);

Source

_settings-global.scss:31 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt small shadow
$bolt-shadow--small: 0 2px 0.15rem rgba($bolt-shadow-color, 0.3);

Source

_settings-global.scss:33 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt medium shadow
$bolt-shadow--medium: 0 0.15rem 0.3rem rgba($bolt-shadow-color, 0.35);

Source

_settings-global.scss:35 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt large shadow
$bolt-shadow--large: 0 0.35rem 0.6rem rgba($bolt-shadow-color, 0.18);

Source

_settings-global.scss:37 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt border width
$bolt-border-width: 1px;

Source

_settings-global.scss:41 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt border style
$bolt-border-style: solid;

Source

_settings-global.scss:43 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt border color
$bolt-border-color: rgba(bolt-color(gray), 0.2);

Source

_settings-global.scss:45 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt border radius
$bolt-border-radius: 3px;

Source

_settings-global.scss:47 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt transition
$bolt-transition: ease-in-out 200ms;

Source

_settings-global.scss:51 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt transition ease
$bolt-transition-ease: ease-in-out;

Source

_settings-global.scss:53 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt transition timing
$bolt-transition-timing: 200ms;

Source

_settings-global.scss:55 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt translate none effect
$bolt-translate-none: translate3d(0, 0, 0);

Source

_settings-global.scss:59 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt translate raised small effect
$bolt-translate-raised--small: translate3d(0, -1px, 0);

Source

_settings-global.scss:61 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt translate raised medium effect
$bolt-translate-raised--medium: translate3d(0, -0.125rem, 0);

Source

_settings-global.scss:63 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt translate raised large effect
$bolt-translate-raised--large: translate3d(0, -0.25rem, 0);

Source

_settings-global.scss:65 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global link hover opacity
$bolt-global-link-hover-opacity: bolt-opacity(80);

Source

_settings-global.scss:70 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global link active opacity
$bolt-global-link-active-opacity: bolt-opacity(60);

Source

_settings-global.scss:72 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global border opacity
$bolt-global-border-opacity: bolt-opacity(20);

Source

_settings-global.scss:75 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global border color
$bolt-global-border-color: bolt-color(gray);

Source

_settings-global.scss:77 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global button hover mix %
$bolt-global-button-hover-mix: 15%;

Source

_settings-global.scss:80 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global button hover color
$bolt-global-button-hover-color: bolt-color(white);

Source

_settings-global.scss:82 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global button active mix %
$bolt-global-button-active-mix: 25%;

Source

_settings-global.scss:84 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt default global button active color
$bolt-global-button-active-color: bolt-color(black);

Source

_settings-global.scss:86 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt's definition of block level elements.
$bolt-block-elements-list: 'p',
  'pre',
  'blockquote',
  'table',
  'ol',
  'ul',
  'dl',
  'fieldset',
  'legend',
  'details',
  'summary',
  'hr',
  'address';

Source

_settings-global.scss:94 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt's definition of all unquoted block level elements.
$bolt-all-block-elements: $bolt-unquoted-block-elements-list;

Source

_settings-global.scss:115 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt's definition of heading elements.
$bolt-heading-elements-list: 'h1',
  'h2',
  'h3',
  'h4',
  'h5',
  'h6';

Source

_settings-global.scss:123 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Bolt's definition of all unquoted heading elements.
$bolt-all-heading-elements: $bolt-unquoted-heading-elements-list;

Source

_settings-global.scss:137 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Quoted custom block elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
$_bolt-custom-block-elements: ();

Source

_settings-global.scss:148 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Quoted custom inline elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
$_bolt-custom-inline-elements: ();

Source

_settings-global.scss:151 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Quoted custom inline-block elements used to globally collect group generic styles. Elements registered via @mixin bolt-register-element.
$_bolt-custom-inline-block-elements: ();

Source

_settings-global.scss:154 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
All (unquoted) custom block elements used to globally collect group generic styles
$bolt-all-custom-block-elements: ();

Source

_settings-global.scss:158 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
All (unquoted) custom inline-block elements used to globally collect group generic styles
$bolt-all-custom-inline-block-elements: ();

Source

_settings-global.scss:160 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
All (unquoted) custom inline elements used to globally collect group generic styles
$bolt-all-custom-inline-elements: ();

Source

_settings-global.scss:162 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Register Element helper mixin: registers any custom elements getting included (used outside selector or declaration)
@mixin bolt-register-element($element, $element-type) { 
  @if ($element-type != 'inline' and $element-type != 'inline-block' and $element-type != 'block'){
    @error 'Please register your #{$element} element as either an inline, inline-block or block.';
  }

  // @TODO: find a way to dynamically assign the right list to this
  @if ($element-type == 'inline') {
    $_bolt-custom-inline-elements: append($_bolt-custom-inline-elements, $element) !global;

  } @else if  ( $element-type == 'block') {
    $_bolt-custom-block-elements: append($_bolt-custom-block-elements, $element) !global;
  } @else if  ( $element-type == 'inline-block') {
    $_bolt-custom-inline-block-elements: append($_bolt-custom-inline-block-elements, $element) !global;
  }
}
Name Type Description Default
$element string The custom element to register (None)
$element-type string Three different types available: inline, inline-block (which may be rendered as inline-flex), and block (None)
@include bolt-register-element('bolt-ordered-list', 'block');

Throws

Please register your #{$element} element as either an inline, inline-block or block.

Source

_settings-global.scss:170 01-settings/settings-global/_settings-global.scss
View on GitHub

Author

Mike Mai
Z-Index Settings
$bolt-z-indexes: (
  sets: (
    fab: 300,
    modal: 200,
    modalBG: 180,
    navFixed: 160,
    tooltip: 140,
    popover: 120,
    nav: 100,
    contentTop: 80,
    content: 60,
    contentBottom: 40,
    backgroundTop: 20,
    background: 0,
    backgroundBottom: -20,
  ),
);

Source

_settings-z-index.scss:14 01-settings/_settings-z-index.scss
View on GitHub
Bolt gutter spacing value
$bolt-spacing-gutter: 2rem;

Source

_settings-spacing.scss:12 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt default leading spacing value
$bolt-spacing-leading: 1.65;

Source

_settings-spacing.scss:14 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt squished spacing value
$bolt-spacing-squished: 0.5;

Source

_settings-spacing.scss:16 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt stretched spacing value
$bolt-spacing-stretched: 1.5;

Source

_settings-spacing.scss:18 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt's definition of spacing scale. Used within 'export-data()' to JSON.
$bolt-spacing-values: (
  '': 1,
  'xxsmall': 0.125,
  'xsmall': 0.25,
  'small': 0.5,
  'medium': 1,
  'large': 2,
  'xlarge': 4,
  'xxlarge': 8,
);

Source

_settings-spacing.scss:22 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt's definition of available spacing properties.
$bolt-spacing-properties: ('padding', 'margin');

Source

_settings-spacing.scss:37 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt's definition of spacing directions.
$bolt-spacing-directions: ('', 'top', 'right', 'bottom', 'left');

Source

_settings-spacing.scss:41 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt's definition of spacing types.
$bolt-spacing-types: ('', 'squished', 'stretched');

Source

_settings-spacing.scss:45 01-settings/settings-spacing/_settings-spacing.scss
View on GitHub

Author

Mike Mai
Bolt's opacity scale. The keys in this array are the opacity value names and not necessarily numeric. For example, a valid key could be "semi-transparent". However, the values in this array must be valid numeric values for the CSS 'opacity' property.
$bolt-opacities: (
  0: 0,
  20: .2,
  40: .4,
  60: .6,
  80: .8,
  100: 1
);

Source

_settings-opacity.scss:14 01-settings/settings-opacity/_settings-opacity.scss
View on GitHub

Author

Remy Denton
Helper function to return $bolt-shadows map
@function bolt-get-shadows-map($base-color: rgb(6, 10, 36)) { 
  $bolt-shadows: (
    'sets': (
      //'b1': (
      //  'base': 'inset 0 1px 3px rgba(0,0,0,0.12), inset 0 1px 2px rgba(0,0,0,0.24)',
      //  'lifted': ''
      //),
      'level-10': (
        'base': '0 1px 2px 1px #{transparentize($base-color, .92)}',
        'raised': ''
      ),
      'level-20': (
        'base': '0 1px 4px 1px #{transparentize($base-color, .90)}, 0 5px 10px 0 #{transparentize($base-color, .92)}',
        'raised': '0 1px 8px 1px #{transparentize($base-color, .82)}, 0 5px 10px 1px #{transparentize($base-color, .85)}, 0 15px 30px 0 #{transparentize($base-color, .84)}'
      ),
      'level-30': (
        'base': '0 8px 15px 1px #{transparentize($base-color, .90)}, 0 18px 24px 1px #{transparentize($base-color, .88)}',
        'raised': '0 8px 15px 1px #{transparentize($base-color, .90)}, 0 24px 36px 1px #{transparentize($base-color, .82)}, 0 35px 50px 0 #{transparentize($base-color, .75)}'
      ),
      'level-40': (
        'base': '0 10px 20px 1px #{transparentize($base-color, .90)}, 0 24px 36px 1px #{transparentize($base-color, .82)}',
        'raised': '0 10px 20px 1px #{transparentize($base-color, .90)}, 0 36px 49px 1px #{transparentize($base-color, .80)}, 0 45px 65px 0 #{transparentize($base-color, .70)}'
      ),
      'level-50': (
        'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 40px 48px 1px #{transparentize($base-color, .75)}',
        'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 50px 70px 1px #{transparentize($base-color, .80)}, 0 55px 80px 0 #{transparentize($base-color, .70)}'
      ),
      'level-60': (
        'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 50px 60px 1px #{transparentize($base-color, .60)}',
        'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 70px 80px 1px #{transparentize($base-color, .80)}, 0 80px 120px 0 #{transparentize($base-color, .65)}'
      ),
      'level-70': (
        'base': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 80px 90px 1px #{transparentize($base-color, .60)}',
        'raised': '0 10px 30px 1px #{transparentize($base-color, .90)}, 0 110px 130px 1px #{transparentize($base-color, .75)}, 0 130px 150px 0 #{transparentize($base-color, .65)}'
      )
    )
  );
  @return $bolt-shadows;
}
Name Type Description Default
$base-color color The base shadow color (with the 'transparentize' filter applied) rgb(6, 10, 36)
$shadows: map-get(bolt-get-shadows-map(), 'sets');

Returns

mapReturns sass map of all shadow levels 'base' and 'raised' variations

Source

_settings-shadow.scss:17 01-settings/settings-shadow/_settings-shadow.scss
View on GitHub
Variable containing default $bolt-shadows map - utility class and sets. Used within 'export-data()' to JSON.
$bolt-shadows: bolt-get-shadows-map();

Source

_settings-shadow.scss:58 01-settings/settings-shadow/_settings-shadow.scss
View on GitHub
Bolt's definition of a Japanese specific font-stack.
$bolt-font-family--japanese: -apple-system, BlinkMacSystemFont, 'ヒラギノ角ゴ ProN', 'Hiragino Kaku Gothic ProN', '游ゴシック', '游ゴシック体', YuGothic, 'Yu Gothic', 'メイリオ', Meiryo, 'MS ゴシック', 'MS Gothic', HiraKakuProN-W3, 'TakaoExゴシック', TakaoExGothic, 'MotoyaLCedar', 'Droid Sans Japanese', sans-serif;

Source

_settings.lang-ja.scss:13 01-settings/00-settings-lang/_settings.lang-ja.scss
View on GitHub
Default sans-serif fallback font stack containing [1] maps to the system UI font and [2] known system UI fonts. Used within the $bolt-font-families map.
$bolt-font-family--sans-fallback: -apple-system, BlinkMacSystemFont, /* [1] */
  'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', /* [2] */
  'Helvetica Neue', sans-serif;

Source

_settings-font-family.scss:18 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Default serif font stack. Used within the $bolt-font-families map.
$bolt-font-family--serif: 'Georgia', serif;

Source

_settings-font-family.scss:25 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Default monospace fallback font stack. Used within the $bolt-font-families map.
$bolt-font-family--mono-fallback: monospace, monospace;

Source

_settings-font-family.scss:29 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Default sans-serif font stack. Used within the $bolt-font-families map.
$bolt-font-family--sans: 'Open Sans', 'Helvetica Neue', sans-serif;

Source

_settings-font-family.scss:38 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Default sans-serif subset font stack. Used within the $bolt-font-families map.
$bolt-font-family--sans-subset: 'OpenSansSubset', 'Helvetica Neue', sans-serif;

Source

_settings-font-family.scss:43 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Default monospace font stack. Used within the $bolt-font-families map.
$bolt-font-family--mono: monospace, monospace;

Source

_settings-font-family.scss:47 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Bolt's definition of body, heading, and code text.
$bolt-font-families: (
  font-families: (
    body: (
      fallback-font: $bolt-font-family--sans-fallback,
      custom-font:   $bolt-font-family--sans,
      loaded-class:  $bolt-fonts--loaded-class
    ),
    bodySubset: (
      fallback-font: $bolt-font-family--sans-fallback,
      custom-font:   $bolt-font-family--sans-subset,
      loaded-class:  $bolt-fonts--subset-loaded-class
    ),
    heading: (
      fallback-font: $bolt-font-family--sans-fallback,
      custom-font:   $bolt-font-family--sans,
      loaded-class:  $bolt-fonts--loaded-class
    ),
    code: (
      fallback-font: $bolt-font-family--mono-fallback,
      custom-font:   $bolt-font-family--mono,
      loaded-class:  $bolt-fonts--loaded-class
    )
  )
);

Source

_settings-font-family.scss:57 01-settings/settings-font-family/_settings-font-family.scss
View on GitHub

Author

Mike Mai
Small breakpoint font-size
$bolt-font-size--small-bp: bolt-rem(bolt-breakpoint(xxsmall));

Source

_settings-font-size.scss:10 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Medium breakpoint font-size
$bolt-font-size--medium-bp: bolt-rem(bolt-breakpoint(medium));

Source

_settings-font-size.scss:12 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default XXX Large Max font-size. Used within $bolt-font-sizes map.
$bolt-font-size--xxxlarge--max: 3.083rem;

Source

_settings-font-size.scss:20 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default XXX Large Min font-size. Used within $bolt-font-sizes map.
$bolt-font-size--xxxlarge--min: 2.275rem;

Source

_settings-font-size.scss:23 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default XX Large font-size. Used within $bolt-font-sizes map.
$bolt-font-size--xxlarge: 1.781rem;

Source

_settings-font-size.scss:26 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default X Large font-size. Used within $bolt-font-sizes map.
$bolt-font-size--xlarge: 1.417rem;

Source

_settings-font-size.scss:29 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default Large font-size. Used within $bolt-font-sizes map.
$bolt-font-size--large: 1.111rem;

Source

_settings-font-size.scss:32 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Medium font-size. Used within $bolt-font-sizes map.
$bolt-font-size--medium: 1rem;

Source

_settings-font-size.scss:35 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Small font-size. Used within $bolt-font-sizes map.
$bolt-font-size--small: 0.9rem;

Source

_settings-font-size.scss:38 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
X Small font-size. Used within $bolt-font-sizes map.
$bolt-font-size--xsmall: 0.8rem;

Source

_settings-font-size.scss:41 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default XXX Large line-height. Used within $bolt-font-sizes map.
$bolt-line-height--xxxlarge: 1.14;

Source

_settings-font-size.scss:45 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default XX Large line-height. Used within $bolt-font-sizes map.
$bolt-line-height--xxlarge: 1.31;

Source

_settings-font-size.scss:48 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default X Large line-height. Used within $bolt-font-sizes map.
$bolt-line-height--xlarge: 1.35;

Source

_settings-font-size.scss:51 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default Large line-height. Used within $bolt-font-sizes map.
$bolt-line-height--large: 1.45;

Source

_settings-font-size.scss:54 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default Medium line-height. Used within $bolt-font-sizes map.
$bolt-line-height--medium: 1.65;

Source

_settings-font-size.scss:57 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default Small line-height. Used within $bolt-font-sizes map.
$bolt-line-height--small: 1.51;

Source

_settings-font-size.scss:60 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default X Small line-height. Used within $bolt-font-sizes map.
$bolt-line-height--xsmall: 1.45;

Source

_settings-font-size.scss:63 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default Tight line-height. Used within $bolt-font-sizes map.
$bolt-line-height--tight: 1.111;

Source

_settings-font-size.scss:66 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Bolt's definition of all options of possible text sizes.
$bolt-font-sizes: (
  font-sizes: (
    xxxlarge: (
      font-size: (
        $bolt-font-size--small-bp: $bolt-font-size--xxxlarge--min,
        $bolt-font-size--medium-bp: $bolt-font-size--xxxlarge--max
      ),
      line-height: (
        regular: $bolt-line-height--xxxlarge,
        tight: $bolt-line-height--tight
      ),
    ),
    xxlarge: (
      font-size: $bolt-font-size--xxlarge,
      line-height: (
        regular: $bolt-line-height--xxlarge,
        tight: $bolt-line-height--tight
      )
    ),
    xlarge: (
      font-size: $bolt-font-size--xlarge,
      line-height: (
        regular: $bolt-line-height--xlarge,
        tight: $bolt-line-height--tight
      )
    ),
    large: (
      font-size: $bolt-font-size--large,
      line-height: (
        regular: $bolt-line-height--large,
        tight: $bolt-line-height--tight
      )
    ),
    medium: (
      font-size: $bolt-font-size--medium,
      line-height: (
        regular: $bolt-line-height--medium,
        tight: $bolt-line-height--tight
      )
    ),
    small: (
      font-size: $bolt-font-size--small,
      line-height: (
        regular: $bolt-line-height--small,
        tight: $bolt-line-height--tight
      )
    ),
    xsmall: (
      font-size: $bolt-font-size--xsmall,
      line-height: (
        regular: $bolt-line-height--xsmall,
        tight: $bolt-line-height--tight
      )
    )
  )
);

Source

_settings-font-size.scss:73 01-settings/settings-font-size/_settings-font-size.scss
View on GitHub

Author

Mike Mai
Default regular font weight
$bolt-font-weight--regular: 400;

Source

_settings-font-weight.scss:12 01-settings/settings-font-weight/_settings-font-weight.scss
View on GitHub

Author

Mike Mai
Default semibold font weight
$bolt-font-weight--semibold: 600;

Source

_settings-font-weight.scss:15 01-settings/settings-font-weight/_settings-font-weight.scss
View on GitHub

Author

Mike Mai
Default bold font weight
$bolt-font-weight--bold: 800;

Source

_settings-font-weight.scss:18 01-settings/settings-font-weight/_settings-font-weight.scss
View on GitHub

Author

Mike Mai
Bolt's definition of all possible options of text weights.
$bolt-font-weights: (
  font-weights: (
    bold:     $bolt-font-weight--bold,
    semibold: $bolt-font-weight--semibold,
    regular:  $bolt-font-weight--regular,
    normal:   $bolt-font-weight--regular
  )
);

Source

_settings-font-weight.scss:43 01-settings/settings-font-weight/_settings-font-weight.scss
View on GitHub

Author

Mike Mai
This returns the breakpoint value (with px) from $bolt-breakpoints map
@function bolt-breakpoint($name) { 
  @return map-get($bolt-breakpoints, $name);
}
Name Type Description Default
$name string The name of the breakpoint (from within $bolt-breakpoints) (None)
.element {
  @media screen and (max-width: #{bolt-breakpoint(xsmall)}) {
    font-size: 24px;
  }
}

Returns

stringThe breakpoint value (with px)

Source

_tools-breakpoint.scss:20 02-tools/tools-breakpoint/_tools-breakpoint.scss
View on GitHub

Author

Salem Ghoweri
Mike Mai
This provides a wrapper mixin for performing bolt media queries with mq() which allows for the use of: $from (inclusive min-width boundary), $until (exclusive max-width boundary), $and (additional custom directives), $media-type (media type: screen, print, etc)
@mixin bolt-mq($args...) { 
  @include mq($args...) {
    @content;
  }
}
Name Type Description Default
$args... Bolt Media Query args ([breakpoint-name], $from, $until, $and, $media-type) (None)
.element {
  @include bolt-mq(($until: small){
    flex-direction: column;
  }
}

Source

_tools-breakpoint.scss:34 02-tools/tools-breakpoint/_tools-breakpoint.scss
View on GitHub

Author

Salem Ghoweri
Mike Mai
Generate linear interpolated size values through multiple break points
@mixin bolt-poly-fluid-sizing($property, $map) { 
  // Get the number of provided breakpoints
  $length: length(map-keys($map));

  // Error if the number of breakpoints is < 2
  @if ($length < 2) {
    @error 'bolt-poly-fluid-sizing() $map requires at least values';
  }

  // Sort the map by viewport width (key)
  $map: bolt-map-sort($map);
  $keys: map-keys($map);


  // $map: (576px: 22px, 320px: 18px, 992px: 34px, 768px: 24px);
  // @include bolt-poly-fluid-sizing('font-size', $map);

  // Minimum size
  #{$property}: map-get($map, nth($keys, 1));

  // Interpolated size through breakpoints
  @for $i from 1 through ($length - 1) {
    @media (min-width: nth($keys, $i)) {
      $value1: map-get($map, nth($keys, $i));
      $value2: map-get($map, nth($keys, ($i + 1)));
      // If values are not equal, perform linear interpolation
      @if ($value1 != $value2) {
        #{$property}: bolt-linear-interpolation((nth($keys, $i): $value1, nth($keys, ($i + 1)): $value2));
      } @else {
        #{$property}: $value1;
      }
    }
  }

  // Maxmimum size
  @media (min-width: nth($keys, $length)) {
    #{$property}: map-get($map, nth($keys, $length));
  }
}
Name Type Description Default
$property string A string CSS property name (None)
$map map A Sass map of viewport unit and size value pairs (None)
@include bolt-poly-fluid-sizing('font-size', (576px: 22px, 768px: 24px, 992px: 34px));

Throws

bolt-poly-fluid-sizing() $map requires at least values

Source

_tools-poly-fluid-sizing.scss:18 02-tools/tools-poly-fluid-sizing/_tools-poly-fluid-sizing.scss
View on GitHub

Author

Mike Mai
Generate different background and border color button interaction states based on the primary color passed in
@mixin bolt-button-color($color) { 
  color: bolt-text-contrast($color);
  background-color: $color;
  border-color: mix(black, $color, 25%);

  // &:hover {
  //   color: bolt-text-contrast($color);
  //   background-color: mix(black, $color, 15%);
  //   border-color: mix(black, $color, 40%);
  // }
  //
  // &:focus,
  // &:active {
  //   color: bolt-text-contrast($color);
  //   background-color: mix(black, $color, 30%);
  //   border-color: mix(black, $color, 55%);
  // }
}
Name Type Description Default
$color color Used to generate button text, background, and border color (None)
.element {
  @include bolt-button-color(bolt-color(success, dark));
}

Source

_tools-button-color.scss:16 02-tools/tools-button-color/_tools-button-color.scss
View on GitHub

Author

Salem Ghoweri
Helper functions for applying global color swatches stored in Sass Maps
@function bolt-color($color, $tone: $bolt-color-default) { 
  @return map-get-deep($bolt-colors, quote($color), $tone);
}
Name Type Description Default
$color string Bolt color base (e.g. indigo) (None)
$tone string Bolt color tone (e.g. light) $bolt-color-default

Returns

HSL|RGBThe mapped bolt color value

Source

_tools-color-palette.scss:13 02-tools/tools-color-palette/_tools-color-palette.scss
View on GitHub
Mixin to return color value
@mixin bolt-color($color, $tone: $bolt-color-default, $important: null) { 
  @if $important == important {
    $important: !important;
  }

  /* stylelint-disable-next-line */
  color: map-get-deep($bolt-colors, $color, $tone) $important;
}
Name Type Description Default
$color string Bolt color base (e.g. indigo) (None)
$tone string Bolt color tone (e.g. light) $bolt-color-default
$important string If 'important', then !important will be added onto the declaration string value null
.element {
   @include bolt-color(indigo, light, important);
}

Source

_tools-color-palette.scss:25 02-tools/tools-color-palette/_tools-color-palette.scss
View on GitHub
Places an element full browser width
@mixin bolt-full-bleed() { 
  position: relative;
  right: 50%;
  left: 50%;
  width: 100%; //fallback if vw not supported.
  width: 100vw;
  margin-left: -50vw;
  margin-right: -50vw;
  margin-top: -0.5px; //-0.5px is currently needed to patch a rendering bug in Firefox (when combined with layers being hardware accelerated)
  margin-bottom: -0.5px; //-0.5px is currently needed to patch a rendering bug in Firefox (when combined with layers being hardware accelerated)
}
.element {
  @include bolt-full-bleed();
}

Source

_tools-full-bleed.scss:8 02-tools/tools-full-bleed/_tools-full-bleed.scss
View on GitHub

Author

Evan Lovely
Provides a bolt method for controlling vertical scroll (overflow)
@mixin bolt-vertical-scroll() { 
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.element {
   @include bolt-vertical-scroll();
}

Source

_tools-scrolling.scss:15 02-tools/tools-scrolling/_tools-scrolling.scss
View on GitHub

Author

Salem Ghoweri
Provides a bolt method for controlling horizontal scroll (overflow)
@mixin bolt-horizontal-scroll() { 
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}
.element {
   @include bolt-horizontal-scroll();
}

Source

_tools-scrolling.scss:26 02-tools/tools-scrolling/_tools-scrolling.scss
View on GitHub

Author

Salem Ghoweri
Private bolt function to generate default spacing scale, based off of the base font size
@function _bolt-create-spacing-map($sizes, $char: '') { 
  $map: ();
  @each $name, $value in $sizes {
    $keyName: $name;
    @if ($char != '' and $keyName != null) {
      $keyName: $char + $keyName;
    }
    $keyValue: $value * $bolt-spacing-gutter;
    $map: map-merge($map, ($keyName: $keyValue));
  }
  @return $map;
}
Name Type Description Default
$sizes list Sizes to iterate over (None)
$char string String to append to $keyName setting ''
$bolt-spacing-sizes: _bolt-create-spacing-map($bolt-spacing-values);

Returns

map$map

Source

_tools-spacing.scss:15 02-tools/tools-spacing/_tools-spacing.scss
View on GitHub

Author

Salem Ghoweri
A map created from $bolt-spacing-values
$bolt-spacing-sizes: _bolt-create-spacing-map($bolt-spacing-values);

Source

_tools-spacing.scss:29 02-tools/tools-spacing/_tools-spacing.scss
View on GitHub

Author

Salem Ghoweri
Convenience function for pulling data from $bolt-spacing-sizes
@function bolt-spacing($size) { 
  @return map-get($bolt-spacing-sizes, nth($size, 1));
}
Name Type Description Default
$size string T-shirt size to pull (None)
.element {
  min-height: bolt-spacing(large);
}

Returns

numberA spacing unit

Source

_tools-spacing.scss:41 02-tools/tools-spacing/_tools-spacing.scss
View on GitHub

Author

Salem Ghoweri
Convert shirt sizes in baseline-optimized sizes
@function bolt-v-spacing($size, $modifier: null) { 
  @if ($modifier == 'squished') {
    $modifier: $bolt-spacing-squished;
  } @elseif ($modifier == 'stretched') {
    $modifier: $bolt-spacing-stretched;
  } @else {
    $modifier: 1;
  }

  @return (bolt-spacing($size) / bolt-strip-unit($bolt-spacing-gutter)) * $bolt-spacing-leading * $modifier;
}
Name Type Description Default
$size string T-shirt size (None)
$modifier string Unit to multiply ending result by null
.element {
  width: bolt-v-spacing(xsmall);
}

Returns

number

Source

_tools-spacing.scss:58 02-tools/tools-spacing/_tools-spacing.scss
View on GitHub

Author

Salem Ghoweri
An alias for @function bolt-v-spacing
@function bolt-vertical-spacing($size) { 
  @return bolt-v-spacing($size);
}
Name Type Description Default
$size string T-shirt size (None)
.element {
  width: bolt-vertical-spacing(xsmall);
}

Returns

number

Source

_tools-spacing.scss:79 02-tools/tools-spacing/_tools-spacing.scss
View on GitHub

Author

Salem Ghoweri
Directional-property mixins are shorthands for writing properties like the following
@function _bolt-collapse-directional-values($vals) { 
  $output: null;

  $a: nth($vals, 1);
  $b: if(length($vals) < 2, $a, nth($vals, 2));
  $c: if(length($vals) < 3, $a, nth($vals, 3));
  $d: if(length($vals) < 2, $a, nth($vals, if(length($vals) < 4, 2, 4)));

  @if $a == 0 { $a: 0; }
  @if $b == 0 { $b: 0; }
  @if $c == 0 { $c: 0; }
  @if $d == 0 { $d: 0; }

  @if $a == $b and $a == $c and $a == $d { $output: $a; }
  @else if $a == $c and $b == $d { $output: $a $b; }
  @else if $b == $d { $output: $a $b $c; }
  @else { $output: $a $b $c $d; }

  @return $output;
}
Name Type Description Default
$vals List List of directional values (None)
.element {
  @include border-style(dotted null);
  @include margin(null 0 10px);
}
.element {
  border-bottom-style: dotted;
  border-top-style: dotted;
  margin-bottom: 10px;
  margin-left: 0;
  margin-right: 0;
}

Returns

List

Source

_tools-collapse-directionals.scss:32 02-tools/tools-spacing/libs/_tools-collapse-directionals.scss
View on GitHub

Author

Salem Ghoweri
Checks if a list does not contain any values.
@function _bolt-contains-falsy($list) { 
  @each $item in $list {
    @if not $item {
      @return true;
    }
  }

  @return false;
}
Name Type Description Default
$list list The list to check against. (None)

Returns

boolean

Source

_tools-contains-falsy.scss:15 02-tools/tools-spacing/libs/_tools-contains-falsy.scss
View on GitHub

Author

Salem Ghoweri
Output directional properties, for instance `margin`.
@mixin _bolt-directional-property($prefix, $suffix, $values) { 
  @if $important == important {
    $important: !important;
  }

  // Property Names
  $top:    $prefix + '-top'    + if($suffix, '-#{$suffix}', '');
  $bottom: $prefix + '-bottom' + if($suffix, '-#{$suffix}', '');
  $left:   $prefix + '-left'   + if($suffix, '-#{$suffix}', '');
  $right:  $prefix + '-right'  + if($suffix, '-#{$suffix}', '');
  $all:    $prefix +             if($suffix, '-#{$suffix}', '');

  $values: _bolt-collapse-directional-values($values);

  @if _bolt-contains-falsy($values) {
    @if nth($values, 1) { #{$top}: nth($values, 1) $important; }

    @if length($values) == 1 {
      @if nth($values, 1) {
        #{$right}: nth($values, 1) $important;
        #{$bottom}: nth($values, 1) $important;
        #{$left}: nth($values, 1) $important;
      }
    } @else {
      @if nth($values, 2) { #{$right}: nth($values, 2) $important; }
    }

    @if length($values) == 2 {
      @if nth($values, 1) { #{$bottom}: nth($values, 1) $important; }
      @if nth($values, 2) { #{$left}: nth($values, 2) $important; }
    } @else if length($values) == 3 {
      @if nth($values, 3) { #{$bottom}: nth($values, 3) $important; }
      @if nth($values, 2) { #{$left}: nth($values, 2) $important; }
    } @else if length($values) == 4 {
      @if nth($values, 3) { #{$bottom}: nth($values, 3) $important; }
      @if nth($values, 4) { #{$left}: nth($values, 4) $important; }
    }
  } @else {
    #{$all}: $values $important;
  }
}
Name Type Description Default
$prefix String Prefix to use (None)
$suffix String Suffix to use (None)
$values List List of values (None)

Source

_tools-directional-property.scss:20 02-tools/tools-spacing/libs/_tools-directional-property.scss
View on GitHub

Author

Salem Ghoweri
Bolt Z Index mixin
@mixin bolt-z-index($key: "content", $utility: false) { 
  $indexes: map-get($bolt-z-indexes, 'sets');
  $important: '';

  @if $utility {
    $important: '!important';
  }
  @if map-has-key($indexes, $key) {
    z-index: map-get($indexes, $key) #{$important};
  } @else {
    @error 'A value, #{$key}, was passed into @include bolt-z-index() that is not defined in $bolt-z-indexes';
  }
}
Name Type Description Default
$key string "content"
$utility boolean false
.element {
   @include bolt-z-index(tooltip);
}

Throws

A value, #{$key}, was passed into @include bolt-z-index() that is not defined in $bolt-z-indexes

Source

_tools-z-index.scss:16 02-tools/tools-z-index/_tools-z-index.scss
View on GitHub
Bolt Z Index function
@function bolt-z-index($key) { 
  $indexes: map-get($bolt-z-indexes, 'sets');
  @if map-has-key($indexes, $key) {
    @return map-get($indexes, $key)
  } @else {
    @error 'A value, #{$key}, was passed into bolt-z-index() that is not defined in $bolt-z-indexes';
  }
}
Name Type Description Default
$key string (None)
.element {
   z-index: bolt-z-index('nav');
}

Throws

A value, #{$key}, was passed into bolt-z-index() that is not defined in $bolt-z-indexes

Source

_tools-z-index.scss:36 02-tools/tools-z-index/_tools-z-index.scss
View on GitHub
This outputs the correct bolt values for transform and box-shadow
@mixin bolt-shadow($key: 'G', $lifted: false, $base-color: false, $utility: false) { 
  $shadows: map-get(bolt-get-shadows-map(), 'sets');
  @if $base-color {
    $shadows: map-get(bolt-get-shadows-map($base-color), 'sets');
  }
  $important: '';

  @if $utility {
    $important: '!important';
  }
  @if not(map-has-key($shadows, $key)) {
    @error 'A value, #{$key}, was passed into @include bolt-shadow() that is not defined in $bolt-shadows';
  } @else {
    @if $lifted {
      transform: translateY(-2px) #{$important};
      box-shadow: unquote(map-get(map-get($shadows, $key), 'raised')) #{$important};
    } @else {
      transition: all 0.3s cubic-bezier(.25,.8,.25,1) #{$important};
      box-shadow: unquote(map-get(map-get($shadows, $key), 'base')) #{$important};
    }
  }
}
Name Type Description Default
$key string The desired shadow level (e.g. 'level-30') 'G'
$lifted boolean Weather or not to use the 'raised' values false
$base-color boolean|string The base shadow color (with the 'transparentize' filter applied) false
$utility boolean If true, adds '!important' to declaration false
.element {
   @include bolt-shadow('level-30', true);
}

Throws

A value, #{$key}, was passed into @include bolt-shadow() that is not defined in $bolt-shadows

Source

_tools-shadow.scss:19 02-tools/tools-shadow/_tools-shadow.scss
View on GitHub
A private utility function for carrying out string replacement
@function _bolt-str-replace($string, $search, $replace: '') { 
  $index: str-index($string, $search);

  @if $index {
    @return str-slice($string, 1, $index - 1) + $replace + _bolt-str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
  }

  @return $string;
}
Name Type Description Default
$string string The "needle" (None)
$search string The "haystack" (None)
$replace string The string value to replace ''
$example = _bolt-str-replace($name, ' ', '_')

Source

_tools-font-face.scss:26 02-tools/tools-font-face/_tools-font-face.scss
View on GitHub

Author

Mike Mai
Adds a correctly formatted @font-face declaration. Set at the top of the stylesheet.
@mixin bolt-font-face($name, $path, $weight: null, $style: null, $exts: woff2 woff) { 
  $src: null;

  $extmods: (
    eot: '?',
    svg: '#' + _bolt-str-replace($name, ' ', '_')
  );

  $formats: (
    otf: 'opentype',
    ttf: 'truetype'
  );

  @each $ext in $exts {
    $extmod: if(map-has-key($extmods, $ext), $ext + map-get($extmods, $ext), $ext);
    $format: if(map-has-key($formats, $ext), map-get($formats, $ext), $ext);
    $src: append($src, url('#{$path}.#{$extmod}') format(quote($format)), comma);
  }

  @font-face {
    font-family: quote($name);
    font-style: $style;
    font-weight: $weight;
    src: $src;
  }
}
Name Type Description Default
$name string The 'font-family' name string (None)
$path string Path to the font files (None)
$weight string Default font weight null
$style string Default style null
$exts string Default extensions woff2 woff
@include bolt-font-face('Awesome_font_name, '/path/to/font/');

Source

_tools-font-face.scss:48 02-tools/tools-font-face/_tools-font-face.scss
View on GitHub

Author

Mike Mai
This returns the font-family for a specific element. Brand fonts are the default, with system fonts as the fallback.
@mixin bolt-font-family($type, $is_root: false) { 
  $fallback-font-family: map-get-deep($bolt-font-families, 'font-families', $type, 'fallback-font');
  $custom-font-family: map-get-deep($bolt-font-families, 'font-families', $type, 'custom-font');
  $fonts-loaded-class: map-get-deep($bolt-font-families, 'font-families', $type, 'loaded-class');

  $fontFamilyNames: map-keys(map-get($bolt-font-families, 'font-families')); // get the names of all available font families (custom and fallback)

  font-family: $fallback-font-family;
  font-family: var(--bolt-font-family-#{$type});

  @if $is_root == false {
    .#{$fonts-loaded-class} & {
      font-family: $custom-font-family;
      font-family: var(--bolt-font-family-#{$type});
    }
  }
  @else {
    @each $fontFamilyName in $fontFamilyNames {
      --bolt-font-family-#{$fontFamilyName}: #{map-get-deep($bolt-font-families, 'font-families', $fontFamilyName, 'fallback-font') ;};
    }

    &.#{$fonts-loaded-class} {
      @each $fontFamilyName in $fontFamilyNames {
        --bolt-font-family-#{$fontFamilyName}: #{map-get-deep($bolt-font-families, 'font-families', $fontFamilyName, 'custom-font') ;};
      }

      font-family: $custom-font-family;
    }
  }
}
Name Type Description Default
$type string Defines the font-family being used for each type of text: heading, body, or code. (None)
$is_root boolean false
.element {
   @include bolt-font-family(body);
}

Source

_tools-font-family.scss:17 02-tools/tools-font-family/_tools-font-family.scss
View on GitHub

Author

Mike Mai
This applies default font kerning styles for supporting browsers.
@mixin bolt-font-kerning() { 
  font-feature-settings: 'kern';
  font-kerning: normal; // Safari 7+, Firefox 24+, Chrome 33(?)
}
*,
*:before,
*:after {
 @include bolt-font-kerning;
}

Source

_tools-font-kerning.scss:18 02-tools/tools-font-kerning/_tools-font-kerning.scss
View on GitHub

Author

Mike Mai
This returns the font-size and relevant line-height for a specific element.
@mixin bolt-font-size($size, $leading: regular) { 
  $font-size: map-get-deep($bolt-font-sizes, 'font-sizes', $size, 'font-size');

  @if (type-of($font-size) == 'map') {
    $length: length(map-keys($font-size));

    @if ($length < 2) {
      font-size: nth($font-size, 2);
    } @else {
      @include bolt-poly-fluid-sizing('font-size', $font-size);
    }
  } @else {
    font-size: $font-size;
  }

  @if ($leading != '' and  $leading != null) {
    @if (type-of($leading) == number) {
      $leading: $leading;
    } @elseif (type-of($leading) == string) {
      $leading: map-get-deep($bolt-font-sizes, 'font-sizes', $size, 'line-height', $leading);
    }

    @if (type-of($leading) == 'map') {
      $length: length(map-keys($leading));

      @if ($length < 2) {
        line-height: nth($leading, 2);
      } @else {
        @debug $leading;
        @include bolt-poly-fluid-sizing('line-height', $leading);
      }
    } @else {
      line-height: $leading;
    }
  }
}
Name Type Description Default
$size string Defines the size of the text: xsmall, small, base, medium, large, xlarge, or xxlarge. (None)
$leading string Defines the line-height of the text: regular or tight. regular
.element {
   @include bolt-font-size(large);
}

Source

_tools-font-size.scss:18 02-tools/tools-font-size/_tools-font-size.scss
View on GitHub

Author

Mike Mai
This returns the font-weight for a specific element.
@mixin bolt-font-weight($weight) { 
  $font-weight: map-get-deep($bolt-font-weights, 'font-weights', $weight);

  font-weight: $font-weight;
}
Name Type Description Default
$weight string Defines the weight of the text: bold, semi-bold, regular, or normal. (None)
.element {
   @include bolt-font-weight(bold);
}
.element {
   font-weight: 800;
}

Source

_tools-font-weight.scss:20 02-tools/tools-font-weight/_tools-font-weight.scss
View on GitHub

Author

Mike Mai
Determines the correct color (black or white) to return, given the color passed in
@function bolt-text-contrast($color) { 
  @if bolt-theme-tone($color) == "dark" {
    @return bolt-color(white);
  } @else {
    @return bolt-color(black);
  }
}
Name Type Description Default
$color color The color to check against (None)
.element:hover {
  color: bolt-text-contrast($primary-background-default);
}

Returns

colorEither 'black' or 'white'

Source

_tools-text-contrast.scss:17 02-tools/tools-text-contrast/_tools-text-contrast.scss
View on GitHub

Author

Salem Ghoweri
Provides a bolt method for transforming text to uppercase
@mixin bolt-uppercase() { 
  text-transform: uppercase;
  letter-spacing: 0.1rem;
}
.element {
   @include bolt-uppercase();
}

Source

_tools-uppercase.scss:15 02-tools/tools-uppercase/_tools-uppercase.scss
View on GitHub

Author

Salem Ghoweri
Just checking "@supports (display: contents)" isn't enough to know that a browser supports it FULLY. So, we check support for both "display: contents" and "caret-color" (which has similar browser support) -- if a browser fails either check, it gets the cross-browser fallback instead.
@mixin bolt-if-browser-supports-display-contents() { 
  @supports (display: contents) and (caret-color: red) {
    @content;
  }
}
.element {
  @include bolt-if-browser-supports-display-contents {
    .element__item {
      @media screen and (max-width: #{bolt-breakpoint(xsmall)}) {
        display: contents;
      }
    }
  }
}

Source

_tools-browser-support.scss:27 02-tools/tools-browser-support/_tools-browser-support.scss
View on GitHub

Author

Remy Denton
Provides the ability to add a proper clearfix
@mixin bolt-clearfix($important: null) { 
  @if $important == important {
    $important: !important;
  }

  &:before,
  &:after {
    content: ' ' $important;
    display: table $important;
  }

  &:after {
    clear: both $important;
  }
}
Name Type Description Default
$important boolean Set true to add "!important" null
.element {
  @include bolt-clearfix();
}

Source

_tools-clearfix.scss:16 02-tools/tools-clearfix/_tools-clearfix.scss
View on GitHub

Author

Salem Ghoweri
Calculate the definition of a line between two points
@function bolt-linear-interpolation($map) { 
  $keys: map-keys($map);
  @if (length($keys) != 2) {
    @error 'linear-interpolation() $map must be exactly 2 values';
  }

  // The slope
  $m: (map-get($map, nth($keys, 2)) - map-get($map, nth($keys, 1))) / ( nth($keys, 2) - nth($keys, 1));

  // The y-intercept
  $b: map-get($map, nth($keys, 1)) - $m * nth($keys, 1);

  // Determine if the sign should be positive or negative
  $sign: '+';
  @if ($b < 0) {
    $sign: '-';
    $b: abs($b);
  }

  @return calc(#{$m * 100}vw #{$sign} #{$b});
}
Name Type Description Default
$map map A SASS map of viewport widths and size value pairs (None)
font-size: bolt-linear-interpolation((320px: 18px, 768px: 26px));

Returns

NumberA linear equation as a calc() function

Throws

linear-interpolation() $map must be exactly 2 values

Source

_tools-linear-interpolation.scss:17 02-tools/tools-linear-interpolation/_tools-linear-interpolation.scss
View on GitHub

Author

Mike Mai
Removed an item for a SASS list based on it's index (mimics behavior of the native map-remove function)
@function bolt-list-remove($list, $index) { 
  $newList: ();
  @for $i from 1 through length($list) {
    @if $i != $index {
      $newList: append($newList, nth($list, $i), 'space');
    }
  }
  @return $newList;
}
Name Type Description Default
$list list A SASS list (None)
$index string The list index to remove (None)
$list: bolt-list-remove($list, index($list, $value));

Returns

list$newList - A SASS list

Source

_tools-list-remove.scss:17 02-tools/tools-list-remove/_tools-list-remove.scss
View on GitHub

Author

Mike Mai
Sort a SASS list
@function bolt-list-sort($list) { 
    $sortedlist: ();
    @while length($list) > 0 {
        $value: nth($list, 1);
        @each $item in $list {
          @if type-of($item) == "number" and type-of($value) == "number" {
            @if $item < $value {
                $value: $item;
            }
          } @else {
            @warn 'Problem encountered'; // `@warn` shows Backtrace, `@error` does not
            @error 'These values are not sortable: ' + $item + ' and ' + $value;
          }
        }
        $sortedlist: append($sortedlist, $value, "space");
        $list: bolt-list-remove($list, index($list, $value));
    }
    @return $sortedlist;
}
Name Type Description Default
$list list A SASS list (None)
$keys: bolt-list-sort(map-keys($map));

Returns

List$sortedlist - A sorted SASS list

Throws

These values are not sortable:

Source

_tools-list-sort.scss:17 02-tools/tools-list-sort/_tools-list-sort.scss
View on GitHub
Sort map by keys
@function bolt-map-sort($map) { 
  $keys: bolt-list-sort(map-keys($map));
  $sortedMap: ();
  @each $key in $keys {
    $sortedMap: map-merge($sortedMap, ($key: map-get($map, $key)));
  }
  @return $sortedMap;
}
Name Type Description Default
$map map A SASS map (None)
$map: bolt-map-sort($map);

Returns

Map$sortedMap - A SASS map sorted by keys

Source

_tools-map-sort.scss:18 02-tools/tools-map-sort/_tools-map-sort.scss
View on GitHub

Author

Mike Mai
Provides a bolt method for controlling the user's ability to select text.
@mixin bolt-no-select() { 
  user-select: none;
}
.element {
   @include bolt-no-select;
}

Source

_tools-no-select.scss:15 02-tools/tools-no-select/_tools-no-select.scss
View on GitHub

Author

Salem Ghoweri
Bolt Opacity mixin
@mixin bolt-opacity($value, $important: false) { 
  $important: '';

  @if $utility {
    $important: '!important';
  }

  @if map-has-key($bolt-opacities, $value) {
    opacity: map-get($bolt-opacities, $value) #{$important};
  } @else {
    @error 'A value, #{$value}, was passed into @include bolt-opacity() that is not defined in $bolt-opacities';
  }
}
Name Type Description Default
$value string (None)
$important boolean false
.element {
   @include bolt-opacity(80);
}

Throws

A value, #{$value}, was passed into @include bolt-opacity() that is not defined in $bolt-opacities

Source

_tools-opacity.scss:16 02-tools/tools-opacity/_tools-opacity.scss
View on GitHub
Bolt Opacity function
@function bolt-opacity($value) { 
  @if map-has-key($bolt-opacities, $value) {
    @return map-get($bolt-opacities, $value)
  } @else {
    @error 'A value, #{$value}, was passed into bolt-opacity() that is not defined in $bolt-opacities';
  }
}
Name Type Description Default
$value string (None)
.element {
   opacity: bolt-opacity(80);
}

Throws

A value, #{$value}, was passed into bolt-opacity() that is not defined in $bolt-opacities

Source

_tools-opacity.scss:36 02-tools/tools-opacity/_tools-opacity.scss
View on GitHub
Bolt utility function to convert pixels to rems
@function bolt-rem($pixels, $context: $bolt-base-font-size--min) { 
  @if (unitless($pixels)) {
    $pixels: $pixels * 1px;
  }
  @if (unitless($context)) {
    $context: $context * 1px;
  }
  @return $pixels / $context * 1rem;
}
Name Type Description Default
$pixels string|number The pixel value to convert (None)
$context string|number Value to divide pixel value by (before rem multiplication) $bolt-base-font-size--min
.element {
  font-size: bolt-rem(18px);
}

Returns

stringrem value (with unit)

Source

_tools-px-to-rem.scss:18 02-tools/tools-px-to-rem/_tools-px-to-rem.scss
View on GitHub

Author

Mike Mai
Remove the unit of a length.
@function bolt-strip-unit($number) { 
  @if type-of($number) == 'number' and not unitless($number) {
    @return $number / ($number * 0 + 1);
  }
  @return $number;
}
Name Type Description Default
$number Number Number to remove unit from (None)
$bolt-floating-label-text-scale: bolt-strip-unit($bolt-font-size--xsmall);

Returns

NumberUnitless number

Source

_tools-strip-unit.scss:17 02-tools/tools-strip-unit/_tools-strip-unit.scss
View on GitHub

Author

Mike Mai
Provides a bolt method for correctly hiding an element visually (for accessibility)
@mixin bolt-visuallyhidden($important: null) { 
  @if $important == important {
    $important: !important;
  }

  border: 0 $important;
  clip: rect(0 0 0 0) $important;
  clip-path: inset(50%) $important;
  position: absolute $important;
  width: 1px $important;
  height: 1px $important;
  margin: -1px $important;
  padding: 0 $important;
  overflow: hidden $important;
  white-space: nowrap $important;
}
Name Type Description Default
$important string If 'important' is set, than '!important' will be returned null
.element {
   @include bolt-visuallyhidden(important);
}

Source

_tools-visuallyhidden.scss:16 02-tools/tools-visuallyhidden/_tools-visuallyhidden.scss
View on GitHub

Author

Salem Ghoweri
Assigns a variable to the global map
@function bolt-css-vars-assign() { 
  // CHECK PARAMS
  @if ($name==null) {
    @error "Variable name is expected, instead got: null";
  }
  @if ($value == null) {
    @error "Variable value is expected, instead got: null";
  }
  // assign to the global map
  @if ($bolt-css-vars-debug-log and map-get($bolt-css-variables, $name)) {
    @debug "'#{$name}' variable is reassigned";
  }
  @return map-merge($bolt-css-variables, ($name: $value));
}

Throws

Variable name is expected, instead got: null
Variable value is expected, instead got: null

Source

_tools-css-vars.scss:18 02-tools/tools-css-vars/_tools-css-vars.scss
View on GitHub
Emulates var() CSS native function behavior
@function bolt-var($args, $args2) { 
  $var: '';
  $opacity: 1;

  @if (length($args) >= 1) {
    $var: nth($args, 1);
  }

  @if type-of($var) == list {
    $opacity: nth($var, 2);
  }

  $varName: str-slice(nth($var, 1), 8, str-length(nth($var, 1)));

  @if str-slice($varName, 0, 5) == 'theme' {
    $varNameSansTheme: str-slice($varName, 7, str-length($varName));

    @if bolt-is-theme-var($varNameSansTheme) and bolt-is-shimmable-theme-prop($varNameSansTheme) {
      @return bolt-theme($varNameSansTheme, $opacity);
    } @else {
      // @warn "The `#{$varNameSansTheme}` theme-specific CSS variable used isn't a registered theme variable in Bolt. Be carefull as these will not work as expected in IE 11...";
    }
  } @else {
    // @warn $varName + ' CSS variable was used but not registered as a Globally variable in Bolt. Be carefull as these will not work as expected in IE 11...';
  }
  @return var($args);
}
Name Type Description Default
$args String Variable name (None)
$args2 string Optional default value if variable is not assigned yet (None)
color: var(--main-color);
background: var(--main-bg, green);

Source

_tools-css-vars.scss:40 02-tools/tools-css-vars/_tools-css-vars.scss
View on GitHub
CSS mixin to provide variables
@mixin bolt-css-vars($varMap: null, $root: false) { 
  // CHECK PARAMS
  @if ($varMap == null) {
    @error "Map of variables is expected, instead got: null";
  }
  @if (type_of($varMap) != map) {
    @error "Map of variables is expected, instead got another type passed: #{type_of($varMap)}";
  }
  // PROCESS
  @if ($bolt-css-vars-debug-log or not $bolt-css-vars-use-native) { // Sass or debug
    // merge variables and values to the global map (provides no output)
    @each $name, $value in $varMap {
      $bolt-css-vars: bolt-css-vars-assign($name, $value) !global; // store in global variable
    }
  }

  @if ($bolt-css-vars-use-native) { // CSS variables
    // Native CSS: assign CSS custom properties to the global scope
    @if $root == true {
      @at-root :root {
        @each $name, $value in $varMap {
          @if (type_of($value) == string) {
            #{$name}: $value // to prevent quotes interpolation
          } @else {
            #{$name}: #{$value}
          }
        }
      }
    } @else {
      @each $name, $value in $varMap {
        @if (type_of($value) == string) {
          #{$name}: $value // to prevent quotes interpolation
        } @else {
          #{$name}: #{$value}
        }
      }
    }
  }
}
Name Type Description Default
$varMap Map Check for our params null
$root Boolean Output as root? false
 @include bolt-css-vars((
     --color: rebeccapurple,
     --height: 68px,
     --margin-top: calc(2vh + 20px)
));

Throws

Map of variables is expected, instead got: null
Map of variables is expected, instead got another type passed: #{type_of($varMap)}

Source

_tools-css-vars.scss:127 02-tools/tools-css-vars/_tools-css-vars.scss
View on GitHub
Delay the encoding of ta literal to JSON to a type-specific method
@function bolt-json-encode($value) { 
  $type: type-of($value);

  @if function-exists('_json-encode--#{$type}') {
    @return call(get-function('_json-encode--#{$type}'), $value);
  }

  @error 'Unknown type for #{$value} (#{$type}).';
}
Name Type Description Default
$value * value to be stringified (None)

Returns

StringJSON encoded string

Throws

Unknown type for #{$value} (#{$type}).

Source

_json.scss:15 02-tools/tools-sass-json-export/encode/api/_json.scss
View on GitHub
Proof quote a value
@function _proof-quote($value) { 
  // $value: to-string($value);
  @return '"#{$value}"';
}
Name Type Description Default
$value * value to be quoted (None)

Returns

Stringquoted value

Source

_quote.scss:8 02-tools/tools-sass-json-export/encode/helpers/_quote.scss
View on GitHub
JSON.stringify a value and pass it as a font-family of head element
@mixin bolt-json-encode($value, $flag) { 
  $flag: if(index('all' 'regular' 'media' 'comment', $flag), $flag, 'all');
  $json: bolt-json-encode($value);

  // Persistent comment
  @if $flag == 'comment' or $flag == 'all' {
    /*! json-encode: #{$json} */
  }
  // Regular property value pair
  @if $flag == 'regular' or $flag == 'all' {
    // All browsers except IE8-
    body {
      &::before {
        // This element must be in the render tree to get it via getComputedStyle(document.body, ':before');
        content: bolt-json-encode($value);
        display: block;
        height: 0;
        overflow: hidden;
        width: 0;
      }
    }

    // All browsers except Opera (Presto based)
    head {
      font-family: bolt-json-encode($value);
    }
  }

  // Falsy media query
  @if $flag == 'media' or $flag == 'all' {
    @media -json-encode {
      json {
        json: $json;
      }
    }
  }
}
Name Type Description Default
$value * value to be stringified (None)
$flag String (all) - output driver (None)

Source

_json.scss:8 02-tools/tools-sass-json-export/encode/mixins/_json.scss
View on GitHub
Encode a bool to JSON
@function _json-encode--bool($bool) { 
  @return $boolean;
}
Name Type Description Default
$bool Bool bool to be encoded (None)

Returns

Boolencoded bool

Source

_bool.scss:7 02-tools/tools-sass-json-export/encode/types/_bool.scss
View on GitHub
Encode a color to JSON
@function _json-encode--color($color) { 
  @return _proof-quote($color);
}
Name Type Description Default
$color Color color to be encoded (None)

Returns

Stringencoded color

Source

_color.scss:8 02-tools/tools-sass-json-export/encode/types/_color.scss
View on GitHub
Encode a list to JSON
@function _json-encode--list($list) { 
  $str: '';

  @each $item in $list {
    $str: $str + ', ' + bolt-json-encode($item);
  }

  @return '[' + str-slice($str, 3) + ']';
}
Name Type Description Default
$list List list to be encoded (None)

Returns

Stringencoded list

Source

_list.scss:8 02-tools/tools-sass-json-export/encode/types/_list.scss
View on GitHub
Encode a map to JSON
@function _json-encode--map($map) { 
  $str: '';

  @each $key, $value in $map {
    $str: $str + ', ' + _proof-quote($key) + ': ' + bolt-json-encode($value);
  }

  @return '{' + str-slice($str, 3) + '}';
}
Name Type Description Default
$map Map map to be encoded (None)

Returns

Stringencoded map

Source

_map.scss:9 02-tools/tools-sass-json-export/encode/types/_map.scss
View on GitHub
Encode `null` to JSON
@function _json-encode--null($null) { 
  @return 'null';
}
Name Type Description Default
$null Null `null` (None)

Returns

String

Source

_null.scss:7 02-tools/tools-sass-json-export/encode/types/_null.scss
View on GitHub
Encode a number to JSON
@function _json-encode--number($number) { 
  @return if(unitless($number), $number, _proof-quote($number));
}
Name Type Description Default
$number Number number to be encoded (None)

Returns

Stringencoded number

Source

_number.scss:8 02-tools/tools-sass-json-export/encode/types/_number.scss
View on GitHub
Encode a string to JSON
@function _json-encode--string($string) { 
  @return _proof-quote($string);
}
Name Type Description Default
$string String string to be encoded (None)

Returns

Stringencoded string

Source

_string.scss:8 02-tools/tools-sass-json-export/encode/types/_string.scss
View on GitHub

Action blocks

Stylistic block layout for displaying actionable icon and text. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-action-blocks

Description

Action blocks work as a group to provide the user an easy to browse list of options of relativeto take action to discover more information. They commonly exist as links to more detailed content.

Best Practices

  • Can use xlight, light, dark, and xdark themes.
  • Can have an image, icon, and/or text
  • Should link to content
  • Should be limited to 7 (soft limit) unless we're representing a large list of content that is meant to be scanned
  • Can wrap to many rows
  • Top aligned by default
  • Can be vertically centered
  • Are set with a border by default
  • Can be borderless
{% include "@bolt-components-action-blocks/action-blocks.twig" with {
  contentItems: [
    {
      text: "Item 1",
      url: "#!",
      icon: {
        name: "icon-name",
        size: "large",
        background: "circle"
      }
    },
    {
      text: "Item 2",
      url: "#!",
      icon: {
        name: "icon-name",
        size: "large",
        background: "circle"
      }
    },
    {
      text: "Item 3",
      url: "#!",
      icon: {
        name: "icon-name",
        size: "large",
        background: "circle"
      }
    }
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
maxItemsPerRow number
- [2 ~ 12]

Number of items to place in a row before beginning a new row.

3
align string
  • top, center, bottom

Alignment of action block content.

top
border boolean

Display a border around the action blocks.

true
contentItems array
  • [items]:
    • Type: object
    • Properties:
      • text
        • Type: string
      • url
        • Type: string
      • icon
        • Type: object
        • Properties:
          • name
          • size
          • background

Content items to populate the action blocks.

N/A

Background shapes

A grid of colored vector shapes for use in backgrounds. Part of the Bolt “Components” CSS framework that powers the Bolt Design System. This component will likely not be used on its own, but rather will be a dependency of another component that includes it.

Install via NPM
npm install @bolt/components-background-shapes

Description

Background shapes bring the brand further into Bolt. These shapes create a background texture for bands. The shapes are offset at an angle offset inside a band component.

Best Practices

  • Set to the right side of the band if there is copy on the left.
  • Set to the left side of the band if there is copy on the right.
  • Shapes can be used behind cards or thumbnail images (video or just image) but should not make the content hard to consume by the user.
  • Shapes should not be used behind any text elements. Doing so makes the text hard to read.
  • Don't use background shapes if it makes the content in the band hard to parse
{% include "@bolt-components-background-shapes/background-shapes.twig" with {
  shapeGroup: "B"
} only %}
Name Type Value(s) Description Default
shapeGroup string
  • A OR B

The shapeGroup to use to build the shapes layout.

A
square-square
Outline Circle
square-square
Little Circle
circle-circle
Outline Circle

shapeGroup: A

circle-square
Outline Circle
square-square
Little Circle
square-square
Little Circle

shapeGroup: B

square-square
Outline Circle
square-square
Little Circle
circle-circle
Outline Circle

Bolt Background

Background can be added to any container. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-background

Description

Background allows Bolt to set an images inside of bands.

  • Can set an image inside the band
  • Can set background shapes
  • Can set focus on the left
  • Can set focus on the right
  • Can set light, medium, or heavy opacity
  • Can set a left, right, or center gradient
{% include "@bolt-components-background/background.twig" with {
  opacity: "heavy",
  fill: "gradient",
  focalPoint: {
    vertical: "center",
    horizontal: "center"
  },
  contentItems: [
    {
      pattern: "image",
      src: "/pattern-lab/images/content/backgrounds/background-tall-4.jpg"
    }
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
opacity string
  • light, medium, heavy

Overlay opacity

medium
overlay string
  • enabled OR disabled

Should an overlay be used for this background.

enabled
shapeGroup string
  • A, B, none

Add a Bolt Background Shapes group.

N/A
shapeAlignment string
  • left OR right

Alignment of shape group.

right
fill string
  • color OR gradient

Type of fill to use for the overlay.

N/A
focalPoint object
    • horizontal

      Currently only reverses gradient on 'left'.

      • center, left, right
    • vertical

      Currently doesn't use this value. Intended future application.

      • center, top, bottom

Where the opacity background should originate.

N/A
contentItems array
  • [items]:
    • Type: object
    • Properties:

An array of objects to place in the background.

N/A

Light Opacity

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Medium Opacity

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Heavy Opacity

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Heavy Opacity with Left Focal Point

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Heavy Opacity with Right Focal Point

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Background Shapes: Shape Group A

circle-square
Outline Circle
square-square
Little Circle
square-square
Little Circle

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Background Shapes: Shape Group B

square-square
Outline Circle
square-square
Little Circle
circle-circle
Outline Circle

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Background Shapes: Shape Group A, Alignment Left

circle-square
Outline Circle
square-square
Little Circle
square-square
Little Circle

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Fill: Color

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Fill: Gradient

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Visualization & Simulation

Imagine the Future with Decision Hub

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Bolt Band

Band is a panel with vertical spacing. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-band

Description

Bands are full width sections that go edge to edge of the display and typically denote a collective section of a page. Bands can contain many page elements and components.

Bands also define what theme the contents follow. For example, a dark theme with have an indigo background with a yellow primary button.

Bands are defined content areas where content hangs together.

Best Practices

  • Bands are full width divs and leverage the page wrapper to constrain content inside of it
  • Don't have partial width bands
  • Choose from different themes: xlight, light, dark, xdark
  • Optionally include a background image (see background)
  • Optionally can include a gradient
  • Has grid set inside of it
  • Can have many components inside of it like teaser on one side and card on the other with background shapes behind the card
  • Make sure the content inside a band hangs together
  • Introduce content in a band that doesn't hang with other content
{% include "@bolt-components-band/band.twig" with {
  content: "Example Band Content",
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
fullBleed boolean

If set to true, the band will take the full width of the page.

N/A
size string
  • xsmall, small, medium, large, none

Height of the band.

medium
contentTag string
  • div, article, section, header, footer, nav, figcaption

Html tag to use for the band's content.

N/A
theme string
  • xlight, light, dark, xdark, none

Bolt theme.

dark
row_gutter string
  • none, small, medium, large

Configures the amount of vertical whitespace in-between each <bolt-grid-item> in the nested <bolt-grid> component.. Defaults to small when there's more than than 1 item in the items array, otherwise defaults to none. Shares the same row_gutter config options as the grid component.

small / none
content_row_start string

Configures which row the Band Component's legacy content Twig block should be 'automatically' displayed on. Under the hood, this identical to the Grid Item's row_start config.

2
items array
    • content

      Content to render inside each <bolt-grid-item>

    • position

      Layout-specific config options for each internal <bolt-grid-item>

      • @bolt-components-grid/grid-item.schema.yml > Object details
        • attributes

          A Drupal-style attributes object with extra attributes to append to this component.


          Type: object
        • align

          Horizontal alignment of the grid item itself


          Type: string
          • start, center, end
        • valign

          Vertical alignment of the grid item itself


          Type: string
          • start, center, end
        • column_start

          The general column the grid item should start on. For example, a with the attributes columns="3" start-column="2" would start on the 2nd column and extend for 3 columns so it would span the 2nd, 3rd and 4th column.


          Type: string
        • column_end

          The general column the grid item should stop on. For example, a with the attributes start-column="2" end-column="3" would start on the 2nd column and extend until the 3rd column.


          Type: string
        • column_span

          The number of columns the should span across


          Type: string
        • row_start

          Specifies a grid item’s start position within the grid row


          Type: string
        • row_end

          Specifies a grid item’s ending position within the grid row


          Type: string
        • row_span

          Specifies the number of rows a should span across


          Type: string

Array of content items to display inside the band component. Internally this uses the new <bolt-grid> component to handle layout.

N/A

band

Example Band Content

Example Headline

Example Subheadline

Size: xsmall

This band is size xsmall

Size: small

This band is size small

Size: medium

This band is size medium

Size: large

This band is size large

Size: none

This band is size none

Band: Flag with One Button

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Band: Flag with Two Buttons

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Band: Flag with Two Long Buttons

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Theme: xlight

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Theme: light

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Theme: dark

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Theme: xdark

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Theme: none

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Band: Collection

2017 Forrester Wave Report

Pega cited as a Leader in The Forrester Wave™: Digital Process Automation Software, Q3 2017.

Pega 7 for Operations

Simplify and automate to reduce costs and improve agility.

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Band: Card Collection

2017 Forrester Wave Report

Pega cited as a Leader in The Forrester Wave™: Digital Process Automation Software, Q3 2017.

Headline #2

Simplify and automate to reduce costs and improve agility.

Headline #3

Simplify and automate to reduce costs and improve agility.

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

Who is Pega?

Pega is #1 in software for customer engagement and operational excellence.

What's Trending

Pega Events

Customer Engagement Summit Detroit

Hear insights. Make connections. Drive innovation.

^ via Twig embed, separate content field, uses band_content Twig block.

Pega Events

Customer Engagement Summit Detroit

Hear insights. Make connections. Drive innovation.

^ via Twig Include, items array separate from content field

Pega Events

Customer Engagement Summit Detroit

Hear insights. Make connections. Drive innovation.

^ via Twig Include, combined content into single items array, doesn't use content field

Block List

Block list for stacked full-width content. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-block-list
{% include "@bolt-components-block-list/block-list.twig" with {
  items: [
    include("@bolt-components-link/link.twig", {
      text: "Link 1",
      url: "#!",
      icon: {
        name: "chevron-right",
        position: "before"
      }
    }),
    include("@bolt-components-link/link.twig", {
      text: "Link 2",
      url: "#!",
      icon: {
        name: "chevron-right",
        position: "before"
      }
    }),
    include("@bolt-components-link/link.twig", {
      text: "Link 3",
      url: "#!",
      icon: {
        name: "chevron-right",
        position: "before"
      }
    }),
    "Simple text example"
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
items array

The content items

All of the items in the block list - can have simple text or items

N/A

Theme: xlight


Theme: light


Theme: medium


Theme: dark


Theme: xdark


Blockquote

Stylistic pull quote styles for all types of layout. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-blockquote

Description

Block quotes provide testimonials throughout the pega experience.

Content that can be contained in a blockquote

  • Logo or image (optional)
  • Quote
  • Attributor image (optional)
  • Attributor name (optional)
  • Attributor title (optional)
  • Attributor company (optional)

Additional info

  • Can be full width or confined with the grid
  • Can be left, center, or right aligned
  • can have top+bottom horizontal lines, a left or right vertical line, or no lines
  • Text is open sans
  • Quote marks are NOT inch marks
  • Quote marks are system font Georgia
  • Text color changes based on the theme colors
{% include "@bolt-components-blockquote/blockquote.twig" with {
  content: "

The greater danger for most of us lies not in ... achieving our mark.

" } only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
content* string

Text to appear in blockquote.

N/A
size string
  • large, xlarge, xxlarge

Text size.

xlarge
alignItems string
  • left, center, right

Aligns items left, center, or right.

left
border string
  • vertical, horizontal, none

Add a border.

vertical
indent boolean

Indent text.

false
fullBleed boolean

Width of the brower window.

false
logo object
  • @bolt-components-logo/logo.schema.yml > Object details
    • invert

      Set to true to invert the logo colors.


      Type: boolean

Add a logo component.

N/A
author object
    • name

      Author's name.

    • title

      Author's title.

    • image
      • @bolt-components-image/image.schema.yml > Object details
        • src

          Source url for image.


          Type: string
        • alt

          Alt tag for image.


          Type: string
        • lazyload

          Lazyload can boost performance by loading images on demand, instead of on initial page load.


          Type: boolean
          • TRUE OR FALSE
        • srcset

          A comma seperated string of image urls and image widths, used for optimizing image loading performance.


          Type: string
        • sizes

          A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of a media condition (omitted for the last item), and a source size value.


          Type: string
        • useAspectRatio

          Use the ratio wrapper around the image to maintain a specific image ratio. This ratio is either determined from the image, or by passing in height and width arguements.


          Type: boolean
          • TRUE OR FALSE
        • width

          Override the default width of the image. If no height is provided, aspect ratio will be maintained.


          Type:
        • height

          Override the default height of the image. If no width is provided, aspect ratio will be maintained.


          Type:

Author of the quote.

N/A

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

alignItems: left

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

alignItems: center

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

alignItems: right

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Indent: True

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Indent: False

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Border: vertical

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Border: horizontal

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Border: none

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Multiple Paragraph Content

Blockquote can have one paragraph. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus.

Or it can have multiple paragraphs. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci.

theme: xlight

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

theme: light

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

theme: dark

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

theme: xdark

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Breadcrumb

Stylistic pull quote styles for all types of layout. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-breadcrumb
{% include "@bolt-components-breadcrumb/breadcrumb.twig" with {
  contentItems: [
    include("@bolt-components-link/link.twig", {
      text: "Home",
      url: "#!"
    }),
    include("@bolt-components-link/link.twig", {
      text: "Landing Page",
      url: "#!"
    }),
    include("@bolt-components-link/link.twig", {
      text: "Sub Page",
      url: "#!"
    }),
    "Current Page"
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
contentItems array

Breadcrumb pieces.

N/A

Bolt Button

Button is a branded component to convey call to action. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-button

Description

Buttons are the core of our action components. Their affordance is immediate and can be use for most actions and allow users to access the target with a single interaction. Buttons clearly provide a next step for the user.

Our Buttons depend on the theme they are contained in and change in appearance based on said theme. The themes and button colors were designed together to ensure the proper amount affordance and clarity.

Xlight and light themes

  • Primary: Light Indigo container with white text
  • Secondary: white button with indigo text
  • Text button: Light indigo text with chevron

Dark and xdark themes

  • Primary: Yellow container with default indigo text
  • Secondary: white button with indigo text
  • Text button: white text with chevron

  • Currently only have one defined size (though other options can and will be defined in the future)

  • Can be 100% width of the wrapper for mobile or card instances
  • Can optionally be 100% width. For example, the button has default width of 2 rem on either side on larger screens but full width on smaller screens

Dos

  • CTAs must be clearly and succinctly labeled with a next step
  • CTA should lead with strong action verbs
  • The primary CTA should be the most important action.
  • Be consistent in placement based on the screen size and device
  • Fall back to the text button in secondary and tertiary content areas where you can. For example, cards with a button use the text style so that a filled button doesn't become overwhelming and redundant.
  • Follow theming rules

Don'ts

  • Don't clutter the page with too many buttons
  • Don't mix and match themes and their button colors. For example, do not use the indigo button on dark and xdark themes as the indigo button does not stand out enough.
  • Don't mix and match colors outside the theme, see button groups.
{% include "@bolt-components-button/button.twig" with {
  text: "Example Button"
} only %}

Buttons are the core of our action components.

Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
text* string

Button Text

The text displayed inside a button

N/A
transform string
  • uppercase, lowercase, capitalize, none

Text transformation.

none
icon object
    • position
      • before OR after

Icon data as expected by the icon component. Accepts an additional 'position' parameter that determines placement within the button.

N/A
tag string
  • a, link, button, submit, reset

Semantic tag

What should this element semantically be?

button
size string
  • xsmall, small, medium, large, xlarge

Button Size

How large is this button?

medium
itemAlignment

DEPRECATED

Use the align parameter instead.

N/A
align string
  • start, center, end

Button Alignment

How should content be horizontally aligned? Note: the values left and right are DEPRECATED, use start and end instead.

center
style string
  • primary, secondary, text

Button Style

What's the button style / theme?

primary
width string
  • full OR full@small

Button Width

Should a button be full width, it's default size, or full width, but only on smaller screens?

N/A
rounded string
  • rounded

Rounded Corners?

What kind of rounded corners should the button have?

N/A
iconOnly boolean

Icon Only?

Is this an icon-only button (with visually hidden text)?

false

Rounded Button

Button Size Variation: xsmall

Button Size Variation: small

Button Size Variation: medium

Button Size Variation: large

Button Size Variation: xlarge

Primary Button States

Secondary Button States

Text Button States

Button theme: xdark

Button theme: dark

Button theme: light

Button theme: xlight

Button Width Variations: full

Button Width Variations: full@small

Button Tag: a

a-tag based Button

Button Tag: link

link-tag based Button

Button Tag: button

Button Tag: submit

Button Tag: reset

Align: start

Align: center

Align: end

Transform: uppercase

Transform: lowercase

Transform: capitalize

Transform: none

Button w/ Icon Position before



Button w/ Icon Position after



Button w/ Default Icon Position

Icon-only buttons display just an icon + visually hidden text if any text content is defined.

Icon Only? True Icon Only? False
Simple primary button
Simple secondary button
Simple text button
Simple primary button-link
Secondary disabled
Button with 1 slotted icon
Button with 2 slotted icons

Button Group

Button-group can contain multiple buttons. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-button-group

Description

Button groups are a horizontal set of actions with a hierarchy that defines the spacing and their relationship between each other. This set of actions help people under stand their options with potential next steps.

Button padding left is 1rem when there are multiple buttons in a horizontal row.

Dos

  • Follow the button component guidelnes
  • Separate buttons by 1rem
  • Make sure the CTAs have a relationship with each other. If they don't reevaluate the content structure.
  • Be sure to consider the horizontal group of actions in smaller, less optimal sizes.
  • Be sure to determine the hierarchy of the CTAs in the group. These patterns are good:
    • Primary + secondary + text button
    • Secondary + text button
    • Primary + text button

Don'ts

  • Don't have multiple primary buttons grouped together
  • Don't have LESS than 1rem separating buttons
  • Don't have MORE than 1rem separating buttons
  • Don't have CTAs grouped together that do not relate to one another.

NOTE: We currently do not have joined buttons (eg, no gap, single button with two sides), but this is something to consider moving forward.

{% include "@bolt-components-button-group/button-group.twig" with {
  buttons: [
    {
      text: "Learn More",
      style: "primary"
    },
    {
      text: "About Pega",
      style: "secondary"
    }
  ]
} only %}
Name Type Value(s) Description Default
tag string
  • ul OR ol

Html tag to wrap the button group.

N/A
buttons array
  • [items]:
    • Type: object

      Bolt button information.

    • Properties:

An array of button objects.

N/A
contentItems array
  • [items]:
    • Type: object

      Bolt component information.

    • Properties:

Content items.

An array of bolt objects.

N/A
content string

A string of content to place in the button group.

N/A

1 Button(s)

2 Button(s)

3 Button(s)

4 Button(s)

5 Button(s)

This is text with the tags stripped.

Card

Install via NPM
npm install @bolt/components-card

Description

The preview card presents users as a way of taking action to discover more information. They commonly exist as links to more detailed long-form content, links off-site, and occasionally inline videos.

Best Practices

  • Placement should be in a manner where it is easily scannable
  • The headline should call out what the benefit is of clicking through
  • Avoid cluttering a card with too many calls to action
  • If the headline can work as link affordance without a button, don't have a button
  • If the headline does not clearly invoke action, use a CTA at the bottom of the card to entice the user
{% include "@bolt-components-card/card.twig" with {
  tag: "article",
  contentTag: "div",
  contentItems: [
    {
      pattern: "image",
      src: "/pattern-lab/images/sample/anthem-video.jpg",
      alt: "Anthem Video"
    },
    {
      pattern: "eyebrow",
      text: "Video"
    },
    {
      pattern: "headline",
      tag: "h3",
      size: "large",
      text: "Anthem: Service Desktop"
    },
    {
      pattern: "text",
      text: "Anthem debuts its next-generation service desktop, driving frictionless customer experiences."
    },
    {
      pattern: "button",
      width: "full",
      text: "Get the report"
    }
  ]
} only %}
Name Type Value(s) Description Default
tag string
  • div, article, section, figure

Html tag immediately within the bolt-card element.

N/A
contentTag string
  • div, article, section, figcaption

Html tag immediately within the bolt-card element.

N/A
theme string
  • xlight, light, dark, xdark

Bolt theme.

N/A
url string

Providing a URL will make the entire card link to another resource. This is a future prop and does not do anything right now.

N/A

card

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Video

Video Meta Title Goes Here.

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Body text. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Cards in a band

Anthem VideoAnthem Video

Eyebrow

Headline

Body text. Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Remove Eyebrow and Button

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Remove Image, Eyebrow, and Button

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Individual themed cards in a band

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Individual themed cards in a band w/ background image

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Non-themed cards in a band w/ background image

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Anthem VideoAnthem Video

Video

Anthem: Service Desktop

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, client-rendered, with a large delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, with a large delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, with a large delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, client-rendered, with a small delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, with a small delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, with a small delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, client-rendered, without a delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, without a delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, client-rendered, without a delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, server-rendered, with a large delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, w/ a large delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, w/ a large delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, server-rendered, with a small delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, w/ a small delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, w/ a small delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Personalized card test, server-rendered, without delay

Before:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, without a delay (before)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

After:

Anthem VideoAnthem Video

Video

Personalized card, server-rendered, without a delay (after)

Anthem debuts its next-generation service desktop, driving frictionless customer experiences.

Chip

Stylistic tags for displaying meta data. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-chip
{% include "@bolt-components-chip/chip.twig" with {
  text: "This is a chip",
  url: "#!",
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
text string

Chip Text.

N/A
url string

Optional. When url is present, tag changes to a, otherwise tag would be span.

N/A
tag string
  • a OR span

Html tag to be used. If a URL is provided, this will be ignored and a will be always be used.

span

chip

Chip List

Chip-list can contain multiple chips. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-chip-list
{% include "@bolt-components-chip-list/chip-list.twig" with {
  contentItems: [
    {
      text: "Chip 1",
      url: "#!"
    },
    {
      text: "Chip 2",
      url: "#!"
    },
    {
      text: "Chip 3",
      url: "#!"
    }
  ]
} only %}
Name Type Value(s) Description Default
contentItems array
  • [items]:
    • Type: object

      Chip.

    • Properties:

An array of Chips.

N/A

Code Snippet

Code snippet shows text in a style that is best fit for a monospace font. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-code-snippet
{% include "@bolt-components-code-snippet/code-snippet.twig" with {
  display: "block",
  lang: "html",
  content: "Some code snippet"
} only %}

Monospace Font Styles for Code Text

Name Type Value(s) Description Default
display string
  • block OR inline

Display

Defines if the code text is inline or block.

block
lang string
  • css, html, js, scss, twig

Language

Language of the code text.

html
syntax string
  • light, dark, none

Syntax Highlighting

Toggle between a light and dark syntax highlighting, or turn it off. Separate from Bolt theming.

light

Code snippet can be a block of code, and display is set to block by default.

display: block;
margin: 0 0 1.65rem 0;

Well, code snippet can also be inline like this display:inline; when you set display to be inline instead.

block:

Headline

inline:

Headline

css:

.my-css { display: block; }

scss:

.my-scss { @include my-mixin; }

html:

Headline

javascript:

import { polyfillLoader } from '@bolt/core';

twig:

{% include "@bolt-components-code-snippet/code-snippet.twig" with {
  "display": "block",
  "lang": "html",
  "content": "Some code snippet"
} only %}

light:

Headline

dark:

Headline

none:

Headline

Copy to Clipboard

Copy to Clipboard allows the user to copy the current page URL to clipbaord to paste and share.

Install via NPM
npm install @bolt/components-copy-to-clipboard
{% include "@bolt-components-copy-to-clipboard/copy-to-clipboard.twig" with {
  text_to_copy: "http://bolt-design-system.com"
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
text string

DEPRECATED

This property has been renamed trigger_text

Copy Link
copiedText string

DEPRECATED

Use the custom_confirmation property instead if you need to change the confirmation text.

Copied!
iconSize string

DEPRECATED

Use custom_trigger, custom_transition, and custom_confirmation properties if you need to change icon size.

medium
url string

DEPRECATED

This property has been renamed text_to_copy

N/A
trigger_text string

Text to use for the inital copy button. Ignored if the custom_trigger property is used.

Copy Link
text_to_copy* string

The text to copy to the clipboard.

N/A
custom_trigger string OR object OR array

(optional) Custom content to show for the initial copy trigger. If you pass a link, set the URL to '#!' since it should not being followed.

N/A
custom_transition string OR object OR array

(optional) Custom content to show while copy is in progress. This content will be rotated while the copying happens, so it's recommended to pass an icon.

N/A
custom_confirmation string OR object OR array

(optional) Custom content to show after a successful copy.

N/A
Copied!
Copied!
Copied!
Copied!
Custom transition
Copied!
Copied!
Custom transition

Custom confirmation

Device Viewer

Device frames for showcase. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-device-viewer
{% include "@bolt-components-device-viewer/device-viewer.twig" with {
  device: "iphone8",
  orientation: "portrait",
  color: "white",
  image: {
    src: "/pattern-lab/images/sample/product-device-screenshot--phone.jpg"
  }
} only %}
Name Type Value(s) Description Default
deviceName string
  • ipad, iphone8, macbook

Name of the device.

N/A
color string
  • black, silver, gold

Device color.

N/A
orientation string
  • portrait OR landscape

Device orientation.

N/A
magnify boolean

Add the magnifier effect.

false
image object
    • src

      Source url for the image.

N/A

Color: black
Orientation: 'portrait'

Color: black
Orientation: 'landscape'

Color: silver
Orientation: 'portrait'

Color: silver
Orientation: 'landscape'

Magnification: true
Orientation: 'portrait'

Magnification: true
Orientation: 'landscape'

Color: black
Orientation: 'portrait'

Color: black
Orientation: 'landscape'

Color: silver
Orientation: 'portrait'

Color: silver
Orientation: 'landscape'

Color: gold
Orientation: 'portrait'

Color: gold
Orientation: 'landscape'

Magnification: true
Orientation: 'portrait'

Magnification: true
Orientation: 'landscape'

Magnification: true

Dropdown

The Dropdown component adds a slick, extensible, and accessible menu system.

Install via NPM
npm install @bolt/components-dropdown

Description

Fully interactive with and without JS enabled (including keyboard support)

// Via Twig
{% embed "@bolt-components-dropdown/dropdown.twig" with {
  title: "Toggle Menu",
  collapse: true
} %}
  {% block content %}
    {% include "@bolt-components-nav/nav.twig" with {
      links: [
        {
        text: "Link 1 Text",
        url": "#!"
      },
      {
        text: "Link 2 Text",
        url": "#!"
      },
      {
        text: "Link 3 Text",
        url": "#!"
      }
      ]
    } %}
  {% endblock %}
{% endembed %}

// Via Web Component and Twig

  {% include "@bolt-components-nav/nav.twig" with {
    links: [
      {
        text: "Link 1 Text",
        url": "#!"
      },
      {
        text: "Link 2 Text",
        url": "#!"
      },
      {
        text: "Link 3 Text",
        url": "#!"
      }
    ]
  } only %}
Name Type Value(s) Description Default
title string

The toggle title text

N/A
center boolean

True to center the toggle title

false
collapse boolean

True to hide toggle until mobile screen size

false
content any

All of the items in the dropdown -- generally works by including @bolt-components-nav/nav.twig with links array of objects containing text & url

N/A

Figure

Figure for displaying graphics or tabular content. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-figure
{% include "@bolt-components-figure/figure.twig" with {
  image: {
    src: "/pattern-lab/images/placeholders/500x500.jpg",
    lazyload: false
  },
  caption: "The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark."
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
image object
  • @bolt-components-image/image.schema.yml > Object details
    • src

      Source url for image.


      Type: string
    • alt

      Alt tag for image.


      Type: string
    • lazyload

      Lazyload can boost performance by loading images on demand, instead of on initial page load.


      Type: boolean
      • TRUE OR FALSE
    • srcset

      A comma seperated string of image urls and image widths, used for optimizing image loading performance.


      Type: string
    • sizes

      A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of a media condition (omitted for the last item), and a source size value.


      Type: string
    • useAspectRatio

      Use the ratio wrapper around the image to maintain a specific image ratio. This ratio is either determined from the image, or by passing in height and width arguements.


      Type: boolean
      • TRUE OR FALSE
    • width

      Override the default width of the image. If no height is provided, aspect ratio will be maintained.


      Type:
    • height

      Override the default height of the image. If no width is provided, aspect ratio will be maintained.


      Type:

A bolt image object.

N/A
caption string OR object OR array

A renderable figure caption.

N/A
icon object
  • @bolt-components-icon/icon.schema.yml > Object details
    • name

      Icon name.


      Type: string
      • academy, add-open, add-solid, agile, app-development, app-exchange, arrow-left, asset-data, asset-infographic, asset-interactive, asset-link, asset-media, asset-podcast, asset-presentation, asset-text, asset-video, bolt-logo-colored, brand-operations, calendar, careers, case-management, check-circle, check-solid, check, chevron-down, chevron-left, chevron-right, chevron-up, close-open, close-solid, close, cloud, co-browse, communications, copy-to-clipboard, customer-decision-hub, customer-onboarding, customer-service, data-integrations, documentation, download, email, energy, entertainment, exit-full screen, external-link, eye-off, eye, facebook-solid, facebook, field-service-gray, field-service, filter, financial, full-screen, github, global, government, healthcare, hospitality, industries, info-open, info-solid, insurance, integration, intelligent-virtual-assistant, java, knowledgebase, launchpad, life-sciences, linkedin-solid, linkedin, lock, manufacturing, map-pin-solid, map-pin, marketing-gray, marketing, menu, minus-open, minus-solid, mobility, more, omni-channel, partners, pencil, platform, podcast, print, product, product-delivery, refresh, reporting, retail, robo-auto, sales-automation, scalability, search, share, support, system-admin, training, transportation, twitter-solid, twitter, unlock, upload, user, user-interface, video, vision, warning, watch, workforce-intelligence, youtube-solid
    • background

      Background shape. This applies only to 'xlarge' icons.


      Type: string
      • circle OR square
    • size

      Icon size.


      Type: string
      • small, medium, large, xlarge
    • color

      Icon color. Currently only support default (black) and teal.


      Type: string
      • teal OR blue

A bolt icon object.

N/A
content string OR object OR array

A catch-all for renderable content (e.g. a string, render array, or included pattern object) to place in the figure.

N/A

The greater danger for most of us lies not in setting our aim too high and falling short; but in setting our aim too low, and achieving our mark.

Form

A collection of fieldsets to create a form. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-form
{% include "@bolt-components-form/form.twig" with {
  text: "This is a form",
  url: "#!",
} only %}
We promise not to sell your email address
The username you entered is already taken.

Select an alignment

Select toppings

If there were any server-side errors, you'd see them here
Pick at least two of the following

Get the Report

(all fields are required)

Get the Report

(all fields are required)

Get the Report

(all fields are required)

Get the Report

(all fields are required)

(Note: forms do not offically support dark themes yet. Use at your own risk.)

Bolt Grid

CSS-Grid powered Grid component. Still in very early develpment so use with caution!

Install via NPM
npm install @bolt/components-grid
{% include "@bolt-components-grid/grid.twig" with {
  vinset: "medium",
  items: [
    {
      row_start: "1",
      column_start: "1",
      column_span: "12 6@medium",
      content: "Grid Item 1",
      attributes: {
        class: [
          "t-bolt-dark",
          "u-bolt-padding-medium",
        ]
      }
    },
    {
      row_start: "2",
      column_start: "7 1@small 5@medium",
      column_span: "12 6@small 5@medium",
      content: "Grid Item 2",
      attributes: {
        class: [
          "t-bolt-light",
          "u-bolt-padding-medium",
        ]
      }
    },
    {
      row_start: "3 3@small 3@medium 3@large",
      column_start: "1 7@small 1@medium",
      column_span: "6 12@small 4@medium",
      content: "Grid Item 3",
      attributes: {
        class: [
          "t-bolt-xdark",
          "u-bolt-padding-medium",
        ]
      }
    },
    {
      row_start: "4 1@medium",
      row_span: "1 3@medium",
      column_start: "1 1@small 10@medium",
      column_span: "12 12@small 3@medium",
      content: "Grid Item 4",
      attributes: {
        class: [
          "t-bolt-dark",
          "u-bolt-padding-medium",
        ]
      }
    },
  ]
} only %}

Flexible component to build out CSS Grid-based layouts

Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
row_gutter string
  • none, small, medium, large

Specifies the row gutter size between the rows of the grid.

none
vinset string
  • none, xsmall, small, medium, large, xlarge

The size of the inner space (vertical inset) that sits above / below the grid itself

none
items array
    • content

      Content to render inside each <bolt-grid-item>

    • position

      Layout-specific config options for each internal <bolt-grid-item>

      • @bolt-components-grid/grid-item.schema.yml > Object details
        • attributes

          A Drupal-style attributes object with extra attributes to append to this component.


          Type: object
        • align

          Horizontal alignment of the grid item itself


          Type: string
          • start, center, end
        • valign

          Vertical alignment of the grid item itself


          Type: string
          • start, center, end
        • column_start

          The general column the grid item should start on. For example, a with the attributes columns="3" start-column="2" would start on the 2nd column and extend for 3 columns so it would span the 2nd, 3rd and 4th column.


          Type: string
        • column_end

          The general column the grid item should stop on. For example, a with the attributes start-column="2" end-column="3" would start on the 2nd column and extend until the 3rd column.


          Type: string
        • column_span

          The number of columns the should span across


          Type: string
        • row_start

          Specifies a grid item’s start position within the grid row


          Type: string
        • row_end

          Specifies a grid item’s ending position within the grid row


          Type: string
        • row_span

          Specifies the number of rows a should span across


          Type: string

Array of content items to display inside the grid itself.

N/A

grid

Grid Item 1 Grid Item 2 Grid Item 3 Grid Item 4
Row Gutter: none Grid Item 1 Grid Item 2 Grid Item 3 Row Gutter: small Grid Item 1 Grid Item 2 Grid Item 3 Row Gutter: medium Grid Item 1 Grid Item 2 Grid Item 3 Row Gutter: large Grid Item 1 Grid Item 2 Grid Item 3
Vinset: none Grid Item 1 Grid Item 2 Grid Item 3 Vinset: xsmall Grid Item 1 Grid Item 2 Grid Item 3 Vinset: small Grid Item 1 Grid Item 2 Grid Item 3 Vinset: medium Grid Item 1 Grid Item 2 Grid Item 3 Vinset: large Grid Item 1 Grid Item 2 Grid Item 3 Vinset: xlarge Grid Item 1 Grid Item 2 Grid Item 3

Headline

Headlines are specific combinations of typographic styles for display text. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-headline
{% include "@bolt-components-headline/headline.twig" with {
  text: "This is a headline",
} only %}

{% include "@bolt-components-headline/eyebrow.twig" with {
  text: "This is an eyebrow",
} only %}

{% include "@bolt-components-headline/subheadline.twig" with {
  text: "This is a subheadline",
} only %}

{% include "@bolt-components-headline/text.twig" with {
  text: "This is text",
} only %}

{% include "@bolt-components-headline/lead.twig" with {
  text: "This is a lead",
} only %}
Name Type Value(s) Description Default
text* string OR object OR array

Renderable text content of the headline.

N/A
tag string
  • h1, h2, h3, h4, h5, h6, p, span, cite, div

Html tag.

p
align string
  • left, center, right

Text alignment.

N/A
weight string
  • bold, regular, semibold

Font weights.

regular
style string
  • normal OR italic

Font styles.

normal
size string
  • xsmall, small, medium, large, xlarge, xxlarge, xxxlarge

Font size.

medium
transform string
  • uppercase, lowercase, capitalize

Text transformation.

N/A
url string

If provided, turns headline into a link to given url.

N/A
icon object OR string OR string

Bolt icon. Accepts either 1) an icon name as a string 2) an icon object as expected by @bolt-components-icon or 3) the string "none" to explicitly remove default icons

N/A
quoted boolean

Adds quoted styling to text.

N/A

This is an eyebrow

This is a headline

This is a subheadline

This is text

This is a lead

H1

This is an example of H1

H2

This is an example of H2

H3

This is an example of H3

H4

This is an example of H4

H5

This is an example of H5

H6

This is an example of H6

P

This is an example of P

SPAN

This is an example of SPAN

Align:

This is an example of align left

Align:

This is an example of align center

Align:

This is an example of align right

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

This is bold weight and normal text

This is bold weight and normal headline

This is bold weight and normal subheadline

This is bold weight and italic text

This is bold weight and italic headline

This is bold weight and italic subheadline

This is regular weight and normal text

This is regular weight and normal headline

This is regular weight and normal subheadline

This is regular weight and italic text

This is regular weight and italic headline

This is regular weight and italic subheadline

This is semibold weight and normal text

This is semibold weight and normal headline

This is semibold weight and normal subheadline

This is semibold weight and italic text

This is semibold weight and italic headline

This is semibold weight and italic subheadline

Headline w/ Icon Position before

What we do at Pega is brilliant!



Headline w/ Icon Position after

What we do at Pega is brilliant!



Headline w/ Default Icon Position

What we do at Pega is brilliant!



Headline w/ Icon Options

What we do at Pega is brilliant!






Headline w/ Left Icon Position (Deprecated)

What we do at Pega is brilliant!



Headline w/ Right Icon Position (Deprecated)

What we do at Pega is brilliant!

What we do at Pega is brilliant!

Icon

Icon. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-icon
{% include "@bolt-components-icon/icon.twig" with {
  name: "add-open",
  background: "circle",
  size: "medium",
} only %}
Name Type Value(s) Description Default
name* string
  • academy, add-open, add-solid, agile, app-development, app-exchange, arrow-left, asset-data, asset-infographic, asset-interactive, asset-link, asset-media, asset-podcast, asset-presentation, asset-text, asset-video, bolt-logo-colored, brand-operations, calendar, careers, case-management, check-circle, check-solid, check, chevron-down, chevron-left, chevron-right, chevron-up, close-open, close-solid, close, cloud, co-browse, communications, copy-to-clipboard, customer-decision-hub, customer-onboarding, customer-service, data-integrations, documentation, download, email, energy, entertainment, exit-full screen, external-link, eye-off, eye, facebook-solid, facebook, field-service-gray, field-service, filter, financial, full-screen, github, global, government, healthcare, hospitality, industries, info-open, info-solid, insurance, integration, intelligent-virtual-assistant, java, knowledgebase, launchpad, life-sciences, linkedin-solid, linkedin, lock, manufacturing, map-pin-solid, map-pin, marketing-gray, marketing, menu, minus-open, minus-solid, mobility, more, omni-channel, partners, pencil, platform, podcast, print, product, product-delivery, refresh, reporting, retail, robo-auto, sales-automation, scalability, search, share, support, system-admin, training, transportation, twitter-solid, twitter, unlock, upload, user, user-interface, video, vision, warning, watch, workforce-intelligence, youtube-solid

Icon name.

N/A
background string
  • circle OR square

Background shape. This applies only to 'xlarge' icons.

N/A
size string
  • small, medium, large, xlarge

Icon size.

N/A
color string
  • teal OR blue

Icon color. Currently only support default (black) and teal.

N/A

icon

Bolt's SVG icon system provides the ability to customize an individual icon's color (the shape itself), background color, and background opacity levels, in both the Twig and Custom Element formats the design system ships.

via Web Component:


via Twig Include:

    
    {% include "@bolt-components-icon/icon.twig" with {
    name: "customer-service",
    background: "circle",
    size: "xlarge",
    attributes: {
      style: [
        "color: #e64b18;",
        "--bolt-theme-icon-background: #e64b18;",
        "--bolt-theme-icon: #FFF;",
        "--bolt-theme-icon-background-opacity: 1;"
      ]
    }
    } only %}
  

Theme: light


  • Background: circle

  • Background: circle
    Color: teal

  • Background: circle
    Color: blue


  • Background: square

  • Background: square
    Color: teal

  • Background: square
    Color: blue

Theme: dark


  • Background: circle

  • Background: circle
    Color: teal

  • Background: circle
    Color: blue


  • Background: square

  • Background: square
    Color: teal

  • Background: square
    Color: blue


  • academy

  • add-open

  • add-solid

  • agile

  • app-development

  • app-exchange

  • arrow-left

  • asset-data

  • asset-infographic

  • asset-interactive

  • asset-link

  • asset-media

  • asset-podcast

  • asset-presentation

  • asset-text

  • asset-video

  • bolt-logo-colored

  • brand-operations

  • calendar

  • careers

  • case-management

  • check-circle

  • check-solid

  • check

  • chevron-down

  • chevron-left

  • chevron-right

  • chevron-up

  • close-open

  • close-solid

  • close

  • cloud

  • co-browse

  • communications

  • copy-to-clipboard

  • customer-decision-hub

  • customer-onboarding

  • customer-service

  • data-integrations

  • documentation

  • download

  • email

  • energy

  • entertainment

  • exit-full screen

  • external-link

  • eye-off

  • eye

  • facebook-solid

  • facebook

  • field-service-gray

  • field-service

  • filter

  • financial

  • full-screen

  • github

  • global

  • government

  • healthcare

  • hospitality

  • industries

  • info-open

  • info-solid

  • insurance

  • integration

  • intelligent-virtual-assistant

  • java

  • knowledgebase

  • launchpad

  • life-sciences

  • linkedin-solid

  • linkedin

  • lock

  • manufacturing

  • map-pin-solid

  • map-pin

  • marketing-gray

  • marketing

  • menu

  • minus-open

  • minus-solid

  • mobility

  • more

  • omni-channel

  • partners

  • pencil

  • platform

  • podcast

  • print

  • product

  • product-delivery

  • refresh

  • reporting

  • retail

  • robo-auto

  • sales-automation

  • scalability

  • search

  • share

  • support

  • system-admin

  • training

  • transportation

  • twitter-solid

  • twitter

  • unlock

  • upload

  • user

  • user-interface

  • video

  • vision

  • warning

  • watch

  • workforce-intelligence

  • youtube-solid

Image

An image. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-image

Image sizes

To specify image size (e.g u-bolt-width-1/1) pass the correct class like so:

{% set classes = create_attribute(imageAttributes | default({})).addClass([
    "c-bolt-image__img",
    "u-bolt-width-1/1",
  ])
%}

Then pass it into the component:

{% include '@bolt-components-image/image.twig' with {
  src: "/images/placeholders/tout-4x3-climber.jpg",
  alt: "A Rock Climber",
  imageAttributes: classes,
} only %}
{% include '@bolt-components-image/image.twig' with {
  src: "/src/images/turtle.jpg",
  alt: "A Turtle"
} only %}
Name Type Value(s) Description Default
src string

Source url for image.

N/A
alt string

Alt tag for image.

N/A
lazyload boolean
  • TRUE OR FALSE

Lazyload can boost performance by loading images on demand, instead of on initial page load.

true
srcset string

A comma seperated string of image urls and image widths, used for optimizing image loading performance.

N/A
sizes string

A list of one or more strings separated by commas indicating a set of source sizes. Each source size consists of a media condition (omitted for the last item), and a source size value.

auto
useAspectRatio boolean
  • TRUE OR FALSE

Use the ratio wrapper around the image to maintain a specific image ratio. This ratio is either determined from the image, or by passing in height and width arguements.

true
width number OR string

Override the default width of the image. If no height is provided, aspect ratio will be maintained.

N/A
height number OR string

Override the default height of the image. If no width is provided, aspect ratio will be maintained.

N/A
A Rock Climber A Rock Climber

640x480 jpg

A Rock Climber A Rock Climber

500x500 jpg

Bill Murray Bill Murray ,

1151x638 jpg

Mountains Mountains

1151x638 jpeg

Mountains

2712x2300 png

decision hub chart

3000x5336 jpeg

device screenshot device screenshot

124x33 svg

logo paypal svg

Src: Root Relative

src: "/pattern-lab/images/placeholders/image.jpg",
Bill Murray Bill Murray

Src: Source Set

srcset: "/pattern-lab/images/placeholders/500x500-200.jpg 200w,/pattern-lab/images/placeholders/500x500-480.jpg 480w",
Bill Murray Bill Murray

Src only that won't be found in bolt.data.images

Bill Murray Bill Murray

Src only that won't be found in bolt.data.images and not lazy loaded

Bill Murray Bill Murray

Src and srcset that won't be found in bolt.data.images

Bill Murray Bill Murray

Srcset only that won't be found in bolt.data.images and not lazy loaded

Bill Murray

Srcset only that won't be found in bolt.data.images and lazy loaded

Bill Murray

Absolute src - not lazy loaded

Wikipedia Example Wikipedia Example

Absolute src - lazy loaded

Wikipedia Example Wikipedia Example

Jpg: Lazyload true

Bill Murray Bill Murray

Jpg: Lazyload false

Bill Murray Bill Murray

Png: Lazyload true

decision hub chart

Png: Lazyload false

decision hub chart

Svg: Lazyload: true

logo paypal svg

Svg: Lazyload: false

logo paypal svg

Custom Height and Width, JPEG (2:1)

Bill Murray Bill Murray

Custom Height and Width, PNG (2:1)

decision hub chart

Custom Height and Width, SVG (10:1)

logo paypal svg

Image Zoom

When used with the device viewer component, the image component can used to create a "zoomed" state (`magnify` must be set to `true` on the device viewer).

List

Minimal list component for laying out a group of items. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-list
{% include "@bolt-components-list/list.twig" with {
  display: "inline",
  spacing: "xsmall",
  align: "start",
  valign: "center",
  items: [
    "Item 1",
    include("@bolt-components-link/link.twig", {
      text: "Item 2",
      url: "#!",
    }),
    include("@bolt-components-chip/chip.twig", {
      text: "Item 3",
      url: "#!",
    }),
    include("@bolt-components-button/button.twig", {
      text: "Item 4",
      url: "#!",
      size: "small",
    }),
    "Item 5",
  ]
} only %}

Minimal list component for laying out a group of items.

Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
items* array

All items can be simple text or items.

N/A
tag string
  • ul, ol, div, span

Apply the semantic tag for the list.

ul
display string
  • inline, block, inline@xxsmall, inline@xsmall, inline@small, inline@medium

Display either an inline list of items or a block (stacked) list of items. Responsive options are also available for transforming from block to inline at specific breakpoints.

block
spacing string
  • none, xsmall, small, medium, large, xlarge

Control the spacing in between items.

xsmall
separator string
  • none, solid, dashed

Display a separator in between items.

none
inset boolean

Turn spacing to the inside of each item.

false
align string
  • start, center, end

Control the horizontal alignment of items.

start
valign string
  • start, center, end

Control the vertical alignment of items.

center

list

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list of different items

Inline list of chips

Inline list of buttons

Inline

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline@xxsmall

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline@xsmall

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline@small

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline@medium

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (none)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (none)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (xsmall)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (xsmall)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (small)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (small)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (medium)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (medium)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (large)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (large)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with spacing (xlarge)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Block list with spacing (xlarge)

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Inline list with separators (solid)

Block list with separators (solid)

Inline list with separators (dashed)

Block list with separators (dashed)

Inset spacing is best suited for block lists, even though you can apply to inline list as well.

Block list with inset spacing (xsmall) and separators

Block list with inset spacing (small) and separators

Block list with inset spacing (medium) and separators

Block list with inset spacing (large) and separators

Block list with inset spacing (xlarge) and separators

Regular vs inset spacing

There are 2 different types of spacing styles and you can use it to your advantage. Different layouts call for different spacing styles, use your best judgment to apply the more applicable style.

The advantage of using regular spacing style

This is the regular spacing style, which adds space only in between items. So when it is put side by side next to a paragraph of text, the top of the list will line up with the paragraph of text (optically). Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante.

The same applies to items with a background color. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante.

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

The advantage of using inset spacing style

Inset spacing puts spacing around each item, this is very useful if you are putting the list inside any kind of box container. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. Vivamus hendrerit arcu sed erat molestie vehicula. Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor. Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante.

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

^ This list is inside a colored box.

Align prop only works with inline display, it has no effects on block display.

Horizontally align inline items: start

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Horizontally align inline items: center

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Horizontally align inline items: end

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Valign prop only works with inline display, it has no effects on block display.

Vertically align inline items: start

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Vertically align inline items: center

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Vertically align inline items: end

  • Placeholder 1
  • Placeholder 2
  • Placeholder 3

Use the semantically correct tag based on the context of your page layout.

ul

ol

  1. Item 1
  2. Item 2
  3. Item 3

div

span

Item 1 Item 2 Item 3

Logo

Stylistic tags for displaying a logo. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-logo
{% include "@bolt-components-logo/logo.twig" with {
  src: "/pattern-lab/images/content/logos/logo-paypal.svg"
} only %}

Note that logo accepts all the same parameters as the bolt-image component in addition to the properties below.

Name Type Value(s) Description Default
invert boolean

Set to true to invert the logo colors.

N/A

Visualization & Simulation

Continuously improve results by visualizing how future adjustments to your strategies can impact business performance. Simulate and test your ideas, evaluate the results using intuitive views, and then deploy optimal alterations.

Section 1

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Section 2

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Section 3

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Section 4

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Section 5

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Section 6

Suspendisse dictum feugiat nisl ut dapibus. Mauris iaculis porttitor posuere. Praesent id metus massa, ut blandit odio. Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Mauris vel neque sit amet nunc gravida congue sed sit amet purus. Quisque lacus quam, egestas ac tincidunt a, lacinia vel velit. Aenean facilisis nulla vitae urna tincidunt congue sed.

Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante, ac egestas est urna sit amet arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed molestie augue sit amet leo consequat posuere. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci.

Navbar

Navbar is a list of secondary links. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-navbar
{% include "@bolt-components-navbar/navbar.twig" with {
  title: {
    tag: "h2",
    text: "Title Text",
    icon: {
      name: "icon-name"
    }
  },
  links: [
    {
      text: "Link 1 Text",
      url: "#!"
    },
    {
      text: "Link 2 Text",
      url: "#!"
    },
    {
      text: "Link 3 Text",
      url: "#!"
    }
  ]
} only %}
Name Type Value(s) Description Default
theme string
  • xlight, light, dark, xdark, none

Color theme. Can be set to 'none' for a transparent background.

dark
title object
    • tag
      • h1, h2, h3, h4, h5, h6
    • text
    • icon
        • name

          Name of the (optional) icon to be used.

Navbar title. Icon is optional. Tag can be set to h1 to h6 depending on the page.

N/A
center boolean
  • TRUE OR FALSE

Determines if you want the Navbar content to be center aligned or not

N/A
width string
  • full OR auto

Adjusts the Navbar's overall maximum width behavior -- either filling up the entire browser's total screen width (full) or just the component's parent container width (auto).

full
links array
  • [items]:
    • Type: object
    • Properties:
      • text
        • Type: string
      • url
        • Type: string

(Inherited from nav-priority) Array of links

N/A
moreText string

(Inherited from nav-priority) Button text that displays when the Priority+ Nav Dropdown is displayed.

More
offset integer

(Inherited from nav-indicator) Number of pixels taken up by sticky items at the top of the page. Used for smooth scroll and gumshoe.

N/A

The Navbar component's full width option allows the component to span the entire page / screen's width in size -- ideal for sticky nav and overall site navigation.

This full config option for the Navbar component can be combined with the other config options available such as center.

The Navbar component's auto width option allows the component to be used in situations where it doesn't / shouldn't span the browser's entire screen-width in size (ex. in a sidebar or off-canvas nav)

This provides maximum flexibility when coming up with creative solutions.

Activate linked title by passing in an url

Remove theme and gradient for a transparent option

Ordered List

Stylistic numbered list for article content.

Install via NPM
npm install @bolt/components-ordered-list
{% include "@bolt-components-ordered-list/ordered-list.twig" with {
  contentItems: [
    {
      text: "Do not include any data or information in your posts that are confidential!"
    },
    {
      text: "Apply basic practices for collaborative work."
    },
    {
      text: "Be honest, respectful, trustworthy and helpful."
    },
    {
      text: "Answer questions authoritatively and concisely. Avoid cluttering discussions with noise."
    }
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
contentItems array
  • [items]:
    • Type: object

      A single list item object with either a text or contentItems key

    • Properties:
      • text
        • Type: string
      • contentItems

        Passes to @bolt/text.twig

        • Type: object

The content items

These are all of the items in the ordered list

N/A
  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: xlight

  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: light

  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: dark

  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: xdark

  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: medium

  1. Do not include any data or information in your posts that are confidential!
  2. Apply basic practices for collaborative work.
  3. Be honest, respectful, trustworthy and helpful.
  4. Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Page Header

Component in progress

Install via NPM
npm install @bolt/components-page-header

Content

Set content as arbitrary HTML:

{% set content %}
  <p>Whatever HTML content you want</p>
{% endset %}
{% include "@bolt-components-page-header/page-header.twig" with {
  content: content
} only %}

Bolt Pagination

The sequence of numbers assigned to pages on a search results page. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-pagination
{% include "@bolt-components-pagination/pagination.twig" with {
  current: 5,
  total: 10,
  first: {
    href: 'page-1-url'
  },
  previous: {
    href: 'page-4-url'
  },
  pages: {
    3: {
      href: 'page-3-url'
    },
    4: {
      href: 'page-4-url'
    },
    5: {
      href: 'page-5-url'
    },
    6: {
      href: 'page-6-url'
    },
    7: {
      href: 'page-7-url'
    }
  },
  next: {
    href: 'page-6-url'
  },
  last: {
    href: 'page-10-url'
  }
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
align string
  • start, end, center

Horizontally align the items.

center
total* number

Total pages

Total pages within the pagination

N/A
current* number

Current page

Current page selected

N/A
pages* array OR object

A keyed array of page item objects where the key is the page number

N/A
first object
    • href

      The link for this pager item. Href may also be passed as part of attributes (which will take precedence).

    • attributes

      A Drupal-style attributes object for this link.

A link object for the first page

N/A
previous object
    • href

      The link for this pager item. Href may also be passed as part of attributes (which will take precedence)

    • attributes

      A Drupal-style attributes object for this link.

A link object for the previous page (e.g. if on page 3, this links to page 2)

N/A
next object
    • href

      The link for this pager item. Href may also be passed as part of attributes (which will take precedence)

    • attributes

      A Drupal-style attributes object for this link.

A link object for the next page (e.g. if on page 3, this links to page 4)

N/A
last object
    • href

      The link for this pager item. Href may also be passed as part of attributes (which will take precedence)

    • attributes

      A Drupal-style attributes object for this link.

A link object for the last page

N/A
previousText string

Previous text

Text to be displayed for the previous anchor

Previous
nextText string

Next text

Text to be displayed for the next anchor

Next

Internationalization Support

For better internationalization support, align prop uses the start (left) and end (right) vocab. This helps the pagination to have the desired alignment regardless of the writing direction of the language being displayed.

Align start

Align end

Align center

Pagination on the Left, Something on the Right

In this case, you must set the align prop to be start so it is not centered within the cell.

Bolt Placeholder Example
xsmall Placeholder small Placeholder medium Placeholder large Placeholder xlarge Placeholder
Bolt Placeholder Example Bolt Placeholder Example
Bolt Placeholder Example

Search Filter

A wrapper for search filters that primarily handles mobile behavior. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

NOTE: as of this writing, this component is used only for internal Bolt demos and not in any actual search. It may require some modification to be usable in the real world.

Install via NPM
npm install @bolt/search-filter
{% include "@bolt-components-search-filter/search-filter.twig" with {
  "content": "Insert search filters here."
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
content

Renderable content (e.g. a string, render array, or included pattern) to display within a modal at mobile breakpoints. Typically, this is where the filters themselves go.

N/A

Share

Share block. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-share

Description

The share component provides the user a visual queue to share the content with relevant peers, as well as an easy mechanism to actively do the sharing.

OG Tags

Example

<meta property="og:type" content="article" />
<meta property="og:title" content="Bolt Design System: Page Title" />
<meta property="og:description" content="Sample description" />
<meta property="og:image" content="https://bolt-design-system.com/images/500x500-480.jpg" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="og:image:width" content="480" />
<meta property="og:image:height" content="480" />
<meta property="og:url" content="https://bolt-design-system.com/some-page-title-here" />
<meta property="og:site_name" content="Bolt Design System" />
<!-- Twitter specific tags -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="Bolt Design System: Page Title" />
<meta name="twitter:description" content="Sample description" />
<meta name="twitter:image" content="https://bolt-design-system.com/images/500x500-480.jpg" />
<meta name="twitter:site" content="@pega" />

Best Practices

  • Don't use the share tool with a page's related sections
  • Implement any "stickiness" and placement functionality on the platform the component is being used in
  • For larger screens, ease-in opacity from 0% to 100% on scroll. The placement should be lower right-hand side and fixed until the main page content is scrolled pass
  • Don't have the fixed position of the component overlap any "related content"
{% include "@bolt-components-share/share.twig" with {
  sources: [
    {
      name: "facebook",
      url: "https://www.facebook.com/sharer/sharer.php?u=https://boltdesignsystem.com&src=sdkpreparse"
    },
    {
      name: "twitter",
      url: "https://twitter.com/intent/tweet?url=https://boltdesignsystem.com&text=Sample%20Share%20Text&via=pega&hashtags=boltDesignSystemRocks!"
    },
    {
      name: "linkedin",
      url: "https://www.linkedin.com/shareArticle?url=https://boltdesignsystem.com"
    },
    {
      name: "email",
      url: "mailto:?&body=Sample%20Text%20--%20https%3A//boltdesignsystem.com"
    }
  ],
  copy_to_clipboard: {
    text_to_copy: "https://boltdesignsystem.com"
  },
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
text string

Defines the label text in front of the social icons.

Share this page
size string
  • small OR medium

Controls the size of icons and spacing.

medium
align string
  • start, center, end

Controls the horizontal alignment of label text and icons.

start
opacity integer
  • 100, 80, 60, 40, 20

Controls the overall transparency of the share tool.

100
sources array
  • [items]:
    • Type: object
    • Properties:
      • name

        Name of the social media source.

        • Type: string
      • url

        The specifically formed share URL with query string.

        • Type: string

Social media sources to share to.

N/A
copy_to_clipboard object
  • @bolt-components-copy-to-clipboard/copy-to-clipboard.schema.yml > Object details
    • attributes

      A Drupal-style attributes object with extra attributes to append to this component.


      Type: object
    • text

      DEPRECATED

      This property has been renamed trigger_text


      Type: string
    • copiedText

      DEPRECATED

      Use the custom_confirmation property instead if you need to change the confirmation text.


      Type: string
    • iconSize

      DEPRECATED

      Use custom_trigger, custom_transition, and custom_confirmation properties if you need to change icon size.


      Type: string
    • url

      DEPRECATED

      This property has been renamed text_to_copy


      Type: string
    • trigger_text

      Text to use for the inital copy button. Ignored if the custom_trigger property is used.


      Type: string
    • text_to_copy

      The text to copy to the clipboard.


      Type: string
    • custom_trigger

      (optional) Custom content to show for the initial copy trigger. If you pass a link, set the URL to '#!' since it should not being followed.


      Type: string OR object OR array
    • custom_transition

      (optional) Custom content to show while copy is in progress. This content will be rotated while the copying happens, so it's recommended to pass an icon.


      Type: string OR object OR array
    • custom_confirmation

      (optional) Custom content to show after a successful copy.


      Type: string OR object OR array
N/A
inline

DPRECATED.

Button version has been removed so this prop is no longer needed.

N/A
copyToClipboard

DPRECATED.

Please use copy_to_clipboard.

N/A

Small Size

Medium Size

Opacity will make the share tool semi-transparent, and transparency goes away if user hovers over it. This should be used if you don't want the share tool to create too much distractions on first impression.

Opacity: 100

Opacity: 80

Opacity: 60

Opacity: 40

Opacity: 20

Align: start

Align: center

Align: end

xdark

dark

light

xlight

Sticky

Sticky makes any component sticky to the top of the page. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-sticky
{% embed "@bolt-components-sticky/sticky.twig" %}
  {% block sticky_content %}

    // Sticky content

  {% endblock %}
{% endembed %}

Table

Table layout for tabular content. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-table
{% include "@bolt-components-table/table.twig" with {
  headers: {
    top: {
      cells: [
        "Column 1",
        "Column 2",
        "Column 3",
      ]
    },
    side: {
      cells: [
        "Row 1",
        "Row 2",
        "Row 3",
        "Footer",
      ]
    }
  },
  rows: [
    {
      cells: [
        "R1C1",
        "R1C2",
        "R1C3",
      ]
    },
    {
      cells: [
        "R2C1",
        "R2C2",
        "R2C3",
      ]
    },
    {
      cells: [
        "R3C1",
        "R3C2",
        "R3C3",
      ]
    }
  ],
  footer: {
    cells: [
      "FC1",
      "FC2",
      "FC3",
    ]
  }
} only %}

Table layout for tabular content.

Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
headers object
    • top
        • cells

          Each item represents a cell in the top header.

          • [items]:
            • Type: any
            • Properties:
              • content
                • Type: string
              • attributes
                • Type: object
    • side
        • cells

          Each item represents a cell in the side header.

          • [items]:
            • Type: any
            • Properties:
              • content
                • Type: string
              • attributes
                • Type: object

Generates top and side headers, each can contain an array of cells.

N/A
rows* array
    • cells

      Each item represents a cell in a row.

      • [items]:
        • Type: any
        • Properties:
          • content
            • Type: string
          • attributes
            • Type: object

Generates an array of rows, each can contain an array of cells.

N/A
footer object
    • cells

      Each item represents a cell in the footer.

      • [items]:
        • Type: any
        • Properties:
          • content
            • Type: string
          • attributes
            • Type: object

Generates a table footer, can contain an array of cells.

N/A
format string
  • regular OR numeric

Display either a regular table or a more complex numeric table.

regular
borderless boolean

Removes the vertical border in between cells.

false
first_col_fixed_width boolean

Sets the width of the first column to be as wide as the longest text.

false

With Rows Only

R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3

With Top Headers

Column 1 Column 2 Column 3
R1C1 R1C2 R1C3
R2C1 R2C2 R2C3
R3C1 R3C2 R3C3

With Side Headers

Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3

With Top and Side Headers

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3

With Headers and Footer

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3
Footer FC1 FC2 FC3

Real Example

Item number Description Assemblies
Build 2.0.1.0 — SR-49969 SR-49941 This hotfix changes Updater requirements for .NET. If you are using Updater with 7.1 or 8.0 Robotic Automation Runtime clients, you now need to have both .NET 4.0 and .NET 3.5 installed. OpenSpan.UpdaterService.Remoting.dll
OpenSpan.Updater.ServerClientInterface.dll
OpenSpan.Updater.ScheduledTasks.dll
OpenSpan.Updater.PrePostOperation.dll
OpenSpan.Updater.Git.dll
OpenSpan.VersionFinder.exe
OpenSpan.UpdaterService.exe
OpenSpan.Updater.X509tool.exe
OpenSpan.Updater.UserHelper.exe
OpenSpan.Updater.UninstallHelper.exe
OpenSpan.Updater.RuntimeLauncher.exe
OpenSpan.Updater.InstallHelper.exe
OpenSpan.Updater.Initializer.exe
Build 1.1.360 — SR-44891 SR-44869 This hotfix changes the system to better handle long file names. It also enhances VersionFinder to sort the list of branches, making it easier to find a specific branch. OpenSpan.Updater.Git.dll
SR-43163 This hotfix adds a list of post-update tasks to the RuntimeConfig.xml file. These tasks are run after files that match a pattern you specify are updated. OpenSpan.Updater.Git.dll
OpenSpan.Updater.Initializer.exe
OpenSpan.Updater.InstallHelper.exe
OpenSpan.Updater.PrePostOperation.dll
OpenSpan.Updater.PreReqCheck.dll
OpenSpan.Updater.RuntimeLauncher.exe
OpenSpan.Updater.ScheduledTasks.dll
OpenSpan.Updater.ServerClientInterface.dll
OpenSpan.Updater.ServerClientInterface.Tester.exe
OpenSpan.Updater.UninstallHelper.exe
OpenSpan.Updater.UserHelper.exe
OpenSpan.Updater.X509tool.exe
OpenSpan.UpdaterService.Remoting.dll
OpenSpan.UpdaterService.exe
Build 1.1.354 — SR-44889 SR-44850 This hotfix changes Updater to avoid an exception that could prevent it from correctly populating branches. ManagedOpenSsl.dll

Numeric format is recommended for a table with numbers only, such as box scores.

Regular Format

Pts Reb Ast Stl Blk
Michael Jordan 70 10 2 5 1
Toni Kukoc 21 15 10 3 4
Steve Kerr 5 2 20 5 0
Total 91 27 32 13 5

Numeric Format

Pts Reb Ast Stl Blk
Michael Jordan 70 10 2 5 1
Toni Kukoc 21 15 10 3 4
Steve Kerr 5 2 20 5 0
Total 91 27 32 13 5

Remove the vertical border in between cells.

Description Team Vehical Form
Optimus Prime The awe-inspiring leader of the Autobot forces. Selfless and endlessly courageous, he is the complete opposite of his mortal enemy Megatron. Autobots Peterbilt Truck
Bumblebee One of Optimus Prime's most trusted lieutenants. Although he is not the strongest or most powerful of the Autobots, Bumblebee more than makes up for this with a bottomless well of luck, determination and bravery. He would gladly give his life to protect others and stop the Decepticons. Autobots VW Beetle

Set column widths to be flexible.

Prop Description Type
attributes Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. object
headers Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. object
rows Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. array
format Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. string

Set the width of the first column to be as wide as the longest text.

Prop Description Type
attributes Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. object
headers Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. object
rows Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. array
format Proin quis tortor orci. Etiam at risus et justo dignissim congue. Donec congue lacinia dui, a porttitor lectus condimentum laoreet. Nunc eu ullamcorper orci. Quisque eget odio ac lectus vestibulum faucibus eget in metus. string

Add attributes to table cells.

This cell spans 2 columns and has an utility class. Column 3 Column 4
Row 1 R1C1 R1C2 This cell spans 2 columns and has an utility class.
Row 2 R2C1 R2C2 This cell spans 2 columns, 2 rows and has an utility class.
Row 3 R3C1 R3C2
Footer This cell spans 2 columns and has an utility class. FC3 FC4

xdark

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3
Footer FC1 FC2 FC3

dark

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3
Footer FC1 FC2 FC3

light

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3
Footer FC1 FC2 FC3

xlight

Column 1 Column 2 Column 3
Row 1 R1C1 R1C2 R1C3
Row 2 R2C1 R2C2 R2C3
Row 3 R3C1 R3C2 R3C3
Footer FC1 FC2 FC3

Pass different items into cells

Item number Description Assemblies

Build 2.0.1.0 — SR-49969

SR-49941 This hotfix changes Updater requirements for .NET. If you are using Updater with 7.1 or 8.0 Robotic Automation Runtime clients, you now need to have both .NET 4.0 and .NET 3.5 installed. OpenSpan.UpdaterService.Remoting.dll
OpenSpan.Updater.ServerClientInterface.dll
OpenSpan.Updater.ScheduledTasks.dll
OpenSpan.Updater.PrePostOperation.dll
OpenSpan.Updater.Git.dll
OpenSpan.VersionFinder.exe
OpenSpan.UpdaterService.exe
OpenSpan.Updater.X509tool.exe
OpenSpan.Updater.UserHelper.exe
OpenSpan.Updater.UninstallHelper.exe
OpenSpan.Updater.RuntimeLauncher.exe
OpenSpan.Updater.InstallHelper.exe
OpenSpan.Updater.Initializer.exe
Build 2.0.1.0 — SR-49969 SR-44869 UTF-8 OpenSpan.Updater.Git.dll
Build 1.1.360 — SR-44891 SR-43163 This hotfix adds a list of post-update tasks to the RuntimeConfig.xml file. These tasks are run after files that match a pattern you specify are updated. A Rock Climber A Rock Climber
SR-44850 This hotfix changes Updater to avoid an exception that could prevent it from correctly populating branches. ManagedOpenSsl.dll

Teaser

Teaser block. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-teaser
{% include "@bolt-components-teaser/teaser.twig" with {
  content: "Body text. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
  buttons: [
    {
      pattern: "button",
      style: "primary",
      text: "CTA 1"
    },
    {
      pattern: "button",
      style: "secondary",
      text: "CTA 2"
    }
  ]
} only %}
Name Type Value(s) Description Default
eyebrow object
  • @bolt-components-headline/headline.schema.yml > Object details
    • text

      Renderable text content of the headline.


      Type: string OR object OR array
    • tag

      Html tag.


      Type: string
      • h1, h2, h3, h4, h5, h6, p, span, cite, div
    • align

      Text alignment.


      Type: string
      • left, center, right
    • weight

      Font weights.


      Type: string
      • bold, regular, semibold
    • style

      Font styles.


      Type: string
      • normal OR italic
    • size

      Font size.


      Type: string
      • xsmall, small, medium, large, xlarge, xxlarge, xxxlarge
    • transform

      Text transformation.


      Type: string
      • uppercase, lowercase, capitalize
    • url

      If provided, turns headline into a link to given url.


      Type: string
    • icon

      Bolt icon. Accepts either 1) an icon name as a string 2) an icon object as expected by @bolt-components-icon or 3) the string "none" to explicitly remove default icons


      Type:
    • quoted

      Adds quoted styling to text.


      Type: boolean

Eyebrow text component

N/A
headlines array
  • [items]:
    • Type: object

      Headline text components

    • Properties:

An array of headline component objects

N/A
logo object
  • @bolt-components-logo/logo.schema.yml > Object details
    • invert

      Set to true to invert the logo colors.


      Type: boolean

Bolt logo component

N/A
content string

Body text of teaser

N/A
contentItems array
  • [items]:
    • Type: object
    • Properties:

Array of content item objects

N/A
buttons array
  • [items]:
    • Type: object

      A button

    • Properties:

An array of button component objects

N/A

Body text. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Eyebrow

This is a headline.

Body text. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Text

New (still in progress) Text component. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-text

Web Component

Bolt Text is a web component, which means you can use the custom tag bolt-text to render it.

<bolt-text>
  This is a piece of text.
</bolt-text>

Common Settings

Common props that bolt-text accepts.

display=""

Inline text or a block of text.

block

<bolt-text
  tag="div"
  display="block"
>
  This is a block of text.
</bolt-text>

inline

Here, you can set some
<bolt-text
  tag="span"
  display="inline"
  font-style="italic"
>
  inline text
</bolt-text>
that is italic.

tag=""

You can set semantic tag to reflect the kind of text you are rendering.

<bolt-text
  tag="h1"
>
  Make this the h1 because it's the most important text on the page.
</bolt-text>

color=""

You can assign theme variables to the text color. Currently 2 variables are enabled, theme-headline and theme-body. theme-headline will produce the Headline Color, and theme-body will produce the Body Text Color. Both colors are defined in all of our themes. By assigning text colors this way, the design will always stay consistent and always work with a theme.

<bolt-text
  color="theme-headline"
>
  This piece of text has the Headline Color from the theme.
</bolt-text>
<bolt-text
  color="theme-body"
>
  This piece of text has the Body Text Color from the theme.
</bolt-text>

Additional Settings

Prop Values Default
line-height tight, regular, loose regular
align inherit,left, center, right inherit
letter-spacing narrow, regular, wide regular
text-transform regular, uppercase, lowercase, capitalize regular
font-family headline, body, code body
font-size xsmall, small, medium, large, xlarge, xxlarge, xxxlarge medium
font-weight regular, semibold, bold regular
font-style regular, italic regular
opacity 100, 80, 60, 40, 20 100
quoted (This is a boolean prop)
url (This is a string, for example: http://pega.com)

Utilities (overrides)

Use any Bolt utility to override the design.

util=""

<bolt-text
  util="margin-bottom-large, padding-top-small, color-indigo"
>
  This piece of text has utility overrides.
</bolt-text>

Typographic Recipes

Using the shorthand method allows for consistency while also leaving room for customizations. The following are the official recipes for each piece of our typography. They will cover all common use cases. Only in edge cases, you'd want to break away and create your own recipes.

Prop Values Default
eyebrow (This is a boolean prop)
headline (This is a boolean prop)
subheadline (This is a boolean prop)

Eyebrow

<bolt-text eyebrow>
  This is an Eyebrow
</bolt-text>

By using the eyebrow boolean attribute, the following attribute defaults are being set:

  • font-size: xsmall
  • font-family: headline
  • color: theme-headline
  • line-height: tight
  • letter-spacing: wide
  • transform: uppercase
  • opacity: 80

Headline

<bolt-text headline>
  This is a Headline
</bolt-text>

By using the headline boolean attribute, the following attribute defaults are being set:

  • tag: h2
  • font-size: xlarge
  • font-family: headline
  • color: theme-headline
  • letter-spacing: narrow
  • weight: bold

XXXL Headline

<bolt-text headline
  font-size="xxxlarge"
>
  This is a XXXL Headline
</bolt-text>

XXL Headline

<bolt-text headline
  font-size="xxlarge"
>
  This is a XXL Headline
</bolt-text>

XL Headline

<bolt-text headline
  font-size="xlarge"
>
  This is a XL Headline
</bolt-text>

L Headline

<bolt-text headline
  font-size="large"
>
  This is a L Headline
</bolt-text>

S Headline

<bolt-text headline
  font-size="small"
>
  This is a S Headline
</bolt-text>

To render all sizes of headlines, all you have to do is change font-size to your desired size. Note: if set to xxxlarge and the title exceeds 60 characters, the font size will scale down from 3.083rem to 2.275rem.

XS Headline

<bolt-text headline
  font-size="xs"
  text-transform="uppercase"
  letter-spacing="wide"
>
  This is a XS Headline
</bolt-text>

XS headline is a special case and should be used sparingly. In addition to font-size, text-transform and letter-spacing also need to be defined.

Subheadline

<bolt-text subheadline>
  This is a subheadline
</bolt-text>

By using the subheadline boolean attribute, the following attribute defaults are being set:

  • font-size: large
  • font-family: headline
  • color: theme-headline

XXL Subheadline

<bolt-text subheadline
  font-size="xxlarge"
>
  This is a XXL subheadline
</bolt-text>

XL Subheadline

<bolt-text subheadline
  font-size="xlarge"
>
  This is a XL subheadline
</bolt-text>

L Subheadline

<bolt-text subheadline
  font-size="large"
>
  This is a L subheadline
</bolt-text>

To render all sizes of subheadlines, all you have to do is change font-size to your desired size.

// Web Component

  This is text.


// Twig
{% include "@bolt-components-text/text.twig" with {
  text: "This is text."
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
text* string

Text content of the headline.

N/A
tag string
  • h1, h2, h3, h4, h5, h6, p, div, span

HTML semantic tags.

p
display string
  • inline OR block

Inline text or a block of text.

block
color string
  • theme-headline OR theme-body

Text color in context of theme colors.

theme-body
line-height string
  • tight, regular, loose

Line height in context of the typographic design.

regular
align string
  • inherit, left, center, right

Text alignment.

inherit
letter-spacing string
  • narrow, regular, wide

Letter spacing in context of the typographic design.

regular
text-transform string
  • regular, uppercase, lowercase, capitalize

Transform controls the type case. Please note that capitalize would capitalize the first letter of each word, it is not the same as title case.

regular
font-family string
  • headline, body, code

Font family in context of the typographic design.

body
font-size string
  • xsmall, small, medium, large, xlarge, xxlarge, xxxlarge

Font size in context of the typographic design.

medium
font-weight string
  • regular, semibold, bold

Font weight in context of the typographic design.

regular
font-style string
  • regular OR italic

Emphasized text.

regular
opacity number
  • 100, 80, 60, 40, 20

Opacity level.

100
quoted boolean

Quoted text.

false
url string

If provided, turns headline into a link to given url.

N/A
headline boolean

A preset for headlines in context of the typographic design.

false
subheadline boolean

A preset for subheadlines in context of the typographic design.

false
eyebrow boolean

A preset for eyebrow in context of the typographic design.

false
util array

Each item in the array will build a utility class. No need to include u-bolt-. For the web component use comma separated string.

N/A

text

Typographic Design

The following are the official recipes for each piece of our typography. They will cover all common use cases. Only in edge cases, you'd want to break away and create your own recipes.

Headlines

This Is the XXXLarge Headline This Is the XXLarge Headline This Is the XLarge Headline This Is the Large Headline This Is the Small Headline This Is the XSmall Headline

Subheadlines

This Is the XXLarge Subheadline This Is the XLarge Subheadline This Is the Large Subheadline

Eyebrow

This Is the Eyebrow

Paragraph

This is regular text in a paragraph. You can make a word italic or bold, because text can be displayed inline or block. The entire paragraph can be italic. The entire paragraph can be bold.

Example Lockup in Different Themes

This is an eyebrow This is a headline This is a subheadline This is regular text, and some lorem ipsum. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante.
This is an eyebrow This is a headline This is a subheadline This is regular text, and some lorem ipsum. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante.
This is an eyebrow This is a headline This is a subheadline This is regular text, and some lorem ipsum. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante.
This is an eyebrow This is a headline This is a subheadline This is regular text, and some lorem ipsum. Duis aliquet egestas purus in blandit. Curabitur vulputate, ligula lacinia scelerisque tempor, lacus lacus ornare ante.
This is regular text using inherit align This is regular text using left align This is regular text using center align This is regular text using right align
This piece of text is also a quote. This headline is also a quote.

Tooltip

Tooltip component. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-tooltip

Description

The tooltip component provides the user with a onHover Or onClick (button) toggle to display nearly any kind of content or Bolt Component nested within.

Use Cases (not limited to)

  • Help text
  • Navigational assistance (such as language select)
  • Used within other components, such as Share, to enhance functionality and presentation

Best Practices

  • Toggle icons should be tested to ensure smooth transition states
  • The noWrap option should only be used when small snippets of text or content are used
{% include "@bolt-components-tooltip/tooltip.twig" with {
  trigger: {
    type: "text",
    text: "Trigger Text"
  },
  content: "Here is a tooltip! And it even comes with a button toggle!"
} only %}
Name Type Value(s) Description Default
trigger* object
    • type

      What kind of trigger are we using?

      • text OR button
    • text

      The text for our trigger

    • transform

      Trigger text transformation

      • uppercase, lowercase, capitalize
    • icon

      Properties for including an icon with our trigger

        • name

          Name of the icon to be used

        • size

          Size of the icon

          • small, medium, large, xlarge
    • toggle

      If using a button set optional toggle text / icon

        • text

          The text for our toggle

        • name

          The icon for our toggle

Provides the data for our trigger type

N/A
content* any

This can be text OR an included bolt component (like Block List)

N/A
direction string
  • up OR down

Should tooltip push up or down?

up
noWrap boolean
  • TRUE OR FALSE

true for single line content (short snippets)

false
spacing string
  • none, xsmall, small, medium

Spacing within our tooltip content bubble

small


Unordered List

Stylistic bulleted list for article content. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/components-unordered-list
{% include "@bolt-components-unordered-list/unordered-list.twig" with {
  contentItems: [
    {
      text: "Do not include any data or information in your posts that are confidential!"
    },
    {
      text: "Apply basic practices for collaborative work."
    },
    {
      text: "Be honest, respectful, trustworthy and helpful."
    },
    {
      text: "Answer questions authoritatively and concisely. Avoid cluttering discussions with noise."
    }
  ]
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
contentItems array
  • [items]:
    • Type: object

      A single list item object with either a text or contentItems key

    • Properties:
      • text

        Item text

        • Type: string
      • contentItems

        Items pass to @bolt/text.twig

        • Type: array

The content items

These are all of the items in the ordered list

N/A
  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: xlight

  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: light

  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: dark

  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Theme: xdark

  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

  • Do not include any data or information in your posts that are confidential!
  • Apply basic practices for collaborative work.
  • Be honest, respectful, trustworthy and helpful.
  • Do not include any data or information in your posts that are confidential!

    Apply basic practices for collaborative work.

    Be honest, respectful, trustworthy and helpful.

    Answer questions authoritatively and concisely. Avoid cluttering discussions with noise.

Video

Stylistic video. Part of the Bolt “Components” CSS framework that powers the Bolt Design System.

Install via NPM
npm install @bolt/video
{% include "@bolt/video.twig" with {
  videoId: "5609376179001",
  accountId: "1900410236",
  playerId: "r1CAdLzTW",
  showMeta: true,
  showMetaTitle: false
} only %}
Name Type Value(s) Description Default
attributes object

A Drupal-style attributes object with extra attributes to append to this component.

N/A
videoId string OR number

Brightcove ID for this video.

N/A
playerId string

Brightcover Player ID.

N/A
accountID string OR number

ID of the Brightcove account that owns the video.

N/A
videoUuid string

A unique identifying string, randomly generated if not provided.

N/A
ratio boolean

Maintain video ratio.

N/A
collapsed boolean

Should the video be collapsed on load.

N/A
showMeta boolean

Should the video show meta data.

true
showMetaTitle boolean

Should the video show meta title.

true
controls boolean

Should the video controls be available.

true
autoplay boolean

Should the video auto-play on load.

false
loop boolean

Should the video loop.

false
isBackgroundVideo boolean

Set to true if the video is a background.

false

This video has showMeta set to true and showMetaTitle set to true.

This video has showMeta set to false.

This video has showMeta set to true and showMetaTitle set to false.

This video has controls set to false, you cannot interact with the video player but you can create external control to interact with it:

This video has external controls:

This video has an inline script.

This video has external controls and an inline script:

This video has attributes for email share. Inline script is required for the email share.

This video is coming from the band's background.

This video has showMetaTitle set to false to hide the title from the video player, so you can pass the title to other markup.

Figure and Figcaption

EE: Transforming the Customer Journey Through 1:1 Customer Engagement (Suzanne Woolley)

Headline with Video

EE: Transforming the Customer Journey Through 1:1 Customer Engagement (Suzanne Woolley)

Bolt video player with HTML on the page before the JS runs. The HTML for this was from copying and pasting in the HTML from Pattern Lab's copy to clipboard.

Bolt video player markup that's dynamically injected into the page. Markup being injected was properly copied over from Pattern Lab's HTML example.

Inject video player

Register now

(all fields are required)

Fill out this form with LinkedIn