Icons & Logos
SVG icons for social platforms, services, and brand logos. These are optimized for consistent sizing and styling.
Logos
ElctoLogo
The compact elcapitano logo icon, suitable for small spaces like buttons or headers.
import { ElctoLogo } from "@elcto/ui/components";
<ElctoLogo className="w-8 h-8" />
<ElctoLogo className="w-8 h-8 text-brand" />
ElcapitanoLogo
The full elcapitano wordmark logo, suitable for headers and standalone branding.
import { ElcapitanoLogo } from "@elcto/ui/components";
<ElcapitanoLogo className="w-40 h-auto" />
<ElcapitanoLogo className="w-40 h-auto text-primary" />
Default size: w-40 h-auto (160px wide, auto height)
Platform Icons
Usage
import {
TwitchIcon,
DiscordIcon,
YouTubeIcon,
KickIcon,
SteamIcon,
TrovoIcon,
GitHubIcon,
TwitterIcon,
} from "@elcto/ui/components";
<TwitchIcon className="w-5 h-5" />
<DiscordIcon className="w-5 h-5 text-[var(--discord)]" />
Available Icons
TwitchIcon
import { TwitchIcon } from "@elcto/ui/components";
<TwitchIcon className="w-5 h-5" />
<TwitchIcon className="w-5 h-5 text-[var(--twitch)]" />
Platform color: --twitch (#a970ff)
DiscordIcon
import { DiscordIcon } from "@elcto/ui/components";
<DiscordIcon className="w-5 h-5" />
<DiscordIcon className="w-5 h-5 text-[var(--discord)]" />
Platform color: --discord (#5865f2)
YouTubeIcon
import { YouTubeIcon } from "@elcto/ui/components";
<YouTubeIcon className="w-5 h-5" />
<YouTubeIcon className="w-5 h-5 text-[var(--youtube)]" />
Platform color: --youtube (#ff0000)
KickIcon
import { KickIcon } from "@elcto/ui/components";
<KickIcon className="w-5 h-5" />
<KickIcon className="w-5 h-5 text-[var(--kick)]" />
Platform color: --kick (#53fc18)
SteamIcon
import { SteamIcon } from "@elcto/ui/components";
<SteamIcon className="w-5 h-5" />
<SteamIcon className="w-5 h-5 text-[var(--steam)]" />
Platform color: --steam (#171a21)
TrovoIcon
import { TrovoIcon } from "@elcto/ui/components";
<TrovoIcon className="w-5 h-5" />
<TrovoIcon className="w-5 h-5 text-[var(--trovo)]" />
Platform color: --trovo (#19d66b)
GitHubIcon
import { GitHubIcon } from "@elcto/ui/components";
<GitHubIcon className="w-5 h-5" />
<GitHubIcon className="w-5 h-5 text-[var(--github)]" />
Platform color: --github (#333333)
TwitterIcon
import { TwitterIcon } from "@elcto/ui/components";
<TwitterIcon className="w-5 h-5" />
<TwitterIcon className="w-5 h-5 text-[var(--twitter)]" />
Platform color: --twitter (#1da1f2)
Props
All icons accept the same props:
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | CSS classes (use for sizing) |
Sizing
Icons use currentColor for fill, so they inherit the text color. Use Tailwind classes for sizing:
// Small (16px)
<TwitchIcon className="w-4 h-4" />
// Medium (20px)
<TwitchIcon className="w-5 h-5" />
// Large (24px)
<TwitchIcon className="w-6 h-6" />
// Extra large (32px)
<TwitchIcon className="w-8 h-8" />
With Platform Colors
Use CSS variables for platform-specific colors:
<div className="flex gap-4">
<TwitchIcon className="w-5 h-5 text-[var(--twitch)]" />
<DiscordIcon className="w-5 h-5 text-[var(--discord)]" />
<YouTubeIcon className="w-5 h-5 text-[var(--youtube)]" />
<KickIcon className="w-5 h-5 text-[var(--kick)]" />
</div>
Social Login Buttons
Example of using icons in social login buttons:
import { Button } from "@elcto/ui/components";
import { TwitchIcon, DiscordIcon } from "@elcto/ui/components";
<Button
variant="secondary"
leftIcon={<TwitchIcon className="w-4 h-4" />}
className="btn-twitch"
>
Continue with Twitch
</Button>
<Button
variant="secondary"
leftIcon={<DiscordIcon className="w-4 h-4" />}
className="btn-discord"
>
Continue with Discord
</Button>
Audit Event Icons
The AuditIcon component renders the appropriate icon for audit event types. It's used in activity logs and audit pages across all apps.
AuditIcon Component
import { AuditIcon } from "@elcto/ui";
// Basic usage - renders icon based on event type
<AuditIcon eventType="login" className="w-4 h-4" />
<AuditIcon eventType="2fa_enabled" className="w-5 h-5" />
<AuditIcon eventType="password_changed" />
Helper Functions
import {
getAuditIconComponent,
renderAuditIcon,
renderIconByName,
AuditIconElements,
} from "@elcto/ui";
// Get the icon component
const Icon = getAuditIconComponent("login");
<Icon className="w-4 h-4" />
// Render icon directly
{renderAuditIcon("login", "w-4 h-4")}
// Render by icon name
{renderIconByName("Shield", "w-4 h-4")}
// Pre-built size variants
{AuditIconElements.sm("login")} // w-3 h-3
{AuditIconElements.md("login")} // w-4 h-4
{AuditIconElements.lg("login")} // w-5 h-5
Event Type to Icon Mapping
| Event Types | Icon | Description |
|---|---|---|
login, login_failed | LogIn | Sign-in events |
logout | LogOut | Sign-out events |
2fa_* | Shield | Two-factor auth events |
password_* | Key | Password events |
session_* | Unlock | Session events |
user_* | User | User account events |
account_linked, account_unlinked | Link | Account linking |
data_exported | Download | Data export |
consent_* | Lock | OAuth consent |
email_* | Email events | |
settings_updated | Settings | Settings changes |
api_key_*, activity_reported | AlertTriangle | Security alerts |
bot_*, discord_* | Bot | Bot events |
| default | History | Fallback icon |
Usage in Activity Pages
import { AuditIcon } from "@elcto/ui";
import { getAuditEventLabel } from "@elcto/api";
// In an audit event list
{events.map((event) => (
<div key={event.id} className="flex items-center gap-3">
<div className={cn(
"w-8 h-8 rounded-lg flex items-center justify-center",
event.status === "failure"
? "bg-[var(--error-bg)] text-[var(--error)]"
: "bg-[var(--bg-3)] text-secondary"
)}>
<AuditIcon eventType={event.eventType} />
</div>
<span>{getAuditEventLabel(event.eventType)}</span>
</div>
))}
Other Icons
For general-purpose icons, use Lucide React:
import { Settings, User, LogOut, Plus } from "lucide-react";
<Settings className="w-5 h-5" />
<User className="w-5 h-5" />
Lucide React is already included as a dependency of @elcto/ui.