From 7a5206e771f7bb24baa2a584e40d1a8c725a4b31 Mon Sep 17 00:00:00 2001 From: AI Assistant Date: Thu, 19 Feb 2026 00:22:17 +0200 Subject: [PATCH] feat(mini-utilities): add 5 new tools - U/R converter, AI cleaner, MDLPA, PDF reducer, OCR --- .../components/mini-utilities-module.tsx | 700 ++++++++++++++++-- .../components/tag-manager-module.tsx | 476 ++++++++---- src/modules/tag-manager/services/seed-data.ts | 359 +++++---- 3 files changed, 1167 insertions(+), 368 deletions(-) diff --git a/src/modules/mini-utilities/components/mini-utilities-module.tsx b/src/modules/mini-utilities/components/mini-utilities-module.tsx index 7c2e389..6941be5 100644 --- a/src/modules/mini-utilities/components/mini-utilities-module.tsx +++ b/src/modules/mini-utilities/components/mini-utilities-module.tsx @@ -1,13 +1,35 @@ -'use client'; +"use client"; -import { useState } from 'react'; -import { Copy, Check, Hash, Type, Percent, Ruler } from 'lucide-react'; -import { Button } from '@/shared/components/ui/button'; -import { Input } from '@/shared/components/ui/input'; -import { Label } from '@/shared/components/ui/label'; -import { Textarea } from '@/shared/components/ui/textarea'; -import { Card, CardContent, CardHeader, CardTitle } from '@/shared/components/ui/card'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/shared/components/ui/tabs'; +import { useState, useRef } from "react"; +import { + Copy, + Check, + Hash, + Type, + Percent, + Ruler, + Zap, + Wand2, + Building2, + FileDown, + ScanText, +} from "lucide-react"; +import { Button } from "@/shared/components/ui/button"; +import { Input } from "@/shared/components/ui/input"; +import { Label } from "@/shared/components/ui/label"; +import { Textarea } from "@/shared/components/ui/textarea"; +import { + Card, + CardContent, + CardHeader, + CardTitle, +} from "@/shared/components/ui/card"; +import { + Tabs, + TabsContent, + TabsList, + TabsTrigger, +} from "@/shared/components/ui/tabs"; function CopyButton({ text }: { text: string }) { const [copied, setCopied] = useState(false); @@ -16,17 +38,29 @@ function CopyButton({ text }: { text: string }) { await navigator.clipboard.writeText(text); setCopied(true); setTimeout(() => setCopied(false), 1500); - } catch { /* silent */ } + } catch { + /* silent */ + } }; return ( - ); } function TextCaseConverter() { - const [input, setInput] = useState(''); + const [input, setInput] = useState(""); const upper = input.toUpperCase(); const lower = input.toLowerCase(); const title = input.replace(/\b\w/g, (c) => c.toUpperCase()); @@ -34,15 +68,26 @@ function TextCaseConverter() { return (
-