From 583a21601c7a14a5b8aa674ece5358f14b13d878 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?L=C3=A9o=20Banno-Cloutier?=
 <leo.banno-cloutier@savoirfairelinux.com>
Date: Mon, 24 Jul 2023 16:32:41 -0400
Subject: [PATCH] jams-react-client: add dynamic text color in CustomUiPreview

Change-Id: Ia2fda0570ae8d834bf6723fe015ca15a8f74b64b
---
 .../src/components/CustomUiPreview/CustomUiPreview.js      | 2 ++
 .../src/components/CustomUiPreview/JamiIdCard.js           | 3 ++-
 jams-react-client/src/components/CustomUiPreview/TipBox.js | 7 ++++++-
 jams-react-client/src/components/CustomUiPreview/luma.js   | 7 +++++++
 4 files changed, 17 insertions(+), 2 deletions(-)
 create mode 100644 jams-react-client/src/components/CustomUiPreview/luma.js

diff --git a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
index 3c78a42b..054233eb 100644
--- a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
+++ b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js
@@ -10,6 +10,7 @@ import JamiIdCard from "./JamiIdCard";
 import i18next from "i18next";
 import { url_path } from "../../globalUrls";
 import { url_port } from "../../globalUrls";
+import { luma } from "./luma";
 
 const styles = {
   root: {
@@ -80,6 +81,7 @@ const styles = {
     backgroundColor: (props) => props.mainBoxColor,
     padding: "10px",
     width: "50%",
+    color: (props) => (luma(props.mainBoxColor) ? "#ffffff" : "#000000"),
   },
   title: {
     margin: 0,
diff --git a/jams-react-client/src/components/CustomUiPreview/JamiIdCard.js b/jams-react-client/src/components/CustomUiPreview/JamiIdCard.js
index 78e1a4bd..0b13fee7 100644
--- a/jams-react-client/src/components/CustomUiPreview/JamiIdCard.js
+++ b/jams-react-client/src/components/CustomUiPreview/JamiIdCard.js
@@ -6,6 +6,7 @@ import jamiIdImage from "assets/img/jami_id.svg";
 import copySvg from "assets/img/BTN_Copy.svg";
 import shareSvg from "assets/img/BTN_Share.svg";
 import { infoColor } from "assets/jss/material-dashboard-react";
+import { luma } from "./luma";
 
 const styles = {
   root: {
@@ -37,7 +38,7 @@ const styles = {
     flex: 2,
     textAlign: "center",
     fontSize: "12px",
-    color: infoColor[0],
+    color: (props) => (luma(props.color) ? "#03B9E9" : "#005699"),
   },
   icons: {
     display: "flex",
diff --git a/jams-react-client/src/components/CustomUiPreview/TipBox.js b/jams-react-client/src/components/CustomUiPreview/TipBox.js
index 7106c3ea..d3961cee 100644
--- a/jams-react-client/src/components/CustomUiPreview/TipBox.js
+++ b/jams-react-client/src/components/CustomUiPreview/TipBox.js
@@ -2,6 +2,7 @@ import React from "react";
 import { makeStyles } from "@mui/styles";
 
 import tipLightBulbImage from "assets/img/tip_light_bulb.svg";
+import { luma } from "./luma";
 
 const styles = {
   root: {
@@ -18,17 +19,21 @@ const styles = {
     verticalAlign: "middle",
     fontSize: "8px",
     marginLeft: "0.5rem",
+    color: (props) => props.fontColor,
   },
   text: {
     fontSize: "6px",
     margin: 0,
+    color: (props) => props.fontColor,
   },
 };
 
 const useStyles = makeStyles(styles);
 
 export default function TipBox({ color, text }) {
-  const classes = useStyles({ color });
+  const fontColor = luma(color) ? "#ffffff" : "#000000";
+
+  const classes = useStyles({ color, fontColor });
 
   return (
     <div className={classes.root}>
diff --git a/jams-react-client/src/components/CustomUiPreview/luma.js b/jams-react-client/src/components/CustomUiPreview/luma.js
new file mode 100644
index 00000000..f91d3e22
--- /dev/null
+++ b/jams-react-client/src/components/CustomUiPreview/luma.js
@@ -0,0 +1,7 @@
+export const luma = (color) => {
+  const r = parseInt(color.slice(1, 3), 16);
+  const g = parseInt(color.slice(3, 5), 16);
+  const b = parseInt(color.slice(5, 7), 16);
+
+  return 0.2126 * r + 0.7152 * g + 0.0722 * b < 153 /* .6 * 256 */;
+};
-- 
GitLab