Design system

디자인 시스템

A living set of components, tokens, and guidelines that lets multiple products and teams build screens from the same parts.

Also known as: DSComponent library
···
html
<div class="stage">
  <div class="tok" id="tok"><span class="sw" id="sw"></span><code id="tokv">--accent</code></div>
  <div class="grid">
    <button class="c btn">Button</button>
    <div class="c chip">Chip</div>
    <div class="c bar"><span id="barfill"></span></div>
    <div class="c link">Link text</div>
    <div class="c avatar"></div>
    <div class="c toggle"><span id="knob"></span></div>
  </div>
</div>
css
.stage{width:94%;height:88%;display:flex;flex-direction:column;gap:10px}
.tok{display:flex;align-items:center;gap:8px;font:700 11px/1 monospace;color:var(--muted)}
.sw{width:14px;height:14px;border-radius:4px;background:var(--accent);transition:background .4s}
.grid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;align-items:center}
.c{border-radius:8px;display:grid;place-items:center;font:600 11px/1 sans-serif;height:100%}
.btn{background:var(--accent);color:#fff;border:none;transition:background .4s}
.chip{background:var(--surface);border:1px solid var(--accent);color:var(--accent);transition:color .4s,border-color .4s}
.bar{background:var(--line);position:relative;overflow:hidden;height:40%;align-self:center}
.bar span{position:absolute;inset:0 60% 0 0;background:var(--accent);transition:background .4s}
.link{color:var(--accent);text-decoration:underline;transition:color .4s}
.avatar{width:60%;aspect-ratio:1;border-radius:50%;background:var(--accent);justify-self:center;transition:background .4s}
.toggle{width:70%;height:44%;border-radius:20px;background:var(--line);position:relative;justify-self:center}
.toggle span{position:absolute;top:10%;left:8%;width:36%;height:80%;border-radius:50%;background:var(--accent);transition:background .4s}
js
const colors = ['#5b5bf7', '#f25c8a', '#18c29c', '#e08a2b'];
const sw = document.getElementById('sw');
const el = document.querySelectorAll('.btn,.bar span,.avatar,.toggle span');
const chip = document.querySelector('.chip');
const link = document.querySelector('.link');
const tokv = document.getElementById('tokv');
let i = 0;
function apply() {
  const c = colors[i % colors.length];
  sw.style.background = c;
  el.forEach((n) => { n.style.background = c; });
  chip.style.borderColor = c;
  chip.style.color = c;
  link.style.color = c;
  tokv.textContent = '--accent: ' + c;
  i++;
}
apply();
setInterval(apply, 1800);

A design system bundles components (button, input, card), design tokens (color, spacing, type), and the guidelines that say when to use what. It's less a single file than a living product — a Figma library paired with a matching code library.

It's often confused with a style guide (a static document of colors and fonts) or a pattern library (just the components), but a design system adds the reasoning for why and a real code implementation. The key property: when a designer drops a component in Figma, a code component with the same name and properties already exists for engineers to use.

Start small. Tokenize and componentize whatever already repeats across two or more places, ship it in one product first, and find where it breaks before mandating it team-wide.

When to use

Start when you can see multiple products or teams reinventing the same button or color. If there's only one product and a small team, it may still be too early.