Image Upload Components — Changelog
Summary of changes delivered in PR
#63 on branch
jmpicnic/item-image-upload-components, merged 2026-03-26. 46 commits
across 4 sequential runs.
Run 1: Infrastructure and Scaffolding
Section titled “Run 1: Infrastructure and Scaffolding”- Restructured
src/types/canary/— movedutils.ts,pagination.ts,date-time.tsintoutilities/subdirectory with barrel re-export (116 import paths updated). - Added shared types:
ImageFieldConfig,ImageMimeType,ImageInput,ImageUploadResult,CropData,PixelCrop. - Added utility functions:
getInitials(extracted fromitem-grid-columns),getCroppedImage(canvas-based crop helper). - Added 6 ShadCN primitives:
alert-dialog,checkbox,popover,progress,slider,aspect-ratio. - Extended
Badgeatom witherror-overlayCVA variant. - Created mock data module (
__mocks__/image-story-data.ts) for stories and tests. - Added
favicon.icoto eliminate 404 console errors. - Added Storybook glob for
src/types/**/*.mdx(utilities documentation).
Run 2: Foundation Components
Section titled “Run 2: Foundation Components”- Implemented
ImageDisplaymolecule — loaded/loading/error/no-image states with baked-in edit flow (onImageChange+configopensImageUploadDialogon double-click/Enter). - Implemented
ImageDropZonemolecule — unified drag-drop, file picker, URL entry, clipboard paste input surface. - Implemented
ImagePreviewEditormolecule — crop/zoom/rotate/pan withreact-easy-crop. - Implemented
CopyrightAcknowledgmentatom — mandatory checkbox for image ownership confirmation. - Updated
Avataratom — addedentityNameprop, extractedgetInitialsto shared utility. - New dependencies:
react-easy-crop,browser-image-compression,heic2any(lazy-loaded).
Run 3: Composition Components
Section titled “Run 3: Composition Components”- Implemented
ImageHoverPreviewmolecule — 500ms delay popover for thumbnail hover. - Implemented
ImageInspectorOverlaymolecule — full-size modal with controlled and uncontrolled modes, optional Edit button. - Implemented
ImageComparisonLayoutmolecule — responsive desktop side-by-side / mobile tabs with baked-in Accept/Dismiss/Upload New actions. - Implemented
ImageFormFieldmolecule — form field renderer composingImageDisplaywithonImageChange, hover eye (inspect) and trash (remove withAlertDialog) actions.
Run 4: Grid Atoms, Organism, and Integration
Section titled “Run 4: Grid Atoms, Organism, and Integration”- Implemented
ImageCellDisplayatom — AG Grid cell renderer composingImageDisplay+ImageHoverPreview. - Implemented
ImageCellEditoratom withcreateImageCellEditorfactory — AG Grid cell editor withisPopup(), wired toImageUploadDialog. - Implemented
ImageUploadDialogorganism — state machine orchestrator (EmptyImage, ProvidedImage, EditExisting, FailedValidation, Uploading, Warn phases) with mock presigned-POST upload. - Updated
item-grid-columns— replaced inlineImageCellRendererwithImageCellDisplay. - Updated barrel exports in
canary.tsfor all new components, types, and utilities. - Added
WithImageColumnstory to Entity Data Grid. - Created
enforce-story-order.jstooling script.
Post-Run Refinements
Section titled “Post-Run Refinements”- Baked edit flow into
ImageDisplay(onImageChange+configprops). - Baked action buttons into
ImageComparisonLayout. - Added
EditExistingstate toImageUploadDialogfor editing existing images. - Resolved all 6 inconsistencies from the component audit.
- Added detailed baked-in behavior MDX documentation for all 11 baked-in components.
- Fixed
ImageDropZonepaste/drop UX — clipboard paste, URL drag from browser, Go button variant. - Generalized use-case framework with
createWorkflowStoriesfactory for Interactive/Stepwise/Automated story variants. - Style guide patterns documented (focus ring, disabled state, progress bar).
Metrics
Section titled “Metrics”| Metric | Value |
|---|---|
| New components | 19 (6 tiers: utilities, primitives, atoms, molecules, organisms) |
| New unit tests | ~112 (across 96 test files) |
| New stories | ~76 (across 15 story files) |
| Commits | 46 |
| CHANGELOG versions | v4.1.0 (components), v4.2.0 (use-case framework + fixes) |
| PR | #63 — merged 2026-03-26 |
Copyright: (c) Arda Systems 2025-2026, All rights reserved
Copyright: © Arda Systems 2025-2026, All rights reserved