Skip to main content

Icons & Logos

SVG icons for social platforms, services, and brand logos. These are optimized for consistent sizing and styling.

Logos

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" />

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:

PropTypeDefaultDescription
classNamestring'w-5 h-5'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

The mapping is driven by AuditEventIcons / getAuditEventIconName from @elcto/api (shared/api/src/types/audit.ts).

Event TypesIconDescription
login, login_failedLogInSign-in events
logoutLogOutSign-out events
2fa_enabled, 2fa_verified, 2fa_backup_codes_regeneratedShieldTwo-factor auth events
2fa_failedAlertTriangleFailed 2FA
2fa_disabledUnlock2FA disabled
password_changed, password_reset_requestedLockPassword events
session_created, session_revoked, all_sessions_revokedKeySession events
user_created, user_updated, user_deleted, deletion_scheduled, deletion_cancelledUserUser account events
user_banned, user_unbanned, role_*, permission_changedShieldAdmin/role events
consent_granted, consent_revoked, token_*, client_*, platform_setting_updated, device_*SettingsOAuth/settings/device events
account_linked, account_unlinked, integration_*LinkAccount linking & integrations
data_exported, file_downloadedDownloadData/file export
email_change_requestedMailEmail events
activity_reported, report_updatedFlagReports
api_key_created, api_key_revoked, api_key_regenerated, permission_created/updated/deletedKeyAPI key & permission events
bot_command_executedBotBot events
geofence_*, location_*MapPinGeofence & location events
trip_*CompassTrip events
defaultHistoryFallback 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.