callix-dialer-widget 1.3.1 → 1.3.3
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.
|
@@ -53617,7 +53617,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
53617
53617
|
});
|
|
53618
53618
|
}, [operatorState, currentCall]);
|
|
53619
53619
|
useEffect(() => {
|
|
53620
|
-
console.log("[FloatingDialer]
|
|
53620
|
+
console.log("[FloatingDialer] Qualifica��es:", {
|
|
53621
53621
|
success: successQualifications,
|
|
53622
53622
|
discard: discardQualifications,
|
|
53623
53623
|
callState: operatorState == null ? void 0 : operatorState.state
|
|
@@ -53625,7 +53625,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
53625
53625
|
}, [successQualifications, discardQualifications, operatorState == null ? void 0 : operatorState.state]);
|
|
53626
53626
|
useEffect(() => {
|
|
53627
53627
|
if ((currentCall == null ? void 0 : currentCall.direction) === "incoming") {
|
|
53628
|
-
console.log("[FloatingDialer]
|
|
53628
|
+
console.log("[FloatingDialer] ?? CHAMADA RECEBIDA:", {
|
|
53629
53629
|
call: currentCall,
|
|
53630
53630
|
direction: currentCall.direction,
|
|
53631
53631
|
state: operatorState == null ? void 0 : operatorState.state,
|
|
@@ -53717,7 +53717,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
53717
53717
|
if (callState === "afterCall") {
|
|
53718
53718
|
const shouldSkipQualification = (currentCallInfo == null ? void 0 : currentCallInfo.type) === "campaign" && currentCallInfo.info.campaign.skipCallQualification === true;
|
|
53719
53719
|
if (shouldSkipQualification) {
|
|
53720
|
-
console.log("[FloatingDialer]
|
|
53720
|
+
console.log("[FloatingDialer] ?? skipCallQualification ativado - finalizando automaticamente");
|
|
53721
53721
|
if (typeof finishAfterCall === "function") {
|
|
53722
53722
|
void Promise.resolve(
|
|
53723
53723
|
finishAfterCall({
|
|
@@ -53813,16 +53813,32 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
53813
53813
|
}, []);
|
|
53814
53814
|
useEffect(() => {
|
|
53815
53815
|
if (!currentCall || callState !== "callInProgress") {
|
|
53816
|
+
if (callDurationSeconds > 0) {
|
|
53817
|
+
console.log("[FloatingDialer] ?? Timer resetado (chamada n�o est� em progresso)");
|
|
53818
|
+
}
|
|
53816
53819
|
setCallDurationSeconds(0);
|
|
53817
53820
|
setNetworkMetric(INITIAL_NETWORK_METRIC);
|
|
53818
53821
|
setAudioMetric(INITIAL_AUDIO_METRIC);
|
|
53819
53822
|
return;
|
|
53820
53823
|
}
|
|
53821
|
-
|
|
53824
|
+
const initialDuration = Math.floor(currentCall.currentDurationSeconds ?? 0);
|
|
53825
|
+
setCallDurationSeconds(initialDuration);
|
|
53826
|
+
console.log("[FloatingDialer] ?? Timer iniciado:", {
|
|
53827
|
+
initialDuration,
|
|
53828
|
+
currentDurationSeconds: currentCall.currentDurationSeconds,
|
|
53829
|
+
callState
|
|
53830
|
+
});
|
|
53822
53831
|
const timer = window.setInterval(() => {
|
|
53823
|
-
|
|
53832
|
+
const duration = Math.floor(currentCall.currentDurationSeconds ?? 0);
|
|
53833
|
+
setCallDurationSeconds(duration);
|
|
53834
|
+
if (duration % 5 === 0 && duration > 0) {
|
|
53835
|
+
console.log("[FloatingDialer] ?? Timer atualizado:", duration, "segundos");
|
|
53836
|
+
}
|
|
53824
53837
|
}, 1e3);
|
|
53825
|
-
return () =>
|
|
53838
|
+
return () => {
|
|
53839
|
+
console.log("[FloatingDialer] ?? Timer parado");
|
|
53840
|
+
window.clearInterval(timer);
|
|
53841
|
+
};
|
|
53826
53842
|
}, [currentCall, callState]);
|
|
53827
53843
|
useEffect(() => {
|
|
53828
53844
|
if (!currentCall || callState !== "callInProgress") {
|
|
@@ -54123,7 +54139,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54123
54139
|
console.log("[FloatingDialer] Entrou em pausa com sucesso:", breakId);
|
|
54124
54140
|
} catch (error2) {
|
|
54125
54141
|
console.error("[FloatingDialer] Erro ao entrar em pausa:", error2);
|
|
54126
|
-
setBreakError(error2 instanceof Error ? error2.message : "
|
|
54142
|
+
setBreakError(error2 instanceof Error ? error2.message : "N�o foi poss�vel entrar em pausa.");
|
|
54127
54143
|
}
|
|
54128
54144
|
}, [goOnBreak]);
|
|
54129
54145
|
const handleGoOffBreak = useCallback(async () => {
|
|
@@ -54132,7 +54148,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54132
54148
|
console.log("[FloatingDialer] Saiu da pausa com sucesso");
|
|
54133
54149
|
} catch (error2) {
|
|
54134
54150
|
console.error("[FloatingDialer] Erro ao sair da pausa:", error2);
|
|
54135
|
-
setAvailabilityError("
|
|
54151
|
+
setAvailabilityError("N�o foi poss�vel sair da pausa.");
|
|
54136
54152
|
}
|
|
54137
54153
|
}, [goOffBreak]);
|
|
54138
54154
|
useEffect(() => {
|
|
@@ -54375,88 +54391,90 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54375
54391
|
if (callState === "afterCall") {
|
|
54376
54392
|
const options = afterCallResult === "success" ? successQualifications : discardQualifications;
|
|
54377
54393
|
const hasOptions = options.length > 0;
|
|
54378
|
-
|
|
54394
|
+
console.log("[FloatingDialer Mini] ?? TELA DE QUALIFICA��O:", {
|
|
54395
|
+
callState,
|
|
54396
|
+
afterCallResult,
|
|
54397
|
+
successQualifications: successQualifications.length,
|
|
54398
|
+
discardQualifications: discardQualifications.length,
|
|
54399
|
+
hasOptions,
|
|
54400
|
+
selectedQualificationId
|
|
54401
|
+
});
|
|
54402
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54379
54403
|
"div",
|
|
54380
54404
|
{
|
|
54381
|
-
className: ["callix", "mode", "min", tw`flex w-full max-w-full flex-col gap-
|
|
54405
|
+
className: ["callix", "mode", "min", tw`flex w-full max-w-full flex-col gap-1.5 rounded-2xl border border-slate-200 bg-white/95 p-2 shadow-sm text-slate-800 overflow-hidden`].join(" "),
|
|
54382
54406
|
"data-callix-variant": "min",
|
|
54383
|
-
children: [
|
|
54384
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
54385
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[
|
|
54386
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-
|
|
54407
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`space-y-1.5 rounded-xl border border-slate-200 bg-slate-50 px-2 py-1.5 overflow-hidden`, children: [
|
|
54408
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
54409
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[10px] font-semibold text-slate-700`, children: "Qualifique a chamada" }),
|
|
54410
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[8px] text-slate-500`, children: "Esta etapa e obrigatoria." })
|
|
54387
54411
|
] }),
|
|
54388
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`
|
|
54389
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
54390
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[11px] font-semibold text-slate-700`, children: "Qualifique a chamada" }),
|
|
54391
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[9px] text-slate-500`, children: "Esta etapa e obrigatoria." })
|
|
54392
|
-
] }),
|
|
54393
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`grid grid-cols-2 gap-1.5`, children: [
|
|
54394
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54395
|
-
"button",
|
|
54396
|
-
{
|
|
54397
|
-
type: "button",
|
|
54398
|
-
onClick: () => setAfterCallResult("success"),
|
|
54399
|
-
className: tw`${afterCallResult === "success" ? "bg-emerald-500 text-white shadow-md" : "bg-white text-slate-600"} rounded-lg border border-slate-200 px-2 py-1 text-[9px] font-semibold transition`,
|
|
54400
|
-
children: "Atendimento concluido"
|
|
54401
|
-
}
|
|
54402
|
-
),
|
|
54403
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54404
|
-
"button",
|
|
54405
|
-
{
|
|
54406
|
-
type: "button",
|
|
54407
|
-
onClick: () => setAfterCallResult("failure"),
|
|
54408
|
-
className: tw`${afterCallResult === "failure" ? "bg-rose-500 text-white shadow-md" : "bg-white text-slate-600"} rounded-lg border border-slate-200 px-2 py-1 text-[9px] font-semibold transition`,
|
|
54409
|
-
children: "Atendimento descartado"
|
|
54410
|
-
}
|
|
54411
|
-
)
|
|
54412
|
-
] }),
|
|
54413
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`space-y-1`, children: [
|
|
54414
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[9px] font-medium text-slate-700`, children: "Selecione uma qualificacao" }),
|
|
54415
|
-
hasOptions ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`max-h-32 space-y-1 overflow-y-auto pr-0.5`, children: options.map((qualification) => {
|
|
54416
|
-
const isSelected = selectedQualificationId === qualification.id;
|
|
54417
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54418
|
-
"button",
|
|
54419
|
-
{
|
|
54420
|
-
type: "button",
|
|
54421
|
-
onClick: () => setSelectedQualificationId(qualification.id),
|
|
54422
|
-
className: tw`${isSelected ? "ring-1 ring-primary bg-primary/10 border-primary" : "border-slate-200 bg-white"} w-full rounded-lg border px-2 py-1 text-left transition`,
|
|
54423
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[10px] font-semibold text-slate-800 leading-tight`, children: qualification.name })
|
|
54424
|
-
},
|
|
54425
|
-
qualification.id
|
|
54426
|
-
);
|
|
54427
|
-
}) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-lg border border-amber-200 bg-amber-50 px-2 py-1 text-[9px] text-amber-700`, children: "Nenhuma qualificacao disponivel." })
|
|
54428
|
-
] }),
|
|
54429
|
-
afterCallError && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[9px] text-red-500`, children: afterCallError }),
|
|
54430
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
54412
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`grid grid-cols-2 gap-1`, children: [
|
|
54413
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54431
54414
|
"button",
|
|
54432
54415
|
{
|
|
54433
54416
|
type: "button",
|
|
54434
|
-
onClick:
|
|
54435
|
-
|
|
54436
|
-
|
|
54437
|
-
|
|
54438
|
-
|
|
54439
|
-
|
|
54440
|
-
|
|
54417
|
+
onClick: () => setAfterCallResult("success"),
|
|
54418
|
+
className: tw`${afterCallResult === "success" ? "bg-green-500 text-white shadow-md" : "bg-white text-slate-600"} rounded-md border border-slate-200 px-1.5 py-0.5 text-[8px] font-semibold transition`,
|
|
54419
|
+
children: "Concluido"
|
|
54420
|
+
}
|
|
54421
|
+
),
|
|
54422
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54423
|
+
"button",
|
|
54424
|
+
{
|
|
54425
|
+
type: "button",
|
|
54426
|
+
onClick: () => setAfterCallResult("failure"),
|
|
54427
|
+
className: tw`${afterCallResult === "failure" ? "bg-rose-500 text-white shadow-md" : "bg-white text-slate-600"} rounded-md border border-slate-200 px-1.5 py-0.5 text-[8px] font-semibold transition`,
|
|
54428
|
+
children: "Descartado"
|
|
54441
54429
|
}
|
|
54442
54430
|
)
|
|
54443
54431
|
] }),
|
|
54432
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`space-y-1`, children: [
|
|
54433
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[8px] font-medium text-slate-700`, children: "Selecione qualificacao" }),
|
|
54434
|
+
hasOptions ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`max-h-20 space-y-0.5 overflow-y-auto pr-0.5`, children: options.map((qualification) => {
|
|
54435
|
+
const isSelected = selectedQualificationId === qualification.id;
|
|
54436
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54437
|
+
"button",
|
|
54438
|
+
{
|
|
54439
|
+
type: "button",
|
|
54440
|
+
onClick: () => setSelectedQualificationId(qualification.id),
|
|
54441
|
+
className: tw`${isSelected ? "ring-1 ring-blue-400 bg-blue-50 border-blue-300" : "border-slate-200 bg-white"} w-full rounded-md border px-1.5 py-0.5 text-left transition`,
|
|
54442
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[8px] font-semibold text-slate-800 leading-tight truncate`, children: qualification.name })
|
|
54443
|
+
},
|
|
54444
|
+
qualification.id
|
|
54445
|
+
);
|
|
54446
|
+
}) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-md border border-amber-200 bg-amber-50 px-1.5 py-0.5 text-[8px] text-amber-700`, children: "Nenhuma qualificacao disponivel." })
|
|
54447
|
+
] }),
|
|
54448
|
+
afterCallError && /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[8px] text-red-500`, children: afterCallError }),
|
|
54444
54449
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
54445
54450
|
"button",
|
|
54446
54451
|
{
|
|
54447
54452
|
type: "button",
|
|
54448
|
-
onClick:
|
|
54449
|
-
|
|
54453
|
+
onClick: handleFinishAfterCall,
|
|
54454
|
+
disabled: !hasOptions || !selectedQualificationId || isSubmittingAfterCall,
|
|
54455
|
+
className: tw`flex w-full items-center justify-center gap-1 rounded-md bg-blue-500 px-2 py-1 text-[8px] font-bold text-white shadow-md transition hover:bg-blue-600 disabled:cursor-not-allowed disabled:opacity-60`,
|
|
54450
54456
|
children: [
|
|
54451
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
54452
|
-
"
|
|
54457
|
+
isSubmittingAfterCall && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`inline-flex h-2.5 w-2.5 animate-spin rounded-full border border-white/40 border-t-white` }),
|
|
54458
|
+
"Finalizar"
|
|
54453
54459
|
]
|
|
54454
54460
|
}
|
|
54455
54461
|
)
|
|
54456
|
-
]
|
|
54462
|
+
] })
|
|
54457
54463
|
}
|
|
54458
54464
|
);
|
|
54459
54465
|
}
|
|
54466
|
+
console.log("[FloatingDialer Mini] ?? Estado da Chamada:", {
|
|
54467
|
+
isCallActive,
|
|
54468
|
+
callState,
|
|
54469
|
+
statusLabel,
|
|
54470
|
+
isInCall,
|
|
54471
|
+
isConnecting,
|
|
54472
|
+
isRinging,
|
|
54473
|
+
callDurationSeconds,
|
|
54474
|
+
callTarget,
|
|
54475
|
+
statusVisualUsed: isCallActive ? "GREEN (green)" : "statusVisual",
|
|
54476
|
+
timerVisible: isCallActive && callDurationSeconds > 0
|
|
54477
|
+
});
|
|
54460
54478
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
54461
54479
|
"div",
|
|
54462
54480
|
{
|
|
@@ -54464,7 +54482,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54464
54482
|
"data-callix-variant": "min",
|
|
54465
54483
|
children: [
|
|
54466
54484
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center justify-between gap-2`, children: [
|
|
54467
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`${isCallActive ? "border-
|
|
54485
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`${isCallActive ? "border-green-200 bg-green-50 text-green-700" : statusVisual.badgeClass} flex items-center gap-1 rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase leading-tight`, children: [
|
|
54468
54486
|
/* @__PURE__ */ jsxRuntimeExports.jsx(statusVisual.Icon, { className: tw`text-xs` }),
|
|
54469
54487
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: statusLabel })
|
|
54470
54488
|
] }),
|
|
@@ -54473,7 +54491,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54473
54491
|
{
|
|
54474
54492
|
type: "button",
|
|
54475
54493
|
onClick: () => handleGoOffBreak(),
|
|
54476
|
-
className: tw`inline-flex items-center gap-1 rounded-full border border-
|
|
54494
|
+
className: tw`inline-flex items-center gap-1 rounded-full border border-green-400 bg-green-50 px-2.5 py-1 text-[10px] font-semibold text-green-700 transition hover:bg-green-100`,
|
|
54477
54495
|
children: [
|
|
54478
54496
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: tw`text-xs` }),
|
|
54479
54497
|
"Voltar"
|
|
@@ -54492,16 +54510,17 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54492
54510
|
}
|
|
54493
54511
|
)
|
|
54494
54512
|
] }),
|
|
54495
|
-
isCallActive ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-xl border border-
|
|
54496
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-
|
|
54513
|
+
isCallActive ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-xl border border-green-200 bg-gradient-to-br from-green-50 to-white px-3 py-2`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-2`, children: [
|
|
54514
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-green-500 ${callDurationSeconds > 0 ? "animate-pulse" : ""}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiPhoneCall, { className: tw`text-xs text-white` }) }),
|
|
54497
54515
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex min-w-0 flex-1 flex-col gap-0.5`, children: [
|
|
54498
54516
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`truncate font-mono text-sm font-bold text-slate-800`, children: (callTarget == null ? void 0 : callTarget.replace(/^\+55/, "")) || "Conectando..." }),
|
|
54499
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[9px] font-medium uppercase tracking-wider text-
|
|
54517
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[9px] font-medium uppercase tracking-wider text-green-600`, children: statusLabel })
|
|
54500
54518
|
] }),
|
|
54501
|
-
callDurationSeconds > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex shrink-0 items-center gap-1 rounded-lg bg-
|
|
54519
|
+
callDurationSeconds > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex shrink-0 items-center gap-1 rounded-lg bg-green-500 px-2 py-1`, children: [
|
|
54502
54520
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiClock, { className: tw`text-[10px] text-white` }),
|
|
54503
54521
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`tabular-nums text-xs font-bold text-white`, children: formatDuration(callDurationSeconds) })
|
|
54504
|
-
] })
|
|
54522
|
+
] }),
|
|
54523
|
+
console.log("[FloatingDialer Mini] 🕐 Timer Debug:", { callDurationSeconds, shouldShowTimer: callDurationSeconds > 0, formattedDuration: formatDuration(callDurationSeconds), isCallActive })
|
|
54505
54524
|
] }) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`space-y-1 rounded-xl border border-slate-200 bg-slate-50 px-3 py-2`, children: [
|
|
54506
54525
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[10px] font-semibold uppercase tracking-wide text-slate-500`, children: "Numero" }),
|
|
54507
54526
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-2`, children: [
|
|
@@ -54556,7 +54575,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54556
54575
|
}
|
|
54557
54576
|
},
|
|
54558
54577
|
disabled: callButtonDisabled,
|
|
54559
|
-
className: tw`${isCallActive ? "bg-rose-500 hover:bg-rose-600" : "bg-
|
|
54578
|
+
className: tw`${isCallActive ? "bg-rose-500 hover:bg-rose-600" : "bg-green-500 hover:bg-green-600"} flex h-11 w-full items-center justify-center gap-2 rounded-xl text-sm font-bold text-white shadow-md transition disabled:cursor-not-allowed disabled:opacity-60`,
|
|
54560
54579
|
children: [
|
|
54561
54580
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiPhone, { className: tw`text-base` }),
|
|
54562
54581
|
isCallActive ? "Encerrar" : "Ligar"
|
|
@@ -54611,7 +54630,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54611
54630
|
{
|
|
54612
54631
|
type: "button",
|
|
54613
54632
|
onClick: handleGoOffBreak,
|
|
54614
|
-
className: tw`inline-flex items-center gap-1 rounded-lg border border-
|
|
54633
|
+
className: tw`inline-flex items-center gap-1 rounded-lg border border-green-300 bg-green-50 px-2 py-1 text-[10px] font-bold text-green-700 transition-all hover:bg-green-100 hover:shadow-sm`,
|
|
54615
54634
|
"aria-label": "Sair da pausa",
|
|
54616
54635
|
children: [
|
|
54617
54636
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: tw`text-xs` }),
|
|
@@ -54670,14 +54689,14 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54670
54689
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center justify-between mb-2`, children: [
|
|
54671
54690
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-1.5`, children: [
|
|
54672
54691
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiPhone, { className: tw`text-sm text-primary` }),
|
|
54673
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[10px] uppercase tracking-wider text-slate-500 font-semibold`, children: "
|
|
54692
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[10px] uppercase tracking-wider text-slate-500 font-semibold`, children: "N�mero" })
|
|
54674
54693
|
] }),
|
|
54675
54694
|
isDialerFocused && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: tw`inline-flex items-center gap-1 rounded-full bg-primary/10 px-2 py-0.5 text-[9px] font-semibold text-primary`, children: [
|
|
54676
54695
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`inline-block h-1.5 w-1.5 rounded-full bg-primary animate-pulse` }),
|
|
54677
54696
|
"Ativo"
|
|
54678
54697
|
] })
|
|
54679
54698
|
] }),
|
|
54680
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`min-h-[2.5rem] flex items-center`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-2xl font-semibold tabular-nums tracking-tight text-slate-800 flex-1 truncate`, children: dialDisplayText || /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-slate-400 text-lg font-normal`, children: "Digite um
|
|
54699
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`min-h-[2.5rem] flex items-center`, children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-2xl font-semibold tabular-nums tracking-tight text-slate-800 flex-1 truncate`, children: dialDisplayText || /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-slate-400 text-lg font-normal`, children: "Digite um n�mero" }) }) })
|
|
54681
54700
|
]
|
|
54682
54701
|
}
|
|
54683
54702
|
),
|
|
@@ -54703,7 +54722,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54703
54722
|
type: "button",
|
|
54704
54723
|
onClick: handleCall,
|
|
54705
54724
|
disabled: !isNumberValid,
|
|
54706
|
-
className: tw`flex flex-1 min-w-[7rem] items-center justify-center gap-2 rounded-lg bg-
|
|
54725
|
+
className: tw`flex flex-1 min-w-[7rem] items-center justify-center gap-2 rounded-lg bg-green-500 px-4 py-2.5 text-sm font-bold text-white shadow-lg transition-all hover:bg-green-600 hover:shadow-xl disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:shadow-lg`,
|
|
54707
54726
|
children: [
|
|
54708
54727
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiPhone, { className: tw`text-base` }),
|
|
54709
54728
|
"Ligar"
|
|
@@ -54727,7 +54746,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54727
54746
|
{
|
|
54728
54747
|
type: "button",
|
|
54729
54748
|
onClick: handleAnswer,
|
|
54730
|
-
className: tw`flex flex-1 min-w-[6rem] items-center justify-center gap-1.5 rounded-lg bg-
|
|
54749
|
+
className: tw`flex flex-1 min-w-[6rem] items-center justify-center gap-1.5 rounded-lg bg-green-500 px-3 py-2 text-xs font-bold text-white shadow-md transition-all hover:bg-green-600 hover:shadow-lg`,
|
|
54731
54750
|
children: [
|
|
54732
54751
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiPhoneIncoming, { className: tw`text-sm` }),
|
|
54733
54752
|
"Atender"
|
|
@@ -54796,7 +54815,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54796
54815
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
54797
54816
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: tw`text-[10px] uppercase tracking-wide text-slate-500`, children: "Volume" }),
|
|
54798
54817
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: tw`text-sm font-semibold text-slate-800`, children: [
|
|
54799
|
-
"
|
|
54818
|
+
"Sa�da ",
|
|
54800
54819
|
volumePercent,
|
|
54801
54820
|
"%"
|
|
54802
54821
|
] })
|
|
@@ -54872,8 +54891,8 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54872
54891
|
value: selectedInputId ?? "",
|
|
54873
54892
|
onChange: handleSelectInputDevice,
|
|
54874
54893
|
children: [
|
|
54875
|
-
audioDevices.inputs.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "
|
|
54876
|
-
audioDevices.inputs.map((device) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: device.deviceId, children: device.label || "
|
|
54894
|
+
audioDevices.inputs.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "Padr�o" }),
|
|
54895
|
+
audioDevices.inputs.map((device) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: device.deviceId, children: device.label || "Padr�o" }, device.deviceId || device.label))
|
|
54877
54896
|
]
|
|
54878
54897
|
}
|
|
54879
54898
|
)
|
|
@@ -54881,7 +54900,7 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54881
54900
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: tw`space-y-1 text-xs text-slate-700`, children: [
|
|
54882
54901
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: tw`flex items-center gap-1.5 font-semibold`, children: [
|
|
54883
54902
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiHeadphones, { className: tw`text-sm text-primary` }),
|
|
54884
|
-
"
|
|
54903
|
+
"Sa�da"
|
|
54885
54904
|
] }),
|
|
54886
54905
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
54887
54906
|
"select",
|
|
@@ -54890,8 +54909,8 @@ function AuthenticatedDialer({ username, dialValue, setDialValue, onLogout, vari
|
|
|
54890
54909
|
value: selectedOutputId ?? "",
|
|
54891
54910
|
onChange: handleSelectOutputDevice,
|
|
54892
54911
|
children: [
|
|
54893
|
-
audioDevices.outputs.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "
|
|
54894
|
-
audioDevices.outputs.map((device) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: device.deviceId, children: device.label || "
|
|
54912
|
+
audioDevices.outputs.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "Padr�o" }),
|
|
54913
|
+
audioDevices.outputs.map((device) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: device.deviceId, children: device.label || "Padr�o" }, device.deviceId || device.label))
|
|
54895
54914
|
]
|
|
54896
54915
|
}
|
|
54897
54916
|
)
|
|
@@ -55078,8 +55097,8 @@ function getStatusVisual(state) {
|
|
|
55078
55097
|
case "idle":
|
|
55079
55098
|
return {
|
|
55080
55099
|
Icon: FiCheckCircle,
|
|
55081
|
-
badgeClass: tw`border-
|
|
55082
|
-
dotClass: tw`bg-
|
|
55100
|
+
badgeClass: tw`border-green-200 bg-green-50 text-green-700`,
|
|
55101
|
+
dotClass: tw`bg-green-500`
|
|
55083
55102
|
};
|
|
55084
55103
|
case "callInProgress":
|
|
55085
55104
|
case "manualCallSetup":
|
|
@@ -55125,7 +55144,7 @@ function getStatusLabel(state) {
|
|
|
55125
55144
|
case "starting":
|
|
55126
55145
|
return "Conectando";
|
|
55127
55146
|
case "idle":
|
|
55128
|
-
return "
|
|
55147
|
+
return "Dispon�vel";
|
|
55129
55148
|
case "manualCallSetup":
|
|
55130
55149
|
return "Preparando";
|
|
55131
55150
|
case "manualCallRinging":
|
|
@@ -55183,7 +55202,7 @@ function AfterCallPanel({
|
|
|
55183
55202
|
{
|
|
55184
55203
|
type: "button",
|
|
55185
55204
|
onClick: () => onChangeResult("success"),
|
|
55186
|
-
className: tw`${result2 === "success" ? "bg-
|
|
55205
|
+
className: tw`${result2 === "success" ? "bg-green-500 text-white shadow-lg" : "bg-white text-slate-600"} rounded-xl border border-slate-200 px-3 py-2 text-sm font-semibold transition hover:border-green-400`,
|
|
55187
55206
|
children: "Atendimento concluido"
|
|
55188
55207
|
}
|
|
55189
55208
|
),
|
|
@@ -55249,15 +55268,15 @@ function ActiveCallSummary({
|
|
|
55249
55268
|
}) {
|
|
55250
55269
|
const durationLabel = durationSeconds > 0 ? formatDuration(durationSeconds) : "00:00";
|
|
55251
55270
|
const cleanNumber = (callTarget == null ? void 0 : callTarget.replace(/^\+55/, "")) || "Conectando...";
|
|
55252
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-lg border border-
|
|
55271
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`rounded-lg border border-green-200 bg-gradient-to-br from-green-50 to-white px-3 py-2`, children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center justify-between gap-3`, children: [
|
|
55253
55272
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-2.5 min-w-0 flex-1`, children: [
|
|
55254
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`flex items-center justify-center w-8 h-8 rounded-full bg-
|
|
55273
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: tw`flex items-center justify-center w-8 h-8 rounded-full bg-green-500 shrink-0 ${durationSeconds > 0 ? "animate-pulse" : ""}`, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiPhoneCall, { className: tw`text-sm text-white` }) }),
|
|
55255
55274
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex flex-col gap-0.5 min-w-0 flex-1`, children: [
|
|
55256
55275
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-base font-bold text-slate-800 truncate font-mono`, children: cleanNumber }),
|
|
55257
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[9px] font-medium text-
|
|
55276
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-[9px] font-medium text-green-600 uppercase tracking-wider`, children: statusLabel })
|
|
55258
55277
|
] })
|
|
55259
55278
|
] }),
|
|
55260
|
-
durationSeconds > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-1.5 bg-
|
|
55279
|
+
durationSeconds > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: tw`flex items-center gap-1.5 bg-green-500 rounded-lg px-2.5 py-1.5 shrink-0`, children: [
|
|
55261
55280
|
/* @__PURE__ */ jsxRuntimeExports.jsx(FiClock, { className: tw`text-xs text-white` }),
|
|
55262
55281
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: tw`text-sm font-bold tabular-nums text-white`, children: durationLabel })
|
|
55263
55282
|
] })
|