whitphx HF staff commited on
Commit
68778bc
1 Parent(s): d5b9159

Add color samples

Browse files
Files changed (3) hide show
  1. app.py +8 -8
  2. fragments.py +7 -2
  3. util.py +7 -0
app.py CHANGED
@@ -25,10 +25,10 @@ def parse_hex(rgb_hex_str: str) -> tuple[float, float, float]:
25
  raise ValueError("Invalid hex color")
26
  return tuple(int(rgb_hex_str[i:i+2], 16) / 255 for i in (1, 3, 5))
27
 
28
- primary_color_rgb = parse_hex(primary_color)
29
- text_color_rgb = parse_hex(text_color)
30
- background_color_rgb = parse_hex(background_color)
31
- secondary_background_color_rgb = parse_hex(secondary_background_color)
32
 
33
  st.header("WCAG contrast ratio")
34
 
@@ -47,17 +47,17 @@ col1, col2, col3 = st.columns(3)
47
  with col1:
48
  synced_color_picker("Primary color", value=primary_color, key="primaryColor")
49
  with col2:
50
- fragments.contrast_summary(primary_color_rgb, background_color_rgb)
51
  with col3:
52
- fragments.contrast_summary(primary_color_rgb, secondary_background_color_rgb)
53
 
54
  col1, col2, col3 = st.columns(3)
55
  with col1:
56
  synced_color_picker("Text color", value=text_color, key="textColor")
57
  with col2:
58
- fragments.contrast_summary(text_color_rgb, background_color_rgb)
59
  with col3:
60
- fragments.contrast_summary(text_color_rgb, secondary_background_color_rgb)
61
 
62
 
63
  st.header("Config")
 
25
  raise ValueError("Invalid hex color")
26
  return tuple(int(rgb_hex_str[i:i+2], 16) / 255 for i in (1, 3, 5))
27
 
28
+ # primary_color_rgb = parse_hex(primary_color)
29
+ # text_color_rgb = parse_hex(text_color)
30
+ # background_color_rgb = parse_hex(background_color)
31
+ # secondary_background_color_rgb = parse_hex(secondary_background_color)
32
 
33
  st.header("WCAG contrast ratio")
34
 
 
47
  with col1:
48
  synced_color_picker("Primary color", value=primary_color, key="primaryColor")
49
  with col2:
50
+ fragments.contrast_summary(primary_color, background_color)
51
  with col3:
52
+ fragments.contrast_summary(primary_color, secondary_background_color)
53
 
54
  col1, col2, col3 = st.columns(3)
55
  with col1:
56
  synced_color_picker("Text color", value=text_color, key="textColor")
57
  with col2:
58
+ fragments.contrast_summary(text_color, background_color)
59
  with col3:
60
+ fragments.contrast_summary(text_color, secondary_background_color)
61
 
62
 
63
  st.header("Config")
fragments.py CHANGED
@@ -1,12 +1,17 @@
1
  import streamlit as st
2
  import wcag_contrast_ratio as contrast
3
 
 
4
 
5
- def contrast_summary(rgb1: tuple[float, float, float], rgb2: tuple[float, float, float]) -> None:
6
- contrast_ratio = contrast.rgb(rgb1, rgb2)
 
 
 
7
  contrast_ratio_str = f"{contrast_ratio:.2f}"
8
  st.metric("", value=f"{contrast_ratio_str} : 1")
9
 
 
10
 
11
  def sample_components(key: str):
12
  st.slider("Slider", min_value=0, max_value=100, key=f"{key}:slider")
 
1
  import streamlit as st
2
  import wcag_contrast_ratio as contrast
3
 
4
+ import util
5
 
6
+
7
+ def contrast_summary(foreground_rgb_hex: str, background_rgb_hex: str) -> None:
8
+ rgb_foreground = util.parse_hex(foreground_rgb_hex)
9
+ rgb_background = util.parse_hex(background_rgb_hex)
10
+ contrast_ratio = contrast.rgb(rgb_foreground, rgb_background)
11
  contrast_ratio_str = f"{contrast_ratio:.2f}"
12
  st.metric("", value=f"{contrast_ratio_str} : 1")
13
 
14
+ st.markdown(f'<p style="color: {foreground_rgb_hex}; background-color: {background_rgb_hex}; padding: 12px">Lorem ipsum</p>', unsafe_allow_html=True)
15
 
16
  def sample_components(key: str):
17
  st.slider("Slider", min_value=0, max_value=100, key=f"{key}:slider")
util.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ import re
2
+
3
+
4
+ def parse_hex(rgb_hex_str: str) -> tuple[float, float, float]:
5
+ if not re.match(r"^#[0-9a-fA-F]{6}$", rgb_hex_str):
6
+ raise ValueError("Invalid hex color")
7
+ return tuple(int(rgb_hex_str[i:i+2], 16) / 255 for i in (1, 3, 5))