sellmate-design-system-react 9.0.0-beta.14 → 9.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -854,6 +854,24 @@ const columns: STableColumn[] = [
854
854
 
855
855
  `0` 은 값이 있는 것이므로 하이픈으로 바꾸지 않는다 — `0원` 그대로 표시한다.
856
856
 
857
+ #### 라벨만으로 뜻이 안 통하는 컬럼은 `helpText`
858
+
859
+ 헤더 라벨은 컬럼 폭 안에 들어가야 해서 짧아진다. **산출 기준·단위·상태 값의 뜻처럼 라벨에 담기지 않는 설명은 `column.helpText` 로 준다** — 라벨 뒤에 도움말 아이콘이 붙고 hover 하면 툴팁이 뜬다. 배열의 각 항목이 한 줄이다. `SKeyValueTable` 의 `field.helpText`, `SSectionHeaderCard` 의 `helpText` 와 같은 것이다.
860
+
861
+ ```tsx
862
+ const columns: STableColumn[] = [
863
+ { name: 'orderCount', label: '주문 수', field: 'orderCount', width: '120px', align: 'right',
864
+ helpText: ['취소·반품을 제외한 확정 주문 수입니다.'],
865
+ format: (v: number) => `${Number(v).toLocaleString()}건` },
866
+ { name: 'status', label: '상태', field: 'status', width: '100px', align: 'center',
867
+ helpText: ['활성: 최근 30일 내 주문 있음', '보관됨: 거래 종료'] },
868
+ ];
869
+ ```
870
+
871
+ - **`renderHeader` 로 헤더를 직접 만들어 `STooltip` 을 붙이지 않는다.** `renderHeader` 는 헤더 전체를 교체하므로 `helpText` 가 무시되고, 아이콘·크기·색·간격을 손으로 맞추게 된다.
872
+ - **모든 컬럼에 달지 않는다.** 라벨로 뜻이 통하는 컬럼(`주문번호`·`상품명`)까지 붙이면 헤더가 아이콘으로 뒤덮여 정작 설명이 필요한 컬럼이 묻힌다.
873
+ - 긴 문장을 넣는 자리가 아니다. 한 줄에 한 가지 사실만 담고, 그 이상은 페이지 상단 안내(`SCallout`)로 뺀다.
874
+
857
875
  ### 3-5. 버튼류
858
876
 
859
877
  | 상황 | 사용 |
@@ -83,6 +83,13 @@ export interface STableColumn {
83
83
  icon?: SIconName;
84
84
  /** 헤더 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
85
85
  iconColor?: SColor;
86
+ /**
87
+ * 헤더 라벨 뒤 도움말 툴팁 (각 항목이 한 줄). `SKeyValueTable` 의 `field.helpText` 와 같은 역할 —
88
+ * 라벨만으로 뜻이 통하지 않는 컬럼의 산출 기준·단위를 설명한다.
89
+ *
90
+ * `renderHeader` 로 헤더를 통째로 교체하면 그리지 않는다 (헤더 전체가 소비 앱 책임).
91
+ */
92
+ helpText?: string[];
86
93
  /**
87
94
  * 셀에 무엇이 들어가는지. 좌우 여백이 여기서 갈린다 — 기본은 `text`(넓게).
88
95
  *
@@ -172,6 +179,7 @@ export interface STableCellContext {
172
179
  - [SIcon](../SIcon)
173
180
  - [SPagination](../SPagination)
174
181
  - [SSelect](../SSelect)
182
+ - [STooltip](../STooltip)
175
183
 
176
184
  ### Graph
177
185
 
@@ -182,5 +190,6 @@ graph TD;
182
190
  STable --> SIcon
183
191
  STable --> SPagination
184
192
  STable --> SSelect
193
+ STable --> STooltip
185
194
  style STable fill:#f9f,stroke:#333,stroke-width:4px
186
195
  ```
@@ -38,6 +38,13 @@ export interface STableColumn {
38
38
  icon?: SIconName;
39
39
  /** 헤더 아이콘 색상. 팔레트 키(`grey_65`, `red_95` …) 또는 임의 CSS 색상 */
40
40
  iconColor?: SColor;
41
+ /**
42
+ * 헤더 라벨 뒤 도움말 툴팁 (각 항목이 한 줄). `SKeyValueTable` 의 `field.helpText` 와 같은 역할 —
43
+ * 라벨만으로 뜻이 통하지 않는 컬럼의 산출 기준·단위를 설명한다.
44
+ *
45
+ * `renderHeader` 로 헤더를 통째로 교체하면 그리지 않는다 (헤더 전체가 소비 앱 책임).
46
+ */
47
+ helpText?: string[];
41
48
  /**
42
49
  * 셀에 무엇이 들어가는지. 좌우 여백이 여기서 갈린다 — 기본은 `text`(넓게).
43
50
  *
@@ -69,6 +69,7 @@ export type STooltipType = 'default' | 'danger' | 'warning' | 'accent';
69
69
  - [SKeyValueTable](../SKeyValueTable)
70
70
  - [SSectionHeaderCard](../SSectionHeaderCard)
71
71
  - [SStepper](../SStepper)
72
+ - [STable](../STable)
72
73
 
73
74
  ### Depends on
74
75
 
@@ -86,5 +87,6 @@ graph TD;
86
87
  SKeyValueTable --> STooltip
87
88
  SSectionHeaderCard --> STooltip
88
89
  SStepper --> STooltip
90
+ STable --> STooltip
89
91
  style STooltip fill:#f9f,stroke:#333,stroke-width:4px
90
92
  ```
package/dist/index.cjs CHANGED
@@ -11466,7 +11466,21 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
11466
11466
  ),
11467
11467
  children: col.renderHeader ? col.renderHeader(col, i) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11468
11468
  col.icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: col.icon, size: 16, color: col.iconColor }),
11469
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: col.label })
11469
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: col.label }),
11470
+ col.helpText && col.helpText.length > 0 && // 라벨이 좁아져 truncate 되더라도 아이콘까지 함께 줄어들면 안 되므로
11471
+ // shrink-0 래퍼로 감싼다 (STooltip 의 className 은 본문 쪽으로 간다).
11472
+ // 아이콘·크기·색은 SKeyValueTable 헤더 도움말과 동일하게 맞춘다.
11473
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(
11474
+ STooltip2,
11475
+ {
11476
+ trigger: "hover",
11477
+ icon: "helpOutline",
11478
+ iconSize: 12,
11479
+ color: "var(--sys-color-fg-success)",
11480
+ placement: "top",
11481
+ message: col.helpText
11482
+ }
11483
+ ) })
11470
11484
  ] })
11471
11485
  }
11472
11486
  ),