NS Design System
v3.0.0 · 257 tokens

99Certification badge

The heptagon-and-ribbon badge a certification ships as, rebuilt as one element so a course page, a profile or a certificate can render any credential at any size. Drawn with clip-path — no image files, so it scales, prints and flips with the theme.

Use it for

  • A certification track's hero and its course cards
  • A learner profile — earned badges, and the next one greyed
  • The certificate document

Not for

  • Reproducing Salesforce's own badges. Those are their trademark and belong to the credential THEY issue — this is the shape family in this brand's colours, for this product's own tracks
  • Anything that is not a credential. A badge means an exam was passed

The three levels

Only the ribbon changes between levels, because the ribbon is what a wall of badges is scanned by. Colours are ours — brand navy plate, brand-400 mark, brand→accent ribbon — not the official palette.

Certified Associate Certified Platform Developer Certified Architect
markup
<div class="ns-certbadges">
  <span class="ns-certbadge ns-certbadge--associate">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cloud ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__rule" aria-hidden="true"></span>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Associate</span>
    </span>
  </span>
  <span class="ns-certbadge ns-certbadge--specialist">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cloud ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__rule" aria-hidden="true"></span>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Platform Developer</span>
    </span>
  </span>
  <span class="ns-certbadge ns-certbadge--architect">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cube ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Architect</span>
    </span>
  </span>
</div>

Sizes and locked

Set inline-size and everything inside scales from it. A badge you have not earned is drained rather than hidden — a track should show what is ahead of you.

Certified Admin Certified Admin Certified Architect — not yet earned
markup
<div class="ns-certbadges" style="align-items:center">
  <span class="ns-certbadge ns-certbadge--specialist" style="inline-size:5rem">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cloud ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__rule" aria-hidden="true"></span>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Admin</span>
    </span>
  </span>
  <span class="ns-certbadge ns-certbadge--specialist" style="inline-size:7rem">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cloud ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__rule" aria-hidden="true"></span>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Admin</span>
    </span>
  </span>
  <span class="ns-certbadge ns-certbadge--architect ns-certbadge--locked" style="inline-size:7rem">
    <span class="ns-certbadge__plate" aria-hidden="true"></span>
    <span class="ns-certbadge__ribbon" aria-hidden="true"></span>
    <span class="ns-certbadge__inner">
      <i class="ph ph-cube ns-certbadge__mark" aria-hidden="true"></i>
      <span class="ns-certbadge__word">Certified</span>
      <span class="ns-certbadge__name">Architect<span class="ns-visually-hidden"> — not yet earned</span></span>
    </span>
  </span>
</div>

Accessibility contract

  • The badge is one element with a text name inside it, so it is read rather than described
  • Locked badges keep their name in the DOM and add "not yet earned" — greyscale is not an announcement