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,107 @@
/** Korean display names and 꽃말 keyed by flower id */
/** @type {Record<number, { nameKo: string, wordOfFlowerKo: string }>} */
export const flowerCatalogKoById = {
1: { nameKo: '수선화', wordOfFlowerKo: '자존' },
2: { nameKo: '스톡', wordOfFlowerKo: '변함없는 아름다움' },
3: { nameKo: '아마릴리스', wordOfFlowerKo: '화려한 미' },
4: { nameKo: '스위트피', wordOfFlowerKo: '행복한 만남' },
5: { nameKo: '안스리움', wordOfFlowerKo: '열정' },
6: { nameKo: '프리지아', wordOfFlowerKo: '순결' },
7: { nameKo: '튤립', wordOfFlowerKo: '자애' },
8: { nameKo: '히아신스', wordOfFlowerKo: '사랑의 기쁨' },
9: { nameKo: '라넌큘러스', wordOfFlowerKo: '매력' },
10: { nameKo: '라일락', wordOfFlowerKo: '첫사랑' },
11: { nameKo: '붓꽃', wordOfFlowerKo: '좋은 소식' },
12: { nameKo: '모란', wordOfFlowerKo: '부귀영화' },
13: { nameKo: '작약', wordOfFlowerKo: '수줍음' },
14: { nameKo: '장미', wordOfFlowerKo: '열정적인 사랑' },
15: { nameKo: '눈꽃동백', wordOfFlowerKo: '우아함' },
16: { nameKo: '카네이션', wordOfFlowerKo: '여성의 사랑' },
17: { nameKo: '클레마티스', wordOfFlowerKo: '고귀함' },
18: { nameKo: '백합', wordOfFlowerKo: '순결' },
19: { nameKo: '수국', wordOfFlowerKo: '변덕' },
20: { nameKo: '아가판서스', wordOfFlowerKo: '연애편지' },
21: { nameKo: '알리움', wordOfFlowerKo: '끝없는 슬픔' },
22: { nameKo: '도라지', wordOfFlowerKo: '우쭐함' },
23: { nameKo: '떡잎', wordOfFlowerKo: '굳건한 애정' },
24: { nameKo: '양귀비', wordOfFlowerKo: '위로' },
25: { nameKo: '다알리아', wordOfFlowerKo: '감사' },
26: { nameKo: '연꽃', wordOfFlowerKo: '순결' },
27: { nameKo: '용담', wordOfFlowerKo: '슬플 때 사랑한다' },
28: { nameKo: '해바라기', wordOfFlowerKo: '숭배' },
29: { nameKo: '국화', wordOfFlowerKo: '순결' },
30: { nameKo: '맨드라미', wordOfFlowerKo: '뜨거운 사랑' },
31: { nameKo: '아네모네', wordOfFlowerKo: '진실' },
32: { nameKo: '코스모스', wordOfFlowerKo: '순수한 마음' },
33: { nameKo: '상사화', wordOfFlowerKo: '다시 만날 수 없는 사랑' },
34: { nameKo: '거베라', wordOfFlowerKo: '신비' },
35: { nameKo: '칼라', wordOfFlowerKo: '기쁨' },
36: { nameKo: '극락조', wordOfFlowerKo: '신비' },
37: { nameKo: '헬레보어', wordOfFlowerKo: '존재의 이유' },
38: { nameKo: '리시안셔스', wordOfFlowerKo: '감사' },
39: { nameKo: '스카비오사', wordOfFlowerKo: '모든 것을 잃음' },
40: { nameKo: '왁스플라워', wordOfFlowerKo: '영원한 사랑' },
41: { nameKo: '카스피아', wordOfFlowerKo: '추억' },
42: { nameKo: '루스커스', wordOfFlowerKo: '인내' },
43: { nameKo: '베로니카', wordOfFlowerKo: '충실' },
44: { nameKo: '솔리더고', wordOfFlowerKo: '격려' },
45: { nameKo: '부바르디아', wordOfFlowerKo: '열정' },
46: { nameKo: '트위디아', wordOfFlowerKo: '나를 믿어줘' },
47: { nameKo: '크라스페디아', wordOfFlowerKo: '건강' },
48: { nameKo: '아마란스', wordOfFlowerKo: '불멸' },
49: { nameKo: '애미', wordOfFlowerKo: '안식처' },
50: { nameKo: '니겔라', wordOfFlowerKo: '혼란' },
51: { nameKo: '브루니아', wordOfFlowerKo: '단결' },
52: { nameKo: '금어초', wordOfFlowerKo: '욕망' },
53: { nameKo: '루핀', wordOfFlowerKo: '삶에 대한 열망' },
54: { nameKo: '글라디올러스', wordOfFlowerKo: '비밀스러운 만남' },
55: { nameKo: '디기탈리스', wordOfFlowerKo: '뜨거운 사랑' },
56: { nameKo: '델피니움', wordOfFlowerKo: '내 마음을 알아줘' },
57: { nameKo: '살비아', wordOfFlowerKo: '타오르는 마음' },
58: { nameKo: '머스카리', wordOfFlowerKo: '실망' },
59: { nameKo: '물망초', wordOfFlowerKo: '진실한 사랑' },
60: { nameKo: '스타티스', wordOfFlowerKo: '영원한 사랑' },
61: { nameKo: '아스틸베', wordOfFlowerKo: '수줍음' },
62: { nameKo: '헬리크리섬', wordOfFlowerKo: '영원히 기억해' },
63: { nameKo: '수레국화', wordOfFlowerKo: '행복' },
64: { nameKo: '꽈리', wordOfFlowerKo: '거짓' },
65: { nameKo: '천일홍', wordOfFlowerKo: '불멸' },
66: { nameKo: '심듀움', wordOfFlowerKo: '희망' },
67: { nameKo: '안개꽃', wordOfFlowerKo: '순수한 기쁨' },
68: { nameKo: '카틀레야', wordOfFlowerKo: '당신은 아름다워요' },
69: { nameKo: '온시디움', wordOfFlowerKo: '순수한 마음' },
70: { nameKo: '덴드로비움', wordOfFlowerKo: '아름다움' },
71: { nameKo: '반다', wordOfFlowerKo: '애정의 표시' },
72: { nameKo: '호랑가시나무', wordOfFlowerKo: '보호' },
73: { nameKo: '남천', wordOfFlowerKo: '변치 않는 사랑' },
74: { nameKo: '고양이버들', wordOfFlowerKo: '자유' },
75: { nameKo: '떡갈고사리', wordOfFlowerKo: '매력' },
76: { nameKo: '목화', wordOfFlowerKo: '어머니의 사랑' },
77: { nameKo: '편백', wordOfFlowerKo: '침착' },
78: { nameKo: '뷰티베리', wordOfFlowerKo: '지혜' },
79: { nameKo: '갈대', wordOfFlowerKo: '신념' },
80: { nameKo: '조', wordOfFlowerKo: '평등' },
81: { nameKo: '민트', wordOfFlowerKo: '덕' },
82: { nameKo: '아스파라거스', wordOfFlowerKo: '변함없음' },
83: { nameKo: '억새', wordOfFlowerKo: '은퇴' },
84: { nameKo: '유칼립트스', wordOfFlowerKo: '추억' },
85: { nameKo: '담쟁이덩굴', wordOfFlowerKo: '굳건한 마음' },
86: { nameKo: '올리브', wordOfFlowerKo: '평화' },
87: { nameKo: '조피아', wordOfFlowerKo: '포옹' },
88: { nameKo: '벚꽃', wordOfFlowerKo: '정신적인 아름다움' },
89: { nameKo: '개나리', wordOfFlowerKo: '희망' },
90: { nameKo: '매화', wordOfFlowerKo: '순수한 마음' },
91: { nameKo: '목련', wordOfFlowerKo: '자연에 대한 사랑' },
92: { nameKo: '홍단', wordOfFlowerKo: '우정' },
93: { nameKo: '모과꽃', wordOfFlowerKo: '신뢰' }
};
/** @param {number} id @param {string} fallbackName @param {string} fallbackWord */
export function getFlowerKo(id, fallbackName, fallbackWord) {
const entry = flowerCatalogKoById[id];
return {
nameKo: entry?.nameKo ?? fallbackName,
wordOfFlowerKo: entry?.wordOfFlowerKo ?? fallbackWord
};
}