-
+
+
+
+
+
+
+
+
+
+
+
+
Tem certeza que deseja excluir esta Mureg?
+
+
Cliente: {{ deleteTarget?.cliente || '-' }}
+
Linha nova: {{ deleteTarget?.linhaNova || '-' }}
+
Linha antiga: {{ deleteTarget?.linhaAntiga || '-' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss
index 8ca24e1..b5fb326 100644
--- a/src/app/pages/mureg/mureg.scss
+++ b/src/app/pages/mureg/mureg.scss
@@ -267,6 +267,7 @@
color: rgba(17,18,20,0.5); transition: all 0.2s; cursor: pointer;
&:hover { background: rgba(17,18,20,0.05); color: var(--text); transform: translateY(-1px); }
&.primary:hover { color: var(--blue); background: rgba(3,15,170,0.1); }
+ &.danger:hover { color: #dc3545; background: rgba(220, 53, 69, 0.12); }
}
/* FOOTER */
@@ -278,11 +279,13 @@
.modal-backdrop-custom { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9990; backdrop-filter: blur(4px); }
.modal-custom { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 9995; padding: 16px; }
.modal-card { background: #ffffff; border: 1px solid rgba(255,255,255,0.8); border-radius: 20px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; display: flex; flex-direction: column; animation: modalPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); width: min(850px, 100%); max-height: 90vh; }
+.modal-card.modal-sm { width: min(480px, 100%); }
@keyframes modalPop { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.modal-header { padding: 16px 24px; border-bottom: 1px solid rgba(0,0,0,0.06); background: #fff; display: flex; justify-content: space-between; align-items: center; .modal-title { font-size: 1.1rem; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 12px; }
.icon-bg { width: 32px; height: 32px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 16px;
&.primary-soft { background: rgba(3, 15, 170, 0.1); color: var(--blue); }
&.brand-soft { background: rgba(227, 61, 207, 0.1); color: var(--brand); } /* Adicionado */
+ &.danger-soft { background: rgba(220, 53, 69, 0.12); color: #dc3545; }
}
.btn-icon { color: var(--muted); background: transparent; font-size: 1.2rem; border:none; cursor: pointer; &:hover { color: var(--brand); } }
}
@@ -307,4 +310,4 @@ div.box-body { padding: 16px; }
.form-control {
border-radius: 8px; border: 1px solid rgba(17,18,20,0.15);
&:focus { border-color: var(--brand); box-shadow: 0 0 0 2px rgba(227,61,207,0.15); outline: none; }
-}
\ No newline at end of file
+}
diff --git a/src/app/pages/mureg/mureg.ts b/src/app/pages/mureg/mureg.ts
index 0572137..b6b05c5 100644
--- a/src/app/pages/mureg/mureg.ts
+++ b/src/app/pages/mureg/mureg.ts
@@ -129,6 +129,11 @@ export class Mureg implements AfterViewInit {
editSaving = false;
editModel: any = null;
+ // ====== DELETE MODAL ======
+ deleteOpen = false;
+ deleteSaving = false;
+ deleteTarget: MuregRow | null = null;
+
// ====== CREATE MODAL ======
createOpen = false;
createSaving = false;
@@ -638,6 +643,50 @@ export class Mureg implements AfterViewInit {
});
}
+ // =======================================================================
+ // DELETE MODAL
+ // =======================================================================
+ onDelete(row: MuregRow) {
+ this.deleteTarget = row;
+ this.deleteOpen = true;
+ this.deleteSaving = false;
+ }
+
+ closeDelete() {
+ this.deleteOpen = false;
+ this.deleteTarget = null;
+ this.deleteSaving = false;
+ }
+
+ confirmDelete() {
+ if (!this.deleteTarget?.id) return;
+
+ this.deleteSaving = true;
+ const targetId = this.deleteTarget.id;
+ const currentGroup = this.expandedGroup;
+
+ this.http.delete(`${this.apiBase}/${targetId}`).subscribe({
+ next: async () => {
+ this.deleteSaving = false;
+ await this.showToast('Mureg excluída com sucesso!');
+ this.closeDelete();
+ this.loadForGroups();
+
+ if (currentGroup) {
+ setTimeout(() => {
+ this.expandedGroup = currentGroup;
+ this.toggleGroup(currentGroup);
+ }, 400);
+ }
+ },
+ error: async (err) => {
+ this.deleteSaving = false;
+ const msg = this.extractApiMessage(err) ?? 'Erro ao excluir Mureg.';
+ await this.showToast(msg);
+ }
+ });
+ }
+
// =======================================================================
// Helpers
// =======================================================================
From 058322521aec1fdb156558c74ec52637c883b97e Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 17:46:52 -0300
Subject: [PATCH 16/32] Add Mureg detail modal
---
src/app/pages/mureg/mureg.html | 98 +++++++++++++++++++++++++++++++++-
src/app/pages/mureg/mureg.scss | 14 +++++
src/app/pages/mureg/mureg.ts | 31 +++++++++++
3 files changed, 142 insertions(+), 1 deletion(-)
diff --git a/src/app/pages/mureg/mureg.html b/src/app/pages/mureg/mureg.html
index 41b3367..334239c 100644
--- a/src/app/pages/mureg/mureg.html
+++ b/src/app/pages/mureg/mureg.html
@@ -181,6 +181,9 @@
+
@@ -226,7 +229,7 @@
-
+
@@ -471,6 +474,99 @@
+
+
+
+
+
+
+
+
+
+
+ Carregando detalhes...
+
+
+
+
+
+
+
+
+ Linha Nova
+ {{ detailData.linhaNova || '-' }}
+
+
+ Linha Antiga
+ {{ detailData.linhaAntiga || '-' }}
+
+
+ Cliente
+ {{ detailData.cliente || '-' }}
+
+
+ Usuário
+ {{ detailData.usuario || '-' }}
+
+
+ Item
+ {{ detailData.item || '-' }}
+
+
+ Data Mureg
+ {{ displayValue('dataDaMureg', detailData.dataDaMureg) }}
+
+
+ ICCID
+ {{ detailData.iccid || '-' }}
+
+
+
+
+
+
+
+
+
+
+ Linha Atual na Geral
+ {{ detailData.linhaAtualNaGeral || '-' }}
+
+
+ Chip na Geral
+ {{ detailData.chipNaGeral || '-' }}
+
+
+ Conta na Geral
+ {{ detailData.contaNaGeral || '-' }}
+
+
+ Status na Geral
+ {{ detailData.statusNaGeral || '-' }}
+
+
+ Skil
+ {{ detailData.skil || '-' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss
index b5fb326..01e44d5 100644
--- a/src/app/pages/mureg/mureg.scss
+++ b/src/app/pages/mureg/mureg.scss
@@ -267,6 +267,7 @@
color: rgba(17,18,20,0.5); transition: all 0.2s; cursor: pointer;
&:hover { background: rgba(17,18,20,0.05); color: var(--text); transform: translateY(-1px); }
&.primary:hover { color: var(--blue); background: rgba(3,15,170,0.1); }
+ &.info:hover { color: var(--brand); background: rgba(227, 61, 207, 0.12); }
&.danger:hover { color: #dc3545; background: rgba(220, 53, 69, 0.12); }
}
@@ -279,6 +280,7 @@
.modal-backdrop-custom { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9990; backdrop-filter: blur(4px); }
.modal-custom { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 9995; padding: 16px; }
.modal-card { background: #ffffff; border: 1px solid rgba(255,255,255,0.8); border-radius: 20px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; display: flex; flex-direction: column; animation: modalPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); width: min(850px, 100%); max-height: 90vh; }
+.modal-card.modal-xl-custom { width: min(1100px, 95vw); max-height: 85vh; }
.modal-card.modal-sm { width: min(480px, 100%); }
@keyframes modalPop { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.modal-header { padding: 16px 24px; border-bottom: 1px solid rgba(0,0,0,0.06); background: #fff; display: flex; justify-content: space-between; align-items: center; .modal-title { font-size: 1.1rem; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 12px; }
@@ -297,6 +299,18 @@ div.detail-box { background: #fff; border-radius: 16px; border: 1px solid rgba(0
div.box-header { padding: 10px 16px; font-size: 0.8rem; font-weight: 800; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid rgba(0,0,0,0.04); background: #fdfdfd; display: flex; align-items: center; }
div.box-body { padding: 16px; }
+/* INFO GRID (detalhes) */
+.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0; }
+.info-item { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 6px 10px; background: rgba(245, 245, 247, 0.5); border-radius: 12px; border: 1px solid rgba(0,0,0,0.03); transition: background 0.2s;
+ &:hover { background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.05); }
+ &.span-2 { grid-column: span 2; }
+ .lbl { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 800; color: var(--muted); margin-bottom: 2px; }
+ .val { font-size: 0.9rem; font-weight: 700; color: var(--text); word-break: break-word; line-height: 1.2;
+ &.fs-4 { font-size: 1.1rem !important; }
+ &.small-text { font-size: 0.75rem; font-family: monospace; }
+ }
+}
+
/* EDIT FORM STYLES */
.form-grid {
display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
diff --git a/src/app/pages/mureg/mureg.ts b/src/app/pages/mureg/mureg.ts
index b6b05c5..fa633b6 100644
--- a/src/app/pages/mureg/mureg.ts
+++ b/src/app/pages/mureg/mureg.ts
@@ -129,6 +129,11 @@ export class Mureg implements AfterViewInit {
editSaving = false;
editModel: any = null;
+ // ====== DETAIL MODAL ======
+ detailOpen = false;
+ detailLoading = false;
+ detailData: MuregDetailDto | null = null;
+
// ====== DELETE MODAL ======
deleteOpen = false;
deleteSaving = false;
@@ -643,6 +648,32 @@ export class Mureg implements AfterViewInit {
});
}
+ // =======================================================================
+ // DETAIL MODAL
+ // =======================================================================
+ onView(row: MuregRow) {
+ this.detailOpen = true;
+ this.detailLoading = true;
+ this.detailData = null;
+
+ this.http.get(`${this.apiBase}/${row.id}`).subscribe({
+ next: (data) => {
+ this.detailData = data;
+ this.detailLoading = false;
+ },
+ error: async () => {
+ this.detailLoading = false;
+ await this.showToast('Erro ao carregar detalhes da Mureg.');
+ }
+ });
+ }
+
+ closeDetail() {
+ this.detailOpen = false;
+ this.detailLoading = false;
+ this.detailData = null;
+ }
+
// =======================================================================
// DELETE MODAL
// =======================================================================
From 6ff62463e8b71fcc3d677e32dad547d382b08cc6 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 17:51:15 -0300
Subject: [PATCH 17/32] Adjust Mureg detail modal width
---
src/app/pages/mureg/mureg.scss | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss
index 01e44d5..f320218 100644
--- a/src/app/pages/mureg/mureg.scss
+++ b/src/app/pages/mureg/mureg.scss
@@ -280,7 +280,7 @@
.modal-backdrop-custom { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9990; backdrop-filter: blur(4px); }
.modal-custom { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 9995; padding: 16px; }
.modal-card { background: #ffffff; border: 1px solid rgba(255,255,255,0.8); border-radius: 20px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; display: flex; flex-direction: column; animation: modalPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); width: min(850px, 100%); max-height: 90vh; }
-.modal-card.modal-xl-custom { width: min(1100px, 95vw); max-height: 85vh; }
+.modal-card.modal-xl-custom { width: min(980px, 92vw); max-height: 82vh; }
.modal-card.modal-sm { width: min(480px, 100%); }
@keyframes modalPop { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.modal-header { padding: 16px 24px; border-bottom: 1px solid rgba(0,0,0,0.06); background: #fff; display: flex; justify-content: space-between; align-items: center; .modal-title { font-size: 1.1rem; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 12px; }
From 7877ef1ff8e996a487ce0ae460ff6f63f096a941 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 17:55:15 -0300
Subject: [PATCH 18/32] Remove Geral info from Mureg detail modal
---
src/app/pages/mureg/mureg.html | 26 --------------------------
1 file changed, 26 deletions(-)
diff --git a/src/app/pages/mureg/mureg.html b/src/app/pages/mureg/mureg.html
index 334239c..f688235 100644
--- a/src/app/pages/mureg/mureg.html
+++ b/src/app/pages/mureg/mureg.html
@@ -528,33 +528,7 @@
ICCID
{{ detailData.iccid || '-' }}
-
-
-
-
-
-
-
-
- Linha Atual na Geral
- {{ detailData.linhaAtualNaGeral || '-' }}
-
-
- Chip na Geral
- {{ detailData.chipNaGeral || '-' }}
-
-
- Conta na Geral
- {{ detailData.contaNaGeral || '-' }}
-
-
- Status na Geral
- {{ detailData.statusNaGeral || '-' }}
-
-
Skil
{{ detailData.skil || '-' }}
From 128c573f0a0eddf4718f7d30e25aee4abfdaa935 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 17:59:34 -0300
Subject: [PATCH 19/32] Shrink Mureg detail modal
---
src/app/pages/mureg/mureg.scss | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/src/app/pages/mureg/mureg.scss b/src/app/pages/mureg/mureg.scss
index f320218..3e30c8f 100644
--- a/src/app/pages/mureg/mureg.scss
+++ b/src/app/pages/mureg/mureg.scss
@@ -280,7 +280,7 @@
.modal-backdrop-custom { position: fixed; inset: 0; background: rgba(0,0,0,0.45); z-index: 9990; backdrop-filter: blur(4px); }
.modal-custom { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 9995; padding: 16px; }
.modal-card { background: #ffffff; border: 1px solid rgba(255,255,255,0.8); border-radius: 20px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; display: flex; flex-direction: column; animation: modalPop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); width: min(850px, 100%); max-height: 90vh; }
-.modal-card.modal-xl-custom { width: min(980px, 92vw); max-height: 82vh; }
+.modal-card.modal-xl-custom { width: min(920px, 90vw); max-height: 78vh; }
.modal-card.modal-sm { width: min(480px, 100%); }
@keyframes modalPop { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.modal-header { padding: 16px 24px; border-bottom: 1px solid rgba(0,0,0,0.06); background: #fff; display: flex; justify-content: space-between; align-items: center; .modal-title { font-size: 1.1rem; font-weight: 800; color: var(--text); display: flex; align-items: center; gap: 12px; }
@@ -291,7 +291,7 @@
}
.btn-icon { color: var(--muted); background: transparent; font-size: 1.2rem; border:none; cursor: pointer; &:hover { color: var(--brand); } }
}
-.modal-body { padding: 24px; overflow-y: auto; &.bg-light-gray { background-color: #f8f9fa; } }
+.modal-body { padding: 20px; overflow-y: auto; &.bg-light-gray { background-color: #f8f9fa; } }
/* FORM & DETAILS */
.details-dashboard { display: grid; grid-template-columns: 1fr; gap: 20px; }
@@ -300,14 +300,14 @@ div.box-header { padding: 10px 16px; font-size: 0.8rem; font-weight: 800; text-t
div.box-body { padding: 16px; }
/* INFO GRID (detalhes) */
-.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 0; }
-.info-item { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 6px 10px; background: rgba(245, 245, 247, 0.5); border-radius: 12px; border: 1px solid rgba(0,0,0,0.03); transition: background 0.2s;
+.info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 0; }
+.info-item { display: flex; flex-direction: column; align-items: center; text-align: center; padding: 5px 8px; background: rgba(245, 245, 247, 0.5); border-radius: 10px; border: 1px solid rgba(0,0,0,0.03); transition: background 0.2s;
&:hover { background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.05); }
&.span-2 { grid-column: span 2; }
- .lbl { font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 800; color: var(--muted); margin-bottom: 2px; }
- .val { font-size: 0.9rem; font-weight: 700; color: var(--text); word-break: break-word; line-height: 1.2;
- &.fs-4 { font-size: 1.1rem !important; }
- &.small-text { font-size: 0.75rem; font-family: monospace; }
+ .lbl { font-size: 0.6rem; text-transform: uppercase; letter-spacing: 0.05em; font-weight: 800; color: var(--muted); margin-bottom: 2px; }
+ .val { font-size: 0.85rem; font-weight: 700; color: var(--text); word-break: break-word; line-height: 1.2;
+ &.fs-4 { font-size: 1rem !important; }
+ &.small-text { font-size: 0.7rem; font-family: monospace; }
}
}
From 6ab5b476e37c1d024a06b5a885b2479f1b77ba3a Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 18:08:41 -0300
Subject: [PATCH 20/32] Fix faturamento table scrolling
---
src/app/pages/faturamento/faturamento.scss | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 4326aa4..2371d12 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -97,7 +97,7 @@
position: relative;
display: flex;
flex-direction: column;
- max-height: calc(100vh - 18px) !important;
+ max-height: calc(100vh - 80px) !important;
min-height: 0;
&::before {
@@ -471,7 +471,8 @@
.groups-container {
padding: 16px;
overflow-y: auto;
- height: 100%;
+ flex: 1;
+ min-height: 0;
}
.group-list {
From 80a3926c256cc2c246aaff244a2393b49ee64476 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 18:20:49 -0300
Subject: [PATCH 21/32] Adjust faturamento table layout sizing
---
src/app/pages/faturamento/faturamento.scss | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 2371d12..7ba4df7 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -80,7 +80,7 @@
.container-fat {
width: 100%;
- max-width: 1180px;
+ max-width: 1240px;
position: relative;
z-index: 1;
margin-top: var(--page-top-gap);
@@ -97,8 +97,9 @@
position: relative;
display: flex;
flex-direction: column;
- max-height: calc(100vh - 80px) !important;
- min-height: 0;
+ height: auto !important;
+ min-height: 80vh;
+ max-height: none !important;
&::before {
content: '';
@@ -473,6 +474,7 @@
overflow-y: auto;
flex: 1;
min-height: 0;
+ height: 100%;
}
.group-list {
From a476843ae0d09efb85bd25821dad2edf65e57b6d Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 18:34:31 -0300
Subject: [PATCH 22/32] Stack Total Vivo/Line KPI labels
---
src/app/pages/faturamento/faturamento.html | 4 ++--
src/app/pages/faturamento/faturamento.scss | 15 +++++++++++++++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index 0beb345..ea6d0c3 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -131,7 +131,7 @@
-
+
Total Vivo
@@ -139,7 +139,7 @@
-
+
Total Line
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 7ba4df7..b366b33 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -449,6 +449,21 @@
}
}
+.kpi-stack {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 6px;
+
+ .lbl,
+ .val {
+ white-space: normal;
+ }
+
+ .val {
+ line-height: 1.1;
+ }
+}
+
.kpi-wide {
min-width: 220px;
padding: 14px 18px;
From 1d2e2346208ccd5fb7d1cdc15852b3f84afb4387 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 18:48:23 -0300
Subject: [PATCH 23/32] Center stacked Vivo/Line KPIs
---
src/app/pages/faturamento/faturamento.scss | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index b366b33..9f50a8e 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -451,8 +451,9 @@
.kpi-stack {
flex-direction: column;
- align-items: flex-start;
+ align-items: center;
gap: 6px;
+ text-align: center;
.lbl,
.val {
From d76ca6fbc997dce3fbf92d98a87a36f7d7e3267a Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 18:57:47 -0300
Subject: [PATCH 24/32] Stack Lucro KPI label
---
src/app/pages/faturamento/faturamento.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index ea6d0c3..f6ec934 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -147,7 +147,7 @@
-
+
Lucro
From e4426d6b119f93921eff3470cad1342546d345e3 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:04:51 -0300
Subject: [PATCH 25/32] Compact Total Clientes/Linhas KPIs
---
src/app/pages/faturamento/faturamento.html | 4 ++--
src/app/pages/faturamento/faturamento.scss | 9 +++++++++
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index f6ec934..46764d3 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -115,7 +115,7 @@
-
+
Total Clientes
@@ -123,7 +123,7 @@
-
+
Total Linhas
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 9f50a8e..ff7d4e7 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -465,6 +465,15 @@
}
}
+.kpi-compact {
+ padding: 8px 14px;
+ min-height: auto;
+
+ .val {
+ font-size: 1.05rem;
+ }
+}
+
.kpi-wide {
min-width: 220px;
padding: 14px 18px;
From ce3eba920a8a946eaacf554d9f23729969aabd20 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:15:53 -0300
Subject: [PATCH 26/32] Reduce height of Clientes/Linhas KPIs
---
src/app/pages/faturamento/faturamento.scss | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index ff7d4e7..4e76be3 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -466,11 +466,16 @@
}
.kpi-compact {
- padding: 8px 14px;
- min-height: auto;
+ padding: 6px 12px;
+ min-height: 56px;
+ align-items: center;
.val {
- font-size: 1.05rem;
+ font-size: 1rem;
+ }
+
+ .lbl {
+ font-size: 0.68rem;
}
}
From b559c34ef96495b0c242f812fd5437659f133cc4 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:25:17 -0300
Subject: [PATCH 27/32] Refine faturamento inner table styling
---
src/app/pages/faturamento/faturamento.html | 2 +-
src/app/pages/faturamento/faturamento.scss | 19 ++++++++++++++++++-
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index 46764d3..637b502 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -229,7 +229,7 @@
-
+
Registros do Cliente
Clique no “olho” para ver todos os detalhes
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 4e76be3..d0d1f5a 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -585,6 +585,16 @@
to { opacity: 1; transform: translateY(0); }
}
+.group-actions-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 12px 16px;
+ background: #fff;
+ border-bottom: 1px solid rgba(17,18,20,0.06);
+ gap: 12px;
+}
+
.chip-muted {
display: inline-flex;
align-items: center;
@@ -598,7 +608,11 @@
border: 1px solid rgba(17,18,20,0.06);
}
-.inner-table-wrap { max-height: 520px; overflow: auto; }
+.inner-table-wrap {
+ max-height: none;
+ height: auto;
+ overflow-y: visible;
+}
/* TABLE */
.table-wrap { overflow: auto; height: 100%; }
@@ -624,6 +638,9 @@
text-transform: uppercase;
white-space: nowrap;
text-align: center !important;
+ transition: color 0.2s ease;
+
+ &:hover { color: var(--brand); }
}
tbody tr {
From 5c7cc3a8274dd41b1d08478c79b565d34a005f4f Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:40:57 -0300
Subject: [PATCH 28/32] Remove sort carets from faturamento table
---
src/app/pages/faturamento/faturamento.html | 14 +++++++-------
src/app/pages/faturamento/faturamento.scss | 1 +
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index 637b502..38c97f3 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -238,12 +238,12 @@
- |
- ITEM {{ sortBy==='item' && sortDir==='desc' ? '▼' : '▲' }}
+ |
+ ITEM
|
- QTD LINHAS {{ sortBy==='qtdlinhas' && sortDir==='desc' ? '▼' : '▲' }}
+ QTD LINHAS
|
VIVO |
@@ -254,19 +254,19 @@
|
- FRANQUIA {{ sortBy==='franquiavivo' && sortDir==='desc' ? '▼' : '▲' }}
+ FRANQUIA
|
- VALOR (R$) {{ sortBy==='valorcontratovivo' && sortDir==='desc' ? '▼' : '▲' }}
+ VALOR (R$)
|
- FRANQUIA {{ sortBy==='franquialine' && sortDir==='desc' ? '▼' : '▲' }}
+ FRANQUIA
|
- VALOR (R$) {{ sortBy==='valorcontratoline' && sortDir==='desc' ? '▼' : '▲' }}
+ VALOR (R$)
|
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index d0d1f5a..766119a 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -664,6 +664,7 @@
.sort-caret { width: 14px; opacity: 0.3; &.active { opacity: 1; color: var(--brand); } }
.td-clip { overflow: hidden; text-overflow: ellipsis; max-width: 260px; }
.empty-state { background: rgba(255,255,255,0.4); }
+.th-item .th-content { justify-content: center; }
/* ACTIONS */
.action-group { display: flex; justify-content: center; gap: 6px; }
From 4b9796cb0ea995cd73387aac2cdf8b3bcc5ee351 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:46:02 -0300
Subject: [PATCH 29/32] Shrink compact faturamento KPIs
---
src/app/pages/faturamento/faturamento.scss | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 766119a..5da7ce0 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -466,16 +466,16 @@
}
.kpi-compact {
- padding: 6px 12px;
- min-height: 56px;
+ padding: 4px 10px;
+ min-height: 46px;
align-items: center;
.val {
- font-size: 1rem;
+ font-size: 0.95rem;
}
.lbl {
- font-size: 0.68rem;
+ font-size: 0.64rem;
}
}
From df1bc45d32f8105234c3754a3b5b985b97ea346f Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:50:37 -0300
Subject: [PATCH 30/32] Restore compact KPI sizing
---
src/app/pages/faturamento/faturamento.scss | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 5da7ce0..766119a 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -466,16 +466,16 @@
}
.kpi-compact {
- padding: 4px 10px;
- min-height: 46px;
+ padding: 6px 12px;
+ min-height: 56px;
align-items: center;
.val {
- font-size: 0.95rem;
+ font-size: 1rem;
}
.lbl {
- font-size: 0.64rem;
+ font-size: 0.68rem;
}
}
From 9f08fac60a0563b7b587801208a8f2eac2ce2674 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 19:56:48 -0300
Subject: [PATCH 31/32] Stack Clientes/Linhas KPI labels
---
src/app/pages/faturamento/faturamento.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index 38c97f3..aac77fe 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -115,7 +115,7 @@
-
+
Total Clientes
@@ -123,7 +123,7 @@
-
+
Total Linhas
From 864ec5baf037d3b617094097eb1b77da31c5e4d5 Mon Sep 17 00:00:00 2001
From: Eduardo Lopes <155753879+eduardolopesx03@users.noreply.github.com>
Date: Thu, 22 Jan 2026 20:03:47 -0300
Subject: [PATCH 32/32] Tighten KPI label/value spacing
---
src/app/pages/faturamento/faturamento.html | 6 +++---
src/app/pages/faturamento/faturamento.scss | 4 ++++
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/app/pages/faturamento/faturamento.html b/src/app/pages/faturamento/faturamento.html
index aac77fe..af9e6c1 100644
--- a/src/app/pages/faturamento/faturamento.html
+++ b/src/app/pages/faturamento/faturamento.html
@@ -115,7 +115,7 @@
-
+
Total Clientes
@@ -123,7 +123,7 @@
-
+
Total Linhas
@@ -147,7 +147,7 @@
-
+
Lucro
diff --git a/src/app/pages/faturamento/faturamento.scss b/src/app/pages/faturamento/faturamento.scss
index 766119a..ed96d9b 100644
--- a/src/app/pages/faturamento/faturamento.scss
+++ b/src/app/pages/faturamento/faturamento.scss
@@ -465,6 +465,10 @@
}
}
+.kpi-stack-tight {
+ gap: 2px;
+}
+
.kpi-compact {
padding: 6px 12px;
min-height: 56px;
|