diff --git a/src/scss/_example.scss b/src/scss/_example.scss
index f8791fb21..fdf64254b 100644
--- a/src/scss/_example.scss
+++ b/src/scss/_example.scss
@@ -1,33 +1,23 @@
+/* stylelint-disable declaration-no-important, scss/selector-no-redundant-nesting-selector */
+@import "@coreui/coreui/scss/functions";
+@import "@coreui/coreui/scss/variables";
+@import "@coreui/coreui/scss/mixins";
+
.example {
&:not(:first-child) {
margin-top: 1.5rem;
}
.tab-content {
- background-color: $light-50 !important;
-
- @at-root .dark-theme & {
- background-color: rgba(255, 255, 255, .1) !important;
- }
- }
-
- code[class*="language-"],
- pre[class*="language-"] {
- font-size: .875rem !important;
- }
-
- :not(pre) > code[class*="language-"],
- pre[class*="language-"] {
- background: transparent;
+ background-color: var(--#{$prefix}tertiary-bg) !important;
}
& + p {
- margin-top: 1.5rem
+ margin-top: 1.5rem;
}
// Components examples
- .preview,
- .preview .col {
+ .preview {
+ p {
margin-top: 2rem;
}
@@ -105,5 +95,20 @@
margin-top: .5rem;
margin-bottom: .5rem;
}
+
+ .docs-example-modal {
+ .modal {
+ position: static;
+ display: block;
+ }
+ }
}
}
+
+@if $enable-dark-mode {
+ @include color-mode(dark) {
+ .example .tab-content {
+ background-color: var(--#{$prefix}secondary-bg) !important;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/scss/_variables.scss b/src/scss/_variables.scss
index 373dbeec2..697b08ade 100644
--- a/src/scss/_variables.scss
+++ b/src/scss/_variables.scss
@@ -1,1791 +1,3 @@
-// Variables
+// Variable overrides
//
-// If you want to customize your project please uncomment and update one of the following variables.
-
-// Color system
-
-// scss-docs-start gray-color-variables
-// $white: #fff !default;
-// $gray-base: #3c4b64 !default;
-// $gray-100: #ebedef !default;
-// $gray-200: #d8dbe0 !default;
-// $gray-300: #c4c9d0 !default;
-// $gray-400: #b1b7c1 !default;
-// $gray-500: #9da5b1 !default;
-// $gray-600: #8a93a2 !default;
-// $gray-700: #768192 !default;
-// $gray-800: #636f83 !default;
-// $gray-900: #4f5d73 !default;
-// $black: #000015 !default;
-// scss-docs-end gray-color-variables
-
-// fusv-disable
-// scss-docs-start gray-colors-map
-// $grays: (
-// "100": $gray-100,
-// "200": $gray-200,
-// "300": $gray-300,
-// "400": $gray-400,
-// "500": $gray-500,
-// "600": $gray-600,
-// "700": $gray-700,
-// "800": $gray-800,
-// "900": $gray-900
-// ) !default;
-// scss-docs-end gray-colors-map
-// fusv-enable
-
-// $high-emphasis: rgba(shift-color($gray-base, +26), .95) !default;
-// $medium-emphasis: rgba(shift-color($gray-base, +26), .681) !default;
-// $disabled: rgba(shift-color($gray-base, +26), .38) !default;
-
-// $high-emphasis-inverse: rgba($white, .87) !default;
-// $medium-emphasis-inverse: rgba($white, .6) !default;
-// $disabled-inverse: rgba($white, .38) !default;
-
-// scss-docs-start color-variables
-// $blue: #0d6efd !default;
-// $indigo: #6610f2 !default;
-// $purple: #6f42c1 !default;
-// $pink: #d63384 !default;
-// $red: #dc3545 !default;
-// $orange: #fd7e14 !default;
-// $yellow: #ffc107 !default;
-// $green: #198754 !default;
-// $teal: #20c997 !default;
-// $cyan: #0dcaf0 !default;
-// scss-docs-end color-variables
-
-// scss-docs-start colors-map
-// $colors: (
-// "blue": $blue,
-// "indigo": $indigo,
-// "purple": $purple,
-// "pink": $pink,
-// "red": $red,
-// "orange": $orange,
-// "yellow": $yellow,
-// "green": $green,
-// "teal": $teal,
-// "cyan": $cyan,
-// "white": $white,
-// "gray": $gray-600,
-// "gray-dark": $gray-800
-// ) !default;
-// scss-docs-end colors-map
-
-// fusv-disable
-// $primary-dark: #1f1498 !default;
-// $primary-base: #321fdb !default;
-// $primary-50: #988fed !default;
-// $primary-25: #ccc7f6 !default;
-
-// $secondary-dark: #212233 !default;
-// $secondary-base: #9da5b1 !default;
-// $secondary-50: #9da5b1 !default;
-// $secondary-25: #ced2d8 !default;
-
-// $success-dark: #1b9e3e !default;
-// $success-base: #2eb85c !default;
-// $success-50: #96dbad !default;
-// $success-25: #cbedd6 !default;
-
-// $info-dark: #2982cc !default;
-// $info-base: #39f !default;
-// $info-50: #80c6ff !default;
-// $info-25: #c0e6ff !default;
-
-// $warning-dark: #f6960b !default;
-// $warning-base: #f9b115 !default;
-// $warning-50: #fcd88a !default;
-// $warning-25: #feecc5 !default;
-
-// $danger-dark: #d93737 !default;
-// $danger-base: #e55353 !default;
-// $danger-50: #f2a9a9 !default;
-// $danger-25: #f9d4d4 !default;
-
-// $light-dark: $gray-100 !default;
-// $light-base: $gray-100 !default;
-// $light-50: shift-color($light-base, -70) !default;
-// $light-25: shift-color($light-base, -80) !default;
-
-// $dark-dark: $gray-900 !default;
-// $dark-base: $gray-900 !default;
-// $dark-50: shift-color($dark-base, -70) !default;
-// $dark-25: shift-color($dark-base, -80) !default;
-// fusv-enable
-
-// scss-docs-start theme-color-variables
-// $primary: $primary-base !default;
-// $secondary: $secondary-base !default;
-// $success: $success-base !default;
-// $info: $info-base !default;
-// $warning: $warning-base !default;
-// $danger: $danger-base !default;
-// $light: $light-base !default;
-// $dark: $dark-base !default;
-// scss-docs-end theme-color-variables
-
-// scss-docs-start theme-colors-map
-// $theme-colors: (
-// "primary": $primary,
-// "secondary": $secondary,
-// "success": $success,
-// "info": $info,
-// "warning": $warning,
-// "danger": $danger,
-// "light": $light,
-// "dark": $dark
-// ) !default;
-// scss-docs-end theme-colors-map
-
-// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
-// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
-// $min-contrast-ratio: 4.5 !default;
-
-// Customize the light and dark text colors for use in our color contrast function.
-// $color-contrast-dark: $high-emphasis-inverse !default;
-// $color-contrast-light: $high-emphasis !default;
-
-// fusv-disable
-// $blue-100: tint-color($blue, 80%) !default;
-// $blue-200: tint-color($blue, 60%) !default;
-// $blue-300: tint-color($blue, 40%) !default;
-// $blue-400: tint-color($blue, 20%) !default;
-// $blue-500: $blue !default;
-// $blue-600: shade-color($blue, 20%) !default;
-// $blue-700: shade-color($blue, 40%) !default;
-// $blue-800: shade-color($blue, 60%) !default;
-// $blue-900: shade-color($blue, 80%) !default;
-
-// $indigo-100: tint-color($indigo, 80%) !default;
-// $indigo-200: tint-color($indigo, 60%) !default;
-// $indigo-300: tint-color($indigo, 40%) !default;
-// $indigo-400: tint-color($indigo, 20%) !default;
-// $indigo-500: $indigo !default;
-// $indigo-600: shade-color($indigo, 20%) !default;
-// $indigo-700: shade-color($indigo, 40%) !default;
-// $indigo-800: shade-color($indigo, 60%) !default;
-// $indigo-900: shade-color($indigo, 80%) !default;
-
-// $purple-100: tint-color($purple, 80%) !default;
-// $purple-200: tint-color($purple, 60%) !default;
-// $purple-300: tint-color($purple, 40%) !default;
-// $purple-400: tint-color($purple, 20%) !default;
-// $purple-500: $purple !default;
-// $purple-600: shade-color($purple, 20%) !default;
-// $purple-700: shade-color($purple, 40%) !default;
-// $purple-800: shade-color($purple, 60%) !default;
-// $purple-900: shade-color($purple, 80%) !default;
-
-// $pink-100: tint-color($pink, 80%) !default;
-// $pink-200: tint-color($pink, 60%) !default;
-// $pink-300: tint-color($pink, 40%) !default;
-// $pink-400: tint-color($pink, 20%) !default;
-// $pink-500: $pink !default;
-// $pink-600: shade-color($pink, 20%) !default;
-// $pink-700: shade-color($pink, 40%) !default;
-// $pink-800: shade-color($pink, 60%) !default;
-// $pink-900: shade-color($pink, 80%) !default;
-
-// $red-100: tint-color($red, 80%) !default;
-// $red-200: tint-color($red, 60%) !default;
-// $red-300: tint-color($red, 40%) !default;
-// $red-400: tint-color($red, 20%) !default;
-// $red-500: $red !default;
-// $red-600: shade-color($red, 20%) !default;
-// $red-700: shade-color($red, 40%) !default;
-// $red-800: shade-color($red, 60%) !default;
-// $red-900: shade-color($red, 80%) !default;
-
-// $orange-100: tint-color($orange, 80%) !default;
-// $orange-200: tint-color($orange, 60%) !default;
-// $orange-300: tint-color($orange, 40%) !default;
-// $orange-400: tint-color($orange, 20%) !default;
-// $orange-500: $orange !default;
-// $orange-600: shade-color($orange, 20%) !default;
-// $orange-700: shade-color($orange, 40%) !default;
-// $orange-800: shade-color($orange, 60%) !default;
-// $orange-900: shade-color($orange, 80%) !default;
-
-// $yellow-100: tint-color($yellow, 80%) !default;
-// $yellow-200: tint-color($yellow, 60%) !default;
-// $yellow-300: tint-color($yellow, 40%) !default;
-// $yellow-400: tint-color($yellow, 20%) !default;
-// $yellow-500: $yellow !default;
-// $yellow-600: shade-color($yellow, 20%) !default;
-// $yellow-700: shade-color($yellow, 40%) !default;
-// $yellow-800: shade-color($yellow, 60%) !default;
-// $yellow-900: shade-color($yellow, 80%) !default;
-
-// $green-100: tint-color($green, 80%) !default;
-// $green-200: tint-color($green, 60%) !default;
-// $green-300: tint-color($green, 40%) !default;
-// $green-400: tint-color($green, 20%) !default;
-// $green-500: $green !default;
-// $green-600: shade-color($green, 20%) !default;
-// $green-700: shade-color($green, 40%) !default;
-// $green-800: shade-color($green, 60%) !default;
-// $green-900: shade-color($green, 80%) !default;
-
-// $teal-100: tint-color($teal, 80%) !default;
-// $teal-200: tint-color($teal, 60%) !default;
-// $teal-300: tint-color($teal, 40%) !default;
-// $teal-400: tint-color($teal, 20%) !default;
-// $teal-500: $teal !default;
-// $teal-600: shade-color($teal, 20%) !default;
-// $teal-700: shade-color($teal, 40%) !default;
-// $teal-800: shade-color($teal, 60%) !default;
-// $teal-900: shade-color($teal, 80%) !default;
-
-// $cyan-100: tint-color($cyan, 80%) !default;
-// $cyan-200: tint-color($cyan, 60%) !default;
-// $cyan-300: tint-color($cyan, 40%) !default;
-// $cyan-400: tint-color($cyan, 20%) !default;
-// $cyan-500: $cyan !default;
-// $cyan-600: shade-color($cyan, 20%) !default;
-// $cyan-700: shade-color($cyan, 40%) !default;
-// $cyan-800: shade-color($cyan, 60%) !default;
-// $cyan-900: shade-color($cyan, 80%) !default;
-// fusv-enable
-
-// Characters which are escaped by the escape-svg function
-// $escaped-characters: (
-// ("<", "%3c"),
-// (">", "%3e"),
-// ("#", "%23"),
-// ("(", "%28"),
-// (")", "%29"),
-// ) !default;
-
-// Options
-//
-// Quickly modify global styling by enabling or disabling optional features.
-
-// $enable-caret: true !default;
-// $enable-rounded: true !default;
-// $enable-shadows: false !default;
-// $enable-gradients: false !default;
-// $enable-transitions: true !default;
-// $enable-reduced-motion: true !default;
-// $enable-smooth-scroll: true !default;
-// $enable-grid-classes: true !default;
-// $enable-button-pointers: true !default;
-// $enable-rfs: true !default;
-// $enable-validation-icons: true !default;
-// $enable-negative-margins: false !default;
-// $enable-deprecation-messages: true !default;
-// $enable-important-utilities: true !default;
-// $enable-contrast-ratio-correction: true !default;
-// $enable-contrast-ratio-warnings: false !default;
-// $enable-ltr: true !default;
-// $enable-rtl: false !default;
-
-// Set mobile breakpoint
-
-// $mobile-breakpoint: md !default;
-
-// Prefix for :root CSS variables
-
-// $variable-prefix: cui- !default;
-
-// Gradient
-//
-// The gradient which is added to components if `$enable-gradients` is `true`
-// This gradient is also added to elements with `.bg-gradient`
-// scss-docs-start variable-gradient
-// $gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;
-// scss-docs-end variable-gradient
-
-// Spacing
-//
-// Control the default styling of most Bootstrap elements by modifying these
-// variables. Mostly focused on spacing.
-// You can add more entries to the $spacers map, should you need more variation.
-
-// scss-docs-start spacer-variables-maps
-// $spacer: 1rem !default;
-// $spacers: (
-// 0: 0,
-// 1: $spacer / 4,
-// 2: $spacer / 2,
-// 3: $spacer,
-// 4: $spacer * 1.5,
-// 5: $spacer * 3,
-// ) !default;
-
-// $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
-// scss-docs-end spacer-variables-maps
-
-// Position
-//
-// Define the edge positioning anchors of the position utilities.
-
-// scss-docs-start position-map
-// $position-values: (
-// 0: 0,
-// 50: 50%,
-// 100: 100%
-// ) !default;
-// scss-docs-end position-map
-
-// Body
-//
-// Settings for the `` element.
-
-// $body-bg: $white !default;
-// $body-color: $high-emphasis !default;
-// $body-text-align: null !default;
-
-
-// Links
-//
-// Style anchor elements.
-
-// $link-color: $primary !default;
-// $link-decoration: underline !default;
-// $link-shade-percentage: 20% !default;
-// $link-hover-color: shift-color($link-color, $link-shade-percentage) !default;
-// $link-hover-decoration: null !default;
-
-// $stretched-link-pseudo-element: after !default;
-// $stretched-link-z-index: 1 !default;
-
-// Paragraphs
-//
-// Style p element.
-
-// $paragraph-margin-bottom: 1rem !default;
-
-
-// Grid breakpoints
-//
-// Define the minimum dimensions at which your layout will change,
-// adapting to different screen sizes, for use in media queries.
-
-// scss-docs-start grid-breakpoints
-// $grid-breakpoints: (
-// xs: 0,
-// sm: 576px,
-// md: 768px,
-// lg: 992px,
-// xl: 1200px,
-// xxl: 1400px
-// ) !default;
-// scss-docs-end grid-breakpoints
-
-// @include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
-// @include _assert-starts-at-zero($grid-breakpoints, "$grid-breakpoints");
-
-
-// Grid containers
-//
-// Define the maximum width of `.container` for different screen sizes.
-
-// scss-docs-start container-max-widths
-// $container-max-widths: (
-// sm: 540px,
-// md: 720px,
-// lg: 960px,
-// xl: 1140px,
-// xxl: 1320px
-// ) !default;
-// scss-docs-end container-max-widths
-
-// @include _assert-ascending($container-max-widths, "$container-max-widths");
-
-
-// Grid columns
-//
-// Set the number of columns and specify the width of the gutters.
-
-// $grid-columns: 12 !default;
-// $grid-gutter-width: 1.5rem !default;
-// $grid-row-columns: 6 !default;
-
-// $gutters: $spacers !default;
-
-// Container padding
-
-// $container-padding-x: $grid-gutter-width / 2 !default;
-
-
-// Components
-//
-// Define common padding and border radius sizes and more.
-
-// scss-docs-start border-variables
-// $border-width: 1px !default;
-// $border-widths: (
-// 1: 1px,
-// 2: 2px,
-// 3: 3px,
-// 4: 4px,
-// 5: 5px
-// ) !default;
-
-// $border-color: $gray-200 !default;
-// scss-docs-end border-variables
-
-// scss-docs-start border-radius-variables
-// $border-radius: .25rem !default;
-// $border-radius-sm: .2rem !default;
-// $border-radius-lg: .3rem !default;
-// $border-radius-pill: 50rem !default;
-// scss-docs-end border-radius-variables
-
-// scss-docs-start box-shadow-variables
-// $box-shadow: 0 .5rem 1rem rgba($black, .15) !default;
-// $box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;
-// $box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;
-// $box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;
-// scss-docs-end box-shadow-variables
-
-// $component-active-color: $high-emphasis-inverse !default;
-// $component-active-bg: $primary !default;
-
-// scss-docs-start caret-variables
-// $caret-width: .3em !default;
-// $caret-vertical-align: $caret-width * .85 !default;
-// $caret-spacing: $caret-width * .85 !default;
-// scss-docs-end caret-variables
-
-// $transition-base: all .2s ease-in-out !default;
-// $transition-fade: opacity .15s linear !default;
-// scss-docs-start collapse-transition
-// $transition-collapse: height .35s ease !default;
-// scss-docs-end collapse-transition
-
-// stylelint-disable function-disallowed-list
-// scss-docs-start aspect-ratios
-// $aspect-ratios: (
-// "1x1": 100%,
-// "4x3": calc(3 / 4 * 100%),
-// "16x9": calc(9 / 16 * 100%),
-// "21x9": calc(9 / 21 * 100%)
-// ) !default;
-// scss-docs-end aspect-ratios
-// stylelint-enable function-disallowed-list
-
-// Typography
-//
-// Font, line-height, and color for body text, headings, and more.
-
-// scss-docs-start font-variables
-// stylelint-disable value-keyword-case
-// $font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
-// $font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
-// stylelint-enable value-keyword-case
-// $font-family-base: var(--#{$variable-prefix}font-sans-serif) !default;
-// $font-family-code: var(--#{$variable-prefix}font-monospace) !default;
-
-// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins
-// $font-size-base effects the font size of the body text
-// $font-size-root: null !default;
-// $font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
-// $font-size-sm: $font-size-base * .875 !default;
-// $font-size-lg: $font-size-base * 1.25 !default;
-
-// $font-weight-lighter: lighter !default;
-// $font-weight-light: 300 !default;
-// $font-weight-normal: 400 !default;
-// $font-weight-medium: 500 !default;
-// $font-weight-semibold: 600 !default;
-// $font-weight-bold: 700 !default;
-// $font-weight-bolder: bolder !default;
-
-// $font-weight-base: $font-weight-normal !default;
-
-// $line-height-base: 1.5 !default;
-// $line-height-sm: 1.25 !default;
-// $line-height-lg: 2 !default;
-
-// $h1-font-size: $font-size-base * 2.5 !default;
-// $h2-font-size: $font-size-base * 2 !default;
-// $h3-font-size: $font-size-base * 1.75 !default;
-// $h4-font-size: $font-size-base * 1.5 !default;
-// $h5-font-size: $font-size-base * 1.25 !default;
-// $h6-font-size: $font-size-base !default;
-// scss-docs-end font-variables
-
-// scss-docs-start font-sizes
-// $font-sizes: (
-// 1: $h1-font-size,
-// 2: $h2-font-size,
-// 3: $h3-font-size,
-// 4: $h4-font-size,
-// 5: $h5-font-size,
-// 6: $h6-font-size
-// ) !default;
-// scss-docs-end font-sizes
-
-// scss-docs-start headings-variables
-// $headings-margin-bottom: $spacer / 2 !default;
-// $headings-font-family: null !default;
-// $headings-font-style: null !default;
-// $headings-font-weight: 500 !default;
-// $headings-line-height: 1.2 !default;
-// $headings-color: unset !default;
-// scss-docs-end headings-variables
-
-// scss-docs-start display-headings
-// $display-font-sizes: (
-// 1: 5rem,
-// 2: 4.5rem,
-// 3: 4rem,
-// 4: 3.5rem,
-// 5: 3rem,
-// 6: 2.5rem
-// ) !default;
-
-// $display-font-weight: 300 !default;
-// $display-line-height: $headings-line-height !default;
-// scss-docs-end display-headings
-
-// scss-docs-start type-variables
-// $lead-font-size: $font-size-base * 1.25 !default;
-// $lead-font-weight: 300 !default;
-
-// $small-font-size: .875em !default;
-
-// $sub-sup-font-size: .75em !default;
-
-// $text-high-emphasis: $high-emphasis !default;
-// $text-medium-emphasis: $medium-emphasis !default;
-// $text-disabled: $disabled !default;
-// $text-muted: $disabled !default;
-
-// $text-high-emphasis-inverse: $high-emphasis-inverse !default;
-// $text-medium-emphasis-inverse: $medium-emphasis-inverse !default;
-// $text-disabled-inverse: $disabled-inverse !default;
-
-// $initialism-font-size: $small-font-size !default;
-
-// $blockquote-margin-y: $spacer !default;
-// $blockquote-font-size: $font-size-base * 1.25 !default;
-// $blockquote-footer-color: $gray-600 !default;
-// $blockquote-footer-font-size: $small-font-size !default;
-
-// $hr-margin-y: $spacer !default;
-// $hr-color: inherit !default;
-// $hr-height: $border-width !default;
-// $hr-opacity: .25 !default;
-
-// $vr-color: inherit !default;
-// $vr-width: $border-width !default;
-// $vr-opacity: .25 !default;
-
-// $legend-margin-bottom: .5rem !default;
-// $legend-font-size: 1.5rem !default;
-// $legend-font-weight: null !default;
-
-// $mark-padding: .2em !default;
-
-// $dt-font-weight: $font-weight-bold !default;
-
-// $nested-kbd-font-weight: $font-weight-bold !default;
-
-// $list-inline-padding: .5rem !default;
-
-// $mark-bg: #fcf8e3 !default;
-// scss-docs-end type-variables
-
-// Icons
-// $icon-size-base: 1rem !default;
-// $icon-size-sm: $icon-size-base * .875 !default;
-// $icon-size-lg: $icon-size-base * 1.25 !default;
-// $icon-size-xl: $icon-size-base * 1.5 !default;
-
-
-// Tables
-//
-// Customizes the `.table` component with basic values, each used across all table variations.
-
-// scss-docs-start table-variables
-// $table-cell-padding-y: .5rem !default;
-// $table-cell-padding-x: .5rem !default;
-// $table-cell-padding-y-sm: .25rem !default;
-// $table-cell-padding-x-sm: .25rem !default;
-
-// $table-cell-vertical-align: top !default;
-
-// $table-color: $body-color !default;
-// $table-bg: transparent !default;
-
-// $table-th-font-weight: 600 !default;
-
-// $table-striped-color: $table-color !default;
-// $table-striped-bg-factor: .05 !default;
-// $table-striped-bg: rgba($black, $table-striped-bg-factor) !default;
-
-// $table-active-color: $table-color !default;
-// $table-active-bg-factor: .1 !default;
-// $table-active-bg: rgba($black, $table-active-bg-factor) !default;
-
-// $table-hover-color: $table-color !default;
-// $table-hover-bg-factor: .075 !default;
-// $table-hover-bg: rgba($black, $table-hover-bg-factor) !default;
-
-// $table-border-factor: .1 !default;
-// $table-border-width: $border-width !default;
-// $table-border-color: $border-color !default;
-
-// $table-striped-order: odd !default;
-
-// $table-group-separator-color: currentColor !default;
-
-// $table-caption-color: $text-muted !default;
-
-// $table-bg-scale: -80% !default;
-// scss-docs-end table-variables
-
-// scss-docs-start table-loop
-// $table-variants: (
-// "primary": table-color-map(shift-color($primary, $table-bg-scale)),
-// "secondary": table-color-map(shift-color($secondary, $table-bg-scale)),
-// "success": table-color-map(shift-color($success, $table-bg-scale)),
-// "danger": table-color-map(shift-color($danger, $table-bg-scale)),
-// "warning": table-color-map(shift-color($warning, $table-bg-scale)),
-// "info": table-color-map(shift-color($info, $table-bg-scale)),
-// "light": table-color-map(shift-color($light, $table-bg-scale)),
-// "dark": table-color-map(shift-color($dark, $table-bg-scale))
-// ) !default;
-// scss-docs-end table-loop
-
-
-// Buttons + Forms
-//
-// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.
-
-// scss-docs-start input-btn-variables
-// $input-btn-padding-y: .375rem !default;
-// $input-btn-padding-x: .75rem !default;
-// $input-btn-font-family: null !default;
-// $input-btn-font-size: $font-size-base !default;
-// $input-btn-line-height: $line-height-base !default;
-
-// $input-btn-focus-width: .25rem !default;
-// $input-btn-focus-color-opacity: .25 !default;
-// $input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;
-// $input-btn-focus-blur: 0 !default;
-// $input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;
-
-// $input-btn-padding-y-sm: .25rem !default;
-// $input-btn-padding-x-sm: .5rem !default;
-// $input-btn-font-size-sm: $font-size-sm !default;
-
-// $input-btn-padding-y-lg: .5rem !default;
-// $input-btn-padding-x-lg: 1rem !default;
-// $input-btn-font-size-lg: $font-size-lg !default;
-
-// $input-btn-border-width: $border-width !default;
-// scss-docs-end input-btn-variables
-
-
-// Buttons
-//
-// For each of Bootstrap's buttons, define text, background, and border color.
-
-// scss-docs-start btn-variables
-// $btn-padding-y: $input-btn-padding-y !default;
-// $btn-padding-x: $input-btn-padding-x !default;
-// $btn-font-family: $input-btn-font-family !default;
-// $btn-font-size: $input-btn-font-size !default;
-// $btn-line-height: $input-btn-line-height !default;
-// $btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping
-
-// $btn-padding-y-sm: $input-btn-padding-y-sm !default;
-// $btn-padding-x-sm: $input-btn-padding-x-sm !default;
-// $btn-font-size-sm: $input-btn-font-size-sm !default;
-
-// $btn-padding-y-lg: $input-btn-padding-y-lg !default;
-// $btn-padding-x-lg: $input-btn-padding-x-lg !default;
-// $btn-font-size-lg: $input-btn-font-size-lg !default;
-
-// $btn-border-width: $input-btn-border-width !default;
-
-// $btn-font-weight: $font-weight-normal !default;
-// $btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
-// $btn-focus-width: $input-btn-focus-width !default;
-// $btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
-// $btn-disabled-opacity: .65 !default;
-// $btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;
-
-// $btn-link-color: $link-color !default;
-// $btn-link-hover-color: $link-hover-color !default;
-// $btn-link-disabled-color: $gray-600 !default;
-
-// Allows for customizing button radius independently from global border radius
-// $btn-border-radius: $border-radius !default;
-// $btn-border-radius-sm: $border-radius-sm !default;
-// $btn-border-radius-lg: $border-radius-lg !default;
-
-// $btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-
-// $btn-hover-bg-shade-amount: 15% !default;
-// $btn-hover-bg-tint-amount: 15% !default;
-// $btn-hover-border-shade-amount: 20% !default;
-// $btn-hover-border-tint-amount: 10% !default;
-// $btn-active-bg-shade-amount: 20% !default;
-// $btn-active-bg-tint-amount: 20% !default;
-// $btn-active-border-shade-amount: 25% !default;
-// $btn-active-border-tint-amount: 10% !default;
-
-// $button-variants: (
-// "primary": btn-color-map($primary, $primary),
-// "secondary": btn-color-map($secondary, $secondary),
-// "success": btn-color-map($success, $success),
-// "danger": btn-color-map($danger, $danger),
-// "warning": btn-color-map($warning, $warning),
-// "info": btn-color-map($info, $info),
-// "light": btn-color-map($light, $light),
-// "dark": btn-color-map($dark, $dark)
-// ) !default;
-
-// $button-outline-ghost-variants: (
-// "primary": btn-outline-color-map($primary),
-// "secondary": btn-outline-color-map($secondary),
-// "success": btn-outline-color-map($success),
-// "danger": btn-outline-color-map($danger),
-// "warning": btn-outline-color-map($warning),
-// "info": btn-outline-color-map($info),
-// "light": btn-outline-color-map($light),
-// "dark": btn-outline-color-map($dark)
-// ) !default;
-// scss-docs-end btn-variables
-
-
-// Forms
-// scss-docs-start form-variables
-// scss-docs-start form-text-variables
-// $form-text-margin-top: .25rem !default;
-// $form-text-font-size: $small-font-size !default;
-// $form-text-font-style: null !default;
-// $form-text-font-weight: null !default;
-// $form-text-color: $text-muted !default;
-// scss-docs-end form-text-variables
-
-// scss-docs-start form-label-variables
-// $form-label-margin-bottom: .5rem !default;
-// $form-label-font-size: null !default;
-// $form-label-font-style: null !default;
-// $form-label-font-weight: null !default;
-// $form-label-color: null !default;
-// scss-docs-end form-label-variables
-
-// scss-docs-start form-input-variables
-// $input-padding-y: $input-btn-padding-y !default;
-// $input-padding-x: $input-btn-padding-x !default;
-// $input-font-family: $input-btn-font-family !default;
-// $input-font-size: $input-btn-font-size !default;
-// $input-font-weight: $font-weight-base !default;
-// $input-line-height: $input-btn-line-height !default;
-
-// $input-padding-y-sm: $input-btn-padding-y-sm !default;
-// $input-padding-x-sm: $input-btn-padding-x-sm !default;
-// $input-font-size-sm: $input-btn-font-size-sm !default;
-
-// $input-padding-y-lg: $input-btn-padding-y-lg !default;
-// $input-padding-x-lg: $input-btn-padding-x-lg !default;
-// $input-font-size-lg: $input-btn-font-size-lg !default;
-
-// $input-bg: $white !default;
-// $input-disabled-bg: $gray-200 !default;
-// $input-disabled-border-color: $gray-400 !default;
-
-// $input-color: $body-color !default;
-// $input-border-color: $gray-400 !default;
-// $input-border-width: $input-btn-border-width !default;
-// $input-box-shadow: $box-shadow-inset !default;
-
-// $input-border-radius: $border-radius !default;
-// $input-border-radius-sm: $border-radius-sm !default;
-// $input-border-radius-lg: $border-radius-lg !default;
-
-// $input-focus-bg: $input-bg !default;
-// $input-focus-border-color: tint-color($component-active-bg, 50%) !default;
-// $input-focus-color: $input-color !default;
-// $input-focus-width: $input-btn-focus-width !default;
-// $input-focus-box-shadow: $input-btn-focus-box-shadow !default;
-
-// $input-placeholder-color: $gray-600 !default;
-// $input-plaintext-color: $body-color !default;
-
-// $input-height-border: $input-border-width * 2 !default;
-
-// $input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;
-// $input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;
-// $input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;
-
-// $input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;
-// $input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;
-// $input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;
-
-// $input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-// scss-docs-end form-input-variables
-
-// scss-docs-start form-check-variables
-// $form-check-input-width: 1em !default;
-// $form-check-min-height: $font-size-base * $line-height-base !default;
-// $form-check-padding-start: $form-check-input-width + .5em !default;
-// $form-check-margin-bottom: .125rem !default;
-// $form-check-label-color: unset !default;
-// $form-check-label-cursor: null !default;
-// $form-check-transition: null !default;
-
-// $form-check-input-active-filter: brightness(90%) !default;
-
-// $form-check-input-bg: $input-bg !default;
-// $form-check-input-border: 1px solid rgba($black, .25) !default;
-// $form-check-input-border-radius: .25em !default;
-// $form-check-radio-border-radius: 50% !default;
-// $form-check-input-focus-border: $input-focus-border-color !default;
-// $form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;
-
-// $form-check-input-checked-color: $component-active-color !default;
-// $form-check-input-checked-bg-color: $component-active-bg !default;
-// $form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;
-// $form-check-input-checked-bg-image: url("data:image/svg+xml,
") !default;
-// $form-check-radio-checked-bg-image: url("data:image/svg+xml,
") !default;
-
-// $form-check-input-indeterminate-color: $component-active-color !default;
-// $form-check-input-indeterminate-bg-color: $component-active-bg !default;
-// $form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;
-// $form-check-input-indeterminate-bg-image: url("data:image/svg+xml,
") !default;
-
-// $form-check-input-disabled-opacity: .5 !default;
-// $form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;
-// $form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;
-
-// $form-check-inline-margin-end: 1rem !default;
-// scss-docs-end form-check-variables
-
-// scss-docs-start form-switch-variables
-// $form-switch-color: rgba(0, 0, 0, .25) !default;
-// $form-switch-width: 1.5em !default;
-// $form-switch-padding-start: $form-switch-width + .5em !default;
-// $form-switch-bg-image: url("data:image/svg+xml,
") !default;
-// $form-switch-border-radius: $form-switch-width !default;
-// $form-switch-transition: background-position .15s ease-in-out !default;
-
-// $form-switch-focus-color: $input-focus-border-color !default;
-// $form-switch-focus-bg-image: url("data:image/svg+xml,
") !default;
-
-// $form-switch-checked-color: $component-active-color !default;
-// $form-switch-checked-bg-image: url("data:image/svg+xml,
") !default;
-// $form-switch-checked-bg-position: right center !default;
-
-// $form-switch-widths: (
-// lg: (
-// width: 1.75em,
-// height: 1.25em
-// ),
-// xl: (
-// width: 2em,
-// height: 1.5em
-// )
-// ) !default;
-// scss-docs-end form-switch-variables
-
-// $form-check-inline-margin-end: 1rem !default;
-
-// scss-docs-start input-group-variables
-// $input-group-addon-padding-y: $input-padding-y !default;
-// $input-group-addon-padding-x: $input-padding-x !default;
-// $input-group-addon-font-weight: $input-font-weight !default;
-// $input-group-addon-color: $input-color !default;
-// $input-group-addon-bg: $gray-200 !default;
-// $input-group-addon-border-color: $input-border-color !default;
-// scss-docs-end input-group-variables
-
-// scss-docs-start form-select-variables
-// $form-select-padding-y: $input-padding-y !default;
-// $form-select-padding-x: $input-padding-x !default;
-// $form-select-font-family: $input-font-family !default;
-// $form-select-font-size: $input-font-size !default;
-// $form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image
-// $form-select-font-weight: $input-font-weight !default;
-// $form-select-line-height: $input-line-height !default;
-// $form-select-color: $input-color !default;
-// $form-select-bg: $input-bg !default;
-// $form-select-disabled-color: null !default;
-// $form-select-disabled-bg: $gray-200 !default;
-// $form-select-disabled-border-color: $input-disabled-border-color !default;
-// $form-select-bg-position: right $form-select-padding-x center !default;
-// $form-select-bg-size: 16px 12px !default; // In pixels because image dimensions
-// $form-select-indicator-color: $gray-800 !default;
-// $form-select-indicator: url("data:image/svg+xml,
") !default;
-
-// $form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;
-// $form-select-feedback-icon-position: center right $form-select-indicator-padding !default;
-// $form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;
-
-// $form-select-border-width: $input-border-width !default;
-// $form-select-border-color: $input-border-color !default;
-// $form-select-border-radius: $border-radius !default;
-// $form-select-box-shadow: $box-shadow-inset !default;
-
-// $form-select-focus-border-color: $input-focus-border-color !default;
-// $form-select-focus-width: $input-focus-width !default;
-// $form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;
-
-// $form-select-padding-y-sm: $input-padding-y-sm !default;
-// $form-select-padding-x-sm: $input-padding-x-sm !default;
-// $form-select-font-size-sm: $input-font-size-sm !default;
-
-// $form-select-padding-y-lg: $input-padding-y-lg !default;
-// $form-select-padding-x-lg: $input-padding-x-lg !default;
-// $form-select-font-size-lg: $input-font-size-lg !default;
-// scss-docs-end form-select-variables
-
-// scss-docs-start form-range-variables
-// $form-range-track-width: 100% !default;
-// $form-range-track-height: .5rem !default;
-// $form-range-track-cursor: pointer !default;
-// $form-range-track-bg: $gray-300 !default;
-// $form-range-track-border-radius: 1rem !default;
-// $form-range-track-box-shadow: $box-shadow-inset !default;
-
-// $form-range-thumb-width: 1rem !default;
-// $form-range-thumb-height: $form-range-thumb-width !default;
-// $form-range-thumb-bg: $component-active-bg !default;
-// $form-range-thumb-border: 0 !default;
-// $form-range-thumb-border-radius: 1rem !default;
-// $form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
-// $form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;
-// $form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge
-// $form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;
-// $form-range-thumb-disabled-bg: $gray-500 !default;
-// $form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-// scss-docs-end form-range-variables
-
-// scss-docs-start form-file-variables
-// $form-file-button-color: $input-color !default;
-// $form-file-button-bg: $input-group-addon-bg !default;
-// $form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;
-// scss-docs-end form-file-variables
-
-// scss-docs-start form-floating-variables
-// $form-floating-height: add(3.5rem, $input-height-border) !default;
-// $form-floating-padding-x: $input-padding-x !default;
-// $form-floating-padding-y: 1rem !default;
-// $form-floating-input-padding-t: 1.625rem !default;
-// $form-floating-input-padding-b: .625rem !default;
-// $form-floating-label-opacity: .65 !default;
-// $form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;
-// $form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;
-// scss-docs-end form-floating-variables
-
-// Form validation
-
-// scss-docs-start form-feedback-variables
-// $form-feedback-margin-top: $form-text-margin-top !default;
-// $form-feedback-font-size: $form-text-font-size !default;
-// $form-feedback-font-style: $form-text-font-style !default;
-// $form-feedback-valid-color: $success !default;
-// $form-feedback-invalid-color: $danger !default;
-
-// $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
-// $form-feedback-icon-valid: url("data:image/svg+xml,
") !default;
-// $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
-// $form-feedback-icon-invalid: url("data:image/svg+xml,
") !default;
-// scss-docs-end form-feedback-variables
-
-// scss-docs-start form-validation-states
-// $form-validation-states: (
-// "valid": (
-// "color": $form-feedback-valid-color,
-// "icon": $form-feedback-icon-valid
-// ),
-// "invalid": (
-// "color": $form-feedback-invalid-color,
-// "icon": $form-feedback-icon-invalid
-// )
-// ) !default;
-// scss-docs-end form-validation-states
-// scss-docs-end form-variables
-// Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-
-// scss-docs-start zindex-stack
-// $zindex-dropdown: 1000 !default;
-// $zindex-sticky: 1020 !default;
-// $zindex-fixed: 1030 !default;
-// $zindex-modal-backdrop: 1040 !default;
-// $zindex-offcanvas: 1050 !default;
-// $zindex-modal: 1060 !default;
-// $zindex-popover: 1070 !default;
-// $zindex-tooltip: 1080 !default;
-// $zindex-toaster: 1090 !default;
-// scss-docs-end zindex-stack
-
-
-// Navs
-// scss-docs-start nav-variables
-// $nav-link-padding-y: .5rem !default;
-// $nav-link-padding-x: 1rem !default;
-// $nav-link-font-size: null !default;
-// $nav-link-font-weight: null !default;
-// $nav-link-color: $link-color !default;
-// $nav-link-hover-color: $link-hover-color !default;
-// $nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;
-// $nav-link-disabled-color: $gray-600 !default;
-
-// $nav-tabs-border-color: $gray-300 !default;
-// $nav-tabs-border-width: $border-width !default;
-// $nav-tabs-border-radius: $border-radius !default;
-// $nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;
-// $nav-tabs-link-active-color: $gray-700 !default;
-// $nav-tabs-link-active-bg: $body-bg !default;
-// $nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;
-
-// $nav-pills-border-radius: $border-radius !default;
-// $nav-pills-link-active-color: $component-active-color !default;
-// $nav-pills-link-active-bg: $component-active-bg !default;
-// scss-docs-end nav-variables
-
-
-// Navbar
-
-// scss-docs-start navbar-variables
-// $navbar-padding-y: $spacer / 2 !default;
-// $navbar-padding-x: null !default;
-
-// $navbar-nav-link-padding-x: .5rem !default;
-
-// $navbar-brand-font-size: $font-size-lg !default;
-// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
-// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
-// $navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;
-// $navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;
-// $navbar-brand-margin-end: 1rem !default;
-
-// $navbar-toggler-padding-y: .25rem !default;
-// $navbar-toggler-padding-x: .75rem !default;
-// $navbar-toggler-font-size: $font-size-lg !default;
-// $navbar-toggler-border-radius: $btn-border-radius !default;
-// $navbar-toggler-focus-width: $btn-focus-width !default;
-// $navbar-toggler-transition: box-shadow .15s ease-in-out !default;
-// scss-docs-end navbar-variables
-
-// scss-docs-start navbar-theme-variables
-// $navbar-dark-color: $medium-emphasis-inverse !default;
-// $navbar-dark-hover-color: $high-emphasis-inverse !default;
-// $navbar-dark-active-color: $high-emphasis-inverse !default;
-// $navbar-dark-disabled-color: $disabled-inverse !default;
-// $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,
") !default;
-// $navbar-dark-toggler-border-color: rgba($white, .1) !default;
-
-// $navbar-light-color: $medium-emphasis !default;
-// $navbar-light-hover-color: $high-emphasis !default;
-// $navbar-light-active-color: $high-emphasis !default;
-// $navbar-light-disabled-color: $disabled !default;
-// $navbar-light-toggler-icon-bg: url("data:image/svg+xml,
") !default;
-// $navbar-light-toggler-border-color: rgba($black, .1) !default;
-
-// $navbar-light-brand-color: $navbar-light-active-color !default;
-// $navbar-light-brand-hover-color: $navbar-light-active-color !default;
-// $navbar-dark-brand-color: $navbar-dark-active-color !default;
-// $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
-// scss-docs-end navbar-theme-variables
-
-
-// Dropdowns
-//
-// Dropdown menu container and contents.
-// scss-docs-start dropdown-variables
-// $dropdown-min-width: 10rem !default;
-// $dropdown-padding-x: 0 !default;
-// $dropdown-padding-y: .5rem !default;
-// $dropdown-spacer: .125rem !default;
-// $dropdown-font-size: $font-size-base !default;
-// $dropdown-color: $body-color !default;
-// $dropdown-bg: $white !default;
-// $dropdown-border-color: rgba($black, .15) !default;
-// $dropdown-border-radius: $border-radius !default;
-// $dropdown-border-width: $border-width !default;
-// $dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;
-// $dropdown-divider-bg: $dropdown-border-color !default;
-// $dropdown-divider-margin-y: $spacer / 2 !default;
-// $dropdown-box-shadow: $box-shadow !default;
-
-// $dropdown-link-color: $gray-900 !default;
-// $dropdown-link-hover-color: shade-color($gray-900, 10%) !default;
-// $dropdown-link-hover-bg: $gray-200 !default;
-
-// $dropdown-link-active-color: $component-active-color !default;
-// $dropdown-link-active-bg: $component-active-bg !default;
-
-// $dropdown-link-disabled-color: $gray-500 !default;
-
-// $dropdown-item-padding-y: $spacer / 4 !default;
-// $dropdown-item-padding-x: $spacer !default;
-
-// $dropdown-header-color: $gray-600 !default;
-// $dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;
-// scss-docs-end dropdown-variables
-
-// scss-docs-start dropdown-dark-variables
-// $dropdown-dark-color: $gray-300 !default;
-// $dropdown-dark-bg: $gray-800 !default;
-// $dropdown-dark-border-color: $dropdown-border-color !default;
-// $dropdown-dark-divider-bg: $dropdown-divider-bg !default;
-// $dropdown-dark-box-shadow: null !default;
-// $dropdown-dark-link-color: $dropdown-dark-color !default;
-// $dropdown-dark-link-hover-color: $high-emphasis-inverse !default;
-// $dropdown-dark-link-hover-bg: rgba($white, .15) !default;
-// $dropdown-dark-link-active-color: $dropdown-link-active-color !default;
-// $dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;
-// $dropdown-dark-link-disabled-color: $gray-500 !default;
-// $dropdown-dark-header-color: $gray-500 !default;
-// scss-docs-end dropdown-dark-variables
-
-
-// Pagination
-
-// scss-docs-start pagination-variables
-// $pagination-padding-y: .375rem !default;
-// $pagination-padding-x: .75rem !default;
-// $pagination-padding-y-sm: .25rem !default;
-// $pagination-padding-x-sm: .5rem !default;
-// $pagination-padding-y-lg: .75rem !default;
-// $pagination-padding-x-lg: 1.5rem !default;
-
-// $pagination-color: $link-color !default;
-// $pagination-bg: $white !default;
-// $pagination-border-width: $border-width !default;
-// $pagination-border-radius: $border-radius !default;
-// $pagination-margin-start: -$pagination-border-width !default;
-// $pagination-border-color: $gray-300 !default;
-
-// $pagination-focus-color: $link-hover-color !default;
-// $pagination-focus-bg: $gray-200 !default;
-// $pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;
-// $pagination-focus-outline: 0 !default;
-
-// $pagination-hover-color: $link-hover-color !default;
-// $pagination-hover-bg: $gray-200 !default;
-// $pagination-hover-border-color: $gray-300 !default;
-
-// $pagination-active-color: $component-active-color !default;
-// $pagination-active-bg: $component-active-bg !default;
-// $pagination-active-border-color: $pagination-active-bg !default;
-
-// $pagination-disabled-color: $gray-600 !default;
-// $pagination-disabled-bg: $white !default;
-// $pagination-disabled-border-color: $gray-300 !default;
-
-// $pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
-// scss-docs-end pagination-variables
-
-// $pagination-border-radius-sm: $border-radius-sm !default;
-// $pagination-border-radius-lg: $border-radius-lg !default;
-// scss-docs-end pagination-variables
-
-
-// Cards
-// scss-docs-start card-variables
-// $card-spacer-y: $spacer !default;
-// $card-spacer-x: $spacer !default;
-// $card-title-spacer-y: $spacer / 2 !default;
-// $card-border-width: $border-width !default;
-// $card-border-radius: $border-radius !default;
-// $card-border-color: rgba($black, .125) !default;
-// $card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;
-// $card-cap-padding-y: $card-spacer-y / 2 !default;
-// $card-cap-padding-x: $card-spacer-x !default;
-// $card-cap-bg: rgba($black, .03) !default;
-// $card-cap-color: unset !default;
-// $card-height: null !default;
-// $card-color: unset !default;
-// $card-bg: $white !default;
-// $card-img-overlay-padding: $spacer !default;
-// $card-group-margin: $grid-gutter-width / 2 !default;
-// scss-docs-end card-variables
-
-// Accordion
-// scss-docs-start accordion-variables
-// $accordion-padding-y: 1rem !default;
-// $accordion-padding-x: 1.25rem !default;
-// $accordion-color: $body-color !default;
-// $accordion-bg: $body-bg !default;
-// $accordion-border-width: $border-width !default;
-// $accordion-border-color: rgba($black, .125) !default;
-// $accordion-border-radius: $border-radius !default;
-// $accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;
-
-// $accordion-body-padding-y: $accordion-padding-y !default;
-// $accordion-body-padding-x: $accordion-padding-x !default;
-
-// $accordion-button-padding-y: $accordion-padding-y !default;
-// $accordion-button-padding-x: $accordion-padding-x !default;
-// $accordion-button-color: $accordion-color !default;
-// $accordion-button-bg: $accordion-bg !default;
-// $accordion-transition: $btn-transition, border-radius .15s ease !default;
-// $accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;
-// $accordion-button-active-color: shade-color($primary, 10%) !default;
-
-// $accordion-button-focus-border-color: $input-focus-border-color !default;
-// $accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;
-
-// $accordion-icon-width: 1.25rem !default;
-// $accordion-icon-color: $accordion-color !default;
-// $accordion-icon-active-color: $accordion-button-active-color !default;
-// $accordion-icon-transition: transform .2s ease-in-out !default;
-// $accordion-icon-transform: rotate(-180deg) !default;
-
-// $accordion-button-icon: url("data:image/svg+xml,
") !default;
-// $accordion-button-active-icon: url("data:image/svg+xml,
") !default;
-// scss-docs-end accordion-variables
-
-// Tooltips
-
-// scss-docs-start tooltip-variables
-// $tooltip-font-size: $font-size-sm !default;
-// $tooltip-max-width: 200px !default;
-// $tooltip-color: $high-emphasis-inverse !default;
-// $tooltip-bg: $black !default;
-// $tooltip-border-radius: $border-radius !default;
-// $tooltip-opacity: .9 !default;
-// $tooltip-padding-y: $spacer / 4 !default;
-// $tooltip-padding-x: $spacer / 2 !default;
-// $tooltip-margin: 0 !default;
-
-// $tooltip-arrow-width: .8rem !default;
-// $tooltip-arrow-height: .4rem !default;
-// $tooltip-arrow-color: $tooltip-bg !default;
-// scss-docs-end tooltip-variables
-
-// Form tooltips must come after regular tooltips
-// scss-docs-start tooltip-feedback-variables
-// $form-feedback-tooltip-padding-y: $tooltip-padding-y !default;
-// $form-feedback-tooltip-padding-x: $tooltip-padding-x !default;
-// $form-feedback-tooltip-font-size: $tooltip-font-size !default;
-// $form-feedback-tooltip-line-height: null !default;
-// $form-feedback-tooltip-opacity: $tooltip-opacity !default;
-// $form-feedback-tooltip-border-radius: $tooltip-border-radius !default;
-// scss-docs-end tooltip-feedback-variables
-
-
-// Popovers
-// scss-docs-start popover-variables
-// $popover-font-size: $font-size-sm !default;
-// $popover-bg: $white !default;
-// $popover-max-width: 276px !default;
-// $popover-border-width: $border-width !default;
-// $popover-border-color: rgba($black, .2) !default;
-// $popover-border-radius: $border-radius-lg !default;
-// $popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;
-// $popover-box-shadow: $box-shadow !default;
-
-// $popover-header-bg: shade-color($popover-bg, 6%) !default;
-// $popover-header-color: $headings-color !default;
-// $popover-header-padding-y: .5rem !default;
-// $popover-header-padding-x: $spacer !default;
-
-// $popover-body-color: $body-color !default;
-// $popover-body-padding-y: $spacer !default;
-// $popover-body-padding-x: $spacer !default;
-
-// $popover-arrow-width: 1rem !default;
-// $popover-arrow-height: .5rem !default;
-// $popover-arrow-color: $popover-bg !default;
-
-// $popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
-// scss-docs-end popover-variables
-
-
-// Toasts
-// scss-docs-start toast-variables
-// $toast-max-width: 350px !default;
-// $toast-padding-x: .75rem !default;
-// $toast-padding-y: .5rem !default;
-// $toast-font-size: .875rem !default;
-// $toast-color: unset !default;
-// $toast-background-color: rgba($white, .85) !default;
-// $toast-border-width: 1px !default;
-// $toast-border-color: rgba(0, 0, 0, .1) !default;
-// $toast-border-radius: $border-radius !default;
-// $toast-box-shadow: $box-shadow !default;
-// $toast-spacing: $container-padding-x !default;
-
-// $toast-header-color: $gray-600 !default;
-// $toast-header-background-color: rgba($white, .85) !default;
-// $toast-header-border-color: rgba(0, 0, 0, .05) !default;
-// scss-docs-end toast-variables
-
-
-// Badges
-// scss-docs-start badge-variables
-// $badge-font-size: .75em !default;
-// $badge-font-weight: $font-weight-bold !default;
-// $badge-color: $high-emphasis-inverse !default;
-// $badge-padding-y: .35em !default;
-// $badge-padding-x: .65em !default;
-// $badge-border-radius: $border-radius !default;
-// scss-docs-end badge-variables
-
-// $badge-font-size-sm: .65em !default;
-// $badge-padding-y-sm: .3em !default;
-// $badge-padding-x-sm: .5em !default;
-// scss-docs-end badge-variables
-
-
-// Modals
-
-// scss-docs-start modal-variables
-// $modal-inner-padding: $spacer !default;
-
-// $modal-footer-margin-between: .5rem !default;
-
-// $modal-dialog-margin: .5rem !default;
-// $modal-dialog-margin-y-sm-up: 1.75rem !default;
-
-// $modal-title-line-height: $line-height-base !default;
-
-// $modal-content-color: unset !default;
-// $modal-content-bg: $white !default;
-// $modal-content-border-color: rgba($black, .2) !default;
-// $modal-content-border-width: $border-width !default;
-// $modal-content-border-radius: $border-radius-lg !default;
-// $modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
-// $modal-content-box-shadow-xs: $box-shadow-sm !default;
-// $modal-content-box-shadow-sm-up: $box-shadow !default;
-
-// $modal-backdrop-bg: $black !default;
-// $modal-backdrop-opacity: .5 !default;
-// $modal-header-border-color: $border-color !default;
-// $modal-footer-border-color: $modal-header-border-color !default;
-// $modal-header-border-width: $modal-content-border-width !default;
-// $modal-footer-border-width: $modal-header-border-width !default;
-// $modal-header-padding-y: $modal-inner-padding !default;
-// $modal-header-padding-x: $modal-inner-padding !default;
-// $modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility
-
-// $modal-sm: 300px !default;
-// $modal-md: 500px !default;
-// $modal-lg: 800px !default;
-// $modal-xl: 1140px !default;
-
-// $modal-fade-transform: translate(0, -50px) !default;
-// $modal-show-transform: none !default;
-// $modal-transition: transform .3s ease-out !default;
-// $modal-scale-transform: scale(1.02) !default;
-// scss-docs-end modal-variables
-
-
-// Avatars
-// scss-docs-start avatar-variables
-// $avatar-width: 2rem !default;
-
-// $avatar-widths: (
-// sm: 1.5rem,
-// md: 2.5rem,
-// lg: 3rem,
-// xl: 4rem
-// ) !default;
-
-// $avatar-transition: margin .15s !default;
-// scss-docs-end avatar-variables
-
-// Alerts
-//
-// Define alert colors, border radius, and padding.
-
-// scss-docs-start alert-variables
-// $alert-padding-y: $spacer !default;
-// $alert-padding-x: $spacer !default;
-// $alert-margin-bottom: 1rem !default;
-// $alert-border-radius: $border-radius !default;
-// $alert-link-font-weight: $font-weight-bold !default;
-// $alert-border-width: $border-width !default;
-// $alert-bg-scale: -80% !default;
-// $alert-border-scale: -70% !default;
-// $alert-color-scale: 40% !default;
-// $alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side
-// scss-docs-end alert-variables
-
-// $alert-variants: (
-// "primary": alert-color-map($primary),
-// "secondary": alert-color-map($secondary),
-// "success": alert-color-map($success),
-// "danger": alert-color-map($danger),
-// "warning": alert-color-map($warning),
-// "info": alert-color-map($info),
-// "light": alert-color-map($light),
-// "dark": alert-color-map($dark)
-// ) !default;
-// scss-docs-end alert-variables
-
-// Callouts
-// scss-docs-start callout-variables
-// $callout-padding-y: $spacer !default;
-// $callout-padding-x: $spacer !default;
-// $callout-margin-y: $spacer !default;
-// $callout-margin-x: 0 !default;
-// $callout-border-radius: $border-radius !default;
-// $callout-border-width: $border-width !default;
-// $callout-border-color: $border-color !default;
-// $callout-border-left-width: (4 * $callout-border-width) !default;
-
-// $callout-variants: (
-// "primary": $primary,
-// "secondary": $secondary,
-// "success": $success,
-// "danger": $danger,
-// "warning": $warning,
-// "info": $info,
-// "light": $light,
-// "dark": $dark
-// ) !default;
-// scss-docs-end callout-variables
-
-
-// Progress bars
-
-// scss-docs-start progress-variables
-// $progress-height: 1rem !default;
-// $progress-font-size: $font-size-base * .75 !default;
-// $progress-bg: $gray-200 !default;
-// $progress-border-radius: $border-radius !default;
-// $progress-box-shadow: $box-shadow-inset !default;
-// $progress-bar-color: $high-emphasis-inverse !default;
-// $progress-bar-bg: $primary !default;
-// $progress-bar-animation-timing: 1s linear infinite !default;
-// $progress-bar-transition: width .6s ease !default;
-// scss-docs-end progress-variables
-
-// List group
-// scss-docs-start list-group-variables
-// $list-group-color: unset !default;
-// $list-group-bg: $white !default;
-// $list-group-border-color: rgba($black, .125) !default;
-// $list-group-border-width: $border-width !default;
-// $list-group-border-radius: $border-radius !default;
-
-// $list-group-item-padding-y: $spacer / 2 !default;
-// $list-group-item-padding-x: $spacer !default;
-// $list-group-item-bg-scale: -80% !default;
-// $list-group-item-color-scale: 40% !default;
-
-// $list-group-hover-bg: $gray-100 !default;
-// $list-group-active-color: $component-active-color !default;
-// $list-group-active-bg: $component-active-bg !default;
-// $list-group-active-border-color: $list-group-active-bg !default;
-
-// $list-group-disabled-color: $gray-600 !default;
-// $list-group-disabled-bg: $list-group-bg !default;
-
-// $list-group-action-color: $gray-700 !default;
-// $list-group-action-hover-color: $list-group-action-color !default;
-
-// $list-group-action-active-color: $body-color !default;
-// $list-group-action-active-bg: $gray-200 !default;
-// scss-docs-end list-group-variables
-
-// $list-group-variants: (
-// "primary": list-group-color-map($primary),
-// "secondary": list-group-color-map($secondary),
-// "success": list-group-color-map($success),
-// "danger": list-group-color-map($danger),
-// "warning": list-group-color-map($warning),
-// "info": list-group-color-map($info),
-// "light": list-group-color-map($light),
-// "dark": list-group-color-map($dark)
-// ) !default;
-// scss-docs-end list-group-variables
-
-
-// Header
-// scss-docs-start header-variables
-// $header-min-height: 4rem !default;
-// $header-padding-y: $spacer / 2 !default;
-// $header-padding-x: $spacer / 2 !default;
-// $header-brand-font-size: $font-size-lg !default;
-// $header-color: $medium-emphasis !default;
-// $header-bg: $white !default;
-// $header-border-color: $border-color !default;
-// $header-border-width: 1px !default;
-// $header-hover-color: $high-emphasis !default;
-// $header-active-color: $high-emphasis !default;
-// $header-disabled-color: $disabled !default;
-
-// Compute the header-brand padding-y so the header-brand will have the same height as header-text and nav-link
-// $nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;
-// $header-brand-height: $header-brand-font-size * $line-height-base !default;
-// $header-brand-padding-y: ($nav-link-height - $header-brand-height) / 2 !default;
-// $header-brand-margin-end: 1rem !default;
-// $header-brand-font-size: $font-size-lg !default;
-// $header-brand-color: $gray-900 !default;
-// $header-brand-hover-color: shade-color($gray-900, 10%) !default;
-
-// $header-toggler-padding-y: .25rem !default;
-// $header-toggler-padding-x: .75rem !default;
-// $header-toggler-font-size: $font-size-lg !default;
-// $header-toggler-bg: transparent !default;
-// $header-toggler-border: 0 !default;
-// $header-toggler-border-radius: $btn-border-radius !default;
-
-// $header-toggler-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") !default;
-// $header-toggler-hover-icon-bg: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$header-hover-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") !default;
-// $header-toggler-border-color: rgba($black, .1) !default;
-
-// $header-nav-link-padding-x: .5rem !default;
-
-// $header-divider-border-width: 1px !default;
-// $header-divider-border-color: $header-border-color !default;
-// scss-docs-end header-variables
-
-// Subheader
-// scss-docs-start subheader-variables
-// $subheader-min-height: 3rem !default;
-// $subheader-padding-y: $spacer / 2 !default;
-// $subheader-padding-x: $spacer !default;
-// $subheader-border-color: $border-color !default;
-// $subheader-border-width: 1px !default;
-
-// $subheader-nav-link-padding-x: .5rem !default;
-// scss-docs-end subheader-variables
-
-// Default theme
-// scss-docs-start subheader-default-themes
-// $subheader-bg: $white !default;
-// $subheader-color: $medium-emphasis !default;
-// $subheader-hover-color: $high-emphasis !default;
-// $subheader-active-color: $high-emphasis !default;
-// $subheader-disabled-color: $disabled !default;
-// scss-docs-end subheader-default-themes
-
-
-// Image thumbnails
-
-// scss-docs-start thumbnail-variables
-// $thumbnail-padding: .25rem !default;
-// $thumbnail-bg: $body-bg !default;
-// $thumbnail-border-width: $border-width !default;
-// $thumbnail-border-color: $gray-300 !default;
-// $thumbnail-border-radius: $border-radius !default;
-// $thumbnail-box-shadow: $box-shadow-sm !default;
-// scss-docs-end thumbnail-variables
-
-
-// Figures
-
-// scss-docs-start figure-variables
-// $figure-caption-font-size: $small-font-size !default;
-// $figure-caption-color: $gray-600 !default;
-// scss-docs-end figure-variables
-
-
-// Breadcrumbs
-// scss-docs-start breadcrumb-variables
-// $breadcrumb-font-size: null !default;
-// $breadcrumb-padding-y: 0 !default;
-// $breadcrumb-padding-x: 0 !default;
-// $breadcrumb-item-padding-x: .5rem !default;
-// $breadcrumb-margin-bottom: 1rem !default;
-// $breadcrumb-bg: unset !default;
-// $breadcrumb-divider-color: $gray-600 !default;
-// $breadcrumb-active-color: $gray-600 !default;
-// $breadcrumb-divider: quote("/") !default;
-// $breadcrumb-divider-flipped: $breadcrumb-divider !default;
-// $breadcrumb-border-radius: null !default;
-// scss-docs-end breadcrumb-variables
-
-// Carousel
-// scss-docs-start carousel-variables
-// $carousel-control-color: $high-emphasis-inverse !default;
-// $carousel-control-width: 15% !default;
-// $carousel-control-opacity: .5 !default;
-// $carousel-control-hover-opacity: .9 !default;
-// $carousel-control-transition: opacity .15s ease !default;
-
-// $carousel-indicator-width: 30px !default;
-// $carousel-indicator-height: 3px !default;
-// $carousel-indicator-hit-area-height: 10px !default;
-// $carousel-indicator-spacer: 3px !default;
-// $carousel-indicator-opacity: .5 !default;
-// $carousel-indicator-active-bg: $white !default;
-// $carousel-indicator-active-opacity: 1 !default;
-// $carousel-indicator-transition: opacity .6s ease !default;
-
-// $carousel-caption-width: 70% !default;
-// $carousel-caption-color: $high-emphasis-inverse !default;
-// $carousel-caption-padding-y: 1.25rem !default;
-// $carousel-caption-spacer: 1.25rem !default;
-
-// $carousel-control-icon-width: 2rem !default;
-
-// $carousel-control-prev-icon-bg: url("data:image/svg+xml,
") !default;
-// $carousel-control-next-icon-bg: url("data:image/svg+xml,
") !default;
-
-// $carousel-transition-duration: .6s !default;
-// $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
-
-// $carousel-dark-indicator-active-bg: $black !default;
-// $carousel-dark-caption-color: $high-emphasis !default;
-// $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
-// scss-docs-end carousel-variables
-
-// scss-docs-start sidebar-variables
-// $sidebar-width: 16rem !default;
-// $sidebar-widths: (
-// sm: 12rem,
-// lg: 20rem,
-// xl: 24rem
-// ) !default;
-// $sidebar-padding-y: 0 !default;
-// $sidebar-padding-x: 0 !default;
-// $sidebar-color: $high-emphasis-inverse !default;
-// $sidebar-bg: $gray-base !default;
-// $sidebar-border-width: 0 !default;
-// $sidebar-border-color: transparent !default;
-// $sidebar-transition: margin-left .15s, margin-right .15s, box-shadow .075s, transform .15s, width .15s, z-index 0s ease .15s !default;
-
-// $sidebar-brand-height: 4rem !default;
-// $sidebar-brand-color: $high-emphasis-inverse !default;
-// $sidebar-brand-bg: rgba($black, .2) !default;
-
-// $sidebar-header-height: 4rem !default;
-// $sidebar-header-padding-y: .75rem !default;
-// $sidebar-header-padding-x: 1rem !default;
-// $sidebar-header-bg: rgba($black, .2) !default;
-// $sidebar-header-height-transition: height .15s, padding .15s !default;
-
-// $sidebar-narrow-width: 4rem !default;
-
-// $sidebar-backdrop-bg: $black !default;
-// $sidebar-backdrop-opacity: .5 !default;
-// $sidebar-backdrop-transition: opacity .15s linear !default;
-
-// $sidebar-nav-title-padding-y: .75rem !default;
-// $sidebar-nav-title-padding-x: 1rem !default;
-// $sidebar-nav-title-margin-top: 1rem !default;
-// $sidebar-nav-title-color: $medium-emphasis-inverse !default;
-// $sidebar-nav-title-transition: height .15s, margin .15s !default;
-
-// $sidebar-nav-link-padding-y: .8445rem !default;
-// $sidebar-nav-link-padding-x: 1rem !default;
-// $sidebar-nav-link-color: $medium-emphasis-inverse !default;
-// $sidebar-nav-link-bg: transparent !default;
-// $sidebar-nav-link-transition: background .15s ease, color .15s ease !default;
-// $sidebar-nav-link-icon-color: $medium-emphasis-inverse !default;
-
-// $sidebar-nav-link-hover-color: $high-emphasis-inverse !default;
-// $sidebar-nav-link-hover-bg: rgba($white, .05) !default;
-// $sidebar-nav-link-hover-icon-color: $high-emphasis-inverse !default;
-
-// $sidebar-nav-link-active-color: $high-emphasis-inverse !default;
-// $sidebar-nav-link-active-bg: rgba($white, .05) !default;
-// $sidebar-nav-link-active-icon-color: $high-emphasis-inverse !default;
-
-// $sidebar-nav-link-disabled-color: $disabled-inverse !default;
-// $sidebar-nav-link-disabled-icon-color: $sidebar-nav-link-icon-color !default;
-
-// $sidebar-nav-icon-width: 4rem !default;
-// $sidebar-nav-icon-height: 1.25rem !default;
-// $sidebar-nav-icon-font-size: $sidebar-nav-icon-height !default;
-
-// $sidebar-nav-group-bg: rgba(0, 0, 0, .2) !default;
-// $sidebar-nav-group-transition: background .15s ease-in-out !default;
-// $sidebar-nav-group-items-transition: height .15s ease !default;
-// $sidebar-nav-group-toggle-show-color: $sidebar-nav-link-color !default;
-
-// $sidebar-nav-group-indicator-color: $medium-emphasis-inverse !default;
-// $sidebar-nav-group-indicator-icon: url("data:image/svg+xml,
") !default;
-// $sidebar-nav-group-indicator-hover-color: $sidebar-nav-link-hover-color !default;
-// $sidebar-nav-group-indicator-hover-icon: url("data:image/svg+xml,
") !default;
-// $sidebar-nav-group-indicator-transition: transform .15s !default;
-
-// $sidebar-footer-height: auto !default;
-// $sidebar-footer-padding-y: .75rem !default;
-// $sidebar-footer-padding-x: 1rem !default;
-// $sidebar-footer-bg: rgba($black, .2) !default;
-// $sidebar-footer-height-transition: height .15s, padding .15s !default;
-
-// $sidebar-toggler-height: 3rem !default;
-// $sidebar-toggler-bg: rgba($black, .2) !default;
-// $sidebar-toggler-transition: transform .15s !default;
-
-// $sidebar-toggler-indicator-width: 4rem !default;
-// $sidebar-toggler-indicator-height: 3rem !default;
-// $sidebar-toggler-indicator-color: $gray-600 !default;
-// $sidebar-toggler-indicator-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;
-// $sidebar-toggler-hover-bg: rgba(0, 0, 0, .3) !default;
-// $sidebar-toggler-indicator-hover-color: $sidebar-nav-link-hover-color !default;
-// $sidebar-toggler-indicator-hover-icon: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-toggler-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E") !default;
-// scss-docs-end sidebar-variables
-
-// Footer
-// scss-docs-start footer-variables
-// $footer-min-height: 3rem !default;
-// $footer-padding-y: $spacer / 2 !default;
-// $footer-padding-x: $spacer !default;
-// $footer-bg: $gray-100 !default;
-// $footer-color: $body-color !default;
-// $footer-border-width: 1px !default;
-// $footer-border-color: $border-color !default;
-// scss-docs-end footer-variables
-
-// Spinners
-// scss-docs-start spinner-variables
-// $spinner-width: 2rem !default;
-// $spinner-height: $spinner-width !default;
-// $spinner-vertical-align: -.125em !default;
-// $spinner-border-width: .25em !default;
-// $spinner-animation-speed: .75s !default;
-
-// $spinner-width-sm: 1rem !default;
-// $spinner-height-sm: $spinner-width-sm !default;
-// $spinner-border-width-sm: .2em !default;
-// scss-docs-end spinner-variables
-
-
-// Close
-// scss-docs-start close-variables
-// $btn-close-width: 1em !default;
-// $btn-close-height: $btn-close-width !default;
-// $btn-close-padding-x: .25em !default;
-// $btn-close-padding-y: $btn-close-padding-x !default;
-// $btn-close-color: $high-emphasis !default;
-// $btn-close-bg: url("data:image/svg+xml,
") !default;
-// $btn-close-focus-shadow: $input-btn-focus-box-shadow !default;
-// $btn-close-opacity: .5 !default;
-// $btn-close-hover-opacity: .75 !default;
-// $btn-close-focus-opacity: 1 !default;
-// $btn-close-disabled-opacity: .25 !default;
-// $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
-// scss-docs-end close-variables
-
-
-// Offcanvas
-
-// scss-docs-start offcanvas-variables
-// $offcanvas-padding-y: $modal-inner-padding !default;
-// $offcanvas-padding-x: $modal-inner-padding !default;
-// $offcanvas-horizontal-width: 400px !default;
-// $offcanvas-vertical-height: 30vh !default;
-// $offcanvas-transition-duration: .3s !default;
-// $offcanvas-border-color: $modal-content-border-color !default;
-// $offcanvas-border-width: $modal-content-border-width !default;
-// $offcanvas-title-line-height: $modal-title-line-height !default;
-// $offcanvas-bg-color: $modal-content-bg !default;
-// $offcanvas-color: $modal-content-color !default;
-// $offcanvas-box-shadow: $modal-content-box-shadow-xs !default;
-// scss-docs-end offcanvas-variables
-
-// Code
-
-// $code-font-size: $small-font-size !default;
-// $code-color: $pink !default;
-
-// $kbd-padding-y: .2rem !default;
-// $kbd-padding-x: .4rem !default;
-// $kbd-font-size: $code-font-size !default;
-// $kbd-color: $high-emphasis-inverse !default;
-// $kbd-bg: $gray-900 !default;
-
-// $pre-color: unset !default;
+// If you want to customize your project please add your variables below.
diff --git a/src/store.js b/src/store.js
index ab446364c..d0d7df485 100644
--- a/src/store.js
+++ b/src/store.js
@@ -2,10 +2,16 @@ import { createStore } from 'redux'
const initialState = {
sidebarShow: true,
+ theme: localStorage.getItem('coreui-free-react-admin-template-theme') ?? 'light',
}
const changeState = (state = initialState, { type, ...rest }) => {
switch (type) {
+ case 'setTheme':
+ const event = new Event('ColorSchemeChange')
+ document.documentElement.dispatchEvent(event)
+ localStorage.setItem('coreui-free-react-admin-template-theme', rest.theme)
+ return { ...state, ...rest }
case 'set':
return { ...state, ...rest }
default:
diff --git a/src/views/charts/MainChart.js b/src/views/charts/MainChart.js
new file mode 100644
index 000000000..de6c5ff3c
--- /dev/null
+++ b/src/views/charts/MainChart.js
@@ -0,0 +1,107 @@
+import React from 'react'
+import { CChartLine } from '@coreui/react-chartjs'
+import { getStyle } from '@coreui/utils'
+
+const MainChart = () => {
+ const random = () => Math.round(Math.random() * 100)
+
+ return (
+
+ )
+}
+
+export default MainChart
diff --git a/src/views/dashboard/Dashboard.js b/src/views/dashboard/Dashboard.js
index e979a0c16..e69957c7d 100644
--- a/src/views/dashboard/Dashboard.js
+++ b/src/views/dashboard/Dashboard.js
@@ -18,8 +18,6 @@ import {
CTableHeaderCell,
CTableRow,
} from '@coreui/react'
-import { CChartLine } from '@coreui/react-chartjs'
-import { getStyle, hexToRgba } from '@coreui/utils'
import CIcon from '@coreui/icons-react'
import {
cibCcAmex,
@@ -53,6 +51,7 @@ import avatar6 from 'src/assets/images/avatars/6.jpg'
import WidgetsBrand from '../widgets/WidgetsBrand'
import WidgetsDropdown from '../widgets/WidgetsDropdown'
+import MainChart from '../charts/MainChart'
const Dashboard = () => {
const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min)
@@ -208,90 +207,7 @@ const Dashboard = () => {
-
+
@@ -400,7 +316,7 @@ const Dashboard = () => {
-
+
diff --git a/src/views/pages/login/Login.js b/src/views/pages/login/Login.js
index 6b889d530..320cacd4d 100644
--- a/src/views/pages/login/Login.js
+++ b/src/views/pages/login/Login.js
@@ -18,7 +18,7 @@ import { cilLockLocked, cilUser } from '@coreui/icons'
const Login = () => {
return (
-
+
diff --git a/src/views/pages/page404/Page404.js b/src/views/pages/page404/Page404.js
index 09e2cf4b2..c14e859fc 100644
--- a/src/views/pages/page404/Page404.js
+++ b/src/views/pages/page404/Page404.js
@@ -13,7 +13,7 @@ import { cilMagnifyingGlass } from '@coreui/icons'
const Page404 = () => {
return (
-
+
diff --git a/src/views/pages/page500/Page500.js b/src/views/pages/page500/Page500.js
index d7f6db305..11d867b89 100644
--- a/src/views/pages/page500/Page500.js
+++ b/src/views/pages/page500/Page500.js
@@ -13,7 +13,7 @@ import { cilMagnifyingGlass } from '@coreui/icons'
const Page500 = () => {
return (
-
+
diff --git a/src/views/pages/register/Register.js b/src/views/pages/register/Register.js
index ee8afffb8..4dc5b7ae7 100644
--- a/src/views/pages/register/Register.js
+++ b/src/views/pages/register/Register.js
@@ -16,7 +16,7 @@ import { cilLockLocked, cilUser } from '@coreui/icons'
const Register = () => {
return (
-
+
From 0613a3acb2e900a667eac1d659cd3129287561a2 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Tue, 9 May 2023 23:15:33 +0200
Subject: [PATCH 044/138] docs: update comments
---
public/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/index.html b/public/index.html
index b25132580..21d293335 100644
--- a/public/index.html
+++ b/public/index.html
@@ -2,9 +2,9 @@
From ef6012e658eef26ac97500be90e98575a6511360 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Tue, 9 May 2023 23:15:44 +0200
Subject: [PATCH 045/138] chore: clean-up
---
src/views/dashboard/Dashboard.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/views/dashboard/Dashboard.js b/src/views/dashboard/Dashboard.js
index e69957c7d..73341242e 100644
--- a/src/views/dashboard/Dashboard.js
+++ b/src/views/dashboard/Dashboard.js
@@ -54,8 +54,6 @@ import WidgetsDropdown from '../widgets/WidgetsDropdown'
import MainChart from '../charts/MainChart'
const Dashboard = () => {
- const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min)
-
const progressExample = [
{ title: 'Visits', value: '29.703 Users', percent: 40, color: 'success' },
{ title: 'Unique', value: '24.093 Users', percent: 20, color: 'info' },
From b4541954369519ca1a259ab28df846600319b30b Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 10 May 2023 10:04:45 +0200
Subject: [PATCH 046/138] refactor: update main chart
---
src/views/dashboard/Dashboard.js | 2 +-
src/views/{charts => dashboard}/MainChart.js | 0
2 files changed, 1 insertion(+), 1 deletion(-)
rename src/views/{charts => dashboard}/MainChart.js (100%)
diff --git a/src/views/dashboard/Dashboard.js b/src/views/dashboard/Dashboard.js
index 73341242e..2bb1922a6 100644
--- a/src/views/dashboard/Dashboard.js
+++ b/src/views/dashboard/Dashboard.js
@@ -51,7 +51,7 @@ import avatar6 from 'src/assets/images/avatars/6.jpg'
import WidgetsBrand from '../widgets/WidgetsBrand'
import WidgetsDropdown from '../widgets/WidgetsDropdown'
-import MainChart from '../charts/MainChart'
+import MainChart from './MainChart'
const Dashboard = () => {
const progressExample = [
diff --git a/src/views/charts/MainChart.js b/src/views/dashboard/MainChart.js
similarity index 100%
rename from src/views/charts/MainChart.js
rename to src/views/dashboard/MainChart.js
From 88df73ad723ed03387b996808985ef627b586a37 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Fri, 12 May 2023 18:40:29 +0200
Subject: [PATCH 047/138] refactor: improve theme switch
---
src/App.js | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/App.js b/src/App.js
index dd068fe6f..b2ada6a90 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,6 +1,6 @@
import React, { Suspense, useEffect } from 'react'
import { HashRouter, Route, Routes } from 'react-router-dom'
-import { useSelector } from 'react-redux'
+import { useDispatch, useSelector } from 'react-redux'
import { CSpinner } from '@coreui/react'
import './scss/style.scss'
@@ -34,14 +34,15 @@ const Page404 = React.lazy(() => import('./views/pages/page404/Page404'))
const Page500 = React.lazy(() => import('./views/pages/page500/Page500'))
const App = () => {
+ const dispatch = useDispatch()
const theme = useSelector((state) => state.theme)
-
- if (theme) {
- document.documentElement.dataset.coreuiTheme =
- theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : theme
- }
+ const urlParams = new URLSearchParams(window.location.href.split('?')[1])
useEffect(() => {
+ if (urlParams.get('theme')) {
+ dispatch({ type: 'setTheme', theme: urlParams.get('theme') })
+ }
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
if (theme !== 'light' || theme !== 'dark') {
setTheme(getPreferredTheme(theme))
@@ -49,6 +50,10 @@ const App = () => {
})
}, [])
+ useEffect(() => {
+ setTheme(getPreferredTheme(theme))
+ }, [theme])
+
return (
From ccd3674280fdb5357b27384e8489107188cb6fd8 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Fri, 12 May 2023 18:41:17 +0200
Subject: [PATCH 048/138] chore: update dependencies
---
package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/package.json b/package.json
index accecf866..e783eb289 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"@coreui/coreui": "4.3.0-alpha.0",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.1.0",
- "@coreui/react": "^4.6.0",
+ "@coreui/react": "^4.9.0-alpha.1",
"@coreui/react-chartjs": "^2.1.2",
"@coreui/utils": "^2.0.1",
"chart.js": "^3.9.1",
From 307e9f5554cc5b9f594bc41b3b6f7bab1924d7fc Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 12 Jun 2023 15:14:59 +0200
Subject: [PATCH 049/138] chore: update dependencies and devDependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@coreui/chartjs ^3.1.1 → ^3.1.2
@coreui/coreui 4.3.0-alpha.0 → 4.3.0-beta.0
@coreui/react 4.9.0-alpha.0 → 4.9.0-beta.0
@coreui/react-chartjs ^2.1.2 → ^2.1.3
@coreui/utils ^2.0.1 → ^2.0.2
chart.js ^3.9.1 → ^4.3.0
core-js ^3.29.0 → ^3.31.0
eslint-config-prettier ^8.7.0 → ^8.8.0
prettier 2.8.4 → 2.8.8
react-redux ^8.0.5 → ^8.0.7
react-router-dom ^6.8.2 → ^6.12.1
sass ^1.58.3 → ^1.63.3
simplebar-react ^2.4.3 → ^3.2.4
web-vitals ^3.1.1 → ^3.3.2
---
package.json | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/package.json b/package.json
index e783eb289..b4ec91f04 100644
--- a/package.json
+++ b/package.json
@@ -22,35 +22,35 @@
"test:debug": "react-scripts --inspect-brk test --runInBand"
},
"dependencies": {
- "@coreui/chartjs": "^3.1.1",
- "@coreui/coreui": "4.3.0-alpha.0",
+ "@coreui/chartjs": "^3.1.2",
+ "@coreui/coreui": "4.3.0-beta.0",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.1.0",
- "@coreui/react": "^4.9.0-alpha.1",
- "@coreui/react-chartjs": "^2.1.2",
- "@coreui/utils": "^2.0.1",
+ "@coreui/react": "^4.9.0-beta.0",
+ "@coreui/react-chartjs": "^2.1.3",
+ "@coreui/utils": "^2.0.2",
"chart.js": "^3.9.1",
"classnames": "^2.3.2",
- "core-js": "^3.29.0",
+ "core-js": "^3.31.0",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-dom": "^18.2.0",
- "react-redux": "^8.0.5",
- "react-router-dom": "^6.8.2",
+ "react-redux": "^8.0.7",
+ "react-router-dom": "^6.12.1",
"redux": "4.2.1",
- "simplebar-react": "^2.4.3"
+ "simplebar-react": "^3.2.4"
},
"devDependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@testing-library/user-event": "^14.4.3",
- "eslint-config-prettier": "^8.7.0",
+ "eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1",
- "prettier": "2.8.4",
+ "prettier": "2.8.8",
"react-scripts": "5.0.1",
- "sass": "^1.58.3",
- "web-vitals": "^3.1.1"
+ "sass": "^1.63.3",
+ "web-vitals": "^3.3.2"
},
"engines": {
"node": ">=10",
From 3504643bce5e17f227fa7179f063934e34bccb89 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 12 Jun 2023 15:54:42 +0200
Subject: [PATCH 050/138] refactor: move useColorModes
---
src/App.js | 45 +++++++++----------------------------
src/components/AppHeader.js | 21 +++++++++--------
src/store.js | 6 -----
3 files changed, 22 insertions(+), 50 deletions(-)
diff --git a/src/App.js b/src/App.js
index b2ada6a90..b1af84d3d 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,29 +1,9 @@
import React, { Suspense, useEffect } from 'react'
import { HashRouter, Route, Routes } from 'react-router-dom'
-import { useDispatch, useSelector } from 'react-redux'
-import { CSpinner } from '@coreui/react'
+import { CSpinner, useColorModes } from '@coreui/react'
import './scss/style.scss'
-const loading = (
-
-
-
-)
-
-const getPreferredTheme = (storedTheme) => {
- if (storedTheme) {
- return storedTheme
- }
-
- return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
-}
-
-const setTheme = (theme) => {
- document.documentElement.dataset.coreuiTheme =
- theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : theme
-}
-
// Containers
const DefaultLayout = React.lazy(() => import('./layout/DefaultLayout'))
@@ -34,29 +14,24 @@ const Page404 = React.lazy(() => import('./views/pages/page404/Page404'))
const Page500 = React.lazy(() => import('./views/pages/page500/Page500'))
const App = () => {
- const dispatch = useDispatch()
- const theme = useSelector((state) => state.theme)
+ const { setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
const urlParams = new URLSearchParams(window.location.href.split('?')[1])
useEffect(() => {
if (urlParams.get('theme')) {
- dispatch({ type: 'setTheme', theme: urlParams.get('theme') })
+ setColorMode(urlParams.get('theme'))
}
-
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
- if (theme !== 'light' || theme !== 'dark') {
- setTheme(getPreferredTheme(theme))
- }
- })
}, [])
- useEffect(() => {
- setTheme(getPreferredTheme(theme))
- }, [theme])
-
return (
-
+
+
+
+ }
+ >
} />
} />
diff --git a/src/components/AppHeader.js b/src/components/AppHeader.js
index 25443a13d..8d49845c0 100644
--- a/src/components/AppHeader.js
+++ b/src/components/AppHeader.js
@@ -14,6 +14,7 @@ import {
CHeaderToggler,
CNavLink,
CNavItem,
+ useColorModes,
} from '@coreui/react'
import CIcon from '@coreui/icons-react'
import {
@@ -31,9 +32,11 @@ import { AppHeaderDropdown } from './header/index'
import { logo } from 'src/assets/brand/logo'
const AppHeader = () => {
+ const { getColorMode, setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
+ const colorMode = getColorMode()
+
const dispatch = useDispatch()
const sidebarShow = useSelector((state) => state.sidebarShow)
- const theme = useSelector((state) => state.theme)
return (
@@ -81,9 +84,9 @@ const AppHeader = () => {
- {theme === 'dark' ? (
+ {colorMode === 'dark' ? (
- ) : theme === 'auto' ? (
+ ) : colorMode === 'auto' ? (
) : (
@@ -91,29 +94,29 @@ const AppHeader = () => {
dispatch({ type: 'setTheme', theme: 'light' })}
+ onClick={() => setColorMode('light')}
>
Light
dispatch({ type: 'setTheme', theme: 'dark' })}
+ onClick={() => setColorMode('dark')}
>
Dark
dispatch({ type: 'setTheme', theme: 'auto' })}
+ onClick={() => setColorMode('auto')}
>
Auto
diff --git a/src/store.js b/src/store.js
index d0d7df485..ab446364c 100644
--- a/src/store.js
+++ b/src/store.js
@@ -2,16 +2,10 @@ import { createStore } from 'redux'
const initialState = {
sidebarShow: true,
- theme: localStorage.getItem('coreui-free-react-admin-template-theme') ?? 'light',
}
const changeState = (state = initialState, { type, ...rest }) => {
switch (type) {
- case 'setTheme':
- const event = new Event('ColorSchemeChange')
- document.documentElement.dispatchEvent(event)
- localStorage.setItem('coreui-free-react-admin-template-theme', rest.theme)
- return { ...state, ...rest }
case 'set':
return { ...state, ...rest }
default:
From c5533162749f98da06b86294e7ce82d88a8642ba Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 12 Jun 2023 15:54:57 +0200
Subject: [PATCH 051/138] refactor: add color modes support
---
src/views/dashboard/MainChart.js | 204 +++++++++++++++------------
src/views/widgets/WidgetsDropdown.js | 25 +++-
2 files changed, 139 insertions(+), 90 deletions(-)
diff --git a/src/views/dashboard/MainChart.js b/src/views/dashboard/MainChart.js
index de6c5ff3c..b017c23ee 100644
--- a/src/views/dashboard/MainChart.js
+++ b/src/views/dashboard/MainChart.js
@@ -1,106 +1,132 @@
-import React from 'react'
+import React, { useEffect, useRef } from 'react'
+
import { CChartLine } from '@coreui/react-chartjs'
import { getStyle } from '@coreui/utils'
const MainChart = () => {
+ const chartRef = useRef(null)
+
+ useEffect(() => {
+ document.documentElement.addEventListener('ColorSchemeChange', () => {
+ if (chartRef.current) {
+ setTimeout(() => {
+ chartRef.current.options.scales.x.grid.borderColor = getStyle(
+ '--cui-border-color-translucent',
+ )
+ chartRef.current.options.scales.x.grid.color = getStyle('--cui-border-color-translucent')
+ chartRef.current.options.scales.x.ticks.color = getStyle('--cui-body-color')
+ chartRef.current.options.scales.y.grid.borderColor = getStyle(
+ '--cui-border-color-translucent',
+ )
+ chartRef.current.options.scales.y.grid.color = getStyle('--cui-border-color-translucent')
+ chartRef.current.options.scales.y.ticks.color = getStyle('--cui-body-color')
+ chartRef.current.update()
+ })
+ }
+ })
+ }, [chartRef])
+
const random = () => Math.round(Math.random() * 100)
return (
-
+
+ }}
+ />
+ >
)
}
diff --git a/src/views/widgets/WidgetsDropdown.js b/src/views/widgets/WidgetsDropdown.js
index 94bbb6f90..478661ebb 100644
--- a/src/views/widgets/WidgetsDropdown.js
+++ b/src/views/widgets/WidgetsDropdown.js
@@ -1,4 +1,4 @@
-import React from 'react'
+import React, { useEffect, useRef } from 'react'
import {
CRow,
CCol,
@@ -14,6 +14,27 @@ import CIcon from '@coreui/icons-react'
import { cilArrowBottom, cilArrowTop, cilOptions } from '@coreui/icons'
const WidgetsDropdown = () => {
+ const widgetChartRef1 = useRef(null)
+ const widgetChartRef2 = useRef(null)
+
+ useEffect(() => {
+ document.documentElement.addEventListener('ColorSchemeChange', () => {
+ if (widgetChartRef1.current) {
+ setTimeout(() => {
+ widgetChartRef1.current.data.datasets[0].pointBackgroundColor = getStyle('--cui-primary')
+ widgetChartRef1.current.update()
+ })
+ }
+
+ if (widgetChartRef2.current) {
+ setTimeout(() => {
+ widgetChartRef2.current.data.datasets[0].pointBackgroundColor = getStyle('--cui-info')
+ widgetChartRef2.current.update()
+ })
+ }
+ })
+ }, [widgetChartRef1, widgetChartRef2])
+
return (
@@ -44,6 +65,7 @@ const WidgetsDropdown = () => {
}
chart={
{
}
chart={
Date: Mon, 12 Jun 2023 15:56:42 +0200
Subject: [PATCH 052/138] refactor: update SimpleBar to v3
---
src/components/AppSidebar.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/AppSidebar.js b/src/components/AppSidebar.js
index a75bf6523..4d81c268e 100644
--- a/src/components/AppSidebar.js
+++ b/src/components/AppSidebar.js
@@ -10,7 +10,7 @@ import { logoNegative } from 'src/assets/brand/logo-negative'
import { sygnet } from 'src/assets/brand/sygnet'
import SimpleBar from 'simplebar-react'
-import 'simplebar/dist/simplebar.min.css'
+import 'simplebar-react/dist/simplebar.min.css';
// sidebar nav config
import navigation from '../_nav'
From 3411c2fffa3eb2d28c76354f5bbee18df7025e8c Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 12 Jun 2023 15:56:42 +0200
Subject: [PATCH 053/138] refactor: update SimpleBar to v3
---
src/components/AppSidebar.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/AppSidebar.js b/src/components/AppSidebar.js
index a75bf6523..d279a1101 100644
--- a/src/components/AppSidebar.js
+++ b/src/components/AppSidebar.js
@@ -10,7 +10,7 @@ import { logoNegative } from 'src/assets/brand/logo-negative'
import { sygnet } from 'src/assets/brand/sygnet'
import SimpleBar from 'simplebar-react'
-import 'simplebar/dist/simplebar.min.css'
+import 'simplebar-react/dist/simplebar.min.css'
// sidebar nav config
import navigation from '../_nav'
From efec57820b90a5e094bae41cc22a570773d79837 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Tue, 13 Jun 2023 16:01:54 +0200
Subject: [PATCH 054/138] chore: update dependencies and devDependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@coreui/react ^4.9.0-beta.0 → ^4.9.0-beta.1
react-redux ^8.0.7 → ^8.1.0
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index b4ec91f04..32f972953 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"@coreui/coreui": "4.3.0-beta.0",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.1.0",
- "@coreui/react": "^4.9.0-beta.0",
+ "@coreui/react": "^4.9.0-beta.1",
"@coreui/react-chartjs": "^2.1.3",
"@coreui/utils": "^2.0.2",
"chart.js": "^3.9.1",
@@ -36,7 +36,7 @@
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-dom": "^18.2.0",
- "react-redux": "^8.0.7",
+ "react-redux": "^8.1.0",
"react-router-dom": "^6.12.1",
"redux": "4.2.1",
"simplebar-react": "^3.2.4"
From 615f93333c23dbacd4884d3bcdb534db5725d026 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Tue, 13 Jun 2023 16:03:40 +0200
Subject: [PATCH 055/138] refactor: improve color modes handling
---
src/App.js | 14 +++++++++++---
src/store.js | 1 +
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/App.js b/src/App.js
index b1af84d3d..9d50b99c1 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,5 +1,6 @@
import React, { Suspense, useEffect } from 'react'
import { HashRouter, Route, Routes } from 'react-router-dom'
+import { useSelector } from 'react-redux'
import { CSpinner, useColorModes } from '@coreui/react'
import './scss/style.scss'
@@ -14,14 +15,21 @@ const Page404 = React.lazy(() => import('./views/pages/page404/Page404'))
const Page500 = React.lazy(() => import('./views/pages/page500/Page500'))
const App = () => {
- const { setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
- const urlParams = new URLSearchParams(window.location.href.split('?')[1])
+ const { isColorModeSet, setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
+ const theme = useSelector((state) => state.theme)
useEffect(() => {
+ const urlParams = new URLSearchParams(window.location.href.split('?')[1])
if (urlParams.get('theme')) {
setColorMode(urlParams.get('theme'))
}
- }, [])
+
+ if (isColorModeSet()) {
+ return
+ }
+
+ setColorMode(theme)
+ }, []) // eslint-disable-line react-hooks/exhaustive-deps
return (
diff --git a/src/store.js b/src/store.js
index ab446364c..559c5983e 100644
--- a/src/store.js
+++ b/src/store.js
@@ -2,6 +2,7 @@ import { createStore } from 'redux'
const initialState = {
sidebarShow: true,
+ theme: 'light',
}
const changeState = (state = initialState, { type, ...rest }) => {
From f399a308d0988986ddc204873903e315dc2701d8 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 14 Jun 2023 15:27:16 +0200
Subject: [PATCH 056/138] refactor: update main view
---
src/views/dashboard/Dashboard.js | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/views/dashboard/Dashboard.js b/src/views/dashboard/Dashboard.js
index 2bb1922a6..c03b691c1 100644
--- a/src/views/dashboard/Dashboard.js
+++ b/src/views/dashboard/Dashboard.js
@@ -314,16 +314,20 @@ const Dashboard = () => {
-
+
-
+
- User
- Country
- Usage
- Payment Method
- Activity
+ User
+
+ Country
+
+ Usage
+
+ Payment Method
+
+ Activity
@@ -334,7 +338,7 @@ const Dashboard = () => {
{item.user.name}
-
+
{item.user.new ? 'New' : 'Recurring'} | Registered:{' '}
{item.user.registered}
@@ -343,11 +347,9 @@ const Dashboard = () => {
-
-
- {item.usage.value}%
-
-
+
+
{item.usage.value}%
+
{item.usage.period}
@@ -357,8 +359,8 @@ const Dashboard = () => {
- Last login
- {item.activity}
+ Last login
+ {item.activity}
))}
From cfe2ebd5a5eac60b235724a3ecf56ef2f0855e29 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Fri, 16 Jun 2023 14:36:35 +0200
Subject: [PATCH 057/138] refactor: improve color modes handling
---
src/App.js | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/App.js b/src/App.js
index 9d50b99c1..05aa83455 100644
--- a/src/App.js
+++ b/src/App.js
@@ -16,19 +16,20 @@ const Page500 = React.lazy(() => import('./views/pages/page500/Page500'))
const App = () => {
const { isColorModeSet, setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
- const theme = useSelector((state) => state.theme)
+ const storedTheme = useSelector((state) => state.theme)
useEffect(() => {
const urlParams = new URLSearchParams(window.location.href.split('?')[1])
- if (urlParams.get('theme')) {
- setColorMode(urlParams.get('theme'))
+ const theme = urlParams.get('theme').match(/^[A-Za-z0-9\s]+/)[0]
+ if (theme) {
+ setColorMode(theme)
}
if (isColorModeSet()) {
return
}
- setColorMode(theme)
+ setColorMode(storedTheme)
}, []) // eslint-disable-line react-hooks/exhaustive-deps
return (
From a1f20124664fea8b8b63171e4147c980b199a7f4 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 28 Jun 2023 11:27:53 +0200
Subject: [PATCH 058/138] refactor: update color modes support
---
src/App.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/App.js b/src/App.js
index 05aa83455..7f8e6d7ea 100644
--- a/src/App.js
+++ b/src/App.js
@@ -20,7 +20,7 @@ const App = () => {
useEffect(() => {
const urlParams = new URLSearchParams(window.location.href.split('?')[1])
- const theme = urlParams.get('theme').match(/^[A-Za-z0-9\s]+/)[0]
+ const theme = urlParams.get('theme') && urlParams.get('theme').match(/^[A-Za-z0-9\s]+/)[0]
if (theme) {
setColorMode(theme)
}
From f4f57434047b85fa7e0b6a3addf5f1ef8a930b4b Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 28 Jun 2023 12:54:24 +0200
Subject: [PATCH 059/138] chore: update dependencies and devDependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
react-redux ^8.1.0 → ^8.1.1
react-router-dom ^6.12.1 → ^6.14.0
sass ^1.63.3 → ^1.63.6
---
package.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/package.json b/package.json
index 32f972953..a9b35bf24 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"@coreui/coreui": "4.3.0-beta.0",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.1.0",
- "@coreui/react": "^4.9.0-beta.1",
+ "@coreui/react": "^4.9.0-beta.2",
"@coreui/react-chartjs": "^2.1.3",
"@coreui/utils": "^2.0.2",
"chart.js": "^3.9.1",
@@ -36,8 +36,8 @@
"react": "^18.2.0",
"react-app-polyfill": "^3.0.0",
"react-dom": "^18.2.0",
- "react-redux": "^8.1.0",
- "react-router-dom": "^6.12.1",
+ "react-redux": "^8.1.1",
+ "react-router-dom": "^6.14.0",
"redux": "4.2.1",
"simplebar-react": "^3.2.4"
},
@@ -49,7 +49,7 @@
"eslint-plugin-prettier": "^4.2.1",
"prettier": "2.8.8",
"react-scripts": "5.0.1",
- "sass": "^1.63.3",
+ "sass": "^1.63.6",
"web-vitals": "^3.3.2"
},
"engines": {
From 00fffd18d2272f413f0589a9434f8f8f84dbafd0 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 28 Jun 2023 12:55:45 +0200
Subject: [PATCH 060/138] refactor: update color modeshandling
---
src/components/AppHeader.js | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/components/AppHeader.js b/src/components/AppHeader.js
index 8d49845c0..80bb87dc8 100644
--- a/src/components/AppHeader.js
+++ b/src/components/AppHeader.js
@@ -32,8 +32,7 @@ import { AppHeaderDropdown } from './header/index'
import { logo } from 'src/assets/brand/logo'
const AppHeader = () => {
- const { getColorMode, setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
- const colorMode = getColorMode()
+ const { colorMode, setColorMode } = useColorModes('coreui-free-react-admin-template-theme')
const dispatch = useDispatch()
const sidebarShow = useSelector((state) => state.sidebarShow)
From 746e0613ca0bce36053f37c5c43685ba0920283b Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 28 Jun 2023 12:56:09 +0200
Subject: [PATCH 061/138] refactor: update examples
---
src/components/DocsExample.js | 5 +++--
src/scss/_example.scss | 2 +-
src/views/forms/range/Range.js | 8 ++++----
3 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/components/DocsExample.js b/src/components/DocsExample.js
index 3340cbc80..5fb2a0569 100644
--- a/src/components/DocsExample.js
+++ b/src/components/DocsExample.js
@@ -5,7 +5,7 @@ import CIcon from '@coreui/icons-react'
import { cilCode, cilMediaPlay } from '@coreui/icons'
const DocsExample = (props) => {
- const { children, href } = props
+ const { children, href, tabContentClassName } = props
const _href = `https://coreui.io/react/docs/${href}`
@@ -25,7 +25,7 @@ const DocsExample = (props) => {
-
+
{children}
@@ -37,6 +37,7 @@ const DocsExample = (props) => {
DocsExample.propTypes = {
children: PropTypes.node,
href: PropTypes.string,
+ tabContentClassName: PropTypes.string,
}
export default React.memo(DocsExample)
diff --git a/src/scss/_example.scss b/src/scss/_example.scss
index fdf64254b..2ce6eb7f4 100644
--- a/src/scss/_example.scss
+++ b/src/scss/_example.scss
@@ -9,7 +9,7 @@
}
.tab-content {
- background-color: var(--#{$prefix}tertiary-bg) !important;
+ background-color: rgba(var(--#{$prefix}tertiary-bg-rgb), var(--#{$prefix}bg-opacity, 1)) !important;
}
& + p {
diff --git a/src/views/forms/range/Range.js b/src/views/forms/range/Range.js
index 905c3134d..1423f7b73 100644
--- a/src/views/forms/range/Range.js
+++ b/src/views/forms/range/Range.js
@@ -15,7 +15,7 @@ const Range = () => {
Create custom <input type="range">
controls with{' '}
<CFormRange>
.
-
+
Example range
@@ -32,7 +32,7 @@ const Range = () => {
Add the disabled
boolean attribute on an input to give it a grayed out
appearance and remove pointer events.
-
+
Disabled range
@@ -50,7 +50,7 @@ const Range = () => {
0
and 100
, respectively. You may specify new values for
those using the min
and max
attributes.
-
+
Example range
@@ -68,7 +68,7 @@ const Range = () => {
specify a step
value. In the example below, we double the number of steps
by using step="0.5"
.
-
+
Example range
From a1e9db0b0b137eb621c5ee3ca973df6c41290ff0 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 28 Jun 2023 12:58:22 +0200
Subject: [PATCH 062/138] release: v4.6.0-beta.0
---
package.json | 2 +-
public/index.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index a9b35bf24..9f5d8f34b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@coreui/coreui-free-react-admin-template",
- "version": "4.5.0",
+ "version": "4.6.0-beta.0",
"description": "CoreUI Free React Admin Template",
"homepage": ".",
"bugs": {
diff --git a/public/index.html b/public/index.html
index 21d293335..5d2e83841 100644
--- a/public/index.html
+++ b/public/index.html
@@ -1,7 +1,7 @@
-
-### Platinum Sponsors
-
-Support this project by [becoming a Platinum Sponsor](https://opencollective.com/coreui/contribute/platinum-sponsor-40959/). A large company logo will be added here with a link to your website.
-
-
-
-### Gold Sponsors
-
-Support this project by [becoming a Gold Sponsor](https://opencollective.com/coreui/contribute/gold-sponsor-40960/). A big company logo will be added here with a link to your website.
-
-
-
-### Silver Sponsors
-
-Support this project by [becoming a Silver Sponsor](https://opencollective.com/coreui/contribute/silver-sponsor-40967/). A medium company logo will be added here with a link to your website.
-
-
-
-### Bronze Sponsors
-
-Support this project by [becoming a Bronze Sponsor](https://opencollective.com/coreui/contribute/bronze-sponsor-40966/). The company avatar will show up here with a link to your OpenCollective Profile.
-
-
-
-### Backers
-
-Thanks to all the backers and sponsors! Support this project by [becoming a backer](https://opencollective.com/coreui/contribute/backer-40965/).
-
-
-
-
+CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/?framework=bootstrap&src=github-coreui-free-react-admin-template) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/).
## Copyright and License
From c43863789242955b13cea7fff11c0d682f6cd485 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Tue, 7 Nov 2023 21:17:12 +0100
Subject: [PATCH 082/138] docs: update README
---
README.md | 31 +++++++++++++++++++------------
1 file changed, 19 insertions(+), 12 deletions(-)
diff --git a/README.md b/README.md
index fdbf2749b..1df83973f 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of
## Table of Contents
* [Versions](#versions)
-* [CoreUI Pro](#coreui-pro)
+* [CoreUI PRO](#coreui-pro)
* [CoreUI PRO React Admin Templates](#coreui-pro-react-admin-templates)
* [Quick Start](#quick-start)
* [Installation](#installation)
@@ -43,22 +43,22 @@ CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of
* [CoreUI Free React.js Admin Template](https://github.com/coreui/coreui-free-react-admin-template)
* [CoreUI Free Vue.js Admin Template](https://github.com/coreui/coreui-free-vue-admin-template)
-## CoreUI Pro
+## CoreUI PRO
-* 💪 [CoreUI Pro Angular Admin Template](https://coreui.io/product/angular-dashboard-template/)
-* 💪 [CoreUI Pro Bootstrap Admin Template](https://coreui.io/product/bootstrap-dashboard-template/)
-* 💪 [CoreUI Pro React Admin Template](https://coreui.io/product/react-dashboard-template/)
-* 💪 [CoreUI Pro Vue Admin Template](https://coreui.io/product/vue-dashboard-template/)
+* 💪 [CoreUI PRO Angular Admin Template](https://coreui.io/product/angular-dashboard-template/)
+* 💪 [CoreUI PRO Bootstrap Admin Template](https://coreui.io/product/bootstrap-dashboard-template/)
+* 💪 [CoreUI PRO React Admin Template](https://coreui.io/product/react-dashboard-template/)
+* 💪 [CoreUI PRO Vue Admin Template](https://coreui.io/product/vue-dashboard-template/)
## CoreUI PRO React Admin Templates
| Default Theme | Light Theme |
| --- | --- |
-| [](https://coreui.io/product/react-dashboard-template/?theme=default) | [](https://coreui.io/product/react-dashboard-template/?theme=light)| [](https://coreui.io/product/react-dashboard-template/?theme=dark)
+| [](https://coreui.io/product/react-dashboard-template/?theme=default) | [](https://coreui.io/product/react-dashboard-template/?theme=light)|
| Default Theme v3 | Light Theme v3 |
| --- | --- |
-| [](https://coreui.io/product/react-dashboard-template/?theme=default-v3) | [](https://coreui.io/product/react-dashboard-template/?theme=light)|
+| [](https://coreui.io/product/react-dashboard-template/?theme=default-v3) | [](https://coreui.io/product/react-dashboard-template/?theme=light)|
## Quick Start
@@ -147,12 +147,19 @@ See [the Releases section of our project](https://github.com/coreui/coreui-free-
## Creators
**Łukasz Holeczek**
+
*
*
-*
-**CoreUI team**
-* https://github.com/orgs/coreui/people
+**Andrzej Kopański**
+
+*
+
+**CoreUI Team**
+
+*
+*
+*
## Community
@@ -163,7 +170,7 @@ Get updates on CoreUI's development and chat with the project maintainers and co
## Support CoreUI Development
-CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/?framework=bootstrap&src=github-coreui-free-react-admin-template) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/).
+CoreUI is an MIT-licensed open source project and is completely free to use. However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support development by buying the [CoreUI PRO](https://coreui.io/pricing/?framework=react&src=github-coreui-free-react-admin-template) or by becoming a sponsor via [Open Collective](https://opencollective.com/coreui/).
## Copyright and License
From 2539b121da93109cf5cfb6e07eead012264f3a81 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 8 Nov 2023 13:20:11 +0100
Subject: [PATCH 083/138] chore: update dependencies and devDependencies
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
@coreui/chartjs ^4.0.0-beta.0 → ^4.0.0-beta.1
@coreui/coreui ^5.0.0-beta.1 → ^5.0.0-beta.2
@testing-library/react ^14.0.0 → ^14.1.0
---
package.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package.json b/package.json
index dae126b5e..98a050226 100644
--- a/package.json
+++ b/package.json
@@ -22,8 +22,8 @@
"test:debug": "react-scripts --inspect-brk test --runInBand"
},
"dependencies": {
- "@coreui/chartjs": "^4.0.0-beta.0",
- "@coreui/coreui": "^5.0.0-beta.1",
+ "@coreui/chartjs": "^4.0.0-beta.1",
+ "@coreui/coreui": "^5.0.0-beta.2",
"@coreui/icons": "^3.0.1",
"@coreui/icons-react": "^2.2.1",
"@coreui/react": "^5.0.0-beta.1",
@@ -44,7 +44,7 @@
},
"devDependencies": {
"@testing-library/jest-dom": "^5.17.0",
- "@testing-library/react": "^14.0.0",
+ "@testing-library/react": "^14.1.0",
"@testing-library/user-event": "^14.5.1",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-prettier": "^4.2.1",
From 1328195e02a868b350a42679e46664e0e9427e07 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Fri, 10 Nov 2023 18:33:03 +0100
Subject: [PATCH 084/138] refactor: update examples
---
src/components/AppSidebar.js | 3 +-
src/views/base/cards/Cards.js | 56 ++++++++++++-----
src/views/base/collapses/Collapses.js | 12 +++-
src/views/base/jumbotrons/Jumbotrons.js | 4 +-
src/views/base/placeholders/Placeholders.js | 4 +-
src/views/base/spinners/Spinners.js | 8 +--
src/views/forms/form-control/FormControl.js | 2 +-
src/views/forms/layout/Layout.js | 20 +++++--
src/views/notifications/modals/Modals.js | 66 +++++++++++++++------
src/views/notifications/toasts/Toasts.js | 4 +-
10 files changed, 131 insertions(+), 48 deletions(-)
diff --git a/src/components/AppSidebar.js b/src/components/AppSidebar.js
index 4d0c60036..156ae8014 100644
--- a/src/components/AppSidebar.js
+++ b/src/components/AppSidebar.js
@@ -30,7 +30,8 @@ const AppSidebar = () => {
return (
{
Some quick example text to build on the card title and make up the bulk of the
card's content.
- Go somewhere
+
+ Go somewhere
+
@@ -235,7 +237,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -250,7 +254,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -278,7 +284,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
2 days ago
@@ -310,7 +318,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -321,7 +331,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -340,7 +352,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -349,7 +363,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -364,7 +380,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -390,7 +408,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -399,7 +419,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -408,7 +430,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -449,7 +473,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
@@ -477,7 +503,9 @@ const Cards = () => {
With supporting text below as a natural lead-in to additional content.
- Go somewhere
+
+ Go somewhere
+
diff --git a/src/views/base/collapses/Collapses.js b/src/views/base/collapses/Collapses.js
index 6f98a69cd..218518933 100644
--- a/src/views/base/collapses/Collapses.js
+++ b/src/views/base/collapses/Collapses.js
@@ -27,7 +27,9 @@ const Collapses = () => {
>
Link
- setVisible(!visible)}>Button
+ setVisible(!visible)}>
+ Button
+
@@ -81,8 +83,12 @@ const Collapses = () => {
A <CButton>
can show and hide multiple elements.
- setVisibleA(!visibleA)}>Toggle first element
- setVisibleB(!visibleB)}>Toggle second element
+ setVisibleA(!visibleA)}>
+ Toggle first element
+
+ setVisibleB(!visibleB)}>
+ Toggle second element
+
{
setVisibleA(!visibleA)
diff --git a/src/views/base/jumbotrons/Jumbotrons.js b/src/views/base/jumbotrons/Jumbotrons.js
index 560681367..18c9223b8 100644
--- a/src/views/base/jumbotrons/Jumbotrons.js
+++ b/src/views/base/jumbotrons/Jumbotrons.js
@@ -18,7 +18,9 @@ const Jumbotrons = () => {
previous versions of Bootstrap. Check out the examples below for how you can remix and
restyle it to your liking.
- Example button
+
+ Example button
+
diff --git a/src/views/base/placeholders/Placeholders.js b/src/views/base/placeholders/Placeholders.js
index 9639b168b..4f0e80f21 100644
--- a/src/views/base/placeholders/Placeholders.js
+++ b/src/views/base/placeholders/Placeholders.js
@@ -39,7 +39,9 @@ const Placeholders = () => {
Some quick example text to build on the card title and make up the bulk of the
card's content.
- Go somewhere
+
+ Go somewhere
+
diff --git a/src/views/base/spinners/Spinners.js b/src/views/base/spinners/Spinners.js
index 7347cf0c1..c3b927f54 100644
--- a/src/views/base/spinners/Spinners.js
+++ b/src/views/base/spinners/Spinners.js
@@ -93,19 +93,19 @@ const Accordion = () => {
as needed.
-
+
-
+
Loading...
-
+
-
+
Loading...
diff --git a/src/views/forms/form-control/FormControl.js b/src/views/forms/form-control/FormControl.js
index 5949a79ce..caea5f722 100644
--- a/src/views/forms/form-control/FormControl.js
+++ b/src/views/forms/form-control/FormControl.js
@@ -183,7 +183,7 @@ const FormControl = () => {
-
+
Confirm identity
diff --git a/src/views/forms/layout/Layout.js b/src/views/forms/layout/Layout.js
index 9d2b21fd2..8fdc2a88c 100644
--- a/src/views/forms/layout/Layout.js
+++ b/src/views/forms/layout/Layout.js
@@ -102,7 +102,9 @@ const Layout = () => {
- Sign in
+
+ Sign in
+
@@ -178,7 +180,9 @@ const Layout = () => {
- Sign in
+
+ Sign in
+
@@ -314,7 +318,9 @@ const Layout = () => {
- Submit
+
+ Submit
+
@@ -353,7 +359,9 @@ const Layout = () => {
- Submit
+
+ Submit
+
@@ -400,7 +408,9 @@ const Layout = () => {
- Submit
+
+ Submit
+
diff --git a/src/views/notifications/modals/Modals.js b/src/views/notifications/modals/Modals.js
index d65dd44b2..11e375884 100644
--- a/src/views/notifications/modals/Modals.js
+++ b/src/views/notifications/modals/Modals.js
@@ -21,7 +21,9 @@ const LiveDemo = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Launch demo modal
+ setVisible(!visible)}>
+ Launch demo modal
+
setVisible(false)}>
Modal title
@@ -42,7 +44,9 @@ const StaticBackdrop = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Launch static backdrop modal
+ setVisible(!visible)}>
+ Launch static backdrop modal
+
setVisible(false)}>
Modal title
@@ -65,7 +69,9 @@ const ScrollingLongContent = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Launch demo modal
+ setVisible(!visible)}>
+ Launch demo modal
+
setVisible(false)}>
Modal title
@@ -165,7 +171,9 @@ const ScrollingLongContent2 = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Launch demo modal
+ setVisible(!visible)}>
+ Launch demo modal
+
setVisible(false)}>
Modal title
@@ -265,7 +273,9 @@ const VerticallyCentered = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Vertically centered modal
+ setVisible(!visible)}>
+ Vertically centered modal
+
setVisible(false)}>
Modal title
@@ -289,7 +299,9 @@ const VerticallyCentered2 = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Vertically centered scrollable modal
+ setVisible(!visible)}>
+ Vertically centered scrollable modal
+
setVisible(false)}>
Modal title
@@ -332,7 +344,9 @@ const TooltipsPopovers = () => {
const [visible, setVisible] = useState(false)
return (
<>
- setVisible(!visible)}>Launch demo modal
+ setVisible(!visible)}>
+ Launch demo modal
+
setVisible(false)}>
Modal title
@@ -342,7 +356,7 @@ const TooltipsPopovers = () => {
This
- button
+ button
{' '}
triggers a popover on click.
@@ -376,9 +390,15 @@ const OptionalSizes = () => {
const [visibleSm, setVisibleSm] = useState(false)
return (
<>
- setVisibleXL(!visibleXL)}>Extra large modal
- setVisibleLg(!visibleLg)}>Large modal
- setVisibleSm(!visibleSm)}>Small large modal
+ setVisibleXL(!visibleXL)}>
+ Extra large modal
+
+ setVisibleLg(!visibleLg)}>
+ Large modal
+
+ setVisibleSm(!visibleSm)}>
+ Small large modal
+
setVisibleXL(false)}>
Extra large modal
@@ -411,12 +431,24 @@ const FullscreenModal = () => {
return (
<>
- setVisible(!visible)}>Full screen
- setVisibleSm(!visibleSm)}>Full screen below sm
- setVisibleMd(!visibleMd)}>Full screen below md
- setVisibleLg(!visibleLg)}>Full screen below lg
- setVisibleXL(!visibleXL)}>Full screen below xl
- setVisibleXXL(!visibleXXL)}>Full screen below xxl
+ setVisible(!visible)}>
+ Full screen
+
+ setVisibleSm(!visibleSm)}>
+ Full screen below sm
+
+ setVisibleMd(!visibleMd)}>
+ Full screen below md
+
+ setVisibleLg(!visibleLg)}>
+ Full screen below lg
+
+ setVisibleXL(!visibleXL)}>
+ Full screen below xl
+
+ setVisibleXXL(!visibleXXL)}>
+ Full screen below xxl
+
setVisible(false)}>
Full screen
diff --git a/src/views/notifications/toasts/Toasts.js b/src/views/notifications/toasts/Toasts.js
index 9631a0e83..639b78b48 100644
--- a/src/views/notifications/toasts/Toasts.js
+++ b/src/views/notifications/toasts/Toasts.js
@@ -39,7 +39,9 @@ const ExampleToast = () => {
)
return (
<>
- addToast(exampleToast)}>Send a toast
+ addToast(exampleToast)}>
+ Send a toast
+
>
)
From 6cb34cfc3e9d3ed4173e807a10d3a47657c9ab73 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 13 Nov 2023 19:58:21 +0100
Subject: [PATCH 085/138] fix: make the sidebar close button visible under the
`lg` breakpoint
---
src/components/AppSidebar.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/AppSidebar.js b/src/components/AppSidebar.js
index 156ae8014..6e9f3495f 100644
--- a/src/components/AppSidebar.js
+++ b/src/components/AppSidebar.js
@@ -45,7 +45,7 @@ const AppSidebar = () => {
dispatch({ type: 'set', sidebarShow: false })}
/>
From 8f55012707027a38dba8b39e27ce2f656e6e3af4 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Mon, 13 Nov 2023 20:13:12 +0100
Subject: [PATCH 086/138] refactor: resolve deprecation warning
---
src/store.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/store.js b/src/store.js
index 559c5983e..8ad30dad6 100644
--- a/src/store.js
+++ b/src/store.js
@@ -1,4 +1,4 @@
-import { createStore } from 'redux'
+import { legacy_createStore as createStore } from 'redux'
const initialState = {
sidebarShow: true,
From f8d4f9f0c6427c79708236a346488d4a34b1f970 Mon Sep 17 00:00:00 2001
From: mrholek
Date: Wed, 15 Nov 2023 11:31:41 +0100
Subject: [PATCH 087/138] refactor: improve responsive behavior
---
src/components/AppContent.js | 2 +-
src/views/dashboard/Dashboard.js | 76 ++++++++------
src/views/theme/colors/Colors.js | 2 +-
src/views/widgets/Widgets.js | 146 ++++++++++-----------------
src/views/widgets/WidgetsBrand.js | 25 ++---
src/views/widgets/WidgetsDropdown.js | 23 +++--
6 files changed, 123 insertions(+), 151 deletions(-)
diff --git a/src/components/AppContent.js b/src/components/AppContent.js
index b72cc6bd6..b9a39ef50 100644
--- a/src/components/AppContent.js
+++ b/src/components/AppContent.js
@@ -7,7 +7,7 @@ import routes from '../routes'
const AppContent = () => {
return (
-
+
}>
{routes.map((route, idx) => {
diff --git a/src/views/dashboard/Dashboard.js b/src/views/dashboard/Dashboard.js
index da59f7818..5b0b61041 100644
--- a/src/views/dashboard/Dashboard.js
+++ b/src/views/dashboard/Dashboard.js
@@ -1,4 +1,5 @@
import React from 'react'
+import classNames from 'classnames'
import {
CAvatar,
@@ -90,12 +91,12 @@ const Dashboard = () => {
user: {
name: 'Yiorgos Avraamu',
new: true,
- registered: 'Jan 1, 2021',
+ registered: 'Jan 1, 2023',
},
country: { name: 'USA', flag: cifUs },
usage: {
value: 50,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'success',
},
payment: { name: 'Mastercard', icon: cibCcMastercard },
@@ -106,12 +107,12 @@ const Dashboard = () => {
user: {
name: 'Avram Tarasios',
new: false,
- registered: 'Jan 1, 2021',
+ registered: 'Jan 1, 2023',
},
country: { name: 'Brazil', flag: cifBr },
usage: {
value: 22,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'info',
},
payment: { name: 'Visa', icon: cibCcVisa },
@@ -119,11 +120,11 @@ const Dashboard = () => {
},
{
avatar: { src: avatar3, status: 'warning' },
- user: { name: 'Quintin Ed', new: true, registered: 'Jan 1, 2021' },
+ user: { name: 'Quintin Ed', new: true, registered: 'Jan 1, 2023' },
country: { name: 'India', flag: cifIn },
usage: {
value: 74,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'warning',
},
payment: { name: 'Stripe', icon: cibCcStripe },
@@ -131,11 +132,11 @@ const Dashboard = () => {
},
{
avatar: { src: avatar4, status: 'secondary' },
- user: { name: 'Enéas Kwadwo', new: true, registered: 'Jan 1, 2021' },
+ user: { name: 'Enéas Kwadwo', new: true, registered: 'Jan 1, 2023' },
country: { name: 'France', flag: cifFr },
usage: {
value: 98,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'danger',
},
payment: { name: 'PayPal', icon: cibCcPaypal },
@@ -146,12 +147,12 @@ const Dashboard = () => {
user: {
name: 'Agapetus Tadeáš',
new: true,
- registered: 'Jan 1, 2021',
+ registered: 'Jan 1, 2023',
},
country: { name: 'Spain', flag: cifEs },
usage: {
value: 22,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'primary',
},
payment: { name: 'Google Wallet', icon: cibCcApplePay },
@@ -162,12 +163,12 @@ const Dashboard = () => {
user: {
name: 'Friderik Dávid',
new: true,
- registered: 'Jan 1, 2021',
+ registered: 'Jan 1, 2023',
},
country: { name: 'Poland', flag: cifPl },
usage: {
value: 43,
- period: 'Jun 11, 2021 - Jul 10, 2021',
+ period: 'Jun 11, 2023 - Jul 10, 2023',
color: 'success',
},
payment: { name: 'Amex', icon: cibCcAmex },
@@ -177,7 +178,7 @@ const Dashboard = () => {
return (
<>
-
+
@@ -185,7 +186,7 @@ const Dashboard = () => {
Traffic
- January - July 2021
+ January - July 2023
@@ -208,22 +209,31 @@ const Dashboard = () => {
-
- {progressExample.map((item, index) => (
-
+
+ {progressExample.map((item, index, items) => (
+
{item.title}
-
+
{item.value} ({item.percent}%)
-
+
))}
-
-
-
+
@@ -232,20 +242,21 @@ const Dashboard = () => {
-
+
-
New Clients
+
New Clients
9,123
-
+
-
Recurring Clients
+
+ Recurring Clients
+
22,643
-
{progressGroupExample1.map((item, index) => (
@@ -259,18 +270,17 @@ const Dashboard = () => {
))}
-
-
+
-
Pageviews
+
Pageviews
78,623
-
+
-
Organic
+
Organic
49,123
@@ -314,7 +324,7 @@ const Dashboard = () => {
-
+
diff --git a/src/views/theme/colors/Colors.js b/src/views/theme/colors/Colors.js
index 4a1570353..ef844e163 100644
--- a/src/views/theme/colors/Colors.js
+++ b/src/views/theme/colors/Colors.js
@@ -1,5 +1,5 @@
-import PropTypes from 'prop-types'
import React, { useEffect, useState, createRef } from 'react'
+import PropTypes from 'prop-types'
import classNames from 'classnames'
import { CRow, CCol, CCard, CCardHeader, CCardBody } from '@coreui/react'
import { rgbToHex } from '@coreui/utils'
diff --git a/src/views/widgets/Widgets.js b/src/views/widgets/Widgets.js
index c6be871f6..a9bf51e12 100644
--- a/src/views/widgets/Widgets.js
+++ b/src/views/widgets/Widgets.js
@@ -41,41 +41,37 @@ const Widgets = () => {
Widgets
-
+
-
-
-
+
+
+
-
+
-
+
-
+
{
-
-
-
+
+
+
{
text="Lorem ipsum dolor sit amet enim."
/>
-
+
{
text="Lorem ipsum dolor sit amet enim."
/>
-
+
{
text="Lorem ipsum dolor sit amet enim."
/>
-
+
{
-
-
+
+
{
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
@@ -273,7 +264,6 @@ const Widgets = () => {
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
@@ -345,7 +335,6 @@ const Widgets = () => {
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
@@ -425,7 +414,6 @@ const Widgets = () => {
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
@@ -505,7 +493,6 @@ const Widgets = () => {
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
@@ -585,45 +572,40 @@ const Widgets = () => {
}}
/>
}
- className="mb-4"
title="title"
value="1,123"
/>
-
-
-
+
+
+
}
title="income"
value="$1.999,50"
color="primary"
/>
-
+
}
title="income"
value="$1.999,50"
color="info"
/>
-
+
}
title="income"
value="$1.999,50"
color="warning"
/>
-
+
}
title="income"
value="$1.999,50"
@@ -632,11 +614,10 @@ const Widgets = () => {
-
-
-
+
+
+
}
title="income"
value="$1.999,50"
@@ -654,9 +635,8 @@ const Widgets = () => {
}
/>
-
+
}
title="income"
value="$1.999,50"
@@ -674,9 +654,8 @@ const Widgets = () => {
}
/>
-
+
}
title="income"
value="$1.999,50"
@@ -694,9 +673,8 @@ const Widgets = () => {
}
/>
-
+
}
title="income"
value="$1.999,50"
@@ -716,11 +694,10 @@ const Widgets = () => {
-
-
-
+
+
+
}
padding={false}
title="income"
@@ -728,9 +705,8 @@ const Widgets = () => {
color="primary"
/>
-
+
}
padding={false}
title="income"
@@ -738,9 +714,8 @@ const Widgets = () => {
color="info"
/>
-
+
}
padding={false}
title="income"
@@ -748,9 +723,8 @@ const Widgets = () => {
color="warning"
/>
-
+
}
padding={false}
title="income"
@@ -760,13 +734,13 @@ const Widgets = () => {
-
+
-
+
-
+
}
@@ -800,67 +774,61 @@ const Widgets = () => {
/>
-
-
-
+
+
+
}
value="87.500"
title="Visitors"
progress={{ color: 'info', value: 75 }}
- className="mb-4"
/>
-
+
}
value="385"
title="New Clients"
progress={{ color: 'success', value: 75 }}
- className="mb-4"
/>
-
+
}
value="1238"
title="Products sold"
progress={{ color: 'warning', value: 75 }}
- className="mb-4"
/>
-
+