From b995eb898ef1d7293335baadded5dad218f6667a Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Mon, 22 Dec 2025 11:11:47 +0100 Subject: [PATCH 1/4] fix: Update PatternInfoSkeleton to match actual PatternInfo layout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace generic key-value skeleton with a proper representation that matches the actual PatternInfo component structure: - Three-column grid for Size, Stitches, and Colors stats - Separator line between sections - Color swatches row with circular placeholders 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- src/components/SkeletonLoader.tsx | 34 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/components/SkeletonLoader.tsx b/src/components/SkeletonLoader.tsx index 3da170d..491a362 100644 --- a/src/components/SkeletonLoader.tsx +++ b/src/components/SkeletonLoader.tsx @@ -65,16 +65,36 @@ export function PatternCanvasSkeleton() { export function PatternInfoSkeleton() { return ( -
- -
- {[1, 2, 3, 4].map((i) => ( -
- - +
+ {/* Three column grid matching PatternInfo stats */} +
+ {[1, 2, 3].map((i) => ( +
+ +
))}
+ + {/* Separator */} +
+ + {/* Color swatches row */} +
+ +
+ {[1, 2, 3, 4, 5].map((i) => ( + + ))} +
+
); } From 6e38ba855c1b9b4682c969a2c4a8fc015b3caa4e Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Mon, 22 Dec 2025 11:52:18 +0100 Subject: [PATCH 2/4] fix: Prevent button activation during post-upload state synchronization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix the Choose File button remaining clickable during the brief window between upload completion and pattern info retrieval. The issue was that labels don't support the disabled attribute, so when using asChild with a label, the disabled state was ignored. Changes: - Only use asChild when button is enabled (labels can't be disabled) - Keep input and button disabled conditions synchronized - Add uploadProgress check to prevent re-enabling before patternUploaded is true 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- src/components/FileUpload.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/components/FileUpload.tsx b/src/components/FileUpload.tsx index 5c05105..0c1ebc8 100644 --- a/src/components/FileUpload.tsx +++ b/src/components/FileUpload.tsx @@ -256,16 +256,34 @@ export function FileUpload() { onChange={handleFileChange} id="file-input" className="hidden" - disabled={isLoading || patternUploaded || isUploading} + disabled={ + isLoading || + patternUploaded || + isUploading || + (uploadProgress > 0 && !patternUploaded) + } />