import React from 'react'; import { useTranslation } from 'react-i18next'; import SplitPdfPanel from "../tools/Split"; import CompressPdfPanel from "../tools/Compress"; import OCRPanel from '../tools/OCR'; import ConvertPanel from '../tools/Convert'; import Sanitize from '../tools/Sanitize'; import AddPassword from '../tools/AddPassword'; import ChangePermissions from '../tools/ChangePermissions'; import RemovePassword from '../tools/RemovePassword'; import { SubcategoryId, ToolCategory, ToolRegistry } from './toolsTaxonomy'; import AddWatermark from '../tools/AddWatermark'; import Repair from '../tools/Repair'; // Hook to get the translated tool registry export function useFlatToolRegistry(): ToolRegistry { const { t } = useTranslation(); return { // Signing "certSign": { icon: workspace_premium, name: t("home.certSign.title", "Sign with Certificate"), component: null, view: "sign", description: t("home.certSign.desc", "Signs a PDF with a Certificate/Key (PEM/P12)"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.SIGNING }, "sign": { icon: signature, name: t("home.sign.title", "Sign"), component: null, view: "sign", description: t("home.sign.desc", "Adds signature to PDF by drawing, text or image"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.SIGNING }, // Document Security "addPassword": { icon: password, name: t("home.addPassword.title", "Add Password"), component: AddPassword, view: "security", description: t("home.addPassword.desc", "Add password protection and restrictions to PDF files"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY, maxFiles: -1, endpoints: ["add-password"] }, "add-watermark": { icon: branding_watermark, name: t("home.watermark.title", "Add Watermark"), component: AddWatermark, view: "format", maxFiles: -1, description: t("home.watermark.desc", "Add a custom watermark to your PDF document."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY, endpoints: ["add-watermark"] }, "add-stamp": { icon: approval, name: t("home.AddStampRequest.title", "Add Stamp to PDF"), component: null, view: "format", description: t("home.AddStampRequest.desc", "Add text or add image stamps at set locations"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY }, "sanitize": { icon: cleaning_services, name: t("home.sanitize.title", "Sanitize"), component: Sanitize, view: "security", maxFiles: -1, category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY, description: t("home.sanitize.desc", "Remove potentially harmful elements from PDF files"), endpoints: ["sanitize-pdf"] }, "flatten": { icon: layers_clear, name: t("home.flatten.title", "Flatten"), component: null, view: "format", description: t("home.flatten.desc", "Remove all interactive elements and forms from a PDF"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY }, "unlock-pdf-forms": { icon: preview_off, name: t("home.unlockPDFForms.title", "Unlock PDF Forms"), component: null, view: "security", description: t("home.unlockPDFForms.desc", "Remove read-only property of form fields in a PDF document."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY }, "manage-certificates": { icon: license, name: t("home.manageCertificates.title", "Manage Certificates"), component: null, view: "security", description: t("home.manageCertificates.desc", "Import, export, or delete digital certificate files used for signing PDFs."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY }, "change-permissions": { icon: lock, name: t("home.changePermissions.title", "Change Permissions"), component: ChangePermissions, view: "security", description: t("home.changePermissions.desc", "Change document restrictions and permissions"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_SECURITY, maxFiles: -1, endpoints: ["add-password"] }, // Verification "get-all-info-on-pdf": { icon: fact_check, name: t("home.getPdfInfo.title", "Get ALL Info on PDF"), component: null, view: "extract", description: t("home.getPdfInfo.desc", "Grabs any and all information possible on PDFs"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.VERIFICATION }, "validate-pdf-signature": { icon: verified, name: t("home.validateSignature.title", "Validate PDF Signature"), component: null, view: "security", description: t("home.validateSignature.desc", "Verify digital signatures and certificates in PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.VERIFICATION }, // Document Review "read": { icon: article, name: t("home.read.title", "Read"), component: null, view: "view", description: t("home.read.desc", "View and annotate PDFs. Highlight text, draw, or insert comments for review and collaboration."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_REVIEW }, "change-metadata": { icon: assignment, name: t("home.changeMetadata.title", "Change Metadata"), component: null, view: "format", description: t("home.changeMetadata.desc", "Change/Remove/Add metadata from a PDF document"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.DOCUMENT_REVIEW }, // Page Formatting "cropPdf": { icon: crop, name: t("home.crop.title", "Crop PDF"), component: null, view: "format", description: t("home.crop.desc", "Crop a PDF to reduce its size (maintains text!)"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "rotate": { icon: rotate_right, name: t("home.rotate.title", "Rotate"), component: null, view: "format", description: t("home.rotate.desc", "Easily rotate your PDFs."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "splitPdf": { icon: content_cut, name: t("home.split.title", "Split"), component: SplitPdfPanel, view: "split", description: t("home.split.desc", "Split PDFs into multiple documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "reorganize-pages": { icon: move_down, name: t("home.reorganizePages.title", "Reorganize Pages"), component: null, view: "pageEditor", description: t("home.reorganizePages.desc", "Rearrange, duplicate, or delete PDF pages with visual drag-and-drop control."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "adjust-page-size-scale": { icon: crop_free, name: t("home.scalePages.title", "Adjust page size/scale"), component: null, view: "format", description: t("home.scalePages.desc", "Change the size/scale of a page and/or its contents."), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "add-page-numbers": { icon: 123, name: t("home.add-page-numbers.title", "Add Page Numbers"), component: null, view: "format", description: t("home.add-page-numbers.desc", "Add Page numbers throughout a document in a set location"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "multi-page-layout": { icon: dashboard, name: t("home.pageLayout.title", "Multi-Page Layout"), component: null, view: "format", description: t("home.pageLayout.desc", "Merge multiple pages of a PDF document into a single page"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "single-large-page": { icon: looks_one, name: t("home.PdfToSinglePage.title", "PDF to Single Large Page"), component: null, view: "format", description: t("home.PdfToSinglePage.desc", "Merges all PDF pages into one large single page"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING }, "add-attachments": { icon: attachment, name: t("home.attachments.title", "Add Attachments"), component: null, view: "format", description: t("home.attachments.desc", "Add or remove embedded files (attachments) to/from a PDF"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.PAGE_FORMATTING, }, // Extraction "extract-pages": { icon: upload, name: t("home.extractPage.title", "Extract Pages"), component: null, view: "extract", description: t("home.extractPage.desc", "Extract specific pages from a PDF document"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.EXTRACTION }, "extract-images": { icon: filter, name: t("home.extractImages.title", "Extract Images"), component: null, view: "extract", description: t("home.extractImages.desc", "Extract images from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.EXTRACTION }, // Removal "remove": { icon: delete, name: t("home.removePages.title", "Remove Pages"), component: null, view: "remove", description: t("home.removePages.desc", "Remove specific pages from a PDF document"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL }, "remove-blank-pages": { icon: scan_delete, name: t("home.removeBlanks.title", "Remove Blank Pages"), component: null, view: "remove", description: t("home.removeBlanks.desc", "Remove blank pages from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL }, "remove-annotations": { icon: thread_unread, name: t("home.removeAnnotations.title", "Remove Annotations"), component: null, view: "remove", description: t("home.removeAnnotations.desc", "Remove annotations and comments from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL }, "remove-image": { icon: remove_selection, name: t("home.removeImagePdf.title", "Remove Image"), component: null, view: "format", description: t("home.removeImagePdf.desc", "Remove images from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL }, "remove-password": { icon: lock_open_right, name: t("home.removePassword.title", "Remove Password"), component: RemovePassword, view: "security", description: t("home.removePassword.desc", "Remove password protection from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL, endpoints: ["remove-password"], maxFiles: -1, }, "remove-certificate-sign": { icon: remove_moderator, name: t("home.removeCertSign.title", "Remove Certificate Signatures"), component: null, view: "security", description: t("home.removeCertSign.desc", "Remove digital signatures from PDF documents"), category: ToolCategory.STANDARD_TOOLS, subcategory: SubcategoryId.REMOVAL }, // Automation "automate": { icon: automation, name: t("home.automate.title", "Automate"), component: null, view: "format", description: t("home.automate.desc", "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.AUTOMATION }, "auto-rename-pdf-file": { icon: match_word, name: t("home.auto-rename.title", "Auto Rename PDF File"), component: null, view: "format", description: t("home.auto-rename.desc", "Automatically rename PDF files based on their content"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.AUTOMATION }, "auto-split-pages": { icon: split_scene_right, name: t("home.autoSplitPDF.title", "Auto Split Pages"), component: null, view: "format", description: t("home.autoSplitPDF.desc", "Automatically split PDF pages based on content detection"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.AUTOMATION }, "auto-split-by-size-count": { icon: content_cut, name: t("home.autoSizeSplitPDF.title", "Auto Split by Size/Count"), component: null, view: "format", description: t("home.autoSizeSplitPDF.desc", "Automatically split PDFs by file size or page count"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.AUTOMATION }, // Advanced Formatting "adjust-colors-contrast": { icon: palette, name: t("home.adjust-contrast.title", "Adjust Colors/Contrast"), component: null, view: "format", description: t("home.adjust-contrast.desc", "Adjust colors and contrast of PDF documents"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "repair": { icon: build, name: t("home.repair.title", "Repair"), component: Repair, view: "format", description: t("home.repair.desc", "Repair corrupted or damaged PDF files"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING, maxFiles: -1, endpoints: ["repair"] }, "detect-split-scanned-photos": { icon: scanner, name: t("home.ScannerImageSplit.title", "Detect & Split Scanned Photos"), component: null, view: "format", description: t("home.ScannerImageSplit.desc", "Detect and split scanned photos into separate pages"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "overlay-pdfs": { icon: layers, name: t("home.overlay-pdfs.title", "Overlay PDFs"), component: null, view: "format", description: t("home.overlay-pdfs.desc", "Overlay one PDF on top of another"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "replace-and-invert-color": { icon: format_color_fill, name: t("home.replaceColorPdf.title", "Replace & Invert Color"), component: null, view: "format", description: t("home.replaceColorPdf.desc", "Replace or invert colors in PDF documents"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "add-image": { icon: image, name: t("home.addImage.title", "Add Image"), component: null, view: "format", description: t("home.addImage.desc", "Add images to PDF documents"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "edit-table-of-contents": { icon: bookmark_add, name: t("home.editTableOfContents.title", "Edit Table of Contents"), component: null, view: "format", description: t("home.editTableOfContents.desc", "Add or edit bookmarks and table of contents in PDF documents"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, "scanner-effect": { icon: scanner, name: t("home.fakeScan.title", "Scanner Effect"), component: null, view: "format", description: t("home.fakeScan.desc", "Create a PDF that looks like it was scanned"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.ADVANCED_FORMATTING }, // Developer Tools "show-javascript": { icon: javascript, name: t("home.showJS.title", "Show JavaScript"), component: null, view: "extract", description: t("home.showJS.desc", "Extract and display JavaScript code from PDF documents"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.DEVELOPER_TOOLS }, "dev-api": { icon: open_in_new, name: t("home.devApi.title", "API"), component: null, view: "external", description: t("home.devApi.desc", "Link to API documentation"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.DEVELOPER_TOOLS, link: "https://stirlingpdf.io/swagger-ui/5.21.0/index.html" }, "dev-folder-scanning": { icon: open_in_new, name: t("home.devFolderScanning.title", "Automated Folder Scanning"), component: null, view: "external", description: t("home.devFolderScanning.desc", "Link to automated folder scanning guide"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.DEVELOPER_TOOLS, link: "https://docs.stirlingpdf.com/Advanced%20Configuration/Folder%20Scanning/" }, "dev-sso-guide": { icon: open_in_new, name: t("home.devSsoGuide.title", "SSO Guide"), component: null, view: "external", description: t("home.devSsoGuide.desc", "Link to SSO guide"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.DEVELOPER_TOOLS, link: "https://docs.stirlingpdf.com/Advanced%20Configuration/Single%20Sign-On%20Configuration", }, "dev-airgapped": { icon: open_in_new, name: t("home.devAirgapped.title", "Air-gapped Setup"), component: null, view: "external", description: t("home.devAirgapped.desc", "Link to air-gapped setup guide"), category: ToolCategory.ADVANCED_TOOLS, subcategory: SubcategoryId.DEVELOPER_TOOLS, link: "https://docs.stirlingpdf.com/Pro/#activation" }, // Recommended Tools "compare": { icon: compare, name: t("home.compare.title", "Compare"), component: null, view: "format", description: t("home.compare.desc", "Compare two PDF documents and highlight differences"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL }, "compressPdfs": { icon: zoom_in_map, name: t("home.compressPdfs.title", "Compress"), component: CompressPdfPanel, view: "compress", description: t("home.compressPdfs.desc", "Compress PDFs to reduce their file size."), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL, maxFiles: -1 }, "convert": { icon: sync_alt, name: t("home.fileToPDF.title", "Convert"), component: ConvertPanel, view: "convert", description: t("home.fileToPDF.desc", "Convert files to and from PDF format"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL, maxFiles: -1, endpoints: [ "pdf-to-img", "img-to-pdf", "pdf-to-word", "pdf-to-presentation", "pdf-to-text", "pdf-to-html", "pdf-to-xml", "html-to-pdf", "markdown-to-pdf", "file-to-pdf", "pdf-to-csv", "pdf-to-markdown", "pdf-to-pdfa", "eml-to-pdf" ], supportedFormats: [ // Microsoft Office "doc", "docx", "dot", "dotx", "csv", "xls", "xlsx", "xlt", "xltx", "slk", "dif", "ppt", "pptx", // OpenDocument "odt", "ott", "ods", "ots", "odp", "otp", "odg", "otg", // Text formats "txt", "text", "xml", "rtf", "html", "lwp", "md", // Images "bmp", "gif", "jpeg", "jpg", "png", "tif", "tiff", "pbm", "pgm", "ppm", "ras", "xbm", "xpm", "svg", "svm", "wmf", "webp", // StarOffice "sda", "sdc", "sdd", "sdw", "stc", "std", "sti", "stw", "sxd", "sxg", "sxi", "sxw", // Email formats "eml", // Archive formats "zip", // Other "dbf", "fods", "vsd", "vor", "vor3", "vor4", "uop", "pct", "ps", "pdf" ] }, "mergePdfs": { icon: library_add, name: t("home.merge.title", "Merge"), component: null, view: "merge", description: t("home.merge.desc", "Merge multiple PDFs into a single document"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL, maxFiles: -1 }, "multi-tool": { icon: dashboard_customize, name: t("home.multiTool.title", "Multi-Tool"), component: null, view: "pageEditor", description: t("home.multiTool.desc", "Use multiple tools on a single PDF document"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL, maxFiles: -1 }, "ocr": { icon: quick_reference_all, name: t("home.ocr.title", "OCR"), component: OCRPanel, view: "convert", description: t("home.ocr.desc", "Extract text from scanned PDFs using Optical Character Recognition"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL, maxFiles: -1 }, "redact": { icon: visibility_off, name: t("home.redact.title", "Redact"), component: null, view: "redact", description: t("home.redact.desc", "Permanently remove sensitive information from PDF documents"), category: ToolCategory.RECOMMENDED_TOOLS, subcategory: SubcategoryId.GENERAL }, }; }