fix(parcel-sync): replace Unicode escapes with actual Romanian diacritics

The \u0103, \u00ee etc. escape sequences were rendering literally in JSX
text nodes instead of displaying ă, î, ț, ș characters.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
AI Assistant
2026-03-24 15:24:11 +02:00
parent d48a2bbf5d
commit 2b8d144924
8 changed files with 167 additions and 167 deletions
@@ -123,7 +123,7 @@ export function SearchTab({
setSearchError("");
}
} catch {
setSearchError("Eroare de re\u021bea.");
setSearchError("Eroare de rețea.");
}
setLoadingFeatures(false);
}, [siruta, featuresSearch, workspacePk]);
@@ -178,12 +178,12 @@ export function SearchTab({
if (data.eterraNote) notes.push(data.eterraNote);
setOwnerNote(
notes.length > 0
? `Surse: ${notes.join(" + ")}${data.total ? ` \u00b7 ${data.total} rezultate` : ""}`
? `Surse: ${notes.join(" + ")}${data.total ? ` · ${data.total} rezultate` : ""}`
: "",
);
}
} catch {
setOwnerError("Eroare de re\u021bea.");
setOwnerError("Eroare de rețea.");
}
setOwnerLoading(false);
}, [siruta, ownerSearch, workspacePk]);
@@ -596,7 +596,7 @@ export function SearchTab({
<Card>
<CardContent className="py-12 text-center text-muted-foreground">
<Search className="h-10 w-10 mx-auto mb-3 opacity-30" />
<p>Selecteaz\u0103 un UAT mai sus pentru a c\u0103uta parcele.</p>
<p>Selectează un UAT mai sus pentru a căuta parcele.</p>
</CardContent>
</Card>
);
@@ -640,7 +640,7 @@ export function SearchTab({
<div className="flex gap-3 items-end">
<div className="space-y-1 flex-1">
<Label className="text-xs">
Numere cadastrale (separate prin virgul\u0103 sau Enter)
Numere cadastrale (separate prin virgulă sau Enter)
</Label>
<div className="relative">
<Search className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
@@ -655,8 +655,8 @@ export function SearchTab({
</div>
{!session.connected && (
<p className="text-xs text-muted-foreground">
Necesit\u0103 conexiune eTerra. Folose\u0219te modul Proprietar
pentru a c\u0103uta offline \u00een DB.
Necesită conexiune eTerra. Folosește modul Proprietar
pentru a căuta offline în DB.
</p>
)}
</div>
@@ -673,7 +673,7 @@ export function SearchTab({
) : (
<Search className="mr-2 h-4 w-4" />
)}
Caut\u0103
Caută
</Button>
</div>
)}
@@ -683,7 +683,7 @@ export function SearchTab({
<div className="flex gap-3 items-end">
<div className="space-y-1 flex-1">
<Label className="text-xs">
Nume proprietar (caut\u0103 \u00een DB local + eTerra)
Nume proprietar (caută în DB local + eTerra)
</Label>
<div className="relative">
<User className="absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground" />
@@ -705,7 +705,7 @@ export function SearchTab({
) : (
<Search className="mr-2 h-4 w-4" />
)}
Caut\u0103
Caută
</Button>
</div>
)}
@@ -729,10 +729,10 @@ export function SearchTab({
<Card>
<CardContent className="py-12 text-center text-muted-foreground">
<Loader2 className="h-10 w-10 mx-auto mb-3 animate-spin opacity-50" />
<p>Se caut\u0103 \u00een eTerra...</p>
<p>Se caută în eTerra...</p>
<p className="text-xs mt-1 opacity-60">
Prima c\u0103utare pe un UAT nou poate dura ~10-30s (se
\u00eencarc\u0103 lista de jude\u021be).
Prima căutare pe un UAT nou poate dura ~10-30s (se
încarcă lista de județe).
</p>
</CardContent>
</Card>
@@ -747,7 +747,7 @@ export function SearchTab({
{searchResults.length > 1 ? "e" : ""}
{searchList.length > 0 && (
<span className="ml-2">
· <strong>{searchList.length}</strong> \u00een list\u0103
· <strong>{searchList.length}</strong> în listă
</span>
)}
</span>
@@ -761,7 +761,7 @@ export function SearchTab({
}}
>
<Plus className="mr-1 h-3.5 w-3.5" />
Adaug\u0103 toate \u00een list\u0103
Adaugă toate în listă
</Button>
)}
<Button
@@ -773,7 +773,7 @@ export function SearchTab({
}
>
<FileDown className="mr-1 h-3.5 w-3.5" />
Descarc\u0103 CSV
Descarcă CSV
</Button>
</div>
</div>
@@ -796,7 +796,7 @@ export function SearchTab({
</h3>
{!p.immovablePk && (
<p className="text-xs text-destructive">
Parcela nu a fost g\u0103sit\u0103 \u00een eTerra.
Parcela nu a fost găsită în eTerra.
</p>
)}
</div>
@@ -805,7 +805,7 @@ export function SearchTab({
size="sm"
variant="ghost"
className="h-7 w-7 p-0"
title="Adaug\u0103 \u00een list\u0103"
title="Adaugă în listă"
onClick={() => addToList(p)}
disabled={!p.immovablePk}
>
@@ -819,7 +819,7 @@ export function SearchTab({
onClick={() => {
const text = [
`Nr. Cad: ${p.nrCad}`,
`Nr. CF: ${p.nrCF || "\u2014"}`,
`Nr. CF: ${p.nrCF || ""}`,
p.nrCFVechi
? `CF vechi: ${p.nrCFVechi}`
: null,
@@ -829,7 +829,7 @@ export function SearchTab({
p.suprafata != null
? `Suprafata: ${p.suprafata.toLocaleString("ro-RO")} mp`
: null,
`Intravilan: ${p.intravilan || "\u2014"}`,
`Intravilan: ${p.intravilan || ""}`,
p.categorieFolosinta
? `Categorie: ${p.categorieFolosinta}`
: null,
@@ -870,7 +870,7 @@ export function SearchTab({
Nr. CF
</span>
<span className="font-medium">
{p.nrCF || "\u2014"}
{p.nrCF || ""}
</span>
</div>
{p.nrCFVechi && (
@@ -885,16 +885,16 @@ export function SearchTab({
<span className="text-xs text-muted-foreground block">
Nr. Topo
</span>
<span>{p.nrTopo || "\u2014"}</span>
<span>{p.nrTopo || ""}</span>
</div>
<div>
<span className="text-xs text-muted-foreground block">
Suprafa\u021b\u0103
Suprafață
</span>
<span className="tabular-nums">
{p.suprafata != null
? formatArea(p.suprafata)
: "\u2014"}
: ""}
</span>
</div>
<div>
@@ -911,13 +911,13 @@ export function SearchTab({
}
className="text-[11px]"
>
{p.intravilan || "\u2014"}
{p.intravilan || ""}
</Badge>
</div>
{p.categorieFolosinta && (
<div className="col-span-2">
<span className="text-xs text-muted-foreground block">
Categorii folosin\u021b\u0103
Categorii folosință
</span>
<span className="text-xs">
{p.categorieFolosinta}
@@ -927,7 +927,7 @@ export function SearchTab({
{p.adresa && (
<div className="col-span-2">
<span className="text-xs text-muted-foreground block">
Adres\u0103
Adresă
</span>
<span>{p.adresa}</span>
</div>
@@ -991,10 +991,10 @@ export function SearchTab({
<Card>
<CardContent className="py-12 text-center text-muted-foreground">
<Search className="h-10 w-10 mx-auto mb-3 opacity-30" />
<p>Introdu un num\u0103r cadastral \u0219i apas\u0103 Caut\u0103.</p>
<p>Introdu un număr cadastral și apasă Caută.</p>
<p className="text-xs mt-1 opacity-60">
Po\u021bi c\u0103uta mai multe parcele simultan, separate prin
virgul\u0103.
Poți căuta mai multe parcele simultan, separate prin
virgulă.
</p>
</CardContent>
</Card>
@@ -1009,9 +1009,9 @@ export function SearchTab({
<Card>
<CardContent className="py-12 text-center text-muted-foreground">
<Loader2 className="h-10 w-10 mx-auto mb-3 animate-spin opacity-50" />
<p>Se caut\u0103 proprietar...</p>
<p>Se caută proprietar...</p>
<p className="text-xs mt-1 opacity-60">
Caut\u0103 mai \u00eent\u00e2i \u00een DB local (date \u00eembog\u0103\u021bite), apoi pe
Caută mai întâi în DB local (date îmbogățite), apoi pe
eTerra.
</p>
</CardContent>
@@ -1036,7 +1036,7 @@ export function SearchTab({
}}
>
<Plus className="mr-1 h-3.5 w-3.5" />
Adaug\u0103 toate \u00een list\u0103
Adaugă toate în listă
</Button>
<Button
size="sm"
@@ -1047,7 +1047,7 @@ export function SearchTab({
}
>
<FileDown className="mr-1 h-3.5 w-3.5" />
Descarc\u0103 CSV
Descarcă CSV
</Button>
</div>
</div>
@@ -1075,7 +1075,7 @@ export function SearchTab({
size="sm"
variant="ghost"
className="h-7 w-7 p-0"
title="Adaug\u0103 \u00een list\u0103"
title="Adaugă în listă"
onClick={() =>
addToList(ownerResultToParcelDetail(r))
}
@@ -1128,7 +1128,7 @@ export function SearchTab({
{r.suprafata && (
<div>
<span className="text-xs text-muted-foreground block">
Suprafa\u021b\u0103
Suprafață
</span>
<span className="tabular-nums">
{typeof r.suprafata === "number"
@@ -1159,7 +1159,7 @@ export function SearchTab({
{r.categorieFolosinta && (
<div className="col-span-2">
<span className="text-xs text-muted-foreground block">
Categorii folosin\u021b\u0103
Categorii folosință
</span>
<span className="text-xs">
{r.categorieFolosinta}
@@ -1169,7 +1169,7 @@ export function SearchTab({
{r.adresa && (
<div className="col-span-2">
<span className="text-xs text-muted-foreground block">
Adres\u0103
Adresă
</span>
<span>{r.adresa}</span>
</div>
@@ -1206,12 +1206,12 @@ export function SearchTab({
<Card>
<CardContent className="py-12 text-center text-muted-foreground">
<User className="h-10 w-10 mx-auto mb-3 opacity-30" />
<p>Introdu numele proprietarului \u0219i apas\u0103 Caut\u0103.</p>
<p>Introdu numele proprietarului și apasă Caută.</p>
<p className="text-xs mt-1 opacity-60">
Caut\u0103 \u00een datele \u00eembog\u0103\u021bite (DB local) \u0219i pe eTerra.
Caută în datele îmbogățite (DB local) și pe eTerra.
<br />
Pentru rezultate complete, lanseaz\u0103 &quot;Sync fundal \u2014
Magic&quot; \u00een tab-ul Export.
Pentru rezultate complete, lansează &quot;Sync fundal
Magic&quot; în tab-ul Export.
</p>
</CardContent>
</Card>
@@ -1377,15 +1377,15 @@ export function SearchTab({
{p.nrCad}
</td>
<td className="px-3 py-2 text-xs">
{p.nrCF || "\u2014"}
{p.nrCF || ""}
</td>
<td className="px-3 py-2 text-right hidden sm:table-cell tabular-nums text-xs">
{p.suprafata != null
? formatArea(p.suprafata)
: "\u2014"}
: ""}
</td>
<td className="px-3 py-2 hidden md:table-cell text-xs truncate max-w-[300px]">
{p.proprietari || "\u2014"}
{p.proprietari || ""}
</td>
<td className="px-3 py-2 text-center">
<TooltipProvider>