Merge branch 'claude/franchise-management-category-search-removal-ca3eaf' into hub
@8793e4d6b9c63dc48d1387511fe73c48be19395c
--- @fox/core/components/fox-description-list/fox-description-list.tsx
+++ @fox/core/components/fox-description-list/fox-description-list.tsx
... | ... | @@ -13,17 +13,25 @@ |
| 13 | 13 |
hidden?: boolean; |
| 14 | 14 |
} |
| 15 | 15 |
|
| 16 |
+export type FoxDescriptionListLayout = "stack" | "inline"; |
|
| 17 |
+ |
|
| 16 | 18 |
export interface FoxDescriptionListProps {
|
| 17 | 19 |
items: FoxDescriptionItem[]; |
| 20 |
+ /** |
|
| 21 |
+ * `stack`(기본)은 쌍을 세로로 쌓고 줄마다 구분선을 긋는다. `inline`은 쌍을 가로 한 줄에 |
|
| 22 |
+ * 나란히 놓는다 — 등록일시·등록자처럼 짧은 이력 값을 요약하는 자리에 쓴다. |
|
| 23 |
+ */ |
|
| 24 |
+ layout?: FoxDescriptionListLayout; |
|
| 18 | 25 |
hidden?: boolean; |
| 19 | 26 |
className?: string; |
| 20 | 27 |
} |
| 21 | 28 |
|
| 22 | 29 |
/** |
| 23 | 30 |
* @fox 조회 목록 — 이름과 값을 한 쌍씩 세로로 쌓는다. 조회 팝업·상세 화면이 쓰는 모양이다. |
| 31 |
+ * `layout="inline"`이면 쌍을 가로로 나란히 놓는다(등록 정보 요약). |
|
| 24 | 32 |
* |
| 25 | 33 |
* 마크업 계약 (React 밖 소비자용): |
| 26 |
- * <dl class="fox-description-list"> |
|
| 34 |
+ * <dl class="fox-description-list [fox-description-list--inline]"> |
|
| 27 | 35 |
* <div class="fox-description-list__item"> |
| 28 | 36 |
* <dt class="fox-description-list__term"><span class="fox-form-label">이름</span></dt> |
| 29 | 37 |
* <dd class="fox-description-list__description">홍길동</dd> |
... | ... | @@ -42,6 +50,7 @@ |
| 42 | 50 |
*/ |
| 43 | 51 |
export function FoxDescriptionList({
|
| 44 | 52 |
items, |
| 53 |
+ layout = "stack", |
|
| 45 | 54 |
hidden = false, |
| 46 | 55 |
className, |
| 47 | 56 |
}: FoxDescriptionListProps) {
|
... | ... | @@ -50,7 +59,13 @@ |
| 50 | 59 |
} |
| 51 | 60 |
|
| 52 | 61 |
return ( |
| 53 |
- <dl className={cx("fox-description-list", className)}>
|
|
| 62 |
+ <dl |
|
| 63 |
+ className={cx(
|
|
| 64 |
+ "fox-description-list", |
|
| 65 |
+ layout === "inline" && "fox-description-list--inline", |
|
| 66 |
+ className |
|
| 67 |
+ )} |
|
| 68 |
+ > |
|
| 54 | 69 |
{items
|
| 55 | 70 |
.filter((item) => !item.hidden) |
| 56 | 71 |
.map((item) => ( |
--- @fox/styles/_fox-description-list.scss
+++ @fox/styles/_fox-description-list.scss
... | ... | @@ -1,7 +1,8 @@ |
| 1 | 1 |
// FoxDescriptionList — 시안: 관리자페이지(QsFVFFUKGH68xAPVkF3SJ9) modal 5227:809의 form-list |
| 2 |
+// inline 변형: FOX PAY_2.0(VqFRgEzMW4CuDLDwa5vYSn) BO-MAL-003 2805:1760의 등록 정보 |
|
| 2 | 3 |
// |
| 3 | 4 |
// 마크업 계약 (React 밖 소비자용): |
| 4 |
-// <dl class="fox-description-list"> |
|
| 5 |
+// <dl class="fox-description-list [fox-description-list--inline]"> |
|
| 5 | 6 |
// <div class="fox-description-list__item"> |
| 6 | 7 |
// <dt class="fox-description-list__term"><span class="fox-form-label">이름</span></dt> |
| 7 | 8 |
// <dd class="fox-description-list__description">홍길동</dd> |
... | ... | @@ -9,6 +10,9 @@ |
| 9 | 10 |
// </dl> |
| 10 | 11 |
// |
| 11 | 12 |
// 줄마다 아래에 구분선이 있다 — 시안이 마지막 줄에도 그어 두었으므로 걷어내지 않는다. |
| 13 |
+// `--inline`은 쌍을 가로 한 줄에 놓고 구분선을 긋지 않는다. 이름은 한 단계 작고 옅게(label-sm · |
|
| 14 |
+// subtle), 값은 body-sm — 시안 실측(12/13px)과 같다. 쌍 사이 60px는 토큰에 없어 gap-11(64px)로 |
|
| 15 |
+// 맞춘다. |
|
| 12 | 16 |
// |
| 13 | 17 |
// 토큰이 아닌 값: |
| 14 | 18 |
// - line-height / letter-spacing: 시안 텍스트 스타일(body/md)의 값이나 Figma가 변수로 |
... | ... | @@ -49,4 +53,26 @@ |
| 49 | 53 |
line-height: 1.5; |
| 50 | 54 |
letter-spacing: -0.025em; |
| 51 | 55 |
} |
| 56 |
+ |
|
| 57 |
+ &--inline {
|
|
| 58 |
+ flex-flow: row wrap; |
|
| 59 |
+ gap: fox.gap(11); |
|
| 60 |
+ } |
|
| 61 |
+ |
|
| 62 |
+ &--inline &__item {
|
|
| 63 |
+ inline-size: auto; |
|
| 64 |
+ gap: fox.gap(2); |
|
| 65 |
+ padding-block: 0; |
|
| 66 |
+ border-block-end: 0; |
|
| 67 |
+ } |
|
| 68 |
+ |
|
| 69 |
+ &--inline &__term .fox-form-label {
|
|
| 70 |
+ color: fox.color(font-neutral-subtle); |
|
| 71 |
+ font-size: fox.font-size(label-sm); |
|
| 72 |
+ } |
|
| 73 |
+ |
|
| 74 |
+ &--inline &__description {
|
|
| 75 |
+ inline-size: auto; |
|
| 76 |
+ font-size: fox.font-size(body-sm); |
|
| 77 |
+ } |
|
| 52 | 78 |
} |
--- app/(protected)/(basic)/system/merchant-details/[frcsNo]/_components/merchant-detail-form.tsx
+++ app/(protected)/(basic)/system/merchant-details/[frcsNo]/_components/merchant-detail-form.tsx
... | ... | @@ -290,6 +290,7 @@ |
| 290 | 290 |
{isEdit && (
|
| 291 | 291 |
<FoxCard size="lg" title="등록 정보" className={styles.section}>
|
| 292 | 292 |
<FoxDescriptionList |
| 293 |
+ layout="inline" |
|
| 293 | 294 |
items={[
|
| 294 | 295 |
{ key: 'registeredAt', term: '등록일시', description: formatOptionalValue(detail.registeredAt) },
|
| 295 | 296 |
{ key: 'registeredBy', term: '등록자', description: formatOptionalValue(detail.registeredBy) },
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?