3.12 Mini Utilities Extindere si Fix-uri
- NumberToText: Romanian number-to-words converter (lei/bani, compact, spaced) - ColorPaletteExtractor: image upload -> top 8 color swatches with hex copy - AreaConverter: bidirectional (mp, ari, ha, km2, sq ft) - UValueConverter: bidirectional U->R and R->U toggle - MDLPA: replaced broken iframe with 3 styled external link cards - PdfReducer: drag-and-drop, simplified to 2 levels, Deblocare PDF + PDF/A links - DWG-to-DXF skipped (needs backend service)
This commit is contained in:
@@ -343,8 +343,7 @@ export function DigitalSignaturesModule() {
|
||||
{groupedAssets.map(([group, items]) => (
|
||||
<div key={group}>
|
||||
<h3 className="mb-3 text-sm font-medium text-muted-foreground">
|
||||
{group}{" "}
|
||||
<span className="text-xs">({items.length})</span>
|
||||
{group} <span className="text-xs">({items.length})</span>
|
||||
</h3>
|
||||
<div className="grid gap-3 sm:grid-cols-2 lg:grid-cols-3">
|
||||
{items.map((asset) => (
|
||||
@@ -539,15 +538,11 @@ function AssetCard({
|
||||
<FileDown className="mr-2 h-4 w-4" />
|
||||
<span>Original</span>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
onClick={() => void downloadAsWord(asset)}
|
||||
>
|
||||
<DropdownMenuItem onClick={() => void downloadAsWord(asset)}>
|
||||
<FileText className="mr-2 h-4 w-4" />
|
||||
<span>Word (.docx)</span>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
onClick={() => void downloadAsPdf(asset)}
|
||||
>
|
||||
<DropdownMenuItem onClick={() => void downloadAsPdf(asset)}>
|
||||
<FileDown className="mr-2 h-4 w-4" />
|
||||
<span>PDF (.pdf)</span>
|
||||
</DropdownMenuItem>
|
||||
@@ -575,8 +570,7 @@ function ImageUploadField({
|
||||
const [processing, setProcessing] = useState(false);
|
||||
|
||||
const handleFile = async (file: File) => {
|
||||
const isTiff =
|
||||
file.type === "image/tiff" || /\.tiff?$/i.test(file.name);
|
||||
const isTiff = file.type === "image/tiff" || /\.tiff?$/i.test(file.name);
|
||||
|
||||
if (isTiff) {
|
||||
setProcessing(true);
|
||||
@@ -638,9 +632,7 @@ function ImageUploadField({
|
||||
) : (
|
||||
<>
|
||||
<Upload className="h-6 w-6" />
|
||||
<span>
|
||||
Trage imaginea aici sau apasă pentru a selecta
|
||||
</span>
|
||||
<span>Trage imaginea aici sau apasă pentru a selecta</span>
|
||||
<span className="text-xs text-muted-foreground/60">
|
||||
PNG, JPG, TIFF
|
||||
</span>
|
||||
@@ -778,9 +770,7 @@ function AssetForm({
|
||||
const [company, setCompany] = useState<CompanyId>(
|
||||
initial?.company ?? "beletage",
|
||||
);
|
||||
const [subcategory, setSubcategory] = useState(
|
||||
initial?.subcategory ?? "",
|
||||
);
|
||||
const [subcategory, setSubcategory] = useState(initial?.subcategory ?? "");
|
||||
const [tags, setTags] = useState<string[]>(initial?.tags ?? []);
|
||||
const [tagInput, setTagInput] = useState("");
|
||||
|
||||
@@ -927,9 +917,7 @@ function AssetForm({
|
||||
if (tagInput.trim()) addTag(tagInput);
|
||||
}}
|
||||
placeholder={
|
||||
tags.length === 0
|
||||
? "Adaugă etichete (Enter sau virgulă)..."
|
||||
: ""
|
||||
tags.length === 0 ? "Adaugă etichete (Enter sau virgulă)..." : ""
|
||||
}
|
||||
className="min-w-[120px] flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user