Skip to content

Commit 0a226a8

Browse files
committed
color mode fixes
1 parent 7965199 commit 0a226a8

17 files changed

Lines changed: 228 additions & 78 deletions

File tree

scss/_dialog.scss

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ $dialog-tokens: defaults(
2828
--dialog-border-width: var(--border-width),
2929
--dialog-border-radius: var(--border-radius-lg),
3030
--dialog-box-shadow: var(--box-shadow-lg),
31-
--dialog-backdrop-bg: rgba(0, 0, 0, .5),
31+
--dialog-backdrop-bg: rgb(0 0 0 / 50%),
32+
--dialog-backdrop-blur: 8px,
3233
--dialog-header-padding: 1rem,
3334
--dialog-header-border-color: var(--border-color),
3435
--dialog-header-border-width: var(--border-width),
@@ -80,6 +81,7 @@ $dialog-sizes: defaults(
8081
// Native backdrop styling via ::backdrop pseudo-element
8182
&::backdrop {
8283
background-color: var(--dialog-backdrop-bg);
84+
backdrop-filter: blur(var(--dialog-backdrop-blur));
8385
}
8486

8587
// Animation support using native [open] attribute

scss/_navbar.scss

Lines changed: 7 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ $navbar-tokens: defaults(
1919
--navbar-color: var(--fg-2),
2020
--navbar-hover-color: var(--fg-1),
2121
--navbar-disabled-color: var(--fg-3),
22-
--navbar-active-color: var(--fg),
22+
--navbar-active-color: var(--fg-body),
2323
--navbar-brand-padding-y: .75rem,
2424
--navbar-brand-margin-end: 1rem,
25-
--navbar-brand-font-size: var(--font-size-lg),
26-
--navbar-brand-color: var(--fg),
27-
--navbar-brand-hover-color: var(--fg),
25+
--navbar-brand-font-size: var(--font-size-md),
26+
--navbar-brand-font-weight: var(--font-weight-medium),
27+
--navbar-brand-color: var(--fg-body),
28+
--navbar-brand-hover-color: var(--fg-body),
2829
--navbar-nav-link-padding-x: .75rem,
2930
--navbar-toggler-width: 2rem,
3031
--navbar-toggler-padding-y: .25rem,
@@ -101,6 +102,7 @@ $navbar-dark-tokens: defaults(
101102
padding-bottom: var(--navbar-brand-padding-y);
102103
margin-inline-end: var(--navbar-brand-margin-end);
103104
font-size: var(--navbar-brand-font-size);
105+
font-weight: var(--navbar-brand-font-weight);
104106
color: var(--navbar-brand-color);
105107
text-decoration: none;
106108
white-space: nowrap;
@@ -168,46 +170,11 @@ $navbar-dark-tokens: defaults(
168170
//
169171
// Button for toggling the navbar when in its collapsed state
170172

171-
.navbar-btn-icon {
173+
.navbar-toggler {
172174
--btn-bg: transparent;
173175
--btn-hover-bg: var(--bg-1);
174176
}
175177

176-
// .navbar-toggler {
177-
// display: flex;
178-
// align-items: center;
179-
// justify-content: center;
180-
// width: var(--navbar-toggler-width);
181-
// aspect-ratio: 1 / 1;
182-
// // padding: var(--navbar-toggler-padding-y) var(--navbar-toggler-padding-x);
183-
// // font-size: var(--navbar-toggler-font-size);
184-
// // line-height: 1;
185-
// color: var(--navbar-color);
186-
// background-color: transparent;
187-
// border: 0;
188-
// // border: var(--border-width) solid var(--navbar-toggler-border-color);
189-
// @include border-radius(var(--navbar-toggler-border-radius));
190-
// @include transition(var(--navbar-toggler-transition));
191-
192-
// &:hover {
193-
// text-decoration: none;
194-
// }
195-
196-
// &:focus-visible {
197-
// text-decoration: none;
198-
// @include focus-ring(true);
199-
// }
200-
// }
201-
202-
// Navbar toggler icon (inline SVG)
203-
.navbar-toggler-icon {
204-
display: inline-block;
205-
width: 1rem;
206-
height: 1rem;
207-
color: var(--navbar-color);
208-
}
209-
210-
211178
// scss-docs-start navbar-expand-loop
212179
// Generate series of `.navbar-expand-*` responsive classes for configuring
213180
// where your navbar collapses and expands. Uses container queries so the

scss/_root.scss

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,17 @@ $root-tokens: defaults(
4747
--line-height-6xl: 1,
4848
// scss-docs-end root-font-size-variables
4949

50+
// scss-docs-start root-font-weight-variables
51+
--font-weight-lighter: lighter,
52+
--font-weight-light: 300,
53+
--font-weight-normal: 400,
54+
--font-weight-medium: 500,
55+
--font-weight-semibold: 600,
56+
--font-weight-bold: 700,
57+
--font-weight-bolder: bolder,
58+
// scss-docs-end root-font-weight-variables
59+
60+
// scss-docs-start root-body-variables
5061
--body-font-family: system-ui,
5162
--body-font-size: var(--font-size-base),
5263
--body-font-weight: #{$font-weight-base},
@@ -98,15 +109,16 @@ $root-tokens: defaults(
98109
// scss-docs-end root-focus-variables
99110

100111
// scss-docs-start root-form-variables
101-
--control-bg: var(--bg-body),
102-
--control-fg: var(--fg-body),
103112
--control-checked-bg: var(--primary-base),
104113
--control-checked-border-color: var(--control-checked-bg),
105114
--control-active-bg: var(--primary-base),
106115
--control-active-border-color: var(--control-active-bg),
107116
--control-disabled-bg: var(--bg-3),
108117
--control-disabled-opacity: .65,
109118

119+
--btn-input-fg: var(--fg-body),
120+
--btn-input-bg: var(--bg-body),
121+
110122
--btn-input-min-height: 2.5rem,
111123
--btn-input-padding-y: .375rem,
112124
--btn-input-padding-x: .75rem,
@@ -177,3 +189,11 @@ $root-tokens: defaults(
177189

178190
color-scheme: light dark;
179191
}
192+
193+
[data-bs-theme="dark"] {
194+
color-scheme: dark;
195+
}
196+
197+
[data-bs-theme="light"] {
198+
color-scheme: light;
199+
}

scss/forms/_chip-input.scss

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ $chip-input-tokens: defaults(
1313
--chip-input-padding-x: .75rem,
1414
--chip-input-gap: .375rem,
1515
--chip-input-ghost-min-width: 5rem,
16-
--control-color: var(--fg-body),
17-
--control-bg: var(--bg-body),
16+
--control-fg: var(--btn-input-fg),
17+
--control-bg: var(--btn-input-bg),
1818
--control-border-width: var(--border-width),
1919
--control-border-color: var(--border-color),
2020
--control-border-radius: var(--border-radius),
@@ -34,7 +34,7 @@ $chip-input-tokens: defaults(
3434
align-items: center;
3535
padding: var(--chip-input-padding-y) var(--chip-input-padding-x);
3636

37-
color: var(--control-color);
37+
color: var(--control-fg);
3838
background-color: var(--control-bg);
3939
border: var(--control-border-width) solid var(--control-border-color);
4040
@include border-radius(var(--control-border-radius), 0);

scss/forms/_form-control.scss

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ $form-control-tokens: defaults(
1818
--control-padding-x: var(--btn-input-padding-x),
1919
--control-font-size: var(--btn-input-font-size),
2020
--control-line-height: var(--btn-input-line-height),
21-
--control-color: var(--control-fg),
22-
--control-bg: var(--control-bg),
21+
--control-fg: var(--btn-input-fg),
22+
--control-bg: var(--btn-input-bg),
2323
--control-border-width: var(--border-width),
2424
--control-border-color: var(--border-color),
2525
--control-border-radius: var(--border-radius),
@@ -30,7 +30,7 @@ $form-control-tokens: defaults(
3030
--control-transition-timing: .15s ease-in-out,
3131
--control-transition: var(--control-transition-property) var(--control-transition-timing),
3232
--control-placeholder-color: var(--fg-3),
33-
--control-disabled-color: var(--control-color),
33+
--control-disabled-color: var(--control-fg),
3434
--control-disabled-bg: var(--bg-2),
3535
--control-disabled-border-color: var(--control-border-color),
3636
--control-select-bg: #{escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>"))},
@@ -62,7 +62,7 @@ $form-control-sizes: defaults(
6262
padding: var(--control-padding-y) var(--control-padding-x);
6363
font-size: var(--control-font-size);
6464
line-height: var(--control-line-height);
65-
color: var(--control-color);
65+
color: var(--control-fg);
6666
appearance: none;
6767
background-color: var(--control-bg);
6868
background-clip: padding-box;
@@ -146,7 +146,7 @@ $form-control-sizes: defaults(
146146
padding: var(--control-padding-y) var(--control-padding-x);
147147
margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);
148148
margin-inline-end: var(--control-padding-x);
149-
color: var(--control-color);
149+
color: var(--control-fg);
150150
@include gradient-bg(var(--control-action-bg));
151151
pointer-events: none;
152152
border-color: inherit;
@@ -173,7 +173,7 @@ $form-control-sizes: defaults(
173173
padding: var(--control-padding-y) 0;
174174
margin-bottom: 0; // match inputs if this class comes on inputs with default margins
175175
line-height: var(--control-line-height);
176-
color: var(--control-color);
176+
color: var(--control-fg);
177177
background-color: transparent;
178178
border: solid transparent;
179179
border-width: var(--control-border-width) 0;

scss/forms/_labels.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ $form-label-tokens: defaults(
2222
font-size: var(--label-font-size, var(--font-size-sm));
2323
font-style: var(--label-font-style, inherit);
2424
font-weight: var(--label-font-weight, inherit);
25-
color: var(--label-color, inherit);
25+
color: var(--label-color, var(--fg-body));
2626
}
2727

2828
.form-label {

scss/helpers/_stacks.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
.hstack#{$infix} {
2727
@include container-breakpoint-up($breakpoint) {
2828
--stack-direction: row;
29+
--stack-align-items: flex-start;
2930
}
3031
}
3132
}

site/src/content/docs/components/dialog.mdx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,28 @@ The markup for a dialog is straightforward:
7070
</button>
7171
```
7272

73+
## Dark dialog
74+
75+
To make a dialog dark, add `data-bs-theme="dark"` to the `<dialog>` element.
76+
77+
<dialog class="dialog" id="exampleDialogDark" data-bs-theme="dark">
78+
<div class="dialog-header">
79+
<h1 class="dialog-title">Dark dialog title</h1>
80+
<CloseButton dismiss="dialog" />
81+
</div>
82+
<div class="dialog-body">
83+
<p>This is a native dialog element, only it’s set to dark mode. It uses the browser's built-in modal behavior for accessibility and focus management.</p>
84+
</div>
85+
<div class="dialog-footer">
86+
<button type="button" class="btn btn-solid theme-secondary" data-bs-dismiss="dialog">Close</button>
87+
<button type="button" class="btn btn-solid theme-primary">Save changes</button>
88+
</div>
89+
</dialog>
90+
91+
<Example showMarkup={false} code={`<button type="button" class="btn btn-solid theme-primary" data-bs-toggle="dialog" data-bs-target="#exampleDialogDark">
92+
Open dark dialog
93+
</button>`} />
94+
7395
## Static backdrop
7496

7597
When `backdrop` is set to `static`, the dialog will not close when clicking outside of it. Click the button below to try it.

site/src/content/docs/components/navbar.mdx

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Here's a navbar that includes most supported sub-components and a responsive rig
1313
<ResizableExample code={`<nav class="navbar navbar-expand-md bg-1">
1414
<div class="container-fluid">
1515
<a class="navbar-brand" href="#">Navbar</a>
16-
<button class="btn btn-icon navbar-btn-icon" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvas" aria-controls="navbarOffcanvas" aria-expanded="false" aria-label="Toggle navigation">
16+
<button class="btn btn-icon navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvas" aria-controls="navbarOffcanvas" aria-expanded="false" aria-label="Toggle navigation">
1717
<svg class="navbar-toggler-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round">
1818
<path d="M1 3.5h14M1 8h14M1 12.5h14"/>
1919
</svg>
@@ -32,7 +32,7 @@ Here's a navbar that includes most supported sub-components and a responsive rig
3232
<a class="nav-link" href="#">Link</a>
3333
</li>
3434
<li class="nav-item dropdown">
35-
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
35+
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
3636
Dropdown
3737
</a>
3838
<ul class="dropdown-menu">
@@ -216,7 +216,7 @@ You can also use dropdowns in your navbar. Dropdown menus require a wrapping ele
216216
<a class="nav-link" href="#">Pricing</a>
217217
</li>
218218
<li class="nav-item dropdown">
219-
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
219+
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
220220
Dropdown link
221221
</a>
222222
<ul class="dropdown-menu">
@@ -321,12 +321,64 @@ Mix and match with other components and utilities as needed.
321321
</div>
322322
</nav>`} />
323323

324+
## Dark navbar
325+
326+
To make a navbar dark, add `data-bs-theme="dark"` to the `.navbar` element.
327+
328+
<ResizableExample code={`<nav class="navbar navbar-expand-md bg-1" data-bs-theme="dark">
329+
<div class="container-fluid">
330+
<a class="navbar-brand" href="#">Dark navbar</a>
331+
<button class="btn btn-icon navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarDarkOffcanvas" aria-controls="navbarDarkOffcanvas" aria-expanded="false" aria-label="Toggle navigation">
332+
<svg class="navbar-toggler-icon" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1" stroke-linecap="round">
333+
<path d="M1 3.5h14M1 8h14M1 12.5h14"/>
334+
</svg>
335+
</button>
336+
<div class="offcanvas offcanvas-end" tabindex="-1" id="navbarDarkOffcanvas" aria-labelledby="navbarDarkOffcanvasLabel">
337+
<div class="offcanvas-header">
338+
<h5 class="offcanvas-title" id="navbarDarkOffcanvasLabel">Menu</h5>
339+
<CloseButton dismiss="offcanvas" />
340+
</div>
341+
<div class="offcanvas-body mb-2 mb-md-0">
342+
<ul class="nav navbar-nav me-auto">
343+
<li class="nav-item">
344+
<a class="nav-link active" aria-current="page" href="#">Home</a>
345+
</li>
346+
<li class="nav-item">
347+
<a class="nav-link" href="#">Link</a>
348+
</li>
349+
<li class="nav-item dropdown">
350+
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-container="body" aria-expanded="false">
351+
Dropdown
352+
</a>
353+
<ul class="dropdown-menu">
354+
<li><a class="dropdown-item" href="#">Action</a></li>
355+
<li><a class="dropdown-item" href="#">Another action</a></li>
356+
<li><hr class="dropdown-divider"></li>
357+
<li><a class="dropdown-item" href="#">Something else here</a></li>
358+
</ul>
359+
</li>
360+
<li class="nav-item">
361+
<a class="nav-link disabled" aria-disabled="true">Disabled</a>
362+
</li>
363+
</ul>
364+
<form class="hstack gap-2" role="search">
365+
<input class="form-control" type="search" placeholder="Search" aria-label="Search"/>
366+
<button class="btn-solid btn-icon theme-secondary" type="submit">
367+
<svg class="bi" width="16" height="16"><use href="#search" /></svg>
368+
</button>
369+
</form>
370+
</div>
371+
</div>
372+
</div>
373+
</nav>`} />
374+
375+
324376
## Color schemes
325377

326378
Navbar themes are easier than ever thanks to Bootstrap's combination of Sass and CSS variables. The default is our "light navbar" for use with light background colors, but you can also apply `data-bs-theme="dark"` to the `.navbar` parent for dark background colors. Then, customize with `.bg-*` and additional utilities.
327379

328380
<ResizableExample className="d-flex flex-column gap-2" showMarkup={false} code={`
329-
<nav class="navbar navbar-expand-md bg-body border-bottom border-body" data-bs-theme="dark">
381+
<nav class="navbar navbar-expand-md" data-bs-theme="dark">
330382
<div class="container-fluid">
331383
<a class="navbar-brand" href="#">Navbar</a>
332384
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">

site/src/content/docs/components/navs-tabs.mdx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,21 @@ Classes are used throughout, so your markup can be super flexible. Use `<ul>`s l
3939
<a class="nav-link disabled" aria-disabled="true">Disabled</a>
4040
</nav>`} />
4141

42+
Where appropriate, you can also use `<button>` elements instead of `<a>` elements for the nav links. You can even mix and match—for example, by using buttons for dropdowns.
43+
44+
<Example code={`<nav class="nav">
45+
<a class="nav-link active" aria-current="page" href="#">Active</a>
46+
<a class="nav-link" href="#">Link</a>
47+
<button class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</button>
48+
<ul class="dropdown-menu">
49+
<li><a class="dropdown-item" href="#">Action</a></li>
50+
<li><a class="dropdown-item" href="#">Another action</a></li>
51+
<li><hr class="dropdown-divider"></li>
52+
<li><a class="dropdown-item" href="#">Something else here</a></li>
53+
</ul>
54+
<a class="nav-link disabled" aria-disabled="true">Disabled</a>
55+
</nav>`} />
56+
4257
## Available styles
4358

4459
Change the style of `.nav`s component with modifiers and utilities. Mix and match as needed, or build your own.

0 commit comments

Comments
 (0)