`s.
+
+.nav {
+ display: flex;
+ flex-wrap: wrap;
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+
+.nav-link {
+ display: block;
+ padding: $nav-link-padding-y $nav-link-padding-x;
+ @include font-size($nav-link-font-size);
+ font-weight: $nav-link-font-weight;
+ color: $nav-link-color;
+ text-decoration: if($link-decoration == none, null, none);
+ @include transition($nav-link-transition);
+
+ &:hover,
+ &:focus {
+ color: $nav-link-hover-color;
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ }
+
+ // Disabled state lightens text
+ &.disabled {
+ color: $nav-link-disabled-color;
+ pointer-events: none;
+ cursor: default;
+ }
+}
+
+//
+// Tabs
+//
+
+.nav-tabs {
+ border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;
+
+ .nav-link {
+ margin-bottom: -$nav-tabs-border-width;
+ background: none;
+ border: $nav-tabs-border-width solid transparent;
+ @include border-top-radius($nav-tabs-border-radius);
+
+ &:hover,
+ &:focus {
+ border-color: $nav-tabs-link-hover-border-color;
+ // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link
+ isolation: isolate;
+ }
+
+ &.disabled {
+ color: $nav-link-disabled-color;
+ background-color: transparent;
+ border-color: transparent;
+ }
+ }
+
+ .nav-link.active,
+ .nav-item.show .nav-link {
+ color: $nav-tabs-link-active-color;
+ background-color: $nav-tabs-link-active-bg;
+ border-color: $nav-tabs-link-active-border-color;
+ }
+
+ .dropdown-menu {
+ // Make dropdown border overlap tab border
+ margin-top: -$nav-tabs-border-width;
+ // Remove the top rounded corners here since there is a hard edge above the menu
+ @include border-top-radius(0);
+ }
+}
+
+
+//
+// Pills
+//
+
+.nav-pills {
+ .nav-link {
+ background: none;
+ border: 0;
+ @include border-radius($nav-pills-border-radius);
+ }
+
+ .nav-link.active,
+ .show > .nav-link {
+ color: $nav-pills-link-active-color;
+ @include gradient-bg($nav-pills-link-active-bg);
+ }
+}
+
+
+//
+// Justified variants
+//
+
+.nav-fill {
+ > .nav-link,
+ .nav-item {
+ flex: 1 1 auto;
+ text-align: center;
+ }
+}
+
+.nav-justified {
+ > .nav-link,
+ .nav-item {
+ flex-basis: 0;
+ flex-grow: 1;
+ text-align: center;
+ }
+}
+
+.nav-fill,
+.nav-justified {
+ .nav-item .nav-link {
+ width: 100%; // Make sure button will grow
+ }
+}
+
+
+// Tabbable tabs
+//
+// Hide tabbable panes to start, show them when `.active`
+
+.tab-content {
+ > .tab-pane {
+ display: none;
+ }
+ > .active {
+ display: block;
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_navbar.scss b/docs/themes/adidoks/sass/bootstrap/scss/_navbar.scss
new file mode 100644
index 0000000..2ccef11
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_navbar.scss
@@ -0,0 +1,306 @@
+// Contents
+//
+// Navbar
+// Navbar brand
+// Navbar nav
+// Navbar text
+// Responsive navbar
+// Navbar position
+// Navbar themes
+
+
+// Navbar
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap; // allow us to do the line break for collapsing content
+ align-items: center;
+ justify-content: space-between; // space out brand from logo
+ padding-top: $navbar-padding-y;
+ padding-right: $navbar-padding-x; // default: null
+ padding-bottom: $navbar-padding-y;
+ padding-left: $navbar-padding-x; // default: null
+ @include gradient-bg();
+
+ // Because flex properties aren't inherited, we need to redeclare these first
+ // few properties so that content nested within behave properly.
+ // The `flex-wrap` property is inherited to simplify the expanded navbars
+ %container-flex-properties {
+ display: flex;
+ flex-wrap: inherit;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ > .container,
+ > .container-fluid {
+ @extend %container-flex-properties;
+ }
+
+ @each $breakpoint, $container-max-width in $container-max-widths {
+ > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
+ @extend %container-flex-properties;
+ }
+ }
+}
+
+
+// Navbar brand
+//
+// Used for brand, project, or site names.
+
+.navbar-brand {
+ padding-top: $navbar-brand-padding-y;
+ padding-bottom: $navbar-brand-padding-y;
+ margin-right: $navbar-brand-margin-end;
+ @include font-size($navbar-brand-font-size);
+ text-decoration: if($link-decoration == none, null, none);
+ white-space: nowrap;
+
+ &:hover,
+ &:focus {
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ }
+}
+
+
+// Navbar nav
+//
+// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
+
+.navbar-nav {
+ display: flex;
+ flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+
+ .nav-link {
+ padding-right: 0;
+ padding-left: 0;
+ }
+
+ .dropdown-menu {
+ position: static;
+ }
+}
+
+
+// Navbar text
+//
+//
+
+.navbar-text {
+ padding-top: $nav-link-padding-y;
+ padding-bottom: $nav-link-padding-y;
+}
+
+
+// Responsive navbar
+//
+// Custom styles for responsive collapsing and toggling of navbar contents.
+// Powered by the collapse Bootstrap JavaScript plugin.
+
+// When collapsed, prevent the toggleable navbar contents from appearing in
+// the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
+// on the `.navbar` parent.
+.navbar-collapse {
+ flex-basis: 100%;
+ flex-grow: 1;
+ // For always expanded or extra full navbars, ensure content aligns itself
+ // properly vertically. Can be easily overridden with flex utilities.
+ align-items: center;
+}
+
+// Button for toggling the navbar when in its collapsed state
+.navbar-toggler {
+ padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
+ @include font-size($navbar-toggler-font-size);
+ line-height: 1;
+ background-color: transparent; // remove default button style
+ border: $border-width solid transparent; // remove default button style
+ @include border-radius($navbar-toggler-border-radius);
+ @include transition($navbar-toggler-transition);
+
+ &:hover {
+ text-decoration: none;
+ }
+
+ &:focus {
+ text-decoration: none;
+ outline: 0;
+ box-shadow: 0 0 0 $navbar-toggler-focus-width;
+ }
+}
+
+// Keep as a separate element so folks can easily override it with another icon
+// or image file as needed.
+.navbar-toggler-icon {
+ display: inline-block;
+ width: 1.5em;
+ height: 1.5em;
+ vertical-align: middle;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: 100%;
+}
+
+.navbar-nav-scroll {
+ max-height: var(--#{$variable-prefix}scroll-height, 75vh);
+ overflow-y: auto;
+}
+
+// scss-docs-start navbar-expand-loop
+// Generate series of `.navbar-expand-*` responsive classes for configuring
+// where your navbar collapses.
+.navbar-expand {
+ @each $breakpoint in map-keys($grid-breakpoints) {
+ $next: breakpoint-next($breakpoint, $grid-breakpoints);
+ $infix: breakpoint-infix($next, $grid-breakpoints);
+
+ // stylelint-disable-next-line scss/selector-no-union-class-name
+ {$infix} {
+ @include media-breakpoint-up($next) {
+ flex-wrap: nowrap;
+ justify-content: flex-start;
+
+ .navbar-nav {
+ flex-direction: row;
+
+ .dropdown-menu {
+ position: absolute;
+ }
+
+ .nav-link {
+ padding-right: $navbar-nav-link-padding-x;
+ padding-left: $navbar-nav-link-padding-x;
+ }
+ }
+
+ .navbar-nav-scroll {
+ overflow: visible;
+ }
+
+ .navbar-collapse {
+ display: flex !important; // stylelint-disable-line declaration-no-important
+ flex-basis: auto;
+ }
+
+ .navbar-toggler {
+ display: none;
+ }
+ }
+ }
+ }
+}
+// scss-docs-end navbar-expand-loop
+
+
+// Navbar themes
+//
+// Styles for switching between navbars with light or dark background.
+
+// Dark links against a light background
+.navbar-light {
+ .navbar-brand {
+ color: $navbar-light-brand-color;
+
+ &:hover,
+ &:focus {
+ color: $navbar-light-brand-hover-color;
+ }
+ }
+
+ .navbar-nav {
+ .nav-link {
+ color: $navbar-light-color;
+
+ &:hover,
+ &:focus {
+ color: $navbar-light-hover-color;
+ }
+
+ &.disabled {
+ color: $navbar-light-disabled-color;
+ }
+ }
+
+ .show > .nav-link,
+ .nav-link.active {
+ color: $navbar-light-active-color;
+ }
+ }
+
+ .navbar-toggler {
+ color: $navbar-light-color;
+ border-color: $navbar-light-toggler-border-color;
+ }
+
+ .navbar-toggler-icon {
+ background-image: escape-svg($navbar-light-toggler-icon-bg);
+ }
+
+ .navbar-text {
+ color: $navbar-light-color;
+
+ a,
+ a:hover,
+ a:focus {
+ color: $navbar-light-active-color;
+ }
+ }
+}
+
+// White links against a dark background
+.navbar-dark {
+ .navbar-brand {
+ color: $navbar-dark-brand-color;
+
+ &:hover,
+ &:focus {
+ color: $navbar-dark-brand-hover-color;
+ }
+ }
+
+ .navbar-nav {
+ .nav-link {
+ color: $navbar-dark-color;
+
+ &:hover,
+ &:focus {
+ color: $navbar-dark-hover-color;
+ }
+
+ &.disabled {
+ color: $navbar-dark-disabled-color;
+ }
+ }
+
+ .show > .nav-link,
+ .nav-link.active {
+ color: $navbar-dark-active-color;
+ }
+ }
+
+ .navbar-toggler {
+ color: $navbar-dark-color;
+ border-color: $navbar-dark-toggler-border-color;
+ }
+
+ .navbar-toggler-icon {
+ background-image: escape-svg($navbar-dark-toggler-icon-bg);
+ }
+
+ .navbar-text {
+ color: $navbar-dark-color;
+ a,
+ a:hover,
+ a:focus {
+ color: $navbar-dark-active-color;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_offcanvas.scss b/docs/themes/adidoks/sass/bootstrap/scss/_offcanvas.scss
new file mode 100644
index 0000000..1eeb989
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_offcanvas.scss
@@ -0,0 +1,77 @@
+.offcanvas {
+ position: fixed;
+ bottom: 0;
+ z-index: $zindex-offcanvas;
+ display: flex;
+ flex-direction: column;
+ max-width: 100%;
+ color: $offcanvas-color;
+ visibility: hidden;
+ background-color: $offcanvas-bg-color;
+ background-clip: padding-box;
+ outline: 0;
+ @include box-shadow($offcanvas-box-shadow);
+ @include transition(transform $offcanvas-transition-duration ease-in-out);
+}
+
+.offcanvas-header {
+ display: flex;
+ justify-content: space-between;
+ padding: $offcanvas-padding-y $offcanvas-padding-x;
+
+ .btn-close {
+ padding: ($offcanvas-padding-y / 2) ($offcanvas-padding-x / 2);
+ margin: ($offcanvas-padding-y / -2) ($offcanvas-padding-x / -2) ($offcanvas-padding-y / -2) auto;
+ }
+}
+
+.offcanvas-title {
+ margin-bottom: 0;
+ line-height: $offcanvas-title-line-height;
+}
+
+.offcanvas-body {
+ flex-grow: 1;
+ padding: $offcanvas-padding-y $offcanvas-padding-x;
+ overflow-y: auto;
+}
+
+.offcanvas-start {
+ top: 0;
+ left: 0;
+ width: $offcanvas-horizontal-width;
+ border-right: $offcanvas-border-width solid $offcanvas-border-color;
+ transform: translateX(-100%);
+}
+
+.offcanvas-end {
+ top: 0;
+ right: 0;
+ width: $offcanvas-horizontal-width;
+ border-left: $offcanvas-border-width solid $offcanvas-border-color;
+ transform: translateX(100%);
+}
+
+.offcanvas-bottom {
+ right: 0;
+ left: 0;
+ height: $offcanvas-vertical-height;
+ max-height: 100%;
+ border-top: $offcanvas-border-width solid $offcanvas-border-color;
+ transform: translateY(100%);
+}
+
+.offcanvas.show {
+ transform: none;
+}
+
+.offcanvas-backdrop::before {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: $zindex-offcanvas - 1;
+ width: 100vw;
+ height: 100vh;
+ content: "";
+ background-color: $offcanvas-body-backdrop-color;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_pagination.scss b/docs/themes/adidoks/sass/bootstrap/scss/_pagination.scss
new file mode 100644
index 0000000..9c46666
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_pagination.scss
@@ -0,0 +1,64 @@
+.pagination {
+ display: flex;
+ @include list-unstyled();
+}
+
+.page-link {
+ position: relative;
+ display: block;
+ color: $pagination-color;
+ text-decoration: if($link-decoration == none, null, none);
+ background-color: $pagination-bg;
+ border: $pagination-border-width solid $pagination-border-color;
+ @include transition($pagination-transition);
+
+ &:hover {
+ z-index: 2;
+ color: $pagination-hover-color;
+ text-decoration: if($link-hover-decoration == underline, none, null);
+ background-color: $pagination-hover-bg;
+ border-color: $pagination-hover-border-color;
+ }
+
+ &:focus {
+ z-index: 3;
+ color: $pagination-focus-color;
+ background-color: $pagination-focus-bg;
+ outline: $pagination-focus-outline;
+ box-shadow: $pagination-focus-box-shadow;
+ }
+}
+
+.page-item {
+ &:not(:first-child) .page-link {
+ margin-left: $pagination-margin-start;
+ }
+
+ &.active .page-link {
+ z-index: 3;
+ color: $pagination-active-color;
+ @include gradient-bg($pagination-active-bg);
+ border-color: $pagination-active-border-color;
+ }
+
+ &.disabled .page-link {
+ color: $pagination-disabled-color;
+ pointer-events: none;
+ background-color: $pagination-disabled-bg;
+ border-color: $pagination-disabled-border-color;
+ }
+}
+
+
+//
+// Sizing
+//
+@include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);
+
+.pagination-lg {
+ @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);
+}
+
+.pagination-sm {
+ @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_popover.scss b/docs/themes/adidoks/sass/bootstrap/scss/_popover.scss
new file mode 100644
index 0000000..a55555e
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_popover.scss
@@ -0,0 +1,158 @@
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0 #{"/* rtl:ignore */"};
+ z-index: $zindex-popover;
+ display: block;
+ max-width: $popover-max-width;
+ // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+ // So reset our font and text properties to avoid inheriting weird values.
+ @include reset-text();
+ @include font-size($popover-font-size);
+ // Allow breaking very long words so they don't overflow the popover's bounds
+ word-wrap: break-word;
+ background-color: $popover-bg;
+ background-clip: padding-box;
+ border: $popover-border-width solid $popover-border-color;
+ @include border-radius($popover-border-radius);
+ @include box-shadow($popover-box-shadow);
+
+ .popover-arrow {
+ position: absolute;
+ display: block;
+ width: $popover-arrow-width;
+ height: $popover-arrow-height;
+
+ &::before,
+ &::after {
+ position: absolute;
+ display: block;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+ }
+ }
+}
+
+.bs-popover-top {
+ > .popover-arrow {
+ bottom: subtract(-$popover-arrow-height, $popover-border-width);
+
+ &::before {
+ bottom: 0;
+ border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+ border-top-color: $popover-arrow-outer-color;
+ }
+
+ &::after {
+ bottom: $popover-border-width;
+ border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;
+ border-top-color: $popover-arrow-color;
+ }
+ }
+}
+
+.bs-popover-end {
+ > .popover-arrow {
+ left: subtract(-$popover-arrow-height, $popover-border-width);
+ width: $popover-arrow-height;
+ height: $popover-arrow-width;
+
+ &::before {
+ left: 0;
+ border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+ border-right-color: $popover-arrow-outer-color;
+ }
+
+ &::after {
+ left: $popover-border-width;
+ border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;
+ border-right-color: $popover-arrow-color;
+ }
+ }
+}
+
+.bs-popover-bottom {
+ > .popover-arrow {
+ top: subtract(-$popover-arrow-height, $popover-border-width);
+
+ &::before {
+ top: 0;
+ border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+ border-bottom-color: $popover-arrow-outer-color;
+ }
+
+ &::after {
+ top: $popover-border-width;
+ border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);
+ border-bottom-color: $popover-arrow-color;
+ }
+ }
+
+ // This will remove the popover-header's border just below the arrow
+ .popover-header::before {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ display: block;
+ width: $popover-arrow-width;
+ margin-left: -$popover-arrow-width / 2;
+ content: "";
+ border-bottom: $popover-border-width solid $popover-header-bg;
+ }
+}
+
+.bs-popover-start {
+ > .popover-arrow {
+ right: subtract(-$popover-arrow-height, $popover-border-width);
+ width: $popover-arrow-height;
+ height: $popover-arrow-width;
+
+ &::before {
+ right: 0;
+ border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+ border-left-color: $popover-arrow-outer-color;
+ }
+
+ &::after {
+ right: $popover-border-width;
+ border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;
+ border-left-color: $popover-arrow-color;
+ }
+ }
+}
+
+.bs-popover-auto {
+ &[data-popper-placement^="top"] {
+ @extend .bs-popover-top;
+ }
+ &[data-popper-placement^="right"] {
+ @extend .bs-popover-end;
+ }
+ &[data-popper-placement^="bottom"] {
+ @extend .bs-popover-bottom;
+ }
+ &[data-popper-placement^="left"] {
+ @extend .bs-popover-start;
+ }
+}
+
+// Offset the popover to account for the popover arrow
+.popover-header {
+ padding: $popover-header-padding-y $popover-header-padding-x;
+ margin-bottom: 0; // Reset the default from Reboot
+ @include font-size($font-size-base);
+ color: $popover-header-color;
+ background-color: $popover-header-bg;
+ border-bottom: $popover-border-width solid shade-color($popover-header-bg, 10%);
+ @include border-top-radius($popover-inner-border-radius);
+
+ &:empty {
+ display: none;
+ }
+}
+
+.popover-body {
+ padding: $popover-body-padding-y $popover-body-padding-x;
+ color: $popover-body-color;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_progress.scss b/docs/themes/adidoks/sass/bootstrap/scss/_progress.scss
new file mode 100644
index 0000000..5715ab0
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_progress.scss
@@ -0,0 +1,48 @@
+// Disable animation if transitions are disabled
+
+// scss-docs-start progress-keyframes
+@if $enable-transitions {
+ @keyframes progress-bar-stripes {
+ 0% { background-position-x: $progress-height; }
+ }
+}
+// scss-docs-end progress-keyframes
+
+.progress {
+ display: flex;
+ height: $progress-height;
+ overflow: hidden; // force rounded corners by cropping it
+ @include font-size($progress-font-size);
+ background-color: $progress-bg;
+ @include border-radius($progress-border-radius);
+ @include box-shadow($progress-box-shadow);
+}
+
+.progress-bar {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ overflow: hidden;
+ color: $progress-bar-color;
+ text-align: center;
+ white-space: nowrap;
+ background-color: $progress-bar-bg;
+ @include transition($progress-bar-transition);
+}
+
+.progress-bar-striped {
+ @include gradient-striped();
+ background-size: $progress-height $progress-height;
+}
+
+@if $enable-transitions {
+ .progress-bar-animated {
+ animation: $progress-bar-animation-timing progress-bar-stripes;
+
+ @if $enable-reduced-motion {
+ @media (prefers-reduced-motion: reduce) {
+ animation: none;
+ }
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_reboot.scss b/docs/themes/adidoks/sass/bootstrap/scss/_reboot.scss
new file mode 100644
index 0000000..3520469
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_reboot.scss
@@ -0,0 +1,621 @@
+// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
+
+
+// Reboot
+//
+// Normalization of HTML elements, manually forked from Normalize.css to remove
+// styles targeting irrelevant browsers while applying new styles.
+//
+// Normalize is licensed MIT. https://github.com/necolas/normalize.css
+
+
+// Document
+//
+// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.
+
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+}
+
+
+// Root
+//
+// Ability to the value of the root font sizes, affecting the value of `rem`.
+// null by default, thus nothing is generated.
+
+:root {
+ font-size: $font-size-root;
+
+ @if $enable-smooth-scroll {
+ @media (prefers-reduced-motion: no-preference) {
+ scroll-behavior: smooth;
+ }
+ }
+}
+
+
+// Body
+//
+// 1. Remove the margin in all browsers.
+// 2. As a best practice, apply a default `background-color`.
+// 3. Prevent adjustments of font size after orientation changes in iOS.
+// 4. Change the default tap highlight to be completely transparent in iOS.
+
+body {
+ margin: 0; // 1
+ font-family: $font-family-base;
+ @include font-size($font-size-base);
+ font-weight: $font-weight-base;
+ line-height: $line-height-base;
+ color: $body-color;
+ text-align: $body-text-align;
+ background-color: $body-bg; // 2
+ -webkit-text-size-adjust: 100%; // 3
+ -webkit-tap-highlight-color: rgba($black, 0); // 4
+}
+
+
+// Content grouping
+//
+// 1. Reset Firefox's gray color
+// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field
+
+hr {
+ margin: $hr-margin-y 0;
+ color: $hr-color; // 1
+ background-color: currentColor;
+ border: 0;
+ opacity: $hr-opacity;
+}
+
+hr:not([size]) {
+ height: $hr-height; // 2
+}
+
+
+// Typography
+//
+// 1. Remove top margins from headings
+// By default, ``-`` all receive top and bottom margins. We nuke the top
+// margin for easier control within type scales as it avoids margin collapsing.
+
+%heading {
+ margin-top: 0; // 1
+ margin-bottom: $headings-margin-bottom;
+ font-family: $headings-font-family;
+ font-style: $headings-font-style;
+ font-weight: $headings-font-weight;
+ line-height: $headings-line-height;
+ color: $headings-color;
+}
+
+h1 {
+ @extend %heading;
+ @include font-size($h1-font-size);
+}
+
+h2 {
+ @extend %heading;
+ @include font-size($h2-font-size);
+}
+
+h3 {
+ @extend %heading;
+ @include font-size($h3-font-size);
+}
+
+h4 {
+ @extend %heading;
+ @include font-size($h4-font-size);
+}
+
+h5 {
+ @extend %heading;
+ @include font-size($h5-font-size);
+}
+
+h6 {
+ @extend %heading;
+ @include font-size($h6-font-size);
+}
+
+
+// Reset margins on paragraphs
+//
+// Similarly, the top margin on ` `s get reset. However, we also reset the
+// bottom margin to use `rem` units instead of `em`.
+
+p {
+ margin-top: 0;
+ margin-bottom: $paragraph-margin-bottom;
+}
+
+
+// Abbreviations
+//
+// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin
+// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.
+// 3. Add explicit cursor to indicate changed behavior.
+// 4. Prevent the text-decoration to be skipped.
+
+abbr[title],
+abbr[data-bs-original-title] { // 1
+ text-decoration: underline dotted; // 2
+ cursor: help; // 3
+ text-decoration-skip-ink: none; // 4
+}
+
+
+// Address
+
+address {
+ margin-bottom: 1rem;
+ font-style: normal;
+ line-height: inherit;
+}
+
+
+// Lists
+
+ol,
+ul {
+ padding-left: 2rem;
+}
+
+ol,
+ul,
+dl {
+ margin-top: 0;
+ margin-bottom: 1rem;
+}
+
+ol ol,
+ul ul,
+ol ul,
+ul ol {
+ margin-bottom: 0;
+}
+
+dt {
+ font-weight: $dt-font-weight;
+}
+
+// 1. Undo browser default
+
+dd {
+ margin-bottom: .5rem;
+ margin-left: 0; // 1
+}
+
+
+// Blockquote
+
+blockquote {
+ margin: 0 0 1rem;
+}
+
+
+// Strong
+//
+// Add the correct font weight in Chrome, Edge, and Safari
+
+b,
+strong {
+ font-weight: $font-weight-bolder;
+}
+
+
+// Small
+//
+// Add the correct font size in all browsers
+
+small {
+ @include font-size($small-font-size);
+}
+
+
+// Mark
+
+mark {
+ padding: $mark-padding;
+ background-color: $mark-bg;
+}
+
+
+// Sub and Sup
+//
+// Prevent `sub` and `sup` elements from affecting the line height in
+// all browsers.
+
+sub,
+sup {
+ position: relative;
+ @include font-size($sub-sup-font-size);
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sub { bottom: -.25em; }
+sup { top: -.5em; }
+
+
+// Links
+
+a {
+ color: $link-color;
+ text-decoration: $link-decoration;
+
+ &:hover {
+ color: $link-hover-color;
+ text-decoration: $link-hover-decoration;
+ }
+}
+
+// And undo these styles for placeholder links/named anchors (without href).
+// It would be more straightforward to just use a[href] in previous block, but that
+// causes specificity issues in many other styles that are too complex to fix.
+// See https://github.com/twbs/bootstrap/issues/19402
+
+a:not([href]):not([class]) {
+ &,
+ &:hover {
+ color: inherit;
+ text-decoration: none;
+ }
+}
+
+
+// Code
+
+pre,
+code,
+kbd,
+samp {
+ font-family: $font-family-code;
+ @include font-size(1em); // Correct the odd `em` font sizing in all browsers.
+ direction: ltr #{"/* rtl:ignore */"};
+ unicode-bidi: bidi-override;
+}
+
+// 1. Remove browser default top margin
+// 2. Reset browser default of `1em` to use `rem`s
+// 3. Don't allow content to break outside
+
+pre {
+ display: block;
+ margin-top: 0; // 1
+ margin-bottom: 1rem; // 2
+ overflow: auto; // 3
+ @include font-size($code-font-size);
+ color: $pre-color;
+
+ // Account for some code outputs that place code tags in pre tags
+ code {
+ @include font-size(inherit);
+ color: inherit;
+ word-break: normal;
+ }
+}
+
+code {
+ @include font-size($code-font-size);
+ color: $code-color;
+ word-wrap: break-word;
+
+ // Streamline the style when inside anchors to avoid broken underline and more
+ a > & {
+ color: inherit;
+ }
+}
+
+kbd {
+ padding: $kbd-padding-y $kbd-padding-x;
+ @include font-size($kbd-font-size);
+ color: $kbd-color;
+ background-color: $kbd-bg;
+ @include border-radius($border-radius-sm);
+
+ kbd {
+ padding: 0;
+ @include font-size(1em);
+ font-weight: $nested-kbd-font-weight;
+ }
+}
+
+
+// Figures
+//
+// Apply a consistent margin strategy (matches our type styles).
+
+figure {
+ margin: 0 0 1rem;
+}
+
+
+// Images and content
+
+img,
+svg {
+ vertical-align: middle;
+}
+
+
+// Tables
+//
+// Prevent double borders
+
+table {
+ caption-side: bottom;
+ border-collapse: collapse;
+}
+
+caption {
+ padding-top: $table-cell-padding-y;
+ padding-bottom: $table-cell-padding-y;
+ color: $table-caption-color;
+ text-align: left;
+}
+
+// 1. Removes font-weight bold by inheriting
+// 2. Matches default `
` alignment by inheriting `text-align`.
+// 3. Fix alignment for Safari
+
+th {
+ font-weight: $table-th-font-weight; // 1
+ text-align: inherit; // 2
+ text-align: -webkit-match-parent; // 3
+}
+
+thead,
+tbody,
+tfoot,
+tr,
+td,
+th {
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+}
+
+
+// Forms
+//
+// 1. Allow labels to use `margin` for spacing.
+
+label {
+ display: inline-block; // 1
+}
+
+// Remove the default `border-radius` that macOS Chrome adds.
+// See https://github.com/twbs/bootstrap/issues/24093
+
+button {
+ // stylelint-disable-next-line property-disallowed-list
+ border-radius: 0;
+}
+
+// Explicitly remove focus outline in Chromium when it shouldn't be
+// visible (e.g. as result of mouse click or touch tap). It already
+// should be doing this automatically, but seems to currently be
+// confused and applies its very visible two-tone outline anyway.
+
+button:focus:not(:focus-visible) {
+ outline: 0;
+}
+
+// 1. Remove the margin in Firefox and Safari
+
+input,
+button,
+select,
+optgroup,
+textarea {
+ margin: 0; // 1
+ font-family: inherit;
+ @include font-size(inherit);
+ line-height: inherit;
+}
+
+// Remove the inheritance of text transform in Firefox
+button,
+select {
+ text-transform: none;
+}
+// Set the cursor for non-`` buttons
+//
+// Details at https://github.com/twbs/bootstrap/pull/30562
+[role="button"] {
+ cursor: pointer;
+}
+
+select {
+ // Remove the inheritance of word-wrap in Safari.
+ // See https://github.com/twbs/bootstrap/issues/24990
+ word-wrap: normal;
+
+ // Undo the opacity change from Chrome
+ &:disabled {
+ opacity: 1;
+ }
+}
+
+// Remove the dropdown arrow in Chrome from inputs built with datalists.
+// See https://stackoverflow.com/a/54997118
+
+[list]::-webkit-calendar-picker-indicator {
+ display: none;
+}
+
+// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+// controls in Android 4.
+// 2. Correct the inability to style clickable types in iOS and Safari.
+// 3. Opinionated: add "hand" cursor to non-disabled button elements.
+
+button,
+[type="button"], // 1
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button; // 2
+
+ @if $enable-button-pointers {
+ &:not(:disabled) {
+ cursor: pointer; // 3
+ }
+ }
+}
+
+// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.
+
+::-moz-focus-inner {
+ padding: 0;
+ border-style: none;
+}
+
+// 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.
+
+textarea {
+ resize: vertical; // 1
+}
+
+// 1. Browsers set a default `min-width: min-content;` on fieldsets,
+// unlike e.g. ``s, which have `min-width: 0;` by default.
+// So we reset that to ensure fieldsets behave more like a standard block element.
+// See https://github.com/twbs/bootstrap/issues/12359
+// and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements
+// 2. Reset the default outline behavior of fieldsets so they don't affect page layout.
+
+fieldset {
+ min-width: 0; // 1
+ padding: 0; // 2
+ margin: 0; // 2
+ border: 0; // 2
+}
+
+// 1. By using `float: left`, the legend will behave like a block element.
+// This way the border of a fieldset wraps around the legend if present.
+// 2. Fix wrapping bug.
+// See https://github.com/twbs/bootstrap/issues/29712
+
+legend {
+ float: left; // 1
+ width: 100%;
+ padding: 0;
+ margin-bottom: $legend-margin-bottom;
+ @include font-size($legend-font-size);
+ font-weight: $legend-font-weight;
+ line-height: inherit;
+
+ + * {
+ clear: left; // 2
+ }
+}
+
+// Fix height of inputs with a type of datetime-local, date, month, week, or time
+// See https://github.com/twbs/bootstrap/issues/18842
+
+::-webkit-datetime-edit-fields-wrapper,
+::-webkit-datetime-edit-text,
+::-webkit-datetime-edit-minute,
+::-webkit-datetime-edit-hour-field,
+::-webkit-datetime-edit-day-field,
+::-webkit-datetime-edit-month-field,
+::-webkit-datetime-edit-year-field {
+ padding: 0;
+}
+
+::-webkit-inner-spin-button {
+ height: auto;
+}
+
+// 1. Correct the outline style in Safari.
+// 2. This overrides the extra rounded corners on search inputs in iOS so that our
+// `.form-control` class can properly style them. Note that this cannot simply
+// be added to `.form-control` as it's not specific enough. For details, see
+// https://github.com/twbs/bootstrap/issues/11586.
+
+[type="search"] {
+ outline-offset: -2px; // 1
+ -webkit-appearance: textfield; // 2
+}
+
+// 1. A few input types should stay LTR
+// See https://rtlstyling.com/posts/rtl-styling#form-inputs
+// 2. RTL only output
+// See https://rtlcss.com/learn/usage-guide/control-directives/#raw
+
+/* rtl:raw:
+[type="tel"],
+[type="url"],
+[type="email"],
+[type="number"] {
+ direction: ltr;
+}
+*/
+
+// Remove the inner padding in Chrome and Safari on macOS.
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+// Remove padding around color pickers in webkit browsers
+
+::-webkit-color-swatch-wrapper {
+ padding: 0;
+}
+
+
+// Inherit font family and line height for file input buttons
+
+::file-selector-button {
+ font: inherit;
+}
+
+// 1. Change font properties to `inherit`
+// 2. Correct the inability to style clickable types in iOS and Safari.
+
+::-webkit-file-upload-button {
+ font: inherit; // 1
+ -webkit-appearance: button; // 2
+}
+
+// Correct element displays
+
+output {
+ display: inline-block;
+}
+
+// Remove border from iframe
+
+iframe {
+ border: 0;
+}
+
+// Summary
+//
+// 1. Add the correct display in all browsers
+
+summary {
+ display: list-item; // 1
+ cursor: pointer;
+}
+
+
+// Progress
+//
+// Add the correct vertical alignment in Chrome, Firefox, and Opera.
+
+progress {
+ vertical-align: baseline;
+}
+
+
+// Hidden attribute
+//
+// Always hide an element with the `hidden` HTML attribute.
+
+[hidden] {
+ display: none !important;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_root.scss b/docs/themes/adidoks/sass/bootstrap/scss/_root.scss
new file mode 100644
index 0000000..768d634
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_root.scss
@@ -0,0 +1,16 @@
+:root {
+ // Custom variable values only support SassScript inside `#{}`.
+ @each $color, $value in $colors {
+ --#{$variable-prefix}#{$color}: #{$value};
+ }
+
+ @each $color, $value in $theme-colors {
+ --#{$variable-prefix}#{$color}: #{$value};
+ }
+
+ // Use `inspect` for lists so that quoted items keep the quotes.
+ // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+ --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
+ --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};
+ --#{$variable-prefix}gradient: #{$gradient};
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_spinners.scss b/docs/themes/adidoks/sass/bootstrap/scss/_spinners.scss
new file mode 100644
index 0000000..8e19bae
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_spinners.scss
@@ -0,0 +1,69 @@
+//
+// Rotating border
+//
+
+// scss-docs-start spinner-border-keyframes
+@keyframes spinner-border {
+ to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
+}
+// scss-docs-end spinner-border-keyframes
+
+.spinner-border {
+ display: inline-block;
+ width: $spinner-width;
+ height: $spinner-height;
+ vertical-align: text-bottom;
+ border: $spinner-border-width solid currentColor;
+ border-right-color: transparent;
+ // stylelint-disable-next-line property-disallowed-list
+ border-radius: 50%;
+ animation: $spinner-animation-speed linear infinite spinner-border;
+}
+
+.spinner-border-sm {
+ width: $spinner-width-sm;
+ height: $spinner-height-sm;
+ border-width: $spinner-border-width-sm;
+}
+
+//
+// Growing circle
+//
+
+// scss-docs-start spinner-grow-keyframes
+@keyframes spinner-grow {
+ 0% {
+ transform: scale(0);
+ }
+ 50% {
+ opacity: 1;
+ transform: none;
+ }
+}
+// scss-docs-end spinner-grow-keyframes
+
+.spinner-grow {
+ display: inline-block;
+ width: $spinner-width;
+ height: $spinner-height;
+ vertical-align: text-bottom;
+ background-color: currentColor;
+ // stylelint-disable-next-line property-disallowed-list
+ border-radius: 50%;
+ opacity: 0;
+ animation: $spinner-animation-speed linear infinite spinner-grow;
+}
+
+.spinner-grow-sm {
+ width: $spinner-width-sm;
+ height: $spinner-height-sm;
+}
+
+@if $enable-reduced-motion {
+ @media (prefers-reduced-motion: reduce) {
+ .spinner-border,
+ .spinner-grow {
+ animation-duration: $spinner-animation-speed * 2;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_tables.scss b/docs/themes/adidoks/sass/bootstrap/scss/_tables.scss
new file mode 100644
index 0000000..5036829
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_tables.scss
@@ -0,0 +1,150 @@
+//
+// Basic Bootstrap table
+//
+
+.table {
+ --#{$variable-prefix}table-bg: #{$table-bg};
+ --#{$variable-prefix}table-striped-color: #{$table-striped-color};
+ --#{$variable-prefix}table-striped-bg: #{$table-striped-bg};
+ --#{$variable-prefix}table-active-color: #{$table-active-color};
+ --#{$variable-prefix}table-active-bg: #{$table-active-bg};
+ --#{$variable-prefix}table-hover-color: #{$table-hover-color};
+ --#{$variable-prefix}table-hover-bg: #{$table-hover-bg};
+
+ width: 100%;
+ margin-bottom: $spacer;
+ color: $table-color;
+ vertical-align: $table-cell-vertical-align;
+ border-color: $table-border-color;
+
+ // Target th & td
+ // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.
+ // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).
+ // Another advantage is that this generates less code and makes the selector less specific making it easier to override.
+ // stylelint-disable-next-line selector-max-universal
+ > :not(caption) > * > * {
+ padding: $table-cell-padding-y $table-cell-padding-x;
+ background-color: var(--#{$variable-prefix}table-bg);
+ border-bottom-width: $table-border-width;
+ box-shadow: inset 0 0 0 9999px var(--#{$variable-prefix}table-accent-bg);
+ }
+
+ > tbody {
+ vertical-align: inherit;
+ }
+
+ > thead {
+ vertical-align: bottom;
+ }
+
+ // Highlight border color between thead, tbody and tfoot.
+ > :not(:last-child) > :last-child > * {
+ border-bottom-color: $table-group-separator-color;
+ }
+}
+
+
+//
+// Change placement of captions with a class
+//
+
+.caption-top {
+ caption-side: top;
+}
+
+
+//
+// Condensed table w/ half padding
+//
+
+.table-sm {
+ // stylelint-disable-next-line selector-max-universal
+ > :not(caption) > * > * {
+ padding: $table-cell-padding-y-sm $table-cell-padding-x-sm;
+ }
+}
+
+
+// Border versions
+//
+// Add or remove borders all around the table and between all the columns.
+//
+// When borders are added on all sides of the cells, the corners can render odd when
+// these borders do not have the same color or if they are semi-transparent.
+// Therefor we add top and border bottoms to the `tr`s and left and right borders
+// to the `td`s or `th`s
+
+.table-bordered {
+ > :not(caption) > * {
+ border-width: $table-border-width 0;
+
+ // stylelint-disable-next-line selector-max-universal
+ > * {
+ border-width: 0 $table-border-width;
+ }
+ }
+}
+
+.table-borderless {
+ // stylelint-disable-next-line selector-max-universal
+ > :not(caption) > * > * {
+ border-bottom-width: 0;
+ }
+}
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+ > tbody > tr:nth-of-type(#{$table-striped-order}) {
+ --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-striped-bg);
+ color: var(--#{$variable-prefix}table-striped-color);
+ }
+}
+
+// Active table
+//
+// The `.table-active` class can be added to highlight rows or cells
+
+.table-active {
+ --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-active-bg);
+ color: var(--#{$variable-prefix}table-active-color);
+}
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+ > tbody > tr:hover {
+ --#{$variable-prefix}table-accent-bg: var(--#{$variable-prefix}table-hover-bg);
+ color: var(--#{$variable-prefix}table-hover-color);
+ }
+}
+
+
+// Table variants
+//
+// Table variants set the table cell backgrounds, border colors
+// and the colors of the striped, hovered & active tables
+
+@each $color, $value in $table-variants {
+ @include table-variant($color, $value);
+}
+
+// Responsive tables
+//
+// Generate series of `.table-responsive-*` classes for configuring the screen
+// size of where your table will overflow.
+
+@each $breakpoint in map-keys($grid-breakpoints) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ @include media-breakpoint-down($breakpoint) {
+ .table-responsive#{$infix} {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_toasts.scss b/docs/themes/adidoks/sass/bootstrap/scss/_toasts.scss
new file mode 100644
index 0000000..5c533d7
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_toasts.scss
@@ -0,0 +1,51 @@
+.toast {
+ width: $toast-max-width;
+ max-width: 100%;
+ @include font-size($toast-font-size);
+ color: $toast-color;
+ pointer-events: auto;
+ background-color: $toast-background-color;
+ background-clip: padding-box;
+ border: $toast-border-width solid $toast-border-color;
+ box-shadow: $toast-box-shadow;
+ @include border-radius($toast-border-radius);
+
+ &:not(.showing):not(.show) {
+ opacity: 0;
+ }
+
+ &.hide {
+ display: none;
+ }
+}
+
+.toast-container {
+ width: max-content;
+ max-width: 100%;
+ pointer-events: none;
+
+ > :not(:last-child) {
+ margin-bottom: $toast-spacing;
+ }
+}
+
+.toast-header {
+ display: flex;
+ align-items: center;
+ padding: $toast-padding-y $toast-padding-x;
+ color: $toast-header-color;
+ background-color: $toast-header-background-color;
+ background-clip: padding-box;
+ border-bottom: $toast-border-width solid $toast-header-border-color;
+ @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
+
+ .btn-close {
+ margin-right: $toast-padding-x / -2;
+ margin-left: $toast-padding-x;
+ }
+}
+
+.toast-body {
+ padding: $toast-padding-x; // apply to both vertical and horizontal
+ word-wrap: break-word;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_tooltip.scss b/docs/themes/adidoks/sass/bootstrap/scss/_tooltip.scss
new file mode 100644
index 0000000..2993bf7
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_tooltip.scss
@@ -0,0 +1,115 @@
+// Base class
+.tooltip {
+ position: absolute;
+ z-index: $zindex-tooltip;
+ display: block;
+ margin: $tooltip-margin;
+ // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
+ // So reset our font and text properties to avoid inheriting weird values.
+ @include reset-text();
+ @include font-size($tooltip-font-size);
+ // Allow breaking very long words so they don't overflow the tooltip's bounds
+ word-wrap: break-word;
+ opacity: 0;
+
+ &.show { opacity: $tooltip-opacity; }
+
+ .tooltip-arrow {
+ position: absolute;
+ display: block;
+ width: $tooltip-arrow-width;
+ height: $tooltip-arrow-height;
+
+ &::before {
+ position: absolute;
+ content: "";
+ border-color: transparent;
+ border-style: solid;
+ }
+ }
+}
+
+.bs-tooltip-top {
+ padding: $tooltip-arrow-height 0;
+
+ .tooltip-arrow {
+ bottom: 0;
+
+ &::before {
+ top: -1px;
+ border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+ border-top-color: $tooltip-arrow-color;
+ }
+ }
+}
+
+.bs-tooltip-end {
+ padding: 0 $tooltip-arrow-height;
+
+ .tooltip-arrow {
+ left: 0;
+ width: $tooltip-arrow-height;
+ height: $tooltip-arrow-width;
+
+ &::before {
+ right: -1px;
+ border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;
+ border-right-color: $tooltip-arrow-color;
+ }
+ }
+}
+
+.bs-tooltip-bottom {
+ padding: $tooltip-arrow-height 0;
+
+ .tooltip-arrow {
+ top: 0;
+
+ &::before {
+ bottom: -1px;
+ border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+ border-bottom-color: $tooltip-arrow-color;
+ }
+ }
+}
+
+.bs-tooltip-start {
+ padding: 0 $tooltip-arrow-height;
+
+ .tooltip-arrow {
+ right: 0;
+ width: $tooltip-arrow-height;
+ height: $tooltip-arrow-width;
+
+ &::before {
+ left: -1px;
+ border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;
+ border-left-color: $tooltip-arrow-color;
+ }
+ }
+}
+
+.bs-tooltip-auto {
+ &[data-popper-placement^="top"] {
+ @extend .bs-tooltip-top;
+ }
+ &[data-popper-placement^="right"] {
+ @extend .bs-tooltip-end;
+ }
+ &[data-popper-placement^="bottom"] {
+ @extend .bs-tooltip-bottom;
+ }
+ &[data-popper-placement^="left"] {
+ @extend .bs-tooltip-start;
+ }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+ max-width: $tooltip-max-width;
+ padding: $tooltip-padding-y $tooltip-padding-x;
+ color: $tooltip-color;
+ text-align: center;
+ background-color: $tooltip-bg;
+ @include border-radius($tooltip-border-radius);
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_transitions.scss b/docs/themes/adidoks/sass/bootstrap/scss/_transitions.scss
new file mode 100644
index 0000000..2905df4
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_transitions.scss
@@ -0,0 +1,21 @@
+.fade {
+ @include transition($transition-fade);
+
+ &:not(.show) {
+ opacity: 0;
+ }
+}
+
+// scss-docs-start collapse-classes
+.collapse {
+ &:not(.show) {
+ display: none;
+ }
+}
+
+.collapsing {
+ height: 0;
+ overflow: hidden;
+ @include transition($transition-collapse);
+}
+// scss-docs-end collapse-classes
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_type.scss b/docs/themes/adidoks/sass/bootstrap/scss/_type.scss
new file mode 100644
index 0000000..b2d524c
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_type.scss
@@ -0,0 +1,104 @@
+//
+// Headings
+//
+.h1 {
+ @extend h1;
+}
+
+.h2 {
+ @extend h2;
+}
+
+.h3 {
+ @extend h3;
+}
+
+.h4 {
+ @extend h4;
+}
+
+.h5 {
+ @extend h5;
+}
+
+.h6 {
+ @extend h6;
+}
+
+
+.lead {
+ @include font-size($lead-font-size);
+ font-weight: $lead-font-weight;
+}
+
+// Type display classes
+@each $display, $font-size in $display-font-sizes {
+ .display-#{$display} {
+ @include font-size($font-size);
+ font-weight: $display-font-weight;
+ line-height: $display-line-height;
+ }
+}
+
+//
+// Emphasis
+//
+.small {
+ @extend small;
+}
+
+.mark {
+ @extend mark;
+}
+
+//
+// Lists
+//
+
+.list-unstyled {
+ @include list-unstyled();
+}
+
+// Inline turns list items into inline-block
+.list-inline {
+ @include list-unstyled();
+}
+.list-inline-item {
+ display: inline-block;
+
+ &:not(:last-child) {
+ margin-right: $list-inline-padding;
+ }
+}
+
+
+//
+// Misc
+//
+
+// Builds on `abbr`
+.initialism {
+ @include font-size($initialism-font-size);
+ text-transform: uppercase;
+}
+
+// Blockquotes
+.blockquote {
+ margin-bottom: $blockquote-margin-y;
+ @include font-size($blockquote-font-size);
+
+ > :last-child {
+ margin-bottom: 0;
+ }
+}
+
+.blockquote-footer {
+ margin-top: -$blockquote-margin-y;
+ margin-bottom: $blockquote-margin-y;
+ @include font-size($blockquote-footer-font-size);
+ color: $blockquote-footer-color;
+
+ &::before {
+ content: "\2014\00A0"; // em dash, nbsp
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_utilities.scss b/docs/themes/adidoks/sass/bootstrap/scss/_utilities.scss
new file mode 100644
index 0000000..3c927cf
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_utilities.scss
@@ -0,0 +1,594 @@
+// stylelint-disable indentation
+
+// Utilities
+
+$utilities: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$utilities: map-merge(
+ (
+ // scss-docs-start utils-vertical-align
+ "align": (
+ property: vertical-align,
+ class: align,
+ values: baseline top middle bottom text-bottom text-top
+ ),
+ // scss-docs-end utils-vertical-align
+ // scss-docs-start utils-float
+ "float": (
+ responsive: true,
+ property: float,
+ values: (
+ start: left,
+ end: right,
+ none: none,
+ )
+ ),
+ // scss-docs-end utils-float
+ // scss-docs-start utils-overflow
+ "overflow": (
+ property: overflow,
+ values: auto hidden visible scroll,
+ ),
+ // scss-docs-end utils-overflow
+ // scss-docs-start utils-display
+ "display": (
+ responsive: true,
+ print: true,
+ property: display,
+ class: d,
+ values: inline inline-block block grid table table-row table-cell flex inline-flex none
+ ),
+ // scss-docs-end utils-display
+ // scss-docs-start utils-shadow
+ "shadow": (
+ property: box-shadow,
+ class: shadow,
+ values: (
+ null: $box-shadow,
+ sm: $box-shadow-sm,
+ lg: $box-shadow-lg,
+ none: none,
+ )
+ ),
+ // scss-docs-end utils-shadow
+ // scss-docs-start utils-position
+ "position": (
+ property: position,
+ values: static relative absolute fixed sticky
+ ),
+ "top": (
+ property: top,
+ values: $position-values
+ ),
+ "bottom": (
+ property: bottom,
+ values: $position-values
+ ),
+ "start": (
+ property: left,
+ class: start,
+ values: $position-values
+ ),
+ "end": (
+ property: right,
+ class: end,
+ values: $position-values
+ ),
+ "translate-middle": (
+ property: transform,
+ class: translate-middle,
+ values: (
+ null: translate(-50%, -50%),
+ x: translateX(-50%),
+ y: translateY(-50%),
+ )
+ ),
+ // scss-docs-end utils-position
+ // scss-docs-start utils-borders
+ "border": (
+ property: border,
+ values: (
+ null: $border-width solid $border-color,
+ 0: 0,
+ )
+ ),
+ "border-top": (
+ property: border-top,
+ values: (
+ null: $border-width solid $border-color,
+ 0: 0,
+ )
+ ),
+ "border-end": (
+ property: border-right,
+ class: border-end,
+ values: (
+ null: $border-width solid $border-color,
+ 0: 0,
+ )
+ ),
+ "border-bottom": (
+ property: border-bottom,
+ values: (
+ null: $border-width solid $border-color,
+ 0: 0,
+ )
+ ),
+ "border-start": (
+ property: border-left,
+ class: border-start,
+ values: (
+ null: $border-width solid $border-color,
+ 0: 0,
+ )
+ ),
+ "border-color": (
+ property: border-color,
+ class: border,
+ values: map-merge($theme-colors, ("white": $white))
+ ),
+ "border-width": (
+ property: border-width,
+ class: border,
+ values: $border-widths
+ ),
+ // scss-docs-end utils-borders
+ // Sizing utilities
+ // scss-docs-start utils-sizing
+ "width": (
+ property: width,
+ class: w,
+ values: (
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%,
+ auto: auto
+ )
+ ),
+ "max-width": (
+ property: max-width,
+ class: mw,
+ values: (100: 100%)
+ ),
+ "viewport-width": (
+ property: width,
+ class: vw,
+ values: (100: 100vw)
+ ),
+ "min-viewport-width": (
+ property: min-width,
+ class: min-vw,
+ values: (100: 100vw)
+ ),
+ "height": (
+ property: height,
+ class: h,
+ values: (
+ 25: 25%,
+ 50: 50%,
+ 75: 75%,
+ 100: 100%,
+ auto: auto
+ )
+ ),
+ "max-height": (
+ property: max-height,
+ class: mh,
+ values: (100: 100%)
+ ),
+ "viewport-height": (
+ property: height,
+ class: vh,
+ values: (100: 100vh)
+ ),
+ "min-viewport-height": (
+ property: min-height,
+ class: min-vh,
+ values: (100: 100vh)
+ ),
+ // scss-docs-end utils-sizing
+ // Flex utilities
+ // scss-docs-start utils-flex
+ "flex": (
+ responsive: true,
+ property: flex,
+ values: (fill: 1 1 auto)
+ ),
+ "flex-direction": (
+ responsive: true,
+ property: flex-direction,
+ class: flex,
+ values: row column row-reverse column-reverse
+ ),
+ "flex-grow": (
+ responsive: true,
+ property: flex-grow,
+ class: flex,
+ values: (
+ grow-0: 0,
+ grow-1: 1,
+ )
+ ),
+ "flex-shrink": (
+ responsive: true,
+ property: flex-shrink,
+ class: flex,
+ values: (
+ shrink-0: 0,
+ shrink-1: 1,
+ )
+ ),
+ "flex-wrap": (
+ responsive: true,
+ property: flex-wrap,
+ class: flex,
+ values: wrap nowrap wrap-reverse
+ ),
+ "gap": (
+ responsive: true,
+ property: gap,
+ class: gap,
+ values: $spacers
+ ),
+ "justify-content": (
+ responsive: true,
+ property: justify-content,
+ values: (
+ start: flex-start,
+ end: flex-end,
+ center: center,
+ between: space-between,
+ around: space-around,
+ evenly: space-evenly,
+ )
+ ),
+ "align-items": (
+ responsive: true,
+ property: align-items,
+ values: (
+ start: flex-start,
+ end: flex-end,
+ center: center,
+ baseline: baseline,
+ stretch: stretch,
+ )
+ ),
+ "align-content": (
+ responsive: true,
+ property: align-content,
+ values: (
+ start: flex-start,
+ end: flex-end,
+ center: center,
+ between: space-between,
+ around: space-around,
+ stretch: stretch,
+ )
+ ),
+ "align-self": (
+ responsive: true,
+ property: align-self,
+ values: (
+ auto: auto,
+ start: flex-start,
+ end: flex-end,
+ center: center,
+ baseline: baseline,
+ stretch: stretch,
+ )
+ ),
+ "order": (
+ responsive: true,
+ property: order,
+ values: (
+ first: -1,
+ 0: 0,
+ 1: 1,
+ 2: 2,
+ 3: 3,
+ 4: 4,
+ 5: 5,
+ last: 6,
+ ),
+ ),
+ // scss-docs-end utils-flex
+ // Margin utilities
+ // scss-docs-start utils-spacing
+ "margin": (
+ responsive: true,
+ property: margin,
+ class: m,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-x": (
+ responsive: true,
+ property: margin-right margin-left,
+ class: mx,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-y": (
+ responsive: true,
+ property: margin-top margin-bottom,
+ class: my,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-top": (
+ responsive: true,
+ property: margin-top,
+ class: mt,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-end": (
+ responsive: true,
+ property: margin-right,
+ class: me,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-bottom": (
+ responsive: true,
+ property: margin-bottom,
+ class: mb,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ "margin-start": (
+ responsive: true,
+ property: margin-left,
+ class: ms,
+ values: map-merge($spacers, (auto: auto))
+ ),
+ // Negative margin utilities
+ "negative-margin": (
+ responsive: true,
+ property: margin,
+ class: m,
+ values: $negative-spacers
+ ),
+ "negative-margin-x": (
+ responsive: true,
+ property: margin-right margin-left,
+ class: mx,
+ values: $negative-spacers
+ ),
+ "negative-margin-y": (
+ responsive: true,
+ property: margin-top margin-bottom,
+ class: my,
+ values: $negative-spacers
+ ),
+ "negative-margin-top": (
+ responsive: true,
+ property: margin-top,
+ class: mt,
+ values: $negative-spacers
+ ),
+ "negative-margin-end": (
+ responsive: true,
+ property: margin-right,
+ class: me,
+ values: $negative-spacers
+ ),
+ "negative-margin-bottom": (
+ responsive: true,
+ property: margin-bottom,
+ class: mb,
+ values: $negative-spacers
+ ),
+ "negative-margin-start": (
+ responsive: true,
+ property: margin-left,
+ class: ms,
+ values: $negative-spacers
+ ),
+ // Padding utilities
+ "padding": (
+ responsive: true,
+ property: padding,
+ class: p,
+ values: $spacers
+ ),
+ "padding-x": (
+ responsive: true,
+ property: padding-right padding-left,
+ class: px,
+ values: $spacers
+ ),
+ "padding-y": (
+ responsive: true,
+ property: padding-top padding-bottom,
+ class: py,
+ values: $spacers
+ ),
+ "padding-top": (
+ responsive: true,
+ property: padding-top,
+ class: pt,
+ values: $spacers
+ ),
+ "padding-end": (
+ responsive: true,
+ property: padding-right,
+ class: pe,
+ values: $spacers
+ ),
+ "padding-bottom": (
+ responsive: true,
+ property: padding-bottom,
+ class: pb,
+ values: $spacers
+ ),
+ "padding-start": (
+ responsive: true,
+ property: padding-left,
+ class: ps,
+ values: $spacers
+ ),
+ // scss-docs-end utils-spacing
+ // Text
+ // scss-docs-start utils-text
+ "font-family": (
+ property: font-family,
+ class: font,
+ values: (monospace: var(--#{$variable-prefix}font-monospace))
+ ),
+ "font-size": (
+ rfs: true,
+ property: font-size,
+ class: fs,
+ values: $font-sizes
+ ),
+ "font-style": (
+ property: font-style,
+ class: fst,
+ values: italic normal
+ ),
+ "font-weight": (
+ property: font-weight,
+ class: fw,
+ values: (
+ light: $font-weight-light,
+ lighter: $font-weight-lighter,
+ normal: $font-weight-normal,
+ bold: $font-weight-bold,
+ bolder: $font-weight-bolder
+ )
+ ),
+ "line-height": (
+ property: line-height,
+ class: lh,
+ values: (
+ 1: 1,
+ sm: $line-height-sm,
+ base: $line-height-base,
+ lg: $line-height-lg,
+ )
+ ),
+ "text-align": (
+ responsive: true,
+ property: text-align,
+ class: text,
+ values: (
+ start: left,
+ end: right,
+ center: center,
+ )
+ ),
+ "text-decoration": (
+ property: text-decoration,
+ values: none underline line-through
+ ),
+ "text-transform": (
+ property: text-transform,
+ class: text,
+ values: lowercase uppercase capitalize
+ ),
+ "white-space": (
+ property: white-space,
+ class: text,
+ values: (
+ wrap: normal,
+ nowrap: nowrap,
+ )
+ ),
+ "word-wrap": (
+ property: word-wrap word-break,
+ class: text,
+ values: (break: break-word),
+ rtl: false
+ ),
+ // scss-docs-end utils-text
+ // scss-docs-start utils-color
+ "color": (
+ property: color,
+ class: text,
+ values: map-merge(
+ $theme-colors,
+ (
+ "white": $white,
+ "body": $body-color,
+ "muted": $text-muted,
+ "black-50": rgba($black, .5),
+ "white-50": rgba($white, .5),
+ "reset": inherit,
+ )
+ )
+ ),
+ // scss-docs-end utils-color
+ // scss-docs-start utils-bg-color
+ "background-color": (
+ property: background-color,
+ class: bg,
+ values: map-merge(
+ $theme-colors,
+ (
+ "body": $body-bg,
+ "white": $white,
+ "transparent": transparent
+ )
+ )
+ ),
+ // scss-docs-end utils-bg-color
+ "gradient": (
+ property: background-image,
+ class: bg,
+ values: (gradient: var(--#{$variable-prefix}gradient))
+ ),
+ // scss-docs-start utils-interaction
+ "user-select": (
+ property: user-select,
+ values: all auto none
+ ),
+ "pointer-events": (
+ property: pointer-events,
+ class: pe,
+ values: none auto,
+ ),
+ // scss-docs-end utils-interaction
+ // scss-docs-start utils-border-radius
+ "rounded": (
+ property: border-radius,
+ class: rounded,
+ values: (
+ null: $border-radius,
+ 0: 0,
+ 1: $border-radius-sm,
+ 2: $border-radius,
+ 3: $border-radius-lg,
+ circle: 50%,
+ pill: $border-radius-pill
+ )
+ ),
+ "rounded-top": (
+ property: border-top-left-radius border-top-right-radius,
+ class: rounded-top,
+ values: (null: $border-radius)
+ ),
+ "rounded-end": (
+ property: border-top-right-radius border-bottom-right-radius,
+ class: rounded-end,
+ values: (null: $border-radius)
+ ),
+ "rounded-bottom": (
+ property: border-bottom-right-radius border-bottom-left-radius,
+ class: rounded-bottom,
+ values: (null: $border-radius)
+ ),
+ "rounded-start": (
+ property: border-bottom-left-radius border-top-left-radius,
+ class: rounded-start,
+ values: (null: $border-radius)
+ ),
+ // scss-docs-end utils-border-radius
+ // scss-docs-start utils-visibility
+ "visibility": (
+ property: visibility,
+ class: null,
+ values: (
+ visible: visible,
+ invisible: hidden,
+ )
+ )
+ // scss-docs-end utils-visibility
+ ),
+ $utilities
+);
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/_variables.scss b/docs/themes/adidoks/sass/bootstrap/scss/_variables.scss
new file mode 100644
index 0000000..7558224
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/_variables.scss
@@ -0,0 +1,1464 @@
+// Variables
+//
+// Variables should follow the `$component-state-property-size` formula for
+// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
+
+// Color system
+
+// scss-docs-start gray-color-variables
+$white: #fff !default;
+$gray-100: #f8f9fa !default;
+$gray-200: #e9ecef !default;
+$gray-300: #dee2e6 !default;
+$gray-400: #ced4da !default;
+$gray-500: #adb5bd !default;
+$gray-600: #6c757d !default;
+$gray-700: #495057 !default;
+$gray-800: #343a40 !default;
+$gray-900: #212529 !default;
+$black: #000 !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
+
+// 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
+
+// scss-docs-start theme-color-variables
+$primary: $blue !default;
+$secondary: $gray-600 !default;
+$success: $green !default;
+$info: $cyan !default;
+$warning: $yellow !default;
+$danger: $red !default;
+$light: $gray-100 !default;
+$dark: $gray-900 !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: $black !default;
+$color-contrast-light: $white !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;
+
+// Prefix for :root CSS variables
+
+$variable-prefix: bs- !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: $gray-900 !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-300 !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: $white !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-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: null !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-muted: $gray-600 !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;
+
+$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
+
+
+// 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: null !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": shift-color($primary, $table-bg-scale),
+ "secondary": shift-color($secondary, $table-bg-scale),
+ "success": shift-color($success, $table-bg-scale),
+ "info": shift-color($info, $table-bg-scale),
+ "warning": shift-color($warning, $table-bg-scale),
+ "danger": shift-color($danger, $table-bg-scale),
+ "light": $light,
+ "dark": $dark,
+) !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;
+// scss-docs-end btn-variables
+
+
+// Forms
+
+// 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: null !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: null !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(0, 0, 0, .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: 2em !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;
+// scss-docs-end form-switch-variables
+
+// 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
+
+// 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-offcanvas: 1040 !default;
+$zindex-modal-backdrop: 1050 !default;
+$zindex-modal: 1060 !default;
+$zindex-popover: 1070 !default;
+$zindex-tooltip: 1080 !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: null !default;
+$nav-link-hover-color: null !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: rgba($white, .55) !default;
+$navbar-dark-hover-color: rgba($white, .75) !default;
+$navbar-dark-active-color: $white !default;
+$navbar-dark-disabled-color: rgba($white, .25) !default;
+$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,
") !default;
+$navbar-dark-toggler-border-color: rgba($white, .1) !default;
+
+$navbar-light-color: rgba($black, .55) !default;
+$navbar-light-hover-color: rgba($black, .7) !default;
+$navbar-light-active-color: rgba($black, .9) !default;
+$navbar-light-disabled-color: rgba($black, .3) !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: $white !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;
+
+$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: null !default;
+$card-height: null !default;
+$card-color: null !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: $white !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-start 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: null !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: $white !default;
+$badge-padding-y: .35em !default;
+$badge-padding-x: .65em !default;
+$badge-border-radius: $border-radius !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: null !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
+
+
+// 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
+
+
+// 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: $white !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: $gray-900 !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
+
+
+// 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: null !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: $white !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: $white !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: $black !default;
+$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
+// scss-docs-end carousel-variables
+
+
+// Spinners
+
+// scss-docs-start spinner-variables
+$spinner-width: 2rem !default;
+$spinner-height: $spinner-width !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: $black !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-body-backdrop-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !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: $white !default;
+$kbd-bg: $gray-900 !default;
+
+$pre-color: null !default;
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-grid.scss b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-grid.scss
new file mode 100644
index 0000000..8116a0f
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-grid.scss
@@ -0,0 +1,65 @@
+/*!
+ * Bootstrap Grid v5.0.0-beta3 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+$include-column-box-sizing: true !default;
+
+@import "functions";
+@import "variables";
+
+@import "mixins/lists";
+@import "mixins/breakpoints";
+@import "mixins/container";
+@import "mixins/grid";
+@import "mixins/utilities";
+
+@import "vendor/rfs";
+
+@import "containers";
+@import "grid";
+
+@import "utilities";
+// Only use the utilities we need
+// stylelint-disable-next-line scss/dollar-variable-default
+$utilities: map-get-multiple(
+ $utilities,
+ (
+ "display",
+ "order",
+ "flex",
+ "flex-direction",
+ "flex-grow",
+ "flex-shrink",
+ "flex-wrap",
+ "justify-content",
+ "align-items",
+ "align-content",
+ "align-self",
+ "margin",
+ "margin-x",
+ "margin-y",
+ "margin-top",
+ "margin-end",
+ "margin-bottom",
+ "margin-start",
+ "negative-margin",
+ "negative-margin-x",
+ "negative-margin-y",
+ "negative-margin-top",
+ "negative-margin-end",
+ "negative-margin-bottom",
+ "negative-margin-start",
+ "padding",
+ "padding-x",
+ "padding-y",
+ "padding-top",
+ "padding-end",
+ "padding-bottom",
+ "padding-start",
+ )
+);
+
+@import "utilities/api";
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-reboot.scss b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-reboot.scss
new file mode 100644
index 0000000..3eff882
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-reboot.scss
@@ -0,0 +1,15 @@
+/*!
+ * Bootstrap Reboot v5.0.0-beta3 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
+ */
+
+@import "functions";
+@import "variables";
+// Prevent the usage of custom properties since we don't add them to `:root` in reboot
+$font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default
+$font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default
+@import "mixins";
+@import "reboot";
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-utilities.scss b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-utilities.scss
new file mode 100644
index 0000000..9331d80
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap-utilities.scss
@@ -0,0 +1,18 @@
+/*!
+ * Bootstrap Utilities v5.0.0-beta3 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+// Configuration
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "utilities";
+
+// Helpers
+@import "helpers";
+
+// Utilities
+@import "utilities/api";
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/bootstrap.scss b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap.scss
new file mode 100644
index 0000000..1a975a3
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/bootstrap.scss
@@ -0,0 +1,52 @@
+/*!
+ * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/)
+ * Copyright 2011-2021 The Bootstrap Authors
+ * Copyright 2011-2021 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
+
+// scss-docs-start import-stack
+// Configuration
+@import "functions";
+@import "variables";
+@import "mixins";
+@import "utilities";
+
+// Layout & components
+@import "root";
+@import "reboot";
+@import "type";
+@import "images";
+@import "containers";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+@import "transitions";
+@import "dropdown";
+@import "button-group";
+@import "nav";
+@import "navbar";
+@import "card";
+@import "accordion";
+@import "breadcrumb";
+@import "pagination";
+@import "badge";
+@import "alert";
+@import "progress";
+@import "list-group";
+@import "close";
+@import "toasts";
+@import "modal";
+@import "tooltip";
+@import "popover";
+@import "carousel";
+@import "spinners";
+@import "offcanvas";
+
+// Helpers
+@import "helpers";
+
+// Utilities
+@import "utilities/api";
+// scss-docs-end import-stack
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_floating-labels.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_floating-labels.scss
new file mode 100644
index 0000000..8b2e2b8
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_floating-labels.scss
@@ -0,0 +1,61 @@
+.form-floating {
+ position: relative;
+
+ > .form-control,
+ > .form-select {
+ height: $form-floating-height;
+ padding: $form-floating-padding-y $form-floating-padding-x;
+ }
+
+ > label {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%; // allow textareas
+ padding: $form-floating-padding-y $form-floating-padding-x;
+ pointer-events: none;
+ border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
+ transform-origin: 0 0;
+ @include transition($form-floating-transition);
+ }
+
+ // stylelint-disable no-duplicate-selectors
+ > .form-control {
+ &::placeholder {
+ color: transparent;
+ }
+
+ &:focus,
+ &:not(:placeholder-shown) {
+ padding-top: $form-floating-input-padding-t;
+ padding-bottom: $form-floating-input-padding-b;
+ }
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+ &:-webkit-autofill {
+ padding-top: $form-floating-input-padding-t;
+ padding-bottom: $form-floating-input-padding-b;
+ }
+ }
+
+ > .form-select {
+ padding-top: $form-floating-input-padding-t;
+ padding-bottom: $form-floating-input-padding-b;
+ }
+
+ > .form-control:focus,
+ > .form-control:not(:placeholder-shown),
+ > .form-select {
+ ~ label {
+ opacity: $form-floating-label-opacity;
+ transform: $form-floating-label-transform;
+ }
+ }
+ // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
+ > .form-control:-webkit-autofill {
+ ~ label {
+ opacity: $form-floating-label-opacity;
+ transform: $form-floating-label-transform;
+ }
+ }
+ // stylelint-enable no-duplicate-selectors
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-check.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-check.scss
new file mode 100644
index 0000000..b34250a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-check.scss
@@ -0,0 +1,152 @@
+//
+// Check/radio
+//
+
+.form-check {
+ display: block;
+ min-height: $form-check-min-height;
+ padding-left: $form-check-padding-start;
+ margin-bottom: $form-check-margin-bottom;
+
+ .form-check-input {
+ float: left;
+ margin-left: $form-check-padding-start * -1;
+ }
+}
+
+.form-check-input {
+ width: $form-check-input-width;
+ height: $form-check-input-width;
+ margin-top: ($line-height-base - $form-check-input-width) / 2; // line-height minus check height
+ vertical-align: top;
+ background-color: $form-check-input-bg;
+ background-repeat: no-repeat;
+ background-position: center;
+ background-size: contain;
+ border: $form-check-input-border;
+ appearance: none;
+ color-adjust: exact; // Keep themed appearance for print
+ @include transition($form-check-transition);
+
+ &[type="checkbox"] {
+ @include border-radius($form-check-input-border-radius);
+ }
+
+ &[type="radio"] {
+ // stylelint-disable-next-line property-disallowed-list
+ border-radius: $form-check-radio-border-radius;
+ }
+
+ &:active {
+ filter: $form-check-input-active-filter;
+ }
+
+ &:focus {
+ border-color: $form-check-input-focus-border;
+ outline: 0;
+ box-shadow: $form-check-input-focus-box-shadow;
+ }
+
+ &:checked {
+ background-color: $form-check-input-checked-bg-color;
+ border-color: $form-check-input-checked-border-color;
+
+ &[type="checkbox"] {
+ @if $enable-gradients {
+ background-image: escape-svg($form-check-input-checked-bg-image), var(--#{$variable-prefix}gradient);
+ } @else {
+ background-image: escape-svg($form-check-input-checked-bg-image);
+ }
+ }
+
+ &[type="radio"] {
+ @if $enable-gradients {
+ background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);
+ } @else {
+ background-image: escape-svg($form-check-radio-checked-bg-image);
+ }
+ }
+ }
+
+ &[type="checkbox"]:indeterminate {
+ background-color: $form-check-input-indeterminate-bg-color;
+ border-color: $form-check-input-indeterminate-border-color;
+
+ @if $enable-gradients {
+ background-image: escape-svg($form-check-input-indeterminate-bg-image), var(--#{$variable-prefix}gradient);
+ } @else {
+ background-image: escape-svg($form-check-input-indeterminate-bg-image);
+ }
+ }
+
+ &:disabled {
+ pointer-events: none;
+ filter: none;
+ opacity: $form-check-input-disabled-opacity;
+ }
+
+ // Use disabled attribute in addition of :disabled pseudo-class
+ // See: https://github.com/twbs/bootstrap/issues/28247
+ &[disabled],
+ &:disabled {
+ ~ .form-check-label {
+ opacity: $form-check-label-disabled-opacity;
+ }
+ }
+}
+
+.form-check-label {
+ color: $form-check-label-color;
+ cursor: $form-check-label-cursor;
+}
+
+//
+// Switch
+//
+
+.form-switch {
+ padding-left: $form-switch-padding-start;
+
+ .form-check-input {
+ width: $form-switch-width;
+ margin-left: $form-switch-padding-start * -1;
+ background-image: escape-svg($form-switch-bg-image);
+ background-position: left center;
+ @include border-radius($form-switch-border-radius);
+ @include transition($form-switch-transition);
+
+ &:focus {
+ background-image: escape-svg($form-switch-focus-bg-image);
+ }
+
+ &:checked {
+ background-position: $form-switch-checked-bg-position;
+
+ @if $enable-gradients {
+ background-image: escape-svg($form-switch-checked-bg-image), var(--#{$variable-prefix}gradient);
+ } @else {
+ background-image: escape-svg($form-switch-checked-bg-image);
+ }
+ }
+ }
+}
+
+.form-check-inline {
+ display: inline-block;
+ margin-right: $form-check-inline-margin-end;
+}
+
+.btn-check {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+
+ &[disabled],
+ &:disabled {
+ + .btn {
+ pointer-events: none;
+ filter: none;
+ opacity: $form-check-btn-check-disabled-opacity;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-control.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-control.scss
new file mode 100644
index 0000000..9728b91
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-control.scss
@@ -0,0 +1,219 @@
+//
+// General form controls (plus a few specific high-level interventions)
+//
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: $input-padding-y $input-padding-x;
+ font-family: $input-font-family;
+ @include font-size($input-font-size);
+ font-weight: $input-font-weight;
+ line-height: $input-line-height;
+ color: $input-color;
+ background-color: $input-bg;
+ background-clip: padding-box;
+ border: $input-border-width solid $input-border-color;
+ appearance: none; // Fix appearance for date inputs in Safari
+
+ // Note: This has no effect on
s in some browsers, due to the limited stylability of ``s in CSS.
+ @include border-radius($input-border-radius, 0);
+
+ @include box-shadow($input-box-shadow);
+ @include transition($input-transition);
+
+ &[type="file"] {
+ overflow: hidden; // prevent pseudo element button overlap
+
+ &:not(:disabled):not([readonly]) {
+ cursor: pointer;
+ }
+ }
+
+ // Customize the `:focus` state to imitate native WebKit styles.
+ &:focus {
+ color: $input-focus-color;
+ background-color: $input-focus-bg;
+ border-color: $input-focus-border-color;
+ outline: 0;
+ @if $enable-shadows {
+ @include box-shadow($input-box-shadow, $input-focus-box-shadow);
+ } @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ box-shadow: $input-focus-box-shadow;
+ }
+ }
+
+ // Add some height to date inputs on iOS
+ // https://github.com/twbs/bootstrap/issues/23307
+ // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
+ &::-webkit-date-and-time-value {
+ // Multiply line-height by 1em if it has no unit
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
+ }
+
+ // Placeholder
+ &::placeholder {
+ color: $input-placeholder-color;
+ // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.
+ opacity: 1;
+ }
+
+ // Disabled and read-only inputs
+ //
+ // HTML5 says that controls under a fieldset > legend:first-child won't be
+ // disabled if the fieldset is disabled. Due to implementation difficulty, we
+ // don't honor that edge case; we style them as disabled anyway.
+ &:disabled,
+ &[readonly] {
+ background-color: $input-disabled-bg;
+ border-color: $input-disabled-border-color;
+ // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.
+ opacity: 1;
+ }
+
+ // File input buttons theming
+ &::file-selector-button {
+ padding: $input-padding-y $input-padding-x;
+ margin: (-$input-padding-y) (-$input-padding-x);
+ margin-inline-end: $input-padding-x;
+ color: $form-file-button-color;
+ @include gradient-bg($form-file-button-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: $input-border-width;
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
+ @include transition($btn-transition);
+ }
+
+ &:hover:not(:disabled):not([readonly])::file-selector-button {
+ background-color: $form-file-button-hover-bg;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y $input-padding-x;
+ margin: (-$input-padding-y) (-$input-padding-x);
+ margin-inline-end: $input-padding-x;
+ color: $form-file-button-color;
+ @include gradient-bg($form-file-button-bg);
+ pointer-events: none;
+ border-color: inherit;
+ border-style: solid;
+ border-width: 0;
+ border-inline-end-width: $input-border-width;
+ border-radius: 0; // stylelint-disable-line property-disallowed-list
+ @include transition($btn-transition);
+ }
+
+ &:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {
+ background-color: $form-file-button-hover-bg;
+ }
+}
+
+// Readonly controls as plain text
+//
+// Apply class to a readonly input to make it appear like regular plain
+// text (without any border, background color, focus indicator)
+
+.form-control-plaintext {
+ display: block;
+ width: 100%;
+ padding: $input-padding-y 0;
+ margin-bottom: 0; // match inputs if this class comes on inputs with default margins
+ line-height: $input-line-height;
+ color: $input-plaintext-color;
+ background-color: transparent;
+ border: solid transparent;
+ border-width: $input-border-width 0;
+
+ &.form-control-sm,
+ &.form-control-lg {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// Repeated in `_input_group.scss` to avoid Sass extend issues.
+
+.form-control-sm {
+ min-height: $input-height-sm;
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ @include font-size($input-font-size-sm);
+ @include border-radius($input-border-radius-sm);
+
+ &::file-selector-button {
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+ margin-inline-end: $input-padding-x-sm;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ margin: (-$input-padding-y-sm) (-$input-padding-x-sm);
+ margin-inline-end: $input-padding-x-sm;
+ }
+}
+
+.form-control-lg {
+ min-height: $input-height-lg;
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ @include font-size($input-font-size-lg);
+ @include border-radius($input-border-radius-lg);
+
+ &::file-selector-button {
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+ margin-inline-end: $input-padding-x-lg;
+ }
+
+ &::-webkit-file-upload-button {
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ margin: (-$input-padding-y-lg) (-$input-padding-x-lg);
+ margin-inline-end: $input-padding-x-lg;
+ }
+}
+
+// Make sure textareas don't shrink too much when resized
+// https://github.com/twbs/bootstrap/pull/29124
+// stylelint-disable selector-no-qualifying-type
+textarea {
+ &.form-control {
+ min-height: $input-height;
+ }
+
+ &.form-control-sm {
+ min-height: $input-height-sm;
+ }
+
+ &.form-control-lg {
+ min-height: $input-height-lg;
+ }
+}
+// stylelint-enable selector-no-qualifying-type
+
+.form-control-color {
+ max-width: 3rem;
+ height: auto; // Override fixed browser height
+ padding: $input-padding-y;
+
+ &:not(:disabled):not([readonly]) {
+ cursor: pointer;
+ }
+
+ &::-moz-color-swatch {
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
+ @include border-radius($input-border-radius);
+ }
+
+ &::-webkit-color-swatch {
+ height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
+ @include border-radius($input-border-radius);
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-range.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-range.scss
new file mode 100644
index 0000000..ae1d841
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-range.scss
@@ -0,0 +1,91 @@
+// Range
+//
+// Style range inputs the same across browsers. Vendor-specific rules for pseudo
+// elements cannot be mixed. As such, there are no shared styles for focus or
+// active states on prefixed selectors.
+
+.form-range {
+ width: 100%;
+ height: add($form-range-thumb-height, $form-range-thumb-focus-box-shadow-width * 2);
+ padding: 0; // Need to reset padding
+ background-color: transparent;
+ appearance: none;
+
+ &:focus {
+ outline: 0;
+
+ // Pseudo-elements must be split across multiple rulesets to have an effect.
+ // No box-shadow() mixin for focus accessibility.
+ &::-webkit-slider-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
+ &::-moz-range-thumb { box-shadow: $form-range-thumb-focus-box-shadow; }
+ }
+
+ &::-moz-focus-outer {
+ border: 0;
+ }
+
+ &::-webkit-slider-thumb {
+ width: $form-range-thumb-width;
+ height: $form-range-thumb-height;
+ margin-top: ($form-range-track-height - $form-range-thumb-height) / 2; // Webkit specific
+ @include gradient-bg($form-range-thumb-bg);
+ border: $form-range-thumb-border;
+ @include border-radius($form-range-thumb-border-radius);
+ @include box-shadow($form-range-thumb-box-shadow);
+ @include transition($form-range-thumb-transition);
+ appearance: none;
+
+ &:active {
+ @include gradient-bg($form-range-thumb-active-bg);
+ }
+ }
+
+ &::-webkit-slider-runnable-track {
+ width: $form-range-track-width;
+ height: $form-range-track-height;
+ color: transparent; // Why?
+ cursor: $form-range-track-cursor;
+ background-color: $form-range-track-bg;
+ border-color: transparent;
+ @include border-radius($form-range-track-border-radius);
+ @include box-shadow($form-range-track-box-shadow);
+ }
+
+ &::-moz-range-thumb {
+ width: $form-range-thumb-width;
+ height: $form-range-thumb-height;
+ @include gradient-bg($form-range-thumb-bg);
+ border: $form-range-thumb-border;
+ @include border-radius($form-range-thumb-border-radius);
+ @include box-shadow($form-range-thumb-box-shadow);
+ @include transition($form-range-thumb-transition);
+ appearance: none;
+
+ &:active {
+ @include gradient-bg($form-range-thumb-active-bg);
+ }
+ }
+
+ &::-moz-range-track {
+ width: $form-range-track-width;
+ height: $form-range-track-height;
+ color: transparent;
+ cursor: $form-range-track-cursor;
+ background-color: $form-range-track-bg;
+ border-color: transparent; // Firefox specific?
+ @include border-radius($form-range-track-border-radius);
+ @include box-shadow($form-range-track-box-shadow);
+ }
+
+ &:disabled {
+ pointer-events: none;
+
+ &::-webkit-slider-thumb {
+ background-color: $form-range-thumb-disabled-bg;
+ }
+
+ &::-moz-range-thumb {
+ background-color: $form-range-thumb-disabled-bg;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-select.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-select.scss
new file mode 100644
index 0000000..15d5061
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-select.scss
@@ -0,0 +1,67 @@
+// Select
+//
+// Replaces the browser default select with a custom one, mostly pulled from
+// https://primer.github.io/.
+
+.form-select {
+ display: block;
+ width: 100%;
+ padding: $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x;
+ font-family: $form-select-font-family;
+ @include font-size($form-select-font-size);
+ font-weight: $form-select-font-weight;
+ line-height: $form-select-line-height;
+ color: $form-select-color;
+ background-color: $form-select-bg;
+ background-image: escape-svg($form-select-indicator);
+ background-repeat: no-repeat;
+ background-position: $form-select-bg-position;
+ background-size: $form-select-bg-size;
+ border: $form-select-border-width solid $form-select-border-color;
+ @include border-radius($form-select-border-radius, 0);
+ @include box-shadow($form-select-box-shadow);
+ appearance: none;
+
+ &:focus {
+ border-color: $form-select-focus-border-color;
+ outline: 0;
+ @if $enable-shadows {
+ @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
+ } @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ box-shadow: $form-select-focus-box-shadow;
+ }
+ }
+
+ &[multiple],
+ &[size]:not([size="1"]) {
+ padding-right: $form-select-padding-x;
+ background-image: none;
+ }
+
+ &:disabled {
+ color: $form-select-disabled-color;
+ background-color: $form-select-disabled-bg;
+ border-color: $form-select-disabled-border-color;
+ }
+
+ // Remove outline from select box in FF
+ &:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 $form-select-color;
+ }
+}
+
+.form-select-sm {
+ padding-top: $form-select-padding-y-sm;
+ padding-bottom: $form-select-padding-y-sm;
+ padding-left: $form-select-padding-x-sm;
+ @include font-size($form-select-font-size-sm);
+}
+
+.form-select-lg {
+ padding-top: $form-select-padding-y-lg;
+ padding-bottom: $form-select-padding-y-lg;
+ padding-left: $form-select-padding-x-lg;
+ @include font-size($form-select-font-size-lg);
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-text.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-text.scss
new file mode 100644
index 0000000..f080d1a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_form-text.scss
@@ -0,0 +1,11 @@
+//
+// Form text
+//
+
+.form-text {
+ margin-top: $form-text-margin-top;
+ @include font-size($form-text-font-size);
+ font-style: $form-text-font-style;
+ font-weight: $form-text-font-weight;
+ color: $form-text-color;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_input-group.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_input-group.scss
new file mode 100644
index 0000000..1400529
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_input-group.scss
@@ -0,0 +1,121 @@
+//
+// Base styles
+//
+
+.input-group {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap; // For form validation feedback
+ align-items: stretch;
+ width: 100%;
+
+ > .form-control,
+ > .form-select {
+ position: relative; // For focus state's z-index
+ flex: 1 1 auto;
+ width: 1%;
+ min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size
+ }
+
+ // Bring the "active" form control to the top of surrounding elements
+ > .form-control:focus,
+ > .form-select:focus {
+ z-index: 3;
+ }
+
+ // Ensure buttons are always above inputs for more visually pleasing borders.
+ // This isn't needed for `.input-group-text` since it shares the same border-color
+ // as our inputs.
+ .btn {
+ position: relative;
+ z-index: 2;
+
+ &:focus {
+ z-index: 3;
+ }
+ }
+}
+
+
+// Textual addons
+//
+// Serves as a catch-all element for any text or radio/checkbox input you wish
+// to prepend or append to an input.
+
+.input-group-text {
+ display: flex;
+ align-items: center;
+ padding: $input-group-addon-padding-y $input-group-addon-padding-x;
+ @include font-size($input-font-size); // Match inputs
+ font-weight: $input-group-addon-font-weight;
+ line-height: $input-line-height;
+ color: $input-group-addon-color;
+ text-align: center;
+ white-space: nowrap;
+ background-color: $input-group-addon-bg;
+ border: $input-border-width solid $input-group-addon-border-color;
+ @include border-radius($input-border-radius);
+}
+
+
+// Sizing
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .form-select,
+.input-group-lg > .input-group-text,
+.input-group-lg > .btn {
+ padding: $input-padding-y-lg $input-padding-x-lg;
+ @include font-size($input-font-size-lg);
+ @include border-radius($input-border-radius-lg);
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .form-select,
+.input-group-sm > .input-group-text,
+.input-group-sm > .btn {
+ padding: $input-padding-y-sm $input-padding-x-sm;
+ @include font-size($input-font-size-sm);
+ @include border-radius($input-border-radius-sm);
+}
+
+.input-group-lg > .form-select,
+.input-group-sm > .form-select {
+ padding-right: $form-select-padding-x + $form-select-indicator-padding;
+}
+
+
+// Rounded corners
+//
+// These rulesets must come after the sizing ones to properly override sm and lg
+// border-radius values when extending. They're more specific than we'd like
+// with the `.input-group >` part, but without it, we cannot override the sizing.
+
+// stylelint-disable-next-line no-duplicate-selectors
+.input-group {
+ &:not(.has-validation) {
+ > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),
+ > .dropdown-toggle:nth-last-child(n + 3) {
+ @include border-end-radius(0);
+ }
+ }
+
+ &.has-validation {
+ > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu),
+ > .dropdown-toggle:nth-last-child(n + 4) {
+ @include border-end-radius(0);
+ }
+ }
+
+ $validation-messages: "";
+ @each $state in map-keys($form-validation-states) {
+ $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
+ }
+
+ > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
+ margin-left: -$input-border-width;
+ @include border-start-radius(0);
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_labels.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_labels.scss
new file mode 100644
index 0000000..39ecafc
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_labels.scss
@@ -0,0 +1,36 @@
+//
+// Labels
+//
+
+.form-label {
+ margin-bottom: $form-label-margin-bottom;
+ @include font-size($form-label-font-size);
+ font-style: $form-label-font-style;
+ font-weight: $form-label-font-weight;
+ color: $form-label-color;
+}
+
+// For use with horizontal and inline forms, when you need the label (or legend)
+// text to align with the form controls.
+.col-form-label {
+ padding-top: add($input-padding-y, $input-border-width);
+ padding-bottom: add($input-padding-y, $input-border-width);
+ margin-bottom: 0; // Override the `` default
+ @include font-size(inherit); // Override the `` default
+ font-style: $form-label-font-style;
+ font-weight: $form-label-font-weight;
+ line-height: $input-line-height;
+ color: $form-label-color;
+}
+
+.col-form-label-lg {
+ padding-top: add($input-padding-y-lg, $input-border-width);
+ padding-bottom: add($input-padding-y-lg, $input-border-width);
+ @include font-size($input-font-size-lg);
+}
+
+.col-form-label-sm {
+ padding-top: add($input-padding-y-sm, $input-border-width);
+ padding-bottom: add($input-padding-y-sm, $input-border-width);
+ @include font-size($input-font-size-sm);
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/forms/_validation.scss b/docs/themes/adidoks/sass/bootstrap/scss/forms/_validation.scss
new file mode 100644
index 0000000..c48123a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/forms/_validation.scss
@@ -0,0 +1,12 @@
+// Form validation
+//
+// Provide feedback to users when form field values are valid or invalid. Works
+// primarily for client-side validation via scoped `:invalid` and `:valid`
+// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for
+// server-side validation.
+
+// scss-docs-start form-validation-states-loop
+@each $state, $data in $form-validation-states {
+ @include form-validation-state($state, $data...);
+}
+// scss-docs-end form-validation-states-loop
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_clearfix.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_clearfix.scss
new file mode 100644
index 0000000..e92522a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_clearfix.scss
@@ -0,0 +1,3 @@
+.clearfix {
+ @include clearfix();
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_colored-links.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_colored-links.scss
new file mode 100644
index 0000000..8c167de
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_colored-links.scss
@@ -0,0 +1,12 @@
+@each $color, $value in $theme-colors {
+ .link-#{$color} {
+ color: $value;
+
+ @if $link-shade-percentage != 0 {
+ &:hover,
+ &:focus {
+ color: if(color-contrast($value) == $color-contrast-light, shade-color($value, $link-shade-percentage), tint-color($value, $link-shade-percentage));
+ }
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_position.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_position.scss
new file mode 100644
index 0000000..31851eb
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_position.scss
@@ -0,0 +1,30 @@
+// Shorthand
+
+.fixed-top {
+ position: fixed;
+ top: 0;
+ right: 0;
+ left: 0;
+ z-index: $zindex-fixed;
+}
+
+.fixed-bottom {
+ position: fixed;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: $zindex-fixed;
+}
+
+// Responsive sticky top
+@each $breakpoint in map-keys($grid-breakpoints) {
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ .sticky#{$infix}-top {
+ position: sticky;
+ top: 0;
+ z-index: $zindex-sticky;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_ratio.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_ratio.scss
new file mode 100644
index 0000000..2390ee3
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_ratio.scss
@@ -0,0 +1,26 @@
+// Credit: Nicolas Gallagher and SUIT CSS.
+
+.ratio {
+ position: relative;
+ width: 100%;
+
+ &::before {
+ display: block;
+ padding-top: var(--#{$variable-prefix}aspect-ratio);
+ content: "";
+ }
+
+ > * {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ }
+}
+
+@each $key, $ratio in $aspect-ratios {
+ .ratio-#{$key} {
+ --#{$variable-prefix}aspect-ratio: #{$ratio};
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_stretched-link.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_stretched-link.scss
new file mode 100644
index 0000000..71a1c75
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_stretched-link.scss
@@ -0,0 +1,15 @@
+//
+// Stretched link
+//
+
+.stretched-link {
+ &::#{$stretched-link-pseudo-element} {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: $stretched-link-z-index;
+ content: "";
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_text-truncation.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_text-truncation.scss
new file mode 100644
index 0000000..6421dac
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_text-truncation.scss
@@ -0,0 +1,7 @@
+//
+// Text truncation
+//
+
+.text-truncate {
+ @include text-truncate();
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/helpers/_visually-hidden.scss b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_visually-hidden.scss
new file mode 100644
index 0000000..4760ff0
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/helpers/_visually-hidden.scss
@@ -0,0 +1,8 @@
+//
+// Visually hidden
+//
+
+.visually-hidden,
+.visually-hidden-focusable:not(:focus):not(:focus-within) {
+ @include visually-hidden();
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_alert.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_alert.scss
new file mode 100644
index 0000000..f3eb595
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_alert.scss
@@ -0,0 +1,11 @@
+// scss-docs-start alert-variant-mixin
+@mixin alert-variant($background, $border, $color) {
+ color: $color;
+ @include gradient-bg($background);
+ border-color: $border;
+
+ .alert-link {
+ color: shade-color($color, 20%);
+ }
+}
+// scss-docs-end alert-variant-mixin
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_border-radius.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_border-radius.scss
new file mode 100644
index 0000000..616decb
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_border-radius.scss
@@ -0,0 +1,78 @@
+// stylelint-disable property-disallowed-list
+// Single side border-radius
+
+// Helper function to replace negative values with 0
+@function valid-radius($radius) {
+ $return: ();
+ @each $value in $radius {
+ @if type-of($value) == number {
+ $return: append($return, max($value, 0));
+ } @else {
+ $return: append($return, $value);
+ }
+ }
+ @return $return;
+}
+
+// scss-docs-start border-radius-mixins
+@mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
+ @if $enable-rounded {
+ border-radius: valid-radius($radius);
+ }
+ @else if $fallback-border-radius != false {
+ border-radius: $fallback-border-radius;
+ }
+}
+
+@mixin border-top-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ border-top-right-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-end-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-top-right-radius: valid-radius($radius);
+ border-bottom-right-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-bottom-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-bottom-right-radius: valid-radius($radius);
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-start-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-top-start-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-top-left-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-top-end-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-top-right-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-bottom-end-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-bottom-right-radius: valid-radius($radius);
+ }
+}
+
+@mixin border-bottom-start-radius($radius: $border-radius) {
+ @if $enable-rounded {
+ border-bottom-left-radius: valid-radius($radius);
+ }
+}
+// scss-docs-end border-radius-mixins
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_box-shadow.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_box-shadow.scss
new file mode 100644
index 0000000..4172541
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_box-shadow.scss
@@ -0,0 +1,18 @@
+@mixin box-shadow($shadow...) {
+ @if $enable-shadows {
+ $result: ();
+
+ @each $value in $shadow {
+ @if $value != null {
+ $result: append($result, $value, "comma");
+ }
+ @if $value == none and length($shadow) > 1 {
+ @warn "The keyword 'none' must be used as a single argument.";
+ }
+ }
+
+ @if (length($result) > 0) {
+ box-shadow: $result;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_breakpoints.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_breakpoints.scss
new file mode 100644
index 0000000..cdc8034
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_breakpoints.scss
@@ -0,0 +1,127 @@
+// Breakpoint viewport sizes and media queries.
+//
+// Breakpoints are defined as a map of (name: minimum width), order from small to large:
+//
+// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)
+//
+// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.
+
+// Name of the next breakpoint, or null for the last breakpoint.
+//
+// >> breakpoint-next(sm)
+// md
+// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+// md
+// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))
+// md
+@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {
+ $n: index($breakpoint-names, $name);
+ @if not $n {
+ @error "breakpoint `#{$name}` not found in `#{$breakpoints}`";
+ }
+ @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);
+}
+
+// Minimum breakpoint width. Null for the smallest (first) breakpoint.
+//
+// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+// 576px
+@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {
+ $min: map-get($breakpoints, $name);
+ @return if($min != 0, $min, null);
+}
+
+// Maximum breakpoint width.
+// The maximum value is reduced by 0.02px to work around the limitations of
+// `min-` and `max-` prefixes and viewports with fractional widths.
+// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max
+// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.
+// See https://bugs.webkit.org/show_bug.cgi?id=178261
+//
+// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+// 767.98px
+@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {
+ $max: map-get($breakpoints, $name);
+ @return if($max and $max > 0, $max - .02, null);
+}
+
+// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.
+// Useful for making responsive utilities.
+//
+// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+// "" (Returns a blank string)
+// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))
+// "-sm"
+@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {
+ @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}");
+}
+
+// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.
+// Makes the @content apply to the given breakpoint and wider.
+@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {
+ $min: breakpoint-min($name, $breakpoints);
+ @if $min {
+ @media (min-width: $min) {
+ @content;
+ }
+ } @else {
+ @content;
+ }
+}
+
+// Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+// Makes the @content apply to the given breakpoint and narrower.
+@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
+ $max: breakpoint-max($name, $breakpoints);
+ @if $max {
+ @media (max-width: $max) {
+ @content;
+ }
+ } @else {
+ @content;
+ }
+}
+
+// Media that spans multiple breakpoint widths.
+// Makes the @content apply between the min and max breakpoints
+@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {
+ $min: breakpoint-min($lower, $breakpoints);
+ $max: breakpoint-max($upper, $breakpoints);
+
+ @if $min != null and $max != null {
+ @media (min-width: $min) and (max-width: $max) {
+ @content;
+ }
+ } @else if $max == null {
+ @include media-breakpoint-up($lower, $breakpoints) {
+ @content;
+ }
+ } @else if $min == null {
+ @include media-breakpoint-down($upper, $breakpoints) {
+ @content;
+ }
+ }
+}
+
+// Media between the breakpoint's minimum and maximum widths.
+// No minimum for the smallest breakpoint, and no maximum for the largest one.
+// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {
+ $min: breakpoint-min($name, $breakpoints);
+ $next: breakpoint-next($name, $breakpoints);
+ $max: breakpoint-max($next);
+
+ @if $min != null and $max != null {
+ @media (min-width: $min) and (max-width: $max) {
+ @content;
+ }
+ } @else if $max == null {
+ @include media-breakpoint-up($name, $breakpoints) {
+ @content;
+ }
+ } @else if $min == null {
+ @include media-breakpoint-down($next, $breakpoints) {
+ @content;
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_buttons.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_buttons.scss
new file mode 100644
index 0000000..c06fa4a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_buttons.scss
@@ -0,0 +1,133 @@
+// Button variants
+//
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+
+// scss-docs-start btn-variant-mixin
+@mixin button-variant(
+ $background,
+ $border,
+ $color: color-contrast($background),
+ $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
+ $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
+ $hover-color: color-contrast($hover-background),
+ $active-background: if($color == $color-contrast-light, shade-color($background,$btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
+ $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
+ $active-color: color-contrast($active-background),
+ $disabled-background: $background,
+ $disabled-border: $border,
+ $disabled-color: color-contrast($disabled-background)
+) {
+ color: $color;
+ @include gradient-bg($background);
+ border-color: $border;
+ @include box-shadow($btn-box-shadow);
+
+ &:hover {
+ color: $hover-color;
+ @include gradient-bg($hover-background);
+ border-color: $hover-border;
+ }
+
+ .btn-check:focus + &,
+ &:focus {
+ color: $hover-color;
+ @include gradient-bg($hover-background);
+ border-color: $hover-border;
+ @if $enable-shadows {
+ @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));
+ } @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);
+ }
+ }
+
+ .btn-check:checked + &,
+ .btn-check:active + &,
+ &:active,
+ &.active,
+ .show > &.dropdown-toggle {
+ color: $active-color;
+ background-color: $active-background;
+ // Remove CSS gradients if they're enabled
+ background-image: if($enable-gradients, none, null);
+ border-color: $active-border;
+
+ &:focus {
+ @if $enable-shadows {
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5));
+ } @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ box-shadow: 0 0 0 $btn-focus-width rgba(mix($color, $border, 15%), .5);
+ }
+ }
+ }
+
+ &:disabled,
+ &.disabled {
+ color: $disabled-color;
+ background-color: $disabled-background;
+ // Remove CSS gradients if they're enabled
+ background-image: if($enable-gradients, none, null);
+ border-color: $disabled-border;
+ }
+}
+// scss-docs-end btn-variant-mixin
+
+// scss-docs-start btn-outline-variant-mixin
+@mixin button-outline-variant(
+ $color,
+ $color-hover: color-contrast($color),
+ $active-background: $color,
+ $active-border: $color,
+ $active-color: color-contrast($active-background)
+) {
+ color: $color;
+ border-color: $color;
+
+ &:hover {
+ color: $color-hover;
+ background-color: $active-background;
+ border-color: $active-border;
+ }
+
+ .btn-check:focus + &,
+ &:focus {
+ box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+ }
+
+ .btn-check:checked + &,
+ .btn-check:active + &,
+ &:active,
+ &.active,
+ &.dropdown-toggle.show {
+ color: $active-color;
+ background-color: $active-background;
+ border-color: $active-border;
+
+ &:focus {
+ @if $enable-shadows {
+ @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5));
+ } @else {
+ // Avoid using mixin so we can pass custom focus shadow properly
+ box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);
+ }
+ }
+ }
+
+ &:disabled,
+ &.disabled {
+ color: $color;
+ background-color: transparent;
+ }
+}
+// scss-docs-end btn-outline-variant-mixin
+
+// scss-docs-start btn-size-mixin
+@mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
+ padding: $padding-y $padding-x;
+ @include font-size($font-size);
+ // Manually declare to provide an override to the browser default
+ @include border-radius($border-radius, 0);
+}
+// scss-docs-end btn-size-mixin
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_caret.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_caret.scss
new file mode 100644
index 0000000..4b0f036
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_caret.scss
@@ -0,0 +1,64 @@
+// scss-docs-start caret-mixins
+@mixin caret-down {
+ border-top: $caret-width solid;
+ border-right: $caret-width solid transparent;
+ border-bottom: 0;
+ border-left: $caret-width solid transparent;
+}
+
+@mixin caret-up {
+ border-top: 0;
+ border-right: $caret-width solid transparent;
+ border-bottom: $caret-width solid;
+ border-left: $caret-width solid transparent;
+}
+
+@mixin caret-end {
+ border-top: $caret-width solid transparent;
+ border-right: 0;
+ border-bottom: $caret-width solid transparent;
+ border-left: $caret-width solid;
+}
+
+@mixin caret-start {
+ border-top: $caret-width solid transparent;
+ border-right: $caret-width solid;
+ border-bottom: $caret-width solid transparent;
+}
+
+@mixin caret($direction: down) {
+ @if $enable-caret {
+ &::after {
+ display: inline-block;
+ margin-left: $caret-spacing;
+ vertical-align: $caret-vertical-align;
+ content: "";
+ @if $direction == down {
+ @include caret-down();
+ } @else if $direction == up {
+ @include caret-up();
+ } @else if $direction == end {
+ @include caret-end();
+ }
+ }
+
+ @if $direction == start {
+ &::after {
+ display: none;
+ }
+
+ &::before {
+ display: inline-block;
+ margin-right: $caret-spacing;
+ vertical-align: $caret-vertical-align;
+ content: "";
+ @include caret-start();
+ }
+ }
+
+ &:empty::after {
+ margin-left: 0;
+ }
+ }
+}
+// scss-docs-end caret-mixins
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_clearfix.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_clearfix.scss
new file mode 100644
index 0000000..ffc62bb
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_clearfix.scss
@@ -0,0 +1,9 @@
+// scss-docs-start clearfix
+@mixin clearfix() {
+ &::after {
+ display: block;
+ clear: both;
+ content: "";
+ }
+}
+// scss-docs-end clearfix
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_container.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_container.scss
new file mode 100644
index 0000000..ee6044d
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_container.scss
@@ -0,0 +1,9 @@
+// Container mixins
+
+@mixin make-container($gutter: $container-padding-x) {
+ width: 100%;
+ padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});
+ padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});
+ margin-right: auto;
+ margin-left: auto;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_deprecate.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_deprecate.scss
new file mode 100644
index 0000000..df070bc
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_deprecate.scss
@@ -0,0 +1,10 @@
+// Deprecate mixin
+//
+// This mixin can be used to deprecate mixins or functions.
+// `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to
+// some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap)
+@mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) {
+ @if ($enable-deprecation-messages != false and $ignore-warning != true) {
+ @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}.";
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_forms.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_forms.scss
new file mode 100644
index 0000000..a1e0849
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_forms.scss
@@ -0,0 +1,134 @@
+// This mixin uses an `if()` technique to be compatible with Dart Sass
+// See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details
+
+// scss-docs-start form-validation-mixins
+@mixin form-validation-state-selector($state) {
+ @if ($state == "valid" or $state == "invalid") {
+ .was-validated #{if(&, "&", "")}:#{$state},
+ #{if(&, "&", "")}.is-#{$state} {
+ @content;
+ }
+ } @else {
+ #{if(&, "&", "")}.is-#{$state} {
+ @content;
+ }
+ }
+}
+
+@mixin form-validation-state(
+ $state,
+ $color,
+ $icon,
+ $tooltip-color: color-contrast($color),
+ $tooltip-bg-color: rgba($color, $form-feedback-tooltip-opacity),
+ $focus-box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($color, $input-btn-focus-color-opacity)
+) {
+ .#{$state}-feedback {
+ display: none;
+ width: 100%;
+ margin-top: $form-feedback-margin-top;
+ @include font-size($form-feedback-font-size);
+ font-style: $form-feedback-font-style;
+ color: $color;
+ }
+
+ .#{$state}-tooltip {
+ position: absolute;
+ top: 100%;
+ z-index: 5;
+ display: none;
+ max-width: 100%; // Contain to parent when possible
+ padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x;
+ margin-top: .1rem;
+ @include font-size($form-feedback-tooltip-font-size);
+ line-height: $form-feedback-tooltip-line-height;
+ color: $tooltip-color;
+ background-color: $tooltip-bg-color;
+ @include border-radius($form-feedback-tooltip-border-radius);
+ }
+
+ @include form-validation-state-selector($state) {
+ ~ .#{$state}-feedback,
+ ~ .#{$state}-tooltip {
+ display: block;
+ }
+ }
+
+ .form-control {
+ @include form-validation-state-selector($state) {
+ border-color: $color;
+
+ @if $enable-validation-icons {
+ padding-right: $input-height-inner;
+ background-image: escape-svg($icon);
+ background-repeat: no-repeat;
+ background-position: right $input-height-inner-quarter center;
+ background-size: $input-height-inner-half $input-height-inner-half;
+ }
+
+ &:focus {
+ border-color: $color;
+ box-shadow: $focus-box-shadow;
+ }
+ }
+ }
+
+ // stylelint-disable-next-line selector-no-qualifying-type
+ textarea.form-control {
+ @include form-validation-state-selector($state) {
+ @if $enable-validation-icons {
+ padding-right: $input-height-inner;
+ background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
+ }
+ }
+ }
+
+ .form-select {
+ @include form-validation-state-selector($state) {
+ border-color: $color;
+
+ @if $enable-validation-icons {
+ padding-right: $form-select-feedback-icon-padding-end;
+ background-image: escape-svg($form-select-indicator), escape-svg($icon);
+ background-position: $form-select-bg-position, $form-select-feedback-icon-position;
+ background-size: $form-select-bg-size, $form-select-feedback-icon-size;
+ }
+
+ &:focus {
+ border-color: $color;
+ box-shadow: $focus-box-shadow;
+ }
+ }
+ }
+
+ .form-check-input {
+ @include form-validation-state-selector($state) {
+ border-color: $color;
+
+ &:checked {
+ background-color: $color;
+ }
+
+ &:focus {
+ box-shadow: $focus-box-shadow;
+ }
+
+ ~ .form-check-label {
+ color: $color;
+ }
+ }
+ }
+ .form-check-inline .form-check-input {
+ ~ .#{$state}-feedback {
+ margin-left: .5em;
+ }
+ }
+
+ .input-group .form-control,
+ .input-group .form-select {
+ @include form-validation-state-selector($state) {
+ z-index: 3;
+ }
+ }
+}
+// scss-docs-end form-validation-mixins
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_gradients.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_gradients.scss
new file mode 100644
index 0000000..44167d1
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_gradients.scss
@@ -0,0 +1,47 @@
+// Gradients
+
+// scss-docs-start gradient-bg-mixin
+@mixin gradient-bg($color: null) {
+ background-color: $color;
+
+ @if $enable-gradients {
+ background-image: var(--#{$variable-prefix}gradient);
+ }
+}
+// scss-docs-end gradient-bg-mixin
+
+// scss-docs-start gradient-mixins
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
+}
+
+@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
+ background-image: linear-gradient($deg, $start-color, $end-color);
+}
+
+@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+}
+
+@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
+}
+
+@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
+ background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
+}
+// scss-docs-end gradient-mixins
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_grid.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_grid.scss
new file mode 100644
index 0000000..92bb88a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_grid.scss
@@ -0,0 +1,120 @@
+/// Grid system
+//
+// Generate semantic grid columns with these mixins.
+
+@mixin make-row($gutter: $grid-gutter-width) {
+ --#{$variable-prefix}gutter-x: #{$gutter};
+ --#{$variable-prefix}gutter-y: 0;
+ display: flex;
+ flex-wrap: wrap;
+ margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list
+ margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list
+ margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list
+}
+
+@mixin make-col-ready($gutter: $grid-gutter-width) {
+ // Add box sizing if only the grid is loaded
+ box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);
+ // Prevent columns from becoming too narrow when at smaller grid tiers by
+ // always setting `width: 100%;`. This works because we set the width
+ // later on to override this initial width.
+ flex-shrink: 0;
+ width: 100%;
+ max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid
+ padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list
+ padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list
+ margin-top: var(--#{$variable-prefix}gutter-y);
+}
+
+@mixin make-col($size, $columns: $grid-columns) {
+ flex: 0 0 auto;
+ width: percentage($size / $columns);
+}
+
+@mixin make-col-auto() {
+ flex: 0 0 auto;
+ width: auto;
+}
+
+@mixin make-col-offset($size, $columns: $grid-columns) {
+ $num: $size / $columns;
+ margin-left: if($num == 0, 0, percentage($num));
+}
+
+// Row columns
+//
+// Specify on a parent element(e.g., .row) to force immediate children into NN
+// numberof columns. Supports wrapping to new lines, but does not do a Masonry
+// style grid.
+@mixin row-cols($count) {
+ > * {
+ flex: 0 0 auto;
+ width: 100% / $count;
+ }
+}
+
+// Framework grid generation
+//
+// Used only by Bootstrap to generate the correct number of grid classes given
+// any value of `$grid-columns`.
+
+@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {
+ @each $breakpoint in map-keys($breakpoints) {
+ $infix: breakpoint-infix($breakpoint, $breakpoints);
+
+ @include media-breakpoint-up($breakpoint, $breakpoints) {
+ // Provide basic `.col-{bp}` classes for equal-width flexbox columns
+ .col#{$infix} {
+ flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
+ }
+
+ .row-cols#{$infix}-auto > * {
+ @include make-col-auto();
+ }
+
+ @if $grid-row-columns > 0 {
+ @for $i from 1 through $grid-row-columns {
+ .row-cols#{$infix}-#{$i} {
+ @include row-cols($i);
+ }
+ }
+ }
+
+ .col#{$infix}-auto {
+ @include make-col-auto();
+ }
+
+ @if $columns > 0 {
+ @for $i from 1 through $columns {
+ .col#{$infix}-#{$i} {
+ @include make-col($i, $columns);
+ }
+ }
+
+ // `$columns - 1` because offsetting by the width of an entire row isn't possible
+ @for $i from 0 through ($columns - 1) {
+ @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
+ .offset#{$infix}-#{$i} {
+ @include make-col-offset($i, $columns);
+ }
+ }
+ }
+ }
+
+ // Gutters
+ //
+ // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.
+ @each $key, $value in $gutters {
+ .g#{$infix}-#{$key},
+ .gx#{$infix}-#{$key} {
+ --#{$variable-prefix}gutter-x: #{$value};
+ }
+
+ .g#{$infix}-#{$key},
+ .gy#{$infix}-#{$key} {
+ --#{$variable-prefix}gutter-y: #{$value};
+ }
+ }
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_image.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_image.scss
new file mode 100644
index 0000000..e1df779
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_image.scss
@@ -0,0 +1,16 @@
+// Image Mixins
+// - Responsive image
+// - Retina image
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-fluid {
+ // Part 1: Set a maximum relative to the parent
+ max-width: 100%;
+ // Part 2: Override the height to auto, otherwise images will be stretched
+ // when setting a width and height attribute on the img element.
+ height: auto;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_list-group.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_list-group.scss
new file mode 100644
index 0000000..e55415f
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_list-group.scss
@@ -0,0 +1,24 @@
+// List Groups
+
+// scss-docs-start list-group-mixin
+@mixin list-group-item-variant($state, $background, $color) {
+ .list-group-item-#{$state} {
+ color: $color;
+ background-color: $background;
+
+ &.list-group-item-action {
+ &:hover,
+ &:focus {
+ color: $color;
+ background-color: shade-color($background, 10%);
+ }
+
+ &.active {
+ color: $white;
+ background-color: $color;
+ border-color: $color;
+ }
+ }
+ }
+}
+// scss-docs-end list-group-mixin
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_lists.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_lists.scss
new file mode 100644
index 0000000..2518562
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_lists.scss
@@ -0,0 +1,7 @@
+// Lists
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+@mixin list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_pagination.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_pagination.scss
new file mode 100644
index 0000000..3101b38
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_pagination.scss
@@ -0,0 +1,31 @@
+// Pagination
+
+// scss-docs-start pagination-mixin
+@mixin pagination-size($padding-y, $padding-x, $font-size, $border-radius) {
+ .page-link {
+ padding: $padding-y $padding-x;
+ @include font-size($font-size);
+ }
+
+ .page-item {
+ @if $pagination-margin-start == (-$pagination-border-width) {
+ &:first-child {
+ .page-link {
+ @include border-start-radius($border-radius);
+ }
+ }
+
+ &:last-child {
+ .page-link {
+ @include border-end-radius($border-radius);
+ }
+ }
+ } @else {
+ //Add border-radius to all pageLinks in case they have left margin
+ .page-link {
+ @include border-radius($border-radius);
+ }
+ }
+ }
+}
+// scss-docs-end pagination-mixin
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_reset-text.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_reset-text.scss
new file mode 100644
index 0000000..354f564
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_reset-text.scss
@@ -0,0 +1,17 @@
+@mixin reset-text {
+ font-family: $font-family-base;
+ // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.
+ font-style: normal;
+ font-weight: $font-weight-normal;
+ line-height: $line-height-base;
+ text-align: left; // Fallback for where `start` is not supported
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ white-space: normal;
+ line-break: auto;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_resize.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_resize.scss
new file mode 100644
index 0000000..66f233a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_resize.scss
@@ -0,0 +1,6 @@
+// Resize anything
+
+@mixin resizable($direction) {
+ overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
+ resize: $direction; // Options: horizontal, vertical, both
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_table-variants.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_table-variants.scss
new file mode 100644
index 0000000..9fd0fb0
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_table-variants.scss
@@ -0,0 +1,21 @@
+// scss-docs-start table-variant
+@mixin table-variant($state, $background) {
+ .table-#{$state} {
+ $color: color-contrast(opaque($body-bg, $background));
+ $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
+ $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
+ $active-bg: mix($color, $background, percentage($table-active-bg-factor));
+
+ --#{$variable-prefix}table-bg: #{$background};
+ --#{$variable-prefix}table-striped-bg: #{$striped-bg};
+ --#{$variable-prefix}table-striped-color: #{color-contrast($striped-bg)};
+ --#{$variable-prefix}table-active-bg: #{$active-bg};
+ --#{$variable-prefix}table-active-color: #{color-contrast($active-bg)};
+ --#{$variable-prefix}table-hover-bg: #{$hover-bg};
+ --#{$variable-prefix}table-hover-color: #{color-contrast($hover-bg)};
+
+ color: $color;
+ border-color: mix($color, $background, percentage($table-border-factor));
+ }
+}
+// scss-docs-end table-variant
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_text-truncate.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_text-truncate.scss
new file mode 100644
index 0000000..3504bb1
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_text-truncate.scss
@@ -0,0 +1,8 @@
+// Text truncate
+// Requires inline-block or block for proper styling
+
+@mixin text-truncate() {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_transition.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_transition.scss
new file mode 100644
index 0000000..d437f6d
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_transition.scss
@@ -0,0 +1,26 @@
+// stylelint-disable property-disallowed-list
+@mixin transition($transition...) {
+ @if length($transition) == 0 {
+ $transition: $transition-base;
+ }
+
+ @if length($transition) > 1 {
+ @each $value in $transition {
+ @if $value == null or $value == none {
+ @warn "The keyword 'none' or 'null' must be used as a single argument.";
+ }
+ }
+ }
+
+ @if $enable-transitions {
+ @if nth($transition, 1) != null {
+ transition: $transition;
+ }
+
+ @if $enable-reduced-motion and nth($transition, 1) != null and nth($transition, 1) != none {
+ @media (prefers-reduced-motion: reduce) {
+ transition: none;
+ }
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_utilities.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_utilities.scss
new file mode 100644
index 0000000..4d2370a
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_utilities.scss
@@ -0,0 +1,68 @@
+// Utility generator
+// Used to generate utilities & print utilities
+@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {
+ $values: map-get($utility, values);
+
+ // If the values are a list or string, convert it into a map
+ @if type-of($values) == "string" or type-of(nth($values, 1)) != "list" {
+ $values: zip($values, $values);
+ }
+
+ @each $key, $value in $values {
+ $properties: map-get($utility, property);
+
+ // Multiple properties are possible, for example with vertical or horizontal margins or paddings
+ @if type-of($properties) == "string" {
+ $properties: append((), $properties);
+ }
+
+ // Use custom class if present
+ $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));
+ $property-class: if($property-class == null, "", $property-class);
+
+ // State params to generate pseudo-classes
+ $state: if(map-has-key($utility, state), map-get($utility, state), ());
+
+ $infix: if($property-class == "" and str-slice($infix, 1, 1) == "-", str-slice($infix, 2), $infix);
+
+ // Don't prefix if value key is null (eg. with shadow class)
+ $property-class-modifier: if($key, if($property-class == "" and $infix == "", "", "-") + $key, "");
+
+ @if map-get($utility, rfs) {
+ // Inside the media query
+ @if $is-rfs-media-query {
+ $val: rfs-value($value);
+
+ // Do not render anything if fluid and non fluid values are the same
+ $value: if($val == rfs-fluid-value($value), null, $val);
+ }
+ @else {
+ $value: rfs-fluid-value($value);
+ }
+ }
+
+ $is-rtl: map-get($utility, rtl);
+
+ @if $value != null {
+ @if $is-rtl == false {
+ /* rtl:begin:remove */
+ }
+ .#{$property-class + $infix + $property-class-modifier} {
+ @each $property in $properties {
+ #{$property}: $value if($enable-important-utilities, !important, null);
+ }
+ }
+
+ @each $pseudo in $state {
+ .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {
+ @each $property in $properties {
+ #{$property}: $value if($enable-important-utilities, !important, null);
+ }
+ }
+ }
+ @if $is-rtl == false {
+ /* rtl:end:remove */
+ }
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/mixins/_visually-hidden.scss b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_visually-hidden.scss
new file mode 100644
index 0000000..ed7bc9c
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/mixins/_visually-hidden.scss
@@ -0,0 +1,29 @@
+// stylelint-disable declaration-no-important
+
+// Hide content visually while keeping it accessible to assistive technologies
+//
+// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/
+// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/
+
+@mixin visually-hidden() {
+ position: absolute !important;
+ width: 1px !important;
+ height: 1px !important;
+ padding: 0 !important;
+ margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686
+ overflow: hidden !important;
+ clip: rect(0, 0, 0, 0) !important;
+ white-space: nowrap !important;
+ border: 0 !important;
+}
+
+// Use to only display content when it's focused, or one of its child elements is focused
+// (i.e. when focus is within the element/container that the class was applied to)
+//
+// Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
+
+@mixin visually-hidden-focusable() {
+ &:not(:focus):not(:focus-within) {
+ @include visually-hidden();
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/utilities/_api.scss b/docs/themes/adidoks/sass/bootstrap/scss/utilities/_api.scss
new file mode 100644
index 0000000..62e1d39
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/utilities/_api.scss
@@ -0,0 +1,47 @@
+// Loop over each breakpoint
+@each $breakpoint in map-keys($grid-breakpoints) {
+
+ // Generate media query if needed
+ @include media-breakpoint-up($breakpoint) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ // Loop over each utility property
+ @each $key, $utility in $utilities {
+ // The utility can be disabled with `false`, thus check if the utility is a map first
+ // Only proceed if responsive media queries are enabled or if it's the base media query
+ @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
+ @include generate-utility($utility, $infix);
+ }
+ }
+ }
+}
+
+// RFS rescaling
+@media (min-width: $rfs-mq-value) {
+ @each $breakpoint in map-keys($grid-breakpoints) {
+ $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
+
+ @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
+ // Loop over each utility property
+ @each $key, $utility in $utilities {
+ // The utility can be disabled with `false`, thus check if the utility is a map first
+ // Only proceed if responsive media queries are enabled or if it's the base media query
+ @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
+ @include generate-utility($utility, $infix, true);
+ }
+ }
+ }
+ }
+}
+
+
+// Print utilities
+@media print {
+ @each $key, $utility in $utilities {
+ // The utility can be disabled with `false`, thus check if the utility is a map first
+ // Then check if the utility needs print styles
+ @if type-of($utility) == "map" and map-get($utility, print) == true {
+ @include generate-utility($utility, "-print");
+ }
+ }
+}
diff --git a/docs/themes/adidoks/sass/bootstrap/scss/vendor/_rfs.scss b/docs/themes/adidoks/sass/bootstrap/scss/vendor/_rfs.scss
new file mode 100644
index 0000000..798753e
--- /dev/null
+++ b/docs/themes/adidoks/sass/bootstrap/scss/vendor/_rfs.scss
@@ -0,0 +1,312 @@
+// stylelint-disable property-blacklist, scss/dollar-variable-default
+
+// SCSS RFS mixin
+//
+// Automated responsive values for font sizes, paddings, margins and much more
+//
+// Licensed under MIT (https://github.com/twbs/rfs/blob/master/LICENSE)
+
+// Configuration
+
+// Base value
+$rfs-base-value: 1.25rem !default;
+$rfs-unit: rem !default;
+
+@if $rfs-unit != rem and $rfs-unit != px {
+ @error "`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.";
+}
+
+// Breakpoint at where values start decreasing if screen width is smaller
+$rfs-breakpoint: 1200px !default;
+$rfs-breakpoint-unit: px !default;
+
+@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {
+ @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.";
+}
+
+// Resize values based on screen height and width
+$rfs-two-dimensional: false !default;
+
+// Factor of decrease
+$rfs-factor: 10 !default;
+
+@if type-of($rfs-factor) != number or $rfs-factor <= 1 {
+ @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.";
+}
+
+// Mode. Possibilities: "min-media-query", "max-media-query"
+$rfs-mode: min-media-query !default;
+
+// Generate enable or disable classes. Possibilities: false, "enable" or "disable"
+$rfs-class: false !default;
+
+// 1 rem = $rfs-rem-value px
+$rfs-rem-value: 16 !default;
+
+// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14
+$rfs-safari-iframe-resize-bug-fix: false !default;
+
+// Disable RFS by setting $enable-rfs to false
+$enable-rfs: true !default;
+
+// Cache $rfs-base-value unit
+$rfs-base-value-unit: unit($rfs-base-value);
+
+// Remove px-unit from $rfs-base-value for calculations
+@if $rfs-base-value-unit == px {
+ $rfs-base-value: $rfs-base-value / ($rfs-base-value * 0 + 1);
+}
+@else if $rfs-base-value-unit == rem {
+ $rfs-base-value: $rfs-base-value / ($rfs-base-value * 0 + 1 / $rfs-rem-value);
+}
+
+// Cache $rfs-breakpoint unit to prevent multiple calls
+$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);
+
+// Remove unit from $rfs-breakpoint for calculations
+@if $rfs-breakpoint-unit-cache == px {
+ $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1);
+}
+@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == "em" {
+ $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value);
+}
+
+// Calculate the media query value
+$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit});
+$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);
+$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);
+
+// Internal mixin used to determine which media query needs to be used
+@mixin _rfs-media-query {
+ @if $rfs-two-dimensional {
+ @if $rfs-mode == max-media-query {
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+ @content;
+ }
+ }
+ @else {
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {
+ @content;
+ }
+ }
+ }
+ @else {
+ @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {
+ @content;
+ }
+ }
+}
+
+// Internal mixin that adds disable classes to the selector if needed.
+@mixin _rfs-rule {
+ @if $rfs-class == disable and $rfs-mode == max-media-query {
+ // Adding an extra class increases specificity, which prevents the media query to override the property
+ &,
+ .disable-rfs &,
+ &.disable-rfs {
+ @content;
+ }
+ }
+ @else if $rfs-class == enable and $rfs-mode == min-media-query {
+ .enable-rfs &,
+ &.enable-rfs {
+ @content;
+ }
+ }
+ @else {
+ @content;
+ }
+}
+
+// Internal mixin that adds enable classes to the selector if needed.
+@mixin _rfs-media-query-rule {
+
+ @if $rfs-class == enable {
+ @if $rfs-mode == min-media-query {
+ @content;
+ }
+
+ @include _rfs-media-query {
+ .enable-rfs &,
+ &.enable-rfs {
+ @content;
+ }
+ }
+ }
+ @else {
+ @if $rfs-class == disable and $rfs-mode == min-media-query {
+ .disable-rfs &,
+ &.disable-rfs {
+ @content;
+ }
+ }
+ @include _rfs-media-query {
+ @content;
+ }
+ }
+}
+
+// Helper function to get the formatted non-responsive value
+@function rfs-value($values) {
+ // Convert to list
+ $values: if(type-of($values) != list, ($values,), $values);
+
+ $val: '';
+
+ // Loop over each value and calculate value
+ @each $value in $values {
+ @if $value == 0 {
+ $val: $val + ' 0';
+ }
+ @else {
+ // Cache $value unit
+ $unit: if(type-of($value) == "number", unit($value), false);
+
+ @if $unit == px {
+ // Convert to rem if needed
+ $val: $val + ' ' + if($rfs-unit == rem, #{$value / ($value * 0 + $rfs-rem-value)}rem, $value);
+ }
+ @else if $unit == rem {
+ // Convert to px if needed
+ $val: $val + ' ' + if($rfs-unit == px, #{$value / ($value * 0 + 1) * $rfs-rem-value}px, $value);
+ }
+ @else {
+ // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+ $val: $val + ' ' + $value;
+ }
+ }
+ }
+
+ // Remove first space
+ @return unquote(str-slice($val, 2));
+}
+
+// Helper function to get the responsive value calculated by RFS
+@function rfs-fluid-value($values) {
+ // Convert to list
+ $values: if(type-of($values) != list, ($values,), $values);
+
+ $val: '';
+
+ // Loop over each value and calculate value
+ @each $value in $values {
+ @if $value == 0 {
+ $val: $val + ' 0';
+ }
+
+ @else {
+ // Cache $value unit
+ $unit: if(type-of($value) == "number", unit($value), false);
+
+ // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value
+ @if not $unit or $unit != px and $unit != rem {
+ $val: $val + ' ' + $value;
+ }
+
+ @else {
+ // Remove unit from $value for calculations
+ $value: $value / ($value * 0 + if($unit == px, 1, 1 / $rfs-rem-value));
+
+ // Only add the media query if the value is greater than the minimum value
+ @if abs($value) <= $rfs-base-value or not $enable-rfs {
+ $val: $val + ' ' + if($rfs-unit == rem, #{$value / $rfs-rem-value}rem, #{$value}px);
+ }
+ @else {
+ // Calculate the minimum value
+ $value-min: $rfs-base-value + (abs($value) - $rfs-base-value) / $rfs-factor;
+
+ // Calculate difference between $value and the minimum value
+ $value-diff: abs($value) - $value-min;
+
+ // Base value formatting
+ $min-width: if($rfs-unit == rem, #{$value-min / $rfs-rem-value}rem, #{$value-min}px);
+
+ // Use negative value if needed
+ $min-width: if($value < 0, -$min-width, $min-width);
+
+ // Use `vmin` if two-dimensional is enabled
+ $variable-unit: if($rfs-two-dimensional, vmin, vw);
+
+ // Calculate the variable width between 0 and $rfs-breakpoint
+ $variable-width: #{$value-diff * 100 / $rfs-breakpoint}#{$variable-unit};
+
+ // Return the calculated value
+ $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';
+ }
+ }
+ }
+ }
+
+ // Remove first space
+ @return unquote(str-slice($val, 2));
+}
+
+// RFS mixin
+@mixin rfs($values, $property: font-size) {
+ @if $values != null {
+ $val: rfs-value($values);
+ $fluidVal: rfs-fluid-value($values);
+
+ // Do not print the media query if responsive & non-responsive values are the same
+ @if $val == $fluidVal {
+ #{$property}: $val;
+ }
+ @else {
+ @include _rfs-rule {
+ #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);
+
+ // Include safari iframe resize fix if needed
+ min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);
+ }
+
+ @include _rfs-media-query-rule {
+ #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);
+ }
+ }
+ }
+}
+
+// Shorthand helper mixins
+@mixin font-size($value) {
+ @include rfs($value);
+}
+
+@mixin padding($value) {
+ @include rfs($value, padding);
+}
+
+@mixin padding-top($value) {
+ @include rfs($value, padding-top);
+}
+
+@mixin padding-right($value) {
+ @include rfs($value, padding-right);
+}
+
+@mixin padding-bottom($value) {
+ @include rfs($value, padding-bottom);
+}
+
+@mixin padding-left($value) {
+ @include rfs($value, padding-left);
+}
+
+@mixin margin($value) {
+ @include rfs($value, margin);
+}
+
+@mixin margin-top($value) {
+ @include rfs($value, margin-top);
+}
+
+@mixin margin-right($value) {
+ @include rfs($value, margin-right);
+}
+
+@mixin margin-bottom($value) {
+ @include rfs($value, margin-bottom);
+}
+
+@mixin margin-left($value) {
+ @include rfs($value, margin-left);
+}
diff --git a/docs/themes/adidoks/sass/common/_dark.scss b/docs/themes/adidoks/sass/common/_dark.scss
new file mode 100644
index 0000000..af23842
--- /dev/null
+++ b/docs/themes/adidoks/sass/common/_dark.scss
@@ -0,0 +1,333 @@
+/** Theme variables */
+
+// Source: https://material.io/design/color/dark-theme.html
+
+$body-bg-dark: $gray-900;
+$body-overlay-dark: darken($body-bg-dark, 2.5%);
+$border-dark: darken($body-bg-dark, 2.5%);
+$body-color-dark: $gray-300;
+$dots-dark: darken($body-color-dark, 50%);
+
+$link-color-dark: $blue-300;
+$button-color-dark: $link-color-dark;
+$focus-color-dark: lighten($link-color-dark, 2.5%);
+
+$navbar-dark-color: $body-color-dark;
+$navbar-dark-hover-color: $link-color-dark;
+$navbar-dark-active-color: $link-color-dark;
+
+/** Theme styles */
+
+body.dark {
+ background: $body-bg-dark;
+ color: $body-color-dark;
+}
+
+body.dark a {
+ color: $link-color-dark;
+}
+
+body.dark a.text-body {
+ color: $body-color-dark !important;
+}
+
+body.dark .btn-primary {
+ @include button-variant($button-color-dark, $button-color-dark);
+
+ color: $body-bg-dark !important;
+}
+
+body.dark .btn-outline-primary {
+ @include button-outline-variant($button-color-dark, $button-color-dark);
+
+ color: $link-color-dark;
+}
+
+body.dark .btn-outline-primary:hover {
+ color: $body-bg-dark;
+}
+
+body.dark .navbar {
+ background: $body-bg-dark;
+ opacity: 0.975;
+ border-bottom: 1px solid $border-dark;
+}
+
+body.dark.home .navbar {
+ border-bottom: 0;
+}
+
+body.dark .navbar-light .navbar-brand {
+ color: $navbar-dark-color !important;
+}
+
+body.dark .navbar-light .navbar-nav .nav-link {
+ color: $navbar-dark-color;
+}
+
+body.dark .navbar-light .navbar-nav .nav-link:hover,
+body.dark .navbar-light .navbar-nav .nav-link:focus {
+ color: $navbar-dark-hover-color;
+}
+
+body.dark .navbar-light .navbar-nav .nav-link.disabled {
+ color: $navbar-dark-disabled-color;
+}
+
+body.dark .navbar-light .navbar-nav .show > .nav-link,
+body.dark .navbar-light .navbar-nav .active > .nav-link,
+body.dark .navbar-light .navbar-nav .nav-link.show,
+body.dark .navbar-light .navbar-nav .nav-link.active {
+ color: $navbar-dark-active-color;
+}
+
+body.dark .navbar-light .navbar-text {
+ color: $navbar-dark-color;
+}
+
+body.dark .alert-primary a {
+ color: $body-bg-dark;
+}
+
+body.dark .alert-warning {
+ background: $body-overlay-dark;
+ color: $body-color-dark;
+}
+
+body.dark .page-links a {
+ color: $body-color-dark;
+}
+
+body.dark .showcase-meta a {
+ color: $body-color-dark;
+}
+
+body.dark .showcase-meta a:hover,
+body.dark .showcase-meta a:focus {
+ color: $link-color-dark;
+}
+
+body.dark .docs-link:hover,
+body.dark .docs-link.active,
+body.dark .page-links a:hover {
+ text-decoration: none;
+ color: $link-color-dark;
+}
+
+body.dark .navbar-light .navbar-text a {
+ color: $navbar-dark-active-color;
+}
+
+body.dark .docs-links h3.sidebar-link a,
+body.dark .page-links h3.sidebar-link a {
+ color: $body-color-dark;
+}
+
+body.dark .navbar-light .navbar-text a:hover,
+body.dark .navbar-light .navbar-text a:focus {
+ color: $navbar-dark-active-color;
+}
+
+body.dark .navbar .btn-link {
+ color: $navbar-dark-color;
+}
+
+body.dark .content .btn-link {
+ color: $link-color-dark;
+}
+
+body.dark .content .btn-link:hover {
+ color: $link-color-dark;
+}
+
+body.dark .navbar .btn-link:hover {
+ color: $navbar-dark-hover-color;
+}
+
+body.dark .navbar .btn-link:active {
+ color: $navbar-dark-active-color;
+}
+
+body.dark .form-control.is-search {
+ background: $body-overlay-dark;
+
+ /*
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+ */
+}
+
+body.dark .navbar-form::after {
+ color: $gray-600;
+ border: 1px solid $gray-800;
+}
+
+body.dark .form-control {
+ color: $gray-500;
+}
+
+body.dark .form-control:focus {
+ box-shadow: 0 0 0 0.2rem $focus-color-dark;
+}
+
+body.dark .border-top {
+ border-top: 1px solid $border-dark !important;
+}
+
+@include media-breakpoint-up(lg) {
+ body.dark .docs-sidebar {
+ order: 0;
+ border-right: 1px solid $border-dark;
+ }
+}
+
+body.dark .docs-navigation {
+ border-top: 1px solid $border-dark;
+}
+
+body.dark pre code::-webkit-scrollbar-thumb {
+ background: $border-dark;
+}
+
+body.dark pre:not(.hljs) {
+ background: $body-overlay-dark;
+ color: $body-color-dark;
+}
+
+body.dark pre code:hover {
+ scrollbar-width: thin;
+ scrollbar-color: $border-dark transparent;
+}
+
+body.dark pre code::-webkit-scrollbar-thumb:hover {
+ background: $border-dark;
+}
+
+body.dark blockquote {
+ border-left: 3px solid $border-dark;
+}
+
+body.dark .footer {
+ border-top: 1px solid $border-dark;
+}
+
+body.dark .docs-links,
+body.dark .docs-toc {
+ scrollbar-width: thin;
+ scrollbar-color: $body-bg-dark $body-bg-dark;
+}
+
+body.dark .docs-links::-webkit-scrollbar,
+body.dark .docs-toc::-webkit-scrollbar {
+ width: 5px;
+}
+
+body.dark .docs-links::-webkit-scrollbar-track,
+body.dark .docs-toc::-webkit-scrollbar-track {
+ background: $body-bg-dark;
+}
+
+body.dark .docs-links::-webkit-scrollbar-thumb,
+body.dark .docs-toc::-webkit-scrollbar-thumb {
+ background: $body-bg-dark;
+}
+
+body.dark .docs-links:hover,
+body.dark .docs-toc:hover {
+ scrollbar-width: thin;
+ scrollbar-color: $border-dark $body-bg-dark;
+}
+
+body.dark .docs-links:hover::-webkit-scrollbar-thumb,
+body.dark .docs-toc:hover::-webkit-scrollbar-thumb {
+ background: $border-dark;
+}
+
+body.dark .docs-links::-webkit-scrollbar-thumb:hover,
+body.dark .docs-toc::-webkit-scrollbar-thumb:hover {
+ background: $border-dark;
+}
+
+body.dark .docs-links h3:not(:first-child) {
+ border-top: 1px solid $border-dark;
+}
+
+body.dark a.docs-link {
+ color: $body-color-dark;
+}
+
+body.dark .page-links li:not(:first-child) {
+ border-top: 1px dashed $border-dark;
+}
+
+body.dark .card {
+ background: $body-bg-dark;
+ border: 1px solid $border-dark;
+}
+
+body.dark .card.bg-light {
+ background: $body-overlay-dark !important;
+}
+
+body.dark .navbar .menu-icon .navicon {
+ background: $navbar-dark-color;
+}
+
+body.dark .navbar .menu-icon .navicon::before,
+body.dark .navbar .menu-icon .navicon::after {
+ background: $navbar-dark-color;
+}
+
+body.dark .logo-light {
+ display: none !important;
+}
+
+body.dark .logo-dark {
+ display: inline-block !important;
+}
+
+body.dark .bg-light {
+ background: darken($body-bg-dark, 1.5%) !important;
+}
+
+body.dark .bg-dots {
+ background-image: radial-gradient($dots-dark 15%, transparent 15%);
+}
+
+body.dark .text-muted {
+ color: darken($body-color-dark, 7.5%) !important;
+}
+
+body.dark .alert-primary {
+ background: $link-color-dark;
+ color: $body-bg-dark;
+}
+
+body.dark .figure-caption {
+ color: $body-color-dark;
+}
+
+body.dark table {
+ @extend .table-dark;
+}
+
+body.dark .copy-status::after {
+ content: "Copy";
+ display: block;
+ color: $body-color-dark;
+}
+
+body.dark .copy-status:hover::after {
+ content: "Copy";
+ display: block;
+ color: $link-color-dark;
+}
+
+body.dark .copy-status:focus::after,
+body.dark .copy-status:active::after {
+ content: "Copied";
+ display: block;
+ color: $link-color-dark;
+}
diff --git a/docs/themes/adidoks/sass/common/_fonts.scss b/docs/themes/adidoks/sass/common/_fonts.scss
new file mode 100644
index 0000000..d2b7725
--- /dev/null
+++ b/docs/themes/adidoks/sass/common/_fonts.scss
@@ -0,0 +1,71 @@
+/* jost-regular - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-regular.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-regular.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+/* jost-500 - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-500.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-500.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+/* jost-700 - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-700.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-700.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+/* jost-italic - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-italic.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+/* jost-500italic - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-500italic.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-500italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
+
+/* jost-700italic - latin */
+@font-face {
+ font-family: "Jost";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src:
+ local("Jost"),
+ url("fonts/vendor/jost/jost-v4-latin-700italic.woff2") format("woff2"),
+ url("fonts/vendor/jost/jost-v4-latin-700italic.woff") format("woff"); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
+}
diff --git a/docs/themes/adidoks/sass/common/_global.scss b/docs/themes/adidoks/sass/common/_global.scss
new file mode 100644
index 0000000..0d94663
--- /dev/null
+++ b/docs/themes/adidoks/sass/common/_global.scss
@@ -0,0 +1,238 @@
+.contributors .content,
+.blog .content,
+.page .content,
+.error404 .content,
+.docs.list .content,
+.tutorial.list .content,
+.showcase.list .content {
+ padding-top: 1rem;
+ padding-bottom: 3rem;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ margin: 2rem 0 1rem;
+}
+
+@include media-breakpoint-up(md) {
+ body {
+ font-size: $font-size-md;
+ padding-top: 4rem !important;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ .h1,
+ .h2,
+ .h3,
+ .h4,
+ .h5,
+ .h6 {
+ margin-bottom: 1.125rem;
+ }
+}
+
+.home h1 {
+ /* font-size: calc(1.375rem + 1.5vw); */
+ font-size: calc(1.875rem + 1.5vw);
+}
+
+a:hover,
+a:focus {
+ text-decoration: underline;
+}
+
+a.btn:hover,
+a.btn:focus {
+ text-decoration: none;
+}
+
+.section {
+ padding-top: 5rem;
+ padding-bottom: 5rem;
+}
+
+.section-md {
+ padding-top: 3rem;
+ padding-bottom: 3rem;
+}
+
+.section-sm {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+}
+
+/*
+.section svg {
+ display: inline-block;
+ width: 2rem;
+ height: 2rem;
+ vertical-align: text-top;
+}
+*/
+
+body {
+ padding-top: 3.5625rem;
+}
+
+.docs-sidebar {
+ order: 2;
+}
+
+@include media-breakpoint-up(lg) {
+ .docs-sidebar {
+ order: 0;
+ border-right: 1px solid $gray-200;
+ }
+
+ @supports ((position:-webkit-sticky) or (position:sticky)) {
+ .docs-sidebar {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 4rem;
+ z-index: 1000;
+ height: calc(100vh - 4rem);
+ }
+ }
+}
+
+@include media-breakpoint-up(xl) {
+ .docs-sidebar {
+ flex: 0 1 320px;
+ }
+}
+
+.docs-links {
+ padding-bottom: 5rem;
+}
+
+@include media-breakpoint-up(lg) {
+ @supports ((position: -webkit-sticky) or (position: sticky)) {
+ .docs-links {
+ max-height: calc(100vh - 4rem);
+ overflow-y: scroll;
+ }
+ }
+}
+
+@include media-breakpoint-up(lg) {
+ .docs-links {
+ display: block;
+ width: auto;
+ margin-right: -1.5rem;
+ padding-bottom: 4rem;
+ }
+}
+
+.docs-toc {
+ order: 2;
+}
+
+@supports ((position:-webkit-sticky) or (position:sticky)) {
+ .docs-toc {
+ position: -webkit-sticky;
+ position: sticky;
+ top: 4rem;
+ height: calc(100vh - 4rem);
+ overflow-y: auto;
+ }
+}
+
+.docs-content {
+ padding-bottom: 3rem;
+ order: 1;
+}
+
+.docs-navigation, .blog-navigation {
+ margin-top: 2rem;
+ margin-bottom: 0;
+ padding-top: 2rem;
+
+ a {
+ font-size: $font-size-base * 0.9;
+ }
+}
+
+.docs-navigation {
+ border-top: 1px solid $gray-200;
+}
+
+@include media-breakpoint-up(lg) {
+ .docs-navigation, .blog-navigation {
+ margin-bottom: -1rem;
+
+ a {
+ font-size: $font-size-base;
+ }
+ }
+}
+
+.navbar a:hover,
+.navbar a:focus {
+ text-decoration: none;
+}
+
+#TableOfContents ul {
+ padding-left: 0;
+ list-style: none;
+}
+
+::selection {
+ background: rgba(212, 53, 159, 0.2);
+}
+
+.bg-dots {
+ background-image: radial-gradient($gray-300 15%, transparent 15%);
+ background-position: 0 0;
+ background-size: 1rem 1rem;
+ -webkit-mask: linear-gradient(to top, #fff, transparent);
+ mask: linear-gradient(to top, #fff, transparent);
+ width: 100%;
+ height: 9rem;
+ margin-top: -10rem;
+ z-index: -1;
+}
+
+.bg-dots-md {
+ margin-top: -11rem;
+}
+
+.bg-dots-lg {
+ margin-top: -12rem;
+}
+
+// https://fossheim.io/writing/posts/css-text-gradient/
+.gradient-text {
+ background-color: $primary;
+ background-image: linear-gradient(90deg, $primary, $blue-300 50%, $pink-500);
+ background-size: 100%;
+ background-repeat: repeat;
+ -webkit-background-clip: text;
+ -moz-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ -moz-text-fill-color: transparent;
+}
+
+.katex {
+ font-size: $font-size-md;
+}
+
+article {
+ hr {
+ margin: 3rem 0;
+ }
+}
\ No newline at end of file
diff --git a/docs/themes/adidoks/sass/common/_variables.scss b/docs/themes/adidoks/sass/common/_variables.scss
new file mode 100644
index 0000000..22bb521
--- /dev/null
+++ b/docs/themes/adidoks/sass/common/_variables.scss
@@ -0,0 +1,158 @@
+// Color system
+
+$white: #fff;
+$gray-100: #f8f9fa;
+$gray-200: #e9ecef;
+$gray-300: #dee2e6;
+$gray-400: #ced4da;
+$gray-500: #adb5bd;
+$gray-600: #6c757d;
+$gray-700: #495057;
+$gray-800: #343a40;
+$gray-900: #212529;
+$black: #000;
+
+$yellow: #ffe000;
+$black: #1d2d35;
+$beige: #fbf7f0;
+// $red: #e55235;
+$purple: #5d2f86;
+$brown: #aa9c84;
+
+$blue-300: #8ed6fb;
+$blue-500: #6ad7e5;
+$pink-500: #d32e9d;
+
+$primary: $blue-500;
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+$enable-caret: true;
+$enable-rounded: true;
+$enable-shadows: false;
+$enable-gradients: false;
+$enable-transitions: true;
+$enable-reduced-motion: true;
+$enable-smooth-scroll: true;
+$enable-grid-classes: true;
+$enable-button-pointers: true;
+$enable-rfs: true;
+$enable-validation-icons: true;
+$enable-negative-margins: true;
+$enable-deprecation-messages: true;
+$enable-important-utilities: true;
+
+/** Bootstrap navbar fix (https://git.io/fADqW) */
+$navbar-dark-toggler-icon-bg: none;
+$navbar-light-toggler-icon-bg: none;
+
+// Options
+//
+// Quickly modify global styling by enabling or disabling optional features.
+
+// $enable-responsive-font-sizes: true;
+
+// Body
+//
+// Settings for the `` element.
+
+$body-bg: $white;
+$body-color: $black;
+
+// Links
+//
+// Style anchor elements.
+
+$link-color: $primary;
+$link-decoration: none;
+
+// Grid containers
+//
+// Define the maximum width of `.container` for different screen sizes.
+
+$container-max-widths: (
+ sm: 540px,
+ md: 720px,
+ lg: 960px,
+ xl: 1240px,
+ xxl: 1320px
+);
+
+@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: 16;
+$grid-gutter-width: 48px;
+$grid-row-columns: 6;
+
+// Components
+//
+// Define common padding and border radius sizes and more.
+
+$border-color: $gray-200;
+
+// Typography
+//
+// Font, line-height, and color for body text, headings, and more.
+
+// stylelint-disable value-keyword-case
+$font-family-sans-serif: "Jost", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, "Helvetica Neue", arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+$font-family-monospace: sfmono-regular, menlo, monaco, consolas, "Liberation Mono", "Courier New", monospace;
+$font-family-base: $font-family-sans-serif;
+// stylelint-enable value-keyword-case
+
+$font-size-base: 1rem; // Assumes the browser default, typically `16px`
+$font-size-xl: $font-size-base * 1.375;
+$font-size-lg: $font-size-base * 1.25;
+$font-size-md: $font-size-base * 1.125;
+$font-size-sm: $font-size-base * 0.875;
+
+$line-height-base: 1.5;
+
+$headings-font-family: null;
+$headings-font-weight: 700;
+
+$lead-font-weight: 400;
+
+// 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.
+
+$spacer: 1rem;
+
+// Navbar
+
+$navbar-padding-y: $spacer / 2;
+$navbar-padding-x: null;
+
+$navbar-nav-link-padding-x: 0.5rem;
+
+$navbar-light-color: $black;
+$navbar-light-hover-color: $white;
+$navbar-light-active-color: $primary;
+
+// Cards
+
+$card-border-color: $gray-200;
+
+// Alerts
+//
+// Define alert colors, border radius, and padding.
+
+$alert-padding-y: $spacer;
+$alert-padding-x: $spacer * 1.5;
+$alert-margin-bottom: 0;
+$alert-border-radius: 0;
+$alert-link-font-weight: $headings-font-weight;
+$alert-border-width: 0;
+
+$alert-bg-scale: 0;
+$alert-border-scale: 0;
+$alert-color-scale: 0;
diff --git a/docs/themes/adidoks/sass/components/_alerts.scss b/docs/themes/adidoks/sass/components/_alerts.scss
new file mode 100644
index 0000000..b40c571
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_alerts.scss
@@ -0,0 +1,63 @@
+.alert {
+ font-family: $font-family-monospace;
+ font-size: $font-size-sm;
+}
+
+.alert-icon {
+ margin-right: 0.75rem;
+}
+
+.docs .alert {
+ margin: 2rem -1.5rem;
+}
+
+.alert .alert-link {
+ text-decoration: underline;
+}
+
+.alert-dark {
+ color: $white;
+ background-color: $black;
+}
+
+.alert-dark .alert-link {
+ color: $white;
+}
+
+.alert-light {
+ color: $black;
+}
+
+.alert-warning {
+ background: $beige;
+ color: $black;
+}
+
+/*
+.alert-light {
+ color: #215888;
+ background: linear-gradient(-45deg, rgb(212, 245, 255), rgb(234, 250, 255), rgb(234, 250, 255), #d3f6ef);
+}
+
+.alert-light .alert-link {
+ color: #215888;
+}
+*/
+
+.alert-white {
+ background-color: rgba(255, 255, 255, 0.95);
+}
+
+.alert-primary {
+ color: $white;
+ background-color: $primary;
+}
+
+.alert-primary .alert-link {
+ color: $white;
+}
+
+.alert .alert-link:hover,
+.alert .alert-link:focus {
+ text-decoration: none;
+}
diff --git a/docs/themes/adidoks/sass/components/_buttons.scss b/docs/themes/adidoks/sass/components/_buttons.scss
new file mode 100644
index 0000000..f20a0d2
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_buttons.scss
@@ -0,0 +1,91 @@
+.navbar .btn-link {
+ color: $navbar-light-color;
+ padding: 0.4375rem 0;
+}
+
+#mode {
+ margin-right: 1.25rem;
+}
+
+.btn-link:focus {
+ outline: 0;
+ box-shadow: none;
+}
+
+#navigation {
+ margin-left: 1.25rem;
+}
+
+@include media-breakpoint-up(md) {
+ #mode {
+ margin-right: 0.5rem;
+ }
+
+ .navbar .btn-link {
+ padding: 0.5625em 0.25rem 0.5rem 0.125rem;
+ }
+}
+
+.navbar .btn-link:hover {
+ color: $navbar-light-hover-color;
+}
+
+.navbar .btn-link:active {
+ color: $navbar-light-active-color;
+}
+
+body .toggle-dark {
+ display: block;
+}
+
+body .toggle-light {
+ display: none;
+}
+
+body.dark .toggle-light {
+ display: block;
+}
+
+body.dark .toggle-dark {
+ display: none;
+}
+
+.btn-clipboard {
+ display: none;
+}
+
+@include media-breakpoint-up(md) {
+ .doks-clipboard {
+ position: relative;
+ float: right;
+ }
+
+ .btn-clipboard {
+ position: absolute;
+ top: 1rem;
+ right: 0.25rem;
+ z-index: 10;
+ display: block;
+ padding: 0.25rem 0.5rem;
+ font-size: $font-size-sm;
+ }
+}
+
+.copy-status::after {
+ content: "Copy";
+ display: block;
+ color: $body-color;
+}
+
+.copy-status:hover::after {
+ content: "Copy";
+ display: block;
+ color: $pink-500;
+}
+
+.copy-status:focus::after,
+.copy-status:active::after {
+ content: "Copied";
+ display: block;
+ color: $pink-500;
+}
diff --git a/docs/themes/adidoks/sass/components/_code.scss b/docs/themes/adidoks/sass/components/_code.scss
new file mode 100644
index 0000000..3329a63
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_code.scss
@@ -0,0 +1,62 @@
+pre,
+code,
+kbd,
+samp {
+ font-family: $font-family-monospace;
+ font-size: $font-size-sm;
+ border-radius: $border-radius;
+}
+
+code {
+ padding: 0.25rem 0.5rem;
+}
+
+pre {
+ background: $beige;
+ color: $black;
+ margin: 2rem 0;
+}
+
+pre code {
+ display: block;
+ overflow-x: auto;
+ line-height: $line-height-base;
+ padding: 1.25rem 1.5rem;
+ tab-size: 4;
+ scrollbar-width: thin;
+ scrollbar-color: transparent transparent;
+}
+
+.hljs {
+ padding: 1.25rem 1.5rem;
+}
+
+@include media-breakpoint-down(sm) {
+ pre,
+ code,
+ kbd,
+ samp {
+ border-radius: 0;
+ }
+
+ pre {
+ margin: 2rem -1.5rem;
+ }
+}
+
+pre code::-webkit-scrollbar {
+ height: 5px;
+}
+
+pre code::-webkit-scrollbar-thumb {
+ background: $gray-200;
+}
+
+pre code:hover {
+ scrollbar-width: thin;
+ scrollbar-color: $gray-200 transparent;
+}
+
+pre code::-webkit-scrollbar-thumb:hover {
+ background: $gray-200;
+}
diff --git a/docs/themes/adidoks/sass/components/_comments.scss b/docs/themes/adidoks/sass/components/_comments.scss
new file mode 100644
index 0000000..18f610c
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_comments.scss
@@ -0,0 +1,30 @@
+.comment-list {
+ @extend .list-unstyled;
+}
+
+.comment-list ol {
+ list-style: none;
+}
+
+.comment-form p {
+ @extend .form-group !optional;
+}
+
+.comment-form input[type="text"],
+.comment-form input[type="email"],
+.comment-form input[type="url"],
+.comment-form textarea {
+ @extend .form-control;
+}
+
+.comment-form input[type="submit"] {
+ @extend .btn;
+ @extend .btn-secondary;
+}
+
+blockquote {
+ margin-bottom: 1rem;
+ font-size: 1.25rem;
+ border-left: 3px solid $gray-300;
+ padding-left: 1rem;
+}
diff --git a/docs/themes/adidoks/sass/components/_doks.scss b/docs/themes/adidoks/sass/components/_doks.scss
new file mode 100644
index 0000000..4c8bfc7
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_doks.scss
@@ -0,0 +1,62 @@
+/*
+
+Doks — based on Ascetic by (c) Ivan Sagalaev
+
+*/
+
+.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 0.5em;
+ background: $beige;
+ color: $body-color;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-section,
+.hljs-addition,
+.hljs-attribute,
+.hljs-link {
+ color: $pink-500;
+}
+
+.hljs-comment,
+.hljs-quote,
+.hljs-meta,
+.hljs-deletion {
+ color: #888;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-section,
+.hljs-name,
+.hljs-type,
+.hljs-strong {
+ font-weight: bold;
+}
+
+.hljs-emphasis {
+ font-style: italic;
+}
+
+body.dark .hljs {
+ background: $body-overlay-dark;
+ color: $body-color-dark;
+}
+
+body.dark .hljs-string,
+body.dark .hljs-variable,
+body.dark .hljs-template-variable,
+body.dark .hljs-symbol,
+body.dark .hljs-bullet,
+body.dark .hljs-section,
+body.dark .hljs-addition,
+body.dark .hljs-attribute,
+body.dark .hljs-link {
+ color: $blue-300;
+}
diff --git a/docs/themes/adidoks/sass/components/_footnote.scss b/docs/themes/adidoks/sass/components/_footnote.scss
new file mode 100644
index 0000000..a858bde
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_footnote.scss
@@ -0,0 +1,10 @@
+.footnote-definition {
+ sup {
+ top: -.2.5em;
+ font-size: 0.75em;
+ display: inline;
+ }
+ p {
+ display: inline;
+ }
+}
diff --git a/docs/themes/adidoks/sass/components/_forms.scss b/docs/themes/adidoks/sass/components/_forms.scss
new file mode 100644
index 0000000..9732838
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_forms.scss
@@ -0,0 +1,19 @@
+/** Search form */
+.search-form {
+ @extend .form-inline !optional;
+}
+
+.search-form label {
+ @extend .form-group;
+
+ font-weight: normal;
+}
+
+.search-form .search-field {
+ @extend .form-control;
+}
+
+.search-form .search-submit {
+ @extend .btn;
+ @extend .btn-secondary;
+}
diff --git a/docs/themes/adidoks/sass/components/_images.scss b/docs/themes/adidoks/sass/components/_images.scss
new file mode 100644
index 0000000..254eefa
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_images.scss
@@ -0,0 +1,48 @@
+figure {
+ margin: 2rem 0;
+}
+
+.figure-caption {
+ margin: 0.25rem 0 0.75rem;
+}
+
+figure.wide {
+ margin: 2rem -1.5rem;
+}
+
+figure.wide .figure-caption {
+ margin: 0.25rem 1.5rem 0.75rem;
+}
+
+@include media-breakpoint-up(md) {
+ figure.wide {
+ margin: 2rem -2.5rem;
+ }
+
+ figure.wide .figure-caption {
+ margin: 0.25rem 2.5rem 0.75rem;
+ }
+}
+
+@include media-breakpoint-up(lg) {
+ figure.wide {
+ margin: 2rem -5rem;
+ }
+
+ figure.wide .figure-caption {
+ margin: 0.25rem 5rem 0.75rem;
+ }
+}
+
+.blur-up {
+ filter: blur(5px);
+}
+
+.blur-up.lazyloaded {
+ filter: unset;
+}
+
+.img-simple {
+ margin-top: 0.375rem;
+ margin-bottom: 1.25rem;
+}
diff --git a/docs/themes/adidoks/sass/components/_search.scss b/docs/themes/adidoks/sass/components/_search.scss
new file mode 100644
index 0000000..4073fb6
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_search.scss
@@ -0,0 +1,77 @@
+.navbar-form {
+ position: relative;
+}
+
+#suggestions {
+ position: absolute;
+ right: 0;
+ margin-top: 0.5rem;
+ width: calc(100vw - 3rem);
+ max-height: 500px;
+ overflow: auto;
+}
+
+#suggestions a {
+ display: block;
+ text-decoration: none;
+ padding: 0.75rem;
+ margin: 0 0.5rem;
+}
+
+#suggestions a:focus {
+ background: $gray-100;
+ outline: 0;
+}
+
+#suggestions div:not(:first-child) {
+ border-top: 1px dashed $gray-200;
+}
+
+#suggestions div:first-child {
+ margin-top: 0.5rem;
+}
+
+#suggestions div:last-child {
+ margin-bottom: 0.5rem;
+}
+
+#suggestions a:hover {
+ background: $gray-100;
+}
+
+#suggestions span {
+ // display: flex;
+ font-size: $font-size-base;
+}
+
+#suggestions span:first-child {
+ font-weight: $headings-font-weight;
+ color: $black;
+}
+
+#suggestions span:nth-child(2) {
+ color: $gray-700;
+}
+
+@include media-breakpoint-up(sm) {
+ #suggestions {
+ width: 30rem;
+ }
+
+ #suggestions a {
+ display: flex;
+ }
+
+ #suggestions span:first-child {
+ width: 9rem;
+ padding-right: 1rem;
+ border-right: 1px solid $gray-200;
+ display: inline-block;
+ text-align: right;
+ }
+
+ #suggestions span:nth-child(2) {
+ width: 19rem;
+ padding-left: 1rem;
+ }
+}
diff --git a/docs/themes/adidoks/sass/components/_syntax.scss b/docs/themes/adidoks/sass/components/_syntax.scss
new file mode 100644
index 0000000..d9a1c02
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_syntax.scss
@@ -0,0 +1,131 @@
+/*!
+ * GitHub Light v0.5.0
+ * Copyright (c) 2012 - 2017 GitHub, Inc.
+ * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE)
+ */
+
+ .c1,
+ .c /* comment, punctuation.definition.comment, string.comment */ {
+ color: #6a737d;
+ }
+
+ .v /* variable */,
+ .smw /* sublimelinter.mark.warning */ {
+ color: #e36209;
+ }
+
+ // .c1 /* constant, entity.name.constant, variable.other.constant, variable.language, support, meta.property-name, support.constant, support.variable, meta.module-reference, markup.raw, meta.diff.header, meta.output */,
+ .s .v /* string variable */ {
+ color: #005cc5;
+ }
+
+ .e /* entity */,
+ .en /* entity.name */ {
+ color: #6f42c1;
+ }
+
+ .smi /* variable.parameter.function, storage.modifier.package, storage.modifier.import, storage.type.java, variable.other */,
+ .s .s1 /* string source */ {
+ color: #24292e;
+ }
+
+ .ent /* entity.name.tag, markup.quote */ {
+ color: #22863a;
+ }
+
+ .k /* keyword, storage, storage.type */ {
+ color: #d73a49;
+ }
+
+ .s /* string */,
+ .pds /* punctuation.definition.string, source.regexp, string.regexp.character-class */,
+ .s .pse .s1 /* string punctuation.section.embedded source */,
+ .sr /* string.regexp */,
+ .sr .cce /* string.regexp constant.character.escape */,
+ .sr .sre /* string.regexp source.ruby.embedded */,
+ .sr .sra /* string.regexp string.regexp.arbitrary-repitition */ {
+ color: #032f62;
+ }
+
+ .bu /* invalid.broken, invalid.deprecated, invalid.unimplemented, message.error, brackethighlighter.unmatched, sublimelinter.mark.error */ {
+ color: #b31d28;
+ }
+
+ .ii /* invalid.illegal */ {
+ color: #fafbfc;
+ background-color: #b31d28;
+ }
+
+ .c2 /* carriage-return */ {
+ color: #fafbfc;
+ background-color: #d73a49;
+ }
+
+ .c2::before /* carriage-return */ {
+ content: "^M";
+ }
+
+ .sr .cce /* string.regexp constant.character.escape */ {
+ font-weight: bold;
+ color: #22863a;
+ }
+
+ .ml /* markup.list */ {
+ color: #735c0f;
+ }
+
+ .mh /* markup.heading */,
+ .mh .en /* markup.heading entity.name */,
+ .ms /* meta.separator */ {
+ font-weight: bold;
+ color: #005cc5;
+ }
+
+ .mi /* markup.italic */ {
+ font-style: italic;
+ color: #24292e;
+ }
+
+ .mb /* markup.bold */ {
+ font-weight: bold;
+ color: #24292e;
+ }
+
+ .md /* markup.deleted, meta.diff.header.from-file, punctuation.definition.deleted */ {
+ color: #b31d28;
+ background-color: #ffeef0;
+ }
+
+ .mi1 /* markup.inserted, meta.diff.header.to-file, punctuation.definition.inserted */ {
+ color: #22863a;
+ background-color: #f0fff4;
+ }
+
+ .mc /* markup.changed, punctuation.definition.changed */ {
+ color: #e36209;
+ background-color: #ffebda;
+ }
+
+ .mi2 /* markup.ignored, markup.untracked */ {
+ color: #f6f8fa;
+ background-color: #005cc5;
+ }
+
+ .mdr /* meta.diff.range */ {
+ font-weight: bold;
+ color: #6f42c1;
+ }
+
+ .ba /* brackethighlighter.tag, brackethighlighter.curly, brackethighlighter.round, brackethighlighter.square, brackethighlighter.angle, brackethighlighter.quote */ {
+ color: #586069;
+ }
+
+ .sg /* sublimelinter.gutter-mark */ {
+ color: #959da5;
+ }
+
+ .corl /* constant.other.reference.link, string.other.link */ {
+ text-decoration: underline;
+ color: #032f62;
+ }
+
\ No newline at end of file
diff --git a/docs/themes/adidoks/sass/components/_tables.scss b/docs/themes/adidoks/sass/components/_tables.scss
new file mode 100644
index 0000000..b1f8c2e
--- /dev/null
+++ b/docs/themes/adidoks/sass/components/_tables.scss
@@ -0,0 +1,5 @@
+table {
+ @extend .table;
+
+ margin: 3rem 0;
+}
diff --git a/docs/themes/adidoks/sass/layouts/_footer.scss b/docs/themes/adidoks/sass/layouts/_footer.scss
new file mode 100644
index 0000000..7d21811
--- /dev/null
+++ b/docs/themes/adidoks/sass/layouts/_footer.scss
@@ -0,0 +1,20 @@
+.footer {
+ border-top: 1px solid $gray-200;
+ padding-top: 1.125rem;
+ padding-bottom: 1.125rem;
+}
+
+.footer ul {
+ margin-bottom: 0;
+}
+
+.footer li {
+ font-size: $font-size-sm;
+ margin-bottom: 0;
+}
+
+@include media-breakpoint-up(md) {
+ .footer li {
+ font-size: $font-size-base;
+ }
+}
diff --git a/docs/themes/adidoks/sass/layouts/_header.scss b/docs/themes/adidoks/sass/layouts/_header.scss
new file mode 100644
index 0000000..940965c
--- /dev/null
+++ b/docs/themes/adidoks/sass/layouts/_header.scss
@@ -0,0 +1,268 @@
+.banner .nav li {
+ @extend .nav-item;
+}
+
+.banner .nav a {
+ @extend .nav-link;
+}
+
+.navbar-text {
+ margin-left: 1rem;
+}
+
+.navbar-brand {
+ font-weight: $headings-font-weight;
+}
+
+.navbar-light .navbar-brand,
+.navbar-light .navbar-brand:hover,
+.navbar-light .navbar-brand:active {
+ color: $body-color;
+}
+
+.navbar-light .navbar-nav .active .nav-link {
+ color: $primary;
+}
+
+@include media-breakpoint-up(md) {
+ .navbar-brand {
+ font-size: $font-size-xl;
+ }
+
+ .navbar-text {
+ margin-left: 1.25rem;
+ }
+}
+
+.navbar-nav {
+ flex-direction: row;
+}
+
+.nav-item {
+ margin-left: 1.25rem;
+}
+
+@include media-breakpoint-up(md) {
+ .nav-item {
+ margin-left: 0.5rem;
+ }
+}
+
+@include media-breakpoint-down(sm) {
+ .nav-item:first-child {
+ margin-left: 0;
+ }
+}
+
+@include media-breakpoint-down(md) {
+ .navbar .container {
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ }
+}
+
+.break {
+ flex-basis: 100%;
+ height: 0;
+}
+
+.navbar {
+ background-color: rgba(255, 255, 255, 0.95);
+ border-bottom: 1px solid $gray-200;
+ margin-top: 4px;
+}
+
+.header-bar {
+ border-top: 4px solid;
+ border-image-source: linear-gradient(90deg, $primary, #8ed6fb 50%, #d32e9d);
+ border-image-slice: 1;
+}
+
+.home .navbar {
+ border-bottom: 0;
+}
+
+.navbar-form {
+ position: relative;
+ margin-top: 0.25rem;
+}
+
+@include media-breakpoint-up(md) {
+ .navbar-brand {
+ margin-right: 1rem !important;
+ }
+
+ .main-nav .nav-item:first-child .nav-link,
+ .fork-me .nav-item:first-child .nav-link {
+ padding-left: 0;
+ }
+
+ .main-nav .nav-item:last-child .nav-link,
+ .fork-me .nav-item:last-child .nav-link {
+ padding-right: 0;
+ }
+
+ .navbar-form {
+ margin-top: 0;
+ margin-left: 6rem;
+ margin-right: 1.5rem;
+ }
+}
+
+@include media-breakpoint-up(lg) {
+ .navbar-form {
+ margin-left: 15rem;
+ }
+}
+
+@include media-breakpoint-up(xl) {
+ .navbar-form {
+ margin-left: 30rem;
+ }
+}
+
+.form-control.is-search {
+ /*
+ padding-right: calc(1.5em + 0.75rem);
+ */
+ padding-right: 2.5rem;
+ background: $gray-100;
+ border: 0;
+
+ /*
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236c757d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-search'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");
+ background-repeat: no-repeat;
+ background-position: right calc(0.375em + 0.1875rem) center;
+ background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
+ */
+}
+
+.navbar-form::after {
+ position: absolute;
+ top: 0.4625rem;
+ right: 0.5375rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 1.5rem;
+ padding-right: 0.4375rem;
+ padding-left: 0.4375rem;
+ font-size: $font-size-base * 0.75;
+ color: $gray-700;
+ content: "/";
+ border: 1px solid $gray-300;
+ border-radius: 0.25rem;
+}
+
+/*! purgecss start ignore */
+.algolia-autocomplete {
+ display: flex !important;
+}
+
+.algolia-autocomplete .ds-dropdown-menu {
+ box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
+}
+
+@include media-breakpoint-down(sm) {
+ .algolia-autocomplete .ds-dropdown-menu {
+ max-width: 512px !important;
+ min-width: 312px !important;
+ width: auto !important;
+ }
+
+ .algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column::after {
+ content: "|";
+ margin-right: 0.25rem;
+ }
+}
+
+.algolia-autocomplete .algolia-docsearch-suggestion--title {
+ margin-bottom: 0;
+}
+
+.algolia-autocomplete .algolia-docsearch-suggestion--highlight {
+ padding: 0 0.05em;
+}
+
+.algolia-autocomplete .algolia-docsearch-footer {
+ margin-top: 1rem;
+ margin-right: 0.5rem;
+ margin-bottom: 0.5rem;
+}
+
+/*! purgecss end ignore */
+
+/*
+ * Source: https://medium.com/creative-technology-concepts-code/responsive-mobile-dropdown-navigation-using-css-only-7218e4498a99
+*/
+
+/* Style the menu icon for the dropdown */
+
+.navbar .menu-icon {
+ cursor: pointer;
+
+ /* display: inline-block; */
+
+ /* float: right; */
+ padding: 1.125rem 0.625rem;
+ margin: 0 0 0 -0.625rem;
+
+ /* position: relative; */
+ user-select: none;
+}
+
+.navbar .menu-icon .navicon {
+ background: $navbar-light-color;
+ display: block;
+ height: 2px;
+ position: relative;
+ transition: background 0.2s ease-out;
+ width: 18px;
+}
+
+.navbar .menu-icon .navicon::before,
+.navbar .menu-icon .navicon::after {
+ background: $navbar-light-color;
+ content: "";
+ display: block;
+ height: 100%;
+ position: absolute;
+ transition: all 0.2s ease-out;
+ width: 100%;
+}
+
+.navbar .menu-icon .navicon::before {
+ top: 5px;
+}
+
+.navbar .menu-icon .navicon::after {
+ top: -5px;
+}
+
+/* Add the icon and menu animations when the checkbox is clicked */
+
+.navbar .menu-btn {
+ display: none;
+}
+
+.navbar .menu-btn:checked~.navbar-collapse {
+ display: block;
+ max-height: 100vh;
+}
+
+.navbar .menu-btn:checked~.menu-icon .navicon {
+ background: transparent;
+}
+
+.navbar .menu-btn:checked~.menu-icon .navicon::before {
+ transform: rotate(-45deg);
+}
+
+.navbar .menu-btn:checked~.menu-icon .navicon::after {
+ transform: rotate(45deg);
+}
+
+.navbar .menu-btn:checked~.menu-icon:not(.steps) .navicon::before,
+.navbar .menu-btn:checked~.menu-icon:not(.steps) .navicon::after {
+ top: 0;
+}
diff --git a/docs/themes/adidoks/sass/layouts/_pages.scss b/docs/themes/adidoks/sass/layouts/_pages.scss
new file mode 100644
index 0000000..c77b16a
--- /dev/null
+++ b/docs/themes/adidoks/sass/layouts/_pages.scss
@@ -0,0 +1,50 @@
+.docs-content > h2[id]::before,
+.docs-content > h3[id]::before,
+.docs-content > h4[id]::before {
+ display: block;
+ height: 6rem;
+ margin-top: -6rem;
+ content: "";
+}
+
+.anchor {
+ visibility: hidden;
+ padding-left: 0.5rem;
+}
+
+h1:hover a,
+h2:hover a,
+h3:hover a,
+h4:hover a {
+ visibility: visible;
+ text-decoration: none;
+}
+
+.card-list {
+ margin-top: 2.25rem;
+}
+
+.edit-page {
+ margin-top: 3rem;
+ font-size: $font-size-base;
+}
+
+.edit-page svg {
+ margin-right: 0.5rem;
+ margin-bottom: 0.25rem;
+}
+
+p.meta {
+ margin-top: 0.5rem;
+ font-size: $font-size-base;
+}
+
+.breadcrumb {
+ margin-top: 2.25rem;
+ font-size: $font-size-base;
+}
+
+.page-header {
+ text-align: center;
+ margin-bottom: 2rem;
+}
\ No newline at end of file
diff --git a/docs/themes/adidoks/sass/layouts/_posts.scss b/docs/themes/adidoks/sass/layouts/_posts.scss
new file mode 100644
index 0000000..da27660
--- /dev/null
+++ b/docs/themes/adidoks/sass/layouts/_posts.scss
@@ -0,0 +1,28 @@
+.home .card,
+.contributors.list .card,
+.blog.list .card {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+ transition: transform 0.3s;
+}
+
+.home .card:hover,
+.contributors.list .card:hover,
+.blog.list .card:hover {
+ transform: scale(1.025);
+}
+
+.home .card-body,
+.contributors.list .card-body,
+.blog.list .card-body {
+ padding: 0 2rem 1rem;
+}
+
+.blog-header {
+ text-align: center;
+ margin-bottom: 2rem;
+}
+
+.blog-footer {
+ text-align: center;
+}
diff --git a/docs/themes/adidoks/sass/layouts/_sidebar.scss b/docs/themes/adidoks/sass/layouts/_sidebar.scss
new file mode 100644
index 0000000..5006f42
--- /dev/null
+++ b/docs/themes/adidoks/sass/layouts/_sidebar.scss
@@ -0,0 +1,110 @@
+.docs-links,
+.docs-toc {
+ scrollbar-width: thin;
+ scrollbar-color: $white $white;
+}
+
+.docs-links::-webkit-scrollbar,
+.docs-toc::-webkit-scrollbar {
+ width: 5px;
+}
+
+.docs-links::-webkit-scrollbar-track,
+.docs-toc::-webkit-scrollbar-track {
+ background: $white;
+}
+
+.docs-links::-webkit-scrollbar-thumb,
+.docs-toc::-webkit-scrollbar-thumb {
+ background: $white;
+}
+
+.docs-links:hover,
+.docs-toc:hover {
+ scrollbar-width: thin;
+ scrollbar-color: $gray-200 $white;
+}
+
+.docs-links:hover::-webkit-scrollbar-thumb,
+.docs-toc:hover::-webkit-scrollbar-thumb {
+ background: $gray-200;
+}
+
+.docs-links::-webkit-scrollbar-thumb:hover,
+.docs-toc::-webkit-scrollbar-thumb:hover {
+ background: $gray-200;
+}
+
+.docs-links h3,
+.page-links h3 {
+ text-transform: uppercase;
+ font-size: $font-size-base;
+ margin: 1.25rem 0 0.5rem 0;
+ padding: 1.5rem 0 0 0;
+}
+
+@include media-breakpoint-up(lg) {
+ .docs-links h3,
+ .page-links h3 {
+ margin: 1.125rem 1.5rem 0.75rem 0;
+ padding: 1.375rem 0 0 0;
+ }
+}
+
+.docs-links h3:not(:first-child) {
+ border-top: 1px solid $gray-200;
+}
+
+a.docs-link {
+ color: $body-color;
+ display: block;
+ padding: 0.125rem 0;
+ font-size: $font-size-base;
+}
+
+.page-links li {
+ margin-top: 0.375rem;
+ padding-top: 0.375rem;
+}
+
+.page-links ul ul li {
+ border-top: none;
+ padding-left: 1rem;
+ margin-top: 0.125rem;
+ padding-top: 0.125rem;
+}
+
+.page-links li:not(:first-child) {
+ border-top: 1px dashed $gray-200;
+}
+
+.page-links a {
+ color: $body-color;
+ display: block;
+ padding: 0.125rem 0;
+ font-size: $font-size-base * 0.9375;
+}
+
+.docs-link:hover,
+.docs-link.active,
+.page-links a:hover {
+ text-decoration: none;
+ color: $link-color;
+}
+
+.docs-links h3.sidebar-link,
+.page-links h3.sidebar-link {
+ text-transform: none;
+ font-size: $font-size-md;
+ font-weight: normal;
+}
+
+.docs-links h3.sidebar-link a,
+.page-links h3.sidebar-link a {
+ color: $body-color;
+}
+
+.docs-links h3.sidebar-link a:hover,
+.page-links h3.sidebar-link a:hover {
+ text-decoration: underline;
+}
diff --git a/docs/themes/adidoks/sass/main.scss b/docs/themes/adidoks/sass/main.scss
new file mode 100644
index 0000000..1ce3f05
--- /dev/null
+++ b/docs/themes/adidoks/sass/main.scss
@@ -0,0 +1,33 @@
+/** Import Bootstrap functions */
+@import "bootstrap/scss/functions";
+
+/** Import theme variables */
+@import "common/variables";
+
+/** Import Bootstrap */
+@import "bootstrap/scss/bootstrap";
+
+/** Import theme styles */
+@import "common/fonts";
+@import "common/global";
+@import "common/dark";
+@import "components/doks";
+
+// @import "components/syntax";
+@import "components/code";
+@import "components/alerts";
+@import "components/buttons";
+@import "components/comments";
+@import "components/footnote";
+@import "components/forms";
+@import "components/images";
+@import "components/search";
+@import "components/tables";
+@import "layouts/footer";
+@import "layouts/header";
+@import "layouts/pages";
+@import "layouts/posts";
+@import "layouts/sidebar";
+
+/* @import custom styles */
+@import "custom.scss";
diff --git a/docs/themes/adidoks/static/_headers b/docs/themes/adidoks/static/_headers
new file mode 100644
index 0000000..c269214
--- /dev/null
+++ b/docs/themes/adidoks/static/_headers
@@ -0,0 +1,2 @@
+/*
+ Access-Control-Allow-Origin: *
\ No newline at end of file
diff --git a/docs/themes/adidoks/static/android-chrome-192x192.png b/docs/themes/adidoks/static/android-chrome-192x192.png
new file mode 100644
index 0000000..03a0e70
Binary files /dev/null and b/docs/themes/adidoks/static/android-chrome-192x192.png differ
diff --git a/docs/themes/adidoks/static/android-chrome-512x512.png b/docs/themes/adidoks/static/android-chrome-512x512.png
new file mode 100644
index 0000000..74bdfb9
Binary files /dev/null and b/docs/themes/adidoks/static/android-chrome-512x512.png differ
diff --git a/docs/themes/adidoks/static/apple-touch-icon.png b/docs/themes/adidoks/static/apple-touch-icon.png
new file mode 100644
index 0000000..225acef
Binary files /dev/null and b/docs/themes/adidoks/static/apple-touch-icon.png differ
diff --git a/docs/themes/adidoks/static/doks.png b/docs/themes/adidoks/static/doks.png
new file mode 100644
index 0000000..70d8c78
Binary files /dev/null and b/docs/themes/adidoks/static/doks.png differ
diff --git a/docs/themes/adidoks/static/doks.svg b/docs/themes/adidoks/static/doks.svg
new file mode 100644
index 0000000..4631bc5
--- /dev/null
+++ b/docs/themes/adidoks/static/doks.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/docs/themes/adidoks/static/favicon-16x16.png b/docs/themes/adidoks/static/favicon-16x16.png
new file mode 100644
index 0000000..8fcd422
Binary files /dev/null and b/docs/themes/adidoks/static/favicon-16x16.png differ
diff --git a/docs/themes/adidoks/static/favicon-32x32.png b/docs/themes/adidoks/static/favicon-32x32.png
new file mode 100644
index 0000000..21378a4
Binary files /dev/null and b/docs/themes/adidoks/static/favicon-32x32.png differ
diff --git a/docs/themes/adidoks/static/favicon.ico b/docs/themes/adidoks/static/favicon.ico
new file mode 100644
index 0000000..9e2fc8d
Binary files /dev/null and b/docs/themes/adidoks/static/favicon.ico differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff
new file mode 100644
index 0000000..eab8d1b
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2
new file mode 100644
index 0000000..92349d1
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500.woff2 differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff
new file mode 100644
index 0000000..7a8ed95
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2
new file mode 100644
index 0000000..c6b9d56
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-500italic.woff2 differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff
new file mode 100644
index 0000000..57390f5
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2
new file mode 100644
index 0000000..584073a
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700.woff2 differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff
new file mode 100644
index 0000000..e23eedf
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2
new file mode 100644
index 0000000..e56d892
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-700italic.woff2 differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff
new file mode 100644
index 0000000..5dcd111
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2
new file mode 100644
index 0000000..9346c1d
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-italic.woff2 differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff
new file mode 100644
index 0000000..4f24758
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff differ
diff --git a/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2 b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2
new file mode 100644
index 0000000..7f0bf75
Binary files /dev/null and b/docs/themes/adidoks/static/fonts/vendor/jost/jost-v4-latin-regular.woff2 differ
diff --git a/docs/themes/adidoks/static/index.js b/docs/themes/adidoks/static/index.js
new file mode 100644
index 0000000..8c87d5f
--- /dev/null
+++ b/docs/themes/adidoks/static/index.js
@@ -0,0 +1,146 @@
+var suggestions = document.getElementById('suggestions');
+var userinput = document.getElementById('userinput');
+
+document.addEventListener('keydown', inputFocus);
+
+function inputFocus(e) {
+
+ if (e.keyCode === 191 ) {
+ e.preventDefault();
+ userinput.focus();
+ }
+
+ if (e.keyCode === 27 ) {
+ userinput.blur();
+ suggestions.classList.add('d-none');
+ }
+
+}
+
+document.addEventListener('click', function(event) {
+
+ var isClickInsideElement = suggestions.contains(event.target);
+
+ if (!isClickInsideElement) {
+ suggestions.classList.add('d-none');
+ }
+
+});
+
+/*
+Source:
+ - https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
+*/
+
+document.addEventListener('keydown',suggestionFocus);
+
+function suggestionFocus(e){
+
+ const focusableSuggestions= suggestions.querySelectorAll('a');
+ const focusable= [...focusableSuggestions];
+ const index = focusable.indexOf(document.activeElement);
+
+ let nextIndex = 0;
+
+ if (e.keyCode === 38) {
+ e.preventDefault();
+ nextIndex= index > 0 ? index-1 : 0;
+ focusableSuggestions[nextIndex].focus();
+ }
+ else if (e.keyCode === 40) {
+ e.preventDefault();
+ nextIndex= index+1 < focusable.length ? index+1 : index;
+ focusableSuggestions[nextIndex].focus();
+ }
+
+}
+
+
+/*
+Source:
+ - https://github.com/nextapps-de/flexsearch#index-documents-field-search
+ - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
+*/
+
+(function(){
+
+ var index = new FlexSearch({
+ preset: 'score',
+ cache: true,
+ doc: {
+ id: 'id',
+ field: [
+ 'title',
+ 'description',
+ 'content',
+ ],
+ store: [
+ 'href',
+ 'title',
+ 'description',
+ ],
+ },
+ });
+
+ var docs = [
+ {{ range $index, $page := (where .Site.Pages "Section" "docs") -}}
+ {
+ id: {{ $index }},
+ href: "{{ .RelPermalink | relURL }}",
+ title: {{ .Title | jsonify }},
+ description: {{ .Params.description | jsonify }},
+ content: {{ .Content | jsonify }}
+ },
+ {{ end -}}
+ ];
+
+ index.add(docs);
+
+ userinput.addEventListener('input', show_results, true);
+ suggestions.addEventListener('click', accept_suggestion, true);
+
+ function show_results(){
+
+ var value = this.value;
+ var results = index.search(value, 5);
+ var entry, childs = suggestions.childNodes;
+ var i = 0, len = results.length;
+
+ suggestions.classList.remove('d-none');
+
+ results.forEach(function(page) {
+
+ entry = document.createElement('div');
+
+ entry.innerHTML = ' ';
+
+ a = entry.querySelector('a'),
+ t = entry.querySelector('span:first-child'),
+ d = entry.querySelector('span:nth-child(2)');
+
+ a.href = page.href;
+ t.textContent = page.title;
+ d.textContent = page.description;
+
+ suggestions.appendChild(entry);
+
+ });
+
+ while(childs.length > len){
+
+ suggestions.removeChild(childs[i])
+ }
+
+ }
+
+ function accept_suggestion(){
+
+ while(suggestions.lastChild){
+
+ suggestions.removeChild(suggestions.lastChild);
+ }
+
+ return false;
+ }
+
+}());
diff --git a/docs/themes/adidoks/static/js/main.js b/docs/themes/adidoks/static/js/main.js
new file mode 100644
index 0000000..a1f592e
--- /dev/null
+++ b/docs/themes/adidoks/static/js/main.js
@@ -0,0 +1,10 @@
+// Set Dark Mode
+document.getElementById('mode').addEventListener('click', () => {
+ document.body.classList.toggle('dark');
+ localStorage.setItem('theme', document.body.classList.contains('dark') ? 'dark' : 'light');
+});
+
+// enforce local storage setting but also fallback to user-agent preferences
+if (localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia("(prefers-color-scheme: dark)").matches)) {
+ document.body.classList.add('dark');
+}
diff --git a/docs/themes/adidoks/static/js/search.js b/docs/themes/adidoks/static/js/search.js
new file mode 100644
index 0000000..bcaa567
--- /dev/null
+++ b/docs/themes/adidoks/static/js/search.js
@@ -0,0 +1,315 @@
+var suggestions = document.getElementById('suggestions');
+var userinput = document.getElementById('userinput');
+
+document.addEventListener('keydown', inputFocus);
+
+function inputFocus(e) {
+
+ if (e.keyCode === 191
+ && document.activeElement.tagName !== "INPUT"
+ && document.activeElement.tagName !== "TEXTAREA") {
+ e.preventDefault();
+ userinput.focus();
+ }
+
+ if (e.keyCode === 27 ) {
+ userinput.blur();
+ suggestions.classList.add('d-none');
+ }
+
+}
+
+document.addEventListener('click', function(event) {
+
+ var isClickInsideElement = suggestions.contains(event.target);
+
+ if (!isClickInsideElement) {
+ suggestions.classList.add('d-none');
+ }
+
+});
+
+
+// Source:
+// - https://dev.to/shubhamprakash/trap-focus-using-javascript-6a3
+document.addEventListener('keydown',suggestionFocus);
+
+function suggestionFocus(e){
+ const focusableSuggestions= suggestions.querySelectorAll('a');
+ if (suggestions.classList.contains('d-none')
+ || focusableSuggestions.length === 0) {
+ return;
+ }
+
+ const focusable= [...focusableSuggestions];
+ const index = focusable.indexOf(document.activeElement);
+
+ let nextIndex = 0;
+
+ if (e.keyCode === 38) {
+ e.preventDefault();
+ nextIndex= index > 0 ? index-1 : 0;
+ focusableSuggestions[nextIndex].focus();
+ }
+ else if (e.keyCode === 40) {
+ e.preventDefault();
+ nextIndex= index+1 < focusable.length ? index+1 : index;
+ focusableSuggestions[nextIndex].focus();
+ }
+}
+
+/*
+Source:
+ - https://github.com/nextapps-de/flexsearch#index-documents-field-search
+ - https://raw.githack.com/nextapps-de/flexsearch/master/demo/autocomplete.html
+ - http://elasticlunr.com/
+ - https://github.com/getzola/zola/blob/master/docs/static/search.js
+*/
+(function(){
+ var index = elasticlunr.Index.load(window.searchIndex);
+ userinput.addEventListener('input', show_results, true);
+ suggestions.addEventListener('click', accept_suggestion, true);
+
+ function show_results(){
+ var value = this.value.trim();
+ var options = {
+ bool: "OR",
+ fields: {
+ title: {boost: 2},
+ body: {boost: 1},
+ }
+ };
+ var results = index.search(value, options);
+
+ var entry, childs = suggestions.childNodes;
+ var i = 0, len = results.length;
+ var items = value.split(/\s+/);
+ suggestions.classList.remove('d-none');
+
+ results.forEach(function(page) {
+ if (page.doc.body !== '') {
+ entry = document.createElement('div');
+
+ entry.innerHTML = ' ';
+
+ a = entry.querySelector('a'),
+ t = entry.querySelector('span:first-child'),
+ d = entry.querySelector('span:nth-child(2)');
+ a.href = page.ref;
+ t.textContent = page.doc.title;
+ d.innerHTML = makeTeaser(page.doc.body, items);
+
+ suggestions.appendChild(entry);
+ }
+ });
+
+ while(childs.length > len){
+ suggestions.removeChild(childs[i])
+ }
+
+ }
+
+ function accept_suggestion(){
+
+ while(suggestions.lastChild){
+
+ suggestions.removeChild(suggestions.lastChild);
+ }
+
+ return false;
+ }
+
+ // Taken from mdbook
+ // The strategy is as follows:
+ // First, assign a value to each word in the document:
+ // Words that correspond to search terms (stemmer aware): 40
+ // Normal words: 2
+ // First word in a sentence: 8
+ // Then use a sliding window with a constant number of words and count the
+ // sum of the values of the words within the window. Then use the window that got the
+ // maximum sum. If there are multiple maximas, then get the last one.
+ // Enclose the terms in .
+ function makeTeaser(body, terms) {
+ var TERM_WEIGHT = 40;
+ var NORMAL_WORD_WEIGHT = 2;
+ var FIRST_WORD_WEIGHT = 8;
+ var TEASER_MAX_WORDS = 30;
+
+ var stemmedTerms = terms.map(function (w) {
+ return elasticlunr.stemmer(w.toLowerCase());
+ });
+ var termFound = false;
+ var index = 0;
+ var weighted = []; // contains elements of ["word", weight, index_in_document]
+
+ // split in sentences, then words
+ var sentences = body.toLowerCase().split(". ");
+ for (var i in sentences) {
+ var words = sentences[i].split(/[\s\n]/);
+ var value = FIRST_WORD_WEIGHT;
+ for (var j in words) {
+
+ var word = words[j];
+
+ if (word.length > 0) {
+ for (var k in stemmedTerms) {
+ if (elasticlunr.stemmer(word).startsWith(stemmedTerms[k])) {
+ value = TERM_WEIGHT;
+ termFound = true;
+ }
+ }
+ weighted.push([word, value, index]);
+ value = NORMAL_WORD_WEIGHT;
+ }
+
+ index += word.length;
+ index += 1; // ' ' or '.' if last word in sentence
+ }
+
+ index += 1; // because we split at a two-char boundary '. '
+ }
+
+ if (weighted.length === 0) {
+ if (body.length !== undefined && body.length > TEASER_MAX_WORDS * 10) {
+ return body.substring(0, TEASER_MAX_WORDS * 10) + '...';
+ } else {
+ return body;
+ }
+ }
+
+ var windowWeights = [];
+ var windowSize = Math.min(weighted.length, TEASER_MAX_WORDS);
+ // We add a window with all the weights first
+ var curSum = 0;
+ for (var i = 0; i < windowSize; i++) {
+ curSum += weighted[i][1];
+ }
+ windowWeights.push(curSum);
+
+ for (var i = 0; i < weighted.length - windowSize; i++) {
+ curSum -= weighted[i][1];
+ curSum += weighted[i + windowSize][1];
+ windowWeights.push(curSum);
+ }
+
+ // If we didn't find the term, just pick the first window
+ var maxSumIndex = 0;
+ if (termFound) {
+ var maxFound = 0;
+ // backwards
+ for (var i = windowWeights.length - 1; i >= 0; i--) {
+ if (windowWeights[i] > maxFound) {
+ maxFound = windowWeights[i];
+ maxSumIndex = i;
+ }
+ }
+ }
+
+ var teaser = [];
+ var startIndex = weighted[maxSumIndex][2];
+ for (var i = maxSumIndex; i < maxSumIndex + windowSize; i++) {
+ var word = weighted[i];
+ if (startIndex < word[2]) {
+ // missing text from index to start of `word`
+ teaser.push(body.substring(startIndex, word[2]));
+ startIndex = word[2];
+ }
+
+ // add around search terms
+ if (word[1] === TERM_WEIGHT) {
+ teaser.push("");
+ }
+
+ startIndex = word[2] + word[0].length;
+ // Check the string is ascii characters or not
+ var re = /^[\x00-\xff]+$/
+ if (word[1] !== TERM_WEIGHT && word[0].length >= 12 && !re.test(word[0])) {
+ // If the string's length is too long, it maybe a Chinese/Japance/Korean article
+ // if using substring method directly, it may occur error codes on emoji chars
+ var strBefor = body.substring(word[2], startIndex);
+ var strAfter = substringByByte(strBefor, 12);
+ teaser.push(strAfter);
+ } else {
+ teaser.push(body.substring(word[2], startIndex));
+ }
+
+ if (word[1] === TERM_WEIGHT) {
+ teaser.push(" ");
+ }
+ }
+ teaser.push("…");
+ return teaser.join("");
+ }
+}());
+
+
+// Get substring by bytes
+// If using JavaScript inline substring method, it will return error codes
+// Source: https://www.52pojie.cn/thread-1059814-1-1.html
+function substringByByte(str, maxLength) {
+ var result = "";
+ var flag = false;
+ var len = 0;
+ var length = 0;
+ var length2 = 0;
+ for (var i = 0; i < str.length; i++) {
+ var code = str.codePointAt(i).toString(16);
+ if (code.length > 4) {
+ i++;
+ if ((i + 1) < str.length) {
+ flag = str.codePointAt(i + 1).toString(16) == "200d";
+ }
+ }
+ if (flag) {
+ len += getByteByHex(code);
+ if (i == str.length - 1) {
+ length += len;
+ if (length <= maxLength) {
+ result += str.substr(length2, i - length2 + 1);
+ } else {
+ break
+ }
+ }
+ } else {
+ if (len != 0) {
+ length += len;
+ length += getByteByHex(code);
+ if (length <= maxLength) {
+ result += str.substr(length2, i - length2 + 1);
+ length2 = i + 1;
+ } else {
+ break
+ }
+ len = 0;
+ continue;
+ }
+ length += getByteByHex(code);
+ if (length <= maxLength) {
+ if (code.length <= 4) {
+ result += str[i]
+ } else {
+ result += str[i - 1] + str[i]
+ }
+ length2 = i + 1;
+ } else {
+ break
+ }
+ }
+ }
+ return result;
+}
+
+// Get the string bytes from binary
+function getByteByBinary(binaryCode) {
+ // Binary system, starts with `0b` in ES6
+ // Octal number system, starts with `0` in ES5 and starts with `0o` in ES6
+ // Hexadecimal, starts with `0x` in both ES5 and ES6
+ var byteLengthDatas = [0, 1, 2, 3, 4];
+ var len = byteLengthDatas[Math.ceil(binaryCode.length / 8)];
+ return len;
+}
+
+// Get the string bytes from hexadecimal
+function getByteByHex(hexCode) {
+ return getByteByBinary(parseInt(hexCode, 16).toString(2));
+}
diff --git a/docs/themes/adidoks/static/logo-doks.png b/docs/themes/adidoks/static/logo-doks.png
new file mode 100644
index 0000000..74bdfb9
Binary files /dev/null and b/docs/themes/adidoks/static/logo-doks.png differ
diff --git a/docs/themes/adidoks/static/plugins/elasticlunr.min.js b/docs/themes/adidoks/static/plugins/elasticlunr.min.js
new file mode 100644
index 0000000..94b20dd
--- /dev/null
+++ b/docs/themes/adidoks/static/plugins/elasticlunr.min.js
@@ -0,0 +1,10 @@
+/**
+ * elasticlunr - http://weixsong.github.io
+ * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5
+ *
+ * Copyright (C) 2017 Oliver Nightingale
+ * Copyright (C) 2017 Wei Song
+ * MIT Licensed
+ * @license
+ */
+!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();o
+
+
+
+
+
+
+ Page not found :(
+ The page you are looking for doesn't exist or has been moved.
+
+
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/authors/list.html b/docs/themes/adidoks/templates/authors/list.html
new file mode 100644
index 0000000..03c6f6c
--- /dev/null
+++ b/docs/themes/adidoks/templates/authors/list.html
@@ -0,0 +1,62 @@
+{% extends "section.html" %}
+
+{% block seo %}
+ {% set title_addition = "" %}
+ {% if config.extra.title_separator %}
+ {% set title_separator = " " ~ config.extra.title_separator ~ " " %}
+ {% else %}
+ {% set title_separator = " | " %}
+ {% endif %}
+
+ {% set_global section = get_section(path="authors/_index.md") %}
+ {% if section.title and config.title %}
+ {% set title = section.title %}
+ {% set title_addition = title_separator ~ config.title %}
+ {% elif section.title %}
+ {% set title = section.title %}
+ {% else %}
+ {% set title = config.title %}
+ {% endif %}
+
+ {% if page.description %}
+ {% set description = section.description %}
+ {% else %}
+ {% set description = config.description %}
+ {% endif %}
+
+ {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }}
+{% endblock seo %}
+
+{% block body %}
+ {% if section.extra.class %}
+ {% set page_class = section.extra.class %}
+ {% else %}
+ {% set page_class = "contributors list" %}
+ {% endif %}
+{% endblock body %}
+
+{% block content %}
+
+
+
+
+
+ {{ section.title }}
+ {{ section.content | safe }}
+
+ {% for term in terms %}
+
+ {% endfor %}
+
+
+
+
+
+
+{% endblock content %}
+
+
diff --git a/docs/themes/adidoks/templates/authors/single.html b/docs/themes/adidoks/templates/authors/single.html
new file mode 100644
index 0000000..6632181
--- /dev/null
+++ b/docs/themes/adidoks/templates/authors/single.html
@@ -0,0 +1,72 @@
+{% extends "page.html" %}
+
+{% block seo %}
+ {% set author_name_in_url = term.permalink | trim_end_matches(pat="/") | split(pat="/") | last %}
+ {% set section = get_section(path="authors/_index.md") %}
+
+ {% if section.extra.author_pages[author_name_in_url] %}
+ {% set_global author_page = get_page(path=section.extra.author_pages[author_name_in_url])%}
+ {% endif %}
+ {% if author_page and author_page.title %}
+ {% set_global title = author_page.title %}
+ {% else %}
+ {% set_global title = term.name %}
+ {% endif %}
+
+ {% set title_addition = "" %}
+ {% if config.extra.title_separator %}
+ {% set title_separator = " " ~ config.extra.title_separator ~ " " %}
+ {% else %}
+ {% set title_separator = " | " %}
+ {% endif %}
+
+ {% if config.title %}
+ {% set title_addition = title_separator ~ config.title %}
+ {% else %}
+ {% set title_addition = "" %}
+ {% endif %}
+
+ {% if author_page and author_page.description %}
+ {% set description = author_page.description %}
+ {% else %}
+ {% set description = config.description %}
+ {% endif %}
+
+ {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }}
+{% endblock seo %}
+
+{% block body %}
+ {% if page.extra.class %}
+ {% set page_class = page.extra.class %}
+ {% else %}
+ {% set page_class = "contributors list" %}
+ {% endif %}
+{% endblock body %}
+
+{% block content %}
+
+
+
+
+
+ {{ title }}
+ {% if author_page and author_page.content %}{{ author_page.content | safe }}
{% endif %}
+
+ {% for page in term.pages %}
+
+
+
+ {% if page.extra.lead %}
{{ page.extra.lead | safe }}
{% elif page.description %}
{{ page.description | safe }}
{% endif %}
+ {{ macros_publish::page_publish_metadata(page=page) }}
+
+
+ {% endfor %}
+
+
+
+
+
+
+{% endblock content %}
+
+
diff --git a/docs/themes/adidoks/templates/base.html b/docs/themes/adidoks/templates/base.html
new file mode 100644
index 0000000..c5a12d7
--- /dev/null
+++ b/docs/themes/adidoks/templates/base.html
@@ -0,0 +1,46 @@
+{%- import 'macros/head.html' as macros_head -%}
+{% import 'macros/math.html' as macros_math -%}
+{% import 'macros/header.html' as macros_header -%}
+{% import 'macros/footer.html' as macros_footer -%}
+{% import 'macros/javascript.html' as macros_js -%}
+{% import 'macros/page-publish-metadata.html' as macros_publish -%}
+{% import 'macros/section-navigation.html' as macros_section_nav -%}
+{% import 'macros/docs-sidebar.html' as macros_sidebar -%}
+{% import 'macros/docs-edit-page.html' as macros_edit_page -%}
+{% import 'macros/docs-navigation.html' as macros_navigation -%}
+{% import 'macros/docs-toc.html' as macros_toc -%}
+
+
+
+
+
+
+{{ macros_head::resource() }}
+{{ macros_head::stylesheet() }}
+
+{% block seo %}
+ {% if config.extra.title_separator %}
+ {% set title_separator = " " ~ config.extra.title_separator ~ " " %}
+ {% else %}
+ {% set title_separator = " | " %}
+ {% endif %}
+{% endblock seo %}
+
+{{ macros_head::favicons() }}
+{% block math %}{{ macros_math::math() }}{% endblock math %}
+
+{% block body %}{% set page_class="home" %}{% endblock body %}
+
+ {% block header %}
+ {{ macros_header::header(current_section="/") }}
+ {% endblock header %}
+
+ {% block content %}{% endblock content %}
+
+ {% block footer %}
+ {{ macros_footer::footer() }}
+ {% endblock footer %}
+
+ {{ macros_js::javascript() }}
+
+
diff --git a/docs/themes/adidoks/templates/blog/page.html b/docs/themes/adidoks/templates/blog/page.html
new file mode 100644
index 0000000..ac334f9
--- /dev/null
+++ b/docs/themes/adidoks/templates/blog/page.html
@@ -0,0 +1,36 @@
+{# Default page template used for blog contents #}
+
+{% extends "page.html" %}
+
+{% block seo %}
+ {# This value is matched by the config.extra.menu.main->section #}
+ {% set_global current_section = 'blog' %}
+ {{ super() }}
+{% endblock seo %}
+
+{% block body %}
+ {% set page_class = "blog single" %}
+{% endblock body %}
+
+{% block header %}
+ {{ macros_header::header(current_section=current_section)}}
+{% endblock header %}
+
+{% block content %}
+
+
+
+
+
+
+ {% if page.extra.lead %}{{ page.extra.lead | safe }}
{% endif %}
+ {{ page.content | safe }}
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/blog/section.html b/docs/themes/adidoks/templates/blog/section.html
new file mode 100644
index 0000000..2223766
--- /dev/null
+++ b/docs/themes/adidoks/templates/blog/section.html
@@ -0,0 +1,40 @@
+{% extends "section.html" %}
+
+{% block body %}
+ {% set page_class = "blog list" %}
+{% endblock body %}
+
+{% block header %}
+ {# This value is matched by the config.extra.menu.main->section #}
+ {% set current_section = "blog" %}
+ {{ macros_header::header(current_section=current_section)}}
+{% endblock header %}
+
+{% block content %}
+
+
+
+
+
+ {{ section.title }}
+
+ {% for page in paginator.pages %}
+
+
+
+ {% if page.extra.lead %}
+
{{ page.extra.lead | safe }}
{% elif page.description %}
{{ page.description | safe }}
{% endif %}
+ {{ macros_publish::page_publish_metadata(page=page) }}
+
+
+ {% endfor %}
+ {% if paginator.previous or paginator.next %}
+ {{ macros_section_nav::navigation(paginator=paginator) }}
+ {% endif %}
+
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/docs/page.html b/docs/themes/adidoks/templates/docs/page.html
new file mode 100644
index 0000000..d215d83
--- /dev/null
+++ b/docs/themes/adidoks/templates/docs/page.html
@@ -0,0 +1,31 @@
+{% extends "page.html" %}
+
+{% block body %}
+ {% set page_class = "docs single" %}
+{% endblock body %}
+
+{% block header %}
+ {# This value is matched by the config.extra.menu.main~url #}
+ {% set current_section = "docs" %}
+ {{ macros_header::header(current_section=current_section)}}
+{% endblock header %}
+
+{% block content %}
+
+
+
+ {{ macros_sidebar::docs_sidebar(current_section=current_section) }}
+ {{ macros_toc::docs_toc(page=page) }}
+
+ {{ page.title }}
+ {% if page.extra.lead %}{{ page.extra.lead | safe }}
{% endif %}
+ {{ page.content | safe }}
+ {% if config.extra.edit_page %}
+ {{ macros_edit_page::docs_edit_page(current_path=current_path) }}
+ {% endif %}
+ {{ macros_navigation::docs_navigation(page=page, current_section=current_section) }}
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/docs/section.html b/docs/themes/adidoks/templates/docs/section.html
new file mode 100644
index 0000000..9f64835
--- /dev/null
+++ b/docs/themes/adidoks/templates/docs/section.html
@@ -0,0 +1,49 @@
+{% extends "section.html" %}
+
+{% block body %}
+ {% set page_class = "docs list" %}
+{% endblock body %}
+
+{% block header %}
+ {# This value is matched by the config.extra.menu.main~section #}
+ {% set current_section = "docs" %}
+ {{ macros_header::header(current_section=current_section)}}
+{% endblock header %}
+
+{% block content %}
+
+
+
+
+
+ {{ section.title }}
+ {{ section.content | safe }}
+
+ {% set index_path = current_path ~ "_index.md" | trim_start_matches(pat="/") %}
+ {% set index = get_section(path=index_path) %}
+ {% for page in index.pages %}
+
+ {% endfor %}
+ {% for s in index.subsections %}
+ {% set subsection = get_section(path=s) %}
+ {% if subsection.pages %}
+ {% for page in subsection.pages %}
+
+ {% endfor %}
+ {% endif %}
+ {% endfor %}
+
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/index.html b/docs/themes/adidoks/templates/index.html
new file mode 100644
index 0000000..3cd57ce
--- /dev/null
+++ b/docs/themes/adidoks/templates/index.html
@@ -0,0 +1,68 @@
+{% extends "base.html" %}
+
+{% block seo %}
+{{ super() }}
+
+{% if config.title %}
+{% set title = config.title %}
+{% else %}
+{% set title = "" %}
+{% endif %}
+
+{% if config.extra.title_addition and title %}
+{% set title_addition = title_separator ~ config.extra.title_addition %}
+{% elif config.extra.title_addition %}
+{% set title_addition = config.extra.title_addition %}
+{% else %}
+{% set title_addition = "" %}
+{% endif %}
+
+{% set description = config.description %}
+
+{{ macros_head::seo(title=title, title_addition=title_addition, description=description, is_home=true) }}
+{% endblock seo %}
+
+{% block content %}
+
+
+
+
+
+ {% if section.extra.list %}
+ {% for val in section.extra.list %}
+
+
{{ val.title }}
+
{{ val.content | safe }}
+
+ {% endfor %}
+ {% endif %}
+
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/macros/docs-edit-page.html b/docs/themes/adidoks/templates/macros/docs-edit-page.html
new file mode 100644
index 0000000..7b8e18d
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/docs-edit-page.html
@@ -0,0 +1,3 @@
+{% macro docs_edit_page(current_path) %}
+ Edit this page on GitHub
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/docs-navigation.html b/docs/themes/adidoks/templates/macros/docs-navigation.html
new file mode 100644
index 0000000..321519d
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/docs-navigation.html
@@ -0,0 +1,107 @@
+{% macro docs_navigation(page, current_section) %}
+
+ {# Find lighter navigation. There are three types: #}
+ {# 1. directly find the lighter if exists, #}
+ {# 2. find the last page in the previous sibling section, and #}
+ {# 3. find the last page in the parent section. #}
+ {% if page.lighter %}
+
+
+
+ ← {{ page.lighter.title }}
+
+
+
+ {% elif not page.extra.top %}
+ {% set index = get_section(path=page.ancestors | reverse | first) %}
+ {% set parent = get_section(path=index.ancestors | reverse | first)%}
+ {% set first_subsection = get_section(path=parent.subsections | first) %}
+ {% if index == first_subsection %}
+ {% if parent.pages %}
+ {% set last_page = parent.pages | last %}
+
+
+
+ ← {{ last_page.title }}
+
+
+
+ {% endif %}
+ {% else %}
+ {% for s in parent.subsections | reverse %}
+ {% set subsection = get_section(path=s) %}
+ {% if subsection.permalink == index.permalink %}
+ {% set_global found_current = true %}
+ {% else %}
+ {% if found_current %}
+ {% if subsection.pages %}
+ {% set last_page = subsection.pages | last %}
+
+
+
+ ← {{ last_page.title }}
+
+
+
+ {% endif %}
+ {# no break #}
+ {% set_global found_current = false %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+ {% endif %}
+
+ {# Find heavier navigation. There are also three types: #}
+ {# 1. directly find the heavier if exists, #}
+ {# 2. find the first page in the subsection, and #}
+ {# 3. find the first page in the next sibling section. #}
+ {% if page.heavier %}
+
+
+
+ {{ page.heavier.title }} →
+
+
+
+ {% elif page.extra.top %}
+ {% set index_path = current_section ~ "/_index.md" | trim_start_matches(pat="/") %}
+ {% set index = get_section(path=index_path) %}
+ {% set first_subsection = get_section(path=index.subsections | first) %}
+ {% if first_subsection.pages %}
+ {% set first_page = first_subsection.pages | first %}
+
+
+
+ {{ first_page.title }} →
+
+
+
+ {% endif %}
+ {% else %}
+ {% set index = get_section(path=page.ancestors | reverse | first) %}
+ {% set parent = get_section(path=index.ancestors | reverse | first)%}
+ {% for s in parent.subsections %}
+ {% set subsection = get_section(path=s) %}
+ {% if subsection.permalink == index.permalink %}
+ {% set_global found_current = true %}
+ {% else %}
+ {% if found_current %}
+ {% if subsection.pages %}
+ {% set first_page = subsection.pages | first %}
+
+
+
+ {{ first_page.title }} →
+
+
+
+ {% endif %}
+ {# no break #}
+ {% set_global found_current = false %}
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+ {% endif %}
+
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/docs-sidebar.html b/docs/themes/adidoks/templates/macros/docs-sidebar.html
new file mode 100644
index 0000000..dfe45bd
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/docs-sidebar.html
@@ -0,0 +1,29 @@
+{% macro docs_sidebar(current_section) %}
+
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/docs-toc.html b/docs/themes/adidoks/templates/macros/docs-toc.html
new file mode 100644
index 0000000..7dda64a
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/docs-toc.html
@@ -0,0 +1,23 @@
+{% macro docs_toc(page) %}
+ {% if page.extra.toc %}
+
+
+
On this page
+
+
+ {% for h1 in page.toc %}
+ {{ h1.title }}
+ {% if h1.children %}
+
+ {% endif %}
+ {% endfor %}
+
+
+
+
+ {% endif %}
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/footer.html b/docs/themes/adidoks/templates/macros/footer.html
new file mode 100644
index 0000000..013843b
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/footer.html
@@ -0,0 +1,26 @@
+{% macro footer() %}
+
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/head.html b/docs/themes/adidoks/templates/macros/head.html
new file mode 100644
index 0000000..8d4df0c
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/head.html
@@ -0,0 +1,264 @@
+{% macro resource() %}
+
+
+{% endmacro %}
+
+
+{% macro stylesheet() %}
+
+{% endmacro %}
+
+
+{% macro favicons() %}
+
+
+
+
+ {% if not config.extra.is_netlify %}
+
+ {% endif %}
+{% endmacro %}
+
+
+{# type: website or article, generally setting article for blog articles #}
+{# page_images: using for the blog single template page #}
+{# page_section: the blog single template page have to pass the parameter #}
+{# is_404: using for the 404.html template #}
+{% macro seo(
+ title="",
+ title_addition="",
+ description="",
+ type="website",
+ is_home=false,
+ is_404=false,
+ is_page=false,
+ page_images="",
+ page_section="",
+ created_time="2021-05-01T08:08:00+08:00",
+ updated_time="2021-05-01T08:08:08+08:00"
+ )
+%}
+
+{% if is_404 %}
+
+{% else %}
+
+
+
+{% endif %}
+{% if current_url %}
+ {% set page_url = current_url %}
+{% else %}
+ {% set page_url = get_url(path="404.html") %}
+{% endif %}
+{% if current_path %}
+ {% set page_path = current_path %}
+{% else %}
+ {% set page_path = "/404.html" %}
+{% endif %}
+{{ title ~ title_addition }}
+
+
+
+{% if config.extra.open.enable %}
+
+ {% if page.extra.images %}
+ {% for image in page.extra.images %}
+
+ {% endfor %}
+ {% elif section.extra.images %}
+ {% for image in section.extra.images %}
+
+ {% endfor %}
+ {% elif config.extra.open.image %}
+
+ {% endif %}
+
+
+
+
+
+
+
+
+
+
+ {% if page.extra.images %}
+ {% for image in page.extra.images %}
+
+ {% endfor %}
+ {% elif section.extra.images %}
+ {% for image in section.extra.images %}
+
+ {% endfor %}
+ {% elif config.extra.open.image %}
+
+ {% endif %}
+
+
+
+
+ {% if config.extra.open.audio %}
+
+ {% endif %}
+
+ {% if config.extra.open.locale %}
+
+ {% endif %}
+
+ {% if config.extra.open.videos %}
+ {% for video in config.extra.open.videos %}
+
+ {% endfor %}
+ {% endif %}
+
+
+
+{% endif %}
+
+{% if is_home and config.extra.schema %}
+ {% if config.extra.schema.type == "Organization" %}
+
+ {% endif %}
+ {% if config.extra.schema.type == "Person" %}
+
+ {% endif %}
+ {% if config.extra.schema.site_links_search_box %}
+
+ {% endif %}
+{% endif %}
+
+{% if is_page and config.extra.schema.section %}
+ {% if config.extra.schema.section == page_section %}
+
+ {% endif %}
+{% endif %}
+
+{% set url_prefix = get_url(path="/") | split(pat="://") | first %}
+{% set url_main = get_url(path="/") | split(pat="://") | last %}
+{% set url_item = url_prefix ~ "://" ~ url_main ~ "/" %}
+
+
+{% if config.extra.ganalytics %}
+
+
+{% endif %}
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/header.html b/docs/themes/adidoks/templates/macros/header.html
new file mode 100644
index 0000000..d589716
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/header.html
@@ -0,0 +1,68 @@
+{% macro header(current_section) %}
+
+
+
+
+
+
{{ config.title | default(value="AdiDoks") }}
+
+
+
+
+
+
+
+ {% if lang == config.default_language %}
+ {% set rootsectionpath = "_index.md" %}
+ {% else %}
+ {% set rootsectionpath = "_index." ~ lang ~ ".md" %}
+ {% endif %}
+ {% set mainsec = get_section(path=rootsectionpath) %}
+ {% if mainsec.extra.menu.main %}
+ {% for val in mainsec.extra.menu.main %}
+
+ {{ val.name }}
+
+ {% endfor %}
+ {% elif config.extra.menu.main %}
+ {% for val in config.extra.menu.main %}
+
+ {{ val.name }}
+
+ {% endfor %}
+ {% else %}
+
+ Docs
+
+
+ Blog
+
+ {% endif %}
+
+
+ {% if config.build_search_index %}
+
+ {% endif %}
+
+
+
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/javascript.html b/docs/themes/adidoks/templates/macros/javascript.html
new file mode 100644
index 0000000..7d5e387
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/javascript.html
@@ -0,0 +1,8 @@
+{% macro javascript() %}
+
+{% if config.build_search_index %}
+
+
+
+{% endif %}
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/math.html b/docs/themes/adidoks/templates/macros/math.html
new file mode 100644
index 0000000..bb893f6
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/math.html
@@ -0,0 +1,26 @@
+{% macro math() %}
+ {% if page.extra.math or section.extra.math or config.extra.math %}
+ {% if config.extra.library and config.extra.library == "mathjax" %}
+
+
+ {% else %}
+
+
+
+
+ {% endif %}
+ {% endif %}
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/page-publish-metadata.html b/docs/themes/adidoks/templates/macros/page-publish-metadata.html
new file mode 100644
index 0000000..700ccba
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/page-publish-metadata.html
@@ -0,0 +1,3 @@
+{% macro page_publish_metadata(page) %}
+Posted {{ page.date | date(format=config.extra.timeformat | default(value="%Y-%m-%d %H:%M:%S"), timezone=config.extra.timezone | default(value="America/New_York")) }}{% if page.taxonomies.authors and config.taxonomies %} by {% for author in page.taxonomies.authors %}{% if author_flag %} and {% endif %}{{ author }} {% set_global author_flag = true %}{% endfor %}{% endif %} ‐ {{ page.reading_time }} min read
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/macros/section-navigation.html b/docs/themes/adidoks/templates/macros/section-navigation.html
new file mode 100644
index 0000000..f0e4a5d
--- /dev/null
+++ b/docs/themes/adidoks/templates/macros/section-navigation.html
@@ -0,0 +1,22 @@
+{% macro navigation(paginator) %}
+
+ {% if paginator.previous %}
+
+
+
+ {% endif %}
+ {% if paginator.next %}
+
+
+
+ {% endif %}
+
+{% endmacro %}
diff --git a/docs/themes/adidoks/templates/page.html b/docs/themes/adidoks/templates/page.html
new file mode 100644
index 0000000..54873bd
--- /dev/null
+++ b/docs/themes/adidoks/templates/page.html
@@ -0,0 +1,57 @@
+{# Default page.html template #}
+
+{% extends "base.html" %}
+
+{% block seo %}
+ {{ super() }}
+ {% set title_addition = "" %}
+ {% if page.title and config.title %}
+ {% set title = page.title %}
+ {% set title_addition = title_separator ~ config.title %}
+ {% elif page.title %}
+ {% set title = page.title %}
+ {% else %}
+ {% set title = config.title %}
+ {% endif %}
+
+ {% if page.description %}
+ {% set description = page.description %}
+ {% else %}
+ {% set description = config.description %}
+ {% endif %}
+ {% set created_time = page.date %}
+ {% set updated_time = page.updated %}
+ {% if current_section %}
+ {% set page_section = current_section %}
+ {% else %}
+ {% set page_section = "" %}
+ {% endif %}
+
+ {{ macros_head::seo(title=title, title_addition=title_addition, description=description, type="article", is_page=true, created_time=created_time, updated_time=updated_time, page_section=page_section) }}
+{% endblock seo %}
+
+{% block body %}
+ {% if section.extra.class %}
+ {% set page_class = page.extra.class %}
+ {% else %}
+ {% set page_class = "page single" %}
+ {% endif %}
+{% endblock body %}
+
+{% block content %}
+
+
+
+
+
+
+ {% if page.extra.lead %}{{ page.extra.lead }}
{% endif %}
+ {{ page.content | safe }}
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/templates/robots.txt b/docs/themes/adidoks/templates/robots.txt
new file mode 100644
index 0000000..dd3f4f7
--- /dev/null
+++ b/docs/themes/adidoks/templates/robots.txt
@@ -0,0 +1,4 @@
+User-agent: *
+Allow: /
+
+Sitemap: {{config.base_url}}/sitemap.xml
diff --git a/docs/themes/adidoks/templates/section.html b/docs/themes/adidoks/templates/section.html
new file mode 100644
index 0000000..c996fb6
--- /dev/null
+++ b/docs/themes/adidoks/templates/section.html
@@ -0,0 +1,50 @@
+{# Default section.html template #}
+
+{% extends "base.html" %}
+
+{% block seo %}
+ {{ super() }}
+ {% set title_addition = "" %}
+
+ {% if section.title and config.title %}
+ {% set title = section.title %}
+ {% set title_addition = title_separator ~ config.title %}
+ {% elif section.title %}
+ {% set title = section.title %}
+ {% else %}
+ {% set title = config.title %}
+ {% endif %}
+
+ {% if section.description %}
+ {% set description = section.description %}
+ {% else %}
+ {% set description = config.description %}
+ {% endif %}
+
+ {{ macros_head::seo(title=title, title_addition=title_addition, description=description) }}
+{% endblock seo %}
+
+{% block body %}
+ {% if section.extra.class %}
+ {% set page_class = section.extra.class %}
+ {% else %}
+ {% set page_class = "page list" %}
+ {% endif %}
+{% endblock body %}
+
+{% block content %}
+
+
+
+
+
+
+ {{ section.content | safe }}
+
+
+
+
+
+{% endblock content %}
diff --git a/docs/themes/adidoks/theme.toml b/docs/themes/adidoks/theme.toml
new file mode 100644
index 0000000..a550f7f
--- /dev/null
+++ b/docs/themes/adidoks/theme.toml
@@ -0,0 +1,17 @@
+name = "adidoks"
+description = "AdiDoks is a Zola theme helping you build modern documentation."
+license = "MIT"
+homepage = "https://github.com/aaranxu/adidoks"
+min_version = "0.15.0"
+demo = "https://adidoks.netlify.app/"
+
+[extra]
+
+[author]
+name = "Aaran Xu"
+homepage = "https://github.com/aaranxu"
+
+[original]
+author = "h-enk"
+homepage = "https://getdoks.org/"
+repo = "https://github.com/h-enk/doks"