◆ Components · Buttons · v3.0
Buttons —
6 variants × 6 sizes × 7 states
Primary · Secondary · Ghost · Link · Danger · Success
XS → 2XL · Focus · Loading · Disabled · Pressed · Magnetic
01
HERO BUTTON · the signature CTA
magnetic glow · sweep · scanline
HALO
· 1 px lime + 50 px glow
PULSE ·
2.4 s ease loop
▶ START LIVE CALL
SWEEP
· 3.2 s · 60% white shimmer
CONTRAST ·
13.2 : 1 AAA
02
ANATOMY · 4× callouts
primary button, exploded
◆ ANSWER CALL
ICON
· ◆ 12 px · optional
LABEL ·
Mono · 11 · 700 · +0.16em
PADDING
· 12 / 20 · rad 8
FILL ·
brand-500 + shimmer
03
VARIANTS × STATES · 6 × 7
42 cells · production grid
VARIANT
DEFAULT
HOVER
FOCUS
ACTIVE
LOADING
DISABLED
SUCCESS
PRIMARY
solid lime
★ default CTA
ACTION
ACTION
ACTION
ACTION
RUN
ACTION
✓ DONE
SECONDARY
glass + border
ACTION
ACTION
ACTION
ACTION
RUN
ACTION
✓ SAVED
GHOST
no chrome
ACTION
ACTION
ACTION
ACTION
RUN
ACTION
✓ OK
LINK
inline text
View details →
View details →
View details →
View details →
Run
View details →
✓ Linked
DANGER
destructive
DELETE
DELETE
DELETE
DELETE
RUN
DELETE
✓ REMOVED
SUCCESS
affirmative
ANSWER
ANSWER
ANSWER
ANSWER
RUN
ANSWER
✓ ON CALL
04
SIZE LADDER · 6 stops
XS 28 px → 2XL 64 px
BTN-XS
ACTION
SECONDARY
GHOST
DANGER
28
h · pad 6/12 · rad 6 ·
9 px
BTN-SM
ACTION
SECONDARY
GHOST
DANGER
34
h · pad 9/16 · rad 7 ·
10 px
BTN-MD
ACTION
SECONDARY
GHOST
DANGER
42
h · pad 12/20 · rad 8 ·
11 px
· default
BTN-LG
ACTION
SECONDARY
GHOST
DANGER
52
h · pad 16/26 · rad 10 ·
12 px
BTN-XL
ACTION
SECONDARY
GHOST
DANGER
58
h · pad 18/32 · rad 10 ·
13 px
BTN-2XL
★ HERO ACTION
SECONDARY
66
h · pad 22/40 · rad 12 ·
14 px
05
COMPOSITIONS · group · split · icon · pair · toolbar
8 production patterns
◆ SEGMENTED GROUP
filter · single-select
ALL · 1.2K
MINE
TEAM
ARCHIVED
Selected fills
brand-500
, void text. Group inherits glass.
◆ SPLIT BUTTON
▶ START
▾
Primary action + dropdown variants.
◆ ICON-ONLY · 40
▶
⏸
↺
■
aria-label
required.
◆ HERO PAIR
START TRIAL →
BOOK DEMO
Primary leads · arrow on principal.
◆ CALL-CONTROL PAIR
◆ ANSWER
◆ END CALL
Affirmative
green
· destructive
red
.
◆ AI ACCENT
✦ ASK AGENT
DISMISS
Violet reserved for AI & premium.
◆ TOOLBAR ROW
↶
↷
B
I
U
PUBLISH
Ghost SM · dividers at logical breaks.
◆ INLINE LINKS · running prose
12 / 1.55 · Inter
MobDial routes through
14 carriers
with sub-100ms failover. Read the
routing playbook
or jump to
live status →
. For destructive flows, use the explicit
delete record
action — never a bare button.
06
USAGE · code reference
copy-paste tokens · React + CSS
Button.tsx
// MobDial · Primary CTA
<Button
variant
=
"primary"
size
=
"md"
>
Answer call
</Button>
tokens.css
.btn-pri
{
background:
linear-gradient(180deg,#4DFFB8,#12FFA0)
;
color:
#05060A
;
box-shadow:
0 6px 20px -6px rgba(18,255,160,.6)
;
}
07
RULES · do & don't
buttons that respect the operator
◆ DO
5 RULES
01
One primary per surface.
Every screen points the eye at exactly one decisive action. Everything else is secondary or ghost.
02
Verbs, not nouns.
Labels read as commands: "Start call", "Save draft", "Delete record" — not "OK" or "Submit".
03
Loading reserves width.
Lock the button width on loading state so the layout doesn't jump.
04
Destructive gets confirmation.
Danger pairs with a confirm step — never a naked single-click delete.
05
Hit target ≥ 44 × 44.
Below MD, only inside dense toolbars without mobile touch.
◆ DON'T
5 RULES
01
No two primaries side-by-side.
If both feel primary, the page hasn't decided what it wants the user to do.
02
No icon-only without aria-label.
A bare ⋯ is invisible to screen readers.
03
No rounded-pill on MD+ buttons.
Pill on large buttons reads toy; cap at rad-sm 8 (rad-md 10 for LG/XL).
04
No disabled without reason.
Always include tooltip or inline copy explaining the gate.
05
No spinner-as-feedback-only.
Loading lives ≤ 1.5 s; longer needs a progress meter or cancel.
08
TOKEN REFERENCE · 12 tokens
drop-in CSS variables
HEIGHT
default
42 px
RADIUS
default
rad-sm 8
FONT
label
Mono 700 · +0.16em
SHADOW
rest
shad-2 + glow
FOCUS
ring
4 px · brand/32
TRANSITION
press
translateY 1 · 150ms
HIT
min
44 × 44
GAP
icon/label
sp-2 · 8 px
LOADING
spinner
12 px · 0.7s
DISABLED
opacity
0.30
SHIMMER
sweep
.6s on hover
HERO
pulse
2.4s loop