Iconography
Icon standards for Space UI using Tabler Icons for components and Lucide Icons for primitives.
Overview
Space UI relies on clean, static vector iconography designed for clarity, visual balance, and performance. We adopt a dual-library approach where each icon set serves a distinct structural role:
Tabler Icons
Primary icon language for components, showcases, and blocks. Softened terminals and balanced stroke weights harmonize with squircle geometry.
Lucide Icons
Dedicated to low-level primitives (Accordion, Select, Dialog, Breadcrumb) to provide lightweight, standard UI state indicators.
Dual Iconography Comparison
Explore side-by-side examples of identical icon concepts implemented with Tabler Icons versus Lucide Icons to understand the design decisions and aesthetic differences:
| Icon Concept | Tabler Icons (Components & Blocks) | Lucide Icons (Primitives) | Usage Context |
|---|---|---|---|
| Settings | IconSettings | Settings | Administration, user preferences, options |
| Calendar | IconCalendar | Calendar | Date pickers, event scheduling, timelines |
| Notifications | IconBell | Bell | Alert center, bell counters, status tags |
| Search | IconSearch | Search | Command menu, search inputs, filters |
| User / Profile | IconUser | User | Account dropdown, avatars, member lists |
| Folder | IconFolder | Folder | File tree, directory explorers, project items |
| IconMail | Contact forms, inbox rows, email inputs | ||
| Sparkles / AI | IconSparkle | Sparkles | AI assistants, prompt generators, highlights |
| Shield / Security | IconShield | Shield | Security banners, permissions, auth status |
| Layout Grid | IconLayoutGrid | LayoutGrid | Grid views, dashboard switchers, catalogs |
| Sliders / Filters | IconAdjustmentsHorizontal | SlidersHorizontal | Filter controls, configuration panels |
| Trash / Delete | IconTrash | Trash | Destructive actions, item removal |
Installation
Install both libraries to support primitives and compound components in your application:
Tabler Icons (Components & Blocks)
pnpm add @tabler/icons-reactLucide Icons (Primitives)
pnpm add lucide-reactUsage Guidelines
1. Tabler in Components & Blocks
When building custom UI sections, feature cards, dashboards, or buttons, import icons from @tabler/icons-react:
import { IconRocket, IconBrandGithub, IconArrowRight } from '@tabler/icons-react'
import { Button } from '@/components/ui/button'
export function HeroActions() {
return (
<div className="flex items-center gap-3">
<Button>
<IconRocket className="size-4" />
<span>Get Started</span>
<IconArrowRight className="size-4" />
</Button>
<Button variant="outline">
<IconBrandGithub className="size-4" />
<span>GitHub</span>
</Button>
</div>
)
}2. Lucide in Headless Primitives
Primitives use lucide-react for standard UI indicators and state controls:
import { ChevronDown } from 'lucide-react'
import { AccordionPrimitive } from '@/components/ui/accordion'
export function AccordionTrigger({ children, ...props }: AccordionPrimitive.Trigger.Props) {
return (
<AccordionPrimitive.Trigger {...props}>
{children}
<ChevronDown className="size-4 shrink-0 transition-transform duration-200" />
</AccordionPrimitive.Trigger>
)
}Icon Sizing Standards
To maintain consistent vertical rhythm across your application, adhere to the standard Space UI icon scale:
| Context | Tailwind Class | Pixel Size | Stroke Width |
|---|---|---|---|
| Badges & Micro tags | size-3 or size-3.5 | 12px – 14px | 1.5 – 1.75 |
| Buttons & Form Controls | size-4 | 16px | 1.75 – 2.0 |
| Section & Card Headers | size-4.5 or size-5 | 18px – 20px | 1.5 – 2.0 |
| Empty States & Feature Tiles | size-8 or size-10 | 32px – 40px | 1.25 – 1.5 |
Optical Alignment
When pairing icons with text inside buttons or badges:
- Always apply
shrink-0to prevent icon distortion inside flex containers. - Use
pointer-events-noneon decorative icons to ensure click events pass cleanly to the parent trigger. - Keep icon colors inherited or muted with
text-muted-foregroundto preserve high visual hierarchy on the label text.