fix: improve phone/contact link visibility in novo theme

- Changed contact labels from green to text-secondary color
- Changed contact values/links from green to text-primary with hover effect
- Added proper hover state for all contact card child elements
- Fixed readability issue where green text was on green-tinted background
This commit is contained in:
sdarbinyan
2026-01-22 23:28:31 +04:00
parent 4aea97aa08
commit cb895f68cd
4 changed files with 90 additions and 11 deletions

View File

@@ -1,6 +1,8 @@
import { Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { languageGuard } from './guards/language.guard';
export const routes: Routes = [ // Child routes without language prefix
const childRoutes: Routes = [
{ {
path: '', path: '',
loadComponent: () => import('./pages/home/home.component').then(m => m.HomeComponent) loadComponent: () => import('./pages/home/home.component').then(m => m.HomeComponent)
@@ -64,9 +66,25 @@ export const routes: Routes = [
{ {
path: 'guarantee', path: 'guarantee',
loadComponent: () => import('./pages/info/guarantee/guarantee.component').then(m => m.GuaranteeComponent) loadComponent: () => import('./pages/info/guarantee/guarantee.component').then(m => m.GuaranteeComponent)
}, }
{ ];
path: '**',
redirectTo: '' export const routes: Routes = [
// Routes with language prefix: /ru, /en, /hy
{
path: ':lang',
canActivate: [languageGuard],
children: childRoutes
},
// Redirect root to default language
{
path: '',
pathMatch: 'full',
redirectTo: 'ru'
},
// Catch-all: redirect unknown routes to home with default language
{
path: '**',
redirectTo: 'ru'
} }
]; ];

View File

@@ -0,0 +1,56 @@
import { inject } from '@angular/core';
import { CanActivateFn, Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { LanguageService } from '../services/language.service';
export const languageGuard: CanActivateFn = (
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) => {
const languageService = inject(LanguageService);
const router = inject(Router);
const langParam = route.paramMap.get('lang');
if (langParam) {
const validLanguage = languageService.languages.find(
l => l.code === langParam && l.enabled
);
if (validLanguage) {
languageService.setLanguage(langParam);
return true;
} else {
// Invalid language code - redirect to default language
const currentLang = languageService.currentLanguage();
const pathWithoutLang = state.url.replace(`/${langParam}`, '');
router.navigate([`/${currentLang}${pathWithoutLang || '/'}`]);
return false;
}
}
return true;
};
export const redirectToLanguageGuard: CanActivateFn = (
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
) => {
const languageService = inject(LanguageService);
const router = inject(Router);
// Check if URL already has language prefix
const firstSegment = state.url.split('/')[1];
const hasLangPrefix = languageService.languages.some(
l => l.code === firstSegment && l.enabled
);
if (!hasLangPrefix) {
// Redirect to URL with language prefix
const currentLang = languageService.currentLanguage();
const newUrl = `/${currentLang}${state.url === '/' ? '' : state.url}`;
router.navigate([newUrl], { replaceUrl: true });
return false;
}
return true;
};

View File

@@ -27,14 +27,17 @@
strong { strong {
display: block; display: block;
margin-bottom: 0.25rem; margin-bottom: 0.25rem;
color: var(--text-primary); color: var(--text-secondary);
font-size: 0.85rem;
} }
a { a {
color: var(--primary-color); color: var(--text-primary);
text-decoration: none; text-decoration: none;
font-weight: 500;
&:hover { &:hover {
color: var(--primary-color);
text-decoration: underline; text-decoration: underline;
} }
} }

View File

@@ -391,20 +391,22 @@
transform: translateY(-2px); transform: translateY(-2px);
box-shadow: var(--shadow-sm); box-shadow: var(--shadow-sm);
strong, p, a { *, strong, p, a, .contact-label, .contact-value {
color: white !important; color: white !important;
} }
} }
strong { strong, .contact-label {
display: block; display: block;
color: var(--primary-color); color: var(--text-secondary);
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
font-size: 0.85rem;
} }
p, a { p, a, .contact-value {
margin: 0; margin: 0;
color: var(--text-primary); color: var(--text-primary);
font-weight: 500;
} }
} }
} }