mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(tools)!: SnapOtter 2.0 phase 4 wave 1: 45 core tools across all modalities (#219)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { IMAGE_INPUTS } from "./modality.js";
|
||||
import { AUDIO_INPUTS, IMAGE_INPUTS, VIDEO_INPUTS } from "./modality.js";
|
||||
import type { CategoryInfo, SocialMediaPreset, Tool } from "./types.js";
|
||||
|
||||
export const CATEGORIES: CategoryInfo[] = [
|
||||
@@ -9,6 +9,10 @@ export const CATEGORIES: CategoryInfo[] = [
|
||||
{ id: "utilities", name: "Utilities", icon: "Wrench", color: "#6366F1" },
|
||||
{ id: "layout", name: "Layout & Composition", icon: "LayoutGrid", color: "#EC4899" },
|
||||
{ id: "format", name: "Format & Conversion", icon: "FileType", color: "#14B8A6" },
|
||||
{ id: "video", name: "Video", icon: "Video", color: "#EF4444" },
|
||||
{ id: "audio", name: "Audio", icon: "AudioLines", color: "#10B981" },
|
||||
{ id: "documents", name: "PDF & Documents", icon: "FileText", color: "#8B5CF6" },
|
||||
{ id: "data", name: "Data Files", icon: "Table", color: "#F59E0B" },
|
||||
{ id: "ai", name: "AI Tools", icon: "Sparkles", color: "#F59E0B" },
|
||||
];
|
||||
|
||||
@@ -599,11 +603,202 @@ export const TOOLS: Tool[] = [
|
||||
id: "pdf-to-image",
|
||||
name: "PDF to Image",
|
||||
description: "Convert PDF pages to images",
|
||||
category: "format",
|
||||
category: "documents",
|
||||
icon: "BookImage",
|
||||
route: "/pdf-to-image",
|
||||
modality: "image",
|
||||
acceptedInputs: IMAGE_INPUTS,
|
||||
modality: "document",
|
||||
acceptedInputs: [".pdf"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
// Video
|
||||
{
|
||||
id: "convert-video",
|
||||
name: "Convert Video",
|
||||
description: "Convert videos between MP4, MOV, and WebM",
|
||||
category: "video",
|
||||
icon: "Video",
|
||||
route: "/convert-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "compress-video",
|
||||
name: "Compress Video",
|
||||
description: "Shrink video file size with quality control",
|
||||
category: "video",
|
||||
icon: "FileVideo",
|
||||
route: "/compress-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
{
|
||||
id: "trim-video",
|
||||
name: "Trim Video",
|
||||
description: "Cut a clip out of a video",
|
||||
category: "video",
|
||||
icon: "Scissors",
|
||||
route: "/trim-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "mute-video",
|
||||
name: "Mute Video",
|
||||
description: "Remove the audio track from a video",
|
||||
category: "video",
|
||||
icon: "VolumeX",
|
||||
route: "/mute-video",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "video-to-gif",
|
||||
name: "Video to GIF",
|
||||
description: "Turn a video clip into an animated GIF",
|
||||
category: "video",
|
||||
icon: "Film",
|
||||
route: "/video-to-gif",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "long",
|
||||
},
|
||||
// Audio
|
||||
{
|
||||
id: "convert-audio",
|
||||
name: "Convert Audio",
|
||||
description: "Convert audio between MP3, WAV, OGG, and more",
|
||||
category: "audio",
|
||||
icon: "AudioLines",
|
||||
route: "/convert-audio",
|
||||
modality: "audio",
|
||||
acceptedInputs: AUDIO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "trim-audio",
|
||||
name: "Trim Audio",
|
||||
description: "Cut a section out of an audio file",
|
||||
category: "audio",
|
||||
icon: "Scissors",
|
||||
route: "/trim-audio",
|
||||
modality: "audio",
|
||||
acceptedInputs: AUDIO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "extract-audio",
|
||||
name: "Extract Audio",
|
||||
description: "Pull the audio track out of a video",
|
||||
category: "audio",
|
||||
icon: "FileAudio",
|
||||
route: "/extract-audio",
|
||||
modality: "video",
|
||||
acceptedInputs: VIDEO_INPUTS,
|
||||
executionHint: "fast",
|
||||
},
|
||||
// PDF & Documents
|
||||
{
|
||||
id: "merge-pdf",
|
||||
name: "Merge PDFs",
|
||||
description: "Combine multiple PDFs into one",
|
||||
category: "documents",
|
||||
icon: "Combine",
|
||||
route: "/merge-pdf",
|
||||
modality: "document",
|
||||
acceptedInputs: [".pdf"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "split-pdf",
|
||||
name: "Split PDF",
|
||||
description: "Extract pages or split into parts",
|
||||
category: "documents",
|
||||
icon: "Split",
|
||||
route: "/split-pdf",
|
||||
modality: "document",
|
||||
acceptedInputs: [".pdf"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "compress-pdf",
|
||||
name: "Compress PDF",
|
||||
description: "Shrink PDF file size",
|
||||
category: "documents",
|
||||
icon: "FileArchive",
|
||||
route: "/compress-pdf",
|
||||
modality: "document",
|
||||
acceptedInputs: [".pdf"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "rotate-pdf",
|
||||
name: "Rotate PDF",
|
||||
description: "Rotate pages in a PDF",
|
||||
category: "documents",
|
||||
icon: "RotateCw",
|
||||
route: "/rotate-pdf",
|
||||
modality: "document",
|
||||
acceptedInputs: [".pdf"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "word-to-pdf",
|
||||
name: "Word to PDF",
|
||||
description: "Convert Word documents to PDF",
|
||||
category: "documents",
|
||||
icon: "FileText",
|
||||
route: "/word-to-pdf",
|
||||
modality: "document",
|
||||
acceptedInputs: [".docx", ".doc", ".odt", ".rtf", ".txt"],
|
||||
executionHint: "long",
|
||||
},
|
||||
// Data Files
|
||||
{
|
||||
id: "csv-excel",
|
||||
name: "CSV to Excel",
|
||||
description: "Convert between CSV and Excel (XLSX), both directions",
|
||||
category: "data",
|
||||
icon: "Table",
|
||||
route: "/csv-excel",
|
||||
modality: "file",
|
||||
acceptedInputs: [".csv", ".xlsx"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "csv-json",
|
||||
name: "CSV to JSON",
|
||||
description: "Convert between CSV and JSON, both directions",
|
||||
category: "data",
|
||||
icon: "Braces",
|
||||
route: "/csv-json",
|
||||
modality: "file",
|
||||
acceptedInputs: [".csv", ".json"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "json-xml",
|
||||
name: "JSON to XML",
|
||||
description: "Convert between JSON and XML, both directions",
|
||||
category: "data",
|
||||
icon: "Code",
|
||||
route: "/json-xml",
|
||||
modality: "file",
|
||||
acceptedInputs: [".json", ".xml"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
{
|
||||
id: "split-csv",
|
||||
name: "Split CSV",
|
||||
description: "Split a CSV into smaller files by row count",
|
||||
category: "data",
|
||||
icon: "Split",
|
||||
route: "/split-csv",
|
||||
modality: "file",
|
||||
acceptedInputs: [".csv"],
|
||||
executionHint: "fast",
|
||||
},
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user