- ${config.noticeText ? `
${config.noticeText}
` : ''}
+ ${
+ config.noticeText
+ ? `
${config.noticeText}
`
+ : ''
+ }
@@ -89,17 +93,14 @@ export abstract class SimUI extends Component {
this.rootElem.classList.add('not-within-raid-sim');
}
- this.changeEmitter = TypedEvent.onAny([
- this.sim.changeEmitter,
- ], 'SimUIChange');
+ this.changeEmitter = TypedEvent.onAny([this.sim.changeEmitter], 'SimUIChange');
this.sim.crashEmitter.on((eventID: EventID, error: SimError) => this.handleCrash(error));
const updateShowDamageMetrics = () => {
if (this.sim.getShowDamageMetrics())
this.rootElem.classList.remove('hide-damage-metrics');
- else
- this.rootElem.classList.add('hide-damage-metrics');
+ else this.rootElem.classList.add('hide-damage-metrics');
};
updateShowDamageMetrics();
this.sim.showDamageMetricsChangeEmitter.on(updateShowDamageMetrics);
@@ -107,8 +108,7 @@ export abstract class SimUI extends Component {
const updateShowThreatMetrics = () => {
if (this.sim.getShowThreatMetrics())
this.rootElem.classList.remove('hide-threat-metrics');
- else
- this.rootElem.classList.add('hide-threat-metrics');
+ else this.rootElem.classList.add('hide-threat-metrics');
};
updateShowThreatMetrics();
this.sim.showThreatMetricsChangeEmitter.on(updateShowThreatMetrics);
@@ -116,8 +116,7 @@ export abstract class SimUI extends Component {
const updateShowHealingMetrics = () => {
if (this.sim.getShowHealingMetrics())
this.rootElem.classList.remove('hide-healing-metrics');
- else
- this.rootElem.classList.add('hide-healing-metrics');
+ else this.rootElem.classList.add('hide-healing-metrics');
};
updateShowHealingMetrics();
this.sim.showHealingMetricsChangeEmitter.on(updateShowHealingMetrics);
@@ -142,39 +141,45 @@ export abstract class SimUI extends Component {
this.sim.showThreatMetricsChangeEmitter.on(updateShowEpRatios);
const updateShowExperimental = () => {
- if (this.sim.getShowExperimental())
- this.rootElem.classList.remove('hide-experimental');
- else
- this.rootElem.classList.add('hide-experimental');
+ if (this.sim.getShowExperimental()) this.rootElem.classList.remove('hide-experimental');
+ else this.rootElem.classList.add('hide-experimental');
};
updateShowExperimental();
this.sim.showExperimentalChangeEmitter.on(updateShowExperimental);
this.addKnownIssues(config);
+ // Sidebar Contents
+
const titleElem = this.rootElem.querySelector('.sim-title') as HTMLElement;
new SimTitleDropdown(titleElem, config.spec, { noDropdown: this.isWithinRaidSim });
- const resultsViewerElem = this.rootElem.getElementsByClassName('sim-sidebar-results')[0] as HTMLElement;
- this.resultsViewer = new ResultsViewer(resultsViewerElem);
-
- this.simActionsContainer = this.rootElem.getElementsByClassName('sim-sidebar-actions')[0] as HTMLElement;
-
- new NumberPicker(this.simActionsContainer, this.sim, {
+ this.simActionsContainer = this.rootElem.querySelector(
+ '.sim-sidebar-actions',
+ ) as HTMLElement;
+ this.iterationsPicker = new NumberPicker(this.simActionsContainer, this.sim, {
label: 'Iterations',
- extraCssClasses: [
- 'iterations-picker',
- 'within-raid-sim-hide',
- ],
+ extraCssClasses: ['iterations-picker', 'within-raid-sim-hide'],
changedEvent: (sim: Sim) => sim.iterationsChangeEmitter,
getValue: (sim: Sim) => sim.getIterations(),
setValue: (eventID: EventID, sim: Sim, newValue: number) => {
sim.setIterations(eventID, newValue);
},
- });
+ }).rootElem;
+
+ const resultsViewerElem = this.rootElem.querySelector(
+ '.sim-sidebar-results',
+ ) as HTMLElement;
+ this.resultsViewer = new ResultsViewer(resultsViewerElem);
+
+ const socialsContainer = this.rootElem.querySelector('.sim-sidebar-socials') as HTMLElement;
+ socialsContainer.appendChild(SocialLinks.buildDiscordLink());
+ socialsContainer.appendChild(SocialLinks.buildGitHubLink());
+ socialsContainer.appendChild(SocialLinks.buildPatreonLink());
- this.iterationsPicker = this.rootElem.getElementsByClassName('iterations-picker')[0] as HTMLElement;
- this.simTabContentsContainer = this.rootElem.querySelector('.sim-main.tab-content') as HTMLElement;
+ this.simTabContentsContainer = this.rootElem.querySelector(
+ '.sim-main.tab-content',
+ ) as HTMLElement;
if (!this.isWithinRaidSim) {
window.addEventListener('message', async event => {
@@ -220,11 +225,14 @@ export abstract class SimUI extends Component {
private addKnownIssues(config: SimUIConfig) {
let statusStr = '';
if (config.launchStatus == LaunchStatus.Unlaunched) {
- statusStr = 'This sim is a WORK IN PROGRESS. It is not fully developed and should not be used for general purposes.';
+ statusStr =
+ 'This sim is a WORK IN PROGRESS. It is not fully developed and should not be used for general purposes.';
} else if (config.launchStatus == LaunchStatus.Alpha) {
- statusStr = 'This sim is in ALPHA. Bugs are expected; please let us know if you find one!';
+ statusStr =
+ 'This sim is in ALPHA. Bugs are expected; please let us know if you find one!';
} else if (config.launchStatus == LaunchStatus.Beta) {
- statusStr = 'This sim is in BETA. There may still be a few bugs; please let us know if you find one!';
+ statusStr =
+ 'This sim is in BETA. There may still be a few bugs; please let us know if you find one!';
}
if (statusStr) {
config.knownIssues = [statusStr].concat(config.knownIssues || []);
@@ -252,7 +260,7 @@ export abstract class SimUI extends Component {
return this.rootElem.classList.contains('individual-sim-ui');
}
- async runSim(onProgress: Function) {
+ async runSim(onProgress: (_?: any) => void) {
this.resultsViewer.setPending();
try {
await this.sim.runRaidSim(TypedEvent.nextEventID(), onProgress);
@@ -286,48 +294,60 @@ export abstract class SimUI extends Component {
return;
}
- if (window.confirm('Simulation Failure:\n' + errorStr + '\nPress Ok to file crash report')) {
+ if (
+ window.confirm('Simulation Failure:\n' + errorStr + '\nPress Ok to file crash report')
+ ) {
// Splice out just the line numbers
const hash = this.hashCode(errorStr);
const link = this.toLink();
const rngSeed = this.sim.getLastUsedRngSeed();
- fetch('https://api.github.com/search/issues?q=is:issue+is:open+repo:wowsims/wotlk+' + hash).then(resp => {
- resp.json().then((issues) => {
- if (issues.total_count > 0) {
- window.open(issues.items[0].html_url, '_blank');
- } else {
- const base_url = 'https://github.com/wowsims/wotlk/issues/new?assignees=&labels=&title=Crash%20Report%20'
- const base = `${base_url}${hash}&body=`;
- const maxBodyLength = URLMAXLEN - base.length;
- let issueBody = encodeURIComponent(`Link:\n${link}\n\nRNG Seed: ${rngSeed}\n\n${errorStr}`);
- if (link.includes('/raid/')) {
- // Move the actual error before the link, as it will likely get truncated.
- issueBody = encodeURIComponent(`${errorStr}\nRNG Seed: ${rngSeed}\nLink:\n${link}`);
- }
- let truncated = false;
- while (issueBody.length > maxBodyLength - (truncated ? 3 : 0)) {
- issueBody = issueBody.slice(0, issueBody.lastIndexOf('%')) // Avoid truncating in the middle of a URLencoded segment.
- truncated = true;
+ fetch(
+ 'https://api.github.com/search/issues?q=is:issue+is:open+repo:wowsims/wotlk+' +
+ hash,
+ )
+ .then(resp => {
+ resp.json().then(issues => {
+ if (issues.total_count > 0) {
+ window.open(issues.items[0].html_url, '_blank');
+ } else {
+ const base_url =
+ 'https://github.com/wowsims/wotlk/issues/new?assignees=&labels=&title=Crash%20Report%20';
+ const base = `${base_url}${hash}&body=`;
+ const maxBodyLength = URLMAXLEN - base.length;
+ let issueBody = encodeURIComponent(
+ `Link:\n${link}\n\nRNG Seed: ${rngSeed}\n\n${errorStr}`,
+ );
+ if (link.includes('/raid/')) {
+ // Move the actual error before the link, as it will likely get truncated.
+ issueBody = encodeURIComponent(
+ `${errorStr}\nRNG Seed: ${rngSeed}\nLink:\n${link}`,
+ );
+ }
+ let truncated = false;
+ while (issueBody.length > maxBodyLength - (truncated ? 3 : 0)) {
+ issueBody = issueBody.slice(0, issueBody.lastIndexOf('%')); // Avoid truncating in the middle of a URLencoded segment.
+ truncated = true;
+ }
+ if (truncated) {
+ issueBody += '...';
+ // The raid links are too large and will always cause truncation.
+ // Prompt the user to add more information to the issue.
+ new CrashModal(this.rootElem, link);
+ }
+ window.open(base + issueBody, '_blank');
}
- if (truncated) {
- issueBody += "...";
- // The raid links are too large and will always cause truncation.
- // Prompt the user to add more information to the issue.
- new CrashModal(this.rootElem, link);
- }
- window.open(base + issueBody, '_blank');
- }
+ });
+ })
+ .catch(fetchErr => {
+ alert('Failed to file report... try again another time:' + fetchErr);
});
- }).catch(fetchErr => {
- alert('Failed to file report... try again another time:' + fetchErr);
- });
}
}
hashCode(str: string): number {
let hash = 0;
for (let i = 0, len = str.length; i < len; i++) {
- let chr = str.charCodeAt(i);
+ const chr = str.charCodeAt(i);
hash = (hash << 5) - hash + chr;
hash |= 0; // Convert to 32bit integer
}
@@ -347,7 +367,7 @@ class CrashModal extends BaseModal {
`;
- let text = document.createTextNode(link);
+ const text = document.createTextNode(link);
this.body.querySelector('textarea')?.appendChild(text);
}
}
diff --git a/ui/scss/core/components/individual_sim_ui/_gem_summary.scss b/ui/scss/core/components/individual_sim_ui/_gem_summary.scss
index e6821dcfd2..32be2e1067 100644
--- a/ui/scss/core/components/individual_sim_ui/_gem_summary.scss
+++ b/ui/scss/core/components/individual_sim_ui/_gem_summary.scss
@@ -1,33 +1,34 @@
.gem-summary-root {
- width: 50%;
+ width: 50%;
+ margin-top: map-get($spacers, 5);
- .gem-summary-link {
- --gem-width: 2rem;
+ .gem-summary-link {
+ --gem-width: 2rem;
- display: flex;
- align-items: center;
+ display: flex;
+ align-items: center;
- .gem-icon {
- position: unset;
- margin-right: map-get($spacers, 1);
- border-radius: 0;
- border: $border-default;
- }
+ .gem-icon {
+ position: unset;
+ margin-right: map-get($spacers, 1);
+ border-radius: 0;
+ border: $border-default;
+ }
- &:not(:last-child) {
- margin-bottom: map-get($spacers, 1);
- }
- }
+ &:not(:last-child) {
+ margin-bottom: map-get($spacers, 1);
+ }
+ }
}
@include media-breakpoint-down(xl) {
- .gem-summary-root {
- margin-bottom: var(--container-padding);
- }
+ .gem-summary-root {
+ margin-bottom: var(--container-padding);
+ }
}
@include media-breakpoint-down(md) {
- .gem-summary-root {
- width: 100%;
- }
-}
\ No newline at end of file
+ .gem-summary-root {
+ width: 100%;
+ }
+}
diff --git a/ui/scss/core/sim_ui/_sidebar.scss b/ui/scss/core/sim_ui/_sidebar.scss
index 6e81855235..51bce579e1 100644
--- a/ui/scss/core/sim_ui/_sidebar.scss
+++ b/ui/scss/core/sim_ui/_sidebar.scss
@@ -1,98 +1,90 @@
-@use "sass:map";
+@use 'sass:map';
-@import "../components/sim_title_dropdown";
+@import '../components/sim_title_dropdown';
.sim-sidebar {
- flex: 1;
- display: flex;
- flex-direction: column;
- align-items: stretch;
- background: $body-bg;
- // This must be larger than the z-index on .sim-content otherwise the dropdown is overlapped
- z-index: $sidebar-z-index;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: stretch;
+ background: $body-bg;
+ // This must be larger than the z-index on .sim-content otherwise the dropdown is overlapped
+ z-index: $sidebar-z-index;
- .sim-sidebar-content {
- padding-top: $gap-width;
- padding-left: $gap-width;
- padding-right: $gap-width;
- padding-bottom: map-get($spacers, 3);
- display: flex;
- flex-direction: column;
+ .sim-sidebar-content {
+ min-height: calc(100vh - $sim-header-height);
+ padding: $gap-width;
+ display: flex;
+ flex-direction: column;
- &> *:not(:last-child) {
- margin-bottom: map-get($spacers, 4);
- }
+ & > *:not(:last-child) {
+ margin-bottom: map.get($spacers, 4);
+ }
- .sim-sidebar-actions {
- padding-left: var(--container-padding);
- padding-right: var(--container-padding);
- margin-left: $gap-width * -1;
- margin-right: $gap-width * -1;
- display: flex;
- flex-direction: column;
- align-items: center;
+ .sim-sidebar-actions {
+ padding-left: var(--container-padding);
+ padding-right: var(--container-padding);
+ margin-left: $gap-width * -1;
+ margin-right: $gap-width * -1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
- &> *:not(:last-child) {
- margin-bottom: $block-spacer;
- }
+ & > *:not(:last-child) {
+ margin-bottom: $block-spacer;
+ }
- .iterations-picker {
- width: 100%;
- flex-flow: column;
+ .iterations-picker {
+ width: 100%;
+ flex-flow: column;
- .number-picker-input {
- width: 100%;
- margin: 0;
- }
- }
- }
+ .number-picker-input {
+ width: 100%;
+ margin: 0;
+ }
+ }
+ }
- .sim-sidebar-results {
- min-height: 25vh;
- display: flex;
- justify-content: center;
- align-items: center;
- }
- }
-}
+ .sim-sidebar-results {
+ min-height: 25vh;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
-@include media-breakpoint-down(xxl) {
- .sim-sidebar {
- .sim-sidebar-content {
- .sim-sidebar-actions {
- padding: 0;
- margin: 0;
- }
- }
- }
+ .sim-sidebar-stats {
+ margin-top: auto;
+ }
+
+ .sim-sidebar-socials {
+ display: flex;
+ justify-content: center;
+
+ & > *:not(:last-child) {
+ margin-right: map-get($spacers, 3);
+ }
+ }
+ }
}
-@include media-breakpoint-up(md) {
- .sim-sidebar {
- // Allow the stats to align to the bottom of the viewport if the section is small enough to avoid scrolling
- // 'Smaller' is set when banner is displayed
- .sim-sidebar-content.smaller {
- min-height: calc(100vh - calc($sim-header-height + 3.5rem));
- }
- .sim-sidebar-content {
- min-height: calc(100vh - calc($sim-header-height + 0.2rem));
+@include media-breakpoint-down(xxl) {
+ .sim-sidebar {
+ .sim-sidebar-content {
+ padding-left: $gap-width-sm * 2;
+ padding-right: $gap-width-sm * 2;
- .sim-sidebar-footer {
- flex: 1;
- display: flex;
- align-items: flex-end;
- }
- }
- }
+ .sim-sidebar-actions {
+ padding: 0;
+ margin: 0;
+ }
+ }
+ }
}
@include media-breakpoint-down(lg) {
- .sim-sidebar {
- .sim-sidebar-content {
- padding-top: $gap-width-sm * 2;
- padding-bottom: $gap-width-sm;
- padding-left: $gap-width-sm;
- padding-right: $gap-width-sm;
- }
- }
+ .sim-sidebar {
+ .sim-sidebar-content {
+ padding: $gap-width-sm * 2 $gap-width-sm;
+ }
+ }
}
diff --git a/ui/scss/shared/_variables.scss b/ui/scss/shared/_variables.scss
index 934d9e272b..a3f73b1a6b 100644
--- a/ui/scss/shared/_variables.scss
+++ b/ui/scss/shared/_variables.scss
@@ -1,4 +1,4 @@
-@use "sass:map";
+@use 'sass:map';
// Define and overwrite Bootstrap Variables
// See bootstrap/scss/_variables.scss for a complete list of definitions, or
@@ -13,41 +13,41 @@ $brand: #e0a335;
$success: #1eff00;
$death-knight: rgb(194, 46, 70);
-$druid: rgb(255, 125, 10);
-$hunter: rgb(171, 212, 115);
-$mage: rgb(105, 204, 240);
-$paladin: rgb(245, 140, 186);
-$priest: rgb(255, 255, 255);
-$rogue: rgb(255, 245, 105);
-$shaman: rgb(36, 89, 255);
-$warlock: rgb(148, 130, 201);
-$warrior: rgb(199, 156, 110);
+$druid: rgb(255, 125, 10);
+$hunter: rgb(171, 212, 115);
+$mage: rgb(105, 204, 240);
+$paladin: rgb(245, 140, 186);
+$priest: rgb(255, 255, 255);
+$rogue: rgb(255, 245, 105);
+$shaman: rgb(36, 89, 255);
+$warlock: rgb(148, 130, 201);
+$warrior: rgb(199, 156, 110);
$class-colors: (
- "death-knight": $death-knight,
- "druid": $druid,
- "hunter": $hunter,
- "mage": $mage,
- "paladin": $paladin,
- "priest": $priest,
- "raid": $brand,
- "rogue": $rogue,
- "shaman": $shaman,
- "warlock": $warlock,
- "warrior": $warrior,
+ 'death-knight': $death-knight,
+ 'druid': $druid,
+ 'hunter': $hunter,
+ 'mage': $mage,
+ 'paladin': $paladin,
+ 'priest': $priest,
+ 'raid': $brand,
+ 'rogue': $rogue,
+ 'shaman': $shaman,
+ 'warlock': $warlock,
+ 'warrior': $warrior,
);
$custom-colors: (
- "brand": $brand,
- "primary": $primary,
- "success": $success,
+ 'brand': $brand,
+ 'primary': $primary,
+ 'success': $success,
);
$custom-breakpoints: (
- xxxl: 1600px,
- 1080p: 1900px,
- 1440p: 2500px,
- 4k: 3800px,
+ xxxl: 1600px,
+ 1080p: 1900px,
+ 1440p: 2500px,
+ 4k: 3800px,
);
// Borders
@@ -55,56 +55,56 @@ $border-color: dimgrey;
$border-default: 1px solid $border-color;
// Colors
-$item-quality-junk: #9d9d9d;
-$item-quality-common: #ffffff;
-$item-quality-uncommon: #1eff00;
-$item-quality-rare: #0070dd;
-$item-quality-epic: #a335ee;
+$item-quality-junk: #9d9d9d;
+$item-quality-common: #ffffff;
+$item-quality-uncommon: #1eff00;
+$item-quality-rare: #0070dd;
+$item-quality-epic: #a335ee;
$item-quality-legendary: #ff8000;
-$item-quality-artifact: #e5cc80;
-$item-quality-heirloom: #0cf;
+$item-quality-artifact: #e5cc80;
+$item-quality-heirloom: #0cf;
$item-qualities: (
- junk: $item-quality-junk,
- common: $item-quality-common,
- uncommon: $item-quality-uncommon,
- rare: $item-quality-rare,
- epic: $item-quality-epic,
- legendary: $item-quality-legendary,
- artifact: $item-quality-artifact,
- heirloom: $item-quality-heirloom
+ junk: $item-quality-junk,
+ common: $item-quality-common,
+ uncommon: $item-quality-uncommon,
+ rare: $item-quality-rare,
+ epic: $item-quality-epic,
+ legendary: $item-quality-legendary,
+ artifact: $item-quality-artifact,
+ heirloom: $item-quality-heirloom,
);
-$health-color: #22ba00;
-$mana-color: #2E93fA;
-$energy-color: #ffd700;
-$rage-color: #ff0000;
-$focus-color: #cd853f;
-$combo-points-color:#ffa07a;
+$health-color: #22ba00;
+$mana-color: #2e93fa;
+$energy-color: #ffd700;
+$rage-color: #ff0000;
+$focus-color: #cd853f;
+$combo-points-color: #ffa07a;
$resource-colors: (
- combo-points: $combo-points-color,
- energy: $energy-color,
- focus: $focus-color,
- health: $health-color,
- mana: $mana-color,
- rage: $rage-color,
+ combo-points: $combo-points-color,
+ energy: $energy-color,
+ focus: $focus-color,
+ health: $health-color,
+ mana: $mana-color,
+ rage: $rage-color,
);
-$link-danger-color: #ef9eaa;
+$link-danger-color: #ef9eaa;
$link-warning-color: #faf07f;
$table-row-even-bg: #202128;
$table-row-odd-bg: #2d2f35;
-$wrath-blue: #7FCBD8;
+$wrath-blue: #7fcbd8;
// Spacers
-$block-spacer: .75rem;
-$table-cell-padding: .5rem;
-$content-font-size: .75rem;
+$block-spacer: 0.75rem;
+$table-cell-padding: 0.5rem;
+$content-font-size: 0.75rem;
$gap-width: 1.5rem;
-$gap-width-sm: .5rem;
+$gap-width-sm: 0.5rem;
// Sizing
$icon-size-sm: 1rem;
@@ -126,7 +126,7 @@ $grid-breakpoints: map-merge($grid-breakpoints, $custom-breakpoints);
$body-bg: #15171e;
$body-color: white;
$font-size-root: 16px;
-$grid-gutter-width: .75rem;
+$grid-gutter-width: 0.75rem;
// This option doesn't seem to be working for some reason. Carets hidden manually instead
// $enable-caret: false;
@@ -136,12 +136,12 @@ $enable-rounded: false;
$link-color: #a5b1d6;
$link-decoration: none;
$link-hover-color: white;
-$link-transition: color .15s ease-in-out;
+$link-transition: color 0.15s ease-in-out;
// Component variable overrides
$btn-hover-bg-shade-amount: 30%;
-$btn-font-size: .875rem;
-$btn-padding-y: .5rem;
+$btn-font-size: 0.875rem;
+$btn-padding-y: 0.5rem;
$dropdown-bg: $body-bg;
$dropdown-border-width: 0;
@@ -156,12 +156,12 @@ $form-check-input-bg: $link-color;
$form-check-input-border: 1px solid lighten($body-bg, 20);
$form-check-input-width: 2rem;
$form-check-input-focus-border: lighten($body-bg, 20);
-$form-check-input-focus-box-shadow: 0 0 .25rem $primary;
+$form-check-input-focus-box-shadow: 0 0 0.25rem $primary;
$form-check-input-checked-bg-color: $primary;
$form-check-input-checked-bg-image: url("data:image/svg+xml,
");
$form-check-input-checked-border-color: lighten($body-bg, 20);
-$form-label-margin-bottom: .25rem;
+$form-label-margin-bottom: 0.25rem;
$form-label-font-size: $content-font-size;
$form-label-font-weight: normal;
@@ -170,7 +170,7 @@ $form-select-border-color: lighten($body-bg, 20);
$form-select-color: white;
$form-select-disabled-bg: lighten($body-bg, 20);
$form-select-focus-border-color: lighten($body-bg, 20);
-$form-select-focus-box-shadow: 0 0 .25rem lighten($body-bg, 20);
+$form-select-focus-box-shadow: 0 0 0.25rem lighten($body-bg, 20);
$form-select-font-size: $content-font-size;
$form-select-indicator: url("data:image/svg+xml,
");
@@ -180,7 +180,7 @@ $input-color: white;
$input-disabled-bg: lighten($body-bg, 20);
$input-focus-bg: lighten($body-bg, 12);
$input-focus-border-color: lighten($body-bg, 20);
-$input-focus-box-shadow: 0 0 .25rem lighten($body-bg, 20);
+$input-focus-box-shadow: 0 0 0.25rem lighten($body-bg, 20);
$input-focus-color: white;
$input-font-size: $content-font-size;
@@ -196,7 +196,7 @@ $navbar-dark-hover-color: $primary;
$navbar-dark-active-color: $primary;
$navbar-padding-y: 0;
-$nav-link-font-size: .875rem;
+$nav-link-font-size: 0.875rem;
$nav-link-padding-y: map-get($spacers, 3);
$nav-link-transition: $link-transition;
@@ -210,6 +210,7 @@ $popover-body-padding-x: map-get($spacers, 2);
$popover-body-padding-y: map-get($spacers, 2);
$tooltip-bg: $popover-bg;
+$tooltip-color: white;
$tooltip-max-width: 15vw;
$tooltip-max-width-lg: 25vw;
$tooltip-max-width-sm: 75vw;