feat: catalog browser polish + design system refresh + translation pipeline

- catalog: P5 restriction selector flow (mainGroupsPath), grid/tree/columns view modes for brands and models with persisted user settings
- translations: bulk translateMany() path with 1d cache-miss TTL, expanded automotive dictionary; categories.service now drives EN→TR via TranslationsService instead of mapper-side strings
- pcat: migrate auth from v1 JWT to v3 widget tokens (TWS- api-key + supporting X-* headers, IP-bound via DataImpulse proxy)
- pl24: new fetchP5Restrictions() for restriction-level navigation
- subscriptions: trial extended 7 → 30 days
- design: oklch color tokens, brand semantic color, Geist + Instrument Serif fonts, tinted shadows, button "brand" variant with hover-lift, accessible focus rings, skip link, 404 NotFound page, auth layout polish
- nginx: dynamic resolver for Faro upstream
- config: OPENROUTER_API_KEY env (used by emex translate bootstrap script)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sase Dev
2026-05-09 15:54:30 +00:00
parent 14e43bc808
commit f35d64f2be
46 changed files with 2499 additions and 855 deletions

View File

@@ -23,7 +23,8 @@ export function initPostHog(): void {
_initialized = true;
load().then((ph) => {
ph.init(key, {
api_host: "https://eu.i.posthog.com",
api_host: "https://t.sase.tr",
defaults: "2026-01-30",
person_profiles: "identified_only",
capture_pageview: false,
capture_pageleave: false,

View File

@@ -1,7 +1,9 @@
const STORAGE_KEY = "userSettings";
interface UserSettings {
categoryViewMode?: "grid" | "tree";
categoryViewMode?: "grid" | "tree" | "columns";
modelViewMode?: "grid" | "tree" | "columns";
brandViewMode?: "grid" | "tree" | "columns";
sidebarCollapsed?: boolean;
theme?: "light" | "dark" | "system";
}