feat: close stub-page gaps - profile login/logout, admin Reports/Settings, Help/Docs links
Sprint A: storefront header profile control (login/logout only, no menu),
wired to existing customer Telegram auth (AuthService).
Sprint B: backoffice/reports page, reuses AdminAnalyticsFacade (Sales,
Top Products, Marketplace Health cards + CSV export).
Sprint C: backoffice/settings page, admin UI density preference
(comfortable/compact), localStorage-persisted, applied to app-table
across all admin list pages.
Sprint D: admin bottom-nav Help -> mailto using existing supportEmail,
Documentation -> external link via new TenantConfig.documentationUrl.
AdminNavLink gains externalHref for non-routerLink nav entries.
Docs: docs/GLOBAL-SPRINT-PLAN.md tracks the full sprint breakdown.
docs/COMING-SOON-AUDIT.md removed, folded into docs/KNOWN-ISSUES.md.
docs/BACKEND.md updated with the new documentationUrl bootstrap field.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 17:48:50 +04:00
|
|
|
<section class="admin-settings-page">
|
|
|
|
|
<div class="settings-card">
|
|
|
|
|
<h2>{{ 'adminSettings.density' | translate }}</h2>
|
|
|
|
|
<p class="settings-explain">{{ 'adminSettings.densityExplain' | translate }}</p>
|
|
|
|
|
<label class="toggle-row">
|
|
|
|
|
<app-toggle
|
|
|
|
|
[ngModel]="preferences.density() === 'compact'"
|
|
|
|
|
(ngModelChange)="onCompactToggle($event)"
|
|
|
|
|
[ariaLabel]="'adminSettings.densityCompact' | translate"
|
|
|
|
|
/>
|
|
|
|
|
<span>{{ 'adminSettings.densityCompact' | translate }}</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
2026-08-15 01:45:12 +04:00
|
|
|
|
|
|
|
|
<div class="settings-card">
|
|
|
|
|
<h2>{{ 'adminSettings.currencyRates' | translate }}</h2>
|
|
|
|
|
<p class="settings-explain">{{ 'adminSettings.currencyRatesExplain' | translate }}</p>
|
|
|
|
|
<div class="rate-row" *ngFor="let currency of languageService.currencies">
|
|
|
|
|
<span class="rate-code">{{ currency.code }}</span>
|
|
|
|
|
<input
|
|
|
|
|
class="rate-input"
|
|
|
|
|
type="number"
|
|
|
|
|
min="0"
|
|
|
|
|
step="0.0001"
|
|
|
|
|
[disabled]="currency.code === currencyRates.baseCurrency"
|
|
|
|
|
[ngModel]="rateDrafts()[currency.code]"
|
|
|
|
|
(ngModelChange)="onRateInput(currency.code, $event)"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="rate-actions">
|
|
|
|
|
<button type="button" class="save-button" (click)="saveRates()">{{ 'adminSettings.currencyRatesSave' | translate }}</button>
|
|
|
|
|
<span class="saved-message" *ngIf="showSavedMessage()">{{ 'adminSettings.currencyRatesSaved' | translate }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
feat: close stub-page gaps - profile login/logout, admin Reports/Settings, Help/Docs links
Sprint A: storefront header profile control (login/logout only, no menu),
wired to existing customer Telegram auth (AuthService).
Sprint B: backoffice/reports page, reuses AdminAnalyticsFacade (Sales,
Top Products, Marketplace Health cards + CSV export).
Sprint C: backoffice/settings page, admin UI density preference
(comfortable/compact), localStorage-persisted, applied to app-table
across all admin list pages.
Sprint D: admin bottom-nav Help -> mailto using existing supportEmail,
Documentation -> external link via new TenantConfig.documentationUrl.
AdminNavLink gains externalHref for non-routerLink nav entries.
Docs: docs/GLOBAL-SPRINT-PLAN.md tracks the full sprint breakdown.
docs/COMING-SOON-AUDIT.md removed, folded into docs/KNOWN-ISSUES.md.
docs/BACKEND.md updated with the new documentationUrl bootstrap field.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-05 17:48:50 +04:00
|
|
|
</section>
|