refine: redesigned layout, flower cards, edit sync, and bouquet preview framing

* refine: move upload mode toggle to top and compact it

* refine: simplify upload layout and remove editorial numbers

* refine: unify flow continue bar and redesign result page layout

* refine: show bouquet flowers as scrollable cards on result page

* refine: add flip-to-Korean on result flower cards

* refine: improve result rationale and sync recipe on edit

* refine: shorten edit title and align bouquet image framing to 3:4
This commit is contained in:
Chaewon Lee
2026-06-14 17:21:20 +09:00
committed by GitHub
parent 4b27c82036
commit 07e4eeaca3
25 changed files with 1303 additions and 409 deletions

View File

@@ -0,0 +1,29 @@
<script>
import BouquetFlowerCard from './BouquetFlowerCard.svelte';
/** @type {{ id: number, name: string, nameKo: string, wordOfFlower: string, wordOfFlowerKo: string, imageSrc: string, role?: 'main' | 'sub' | 'greenery' }[]} */
let { flowers = [] } = $props();
</script>
{#if flowers.length === 0}
<p class="text-sm text-muted">Flower details will appear once the bouquet recipe is ready.</p>
{:else}
<div class="min-h-0 w-full">
<p class="mb-4 text-xs tracking-[0.2em] text-muted uppercase">Flowers in your bouquet</p>
<div
class="flex snap-x snap-mandatory gap-4 overflow-x-auto px-0.5 py-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"
>
{#each flowers as flower (flower.id)}
<BouquetFlowerCard
name={flower.name}
nameKo={flower.nameKo}
wordOfFlower={flower.wordOfFlower}
wordOfFlowerKo={flower.wordOfFlowerKo}
imageSrc={flower.imageSrc}
role={flower.role ?? 'main'}
/>
{/each}
</div>
</div>
{/if}