Overview
A’raf DS uses Lucide React as its icon system. All components that accept icon props expect aReactNode 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
Navigation & Layout
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-labelon 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-labelon 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-reactlibrary — import only what you need for tree-shaking