chore: fix prettier formatting, regenerate phase9 manifest, add missing config files (.env.example, .node-version, .nvmrc, CI workflow)
CI / test (push) Failing after 28s
CI / test (push) Failing after 28s
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user