Files
gatehouse-ui/src/config.ts
T

88 lines
2.2 KiB
TypeScript

// Secuird Configuration
// Environment-specific settings for the application
// Base URL without /api/v1 suffix - used for CLI sign URL
const BASE_URL = import.meta.env.VITE_API_BASE_URL || "http://192.168.64.7:8888";
// Theme configuration from environment
export type ThemeName = "default" | "dev" | "preprod";
interface ThemeColors {
primary: string;
primaryForeground: string;
sidebarPrimary: string;
sidebarPrimaryForeground: string;
ring: string;
}
const THEME_COLORS: Record<ThemeName, ThemeColors> = {
default: {
primary: "173 65% 36%", // teal
primaryForeground: "0 0% 100%",
sidebarPrimary: "173 65% 36%",
sidebarPrimaryForeground: "0 0% 100%",
ring: "173 65% 36%",
},
dev: {
primary: "0 72% 51%", // red
primaryForeground: "0 0% 100%",
sidebarPrimary: "0 72% 51%",
sidebarPrimaryForeground: "0 0% 100%",
ring: "0 72% 51%",
},
preprod: {
primary: "270 70% 55%", // purple
primaryForeground: "0 0% 100%",
sidebarPrimary: "270 70% 55%",
sidebarPrimaryForeground: "0 0% 100%",
ring: "270 70% 55%",
},
};
const THEME_DEFAULTS: Record<ThemeName, { appName: string; favicon: string }> = {
default: {
appName: "Secuird",
favicon: "/favicon.svg",
},
dev: {
appName: "Secuird Dev",
favicon: "/favicon-dev.svg",
},
preprod: {
appName: "Secuird Staging",
favicon: "/favicon-staging.svg",
},
};
const themeName = (import.meta.env.VITE_THEME || "default") as ThemeName;
const themeColors = THEME_COLORS[themeName] || THEME_COLORS.default;
const themeDefaults = THEME_DEFAULTS[themeName] || THEME_DEFAULTS.default;
export const config = {
// API Configuration
api: {
baseUrl: `${BASE_URL}/api/v1`,
},
// Sign URL for CLI (same as base URL, no /api/v1)
signUrl: BASE_URL,
// App metadata - can be overridden per-theme or via env
app: {
name: import.meta.env.VITE_APP_NAME || themeDefaults.appName,
description: "Identity & Access Platform",
favicon: import.meta.env.VITE_FAVICON || themeDefaults.favicon,
},
// Theme configuration for CSS variable injection
theme: {
name: themeName,
colors: themeColors,
},
// Feature flags
features: {
devTools: import.meta.env.DEV,
},
} as const;