@wpmoo/ui 1.0.0-rc.8 → 1.0.0
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/LICENSE +28 -0
- package/README.md +34 -6
- package/certification.json +3 -2
- package/dist/assets/css/moo-ui.css +634 -33
- package/dist/assets/css/moo-ui.min.css +10 -31
- package/dist/assets/css/moo.css +624 -30
- package/dist/assets/css/moo.min.css +10 -32
- package/dist/js/chart.js +23 -21
- package/dist/js/chart.min.js +5 -5
- package/dist/js/combobox.js +18 -65
- package/dist/js/context-menu.js +16 -68
- package/dist/js/datatable.js +39 -22
- package/dist/js/datepicker.js +4 -3
- package/dist/js/datepicker.min.js +4 -3
- package/dist/js/moo-ui.js +160 -15402
- package/dist/js/moo-ui.min.js +3 -23
- package/dist/js/sheet.js +46 -0
- package/dist/js/sidebar.js +5 -4
- package/dist/js/slider.js +12 -47
- package/dist/js/state.js +76 -0
- package/dist/release-manifest.json +6 -6
- package/package.json +5 -3
- package/scss/_components.scss +2 -2
- package/scss/_config.scss +15 -21
- package/scss/_settings.scss +0 -3
- package/scss/components/_accordion.scss +1 -12
- package/scss/components/_alert.scss +1 -12
- package/scss/components/_avatar.scss +1 -16
- package/scss/components/_badge.scss +1 -0
- package/scss/components/_breadcrumb.scss +1 -12
- package/scss/components/_button.scss +1 -29
- package/scss/components/_button_group.scss +1 -25
- package/scss/components/_card.scss +1 -29
- package/scss/components/_checkbox.scss +1 -38
- package/scss/components/_close_button.scss +1 -9
- package/scss/components/_collapsible.scss +1 -0
- package/scss/components/_combobox.scss +1 -6
- package/scss/components/_context-menu.scss +1 -11
- package/scss/components/_datatable.scss +46 -85
- package/scss/components/_datepicker.scss +1 -0
- package/scss/components/_dialog.scss +1 -14
- package/scss/components/_dropdown.scss +5 -51
- package/scss/components/_field.scss +6 -37
- package/scss/components/_input.scss +1 -5
- package/scss/components/_input_group.scss +1 -51
- package/scss/components/_kbd.scss +1 -0
- package/scss/components/_menubar.scss +1 -0
- package/scss/components/_navigation.scss +76 -6
- package/scss/components/_pagination.scss +1 -13
- package/scss/components/_popover.scss +1 -22
- package/scss/components/_progress.scss +1 -3
- package/scss/components/_radio_group.scss +105 -6
- package/scss/components/_search_trigger.scss +1 -2
- package/scss/components/_select.scss +1 -0
- package/scss/components/_separator.scss +1 -6
- package/scss/components/_sheet.scss +1 -17
- package/scss/components/_sidebar.scss +1 -2
- package/scss/components/_skeleton.scss +1 -8
- package/scss/components/_slider.scss +1 -2
- package/scss/components/_spinner.scss +1 -7
- package/scss/components/_switch.scss +1 -4
- package/scss/components/_table.scss +1 -2
- package/scss/components/_tabs.scss +1 -24
- package/scss/components/_textarea.scss +1 -0
- package/scss/components/_toast.scss +1 -4
- package/scss/components/_toggle_group.scss +1 -3
- package/scss/components/_tooltip.scss +1 -20
- package/scss/components/sidebar/_base.scss +0 -7
- package/scss/components/sidebar/_collapsed.scss +0 -6
- package/scss/components/sidebar/_identity.scss +0 -1
- package/scss/components/sidebar/_menus.scss +0 -17
- package/scss/foundations/_backdrop.scss +0 -26
- package/scss/foundations/_focus.scss +0 -56
- package/scss/foundations/_scope.scss +19 -0
- package/scss/layouts/_app.scss +5 -7
- package/scss/layouts/_page_grid.scss +27 -0
- package/scss/layouts/app/sidebar/_base.scss +0 -33
- package/scss/layouts/app/sidebar/_default.scss +2 -8
- package/scss/layouts/app/sidebar/_floating.scss +1 -9
- package/scss/layouts/app/sidebar/_inset.scss +5 -2
- package/scss/mixins/_banner.scss +9 -3
- package/scss/moo-core.scss +3 -6
- package/scss/moo-ui.scss +9 -5
- package/scss/settings/_bootstrap_overrides.scss +0 -8
- package/scss/settings/_component_variables.scss +4 -266
- package/scss/settings/_forms.scss +1 -38
- package/scss/settings/_palette.scss +0 -42
- package/scss/themes/_root.scss +4 -0
- package/scss/themes/_standalone.scss +1 -3
- package/scss/themes/_theme.scss +4 -0
- package/scss/utilities/_background_color.scss +18 -0
- package/scss/utilities/_border.scss +4 -0
- package/dist/js/theme-prepaint.js +0 -91
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// Static component geometry belongs on Bootstrap's own Sass knobs. Bootstrap
|
|
2
|
-
// then emits the matching --bs-* consumption variables for each component.
|
|
3
1
|
$nav-link-padding-y: 0.375rem !default;
|
|
4
2
|
$nav-link-padding-x: 0.75rem !default;
|
|
5
3
|
$dropdown-min-width: 8rem !default;
|
|
@@ -8,95 +6,36 @@ $dropdown-padding-y: 0.25rem !default;
|
|
|
8
6
|
$dropdown-item-padding-y: 0.25rem !default;
|
|
9
7
|
$dropdown-item-padding-x: 0.375rem !default;
|
|
10
8
|
$dropdown-header-padding-x: $dropdown-item-padding-x !default;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// item line-height, and secondary-row size have no Bootstrap knob, so they
|
|
14
|
-
// live on component Sass knobs.
|
|
9
|
+
$moo-small-font-size: 0.75rem !default;
|
|
10
|
+
$moo-paragraph-margin-top: 0 !default;
|
|
15
11
|
$moo-combobox-width: 12.5rem !default;
|
|
16
12
|
$moo-combobox-multiple-width: $moo-combobox-width * 1.6 !default;
|
|
17
13
|
$moo-combobox-menu-max-height: $input-height * 8 !default;
|
|
18
14
|
$moo-combobox-option-line-height: 1.25rem !default;
|
|
19
15
|
$moo-combobox-description-font-size: 0.75rem !default;
|
|
20
|
-
// Badge, Kbd, and the Pagination icon-square baseline all share the
|
|
21
|
-
// reference's 20px chip primitive (Tailwind h-5); one knob keeps them in
|
|
22
|
-
// sync instead of repeating the literal across three unrelated component
|
|
23
|
-
// files.
|
|
24
16
|
$moo-chip-height: 1.25rem !default;
|
|
25
|
-
// Bootstrap defaults badges to relative em sizing so they scale inside
|
|
26
|
-
// headings/buttons. Moo badges are standalone status chips, and the reference
|
|
27
|
-
// uses a fixed 20px chip with 12px/16px label metrics; keep that geometry on
|
|
28
|
-
// Bootstrap's own badge Sass knobs before the component selector centers it.
|
|
29
17
|
$badge-font-size: 0.75rem !default;
|
|
30
18
|
$badge-font-weight: 500 !default;
|
|
31
19
|
$badge-padding-y: 0.125rem !default;
|
|
32
20
|
$badge-padding-x: 0.5rem !default;
|
|
33
21
|
$badge-border-radius: var(--bs-border-radius-pill) !default;
|
|
34
22
|
$badge-border-color: transparent !default;
|
|
35
|
-
// The reference sizes its kbd chip via a fixed 20px height + flex centering
|
|
36
|
-
// (Tailwind h-5/min-w-5), not padding math, so $kbd-padding-y drops to 0 --
|
|
37
|
-
// components/_kbd.scss sets that fixed height directly. $kbd-padding-x
|
|
38
|
-
// matches the reference's px-1 (4px) horizontal inset.
|
|
39
23
|
$kbd-padding-y: 0 !default;
|
|
40
24
|
$kbd-padding-x: 0.25rem !default;
|
|
41
25
|
$kbd-font-size: 0.75rem !default;
|
|
42
|
-
// var(--bs-secondary-color) on var(--bs-secondary-bg) fails WCAG 2 AA
|
|
43
|
-
// contrast at this font-size (axe measured 4.07:1 light / 4.48:1 dark
|
|
44
|
-
// against the 4.5:1 minimum for normal text), so this keeps the darker
|
|
45
|
-
// text-emphasis token from that fix. The background moved to
|
|
46
|
-
// --moo-muted-surface (the same token .btn-ghost's hover fill uses) to
|
|
47
|
-
// match the reference's borderless filled-chip look instead of Bootstrap's
|
|
48
|
-
// near-white "subtle" background + border combination; computed against
|
|
49
|
-
// --bs-secondary-text-emphasis that's still 5.55:1 light / 14.03:1 dark,
|
|
50
|
-
// comfortably above the 4.5:1 minimum.
|
|
51
26
|
$kbd-color: var(--bs-secondary-text-emphasis) !default;
|
|
52
27
|
$kbd-bg: var(--moo-muted-surface) !default;
|
|
53
|
-
// references/bootstrap/5.3.3/scss/_variables.scss:1739-1740 defines only
|
|
54
|
-
// $code-color/$code-font-size for <code> — no background/padding/radius
|
|
55
|
-
// token, unlike <kbd> which gets $kbd-bg/$kbd-padding-*/$kbd-color at
|
|
56
|
-
// lines 1742-1746 of the same file. Inline code in catalog prose still
|
|
57
|
-
// wants that same "chip" affordance, so this is its own private token
|
|
58
|
-
// pair (reusing the same underlying Bootstrap surface/text custom
|
|
59
|
-
// properties kbd happens to use, not the $kbd-* Sass variables
|
|
60
|
-
// themselves) rather than coupling a semantically different element to
|
|
61
|
-
// <kbd>'s own knobs.
|
|
62
28
|
$moo-code-padding-y: 0.125rem !default;
|
|
63
29
|
$moo-code-padding-x: 0.375rem !default;
|
|
64
|
-
// var(--bs-secondary-color) on this chip's own var(--moo-muted-surface)
|
|
65
|
-
// background measures 4.40:1 in light mode, under the 4.5:1 WCAG AA
|
|
66
|
-
// minimum for normal text — the same defect the Tabs trigger and Kbd
|
|
67
|
-
// contrast fixes hit against this exact background/alias combination
|
|
68
|
-
// (Moo UI's theme sets --bs-secondary-color: var(--moo-muted-foreground),
|
|
69
|
-
// so it resolves to the same failing color; see scss/components/_tabs.scss).
|
|
70
|
-
// var(--bs-secondary-text-emphasis) is the untouched Bootstrap token built
|
|
71
|
-
// for accessible text on a tinted surface, and measures 5.55:1 light /
|
|
72
|
-
// 14.03:1 dark against this same background.
|
|
73
30
|
$moo-code-color: var(--bs-secondary-text-emphasis) !default;
|
|
74
31
|
|
|
75
|
-
// Matches the reference's inline-code background (#f5f5f5) far more
|
|
76
|
-
// closely than any --bs-*-bg step; --moo-muted-surface (#f4f4f5) is
|
|
77
|
-
// effectively the same value.
|
|
78
32
|
$moo-code-bg: var(--moo-muted-surface) !default;
|
|
79
|
-
// The reference breadcrumb uses a chevron divider; Bootstrap's own default is "/".
|
|
80
33
|
$breadcrumb-divider: quote(">") !default;
|
|
81
34
|
$breadcrumb-divider-flipped: quote("<") !default;
|
|
82
|
-
// Shared pressed-state movement for button-like controls. Bootstrap's inset
|
|
83
|
-
// active shadow is disabled in _bootstrap_overrides.scss, so components that
|
|
84
|
-
// present as buttons share this tiny physical press instead.
|
|
85
35
|
$moo-control-active-translate-y: 0.5px !default;
|
|
86
|
-
// The reference pagination items sit separated with no border, ghost-hover, and
|
|
87
|
-
// only the active page gets a bordered box; Bootstrap's default is a fully
|
|
88
|
-
// bordered, edge-to-edge connected strip. A positive margin-start switches
|
|
89
|
-
// Bootstrap's own pagination.scss out of connected-border mode.
|
|
90
36
|
$pagination-margin-start: 0.25rem !default;
|
|
91
37
|
$pagination-padding-y: 0 !default;
|
|
92
38
|
$pagination-padding-x: 0 !default;
|
|
93
|
-
// The icon-square baseline in components/_pagination.scss used to add
|
|
94
|
-
// var(--bs-pagination-padding-y) * 2 to reach the reference's hit target,
|
|
95
|
-
// but $pagination-padding-y is zeroed above so real content padding could
|
|
96
|
-
// move onto explicit content-aware rules instead (see components/
|
|
97
|
-
// _pagination.scss's [aria-label]:has(...) selectors). Bootstrap's own
|
|
98
|
-
// padding-y token no longer carries that space, so this knob preserves the
|
|
99
|
-
// square's total inset independently instead of falling back to a literal.
|
|
100
39
|
$moo-pagination-square-inset: 0.625rem !default;
|
|
101
40
|
$pagination-font-size: 0.875rem !default;
|
|
102
41
|
$pagination-border-radius: var(--bs-border-radius-lg) !default;
|
|
@@ -113,61 +52,26 @@ $pagination-active-border-color: var(--moo-border) !default;
|
|
|
113
52
|
$pagination-disabled-color: var(--moo-disabled-foreground) !default;
|
|
114
53
|
$pagination-disabled-bg: transparent !default;
|
|
115
54
|
$pagination-disabled-border-color: transparent !default;
|
|
116
|
-
// The reference progress track is a slim 4px bar; Bootstrap's default is 1rem.
|
|
117
55
|
$progress-height: 0.25rem !default;
|
|
118
56
|
$progress-bar-color: var(--moo-primary-foreground) !default;
|
|
119
57
|
$progress-bar-bg: var(--moo-primary) !default;
|
|
120
|
-
// Bootstrap's checkbox/radio default is 1em which follows the parent
|
|
121
|
-
// font-size (14px here). The reference uses a fixed 16px (size-4), so
|
|
122
|
-
// pin the width to 1rem to match 1:1 regardless of context font-size.
|
|
123
58
|
$form-check-input-width: 1rem !default;
|
|
124
|
-
// Bootstrap derives this as $form-check-input-width + .5em, but mixing
|
|
125
|
-
// rem and em in Sass arithmetic fails to compile; restate it in rem.
|
|
126
59
|
$form-check-padding-start: 1.5rem !default;
|
|
127
|
-
|
|
128
|
-
// versus Bootstrap's 2em x 1em (a flatter 2:1 shape). $form-switch-width is
|
|
129
|
-
// Bootstrap's own customization point, but there is no matching height
|
|
130
|
-
// variable — .form-switch inherits its height from the same
|
|
131
|
-
// $form-check-input-width Checkbox and Radio Group use, so a dedicated
|
|
132
|
-
// height lives on a private knob instead of resizing every .form-check
|
|
133
|
-
// control. The Switch component partial consumes it directly.
|
|
60
|
+
$moo-form-check-card-description-color: color-mix(in srgb, var(--moo-muted-foreground) 95%, var(--moo-foreground)) !default;
|
|
134
61
|
$form-switch-width: 2rem !default;
|
|
135
|
-
// Bootstrap derives padding-start as $form-switch-width + .5em, but mixing
|
|
136
|
-
// rem and em in Sass arithmetic fails to compile; restate it in rem to
|
|
137
|
-
// keep the same proportional gap Bootstrap's own default uses.
|
|
138
62
|
$form-switch-padding-start: 2.5rem !default;
|
|
139
63
|
$moo-switch-height: 1.15rem !default;
|
|
140
|
-
// Bootstrap's dark unchecked switch thumb is separate from its checked
|
|
141
|
-
// thumb. The checked dark state needs the opposite pair (light track,
|
|
142
|
-
// dark thumb), so the component owns that SVG as its own compile-time knob.
|
|
143
64
|
$moo-switch-checked-bg-image-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$moo-primary-foreground-dark}'/></svg>") !default;
|
|
144
|
-
// The reference accordion trigger stays fully neutral when expanded (only an
|
|
145
|
-
// underline on hover); Bootstrap's default tints the expanded trigger with
|
|
146
|
-
// $primary-bg-subtle / $primary-text-emphasis. Referencing the resting
|
|
147
|
-
// --bs-accordion-bg/-color custom properties (rather than the Sass
|
|
148
|
-
// variables, which settings.scss loads before Bootstrap defines
|
|
149
|
-
// them) matches the trigger's own resting look so expanding an item
|
|
150
|
-
// changes nothing but the chevron and revealed content.
|
|
151
65
|
$accordion-button-active-bg: var(--bs-accordion-bg) !default;
|
|
152
66
|
$accordion-button-active-color: var(--bs-accordion-color) !default;
|
|
153
67
|
|
|
154
|
-
// A nested accordion inherits its Card surface by default, while remaining
|
|
155
|
-
// configurable for Sass consumers that need a distinct contained surface.
|
|
156
68
|
$moo-accordion-contained-bg: transparent !default;
|
|
157
|
-
// Bootstrap's pills nav has no shared-track concept, so the segmented
|
|
158
|
-
// control's track padding/gap and trigger padding have no Bootstrap
|
|
159
|
-
// variable to override — they are private knobs instead of literals in
|
|
160
|
-
// the component partial. Values match the reference's 3px track padding,
|
|
161
|
-
// 2px item gap, and 2px/12px trigger padding.
|
|
162
69
|
$moo-tabs-list-padding: 0.1875rem !default;
|
|
163
70
|
$moo-tabs-list-gap: 0.125rem !default;
|
|
164
71
|
$moo-tabs-content-gap: 0.75rem !default;
|
|
165
72
|
$moo-tabs-trigger-padding-y: 0.125rem !default;
|
|
166
73
|
$moo-tabs-trigger-padding-x: 0.75rem !default;
|
|
167
74
|
|
|
168
|
-
// Bootstrap's own spacer scale has no 2px/3px step, so the Menubar row's
|
|
169
|
-
// tight track padding/gap around its triggers (verified against the live
|
|
170
|
-
// reference) are private knobs rather than a "gap-1"/"p-1" utility.
|
|
171
75
|
$moo-menubar-gap: 0.125rem !default;
|
|
172
76
|
$moo-menubar-padding: 0.1875rem !default;
|
|
173
77
|
$card-spacer-y: 0 !default;
|
|
@@ -176,48 +80,23 @@ $card-cap-padding-y: $card-spacer-y !default;
|
|
|
176
80
|
$card-cap-padding-x: $card-spacer-x !default;
|
|
177
81
|
$card-title-font-size: 1rem !default;
|
|
178
82
|
$card-title-letter-spacing: -0.01em !default;
|
|
179
|
-
// The reference card exposes one --moo-card-spacing rhythm for section gaps
|
|
180
|
-
// and the inline inset of header/body/footer, defaulting to the 16px step of
|
|
181
|
-
// Bootstrap's own spacer scale; the size="sm" variant drops to 12px. This is
|
|
182
|
-
// a private consumption token because Bootstrap's card has no single
|
|
183
|
-
// variable that covers both the vertical section gap and the horizontal
|
|
184
|
-
// inset of every part. Literal values, not $spacer math: this file compiles
|
|
185
|
-
// before Bootstrap's own variables (including $spacer) are defined.
|
|
186
83
|
$moo-card-spacing: 1rem !default;
|
|
187
84
|
$moo-card-spacing-sm: 0.75rem !default;
|
|
188
85
|
|
|
189
|
-
// Card surface blends mix the muted surface over the base surface so cards keep
|
|
190
|
-
// a subtle tint that tracks the runtime theme without hardcoding a color.
|
|
191
86
|
$moo-card-bg-mix: 5% !default;
|
|
192
87
|
$moo-card-bg-mix-dark: 30% !default;
|
|
193
88
|
|
|
194
|
-
// Bootstrap exposes one card-cap background for both headers and footers, but
|
|
195
|
-
// the reference needs no header fill and a separately tuned footer surface.
|
|
196
|
-
// Keep that scoped gap on Moo card knobs, derived from runtime surface tokens
|
|
197
|
-
// so theme changes still flow through Bootstrap's card variables.
|
|
198
89
|
$moo-card-footer-bg: color-mix(in srgb, var(--bs-secondary-bg) 20%, var(--bs-body-bg)) !default;
|
|
199
90
|
$moo-card-footer-bg-dark: color-mix(in srgb, var(--bs-secondary-bg) 50%, var(--bs-body-bg)) !default;
|
|
200
91
|
|
|
201
|
-
// Bootstrap's own $table-th-font-weight defaults to null, leaving <th>
|
|
202
|
-
// at the browser's bold UA default; the reference renders both header
|
|
203
|
-
// cells and the emphasized first body column (a <th scope="row">) at a
|
|
204
|
-
// medium weight instead, verified against the live reference. Restated
|
|
205
|
-
// as a literal rather than referencing Bootstrap's own
|
|
206
|
-
// $font-weight-medium (500), since this file compiles before
|
|
207
|
-
// Bootstrap's own variables exist.
|
|
208
92
|
$table-th-font-weight: 500 !default;
|
|
209
93
|
|
|
210
|
-
// Bootstrap has no native avatar component. Keep unmatched static values as
|
|
211
|
-
// compile-time Sass knobs; exact shared typography reuses Bootstrap variables.
|
|
212
94
|
$avatar-size: 2rem !default;
|
|
213
95
|
$avatar-size-sm: $avatar-size * 0.75 !default;
|
|
214
96
|
$avatar-size-lg: $avatar-size * 1.25 !default;
|
|
215
97
|
$avatar-font-size-sm: 0.75rem !default;
|
|
216
98
|
$avatar-font-size-lg: 1rem !default;
|
|
217
99
|
$avatar-line-height: 1 !default;
|
|
218
|
-
// Verified against the live reference: a 32px avatar group overlaps by 8px
|
|
219
|
-
// and a plain AvatarBadge renders a 10px mark with a 2px page-background
|
|
220
|
-
// ring painted outside the mark.
|
|
221
100
|
$avatar-group-overlap: -0.5rem !default;
|
|
222
101
|
$avatar-badge-dot-size: 0.625rem !default;
|
|
223
102
|
$avatar-badge-icon-size: $avatar-badge-dot-size !default;
|
|
@@ -226,10 +105,6 @@ $avatar-badge-ring-width: 2px !default;
|
|
|
226
105
|
$avatar-group-ring-width: 2px !default;
|
|
227
106
|
$avatar-badge-ring-shadow: 0 0 0 $avatar-badge-ring-width var(--bs-body-bg) !default;
|
|
228
107
|
$avatar-group-ring-shadow: 0 0 0 $avatar-group-ring-width var(--bs-body-bg) !default;
|
|
229
|
-
// Bootstrap's tooltip plugin has no motion-timing tokens (its own source
|
|
230
|
-
// hardcodes the transition in tooltip.scss); the reference's subtle
|
|
231
|
-
// zoom/slide open is scoped to Moo's tooltip surface, so the four motion
|
|
232
|
-
// steps are private component knobs rather than global Bootstrap values.
|
|
233
108
|
$moo-tooltip-motion-duration: 150ms !default;
|
|
234
109
|
$moo-tooltip-motion-easing: cubic-bezier(0.16, 1, 0.3, 1) !default;
|
|
235
110
|
$moo-tooltip-motion-scale: 0.95 !default;
|
|
@@ -241,14 +116,9 @@ $btn-line-height: 1.25rem !default;
|
|
|
241
116
|
$btn-focus-width: 0.2rem !default;
|
|
242
117
|
$moo-spinner-animation-name: spinner-border !default;
|
|
243
118
|
|
|
244
|
-
// Size-scale fonts flow through Bootstrap's own variables so the
|
|
245
|
-
// .btn-group-sm/-lg extend chains inherit them without re-declaration.
|
|
246
119
|
$btn-font-size-sm: 0.8rem !default;
|
|
247
120
|
$btn-font-size-lg: 0.875rem !default;
|
|
248
121
|
|
|
249
|
-
// Button heights emerge from Bootstrap's own padding and line-height scale:
|
|
250
|
-
// 32px default, 28px small, and 36px large. The custom xs class follows the
|
|
251
|
-
// same box model in the component layer.
|
|
252
122
|
$btn-padding-y: 0.3125rem !default;
|
|
253
123
|
$btn-padding-x: 0.625rem !default;
|
|
254
124
|
$btn-padding-y-sm: 0.3125rem !default;
|
|
@@ -256,10 +126,6 @@ $btn-padding-x-sm: 0.625rem !default;
|
|
|
256
126
|
$btn-padding-y-lg: 0.4375rem !default;
|
|
257
127
|
$btn-padding-x-lg: 0.625rem !default;
|
|
258
128
|
|
|
259
|
-
// Bootstrap exposes button padding, but it has no command/search-trigger
|
|
260
|
-
// composition or responsive width scale. Keep this shared control's geometry
|
|
261
|
-
// on private knobs so Catalog and Odoo consume one Core contract instead of
|
|
262
|
-
// copying chrome-specific literals into their own stylesheets.
|
|
263
129
|
$moo-search-trigger-height: 2rem !default;
|
|
264
130
|
$moo-search-trigger-width: 10rem !default;
|
|
265
131
|
$moo-search-trigger-width-lg: 13rem !default;
|
|
@@ -269,20 +135,12 @@ $moo-search-trigger-padding-x: 0.75rem !default;
|
|
|
269
135
|
$moo-search-trigger-border-color: transparent !default;
|
|
270
136
|
$moo-search-trigger-label-gap: 0.5rem !default;
|
|
271
137
|
$moo-search-trigger-shortcut-gap: 0.25rem !default;
|
|
272
|
-
// Icon-only buttons are squares whose side equals the token-driven button
|
|
273
|
-
// height (line-height + 2*padding-y + 2*border), matching sibling text
|
|
274
|
-
// buttons. Bootstrap exposes no single icon-button size knob; the side is a
|
|
275
|
-
// runtime calc over the --bs-btn-* consumption variables so size variants
|
|
276
|
-
// (xs/sm/lg) resolve their own box, backed here by a private Sass knob.
|
|
277
138
|
$moo-btn-icon-size: calc(
|
|
278
139
|
var(--bs-btn-line-height) +
|
|
279
140
|
var(--bs-btn-padding-y) * 2 +
|
|
280
141
|
var(--bs-btn-border-width) * 2
|
|
281
142
|
) !default;
|
|
282
143
|
|
|
283
|
-
// Bootstrap's close button already exposes Sass knobs for its content-box icon
|
|
284
|
-
// and padding. Keep the native glyph slightly lighter than Bootstrap's default
|
|
285
|
-
// while the padding preserves the 24px reference hit target.
|
|
286
144
|
$btn-close-width: 0.75rem !default;
|
|
287
145
|
$btn-close-height: $btn-close-width !default;
|
|
288
146
|
$btn-close-padding-x: 0.34375rem !default;
|
|
@@ -292,35 +150,13 @@ $btn-close-hover-opacity: $btn-close-opacity !default;
|
|
|
292
150
|
$btn-close-focus-opacity: $btn-close-opacity !default;
|
|
293
151
|
$btn-close-disabled-opacity: $moo-disabled-control-opacity !default;
|
|
294
152
|
$moo-close-button-border-color: transparent !default;
|
|
295
|
-
// Bootstrap's close button ships a filled-path X glyph; the reference uses a
|
|
296
|
-
// thinner Lucide-style stroke icon instead. .btn-close::before consumes this
|
|
297
|
-
// through mask + currentColor (scss/components/_close_button.scss), so only
|
|
298
|
-
// the SVG's alpha shape ever paints -- the stroke color itself never
|
|
299
|
-
// renders -- but the design gate still requires every component custom
|
|
300
|
-
// property to trace to a token source, so bind it through $black the same
|
|
301
|
-
// way the switch's dark bg-image binds through $moo-primary-foreground-dark.
|
|
302
153
|
$moo-close-button-bg-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='#{$black}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M18 6 6 18'/><path d='m6 6 12 12'/></svg>") !default;
|
|
303
154
|
|
|
304
|
-
// Shared focus primitive: a thin 2px ring. Components consume
|
|
305
|
-
// --bs-focus-ring-width; only the ring color is a runtime theme token.
|
|
306
155
|
$focus-ring-width: 2px !default;
|
|
307
156
|
|
|
308
|
-
// The reference's own form-control focus ring is 3px, one size up from the
|
|
309
|
-
// 2px ring the rest of the system uses on buttons/links/custom surfaces.
|
|
310
|
-
// Input, Textarea, Select, Checkbox, Radio, and Switch all share this wider
|
|
311
|
-
// ring so the reference's exact focus recipe carries over unmodified.
|
|
312
157
|
$moo-form-focus-ring-width: 3px !default;
|
|
313
|
-
// Same --moo-ring value the width above pairs with, aliased under a name
|
|
314
|
-
// the shared-primitive design gate recognizes as a color reference (see
|
|
315
|
-
// approved_shared_value's shadow-token check in tests/test_design_gates.py).
|
|
316
158
|
$moo-form-focus-ring-color: var(--moo-ring) !default;
|
|
317
159
|
|
|
318
|
-
// Shared overlay primitive for Bootstrap's native Modal and Offcanvas
|
|
319
|
-
// backdrops. Bootstrap exposes separate .modal-backdrop and
|
|
320
|
-
// .offcanvas-backdrop selectors; Moo keeps their visual treatment aligned via
|
|
321
|
-
// one token set instead of per-component backdrop rules.
|
|
322
|
-
// Bootstrap defaults both native panels to .3s; retain that default while
|
|
323
|
-
// exposing one runtime duration token for the panel and its backdrop.
|
|
324
160
|
$moo-overlay-motion-duration: .3s !default;
|
|
325
161
|
$modal-transition: transform var(--moo-overlay-motion-duration, #{$moo-overlay-motion-duration}) ease-out !default;
|
|
326
162
|
$offcanvas-transition-duration: var(--moo-overlay-motion-duration, #{$moo-overlay-motion-duration}) !default;
|
|
@@ -328,56 +164,21 @@ $moo-overlay-backdrop-opacity: 1 !default;
|
|
|
328
164
|
$moo-overlay-backdrop-bg: color-mix(in srgb, #0a0a0a 10%, transparent) !default;
|
|
329
165
|
$moo-overlay-backdrop-filter: blur(6px) !default;
|
|
330
166
|
|
|
331
|
-
// A quieter elevation scale and the extra radius step, applied UI-wide through
|
|
332
|
-
// Bootstrap's own scales so every component consumes one shared primitive.
|
|
333
167
|
$box-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !default;
|
|
334
168
|
$box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1) !default;
|
|
335
169
|
$box-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1) !default;
|
|
336
170
|
|
|
337
171
|
$border-radius-xl: 0.75rem !default;
|
|
338
172
|
|
|
339
|
-
// Bootstrap has no sidebar primitive, so the app-shell geometry lives on
|
|
340
|
-
// dedicated Sass knobs. The Sidebar component surfaces these as
|
|
341
|
-
// --moo-sidebar-width / --moo-sidebar-width-icon consumption variables.
|
|
342
173
|
$moo-sidebar-width: 16rem !default;
|
|
343
174
|
$moo-sidebar-width-icon: 3rem !default;
|
|
344
175
|
|
|
345
|
-
// Bootstrap's dropdown-item has no bordered icon-container concept, so the
|
|
346
|
-
// Team Switcher-style icon box geometry lives on a dedicated Sass knob.
|
|
347
|
-
// Border color/radius still ride Bootstrap consumption values.
|
|
348
176
|
$moo-dropdown-item-icon-size: 1.5rem !default;
|
|
349
177
|
|
|
350
|
-
// The Sidebar header/footer dropdown menus (team switcher, account menu)
|
|
351
|
-
// intentionally overflow past the sidebar edge into the content column,
|
|
352
|
-
// matching the design reference's min-w-56. Bootstrap's shared
|
|
353
|
-
// $dropdown-min-width stays the default for every other dropdown in the
|
|
354
|
-
// product; this is a sidebar-scoped floor, not a global change.
|
|
355
178
|
$moo-dropdown-sidebar-min-width: 14rem !default;
|
|
356
179
|
|
|
357
|
-
// Bootstrap has no --bs-form-check-input-border-radius custom property to
|
|
358
|
-
// consume at runtime (only the compile-time $form-check-input-border-radius
|
|
359
|
-
// Sass default, which this settings layer loads before Bootstrap defines),
|
|
360
|
-
// so the checkbox-style menu-item indicator shared by Dropdown, Menubar,
|
|
361
|
-
// Context Menu, and Data Table needs its own scoped knob to reuse
|
|
362
|
-
// Checkbox's exact corner radius. Restated as .25em to match Bootstrap's
|
|
363
|
-
// own $form-check-input-border-radius default.
|
|
364
180
|
$moo-dropdown-item-check-border-radius: .25em !default;
|
|
365
181
|
|
|
366
|
-
// Field has no matching Bootstrap component of its own, so its spacing
|
|
367
|
-
// scale and legend sizing live on dedicated Sass knobs instead of
|
|
368
|
-
// per-instance utility classes. Changing spacing/type for every Field
|
|
369
|
-
// usage means changing the token here; a specific form that needs a
|
|
370
|
-
// one-off deviation reaches for Bootstrap's own utility classes (gap-3,
|
|
371
|
-
// mb-4, ...) instead, the same way plain Bootstrap forms already do.
|
|
372
|
-
// Literal values, not $spacer math: this file compiles before Bootstrap's
|
|
373
|
-
// own variables (including $spacer) are defined.
|
|
374
|
-
// - field-gap: inside one field (label / control / description / error)
|
|
375
|
-
// - field-form-gap: between direct children in a composed form
|
|
376
|
-
// - field-group-gap: between sibling fields, fieldsets, and separators
|
|
377
|
-
// inside a field_group()
|
|
378
|
-
// - field-fieldset-gap: between a fieldset's direct building blocks
|
|
379
|
-
// (its legend/description header, field groups, lone fields)
|
|
380
|
-
// - field-fieldset-sibling-gap: between consecutive fieldsets in one form
|
|
381
182
|
$moo-field-gap: 0.5rem !default;
|
|
382
183
|
$moo-field-group-gap: 1.25rem !default;
|
|
383
184
|
$moo-field-switch-gap: $moo-field-group-gap !default;
|
|
@@ -388,15 +189,9 @@ $moo-field-legend-font-size: 1rem !default;
|
|
|
388
189
|
$moo-field-legend-margin-bottom: 0.375rem !default;
|
|
389
190
|
$moo-field-separator-opacity: 0.1 !default;
|
|
390
191
|
|
|
391
|
-
// Datepicker is a Moo-owned reference-style composition around Bootstrap button
|
|
392
|
-
// primitives; Bootstrap ships no datepicker core component, so trigger/popover
|
|
393
|
-
// geometry is Moo-owned.
|
|
394
192
|
$moo-datepicker-width: 17.5rem !default;
|
|
395
193
|
$moo-datepicker-popover-offset: 0.375rem !default;
|
|
396
194
|
|
|
397
|
-
// The calendar grid geometry (day size, gap, padding, preset spacing, day
|
|
398
|
-
// radii, focus ring) is also Moo-owned: Bootstrap has no calendar primitive
|
|
399
|
-
// that could carry these values, so each is exposed as a !default knob.
|
|
400
195
|
$moo-datepicker-day-size: 2rem !default;
|
|
401
196
|
$moo-datepicker-gap: 0.25rem !default;
|
|
402
197
|
$moo-datepicker-padding: 0.75rem !default;
|
|
@@ -405,97 +200,40 @@ $moo-datepicker-day-border-radius: var(--bs-border-radius-sm) !default;
|
|
|
405
200
|
$moo-datepicker-day-range-joined-border-radius: 0 !default;
|
|
406
201
|
$moo-datepicker-day-focus-ring-shadow: 0 0 0 #{$moo-form-focus-ring-width} color-mix(in srgb, #{$moo-form-focus-ring-color} 50%, transparent) !default;
|
|
407
202
|
|
|
408
|
-
// Bootstrap has no floating/overlay toolbar primitive, so the Data Table
|
|
409
|
-
// bulk-actions bar's hover affordance (the whole bar scaling up slightly,
|
|
410
|
-
// not a per-button state) has no Bootstrap knob to consume. Exposed as a
|
|
411
|
-
// scoped, consumer-overridable knob: set to 1 to turn the effect off, or
|
|
412
|
-
// raise it for a more pronounced zoom.
|
|
413
203
|
$moo-datatable-bulk-actions-hover-scale: 1.02 !default;
|
|
414
|
-
// The selection bulk-actions bar is a fixed-position overlay surface; its
|
|
415
|
-
// backdrop blur strength has no Bootstrap equivalent to consume.
|
|
416
204
|
$moo-datatable-bulk-actions-backdrop-blur: 8px !default;
|
|
417
205
|
|
|
418
|
-
// Fixed shell footers need to lift the floating selection bar above their
|
|
419
|
-
// chrome. Keep the default component position unchanged while giving host
|
|
420
|
-
// surfaces a scoped override hook.
|
|
421
206
|
$moo-datatable-bulk-actions-bottom: 1rem !default;
|
|
422
|
-
// Bootstrap's table surface is opaque by default and has no context-aware
|
|
423
|
-
// Card composition knob, so card-contained tables consume this scoped Sass
|
|
424
|
-
// setting instead of hardcoding their transparent surface in the partial.
|
|
425
207
|
$moo-table-contained-bg: transparent !default;
|
|
426
|
-
// Bootstrap has no Data Table layout/card primitive, so these scoped knobs
|
|
427
|
-
// describe the generated table/card frames without becoming global widths.
|
|
428
208
|
$moo-datatable-min-width: 48rem !default;
|
|
429
209
|
$moo-datatable-release-review-min-width: 64rem !default;
|
|
430
210
|
$moo-datatable-card-min-width: 20rem !default;
|
|
431
211
|
$moo-datatable-card-label-width: 7rem !default;
|
|
432
|
-
|
|
433
|
-
// this fade prevents the pinned cell from reading as a dominant blank column.
|
|
212
|
+
$moo-datatable-responsive-breakpoint: () !default;
|
|
434
213
|
$moo-datatable-actions-cell-fade-width: 1.25rem !default;
|
|
435
|
-
// Bootstrap has no Data Table action-cell surface token; keep this scoped
|
|
436
|
-
// knob aligned with the native body surface and override it for Card context.
|
|
437
214
|
$moo-datatable-actions-cell-bg: var(--bs-body-bg) !default;
|
|
438
|
-
// Bootstrap has no Data Table frame-header or layout-toggle row primitive, so
|
|
439
|
-
// these scoped knobs align Moo's table/card header controls to Bootstrap inputs.
|
|
440
215
|
$moo-datatable-frame-header-min-height: 2.78125rem !default;
|
|
441
|
-
// Bootstrap's checkbox width variable is not available while Moo settings
|
|
442
|
-
// are aggregated, so keep Data Table's select inset derived from Moo's compact
|
|
443
|
-
// checkbox box and Bootstrap's default 1px frame border. Now matches the
|
|
444
|
-
// global $form-check-input-width (1rem / 16px) set above.
|
|
445
216
|
$moo-datatable-select-checkbox-size: 1rem !default;
|
|
446
|
-
// Bootstrap has no --bs-form-check-input-border-radius custom property to
|
|
447
|
-
// consume here either, same gap as the checkbox size above, this time for
|
|
448
|
-
// the facet dropdown's own checkbox-style indicator (datatable_facet_item(),
|
|
449
|
-
// which can't reuse the shared .dropdown-item-check__indicator markup).
|
|
450
|
-
// Scoped to Data Table since it can't reference Dropdown's private knob
|
|
451
|
-
// across files; restated as .25em to match Bootstrap's own
|
|
452
|
-
// $form-check-input-border-radius default so the facet dropdown reads as
|
|
453
|
-
// the same control as the shared indicator and the real Checkbox.
|
|
454
217
|
$moo-datatable-facet-item-border-radius: .25em !default;
|
|
455
|
-
// Keep the select-all checkbox inset visually even with the table/card header's
|
|
456
|
-
// vertical breathing while accounting for the framed wrapper border.
|
|
457
218
|
$moo-datatable-select-cell-inset: ($moo-datatable-frame-header-min-height - $moo-datatable-select-checkbox-size) * 0.5 - 0.0625rem !default;
|
|
458
|
-
// Bootstrap has no knob for reconciling a native table-cell checkbox baseline
|
|
459
|
-
// with a flex-aligned card header checkbox, so this scoped 0.75px nudge keeps
|
|
460
|
-
// their visual boxes on the same y-axis when switching between list/card view.
|
|
461
219
|
$moo-datatable-table-select-all-offset-y: 0.046875rem !default;
|
|
462
220
|
$moo-datatable-toolbar-control-height: calc(#{$input-height} + var(--bs-border-width) * 2) !default;
|
|
463
221
|
$moo-datatable-icon-label-gap: 0.5rem !default;
|
|
464
|
-
// Bootstrap dropdowns have no scoped Data Table filter-picker width token; the
|
|
465
|
-
// compact root list and longer option drill-down each need their own knob.
|
|
466
222
|
$moo-datatable-search-filter-menu-width: 12.5rem !default;
|
|
467
223
|
$moo-datatable-search-filter-options-menu-width: 17rem !default;
|
|
468
224
|
$moo-datatable-facet-menu-min-width: 12.5rem !default;
|
|
469
225
|
$moo-datatable-facet-trigger-font-size: $btn-font-size-sm !default;
|
|
470
226
|
$moo-datatable-facet-trigger-min-height: 2rem !default;
|
|
471
|
-
// A viewport-relative cap (100vh - offset) assumes the menu opens near the
|
|
472
|
-
// top of the screen; Popper can anchor it much lower, letting it overflow
|
|
473
|
-
// the viewport anyway. A fixed cap sized to a row count -- the same
|
|
474
|
-
// rows-per-screen convention Combobox's own long menu already uses -- stays
|
|
475
|
-
// correct regardless of where the trigger sits on the page, and keeps a
|
|
476
|
-
// long option list (e.g. every row owner) from crowding the whole screen.
|
|
477
|
-
// Shared by both the inline facet dropdown and the filter-picker's
|
|
478
|
-
// drill-down option list, so the two present the same row count.
|
|
479
227
|
$moo-datatable-facet-item-height: 2rem !default;
|
|
480
228
|
$moo-datatable-facet-options-max-height: $moo-datatable-facet-item-height * 10 !default;
|
|
481
|
-
// Bootstrap has no thin scrollbar utility. Keep the primitive shared and let
|
|
482
|
-
// Data Table inherit it unless a consumer needs a component-specific override.
|
|
483
229
|
$moo-scrollbar-thin-size: 0.375rem !default;
|
|
484
230
|
$moo-datatable-scrollbar-size: $moo-scrollbar-thin-size !default;
|
|
485
231
|
$moo-datatable-page-size-trigger-min-width: 3.25rem !default;
|
|
486
232
|
$moo-datatable-page-size-menu-min-width: 4rem !default;
|
|
487
|
-
// Catalog preview chrome: maximum width of the full-bleed release-review
|
|
488
|
-
// preview pages that host the Data Table block.
|
|
489
233
|
$moo-datatable-preview-shell-max-width: 82rem !default;
|
|
490
234
|
|
|
491
|
-
// Bootstrap Toast has no deck gap, peek, scale-step, or slide-in timing knobs.
|
|
492
|
-
// Keep the stacked catalog presentation on scoped Sass settings so the runtime
|
|
493
|
-
// can consume the same values through the Toast container.
|
|
494
235
|
$moo-toast-status-icon-size: 1rem !default;
|
|
495
236
|
$moo-toast-status-icon-gap: .5rem !default;
|
|
496
|
-
// Bootstrap Toast has no deck gap, peek, scale-step, or slide-in timing knobs.
|
|
497
|
-
// Keep the indexed deck presentation on Bootstrap-scoped Sass settings so the
|
|
498
|
-
// runtime can consume the same values through the Toast container.
|
|
499
237
|
$moo-toast-stack-gap: .75rem !default;
|
|
500
238
|
$moo-toast-stack-peek: .75rem !default;
|
|
501
239
|
$moo-toast-stack-scale-step: .1 !default;
|
|
@@ -1,49 +1,20 @@
|
|
|
1
|
-
// Bootstrap's form-control consumes these values directly. Keep the native
|
|
2
|
-
// Sass contract, but give text controls the same quiet surface and compact
|
|
3
|
-
// geometry as the design reference.
|
|
4
1
|
$input-padding-y: 0.25rem !default;
|
|
5
2
|
$input-padding-x: 0.625rem !default;
|
|
6
3
|
$input-height: 2rem !default;
|
|
7
4
|
$input-line-height: 1.4285714286 !default;
|
|
8
5
|
$input-bg: var(--moo-input-bg, transparent) !default;
|
|
9
6
|
$input-border-color: var(--moo-border) !default;
|
|
10
|
-
$input-border-radius:
|
|
7
|
+
$input-border-radius: var(--bs-border-radius-lg) !default;
|
|
11
8
|
$input-placeholder-color: var(--bs-tertiary-color) !default;
|
|
12
9
|
$input-focus-bg: var(--moo-input-bg, transparent) !default;
|
|
13
|
-
// Bootstrap leaves disabled text-control foregrounds null by default
|
|
14
|
-
// (vendor/bootstrap/scss/_variables.scss), which lets real values inherit the
|
|
15
|
-
// normal input color. Use Moo's disabled foreground token so disabled values
|
|
16
|
-
// stay quieter than ordinary secondary text across form-control and form-select.
|
|
17
10
|
$input-disabled-color: var(--moo-disabled-foreground) !default;
|
|
18
11
|
$form-select-disabled-color: $input-disabled-color !default;
|
|
19
|
-
// Disabled controls need the whole affordance to fade, including native select
|
|
20
|
-
// arrows and Moo-owned trailing icons, so opacity is a shared state token.
|
|
21
12
|
$moo-disabled-control-opacity: 0.5 !default;
|
|
22
|
-
// Bootstrap's own $input-disabled-bg defaults to the opaque $secondary-bg
|
|
23
|
-
// (vendor/bootstrap/scss/_variables.scss), which reads much darker/heavier
|
|
24
|
-
// than the disabled reference: a faint translucent tint over the input
|
|
25
|
-
// border color, not a solid fill. Bootstrap exposes no subtler disabled
|
|
26
|
-
// surface token, so this stays on the existing $input-border-color knob at
|
|
27
|
-
// low opacity instead of a new private --moo-* token.
|
|
28
13
|
$input-disabled-bg: color-mix(in srgb, var(--moo-border) 40%, transparent) !default;
|
|
29
|
-
// Bootstrap's own $form-file-button-hover-bg defaults to --bs-secondary-bg,
|
|
30
|
-
// which is nearly identical to $form-file-button-bg (--bs-tertiary-bg) in
|
|
31
|
-
// both themes, so hovering the file input's button gives almost no visible
|
|
32
|
-
// feedback. Point the hover state at the existing border token instead of
|
|
33
|
-
// introducing a new one; it stays distinct from the button's resting bg in
|
|
34
|
-
// both light and dark theme blocks (vendor/bootstrap/scss/forms/_form-control.scss).
|
|
35
14
|
$form-file-button-hover-bg: var(--moo-border) !default;
|
|
36
15
|
$form-text-margin-top: 0.5rem !default;
|
|
37
16
|
$form-check-input-focus-border: var(--moo-border) !default;
|
|
38
|
-
// Native checkbox/radio/switch controls have a very small focus target. Keep
|
|
39
|
-
// Bootstrap's form-check glow contract, but make the visible keyboard ring
|
|
40
|
-
// strong enough to clear the 3:1 focus-indicator contrast target on white and
|
|
41
|
-
// dark surfaces.
|
|
42
17
|
$form-check-input-focus-box-shadow: 0 0 0 var(--bs-focus-ring-width) color-mix(in srgb, var(--moo-ring) 50%, transparent) !default;
|
|
43
|
-
// Bootstrap's native checked/range controls consume Sass variables rather
|
|
44
|
-
// than component CSS variables. Point those Sass defaults at Moo's runtime
|
|
45
|
-
// primary token so Theme color previews update checkboxes, radios, switches,
|
|
46
|
-
// and range thumbs without replacing Bootstrap's markup contract.
|
|
47
18
|
$form-check-input-checked-bg-color: var(--moo-primary) !default;
|
|
48
19
|
$form-check-input-checked-border-color: var(--moo-primary) !default;
|
|
49
20
|
$form-check-input-indeterminate-bg-color: var(--moo-primary) !default;
|
|
@@ -53,13 +24,5 @@ $moo-form-check-indeterminate-bg-size: 62% 14% !default;
|
|
|
53
24
|
$moo-form-check-indeterminate-bg-position: center !default;
|
|
54
25
|
$form-range-thumb-bg: var(--moo-primary) !default;
|
|
55
26
|
$form-range-thumb-active-bg: color-mix(in srgb, var(--moo-primary) 85%, var(--moo-surface)) !default;
|
|
56
|
-
// Moo promotes Bootstrap input groups from separate child borders to one
|
|
57
|
-
// compound border. Bootstrap has no parent input-group radius knob, so the
|
|
58
|
-
// default parent radius lives here while .rounded-pill can still opt into
|
|
59
|
-
// Bootstrap's native pill radius utility.
|
|
60
27
|
$moo-input-group-border-radius: var(--bs-border-radius-lg) !default;
|
|
61
|
-
// Input group addons (text, buttons) share the exact input surface so the
|
|
62
|
-
// whole group reads as one compound control, not a row of mismatched tiles.
|
|
63
|
-
// Bootstrap defaults addons to --bs-tertiary-bg; Moo ties them to $input-bg
|
|
64
|
-
// so light-mode transparent inputs and dark-mode --moo-input-bg stay aligned.
|
|
65
28
|
$input-group-addon-bg: $input-bg !default;
|
|
@@ -4,11 +4,6 @@ $black: #0a0a0a !default;
|
|
|
4
4
|
$headings-font-weight: 600 !default;
|
|
5
5
|
$lead-font-size: 1.125rem !default;
|
|
6
6
|
$lead-font-weight: 400 !default;
|
|
7
|
-
// Bootstrap's stock display scale (5rem down to 2.5rem) at font-weight 300
|
|
8
|
-
// reads as oversized, airy marketing type -- far past this reference's
|
|
9
|
-
// headline sizing. Calmer sizes at $headings-font-weight keep Display
|
|
10
|
-
// headings feeling like the rest of the type scale instead of a jump to a
|
|
11
|
-
// different visual language.
|
|
12
7
|
$display-font-sizes: (
|
|
13
8
|
1: 3.5rem,
|
|
14
9
|
2: 3rem,
|
|
@@ -19,9 +14,6 @@ $display-font-sizes: (
|
|
|
19
14
|
) !default;
|
|
20
15
|
$display-font-weight: $headings-font-weight !default;
|
|
21
16
|
|
|
22
|
-
// Moo's runtime palette is emitted by both the standalone :root build and the
|
|
23
|
-
// scoped Odoo core build. Keep values centralized here so the two entrypoints
|
|
24
|
-
// cannot drift while still using their own selector ownership.
|
|
25
17
|
$moo-surface: $body-bg !default;
|
|
26
18
|
$moo-muted-surface: $secondary !default;
|
|
27
19
|
$moo-border: $border-color !default;
|
|
@@ -29,25 +21,13 @@ $moo-primary: $primary !default;
|
|
|
29
21
|
$moo-primary-foreground: $light !default;
|
|
30
22
|
$moo-foreground: $body-color !default;
|
|
31
23
|
$moo-muted-foreground: #71717a !default;
|
|
32
|
-
// The reference derives --ring as a lighter tint of --primary (same hue,
|
|
33
|
-
// lightened toward the surface) instead of a fixed literal, so a
|
|
34
|
-
// brand-color change updates the ring automatically instead of needing a
|
|
35
|
-
// matching manual edit. $primary here is itself a near-neutral dark tone,
|
|
36
|
-
// so this naturally lands close to a neutral mid-gray -- the reference's
|
|
37
|
-
// own default Neutral theme's ring (#a1a1a1 light / #737373 dark) -- while
|
|
38
|
-
// staying derived rather than a hardcoded copy of those numbers.
|
|
39
24
|
$moo-ring: color-mix(in srgb, $white 60%, $primary) !default;
|
|
40
|
-
// The reference's --destructive token drives destructive text and alpha
|
|
41
|
-
// surfaces. The public $danger default matches the light token; dark mode uses
|
|
42
|
-
// the matching reference dark token below.
|
|
43
25
|
$moo-destructive: $danger !default;
|
|
44
26
|
$moo-destructive-surface: color-mix(in srgb, $moo-destructive 3%, transparent) !default;
|
|
45
27
|
$moo-destructive-surface-hover: color-mix(in srgb, $moo-destructive 6%, transparent) !default;
|
|
46
28
|
$moo-destructive-foreground: $moo-destructive !default;
|
|
47
29
|
$moo-form-invalid-border-color: $moo-destructive !default;
|
|
48
30
|
$moo-form-invalid-ring-color: color-mix(in srgb, $moo-destructive 20%, transparent) !default;
|
|
49
|
-
// Warning and success derive from Bootstrap's $warning/$success palette
|
|
50
|
-
// variables, following the same alpha-surface pattern as destructive.
|
|
51
31
|
$moo-warning: $warning !default;
|
|
52
32
|
$moo-warning-surface: color-mix(in srgb, $moo-warning 10%, transparent) !default;
|
|
53
33
|
$moo-warning-surface-hover: color-mix(in srgb, $moo-warning 20%, transparent) !default;
|
|
@@ -66,9 +46,6 @@ $moo-chart-2: #71717a !default;
|
|
|
66
46
|
$moo-chart-3: #a1a1aa !default;
|
|
67
47
|
$moo-chart-4: #3f3f46 !default;
|
|
68
48
|
$moo-chart-5: #27272a !default;
|
|
69
|
-
// $black (#0a0a0a), not $dark (#18181b, zinc-900) -- the reference's own
|
|
70
|
-
// dark-mode --background is #0a0a0a exactly, and $black already carried
|
|
71
|
-
// that value without being wired to this token.
|
|
72
49
|
$moo-surface-dark: $black !default;
|
|
73
50
|
$moo-muted-surface-dark: #27272a !default;
|
|
74
51
|
$moo-border-dark: #3f3f46 !default;
|
|
@@ -76,20 +53,13 @@ $moo-primary-dark: $moo-border !default;
|
|
|
76
53
|
$moo-primary-foreground-dark: $dark !default;
|
|
77
54
|
$moo-foreground-dark: $light !default;
|
|
78
55
|
$moo-muted-foreground-dark: #a1a1aa !default;
|
|
79
|
-
// Same derivation as $moo-ring above, at a lower white weight -- dark
|
|
80
|
-
// surfaces need a darker-than-light-mode ring to read as mid-tone against a
|
|
81
|
-
// dark background instead of a near-white glow.
|
|
82
56
|
$moo-ring-dark: color-mix(in srgb, $white 40%, $primary) !default;
|
|
83
|
-
// Reference dark --destructive token.
|
|
84
57
|
$moo-destructive-dark: #ff6467 !default;
|
|
85
58
|
$moo-destructive-surface-dark: color-mix(in srgb, $moo-destructive-dark 20%, transparent) !default;
|
|
86
59
|
$moo-destructive-surface-hover-dark: color-mix(in srgb, $moo-destructive-dark 30%, transparent) !default;
|
|
87
60
|
$moo-destructive-foreground-dark: $moo-destructive-dark !default;
|
|
88
61
|
$moo-form-invalid-border-color-dark: color-mix(in srgb, $moo-destructive-dark 50%, transparent) !default;
|
|
89
62
|
$moo-form-invalid-ring-color-dark: color-mix(in srgb, $moo-destructive-dark 40%, transparent) !default;
|
|
90
|
-
// Dark-mode warning/success: lighter tints of the public config base hues,
|
|
91
|
-
// mixed toward $light so they stay readable on dark surfaces. Everything
|
|
92
|
-
// derives from public config variables only.
|
|
93
63
|
$moo-warning-dark: color-mix(in srgb, $light 60%, $warning) !default;
|
|
94
64
|
$moo-warning-surface-dark: color-mix(in srgb, $moo-warning-dark 20%, transparent) !default;
|
|
95
65
|
$moo-warning-surface-hover-dark: color-mix(in srgb, $moo-warning-dark 30%, transparent) !default;
|
|
@@ -103,17 +73,8 @@ $moo-info-surface-dark: color-mix(in srgb, $moo-info-dark 20%, transparent) !def
|
|
|
103
73
|
$moo-info-surface-hover-dark: color-mix(in srgb, $moo-info-dark 30%, transparent) !default;
|
|
104
74
|
$moo-info-foreground-dark: $moo-info-dark !default;
|
|
105
75
|
$moo-sidebar-dark: #1c1c1f !default;
|
|
106
|
-
// Dark-mode input background: a translucent tint that gives form controls a
|
|
107
|
-
// distinct surface against the page background. Light mode stays transparent
|
|
108
|
-
// (the default), but dark mode needs this subtle depth cue so inputs don't
|
|
109
|
-
// rely on border alone for definition. Mixed from muted-surface-dark toward
|
|
110
|
-
// the surface color so it reads as "slightly lighter than the page" without
|
|
111
|
-
// introducing a new hardcoded color.
|
|
112
76
|
$moo-input-bg-dark: color-mix(in srgb, $moo-muted-surface-dark 50%, $moo-surface-dark) !default;
|
|
113
77
|
|
|
114
|
-
// Bootstrap root variables consumed by the scoped core build. Define them
|
|
115
|
-
// here so themes/_theme.scss can emit Bootstrap's root contract without
|
|
116
|
-
// hardcoded consumer-side literals.
|
|
117
78
|
$body-tertiary-color: #a1a1aa !default;
|
|
118
79
|
$body-tertiary-bg: $light !default;
|
|
119
80
|
$code-color: #d63384 !default;
|
|
@@ -125,8 +86,5 @@ $code-color-dark: #e685b5 !default;
|
|
|
125
86
|
$mark-bg-dark: #664d03 !default;
|
|
126
87
|
$border-color-translucent-dark: rgba(250, 250, 250, 0.15) !default;
|
|
127
88
|
|
|
128
|
-
// Disabled foregrounds need to read quieter than secondary prose and icons.
|
|
129
|
-
// Bootstrap's tertiary color is the closest native semantic for that state,
|
|
130
|
-
// so expose it through a Moo token for components without a Bootstrap knob.
|
|
131
89
|
$moo-disabled-foreground: $body-tertiary-color !default;
|
|
132
90
|
$moo-disabled-foreground-dark: $body-tertiary-color-dark !default;
|