refactor: clean up repo (#5165)

* chore: remove legacy themes

* refactor: clean up dependencies

* chore: remove cuda 11 dependency - fix linux LD_LIBRARY_PATH

* fix: load models issue on Linux

# Conflicts:
#	src-tauri/src/core/setup.rs

* chore: do not download cuda 11 by default

* chore: remove cuda 11 from installer

* fix: cuda lookup on Linux
This commit is contained in:
Louis 2025-06-02 19:03:06 +07:00 committed by GitHub
parent 8509479dfb
commit 1a0f643d87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 21 additions and 659 deletions

View File

@ -105,7 +105,7 @@ jobs:
run: | run: |
echo "Version: ${{ inputs.new_version }}" echo "Version: ${{ inputs.new_version }}"
# Update tauri.conf.json # Update tauri.conf.json
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true | .bundle.resources = ["resources/themes/**/*", "resources/pre-install/**/*"] | .bundle.externalBin = ["binaries/cortex-server", "resources/bin/uv"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true | .bundle.resources = ["resources/pre-install/**/*"] | .bundle.externalBin = ["binaries/cortex-server", "resources/bin/uv"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
if [ "${{ inputs.channel }}" != "stable" ]; then if [ "${{ inputs.channel }}" != "stable" ]; then
jq '.bundle.linux.deb.files = {"usr/bin/bun": "resources/bin/bun", jq '.bundle.linux.deb.files = {"usr/bin/bun": "resources/bin/bun",

View File

@ -77,25 +77,6 @@ export class App implements Processor {
return appConfiguration() return appConfiguration()
} }
/**
* Get themes from the app data folder.
* @returns
*/
getThemes() {
const themesPath = join(getJanDataFolderPath(), 'themes')
return readdirSync(themesPath)
}
/**
* Read theme.json
* @param theme
* @returns
*/
readTheme({ theme }: { theme: string }) {
const themePath = join(getJanDataFolderPath(), 'themes', theme, 'theme.json')
return readFileSync(themePath, { encoding: 'utf-8' })
}
async updateAppConfiguration(args: any) { async updateAppConfiguration(args: any) {
await updateAppConfiguration(args) await updateAppConfiguration(args)
} }

View File

@ -40,7 +40,7 @@ export enum NativeRoute {
/** /**
* App Route APIs * App Route APIs
* @description Enum of all the routes exposed by the app * @description Enum of all the routes exposed by the app
*/ */
export enum AppRoute { export enum AppRoute {
getAppConfigurations = 'getAppConfigurations', getAppConfigurations = 'getAppConfigurations',
updateAppConfiguration = 'updateAppConfiguration', updateAppConfiguration = 'updateAppConfiguration',
@ -51,8 +51,6 @@ export enum AppRoute {
log = 'log', log = 'log',
systemInformation = 'systemInformation', systemInformation = 'systemInformation',
showToast = 'showToast', showToast = 'showToast',
getThemes = 'getThemes',
readTheme = 'readTheme'
} }
export enum AppEvent { export enum AppEvent {
@ -150,10 +148,7 @@ export const CoreRoutes = [
] ]
export const APIRoutes = [...CoreRoutes, ...Object.values(NativeRoute)] export const APIRoutes = [...CoreRoutes, ...Object.values(NativeRoute)]
export const APIEvents = [ export const APIEvents = [...Object.values(AppEvent), ...Object.values(DownloadEvent)]
...Object.values(AppEvent),
...Object.values(DownloadEvent),
]
export type PayloadType = { export type PayloadType = {
messages: ChatCompletionMessage[] messages: ChatCompletionMessage[]
model: string model: string

View File

@ -90,7 +90,7 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine {
Authorization: `Bearer ${apiKey}`, Authorization: `Bearer ${apiKey}`,
} }
: {}, : {},
retry: 10, retry: 4,
}) })
return this.api return this.api
} }
@ -256,6 +256,9 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine {
api api
.post('v1/models/stop', { .post('v1/models/stop', {
json: { model: model.id }, json: { model: model.id },
retry: {
limit: 0,
},
}) })
.json() .json()
.finally(() => { .finally(() => {

View File

@ -18,7 +18,7 @@
"install:cortex:linux:darwin": "cd src-tauri/binaries && ./download.sh", "install:cortex:linux:darwin": "cd src-tauri/binaries && ./download.sh",
"install:cortex:win32": "cd src-tauri/binaries && download.bat", "install:cortex:win32": "cd src-tauri/binaries && download.bat",
"install:cortex": "run-script-os", "install:cortex": "run-script-os",
"copy:assets:tauri": "cpx \"pre-install/*.tgz\" \"src-tauri/resources/pre-install/\" && cpx \"themes/**\" \"src-tauri/resources/themes\"", "copy:assets:tauri": "cpx \"pre-install/*.tgz\" \"src-tauri/resources/pre-install/\"",
"copy:lib": "run-script-os", "copy:lib": "run-script-os",
"copy:lib:linux": "cpx \"./lib/linux/*.so\" \"./src-tauri/resources/lib/\"", "copy:lib:linux": "cpx \"./lib/linux/*.so\" \"./src-tauri/resources/lib/\"",
"copy:lib:win32": "cpx \"./lib/windows/*.dll\" \"./src-tauri/resources/lib/\"", "copy:lib:win32": "cpx \"./lib/windows/*.dll\" \"./src-tauri/resources/lib/\"",
@ -56,6 +56,6 @@
}, },
"packageManager": "yarn@4.5.3", "packageManager": "yarn@4.5.3",
"dependencies": { "dependencies": {
"@tanstack/router": "0.0.1-beta.53" "download-cli": "^1.1.1"
} }
} }

View File

@ -7,7 +7,7 @@ set ENGINE_DOWNLOAD_GGML_URL=https://github.com/ggml-org/llama.cpp/releases/down
set CUDA_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/%ENGINE_VERSION% set CUDA_DOWNLOAD_URL=https://github.com/menloresearch/llama.cpp/releases/download/%ENGINE_VERSION%
@REM set SUBFOLDERS=windows-amd64-noavx-cuda-12-0 windows-amd64-noavx-cuda-11-7 windows-amd64-avx2-cuda-12-0 windows-amd64-avx2-cuda-11-7 windows-amd64-noavx windows-amd64-avx windows-amd64-avx2 windows-amd64-avx512 windows-amd64-vulkan @REM set SUBFOLDERS=windows-amd64-noavx-cuda-12-0 windows-amd64-noavx-cuda-11-7 windows-amd64-avx2-cuda-12-0 windows-amd64-avx2-cuda-11-7 windows-amd64-noavx windows-amd64-avx windows-amd64-avx2 windows-amd64-avx512 windows-amd64-vulkan
set BIN_PATH="./" set BIN_PATH="./"
set DOWNLOAD_TOOL=..\..\extensions\inference-cortex-extension\node_modules\.bin\download set DOWNLOAD_TOOL=..\..\node_modules\.bin\download
@REM Download llama.cpp binaries @REM Download llama.cpp binaries
call %DOWNLOAD_TOOL% -e --strip 1 -o %BIN_PATH% https://github.com/menloresearch/cortex.cpp/releases/download/v%CORTEX_VERSION%/cortex-%CORTEX_VERSION%-windows-amd64.tar.gz call %DOWNLOAD_TOOL% -e --strip 1 -o %BIN_PATH% https://github.com/menloresearch/cortex.cpp/releases/download/v%CORTEX_VERSION%/cortex-%CORTEX_VERSION%-windows-amd64.tar.gz
@ -21,7 +21,8 @@ call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx2-x64.tar.gz -e --strip 2 -o./engi
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx512-x64.tar.gz -e --strip 2 -o./engines/llama.cpp/win-avx512-x64/%ENGINE_VERSION% call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_URL%-avx512-x64.tar.gz -e --strip 2 -o./engines/llama.cpp/win-avx512-x64/%ENGINE_VERSION%
call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_GGML_URL%-vulkan-x64.zip -e --strip 1 -o./engines/llama.cpp/win-vulkan-x64/%ENGINE_VERSION% call %DOWNLOAD_TOOL% %ENGINE_DOWNLOAD_GGML_URL%-vulkan-x64.zip -e --strip 1 -o./engines/llama.cpp/win-vulkan-x64/%ENGINE_VERSION%
call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cudart-llama-bin-win-cu12.0-x64.tar.gz -e --strip 1 -o %BIN_PATH% call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cudart-llama-bin-win-cu12.0-x64.tar.gz -e --strip 1 -o %BIN_PATH%
call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cudart-llama-bin-win-cu11.7-x64.tar.gz -e --strip 1 -o %BIN_PATH% @REM Should not bundle cuda11, users should install it themselves, it bloats the app size a lot
@REM call %DOWNLOAD_TOOL% %CUDA_DOWNLOAD_URL%/cudart-llama-bin-win-cu11.7-x64.tar.gz -e --strip 1 -o %BIN_PATH%
move %BIN_PATH%cortex-server-beta.exe %BIN_PATH%cortex-server.exe move %BIN_PATH%cortex-server-beta.exe %BIN_PATH%cortex-server.exe
copy %BIN_PATH%cortex-server.exe %BIN_PATH%cortex-server-x86_64-pc-windows-msvc.exe copy %BIN_PATH%cortex-server.exe %BIN_PATH%cortex-server-x86_64-pc-windows-msvc.exe

View File

@ -49,7 +49,9 @@ if [ "$OS_TYPE" == "Linux" ]; then
download "${ENGINE_DOWNLOAD_URL}-linux-noavx-cuda-cu11.7-x64.tar.gz" 2 "${SHARED_PATH}/engines/llama.cpp/linux-noavx-cuda-cu11.7-x64/${ENGINE_VERSION}" download "${ENGINE_DOWNLOAD_URL}-linux-noavx-cuda-cu11.7-x64.tar.gz" 2 "${SHARED_PATH}/engines/llama.cpp/linux-noavx-cuda-cu11.7-x64/${ENGINE_VERSION}"
download "${ENGINE_DOWNLOAD_URL}-linux-vulkan-x64.tar.gz" 2 "${SHARED_PATH}/engines/llama.cpp/linux-vulkan-x64/${ENGINE_VERSION}" download "${ENGINE_DOWNLOAD_URL}-linux-vulkan-x64.tar.gz" 2 "${SHARED_PATH}/engines/llama.cpp/linux-vulkan-x64/${ENGINE_VERSION}"
download "${CUDA_DOWNLOAD_URL}/cudart-llama-bin-linux-cu12.0-x64.tar.gz" 0 "${BIN_PATH}/deps" download "${CUDA_DOWNLOAD_URL}/cudart-llama-bin-linux-cu12.0-x64.tar.gz" 0 "${BIN_PATH}/deps"
download "${CUDA_DOWNLOAD_URL}/cudart-llama-bin-linux-cu11.7-x64.tar.gz" 0 "${BIN_PATH}/deps" # Should not bundle this by default, users can install cuda runtime separately
# Ship cuda 12.0 by default only for now
# download "${CUDA_DOWNLOAD_URL}/cudart-llama-bin-linux-cu11.7-x64.tar.gz" 0 "${BIN_PATH}/deps"
elif [ "$OS_TYPE" == "Darwin" ]; then elif [ "$OS_TYPE" == "Darwin" ]; then
# macOS downloads # macOS downloads

View File

@ -106,37 +106,6 @@ pub fn get_jan_extensions_path(app_handle: tauri::AppHandle) -> PathBuf {
get_jan_data_folder_path(app_handle).join("extensions") get_jan_data_folder_path(app_handle).join("extensions")
} }
#[tauri::command]
pub fn get_themes(app_handle: tauri::AppHandle) -> Vec<String> {
let mut themes = vec![];
let themes_path = get_jan_data_folder_path(app_handle).join("themes");
if themes_path.exists() {
for entry in fs::read_dir(themes_path).unwrap() {
let entry = entry.unwrap();
if entry.path().is_dir() {
if let Some(name) = entry.file_name().to_str() {
themes.push(name.to_string());
}
}
}
}
themes
}
#[tauri::command]
pub fn read_theme(app_handle: tauri::AppHandle, theme_name: String) -> Result<String, String> {
let themes_path = get_jan_data_folder_path(app_handle)
.join("themes")
.join(theme_name.clone())
.join("theme.json");
if themes_path.exists() {
let content = fs::read_to_string(themes_path).map_err(|e| e.to_string())?;
Ok(content)
} else {
Err(format!("Theme {} not found", theme_name.clone()))
}
}
#[tauri::command] #[tauri::command]
pub fn get_configuration_file_path<R: Runtime>(app_handle: tauri::AppHandle<R>) -> PathBuf { pub fn get_configuration_file_path<R: Runtime>(app_handle: tauri::AppHandle<R>) -> PathBuf {
let app_path = app_handle.path().app_data_dir().unwrap_or_else(|err| { let app_path = app_handle.path().app_data_dir().unwrap_or_else(|err| {

View File

@ -259,10 +259,11 @@ pub fn setup_sidecar(app: &App) -> Result<(), String> {
#[cfg(not(target_os = "windows"))] #[cfg(not(target_os = "windows"))]
{ {
cmd = cmd.env("LD_LIBRARY_PATH", { cmd = cmd.env("LD_LIBRARY_PATH", {
let current_app_data_dir = app_handle.path().app_data_dir().unwrap(); let current_app_data_dir =
app_handle.path().resource_dir().unwrap().join("binaries");
let dest = current_app_data_dir.to_str().unwrap(); let dest = current_app_data_dir.to_str().unwrap();
let ld_path_env = std::env::var("LD_LIBRARY_PATH").unwrap_or_default(); let ld_path_env = std::env::var("LD_LIBRARY_PATH").unwrap_or_default();
format!("{}{}{}", ld_path_env, std::path::MAIN_SEPARATOR, dest) format!("{}{}{}", ld_path_env, ":", dest)
}); });
} }
cmd cmd
@ -428,7 +429,7 @@ pub fn setup_engine_binaries(app: &App) -> Result<(), String> {
// Copy engine binaries to app_data // Copy engine binaries to app_data
let app_data_dir = get_jan_data_folder_path(app.handle().clone()); let app_data_dir = get_jan_data_folder_path(app.handle().clone());
let binaries_dir = app.handle().path().resource_dir().unwrap().join("binaries"); let binaries_dir = app.handle().path().resource_dir().unwrap().join("binaries");
let themes_dir = app let resources_dir = app
.handle() .handle()
.path() .path()
.resource_dir() .resource_dir()
@ -438,8 +439,8 @@ pub fn setup_engine_binaries(app: &App) -> Result<(), String> {
if let Err(e) = copy_dir_all(binaries_dir, app_data_dir.clone()) { if let Err(e) = copy_dir_all(binaries_dir, app_data_dir.clone()) {
log::error!("Failed to copy binaries: {}", e); log::error!("Failed to copy binaries: {}", e);
} }
if let Err(e) = copy_dir_all(themes_dir, app_data_dir.clone()) { if let Err(e) = copy_dir_all(resources_dir, app_data_dir.clone()) {
log::error!("Failed to copy themes: {}", e); log::error!("Failed to copy resources: {}", e);
} }
Ok(()) Ok(())
} }

View File

@ -33,7 +33,6 @@ pub fn run() {
core::fs::file_stat, core::fs::file_stat,
core::fs::write_file_sync, core::fs::write_file_sync,
// App commands // App commands
core::cmd::get_themes,
core::cmd::get_app_configurations, core::cmd::get_app_configurations,
core::cmd::get_active_extensions, core::cmd::get_active_extensions,
core::cmd::get_user_home_path, core::cmd::get_user_home_path,
@ -44,7 +43,6 @@ pub fn run() {
core::cmd::open_app_directory, core::cmd::open_app_directory,
core::cmd::open_file_explorer, core::cmd::open_file_explorer,
core::cmd::install_extensions, core::cmd::install_extensions,
core::cmd::read_theme,
core::cmd::app_token, core::cmd::app_token,
core::cmd::start_server, core::cmd::start_server,
core::cmd::stop_server, core::cmd::stop_server,

View File

@ -633,16 +633,12 @@ Section Install
CreateDirectory "$INSTDIR\binaries\engines" CreateDirectory "$INSTDIR\binaries\engines"
CreateDirectory "$INSTDIR\resources" CreateDirectory "$INSTDIR\resources"
CreateDirectory "$INSTDIR\resources\pre-install" CreateDirectory "$INSTDIR\resources\pre-install"
CreateDirectory "$INSTDIR\resources\themes"
SetOutPath "$INSTDIR\binaries\engines" SetOutPath "$INSTDIR\binaries\engines"
File /nonfatal /a /r "D:\a\jan\jan\src-tauri\binaries\engines\" File /nonfatal /a /r "D:\a\jan\jan\src-tauri\binaries\engines\"
SetOutPath $INSTDIR SetOutPath $INSTDIR
File /a "/oname=cublas64_11.dll" "D:\a\jan\jan\src-tauri\binaries\cublas64_11.dll"
File /a "/oname=cublas64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cublas64_12.dll" File /a "/oname=cublas64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cublas64_12.dll"
File /a "/oname=cublasLt64_11.dll" "D:\a\jan\jan\src-tauri\binaries\cublasLt64_11.dll"
File /a "/oname=cublasLt64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cublasLt64_12.dll" File /a "/oname=cublasLt64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cublasLt64_12.dll"
File /a "/oname=cudart64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cudart64_12.dll" File /a "/oname=cudart64_12.dll" "D:\a\jan\jan\src-tauri\binaries\cudart64_12.dll"
File /a "/oname=cudart64_110.dll" "D:\a\jan\jan\src-tauri\binaries\cudart64_110.dll"
File /a "/oname=msvcp140.dll" "D:\a\jan\jan\src-tauri\binaries\msvcp140.dll" File /a "/oname=msvcp140.dll" "D:\a\jan\jan\src-tauri\binaries\msvcp140.dll"
; File /a "/oname=vcomp140.dll" "D:\a\jan\jan\src-tauri\binaries\vcomp140.dll" ; File /a "/oname=vcomp140.dll" "D:\a\jan\jan\src-tauri\binaries\vcomp140.dll"
File /a "/oname=vcruntime140_1.dll" "D:\a\jan\jan\src-tauri\binaries\vcruntime140_1.dll" File /a "/oname=vcruntime140_1.dll" "D:\a\jan\jan\src-tauri\binaries\vcruntime140_1.dll"
@ -650,8 +646,6 @@ Section Install
File /a "/oname=vulkan-1.dll" "D:\a\jan\jan\src-tauri\binaries\vulkan-1.dll" File /a "/oname=vulkan-1.dll" "D:\a\jan\jan\src-tauri\binaries\vulkan-1.dll"
SetOutPath "$INSTDIR\resources\pre-install" SetOutPath "$INSTDIR\resources\pre-install"
File /nonfatal /a /r "D:\a\jan\jan\src-tauri\resources\pre-install\" File /nonfatal /a /r "D:\a\jan\jan\src-tauri\resources\pre-install\"
SetOutPath "$INSTDIR\resources\themes"
File /nonfatal /a /r "D:\a\jan\jan\src-tauri\resources\themes\"
SetOutPath $INSTDIR SetOutPath $INSTDIR
; Copy external binaries ; Copy external binaries
@ -781,10 +775,6 @@ Section Uninstall
Delete "$INSTDIR\resources\pre-install\janhq-hardware-management-extension-1.0.0.tgz" Delete "$INSTDIR\resources\pre-install\janhq-hardware-management-extension-1.0.0.tgz"
Delete "$INSTDIR\resources\pre-install\janhq-inference-cortex-extension-1.0.25.tgz" Delete "$INSTDIR\resources\pre-install\janhq-inference-cortex-extension-1.0.25.tgz"
Delete "$INSTDIR\resources\pre-install\janhq-model-extension-1.0.36.tgz" Delete "$INSTDIR\resources\pre-install\janhq-model-extension-1.0.36.tgz"
Delete "$INSTDIR\resources\themes\dark-dimmed\theme.json"
Delete "$INSTDIR\resources\themes\joi-dark\theme.json"
Delete "$INSTDIR\resources\themes\joi-light\theme.json"
Delete "$INSTDIR\resources\themes\night-blue\theme.json"
; Delete external binaries ; Delete external binaries
Delete "$INSTDIR\cortex-server.exe" Delete "$INSTDIR\cortex-server.exe"
@ -799,13 +789,8 @@ Section Uninstall
; Delete uninstaller ; Delete uninstaller
Delete "$INSTDIR\uninstall.exe" Delete "$INSTDIR\uninstall.exe"
RMDir /REBOOTOK "$INSTDIR\resources\themes\dark-dimmed"
RMDir /REBOOTOK "$INSTDIR\resources\themes\joi-dark"
RMDir /REBOOTOK "$INSTDIR\resources\themes\joi-light"
RMDir /REBOOTOK "$INSTDIR\resources\themes\night-blue"
RMDir /r /REBOOTOK "$INSTDIR\binaries\engines" RMDir /r /REBOOTOK "$INSTDIR\binaries\engines"
RMDir /REBOOTOK "$INSTDIR\resources\pre-install" RMDir /REBOOTOK "$INSTDIR\resources\pre-install"
RMDir /REBOOTOK "$INSTDIR\resources\themes"
RMDir /r /REBOOTOK "$INSTDIR\binaries" RMDir /r /REBOOTOK "$INSTDIR\binaries"
RMDir /r /REBOOTOK "$INSTDIR\resources" RMDir /r /REBOOTOK "$INSTDIR\resources"
RMDir /r "$INSTDIR" RMDir /r "$INSTDIR"

View File

@ -83,7 +83,6 @@
], ],
"resources": [ "resources": [
"binaries/engines/**/*", "binaries/engines/**/*",
"resources/themes/**/*",
"resources/pre-install/**/*", "resources/pre-install/**/*",
"resources/lib/" "resources/lib/"
], ],

View File

@ -1,143 +0,0 @@
{
"id": "dark-dimmed",
"displayName": "Dark Dimmed",
"reduceTransparent": false,
"nativeTheme": "dark",
"variables": {
"app": {
"bg": "215, 25%, 9%, 1",
"transparent": "0, 0%, 13%, 0.3",
"border": "0, 0%, 100%, 0.1",
"link": "221, 79%, 59%, 1"
},
"primary": {
"bg": {
"__default": "175, 84%, 32%, 1",
"soft": "175, 84%, 10%, 1"
},
"fg": "0, 0%, 100%, 1"
},
"secondary": {
"bg": "0, 0%, 100%, 0.2",
"fg": "0, 0%, 80%, 1"
},
"tertiary": {
"bg": "0, 0%, 0%, 0.02"
},
"disabled": {
"bg": "0, 0%, 0%, 0.2",
"fg": "0, 0%, 100%, 0.2"
},
"top-panel": {
"bg": "0, 0%, 13%, 0.3"
},
"bottom-panel": {
"bg": "0, 0%, 13%, 0.3"
},
"ribbon-panel": {
"bg": "0, 0%, 13%, 0.3",
"border": "0, 0%, 100%, 0.1",
"icon": "0, 0%, 68%, 1",
"icon-hover": "0, 0%, 28%, 0.2",
"icon-active": "0, 0%, 100%, 1",
"icon-active-bg": "175, 84%, 32%, 1"
},
"left-panel": {
"bg": "215, 25%, 9%, 1",
"menu": "0, 0%, 95%, 1",
"menu-hover": "0, 0%, 28%, 0.2",
"menu-active": "0, 0%, 100%, 1",
"icon-active-bg": "175, 84%, 20%, 0.2"
},
"center-panel": {
"bg": "215, 25%, 9%, 1"
},
"right-panel": {
"bg": "215, 25%, 9%, 1"
},
"tooltip": {
"bg": "0, 0%, 100%, 1",
"fg": "0, 0%, 0%, 1"
},
"switch": {
"bg": "0, 0%, 80%, 0.1",
"fg": "0, 0%, 100%, 1"
},
"dropdown-menu": {
"hover-bg": "0, 0%, 28%, 0.2"
},
"scrollbar": {
"tracker": "0, 0%, 28%, 0.2",
"thumb": "0, 0%, 20%, 1"
},
"input": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"textarea": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"select": {
"input-bg": "0, 0%, 13%, 0",
"bg": "215, 25%, 9%, 1",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"options-active-bg": "0, 0%, 28%, 0.2",
"border": "0, 0%, 100%, 0.1"
},
"progress-track": {
"bg": "0, 0%, 100%, 0.1"
},
"modal": {
"overlay": "0, 0%, 0%, 0.7",
"bg": "215, 25%, 9%, 1",
"fg": "0, 0%, 100%, 11"
},
"loader": {
"bg": "221, 83%, 53%, 0.1",
"fg": "0, 0%, 80%, 1",
"active-bg": "221, 83%, 53%, 0.2"
},
"toaster": {
"bg": "240, 6%, 10%, 1",
"text-title": "0, 0%, 100%, 1",
"close-icon": "0, 0%, 100%, 0.8",
"text-desc": "0, 0%, 100%, 0.88"
},
"slider": {
"track-bg": "0, 0%, 100%, 0.1",
"thumb-bg": "0, 0%, 100%, 1"
},
"resize": {
"bg": "0, 0%, 0%, 0.1"
}
}
}

View File

@ -1,143 +0,0 @@
{
"id": "joi-dark",
"displayName": "Joi Dark",
"reduceTransparent": true,
"nativeTheme": "dark",
"variables": {
"app": {
"bg": "0, 0%, 13%, 1",
"transparent": "0, 0%, 13%, 0.3",
"border": "0, 0%, 100%, 0.1",
"link": "221, 83%, 53%, 1"
},
"primary": {
"bg": {
"__default": "221, 79%, 59%, 1",
"soft": "221, 79%, 59%, 0.2"
},
"fg": "0, 0%, 100%, 1"
},
"secondary": {
"bg": "0, 0%, 100%, 0.2",
"fg": "0, 0%, 80%, 1"
},
"tertiary": {
"bg": "0, 0%, 0%, 0.02"
},
"disabled": {
"bg": "0, 0%, 0%, 0.2",
"fg": "0, 0%, 100%, 0.2"
},
"top-panel": {
"bg": "0, 0%, 13%, 0.3"
},
"bottom-panel": {
"bg": "0, 0%, 13%, 0.3"
},
"ribbon-panel": {
"bg": "0, 0%, 13%, 0.3",
"border": "0, 0%, 100%, 0.1",
"icon": "0, 0%, 68%, 1",
"icon-hover": "0, 0%, 28%, 0.2",
"icon-active": "0, 0%, 100%, 1",
"icon-active-bg": "0, 0%, 100%, 0.1"
},
"left-panel": {
"bg": "0, 0%, 13%, 1",
"menu": "0, 0%, 95%, 1",
"menu-hover": "0, 0%, 28%, 0.2",
"menu-active": "0, 0%, 100%, 1",
"icon-active-bg": "0, 0%, 100%, 0.1"
},
"center-panel": {
"bg": "0, 0%, 13%, 1"
},
"right-panel": {
"bg": "0, 0%, 13%, 1"
},
"tooltip": {
"bg": "0, 0%, 100%, 1",
"fg": "0, 0%, 0%, 1"
},
"switch": {
"bg": "0, 0%, 80%, 0.1",
"fg": "0, 0%, 100%, 1"
},
"dropdown-menu": {
"hover-bg": "0, 0%, 28%, 0.2"
},
"scrollbar": {
"tracker": "0, 0%, 28%, 0.2",
"thumb": "0, 0%, 50%, 1"
},
"input": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"textarea": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"select": {
"input-bg": "0, 0%, 13%, 0",
"bg": "0, 0%, 13%, 1",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"options-active-bg": "0, 0%, 28%, 0.2",
"border": "0, 0%, 100%, 0.1"
},
"progress-track": {
"bg": "0, 0%, 100%, 0.1"
},
"modal": {
"overlay": "0, 0%, 0%, 0.7",
"bg": "0, 0%, 13%, 1",
"fg": "0, 0%, 100%, 11"
},
"loader": {
"bg": "221, 83%, 53%, 0.1",
"fg": "0, 0%, 80%, 1",
"active-bg": "221, 83%, 53%, 0.2"
},
"toaster": {
"bg": "240, 6%, 10%, 1",
"text-title": "0, 0%, 100%, 1",
"close-icon": "0, 0%, 100%, 0.8",
"text-desc": "0, 0%, 100%, 0.88"
},
"slider": {
"track-bg": "0, 0%, 100%, 0.1",
"thumb-bg": "0, 0%, 100%, 1"
},
"resize": {
"bg": "0, 0%, 0%, 0.1"
}
}
}

View File

@ -1,143 +0,0 @@
{
"id": "joi-light",
"displayName": "Joi Light",
"reduceTransparent": true,
"nativeTheme": "light",
"variables": {
"app": {
"bg": "0, 0%, 100%, 1",
"transparent": "0, 0%, 100%, 0.8",
"border": "0, 0%, 0%, 0.1",
"link": "221, 83%, 53%, 1"
},
"primary": {
"bg": {
"__default": "221, 83%, 53%, 1",
"soft": "221, 83%, 53%, 0.1"
},
"fg": "0, 0%, 100%, 1"
},
"secondary": {
"bg": " 0, 0%, 0%, 0.1",
"fg": " 0, 0%, 0%, 1"
},
"tertiary": {
"bg": "0, 0%, 0%, 0.02"
},
"disabled": {
"bg": " 0, 0%, 0%, 0.05",
"fg": " 0, 0%, 0%, 0.2"
},
"top-panel": {
"bg": "0, 0%, 100%, 0.8"
},
"bottom-panel": {
"bg": "0, 0%, 100%, 0.8"
},
"ribbon-panel": {
"bg": "0, 0%, 100%, 0.8",
"border": "0, 0%, 0%, 0.1",
"icon": "0, 0%, 0%, 0.5",
"icon-hover": "0, 0%, 0%, 0.03",
"icon-active": "0, 0%, 0%, 1",
"icon-active-bg": "0, 0%, 0%, 0.05"
},
"left-panel": {
"bg": "0, 0%, 100%, 1",
"menu": "0, 0%, 0%, 0.8",
"menu-hover": "0, 0%, 0%, 0.03",
"menu-active": "0, 0%, 0%, 1",
"icon-active-bg": "0, 0%, 0%, 0.05"
},
"center-panel": {
"bg": "0, 0%, 100%, 1"
},
"right-panel": {
"bg": "0, 0%, 100%, 1"
},
"tooltip": {
"bg": "0, 0%, 0%, 1",
"fg": "0, 0%, 100%, 1"
},
"switch": {
"bg": "0, 0%, 0%, 0.1",
"fg": "0, 0%, 100%, 1"
},
"dropdown-menu": {
"hover-bg": "0, 0%, 0%, 0.03"
},
"scrollbar": {
"tracker": "0, 0%, 95%, 0.1",
"thumb": "0, 0%, 0%, 0.1"
},
"input": {
"bg": "0, 0%, 100%, 0",
"placeholder": "0, 0%, 0%, 0.5",
"icon": "0, 0%, 0%, 0.5",
"border": "0, 0%, 0%, 0.1"
},
"textarea": {
"bg": "0, 0%, 100%, 0",
"placeholder": "0, 0%, 0%, 0.5",
"icon": "0, 0%, 0%, 0.5",
"border": "0, 0%, 0%, 0.1"
},
"select": {
"input-bg": "0, 0%, 100%, 0",
"bg": "0, 0%, 100%, 1",
"placeholder": "0, 0%, 0%, 0.5",
"icon": "0, 0%, 0%, 0.5",
"options-active-bg": "0, 0%, 0%, 0.03",
"border": "0, 0%, 0%, 0.1"
},
"progress-track": {
"bg": "0, 0%, 0%, 0.1"
},
"modal": {
"overlay": "0, 0%, 0%, 0.7",
"bg": "0, 0%, 100%, 1",
"fg": "0, 0%, 0%, 1"
},
"loader": {
"bg": "221, 83%, 53%, 0.1",
"fg": "221, 83%, 53%, 1",
"active-bg": "221, 83%, 53%, 0.2"
},
"toaster": {
"bg": "240, 6%, 10%, 1",
"text-title": "0, 0%, 100%, 1",
"close-icon": "0, 0%, 100%, 0.8",
"text-desc": "0, 0%, 100%, 0.8"
},
"slider": {
"track-bg": "0, 0%, 0%, 0.1",
"thumb-bg": "0, 0%, 100%, 1"
},
"resize": {
"bg": "0, 0%, 0%, 0.1"
}
}
}

View File

@ -1,143 +0,0 @@
{
"id": "night-blue",
"displayName": "Night Blue",
"reduceTransparent": false,
"nativeTheme": "dark",
"variables": {
"app": {
"bg": "211, 100%, 15%, 1",
"transparent": "221, 79%, 59%, 0.08",
"border": "0, 0%, 100%, 0.1",
"link": "142, 76%, 36%, 1"
},
"primary": {
"bg": {
"__default": "221, 79%, 59%, 1",
"soft": "221, 79%, 59%, 0.2"
},
"fg": "0, 0%, 100%, 1"
},
"secondary": {
"bg": "0, 0%, 100%, 0.2",
"fg": "0, 0%, 80%, 1"
},
"tertiary": {
"bg": "0, 0%, 0%, 0.02"
},
"disabled": {
"bg": "0, 0%, 0%, 0.2",
"fg": "0, 0%, 100%, 0.2"
},
"top-panel": {
"bg": "211, 100%, 9%, 1"
},
"bottom-panel": {
"bg": "211, 100%, 9%, 1"
},
"ribbon-panel": {
"bg": "211, 100%, 10%, 1",
"border": "0, 0%, 100%, 0.1",
"icon": "0, 0%, 68%, 1",
"icon-hover": "0, 0%, 28%, 0.2",
"icon-active": "0, 0%, 100%, 1",
"icon-active-bg": "0, 0%, 100%, 0.1"
},
"left-panel": {
"bg": "211, 100%, 12%, 1",
"menu": "0, 0%, 95%, 1",
"menu-hover": "0, 0%, 28%, 0.2",
"menu-active": "0, 0%, 100%, 1",
"icon-active-bg": "0, 0%, 100%, 0.1"
},
"center-panel": {
"bg": "211, 100%, 15%, 1"
},
"right-panel": {
"bg": "211, 100%, 12%, 1"
},
"tooltip": {
"bg": "0, 0%, 100%, 1",
"fg": "0, 0%, 0%, 1"
},
"switch": {
"bg": "0, 0%, 80%, 0.1",
"fg": "0, 0%, 100%, 1"
},
"dropdown-menu": {
"hover-bg": "0, 0%, 28%, 0.2"
},
"scrollbar": {
"tracker": "0, 0%, 28%, 0.2",
"thumb": "0, 0%, 50%, 1"
},
"input": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"textarea": {
"bg": "0, 0%, 13%, 0",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"border": "0, 0%, 100%, 0.1"
},
"select": {
"input-bg": "0, 0%, 13%, 0",
"bg": "211, 100%, 15%, 1",
"placeholder": "0, 0%, 70%, 0.5",
"icon": "0, 0%, 68%, 1",
"options-active-bg": "0, 0%, 28%, 0.2",
"border": "0, 0%, 100%, 0.1"
},
"progress-track": {
"bg": "0, 0%, 100%, 0.1"
},
"modal": {
"overlay": "0, 0%, 0%, 0.7",
"bg": "222, 96%, 16%, 1",
"fg": "0, 0%, 100%, 11"
},
"loader": {
"bg": "221, 83%, 53%, 0.1",
"fg": "0, 0%, 80%, 1",
"active-bg": "221, 83%, 53%, 0.2"
},
"toaster": {
"bg": "222, 100%, 15%, 1",
"text-title": "0, 0%, 100%, 1",
"close-icon": "0, 0%, 100%, 0.8",
"text-desc": "0, 0%, 100%, 0.88"
},
"slider": {
"track-bg": "0, 0%, 100%, 0.1",
"thumb-bg": "0, 0%, 100%, 1"
},
"resize": {
"bg": "0, 0%, 0%, 0.1"
}
}
}