sellmate-design-system-react 9.0.0-beta.61 → 9.0.0-beta.62
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 +27 -7
- package/dist/components/SBarChart/README.md +15 -0
- package/dist/components/SBarChart/SBarChart.d.ts +15 -1
- package/dist/components/SBarChart/index.d.ts +1 -1
- package/dist/components/SCallout/README.md +1 -0
- package/dist/components/SCallout/SCallout.d.ts +6 -1
- package/dist/components/SDonutChart/README.md +2 -4
- package/dist/components/SDonutChart/SDonutChart.d.ts +9 -10
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SLineChart/README.md +15 -0
- package/dist/components/SLineChart/SLineChart.d.ts +15 -1
- package/dist/components/SLineChart/index.d.ts +1 -1
- package/dist/components/SLineChart/lineChart.config.d.ts +8 -5
- package/dist/components/SMeatballButton/README.md +67 -0
- package/dist/components/SMeatballButton/SMeatballButton.d.ts +36 -0
- package/dist/components/SMeatballButton/index.d.ts +1 -0
- package/dist/components/SPieChart/README.md +1 -0
- package/dist/components/SPieChart/SPieChart.d.ts +6 -1
- package/dist/index.cjs +329 -153
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +328 -153
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/radial.d.ts +22 -11
- package/dist/lib/chart/tooltip.d.ts +18 -1
- package/dist/lib/dropdown-menu.d.ts +19 -0
- package/dist/llms-full.txt +126 -11
- package/dist/llms.txt +29 -9
- package/dist/styles.css +6 -3
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -39,13 +39,13 @@
|
|
|
39
39
|
|
|
40
40
|
| 분류 | 컴포넌트 |
|
|
41
41
|
| --- | --- |
|
|
42
|
-
| **버튼·링크** | `SButton` `SGhostButton` `SDropdownButton` `STextLink` `SSwitch` `SToggle` |
|
|
42
|
+
| **버튼·링크** | `SButton` `SGhostButton` `SMeatballButton`(⋯ 로 '더 보기' 메뉴를 여는 아이콘 버튼) `SDropdownButton` `STextLink` `SSwitch` `SToggle` |
|
|
43
43
|
| **입력 (폼)** | `SForm` `SField` `SInput` `SChatInput`(대화 입력창) `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SRadioCard` `SRadioCardGroup` `SChip` `SChipInput` `SBarcodeInput` `SFilePicker` |
|
|
44
44
|
| **날짜·시간** | `SCalendar` `SCalendarBoard`(한 달치 일정 판) `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` |
|
|
45
45
|
| **표·목록** | `SChatMessage`(대화의 메시지 한 건) `SChatAttachedFile`(입력창 위, 아직 보내지 않은 첨부 한 칸) `SChatFile`(대화 흐름에 선, 보낸 파일 한 칸) `SChatSystemMessage`(대화 흐름 가운데 서는 시스템 안내) `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SListItem` `SExpansionList` `SDraggableList` `SDraggableItem` `STree` |
|
|
46
46
|
| **레이아웃** | `SLayout` `SGnb` `SGnbSystem` `SSystemActionButton`(GNB system 패널에 한 줄씩 쌓는 액션 행 — 버튼 고르기는 §3-5) `SAccountListBox`(계정 행을 눌러 뜨는 계정 패널) `SLauncherListBox`(런처 버튼을 눌러 뜨는 서비스 목록) `SPage` `SPageHeader`(페이지 제목 영역 — `SLayout` 안에서 `SPage` 앞에 둔다) `SSectionHeaderCard` `SCard` `SLoginCard`(통합 계정 로그인 화면의 카드) `SDivider` `SSplitter` `SScrollArea` `SExpansionItem` |
|
|
47
47
|
| **내비게이션** | `STabs` `SPagination` `SStepper` |
|
|
48
|
-
| **차트** | `SBarChart`(막대 그래프 — 항목끼리 크기를 견준다. `stacked` 로 항목 안의 구성까지) `SLineChart`(꺾은선 그래프 — 순서가 있는 항목의 추이를 본다. `area` 로 크기까지, `stacked` 로 구성까지) `SPieChart`(원그래프 — 한 시점의 전체를 몇 개의 몫으로 나눈다) `SDonutChart`(도넛 그래프 —
|
|
48
|
+
| **차트** | `SBarChart`(막대 그래프 — 항목끼리 크기를 견준다. `stacked` 로 항목 안의 구성까지) `SLineChart`(꺾은선 그래프 — 순서가 있는 항목의 추이를 본다. `area` 로 크기까지, `stacked` 로 구성까지) `SPieChart`(원그래프 — 한 시점의 전체를 몇 개의 몫으로 나눈다) `SDonutChart`(도넛 그래프 — 가운데가 빈 원그래프. 구멍에 글자를 두지 않는다) |
|
|
49
49
|
| **표시·상태** | `STag` `SBadge` `SIcon` `SLogo`(브랜드 로고를 아이콘처럼 — size 는 높이다) `SImage` `SCallout` `SGuide` |
|
|
50
50
|
| **진행·로딩** | `SLinearProgress` `SCircleProgress` `SLoadingContainer` `SLoadingModal` |
|
|
51
51
|
| **오버레이** | `STooltip` `SPopover` `SPopup` `SDrawer` `SPortal` |
|
|
@@ -72,7 +72,7 @@ AI 에이전트는 코드를 생성하기 전에 이 목록을 반드시 지킨
|
|
|
72
72
|
|
|
73
73
|
| 금지 | 대신 사용 |
|
|
74
74
|
| --- | --- |
|
|
75
|
-
| `<button>` | `SButton`, `SGhostButton`, `SDropdownButton`, `STextLink` |
|
|
75
|
+
| `<button>` | `SButton`, `SGhostButton`, `SMeatballButton`, `SDropdownButton`, `STextLink` |
|
|
76
76
|
| `<input type="text/password/...">` | `SInput` |
|
|
77
77
|
| `<input type="search">` | `SSearchInput` |
|
|
78
78
|
| `<input type="number">` | `SNumberInput` |
|
|
@@ -168,7 +168,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
168
168
|
| --- | --- | --- |
|
|
169
169
|
| **셸** | 앱 전체 뼈대. 페이지가 바뀌어도 남는다 | `SLayout` `SGnb` `SGnbSystem`(GNB 맨 아래 판 · 전폭 상단바 오른쪽 끝) `SPage` `SPageHeader`(`SLayout` 안에서 `SPage` 앞에 둔다) |
|
|
170
170
|
| **블록** | `SPage` 의 직계 자식. 페이지를 세로로 쌓는 단위 | `SSectionHeaderCard` `SCard` `SChatMessage` `SChatSystemMessage` `SChatInput` `SLoginCard`(유일하게 `SPage` 밖에 선다 — 로그인 화면 자체가 자기 자리다, §4-6) `SForm` `SSplitter` `SScrollArea` `SCalendarBoard` `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SExpansionList` `SDraggableList` `STree` `SCallout` `SBarChart` `SLineChart` `SPieChart` `SDonutChart` `STabs` `SStepper` `SPagination` `SDivider` |
|
|
171
|
-
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SDropdownButton` `SSystemActionButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SRadioCard` `SRadioCardGroup` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SChatAttachedFile` `SChatFile` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
171
|
+
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SMeatballButton` `SDropdownButton` `SSystemActionButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SRadioCard` `SRadioCardGroup` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SChatAttachedFile` `SChatFile` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
172
172
|
| **인라인** | 텍스트 흐름·셀·라벨 안에 섞인다. 혼자 블록이 되지 않는다 | `STag` `SBadge` `SIcon` `SLogo` `STextLink` `SChip` |
|
|
173
173
|
| **레이어** | 문서 흐름 **밖**에 떠서 그려진다. 어느 층에서 띄우든 레이아웃에 영향이 없다 | `SModal` `SActionModal` `SConfirmModal` `SPopup` `SDrawer` `SPopover` `STooltip` `SPortal` `SAccountListBox`(계정 행에 붙어 뜬다 — 직접 띄우지 않는다) `SLauncherListBox`(런처 버튼에 붙어 뜬다 — 직접 띄우지 않는다) `SToast` `SLoadingModal` `SLoadingContainer` `SGuide` |
|
|
174
174
|
|
|
@@ -325,7 +325,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
325
325
|
| `SCheckbox` | **`gap-sd-24`** | `gap-sd-8` |
|
|
326
326
|
| `SRadio` | **`gap-sd-24`** | `gap-sd-8` |
|
|
327
327
|
| `STextLink` | **`gap-sd-16`**(sm) / **`gap-sd-24`**(md·lg) | `gap-sd-4` |
|
|
328
|
-
| `SGhostButton` | `gap-sd-4` | `gap-sd-4` |
|
|
328
|
+
| `SGhostButton` · `SMeatballButton` | `gap-sd-4` | `gap-sd-4` |
|
|
329
329
|
| `SButton` | `gap-sd-8` (xs·sm·md) / **`gap-sd-12`**(lg) | 〃 |
|
|
330
330
|
| `STag` | `gap-sd-8` | `gap-sd-8` |
|
|
331
331
|
| `SToggle` | `gap-sd-8` | `gap-sd-8` |
|
|
@@ -571,7 +571,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
571
571
|
| 여러 항목의 추이를 **합계와 함께** 보여준다 (채널별 매출이 쌓여 전체가 되는 흐름) | `SLineChart stacked area` | 합계가 뜻을 갖는 값일 때만 쌓는다. 음수가 섞이거나 더해서 뜻이 없는 값(비율·평균)은 쌓지 말고 겹쳐 그린다 |
|
|
572
572
|
| 항목의 크기와 **그 안의 구성**을 함께 보여준다 (주문 상태별 내역, 유입 경로별 몫) | `SBarChart stacked` | 계열끼리 견주는 것이 목적이면 `stacked` 없이 나란히 세운다. 더해서 뜻이 없는 값(비율·평균)은 쌓지 않는다 — 합계 라벨이 거짓말이 된다 |
|
|
573
573
|
| 한 시점의 **전체를 몇 개의 몫으로** 나눠 보여준다 (채널별 매출 비중, 회원 등급 구성) | `SPieChart` | 조각이 대여섯 개를 넘거나 몫끼리 크기를 견주는 것이 목적이면 `SBarChart` — 사람은 각도보다 길이를 정확히 견준다. 순서가 있는 추이(월별)는 몫이 아니라 흐름이라 `SLineChart`. 0·음수는 그려지지 않으므로 증감은 원으로 나타내지 않는다. 조각은 큰 순으로 넘긴다. 폭은 부모를 따르고 그림은 그 폭의 정사각형이다 — 폭이 필요하면 `className` 으로 폭만 주고 높이는 주지 않는다 (`SDonutChart` 도 같다) |
|
|
574
|
-
|
|
|
574
|
+
| 한 시점의 전체를 몫으로 나누되 **가운데가 빈 고리 모양**으로 보여준다 (시안이 도넛일 때) | `SDonutChart` | 쓰임·데이터 규칙은 `SPieChart` 와 같고 모양만 다르다 — 시안이 정한 쪽을 쓴다. **구멍에 합계·라벨을 겹쳐 올리지 않는다.** 합계 같은 값이 필요하면 차트 바깥(카드 제목·요약 값)에 적는다. 여러 기간에 걸친 구성 변화는 원을 여러 개 늘어놓지 말고 `SBarChart stacked` |
|
|
575
575
|
| 표 위에 건수 요약과 액션을 얹는다 | `STableBar` | 표의 이름도 여기 `title` 슬롯에 넣는다 — 제목만으로 블록을 따로 세우지 않는다. §4-2 |
|
|
576
576
|
| 상태·분류를 라벨로 찍는다 | `STag` | §3-1 |
|
|
577
577
|
| 색 점만으로 상태를 찍는다 | `SBadge` | §3-1 |
|
|
@@ -586,6 +586,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
586
586
|
| --- | --- | --- |
|
|
587
587
|
| 라벨이 있는 일반 액션을 준다 | `SButton` | §3-5 |
|
|
588
588
|
| 아이콘 하나로 뜻이 통하는 부가 조작을 준다 | `SGhostButton` | §3-5-5 |
|
|
589
|
+
| 자리가 좁아 부가 조작 여러 개를 ⋯ 뒤 메뉴로 접어 둔다 | `SMeatballButton` | §3-5-5 |
|
|
589
590
|
| 한 버튼에 여러 선택지를 매단다 | `SDropdownButton` | §3-5-4 |
|
|
590
591
|
| GNB system 패널에서 한 줄짜리 행 액션을 준다 | `SSystemActionButton` | §3-5-7 |
|
|
591
592
|
|
|
@@ -685,7 +686,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
685
686
|
| --- | --- |
|
|
686
687
|
| `default` | 흰 면 위 (`SPage background="frame"`) — 옅은 회색 면이라 페이지와 구분된다 |
|
|
687
688
|
| `white` | 회색 면 위 (`background="neutral"`·`"screen"`) — 그 위에서는 `default` 가 배경에 묻힌다 |
|
|
688
|
-
| `danger` | 경고. 좌측에 "주의사항" 타이틀이 붙으므로 단순 안내에는 쓰지
|
|
689
|
+
| `danger` | 경고. 좌측에 "주의사항" 타이틀이 붙으므로 단순 안내에는 쓰지 않는다. 주변에 이미 경고 맥락(제목 등)이 있어 타이틀이 중복되면 `showTitle={false}` 로 타이틀만 뺀다 — 경고 면은 유지된다 |
|
|
689
690
|
|
|
690
691
|
### 3-3. 플로팅/오버레이류
|
|
691
692
|
|
|
@@ -1208,6 +1209,7 @@ tableRef.current.scrollToRow(row); // 복원
|
|
|
1208
1209
|
| 일반 액션 | `SButton` (`color`: `primary` / `secondary` / `neutral` / `danger`, `outline`, `size`: xs~md) |
|
|
1209
1210
|
| **삭제 등 파괴적 액션** | **`SButton color="danger"`** 또는 **`color="danger" outline`** (아래 3-5-3) |
|
|
1210
1211
|
| **아이콘 하나로 뜻이 통하는 부가 조작** | **`SGhostButton`** — 라벨이 없는 아이콘 전용 버튼 (아래 3-5-5) |
|
|
1212
|
+
| **부가 조작 여러 개를 ⋯ 메뉴로 접기** | **`SMeatballButton`** — ⋯ 아이콘 버튼 + `SDropdownButton` 과 같은 메뉴 (아래 3-5-5) |
|
|
1211
1213
|
| 본문 속 이동 링크 | `STextLink` |
|
|
1212
1214
|
| 메인 액션 + 부가 메뉴 | `SDropdownButton` |
|
|
1213
1215
|
| **GNB system 패널의 한 줄 액션** | **`SSystemActionButton`** — 행 전체가 버튼인 표면형 (아래 3-5-7) |
|
|
@@ -1321,6 +1323,24 @@ tableRef.current.scrollToRow(row); // 복원
|
|
|
1321
1323
|
❌ <SGhostButton icon="download" ariaLabel="엑셀 다운로드" /> // 목록의 주 액션 → SButton
|
|
1322
1324
|
```
|
|
1323
1325
|
|
|
1326
|
+
##### `SMeatballButton` — ⋯ 뒤에 메뉴를 접어 둘 때
|
|
1327
|
+
|
|
1328
|
+
자리가 좁아 부가 조작을 하나하나 아이콘으로 늘어놓을 수 없을 때, **⋯ 하나로 접고 누르면 메뉴를 띄운다.** 버튼의 크기·색·hover·툴팁은 `SGhostButton` 과, 메뉴 모양은 `SDropdownButton` 과 같다.
|
|
1329
|
+
|
|
1330
|
+
- **메뉴는 컴포넌트가 띄운다.** `items` 를 넘기고 선택은 `onItemClick(value)` 로 받는다. 메뉴를 따로 만들어 붙이지 않고, 열림 상태(`aria-expanded`)도 직접 넣지 않는다.
|
|
1331
|
+
- **`SGhostButton icon="etc"` 로 직접 만들지 않는다.** '더 보기' 메뉴는 항상 `SMeatballButton` 이다.
|
|
1332
|
+
- **`intent` 는 `default` / `inverse` 뿐이다.** ⋯ 는 조작이 아니라 메뉴를 여는 것이므로 `action`·`danger` 색을 받지 않는다. 어두운 배경 위에서만 `inverse`.
|
|
1333
|
+
- 툴팁·`ariaLabel` 은 기본 문구가 들어 있어 **주지 않아도 된다.** 한 화면에 ⋯ 가 여러 개라 무엇의 메뉴인지 구분해야 할 때만 `tooltipText` 를 바꾼다(`ariaLabel` 이 따라간다).
|
|
1334
|
+
- 메인 액션에 변형 동작을 곁들이는 것이면 `SMeatballButton` 이 아니라 `SDropdownButton split`(§3-5-4)이다.
|
|
1335
|
+
|
|
1336
|
+
```tsx
|
|
1337
|
+
✅ <SMeatballButton size="xs" // 행 끝 부가 조작 묶음
|
|
1338
|
+
items={[{ value: 'copy', label: '복제', icon: 'copy' }, { value: 'remove', label: '삭제', icon: 'remove' }]}
|
|
1339
|
+
onItemClick={v => handleRowAction(row, v)} />
|
|
1340
|
+
✅ <SMeatballButton intent="inverse" items={items} onItemClick={onAction} /> // 어두운 배경 위
|
|
1341
|
+
❌ <SGhostButton icon="etc" ariaLabel="더 보기" onClick={openMyMenu} /> // 직접 조립 → SMeatballButton
|
|
1342
|
+
```
|
|
1343
|
+
|
|
1324
1344
|
#### 3-5-6. 그 밖
|
|
1325
1345
|
|
|
1326
1346
|
- 라벨은 **동사(+목적어)** — `저장` · `적치 지시` · `송장 재출력`
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
| `showTooltip?` | `boolean` | `true` | 막대에 마우스를 올리면 값 상자를 띄운다 |
|
|
24
24
|
| `formatValue?` | `(value: number) => string` | `defaultFormat` | 값 표시 형식 |
|
|
25
25
|
| `height?` | `number \| string` | — | 차트 높이. **아래 축 텍스트까지 포함한 값**이다 — 그림은 그만큼 줄어든다 |
|
|
26
|
+
| `tooltipFooter?` | `(category: SBarChartTooltipCategory) => ReactNode` | — | 툴팁의 값 아래에 덧붙일 내용. 짚은 항목을 받아 그린다 — 계열 값만으로 모자란 맥락 (합계, 전월 대비 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다 |
|
|
26
27
|
| `className?` | `string` | — | |
|
|
27
28
|
| `style?` | `CSSProperties` | — | |
|
|
28
29
|
|
|
@@ -103,3 +104,17 @@ export interface SBarChartPoint {
|
|
|
103
104
|
}
|
|
104
105
|
```
|
|
105
106
|
|
|
107
|
+
### SBarChartTooltipCategory
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
/** 툴팁 하단(`tooltipFooter`)이 받는 짚은 항목. */
|
|
111
|
+
export interface SBarChartTooltipCategory {
|
|
112
|
+
/** 카테고리 인덱스 */
|
|
113
|
+
categoryIndex: number;
|
|
114
|
+
/** 카테고리 이름 */
|
|
115
|
+
name: string;
|
|
116
|
+
/** 툴팁에 값이 뜬 지점들 — 값이 없는 계열은 빠진다 */
|
|
117
|
+
points: SBarChartPoint[];
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CSSProperties } from 'react';
|
|
1
|
+
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
2
|
/** 막대가 자라는 방향. */
|
|
3
3
|
export type SBarChartDirection = 'vertical' | 'horizontal';
|
|
4
4
|
/** 범례 위치. */
|
|
@@ -25,6 +25,15 @@ export interface SBarChartPoint {
|
|
|
25
25
|
/** 그 지점의 값 */
|
|
26
26
|
value: number;
|
|
27
27
|
}
|
|
28
|
+
/** 툴팁 하단(`tooltipFooter`)이 받는 짚은 항목. */
|
|
29
|
+
export interface SBarChartTooltipCategory {
|
|
30
|
+
/** 카테고리 인덱스 */
|
|
31
|
+
categoryIndex: number;
|
|
32
|
+
/** 카테고리 이름 */
|
|
33
|
+
name: string;
|
|
34
|
+
/** 툴팁에 값이 뜬 지점들 — 값이 없는 계열은 빠진다 */
|
|
35
|
+
points: SBarChartPoint[];
|
|
36
|
+
}
|
|
28
37
|
/** 한 계열 — 범례 한 줄에 대응한다. */
|
|
29
38
|
export interface SBarChartSeries {
|
|
30
39
|
/** 범례·툴팁에 표시할 이름 */
|
|
@@ -69,6 +78,11 @@ export interface SBarChartProps {
|
|
|
69
78
|
height?: number | string;
|
|
70
79
|
/** 막대를 눌렀을 때 */
|
|
71
80
|
onBarClick?: (point: SBarChartPoint) => void;
|
|
81
|
+
/**
|
|
82
|
+
* 툴팁의 값 아래에 덧붙일 내용. 짚은 항목을 받아 그린다 — 계열 값만으로 모자란 맥락
|
|
83
|
+
* (합계, 전월 대비 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다
|
|
84
|
+
*/
|
|
85
|
+
tooltipFooter?: (category: SBarChartTooltipCategory) => ReactNode;
|
|
72
86
|
className?: string;
|
|
73
87
|
style?: CSSProperties;
|
|
74
88
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SBarChart, type SBarChartProps, type SBarChartSeries, type SBarChartPoint, type SBarChartPalette, type SBarChartColor, type SBarChartDirection, type SBarChartLegendPosition, } from './SBarChart';
|
|
1
|
+
export { SBarChart, type SBarChartProps, type SBarChartSeries, type SBarChartPoint, type SBarChartTooltipCategory, type SBarChartPalette, type SBarChartColor, type SBarChartDirection, type SBarChartLegendPosition, } from './SBarChart';
|
|
2
2
|
export { BAR_SIZE_MIN, BAR_SIZE_MAX, BAR_GAP } from './barChart.config';
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
| Prop | Type | Default | Description |
|
|
10
10
|
|------|------|---------|-------------|
|
|
11
11
|
| `type?` | `SCalloutType` | `'default'` | 콜아웃 타입 (색상·아이콘·타이틀 결정). - `default` — 옅은 회색 면. 흰 페이지(`background="frame"`) 위의 기본 안내. - `white` — 같은 안내인데 배경만 흰 면. 회색 면(`neutral`·`screen`) 위에서 default 가 묻힐 때. - `danger` — 좌측에 주의사항 타이틀이 붙는 경고. |
|
|
12
|
+
| `showTitle?` | `boolean` | `true` | `danger` 좌측의 주의사항 타이틀(아이콘+라벨) 표시 여부. 기본 `true`. `false` 면 타이틀만 빠지고 danger 의 면·테두리·본문색은 그대로다. 다른 타입에는 영향이 없다. |
|
|
12
13
|
| `message?` | `SCalloutMessage[]` | `[]` | 표시할 메시지 목록 (배열 중첩으로 depth 표현). 각 문자열은 인라인 HTML(`<b>`, `<a>` 등)을 허용하며 sanitizeInlineHtml 로 살균 후 렌더된다. |
|
|
13
14
|
| `children?` | `ReactNode` | — | message 대신 직접 본문을 넣을 때 |
|
|
14
15
|
| `className?` | `string` | — | |
|
|
@@ -10,6 +10,11 @@ export interface SCalloutProps {
|
|
|
10
10
|
* - `danger` — 좌측에 주의사항 타이틀이 붙는 경고.
|
|
11
11
|
*/
|
|
12
12
|
type?: SCalloutType;
|
|
13
|
+
/**
|
|
14
|
+
* `danger` 좌측의 주의사항 타이틀(아이콘+라벨) 표시 여부. 기본 `true`.
|
|
15
|
+
* `false` 면 타이틀만 빠지고 danger 의 면·테두리·본문색은 그대로다. 다른 타입에는 영향이 없다.
|
|
16
|
+
*/
|
|
17
|
+
showTitle?: boolean;
|
|
13
18
|
/**
|
|
14
19
|
* 표시할 메시지 목록 (배열 중첩으로 depth 표현).
|
|
15
20
|
* 각 문자열은 인라인 HTML(`<b>`, `<a>` 등)을 허용하며 sanitizeInlineHtml 로 살균 후 렌더된다.
|
|
@@ -22,7 +27,7 @@ export interface SCalloutProps {
|
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* SCallout — sd-callout 포팅.
|
|
25
|
-
* default/white/danger 타입, 중첩 리스트(불릿은 span으로 렌더), danger는 좌측 타이틀
|
|
30
|
+
* default/white/danger 타입, 중첩 리스트(불릿은 span으로 렌더), danger는 좌측 타이틀 표시(showTitle 로 끌 수 있다).
|
|
26
31
|
* 색상은 `--cmp-callout-*` 토큰 참조(white 만 예외 — SURFACE 주석 참고).
|
|
27
32
|
* message 각 항목은 sanitizeInlineHtml 로 살균한 뒤 innerHTML 로 렌더한다 (원본 sd-callout 과 동일).
|
|
28
33
|
*/
|
|
@@ -11,14 +11,12 @@
|
|
|
11
11
|
| `data` | `SDonutChartSlice[]` | — | 조각 목록. 주는 순서대로 12시에서 시계 방향으로 그린다 — 보통 큰 순으로 준다 |
|
|
12
12
|
| `palette?` | `SDonutChartPalette` | `'multi'` | 색 팔레트. `custom` 일 때만 `colors` 를 본다 |
|
|
13
13
|
| `colors?` | `SDonutChartColor[]` | — | `palette='custom'` 에서 쓸 색 이름을 조각 순서대로. 조각보다 짧으면 앞에서부터 순환하고, 비어 있으면 `multi` 로 그린다 |
|
|
14
|
-
| `centerLabel?` | `ReactNode` | — | 가운데 윗줄에 적을 이름 (예: "총 주문") |
|
|
15
|
-
| `centerValue?` | `ReactNode` | — | 가운데 큰 값. 주지 않으면 그려진 조각의 합계를 `formatValue` 로 적는다 |
|
|
16
|
-
| `hideCenter?` | `boolean` | `false` | 가운데를 비운다 — 합계 대신 범례·툴팁만으로 읽게 할 때 |
|
|
17
14
|
| `showValueLabel?` | `boolean` | `false` | 고리 위에 몫(%)을 적는다. 좁은 조각은 글자가 넘치므로 적지 않는다 |
|
|
18
15
|
| `showLegend?` | `boolean` | `true` | 범례를 보인다 |
|
|
19
16
|
| `legendPosition?` | `SDonutChartLegendPosition` | `'top'` | 범례 위치 |
|
|
20
17
|
| `showTooltip?` | `boolean` | `true` | 조각에 마우스를 올리면 값 상자를 띄운다 |
|
|
21
|
-
| `formatValue?` | `(value: number) => string` |
|
|
18
|
+
| `formatValue?` | `(value: number) => string` | — | 값 표시 형식 |
|
|
19
|
+
| `tooltipFooter?` | `(slice: SDonutChartSlicePoint) => ReactNode` | — | 툴팁의 값 아래에 덧붙일 내용. 짚은 조각을 받아 그린다 — 몫·값만으로 모자란 맥락 (전월 대비, 건수 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다 |
|
|
22
20
|
| `className?` | `string` | — | 폭은 기본 100% 다. 폭을 정하려면 여기에 준다 — 그림은 그 폭의 정사각형이 된다 |
|
|
23
21
|
| `style?` | `CSSProperties` | — | |
|
|
24
22
|
|
|
@@ -36,12 +36,6 @@ export interface SDonutChartProps {
|
|
|
36
36
|
palette?: SDonutChartPalette;
|
|
37
37
|
/** `palette='custom'` 에서 쓸 색 이름을 조각 순서대로. 조각보다 짧으면 앞에서부터 순환하고, 비어 있으면 `multi` 로 그린다 */
|
|
38
38
|
colors?: SDonutChartColor[];
|
|
39
|
-
/** 가운데 윗줄에 적을 이름 (예: "총 주문") */
|
|
40
|
-
centerLabel?: ReactNode;
|
|
41
|
-
/** 가운데 큰 값. 주지 않으면 그려진 조각의 합계를 `formatValue` 로 적는다 */
|
|
42
|
-
centerValue?: ReactNode;
|
|
43
|
-
/** 가운데를 비운다 — 합계 대신 범례·툴팁만으로 읽게 할 때 */
|
|
44
|
-
hideCenter?: boolean;
|
|
45
39
|
/** 고리 위에 몫(%)을 적는다. 좁은 조각은 글자가 넘치므로 적지 않는다 */
|
|
46
40
|
showValueLabel?: boolean;
|
|
47
41
|
/** 범례를 보인다 */
|
|
@@ -50,10 +44,15 @@ export interface SDonutChartProps {
|
|
|
50
44
|
legendPosition?: SDonutChartLegendPosition;
|
|
51
45
|
/** 조각에 마우스를 올리면 값 상자를 띄운다 */
|
|
52
46
|
showTooltip?: boolean;
|
|
53
|
-
/** 값 표시 형식
|
|
47
|
+
/** 값 표시 형식 */
|
|
54
48
|
formatValue?: (value: number) => string;
|
|
55
49
|
/** 조각을 눌렀을 때 */
|
|
56
50
|
onSliceClick?: (slice: SDonutChartSlicePoint) => void;
|
|
51
|
+
/**
|
|
52
|
+
* 툴팁의 값 아래에 덧붙일 내용. 짚은 조각을 받아 그린다 — 몫·값만으로 모자란 맥락
|
|
53
|
+
* (전월 대비, 건수 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다
|
|
54
|
+
*/
|
|
55
|
+
tooltipFooter?: (slice: SDonutChartSlicePoint) => ReactNode;
|
|
57
56
|
/** 폭은 기본 100% 다. 폭을 정하려면 여기에 준다 — 그림은 그 폭의 정사각형이 된다 */
|
|
58
57
|
className?: string;
|
|
59
58
|
style?: CSSProperties;
|
|
@@ -61,11 +60,11 @@ export interface SDonutChartProps {
|
|
|
61
60
|
/**
|
|
62
61
|
* SDonutChart — 도넛 그래프.
|
|
63
62
|
*
|
|
64
|
-
* `SPieChart` 와 같이 **한 시점의 전체를 몫으로 나눈 것**을
|
|
65
|
-
*
|
|
63
|
+
* 가운데가 빈 원그래프. `SPieChart` 와 같이 **한 시점의 전체를 몫으로 나눈 것**을 보여준다.
|
|
64
|
+
* 가운데 구멍에는 글자를 두지 않는다 — 합계 같은 값은 차트 바깥에 적는다.
|
|
66
65
|
* 조각이 대여섯 개를 넘거나 몫끼리 견주는 것이 목적이면 `SBarChart` 가 맞다.
|
|
67
66
|
*
|
|
68
67
|
* 폭은 부모를 따르고(기본 100%), 그림은 그 폭을 한 변으로 하는 정사각형이다.
|
|
69
|
-
* 고리
|
|
68
|
+
* 구멍과 고리 두께도 폭에 비례해 늘고 준다.
|
|
70
69
|
*/
|
|
71
70
|
export declare const SDonutChart: import("react").ForwardRefExoticComponent<SDonutChartProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -57,6 +57,7 @@ export type SGhostButtonIntent = 'default' | 'danger' | 'action' | 'subAction' |
|
|
|
57
57
|
- [SGnb](../SGnb)
|
|
58
58
|
- [SGuide](../SGuide)
|
|
59
59
|
- [SInput](../SInput)
|
|
60
|
+
- [SMeatballButton](../SMeatballButton)
|
|
60
61
|
- [SModalContainer](../SModalContainer)
|
|
61
62
|
- [SOverlayHeader](../SOverlayHeader)
|
|
62
63
|
- [SPage](../SPage)
|
|
@@ -92,6 +93,7 @@ graph TD;
|
|
|
92
93
|
SGnb --> SGhostButton
|
|
93
94
|
SGuide --> SGhostButton
|
|
94
95
|
SInput --> SGhostButton
|
|
96
|
+
SMeatballButton --> SGhostButton
|
|
95
97
|
SModalContainer --> SGhostButton
|
|
96
98
|
SOverlayHeader --> SGhostButton
|
|
97
99
|
SPage --> SGhostButton
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
| `showTooltip?` | `boolean` | `true` | 항목에 마우스를 올리면 값 상자를 띄운다 |
|
|
25
25
|
| `formatValue?` | `(value: number) => string` | `defaultFormat` | 값 표시 형식 |
|
|
26
26
|
| `height?` | `number \| string` | — | 차트 높이. **아래 축 텍스트까지 포함한 값**이다 — 그림은 그만큼 줄어든다 |
|
|
27
|
+
| `tooltipFooter?` | `(category: SLineChartTooltipCategory) => ReactNode` | — | 툴팁의 값 아래에 덧붙일 내용. 짚은 항목을 받아 그린다 — 계열 값만으로 모자란 맥락 (합계, 전월 대비 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다 |
|
|
27
28
|
| `className?` | `string` | — | |
|
|
28
29
|
| `style?` | `CSSProperties` | — | |
|
|
29
30
|
|
|
@@ -104,3 +105,17 @@ export interface SLineChartPoint {
|
|
|
104
105
|
}
|
|
105
106
|
```
|
|
106
107
|
|
|
108
|
+
### SLineChartTooltipCategory
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
/** 툴팁 하단(`tooltipFooter`)이 받는 짚은 항목. */
|
|
112
|
+
export interface SLineChartTooltipCategory {
|
|
113
|
+
/** 카테고리 인덱스 */
|
|
114
|
+
categoryIndex: number;
|
|
115
|
+
/** 카테고리 이름 */
|
|
116
|
+
name: string;
|
|
117
|
+
/** 툴팁에 값이 뜬 지점들 — 값이 없는 계열은 빠진다. 누적이어도 각 계열이 제 몫으로 가진 값이다 */
|
|
118
|
+
points: SLineChartPoint[];
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CSSProperties } from 'react';
|
|
1
|
+
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
2
|
/** 점과 점을 잇는 방식. */
|
|
3
3
|
export type SLineChartCurve = 'linear' | 'smooth';
|
|
4
4
|
/** 범례 위치. */
|
|
@@ -25,6 +25,15 @@ export interface SLineChartPoint {
|
|
|
25
25
|
/** 그 지점의 값. 누적이어도 **그 계열이 제 몫으로 가진 값**이다 */
|
|
26
26
|
value: number;
|
|
27
27
|
}
|
|
28
|
+
/** 툴팁 하단(`tooltipFooter`)이 받는 짚은 항목. */
|
|
29
|
+
export interface SLineChartTooltipCategory {
|
|
30
|
+
/** 카테고리 인덱스 */
|
|
31
|
+
categoryIndex: number;
|
|
32
|
+
/** 카테고리 이름 */
|
|
33
|
+
name: string;
|
|
34
|
+
/** 툴팁에 값이 뜬 지점들 — 값이 없는 계열은 빠진다. 누적이어도 각 계열이 제 몫으로 가진 값이다 */
|
|
35
|
+
points: SLineChartPoint[];
|
|
36
|
+
}
|
|
28
37
|
/** 한 계열 — 선 하나, 범례 한 줄에 대응한다. */
|
|
29
38
|
export interface SLineChartSeries {
|
|
30
39
|
/** 범례·툴팁에 표시할 이름 */
|
|
@@ -73,6 +82,11 @@ export interface SLineChartProps {
|
|
|
73
82
|
height?: number | string;
|
|
74
83
|
/** 점을 눌렀을 때 */
|
|
75
84
|
onPointClick?: (point: SLineChartPoint) => void;
|
|
85
|
+
/**
|
|
86
|
+
* 툴팁의 값 아래에 덧붙일 내용. 짚은 항목을 받아 그린다 — 계열 값만으로 모자란 맥락
|
|
87
|
+
* (합계, 전월 대비 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다
|
|
88
|
+
*/
|
|
89
|
+
tooltipFooter?: (category: SLineChartTooltipCategory) => ReactNode;
|
|
76
90
|
className?: string;
|
|
77
91
|
style?: CSSProperties;
|
|
78
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SLineChart, type SLineChartProps, type SLineChartSeries, type SLineChartPoint, type SLineChartCurve, type SLineChartPalette, type SLineChartColor, type SLineChartLegendPosition, } from './SLineChart';
|
|
1
|
+
export { SLineChart, type SLineChartProps, type SLineChartSeries, type SLineChartPoint, type SLineChartTooltipCategory, type SLineChartCurve, type SLineChartPalette, type SLineChartColor, type SLineChartLegendPosition, } from './SLineChart';
|
|
@@ -47,13 +47,16 @@ export declare const BAND_MIN = 40;
|
|
|
47
47
|
/** 점과 값 라벨 사이 간격(px) — 막대 차트와 같다. */
|
|
48
48
|
export declare const VALUE_LABEL_GAP = 6;
|
|
49
49
|
/**
|
|
50
|
-
* 영역 채움의
|
|
50
|
+
* 영역 채움의 불투명도 — 선 바로 아래가 가장 진하고 바닥으로 갈수록 옅어진다.
|
|
51
51
|
*
|
|
52
|
-
* 선은 또렷하게 두고 영역만 물리는 값이다.
|
|
53
|
-
*
|
|
54
|
-
* `area` 를 끄거나 `stacked` 로 쌓는다.
|
|
52
|
+
* 선은 또렷하게 두고 영역만 물리는 값이다. 세로 그라데이션이라 채움이 바닥에서 거의
|
|
53
|
+
* 사라져, 계열이 여럿일 때 채움끼리 겹쳐 색이 탁해지는 것도 덜하다. 그래도 겹쳐 그리는
|
|
54
|
+
* 것 자체의 한계는 남으므로, 계열이 많으면 `area` 를 끄거나 `stacked` 로 쌓는다.
|
|
55
|
+
*
|
|
56
|
+
* 위쪽 30% 는 맞는 토큰이 없어 값으로 둔다(불투명도 토큰은 5·8·40·60·80 뿐이다).
|
|
55
57
|
*/
|
|
56
|
-
export declare const
|
|
58
|
+
export declare const AREA_OPACITY_TOP = "30%";
|
|
59
|
+
export declare const AREA_OPACITY_BOTTOM = "var(--opacity-005)";
|
|
57
60
|
export declare const LINE_DATA_LABEL_COLOR = "var(--cmp-chart-bar-dataLabel-color-default)";
|
|
58
61
|
/** 값 라벨의 타이포 — 짚은 항목만 굵고 크게 뜬다(막대 차트와 같은 규칙). */
|
|
59
62
|
export declare const LINE_DATA_LABEL_TYPO = "typo-body-sm-medium";
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# SMeatballButton
|
|
2
|
+
|
|
3
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
4
|
+
|
|
5
|
+
### SMeatballButton
|
|
6
|
+
|
|
7
|
+
#### Props
|
|
8
|
+
|
|
9
|
+
| Prop | Type | Default | Description |
|
|
10
|
+
|------|------|---------|-------------|
|
|
11
|
+
| `size?` | `SMeatballButtonSize` | `'sm'` | 버튼 크기 |
|
|
12
|
+
| `intent?` | `SMeatballButtonIntent` | `'default'` | 색상 의도. 어두운 배경 위에서는 inverse |
|
|
13
|
+
| `items?` | `SMeatballButtonItem[]` | `[]` | 메뉴 항목 목록 |
|
|
14
|
+
| `tooltipText?` | `string` | `'기능 더 보기'` | 호버 시 표시할 툴팁 텍스트. 빈 문자열이면 툴팁을 띄우지 않는다. 메뉴가 열려 있는 동안은 숨는다. |
|
|
15
|
+
| `ariaLabel?` | `string` | — | 스크린리더용 접근성 레이블. 미지정 시 tooltipText, 그것도 비면 '기능 더 보기' |
|
|
16
|
+
| `disabled?` | `boolean` | `false` | 비활성 |
|
|
17
|
+
| `className?` | `string` | — | 버튼을 감싸는 요소의 클래스. 위치 조정(absolute 배치 등)용 |
|
|
18
|
+
| `style?` | `CSSProperties` | — | 버튼을 감싸는 요소의 스타일. 위치 조정용 |
|
|
19
|
+
|
|
20
|
+
#### Events
|
|
21
|
+
|
|
22
|
+
| Event | Type | Description |
|
|
23
|
+
|-------|------|-------------|
|
|
24
|
+
| `onItemClick` | `(value: string \| number) => void` | 메뉴 항목 선택 |
|
|
25
|
+
| `onOpenChange` | `(open: boolean) => void` | 열림/닫힘 변경 |
|
|
26
|
+
|
|
27
|
+
#### Methods (ref)
|
|
28
|
+
|
|
29
|
+
| Method | Type | Description |
|
|
30
|
+
|--------|------|-------------|
|
|
31
|
+
| `open` | `() => void` | 메뉴 열기 |
|
|
32
|
+
| `close` | `() => void` | 메뉴 닫기 |
|
|
33
|
+
|
|
34
|
+
## Types
|
|
35
|
+
|
|
36
|
+
### SMeatballButtonSize
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
export type SMeatballButtonSize = SGhostButtonSize;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### SMeatballButtonIntent
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
export type SMeatballButtonIntent = 'default' | 'inverse';
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### SMeatballButtonItem
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
/** 메뉴 항목 — SDropdownButton 과 같은 모양이다 */
|
|
52
|
+
export type SMeatballButtonItem = SDropdownButtonItem;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Dependencies
|
|
56
|
+
|
|
57
|
+
### Depends on
|
|
58
|
+
|
|
59
|
+
- [SGhostButton](../SGhostButton)
|
|
60
|
+
|
|
61
|
+
### Graph
|
|
62
|
+
|
|
63
|
+
```mermaid
|
|
64
|
+
graph TD;
|
|
65
|
+
SMeatballButton --> SGhostButton
|
|
66
|
+
style SMeatballButton fill:#f9f,stroke:#333,stroke-width:4px
|
|
67
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
import { type SGhostButtonSize } from '../SGhostButton';
|
|
3
|
+
import type { SDropdownButtonItem } from '../SDropdownButton';
|
|
4
|
+
export type SMeatballButtonSize = SGhostButtonSize;
|
|
5
|
+
export type SMeatballButtonIntent = 'default' | 'inverse';
|
|
6
|
+
/** 메뉴 항목 — SDropdownButton 과 같은 모양이다 */
|
|
7
|
+
export type SMeatballButtonItem = SDropdownButtonItem;
|
|
8
|
+
export interface SMeatballButtonHandle {
|
|
9
|
+
/** 메뉴 열기 */
|
|
10
|
+
open: () => void;
|
|
11
|
+
/** 메뉴 닫기 */
|
|
12
|
+
close: () => void;
|
|
13
|
+
}
|
|
14
|
+
export interface SMeatballButtonProps {
|
|
15
|
+
/** 버튼 크기 */
|
|
16
|
+
size?: SMeatballButtonSize;
|
|
17
|
+
/** 색상 의도. 어두운 배경 위에서는 inverse */
|
|
18
|
+
intent?: SMeatballButtonIntent;
|
|
19
|
+
/** 메뉴 항목 목록 */
|
|
20
|
+
items?: SMeatballButtonItem[];
|
|
21
|
+
/** 호버 시 표시할 툴팁 텍스트. 빈 문자열이면 툴팁을 띄우지 않는다. 메뉴가 열려 있는 동안은 숨는다. */
|
|
22
|
+
tooltipText?: string;
|
|
23
|
+
/** 스크린리더용 접근성 레이블. 미지정 시 tooltipText, 그것도 비면 '기능 더 보기' */
|
|
24
|
+
ariaLabel?: string;
|
|
25
|
+
/** 비활성 */
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
/** 메뉴 항목 선택 */
|
|
28
|
+
onItemClick?: (value: string | number) => void;
|
|
29
|
+
/** 열림/닫힘 변경 */
|
|
30
|
+
onOpenChange?: (open: boolean) => void;
|
|
31
|
+
/** 버튼을 감싸는 요소의 클래스. 위치 조정(absolute 배치 등)용 */
|
|
32
|
+
className?: string;
|
|
33
|
+
/** 버튼을 감싸는 요소의 스타일. 위치 조정용 */
|
|
34
|
+
style?: CSSProperties;
|
|
35
|
+
}
|
|
36
|
+
export declare const SMeatballButton: import("react").ForwardRefExoticComponent<SMeatballButtonProps & import("react").RefAttributes<SMeatballButtonHandle>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SMeatballButton, type SMeatballButtonProps, type SMeatballButtonHandle, type SMeatballButtonItem, type SMeatballButtonSize, type SMeatballButtonIntent, } from './SMeatballButton';
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
| `legendPosition?` | `SPieChartLegendPosition` | `'top'` | 범례 위치 |
|
|
17
17
|
| `showTooltip?` | `boolean` | `true` | 조각에 마우스를 올리면 값 상자를 띄운다 |
|
|
18
18
|
| `formatValue?` | `(value: number) => string` | — | 값 표시 형식 |
|
|
19
|
+
| `tooltipFooter?` | `(slice: SPieChartSlicePoint) => ReactNode` | — | 툴팁의 값 아래에 덧붙일 내용. 짚은 조각을 받아 그린다 — 몫·값만으로 모자란 맥락 (전월 대비, 건수 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다 |
|
|
19
20
|
| `className?` | `string` | — | 폭은 기본 100% 다. 폭을 정하려면 여기에 준다 — 그림은 그 폭의 정사각형이 된다 |
|
|
20
21
|
| `style?` | `CSSProperties` | — | |
|
|
21
22
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CSSProperties } from 'react';
|
|
1
|
+
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
2
|
/** 범례 위치. */
|
|
3
3
|
export type SPieChartLegendPosition = 'top' | 'bottom';
|
|
4
4
|
/**
|
|
@@ -48,6 +48,11 @@ export interface SPieChartProps {
|
|
|
48
48
|
formatValue?: (value: number) => string;
|
|
49
49
|
/** 조각을 눌렀을 때 */
|
|
50
50
|
onSliceClick?: (slice: SPieChartSlicePoint) => void;
|
|
51
|
+
/**
|
|
52
|
+
* 툴팁의 값 아래에 덧붙일 내용. 짚은 조각을 받아 그린다 — 몫·값만으로 모자란 맥락
|
|
53
|
+
* (전월 대비, 건수 등)을 적는다. 툴팁은 누를 수 없으므로 버튼·링크는 넣지 않는다
|
|
54
|
+
*/
|
|
55
|
+
tooltipFooter?: (slice: SPieChartSlicePoint) => ReactNode;
|
|
51
56
|
/** 폭은 기본 100% 다. 폭을 정하려면 여기에 준다 — 그림은 그 폭의 정사각형이 된다 */
|
|
52
57
|
className?: string;
|
|
53
58
|
style?: CSSProperties;
|