/** Returns the styles given options */ export interface FlowChartStyleOptions { arrowheadColor: string; border2: string; clusterBkg: string; clusterBorder: string; edgeLabelBackground: string; fontFamily: string; lineColor: string; mainBkg: string; nodeBorder: string; nodeTextColor: string; tertiaryColor: string; textColor: string; titleColor: string; [key: string]: string; } const genSections = (options: FlowChartStyleOptions) => { let sections = ''; for (let i = 0; i < 5; i++) { sections += ` .subgraph-lvl-${i} { fill: ${options[`surface${i}`]}; stroke: ${options[`surfacePeer${i}`]}; } `; } return sections; }; const getStyles = (options: FlowChartStyleOptions) => `.label { font-family: ${options.fontFamily}; color: ${options.nodeTextColor || options.textColor}; } .cluster-label text { fill: ${options.titleColor}; } .cluster-label span { color: ${options.titleColor}; } .label text,span { fill: ${options.nodeTextColor || options.textColor}; color: ${options.nodeTextColor || options.textColor}; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${options.mainBkg}; stroke: ${options.nodeBorder}; stroke-width: 1px; } .node .label { text-align: center; } .node.clickable { cursor: pointer; } .arrowheadPath { fill: ${options.arrowheadColor}; } .edgePath .path { stroke: ${options.lineColor}; stroke-width: 2.0px; } .flowchart-link { stroke: ${options.lineColor}; fill: none; } .edgeLabel { background-color: ${options.edgeLabelBackground}; rect { opacity: 0.85; background-color: ${options.edgeLabelBackground}; fill: ${options.edgeLabelBackground}; } text-align: center; } .cluster rect { fill: ${options.clusterBkg}; stroke: ${options.clusterBorder}; stroke-width: 1px; } .cluster text { fill: ${options.titleColor}; } .cluster span { color: ${options.titleColor}; } /* .cluster div { color: ${options.titleColor}; } */ div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: ${options.fontFamily}; font-size: 12px; background: ${options.tertiaryColor}; border: 1px solid ${options.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .flowchartTitleText { text-anchor: middle; font-size: 18px; fill: ${options.textColor}; } .subgraph { stroke-width:2; rx:3; } // .subgraph-lvl-1 { // fill:#ccc; // // stroke:black; // } .flowchart-label text { text-anchor: middle; } ${genSections(options)} `; export default getStyles;