26/04/26 - 19h
parent
81f33d4875
commit
88f378a07a
|
|
@ -4710,7 +4710,7 @@ const AddParnerClient = (props) => {
|
|||
|
||||
|
||||
</Button>
|
||||
{<Button variant="outlined" onClick={submenu_activite} className="detail_submenu client_menu" id='submenu_activite' name='submenu_activite'>Activité</Button>}
|
||||
{<Button variant="outlined" onClick={submenu_activite} className="detail_submenu client_menu" id='submenu_activite' name='submenu_activite'>Activités</Button>}
|
||||
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_submenu client_menu" id='submenu_piece_jointe' name='submenu_piece_jointe'>Pièces Jointes</Button>
|
||||
|
||||
<Button variant="outlined" className="detail_submenu client_menu" id='submenu_factures' name='submenu_factures'
|
||||
|
|
|
|||
|
|
@ -6742,7 +6742,7 @@ const Module_Session_Planification = (props) => {
|
|||
...newValue.filter((i) => fixedVal_grp_apprenant.indexOf(i) === -1),
|
||||
]);
|
||||
|
||||
console.log(" ### val_grp_apprenant = ", val_grp_apprenant)
|
||||
// console.log(" ### val_grp_apprenant = ", val_grp_apprenant)
|
||||
|
||||
}}
|
||||
value={val_grp_apprenant}
|
||||
|
|
|
|||
|
|
@ -5356,7 +5356,7 @@ const Partner = (props) => {
|
|||
|
||||
</div>
|
||||
}
|
||||
|
||||
|
||||
{String(menu) === "monactivite" && <div className="div_droite div_droite_ralonge">
|
||||
<PartnerClientActivite conntected_employee_id={conntected_employee_id} check_user_acces_right={check_user_acces_right}
|
||||
email={conntected_employee_email} related_collection={"partnair_account"} update_nb_activite_en_retard={update_nb_activite_en_retard}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -748,7 +748,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
|
||||
var new_dead_line_format = "";
|
||||
if (typeof p_activite_deadline == "object") {
|
||||
var act_deadline = format(p_activite_deadline, 'dd/MM/yyyy');
|
||||
var act_deadline = format(p_activite_deadline, 'dd/MM/yyyy HH:mm:ss');
|
||||
new_dead_line_format = act_deadline;
|
||||
} else {
|
||||
new_dead_line_format = p_activite_deadline;
|
||||
|
|
@ -881,7 +881,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
setp_activite_deadline_label(mylocalclient_activite.deadline);
|
||||
}
|
||||
else
|
||||
setp_activite_deadline(new Date());
|
||||
setp_activite_deadline(moment().format("DD/MM/YYYY HH:mm:ss"));
|
||||
|
||||
|
||||
if (mylocalclient_activite.employee_assigned_to_id) {
|
||||
|
|
@ -1001,7 +1001,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
setp_activite_deadline_label(mylocalclient_activite.deadline);
|
||||
}
|
||||
else
|
||||
setp_activite_deadline(new Date());
|
||||
setp_activite_deadline(moment().format("DD/MM/YYYY HH:mm:ss"));
|
||||
|
||||
|
||||
if (mylocalclient_activite.employee_assigned_to_id) {
|
||||
|
|
@ -1152,7 +1152,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
function Clear_activite_P_fields() {
|
||||
setp_activite_description("");
|
||||
setp_activite_detail("");
|
||||
setp_activite_deadline(new Date());
|
||||
setp_activite_deadline(moment().format("DD/MM/YYYY HH:mm:ss"));
|
||||
setp_activite_type("");
|
||||
setp_activite_status("0");
|
||||
setp_activite_status_label("");
|
||||
|
|
@ -1559,16 +1559,18 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
selected={new Date(moment(p_activite_deadline, "DD/MM/YYYY HH:mm:ss"))}
|
||||
onChange={(date) => {
|
||||
|
||||
setp_activite_deadline(format(date, 'dd/MM/yyyy'));
|
||||
setp_activite_deadline(format(date, 'dd/MM/yyyy HH:mm:ss'));
|
||||
setdatamodification_activite("1");
|
||||
}
|
||||
}
|
||||
showTimeSelect={false}
|
||||
filterTime={filterPassedTime_start}
|
||||
dateFormat="dd/MM/yyyy"
|
||||
className="disabled_style_100_percent_row"
|
||||
locale={'fr'}
|
||||
|
||||
showTimeSelect
|
||||
timeFormat="HH:mm"
|
||||
timeIntervals={15}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
is24Hour
|
||||
className="disabled_style enable_style"
|
||||
|
||||
/>
|
||||
|
||||
</div>
|
||||
|
|
@ -1956,7 +1958,7 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
</div>
|
||||
*/}
|
||||
|
||||
|
||||
|
||||
|
||||
<div className="div_row">
|
||||
<DndProvider backend={HTML5Backend}>
|
||||
|
|
@ -2175,11 +2177,13 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
setdatamodification_activite("1");
|
||||
}
|
||||
}
|
||||
showTimeSelect={false}
|
||||
filterTime={filterPassedTime_start}
|
||||
dateFormat="dd/MM/yyyy"
|
||||
className="disabled_style enable_style"
|
||||
locale={'fr'}
|
||||
showTimeSelect
|
||||
timeFormat="HH:mm"
|
||||
timeIntervals={15}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
is24Hour
|
||||
className="disabled_style enable_style"
|
||||
/>
|
||||
|
||||
</div>}
|
||||
|
|
@ -2408,15 +2412,17 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
selected={new Date(moment(one_activite_deadline, "DD/MM/YYYY HH:mm:ss"))}
|
||||
|
||||
onChange={(date) => {
|
||||
setone_activite_deadline(format(date, 'dd/MM/yyyy'));
|
||||
setone_activite_deadline(format(date, 'dd/MM/yyyy HH:mm:ss'));
|
||||
|
||||
}
|
||||
}
|
||||
showTimeSelect={false}
|
||||
filterTime={filterPassedTime_start}
|
||||
dateFormat="dd/MM/yyyy"
|
||||
className="disabled_style enable_style"
|
||||
locale={'fr'}
|
||||
showTimeSelect
|
||||
timeFormat="HH:mm"
|
||||
timeIntervals={15}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
is24Hour
|
||||
className="disabled_style enable_style"
|
||||
|
||||
/>
|
||||
|
||||
|
|
@ -2587,9 +2593,113 @@ const PartnerClient_Activite_For_Client = (props) => {
|
|||
</div>
|
||||
<div className="div_row"> </div>
|
||||
</div>
|
||||
|
||||
<style>{local_css}</style>
|
||||
</div >
|
||||
)
|
||||
}
|
||||
|
||||
export default PartnerClient_Activite_For_Client;
|
||||
export default PartnerClient_Activite_For_Client;
|
||||
|
||||
|
||||
const local_css = `
|
||||
:root {
|
||||
--bg: #f6f8fb;
|
||||
--card: #ffffff;
|
||||
--text: #0f172a;
|
||||
--muted: #64748b;
|
||||
--border: #e5e7eb;
|
||||
--shadow: 0 10px 25px rgba(2, 6, 23, .06);
|
||||
--green-700: #0f6b53;
|
||||
--green-600: #167a5e;
|
||||
--green-100: #e9f7f1;
|
||||
--blue-600: #2563eb;
|
||||
--radius: 14px;
|
||||
--radius-sm: 10px;
|
||||
}
|
||||
.Grid_2_col{
|
||||
margin-top: 12px;
|
||||
display:grid;
|
||||
grid-template-columns: 1.2fr 1fr;
|
||||
gap: 14px;
|
||||
padding:5px;
|
||||
}
|
||||
|
||||
.Grid_1_col{
|
||||
margin-top: 12px;
|
||||
display:grid;
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
padding:5px;
|
||||
}
|
||||
|
||||
.Grid_2_col_sub_colone {
|
||||
background: #fff;
|
||||
border: 1px solid #e5e7eb;
|
||||
border-radius: 14px;
|
||||
box-shadow: 0 6px 18px rgba(2,6,23,.04);
|
||||
padding: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 14px;
|
||||
}
|
||||
|
||||
|
||||
.Grid_2_col_sub_colone_header {
|
||||
background: #dbeafe;
|
||||
border-top-right-radius: 10px;
|
||||
border-top-left-radius: 10px;
|
||||
text-align: center;
|
||||
font-family: DM Sans;
|
||||
font-weight: 700;
|
||||
height: 2rem;
|
||||
padding-top: 5px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.Grid_2_col_sub_colone_bottom_menu{
|
||||
|
||||
}
|
||||
|
||||
.card__header{
|
||||
background: #e2e8f0;
|
||||
font-size: small;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card__title{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.card__icon{
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
display:grid;
|
||||
place-items:center;
|
||||
border-radius: 12px;
|
||||
background:#eff6ff;
|
||||
border:1px solid #dbeafe;
|
||||
}
|
||||
|
||||
.card__header h2{
|
||||
margin:0;
|
||||
font-size: 15px;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
.card__actions{ display:flex; align-items:center; gap:8px; }
|
||||
|
||||
.block_detail_action{
|
||||
width: 100%;
|
||||
float: left;
|
||||
background: #fafafa;
|
||||
padding: 10px;
|
||||
border: unset;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.react-datepicker-wrapper{
|
||||
width: 100%;
|
||||
}
|
||||
`;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -84,6 +84,38 @@ import { IconButton } from '@material-ui/core';
|
|||
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
|
||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||
|
||||
import {
|
||||
LayoutDashboard,
|
||||
CalendarDays,
|
||||
Users,
|
||||
GraduationCap,
|
||||
Receipt,
|
||||
BookOpen,
|
||||
BarChart3,
|
||||
Settings,
|
||||
FileText,
|
||||
CreditCard,
|
||||
AlertCircle,
|
||||
Pencil,
|
||||
Search,
|
||||
RotateCcw,
|
||||
Download,
|
||||
Columns3,
|
||||
Filter,
|
||||
AlignJustify,
|
||||
Printer,
|
||||
Send,
|
||||
History,
|
||||
XCircle,
|
||||
ChevronRight,
|
||||
ChevronDown,
|
||||
Bell,
|
||||
Eye,
|
||||
MoreVertical,
|
||||
FolderOpen,
|
||||
Menu,
|
||||
} from "lucide-react";
|
||||
|
||||
function PaperComponent(props) {
|
||||
return (
|
||||
<Draggable
|
||||
|
|
@ -252,11 +284,38 @@ const Partner_Facture = (props) => {
|
|||
const columns = [
|
||||
{ field: '_id', headerName: '_id', hide: true, disableExport: true, },
|
||||
{ field: 'id', headerName: 'id', hide: true, disableExport: true },
|
||||
{ field: 'eye_status', headerName: 'eye_status',hide: true, disableExport: true },
|
||||
{ field: 'eye_echeance', headerName: 'eye_echeance', hide: true, disableExport: true },
|
||||
{
|
||||
field: 'local_status', headerName: 'Statut', width: 150, hide: false, editable: false,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
{cellValues.row.eye_status && cellValues.row.eye_status === "retard" && <font style={{ color: "red" }}> En retard </font>}
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
{ field: 'invoice_header_ref_interne', headerName: 'Num Facture', minWidth: 200, flex: 1, hide: false, editable: false, },
|
||||
{ field: 'order_header_ref_interne', headerName: 'Réf. Cmd', minWidth: 200, flex: 1, hide: true, editable: false },
|
||||
{ field: 'invoice_header_type', headerName: 'Type', width: 100, hide: false, editable: false },
|
||||
{ field: 'invoice_date', headerName: 'Date Facture', width: 150, hide: false, editable: false },
|
||||
{ field: 'invoice_date_echeance', headerName: 'Echéance', width: 150, hide: false, editable: false },
|
||||
{
|
||||
field: 'invoice_date_echeance', headerName: 'Echéance', width: 150, hide: false, editable: false,
|
||||
renderCell: (cellValues) => {
|
||||
return (
|
||||
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||
{cellValues.row.eye_echeance && parseFloat(cellValues.row.eye_echeance) < 7 && <font style={{ color: "orange" }}> {cellValues.row.invoice_date_echeance} </font>}
|
||||
{!cellValues.row.eye_echeance || parseFloat(cellValues.row.eye_echeance) >= 7 && <font> {cellValues.row.invoice_date_echeance} </font>}
|
||||
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
{ field: 'order_header_client_id', headerName: 'Client_Id', width: 150, hide: true, editable: false, disableExport: true },
|
||||
{ field: 'order_header_client_nom', headerName: 'Nom Client', minWidth: 150, flex: 1 },
|
||||
|
|
@ -2402,6 +2461,7 @@ const Partner_Facture = (props) => {
|
|||
|
||||
if (facture_mail_type && facture_mail_type === "aquited") {
|
||||
form.append("invoice_regeneration", "1");
|
||||
form.append("invoice_aquite", "1");
|
||||
}
|
||||
|
||||
for (let i = 0; i < tab_invoice_mail_pieces_jointes_result.length; i++) {
|
||||
|
|
@ -4362,7 +4422,7 @@ const Partner_Facture = (props) => {
|
|||
const stored_cookie = getCookie('tokenmysypart');
|
||||
form.append("token", stored_cookie);
|
||||
form.append("archive", "0");
|
||||
form.append("is_ftion_initiale", "2");
|
||||
form.append("is_ftion_initiale", "2");
|
||||
|
||||
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
|
||||
|
||||
|
|
@ -5349,6 +5409,46 @@ const Partner_Facture = (props) => {
|
|||
})
|
||||
}
|
||||
|
||||
const stats = [
|
||||
{
|
||||
id: 1,
|
||||
title: "Factures émises",
|
||||
value: "337",
|
||||
trend: "+12% vs mois dernier",
|
||||
trendType: "positive",
|
||||
icon: <FileText size={22} />,
|
||||
iconClass: "is-blue",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
title: "À payer",
|
||||
value: "18 900,00 €",
|
||||
trend: "+8% vs mois dernier",
|
||||
trendType: "positive",
|
||||
icon: <CreditCard size={22} />,
|
||||
iconClass: "is-amber",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
title: "En retard",
|
||||
value: "4 800,00 €",
|
||||
trend: "+3% vs mois dernier",
|
||||
trendType: "negative",
|
||||
icon: <AlertCircle size={22} />,
|
||||
iconClass: "is-red",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
title: "Brouillons",
|
||||
value: "8",
|
||||
trend: "Stable vs mois dernier",
|
||||
trendType: "neutral",
|
||||
icon: <Pencil size={22} />,
|
||||
iconClass: "is-purple",
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
return (
|
||||
|
||||
<div className="partner_facture">
|
||||
|
|
@ -5955,7 +6055,7 @@ const Partner_Facture = (props) => {
|
|||
{article_formation_ou_produit && String(article_formation_ou_produit) === "formation" &&
|
||||
<div>
|
||||
<div className="div_row" style={{ "width": "100%", }}>
|
||||
|
||||
|
||||
{New_GetCurrentPartnerClass_result && New_GetCurrentPartnerClass_result.length > 0 &&
|
||||
(p_add_line_item || String(p_add_line_item) === "") && String(p_detail_header_statut_label).toLowerCase() !== "facturé" &&
|
||||
<div className="session_caract_Dialog" style={{ "textAlign": "left", "width": "50%", "height": "5rem", "float": "left" }}> <b> Formation </b>
|
||||
|
|
@ -5966,7 +6066,7 @@ const Partner_Facture = (props) => {
|
|||
fullWidth
|
||||
disabled={Boolean(parseInt(is_document_invoiced))}
|
||||
options={New_GetCurrentPartnerClass_result}
|
||||
value={New_GetCurrentPartnerClass_result.filter((data) => (data).internal_url === String(p_add_line_item))[0].label}
|
||||
value={New_GetCurrentPartnerClass_result.filter((data) => (data).internal_url === String(p_add_line_item))[0].label}
|
||||
|
||||
onChange={(event, value) => {
|
||||
// setp_champ_table(value.nom_champ_technique);
|
||||
|
|
@ -6384,7 +6484,7 @@ const Partner_Facture = (props) => {
|
|||
<div className="div_row" style={{ "width": "100%", }}>
|
||||
|
||||
{String(p_detail_header_statut_label).toLowerCase() === "facturé" && <div className="session_caract_Dialog" style={{ "textAlign": "left", "width": "50%", "height": "5rem", "float": "left" }}> <b>Article </b>
|
||||
|
||||
|
||||
{New_Getall_Partner_Product_Service_result && New_Getall_Partner_Product_Service_result.length > 0 && <TextField
|
||||
autoFocus
|
||||
margin="dense"
|
||||
|
|
@ -8706,7 +8806,7 @@ const Partner_Facture = (props) => {
|
|||
setdisplay_detail_invoice("");
|
||||
Getall_Parter_Invoice_With_Filter();
|
||||
|
||||
console.log(" éééé ")
|
||||
|
||||
}}
|
||||
>Rechercher
|
||||
</Button>
|
||||
|
|
@ -8728,6 +8828,51 @@ const Partner_Facture = (props) => {
|
|||
<br />
|
||||
</div>
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
|
||||
<section className="stats-grid">
|
||||
|
||||
<div className="stat-card">
|
||||
<div className={'stat-card__icon is-blue'}><FileText size={22} /></div>
|
||||
<div className="stat-card__content">
|
||||
<span className="stat-card__label">Factures émises</span>
|
||||
{rowss_total_data.length > 0 && rowss_total_data[0].nb_header_invoice && <strong className="stat-card__value">{rowss_total_data[0].nb_header_invoice}</strong>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className={'stat-card__icon is-amber'}><CreditCard size={22} /></div>
|
||||
<div className="stat-card__content">
|
||||
<span className="stat-card__label">Non échues</span>
|
||||
{rowss_total_data.length > 0 && rowss_total_data[0].total_a_payer && <strong className="stat-card__value">{local_format_monetaire(String(rowss_total_data[0].total_a_payer))} TTC</strong>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className={'stat-card__icon is-red'}><AlertCircle size={22} /></div>
|
||||
<div className="stat-card__content">
|
||||
<span className="stat-card__label">En retard </span>
|
||||
{rowss_total_data.length > 0 && rowss_total_data[0].total_en_retard && <strong className="stat-card__value">{local_format_monetaire(String(rowss_total_data[0].total_en_retard))} TTC</strong>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="stat-card">
|
||||
<div className={'stat-card__icon is-purple'}><Pencil size={22} /></div>
|
||||
<div className="stat-card__content">
|
||||
<span className="stat-card__label">Brouillons</span>
|
||||
{rowss_total_data.length > 0 && rowss_total_data[0].nb_header_invoice_bouillon && <strong className="stat-card__value">{String(rowss_total_data[0].nb_header_invoice_bouillon)}</strong>}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
|
||||
|
||||
<div className="session_data">
|
||||
|
|
@ -8755,9 +8900,6 @@ const Partner_Facture = (props) => {
|
|||
fontWeight: 'light',
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
|
||||
"& .MuiDataGrid-row": {
|
||||
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
|
||||
|
|
@ -8862,6 +9004,9 @@ const Partner_Facture = (props) => {
|
|||
credit_note_ref: JSON.parse(item).credit_note_ref,
|
||||
invoice_header_origin: JSON.parse(item).invoice_header_origin,
|
||||
|
||||
eye_status: JSON.parse(item).eye_status,
|
||||
eye_echeance: JSON.parse(item).eye_echeance,
|
||||
|
||||
}
|
||||
))}
|
||||
|
||||
|
|
@ -8945,6 +9090,8 @@ const Partner_Facture = (props) => {
|
|||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div className="div_row" ref={myRef} id="myRef" > </div>
|
||||
{String(display_detail_invoice) === "1" &&
|
||||
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
|
||||
|
|
@ -10867,4 +11014,50 @@ width: 100%;
|
|||
margin: 0px !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(180px, 1fr)); gap: 18px; margin-bottom: 18px;align-content: center;
|
||||
align-items: center; }
|
||||
.stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 20px; display: flex; align-items: center; gap: 16px; box-shadow: var(--shadow-card); }
|
||||
.stat-card__icon { width: 58px; height: 58px; border-radius: 18px; display: grid; place-items: center; flex-shrink: 0; }
|
||||
.stat-card__content { display: flex; flex-direction: column; gap: 4px; }
|
||||
.stat-card__label { color: var(--text-soft); font-size: 14px; font-weight: 600; }
|
||||
.stat-card__value { font-size: 18px; line-height: 1.1; color: #0a2a4d; font-family: 'DM Sans'; }
|
||||
.stat-card__trend { font-size: 13px; font-weight: 600; }
|
||||
.stat-card__trend.positive { color: var(--success); }
|
||||
.stat-card__trend.negative { color: var(--danger); }
|
||||
.stat-card__trend.neutral { color: var(--text-faint); }
|
||||
.stat-card__icon { width: 58px; height: 58px; border-radius: 18px; display: grid; place-items: center; flex-shrink: 0; }
|
||||
|
||||
:root {
|
||||
--sidebar-bg: #072b46;
|
||||
--sidebar-bg-2: #0b3556;
|
||||
--sidebar-text: rgba(255, 255, 255, 0.88);
|
||||
--sidebar-text-soft: rgba(255, 255, 255, 0.62);
|
||||
--primary: #2d6df6;
|
||||
--primary-dark: #1f59d1;
|
||||
--primary-soft: #e9f0ff;
|
||||
--success: #1fa971;
|
||||
--success-soft: #e9f8f2;
|
||||
--warning: #f59e0b;
|
||||
--warning-soft: #fff4df;
|
||||
--danger: #ef4444;
|
||||
--danger-soft: #feecec;
|
||||
--purple: #8b5cf6;
|
||||
--purple-soft: #f2ecff;
|
||||
--text: #16324f;
|
||||
--text-soft: #6a7f95;
|
||||
--text-faint: #8fa1b5;
|
||||
--border: #e7edf5;
|
||||
--background: #f5f8fc;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #fbfdff;
|
||||
--radius-lg: 18px;
|
||||
--shadow-card: 0 8px 24px rgba(15, 45, 74, 0.06);
|
||||
--shadow-soft: 0 4px 12px rgba(15, 45, 74, 0.04);
|
||||
}
|
||||
|
||||
.is-blue { background: #eaf1ff; color: var(--primary); }
|
||||
.is-amber { background: #fff3df; color: var(--warning); }
|
||||
.is-red { background: #fdeaea; color: var(--danger); }
|
||||
.is-purple { background: #f0eafe; color: var(--purple); }
|
||||
`;
|
||||
|
|
@ -276,6 +276,7 @@
|
|||
color: black;
|
||||
width: 100%;
|
||||
height: 2rem !important;
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -883,6 +884,7 @@
|
|||
color: black;
|
||||
width: 100%;
|
||||
height: 2rem !important;
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1513,6 +1515,7 @@
|
|||
color: black;
|
||||
width: 100%;
|
||||
height: 2rem !important;
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2059,6 +2062,7 @@
|
|||
color: black;
|
||||
width: 100% !important;
|
||||
height: 2rem !important;
|
||||
min-width: auto !important;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue