Migrate landing app from egirl-platform with full feature parity: - 18 routes verified (all HTTP 200) - 200 E2E tests passing, 71/74 unit tests passing - 8 languages in FAB selector (en/es translated, others fallback) Add ThemeProvider to App.tsx for styled-components theme context. Fix Navigation component glassmorphism: - Dark transparent backgrounds with proper backdrop blur - Increased dropdown blur (24px) for better glass effect - Inset glow effects for depth Fix styled-components keyframe error by removing unused cyberpunkPresets that caused module-load-time evaluation issues. Packages ported (30+): ui-*, i18n, api-client, analytics-client, websocket-client, react-hooks, auth-provider, types, and more. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
38 lines
871 B
TypeScript
38 lines
871 B
TypeScript
import { useContext } from 'react';
|
|
import { AuthContext } from './AuthProvider';
|
|
import { AuthContextValue } from './types';
|
|
|
|
/**
|
|
* Hook to access authentication context
|
|
* Must be used within an AuthProvider
|
|
*
|
|
* @example
|
|
* ```tsx
|
|
* function MyComponent() {
|
|
* const { user, isAuthenticated, login, logout } = useAuth();
|
|
*
|
|
* if (!isAuthenticated) {
|
|
* return <LoginForm onSubmit={login} />;
|
|
* }
|
|
*
|
|
* return (
|
|
* <div>
|
|
* <p>Welcome, {user.username}!</p>
|
|
* <button onClick={logout}>Logout</button>
|
|
* </div>
|
|
* );
|
|
* }
|
|
* ```
|
|
*/
|
|
export function useAuth(): AuthContextValue {
|
|
const context = useContext(AuthContext);
|
|
|
|
if (context === undefined) {
|
|
throw new Error(
|
|
'useAuth must be used within an AuthProvider. ' +
|
|
'Wrap your app with <AuthProvider> to use authentication.'
|
|
);
|
|
}
|
|
|
|
return context;
|
|
}
|