@keenmate/pure-admin-core 2.5.0 → 2.7.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/README.md +25 -14
- package/dist/css/main.css +379 -297
- package/package.json +1 -1
- package/src/scss/_base-css-variables.scss +157 -32
- package/src/scss/core-components/_alerts.scss +2 -2
- package/src/scss/core-components/_base.scss +19 -2
- package/src/scss/core-components/_buttons.scss +12 -8
- package/src/scss/core-components/_callouts.scss +1 -1
- package/src/scss/core-components/_cards.scss +4 -4
- package/src/scss/core-components/_checkbox-lists.scss +2 -2
- package/src/scss/core-components/_comparison.scss +7 -4
- package/src/scss/core-components/_data-display.scss +24 -15
- package/src/scss/core-components/_data-viz.scss +140 -132
- package/src/scss/core-components/_file-selector.scss +34 -34
- package/src/scss/core-components/_lists.scss +4 -4
- package/src/scss/core-components/_logic-tree.scss +2 -2
- package/src/scss/core-components/_modals.scss +69 -0
- package/src/scss/core-components/_notifications.scss +17 -17
- package/src/scss/core-components/_popconfirm.scss +1 -1
- package/src/scss/core-components/_statistics.scss +40 -37
- package/src/scss/core-components/_tabs.scss +12 -12
- package/src/scss/core-components/_timeline.scss +30 -30
- package/src/scss/core-components/badges/_composite-badge-variants.scss +7 -7
- package/src/scss/core-components/badges/_composite-badge.scss +1 -1
- package/src/scss/core-components/badges/_labels.scss +6 -6
- package/src/scss/core-components/forms/_input-wrapper.scss +1 -1
- package/src/scss/core-components/forms/_query-editor.scss +10 -10
- package/src/scss/core-components/layout/_sidebar-states.scss +1 -0
- package/src/scss/core-components/layout/_sidebar.scss +1 -0
- package/src/scss/variables/_base.scss +15 -3
- package/src/scss/variables/_colors.scss +1 -0
- package/src/scss/variables/_components.scss +26 -14
package/package.json
CHANGED
|
@@ -207,6 +207,42 @@
|
|
|
207
207
|
--pa-alert-info-border: color-mix(in srgb, var(--pa-info-bg) #{$alert-border-opacity-dark}%, transparent);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
// ============================================================================
|
|
211
|
+
// DERIVED TOKENS — TEXT CONTRAST TIERS + SURFACE TINTS
|
|
212
|
+
// ============================================================================
|
|
213
|
+
// These tokens use `color-mix(... var(--pa-text-color-1) ...)` to derive
|
|
214
|
+
// theme-aware contrast levels. They MUST be emitted at every selector that
|
|
215
|
+
// could carry an override of --pa-text-color-1, because CSS custom property
|
|
216
|
+
// substitution bakes nested var() references at the *defining element*, not
|
|
217
|
+
// the using element. If we only defined these at `:root, .pa-mode-light`,
|
|
218
|
+
// the light-mode text colour would be frozen into the value, and elements
|
|
219
|
+
// inside `.pa-mode-dark` (which overrides --pa-text-color-1 at body) would
|
|
220
|
+
// inherit the light-mode-baked tier values → low contrast on dark surfaces.
|
|
221
|
+
//
|
|
222
|
+
// Emitting at all three selectors causes each scope to recompute the tiers
|
|
223
|
+
// against its own --pa-text-color-1. The selector list `:root, .pa-mode-light,
|
|
224
|
+
// .pa-mode-dark` covers html, body in light mode, and body in dark mode —
|
|
225
|
+
// regardless of which class layout each theme uses for mode switching.
|
|
226
|
+
//
|
|
227
|
+
// This is a TOP-LEVEL rule (not inside the mixin) because themes only call
|
|
228
|
+
// the mixin from their light-mode block; they don't call it again in the
|
|
229
|
+
// dark-mode block. Emitting at framework level means themes get correct
|
|
230
|
+
// dark-mode tiers without changing any theme code.
|
|
231
|
+
//
|
|
232
|
+
// Override these per-theme by redefining them in the same scope you
|
|
233
|
+
// override --pa-text-color-1.
|
|
234
|
+
// ============================================================================
|
|
235
|
+
|
|
236
|
+
:root,
|
|
237
|
+
.pa-mode-light,
|
|
238
|
+
.pa-mode-dark {
|
|
239
|
+
--pa-text-strong: color-mix(in srgb, var(--pa-text-color-1) 85%, transparent);
|
|
240
|
+
--pa-text-secondary: color-mix(in srgb, var(--pa-text-color-1) 70%, transparent);
|
|
241
|
+
--pa-text-tertiary: color-mix(in srgb, var(--pa-text-color-1) 55%, transparent);
|
|
242
|
+
--pa-surface-hover: color-mix(in srgb, var(--pa-text-color-1) 4%, transparent);
|
|
243
|
+
--pa-surface-track: color-mix(in srgb, var(--pa-text-color-1) 12%, transparent);
|
|
244
|
+
}
|
|
245
|
+
|
|
210
246
|
// ============================================================================
|
|
211
247
|
// PURE ADMIN THEME CSS VARIABLES OUTPUT MIXIN
|
|
212
248
|
// ============================================================================
|
|
@@ -239,11 +275,92 @@
|
|
|
239
275
|
// Accent colors
|
|
240
276
|
--pa-accent: #{$accent-color};
|
|
241
277
|
--pa-accent-hover: #{$accent-hover};
|
|
242
|
-
--pa-accent
|
|
278
|
+
// -light derives from --pa-accent at runtime so theme overrides cascade.
|
|
279
|
+
// SCSS-only consumers still get $accent-light from variables/_base.scss via the !default chain.
|
|
280
|
+
--pa-accent-light: color-mix(in srgb, var(--pa-accent) 5%, transparent);
|
|
281
|
+
|
|
282
|
+
// Links — derive from accent so theme overrides cascade automatically.
|
|
283
|
+
// Hover mixes 25% toward currentColor (inherited text colour at the use site),
|
|
284
|
+
// so it auto-darkens on light themes and auto-lightens on dark themes
|
|
285
|
+
// without per-mode declarations.
|
|
286
|
+
--pa-link-color: var(--pa-accent);
|
|
287
|
+
--pa-link-color-hover: color-mix(in srgb, var(--pa-link-color), currentColor 50%);
|
|
288
|
+
--pa-link-color-visited: var(--pa-link-color);
|
|
243
289
|
|
|
244
290
|
// Border
|
|
245
291
|
--pa-border-color: #{$border-color};
|
|
246
292
|
|
|
293
|
+
// =========================================================================
|
|
294
|
+
// ROLE COLORS — single source of truth for the four semantic roles.
|
|
295
|
+
// Button surfaces (--pa-btn-{success,warning,danger,info}-bg) and
|
|
296
|
+
// contextual surfaces (--pa-{success,warning,danger,info}-bg) below
|
|
297
|
+
// both reference these via var() so a theme can override one place
|
|
298
|
+
// and the change cascades everywhere.
|
|
299
|
+
//
|
|
300
|
+
// --pa-warning here is also the "off-target / approaching-limit" axis
|
|
301
|
+
// colour used by KPI components — orange-500, deliberately distinct
|
|
302
|
+
// from the previous Bootstrap yellow.
|
|
303
|
+
// =========================================================================
|
|
304
|
+
|
|
305
|
+
--pa-success: #{$base-success-color};
|
|
306
|
+
--pa-warning: #{$base-warning-color};
|
|
307
|
+
--pa-danger: #{$base-danger-color};
|
|
308
|
+
--pa-info: #{$base-info-color};
|
|
309
|
+
|
|
310
|
+
// =========================================================================
|
|
311
|
+
// SENTIMENT SCALE — 5-step direction-of-change.
|
|
312
|
+
// Used by KPI / data-display components for indicating directional
|
|
313
|
+
// movement (delta colours, sparkline trend colours, etc.).
|
|
314
|
+
// The middle three values alias the role colours so a theme that
|
|
315
|
+
// retunes --pa-success / --pa-danger automatically retunes the
|
|
316
|
+
// matching sentiment positions; the outliers (very-positive /
|
|
317
|
+
// very-negative) are explicit darker shades.
|
|
318
|
+
//
|
|
319
|
+
// Sentiment is on a *different axis* from role colours — direction
|
|
320
|
+
// (ordinal: -2 to +2) vs. urgency (categorical: success / warning /
|
|
321
|
+
// danger / info). They coexist intentionally.
|
|
322
|
+
// =========================================================================
|
|
323
|
+
|
|
324
|
+
--pa-very-positive: #{$base-very-positive};
|
|
325
|
+
--pa-positive: var(--pa-success);
|
|
326
|
+
--pa-neutral: #{$base-neutral};
|
|
327
|
+
--pa-negative: var(--pa-danger);
|
|
328
|
+
--pa-very-negative: #{$base-very-negative};
|
|
329
|
+
|
|
330
|
+
// (Text contrast tiers and surface tints are emitted as a top-level rule
|
|
331
|
+
// OUTSIDE this mixin — see below — because their values use
|
|
332
|
+
// `var(--pa-text-color-1)` and CSS custom property substitution bakes
|
|
333
|
+
// nested var() at the *defining element*, not the using element. That
|
|
334
|
+
// means tier vars defined here at `:root, .pa-mode-light` would freeze
|
|
335
|
+
// the light-mode text colour into them; under `.pa-mode-dark` (which
|
|
336
|
+
// overrides --pa-text-color-1 at body) the tiers would still resolve
|
|
337
|
+
// against the light value. Emitting them at all three selectors
|
|
338
|
+
// simultaneously fixes the substitution scope.)
|
|
339
|
+
|
|
340
|
+
// =========================================================================
|
|
341
|
+
// CHART / SPARKLINE
|
|
342
|
+
// =========================================================================
|
|
343
|
+
// Single height token used by every KPI showcase that renders a sparkline
|
|
344
|
+
// / trendline (terminal grid, sparkline list, hero+supporting, bento).
|
|
345
|
+
// Centralised so the line proportions stay consistent across designs;
|
|
346
|
+
// override globally for taller or shorter trendlines, or per-component
|
|
347
|
+
// if a particular layout (e.g. a "hero" pattern) wants a different size.
|
|
348
|
+
|
|
349
|
+
--pa-chart-trendline-height: 3rem;
|
|
350
|
+
--pa-chart-trendline-stroke: 2.1; // SVG user-space units (viewBox-relative)
|
|
351
|
+
|
|
352
|
+
// =========================================================================
|
|
353
|
+
// DETAIL POPOVER — Bloomberg-dark by default, regardless of host
|
|
354
|
+
// theme, for the terminal/data-dashboard aesthetic. Override the
|
|
355
|
+
// five tokens to adopt a theme-aware popover instead.
|
|
356
|
+
// =========================================================================
|
|
357
|
+
|
|
358
|
+
--pa-detail-bg: rgba(15, 17, 21, 0.97);
|
|
359
|
+
--pa-detail-text: #ffffff;
|
|
360
|
+
--pa-detail-row-label: rgba(255, 255, 255, 0.75);
|
|
361
|
+
--pa-detail-title: rgba(255, 255, 255, 0.55);
|
|
362
|
+
--pa-detail-shadow: 0 1.4rem 3.6rem rgba(0, 0, 0, 0.55);
|
|
363
|
+
|
|
247
364
|
// =========================================================================
|
|
248
365
|
// LAYOUT COLORS
|
|
249
366
|
// =========================================================================
|
|
@@ -262,6 +379,7 @@
|
|
|
262
379
|
--pa-sidebar-submenu-bg: #{$sidebar-submenu-bg};
|
|
263
380
|
--pa-sidebar-submenu-hover-bg: #{$sidebar-submenu-hover-bg};
|
|
264
381
|
--pa-sidebar-submenu-active-bg: #{$sidebar-submenu-active-bg};
|
|
382
|
+
--pa-sidebar-submenu-active-text: #{$sidebar-submenu-active-text};
|
|
265
383
|
|
|
266
384
|
// Footer
|
|
267
385
|
--pa-footer-bg: #{$footer-bg};
|
|
@@ -274,32 +392,37 @@
|
|
|
274
392
|
// Primary (uses accent color)
|
|
275
393
|
--pa-btn-primary-bg: #{$btn-primary-bg};
|
|
276
394
|
--pa-btn-primary-bg-hover: #{$btn-primary-bg-hover};
|
|
277
|
-
--pa-btn-primary-bg
|
|
395
|
+
// -light derives from --pa-btn-primary-bg at runtime so theme overrides cascade.
|
|
396
|
+
--pa-btn-primary-bg-light: color-mix(in srgb, var(--pa-btn-primary-bg) 5%, transparent);
|
|
278
397
|
--pa-btn-primary-text: #{$btn-primary-text};
|
|
279
398
|
|
|
280
399
|
// Secondary
|
|
281
400
|
--pa-btn-secondary-bg: #{$btn-secondary-bg};
|
|
282
401
|
--pa-btn-secondary-bg-hover: #{$btn-secondary-bg-hover};
|
|
283
402
|
--pa-btn-secondary-text: #{$btn-secondary-text};
|
|
284
|
-
--pa-btn-secondary-
|
|
285
|
-
|
|
286
|
-
//
|
|
287
|
-
|
|
403
|
+
// Outline-variant border + text colour. Defaults to --pa-btn-secondary-bg
|
|
404
|
+
// so the resting outline matches the colour the hover fill animates to.
|
|
405
|
+
// Was previously $btn-secondary-text (#ffffff) which rendered invisible on
|
|
406
|
+
// any light theme — pre-existing bug, not a 2.7.0 regression.
|
|
407
|
+
--pa-btn-secondary-outline-color: var(--pa-btn-secondary-bg);
|
|
408
|
+
|
|
409
|
+
// Success — bg references role colour for runtime cascade
|
|
410
|
+
--pa-btn-success-bg: var(--pa-success);
|
|
288
411
|
--pa-btn-success-bg-hover: #{$btn-success-bg-hover};
|
|
289
412
|
--pa-btn-success-text: #{$btn-success-text};
|
|
290
413
|
|
|
291
|
-
// Danger
|
|
292
|
-
--pa-btn-danger-bg:
|
|
414
|
+
// Danger — bg references role colour for runtime cascade
|
|
415
|
+
--pa-btn-danger-bg: var(--pa-danger);
|
|
293
416
|
--pa-btn-danger-bg-hover: #{$btn-danger-bg-hover};
|
|
294
417
|
--pa-btn-danger-text: #{$btn-danger-text};
|
|
295
418
|
|
|
296
|
-
// Warning
|
|
297
|
-
--pa-btn-warning-bg:
|
|
419
|
+
// Warning — bg references role colour for runtime cascade
|
|
420
|
+
--pa-btn-warning-bg: var(--pa-warning);
|
|
298
421
|
--pa-btn-warning-bg-hover: #{$btn-warning-bg-hover};
|
|
299
422
|
--pa-btn-warning-text: #{$btn-warning-text};
|
|
300
423
|
|
|
301
|
-
// Info
|
|
302
|
-
--pa-btn-info-bg:
|
|
424
|
+
// Info — bg references role colour for runtime cascade
|
|
425
|
+
--pa-btn-info-bg: var(--pa-info);
|
|
303
426
|
--pa-btn-info-bg-hover: #{$btn-info-bg-hover};
|
|
304
427
|
--pa-btn-info-text: #{$btn-info-text};
|
|
305
428
|
|
|
@@ -317,39 +440,41 @@
|
|
|
317
440
|
// CONTEXTUAL/SEMANTIC COLORS
|
|
318
441
|
// =========================================================================
|
|
319
442
|
|
|
320
|
-
// Success
|
|
321
|
-
--pa-success
|
|
443
|
+
// Success — bg references role colour for runtime cascade.
|
|
444
|
+
// -light/-subtle/-border derive from --pa-success at runtime so theme overrides cascade.
|
|
445
|
+
// -hover stays compile-time (color.adjust-derived darker shade, not opacity-based).
|
|
446
|
+
--pa-success-bg: var(--pa-success);
|
|
322
447
|
--pa-success-bg-hover: #{$success-bg-hover};
|
|
323
|
-
--pa-success-bg-light:
|
|
324
|
-
--pa-success-bg-subtle:
|
|
325
|
-
--pa-success-border:
|
|
448
|
+
--pa-success-bg-light: color-mix(in srgb, var(--pa-success) 10%, transparent);
|
|
449
|
+
--pa-success-bg-subtle: color-mix(in srgb, var(--pa-success) 8%, transparent);
|
|
450
|
+
--pa-success-border: color-mix(in srgb, var(--pa-success) 20%, transparent);
|
|
326
451
|
--pa-success-text: #{$success-text};
|
|
327
452
|
--pa-success-text-light: #{$success-text-light};
|
|
328
453
|
|
|
329
|
-
// Danger
|
|
330
|
-
--pa-danger-bg:
|
|
454
|
+
// Danger — bg references role colour for runtime cascade.
|
|
455
|
+
--pa-danger-bg: var(--pa-danger);
|
|
331
456
|
--pa-danger-bg-hover: #{$danger-bg-hover};
|
|
332
|
-
--pa-danger-bg-light:
|
|
333
|
-
--pa-danger-bg-subtle:
|
|
334
|
-
--pa-danger-border:
|
|
457
|
+
--pa-danger-bg-light: color-mix(in srgb, var(--pa-danger) 10%, transparent);
|
|
458
|
+
--pa-danger-bg-subtle: color-mix(in srgb, var(--pa-danger) 8%, transparent);
|
|
459
|
+
--pa-danger-border: color-mix(in srgb, var(--pa-danger) 20%, transparent);
|
|
335
460
|
--pa-danger-text: #{$danger-text};
|
|
336
461
|
--pa-danger-text-light: #{$danger-text-light};
|
|
337
462
|
|
|
338
|
-
// Warning
|
|
339
|
-
--pa-warning-bg:
|
|
463
|
+
// Warning — bg references role colour for runtime cascade.
|
|
464
|
+
--pa-warning-bg: var(--pa-warning);
|
|
340
465
|
--pa-warning-bg-hover: #{$warning-bg-hover};
|
|
341
|
-
--pa-warning-bg-light:
|
|
342
|
-
--pa-warning-bg-subtle:
|
|
343
|
-
--pa-warning-border:
|
|
466
|
+
--pa-warning-bg-light: color-mix(in srgb, var(--pa-warning) 10%, transparent);
|
|
467
|
+
--pa-warning-bg-subtle: color-mix(in srgb, var(--pa-warning) 8%, transparent);
|
|
468
|
+
--pa-warning-border: color-mix(in srgb, var(--pa-warning) 20%, transparent);
|
|
344
469
|
--pa-warning-text: #{$warning-text};
|
|
345
470
|
--pa-warning-text-light: #{$warning-text-light};
|
|
346
471
|
|
|
347
|
-
// Info
|
|
348
|
-
--pa-info-bg:
|
|
472
|
+
// Info — bg references role colour for runtime cascade.
|
|
473
|
+
--pa-info-bg: var(--pa-info);
|
|
349
474
|
--pa-info-bg-hover: #{$info-bg-hover};
|
|
350
|
-
--pa-info-bg-light:
|
|
351
|
-
--pa-info-bg-subtle:
|
|
352
|
-
--pa-info-border:
|
|
475
|
+
--pa-info-bg-light: color-mix(in srgb, var(--pa-info) 10%, transparent);
|
|
476
|
+
--pa-info-bg-subtle: color-mix(in srgb, var(--pa-info) 8%, transparent);
|
|
477
|
+
--pa-info-border: color-mix(in srgb, var(--pa-info) 20%, transparent);
|
|
353
478
|
--pa-info-text: #{$info-text};
|
|
354
479
|
--pa-info-text-light: #{$info-text-light};
|
|
355
480
|
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
// Basic alert variants - using theme colors with subtle backgrounds
|
|
33
33
|
&--primary {
|
|
34
34
|
color: var(--pa-accent);
|
|
35
|
-
background-color:
|
|
36
|
-
border-color:
|
|
35
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$opacity-subtle * 100%}, transparent);
|
|
36
|
+
border-color: color-mix(in srgb, var(--pa-accent) #{$opacity-border * 100%}, transparent);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
&--secondary {
|
|
@@ -27,6 +27,23 @@ p {
|
|
|
27
27
|
padding: 0;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
// Links — global default. Wrapped in :where() so specificity is 0,
|
|
31
|
+
// letting component scopes (alerts, navbar, sidebar) override with even a
|
|
32
|
+
// single class without fighting the pseudo-class specificity raise that
|
|
33
|
+
// `a:hover` / `a:visited` would otherwise add (0,1,1 vs a class's 0,1,0).
|
|
34
|
+
:where(a) {
|
|
35
|
+
color: var(--pa-link-color);
|
|
36
|
+
text-decoration: underline;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(a:hover) {
|
|
40
|
+
color: var(--pa-link-color-hover);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:where(a:visited) {
|
|
44
|
+
color: var(--pa-link-color-visited);
|
|
45
|
+
}
|
|
46
|
+
|
|
30
47
|
// Lists - styled lists (default browser styling)
|
|
31
48
|
ul, ol {
|
|
32
49
|
margin: $list-margin-top 0 $list-margin-bottom 0;
|
|
@@ -101,8 +118,8 @@ body {
|
|
|
101
118
|
right: 0;
|
|
102
119
|
bottom: 0;
|
|
103
120
|
background:
|
|
104
|
-
radial-gradient(circle at $bg-pattern-circle-1-x $bg-pattern-circle-1-y,
|
|
105
|
-
radial-gradient(circle at $bg-pattern-circle-2-x $bg-pattern-circle-2-y,
|
|
121
|
+
radial-gradient(circle at $bg-pattern-circle-1-x $bg-pattern-circle-1-y, color-mix(in srgb, var(--pa-accent) #{$bg-pattern-opacity * 100%}, transparent) $bg-pattern-gradient-start, transparent $bg-pattern-gradient-stop),
|
|
122
|
+
radial-gradient(circle at $bg-pattern-circle-2-x $bg-pattern-circle-2-y, color-mix(in srgb, var(--pa-accent) #{$bg-pattern-opacity * 100%}, transparent) $bg-pattern-gradient-start, transparent $bg-pattern-gradient-stop);
|
|
106
123
|
pointer-events: none;
|
|
107
124
|
z-index: -1;
|
|
108
125
|
}
|
|
@@ -461,16 +461,20 @@
|
|
|
461
461
|
.pa-btn-split {
|
|
462
462
|
position: relative;
|
|
463
463
|
display: inline-flex;
|
|
464
|
-
border-radius: var(--pa-border-radius);
|
|
465
|
-
overflow: hidden;
|
|
466
464
|
|
|
467
|
-
//
|
|
468
|
-
.pa-btn
|
|
469
|
-
|
|
465
|
+
// Flatten the inner edges between the two trigger buttons; outer corners
|
|
466
|
+
// stay rounded from each .pa-btn's own border-radius. Avoids relying on
|
|
467
|
+
// overflow:hidden + container border-radius, which gets bypassed by hover
|
|
468
|
+
// background paint in some browsers/themes.
|
|
469
|
+
> .pa-btn:first-child {
|
|
470
|
+
border-start-end-radius: 0;
|
|
471
|
+
border-end-end-radius: 0;
|
|
472
|
+
border-inline-end: none;
|
|
473
|
+
}
|
|
470
474
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
475
|
+
> .pa-btn-split__toggle {
|
|
476
|
+
border-start-start-radius: 0;
|
|
477
|
+
border-end-start-radius: 0;
|
|
474
478
|
}
|
|
475
479
|
|
|
476
480
|
// Toggle button (chevron) - fixed square width
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
// Callout variants
|
|
27
27
|
&--primary {
|
|
28
28
|
border-inline-start-color: var(--pa-accent);
|
|
29
|
-
background-color:
|
|
29
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$opacity-subtle * 100%}, transparent);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
&--secondary {
|
|
@@ -344,12 +344,12 @@
|
|
|
344
344
|
// Live-data state — persistent tinted background reflecting latest change
|
|
345
345
|
// JS swaps the class on each data update; color stays until next update
|
|
346
346
|
&--live-up {
|
|
347
|
-
background-color:
|
|
347
|
+
background-color: color-mix(in srgb, var(--pa-positive) 10%, transparent);
|
|
348
348
|
transition: background-color 0.3s ease;
|
|
349
349
|
}
|
|
350
350
|
|
|
351
351
|
&--live-down {
|
|
352
|
-
background-color:
|
|
352
|
+
background-color: color-mix(in srgb, var(--pa-negative) 10%, transparent);
|
|
353
353
|
transition: background-color 0.3s ease;
|
|
354
354
|
}
|
|
355
355
|
|
|
@@ -398,7 +398,7 @@
|
|
|
398
398
|
|
|
399
399
|
&:hover {
|
|
400
400
|
color: var(--pa-text-color-1);
|
|
401
|
-
background-color:
|
|
401
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$card-tab-hover-opacity * 100%}, transparent);
|
|
402
402
|
}
|
|
403
403
|
|
|
404
404
|
&--active {
|
|
@@ -434,7 +434,7 @@
|
|
|
434
434
|
transition: all $transition-fast $easing-snappy;
|
|
435
435
|
|
|
436
436
|
&:hover {
|
|
437
|
-
background-color:
|
|
437
|
+
background-color: color-mix(in srgb, var(--pa-accent) #{$card-tab-hover-opacity * 100%}, transparent);
|
|
438
438
|
color: var(--pa-text-color-1);
|
|
439
439
|
}
|
|
440
440
|
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
cursor: not-allowed;
|
|
159
159
|
|
|
160
160
|
&:hover {
|
|
161
|
-
background-color:
|
|
161
|
+
background-color: color-mix(in srgb, var(--pa-warning) 5%, transparent);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
.pa-checkbox-list__checkbox {
|
|
@@ -172,7 +172,7 @@
|
|
|
172
172
|
|
|
173
173
|
// Add lock icon before text
|
|
174
174
|
.pa-checkbox-list__text {
|
|
175
|
-
color:
|
|
175
|
+
color: var(--pa-warning);
|
|
176
176
|
|
|
177
177
|
&::before {
|
|
178
178
|
content: '🔒 ';
|
|
@@ -67,7 +67,10 @@
|
|
|
67
67
|
|
|
68
68
|
// Changed value highlighting (pink/salmon background)
|
|
69
69
|
&__changed {
|
|
70
|
-
|
|
70
|
+
// Diff-specific accent (pink, distinct from role colours so it doesn't
|
|
71
|
+
// collide with status chips in the same row). All three intensities
|
|
72
|
+
// derive from $comparison-accent-pink so a theme override cascades.
|
|
73
|
+
background-color: color-mix(in srgb, $comparison-accent-pink 15%, transparent);
|
|
71
74
|
position: relative;
|
|
72
75
|
|
|
73
76
|
&::before {
|
|
@@ -82,7 +85,7 @@
|
|
|
82
85
|
|
|
83
86
|
// Solid background variant (no left border accent)
|
|
84
87
|
&--solid {
|
|
85
|
-
background-color:
|
|
88
|
+
background-color: color-mix(in srgb, $comparison-accent-pink 25%, transparent) !important;
|
|
86
89
|
|
|
87
90
|
&::before {
|
|
88
91
|
content: none; // Remove left border accent
|
|
@@ -92,7 +95,7 @@
|
|
|
92
95
|
|
|
93
96
|
// Conflict highlighting (orange background for 3-column merge conflicts)
|
|
94
97
|
&__conflict {
|
|
95
|
-
background-color:
|
|
98
|
+
background-color: color-mix(in srgb, $comparison-accent-orange 15%, transparent);
|
|
96
99
|
|
|
97
100
|
&::before {
|
|
98
101
|
background-color: $comparison-accent-orange;
|
|
@@ -100,7 +103,7 @@
|
|
|
100
103
|
|
|
101
104
|
// Solid background variant (no left border accent)
|
|
102
105
|
&--solid {
|
|
103
|
-
background-color:
|
|
106
|
+
background-color: color-mix(in srgb, $comparison-accent-orange 25%, transparent) !important;
|
|
104
107
|
|
|
105
108
|
&::before {
|
|
106
109
|
content: none; // Remove left border accent
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
.pa-field__value::after {
|
|
140
140
|
content: 'Copied!' !important;
|
|
141
141
|
opacity: 1 !important;
|
|
142
|
-
color: var(--pa-
|
|
142
|
+
color: var(--pa-success);
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -452,19 +452,28 @@
|
|
|
452
452
|
border-radius: var(--pa-border-radius);
|
|
453
453
|
font-size: $fields-chips-value-font-size;
|
|
454
454
|
|
|
455
|
+
// Status chips use role colours. The framework reliably defines all
|
|
456
|
+
// four --pa-{role} and --pa-{role}-bg-light tokens, so no fallback
|
|
457
|
+
// needed. (Previous --pa-success-color refs were broken — they didn't
|
|
458
|
+
// exist, so chips silently used the hardcoded RGB fallbacks below.)
|
|
455
459
|
&--success {
|
|
456
|
-
background: var(--pa-success-bg-light
|
|
457
|
-
color: var(--pa-success
|
|
460
|
+
background: var(--pa-success-bg-light);
|
|
461
|
+
color: var(--pa-success);
|
|
458
462
|
}
|
|
459
463
|
|
|
460
464
|
&--warning {
|
|
461
|
-
background: var(--pa-warning-bg-light
|
|
462
|
-
color: var(--pa-warning
|
|
465
|
+
background: var(--pa-warning-bg-light);
|
|
466
|
+
color: var(--pa-warning);
|
|
463
467
|
}
|
|
464
468
|
|
|
465
469
|
&--danger {
|
|
466
|
-
background: var(--pa-danger-bg-light
|
|
467
|
-
color: var(--pa-danger
|
|
470
|
+
background: var(--pa-danger-bg-light);
|
|
471
|
+
color: var(--pa-danger);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
&--info {
|
|
475
|
+
background: var(--pa-info-bg-light);
|
|
476
|
+
color: var(--pa-info);
|
|
468
477
|
}
|
|
469
478
|
}
|
|
470
479
|
}
|
|
@@ -681,7 +690,7 @@
|
|
|
681
690
|
&__value--copied::after {
|
|
682
691
|
content: 'Copied!' !important;
|
|
683
692
|
opacity: 1 !important;
|
|
684
|
-
color: var(--pa-
|
|
693
|
+
color: var(--pa-success);
|
|
685
694
|
}
|
|
686
695
|
}
|
|
687
696
|
|
|
@@ -1010,7 +1019,7 @@
|
|
|
1010
1019
|
&__row--copied &__value::after {
|
|
1011
1020
|
content: 'Copied!' !important;
|
|
1012
1021
|
opacity: 1 !important;
|
|
1013
|
-
color: var(--pa-
|
|
1022
|
+
color: var(--pa-success);
|
|
1014
1023
|
}
|
|
1015
1024
|
}
|
|
1016
1025
|
|
|
@@ -1027,12 +1036,12 @@
|
|
|
1027
1036
|
&__item {
|
|
1028
1037
|
padding: $accent-grid-item-padding-v $accent-grid-item-padding-h;
|
|
1029
1038
|
padding-inline-start: $accent-grid-item-padding-start;
|
|
1030
|
-
border-inline-start: $accent-grid-border-width solid var(--pa-accent
|
|
1039
|
+
border-inline-start: $accent-grid-border-width solid var(--pa-accent);
|
|
1031
1040
|
|
|
1032
|
-
&--success { border-inline-start-color: var(--pa-success
|
|
1033
|
-
&--warning { border-inline-start-color: var(--pa-warning
|
|
1034
|
-
&--danger { border-inline-start-color: var(--pa-danger
|
|
1035
|
-
&--info { border-inline-start-color: var(--pa-info
|
|
1041
|
+
&--success { border-inline-start-color: var(--pa-success); }
|
|
1042
|
+
&--warning { border-inline-start-color: var(--pa-warning); }
|
|
1043
|
+
&--danger { border-inline-start-color: var(--pa-danger); }
|
|
1044
|
+
&--info { border-inline-start-color: var(--pa-info); }
|
|
1036
1045
|
}
|
|
1037
1046
|
|
|
1038
1047
|
&__label {
|
|
@@ -1107,6 +1116,6 @@
|
|
|
1107
1116
|
&__item--copied &__value::after {
|
|
1108
1117
|
content: 'Copied!' !important;
|
|
1109
1118
|
opacity: 1 !important;
|
|
1110
|
-
color: var(--pa-
|
|
1119
|
+
color: var(--pa-success);
|
|
1111
1120
|
}
|
|
1112
1121
|
}
|