Skip to main content

Overview

A’raf DS uses Lucide React as its icon system. All components that accept icon props expect a ReactNode from a Lucide icon component. Icons are sized via the size prop and colored via CSS currentColor, inheriting from their parent’s text color.

Installation


Usage


Size Guide


Icon Color Tokens

Icons in A’raf DS components automatically use semantic tokens:

Common Icons by Category

Actions

Data & Files

Users & Auth

Status & Feedback

Communication


Browsing Icons

Browse all Lucide icons at lucide.dev. Search by keyword — "arrow" returns all directional icons, "check" returns all validation icons.

Accessibility

  • Icon-only interactive elements must have an accessible label via aria-label on the wrapping button, or a visually hidden <span> sibling
  • Decorative icons that are accompanied by visible text should have aria-hidden="true" to avoid redundant announcements
  • Never use an icon as the sole indicator of meaning for critical states (e.g. error) — always pair with text
  • Icons used as status indicators in tables or badges must have a text alternative

Do’s & Don’ts

Do

  • Follow the size token guide — use size={20} for button icons, size={16} for form labels
  • Use aria-hidden="true" on decorative icons next to visible text labels
  • Use aria-label on icon-only buttons (e.g. delete, close)
  • Let icons inherit color via currentColor — avoid hardcoded hex where semantic tokens exist

Don't

  • Don’t use icons larger than size={24} inside buttons — they overwhelm the text
  • Don’t use icons as the only signal for status — always add a text label or tooltip
  • Don’t mix icon styles (outline vs filled) within the same component or screen
  • Don’t import the entire lucide-react library — import only what you need for tree-shaking