diff --git a/features/email/frontend-users/eslint.config.js b/features/email/frontend-users/eslint.config.js index 52d58392b..9c8fdb30e 100755 --- a/features/email/frontend-users/eslint.config.js +++ b/features/email/frontend-users/eslint.config.js @@ -28,6 +28,7 @@ export default tseslint.config( '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', '@lilith/file-length/file-length': [ 'warn', { diff --git a/features/landing/frontend-public/eslint.config.js b/features/landing/frontend-public/eslint.config.js index 247f130c4..fe7409943 100755 --- a/features/landing/frontend-public/eslint.config.js +++ b/features/landing/frontend-public/eslint.config.js @@ -32,6 +32,7 @@ export default tseslint.config( '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', '@lilith/file-length/file-length': ['warn', { warnThreshold: 400, errorThreshold: 600 }], }, }, diff --git a/features/marketplace/frontend-public/eslint.config.js b/features/marketplace/frontend-public/eslint.config.js index a54b5fe58..cd6365fb9 100755 --- a/features/marketplace/frontend-public/eslint.config.js +++ b/features/marketplace/frontend-public/eslint.config.js @@ -32,6 +32,7 @@ export default tseslint.config( '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', '@lilith/file-length/file-length': ['warn', { warnThreshold: 400, errorThreshold: 600 }], }, }, diff --git a/features/marketplace/frontend-public/src/deployments.d.ts b/features/marketplace/frontend-public/src/deployments.d.ts new file mode 100644 index 000000000..96e98328f --- /dev/null +++ b/features/marketplace/frontend-public/src/deployments.d.ts @@ -0,0 +1,61 @@ +/** + * Type declarations for the @/deployments virtual module + * + * This module is created at build time by the deployment build system. + * In development, TypeScript needs these type declarations for type checking. + * + * At build time, the actual module is generated with deployment-specific + * configuration (branding, features, theme overrides, etc.). + */ + +/** + * Available deployment identifiers + * + * Each deployment represents a distinct vertical/brand: + * - escorts: TrustedMeet (companion services) + * - cam: LilithCam (streaming/cam performers) + * - bdsm: ObeyLilith (BDSM practitioners) + * - massage: RubLilith (massage/bodywork) + */ +export type DeploymentId = 'escorts' | 'cam' | 'bdsm' | 'massage'; + +/** + * Deployment configuration interface + */ +export interface DeploymentConfig { + id: DeploymentId; + brand: { + id: string; + displayName: string; + domain: string; + tagline?: string; + logo?: string; + favicon?: string; + }; + theme: { + baseTheme: string; + colors?: { + primary?: string; + secondary?: string; + accent?: string; + }; + }; + api?: { + marketplaceUrl?: string; + ssoUrl?: string; + marketingUrl?: string; + }; + features: Record; +} + +/** + * Current deployment ID (build-time constant) + */ +declare const deploymentId: DeploymentId; + +/** + * Current deployment configuration + */ +declare const config: DeploymentConfig; + +export { deploymentId, config }; diff --git a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.rendering.spec.tsx b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.rendering.spec.tsx index f108ba51d..9b223b88e 100644 --- a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.rendering.spec.tsx +++ b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.rendering.spec.tsx @@ -15,7 +15,8 @@ import { mockTheme, expectedResults, buildProps, -} from './UsageProgressBar.fixtures.tsx'; + usageScenarios, +} from './UsageProgressBar.fixtures'; describe('UsageProgressBar - Rendering', () => { describe('Basic Rendering', () => { diff --git a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.thresholds.spec.tsx b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.thresholds.spec.tsx index b892388e9..b37668fb6 100644 --- a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.thresholds.spec.tsx +++ b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.thresholds.spec.tsx @@ -13,7 +13,7 @@ import { renderWithTheme, expectedResults, buildProps, -} from './UsageProgressBar.fixtures.tsx'; +} from './UsageProgressBar.fixtures'; describe('UsageProgressBar - Thresholds', () => { describe('Status States', () => { diff --git a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.tsx b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.tsx index f52a96ecf..5c549894e 100755 --- a/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.tsx +++ b/features/marketplace/frontend-public/src/features/usage/components/UsageProgressBar.tsx @@ -6,6 +6,7 @@ /** @jsxImportSource react */ +import type { FC } from 'react'; import styled, { type DefaultTheme } from '@lilith/ui-styled-components'; import { type LucideIcon } from 'lucide-react'; diff --git a/features/marketplace/frontend-public/src/features/worker/pages/WorkerDashboardPage.tsx b/features/marketplace/frontend-public/src/features/worker/pages/WorkerDashboardPage.tsx index b4b910523..82c2c7434 100644 --- a/features/marketplace/frontend-public/src/features/worker/pages/WorkerDashboardPage.tsx +++ b/features/marketplace/frontend-public/src/features/worker/pages/WorkerDashboardPage.tsx @@ -13,6 +13,7 @@ /** @jsxImportSource react */ +import type { FC } from 'react'; import { useCooperatives, usePendingInvitations } from '@features/coop/hooks'; import { useMyDuos, usePendingDuoInvitations } from '@features/duo/hooks/useDuos'; diff --git a/features/marketplace/frontend-public/src/hooks/useDeploymentConfig.ts b/features/marketplace/frontend-public/src/hooks/useDeploymentConfig.ts index bf4aab71a..2a0a1ff9c 100755 --- a/features/marketplace/frontend-public/src/hooks/useDeploymentConfig.ts +++ b/features/marketplace/frontend-public/src/hooks/useDeploymentConfig.ts @@ -102,7 +102,9 @@ export function useDeploymentConfig(): UseDeploymentConfigReturn { primary: config.theme.colors?.primary, secondary: config.theme.colors?.secondary, accent: config.theme.colors?.accent, - themeMode: config.theme.baseTheme === 'light' ? 'light' : config.theme.baseTheme === 'dark' ? 'dark' : 'system', + // ThemeName is 'cyberpunk' | 'luxe' | 'lilith' - not light/dark modes + // Light/dark mode is determined by system preference or user setting + themeMode: 'system', }, features, vertical: verticalConfig, diff --git a/features/platform-admin/frontend-admin/eslint.config.js b/features/platform-admin/frontend-admin/eslint.config.js index 52d58392b..9c8fdb30e 100755 --- a/features/platform-admin/frontend-admin/eslint.config.js +++ b/features/platform-admin/frontend-admin/eslint.config.js @@ -28,6 +28,7 @@ export default tseslint.config( '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', '@lilith/file-length/file-length': [ 'warn', { diff --git a/features/profile/frontend-app/eslint.config.js b/features/profile/frontend-app/eslint.config.js index 52d58392b..9c8fdb30e 100755 --- a/features/profile/frontend-app/eslint.config.js +++ b/features/profile/frontend-app/eslint.config.js @@ -28,6 +28,7 @@ export default tseslint.config( '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }], '@typescript-eslint/no-explicit-any': 'warn', 'react/react-in-jsx-scope': 'off', + 'react/prop-types': 'off', '@lilith/file-length/file-length': [ 'warn', {