chore: fix prettier formatting, regenerate phase9 manifest, add missing config files (.env.example, .node-version, .nvmrc, CI workflow)
CI / test (push) Failing after 28s

This commit is contained in:
root
2026-06-25 20:12:15 -04:00
parent c43620a005
commit b7a640735c
36 changed files with 3402 additions and 1857 deletions
@@ -1,9 +1,41 @@
export type AnalyticsEventName =
| "page_view" | "section_view" | "navigation_click"
| "locale_change" | "theme_change" | "mobile_nav_open" | "mobile_nav_close"
| "product_tour_open" | "product_tour_step" | "product_tour_complete" | "product_tour_close"
| "demo_open" | "demo_submit_attempt" | "demo_validation_error" | "demo_submit_success" | "demo_submit_failure" | "demo_close"
| "faq_open";
export interface AnalyticsContext { routeId:string; locale:"en"|"fr"|"ar"; direction:"ltr"|"rtl"; resolvedTheme:"light"|"dark"; source?:string; step?:number; errorCode?:string; }
export interface AnalyticsAdapter { consentGranted():boolean; track(name:AnalyticsEventName, context:AnalyticsContext):void; }
export const forbiddenPayloadKeys = ["name","email","company","message","phone","fieldValue","serverResponse"] as const;
| 'page_view'
| 'section_view'
| 'navigation_click'
| 'locale_change'
| 'theme_change'
| 'mobile_nav_open'
| 'mobile_nav_close'
| 'product_tour_open'
| 'product_tour_step'
| 'product_tour_complete'
| 'product_tour_close'
| 'demo_open'
| 'demo_submit_attempt'
| 'demo_validation_error'
| 'demo_submit_success'
| 'demo_submit_failure'
| 'demo_close'
| 'faq_open';
export interface AnalyticsContext {
routeId: string;
locale: 'en' | 'fr' | 'ar';
direction: 'ltr' | 'rtl';
resolvedTheme: 'light' | 'dark';
source?: string;
step?: number;
errorCode?: string;
}
export interface AnalyticsAdapter {
consentGranted(): boolean;
track(name: AnalyticsEventName, context: AnalyticsContext): void;
}
export const forbiddenPayloadKeys = [
'name',
'email',
'company',
'message',
'phone',
'fieldValue',
'serverResponse',
] as const;
@@ -1,5 +1,23 @@
export const fleetSizeValues = ["1-9","10-24","25-49","50-99","100-249","250+"] as const;
export type FleetSize = typeof fleetSizeValues[number];
export interface DemoRequest { fullName:string; workEmail:string; company:string; fleetSize:FleetSize; market?:string; preferredLanguage?:"en"|"fr"|"ar"; message?:string; idempotencyKey:string; source:string; }
export interface DemoSuccess { requestId:string; acceptedAt:string; nextStepCode:"sales_followup"|"manual_review"; }
export interface DemoFailure { code:"validation"|"rate_limited"|"duplicate"|"unavailable"|"unknown"; retryable:boolean; fieldErrors?:Record<string,string>; }
export const fleetSizeValues = ['1-9', '10-24', '25-49', '50-99', '100-249', '250+'] as const;
export type FleetSize = (typeof fleetSizeValues)[number];
export interface DemoRequest {
fullName: string;
workEmail: string;
company: string;
fleetSize: FleetSize;
market?: string;
preferredLanguage?: 'en' | 'fr' | 'ar';
message?: string;
idempotencyKey: string;
source: string;
}
export interface DemoSuccess {
requestId: string;
acceptedAt: string;
nextStepCode: 'sales_followup' | 'manual_review';
}
export interface DemoFailure {
code: 'validation' | 'rate_limited' | 'duplicate' | 'unavailable' | 'unknown';
retryable: boolean;
fieldErrors?: Record<string, string>;
}
@@ -3,10 +3,12 @@
var cookieMatch = document.cookie.match(/(?:^|; )hpc-theme=([^;]+)/);
var cookieValue = cookieMatch ? decodeURIComponent(cookieMatch[1]) : null;
var stored = null;
try { stored = localStorage.getItem("hpc.theme.preference"); } catch (_) {}
var preference = allowed[cookieValue] ? cookieValue : (allowed[stored] ? stored : "system");
var dark = window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches;
var resolved = preference === "system" ? (dark ? "dark" : "light") : preference;
try {
stored = localStorage.getItem('hpc.theme.preference');
} catch (_) {}
var preference = allowed[cookieValue] ? cookieValue : allowed[stored] ? stored : 'system';
var dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
var resolved = preference === 'system' ? (dark ? 'dark' : 'light') : preference;
var root = document.documentElement;
root.dataset.themePreference = preference;
root.dataset.theme = resolved;