diff --git a/package-lock.json b/package-lock.json index b214b852..e8240437 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,6 @@ "base64url": "^3.0.1", "bip39": "^3.1.0", "bn.js": "^5.2.2", - "color": "^5.0.0", "deepmerge": "^4.3.1", "enc-utils": "^3.0.0", "end-of-stream": "^1.4.4", @@ -50,6 +49,7 @@ "@types/pump": "^1.1.3", "@types/readable-stream": "^4.0.19", "@vitest/coverage-istanbul": "^3.1.4", + "color": "^5.0.0", "cross-env": "^7.0.3", "eslint": "^9.27.0", "husky": "^9.1.7", @@ -71,7 +71,8 @@ "@rollup/rollup-linux-x64-gnu": "^4.41.0" }, "peerDependencies": { - "@babel/runtime": "7.x" + "@babel/runtime": "7.x", + "color": "^5.x" } }, "node_modules/@ampproject/remapping": { @@ -7229,6 +7230,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/color/-/color-5.0.0.tgz", "integrity": "sha512-16BlyiuyLq3MLxpRWyOTiWsO3ii/eLQLJUQXBSNcxMBBSnyt1ee9YUdaozQp03ifwm5woztEZGDbk9RGVuCsdw==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^3.0.1", @@ -7242,6 +7244,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.0.1.tgz", "integrity": "sha512-5kQah2eolfQV7HCrxtsBBArPfT5dwaKYMCXeMQsdRO7ihTO/cuNLGjd50ITCDn+ZU/YbS0Go64SjP9154eopxg==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "^2.0.0" @@ -7254,6 +7257,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.0.0.tgz", "integrity": "sha512-SbtvAMWvASO5TE2QP07jHBMXKafgdZz8Vrsrn96fiL+O92/FN/PLARzUW5sKt013fjAprK2d2iCn2hk2Xb5oow==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.20" @@ -7263,6 +7267,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.0.1.tgz", "integrity": "sha512-5z9FbYTZPAo8iKsNEqRNv+OlpBbDcoE+SY9GjLfDUHEfcNNV7tS9eSAlFHEaub/r5tBL9LtskAeq1l9SaoZ5tQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "^2.0.0" diff --git a/package.json b/package.json index 168dbfd4..89545a37 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "@types/pump": "^1.1.3", "@types/readable-stream": "^4.0.19", "@vitest/coverage-istanbul": "^3.1.4", + "color": "^5.0.0", "cross-env": "^7.0.3", "eslint": "^9.27.0", "husky": "^9.1.7", @@ -93,7 +94,8 @@ "vitest": "^3.1.4" }, "peerDependencies": { - "@babel/runtime": "7.x" + "@babel/runtime": "7.x", + "color": "^5.x" }, "optionalDependencies": { "@nx/nx-linux-x64-gnu": "^21.1.1", @@ -127,7 +129,6 @@ "base64url": "^3.0.1", "bip39": "^3.1.0", "bn.js": "^5.2.2", - "color": "^5.0.0", "deepmerge": "^4.3.1", "enc-utils": "^3.0.0", "end-of-stream": "^1.4.4", diff --git a/src/utils/whitelabel.ts b/src/utils/whitelabel.ts index d6de7152..ce69aaa9 100644 --- a/src/utils/whitelabel.ts +++ b/src/utils/whitelabel.ts @@ -1,17 +1,25 @@ -import Color from "color"; +import type { ColorConstructor } from "color"; import { type WHITE_LABEL_THEME } from "./interfaces"; -export function getColorsList(colorsAmount = 3, colorsShiftAmount = 50, mixColor = "black", rotate = 0, saturation = 20, mainColor = "#0346ff") { +export function getColorsList( + colorPackage: ColorConstructor, + colorsAmount = 3, + colorsShiftAmount = 50, + mixColor = "black", + rotate = 0, + saturation = 20, + mainColor = "#0346ff" +) { const colorsList = []; let step; for (step = 0; step < colorsAmount; step += 1) { colorsList.push( - Color(mainColor) + colorPackage(mainColor) .rotate(((step + 1) / colorsAmount) * -rotate) .saturate(((step + 1) / colorsAmount) * (saturation / 100)) - .mix(Color(mixColor), ((colorsShiftAmount / 100) * (step + 1)) / colorsAmount) + .mix(colorPackage(mixColor), ((colorsShiftAmount / 100) * (step + 1)) / colorsAmount) .hex() ); } @@ -19,15 +27,15 @@ export function getColorsList(colorsAmount = 3, colorsShiftAmount = 50, mixColor return colorsList; } -export function generateWhiteLabelTheme(primary: string) { - const darkSet = getColorsList(3, 50, "black", 0, 20, primary); - const lightSet = getColorsList(6, 85, "white", 0, 20, primary); +export function generateWhiteLabelTheme(colorPackage: ColorConstructor, primary: string) { + const darkSet = getColorsList(colorPackage, 3, 50, "black", 0, 20, primary); + const lightSet = getColorsList(colorPackage, 6, 85, "white", 0, 20, primary); return [...darkSet.reverse(), primary, ...lightSet]; } -export function applyWhiteLabelTheme(rootElement: HTMLElement, theme: WHITE_LABEL_THEME) { +export function applyWhiteLabelTheme(colorPackage: ColorConstructor, rootElement: HTMLElement, theme: WHITE_LABEL_THEME) { if (theme.primary) { - const themeSet = generateWhiteLabelTheme(theme.primary); + const themeSet = generateWhiteLabelTheme(colorPackage, theme.primary); rootElement.style.setProperty("--app-primary-900", themeSet[0]); rootElement.style.setProperty("--app-primary-800", themeSet[1]);