hueman-cli 0.2.0__py3-none-any.whl
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.
- hueman/__init__.py +11 -0
- hueman/__main__.py +3 -0
- hueman/cli.py +353 -0
- hueman/data/hueman.config.example.yaml +111 -0
- hueman/engine/__init__.py +0 -0
- hueman/engine/colors.py +30 -0
- hueman/engine/config.py +186 -0
- hueman/engine/fsutil.py +41 -0
- hueman/engine/palettes.py +66 -0
- hueman/engine/reload.py +60 -0
- hueman/engine/render.py +243 -0
- hueman/engine/statesource.py +370 -0
- hueman/engine/targets.py +95 -0
- hueman/palettes/arctic-ice.yaml +102 -0
- hueman/palettes/autumn.yaml +102 -0
- hueman/palettes/catppuccin-latte.yaml +102 -0
- hueman/palettes/catppuccin-mocha.yaml +102 -0
- hueman/palettes/copperwave.yaml +103 -0
- hueman/palettes/crimson-vivid.yaml +111 -0
- hueman/palettes/dracula.yaml +102 -0
- hueman/palettes/ember-red.yaml +111 -0
- hueman/palettes/everforest-dark.yaml +102 -0
- hueman/palettes/galaxy.yaml +102 -0
- hueman/palettes/gruvbox-light.yaml +102 -0
- hueman/palettes/gruvbox.yaml +102 -0
- hueman/palettes/kanagawa-dragon.yaml +102 -0
- hueman/palettes/matrix.yaml +102 -0
- hueman/palettes/mono-contrast.yaml +102 -0
- hueman/palettes/nord.yaml +102 -0
- hueman/palettes/ocean-deep.yaml +102 -0
- hueman/palettes/one-light.yaml +102 -0
- hueman/palettes/onyx-gold.yaml +103 -0
- hueman/palettes/rose-pine-dawn.yaml +102 -0
- hueman/palettes/solarized-light.yaml +102 -0
- hueman/palettes/synthwave.yaml +102 -0
- hueman/palettes/tokyonight.yaml +106 -0
- hueman/palettes/tuxedo.yaml +103 -0
- hueman/palettes/vaporwave.yaml +102 -0
- hueman/resources.py +18 -0
- hueman/templates/atuin_theme.toml.j2 +19 -0
- hueman/templates/bottom_theme.toml.j2 +43 -0
- hueman/templates/bspwm_colors.conf.j2 +5 -0
- hueman/templates/claude_statusline.sh.j2 +216 -0
- hueman/templates/dunst_colors.conf.j2 +15 -0
- hueman/templates/fzf_opts.j2 +9 -0
- hueman/templates/fzf_theme.j2 +17 -0
- hueman/templates/herdr_theme_custom.toml.j2 +11 -0
- hueman/templates/k9s_theme.yaml.j2 +83 -0
- hueman/templates/kitty.conf.j2 +51 -0
- hueman/templates/lazydocker_theme.yml.j2 +19 -0
- hueman/templates/leaf_theme.toml.j2 +89 -0
- hueman/templates/newt_colors.j2 +32 -0
- hueman/templates/nvim_nightfox_theme.lua.j2 +70 -0
- hueman/templates/omp.omp.json.j2 +107 -0
- hueman/templates/opencode_theme.json.j2 +71 -0
- hueman/templates/pi_theme.json.j2 +65 -0
- hueman/templates/polybar_colors.ini.j2 +11 -0
- hueman/templates/posting_theme.yaml.j2 +47 -0
- hueman/templates/qutebrowser_github.user.js.j2 +121 -0
- hueman/templates/qutebrowser_google.user.js.j2 +132 -0
- hueman/templates/qutebrowser_hteam.user.js.j2 +962 -0
- hueman/templates/qutebrowser_theme.py.j2 +78 -0
- hueman/templates/rofi_theme.rasi.j2 +132 -0
- hueman/templates/sshub_theme.toml.j2 +49 -0
- hueman/templates/starship_block.toml.j2 +11 -0
- hueman/templates/termux_colors.properties.j2 +20 -0
- hueman/templates/tmux.conf.j2 +33 -0
- hueman/templates/tuicr_theme.toml.j2 +51 -0
- hueman/templates/wezterm_colors.lua.j2 +14 -0
- hueman/templates/windhawk_taskbar.json.j2 +4 -0
- hueman/templates/yazi_theme.toml.j2 +130 -0
- hueman/templates/zen_theme.json.j2 +11 -0
- hueman_cli-0.2.0.dist-info/METADATA +119 -0
- hueman_cli-0.2.0.dist-info/RECORD +78 -0
- hueman_cli-0.2.0.dist-info/WHEEL +5 -0
- hueman_cli-0.2.0.dist-info/entry_points.txt +2 -0
- hueman_cli-0.2.0.dist-info/licenses/LICENSE +21 -0
- hueman_cli-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,962 @@
|
|
|
1
|
+
// ==UserScript==
|
|
2
|
+
// @name hteam.mx theme
|
|
3
|
+
// @description Generated by hueman from the active palette. Do not edit by hand.
|
|
4
|
+
// @match *://hteam.mx/*
|
|
5
|
+
// @match *://www.hteam.mx/*
|
|
6
|
+
// @run-at document-start
|
|
7
|
+
// ==/UserScript==
|
|
8
|
+
|
|
9
|
+
// Scope (see @match above): the whole site. The landing page, the dashboard and the app
|
|
10
|
+
// sections (/operations/, ...) are served from the same host. Dashboard rules are keyed on
|
|
11
|
+
// app-only classes (.main-navbar, .main-sidebar, .main-content, ...) so they cannot match
|
|
12
|
+
// the landing. The Board (/boards/...) and Operations (/operations/) sections follow the
|
|
13
|
+
// Dashboard rules and are keyed on their own structure (#root-board, .dataTables_wrapper).
|
|
14
|
+
|
|
15
|
+
{%- macro rgb(h) -%}
|
|
16
|
+
{{ ('0x' ~ h[1:3]) | int(0, 16) }}, {{ ('0x' ~ h[3:5]) | int(0, 16) }}, {{ ('0x' ~ h[5:7]) | int(0, 16) }}
|
|
17
|
+
{%- endmacro %}
|
|
18
|
+
|
|
19
|
+
(function () {
|
|
20
|
+
// The landing is a static Bootstrap 5 / MDB page with mostly hardcoded
|
|
21
|
+
// colors, so every override uses !important to beat the site stylesheet.
|
|
22
|
+
// Background images and gradients (.home-bg, .bg-2, .footer-bgr) are left
|
|
23
|
+
// alone: only background-color is touched on surfaces.
|
|
24
|
+
const CSS = `
|
|
25
|
+
/* MDB custom properties reassigned to the active palette. */
|
|
26
|
+
:root,
|
|
27
|
+
html,
|
|
28
|
+
body {
|
|
29
|
+
color-scheme: dark !important;
|
|
30
|
+
--mdb-body-bg: {{ background }} !important;
|
|
31
|
+
--mdb-body-bg-rgb: {{ rgb(background) }} !important;
|
|
32
|
+
--mdb-body-color: {{ foreground }} !important;
|
|
33
|
+
--mdb-body-color-rgb: {{ rgb(foreground) }} !important;
|
|
34
|
+
--mdb-primary: {{ primary }} !important;
|
|
35
|
+
--mdb-primary-rgb: {{ rgb(primary) }} !important;
|
|
36
|
+
--mdb-secondary: {{ secondary }} !important;
|
|
37
|
+
--mdb-secondary-rgb: {{ rgb(secondary) }} !important;
|
|
38
|
+
--mdb-success: {{ success }} !important;
|
|
39
|
+
--mdb-success-rgb: {{ rgb(success) }} !important;
|
|
40
|
+
--mdb-danger: {{ alert }} !important;
|
|
41
|
+
--mdb-danger-rgb: {{ rgb(alert) }} !important;
|
|
42
|
+
--mdb-warning: {{ warning }} !important;
|
|
43
|
+
--mdb-warning-rgb: {{ rgb(warning) }} !important;
|
|
44
|
+
--mdb-info: {{ secondary }} !important;
|
|
45
|
+
--mdb-info-rgb: {{ rgb(secondary) }} !important;
|
|
46
|
+
/* .text-dark reads --mdb-dark-rgb, so it maps to the foreground; .bg-dark is overridden explicitly below. */
|
|
47
|
+
--mdb-dark: {{ foreground }} !important;
|
|
48
|
+
--mdb-dark-rgb: {{ rgb(foreground) }} !important;
|
|
49
|
+
--mdb-light: {{ background_alt }} !important;
|
|
50
|
+
--mdb-light-rgb: {{ rgb(background_alt) }} !important;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Page canvas and base text. */
|
|
54
|
+
html,
|
|
55
|
+
body {
|
|
56
|
+
background-color: {{ background }} !important;
|
|
57
|
+
color: {{ foreground }} !important;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Headings and dark-text utilities. */
|
|
61
|
+
h1, h2, h3, h4, h5, h6,
|
|
62
|
+
.h1, .h2, .h3, .h4, .h5, .h6,
|
|
63
|
+
.t1, .text-dark, .section-title {
|
|
64
|
+
color: {{ foreground }} !important;
|
|
65
|
+
}
|
|
66
|
+
.text-muted, .blockquote-footer, .link-disabled {
|
|
67
|
+
color: {{ foreground }}b3 !important;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Links. Only unclassed anchors, so styled links keep their own rules. */
|
|
71
|
+
a:not([class]), .link-primary {
|
|
72
|
+
color: {{ primary }} !important;
|
|
73
|
+
}
|
|
74
|
+
.primary-underlined-link {
|
|
75
|
+
color: {{ foreground }} !important;
|
|
76
|
+
border-bottom-color: {{ primary }} !important;
|
|
77
|
+
}
|
|
78
|
+
.primary-underlined-link::after {
|
|
79
|
+
background: {{ primary }} !important;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Navbar (fixed top, .navbar-light). */
|
|
83
|
+
#navigation,
|
|
84
|
+
.navbar-light {
|
|
85
|
+
background-color: {{ background_alt }} !important;
|
|
86
|
+
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, .45) !important;
|
|
87
|
+
}
|
|
88
|
+
.navbar-light .navbar-brand,
|
|
89
|
+
.navbar-light .navbar-brand:hover,
|
|
90
|
+
.navbar-light .navbar-brand:focus {
|
|
91
|
+
color: {{ foreground }} !important;
|
|
92
|
+
}
|
|
93
|
+
.navbar-light .navbar-nav .nav-link,
|
|
94
|
+
.nav-page {
|
|
95
|
+
color: {{ foreground }}b3 !important;
|
|
96
|
+
}
|
|
97
|
+
.navbar-light .navbar-nav .nav-link:hover,
|
|
98
|
+
.navbar-light .navbar-nav .nav-link:focus,
|
|
99
|
+
.navbar-light .navbar-nav .active > .nav-link,
|
|
100
|
+
.navbar-light .navbar-nav .nav-link.active {
|
|
101
|
+
color: {{ primary }} !important;
|
|
102
|
+
}
|
|
103
|
+
.navbar-light .navbar-toggler {
|
|
104
|
+
color: {{ foreground }} !important;
|
|
105
|
+
border-color: {{ muted }} !important;
|
|
106
|
+
}
|
|
107
|
+
.navbar-light .navbar-toggler-icon {
|
|
108
|
+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='{{ foreground | replace('#', '%23') }}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") !important;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* Light surface utilities. */
|
|
112
|
+
.bg-white, .bg-light {
|
|
113
|
+
background-color: {{ background_alt }} !important;
|
|
114
|
+
}
|
|
115
|
+
.bg-dark {
|
|
116
|
+
background-color: {{ background }} !important;
|
|
117
|
+
}
|
|
118
|
+
.bg-primary, .bg-primary-color {
|
|
119
|
+
background-color: {{ primary }} !important;
|
|
120
|
+
}
|
|
121
|
+
.border, .border-top, .border-bottom {
|
|
122
|
+
border-color: {{ muted }} !important;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Cards, service boxes and service items. */
|
|
126
|
+
.card, .service .service-box, .dropdown-menu, .list-group-item {
|
|
127
|
+
background-color: {{ background_alt }} !important;
|
|
128
|
+
border-color: {{ muted }} !important;
|
|
129
|
+
color: {{ foreground }} !important;
|
|
130
|
+
}
|
|
131
|
+
.service-2 .service-item {
|
|
132
|
+
border-color: {{ muted }} !important;
|
|
133
|
+
}
|
|
134
|
+
.service .service-box .service-item i,
|
|
135
|
+
.li-icon {
|
|
136
|
+
color: {{ primary }} !important;
|
|
137
|
+
}
|
|
138
|
+
.service-2 .service-item i {
|
|
139
|
+
color: {{ background }} !important;
|
|
140
|
+
}
|
|
141
|
+
.service-2 .service-item .planning { background: {{ primary }} !important; }
|
|
142
|
+
.service-2 .service-item .goal_tracking { background: {{ secondary }} !important; }
|
|
143
|
+
.service-2 .service-item .results { background: {{ success }} !important; }
|
|
144
|
+
.service-2 .service-item:hover i.planning { background: {{ background }} !important; color: {{ primary }} !important; }
|
|
145
|
+
.service-2 .service-item:hover i.goal_tracking { background: {{ background }} !important; color: {{ secondary }} !important; }
|
|
146
|
+
.service-2 .service-item:hover i.results { background: {{ background }} !important; color: {{ success }} !important; }
|
|
147
|
+
|
|
148
|
+
/* Pricing blocks. */
|
|
149
|
+
.pricing-block,
|
|
150
|
+
.pricing-block ul {
|
|
151
|
+
border-color: {{ muted }} !important;
|
|
152
|
+
}
|
|
153
|
+
.pricing-standard-block,
|
|
154
|
+
.pricing-enterprise-block {
|
|
155
|
+
background-color: {{ background_alt }} !important;
|
|
156
|
+
color: {{ foreground }} !important;
|
|
157
|
+
}
|
|
158
|
+
.pricing-pyme-block {
|
|
159
|
+
background-color: {{ primary }} !important;
|
|
160
|
+
color: {{ background }} !important;
|
|
161
|
+
}
|
|
162
|
+
.pricing-pyme-block:hover, .pricing-pyme-block.active,
|
|
163
|
+
.pricing-enterprise-block:hover, .pricing-enterprise-block.active {
|
|
164
|
+
background: {{ secondary }} !important;
|
|
165
|
+
color: {{ background }} !important;
|
|
166
|
+
}
|
|
167
|
+
.price-header .solicited,
|
|
168
|
+
.pricing-block:hover .solicited {
|
|
169
|
+
background-image: none !important;
|
|
170
|
+
background-color: {{ primary }} !important;
|
|
171
|
+
border-color: {{ primary }} !important;
|
|
172
|
+
color: {{ background }} !important;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/* Buttons. */
|
|
176
|
+
.btn-primary,
|
|
177
|
+
.btn-info {
|
|
178
|
+
background-color: {{ primary }} !important;
|
|
179
|
+
border-color: {{ primary }} !important;
|
|
180
|
+
color: {{ background }} !important;
|
|
181
|
+
}
|
|
182
|
+
.btn-primary:hover, .btn-primary:focus,
|
|
183
|
+
.btn-info:hover, .btn-info:focus {
|
|
184
|
+
background-color: {{ primary }}d9 !important;
|
|
185
|
+
border-color: {{ primary }} !important;
|
|
186
|
+
color: {{ background }} !important;
|
|
187
|
+
}
|
|
188
|
+
.btn-secondary,
|
|
189
|
+
.btn-light {
|
|
190
|
+
background-color: {{ background_alt }} !important;
|
|
191
|
+
border-color: {{ muted }} !important;
|
|
192
|
+
color: {{ foreground }} !important;
|
|
193
|
+
}
|
|
194
|
+
.btn-secondary:hover, .btn-light:hover {
|
|
195
|
+
border-color: {{ primary }} !important;
|
|
196
|
+
color: {{ primary }} !important;
|
|
197
|
+
}
|
|
198
|
+
.btn-outline-primary {
|
|
199
|
+
color: {{ primary }} !important;
|
|
200
|
+
border-color: {{ primary }} !important;
|
|
201
|
+
}
|
|
202
|
+
.btn-outline-primary:hover {
|
|
203
|
+
background-color: {{ primary }} !important;
|
|
204
|
+
color: {{ background }} !important;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* Form controls. */
|
|
208
|
+
.form-control, .form-select, textarea, select, input {
|
|
209
|
+
background-color: {{ background_alt }} !important;
|
|
210
|
+
color: {{ foreground }} !important;
|
|
211
|
+
border-color: {{ muted }} !important;
|
|
212
|
+
}
|
|
213
|
+
.form-control:focus, .form-select:focus {
|
|
214
|
+
border-color: {{ primary }} !important;
|
|
215
|
+
}
|
|
216
|
+
::placeholder {
|
|
217
|
+
color: {{ foreground }}99 !important;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Modals. */
|
|
221
|
+
.modal-content {
|
|
222
|
+
background-color: {{ background_alt }} !important;
|
|
223
|
+
color: {{ foreground }} !important;
|
|
224
|
+
border-color: {{ muted }} !important;
|
|
225
|
+
}
|
|
226
|
+
.modal-header, .modal-footer {
|
|
227
|
+
border-color: {{ muted }} !important;
|
|
228
|
+
}
|
|
229
|
+
.modal .close, .modal .btn-close {
|
|
230
|
+
color: {{ foreground }} !important;
|
|
231
|
+
text-shadow: none !important;
|
|
232
|
+
}
|
|
233
|
+
.modal .btn-close {
|
|
234
|
+
filter: invert(1) !important;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/* Footer: only the color; footer-bg.png stays. */
|
|
238
|
+
.footer-section {
|
|
239
|
+
background-color: {{ background_alt }} !important;
|
|
240
|
+
color: {{ foreground }} !important;
|
|
241
|
+
}
|
|
242
|
+
.footer-menu a,
|
|
243
|
+
.footer-main .block-2 ul li a {
|
|
244
|
+
color: {{ foreground }}b3 !important;
|
|
245
|
+
}
|
|
246
|
+
.footer-menu a:hover,
|
|
247
|
+
.footer-main .block-2 ul li a:hover {
|
|
248
|
+
color: {{ primary }} !important;
|
|
249
|
+
}
|
|
250
|
+
.footer-main .block-2 h6, .footer-main .block-2 .h6 {
|
|
251
|
+
color: {{ foreground }} !important;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/* ==========================================================================
|
|
255
|
+
Dashboard (logged-in app, Stisla-based admin template).
|
|
256
|
+
Every selector is prefixed with "body" so it out-ranks the app stylesheet
|
|
257
|
+
(same !important weight, but loaded later in the cascade).
|
|
258
|
+
========================================================================== */
|
|
259
|
+
|
|
260
|
+
/* Dashboard: base text and links. App text colors are hardcoded greys. */
|
|
261
|
+
body .main-content,
|
|
262
|
+
body .main-content .table,
|
|
263
|
+
body .main-content .card .card-body {
|
|
264
|
+
color: {{ foreground }} !important;
|
|
265
|
+
}
|
|
266
|
+
body .main-content a:not(.btn):not(.dropdown-item),
|
|
267
|
+
body a.blue_link {
|
|
268
|
+
color: {{ primary }} !important;
|
|
269
|
+
}
|
|
270
|
+
body .main-content a:not(.btn):hover {
|
|
271
|
+
color: {{ primary }}d9 !important;
|
|
272
|
+
}
|
|
273
|
+
body .text-dark,
|
|
274
|
+
body .text-dark-all *,
|
|
275
|
+
body .text-dark-all *:before,
|
|
276
|
+
body .text-dark-all *:after {
|
|
277
|
+
color: {{ foreground }} !important;
|
|
278
|
+
}
|
|
279
|
+
body .text-primary,
|
|
280
|
+
body .text-primary-all * {
|
|
281
|
+
color: {{ primary }} !important;
|
|
282
|
+
}
|
|
283
|
+
body .text-info,
|
|
284
|
+
body .text-info-all * {
|
|
285
|
+
color: {{ secondary }} !important;
|
|
286
|
+
}
|
|
287
|
+
body .section .section-title,
|
|
288
|
+
body .section .section-header h1 {
|
|
289
|
+
color: {{ foreground }} !important;
|
|
290
|
+
}
|
|
291
|
+
body .section .section-title:before {
|
|
292
|
+
background-color: {{ primary }} !important;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/* Dashboard: top header (.navbar-bg is the white strip behind .main-navbar). */
|
|
296
|
+
body .navbar-bg {
|
|
297
|
+
background-color: {{ background_alt }} !important;
|
|
298
|
+
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, .45) !important;
|
|
299
|
+
}
|
|
300
|
+
body .main-navbar,
|
|
301
|
+
body .main-navbar .navbar-nav {
|
|
302
|
+
background-color: transparent !important;
|
|
303
|
+
}
|
|
304
|
+
body .main-navbar .nav-link,
|
|
305
|
+
body .main-navbar .nav-link.nav-link-user,
|
|
306
|
+
body .main-navbar .navbar-brand,
|
|
307
|
+
body .main-navbar .brand_name,
|
|
308
|
+
body .main-navbar .bars_icon,
|
|
309
|
+
body .main-navbar .svg-inline--fa {
|
|
310
|
+
color: {{ foreground }} !important;
|
|
311
|
+
}
|
|
312
|
+
body .main-navbar .nav-link:hover,
|
|
313
|
+
body .main-navbar .nav-link:focus,
|
|
314
|
+
body .main-navbar .nav-link:hover .svg-inline--fa,
|
|
315
|
+
body .main-navbar .nav-link.beep .svg-inline--fa {
|
|
316
|
+
color: {{ primary }} !important;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/* Dashboard: sidebar (container, toggle, brand/customer picker, section labels, items). */
|
|
320
|
+
body .main-sidebar,
|
|
321
|
+
body .main-sidebar #sidebar-wrapper {
|
|
322
|
+
background-color: {{ background_alt }} !important;
|
|
323
|
+
box-shadow: 4px 0 12px 0 rgba(0, 0, 0, .35) !important;
|
|
324
|
+
}
|
|
325
|
+
body .main-sidebar .sidebar-brand a,
|
|
326
|
+
body .main-sidebar .bars_icon,
|
|
327
|
+
body .main-sidebar .bars_icon_expand {
|
|
328
|
+
color: {{ foreground }} !important;
|
|
329
|
+
}
|
|
330
|
+
body .main-sidebar .sidebar-menu li.menu-header {
|
|
331
|
+
color: {{ foreground }}99 !important;
|
|
332
|
+
}
|
|
333
|
+
body .main-sidebar .sidebar-menu li a {
|
|
334
|
+
color: {{ foreground }}cc !important;
|
|
335
|
+
}
|
|
336
|
+
body .main-sidebar .sidebar-menu li a:hover {
|
|
337
|
+
background-color: {{ background }} !important;
|
|
338
|
+
color: {{ primary }} !important;
|
|
339
|
+
}
|
|
340
|
+
/* Active item: solid primary, same treatment as .btn-primary. Covers the
|
|
341
|
+
mini-sidebar variant, whose rules use !important on box-shadow/background. */
|
|
342
|
+
body .main-sidebar .sidebar-menu li.active a,
|
|
343
|
+
body .main-sidebar .sidebar-menu li.active a:hover,
|
|
344
|
+
body.sidebar-mini .main-sidebar .sidebar-menu > li.active > a {
|
|
345
|
+
background-color: {{ primary }} !important;
|
|
346
|
+
color: {{ background }} !important;
|
|
347
|
+
box-shadow: none !important;
|
|
348
|
+
}
|
|
349
|
+
body .main-sidebar .sidebar-menu li ul.dropdown-menu,
|
|
350
|
+
body .main-sidebar .sidebar-menu li.active ul.dropdown-menu {
|
|
351
|
+
background-color: {{ background_alt }} !important;
|
|
352
|
+
}
|
|
353
|
+
body .main-sidebar .sidebar-menu li ul.dropdown-menu li a {
|
|
354
|
+
color: {{ foreground }}b3 !important;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/* Dashboard: cards. Header title color and the colored top rule. */
|
|
358
|
+
body .card .card-header {
|
|
359
|
+
border-bottom-color: {{ muted }} !important;
|
|
360
|
+
}
|
|
361
|
+
body .card .card-header h4,
|
|
362
|
+
body .card.card-statistic-1 .card-header h4,
|
|
363
|
+
body .card.card-statistic-2 .card-header h4,
|
|
364
|
+
body .card.card-statistic-1 .card-body,
|
|
365
|
+
body .card.card-statistic-2 .card-body {
|
|
366
|
+
color: {{ foreground }} !important;
|
|
367
|
+
}
|
|
368
|
+
body .card.card-primary { border-top-color: {{ primary }} !important; }
|
|
369
|
+
body .card.card-info,
|
|
370
|
+
body .card.card-secondary,
|
|
371
|
+
body .card.card-dark { border-top-color: {{ muted }} !important; }
|
|
372
|
+
body .card .card-stats .card-stats-title,
|
|
373
|
+
body .card-comment,
|
|
374
|
+
body .card-header-board,
|
|
375
|
+
body ul .card-board-issue {
|
|
376
|
+
background-color: {{ background_alt }} !important;
|
|
377
|
+
color: {{ foreground }} !important;
|
|
378
|
+
border-color: {{ muted }} !important;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/* Dashboard: buttons. The app adds a light-blue box-shadow glow to .btn-primary. */
|
|
382
|
+
body .btn-primary,
|
|
383
|
+
body .btn-primary.disabled,
|
|
384
|
+
body .btn-primary:focus,
|
|
385
|
+
body .btn-primary:active,
|
|
386
|
+
body .btn-primary:hover,
|
|
387
|
+
body .card .card-header h4 + .card-header-action .btn.active,
|
|
388
|
+
body .card .card-header h4 + .card-header-form .btn.active {
|
|
389
|
+
background-color: {{ primary }} !important;
|
|
390
|
+
border-color: {{ primary }} !important;
|
|
391
|
+
color: {{ background }} !important;
|
|
392
|
+
box-shadow: none !important;
|
|
393
|
+
}
|
|
394
|
+
body .btn-primary:hover,
|
|
395
|
+
body .btn-primary:focus,
|
|
396
|
+
body .btn-primary:active {
|
|
397
|
+
background-color: {{ primary }}d9 !important;
|
|
398
|
+
}
|
|
399
|
+
body .btn-outline-success { color: {{ success }} !important; border-color: {{ success }} !important; }
|
|
400
|
+
body .btn-outline-success:hover { background-color: {{ success }} !important; color: {{ background }} !important; }
|
|
401
|
+
|
|
402
|
+
/* Dashboard: progress bars. Track darker than the card; fill primary.
|
|
403
|
+
.bg-success / .bg-danger fills stay semantic. */
|
|
404
|
+
body .progress {
|
|
405
|
+
background-color: {{ background }} !important;
|
|
406
|
+
border: 1px solid {{ muted }} !important;
|
|
407
|
+
}
|
|
408
|
+
body .progress-bar,
|
|
409
|
+
body .progress-bar.bg-primary {
|
|
410
|
+
background-color: {{ primary }} !important;
|
|
411
|
+
}
|
|
412
|
+
body .progress-bar.bg-success { background-color: {{ success }} !important; }
|
|
413
|
+
|
|
414
|
+
/* Dashboard: tables (header band, row dividers, boxed counters). */
|
|
415
|
+
body .table td,
|
|
416
|
+
body .table th,
|
|
417
|
+
body .table thead th,
|
|
418
|
+
body .table.table-bordered td,
|
|
419
|
+
body .table.table-bordered th {
|
|
420
|
+
border-color: {{ muted }} !important;
|
|
421
|
+
}
|
|
422
|
+
body .table:not(.table-sm) thead th,
|
|
423
|
+
body .table thead th {
|
|
424
|
+
background-color: {{ background }} !important;
|
|
425
|
+
color: {{ foreground }} !important;
|
|
426
|
+
}
|
|
427
|
+
body .table-striped tbody tr:nth-of-type(odd) {
|
|
428
|
+
background-color: {{ foreground }}0d !important;
|
|
429
|
+
}
|
|
430
|
+
body .table-hover tbody tr:hover,
|
|
431
|
+
body:not(.nohover) .table_body .tr_group:hover {
|
|
432
|
+
background-color: {{ foreground }}14 !important;
|
|
433
|
+
color: {{ foreground }} !important;
|
|
434
|
+
}
|
|
435
|
+
body table.widgetTable tr td.box {
|
|
436
|
+
border-color: {{ muted }} !important;
|
|
437
|
+
}
|
|
438
|
+
body hr,
|
|
439
|
+
body .dropdown-divider {
|
|
440
|
+
border-color: {{ muted }} !important;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/* Dashboard: dropdown menus and notification lists in the header. */
|
|
444
|
+
body .dropdown-list .dropdown-item,
|
|
445
|
+
body .dropdown-item {
|
|
446
|
+
color: {{ foreground }} !important;
|
|
447
|
+
border-bottom-color: {{ muted }} !important;
|
|
448
|
+
}
|
|
449
|
+
body .dropdown-list .dropdown-item .dropdown-item-desc,
|
|
450
|
+
body .dropdown-list .dropdown-item .dropdown-item-desc b,
|
|
451
|
+
body .dropdown-header {
|
|
452
|
+
color: {{ foreground }} !important;
|
|
453
|
+
}
|
|
454
|
+
body .dropdown-list .dropdown-item.dropdown-item-unread {
|
|
455
|
+
background-color: {{ background }} !important;
|
|
456
|
+
}
|
|
457
|
+
body .dropdown-item:hover,
|
|
458
|
+
body a.dropdown-item:focus,
|
|
459
|
+
body a.dropdown-item:active,
|
|
460
|
+
body a.dropdown-item.active,
|
|
461
|
+
body .dropdown-list .dropdown-item:focus {
|
|
462
|
+
background-color: {{ background }} !important;
|
|
463
|
+
color: {{ primary }} !important;
|
|
464
|
+
}
|
|
465
|
+
body .dropdown-list .dropdown-list-content:not(.is-end):after {
|
|
466
|
+
background-image: none !important;
|
|
467
|
+
}
|
|
468
|
+
/* selectric (customer picker in the sidebar). */
|
|
469
|
+
body .selectric,
|
|
470
|
+
body .selectric-items {
|
|
471
|
+
background: {{ background }} !important;
|
|
472
|
+
border-color: {{ muted }} !important;
|
|
473
|
+
}
|
|
474
|
+
body .selectric .label,
|
|
475
|
+
body .selectric-items li {
|
|
476
|
+
color: {{ foreground }} !important;
|
|
477
|
+
}
|
|
478
|
+
body .selectric-items li.highlighted,
|
|
479
|
+
body .selectric-items li:hover {
|
|
480
|
+
background: {{ background_alt }} !important;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
/* Dashboard: footer. */
|
|
484
|
+
body .main-footer {
|
|
485
|
+
background-color: transparent !important;
|
|
486
|
+
color: {{ foreground }}b3 !important;
|
|
487
|
+
border-top-color: {{ muted }} !important;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/* Dashboard: Google Charts (SVG). Only text, white backgrounds and the grey
|
|
491
|
+
gridline/axis fills are touched; data series colors are left alone. */
|
|
492
|
+
body #projectsChart svg text,
|
|
493
|
+
body .google-visualization-tooltip text {
|
|
494
|
+
fill: {{ foreground }} !important;
|
|
495
|
+
}
|
|
496
|
+
body #projectsChart svg rect[fill="#ffffff"],
|
|
497
|
+
body #projectsChart svg rect[fill="#fff"] {
|
|
498
|
+
fill: transparent !important;
|
|
499
|
+
}
|
|
500
|
+
body #projectsChart svg rect[fill="#cccccc"],
|
|
501
|
+
body #projectsChart svg rect[fill="#ebebeb"],
|
|
502
|
+
body #projectsChart svg rect[fill="#e6e6e6"] {
|
|
503
|
+
fill: {{ muted }} !important;
|
|
504
|
+
}
|
|
505
|
+
body #projectsChart svg path[stroke="#cccccc"],
|
|
506
|
+
body #projectsChart svg path[stroke="#333333"],
|
|
507
|
+
body #projectsChart svg line {
|
|
508
|
+
stroke: {{ muted }} !important;
|
|
509
|
+
}
|
|
510
|
+
body .google-visualization-tooltip {
|
|
511
|
+
background-color: {{ background_alt }} !important;
|
|
512
|
+
border-color: {{ muted }} !important;
|
|
513
|
+
color: {{ foreground }} !important;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/* Dashboard: custom scrollbar (nicescroll sets inline colors). */
|
|
517
|
+
body .nicescroll-cursors {
|
|
518
|
+
background-color: {{ muted }} !important;
|
|
519
|
+
border-color: {{ background_alt }} !important;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/* ==========================================================================
|
|
523
|
+
App canvas (shared by the Board and Operations pages).
|
|
524
|
+
The app stylesheets paint several wrappers with light colors.
|
|
525
|
+
========================================================================== */
|
|
526
|
+
body #app,
|
|
527
|
+
body .main-wrapper,
|
|
528
|
+
body .main-content,
|
|
529
|
+
body .main-content > section.section,
|
|
530
|
+
body .main-content .section-body {
|
|
531
|
+
background-color: {{ background }} !important;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* ==========================================================================
|
|
535
|
+
Board (/boards/...): React + MUI app mounted in #root-board.
|
|
536
|
+
MUI classes are emotion-hashed, so only stable class names are used:
|
|
537
|
+
.view-wrapper, .board-header, .board-dad, .board-list, .card-body-board,
|
|
538
|
+
.card-board-list, .card-board-issue and MUI's own Mui* names.
|
|
539
|
+
Surface hierarchy: canvas and columns use background, column headers and
|
|
540
|
+
cards use background_alt. Column top status borders are never touched.
|
|
541
|
+
Labels (.MuiChip-colorDefault) and priority icons keep the app colors.
|
|
542
|
+
========================================================================== */
|
|
543
|
+
body #root-board,
|
|
544
|
+
body #root-board .App,
|
|
545
|
+
body #root-board .view-wrapper,
|
|
546
|
+
body #root-board .board-header,
|
|
547
|
+
body #root-board .board-dad {
|
|
548
|
+
background-color: {{ background }} !important;
|
|
549
|
+
color: {{ foreground }} !important;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/* Board: breadcrumb bar with the back arrow. */
|
|
553
|
+
body #root-board .MuiBreadcrumbs-root,
|
|
554
|
+
body #root-board .MuiBreadcrumbs-li p,
|
|
555
|
+
body #root-board .MuiBreadcrumbs-separator {
|
|
556
|
+
color: {{ foreground }}b3 !important;
|
|
557
|
+
}
|
|
558
|
+
body #root-board .MuiBreadcrumbs-li a {
|
|
559
|
+
color: {{ primary }} !important;
|
|
560
|
+
}
|
|
561
|
+
body #root-board .board-header .MuiSvgIcon-root:not(.primary-icon) {
|
|
562
|
+
color: {{ foreground }}b3 !important;
|
|
563
|
+
}
|
|
564
|
+
body #root-board .board-header .MuiIconButton-colorPrimary,
|
|
565
|
+
body #root-board .board-header .MuiIconButton-colorPrimary .MuiSvgIcon-root,
|
|
566
|
+
body #root-board .board-header .primary-icon {
|
|
567
|
+
color: {{ primary }} !important;
|
|
568
|
+
}
|
|
569
|
+
body #root-board .board-header .settings-button {
|
|
570
|
+
background-color: transparent !important;
|
|
571
|
+
border-color: transparent !important;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/* Board: columns. Paper and scroll body use the canvas color; the body border
|
|
575
|
+
(sides and bottom only, it has no top border) is the neutral palette border. */
|
|
576
|
+
body #root-board .board-list,
|
|
577
|
+
body #root-board .card-body-board,
|
|
578
|
+
body #root-board .card-board-list {
|
|
579
|
+
background-color: {{ background }} !important;
|
|
580
|
+
background-image: none !important;
|
|
581
|
+
color: {{ foreground }} !important;
|
|
582
|
+
}
|
|
583
|
+
body #root-board .card-body-board {
|
|
584
|
+
border-color: {{ muted }} !important;
|
|
585
|
+
}
|
|
586
|
+
body #root-board .card-body-board::-webkit-scrollbar-thumb {
|
|
587
|
+
background: {{ muted }} !important;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
/* Board: cards sit one step above the column. */
|
|
591
|
+
body #root-board li.card-board-issue {
|
|
592
|
+
background-color: {{ background_alt }} !important;
|
|
593
|
+
border-color: {{ muted }} !important;
|
|
594
|
+
color: {{ foreground }} !important;
|
|
595
|
+
box-shadow: none !important;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
/* Board: search or filter field and its button. */
|
|
599
|
+
body #root-board .MuiInputBase-root {
|
|
600
|
+
background-color: {{ background_alt }} !important;
|
|
601
|
+
color: {{ foreground }} !important;
|
|
602
|
+
border-color: {{ muted }} !important;
|
|
603
|
+
box-shadow: inset 0 0 0 1px {{ muted }} !important;
|
|
604
|
+
border-radius: 4px !important;
|
|
605
|
+
}
|
|
606
|
+
body #root-board .MuiInputBase-root:focus-within {
|
|
607
|
+
box-shadow: inset 0 0 0 1px {{ primary }} !important;
|
|
608
|
+
}
|
|
609
|
+
body #root-board .MuiInputBase-input {
|
|
610
|
+
background-color: transparent !important;
|
|
611
|
+
color: {{ foreground }} !important;
|
|
612
|
+
caret-color: {{ primary }} !important;
|
|
613
|
+
-webkit-text-fill-color: {{ foreground }} !important;
|
|
614
|
+
}
|
|
615
|
+
body #root-board .MuiInputBase-input::placeholder {
|
|
616
|
+
color: {{ foreground }} !important;
|
|
617
|
+
opacity: .6 !important;
|
|
618
|
+
-webkit-text-fill-color: {{ foreground }}99 !important;
|
|
619
|
+
}
|
|
620
|
+
body #root-board .MuiButton-outlined {
|
|
621
|
+
background-color: {{ background_alt }} !important;
|
|
622
|
+
border-color: {{ muted }} !important;
|
|
623
|
+
color: {{ foreground }} !important;
|
|
624
|
+
}
|
|
625
|
+
body #root-board .MuiButton-outlined:hover {
|
|
626
|
+
border-color: {{ primary }} !important;
|
|
627
|
+
color: {{ primary }} !important;
|
|
628
|
+
}
|
|
629
|
+
body #root-board .MuiButton-outlined.Mui-disabled {
|
|
630
|
+
background-color: {{ background_alt }} !important;
|
|
631
|
+
border-color: {{ muted }} !important;
|
|
632
|
+
color: {{ foreground }}80 !important;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/* Board: assignee / working pills (MuiChip-colorWorking, size medium). The
|
|
636
|
+
status hue is kept as a border accent only. */
|
|
637
|
+
body #root-board .MuiChip-colorWorking {
|
|
638
|
+
background-color: {{ background }} !important;
|
|
639
|
+
border: 1px solid {{ success }} !important;
|
|
640
|
+
color: {{ foreground }} !important;
|
|
641
|
+
}
|
|
642
|
+
body #root-board .MuiChip-colorWorking .MuiChip-label {
|
|
643
|
+
color: {{ foreground }} !important;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
/* Board: app-defined dropdown menu (Board.css .Menu / .MenuItem). */
|
|
647
|
+
body .Menu {
|
|
648
|
+
background-color: {{ background_alt }} !important;
|
|
649
|
+
border-color: {{ muted }} !important;
|
|
650
|
+
box-shadow: 0 4px 12px 0 rgba(0, 0, 0, .45) !important;
|
|
651
|
+
}
|
|
652
|
+
body .MenuItem {
|
|
653
|
+
background-color: transparent !important;
|
|
654
|
+
color: {{ foreground }} !important;
|
|
655
|
+
}
|
|
656
|
+
body .MenuItem:hover,
|
|
657
|
+
body .MenuItem:focus,
|
|
658
|
+
body .MenuItem.open {
|
|
659
|
+
background-color: {{ background }} !important;
|
|
660
|
+
color: {{ primary }} !important;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/* ==========================================================================
|
|
664
|
+
Operation board (/operations/<id>/board/). Same React + MUI app as the
|
|
665
|
+
Board, scoped by #root-board. Covers: collapsed column strips
|
|
666
|
+
(.board-list-collapsed), header icon buttons (.icon-button,
|
|
667
|
+
.settings-button), the Board / Details / Advertisements tabs
|
|
668
|
+
(.views-toolbar, #headerTabs) and the outer frame of the filter field.
|
|
669
|
+
Status pills (.rotated_list_label) and strip top borders keep their hues.
|
|
670
|
+
========================================================================== */
|
|
671
|
+
|
|
672
|
+
/* Operation board: collapsed column strips. The site sets a light
|
|
673
|
+
background-color with !important on the strip and #333 text on its
|
|
674
|
+
children; the card count is the h6 inside a.hiden_options. */
|
|
675
|
+
body #root-board .board-list-collapsed,
|
|
676
|
+
body #root-board .board-list-collapsed .card-body-collapsed {
|
|
677
|
+
background-color: {{ background }} !important;
|
|
678
|
+
background-image: none !important;
|
|
679
|
+
border-color: {{ muted }} !important;
|
|
680
|
+
color: {{ foreground }}b3 !important;
|
|
681
|
+
}
|
|
682
|
+
body #root-board .board-list-collapsed .card-header-board {
|
|
683
|
+
background-color: {{ background_alt }} !important;
|
|
684
|
+
border-bottom-color: {{ muted }} !important;
|
|
685
|
+
}
|
|
686
|
+
body #root-board .board-list-collapsed .btn-chevron,
|
|
687
|
+
body #root-board .board-list-collapsed .btn-chevron:focus,
|
|
688
|
+
body #root-board .board-list-collapsed .btn-chevron:active {
|
|
689
|
+
background-color: transparent !important;
|
|
690
|
+
color: {{ foreground }}b3 !important;
|
|
691
|
+
}
|
|
692
|
+
body #root-board .board-list-collapsed .btn-chevron:hover {
|
|
693
|
+
background-color: {{ foreground }}14 !important;
|
|
694
|
+
}
|
|
695
|
+
body #root-board .board-list-collapsed .MuiSvgIcon-root,
|
|
696
|
+
body #root-board .board-list-collapsed .hiden_options,
|
|
697
|
+
body #root-board .board-list-collapsed .hiden_options h6 {
|
|
698
|
+
color: {{ foreground }}b3 !important;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
/* Operation board: header icon buttons (list, edit, settings). */
|
|
702
|
+
body #root-board .board-header a.icon-button,
|
|
703
|
+
body #root-board .board-header a.settings-button {
|
|
704
|
+
background-color: {{ background_alt }} !important;
|
|
705
|
+
border: 1px solid {{ muted }} !important;
|
|
706
|
+
box-shadow: none !important;
|
|
707
|
+
}
|
|
708
|
+
body #root-board .board-header a.icon-button .MuiSvgIcon-root,
|
|
709
|
+
body #root-board .board-header a.settings-button .MuiSvgIcon-root {
|
|
710
|
+
color: {{ primary }} !important;
|
|
711
|
+
}
|
|
712
|
+
body #root-board .board-header a.icon-button:hover,
|
|
713
|
+
body #root-board .board-header a.icon-button:focus,
|
|
714
|
+
body #root-board .board-header a.icon-button:active,
|
|
715
|
+
body #root-board .board-header a.settings-button:hover,
|
|
716
|
+
body #root-board .board-header a.settings-button:focus,
|
|
717
|
+
body #root-board .board-header a.settings-button:active {
|
|
718
|
+
background-color: {{ primary }} !important;
|
|
719
|
+
border-color: {{ primary }} !important;
|
|
720
|
+
}
|
|
721
|
+
body #root-board .board-header a.icon-button:hover .MuiSvgIcon-root,
|
|
722
|
+
body #root-board .board-header a.icon-button:focus .MuiSvgIcon-root,
|
|
723
|
+
body #root-board .board-header a.settings-button:hover .MuiSvgIcon-root,
|
|
724
|
+
body #root-board .board-header a.settings-button:focus .MuiSvgIcon-root {
|
|
725
|
+
color: {{ background }} !important;
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
/* Operation board: Board / Details / Advertisements tab group. The active
|
|
729
|
+
tab is a.tab-link-active (the site colors it #009ce4). */
|
|
730
|
+
body #root-board .views-toolbar {
|
|
731
|
+
background-color: transparent !important;
|
|
732
|
+
border-color: {{ muted }} !important;
|
|
733
|
+
}
|
|
734
|
+
body #root-board .views-toolbar a,
|
|
735
|
+
body #root-board .views-toolbar a h6 {
|
|
736
|
+
color: {{ foreground }} !important;
|
|
737
|
+
}
|
|
738
|
+
body #root-board .views-toolbar a {
|
|
739
|
+
border-radius: 30px !important;
|
|
740
|
+
}
|
|
741
|
+
body #root-board .views-toolbar a:hover,
|
|
742
|
+
body #root-board .views-toolbar a:hover h6 {
|
|
743
|
+
color: {{ primary }} !important;
|
|
744
|
+
}
|
|
745
|
+
body #root-board .views-toolbar a.tab-link-active,
|
|
746
|
+
body #root-board .views-toolbar a.tab-link-active h6,
|
|
747
|
+
body #root-board .views-toolbar a.tab-link-active:hover,
|
|
748
|
+
body #root-board .views-toolbar a.tab-link-active:hover h6 {
|
|
749
|
+
background-color: {{ primary }} !important;
|
|
750
|
+
color: {{ background }} !important;
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
/* Operation board: outer frame of the filter field. The white frame is a
|
|
754
|
+
hashed MUI Box that wraps the input group; it is located structurally. */
|
|
755
|
+
body #root-board .board-header .MuiBox-root:has(> .MuiGrid-container .MuiInputBase-root) {
|
|
756
|
+
background-color: transparent !important;
|
|
757
|
+
border-color: {{ muted }} !important;
|
|
758
|
+
box-shadow: none !important;
|
|
759
|
+
}
|
|
760
|
+
body #root-board .board-header .MuiBox-root:has(> .MuiGrid-container .MuiInputBase-root):focus-within {
|
|
761
|
+
border-color: {{ primary }} !important;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
/* ==========================================================================
|
|
765
|
+
Operations / DataTables (/operations/). Scoped by .dataTables_wrapper,
|
|
766
|
+
#operationsTable, .radio_priority and the .section-header band, all taken
|
|
767
|
+
from the page structure, so other pages are not affected.
|
|
768
|
+
========================================================================== */
|
|
769
|
+
|
|
770
|
+
/* Operations: title row, back arrow and breadcrumb. */
|
|
771
|
+
body .main-content .section .section-header {
|
|
772
|
+
background-color: transparent !important;
|
|
773
|
+
border-color: {{ muted }} !important;
|
|
774
|
+
box-shadow: none !important;
|
|
775
|
+
}
|
|
776
|
+
body .section-header .arrow_to_left,
|
|
777
|
+
body .section-header-back a {
|
|
778
|
+
color: {{ primary }} !important;
|
|
779
|
+
}
|
|
780
|
+
body .section-header-breadcrumb .breadcrumb-item,
|
|
781
|
+
body .section-header-breadcrumb .breadcrumb-item.active {
|
|
782
|
+
color: {{ foreground }}b3 !important;
|
|
783
|
+
}
|
|
784
|
+
body .section-header-breadcrumb .breadcrumb-item a {
|
|
785
|
+
color: {{ primary }} !important;
|
|
786
|
+
}
|
|
787
|
+
body .section-header-breadcrumb .breadcrumb-item + .breadcrumb-item::before {
|
|
788
|
+
color: {{ foreground }}80 !important;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
/* Operations: the filters + table card. */
|
|
792
|
+
body .main-content .section-body > .card {
|
|
793
|
+
background-color: {{ background_alt }} !important;
|
|
794
|
+
border-color: {{ muted }} !important;
|
|
795
|
+
box-shadow: none !important;
|
|
796
|
+
}
|
|
797
|
+
body .main-content .section-body > .card.card-primary {
|
|
798
|
+
border-top: 2px solid {{ primary }} !important;
|
|
799
|
+
}
|
|
800
|
+
body .main-content .section-body > .card > .card-header,
|
|
801
|
+
body .main-content .section-body > .card > .card-body {
|
|
802
|
+
background-color: transparent !important;
|
|
803
|
+
border-color: {{ muted }} !important;
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
/* Operations: radios (.custom-radio). Control circle, checked fill and dot. */
|
|
807
|
+
body .custom-control-label {
|
|
808
|
+
color: {{ foreground }} !important;
|
|
809
|
+
}
|
|
810
|
+
body .custom-radio .custom-control-label::before {
|
|
811
|
+
background-color: {{ background }} !important;
|
|
812
|
+
border-color: {{ muted }} !important;
|
|
813
|
+
box-shadow: none !important;
|
|
814
|
+
}
|
|
815
|
+
body .custom-radio .custom-control-input:checked ~ .custom-control-label::before,
|
|
816
|
+
body .custom-radio .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
|
|
817
|
+
border-color: {{ primary }} !important;
|
|
818
|
+
}
|
|
819
|
+
body .custom-radio .custom-control-input:checked ~ .custom-control-label::before {
|
|
820
|
+
background-color: {{ primary }} !important;
|
|
821
|
+
}
|
|
822
|
+
body .custom-radio .custom-control-input:checked ~ .custom-control-label::after {
|
|
823
|
+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='{{ background | replace('#', '%23') }}'/%3e%3c/svg%3e") !important;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
/* Operations: header buttons ("Tasks list" outlined, "New" filled). */
|
|
827
|
+
body .card-header .btn-outline-primary,
|
|
828
|
+
body .card-header .btn-outline-primary.disabled {
|
|
829
|
+
background-color: transparent !important;
|
|
830
|
+
border-color: {{ primary }} !important;
|
|
831
|
+
color: {{ primary }} !important;
|
|
832
|
+
box-shadow: none !important;
|
|
833
|
+
}
|
|
834
|
+
body .btn-outline-primary:hover,
|
|
835
|
+
body .btn-outline-primary:focus,
|
|
836
|
+
body .btn-outline-primary:active,
|
|
837
|
+
body .card-header .btn-outline-primary:hover {
|
|
838
|
+
background-color: {{ primary }} !important;
|
|
839
|
+
border-color: {{ primary }} !important;
|
|
840
|
+
color: {{ background }} !important;
|
|
841
|
+
}
|
|
842
|
+
body .card .card-header .card-header-action .btn.btn-primary {
|
|
843
|
+
background-color: {{ primary }} !important;
|
|
844
|
+
border-color: {{ primary }} !important;
|
|
845
|
+
color: {{ background }} !important;
|
|
846
|
+
box-shadow: none !important;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/* DataTables: length select, search input, info text. */
|
|
850
|
+
body .dataTables_wrapper,
|
|
851
|
+
body .dataTables_wrapper label,
|
|
852
|
+
body .dataTables_wrapper .dataTables_info {
|
|
853
|
+
color: {{ foreground }} !important;
|
|
854
|
+
}
|
|
855
|
+
body .dataTables_wrapper .dataTables_info {
|
|
856
|
+
color: {{ foreground }}b3 !important;
|
|
857
|
+
}
|
|
858
|
+
body .dataTables_wrapper select,
|
|
859
|
+
body .dataTables_wrapper input[type="search"],
|
|
860
|
+
body .dataTables_wrapper .form-control,
|
|
861
|
+
body .dataTables_wrapper .custom-select {
|
|
862
|
+
background-color: {{ background }} !important;
|
|
863
|
+
border-color: {{ muted }} !important;
|
|
864
|
+
color: {{ foreground }} !important;
|
|
865
|
+
}
|
|
866
|
+
body .dataTables_wrapper .custom-select {
|
|
867
|
+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='{{ foreground | replace('#', '%23') }}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") !important;
|
|
868
|
+
}
|
|
869
|
+
body .dataTables_wrapper select:focus,
|
|
870
|
+
body .dataTables_wrapper input[type="search"]:focus {
|
|
871
|
+
border-color: {{ primary }} !important;
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/* DataTables: table. The app also forces white cells with !important. */
|
|
875
|
+
body .dataTables_wrapper table.dataTable,
|
|
876
|
+
body .dataTables_wrapper table.dataTable tbody tr,
|
|
877
|
+
body .dataTables_wrapper table.dataTable tbody td,
|
|
878
|
+
body .dataTables_wrapper table.dataTable tbody th {
|
|
879
|
+
background-color: transparent !important;
|
|
880
|
+
color: {{ foreground }} !important;
|
|
881
|
+
}
|
|
882
|
+
body .dataTables_wrapper table.dataTable thead th,
|
|
883
|
+
body .dataTables_wrapper table.dataTable thead td {
|
|
884
|
+
background-color: {{ background }} !important;
|
|
885
|
+
color: {{ foreground }} !important;
|
|
886
|
+
border-bottom: 1px solid {{ muted }} !important;
|
|
887
|
+
}
|
|
888
|
+
body .dataTables_wrapper table.dataTable td,
|
|
889
|
+
body .dataTables_wrapper table.dataTable th {
|
|
890
|
+
border-color: {{ muted }} !important;
|
|
891
|
+
}
|
|
892
|
+
body .dataTables_wrapper table.dataTable.no-footer {
|
|
893
|
+
border-bottom: 1px solid {{ muted }} !important;
|
|
894
|
+
}
|
|
895
|
+
body .dataTables_wrapper table.dataTable tbody tr.odd {
|
|
896
|
+
background-color: {{ foreground }}0a !important;
|
|
897
|
+
}
|
|
898
|
+
body .dataTables_wrapper table.dataTable tbody tr:hover,
|
|
899
|
+
body .dataTables_wrapper table.dataTable tbody tr:hover > td {
|
|
900
|
+
background-color: {{ foreground }}14 !important;
|
|
901
|
+
}
|
|
902
|
+
body .dataTables_wrapper table.dataTable tbody td a {
|
|
903
|
+
color: {{ primary }} !important;
|
|
904
|
+
}
|
|
905
|
+
body .dataTables_wrapper table.dataTable tbody td a:hover {
|
|
906
|
+
color: {{ primary }}d9 !important;
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
/* DataTables: pagination (Bootstrap 4 .page-item / .page-link). */
|
|
910
|
+
body .dataTables_wrapper .page-item .page-link {
|
|
911
|
+
background-color: {{ background }} !important;
|
|
912
|
+
border-color: {{ muted }} !important;
|
|
913
|
+
color: {{ foreground }} !important;
|
|
914
|
+
box-shadow: none !important;
|
|
915
|
+
}
|
|
916
|
+
body .dataTables_wrapper .page-item .page-link:hover {
|
|
917
|
+
background-color: {{ background_alt }} !important;
|
|
918
|
+
border-color: {{ primary }} !important;
|
|
919
|
+
color: {{ primary }} !important;
|
|
920
|
+
}
|
|
921
|
+
body .dataTables_wrapper .page-item.active .page-link,
|
|
922
|
+
body .dataTables_wrapper .page-item.active .page-link:hover {
|
|
923
|
+
background-color: {{ primary }} !important;
|
|
924
|
+
border-color: {{ primary }} !important;
|
|
925
|
+
color: {{ background }} !important;
|
|
926
|
+
}
|
|
927
|
+
body .dataTables_wrapper .page-item.disabled .page-link,
|
|
928
|
+
body .dataTables_wrapper .page-item.disabled .page-link:hover {
|
|
929
|
+
background-color: {{ background }} !important;
|
|
930
|
+
border-color: {{ muted }} !important;
|
|
931
|
+
color: {{ foreground }}59 !important;
|
|
932
|
+
opacity: 1 !important;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
/* Operations: footer strip (copyright, badge, version). */
|
|
936
|
+
body footer.main-footer,
|
|
937
|
+
body footer.main-footer > .row,
|
|
938
|
+
body footer.main-footer > .row > div {
|
|
939
|
+
background-color: {{ background_alt }} !important;
|
|
940
|
+
color: {{ foreground }}b3 !important;
|
|
941
|
+
border-color: {{ muted }} !important;
|
|
942
|
+
}
|
|
943
|
+
body footer.main-footer a:not(.btn) {
|
|
944
|
+
color: {{ primary }} !important;
|
|
945
|
+
}
|
|
946
|
+
`;
|
|
947
|
+
|
|
948
|
+
const inject = () => {
|
|
949
|
+
const style = document.createElement('style');
|
|
950
|
+
style.id = 'theme-hteam';
|
|
951
|
+
style.textContent = CSS;
|
|
952
|
+
(document.head || document.documentElement).appendChild(style);
|
|
953
|
+
};
|
|
954
|
+
// At document-start the root element may not exist yet; wait for it.
|
|
955
|
+
if (document.documentElement) {
|
|
956
|
+
inject();
|
|
957
|
+
} else {
|
|
958
|
+
new MutationObserver((_, obs) => {
|
|
959
|
+
if (document.documentElement) { obs.disconnect(); inject(); }
|
|
960
|
+
}).observe(document, { childList: true });
|
|
961
|
+
}
|
|
962
|
+
})();
|