diff --git a/packages/frontend/src/components/app-sidebar.tsx b/packages/frontend/src/components/app-sidebar.tsx index a6605b300..6700c53ab 100644 --- a/packages/frontend/src/components/app-sidebar.tsx +++ b/packages/frontend/src/components/app-sidebar.tsx @@ -6,6 +6,7 @@ import { useState, useRef, useEffect } from 'react'; import { useAuth } from '@/lib/auth-context'; import { LogoIcon } from '@/components/logo-icon'; import { cn } from '@/lib/utils'; +import { GithubStarButton } from '@/components/github-star-button'; /* ── Inline icons (match the redesign prototype) ── */ function I({ d, children, ...p }: { d?: string; children?: React.ReactNode } & React.SVGProps) { @@ -145,6 +146,8 @@ export function AppSidebar({ mobileOpen, onClose }: { mobileOpen: boolean; onClo ))} + + {/* Footer: Settings + workspace switcher */}
{wsMenu && ( diff --git a/packages/frontend/src/components/github-star-button.tsx b/packages/frontend/src/components/github-star-button.tsx new file mode 100644 index 000000000..5c098cf8c --- /dev/null +++ b/packages/frontend/src/components/github-star-button.tsx @@ -0,0 +1,78 @@ +'use client'; + +import { useState, useEffect } from 'react'; +import { useEdition } from '@/lib/use-edition'; + +const STORAGE_KEY = 'amcp:hide-github-star'; + +export function GithubStarButton() { + const { edition } = useEdition(); + const [dismissed, setDismissed] = useState(false); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + try { + if (localStorage.getItem(STORAGE_KEY) === 'true') { + setDismissed(true); + } + } catch {} + }, []); + + if (!mounted || !edition || dismissed) return null; + + const handleDismiss = (e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + setDismissed(true); + try { + localStorage.setItem(STORAGE_KEY, 'true'); + } catch {} + }; + + return ( +
+ + + + + Star on GitHub + + +
+ ); +}