Icon

Renders SVG icons using IconData structs.

Sizes

Icons come in five sizes.

Extra Small (12px)

Small (16px)

Medium (20px)

Large (24px)

Extra Large (32px)

Lucide Icons

Various Lucide icons rendered with the Icon component.

User

Mail

Settings

Search

Plus

X

Check

ChevronDown

ChevronRight

Loader

Custom Colors

Apply color classes to icons using the class prop.

Success

Error

Primary

Muted

Open Markdown
FreeIcon

Typed icon rendering.

Install with the Proa CLI
proa ui add icon

Installs the reviewed component source, dependencies, shared support files, and required legal notices.

CLI and registry setup
icon.rs
// SPDX-FileCopyrightText: 2026 Proa Labs, Inc.
// SPDX-License-Identifier: (MIT OR Apache-2.0) AND (ISC AND MIT)

//! Icon component implementation
#![allow(unused_must_use)]

use proa_core::{ClassList, UnsafeRaw, WebContext, WebRenderSync, WriteBuf};
use proa_macros::html_sync;
/// Trait for types that can provide SVG icon data.
///
/// This trait is implemented for `IconData` and can be implemented for
/// `icondata_core::IconData` to allow direct use of icons from the icondata ecosystem.
///
/// # Example implementing for icondata
///
/// ```ignore
/// use icondata_core::IconData as ExtIconData;
/// use proa_ui::IconDataRef;
///
/// impl IconDataRef for ExtIconData {
///     fn view_box(&self) -> Option<&'static str> { self.view_box }
///     fn fill(&self) -> Option<&'static str> { self.fill }

Search

Type at least 2 characters

Customize

Make it yours

Palette

Radius

Overview
Components
Settings

Build your own

Themed Proa UI surface

Preview
Components52
RecipesTyped
customer-portal