import { motion } from 'framer-motion'; import * as Tooltip from '@radix-ui/react-tooltip'; import { classNames } from '~/utils/classNames'; import type { TabVisibilityConfig } from '~/components/settings/settings.types'; import { TAB_LABELS } from '~/components/settings/settings.types'; const TAB_ICONS = { profile: 'i-ph:user', settings: 'i-ph:gear', notifications: 'i-ph:bell', features: 'i-ph:star', data: 'i-ph:database', providers: 'i-ph:plug', connection: 'i-ph:wifi-high', debug: 'i-ph:bug', 'event-logs': 'i-ph:list-bullets', update: 'i-ph:arrow-clockwise', 'task-manager': 'i-ph:activity', 'cloud-providers': 'i-ph:cloud', 'local-providers': 'i-ph:desktop', }; interface TabTileProps { tab: TabVisibilityConfig; onClick: () => void; isActive?: boolean; hasUpdate?: boolean; statusMessage?: string; description?: string; isLoading?: boolean; } export const TabTile = ({ tab, onClick, isActive = false, hasUpdate = false, statusMessage, description, isLoading = false, }: TabTileProps) => { return ( {/* Loading Overlay */} {isLoading && ( )} {/* Status Indicator */} {hasUpdate && ( )} {/* Background glow effect */}
{/* Icon */}
{/* Label and Description */}
{TAB_LABELS[tab.id]}
{description && (
{description}
)}
{/* Bottom indicator line */}
{statusMessage || TAB_LABELS[tab.id]} ); };