@wpmoo/ui 1.0.0-rc.2 → 1.0.0-rc.4
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 +3 -1
- package/README.md +50 -107
- package/certification.json +20 -3
- package/dist/assets/css/moo-ui.css +8254 -7629
- package/dist/assets/css/moo-ui.min.css +3 -3
- package/dist/assets/css/moo.css +595 -71
- package/dist/assets/css/moo.min.css +3 -3
- package/dist/js/chart.js +15258 -0
- package/dist/js/chart.min.js +27 -0
- package/dist/js/combobox.js +98 -40
- package/dist/js/context-menu.js +5 -0
- package/dist/js/datatable.js +5 -0
- package/dist/js/datepicker.js +1154 -0
- package/dist/js/datepicker.min.js +6 -0
- package/dist/js/moo-ui.js +18950 -0
- package/dist/js/moo-ui.min.js +27 -0
- package/dist/js/sidebar.js +67 -25
- package/dist/js/slider.js +324 -0
- package/package.json +24 -4
- package/scss/_components.scss +73 -0
- package/scss/_config.scss +24 -0
- package/scss/_settings.scss +8 -0
- package/scss/components/_accordion.scss +59 -0
- package/scss/components/_alert.scss +94 -0
- package/scss/components/_avatar.scss +154 -0
- package/scss/components/_badge.scss +33 -0
- package/scss/components/_breadcrumb.scss +130 -0
- package/scss/components/_button.scss +228 -0
- package/scss/components/_button_group.scss +51 -0
- package/scss/components/_card.scss +142 -0
- package/scss/components/_checkbox.scss +115 -0
- package/scss/components/_close_button.scss +59 -0
- package/scss/components/_collapsible.scss +43 -0
- package/scss/components/_combobox.scss +258 -0
- package/scss/components/_context-menu.scss +28 -0
- package/scss/components/_datatable.scss +1082 -0
- package/scss/components/_datepicker.scss +236 -0
- package/scss/components/_dialog.scss +66 -0
- package/scss/components/_dropdown.scss +202 -0
- package/scss/components/_field.scss +125 -0
- package/scss/components/_input.scss +35 -0
- package/scss/components/_input_group.scss +201 -0
- package/scss/components/_kbd.scss +10 -0
- package/scss/components/_menubar.scss +16 -0
- package/scss/components/_navigation.scss +41 -0
- package/scss/components/_pagination.scss +70 -0
- package/scss/components/_popover.scss +47 -0
- package/scss/components/_progress.scss +7 -0
- package/scss/components/_radio_group.scss +9 -0
- package/scss/components/_select.scss +7 -0
- package/scss/components/_separator.scss +15 -0
- package/scss/components/_sheet.scss +32 -0
- package/scss/components/_sidebar.scss +7 -0
- package/scss/components/_skeleton.scss +17 -0
- package/scss/components/_slider.scss +214 -0
- package/scss/components/_spinner.scss +17 -0
- package/scss/components/_switch.scss +25 -0
- package/scss/components/_table.scss +7 -0
- package/scss/components/_tabs.scss +139 -0
- package/scss/components/_textarea.scss +7 -0
- package/scss/components/_toast.scss +119 -0
- package/scss/components/_toggle_group.scss +19 -0
- package/scss/components/_tooltip.scss +83 -0
- package/scss/components/sidebar/_collapsed.scss +187 -0
- package/scss/components/sidebar/_identity.scss +72 -0
- package/scss/components/sidebar/_inset.scss +59 -0
- package/scss/components/sidebar/_layout.scss +176 -0
- package/scss/components/sidebar/_menus.scss +236 -0
- package/scss/foundations/_core_global_primitives.scss +5 -0
- package/scss/foundations/_core_state_layer.scss +25 -0
- package/scss/foundations/_focus.scss +139 -0
- package/scss/foundations/_overlay_backdrop.scss +19 -0
- package/scss/moo-core.scss +47 -0
- package/scss/moo-ui.scss +50 -0
- package/scss/settings/_bootstrap_overrides.scss +11 -0
- package/scss/settings/_component_variables.scss +479 -0
- package/scss/settings/_forms.scss +65 -0
- package/scss/settings/_palette.scss +132 -0
- package/scss/themes/_scoped_core.scss +239 -0
- package/scss/themes/_standalone_root.scss +117 -0
- package/scss/utilities/_scroll_fade.scss +193 -0
- package/scss/utilities/_scroll_fade_primitives.scss +43 -0
- package/scss/_facade-settings.scss +0 -51
- package/scss/settings/_facade_public.scss +0 -23
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
$white: #fff !default;
|
|
2
|
+
$black: #0a0a0a !default;
|
|
3
|
+
|
|
4
|
+
$headings-font-weight: 600 !default;
|
|
5
|
+
$lead-font-size: 1.125rem !default;
|
|
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
|
+
$display-font-sizes: (
|
|
13
|
+
1: 3.5rem,
|
|
14
|
+
2: 3rem,
|
|
15
|
+
3: 2.5rem,
|
|
16
|
+
4: 2.25rem,
|
|
17
|
+
5: 1.875rem,
|
|
18
|
+
6: 1.5rem
|
|
19
|
+
) !default;
|
|
20
|
+
$display-font-weight: $headings-font-weight !default;
|
|
21
|
+
|
|
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
|
+
$moo-surface: $body-bg !default;
|
|
26
|
+
$moo-muted-surface: $secondary !default;
|
|
27
|
+
$moo-border: $border-color !default;
|
|
28
|
+
$moo-primary: $primary !default;
|
|
29
|
+
$moo-primary-foreground: $light !default;
|
|
30
|
+
$moo-foreground: $body-color !default;
|
|
31
|
+
$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
|
+
$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
|
+
$moo-destructive: $danger !default;
|
|
44
|
+
$moo-destructive-surface: color-mix(in srgb, $moo-destructive 3%, transparent) !default;
|
|
45
|
+
$moo-destructive-surface-hover: color-mix(in srgb, $moo-destructive 6%, transparent) !default;
|
|
46
|
+
$moo-destructive-foreground: $moo-destructive !default;
|
|
47
|
+
$moo-form-invalid-border-color: $moo-destructive !default;
|
|
48
|
+
$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
|
+
$moo-warning: $warning !default;
|
|
52
|
+
$moo-warning-surface: color-mix(in srgb, $moo-warning 10%, transparent) !default;
|
|
53
|
+
$moo-warning-surface-hover: color-mix(in srgb, $moo-warning 20%, transparent) !default;
|
|
54
|
+
$moo-warning-foreground: $moo-warning !default;
|
|
55
|
+
$moo-success: $success !default;
|
|
56
|
+
$moo-success-surface: color-mix(in srgb, $moo-success 10%, transparent) !default;
|
|
57
|
+
$moo-success-surface-hover: color-mix(in srgb, $moo-success 20%, transparent) !default;
|
|
58
|
+
$moo-success-foreground: $moo-success !default;
|
|
59
|
+
$moo-info: $info !default;
|
|
60
|
+
$moo-info-surface: color-mix(in srgb, $moo-info 10%, transparent) !default;
|
|
61
|
+
$moo-info-surface-hover: color-mix(in srgb, $moo-info 20%, transparent) !default;
|
|
62
|
+
$moo-info-foreground: $moo-info !default;
|
|
63
|
+
$moo-sidebar: $light !default;
|
|
64
|
+
$moo-chart-1: #52525b !default;
|
|
65
|
+
$moo-chart-2: #71717a !default;
|
|
66
|
+
$moo-chart-3: #a1a1aa !default;
|
|
67
|
+
$moo-chart-4: #3f3f46 !default;
|
|
68
|
+
$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
|
+
$moo-surface-dark: $black !default;
|
|
73
|
+
$moo-muted-surface-dark: #27272a !default;
|
|
74
|
+
$moo-border-dark: #3f3f46 !default;
|
|
75
|
+
$moo-primary-dark: $moo-border !default;
|
|
76
|
+
$moo-primary-foreground-dark: $dark !default;
|
|
77
|
+
$moo-foreground-dark: $light !default;
|
|
78
|
+
$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
|
+
$moo-ring-dark: color-mix(in srgb, $white 40%, $primary) !default;
|
|
83
|
+
// Reference dark --destructive token.
|
|
84
|
+
$moo-destructive-dark: #ff6467 !default;
|
|
85
|
+
$moo-destructive-surface-dark: color-mix(in srgb, $moo-destructive-dark 20%, transparent) !default;
|
|
86
|
+
$moo-destructive-surface-hover-dark: color-mix(in srgb, $moo-destructive-dark 30%, transparent) !default;
|
|
87
|
+
$moo-destructive-foreground-dark: $moo-destructive-dark !default;
|
|
88
|
+
$moo-form-invalid-border-color-dark: color-mix(in srgb, $moo-destructive-dark 50%, transparent) !default;
|
|
89
|
+
$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
|
+
$moo-warning-dark: color-mix(in srgb, $light 60%, $warning) !default;
|
|
94
|
+
$moo-warning-surface-dark: color-mix(in srgb, $moo-warning-dark 20%, transparent) !default;
|
|
95
|
+
$moo-warning-surface-hover-dark: color-mix(in srgb, $moo-warning-dark 30%, transparent) !default;
|
|
96
|
+
$moo-warning-foreground-dark: $moo-warning-dark !default;
|
|
97
|
+
$moo-success-dark: color-mix(in srgb, $light 60%, $success) !default;
|
|
98
|
+
$moo-success-surface-dark: color-mix(in srgb, $moo-success-dark 20%, transparent) !default;
|
|
99
|
+
$moo-success-surface-hover-dark: color-mix(in srgb, $moo-success-dark 30%, transparent) !default;
|
|
100
|
+
$moo-success-foreground-dark: $moo-success-dark !default;
|
|
101
|
+
$moo-info-dark: color-mix(in srgb, $light 60%, $info) !default;
|
|
102
|
+
$moo-info-surface-dark: color-mix(in srgb, $moo-info-dark 20%, transparent) !default;
|
|
103
|
+
$moo-info-surface-hover-dark: color-mix(in srgb, $moo-info-dark 30%, transparent) !default;
|
|
104
|
+
$moo-info-foreground-dark: $moo-info-dark !default;
|
|
105
|
+
$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
|
+
$moo-input-bg-dark: color-mix(in srgb, $moo-muted-surface-dark 50%, $moo-surface-dark) !default;
|
|
113
|
+
|
|
114
|
+
// Bootstrap root variables consumed by the scoped core build. Define them
|
|
115
|
+
// here so themes/_scoped_core.scss can emit Bootstrap's root contract without
|
|
116
|
+
// hardcoded consumer-side literals.
|
|
117
|
+
$body-tertiary-color: #a1a1aa !default;
|
|
118
|
+
$body-tertiary-bg: $light !default;
|
|
119
|
+
$code-color: #d63384 !default;
|
|
120
|
+
$mark-bg: #fff3cd !default;
|
|
121
|
+
$border-color-translucent: rgba(24, 24, 27, 0.175) !default;
|
|
122
|
+
$body-tertiary-color-dark: $moo-muted-foreground !default;
|
|
123
|
+
$body-tertiary-bg-dark: #202024 !default;
|
|
124
|
+
$code-color-dark: #e685b5 !default;
|
|
125
|
+
$mark-bg-dark: #664d03 !default;
|
|
126
|
+
$border-color-translucent-dark: rgba(250, 250, 250, 0.15) !default;
|
|
127
|
+
|
|
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
|
+
$moo-disabled-foreground: $body-tertiary-color !default;
|
|
132
|
+
$moo-disabled-foreground-dark: $body-tertiary-color-dark !default;
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
$moo-theme-colors-text-dark: (
|
|
2
|
+
"primary": $primary-text-emphasis-dark,
|
|
3
|
+
"secondary": $secondary-text-emphasis-dark,
|
|
4
|
+
"success": $success-text-emphasis-dark,
|
|
5
|
+
"info": $info-text-emphasis-dark,
|
|
6
|
+
"warning": $warning-text-emphasis-dark,
|
|
7
|
+
"danger": $danger-text-emphasis-dark,
|
|
8
|
+
"light": $light-text-emphasis-dark,
|
|
9
|
+
"dark": $dark-text-emphasis-dark,
|
|
10
|
+
) !default;
|
|
11
|
+
|
|
12
|
+
$moo-theme-colors-bg-subtle-dark: (
|
|
13
|
+
"primary": $primary-bg-subtle-dark,
|
|
14
|
+
"secondary": $secondary-bg-subtle-dark,
|
|
15
|
+
"success": $success-bg-subtle-dark,
|
|
16
|
+
"info": $info-bg-subtle-dark,
|
|
17
|
+
"warning": $warning-bg-subtle-dark,
|
|
18
|
+
"danger": $danger-bg-subtle-dark,
|
|
19
|
+
"light": $light-bg-subtle-dark,
|
|
20
|
+
"dark": $dark-bg-subtle-dark,
|
|
21
|
+
) !default;
|
|
22
|
+
|
|
23
|
+
$moo-theme-colors-border-subtle-dark: (
|
|
24
|
+
"primary": $primary-border-subtle-dark,
|
|
25
|
+
"secondary": $secondary-border-subtle-dark,
|
|
26
|
+
"success": $success-border-subtle-dark,
|
|
27
|
+
"info": $info-border-subtle-dark,
|
|
28
|
+
"warning": $warning-border-subtle-dark,
|
|
29
|
+
"danger": $danger-border-subtle-dark,
|
|
30
|
+
"light": $light-border-subtle-dark,
|
|
31
|
+
"dark": $dark-border-subtle-dark,
|
|
32
|
+
) !default;
|
|
33
|
+
|
|
34
|
+
@mixin moo-core-scales {
|
|
35
|
+
@each $color, $value in $colors {
|
|
36
|
+
--#{$prefix}#{$color}: #{$value};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@each $color, $value in $grays {
|
|
40
|
+
--#{$prefix}gray-#{$color}: #{$value};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@each $color, $value in $theme-colors {
|
|
44
|
+
--#{$prefix}#{$color}: #{$value};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@each $color, $value in $theme-colors-rgb {
|
|
48
|
+
--#{$prefix}#{$color}-rgb: #{$value};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
--#{$prefix}white-rgb: #{to-rgb($white)};
|
|
52
|
+
--#{$prefix}black-rgb: #{to-rgb($black)};
|
|
53
|
+
--#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
|
|
54
|
+
--#{$prefix}font-monospace: #{inspect($font-family-monospace)};
|
|
55
|
+
--#{$prefix}gradient: #{$gradient};
|
|
56
|
+
--#{$prefix}body-font-family: #{inspect($font-family-base)};
|
|
57
|
+
@include rfs($font-size-base, --#{$prefix}body-font-size);
|
|
58
|
+
--#{$prefix}body-font-weight: #{$font-weight-base};
|
|
59
|
+
--#{$prefix}body-line-height: #{$line-height-base};
|
|
60
|
+
--#{$prefix}link-decoration: #{$link-decoration};
|
|
61
|
+
--#{$prefix}border-width: #{$border-width};
|
|
62
|
+
--#{$prefix}border-style: #{$border-style};
|
|
63
|
+
--#{$prefix}border-radius: #{$border-radius};
|
|
64
|
+
--#{$prefix}border-radius-sm: #{$border-radius-sm};
|
|
65
|
+
--#{$prefix}border-radius-lg: #{$border-radius-lg};
|
|
66
|
+
--#{$prefix}border-radius-xl: #{$border-radius-xl};
|
|
67
|
+
--#{$prefix}border-radius-xxl: #{$border-radius-xxl};
|
|
68
|
+
--#{$prefix}border-radius-2xl: var(--#{$prefix}border-radius-xxl);
|
|
69
|
+
--#{$prefix}border-radius-pill: #{$border-radius-pill};
|
|
70
|
+
--#{$prefix}box-shadow: #{$box-shadow};
|
|
71
|
+
--#{$prefix}box-shadow-sm: #{$box-shadow-sm};
|
|
72
|
+
--#{$prefix}box-shadow-lg: #{$box-shadow-lg};
|
|
73
|
+
--#{$prefix}box-shadow-inset: #{$box-shadow-inset};
|
|
74
|
+
--#{$prefix}focus-ring-width: #{$focus-ring-width};
|
|
75
|
+
--#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
|
|
76
|
+
--#{$prefix}focus-ring-color: var(--moo-ring);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@mixin moo-core-shared {
|
|
80
|
+
--moo-overlay-backdrop-opacity: #{$moo-overlay-backdrop-opacity};
|
|
81
|
+
--moo-overlay-backdrop-bg: #{$moo-overlay-backdrop-bg};
|
|
82
|
+
--moo-overlay-backdrop-filter: #{$moo-overlay-backdrop-filter};
|
|
83
|
+
--moo-input-group-border-radius: #{$moo-input-group-border-radius};
|
|
84
|
+
--moo-disabled-control-opacity: #{$moo-disabled-control-opacity};
|
|
85
|
+
--moo-sidebar-foreground: var(--moo-foreground);
|
|
86
|
+
--moo-sidebar-accent: var(--moo-muted-surface);
|
|
87
|
+
--moo-sidebar-border: var(--moo-border);
|
|
88
|
+
--moo-chart-1: #{$moo-chart-1};
|
|
89
|
+
--moo-chart-2: #{$moo-chart-2};
|
|
90
|
+
--moo-chart-3: #{$moo-chart-3};
|
|
91
|
+
--moo-chart-4: #{$moo-chart-4};
|
|
92
|
+
--moo-chart-5: #{$moo-chart-5};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@mixin moo-core-light {
|
|
96
|
+
color-scheme: light;
|
|
97
|
+
color: var(--#{$prefix}body-color);
|
|
98
|
+
background-color: var(--#{$prefix}body-bg);
|
|
99
|
+
--moo-surface: #{$moo-surface};
|
|
100
|
+
--moo-muted-surface: #{$moo-muted-surface};
|
|
101
|
+
--moo-border: #{$moo-border};
|
|
102
|
+
--moo-primary: #{$moo-primary};
|
|
103
|
+
--moo-primary-foreground: #{$moo-primary-foreground};
|
|
104
|
+
--moo-foreground: #{$moo-foreground};
|
|
105
|
+
--moo-muted-foreground: #{$moo-muted-foreground};
|
|
106
|
+
--moo-disabled-foreground: #{$moo-disabled-foreground};
|
|
107
|
+
--moo-ring: #{$moo-ring};
|
|
108
|
+
--moo-destructive: #{$moo-destructive};
|
|
109
|
+
--moo-destructive-surface: #{$moo-destructive-surface};
|
|
110
|
+
--moo-destructive-surface-hover: #{$moo-destructive-surface-hover};
|
|
111
|
+
--moo-destructive-foreground: #{$moo-destructive-foreground};
|
|
112
|
+
--moo-form-invalid-ring-color: #{$moo-form-invalid-ring-color};
|
|
113
|
+
--moo-warning: #{$moo-warning};
|
|
114
|
+
--moo-warning-surface: #{$moo-warning-surface};
|
|
115
|
+
--moo-warning-surface-hover: #{$moo-warning-surface-hover};
|
|
116
|
+
--moo-warning-foreground: #{$moo-warning-foreground};
|
|
117
|
+
--moo-success: #{$moo-success};
|
|
118
|
+
--moo-success-surface: #{$moo-success-surface};
|
|
119
|
+
--moo-success-surface-hover: #{$moo-success-surface-hover};
|
|
120
|
+
--moo-success-foreground: #{$moo-success-foreground};
|
|
121
|
+
--moo-info: #{$moo-info};
|
|
122
|
+
--moo-info-surface: #{$moo-info-surface};
|
|
123
|
+
--moo-info-surface-hover: #{$moo-info-surface-hover};
|
|
124
|
+
--moo-info-foreground: #{$moo-info-foreground};
|
|
125
|
+
--moo-sidebar: #{$moo-sidebar};
|
|
126
|
+
--#{$prefix}body-color: var(--moo-foreground);
|
|
127
|
+
--#{$prefix}body-color-rgb: #{to-rgb($moo-foreground)};
|
|
128
|
+
--#{$prefix}body-bg: var(--moo-surface);
|
|
129
|
+
--#{$prefix}body-bg-rgb: #{to-rgb($moo-surface)};
|
|
130
|
+
--#{$prefix}emphasis-color: var(--moo-foreground);
|
|
131
|
+
--#{$prefix}emphasis-color-rgb: #{to-rgb($moo-foreground)};
|
|
132
|
+
--#{$prefix}secondary-color: var(--moo-muted-foreground);
|
|
133
|
+
--#{$prefix}secondary-color-rgb: #{to-rgb($moo-muted-foreground)};
|
|
134
|
+
--#{$prefix}secondary-bg: var(--moo-muted-surface);
|
|
135
|
+
--#{$prefix}secondary-bg-rgb: #{to-rgb($moo-muted-surface)};
|
|
136
|
+
--#{$prefix}tertiary-color: #{$body-tertiary-color};
|
|
137
|
+
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
|
138
|
+
--#{$prefix}tertiary-bg: #{$body-tertiary-bg};
|
|
139
|
+
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
|
140
|
+
--#{$prefix}heading-color: var(--moo-foreground);
|
|
141
|
+
--#{$prefix}link-color: var(--moo-foreground);
|
|
142
|
+
--#{$prefix}link-color-rgb: #{to-rgb($moo-foreground)};
|
|
143
|
+
--#{$prefix}link-hover-color: var(--moo-muted-foreground);
|
|
144
|
+
--#{$prefix}link-hover-color-rgb: #{to-rgb($moo-muted-foreground)};
|
|
145
|
+
--#{$prefix}code-color: #{$code-color};
|
|
146
|
+
--#{$prefix}highlight-color: var(--moo-foreground);
|
|
147
|
+
--#{$prefix}highlight-bg: #{$mark-bg};
|
|
148
|
+
--#{$prefix}border-color: var(--moo-border);
|
|
149
|
+
--#{$prefix}border-color-translucent: #{$border-color-translucent};
|
|
150
|
+
--#{$prefix}form-valid-color: #{$form-valid-color};
|
|
151
|
+
--#{$prefix}form-valid-border-color: #{$form-valid-border-color};
|
|
152
|
+
--#{$prefix}form-invalid-color: var(--moo-destructive);
|
|
153
|
+
--#{$prefix}form-invalid-border-color: #{$moo-form-invalid-border-color};
|
|
154
|
+
|
|
155
|
+
@each $color, $value in $theme-colors-text {
|
|
156
|
+
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@each $color, $value in $theme-colors-bg-subtle {
|
|
160
|
+
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
@each $color, $value in $theme-colors-border-subtle {
|
|
164
|
+
--#{$prefix}#{$color}-border-subtle: #{$value};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
@mixin moo-core-dark {
|
|
169
|
+
color-scheme: dark;
|
|
170
|
+
color: var(--#{$prefix}body-color);
|
|
171
|
+
background-color: var(--#{$prefix}body-bg);
|
|
172
|
+
--moo-surface: #{$moo-surface-dark};
|
|
173
|
+
--moo-muted-surface: #{$moo-muted-surface-dark};
|
|
174
|
+
--moo-border: #{$moo-border-dark};
|
|
175
|
+
--moo-primary: #{$moo-primary-dark};
|
|
176
|
+
--moo-primary-foreground: #{$moo-primary-foreground-dark};
|
|
177
|
+
--moo-foreground: #{$moo-foreground-dark};
|
|
178
|
+
--moo-muted-foreground: #{$moo-muted-foreground-dark};
|
|
179
|
+
--moo-disabled-foreground: #{$moo-disabled-foreground-dark};
|
|
180
|
+
--moo-ring: #{$moo-ring-dark};
|
|
181
|
+
--moo-destructive: #{$moo-destructive-dark};
|
|
182
|
+
--moo-destructive-surface: #{$moo-destructive-surface-dark};
|
|
183
|
+
--moo-destructive-surface-hover: #{$moo-destructive-surface-hover-dark};
|
|
184
|
+
--moo-destructive-foreground: #{$moo-destructive-foreground-dark};
|
|
185
|
+
--moo-form-invalid-ring-color: #{$moo-form-invalid-ring-color-dark};
|
|
186
|
+
--moo-warning: #{$moo-warning-dark};
|
|
187
|
+
--moo-warning-surface: #{$moo-warning-surface-dark};
|
|
188
|
+
--moo-warning-surface-hover: #{$moo-warning-surface-hover-dark};
|
|
189
|
+
--moo-warning-foreground: #{$moo-warning-foreground-dark};
|
|
190
|
+
--moo-success: #{$moo-success-dark};
|
|
191
|
+
--moo-success-surface: #{$moo-success-surface-dark};
|
|
192
|
+
--moo-success-surface-hover: #{$moo-success-surface-hover-dark};
|
|
193
|
+
--moo-success-foreground: #{$moo-success-foreground-dark};
|
|
194
|
+
--moo-info: #{$moo-info-dark};
|
|
195
|
+
--moo-info-surface: #{$moo-info-surface-dark};
|
|
196
|
+
--moo-info-surface-hover: #{$moo-info-surface-hover-dark};
|
|
197
|
+
--moo-info-foreground: #{$moo-info-foreground-dark};
|
|
198
|
+
--moo-sidebar: #{$moo-sidebar-dark};
|
|
199
|
+
--#{$prefix}body-color: var(--moo-foreground);
|
|
200
|
+
--#{$prefix}body-color-rgb: #{to-rgb($moo-foreground-dark)};
|
|
201
|
+
--#{$prefix}body-bg: var(--moo-surface);
|
|
202
|
+
--#{$prefix}body-bg-rgb: #{to-rgb($moo-surface-dark)};
|
|
203
|
+
--#{$prefix}emphasis-color: var(--moo-foreground);
|
|
204
|
+
--#{$prefix}emphasis-color-rgb: #{to-rgb($moo-foreground-dark)};
|
|
205
|
+
--#{$prefix}secondary-color: var(--moo-muted-foreground);
|
|
206
|
+
--#{$prefix}secondary-color-rgb: #{to-rgb($moo-muted-foreground-dark)};
|
|
207
|
+
--#{$prefix}secondary-bg: var(--moo-muted-surface);
|
|
208
|
+
--#{$prefix}secondary-bg-rgb: #{to-rgb($moo-muted-surface-dark)};
|
|
209
|
+
--#{$prefix}tertiary-color: #{$body-tertiary-color-dark};
|
|
210
|
+
--#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
|
211
|
+
--#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};
|
|
212
|
+
--#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
|
213
|
+
--#{$prefix}heading-color: var(--moo-foreground);
|
|
214
|
+
--#{$prefix}link-color: var(--moo-foreground);
|
|
215
|
+
--#{$prefix}link-color-rgb: #{to-rgb($moo-foreground-dark)};
|
|
216
|
+
--#{$prefix}link-hover-color: var(--moo-muted-foreground);
|
|
217
|
+
--#{$prefix}link-hover-color-rgb: #{to-rgb($moo-muted-foreground-dark)};
|
|
218
|
+
--#{$prefix}code-color: #{$code-color-dark};
|
|
219
|
+
--#{$prefix}highlight-color: var(--moo-foreground);
|
|
220
|
+
--#{$prefix}highlight-bg: #{$mark-bg-dark};
|
|
221
|
+
--#{$prefix}border-color: var(--moo-border);
|
|
222
|
+
--#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
|
|
223
|
+
--#{$prefix}form-valid-color: #{$form-valid-color-dark};
|
|
224
|
+
--#{$prefix}form-valid-border-color: #{$form-valid-border-color-dark};
|
|
225
|
+
--#{$prefix}form-invalid-color: var(--moo-destructive);
|
|
226
|
+
--#{$prefix}form-invalid-border-color: #{$moo-form-invalid-border-color-dark};
|
|
227
|
+
|
|
228
|
+
@each $color, $value in $moo-theme-colors-text-dark {
|
|
229
|
+
--#{$prefix}#{$color}-text-emphasis: #{$value};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@each $color, $value in $moo-theme-colors-bg-subtle-dark {
|
|
233
|
+
--#{$prefix}#{$color}-bg-subtle: #{$value};
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
@each $color, $value in $moo-theme-colors-border-subtle-dark {
|
|
237
|
+
--#{$prefix}#{$color}-border-subtle: #{$value};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
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-tertiary-bg: #{$body-tertiary-bg};
|
|
66
|
+
--bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};
|
|
67
|
+
--bs-tertiary-color: #{$body-tertiary-color};
|
|
68
|
+
--bs-tertiary-color-rgb: #{to-rgb($body-tertiary-color)};
|
|
69
|
+
--bs-form-invalid-color: var(--moo-destructive);
|
|
70
|
+
--bs-form-invalid-border-color: #{$moo-form-invalid-border-color};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
[data-bs-theme="dark"] {
|
|
74
|
+
--moo-surface: #{$moo-surface-dark};
|
|
75
|
+
--moo-muted-surface: #{$moo-muted-surface-dark};
|
|
76
|
+
--moo-border: #{$moo-border-dark};
|
|
77
|
+
--moo-primary: #{$moo-primary-dark};
|
|
78
|
+
--moo-primary-foreground: #{$moo-primary-foreground-dark};
|
|
79
|
+
--moo-foreground: #{$moo-foreground-dark};
|
|
80
|
+
--moo-muted-foreground: #{$moo-muted-foreground-dark};
|
|
81
|
+
--moo-disabled-foreground: #{$moo-disabled-foreground-dark};
|
|
82
|
+
--moo-ring: #{$moo-ring-dark};
|
|
83
|
+
--moo-destructive: #{$moo-destructive-dark};
|
|
84
|
+
--moo-destructive-surface: #{$moo-destructive-surface-dark};
|
|
85
|
+
--moo-destructive-surface-hover: #{$moo-destructive-surface-hover-dark};
|
|
86
|
+
--moo-destructive-foreground: #{$moo-destructive-foreground-dark};
|
|
87
|
+
--moo-form-invalid-ring-color: #{$moo-form-invalid-ring-color-dark};
|
|
88
|
+
--moo-warning: #{$moo-warning-dark};
|
|
89
|
+
--moo-warning-surface: #{$moo-warning-surface-dark};
|
|
90
|
+
--moo-warning-surface-hover: #{$moo-warning-surface-hover-dark};
|
|
91
|
+
--moo-warning-foreground: #{$moo-warning-foreground-dark};
|
|
92
|
+
--moo-success: #{$moo-success-dark};
|
|
93
|
+
--moo-success-surface: #{$moo-success-surface-dark};
|
|
94
|
+
--moo-success-surface-hover: #{$moo-success-surface-hover-dark};
|
|
95
|
+
--moo-success-foreground: #{$moo-success-foreground-dark};
|
|
96
|
+
--moo-info: #{$moo-info-dark};
|
|
97
|
+
--moo-info-surface: #{$moo-info-surface-dark};
|
|
98
|
+
--moo-info-surface-hover: #{$moo-info-surface-hover-dark};
|
|
99
|
+
--moo-info-foreground: #{$moo-info-foreground-dark};
|
|
100
|
+
--moo-sidebar: #{$moo-sidebar-dark};
|
|
101
|
+
--moo-input-bg: #{$moo-input-bg-dark};
|
|
102
|
+
--bs-body-color: var(--moo-foreground);
|
|
103
|
+
--bs-body-color-rgb: #{to-rgb($moo-foreground-dark)};
|
|
104
|
+
--bs-heading-color: var(--moo-foreground);
|
|
105
|
+
--bs-secondary-color: var(--moo-muted-foreground);
|
|
106
|
+
// See the light block's matching comment above.
|
|
107
|
+
--bs-body-bg: var(--moo-surface);
|
|
108
|
+
--bs-body-bg-rgb: #{to-rgb($moo-surface-dark)};
|
|
109
|
+
--bs-secondary-bg: var(--moo-muted-surface);
|
|
110
|
+
--bs-secondary-bg-rgb: #{to-rgb($moo-muted-surface-dark)};
|
|
111
|
+
--bs-tertiary-bg: #{$body-tertiary-bg-dark};
|
|
112
|
+
--bs-tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};
|
|
113
|
+
--bs-tertiary-color: #{$body-tertiary-color-dark};
|
|
114
|
+
--bs-tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};
|
|
115
|
+
--bs-form-invalid-color: var(--moo-destructive);
|
|
116
|
+
--bs-form-invalid-border-color: #{$moo-form-invalid-border-color-dark};
|
|
117
|
+
}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
:where(
|
|
2
|
+
.scroll-fade,
|
|
3
|
+
.scroll-fade-y,
|
|
4
|
+
.scroll-fade-x,
|
|
5
|
+
.scroll-fade-t,
|
|
6
|
+
.scroll-fade-b,
|
|
7
|
+
.scroll-fade-l,
|
|
8
|
+
.scroll-fade-r,
|
|
9
|
+
.scroll-fade-s,
|
|
10
|
+
.scroll-fade-e
|
|
11
|
+
) {
|
|
12
|
+
--scroll-fade-size: min(12%, 2.5rem);
|
|
13
|
+
--scroll-fade-reveal: 6rem;
|
|
14
|
+
--moo-scroll-fade-t-size: var(--scroll-fade-size);
|
|
15
|
+
--moo-scroll-fade-b-size: var(--scroll-fade-size);
|
|
16
|
+
--moo-scroll-fade-s-size: var(--scroll-fade-size);
|
|
17
|
+
--moo-scroll-fade-e-size: var(--scroll-fade-size);
|
|
18
|
+
--moo-scroll-fade-mask: linear-gradient(
|
|
19
|
+
to bottom,
|
|
20
|
+
transparent 0,
|
|
21
|
+
#000 var(--moo-scroll-fade-t),
|
|
22
|
+
#000 calc(100% - var(--moo-scroll-fade-b)),
|
|
23
|
+
transparent 100%
|
|
24
|
+
);
|
|
25
|
+
mask-image: var(--moo-scroll-fade-mask);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.scroll-fade,
|
|
29
|
+
.scroll-fade-y {
|
|
30
|
+
animation-name: moo-scroll-fade-reveal-t, moo-scroll-fade-reveal-b;
|
|
31
|
+
animation-duration: 1ms, 1ms;
|
|
32
|
+
animation-fill-mode: both, both;
|
|
33
|
+
animation-timing-function: linear, linear;
|
|
34
|
+
animation-timeline: scroll(self y), scroll(self y);
|
|
35
|
+
animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.scroll-fade-t {
|
|
39
|
+
animation-name: moo-scroll-fade-reveal-t;
|
|
40
|
+
animation-duration: 1ms;
|
|
41
|
+
animation-fill-mode: both;
|
|
42
|
+
animation-timing-function: linear;
|
|
43
|
+
animation-timeline: scroll(self y);
|
|
44
|
+
animation-range: 0 var(--scroll-fade-reveal);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.scroll-fade-b {
|
|
48
|
+
animation-name: moo-scroll-fade-reveal-b;
|
|
49
|
+
animation-duration: 1ms;
|
|
50
|
+
animation-fill-mode: both;
|
|
51
|
+
animation-timing-function: linear;
|
|
52
|
+
animation-timeline: scroll(self y);
|
|
53
|
+
animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.scroll-fade-x,
|
|
57
|
+
.scroll-fade-s,
|
|
58
|
+
.scroll-fade-e {
|
|
59
|
+
--moo-scroll-fade-mask: linear-gradient(
|
|
60
|
+
to right,
|
|
61
|
+
transparent 0,
|
|
62
|
+
#000 var(--moo-scroll-fade-s),
|
|
63
|
+
#000 calc(100% - var(--moo-scroll-fade-e)),
|
|
64
|
+
transparent 100%
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.scroll-fade-x {
|
|
69
|
+
animation-name: moo-scroll-fade-reveal-s, moo-scroll-fade-reveal-e;
|
|
70
|
+
animation-duration: 1ms, 1ms;
|
|
71
|
+
animation-fill-mode: both, both;
|
|
72
|
+
animation-timing-function: linear, linear;
|
|
73
|
+
animation-timeline: scroll(self inline), scroll(self inline);
|
|
74
|
+
animation-range: 0 var(--scroll-fade-reveal), calc(100% - var(--scroll-fade-reveal)) 100%;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.scroll-fade-s {
|
|
78
|
+
animation-name: moo-scroll-fade-reveal-s;
|
|
79
|
+
animation-duration: 1ms;
|
|
80
|
+
animation-fill-mode: both;
|
|
81
|
+
animation-timing-function: linear;
|
|
82
|
+
animation-timeline: scroll(self inline);
|
|
83
|
+
animation-range: 0 var(--scroll-fade-reveal);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.scroll-fade-e {
|
|
87
|
+
animation-name: moo-scroll-fade-reveal-e;
|
|
88
|
+
animation-duration: 1ms;
|
|
89
|
+
animation-fill-mode: both;
|
|
90
|
+
animation-timing-function: linear;
|
|
91
|
+
animation-timeline: scroll(self inline);
|
|
92
|
+
animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.scroll-fade-x:where([dir="rtl"], [dir="rtl"] *),
|
|
96
|
+
.scroll-fade-s:where([dir="rtl"], [dir="rtl"] *),
|
|
97
|
+
.scroll-fade-e:where([dir="rtl"], [dir="rtl"] *) {
|
|
98
|
+
--moo-scroll-fade-mask: linear-gradient(
|
|
99
|
+
to left,
|
|
100
|
+
transparent 0,
|
|
101
|
+
#000 var(--moo-scroll-fade-s),
|
|
102
|
+
#000 calc(100% - var(--moo-scroll-fade-e)),
|
|
103
|
+
transparent 100%
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.scroll-fade-l,
|
|
108
|
+
.scroll-fade-r {
|
|
109
|
+
--moo-scroll-fade-mask: linear-gradient(
|
|
110
|
+
to right,
|
|
111
|
+
transparent 0,
|
|
112
|
+
#000 var(--moo-scroll-fade-s),
|
|
113
|
+
#000 calc(100% - var(--moo-scroll-fade-e)),
|
|
114
|
+
transparent 100%
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.scroll-fade-l {
|
|
119
|
+
animation-name: moo-scroll-fade-reveal-s;
|
|
120
|
+
animation-duration: 1ms;
|
|
121
|
+
animation-fill-mode: both;
|
|
122
|
+
animation-timing-function: linear;
|
|
123
|
+
animation-timeline: scroll(self x);
|
|
124
|
+
animation-range: 0 var(--scroll-fade-reveal);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.scroll-fade-r {
|
|
128
|
+
animation-name: moo-scroll-fade-reveal-e;
|
|
129
|
+
animation-duration: 1ms;
|
|
130
|
+
animation-fill-mode: both;
|
|
131
|
+
animation-timing-function: linear;
|
|
132
|
+
animation-timeline: scroll(self x);
|
|
133
|
+
animation-range: calc(100% - var(--scroll-fade-reveal)) 100%;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.scroll-fade-none {
|
|
137
|
+
--moo-scroll-fade-mask: none;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.no-scrollbar {
|
|
141
|
+
scrollbar-width: none;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.no-scrollbar::-webkit-scrollbar {
|
|
145
|
+
display: none;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.scrollbar-thin {
|
|
149
|
+
--moo-scrollbar-thin-size: #{$moo-scrollbar-thin-size};
|
|
150
|
+
--moo-scrollbar-thin-thumb-bg: color-mix(in srgb, var(--bs-secondary-color) 28%, transparent);
|
|
151
|
+
--moo-scrollbar-thin-thumb-hover-bg: color-mix(in srgb, var(--bs-secondary-color) 45%, transparent);
|
|
152
|
+
|
|
153
|
+
scrollbar-color: var(--moo-scrollbar-thin-thumb-bg) transparent;
|
|
154
|
+
scrollbar-width: thin;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.scrollbar-thin::-webkit-scrollbar {
|
|
158
|
+
width: var(--moo-scrollbar-thin-size);
|
|
159
|
+
height: var(--moo-scrollbar-thin-size);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.scrollbar-thin::-webkit-scrollbar-track {
|
|
163
|
+
background: transparent;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.scrollbar-thin::-webkit-scrollbar-thumb {
|
|
167
|
+
border-radius: var(--bs-border-radius-pill);
|
|
168
|
+
background-color: var(--moo-scrollbar-thin-thumb-bg);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
|
|
172
|
+
background-color: var(--moo-scrollbar-thin-thumb-hover-bg);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
@supports not (animation-timeline: scroll()) {
|
|
176
|
+
.scroll-fade,
|
|
177
|
+
.scroll-fade-y {
|
|
178
|
+
--moo-scroll-fade-t: var(--moo-scroll-fade-t-size);
|
|
179
|
+
--moo-scroll-fade-b: var(--moo-scroll-fade-b-size);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.scroll-fade-x {
|
|
183
|
+
--moo-scroll-fade-s: var(--moo-scroll-fade-s-size);
|
|
184
|
+
--moo-scroll-fade-e: var(--moo-scroll-fade-e-size);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
.scroll-fade-t { --moo-scroll-fade-t: var(--moo-scroll-fade-t-size); }
|
|
188
|
+
.scroll-fade-b { --moo-scroll-fade-b: var(--moo-scroll-fade-b-size); }
|
|
189
|
+
.scroll-fade-l,
|
|
190
|
+
.scroll-fade-s { --moo-scroll-fade-s: var(--moo-scroll-fade-s-size); }
|
|
191
|
+
.scroll-fade-r,
|
|
192
|
+
.scroll-fade-e { --moo-scroll-fade-e: var(--moo-scroll-fade-e-size); }
|
|
193
|
+
}
|