import { getThemeVariables as baseThemeVariables } from './theme-base'; import { getThemeVariables as darkThemeVariables } from './theme-dark'; import { getThemeVariables as defaultThemeVariables } from './theme-default'; import { getThemeVariables as forestThemeVariables } from './theme-forest'; import { getThemeVariables as neutralThemeVariables } from './theme-neutral'; export default { base: { getThemeVariables: baseThemeVariables, }, dark: { getThemeVariables: darkThemeVariables, }, default: { getThemeVariables: defaultThemeVariables, }, forest: { getThemeVariables: forestThemeVariables, }, neutral: { getThemeVariables: neutralThemeVariables, }, };
import { darken, lighten, adjust, invert } from 'khroma'; import { mkBorder } from './theme-helpers'; class Theme { constructor() { /** # Base variables */ /** * - Background - used to know what the background color is of the diagram. This is used for * deducing colors for instance line color. Default value is #f4f4f4. */ this.background = '#f4f4f4'; this.darkMode = false; this.primaryColor = '#fff4dd'; this.noteBkgColor = '#fff5ad'; this.noteTextColor = '#333'; // dark this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'; this.fontSize = '16px'; } updateColors() { // The || is to make sure that if the variable has been defined by a user override that value is to be used /* Main */ this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#eee' : '#333'); // invert(this.primaryColor); this.secondaryColor = this.secondaryColor || adjust(this.primaryColor, { h: -120 }); this.tertiaryColor = this.tertiaryColor || adjust(this.primaryColor, { h: 180, l: 5 }); this.primaryBorderColor = this.primaryBorderColor || mkBorder(this.primaryColor, this.darkMode); this.secondaryBorderColor = this.secondaryBorderColor || mkBorder(this.secondaryColor, this.darkMode); this.tertiaryBorderColor = this.tertiaryBorderColor || mkBorder(this.tertiaryColor, this.darkMode); this.noteBorderColor = this.noteBorderColor || mkBorder(this.noteBkgColor, this.darkMode); this.noteBkgColor = this.noteBkgColor || '#fff5ad'; this.noteTextColor = this.noteTextColor || '#333'; this.secondaryTextColor = this.secondaryTextColor || invert(this.secondaryColor); this.tertiaryTextColor = this.tertiaryTextColor || invert(this.tertiaryColor); this.lineColor = this.lineColor || invert(this.background); this.textColor = this.textColor || this.primaryTextColor; /* Flowchart variables */ this.nodeBkg = this.nodeBkg || this.primaryColor; this.mainBkg = this.mainBkg || this.primaryColor; this.nodeBorder = this.nodeBorder || this.primaryBorderColor; this.clusterBkg = this.clusterBkg || this.tertiaryColor; this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor; this.defaultLinkColor = this.defaultLinkColor || this.lineColor; this.titleColor = this.titleColor || this.tertiaryTextColor; this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor); this.nodeTextColor = this.nodeTextColor || this.primaryTextColor; /* Sequence Diagram variables */ // this.actorBorder = lighten(this.border1, 0.5); this.actorBorder = this.actorBorder || this.primaryBorderColor; this.actorBkg = this.actorBkg || this.mainBkg; this.actorTextColor = this.actorTextColor || this.primaryTextColor; this.actorLineColor = this.actorLineColor || 'grey'; this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg; this.signalColor = this.signalColor || this.textColor; this.signalTextColor = this.signalTextColor || this.textColor; this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder; this.labelTextColor = this.labelTextColor || this.actorTextColor; this.loopTextColor = this.loopTextColor || this.actorTextColor; this.activationBorderColor = this.activationBorderColor || darken(this.secondaryColor, 10); this.activationBkgColor = this.activationBkgColor || this.secondaryColor; this.sequenceNumberColor = this.sequenceNumberColor || invert(this.lineColor); /* Gantt chart variables */ this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor; this.altSectionBkgColor = this.altSectionBkgColor || 'white'; this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor; this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor; this.excludeBkgColor = this.excludeBkgColor || '#eeeeee'; this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor; this.taskBkgColor = this.taskBkgColor || this.primaryColor; this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor; this.activeTaskBkgColor = this.activeTaskBkgColor || lighten(this.primaryColor, 23); this.gridColor = this.gridColor || 'lightgrey'; this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey'; this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey'; this.critBorderColor = this.critBorderColor || '#ff8888'; this.critBkgColor = this.critBkgColor || 'red'; this.todayLineColor = this.todayLineColor || 'red'; this.taskTextColor = this.taskTextColor || this.textColor; this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor; this.taskTextLightColor = this.taskTextLightColor || this.textColor; this.taskTextColor = this.taskTextColor || this.primaryTextColor; this.taskTextDarkColor = this.taskTextDarkColor || this.textColor; this.taskTextClickableColor = this.taskTextClickableColor || '#003163'; /* Sequence Diagram variables */ this.personBorder = this.personBorder || this.primaryBorderColor; this.personBkg = this.personBkg || this.mainBkg; /* state colors */ this.transitionColor = this.transitionColor || this.lineColor; this.transitionLabelColor = this.transitionLabelColor || this.textColor; /* The color of the text tables of the states*/ this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor; this.stateBkg = this.stateBkg || this.mainBkg; this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg; this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor; this.altBackground = this.altBackground || this.tertiaryColor; this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg; this.compositeBorder = this.compositeBorder || this.nodeBorder; this.innerEndBackground = this.nodeBorder; this.errorBkgColor = this.errorBkgColor || this.tertiaryColor; this.errorTextColor = this.errorTextColor || this.tertiaryTextColor; this.transitionColor = this.transitionColor || this.lineColor; this.specialStateColor = this.lineColor; /* class */ this.classText = this.classText || this.textColor; /* user-journey */ this.fillType0 = this.fillType0 || this.primaryColor; this.fillType1 = this.fillType1 || this.secondaryColor; this.fillType2 = this.fillType2 || adjust(this.primaryColor, { h: 64 }); this.fillType3 = this.fillType3 || adjust(this.secondaryColor, { h: 64 }); this.fillType4 = this.fillType4 || adjust(this.primaryColor, { h: -64 }); this.fillType5 = this.fillType5 || adjust(this.secondaryColor, { h: -64 }); this.fillType6 = this.fillType6 || adjust(this.primaryColor, { h: 128 }); this.fillType7 = this.fillType7 || adjust(this.secondaryColor, { h: 128 }); /* pie */ this.pie1 = this.pie1 || this.primaryColor; this.pie2 = this.pie2 || this.secondaryColor; this.pie3 = this.pie3 || this.tertiaryColor; this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 }); this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 }); this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 }); this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 }); this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 }); this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 }); this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 }); this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 }); this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 }); this.pieTitleTextSize = this.pieTitleTextSize || '25px'; this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor; this.pieSectionTextSize = this.pieSectionTextSize || '17px'; this.pieSectionTextColor = this.pieSectionTextColor || this.textColor; this.pieLegendTextSize = this.pieLegendTextSize || '17px'; this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor; this.pieStrokeColor = this.pieStrokeColor || 'black'; this.pieStrokeWidth = this.pieStrokeWidth || '2px'; this.pieOpacity = this.pieOpacity || '0.7'; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor; this.requirementTextColor = this.requirementTextColor || this.primaryTextColor; this.relationColor = this.relationColor || this.lineColor; this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor); this.relationLabelColor = this.relationLabelColor || this.actorTextColor; /* git */ this.git0 = this.git0 || this.primaryColor; this.git1 = this.git1 || this.secondaryColor; this.git2 = this.git2 || this.tertiaryColor; this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 }); this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 }); this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 }); this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 }); this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 }); if (this.darkMode) { this.git0 = lighten(this.git0, 25); this.git1 = lighten(this.git1, 25); this.git2 = lighten(this.git2, 25); this.git3 = lighten(this.git3, 25); this.git4 = lighten(this.git4, 25); this.git5 = lighten(this.git5, 25); this.git6 = lighten(this.git6, 25); this.git7 = lighten(this.git7, 25); } else { this.git0 = darken(this.git0, 25); this.git1 = darken(this.git1, 25); this.git2 = darken(this.git2, 25); this.git3 = darken(this.git3, 25); this.git4 = darken(this.git4, 25); this.git5 = darken(this.git5, 25); this.git6 = darken(this.git6, 25); this.git7 = darken(this.git7, 25); } this.gitInv0 = this.gitInv0 || invert(this.git0); this.gitInv1 = this.gitInv1 || invert(this.git1); this.gitInv2 = this.gitInv2 || invert(this.git2); this.gitInv3 = this.gitInv3 || invert(this.git3); this.gitInv4 = this.gitInv4 || invert(this.git4); this.gitInv5 = this.gitInv5 || invert(this.git5); this.gitInv6 = this.gitInv6 || invert(this.git6); this.gitInv7 = this.gitInv7 || invert(this.git7); this.branchLabelColor = this.branchLabelColor || (this.darkMode ? 'black' : this.labelTextColor); this.gitBranchLabel0 = this.gitBranchLabel0 || this.branchLabelColor; this.gitBranchLabel1 = this.gitBranchLabel1 || this.branchLabelColor; this.gitBranchLabel2 = this.gitBranchLabel2 || this.branchLabelColor; this.gitBranchLabel3 = this.gitBranchLabel3 || this.branchLabelColor; this.gitBranchLabel4 = this.gitBranchLabel4 || this.branchLabelColor; this.gitBranchLabel5 = this.gitBranchLabel5 || this.branchLabelColor; this.gitBranchLabel6 = this.gitBranchLabel6 || this.branchLabelColor; this.gitBranchLabel7 = this.gitBranchLabel7 || this.branchLabelColor; this.tagLabelColor = this.tagLabelColor || this.primaryTextColor; this.tagLabelBackground = this.tagLabelBackground || this.primaryColor; this.tagLabelBorder = this.tagBorder || this.primaryBorderColor; this.tagLabelFontSize = this.tagLabelFontSize || '10px'; this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor; this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; } calculate(overrides) { if (typeof overrides !== 'object') { // Calculate colors form base colors this.updateColors(); return; } const keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors keys.forEach((k) => { this[k] = overrides[k]; }); // Calculate colors form base colors this.updateColors(); // Copy values from overrides again in case of an override of derived value keys.forEach((k) => { this[k] = overrides[k]; }); } } export const getThemeVariables = (userOverrides) => { const theme = new Theme(); theme.calculate(userOverrides); return theme; };
import { invert, lighten, darken, rgba, adjust } from 'khroma'; import { mkBorder } from './theme-helpers'; class Theme { constructor() { this.background = '#333'; this.primaryColor = '#1f2020'; this.secondaryColor = lighten(this.primaryColor, 16); this.tertiaryColor = adjust(this.primaryColor, { h: -160 }); this.primaryBorderColor = invert(this.background); this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode); this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode); this.primaryTextColor = invert(this.primaryColor); this.secondaryTextColor = invert(this.secondaryColor); this.tertiaryTextColor = invert(this.tertiaryColor); this.lineColor = invert(this.background); this.textColor = invert(this.background); this.mainBkg = '#1f2020'; this.secondBkg = 'calculated'; this.mainContrastColor = 'lightgrey'; this.darkTextColor = lighten(invert('#323D47'), 10); this.lineColor = 'calculated'; this.border1 = '#81B1DB'; this.border2 = rgba(255, 255, 255, 0.25); this.arrowheadColor = 'calculated'; this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'; this.fontSize = '16px'; this.labelBackground = '#181818'; this.textColor = '#ccc'; /* Flowchart variables */ this.nodeBkg = 'calculated'; this.nodeBorder = 'calculated'; this.clusterBkg = 'calculated'; this.clusterBorder = 'calculated'; this.defaultLinkColor = 'calculated'; this.titleColor = '#F9FFFE'; this.edgeLabelBackground = 'calculated'; /* Sequence Diagram variables */ this.actorBorder = 'calculated'; this.actorBkg = 'calculated'; this.actorTextColor = 'calculated'; this.actorLineColor = 'calculated'; this.signalColor = 'calculated'; this.signalTextColor = 'calculated'; this.labelBoxBkgColor = 'calculated'; this.labelBoxBorderColor = 'calculated'; this.labelTextColor = 'calculated'; this.loopTextColor = 'calculated'; this.noteBorderColor = 'calculated'; this.noteBkgColor = '#fff5ad'; this.noteTextColor = 'calculated'; this.activationBorderColor = 'calculated'; this.activationBkgColor = 'calculated'; this.sequenceNumberColor = 'black'; /* Gantt chart variables */ this.sectionBkgColor = darken('#EAE8D9', 30); this.altSectionBkgColor = 'calculated'; this.sectionBkgColor2 = '#EAE8D9'; this.taskBorderColor = rgba(255, 255, 255, 70); this.taskBkgColor = 'calculated'; this.taskTextColor = 'calculated'; this.taskTextLightColor = 'calculated'; this.taskTextOutsideColor = 'calculated'; this.taskTextClickableColor = '#003163'; this.activeTaskBorderColor = rgba(255, 255, 255, 50); this.activeTaskBkgColor = '#81B1DB'; this.gridColor = 'calculated'; this.doneTaskBkgColor = 'calculated'; this.doneTaskBorderColor = 'grey'; this.critBorderColor = '#E83737'; this.critBkgColor = '#E83737'; this.taskTextDarkColor = 'calculated'; this.todayLineColor = '#DB5757'; /* C4 Context Diagram variables */ this.personBorder = 'calculated'; this.personBkg = 'calculated'; /* state colors */ this.labelColor = 'calculated'; this.errorBkgColor = '#a44141'; this.errorTextColor = '#ddd'; } updateColors() { this.secondBkg = lighten(this.mainBkg, 16); this.lineColor = this.mainContrastColor; this.arrowheadColor = this.mainContrastColor; /* Flowchart variables */ this.nodeBkg = this.mainBkg; this.nodeBorder = this.border1; this.clusterBkg = this.secondBkg; this.clusterBorder = this.border2; this.defaultLinkColor = this.lineColor; this.edgeLabelBackground = lighten(this.labelBackground, 25); /* Sequence Diagram variables */ this.actorBorder = this.border1; this.actorBkg = this.mainBkg; this.actorTextColor = this.mainContrastColor; this.actorLineColor = this.mainContrastColor; this.signalColor = this.mainContrastColor; this.signalTextColor = this.mainContrastColor; this.labelBoxBkgColor = this.actorBkg; this.labelBoxBorderColor = this.actorBorder; this.labelTextColor = this.mainContrastColor; this.loopTextColor = this.mainContrastColor; this.noteBorderColor = this.secondaryBorderColor; this.noteBkgColor = this.secondBkg; this.noteTextColor = this.secondaryTextColor; this.activationBorderColor = this.border1; this.activationBkgColor = this.secondBkg; /* Gantt chart variables */ this.altSectionBkgColor = this.background; this.taskBkgColor = lighten(this.mainBkg, 23); this.taskTextColor = this.darkTextColor; this.taskTextLightColor = this.mainContrastColor; this.taskTextOutsideColor = this.taskTextLightColor; this.gridColor = this.mainContrastColor; this.doneTaskBkgColor = this.mainContrastColor; this.taskTextDarkColor = this.darkTextColor; /* state colors */ this.transitionColor = this.transitionColor || this.lineColor; this.transitionLabelColor = this.transitionLabelColor || this.textColor; this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor; this.stateBkg = this.stateBkg || this.mainBkg; this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg; this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor; this.altBackground = this.altBackground || '#555'; this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg; this.compositeBorder = this.compositeBorder || this.nodeBorder; this.innerEndBackground = this.primaryBorderColor; this.specialStateColor = '#f4f4f4'; // this.lineColor; this.errorBkgColor = this.errorBkgColor || this.tertiaryColor; this.errorTextColor = this.errorTextColor || this.tertiaryTextColor; this.fillType0 = this.primaryColor; this.fillType1 = this.secondaryColor; this.fillType2 = adjust(this.primaryColor, { h: 64 }); this.fillType3 = adjust(this.secondaryColor, { h: 64 }); this.fillType4 = adjust(this.primaryColor, { h: -64 }); this.fillType5 = adjust(this.secondaryColor, { h: -64 }); this.fillType6 = adjust(this.primaryColor, { h: 128 }); this.fillType7 = adjust(this.secondaryColor, { h: 128 }); /* pie */ this.pie1 = this.pie1 || '#0b0000'; this.pie2 = this.pie2 || '#4d1037'; this.pie3 = this.pie3 || '#3f5258'; this.pie4 = this.pie4 || '#4f2f1b'; this.pie5 = this.pie5 || '#6e0a0a'; this.pie6 = this.pie6 || '#3b0048'; this.pie7 = this.pie7 || '#995a01'; this.pie8 = this.pie8 || '#154706'; this.pie9 = this.pie9 || '#161722'; this.pie10 = this.pie10 || '#00296f'; this.pie11 = this.pie11 || '#01629c'; this.pie12 = this.pie12 || '#010029'; this.pieTitleTextSize = this.pieTitleTextSize || '25px'; this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor; this.pieSectionTextSize = this.pieSectionTextSize || '17px'; this.pieSectionTextColor = this.pieSectionTextColor || this.textColor; this.pieLegendTextSize = this.pieLegendTextSize || '17px'; this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor; this.pieStrokeColor = this.pieStrokeColor || 'black'; this.pieStrokeWidth = this.pieStrokeWidth || '2px'; this.pieOpacity = this.pieOpacity || '0.7'; /* class */ this.classText = this.primaryTextColor; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor; this.requirementTextColor = this.requirementTextColor || this.primaryTextColor; this.relationColor = this.relationColor || this.lineColor; this.relationLabelBackground = this.relationLabelBackground || (this.darkMode ? darken(this.secondaryColor, 30) : this.secondaryColor); this.relationLabelColor = this.relationLabelColor || this.actorTextColor; /* git */ this.git0 = lighten(this.secondaryColor, 20); this.git1 = lighten(this.pie2 || this.secondaryColor, 20); this.git2 = lighten(this.pie3 || this.tertiaryColor, 20); this.git3 = lighten(this.pie4 || adjust(this.primaryColor, { h: -30 }), 20); this.git4 = lighten(this.pie5 || adjust(this.primaryColor, { h: -60 }), 20); this.git5 = lighten(this.pie6 || adjust(this.primaryColor, { h: -90 }), 10); this.git6 = lighten(this.pie7 || adjust(this.primaryColor, { h: +60 }), 10); this.git7 = lighten(this.pie8 || adjust(this.primaryColor, { h: +120 }), 20); this.gitInv0 = this.gitInv0 || invert(this.git0); this.gitInv1 = this.gitInv1 || invert(this.git1); this.gitInv2 = this.gitInv2 || invert(this.git2); this.gitInv3 = this.gitInv3 || invert(this.git3); this.gitInv4 = this.gitInv4 || invert(this.git4); this.gitInv5 = this.gitInv5 || invert(this.git5); this.gitInv6 = this.gitInv6 || invert(this.git6); this.gitInv7 = this.gitInv7 || invert(this.git7); this.tagLabelColor = this.tagLabelColor || this.primaryTextColor; this.tagLabelBackground = this.tagLabelBackground || this.primaryColor; this.tagLabelBorder = this.tagBorder || this.primaryBorderColor; this.tagLabelFontSize = this.tagLabelFontSize || '10px'; this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor; this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; } calculate(overrides) { if (typeof overrides !== 'object') { // Calculate colors form base colors this.updateColors(); return; } const keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors keys.forEach((k) => { this[k] = overrides[k]; }); // Calculate colors form base colors this.updateColors(); // Copy values from overrides again in case of an override of derived value keys.forEach((k) => { this[k] = overrides[k]; }); } } export const getThemeVariables = (userOverrides) => { const theme = new Theme(); theme.calculate(userOverrides); return theme; };
import { invert, lighten, rgba, adjust, darken } from 'khroma'; import { mkBorder } from './theme-helpers'; class Theme { constructor() { /* Base variables */ this.background = '#f4f4f4'; this.primaryColor = '#ECECFF'; this.secondaryColor = adjust(this.primaryColor, { h: 120 }); this.secondaryColor = '#ffffde'; this.tertiaryColor = adjust(this.primaryColor, { h: -160 }); this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode); this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode); this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode); this.primaryTextColor = invert(this.primaryColor); this.secondaryTextColor = invert(this.secondaryColor); this.tertiaryTextColor = invert(this.tertiaryColor); this.lineColor = invert(this.background); this.textColor = invert(this.background); this.background = 'white'; this.mainBkg = '#ECECFF'; this.secondBkg = '#ffffde'; this.lineColor = '#333333'; this.border1 = '#9370DB'; this.border2 = '#aaaa33'; this.arrowheadColor = '#333333'; this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'; this.fontSize = '16px'; this.labelBackground = '#e8e8e8'; this.textColor = '#333'; /* Flowchart variables */ this.nodeBkg = 'calculated'; this.nodeBorder = 'calculated'; this.clusterBkg = 'calculated'; this.clusterBorder = 'calculated'; this.defaultLinkColor = 'calculated'; this.titleColor = 'calculated'; this.edgeLabelBackground = 'calculated'; /* Sequence Diagram variables */ this.actorBorder = 'calculated'; this.actorBkg = 'calculated'; this.actorTextColor = 'black'; this.actorLineColor = 'grey'; this.signalColor = 'calculated'; this.signalTextColor = 'calculated'; this.labelBoxBkgColor = 'calculated'; this.labelBoxBorderColor = 'calculated'; this.labelTextColor = 'calculated'; this.loopTextColor = 'calculated'; this.noteBorderColor = 'calculated'; this.noteBkgColor = '#fff5ad'; this.noteTextColor = 'calculated'; this.activationBorderColor = '#666'; this.activationBkgColor = '#f4f4f4'; this.sequenceNumberColor = 'white'; /* Gantt chart variables */ this.sectionBkgColor = 'calculated'; this.altSectionBkgColor = 'calculated'; this.sectionBkgColor2 = 'calculated'; this.excludeBkgColor = '#eeeeee'; this.taskBorderColor = 'calculated'; this.taskBkgColor = 'calculated'; this.taskTextLightColor = 'calculated'; this.taskTextColor = this.taskTextLightColor; this.taskTextDarkColor = 'calculated'; this.taskTextOutsideColor = this.taskTextDarkColor; this.taskTextClickableColor = 'calculated'; this.activeTaskBorderColor = 'calculated'; this.activeTaskBkgColor = 'calculated'; this.gridColor = 'calculated'; this.doneTaskBkgColor = 'calculated'; this.doneTaskBorderColor = 'calculated'; this.critBorderColor = 'calculated'; this.critBkgColor = 'calculated'; this.todayLineColor = 'calculated'; this.sectionBkgColor = rgba(102, 102, 255, 0.49); this.altSectionBkgColor = 'white'; this.sectionBkgColor2 = '#fff400'; this.taskBorderColor = '#534fbc'; this.taskBkgColor = '#8a90dd'; this.taskTextLightColor = 'white'; this.taskTextColor = 'calculated'; this.taskTextDarkColor = 'black'; this.taskTextOutsideColor = 'calculated'; this.taskTextClickableColor = '#003163'; this.activeTaskBorderColor = '#534fbc'; this.activeTaskBkgColor = '#bfc7ff'; this.gridColor = 'lightgrey'; this.doneTaskBkgColor = 'lightgrey'; this.doneTaskBorderColor = 'grey'; this.critBorderColor = '#ff8888'; this.critBkgColor = 'red'; this.todayLineColor = 'red'; /* C4 Context Diagram variables */ this.personBorder = 'calculated'; this.personBkg = 'calculated'; /* state colors */ this.labelColor = 'black'; this.errorBkgColor = '#552222'; this.errorTextColor = '#552222'; this.updateColors(); } updateColors() { /* Flowchart variables */ this.nodeBkg = this.mainBkg; this.nodeBorder = this.border1; // border 1 this.clusterBkg = this.secondBkg; this.clusterBorder = this.border2; this.defaultLinkColor = this.lineColor; this.titleColor = this.textColor; this.edgeLabelBackground = this.labelBackground; /* Sequence Diagram variables */ // this.actorBorder = lighten(this.border1, 0.5); this.actorBorder = lighten(this.border1, 23); this.actorBkg = this.mainBkg; this.labelBoxBkgColor = this.actorBkg; this.signalColor = this.textColor; this.signalTextColor = this.textColor; this.labelBoxBorderColor = this.actorBorder; this.labelTextColor = this.actorTextColor; this.loopTextColor = this.actorTextColor; this.noteBorderColor = this.border2; this.noteTextColor = this.actorTextColor; /* Gantt chart variables */ this.taskTextColor = this.taskTextLightColor; this.taskTextOutsideColor = this.taskTextDarkColor; /* state colors */ this.transitionColor = this.transitionColor || this.lineColor; this.transitionLabelColor = this.transitionLabelColor || this.textColor; this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor; this.stateBkg = this.stateBkg || this.mainBkg; this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg; this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor; this.altBackground = this.altBackground || '#f0f0f0'; this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg; this.compositeBorder = this.compositeBorder || this.nodeBorder; this.innerEndBackground = this.nodeBorder; this.specialStateColor = this.lineColor; this.errorBkgColor = this.errorBkgColor || this.tertiaryColor; this.errorTextColor = this.errorTextColor || this.tertiaryTextColor; this.transitionColor = this.transitionColor || this.lineColor; /* class */ this.classText = this.primaryTextColor; /* journey */ this.fillType0 = this.primaryColor; this.fillType1 = this.secondaryColor; this.fillType2 = adjust(this.primaryColor, { h: 64 }); this.fillType3 = adjust(this.secondaryColor, { h: 64 }); this.fillType4 = adjust(this.primaryColor, { h: -64 }); this.fillType5 = adjust(this.secondaryColor, { h: -64 }); this.fillType6 = adjust(this.primaryColor, { h: 128 }); this.fillType7 = adjust(this.secondaryColor, { h: 128 }); /* pie */ this.pie1 = this.pie1 || this.primaryColor; this.pie2 = this.pie2 || this.secondaryColor; this.pie3 = this.pie3 || adjust(this.tertiaryColor, { l: -40 }); this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -10 }); this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 }); this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -20 }); this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -20 }); this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -40 }); this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: -40 }); this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -40 }); this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -90, l: -40 }); this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -30 }); this.pieTitleTextSize = this.pieTitleTextSize || '25px'; this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor; this.pieSectionTextSize = this.pieSectionTextSize || '17px'; this.pieSectionTextColor = this.pieSectionTextColor || this.textColor; this.pieLegendTextSize = this.pieLegendTextSize || '17px'; this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor; this.pieStrokeColor = this.pieStrokeColor || 'black'; this.pieStrokeWidth = this.pieStrokeWidth || '2px'; this.pieOpacity = this.pieOpacity || '0.7'; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor; this.requirementTextColor = this.requirementTextColor || this.primaryTextColor; this.relationColor = this.relationColor || this.lineColor; this.relationLabelBackground = this.relationLabelBackground || this.labelBackground; this.relationLabelColor = this.relationLabelColor || this.actorTextColor; /* git */ this.git0 = this.git0 || this.primaryColor; this.git1 = this.git1 || this.secondaryColor; this.git2 = this.git2 || this.tertiaryColor; this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 }); this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 }); this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 }); this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 }); this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 }); if (this.darkMode) { this.git0 = lighten(this.git0, 25); this.git1 = lighten(this.git1, 25); this.git2 = lighten(this.git2, 25); this.git3 = lighten(this.git3, 25); this.git4 = lighten(this.git4, 25); this.git5 = lighten(this.git5, 25); this.git6 = lighten(this.git6, 25); this.git7 = lighten(this.git7, 25); } else { this.git0 = darken(this.git0, 25); this.git1 = darken(this.git1, 25); this.git2 = darken(this.git2, 25); this.git3 = darken(this.git3, 25); this.git4 = darken(this.git4, 25); this.git5 = darken(this.git5, 25); this.git6 = darken(this.git6, 25); this.git7 = darken(this.git7, 25); } this.gitInv0 = this.gitInv0 || darken(invert(this.git0), 25); this.gitInv1 = this.gitInv1 || invert(this.git1); this.gitInv2 = this.gitInv2 || invert(this.git2); this.gitInv3 = this.gitInv3 || invert(this.git3); this.gitInv4 = this.gitInv4 || invert(this.git4); this.gitInv5 = this.gitInv5 || invert(this.git5); this.gitInv6 = this.gitInv6 || invert(this.git6); this.gitInv7 = this.gitInv7 || invert(this.git7); this.gitBranchLabel0 = this.gitBranchLabel0 || invert(this.labelTextColor); this.gitBranchLabel1 = this.gitBranchLabel1 || this.labelTextColor; this.gitBranchLabel2 = this.gitBranchLabel2 || this.labelTextColor; this.gitBranchLabel3 = this.gitBranchLabel3 || invert(this.labelTextColor); this.gitBranchLabel4 = this.gitBranchLabel4 || this.labelTextColor; this.gitBranchLabel5 = this.gitBranchLabel5 || this.labelTextColor; this.gitBranchLabel6 = this.gitBranchLabel6 || this.labelTextColor; this.gitBranchLabel7 = this.gitBranchLabel7 || this.labelTextColor; this.tagLabelColor = this.tagLabelColor || this.primaryTextColor; this.tagLabelBackground = this.tagLabelBackground || this.primaryColor; this.tagLabelBorder = this.tagBorder || this.primaryBorderColor; this.tagLabelFontSize = this.tagLabelFontSize || '10px'; this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor; this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; } calculate(overrides) { if (typeof overrides !== 'object') { // Calculate colors form base colors this.updateColors(); return; } const keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors keys.forEach((k) => { this[k] = overrides[k]; }); // Calculate colors form base colors this.updateColors(); // Copy values from overrides again in case of an override of derived value keys.forEach((k) => { this[k] = overrides[k]; }); } } export const getThemeVariables = (userOverrides) => { const theme = new Theme(); theme.calculate(userOverrides); return theme; };
import { darken, lighten, adjust, invert } from 'khroma'; import { mkBorder } from './theme-helpers'; class Theme { constructor() { /* Base vales */ this.background = '#f4f4f4'; this.primaryColor = '#cde498'; this.secondaryColor = '#cdffb2'; this.background = 'white'; this.mainBkg = '#cde498'; this.secondBkg = '#cdffb2'; this.lineColor = 'green'; this.border1 = '#13540c'; this.border2 = '#6eaa49'; this.arrowheadColor = 'green'; this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'; this.fontSize = '16px'; this.tertiaryColor = lighten('#cde498', 10); this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode); this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode); this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode); this.primaryTextColor = invert(this.primaryColor); this.secondaryTextColor = invert(this.secondaryColor); this.tertiaryTextColor = invert(this.primaryColor); this.lineColor = invert(this.background); this.textColor = invert(this.background); /* Flowchart variables */ this.nodeBkg = 'calculated'; this.nodeBorder = 'calculated'; this.clusterBkg = 'calculated'; this.clusterBorder = 'calculated'; this.defaultLinkColor = 'calculated'; this.titleColor = '#333'; this.edgeLabelBackground = '#e8e8e8'; /* Sequence Diagram variables */ this.actorBorder = 'calculated'; this.actorBkg = 'calculated'; this.actorTextColor = 'black'; this.actorLineColor = 'grey'; this.signalColor = '#333'; this.signalTextColor = '#333'; this.labelBoxBkgColor = 'calculated'; this.labelBoxBorderColor = '#326932'; this.labelTextColor = 'calculated'; this.loopTextColor = 'calculated'; this.noteBorderColor = 'calculated'; this.noteBkgColor = '#fff5ad'; this.noteTextColor = 'calculated'; this.activationBorderColor = '#666'; this.activationBkgColor = '#f4f4f4'; this.sequenceNumberColor = 'white'; /* Gantt chart variables */ this.sectionBkgColor = '#6eaa49'; this.altSectionBkgColor = 'white'; this.sectionBkgColor2 = '#6eaa49'; this.excludeBkgColor = '#eeeeee'; this.taskBorderColor = 'calculated'; this.taskBkgColor = '#487e3a'; this.taskTextLightColor = 'white'; this.taskTextColor = 'calculated'; this.taskTextDarkColor = 'black'; this.taskTextOutsideColor = 'calculated'; this.taskTextClickableColor = '#003163'; this.activeTaskBorderColor = 'calculated'; this.activeTaskBkgColor = 'calculated'; this.gridColor = 'lightgrey'; this.doneTaskBkgColor = 'lightgrey'; this.doneTaskBorderColor = 'grey'; this.critBorderColor = '#ff8888'; this.critBkgColor = 'red'; this.todayLineColor = 'red'; /* C4 Context Diagram variables */ this.personBorder = 'calculated'; this.personBkg = 'calculated'; /* state colors */ this.labelColor = 'black'; this.errorBkgColor = '#552222'; this.errorTextColor = '#552222'; } updateColors() { /* Flowchart variables */ this.nodeBkg = this.mainBkg; this.nodeBorder = this.border1; this.clusterBkg = this.secondBkg; this.clusterBorder = this.border2; this.defaultLinkColor = this.lineColor; /* Sequence Diagram variables */ this.actorBorder = darken(this.mainBkg, 20); this.actorBkg = this.mainBkg; this.labelBoxBkgColor = this.actorBkg; this.labelTextColor = this.actorTextColor; this.loopTextColor = this.actorTextColor; this.noteBorderColor = this.border2; this.noteTextColor = this.actorTextColor; /* Gantt chart variables */ this.taskBorderColor = this.border1; this.taskTextColor = this.taskTextLightColor; this.taskTextOutsideColor = this.taskTextDarkColor; this.activeTaskBorderColor = this.taskBorderColor; this.activeTaskBkgColor = this.mainBkg; /* state colors */ this.transitionColor = this.transitionColor || this.lineColor; this.transitionLabelColor = this.transitionLabelColor || this.textColor; this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor; this.stateBkg = this.stateBkg || this.mainBkg; this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg; this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor; this.altBackground = this.altBackground || '#f0f0f0'; this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg; this.compositeBorder = this.compositeBorder || this.nodeBorder; this.innerEndBackground = this.primaryBorderColor; this.specialStateColor = this.lineColor; this.errorBkgColor = this.errorBkgColor || this.tertiaryColor; this.errorTextColor = this.errorTextColor || this.tertiaryTextColor; this.transitionColor = this.transitionColor || this.lineColor; /* class */ this.classText = this.primaryTextColor; /* journey */ this.fillType0 = this.primaryColor; this.fillType1 = this.secondaryColor; this.fillType2 = adjust(this.primaryColor, { h: 64 }); this.fillType3 = adjust(this.secondaryColor, { h: 64 }); this.fillType4 = adjust(this.primaryColor, { h: -64 }); this.fillType5 = adjust(this.secondaryColor, { h: -64 }); this.fillType6 = adjust(this.primaryColor, { h: 128 }); this.fillType7 = adjust(this.secondaryColor, { h: 128 }); /* pie */ this.pie1 = this.pie1 || this.primaryColor; this.pie2 = this.pie2 || this.secondaryColor; this.pie3 = this.pie3 || this.tertiaryColor; this.pie4 = this.pie4 || adjust(this.primaryColor, { l: -30 }); this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -30 }); this.pie6 = this.pie6 || adjust(this.tertiaryColor, { h: +40, l: -40 }); this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 }); this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 }); this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 }); this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -50 }); this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -50 }); this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -50 }); this.pieTitleTextSize = this.pieTitleTextSize || '25px'; this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor; this.pieSectionTextSize = this.pieSectionTextSize || '17px'; this.pieSectionTextColor = this.pieSectionTextColor || this.textColor; this.pieLegendTextSize = this.pieLegendTextSize || '17px'; this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor; this.pieStrokeColor = this.pieStrokeColor || 'black'; this.pieStrokeWidth = this.pieStrokeWidth || '2px'; this.pieOpacity = this.pieOpacity || '0.7'; /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor; this.requirementTextColor = this.requirementTextColor || this.primaryTextColor; this.relationColor = this.relationColor || this.lineColor; this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground; this.relationLabelColor = this.relationLabelColor || this.actorTextColor; /* git */ this.git0 = this.git0 || this.primaryColor; this.git1 = this.git1 || this.secondaryColor; this.git2 = this.git2 || this.tertiaryColor; this.git3 = this.git3 || adjust(this.primaryColor, { h: -30 }); this.git4 = this.git4 || adjust(this.primaryColor, { h: -60 }); this.git5 = this.git5 || adjust(this.primaryColor, { h: -90 }); this.git6 = this.git6 || adjust(this.primaryColor, { h: +60 }); this.git7 = this.git7 || adjust(this.primaryColor, { h: +120 }); if (this.darkMode) { this.git0 = lighten(this.git0, 25); this.git1 = lighten(this.git1, 25); this.git2 = lighten(this.git2, 25); this.git3 = lighten(this.git3, 25); this.git4 = lighten(this.git4, 25); this.git5 = lighten(this.git5, 25); this.git6 = lighten(this.git6, 25); this.git7 = lighten(this.git7, 25); } else { this.git0 = darken(this.git0, 25); this.git1 = darken(this.git1, 25); this.git2 = darken(this.git2, 25); this.git3 = darken(this.git3, 25); this.git4 = darken(this.git4, 25); this.git5 = darken(this.git5, 25); this.git6 = darken(this.git6, 25); this.git7 = darken(this.git7, 25); } this.gitInv0 = this.gitInv0 || invert(this.git0); this.gitInv1 = this.gitInv1 || invert(this.git1); this.gitInv2 = this.gitInv2 || invert(this.git2); this.gitInv3 = this.gitInv3 || invert(this.git3); this.gitInv4 = this.gitInv4 || invert(this.git4); this.gitInv5 = this.gitInv5 || invert(this.git5); this.gitInv6 = this.gitInv6 || invert(this.git6); this.gitInv7 = this.gitInv7 || invert(this.git7); this.tagLabelColor = this.tagLabelColor || this.primaryTextColor; this.tagLabelBackground = this.tagLabelBackground || this.primaryColor; this.tagLabelBorder = this.tagBorder || this.primaryBorderColor; this.tagLabelFontSize = this.tagLabelFontSize || '10px'; this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor; this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; } calculate(overrides) { if (typeof overrides !== 'object') { // Calculate colors form base colors this.updateColors(); return; } const keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors keys.forEach((k) => { this[k] = overrides[k]; }); // Calculate colors form base colors this.updateColors(); // Copy values from overrides again in case of an override of derived value keys.forEach((k) => { this[k] = overrides[k]; }); } } export const getThemeVariables = (userOverrides) => { const theme = new Theme(); theme.calculate(userOverrides); return theme; };
import { adjust } from 'khroma'; export const mkBorder = (col, darkMode) => darkMode ? adjust(col, { s: -40, l: 10 }) : adjust(col, { s: -40, l: -10 });
import { invert, darken, lighten, adjust } from 'khroma'; import { mkBorder } from './theme-helpers'; // const Color = require ( 'khroma/dist/color' ).default // Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => "#EAF2FB" class Theme { constructor() { this.primaryColor = '#eee'; this.contrast = '#707070'; this.secondaryColor = lighten(this.contrast, 55); this.background = '#ffffff'; // this.secondaryColor = adjust(this.primaryColor, { h: 120 }); this.tertiaryColor = adjust(this.primaryColor, { h: -160 }); this.primaryBorderColor = mkBorder(this.primaryColor, this.darkMode); this.secondaryBorderColor = mkBorder(this.secondaryColor, this.darkMode); this.tertiaryBorderColor = mkBorder(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode); this.primaryTextColor = invert(this.primaryColor); this.secondaryTextColor = invert(this.secondaryColor); this.tertiaryTextColor = invert(this.tertiaryColor); this.lineColor = invert(this.background); this.textColor = invert(this.background); // this.altBackground = lighten(this.contrast, 55); this.mainBkg = '#eee'; this.secondBkg = 'calculated'; this.lineColor = '#666'; this.border1 = '#999'; this.border2 = 'calculated'; this.note = '#ffa'; this.text = '#333'; this.critical = '#d42'; this.done = '#bbb'; this.arrowheadColor = '#333333'; this.fontFamily = '"trebuchet ms", verdana, arial, sans-serif'; this.fontSize = '16px'; /* Flowchart variables */ this.nodeBkg = 'calculated'; this.nodeBorder = 'calculated'; this.clusterBkg = 'calculated'; this.clusterBorder = 'calculated'; this.defaultLinkColor = 'calculated'; this.titleColor = 'calculated'; this.edgeLabelBackground = 'white'; /* Sequence Diagram variables */ this.actorBorder = 'calculated'; this.actorBkg = 'calculated'; this.actorTextColor = 'calculated'; this.actorLineColor = 'calculated'; this.signalColor = 'calculated'; this.signalTextColor = 'calculated'; this.labelBoxBkgColor = 'calculated'; this.labelBoxBorderColor = 'calculated'; this.labelTextColor = 'calculated'; this.loopTextColor = 'calculated'; this.noteBorderColor = 'calculated'; this.noteBkgColor = 'calculated'; this.noteTextColor = 'calculated'; this.activationBorderColor = '#666'; this.activationBkgColor = '#f4f4f4'; this.sequenceNumberColor = 'white'; /* Gantt chart variables */ this.sectionBkgColor = 'calculated'; this.altSectionBkgColor = 'white'; this.sectionBkgColor2 = 'calculated'; this.excludeBkgColor = '#eeeeee'; this.taskBorderColor = 'calculated'; this.taskBkgColor = 'calculated'; this.taskTextLightColor = 'white'; this.taskTextColor = 'calculated'; this.taskTextDarkColor = 'calculated'; this.taskTextOutsideColor = 'calculated'; this.taskTextClickableColor = '#003163'; this.activeTaskBorderColor = 'calculated'; this.activeTaskBkgColor = 'calculated'; this.gridColor = 'calculated'; this.doneTaskBkgColor = 'calculated'; this.doneTaskBorderColor = 'calculated'; this.critBkgColor = 'calculated'; this.critBorderColor = 'calculated'; this.todayLineColor = 'calculated'; /* C4 Context Diagram variables */ this.personBorder = 'calculated'; this.personBkg = 'calculated'; /* state colors */ this.labelColor = 'black'; this.errorBkgColor = '#552222'; this.errorTextColor = '#552222'; } updateColors() { this.secondBkg = lighten(this.contrast, 55); this.border2 = this.contrast; /* Flowchart variables */ this.nodeBkg = this.mainBkg; this.nodeBorder = this.border1; this.clusterBkg = this.secondBkg; this.clusterBorder = this.border2; this.defaultLinkColor = this.lineColor; this.titleColor = this.text; /* Sequence Diagram variables */ this.actorBorder = lighten(this.border1, 23); this.actorBkg = this.mainBkg; this.actorTextColor = this.text; this.actorLineColor = this.lineColor; this.signalColor = this.text; this.signalTextColor = this.text; this.labelBoxBkgColor = this.actorBkg; this.labelBoxBorderColor = this.actorBorder; this.labelTextColor = this.text; this.loopTextColor = this.text; this.noteBorderColor = '#999'; this.noteBkgColor = '#666'; this.noteTextColor = '#fff'; /* Gantt chart variables */ this.sectionBkgColor = lighten(this.contrast, 30); this.sectionBkgColor2 = lighten(this.contrast, 30); this.taskBorderColor = darken(this.contrast, 10); this.taskBkgColor = this.contrast; this.taskTextColor = this.taskTextLightColor; this.taskTextDarkColor = this.text; this.taskTextOutsideColor = this.taskTextDarkColor; this.activeTaskBorderColor = this.taskBorderColor; this.activeTaskBkgColor = this.mainBkg; this.gridColor = lighten(this.border1, 30); this.doneTaskBkgColor = this.done; this.doneTaskBorderColor = this.lineColor; this.critBkgColor = this.critical; this.critBorderColor = darken(this.critBkgColor, 10); this.todayLineColor = this.critBkgColor; /* state colors */ this.transitionColor = this.transitionColor || '#000'; this.transitionLabelColor = this.transitionLabelColor || this.textColor; this.stateLabelColor = this.stateLabelColor || this.stateBkg || this.primaryTextColor; this.stateBkg = this.stateBkg || this.mainBkg; this.labelBackgroundColor = this.labelBackgroundColor || this.stateBkg; this.compositeBackground = this.compositeBackground || this.background || this.tertiaryColor; this.altBackground = this.altBackground || '#f4f4f4'; this.compositeTitleBackground = this.compositeTitleBackground || this.mainBkg; this.stateBorder = this.stateBorder || '#000'; this.innerEndBackground = this.primaryBorderColor; this.specialStateColor = '#222'; this.errorBkgColor = this.errorBkgColor || this.tertiaryColor; this.errorTextColor = this.errorTextColor || this.tertiaryTextColor; /* class */ this.classText = this.primaryTextColor; /* journey */ this.fillType0 = this.primaryColor; this.fillType1 = this.secondaryColor; this.fillType2 = adjust(this.primaryColor, { h: 64 }); this.fillType3 = adjust(this.secondaryColor, { h: 64 }); this.fillType4 = adjust(this.primaryColor, { h: -64 }); this.fillType5 = adjust(this.secondaryColor, { h: -64 }); this.fillType6 = adjust(this.primaryColor, { h: 128 }); this.fillType7 = adjust(this.secondaryColor, { h: 128 }); // /* pie */ this.pie1 = this.pie1 || '#F4F4F4'; this.pie2 = this.pie2 || '#555'; this.pie3 = this.pie3 || '#BBB'; this.pie4 = this.pie4 || '#777'; this.pie5 = this.pie5 || '#999'; this.pie6 = this.pie6 || '#DDD'; this.pie7 = this.pie7 || '#FFF'; this.pie8 = this.pie8 || '#DDD'; this.pie9 = this.pie9 || '#BBB'; this.pie10 = this.pie10 || '#999'; this.pie11 = this.pie11 || '#777'; this.pie12 = this.pie12 || '#555'; this.pieTitleTextSize = this.pieTitleTextSize || '25px'; this.pieTitleTextColor = this.pieTitleTextColor || this.taskTextDarkColor; this.pieSectionTextSize = this.pieSectionTextSize || '17px'; this.pieSectionTextColor = this.pieSectionTextColor || this.textColor; this.pieLegendTextSize = this.pieLegendTextSize || '17px'; this.pieLegendTextColor = this.pieLegendTextColor || this.taskTextDarkColor; this.pieStrokeColor = this.pieStrokeColor || 'black'; this.pieStrokeWidth = this.pieStrokeWidth || '2px'; this.pieOpacity = this.pieOpacity || '0.7'; // this.pie1 = this.pie1 || '#212529'; // this.pie2 = this.pie2 || '#343A40'; // this.pie3 = this.pie3 || '#495057'; // this.pie4 = this.pie4 || '#6C757D'; // this.pie5 = this.pie5 || adjust(this.secondaryColor, { l: -10 }); // this.pie6 = this.pie6 || adjust(this.tertiaryColor, { l: -10 }); // this.pie7 = this.pie7 || adjust(this.primaryColor, { h: +60, l: -10 }); // this.pie8 = this.pie8 || adjust(this.primaryColor, { h: -60, l: -10 }); // this.pie9 = this.pie9 || adjust(this.primaryColor, { h: 120, l: 0 }); // this.pie10 = this.pie10 || adjust(this.primaryColor, { h: +60, l: -20 }); // this.pie11 = this.pie11 || adjust(this.primaryColor, { h: -60, l: -20 }); // this.pie12 = this.pie12 || adjust(this.primaryColor, { h: 120, l: -10 }); /* requirement-diagram */ this.requirementBackground = this.requirementBackground || this.primaryColor; this.requirementBorderColor = this.requirementBorderColor || this.primaryBorderColor; this.requirementBorderSize = this.requirementBorderSize || this.primaryBorderColor; this.requirementTextColor = this.requirementTextColor || this.primaryTextColor; this.relationColor = this.relationColor || this.lineColor; this.relationLabelBackground = this.relationLabelBackground || this.edgeLabelBackground; this.relationLabelColor = this.relationLabelColor || this.actorTextColor; /* git */ this.git0 = darken(this.pie1, 25) || this.primaryColor; this.git1 = this.pie2 || this.secondaryColor; this.git2 = this.pie3 || this.tertiaryColor; this.git3 = this.pie4 || adjust(this.primaryColor, { h: -30 }); this.git4 = this.pie5 || adjust(this.primaryColor, { h: -60 }); this.git5 = this.pie6 || adjust(this.primaryColor, { h: -90 }); this.git6 = this.pie7 || adjust(this.primaryColor, { h: +60 }); this.git7 = this.pie8 || adjust(this.primaryColor, { h: +120 }); this.gitInv0 = this.gitInv0 || invert(this.git0); this.gitInv1 = this.gitInv1 || invert(this.git1); this.gitInv2 = this.gitInv2 || invert(this.git2); this.gitInv3 = this.gitInv3 || invert(this.git3); this.gitInv4 = this.gitInv4 || invert(this.git4); this.gitInv5 = this.gitInv5 || invert(this.git5); this.gitInv6 = this.gitInv6 || invert(this.git6); this.gitInv7 = this.gitInv7 || invert(this.git7); this.branchLabelColor = this.branchLabelColor || this.labelTextColor; this.gitBranchLabel0 = this.branchLabelColor; this.gitBranchLabel1 = 'white'; this.gitBranchLabel2 = this.branchLabelColor; this.gitBranchLabel3 = 'white'; this.gitBranchLabel4 = this.branchLabelColor; this.gitBranchLabel5 = this.branchLabelColor; this.gitBranchLabel6 = this.branchLabelColor; this.gitBranchLabel7 = this.branchLabelColor; this.tagLabelColor = this.tagLabelColor || this.primaryTextColor; this.tagLabelBackground = this.tagLabelBackground || this.primaryColor; this.tagLabelBorder = this.tagBorder || this.primaryBorderColor; this.tagLabelFontSize = this.tagLabelFontSize || '10px'; this.commitLabelColor = this.commitLabelColor || this.secondaryTextColor; this.commitLabelBackground = this.commitLabelBackground || this.secondaryColor; this.commitLabelFontSize = this.commitLabelFontSize || '10px'; } calculate(overrides) { if (typeof overrides !== 'object') { // Calculate colors form base colors this.updateColors(); return; } const keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors keys.forEach((k) => { this[k] = overrides[k]; }); // Calculate colors form base colors this.updateColors(); // Copy values from overrides again in case of an override of derived value keys.forEach((k) => { this[k] = overrides[k]; }); } } export const getThemeVariables = (userOverrides) => { const theme = new Theme(); theme.calculate(userOverrides); return theme; };
We evaluated the performance of Llama 3.1 vs GPT-4 models on over 150 benchmark datasets…
The manufacturing industry is undergoing a significant transformation with the advent of Industrial IoT Solutions.…
If you're reading this, you must have heard the buzz about ChatGPT and its incredible…
How to Use ChatGPT in Cybersecurity If you're a cybersecurity geek, you've probably heard about…
Introduction In the dynamic world of cryptocurrencies, staying informed about the latest market trends is…
The Events Calendar Widgets for Elementor has become easiest solution for managing events on WordPress…