RoadieRoadie
  • Home
  • Brand
  • Foundations
  • Content
  • Tokens
  • Components
  • Charts
  • Widgets
  • Appearance
HomeBrandFoundations
Appearance

Components

  • Navigation

    • Breadcrumb
    • LinkBeta
    • NavigatorAlpha
    • Steps
    • Tabs
  • Layout

    • Accordion
    • CollapsibleBeta
    • PaneAlpha
    • ScrollArea
    • Separator
  • Actions

    • Button
    • IconButton
    • ToggleBeta
    • Toggle groupBeta
    • ToolbarBeta
  • Fields

    • EditorAlpha
    • Field
    • Fieldset
    • Input
    • Label
    • Number fieldBeta
    • OTP fieldBeta
    • Query fieldAlpha
    • Textarea
  • Choices

    • Autocomplete
    • CheckboxBeta
    • Combobox
    • Radio group
    • Select
    • SliderBeta
    • SwitchBeta
  • Date and time

    • CalendarBeta
    • CalendarTile
    • Countdown
    • Dashboard periodBeta
    • Date fieldBeta
    • Date pickerBeta
    • Date range pickerBeta
    • DateTime
    • Duration
    • Time fieldBeta
  • Collections

    • Card
    • Carousel
    • DataTableBeta
    • ListAlpha
    • Marquee
    • RecordGridAlpha
    • RecordTableAlpha
    • SortableAlpha
    • TableBeta
  • Overlays

    • Dialog
    • Drawer
    • MenuBeta
    • Popover
    • ToastBeta
    • Tooltip
  • Status

    • Badge
    • CalloutBeta
    • DeltaBeta
    • Empty state
    • MeterBeta
    • ProgressBeta
    • SkeletonBeta
    • SparklineBeta
    • StatTileBeta
  • Media & brand

    • AvatarBeta
    • Icon Tile
    • Image
    • Logo
    • PatternBeta
    • QR codeBeta
    • SpotIllustration
  • Text

    • Code
    • Highlight
    • KbdBeta
    • Mark
    • Prose

Icon Tile

Status
Stable
Added
Components 2.7.016 Jun 2026
Docs updated
19 Oct 2026

A tile that frames a single icon.

Import

import { IconTile } from '@oztix/roadie-components'

Examples

Default

Place a Phosphor icon as the only child. The tile sizes and centres it for you.

<IconTile intent='accent'>
<Ticket weight='bold' />
</IconTile>

Emphasis

The default emphasis is subtle. Use strong for a solid fill, or step down to subtler for the lightest tint.

<IconTile intent='accent' emphasis='strong'>
<Heart weight='bold' />
</IconTile>
<IconTile intent='accent' emphasis='normal'>
<Heart weight='bold' />
</IconTile>

Sizes

Sizes run xs through 3xl. Each maps to a Tailwind size-* box on the tile, with matching internal padding and icon size. The tile dimension is 2 × padding + icon. The tier names are variant keys, not Tailwind utilities (there is no size-3xl).

<IconTile intent='accent' size='xs'><Gear weight='bold' /></IconTile>
<IconTile intent='accent' size='sm'><Gear weight='bold' /></IconTile>
<IconTile intent='accent' size='md'><Gear weight='bold' /></IconTile>
<IconTile intent='accent' size='lg'><Gear weight='bold' /></IconTile>
<IconTile intent='accent' size='xl'><Gear weight='duotone' /></IconTile>
<IconTile intent='accent' size='2xl'><Gear weight='duotone' /></IconTile>

Shape

Tiles are square by default, with a corner radius that scales with the size so it stays in proportion. Set shape='circle' for a full-radius pill.

<IconTile intent='accent' shape='square' size='lg'>
<Gear weight='bold' />
</IconTile>
<IconTile intent='accent' shape='circle' size='lg'>
<Gear weight='bold' />
</IconTile>

Intents

Intent sets the colour palette. The tile inherits its surrounding intent context unless you set one directly.

<IconTile intent='neutral'><Star weight='bold' /></IconTile>
<IconTile intent='accent'><Star weight='bold' /></IconTile>
<IconTile intent='brand'><Star weight='bold' /></IconTile>
<IconTile intent='info'><Info weight='bold' /></IconTile>
<IconTile intent='success'><CheckCircle weight='bold' /></IconTile>
<IconTile intent='warning'><Warning weight='bold' /></IconTile>

Icon weight

Use weight='bold' up to 48px (the lg size), then switch to weight='duotone' above 48px. A bold outline can look hollow and under-filled on a large tile, while duotone's soft tinted fill gives bigger tiles more presence.

<IconTile intent='accent' emphasis='subtle' size='md'>
<Heart weight='bold' />
</IconTile>
<IconTile intent='accent' emphasis='subtle' size='lg'>
<Heart weight='bold' />
</IconTile>

Guidelines

Tile the item, not the action

Do

Frame an icon that stands for the thing it sits beside, like a list row, a settings row, a feature block or an EmptyState.

<Menu.Item
icon={
<IconTile>
<GearIcon weight='bold' />
</IconTile>
}

Don’t

Don't put a tile in a button, menu item, tab, badge or input, where the icon only labels the action. Use a bare bold icon there, at the size the control sets.

Frame a single icon

Do

Place one Phosphor icon as the only child.

Don’t

Don't cram multiple icons or text into a tile. It's a frame, not a layout container.

Bold up to 48px, duotone above

Do

Use weight='bold' up to 48px (the lg size); switch to weight='duotone' above it. Never go lighter than bold.

Don’t

A bold outline looks hollow and under-filled on a large tile. Duotone's tinted fill gives big tiles more presence.

Let intent flow from context

<div className='intent-accent'>
<IconTile>
<GearIcon weight='bold' />
</IconTile>
</div>

Do

Inherit intent from the surrounding context where you can.

<IconTile intent='accent'>…</IconTile>
<IconTile intent='accent'>…</IconTile>
<IconTile intent='accent'>…</IconTile>

Don’t

Don't hard-code the same intent on every tile when a parent already sets it.

Pair a meaningful tile with a label

Payment complete

Do

Add accompanying text or an aria-label when the icon carries meaning.

Don’t

A lone tile with no label leaves its meaning to guesswork for screen readers.

API reference

IconTile

intent"neutral" | "brand" | "brand-secondary" | "brand-blue" | "brand-orange" | "brand-purple" | "accent" | "danger" | "success" | "warning" | "info" | null
emphasis"strong" | "normal" | "subtle" | "subtler" | null
size"xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | null
shape"circle" | "square" | null
Previous page← AvatarNext pageImage →