Files
hermes-agent/apps/desktop/src/lib/icons.ts
T
Brooklyn Nicholson 272b007f8c feat(desktop): give hiding the tab strip a command, and a way back
The strip could only be hidden by an undiscoverable double-tap, and once hidden
the zone had no chrome left to click — no tab, no ✕, no menu holding "Show".
This puts it on the same footing as the status bar, whose hide has never
stranded anyone: ⌥⌘T, a ⌘K row, the shell context menu, and the zone menu, which
now prints the keystroke on the row that takes the strip away so the way back is
stated at the moment it matters. All four resolve their target zone the same way
the other tab verbs do (hovered, else focused, else the workspace) and describe
themselves from what is on screen rather than from a stored value, so "toggle"
always means the opposite of what the user is looking at.

Adds an app-wide default alongside it, in Appearance next to Session List
Density — auto, always, or never, matching VS Code's `workbench.editor.showTabs`
and Zed's `tab_bar.show` for people who want one answer everywhere instead of a
per-zone choice they repeat. A zone that has stated its own preference still
wins, and neither value can strand a pane.
2026-08-21 13:25:29 -05:00

278 lines
5.6 KiB
TypeScript

import {
IconActivity as Activity,
IconAlertCircle as AlertCircle,
IconAlertTriangle as AlertTriangle,
IconAppWindow as AppWindow,
IconArchive as Archive,
IconArchiveOff as ArchiveOff,
IconArrowUp as ArrowUp,
IconArrowUpRight as ArrowUpRight,
IconAt as AtSign,
IconWaveSine as AudioLines,
IconChartBar as BarChart3,
IconBell as Bell,
IconBookmark as Bookmark,
IconBookmarkFilled as BookmarkFilled,
IconBox as Box,
IconBrain as Brain,
IconBug as Bug,
IconCheck as Check,
IconCircleCheck as CheckCircle2,
IconCheck as CheckIcon,
IconChevronDown as ChevronDown,
IconChevronDown as ChevronDownIcon,
IconChevronLeft as ChevronLeft,
IconChevronLeft as ChevronLeftIcon,
IconChevronRight as ChevronRight,
IconChevronRight as ChevronRightIcon,
IconCircle as CircleIcon,
IconCircleLetterA as CircleLetterA,
IconClipboard as Clipboard,
IconClock as Clock,
IconCloud as Cloud,
IconCommand as Command,
IconCopy as Copy,
IconCopy as CopyIcon,
IconCornerDownLeft as CornerDownLeft,
IconCpu as Cpu,
IconCreditCard as CreditCard,
IconDownload as Download,
IconEar as Ear,
IconEarOff as EarOff,
IconEgg as Egg,
IconExternalLink as ExternalLink,
IconEye as Eye,
IconEyeOff as EyeOff,
IconPhoto as FileImage,
IconFileText as FileText,
IconFolderOpen as FolderOpen,
IconGitBranch as GitBranch,
IconGitBranch as GitBranchIcon,
IconGitFork as GitFork,
IconGitFork as GitForkIcon,
IconGlobe as Globe,
IconHash as Hash,
IconHelpCircle as HelpCircle,
IconPhoto as ImageIcon,
IconInfoCircle as Info,
IconKeyboard as Keyboard,
IconKey as KeyRound,
IconLayersIntersect2 as Layers3,
IconLayoutDashboard as LayoutDashboard,
IconLink as Link,
IconLink as Link2,
IconLink as LinkIcon,
IconLoader2 as Loader2,
IconLoader2 as Loader2Icon,
IconLock as Lock,
IconLogin as LogIn,
IconMail as Mail,
IconMaximize as Maximize,
IconMessageCircle as MessageCircle,
IconMessageCode as MessageCode,
IconMessageQuestion as MessageQuestion,
IconMessage2 as MessageSquareText,
IconMicrophone as Mic,
IconMicrophoneOff as MicOff,
IconDeviceDesktop as Monitor,
IconDeviceDesktopAnalytics as MonitorPlay,
IconMoon as Moon,
IconDots as MoreHorizontal,
IconDots as MoreHorizontalIcon,
IconDotsVertical as MoreVertical,
IconNetwork as Network,
IconNotebook as NotebookTabs,
IconPackage as Package,
IconPalette as Palette,
IconLayoutBottombar as PanelBottom,
IconLayoutSidebar as PanelLeftIcon,
IconLayoutNavbar as PanelTop,
IconPlayerPause as Pause,
IconPaw as PawPrint,
IconPencil as Pencil,
IconPencil as PencilIcon,
IconPencil as PencilLine,
IconPin as Pin,
IconPlayerPlay as Play,
IconPlus as Plus,
IconPower as Power,
IconRefresh as RefreshCw,
IconRefresh as RefreshCwIcon,
IconDeviceFloppy as Save,
IconSearch as Search,
IconSearch as SearchIcon,
IconSend as Send,
IconSettings as Settings,
IconSettings2 as Settings2,
IconAdjustmentsHorizontal as SlidersHorizontal,
IconMoodPlus as SmilePlusIcon,
IconSquare as Square,
IconChartDots3 as Starmap,
IconSteeringWheel as SteeringWheel,
IconPlayerStopFilled as StopFilled,
IconSun as Sun,
IconTerminal2 as Terminal,
IconTrash as Trash2,
IconUpload as Upload,
IconUsers as Users,
IconVolume2 as Volume2,
IconVolume2 as Volume2Icon,
IconVolumeOff as VolumeX,
IconVolumeOff as VolumeXIcon,
IconTool as Wrench,
IconX as X,
IconX as XIcon,
IconBolt as Zap,
IconBoltFilled as ZapFilled,
IconZoomIn as ZoomIn,
IconZoomOut as ZoomOut
} from '@tabler/icons-react'
export {
Activity,
AlertCircle,
AlertTriangle,
AppWindow,
Archive,
ArchiveOff,
ArrowUp,
ArrowUpRight,
AtSign,
AudioLines,
BarChart3,
Bell,
Bookmark,
BookmarkFilled,
Box,
Brain,
Bug,
Check,
CheckCircle2,
CheckIcon,
ChevronDown,
ChevronDownIcon,
ChevronLeft,
ChevronLeftIcon,
ChevronRight,
ChevronRightIcon,
CircleIcon,
CircleLetterA,
Clipboard,
Clock,
Cloud,
Command,
Copy,
CopyIcon,
CornerDownLeft,
Cpu,
CreditCard,
Download,
Ear,
EarOff,
Egg,
ExternalLink,
Eye,
EyeOff,
FileImage,
FileText,
FolderOpen,
GitBranch,
GitBranchIcon,
GitFork,
GitForkIcon,
Globe,
Hash,
HelpCircle,
ImageIcon,
Info,
Keyboard,
KeyRound,
Layers3,
LayoutDashboard,
Link,
Link2,
LinkIcon,
Loader2,
Loader2Icon,
Lock,
LogIn,
Mail,
Maximize,
MessageCircle,
MessageCode,
MessageQuestion,
MessageSquareText,
Mic,
MicOff,
Monitor,
MonitorPlay,
Moon,
MoreHorizontal,
MoreHorizontalIcon,
MoreVertical,
Network,
NotebookTabs,
Package,
Palette,
PanelBottom,
PanelLeftIcon,
PanelTop,
Pause,
PawPrint,
Pencil,
PencilIcon,
PencilLine,
Pin,
Play,
Plus,
Power,
RefreshCw,
RefreshCwIcon,
Save,
Search,
SearchIcon,
Send,
Settings,
Settings2,
SlidersHorizontal,
SmilePlusIcon,
Square,
Starmap,
SteeringWheel,
StopFilled,
Sun,
Terminal,
Trash2,
Upload,
Users,
Volume2,
Volume2Icon,
VolumeX,
VolumeXIcon,
Wrench,
X,
XIcon,
Zap,
ZapFilled,
ZoomIn,
ZoomOut
}
export type { Icon as IconComponent } from '@tabler/icons-react'
/**
* Named icon-size scale — the single source of truth for SVG icon dimensions,
* replacing ad-hoc `h-N w-N` / `size={N}`. Use `<Icon className={iconSize.sm} />`
* (Tailwind `size-*` sets w+h and beats the icon's default 24px); compose with
* `cn()` for colour/animation classes.
*/
export const iconSize = {
xs: 'size-3', // 12px
sm: 'size-3.5', // 14px
md: 'size-4', // 16px
lg: 'size-5', // 20px
xl: 'size-6' // 24px
} as const
export type IconSize = keyof typeof iconSize