2
0
mirror of https://github.com/tenrok/bootstrap.git synced 2026-05-24 14:04:09 +03:00
Files
Mark Otto b85169ef1c Add dark mode support
Heavily WIP still, but this begins the process of implementing dark mode for our docs and across the project itself.

- Color modes are toggled in the docs navbar with a custom toggler, which stores the select color mode in local storage.
- Color modes can also be set via data attribute thanks to `data-theme` (with light or dark options available currently).
- Docs are heavily WIP for demonstrating the dark mode.
- In order to best implement color modes, I've spiked out a number of new Sass and CSS variables (e.g., `--bs-secondary-bg` and `--bs-tertiary-bg`). In addition, I've added new global CSS variables like `--bs-border-color` and more. So, in addition to general color modes and theming support, we get greater real-time customization, too.

Todos and open questions:

- [ ] Do we refer to these as themes or color modes?
- [ ] Do we provide a color mode toggler JS plugin?
- [ ] Update all components to better utilize global CSS variables so they can be more easily themed (e.g., see `$dropdown-*` Sass variable changes in the diff).
2022-02-24 17:19:14 -08:00

136 lines
3.0 KiB
SCSS

:root,
[data-theme="light"] {
--base00: #fff;
--base01: #f5f5f5;
--base02: #c8c8fa;
--base03: #565c64;
--base04: #030303;
--base05: #333;
--base06: #fff;
--base07: #b08800;
--base08: #ed6a43;
--base09: #0086b3;
--base0A: #795da3;
--base0B: #183691;
--base0C: #183691;
--base0D: #795da3;
--base0E: #a71d5d;
--base0F: #333;
}
[data-theme="dark"] {
--base00: #282c34;
--base01: #353b45;
--base02: #3e4451;
--base03: #545862;
--base04: #565c64;
--base05: #abb2bf;
--base06: #b6bdca;
--base07: #d19a66;
--base08: #e06c75;
--base09: #d19a66;
--base0A: #e5c07b;
--base0B: #98c379;
--base0C: #56b6c2;
--base0D: #61afef;
--base0E: #c678dd;
--base0F: #be5046;
}
.hll { background-color: #fff; }
.c { color: var(--base03); }
.err { color: var(--base08); }
.k { color: var(--base0E); }
.l { color: var(----base09); }
.n { color: var(--base08); }
.o { color: var(--base05); }
.p { color: var(--base05); }
.cm { color: var(--base04); }
.cp { color: var(--base08); }
.c1 { color: var(--base03); }
.cs { color: var(--base04); }
.gd { color: var(--base08); }
.ge { font-style: italic; }
.gh {
font-weight: 600;
color: #fff;
}
.gi { color: var(--base0C); }
.gp {
font-weight: 600;
color: var(--base04);
}
.gs { font-weight: 600; }
.gu {
font-weight: 600;
color: var(--base0C);
}
.kc { color: var(--base0E); }
.kd { color: var(--base0E); }
.kn { color: var(--base0C); }
.kp { color: var(--base0E); }
.kr { color: var(--base0E); }
.kt { color: var(--base0A); }
.ld { color: var(--base0C); }
.m { color: var(--base09); }
.s { color: var(--base0C); }
.na { color: var(--base0A); }
.nb { color: var(--base05); }
.nc { color: var(--base07); }
.no { color: var(--base08); }
.nd { color: var(--base07); }
.ni { color: var(--base08); }
.ne { color: var(--base08); }
.nf { color: var(--base0B); }
.nl { color: var(--base05); }
.nn { color: var(--base0A); }
.nx { color: var(--base0A); }
.py { color: var(--base08); }
.nt { color: var(--base08); }
.nv { color: var(--base08); }
.ow { color: var(--base0C); }
.w { color: #fff; }
.mf { color: var(--base09); }
.mh { color: var(--base09); }
.mi { color: var(--base09); }
.mo { color: var(--base09); }
.sb { color: var(--base0C); }
.sc { color: #fff; }
.sd { color: var(--base04); }
.s2 { color: var(--base0C); }
.se { color: var(--base09); }
.sh { color: var(--base0C); }
.si { color: var(--base09); }
.sx { color: var(--base0C); }
.sr { color: var(--base0C); }
.s1 { color: var(--base0C); }
.ss { color: var(--base0C); }
.bp { color: var(--base05); }
.vc { color: var(--base08); }
.vg { color: var(--base08); }
.vi { color: var(--base08); }
.il { color: var(--base09); }
// Color commas in rgba() values
.m + .o { color: var(--base03); }
// Fix bash
.language-sh .c { color: var(--base03); }
.chroma {
.language-bash,
.language-sh {
&::before {
color: #777;
content: "$ ";
user-select: none;
}
}
.language-powershell::before {
color: #009;
content: "PM> ";
user-select: none;
}
}