This commit is contained in:
gsinghpal
2026-04-12 09:09:50 -04:00
parent d07159b9b5
commit be611876ad
470 changed files with 41761 additions and 51 deletions

View File

@@ -0,0 +1,145 @@
// =============================================================================
// Fusion Plating — Quality (QMS) backend styles
// Copyright 2026 Nexa Systems Inc.
// License OPL-1 (Odoo Proprietary License v1.0)
//
// THEME AWARENESS
// ---------------
// This file NEVER hardcodes backgrounds or text colours. All surface and
// semantic colours come from Odoo / Bootstrap CSS custom properties so the
// component renders correctly in BOTH light and dark mode without any
// duplication or media-query overrides.
//
// background: var(--bs-body-bg) // main surface
// surface: var(--o-view-background-color) // view canvas
// foreground: var(--bs-body-color) // main text
// muted text: var(--bs-secondary-color)
// border: var(--bs-border-color)
// primary: var(--o-action) // Odoo action / brand
// success: var(--bs-success)
// warning: var(--bs-warning)
// danger: var(--bs-danger)
// info: var(--bs-info)
//
// Semantic status tints use `color-mix()` against the Bootstrap theme tokens
// so a danger badge is darker on light mode and brighter on dark mode
// automatically — one rule, two looks.
//
// We never target `.o_dark`, `html.dark`, or `@media (prefers-color-scheme)`.
// =============================================================================
// -----------------------------------------------------------------------------
// Local helper — semantic tint mixin
// -----------------------------------------------------------------------------
@mixin fp-quality-tint($color-var, $amount: 12%) {
background-color: color-mix(in srgb, var(#{$color-var}) #{$amount}, transparent);
color: var(#{$color-var});
border: 1px solid color-mix(in srgb, var(#{$color-var}) 35%, transparent);
}
// -----------------------------------------------------------------------------
// Universal overdue indicator — used across CAPAs, calibration, and AVL
// -----------------------------------------------------------------------------
.o_fp_overdue {
display: inline-block;
padding: 1px 8px;
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.04em;
border-radius: 999px;
@include fp-quality-tint(--bs-danger, 14%);
}
// -----------------------------------------------------------------------------
// NCR kanban — severity tint on the left border
// -----------------------------------------------------------------------------
.o_fp_ncr_kanban {
.o_fp_ncr_card {
border-left-width: 4px;
border-left-color: var(--bs-info, var(--o-action));
&[data-severity="low"] {
border-left-color: var(--bs-info, var(--o-action));
}
&[data-severity="medium"] {
border-left-color: color-mix(in srgb, var(--bs-warning) 70%, var(--bs-border-color));
}
&[data-severity="high"] {
border-left-color: var(--bs-warning);
}
&[data-severity="critical"] {
border-left-color: var(--bs-danger);
}
}
.o_fp_severity_pill {
padding: 2px 8px;
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.03em;
border-radius: 999px;
&[data-severity="low"] { @include fp-quality-tint(--bs-info); }
&[data-severity="medium"] { @include fp-quality-tint(--bs-secondary-color); }
&[data-severity="high"] { @include fp-quality-tint(--bs-warning); }
&[data-severity="critical"] { @include fp-quality-tint(--bs-danger); }
}
}
// -----------------------------------------------------------------------------
// CAPA kanban — overdue tint, type pill
// -----------------------------------------------------------------------------
.o_fp_capa_kanban {
.o_fp_capa_card {
border-left-width: 4px;
border-left-color: var(--bs-success);
&[data-overdue="true"] {
border-left-color: var(--bs-danger);
background-color: color-mix(
in srgb,
var(--bs-danger) 5%,
var(--o-view-background-color, var(--bs-body-bg))
);
}
}
.o_fp_capa_type {
padding: 2px 8px;
font-size: 0.7rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.03em;
border-radius: 999px;
&[data-type="corrective"] { @include fp-quality-tint(--bs-warning); }
&[data-type="preventive"] { @include fp-quality-tint(--bs-info); }
}
}
// -----------------------------------------------------------------------------
// FAIR card — result tint
// -----------------------------------------------------------------------------
.o_fp_fair_card {
border-left-width: 4px;
border-left-color: var(--bs-secondary-color);
&[data-result="pass"] {
border-left-color: var(--bs-success);
}
&[data-result="conditional"] {
border-left-color: var(--bs-warning);
}
&[data-result="fail"] {
border-left-color: var(--bs-danger);
}
}