Filled Icon

A Lucide icon centered inside a rounded (8px), tinted container. Used as a visual identifier for product areas and navigation destinations (particularly across Higher Ed products), and as the KPI icon chip composed by `MetricCard`.

Import

import { FilledIcon } from "@timelycare/helix-ui"
import { Home } from "lucide-react"

Props

PropTypeDefaultDescription
iconLucideIconA Lucide React icon component. Required unless the icon is passed as children
childrenReactNodeAlternative to icon — pass a rendered icon node; the container sizes the nested SVG
size"24" | "32" | "40" | "48" | "60""40"Container size in pixels
tone"info" | "neutral" | "success" | "warning" | "destructive""info"Container tone
classNamestringExtra classes applied to the container

Sizes

SizeContainerIconContainer classIcon class
"24"24px14pxsize-6[&_svg]:size-3.5
"32"32px20pxsize-8[&_svg]:size-5
"40"40px24pxsize-10[&_svg]:size-6
"48"48px32pxsize-12[&_svg]:size-8
"60"60px40pxsize-[60px][&_svg]:size-10

Default size is "40". All sizes use a uniform 8px corner radius (rounded-md). Padding between the container edge and the icon emerges from the size difference (~5–10px depending on size) and stays visually even via flex-centering.


Tones

The default info tone is the brand navy identifier (tc-navy-100, via the accent token). The status tones reuse the Badge outline hues — a light tinted fill with a solid icon color, no border: success/warning/destructive at the -100 stop; neutral uses bg-muted (a warm light-sand surface — = tc-light-sand-100 — that flips to gray in dark). This is the KPI-chip treatment MetricCard composes.

In dark mode the status tones flip to a deep -700 fill with a light -50 icon, mirroring the default's flip; info (accent) and neutral (muted) flip automatically via their semantic tokens.

ToneContainer (light)Icon (light)Container (dark)Icon (dark)
info (default)bg-accenttext-accent-foreground(accent flips)(accent flips)
neutralbg-mutedtext-muted-foreground(muted flips to gray)text-tc-gray-50
successbg-tc-sage-100text-tc-sage-600bg-tc-sage-700text-tc-sage-50
warningbg-tc-orange-100text-tc-orange-900bg-tc-orange-700text-tc-orange-50
destructivebg-tc-berry-100text-tc-berry-600bg-tc-berry-700text-tc-berry-50

Colors are fully theme-aware — no extra dark-mode classes needed.


Usage

// Default (40px)
<FilledIcon icon={Home} />

// Explicit sizes
<FilledIcon icon={Home} size="32" />
<FilledIcon icon={Home} size="48" />
<FilledIcon icon={Home} size="60" />

// In a nav item
<div className="flex items-center gap-2">
  <FilledIcon icon={CalendarDays} size="40" />
  <span>Schedule</span>
</div>

// Status tone (KPI chip)
<FilledIcon icon={Activity} size="32" tone="success" />

// Icon passed as children (for callers holding a rendered node)
<FilledIcon size="32" tone="info"><Activity /></FilledIcon>

Higher Ed Icon Mappings

These are the canonical icon assignments for each product area. Use size="40" for navigation and size="32" for dense lists.

Member

Nav ItemIcon
TalkNowMessageCircleHeart
MedicalNowStethoscope
Health CoachingHeartPlus
PsychiatryBrain
CounselingNotebookPen
MedicalBriefcaseMedical
Self CareHandHeart
Basic NeedsHeartHandshake
CommunityMessageSquareText
MessagesMail
Success CoachingTrophy
HomeHome
Provider CareShieldUser

Campus

Nav ItemIcon
HomeHome
MembersCircleUser
ReferralsClipboardPaste
MessagesMail
Client CardIdCard
Resource CardsLayoutList
ReportsChartPie
Manage AccountsUsers
AccountUserCog

Provider

Nav ItemIcon
HomeHome
ScheduleCalendarDays
QueueClock
MembersCircleUser
MessagesMail
Past VisitsClipboardList
ReportsChartPie
PoliciesFileText

Admin

Nav ItemIcon
DashboardGrid2x2
QueueClock
ScheduleCalendarDays
VisitsCircleUser
MembersCircleUser
MessagesMail
CustomersLandmark
ProvidersShieldUser
UsersUsers
CommunityMessageSquareText
Crisis NowTriangleAlert
CareHeartHandshake

K12 Admin

Nav ItemIcon
DashboardGrid2x2
ClientsUsers
Visit ManagementCalendar
Visit PoolsSquareGanttChart
UsersUser
ProvidersStethoscope

K12 School

Nav ItemIcon
HomeHome
StudentsUsers
InsightsBarChart2
User ManagementUserPlus
SchoolsSchool

K12 Parent

Nav ItemIcon
HomeHome
[Child Name]User
DocumentsFileText
HelpCircleHelp

K12 Student

Nav ItemIcon
HomeHome
Schedule a VisitCalendar
My VisitsCalendar
DocumentsFileText
HelpCircleHelp

TimelyPulse

Nav ItemIcon
DashboardLayoutDashboard
SignalsMessageCircleWarning
CampaignsMegaphone
SurveysClipboardList
StudentsGraduationCap
Knowledge BaseBookOpen

Design Decisions

  • "Filled" = filled container, not filled SVG. Icons remain Lucide stroke style. The filled appearance comes from the tinted container (bg-accent by default; a /10 tint for status tones).
  • Uniform 8px radius. All sizes use rounded-md (8px). Padding between the container edge and the icon emerges from the container/icon size difference (~5–10px), not a fixed value.
  • One primitive for two jobs. The same component serves nav/product identifiers (accent tone) and KPI status chips (status tones), so MetricCard composes it instead of hand-rolling a bubble.
  • shrink-0 on both container and icon. Prevents the component from collapsing in flex layouts.

Added: April 2026 · Source: Helix Design Library (Figma node 19392:971)