@wpmoo/ui 1.0.0-rc.6 → 1.0.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ASSET_LICENSE.md +1 -1
- package/README.md +37 -6
- package/certification.json +6 -2
- package/dist/assets/css/moo-ui.css +7799 -8113
- package/dist/assets/css/moo-ui.min.css +5 -5
- package/dist/assets/css/moo.css +707 -685
- package/dist/assets/css/moo.min.css +5 -5
- package/dist/js/chart.js +57 -5
- package/dist/js/chart.min.js +3 -3
- package/dist/js/combobox.js +1 -1
- package/dist/js/context-menu.js +1 -1
- package/dist/js/datatable.js +114 -213
- package/dist/js/datepicker.js +79 -37
- package/dist/js/datepicker.min.js +2 -2
- package/dist/js/moo-ui.js +169 -52
- package/dist/js/moo-ui.min.js +3 -3
- package/dist/js/sidebar.js +122 -175
- package/dist/js/slider.js +1 -1
- package/dist/js/theme-prepaint.js +91 -0
- package/dist/release-manifest.json +24 -0
- package/package.json +12 -8
- package/scss/_components.scss +1 -4
- package/scss/components/_alert.scss +1 -2
- package/scss/components/_card.scss +5 -5
- package/scss/components/_close_button.scss +8 -3
- package/scss/components/_dialog.scss +16 -0
- package/scss/components/_dropdown.scss +12 -7
- package/scss/components/_search_trigger.scss +62 -0
- package/scss/components/_sidebar.scss +1 -2
- package/scss/components/_switch.scss +13 -5
- package/scss/components/_tabs.scss +1 -1
- package/scss/components/sidebar/_base.scss +93 -0
- package/scss/components/sidebar/_collapsed.scss +9 -90
- package/scss/foundations/_backdrop.scss +128 -0
- package/scss/foundations/_scope.scss +8 -0
- package/scss/layouts/_app.scss +77 -0
- package/scss/layouts/app/sidebar/_base.scss +117 -0
- package/scss/layouts/app/sidebar/_default.scss +26 -0
- package/scss/layouts/app/sidebar/_floating.scss +44 -0
- package/scss/layouts/app/sidebar/_inset.scss +29 -0
- package/scss/mixins/_banner.scss +3 -0
- package/scss/moo-core.scss +6 -34
- package/scss/moo-ui.scss +6 -6
- package/scss/settings/_bootstrap_overrides.scss +4 -0
- package/scss/settings/_component_variables.scss +20 -1
- package/scss/settings/_options.scss +2 -0
- package/scss/settings/_palette.scss +1 -1
- package/scss/themes/_forms.scss +15 -0
- package/scss/themes/_root.scss +16 -0
- package/scss/themes/_standalone.scss +5 -0
- package/scss/themes/{_scoped_core.scss → _theme.scss} +1 -0
- package/scss/components/sidebar/_inset.scss +0 -59
- package/scss/components/sidebar/_layout.scss +0 -176
- package/scss/foundations/_core_state_layer.scss +0 -25
- package/scss/foundations/_overlay_backdrop.scss +0 -19
- package/scss/themes/_standalone_root.scss +0 -119
- /package/scss/foundations/{_core_global_primitives.scss → _globals.scss} +0 -0
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Inset (content area) ---------------------------------------------------
|
|
2
|
-
.sidebar-inset {
|
|
3
|
-
display: flex;
|
|
4
|
-
flex: 1 1 auto;
|
|
5
|
-
flex-direction: column;
|
|
6
|
-
min-width: 0;
|
|
7
|
-
background: var(--bs-body-bg);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.sidebar-inset__header {
|
|
11
|
-
position: sticky;
|
|
12
|
-
top: 0;
|
|
13
|
-
z-index: 20;
|
|
14
|
-
display: flex;
|
|
15
|
-
align-items: center;
|
|
16
|
-
gap: $spacer * 0.5;
|
|
17
|
-
height: $spacer * 4;
|
|
18
|
-
padding-inline: $spacer;
|
|
19
|
-
border-bottom: var(--bs-border-width) solid var(--bs-border-color);
|
|
20
|
-
background: var(--bs-body-bg);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.sidebar-inset__content {
|
|
24
|
-
flex: 1 1 auto;
|
|
25
|
-
min-width: 0;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Inset variant: the sidebar itself stays flush; the main content becomes a
|
|
29
|
-
// rounded, shadowed card with a gap around it, and the page background
|
|
30
|
-
// switches to the sidebar's own surface color so the card reads as inset.
|
|
31
|
-
// Collapsing to the icon rail restores the inline-start gap. Scoped to
|
|
32
|
-
// desktop, matching how the mobile offcanvas drawer ignores variant.
|
|
33
|
-
@include media-breakpoint-up(lg) {
|
|
34
|
-
.sidebar-wrapper:has(.sidebar[data-variant="inset"]) {
|
|
35
|
-
background: var(--moo-sidebar);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.sidebar-wrapper:has(.sidebar[data-variant="inset"]) .sidebar-inset {
|
|
39
|
-
margin: $spacer * 0.5;
|
|
40
|
-
margin-inline-start: 0;
|
|
41
|
-
border-radius: var(--bs-border-radius-xl);
|
|
42
|
-
box-shadow: var(--bs-box-shadow-sm);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"]) .sidebar-inset {
|
|
46
|
-
margin-inline-start: $spacer * 0.5;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// A right-side sidebar sits on the opposite edge, so the content card must
|
|
50
|
-
// flush against the end side instead of the start side.
|
|
51
|
-
.sidebar-wrapper:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
|
|
52
|
-
margin-inline-start: $spacer * 0.5;
|
|
53
|
-
margin-inline-end: 0;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.sidebar-wrapper[data-sidebar-state="collapsed"]:has(.sidebar[data-variant="inset"][data-side="right"]) .sidebar-inset {
|
|
57
|
-
margin-inline-end: $spacer * 0.5;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
// Bootstrap has no native sidebar, so this owned sidebar selector namespace
|
|
2
|
-
// styles the app-shell primitive (same precedent as the avatar component).
|
|
3
|
-
// Geometry rides the $moo-sidebar-* Sass knobs; every color consumes a
|
|
4
|
-
// runtime --moo-* token.
|
|
5
|
-
|
|
6
|
-
.sidebar-wrapper {
|
|
7
|
-
--moo-sidebar-width: #{$moo-sidebar-width};
|
|
8
|
-
--moo-sidebar-width-icon: #{$moo-sidebar-width-icon};
|
|
9
|
-
display: flex;
|
|
10
|
-
width: 100%;
|
|
11
|
-
min-height: 100svh;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.sidebar-wrapper--contained {
|
|
15
|
-
min-height: 0;
|
|
16
|
-
height: 34rem;
|
|
17
|
-
overflow: hidden;
|
|
18
|
-
border: var(--bs-border-width) solid var(--moo-border);
|
|
19
|
-
border-radius: var(--bs-border-radius-xl);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Sidebar column ---------------------------------------------------------
|
|
23
|
-
.sidebar {
|
|
24
|
-
--bs-offcanvas-width: var(--moo-sidebar-width);
|
|
25
|
-
flex: 0 0 var(--moo-sidebar-width);
|
|
26
|
-
width: var(--moo-sidebar-width);
|
|
27
|
-
color: var(--moo-sidebar-foreground);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.sidebar[data-side="left"] .sidebar-inner {
|
|
31
|
-
border-inline-end: var(--bs-border-width) solid var(--moo-sidebar-border);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.sidebar[data-side="right"] {
|
|
35
|
-
order: 1;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.sidebar[data-side="right"] .sidebar-inner {
|
|
39
|
-
border-inline-start: var(--bs-border-width) solid var(--moo-sidebar-border);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Floating variant: the surface detaches from the viewport edge with a
|
|
43
|
-
// margin gap on every side and gains a full rounded border and shadow,
|
|
44
|
-
// replacing the flush single-edge border the default variant uses. Scoped
|
|
45
|
-
// to desktop, matching how the mobile offcanvas drawer ignores variant.
|
|
46
|
-
@include media-breakpoint-up(lg) {
|
|
47
|
-
.sidebar {
|
|
48
|
-
transition: flex-basis 0.2s ease, width 0.2s ease;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.sidebar[data-variant="floating"] .sidebar-inner {
|
|
52
|
-
width: auto;
|
|
53
|
-
height: calc(100svh - #{$spacer});
|
|
54
|
-
max-height: calc(100svh - #{$spacer});
|
|
55
|
-
margin: $spacer * 0.5;
|
|
56
|
-
border: var(--bs-border-width) solid var(--moo-sidebar-border);
|
|
57
|
-
border-radius: var(--bs-border-radius-lg);
|
|
58
|
-
box-shadow: var(--bs-box-shadow-sm);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.sidebar-wrapper--contained .sidebar[data-variant="floating"] .sidebar-inner {
|
|
62
|
-
height: calc(100% - #{$spacer});
|
|
63
|
-
max-height: calc(100% - #{$spacer});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// At icon-rail width the detached card reads as floating mostly through
|
|
67
|
-
// elevation and breathing room, since the margin/border alone are hard to
|
|
68
|
-
// read at the base icon width; step up to Bootstrap's base shadow scale
|
|
69
|
-
// (still a shared token, no new value) and widen the column by the same
|
|
70
|
-
// margin the card's sides consume, so the icon rail itself keeps its full
|
|
71
|
-
// width instead of shrinking.
|
|
72
|
-
.sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] {
|
|
73
|
-
flex-basis: calc(var(--moo-sidebar-width-icon) + #{$spacer});
|
|
74
|
-
width: calc(var(--moo-sidebar-width-icon) + #{$spacer});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.sidebar-wrapper[data-sidebar-state="collapsed"] .sidebar[data-variant="floating"][data-collapsible="icon"] .sidebar-inner {
|
|
78
|
-
box-shadow: var(--bs-box-shadow);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.sidebar-inner {
|
|
83
|
-
position: sticky;
|
|
84
|
-
top: 0;
|
|
85
|
-
display: flex;
|
|
86
|
-
flex-direction: column;
|
|
87
|
-
width: 100%;
|
|
88
|
-
height: 100svh;
|
|
89
|
-
max-height: 100svh;
|
|
90
|
-
background: var(--moo-sidebar);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.sidebar-wrapper--contained .sidebar-inner {
|
|
94
|
-
position: relative;
|
|
95
|
-
height: 100%;
|
|
96
|
-
max-height: 100%;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
.sidebar-header,
|
|
100
|
-
.sidebar-footer {
|
|
101
|
-
display: flex;
|
|
102
|
-
flex-direction: column;
|
|
103
|
-
gap: $spacer * 0.25;
|
|
104
|
-
padding: $spacer * 0.5;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.sidebar-content {
|
|
108
|
-
display: flex;
|
|
109
|
-
flex: 1 1 auto;
|
|
110
|
-
flex-direction: column;
|
|
111
|
-
gap: $spacer * 0.5;
|
|
112
|
-
min-height: 0;
|
|
113
|
-
overflow-y: auto;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.sidebar-input {
|
|
117
|
-
width: 100%;
|
|
118
|
-
padding: $spacer * 0.25;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
.sidebar-separator {
|
|
122
|
-
display: flex;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
.sidebar-menu-skeleton {
|
|
126
|
-
display: flex;
|
|
127
|
-
align-items: center;
|
|
128
|
-
gap: $spacer * 0.25;
|
|
129
|
-
min-height: $spacer * 2;
|
|
130
|
-
padding-inline: $spacer * 0.5;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
.sidebar-menu-skeleton__icon {
|
|
134
|
-
width: $spacer;
|
|
135
|
-
height: $spacer;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.sidebar-menu-skeleton__line {
|
|
139
|
-
flex: 1 1 auto;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.sidebar-group {
|
|
143
|
-
position: relative;
|
|
144
|
-
display: flex;
|
|
145
|
-
flex-direction: column;
|
|
146
|
-
padding: $spacer * 0.5;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.sidebar-group-content {
|
|
150
|
-
display: block;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
.sidebar-group-content--inline {
|
|
154
|
-
display: flex;
|
|
155
|
-
align-items: center;
|
|
156
|
-
flex-wrap: wrap;
|
|
157
|
-
gap: $spacer * 0.25;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.sidebar-group-label {
|
|
161
|
-
display: flex;
|
|
162
|
-
align-items: center;
|
|
163
|
-
height: $spacer * 2;
|
|
164
|
-
padding-inline: $spacer * 0.5;
|
|
165
|
-
color: var(--moo-muted-foreground);
|
|
166
|
-
font-size: $font-size-base * 0.857;
|
|
167
|
-
font-weight: $font-weight-medium;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
// Reserve room so a long label doesn't run under the absolutely positioned
|
|
171
|
-
// group action button (see .sidebar-group-action below). A descendant match
|
|
172
|
-
// covers both a group action placed directly in .sidebar-group and one
|
|
173
|
-
// nested inside .sidebar-group-content alongside the label.
|
|
174
|
-
.sidebar-group:has(.sidebar-group-action) .sidebar-group-label {
|
|
175
|
-
padding-inline-end: $spacer * 2.5;
|
|
176
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
:where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-select,
|
|
2
|
-
.moo-ui[data-bs-theme="dark"] .form-select {
|
|
3
|
-
--#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator-dark)};
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
:where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:not(:checked):not(:focus),
|
|
7
|
-
.moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:not(:checked):not(:focus) {
|
|
8
|
-
--#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image-dark)};
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
:where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:checked,
|
|
12
|
-
.moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:checked {
|
|
13
|
-
--#{$prefix}form-switch-bg: #{escape-svg($moo-switch-checked-bg-image-dark)};
|
|
14
|
-
|
|
15
|
-
background-color: var(--moo-primary);
|
|
16
|
-
border-color: var(--moo-primary);
|
|
17
|
-
filter: none;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
:where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:active:not(:checked),
|
|
21
|
-
:where(html, body)[data-bs-theme="dark"] .moo-ui:not([data-bs-theme]) .form-switch .form-check-input:focus:not(:focus-visible):not(:checked),
|
|
22
|
-
.moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:active:not(:checked),
|
|
23
|
-
.moo-ui[data-bs-theme="dark"] .form-switch .form-check-input:focus:not(:focus-visible):not(:checked) {
|
|
24
|
-
--#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image-dark)};
|
|
25
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// Bootstrap owns the overlay lifecycle for Dialog / Alert Dialog (Modal) and
|
|
2
|
-
// Sheet (Offcanvas). Moo only retunes the native backdrop appearance through a
|
|
3
|
-
// shared token primitive, so every opening surface gets the same treatment
|
|
4
|
-
// without component-specific backdrop selectors.
|
|
5
|
-
.modal-backdrop,
|
|
6
|
-
.offcanvas-backdrop {
|
|
7
|
-
--#{$prefix}backdrop-opacity: var(--moo-overlay-backdrop-opacity, #{$moo-overlay-backdrop-opacity});
|
|
8
|
-
background-color: var(--moo-overlay-backdrop-bg, #{$moo-overlay-backdrop-bg});
|
|
9
|
-
-webkit-backdrop-filter: var(--moo-overlay-backdrop-filter, #{$moo-overlay-backdrop-filter});
|
|
10
|
-
backdrop-filter: var(--moo-overlay-backdrop-filter, #{$moo-overlay-backdrop-filter});
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.modal-backdrop.show,
|
|
14
|
-
.offcanvas-backdrop.show {
|
|
15
|
-
// Bootstrap Modal routes opacity through --bs-backdrop-opacity, but
|
|
16
|
-
// Offcanvas 5.3 compiles the same state to a literal .5. Restate the shared
|
|
17
|
-
// token on both native show selectors so Dialog and Sheet dim equally.
|
|
18
|
-
opacity: var(--moo-overlay-backdrop-opacity, #{$moo-overlay-backdrop-opacity});
|
|
19
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--moo-overlay-backdrop-opacity: #{$moo-overlay-backdrop-opacity};
|
|
3
|
-
--moo-overlay-backdrop-bg: #{$moo-overlay-backdrop-bg};
|
|
4
|
-
--moo-overlay-backdrop-filter: #{$moo-overlay-backdrop-filter};
|
|
5
|
-
--moo-input-group-border-radius: #{$moo-input-group-border-radius};
|
|
6
|
-
--moo-disabled-control-opacity: #{$moo-disabled-control-opacity};
|
|
7
|
-
--moo-sidebar-foreground: var(--moo-foreground);
|
|
8
|
-
--moo-sidebar-accent: var(--moo-muted-surface);
|
|
9
|
-
--moo-sidebar-border: var(--moo-border);
|
|
10
|
-
--moo-chart-1: #{$moo-chart-1};
|
|
11
|
-
--moo-chart-2: #{$moo-chart-2};
|
|
12
|
-
--moo-chart-3: #{$moo-chart-3};
|
|
13
|
-
--moo-chart-4: #{$moo-chart-4};
|
|
14
|
-
--moo-chart-5: #{$moo-chart-5};
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
:root,
|
|
18
|
-
[data-bs-theme="light"] {
|
|
19
|
-
--moo-surface: #{$moo-surface};
|
|
20
|
-
--moo-muted-surface: #{$moo-muted-surface};
|
|
21
|
-
--moo-border: #{$moo-border};
|
|
22
|
-
--moo-primary: #{$moo-primary};
|
|
23
|
-
--moo-primary-foreground: #{$moo-primary-foreground};
|
|
24
|
-
--moo-foreground: #{$moo-foreground};
|
|
25
|
-
--moo-muted-foreground: #{$moo-muted-foreground};
|
|
26
|
-
--moo-disabled-foreground: #{$moo-disabled-foreground};
|
|
27
|
-
--moo-ring: #{$moo-ring};
|
|
28
|
-
--moo-destructive: #{$moo-destructive};
|
|
29
|
-
--moo-destructive-surface: #{$moo-destructive-surface};
|
|
30
|
-
--moo-destructive-surface-hover: #{$moo-destructive-surface-hover};
|
|
31
|
-
--moo-destructive-foreground: #{$moo-destructive-foreground};
|
|
32
|
-
--moo-form-invalid-ring-color: #{$moo-form-invalid-ring-color};
|
|
33
|
-
--moo-warning: #{$moo-warning};
|
|
34
|
-
--moo-warning-surface: #{$moo-warning-surface};
|
|
35
|
-
--moo-warning-surface-hover: #{$moo-warning-surface-hover};
|
|
36
|
-
--moo-warning-foreground: #{$moo-warning-foreground};
|
|
37
|
-
--moo-success: #{$moo-success};
|
|
38
|
-
--moo-success-surface: #{$moo-success-surface};
|
|
39
|
-
--moo-success-surface-hover: #{$moo-success-surface-hover};
|
|
40
|
-
--moo-success-foreground: #{$moo-success-foreground};
|
|
41
|
-
--moo-info: #{$moo-info};
|
|
42
|
-
--moo-info-surface: #{$moo-info-surface};
|
|
43
|
-
--moo-info-surface-hover: #{$moo-info-surface-hover};
|
|
44
|
-
--moo-info-foreground: #{$moo-info-foreground};
|
|
45
|
-
--moo-sidebar: #{$moo-sidebar};
|
|
46
|
-
--bs-body-color: var(--moo-foreground);
|
|
47
|
-
--bs-body-color-rgb: #{to-rgb($moo-foreground)};
|
|
48
|
-
--bs-heading-color: var(--moo-foreground);
|
|
49
|
-
--bs-secondary-color: var(--moo-muted-foreground);
|
|
50
|
-
// Bootstrap computes its own dark-mode --bs-body-bg/-secondary-bg/
|
|
51
|
-
// -tertiary-bg independently of this file (see vendor/bootstrap/scss/
|
|
52
|
-
// _root.scss's [data-bs-theme="dark"] block), the same way it did for the
|
|
53
|
-
// --bs-body-color trio above before this bridge existed. The scoped Odoo
|
|
54
|
-
// core build already ties every one of these to the shared --moo-*
|
|
55
|
-
// palette (scss/themes/_scoped_core.scss's moo-core-light/dark mixins);
|
|
56
|
-
// mirror that here so both entrypoints render the same background, not
|
|
57
|
-
// two independently-computed gray scales that happen to agree in light
|
|
58
|
-
// mode and diverge in dark (this is what caused the catalog shell's body
|
|
59
|
-
// background to sit only ~7 units of contrast from its own Kbd chips
|
|
60
|
-
// instead of the ~15 they're tuned for).
|
|
61
|
-
--bs-body-bg: var(--moo-surface);
|
|
62
|
-
--bs-body-bg-rgb: #{to-rgb($moo-surface)};
|
|
63
|
-
--bs-secondary-bg: var(--moo-muted-surface);
|
|
64
|
-
--bs-secondary-bg-rgb: #{to-rgb($moo-muted-surface)};
|
|
65
|
-
--bs-border-color: var(--moo-border);
|
|
66
|
-
--bs-tertiary-bg: #{$body-tertiary-bg};
|
|
67
|
-
--bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
|
68
|
-
--bs-tertiary-color: #{$body-tertiary-color};
|
|
69
|
-
--bs-tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
|
70
|
-
--bs-form-invalid-color: var(--moo-destructive);
|
|
71
|
-
--bs-form-invalid-border-color: #{$moo-form-invalid-border-color};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
[data-bs-theme="dark"] {
|
|
75
|
-
--moo-surface: #{$moo-surface-dark};
|
|
76
|
-
--moo-muted-surface: #{$moo-muted-surface-dark};
|
|
77
|
-
--moo-border: #{$moo-border-dark};
|
|
78
|
-
--moo-primary: #{$moo-primary-dark};
|
|
79
|
-
--moo-primary-foreground: #{$moo-primary-foreground-dark};
|
|
80
|
-
--moo-foreground: #{$moo-foreground-dark};
|
|
81
|
-
--moo-muted-foreground: #{$moo-muted-foreground-dark};
|
|
82
|
-
--moo-disabled-foreground: #{$moo-disabled-foreground-dark};
|
|
83
|
-
--moo-ring: #{$moo-ring-dark};
|
|
84
|
-
--moo-destructive: #{$moo-destructive-dark};
|
|
85
|
-
--moo-destructive-surface: #{$moo-destructive-surface-dark};
|
|
86
|
-
--moo-destructive-surface-hover: #{$moo-destructive-surface-hover-dark};
|
|
87
|
-
--moo-destructive-foreground: #{$moo-destructive-foreground-dark};
|
|
88
|
-
--moo-form-invalid-ring-color: #{$moo-form-invalid-ring-color-dark};
|
|
89
|
-
--moo-warning: #{$moo-warning-dark};
|
|
90
|
-
--moo-warning-surface: #{$moo-warning-surface-dark};
|
|
91
|
-
--moo-warning-surface-hover: #{$moo-warning-surface-hover-dark};
|
|
92
|
-
--moo-warning-foreground: #{$moo-warning-foreground-dark};
|
|
93
|
-
--moo-success: #{$moo-success-dark};
|
|
94
|
-
--moo-success-surface: #{$moo-success-surface-dark};
|
|
95
|
-
--moo-success-surface-hover: #{$moo-success-surface-hover-dark};
|
|
96
|
-
--moo-success-foreground: #{$moo-success-foreground-dark};
|
|
97
|
-
--moo-info: #{$moo-info-dark};
|
|
98
|
-
--moo-info-surface: #{$moo-info-surface-dark};
|
|
99
|
-
--moo-info-surface-hover: #{$moo-info-surface-hover-dark};
|
|
100
|
-
--moo-info-foreground: #{$moo-info-foreground-dark};
|
|
101
|
-
--moo-sidebar: #{$moo-sidebar-dark};
|
|
102
|
-
--moo-input-bg: #{$moo-input-bg-dark};
|
|
103
|
-
--bs-body-color: var(--moo-foreground);
|
|
104
|
-
--bs-body-color-rgb: #{to-rgb($moo-foreground-dark)};
|
|
105
|
-
--bs-heading-color: var(--moo-foreground);
|
|
106
|
-
--bs-secondary-color: var(--moo-muted-foreground);
|
|
107
|
-
// See the light block's matching comment above.
|
|
108
|
-
--bs-body-bg: var(--moo-surface);
|
|
109
|
-
--bs-body-bg-rgb: #{to-rgb($moo-surface-dark)};
|
|
110
|
-
--bs-secondary-bg: var(--moo-muted-surface);
|
|
111
|
-
--bs-secondary-bg-rgb: #{to-rgb($moo-muted-surface-dark)};
|
|
112
|
-
--bs-border-color: var(--moo-border);
|
|
113
|
-
--bs-tertiary-bg: #{$body-tertiary-bg-dark};
|
|
114
|
-
--bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
|
115
|
-
--bs-tertiary-color: #{$body-tertiary-color-dark};
|
|
116
|
-
--bs-tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
|
117
|
-
--bs-form-invalid-color: var(--moo-destructive);
|
|
118
|
-
--bs-form-invalid-border-color: #{$moo-form-invalid-border-color-dark};
|
|
119
|
-
}
|
|
File without changes
|