Skip to content

Icons

All icons in @nomadahq/sm-ui are custom inline SVGs — 24×24 viewBox, stroke-based (Feather style). No external icon library.

Usage

jsx
import { IconUsers, IconDollar, IconGrid, ProductIcon } from '@nomadahq/sm-ui'

// Default 16×16
<IconUsers />

// Custom size
<IconDollar width={20} height={20} />

// Inherits text color via currentColor
<span style={{ color: 'var(--blue)' }}>
  <IconGrid />
</span>

Full Icon Catalog

ExportDescription
IconGrid4-square grid (dashboard)
IconCodeCode brackets < >
IconDocDocument
IconLockPadlock
IconTrendTrending-up chart line
IconUsersTwo people (contacts/clients)
IconUserSingle person
IconDollarDollar sign (finance)
IconTerminalTerminal prompt >_
IconGearSettings gear
IconSessionsSessions / activity
IconEyeEye (visibility)
IconLayersStacked layers
IconStarStar (rating, featured)
IconCheckCheckmark
IconRefreshCircular arrows (sync)
IconWarnWarning triangle
IconSparkSparkles (AI)
IconClickClick / pointer
IconPercentPercent sign
IconCloudCloud (connectors)
IconExternalExternal link arrow
IconFileFile attachment
IconMsgSpeech bubble
IconBillCredit card / billing
IconPortfolioBriefcase
IconExpandExpand arrows
IconWrenchWrench / tools
IconPlusPlus / add
IconXClose / remove
IconMailEnvelope
IconChevronChevron arrow

Product Logos

Full product logo SVGs for use as inline icons:

jsx
import { LogoSprintMode, LogoStudios, LogoMode, LogoHub, LogoSprintCapital, LogoPrivacyAI } from '@nomadahq/sm-ui'

<LogoStudios />

ProductIcon Helper

Renders the correct product logo by name, with optional size:

jsx
import { ProductIcon } from '@nomadahq/sm-ui'

<ProductIcon product="studios" size={24} />
<ProductIcon product="mode" size={32} />

Valid product names: sprint-mode, studios, mode, hub, sprint-capital, privacyai

Custom Icons

When adding a new icon, follow the Feather icon convention:

jsx
export const IconMyIcon = (p) => (
  <svg
    xmlns="http://www.w3.org/2000/svg"
    width={p.width || 16}
    height={p.height || 16}
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    strokeWidth={2}
    strokeLinecap="round"
    strokeLinejoin="round"
    {...p}
  >
    {/* path data */}
  </svg>
)

Add new icons to Icons.jsx in the sprint-mode-ui repo and re-export from index.js.

No external icon libraries

Do not import Lucide, Heroicons, Font Awesome, or any other icon library in SM products. Extend the existing Icons.jsx instead.

Sprint Mode LLC — Internal Platform Documentation