Skip to content

feat: add detail sheets for wardrobe items and outfits#8

Merged
jvsena42 merged 9 commits intomainfrom
feat/detail-sheets
Mar 26, 2026
Merged

feat: add detail sheets for wardrobe items and outfits#8
jvsena42 merged 9 commits intomainfrom
feat/detail-sheets

Conversation

@jvsena42
Copy link
Copy Markdown
Owner

@jvsena42 jvsena42 commented Mar 26, 2026

Summary

Add detail bottom sheets for clothing items and outfits on both Android (Compose) and iOS (SwiftUI). Tapping an item or outfit opens a detail sheet showing photo, properties, and edit/delete actions. Edit opens the existing add/create sheets pre-filled with the item's data. Delete shows a confirmation dialog before removing.

Changes

  • Add DeleteItem, UpdateItem intents to WardrobeViewModel and DeleteOutfit, UpdateOutfit intents to OutfitViewModel for single-item operations
  • Add allClothingItems to OutfitState to resolve outfit items for the detail sheet
  • Create ItemDetailSheet (Compose) — photo (280dp phone / 360dp tablet), name+category, 5 property rows (Color, Season, Fit, Subcategory, Material), edit/delete buttons
  • Create OutfitDetailSheet (Compose) — title, horizontal scrollable item cards (200dp phone / 300dp tablet), properties (Items count, Season), edit/delete buttons
  • Wire detail sheets into WardrobeScreen and OutfitsScreen — tap opens detail, long press still enters selection mode
  • Add edit mode to AddItemSheet and CreateOutfitSheet with existingItem/existingOutfit params for pre-filling fields
  • Create ItemDetailSheet.swift and OutfitDetailSheet.swift (SwiftUI) with matching design
  • Wire iOS screens with detail sheets, edit flow, and new ViewModel wrapper methods
  • Add Identifiable conformance for KMP ClothingItem and Outfit models in iOS
  • Make display helpers (dotColor, displayLabel, displayName) internal for reuse

Test plan

  • Tap a clothing item → detail sheet opens with photo placeholder, name, category dot, and property rows
  • Tap an outfit → detail sheet opens with item preview cards, item count, and season
  • Tap "Delete Item/Outfit" → confirmation dialog → item removed, sheet dismissed
  • Tap "Edit Item" → detail sheet closes, AddItemSheet opens pre-filled with item data, title says "Edit item", save says "Save Changes"
  • Tap "Edit Outfit" → detail sheet closes, CreateOutfitSheet opens pre-filled with outfit name and items selected
  • Long press still enters multi-selection mode (not detail sheet)
  • Tablet layout shows larger photos (360dp items, 300dp outfit cards) and larger text
  • Verify on both Android and iOS

Checklist

  • ./gradlew detekt passes
  • Tested on Android
  • Tested on iOS
  • Updated documentation (if applicable)

🤖 Generated with Claude Code

jvsena42 and others added 9 commits March 26, 2026 18:04
…t item resolution

Add DeleteItem, UpdateItem intents to WardrobeViewModel and DeleteOutfit,
UpdateOutfit intents to OutfitViewModel for the detail sheet actions.
Store full clothing items list in OutfitState for outfit detail sheet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bottom sheet showing item photo, name, category, and properties
(Color, Season, Fit, Subcategory, Material) with edit/delete buttons.
Responsive layout for phone (280dp photo) and tablet (360dp photo).
Make display helpers internal for reuse across detail sheets.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bottom sheet showing outfit name, horizontal scrollable item preview
cards with photos, properties (items count, season), and edit/delete
buttons. Responsive for phone (200dp cards) and tablet (300dp cards).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tap on clothing card opens ItemDetailSheet, tap on outfit card opens
OutfitDetailSheet. Delete from sheet triggers single-item delete.
Edit from sheet dismisses detail and opens add/create sheet pre-filled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
AddItemSheet accepts optional existingItem to pre-fill form fields
for editing. CreateOutfitSheet accepts optional existingOutfit to
pre-fill outfit name. Both show "Save Changes" when in edit mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add ItemDetailSheet and OutfitDetailSheet SwiftUI views matching the
design. Wire into WardrobeScreen and OutfitsScreen with tap-to-detail.
Add edit mode to AddItemSheet and CreateOutfitSheet with pre-filling.
Update ViewModel wrappers with deleteItem, updateItem, deleteOutfit,
updateOutfit methods. Add Identifiable conformance for KMP models.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extract sub-composables from ItemDetailContent and OutfitDetailContent
to reduce method length and complexity. Extract form state class from
AddItemForm. Fix long lines, return count, and too-many-functions issues.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jvsena42 jvsena42 enabled auto-merge March 26, 2026 23:20
@jvsena42 jvsena42 merged commit b040fc8 into main Mar 26, 2026
1 check passed
@jvsena42 jvsena42 deleted the feat/detail-sheets branch March 26, 2026 23:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant