SYMBOL INDEX (128 symbols across 39 files) FILE: website/client/src/App.tsx function Router (line 10) | function Router() { function App (line 19) | function App() { FILE: website/client/src/components/advanced-filters.tsx type AdvancedFiltersProps (line 11) | interface AdvancedFiltersProps { function AdvancedFilters (line 16) | function AdvancedFilters({ providers, onFiltersChange }: AdvancedFilters... FILE: website/client/src/components/contribute-section.tsx function ContributeSection (line 36) | function ContributeSection() { FILE: website/client/src/components/footer.tsx function Footer (line 4) | function Footer() { FILE: website/client/src/components/header.tsx function Header (line 7) | function Header() { FILE: website/client/src/components/hero-section.tsx function HeroSection (line 5) | function HeroSection() { FILE: website/client/src/components/language-switcher.tsx function LanguageSwitcher (line 13) | function LanguageSwitcher() { FILE: website/client/src/components/provider-comparison.tsx function ProviderComparison (line 12) | function ProviderComparison() { FILE: website/client/src/components/provider-stats.tsx function ProviderStats (line 9) | function ProviderStats() { FILE: website/client/src/components/providers-table.tsx function ProvidersTable (line 28) | function ProvidersTable() { FILE: website/client/src/components/recommended-apps.tsx function RecommendedApps (line 28) | function RecommendedApps() { FILE: website/client/src/components/tags-legend.tsx function TagsLegend (line 18) | function TagsLegend() { FILE: website/client/src/components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: website/client/src/components/ui/button.tsx type ButtonProps (line 36) | interface ButtonProps FILE: website/client/src/components/ui/calendar.tsx type CalendarProps (line 8) | type CalendarProps = React.ComponentProps function Calendar (line 10) | function Calendar({ FILE: website/client/src/components/ui/carousel.tsx type CarouselApi (line 10) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 11) | type UseCarouselParameters = Parameters type CarouselOptions (line 12) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 13) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 15) | type CarouselProps = { type CarouselContextProps (line 22) | type CarouselContextProps = { function useCarousel (line 33) | function useCarousel() { FILE: website/client/src/components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: "", dark: ".dark" } as const type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function getPayloadConfigFromPayload (line 320) | function getPayloadConfigFromPayload( FILE: website/client/src/components/ui/form.tsx type FormFieldContextValue (line 20) | type FormFieldContextValue< type FormItemContextValue (line 67) | type FormItemContextValue = { FILE: website/client/src/components/ui/menubar.tsx function MenubarMenu (line 9) | function MenubarMenu({ function MenubarGroup (line 15) | function MenubarGroup({ function MenubarPortal (line 21) | function MenubarPortal({ function MenubarRadioGroup (line 27) | function MenubarRadioGroup({ function MenubarSub (line 33) | function MenubarSub({ FILE: website/client/src/components/ui/pagination.tsx type PaginationLinkProps (line 37) | type PaginationLinkProps = { FILE: website/client/src/components/ui/sheet.tsx type SheetContentProps (line 52) | interface SheetContentProps FILE: website/client/src/components/ui/sidebar.tsx constant SIDEBAR_COOKIE_NAME (line 26) | const SIDEBAR_COOKIE_NAME = "sidebar_state" constant SIDEBAR_COOKIE_MAX_AGE (line 27) | const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 constant SIDEBAR_WIDTH (line 28) | const SIDEBAR_WIDTH = "16rem" constant SIDEBAR_WIDTH_MOBILE (line 29) | const SIDEBAR_WIDTH_MOBILE = "18rem" constant SIDEBAR_WIDTH_ICON (line 30) | const SIDEBAR_WIDTH_ICON = "3rem" constant SIDEBAR_KEYBOARD_SHORTCUT (line 31) | const SIDEBAR_KEYBOARD_SHORTCUT = "b" type SidebarContextProps (line 33) | type SidebarContextProps = { function useSidebar (line 45) | function useSidebar() { FILE: website/client/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ FILE: website/client/src/components/ui/toast.tsx type ToastProps (line 113) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 115) | type ToastActionElement = React.ReactElement FILE: website/client/src/components/ui/toaster.tsx function Toaster (line 11) | function Toaster() { FILE: website/client/src/components/usage-guide.tsx function UsageGuide (line 35) | function UsageGuide() { FILE: website/client/src/hooks/use-language.tsx type LanguageContextType (line 4) | type LanguageContextType = { function LanguageProvider (line 12) | function LanguageProvider({ children }: { children: ReactNode }) { function useLanguage (line 46) | function useLanguage() { FILE: website/client/src/hooks/use-mobile.tsx constant MOBILE_BREAKPOINT (line 3) | const MOBILE_BREAKPOINT = 768 function useIsMobile (line 5) | function useIsMobile() { FILE: website/client/src/hooks/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 11) | type ToasterToast = ToastProps & { function genId (line 27) | function genId() { type ActionType (line 32) | type ActionType = typeof actionTypes type Action (line 34) | type Action = type State (line 52) | interface State { function dispatch (line 133) | function dispatch(action: Action) { type Toast (line 140) | type Toast = Omit function toast (line 142) | function toast({ ...props }: Toast) { function useToast (line 171) | function useToast() { FILE: website/client/src/lib/api-providers-data.ts constant TAG_DESCRIPTIONS (line 2) | const TAG_DESCRIPTIONS = { constant TAG_COLORS (line 18) | const TAG_COLORS = { constant FILTER_OPTIONS (line 34) | const FILTER_OPTIONS = [ constant APP_ICON_MAP (line 42) | const APP_ICON_MAP = { constant APP_TAG_COLORS (line 51) | const APP_TAG_COLORS = { function filterProvidersByTag (line 64) | function filterProvidersByTag(providers: any[], tag: string): any[] { function searchProviders (line 69) | function searchProviders(providers: any[], searchTerm: string): any[] { function getTagEmoji (line 81) | function getTagEmoji(filterKey: string): string { function getTagColor (line 86) | function getTagColor(tag: string): string { function getAppTagColor (line 90) | function getAppTagColor(tag: string): string { function formatUrl (line 95) | function formatUrl(url: string): string { function isValidUrl (line 99) | function isValidUrl(url: string): boolean { function saveFavorites (line 109) | function saveFavorites(favorites: Set): void { function loadFavorites (line 113) | function loadFavorites(): Set { function saveFilterPreference (line 122) | function saveFilterPreference(filter: string): void { function loadFilterPreference (line 126) | function loadFilterPreference(): string { function trackProviderClick (line 131) | function trackProviderClick(providerId: number, providerName: string): v... function trackSearch (line 136) | function trackSearch(searchTerm: string): void { function trackFilterUsage (line 141) | function trackFilterUsage(filter: string): void { function copyToClipboard (line 147) | async function copyToClipboard(text: string): Promise { function scrollToSection (line 173) | function scrollToSection(sectionId: string): void { function debounce (line 186) | function debounce any>( function sortProviders (line 198) | function sortProviders(providers: any[], sortBy: 'name' | 'recommended' ... constant MOBILE_BREAKPOINT (line 216) | const MOBILE_BREAKPOINT = 1024; constant SEARCH_DEBOUNCE_MS (line 217) | const SEARCH_DEBOUNCE_MS = 300; constant TOAST_DURATION (line 218) | const TOAST_DURATION = 3000; constant ANIMATION_DURATION (line 219) | const ANIMATION_DURATION = 200; constant LANGUAGE_FLAGS (line 222) | const LANGUAGE_FLAGS = { constant LANGUAGE_NAMES (line 229) | const LANGUAGE_NAMES = { FILE: website/client/src/lib/queryClient.ts function throwIfResNotOk (line 3) | async function throwIfResNotOk(res: Response) { function apiRequest (line 10) | async function apiRequest( type UnauthorizedBehavior (line 26) | type UnauthorizedBehavior = "returnNull" | "throw"; FILE: website/client/src/lib/translations.ts type Language (line 316) | type Language = keyof typeof translations; type TranslationKey (line 317) | type TranslationKey = keyof typeof translations.zh; FILE: website/client/src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { FILE: website/client/src/pages/home.tsx function Home (line 12) | function Home() { FILE: website/client/src/pages/not-found.tsx function NotFound (line 4) | function NotFound() { FILE: website/server/routes.ts function registerRoutes (line 5) | async function registerRoutes(app: Express): Promise { FILE: website/server/storage.ts type IStorage (line 3) | interface IStorage { class MemStorage (line 17) | class MemStorage implements IStorage { method constructor (line 23) | constructor() { method initializeData (line 33) | private initializeData() { method getApiProviders (line 508) | async getApiProviders(): Promise { method getApiProvider (line 512) | async getApiProvider(id: number): Promise { method createApiProvider (line 516) | async createApiProvider(insertProvider: InsertApiProvider): Promise { method getRecommendedApps (line 536) | async getRecommendedApps(): Promise { method getRecommendedApp (line 540) | async getRecommendedApp(id: number): Promise { FILE: website/server/vite.ts function log (line 11) | function log(message: string, source = "express") { function setupVite (line 22) | async function setupVite(app: Express, server: Server) { function serveStatic (line 70) | function serveStatic(app: Express) { FILE: website/shared/schema.ts type ApiProvider (line 37) | type ApiProvider = typeof apiProviders.$inferSelect; type InsertApiProvider (line 38) | type InsertApiProvider = z.infer; type RecommendedApp (line 39) | type RecommendedApp = typeof recommendedApps.$inferSelect; type InsertRecommendedApp (line 40) | type InsertRecommendedApp = z.infer;