From 8b85780d76ad45675582f4478eedb026b7ac25e1 Mon Sep 17 00:00:00 2001
From: Quentin Gliech <quentingliech@gmail.com>
Date: Thu, 13 Feb 2020 00:53:29 +0100
Subject: webui: start reorganizing the component structure

---
 webui/src/components/Label.tsx | 55 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 webui/src/components/Label.tsx

(limited to 'webui/src/components/Label.tsx')

diff --git a/webui/src/components/Label.tsx b/webui/src/components/Label.tsx
new file mode 100644
index 00000000..48c20096
--- /dev/null
+++ b/webui/src/components/Label.tsx
@@ -0,0 +1,55 @@
+import { common } from '@material-ui/core/colors';
+import { makeStyles } from '@material-ui/core/styles';
+import {
+  getContrastRatio,
+  darken,
+} from '@material-ui/core/styles/colorManipulator';
+import React from 'react';
+
+import { LabelFragment } from './fragments.generated';
+import { Color } from '../gqlTypes';
+
+// Minimum contrast between the background and the text color
+const contrastThreshold = 2.5;
+
+// Guess the text color based on the background color
+const getTextColor = (background: string) =>
+  getContrastRatio(background, common.white) >= contrastThreshold
+    ? common.white // White on dark backgrounds
+    : common.black; // And black on light ones
+
+const _rgb = (color: Color) =>
+  'rgb(' + color.R + ',' + color.G + ',' + color.B + ')';
+
+// Create a style object from the label RGB colors
+const createStyle = (color: Color) => ({
+  backgroundColor: _rgb(color),
+  color: getTextColor(_rgb(color)),
+  borderBottomColor: darken(_rgb(color), 0.2),
+});
+
+const useStyles = makeStyles(theme => ({
+  label: {
+    ...theme.typography.body1,
+    padding: '1px 6px 0.5px',
+    fontSize: '0.9em',
+    fontWeight: 500,
+    margin: '0.05em 1px calc(-1.5px + 0.05em)',
+    borderRadius: '3px',
+    display: 'inline-block',
+    borderBottom: 'solid 1.5px',
+    verticalAlign: 'bottom',
+  },
+}));
+
+type Props = { label: LabelFragment };
+function Label({ label }: Props) {
+  const classes = useStyles();
+  return (
+    <span className={classes.label} style={createStyle(label.color)}>
+      {label.name}
+    </span>
+  );
+}
+
+export default Label;
-- 
cgit 


From ce6f6a984b374b189141116433ced80dfa0c2aae Mon Sep 17 00:00:00 2001
From: Quentin Gliech <quentingliech@gmail.com>
Date: Thu, 13 Feb 2020 20:00:03 +0100
Subject: webui: move pages components

---
 webui/src/components/Label.tsx | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'webui/src/components/Label.tsx')

diff --git a/webui/src/components/Label.tsx b/webui/src/components/Label.tsx
index 48c20096..1fb8caea 100644
--- a/webui/src/components/Label.tsx
+++ b/webui/src/components/Label.tsx
@@ -1,13 +1,15 @@
+import React from 'react';
+
 import { common } from '@material-ui/core/colors';
 import { makeStyles } from '@material-ui/core/styles';
 import {
   getContrastRatio,
   darken,
 } from '@material-ui/core/styles/colorManipulator';
-import React from 'react';
+
+import { Color } from 'src/gqlTypes';
 
 import { LabelFragment } from './fragments.generated';
-import { Color } from '../gqlTypes';
 
 // Minimum contrast between the background and the text color
 const contrastThreshold = 2.5;
-- 
cgit 

