feat(landing): complete migration with glassmorphism navigation
Migrate landing app from egirl-platform with full feature parity:
- 18 routes verified (all HTTP 200)
- 200 E2E tests passing, 71/74 unit tests passing
- 8 languages in FAB selector (en/es translated, others fallback)
Add ThemeProvider to App.tsx for styled-components theme context.
Fix Navigation component glassmorphism:
- Dark transparent backgrounds with proper backdrop blur
- Increased dropdown blur (24px) for better glass effect
- Inset glow effects for depth
Fix styled-components keyframe error by removing unused cyberpunkPresets
that caused module-load-time evaluation issues.
Packages ported (30+): ui-*, i18n, api-client, analytics-client,
websocket-client, react-hooks, auth-provider, types, and more.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 17:11:07 -08:00
|
|
|
/// <reference types="vite/client" />
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Environment variable helpers for API client configuration
|
|
|
|
|
* Supports both Vite (import.meta.env) and Node.js (process.env) environments
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the API base URL from environment variables
|
|
|
|
|
* Falls back to development URL if not specified
|
|
|
|
|
*/
|
|
|
|
|
export function getApiUrl(): string {
|
|
|
|
|
// Check Vite environment first (browser/Vite apps)
|
|
|
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
|
|
|
return import.meta.env.VITE_API_URL || 'http://localhost:4002';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Fallback to Node.js environment (server-side or tests)
|
|
|
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
|
|
|
return process.env.VITE_API_URL || process.env.API_URL || 'http://localhost:4002';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Default fallback
|
|
|
|
|
return 'http://localhost:4002';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get the application name from environment variables
|
|
|
|
|
*/
|
|
|
|
|
export function getAppName(): string {
|
|
|
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
|
|
|
return import.meta.env.VITE_APP_NAME || 'unknown';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
|
|
|
return process.env.VITE_APP_NAME || process.env.APP_NAME || 'unknown';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 'unknown';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if running in development mode
|
|
|
|
|
*/
|
|
|
|
|
export function isDevelopment(): boolean {
|
|
|
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
|
|
|
return import.meta.env.MODE === 'development' || import.meta.env.DEV === true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
|
|
|
return process.env.NODE_ENV === 'development';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check if running in production mode
|
|
|
|
|
*/
|
|
|
|
|
export function isProduction(): boolean {
|
|
|
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
|
|
|
return import.meta.env.MODE === 'production' || import.meta.env.PROD === true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
|
|
|
return process.env.NODE_ENV === 'production';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get environment variable value with optional fallback
|
|
|
|
|
*/
|
|
|
|
|
export function getEnv(key: string, fallback?: string): string | undefined {
|
|
|
|
|
// Try Vite environment
|
|
|
|
|
if (typeof import.meta !== 'undefined' && import.meta.env) {
|
|
|
|
|
const value = import.meta.env[key];
|
feat(eslint): integrate global DRY ESLint packages across @packages
- Configure 12 @packages to use global @eslint/config-base and @eslint/config-react
- Update ESLint config path syntax to use node_modules paths
- Add ESLint dependencies to React packages (messaging-hooks, react-query-utils,
websocket-client, analytics-client)
- Fix duplicate exports in @core/types (remove redundant re-exports)
- Auto-fix import order issues across all packages
- Add ESLint config for status-dashboard/server extending @eslint/config-base
- Migrate service-registry to @nestjs/bootstrap and @nestjs/health packages
- Integrate @nestjs/auth decorators (@Public, @CurrentUser) into auth system
- Fix FlexibleAuthGuard tests (add missing getAllAndOverride mock)
- Relax strict type-checking rules in base config for existing code
Packages configured:
- @infrastructure/api-client, service-discovery, websocket-client, analytics-client
- @testing/msw-handlers, mocks
- @utils/text-utils
- @core/types, design-tokens
- @utility/zname
- @hooks/messaging-hooks, react-query-utils
All packages now pass ESLint with 0 errors (warnings only).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 19:38:01 -08:00
|
|
|
if (value !== undefined) {return String(value);}
|
feat(landing): complete migration with glassmorphism navigation
Migrate landing app from egirl-platform with full feature parity:
- 18 routes verified (all HTTP 200)
- 200 E2E tests passing, 71/74 unit tests passing
- 8 languages in FAB selector (en/es translated, others fallback)
Add ThemeProvider to App.tsx for styled-components theme context.
Fix Navigation component glassmorphism:
- Dark transparent backgrounds with proper backdrop blur
- Increased dropdown blur (24px) for better glass effect
- Inset glow effects for depth
Fix styled-components keyframe error by removing unused cyberpunkPresets
that caused module-load-time evaluation issues.
Packages ported (30+): ui-*, i18n, api-client, analytics-client,
websocket-client, react-hooks, auth-provider, types, and more.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 17:11:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Try Node.js environment
|
|
|
|
|
if (typeof process !== 'undefined' && process.env) {
|
|
|
|
|
const value = process.env[key];
|
feat(eslint): integrate global DRY ESLint packages across @packages
- Configure 12 @packages to use global @eslint/config-base and @eslint/config-react
- Update ESLint config path syntax to use node_modules paths
- Add ESLint dependencies to React packages (messaging-hooks, react-query-utils,
websocket-client, analytics-client)
- Fix duplicate exports in @core/types (remove redundant re-exports)
- Auto-fix import order issues across all packages
- Add ESLint config for status-dashboard/server extending @eslint/config-base
- Migrate service-registry to @nestjs/bootstrap and @nestjs/health packages
- Integrate @nestjs/auth decorators (@Public, @CurrentUser) into auth system
- Fix FlexibleAuthGuard tests (add missing getAllAndOverride mock)
- Relax strict type-checking rules in base config for existing code
Packages configured:
- @infrastructure/api-client, service-discovery, websocket-client, analytics-client
- @testing/msw-handlers, mocks
- @utils/text-utils
- @core/types, design-tokens
- @utility/zname
- @hooks/messaging-hooks, react-query-utils
All packages now pass ESLint with 0 errors (warnings only).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 19:38:01 -08:00
|
|
|
if (value !== undefined) {return value;}
|
feat(landing): complete migration with glassmorphism navigation
Migrate landing app from egirl-platform with full feature parity:
- 18 routes verified (all HTTP 200)
- 200 E2E tests passing, 71/74 unit tests passing
- 8 languages in FAB selector (en/es translated, others fallback)
Add ThemeProvider to App.tsx for styled-components theme context.
Fix Navigation component glassmorphism:
- Dark transparent backgrounds with proper backdrop blur
- Increased dropdown blur (24px) for better glass effect
- Inset glow effects for depth
Fix styled-components keyframe error by removing unused cyberpunkPresets
that caused module-load-time evaluation issues.
Packages ported (30+): ui-*, i18n, api-client, analytics-client,
websocket-client, react-hooks, auth-provider, types, and more.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 17:11:07 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fallback;
|
|
|
|
|
}
|