Skip to content

Iconography

Lucide icons on a 24px grid, sized with the text they sit beside and colored by the component that holds them.

prfct uses Lucide, an open-source set of more than 1,500 consistent, 24px-grid outline icons. Components size and color icons for you; your job is to choose the right one — or none.

14pxSearch12px text
16pxSearch14px text
18pxSearch16px text
20pxSearch18px text
24pxSearch24px text

Sizing

Icons are sized to the text they accompany, not to a fixed size. The stroke scales with the icon, so a 16px icon beside 14px text has the same visual weight as the letters.

TextIconWhere
12px14pxBadges, extra-small buttons, captions
14px16pxButtons, inputs, menu items — the default
16px18pxLarge buttons, body text
18–20px20pxHeadings, empty states
24px+24pxHero moments only

Inside prfct components, never size icons yourself. Buttons, menu items, inputs and badges size their icons with [&_svg] selectors; adding size-4 only fights the system.

// Correct — the button sizes and spaces the icon
<Button>
  <PlusIcon data-icon="inline-start" />
  New project
</Button>

Color

Icons inherit currentColor. Inside menus and inputs they default to muted-foreground and switch to foreground when the item is highlighted, so the label always leads. Status icons use their status step 11.

Guidelines

  • Pair icons with text. Icons alone are ambiguous. Use icon-only buttons only for universally understood actions (close, search, more) and always give them an aria-label and a tooltip.
  • One metaphor per action. Use the same icon for the same action everywhere: Trash2 always means delete.
  • Decorative icons are hidden. Icons next to a text label are decorative; Lucide renders aria-hidden="true" by default.
  • Don't mix icon families. Mixed stroke widths and corner styles look accidental. If you need a brand mark Lucide doesn't have, draw it on the same 24px grid with a 2px stroke.
Do.Icon and label reinforce each other.
Don’t.An unlabeled icon forces people to guess — and screen readers announce nothing.