From 3304e67eef20b99f124014eaa9d78e2a6063f498 Mon Sep 17 00:00:00 2001 From: anuphilipp3 Date: Sat, 22 Aug 2026 13:13:21 +0530 Subject: [PATCH] feat(media-design): migrate all 10 Media & Design tools onto the shared kit Phase 4 of the tool-consistency pass. Every Media & Design tool now renders through ToolShell + IOPanel / kit-surface panels instead of hand-rolled Cards, sharing one visual language with the rest of the app. Migrated (logic + visuals preserved): - color-picker, contrast-checker, css-gradient-builder, svg-optimizer, image-compressor, code-screenshot, exif-viewer, favicon-generator, keycode-inspector - css-generators hub + box-shadow / border-radius / clamp sub-tabs Verified intact: color swatches/pickers/eyedropper, WCAG contrast badges, gradient live preview + PNG export, image-compressor canvas + before/after, EXIF preview + metadata, favicon canvas render + ICO/ZIP export, code-screenshot export node, keycode live capture + history, and all CSS live previews. Also: IOPanel now omits its header row when a panel has neither label nor actions (kept from the Converters phase). 0 type errors; all 10 pages render. Co-Authored-By: Claude Opus 4.8 --- .../code-screenshot-layout.tsx | 320 +++++++++--------- .../color-picker-tool-layout.tsx | 32 +- .../contrast-checker-tool-layout.tsx | 31 +- .../css-generators/border-radius-tab.tsx | 25 +- .../css-generators/box-shadow-tab.tsx | 17 +- .../components/css-generators/clamp-tab.tsx | 21 +- .../css-generators/css-generators-layout.tsx | 19 +- .../css-gradient-builder/gradient-layout.tsx | 42 +-- .../exif-viewer/exif-viewer-layout.tsx | 217 ++++++------ .../favicon-generator-layout.tsx | 56 +-- .../image-compressor-layout.tsx | 239 +++++++------ .../keycode-inspector-layout.tsx | 281 +++++++-------- .../svg-optimizer/svg-optimizer-layout.tsx | 103 +++--- 13 files changed, 639 insertions(+), 764 deletions(-) diff --git a/apps/desktop-ui/src/components/code-screenshot/code-screenshot-layout.tsx b/apps/desktop-ui/src/components/code-screenshot/code-screenshot-layout.tsx index cfb35bec..4ee111a9 100644 --- a/apps/desktop-ui/src/components/code-screenshot/code-screenshot-layout.tsx +++ b/apps/desktop-ui/src/components/code-screenshot/code-screenshot-layout.tsx @@ -6,7 +6,6 @@ import { toBlob, toPng } from 'html-to-image' import { saveAs } from 'file-saver' import { toast } from 'sonner' import { Button } from '@/components/ui/button' -import { Card } from '@/components/ui/card' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { Slider } from '@/components/ui/slider' @@ -21,9 +20,8 @@ import { import { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group' import { Check, Copy, FileCode, ImageDown, Trash2, Wand2 } from 'lucide-react' import { IconPhotoCode } from '@tabler/icons-react' -import { ToolPageHeader } from '@/components/tools/tool-page-header' -import { RevealItem } from '@/components/dashboard/dashboard-reveal' -import { CATEGORY_ACCENT } from '@/components/dashboard/types' +import { ToolShell } from '@/components/tools/tool-shell' +import { IOPanel, ToolTextArea } from '@/components/tools/io-panel' import { BACKGROUNDS, LANGUAGES, canFormat, formatCode, highlightCode } from '@/lib/code-screenshot' /** @@ -156,166 +154,164 @@ export function CodeScreenshotLayout() { } }, [scale, t]) - return ( -
-
- {/* Static stylesheet constant in this file. */} - {/* threatcrush-disable-next-line js-unescaped-html-sink */} -