feat: add user authentication UI to header component
Add login and register dialogs, user dropdown menu with profile link and logout option, and integrate with session management hook. Prevent hydration mismatches by conditionally rendering auth elements after mount. Update package-lock.json with new @esbuild dependencies for build tooling.
This commit is contained in:
1 parent
e641138887
commit
55eebde0ba
55 files changed
+7353
-7
No files matched your search
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* Lista de países com códigos de área para seleção de telefone
|
||||
*/
|
||||
|
||||
export interface Country {
|
||||
code: string; // Código ISO 3166-1 alpha-2
|
||||
name: string; // Nome do país
|
||||
dialCode: string; // Código de discagem internacional
|
||||
flag: string; // Emoji da bandeira
|
||||
}
|
||||
|
||||
/**
|
||||
* Lista de países mais comuns com seus códigos de discagem
|
||||
* Ordenado por popularidade/uso
|
||||
*/
|
||||
export const COUNTRIES: Country[] = [
|
||||
{ code: "BR", name: "Brasil", dialCode: "+55", flag: "🇧🇷" },
|
||||
{ code: "US", name: "Estados Unidos", dialCode: "+1", flag: "🇺🇸" },
|
||||
{ code: "CA", name: "Canadá", dialCode: "+1", flag: "🇨🇦" },
|
||||
{ code: "MX", name: "México", dialCode: "+52", flag: "🇲🇽" },
|
||||
{ code: "AR", name: "Argentina", dialCode: "+54", flag: "🇦🇷" },
|
||||
{ code: "CL", name: "Chile", dialCode: "+56", flag: "🇨🇱" },
|
||||
{ code: "CO", name: "Colômbia", dialCode: "+57", flag: "🇨🇴" },
|
||||
{ code: "PE", name: "Peru", dialCode: "+51", flag: "🇵🇪" },
|
||||
{ code: "PT", name: "Portugal", dialCode: "+351", flag: "🇵🇹" },
|
||||
{ code: "ES", name: "Espanha", dialCode: "+34", flag: "🇪🇸" },
|
||||
{ code: "GB", name: "Reino Unido", dialCode: "+44", flag: "🇬🇧" },
|
||||
{ code: "FR", name: "França", dialCode: "+33", flag: "🇫🇷" },
|
||||
{ code: "DE", name: "Alemanha", dialCode: "+49", flag: "🇩🇪" },
|
||||
{ code: "IT", name: "Itália", dialCode: "+39", flag: "🇮🇹" },
|
||||
{ code: "NL", name: "Holanda", dialCode: "+31", flag: "🇳🇱" },
|
||||
{ code: "BE", name: "Bélgica", dialCode: "+32", flag: "🇧🇪" },
|
||||
{ code: "CH", name: "Suíça", dialCode: "+41", flag: "🇨🇭" },
|
||||
{ code: "AT", name: "Áustria", dialCode: "+43", flag: "🇦🇹" },
|
||||
{ code: "PL", name: "Polônia", dialCode: "+48", flag: "🇵🇱" },
|
||||
{ code: "RU", name: "Rússia", dialCode: "+7", flag: "🇷🇺" },
|
||||
{ code: "CN", name: "China", dialCode: "+86", flag: "🇨🇳" },
|
||||
{ code: "JP", name: "Japão", dialCode: "+81", flag: "🇯🇵" },
|
||||
{ code: "KR", name: "Coreia do Sul", dialCode: "+82", flag: "🇰🇷" },
|
||||
{ code: "IN", name: "Índia", dialCode: "+91", flag: "🇮🇳" },
|
||||
{ code: "AU", name: "Austrália", dialCode: "+61", flag: "🇦🇺" },
|
||||
{ code: "NZ", name: "Nova Zelândia", dialCode: "+64", flag: "🇳🇿" },
|
||||
{ code: "ZA", name: "África do Sul", dialCode: "+27", flag: "🇿🇦" },
|
||||
{ code: "EG", name: "Egito", dialCode: "+20", flag: "🇪🇬" },
|
||||
{ code: "TR", name: "Turquia", dialCode: "+90", flag: "🇹🇷" },
|
||||
{ code: "SA", name: "Arábia Saudita", dialCode: "+966", flag: "🇸🇦" },
|
||||
{ code: "AE", name: "Emirados Árabes", dialCode: "+971", flag: "🇦🇪" },
|
||||
{ code: "IL", name: "Israel", dialCode: "+972", flag: "🇮🇱" },
|
||||
{ code: "UY", name: "Uruguai", dialCode: "+598", flag: "🇺🇾" },
|
||||
{ code: "PY", name: "Paraguai", dialCode: "+595", flag: "🇵🇾" },
|
||||
{ code: "BO", name: "Bolívia", dialCode: "+591", flag: "🇧🇴" },
|
||||
{ code: "VE", name: "Venezuela", dialCode: "+58", flag: "🇻🇪" },
|
||||
{ code: "EC", name: "Equador", dialCode: "+593", flag: "🇪🇨" },
|
||||
];
|
||||
|
||||
/**
|
||||
* País padrão (Brasil)
|
||||
*/
|
||||
export const DEFAULT_COUNTRY: Country = COUNTRIES[0];
|
||||
|
||||
/**
|
||||
* Busca país por código
|
||||
*/
|
||||
export function getCountryByCode(code: string): Country | undefined {
|
||||
return COUNTRIES.find((c) => c.code === code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Busca país por código de discagem
|
||||
*/
|
||||
export function getCountryByDialCode(dialCode: string): Country | undefined {
|
||||
return COUNTRIES.find((c) => c.dialCode === dialCode);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user