diff --git a/kerykeion/charts/inline_css.py b/kerykeion/charts/inline_css.py new file mode 100644 index 0000000..59d9a54 --- /dev/null +++ b/kerykeion/charts/inline_css.py @@ -0,0 +1,77 @@ +import re + +import logging + +from typing import Dict + +# Suppress cssutils warnings + + +def resolve_nested_variables(value: str, css_variables: Dict[str, str]) -> str: + """ + Recursively replaces var(--something) with its actual value from CSS variables. + """ + while "var(--" in value: # Keep resolving until no nested variables remain + match = re.search(r"var\((--[^)]+)\)", value) + if not match: + break + var_name = match.group(1) # Extract --variable-name + replacement = css_variables.get(var_name, match.group(0)) # Replace if exists + value = value.replace(match.group(0), replacement) + return value + +def extract_css_variables(svg_content: str) -> Dict[str, str]: + """ + Extracts all CSS variables from