refactor: restructure landing page with component extraction and fix Server Component hooks

- Extract reusable components: EnterOrSignInButton, paragraphFormatFactory, getProviders
- Fix React hooks usage: remove useMemo from async Server Components
- Update landing page content for Croatian and English translations
- Reorganize terms/policy pages into locale-aware directories
- Update PageFooter to use locale-aware links and make component async

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Knee Cola
2025-12-24 21:26:09 +01:00
parent 5da00abd4d
commit 68b2591f40
9 changed files with 126 additions and 128 deletions

28
app/lib/getProviders.ts Normal file
View File

@@ -0,0 +1,28 @@
import { authConfig } from "./auth";
export type AuthProvider = {
id: string;
name: string;
type: string;
style: {
logo: string;
bg: string;
text: string;
};
};
export function getAuthProviders(): AuthProvider[] {
const providerKeys: (keyof AuthProvider)[] = ["id", "name", "type", "style"];
return authConfig.providers.map((provider) =>
getKeyValuesFromObject<AuthProvider>(provider, providerKeys)
);
}
export function getKeyValuesFromObject<T>(obj: any, keys: (keyof T)[]): T {
return keys.reduce((acc, key) => {
if (obj[key]) {
acc[key] = obj[key];
}
return acc;
}, {} as T);
}