feat: add logo image and RTL support styles

- Added logo image to assets.
- Implemented RTL support styles in rtlSupport.scss for various components including breadcrumb, datatable, and tree node toggle button.

chore: configure environment files for production, staging, and development

- Created environment.prod.ts for production settings.
- Created environment.staging.ts for staging settings.
- Created environment.ts for local development settings.

feat: define custom theme preset

- Added presets.ts to define a custom theme preset using PrimeUIX with specific component styles and semantic colors.

chore: set up proxy configuration for local development
This commit is contained in:
2025-12-04 21:07:18 +03:30
parent c58210cdbd
commit 07fec02ea1
164 changed files with 20175 additions and 735 deletions
+70 -10
View File
@@ -1,16 +1,76 @@
import { provideHttpClient, withFetch } from '@angular/common/http';
import { ApplicationConfig } from '@angular/core';
import {
ApiBaseUrlInterceptor,
authInterceptor,
dedupInterceptor,
errorInterceptor,
loggingInterceptor,
} from '@/core/interceptors';
import {
HTTP_INTERCEPTORS,
provideHttpClient,
withFetch,
withInterceptors,
withInterceptorsFromDi,
} from '@angular/common/http';
import { ApplicationConfig, provideZonelessChangeDetection } from '@angular/core';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { provideRouter, withEnabledBlockingInitialNavigation, withInMemoryScrolling } from '@angular/router';
import Aura from '@primeuix/themes/aura';
import {
provideRouter,
withEnabledBlockingInitialNavigation,
withInMemoryScrolling,
} from '@angular/router';
// Use the consolidated preset that includes our custom variables
import { MessageService } from 'primeng/api';
import { providePrimeNG } from 'primeng/config';
import { appRoutes } from './app.routes';
import MyPreset from './presets';
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(appRoutes, withInMemoryScrolling({ anchorScrolling: 'enabled', scrollPositionRestoration: 'enabled' }), withEnabledBlockingInitialNavigation()),
provideHttpClient(withFetch()),
provideAnimationsAsync(),
providePrimeNG({ theme: { preset: Aura, options: { darkModeSelector: '.app-dark' } } })
]
providers: [
provideRouter(
appRoutes,
withInMemoryScrolling({
anchorScrolling: 'enabled',
scrollPositionRestoration: 'enabled',
}),
withEnabledBlockingInitialNavigation(),
),
provideZonelessChangeDetection(),
// configure HttpClient once: enable fetch and register both functional
// interceptors and legacy (DI-provided) class-based interceptors
provideAnimationsAsync(),
// ensure PrimeNG uses our preset (applies css variables at app initialization)
providePrimeNG({
theme: {
preset: MyPreset,
options: { darkModeSelector: '.app-dark' },
},
translation: {
emptySelectionMessage: 'هیچ موردی انتخاب نشده است',
emptyMessage: 'هیچ داده‌ای برای نمایش وجود ندارد',
emptyFilterMessage: 'هیچ موردی برای نمایش وجود ندارد',
emptySearchMessage: 'هیچ موردی برای نمایش وجود ندارد',
accept: 'تایید',
reject: 'رد کردن',
cancel: 'لغو',
noFileChosenMessage: 'هیچ فایلی انتخاب نشده است',
fileChosenMessage: 'انتخاب فایل',
selectionMessage: '{0} مورد انتخاب شده است',
},
}),
{
provide: HTTP_INTERCEPTORS,
useClass: ApiBaseUrlInterceptor,
multi: true,
},
MessageService,
provideHttpClient(
withFetch(),
withInterceptors([loggingInterceptor, authInterceptor, errorInterceptor, dedupInterceptor]),
withInterceptorsFromDi(),
),
],
};