Box design
Class names
The react <Box>
component provides a way to access CSS classes with some
default values for bifrost styling:
Class name | Applied style |
---|---|
.bf-padding | padding: var(--bf-box-padding); |
.bf-padding-x | padding-inline: var(--bf-box-padding); |
.bf-padding-y | padding-block: var(--bf-box-padding); |
.bf-border | border: var(--bf-border); |
.bf-border-top | border-top: var(--bf-border); |
.bf-border-right | border-right: var(--bf-border); |
.bf-border-bottom | border-bottom: var(--bf-border); |
.bf-border-left | border-left: var(--bf-border); |
.bf-radius | border-radius: var(--bf-radius-m); |
.bf-shadow | box-shadow: var(--bf-shadow); |
In addition to .bfc-[color]-bg
background-color classes.
They are based on bifrost variables like:
CSS variable | Value |
---|---|
--bf-box-padding | 16px up to 1280px viewport width, 24px for wider |
--bf-border | 1px solid var(--bfc-base-dimmed) |
--bf-radius | 12px |
--bf-shadow | 0 0 var(--bf-shadow-blur) var(--bfc-shadow) |
Combining these you can compose different boxes:
Border
Padded box with a border and rounded corners.
<div class="bf-padding bf-radius bf-border">bf-padding bf-radius bf-border</div>
<div class="bf-padding bf-radius bf-border">bf-padding bf-radius bf-border</div>
Background color
Valid background color classnames are:
<div class="bf-padding bf-radius bfc-base-3-bg"> bf-padding bf-radius bfc-base-3-bg </div> <div class="bf-padding bf-radius bfc-chill-bg"> bf-padding bf-radius bfc-chill-bg </div> <div class="bf-padding bf-radius bfc-warning-bg"> bf-padding bf-radius bfc-warning-bg </div>
<div class="bf-padding bf-radius bfc-base-3-bg"> bf-padding bf-radius bfc-base-3-bg </div> <div class="bf-padding bf-radius bfc-chill-bg"> bf-padding bf-radius bfc-chill-bg </div> <div class="bf-padding bf-radius bfc-warning-bg"> bf-padding bf-radius bfc-warning-bg </div>
Clickable box
Use .bf-neutral-link
to remove default link or button styling, and wrap any
text you would like underlined on hover in .bf-neutral-link-text
.
Button
To make a "box" clickable, use the<button>
element to make it accessible.
The .bf-block
class applies display: block; width: 100%;
when applied to a
<button>
.
<button class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow" > This is a <span class="bf-neutral-link-text">button</span> </button>
<button class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow" > This is a <span class="bf-neutral-link-text">button</span> </button>
Link
Anchor (<a>
) elements are inline
by default, to use it as a "box", you can
either apply display: block;
or use the .bf-block
class which does just
that.
<a href="#page" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow" > This is a <span class="bf-neutral-link-text">link</span> </a>
<a href="#page" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow" > This is a <span class="bf-neutral-link-text">link</span> </a>
Use .bf-box-arrow
(or .bf-box-arrow-external
) on an arrow-right icon to
animate on hover.
You can place it on the right hand side using .bf-inline
and
.bf-inline-stretch
.
<a href="#page" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow bf-inline" style="align-items: center" > <span class="bf-inline-stretch"> This is a <span class="bf-neutral-link-text">link</span> </span> <i class="fa-solid fa-arrow-right bf-box-arrow"></i> </a> <a target="_blank" href="https://intility.com" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow bf-inline" style="align-items: center" > <span class="bf-inline-stretch"> This is an <span class="bf-neutral-link-text">external link</span> </span> <i class="fa-solid fa-arrow-right bf-box-arrow-external"></i> </a>
<a href="#page" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow bf-inline" style="align-items: center" > <span class="bf-inline-stretch"> This is a <span class="bf-neutral-link-text">link</span> </span> <i class="fa-solid fa-arrow-right bf-box-arrow"></i> </a> <a target="_blank" href="https://intility.com" class="bf-neutral-link bf-block bf-padding bfc-base-3-bg bf-radius bf-shadow bf-inline" style="align-items: center" > <span class="bf-inline-stretch"> This is an <span class="bf-neutral-link-text">external link</span> </span> <i class="fa-solid fa-arrow-right bf-box-arrow-external"></i> </a>
Examples
Card with button
Also see typography docs, .bfl-grid
, and
.bf-button
<div class="bf-radius bfc-base-3-bg bfl-grid bf-shadow" style="padding: 16px"> <h5 class="bf-h5">Ingrid Berntsen</h5> <p class="bf-p"> Sosialantropolog med utdanning fra Universitetet i Oslo (UiO). </p> <button class="bf-button bf-button-filled"> <i class="fa-solid fa-download bf-icon-margin-right"></i>Last ned kontakt </button> </div>
<div class="bf-radius bfc-base-3-bg bfl-grid bf-shadow" style="padding: 16px"> <h5 class="bf-h5">Ingrid Berntsen</h5> <p class="bf-p"> Sosialantropolog med utdanning fra Universitetet i Oslo (UiO). </p> <button class="bf-button bf-button-filled"> <i class="fa-solid fa-download bf-icon-margin-right"></i>Last ned kontakt </button> </div>
Link box with header
<a href="#path" class="bf-neutral-link bf-padding bf-radius bfc-base-3-bg bf-shadow bfl-grid" > <div class="bf-inline" style="align-items: center"> <h5 class="bf-h5 bf-inline-stretch bf-neutral-link-text"> <i class="fa-solid fa-info-circle bf-icon-margin-right"></i>More information </h5> <i class="fa-solid fa-arrow-right bf-box-arrow"></i> </div> <p class="bf-p">Read about this and a lot more</p> </a>
<a href="#path" class="bf-neutral-link bf-padding bf-radius bfc-base-3-bg bf-shadow bfl-grid" > <div class="bf-inline" style="align-items: center"> <h5 class="bf-h5 bf-inline-stretch bf-neutral-link-text"> <i class="fa-solid fa-info-circle bf-icon-margin-right"></i>More information </h5> <i class="fa-solid fa-arrow-right bf-box-arrow"></i> </div> <p class="bf-p">Read about this and a lot more</p> </a>
Circle icon card
<div class="bf-padding bf-radius bfc-base-3-bg bf-inline bf-shadow"> <div class="bf-radius-full bfc-base-bg" style="width: 40px; height: 40px; display: grid; place-items: center;" > <i class="fa-regular fa-comment bfc-base-2 bf-large"></i> </div> <div class="bf-inline-stretch"> <small class="bfc-base-2">Message to signees</small> <div>Don't forget to celebrate</div> </div> </div>
<div class="bf-padding bf-radius bfc-base-3-bg bf-inline bf-shadow"> <div class="bf-radius-full bfc-base-bg" style="width: 40px; height: 40px; display: grid; place-items: center;" > <i class="fa-regular fa-comment bfc-base-2 bf-large"></i> </div> <div class="bf-inline-stretch"> <small class="bfc-base-2">Message to signees</small> <div>Don't forget to celebrate</div> </div> </div>
Split card
<div class="bf-radius bfc-base-3-bg bf-shadow"> <div class="bf-padding bf-inline"> <div class="bf-inline-stretch"> <h5 class="bf-h5">27</h5> cats </div> <div class="bf-radius-full bfc-base-bg" style="width: 40px; height: 40px; display: grid; place-items: center;" > <i class="fa-solid fa-cat bfc-base-2 bf-large"></i> </div> </div> <div class="bf-padding bfc-base-2-bg" style="border-radius: 0 0 var(--bf-radius) var(--bf-radius); display: grid; grid-template-columns: auto 1fr; gap: 8px" > <strong style="justify-self: end">4</strong> <div>Burmese</div> <strong style="justify-self: end">3</strong> <div>Voids</div> <strong style="justify-self: end">20</strong> <div>Orange ones</div> </div> </div>
<div class="bf-radius bfc-base-3-bg bf-shadow"> <div class="bf-padding bf-inline"> <div class="bf-inline-stretch"> <h5 class="bf-h5">27</h5> cats </div> <div class="bf-radius-full bfc-base-bg" style="width: 40px; height: 40px; display: grid; place-items: center;" > <i class="fa-solid fa-cat bfc-base-2 bf-large"></i> </div> </div> <div class="bf-padding bfc-base-2-bg" style="border-radius: 0 0 var(--bf-radius) var(--bf-radius); display: grid; grid-template-columns: auto 1fr; gap: 8px" > <strong style="justify-self: end">4</strong> <div>Burmese</div> <strong style="justify-self: end">3</strong> <div>Voids</div> <strong style="justify-self: end">20</strong> <div>Orange ones</div> </div> </div>