mirror of
https://github.com/fosrl/pangolin.git
synced 2026-02-21 04:16:38 +00:00
Chungus
This commit is contained in:
87
src/lib/privateThemeColors.ts
Normal file
87
src/lib/privateThemeColors.ts
Normal file
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* This file is part of a proprietary work.
|
||||
*
|
||||
* Copyright (c) 2025 Fossorial, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This file is licensed under the Fossorial Commercial License.
|
||||
* You may not use this file except in compliance with the License.
|
||||
* Unauthorized use, copying, modification, or distribution is strictly prohibited.
|
||||
*
|
||||
* This file is not licensed under the AGPLv3.
|
||||
*/
|
||||
|
||||
const defaultTheme = {
|
||||
light: {
|
||||
background: "oklch(0.99 0 0)",
|
||||
foreground: "oklch(0.141 0.005 285.823)",
|
||||
card: "oklch(1 0 0)",
|
||||
"card-foreground": "oklch(0.141 0.005 285.823)",
|
||||
popover: "oklch(1 0 0)",
|
||||
"popover-foreground": "oklch(0.141 0.005 285.823)",
|
||||
primary: "oklch(0.6717 0.1946 41.93)",
|
||||
"primary-foreground": "oklch(0.98 0.016 73.684)",
|
||||
secondary: "oklch(0.967 0.001 286.375)",
|
||||
"secondary-foreground": "oklch(0.21 0.006 285.885)",
|
||||
muted: "oklch(0.967 0.001 286.375)",
|
||||
"muted-foreground": "oklch(0.552 0.016 285.938)",
|
||||
accent: "oklch(0.967 0.001 286.375)",
|
||||
"accent-foreground": "oklch(0.21 0.006 285.885)",
|
||||
destructive: "oklch(0.577 0.245 27.325)",
|
||||
border: "oklch(0.92 0.004 286.32)",
|
||||
input: "oklch(0.92 0.004 286.32)",
|
||||
ring: "oklch(0.705 0.213 47.604)",
|
||||
radius: "0.65rem",
|
||||
"chart-1": "oklch(0.646 0.222 41.116)",
|
||||
"chart-2": "oklch(0.6 0.118 184.704)",
|
||||
"chart-3": "oklch(0.398 0.07 227.392)",
|
||||
"chart-4": "oklch(0.828 0.189 84.429)",
|
||||
"chart-5": "oklch(0.769 0.188 70.08)"
|
||||
},
|
||||
dark: {
|
||||
background: "oklch(0.20 0.006 285.885)",
|
||||
foreground: "oklch(0.985 0 0)",
|
||||
card: "oklch(0.21 0.006 285.885)",
|
||||
"card-foreground": "oklch(0.985 0 0)",
|
||||
popover: "oklch(0.21 0.006 285.885)",
|
||||
"popover-foreground": "oklch(0.985 0 0)",
|
||||
primary: "oklch(0.6717 0.1946 41.93)",
|
||||
"primary-foreground": "oklch(0.98 0.016 73.684)",
|
||||
secondary: "oklch(0.274 0.006 286.033)",
|
||||
"secondary-foreground": "oklch(0.985 0 0)",
|
||||
muted: "oklch(0.274 0.006 286.033)",
|
||||
"muted-foreground": "oklch(0.705 0.015 286.067)",
|
||||
accent: "oklch(0.274 0.006 286.033)",
|
||||
"accent-foreground": "oklch(0.985 0 0)",
|
||||
destructive: "oklch(0.704 0.191 22.216)",
|
||||
border: "oklch(1 0 0 / 10%)",
|
||||
input: "oklch(1 0 0 / 15%)",
|
||||
ring: "oklch(0.646 0.222 41.116)",
|
||||
"chart-1": "oklch(0.488 0.243 264.376)",
|
||||
"chart-2": "oklch(0.696 0.17 162.48)",
|
||||
"chart-3": "oklch(0.769 0.188 70.08)",
|
||||
"chart-4": "oklch(0.627 0.265 303.9)",
|
||||
"chart-5": "oklch(0.645 0.246 16.439)"
|
||||
}
|
||||
};
|
||||
|
||||
export default function setGlobalColorTheme(
|
||||
themeMode: "light" | "dark",
|
||||
colors: {
|
||||
light: Record<string, string>;
|
||||
dark: Record<string, string>;
|
||||
}
|
||||
) {
|
||||
const merged = {
|
||||
light: { ...defaultTheme.light, ...colors.light },
|
||||
dark: { ...defaultTheme.dark, ...colors.dark }
|
||||
};
|
||||
|
||||
const theme = merged[themeMode] as {
|
||||
[key: string]: string;
|
||||
};
|
||||
|
||||
for (const key in theme) {
|
||||
document.documentElement.style.setProperty(`--${key}`, theme[key]);
|
||||
}
|
||||
}
|
||||
@@ -13,10 +13,13 @@ export function pullEnv(): Env {
|
||||
resourceAccessTokenHeadersId: process.env
|
||||
.RESOURCE_ACCESS_TOKEN_HEADERS_ID as string,
|
||||
resourceAccessTokenHeadersToken: process.env
|
||||
.RESOURCE_ACCESS_TOKEN_HEADERS_TOKEN as string
|
||||
.RESOURCE_ACCESS_TOKEN_HEADERS_TOKEN as string,
|
||||
reoClientId: process.env.REO_CLIENT_ID as string,
|
||||
maxmind_db_path: process.env.MAXMIND_DB_PATH as string
|
||||
},
|
||||
app: {
|
||||
environment: process.env.ENVIRONMENT as string,
|
||||
sandbox_mode: process.env.SANDBOX_MODE === "true" ? true : false,
|
||||
version: process.env.APP_VERSION as string,
|
||||
dashboardUrl: process.env.DASHBOARD_URL as string
|
||||
},
|
||||
@@ -47,5 +50,52 @@ export function pullEnv(): Env {
|
||||
hideSupporterKey:
|
||||
process.env.HIDE_SUPPORTER_KEY === "true" ? true : false
|
||||
},
|
||||
|
||||
branding: {
|
||||
appName: process.env.BRANDING_APP_NAME as string,
|
||||
background_image_path: process.env.BACKGROUND_IMAGE_PATH as string,
|
||||
logo: {
|
||||
lightPath: process.env.BRANDING_LOGO_LIGHT_PATH as string,
|
||||
darkPath: process.env.BRANDING_LOGO_DARK_PATH as string,
|
||||
authPage: {
|
||||
width: parseInt(
|
||||
process.env.BRANDING_LOGO_AUTH_WIDTH as string
|
||||
),
|
||||
height: parseInt(
|
||||
process.env.BRANDING_LOGO_AUTH_HEIGHT as string
|
||||
)
|
||||
},
|
||||
navbar: {
|
||||
width: parseInt(
|
||||
process.env.BRANDING_LOGO_NAVBAR_WIDTH as string
|
||||
),
|
||||
height: parseInt(
|
||||
process.env.BRANDING_LOGO_NAVBAR_HEIGHT as string
|
||||
)
|
||||
}
|
||||
},
|
||||
loginPage: {
|
||||
titleText: process.env.LOGIN_PAGE_TITLE_TEXT as string,
|
||||
subtitleText: process.env.LOGIN_PAGE_SUBTITLE_TEXT as string
|
||||
},
|
||||
signupPage: {
|
||||
titleText: process.env.SIGNUP_PAGE_TITLE_TEXT as string,
|
||||
subtitleText: process.env.SIGNUP_PAGE_SUBTITLE_TEXT as string
|
||||
},
|
||||
resourceAuthPage: {
|
||||
showLogo:
|
||||
process.env.RESOURCE_AUTH_PAGE_SHOW_LOGO === "true"
|
||||
? true
|
||||
: false,
|
||||
hidePoweredBy:
|
||||
process.env.RESOURCE_AUTH_PAGE_HIDE_POWERED_BY === "true"
|
||||
? true
|
||||
: false,
|
||||
titleText: process.env.RESOURCE_AUTH_PAGE_TITLE_TEXT as string,
|
||||
subtitleText: process.env
|
||||
.RESOURCE_AUTH_PAGE_SUBTITLE_TEXT as string
|
||||
},
|
||||
footer: process.env.BRANDING_FOOTER as string
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
export type Env = {
|
||||
app: {
|
||||
environment: string;
|
||||
sandbox_mode: boolean;
|
||||
version: string;
|
||||
dashboardUrl: string;
|
||||
};
|
||||
@@ -12,6 +13,8 @@ export type Env = {
|
||||
resourceSessionRequestParam: string;
|
||||
resourceAccessTokenHeadersId: string;
|
||||
resourceAccessTokenHeadersToken: string;
|
||||
reoClientId?: string;
|
||||
maxmind_db_path?: string;
|
||||
};
|
||||
email: {
|
||||
emailEnabled: boolean;
|
||||
@@ -25,5 +28,36 @@ export type Env = {
|
||||
disableBasicWireguardSites: boolean;
|
||||
enableClients: boolean;
|
||||
hideSupporterKey: boolean;
|
||||
}
|
||||
},
|
||||
branding: {
|
||||
appName?: string;
|
||||
background_image_path?: string;
|
||||
logo?: {
|
||||
lightPath?: string;
|
||||
darkPath?: string;
|
||||
authPage?: {
|
||||
width?: number;
|
||||
height?: number;
|
||||
};
|
||||
navbar?: {
|
||||
width?: number;
|
||||
height?: number;
|
||||
}
|
||||
},
|
||||
loginPage?: {
|
||||
titleText?: string;
|
||||
subtitleText?: string;
|
||||
},
|
||||
signupPage?: {
|
||||
titleText?: string;
|
||||
subtitleText?: string;
|
||||
},
|
||||
resourceAuthPage?: {
|
||||
showLogo?: boolean;
|
||||
hidePoweredBy?: boolean;
|
||||
titleText?: string;
|
||||
subtitleText?: string;
|
||||
},
|
||||
footer?: string;
|
||||
};
|
||||
};
|
||||
|
||||
13
src/lib/types/privateThemeTypes.tsx
Normal file
13
src/lib/types/privateThemeTypes.tsx
Normal file
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* This file is part of a proprietary work.
|
||||
*
|
||||
* Copyright (c) 2025 Fossorial, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This file is licensed under the Fossorial Commercial License.
|
||||
* You may not use this file except in compliance with the License.
|
||||
* Unauthorized use, copying, modification, or distribution is strictly prohibited.
|
||||
*
|
||||
* This file is not licensed under the AGPLv3.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user