sellmate-design-system-react 9.0.0-beta.24 → 9.0.0-beta.26
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 +32 -2
- package/dist/components/SChipFilter/README.md +5 -5
- package/dist/components/SChipFilter/SChipFilter.d.ts +10 -6
- package/dist/components/SIcon/README.md +2 -0
- package/dist/components/SSystemActionButton/README.md +129 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +79 -0
- package/dist/components/SSystemActionButton/index.d.ts +2 -0
- package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +87 -0
- package/dist/components/STable/README.md +16 -0
- package/dist/components/STable/STable.d.ts +12 -0
- package/dist/components/STable/index.d.ts +1 -1
- package/dist/components/STag/README.md +2 -0
- package/dist/index.cjs +623 -318
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +618 -319
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +182 -7
- package/dist/llms.txt +36 -4
- package/dist/styles.css +150 -1
- package/dist/theme.css +89 -1
- package/eslint/scale.gen.mjs +2 -2
- package/package.json +1 -1
package/dist/llms-full.txt
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
| 분류 | 컴포넌트 |
|
|
36
36
|
| --- | --- |
|
|
37
|
-
| **버튼·링크** | `SButton` `SGhostButton` `SDropdownButton` `STextLink` `SSwitch` `SToggle` |
|
|
37
|
+
| **버튼·링크** | `SButton` `SGhostButton` `SDropdownButton` `SSystemActionButton` `STextLink` `SSwitch` `SToggle` |
|
|
38
38
|
| **입력 (폼)** | `SForm` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SChip` `SChipInput` `SBarcodeInput` `SFilePicker` |
|
|
39
39
|
| **날짜·시간** | `SCalendar` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` |
|
|
40
40
|
| **표·목록** | `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SListItem` `SExpansionList` `SDraggableList` `SDraggableItem` `STree` |
|
|
@@ -160,7 +160,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
160
160
|
| --- | --- | --- |
|
|
161
161
|
| **셸** | 앱 전체 뼈대. 페이지가 바뀌어도 남는다 | `SLayout` `SGnb` `SPage`(제목 영역은 `header` prop) |
|
|
162
162
|
| **블록** | `SPage` 의 직계 자식. 페이지를 세로로 쌓는 단위 | `SSectionHeaderCard` `SCard` `SForm` `SSplitter` `SScrollArea` `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SExpansionList` `SDraggableList` `STree` `SCallout` `STabs` `SStepper` `SPagination` `SDivider` |
|
|
163
|
-
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SDropdownButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
163
|
+
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SDropdownButton` `SSystemActionButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
164
164
|
| **인라인** | 텍스트 흐름·셀·라벨 안에 섞인다. 혼자 블록이 되지 않는다 | `STag` `SBadge` `SIcon` `STextLink` `SChip` |
|
|
165
165
|
| **레이어** | 문서 흐름 **밖**에 떠서 그려진다. 어느 층에서 띄우든 레이아웃에 영향이 없다 | `SModal` `SActionModal` `SConfirmModal` `SPopup` `SDrawer` `SPopover` `STooltip` `SPortal` `SToast` `SLoadingModal` `SLoadingContainer` `SGuide` |
|
|
166
166
|
|
|
@@ -531,6 +531,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
531
531
|
| 라벨이 있는 일반 액션을 준다 | `SButton` | §3-5 |
|
|
532
532
|
| 아이콘 하나로 뜻이 통하는 부가 조작을 준다 | `SGhostButton` | §3-5-5 |
|
|
533
533
|
| 한 버튼에 여러 선택지를 매단다 | `SDropdownButton` | §3-5-4 |
|
|
534
|
+
| GNB system 패널에서 한 줄짜리 행 액션을 준다 | `SSystemActionButton` | §3-5-7 |
|
|
534
535
|
|
|
535
536
|
#### D. 화면을 담고 나눈다
|
|
536
537
|
|
|
@@ -1020,6 +1021,7 @@ const columns: STableColumn[] = [
|
|
|
1020
1021
|
| **아이콘 하나로 뜻이 통하는 부가 조작** | **`SGhostButton`** — 라벨이 없는 아이콘 전용 버튼 (아래 3-5-5) |
|
|
1021
1022
|
| 본문 속 이동 링크 | `STextLink` |
|
|
1022
1023
|
| 메인 액션 + 부가 메뉴 | `SDropdownButton` |
|
|
1024
|
+
| **GNB system 패널의 한 줄 액션** | **`SSystemActionButton`** — 행 전체가 버튼인 표면형 (아래 3-5-7) |
|
|
1023
1025
|
|
|
1024
1026
|
#### 3-5-1. 채움 버튼은 페이지당 개수 제한이 있다
|
|
1025
1027
|
|
|
@@ -1152,6 +1154,34 @@ const columns: STableColumn[] = [
|
|
|
1152
1154
|
</div>
|
|
1153
1155
|
```
|
|
1154
1156
|
|
|
1157
|
+
#### 3-5-7. `SSystemActionButton` — GNB system 패널의 한 줄 액션
|
|
1158
|
+
|
|
1159
|
+
**행 전체가 하나의 버튼**인 표면형 컨트롤이다. 아이콘 프레임 + 라벨 + 우측 액션이 한 줄에 붙고, hover 하면 표면색이 한 단계 바뀐다.
|
|
1160
|
+
|
|
1161
|
+
| 상황 | 사용 |
|
|
1162
|
+
| --- | --- |
|
|
1163
|
+
| 페이지·모달의 일반 액션 | `SButton` — 라벨 폭만큼만 차지한다 |
|
|
1164
|
+
| 목록에서 항목 하나를 고르게 한다 | `SListItem` · `STree` (§3-7-6·§3-7-7) |
|
|
1165
|
+
| 좌측 내비게이션의 메뉴 | `SGnb` 의 `menus` (§4-1) |
|
|
1166
|
+
| **GNB system 패널에서 설정·연결 상태를 한 줄씩 쌓고, 그 줄을 눌러 들어가게 한다** | **`SSystemActionButton`** |
|
|
1167
|
+
|
|
1168
|
+
**무엇이 그려지는지는 `type` 이 정한다.** 타입마다 다른 값만 `option` 으로 받으므로, 타입에 맞지 않는 `option` 은 타입 에러가 된다.
|
|
1169
|
+
|
|
1170
|
+
| `type` | 선행 아이콘 | 라벨 | 우측 | 언제 |
|
|
1171
|
+
| --- | --- | --- | --- | --- |
|
|
1172
|
+
| `account` | `user` 고정 | `label` | 없음 | 로그인한 계정을 보여주고 계정 화면으로 보낼 때 |
|
|
1173
|
+
| `select` | `option.icon` (필수) | `label` | 화살표 | 눌러서 하위 화면으로 들어갈 때 |
|
|
1174
|
+
| `switch` | `option.icon` (필수) | `label` | `option.text` + 새로고침 | 지금 붙어 있는 대상을 갈아 끼울 때 |
|
|
1175
|
+
| `subSelect` | `option.icon` (필수) | `label` | `option.text` + 화살표 | 지금 선택돼 있는 값을 함께 보여줄 때 |
|
|
1176
|
+
| `status` | 없음 | 상태 태그(`option.color`·`option.label`) | 화살표 | 라벨 대신 상태 자체가 제목일 때 |
|
|
1177
|
+
|
|
1178
|
+
- **`SPage` 본문에 직접 놓지 않는다.** 폭을 가득 채우는 행이라 페이지에 바로 놓으면 표처럼 보인다. GNB system 패널·`SDrawer`·`SPopover` 처럼 **좁은 폭이 정해진 자리**에 쌓는다. 행 사이 간격은 `--cmp-gnb-system-panel-gap` 이다.
|
|
1179
|
+
- **`color` 는 놓이는 표면을 따라간다** — 흰 면이면 `light`, 오션블루 면이면 `dark`, 네이비 면이면 `darker`. 배경과 다른 색을 고르면 버튼만 떠 보인다.
|
|
1180
|
+
- **상태는 default·hover 둘뿐이다.** 토큰에 selected 가 없으므로 "지금 열려 있는 항목"을 이 버튼으로 표시하지 않는다. 선택 상태가 필요한 자리면 `SGnb` 메뉴나 `SListItem`(§3-7-6) 이다.
|
|
1181
|
+
- **선행 아이콘이 비는 행은 없다.** `account` 는 `user` 고정, `status` 는 태그가 자리를 차지하고, 나머지는 `option.icon` 이 필수다.
|
|
1182
|
+
- **우측 아이콘은 `type` 이 정하므로 밖에서 바꾸지 않는다.** 화살표가 필요한데 문구가 없으면 `select`, 문구가 함께 필요하면 `subSelect` 다.
|
|
1183
|
+
- 높이·라운드·아이콘 크기·좌우 여백은 전부 토큰이 넣는다. 직접 주지 않는다.
|
|
1184
|
+
|
|
1155
1185
|
### 3-6. 영역 나누기 — SDivider vs SSplitter
|
|
1156
1186
|
|
|
1157
1187
|
| 상황 | 사용 |
|
|
@@ -2049,6 +2079,7 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
|
|
|
2049
2079
|
| typo-body-xs-default | 11px | 400 | 18px |
|
|
2050
2080
|
| typo-body-sm-default | 12px | 400 | 20px |
|
|
2051
2081
|
| typo-body-sm-medium | 12px | 500 | 20px |
|
|
2082
|
+
| typo-body-sm-semibold | 12px | 600 | 20px |
|
|
2052
2083
|
| typo-body-sm-bold | 12px | 700 | 20px |
|
|
2053
2084
|
| typo-body-md-default | 14px | 400 | 24px |
|
|
2054
2085
|
| typo-body-md-medium | 14px | 500 | 24px |
|
|
@@ -2171,6 +2202,7 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
|
|
|
2171
2202
|
--sys-color-lightblue-subtle
|
|
2172
2203
|
--sys-color-link-accent
|
|
2173
2204
|
--sys-color-navigation-gnb-bg-dark
|
|
2205
|
+
--sys-color-navigation-gnb-bg-system
|
|
2174
2206
|
|
|
2175
2207
|
## 3. 컴포넌트 카탈로그 (Props / Events / Methods / Types)
|
|
2176
2208
|
|
|
@@ -2630,8 +2662,7 @@ export type SCheckboxValue = boolean | unknown[] | null;
|
|
|
2630
2662
|
| `fields?` | `SChipFilterGroup[]` | — | 필터 정의 목록. 묶을 것이 없어도 한 그룹으로 감싸 넘긴다 — `[{ fields: [...] }]`. 그룹은 rule로 함께 검증하거나 divider로 갈라 놓을 때 나눈다. |
|
|
2631
2663
|
| `value?` | `SChipFilterValueMap` | — | 필터 값 맵 |
|
|
2632
2664
|
| `activeKeys?` | `string[]` | — | 노출 필터 key 목록. 지정하면 제어 컴포넌트로 동작 — "필터 추가"로 고른 필드를 이 배열에 직접 넣어줘야 칩이 나타난다(onActiveKeysChange에서 받은 keys로 갱신). 지정하지 않으면 fixed·required 필드만 노출된 상태로 시작해 컴포넌트가 내부 상태로 관리하는 비제어 방식으로 동작한다. fixed·required 필드는 이 배열에 없어도 항상 노출된다 |
|
|
2633
|
-
| `label?` | `string` |
|
|
2634
|
-
| `showLabel?` | `boolean` | `false` | 좌측 태그(label)·구분선 표시 여부 |
|
|
2665
|
+
| `label?` | `string` | — | 좌측 태그 텍스트. 지정하면 태그와 그 뒤 구분선이 함께 노출되고, 지정하지 않으면(undefined) 둘 다 생략된다 |
|
|
2635
2666
|
| `showReset?` | `boolean` | `true` | 검색 초기화 링크 표시 여부 |
|
|
2636
2667
|
| `disabled?` | `boolean` | `false` | 바 비활성 상태 |
|
|
2637
2668
|
| `className?` | `string` | — | |
|
|
@@ -2643,7 +2674,7 @@ export type SCheckboxValue = boolean | unknown[] | null;
|
|
|
2643
2674
|
|-------|------|-------------|
|
|
2644
2675
|
| `onValueChange` | `(value: SChipFilterValueMap) => void` | 전체 값 변경 — 편집 중인 값이 바뀔 때마다(선택할 때마다) 호출된다. 실제 검색 실행은 onSearch를 쓴다 |
|
|
2645
2676
|
| `onFilterChange` | `(detail: SChipFilterChangeDetail) => void` | 개별 필터 값 변경 |
|
|
2646
|
-
| `onSearch` | `(value: SChipFilterValueMap) => void` | 실제 검색을 실행할 시점 — 편집 팝오버의 "검색" 버튼을 누르거나 팝오버가 닫힐 때(바깥 클릭·Esc·다른 칩으로 전환 포함) 그 시점의 전체 값 맵과 함께 호출된다. 팝오버가 없는 필드(인라인 date 프리셋·custom, clearable ×, 검색 초기화)는 값이 바뀌는 즉시 호출된다. keyword 필터에서 Enter 로 키워드를 추가할 때도 그 즉시 호출된다 — 팝오버는 열린 채라 키워드를 이어서 더 넣을 수 있고, 넣을 때마다 조회가 갱신된다. dirty 체크가 기본 적용되어 있어 — 마지막으로 실제 검색이 실행된 값 맵과 비교해 하나라도 달라진 게 없으면(예: 팝오버를 열었다 아무것도 안 바꾸고 닫는 경우) 호출되지 않는다. fields를 그룹으로 넘겼다면 rule을 만족하지 못한 그룹이 있는 동안엔 onSearch가 호출되지 않는다 — 해당 그룹의 경고 툴팁은 이 시점과 무관하게 값이 비어 있는 동안 항상 실시간으로 떠 있다(별도로 validate()를 호출할 필요 없음) |
|
|
2677
|
+
| `onSearch` | `(value: SChipFilterValueMap) => void` | 실제 검색을 실행할 시점 — 편집 팝오버의 "검색" 버튼을 누르거나 팝오버가 닫힐 때(바깥 클릭·Esc·다른 칩으로 전환 포함) 그 시점의 전체 값 맵과 함께 호출된다. 팝오버가 없는 필드(인라인 date 프리셋·custom, clearable ×, 검색 초기화)는 값이 바뀌는 즉시 호출된다. keyword 필터에서 Enter 로 키워드를 추가할 때도 그 즉시 호출된다 — 팝오버는 열린 채라 키워드를 이어서 더 넣을 수 있고, 넣을 때마다 조회가 갱신된다. dirty 체크가 기본 적용되어 있어 — 마지막으로 실제 검색이 실행된 값 맵과 비교해 하나라도 달라진 게 없으면(예: 팝오버를 열었다 아무것도 안 바꾸고 닫는 경우) 호출되지 않는다. fields를 그룹으로 넘겼다면 rule을 만족하지 못한 그룹이 있는 동안엔 onSearch가 호출되지 않는다 — 해당 그룹의 경고 툴팁은 이 시점과 무관하게 값이 비어 있는 동안 항상 실시간으로 떠 있다(별도로 validate()를 호출할 필요 없음). required 필드가 비어 있는 동안에도 마찬가지로 호출되지 않는다 — 정상 설정(내장 기본값 또는 defaultValue)이라면 원래 비워지지 않지만, defaultValue 없는 select-multi·keyword·custom에 required만 준 오설정에서는 "검색 초기화"·clearable이 값을 null로 비울 수 있어 이때의 안전장치다 |
|
|
2647
2678
|
| `onActiveKeysChange` | `(keys: string[]) => void` | 노출 필터 key 변경(칩 추가·제거) — 비제어 방식에서도 참고용으로 호출된다. activeKeys를 직접 제어할 때는 이 값을 그대로 activeKeys에 반영해야 한다 |
|
|
2648
2679
|
| `onReset` | `() => void` | "검색 초기화" 클릭 — 모든 필드가 기본값(또는 null)으로 리셋된 뒤 호출된다 |
|
|
2649
2680
|
| `onAddFilter` | `(key: string) => void` | "필터 추가" 목록에서 항목을 골랐을 때 — activeKeys를 직접 제어 중이면 이 콜백에서 (또는 onActiveKeysChange에서) key를 activeKeys에 추가해줘야 칩이 실제로 나타난다. activeKeys를 넘기지 않았다면(비제어) 별도 처리 없이도 컴포넌트가 알아서 칩을 노출한다 |
|
|
@@ -2654,7 +2685,7 @@ export type SCheckboxValue = boolean | unknown[] | null;
|
|
|
2654
2685
|
|--------|------|-------------|
|
|
2655
2686
|
| `open` | `(key: string) => void` | 특정 필터 편집 팝오버를 엽니다. |
|
|
2656
2687
|
| `reset` | `() => void` | 모든 필터 값을 초기화합니다. |
|
|
2657
|
-
| `validate` | `() => boolean` | 현재 값 기준으로 각 그룹의 rule을
|
|
2688
|
+
| `validate` | `() => boolean` | 현재 값 기준으로 각 그룹의 rule을 만족하는지, 그리고 required 필드가 모두 비어 있지 않은지 반환합니다. rule을 준 그룹이 없고 required 필드도 모두 값이 있으면 항상 true. 경고 툴팁은 이 호출과 무관하게 rule 위반 상태인 동안 항상 실시간으로 떠 있으므로, 이 메서드는 그 상태를 그대로 읽어오는 용도다(예: 검색 버튼을 눌러도 되는지 사전 확인) |
|
|
2658
2689
|
|
|
2659
2690
|
## Types
|
|
2660
2691
|
|
|
@@ -2671,7 +2702,8 @@ export interface SChipFilterGroup {
|
|
|
2671
2702
|
/** rule을 만족하지 않을 때 그룹 중앙에 띄울 툴팁 메시지. 지정 안 하면 rule 종류에 따른 기본 문구를 쓴다 */
|
|
2672
2703
|
tooltipMessage?: string;
|
|
2673
2704
|
/** 이 그룹 앞에 구분선을 넣을지. 검증(rule)과 구분선은 별개라 — 묶어서 검증만 하고 싶으면
|
|
2674
|
-
* 주지 않는다. 첫 그룹에는 앞에 가를 것이 없으므로 무시된다(
|
|
2705
|
+
* 주지 않는다. 첫 그룹에는 앞에 가를 것이 없으므로 무시된다(label을 지정했다면 그 구분선이
|
|
2706
|
+
* 이미 있다) */
|
|
2675
2707
|
divider?: boolean;
|
|
2676
2708
|
}
|
|
2677
2709
|
```
|
|
@@ -4532,6 +4564,7 @@ export type SGuideMessage = string | SGuideMessage[];
|
|
|
4532
4564
|
- [SSectionHeaderCard](../SSectionHeaderCard)
|
|
4533
4565
|
- [SSelect](../SSelect)
|
|
4534
4566
|
- [SStepper](../SStepper)
|
|
4567
|
+
- [SSystemActionButton](../SSystemActionButton)
|
|
4535
4568
|
- [STable](../STable)
|
|
4536
4569
|
- [STag](../STag)
|
|
4537
4570
|
- [STextLink](../STextLink)
|
|
@@ -6266,6 +6299,131 @@ export const STEPPER_SIZES = ['sm', 'lg'] as const;
|
|
|
6266
6299
|
|
|
6267
6300
|
---
|
|
6268
6301
|
|
|
6302
|
+
# SSystemActionButton
|
|
6303
|
+
|
|
6304
|
+
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
6305
|
+
|
|
6306
|
+
### SSystemActionButtonAccount
|
|
6307
|
+
|
|
6308
|
+
#### Props
|
|
6309
|
+
|
|
6310
|
+
| Prop | Type | Default | Description |
|
|
6311
|
+
|------|------|---------|-------------|
|
|
6312
|
+
| `type` | `'account'` | — | 계정 행 |
|
|
6313
|
+
| `label?` | `string` | — | 라벨 텍스트 |
|
|
6314
|
+
| `option?` | `never` | — | 아이콘이 `user` 로 고정이라 받을 것이 없다 |
|
|
6315
|
+
|
|
6316
|
+
### SSystemActionButtonBase
|
|
6317
|
+
|
|
6318
|
+
#### Props
|
|
6319
|
+
|
|
6320
|
+
| Prop | Type | Default | Description |
|
|
6321
|
+
|------|------|---------|-------------|
|
|
6322
|
+
| `color?` | `SSystemActionButtonColor` | — | 색상(놓이는 표면). light = 흰 면, dark = 오션블루 면, darker = 네이비 면. 기본 `'light'` |
|
|
6323
|
+
| `disabled?` | `boolean` | — | 비활성 여부. 기본 `false` |
|
|
6324
|
+
|
|
6325
|
+
### SSystemActionButtonSelect
|
|
6326
|
+
|
|
6327
|
+
#### Props
|
|
6328
|
+
|
|
6329
|
+
| Prop | Type | Default | Description |
|
|
6330
|
+
|------|------|---------|-------------|
|
|
6331
|
+
| `type` | `'select'` | — | 화살표만 붙는 행 |
|
|
6332
|
+
| `label?` | `string` | — | 라벨 텍스트 |
|
|
6333
|
+
| `option` | `SSystemActionButtonIconOption` | — | 선행 아이콘 |
|
|
6334
|
+
|
|
6335
|
+
### SSystemActionButtonStatus
|
|
6336
|
+
|
|
6337
|
+
#### Props
|
|
6338
|
+
|
|
6339
|
+
| Prop | Type | Default | Description |
|
|
6340
|
+
|------|------|---------|-------------|
|
|
6341
|
+
| `type` | `'status'` | — | 라벨 자리에 상태 태그가 들어가는 행 |
|
|
6342
|
+
| `label?` | `never` | — | 태그가 라벨 자리를 차지하므로 받지 않는다 |
|
|
6343
|
+
| `option?` | `SSystemActionButtonStatusOption` | — | 상태 태그 |
|
|
6344
|
+
|
|
6345
|
+
### SSystemActionButtonText
|
|
6346
|
+
|
|
6347
|
+
#### Props
|
|
6348
|
+
|
|
6349
|
+
| Prop | Type | Default | Description |
|
|
6350
|
+
|------|------|---------|-------------|
|
|
6351
|
+
| `type` | `'switch' \| 'subSelect'` | — | 우측에 문구가 붙는 행. switch = 보조 조작 문구, subSelect = 지금 선택된 값 |
|
|
6352
|
+
| `label?` | `string` | — | 라벨 텍스트 |
|
|
6353
|
+
| `option` | `SSystemActionButtonTextOption` | — | 선행 아이콘 + 우측 액션 텍스트 |
|
|
6354
|
+
|
|
6355
|
+
## Types
|
|
6356
|
+
|
|
6357
|
+
### SSystemActionButtonColor
|
|
6358
|
+
|
|
6359
|
+
```ts
|
|
6360
|
+
export type SSystemActionButtonColor = (typeof SYSTEM_ACTION_BUTTON_COLORS)[number];
|
|
6361
|
+
```
|
|
6362
|
+
|
|
6363
|
+
### SSystemActionButtonIconOption
|
|
6364
|
+
|
|
6365
|
+
```ts
|
|
6366
|
+
/** 선행 아이콘만 받는 타입(`select`)의 option */
|
|
6367
|
+
export interface SSystemActionButtonIconOption {
|
|
6368
|
+
/** 선행 아이콘명 */
|
|
6369
|
+
icon: SIconName;
|
|
6370
|
+
}
|
|
6371
|
+
```
|
|
6372
|
+
|
|
6373
|
+
### SSystemActionButtonStatusOption
|
|
6374
|
+
|
|
6375
|
+
```ts
|
|
6376
|
+
/** `status` 타입의 option — 라벨 자리에 들어가는 상태 태그 */
|
|
6377
|
+
export interface SSystemActionButtonStatusOption {
|
|
6378
|
+
/** 상태 태그 색 */
|
|
6379
|
+
color?: STagColor;
|
|
6380
|
+
/** 상태 태그 텍스트 */
|
|
6381
|
+
label?: string;
|
|
6382
|
+
}
|
|
6383
|
+
```
|
|
6384
|
+
|
|
6385
|
+
### SSystemActionButtonTextOption
|
|
6386
|
+
|
|
6387
|
+
```ts
|
|
6388
|
+
/** 우측 액션 텍스트까지 받는 타입(`switch` · `subSelect`)의 option */
|
|
6389
|
+
export interface SSystemActionButtonTextOption extends SSystemActionButtonIconOption {
|
|
6390
|
+
/** 우측 액션 텍스트 */
|
|
6391
|
+
text?: string;
|
|
6392
|
+
}
|
|
6393
|
+
```
|
|
6394
|
+
|
|
6395
|
+
### SYSTEM_ACTION_BUTTON_COLORS
|
|
6396
|
+
|
|
6397
|
+
```ts
|
|
6398
|
+
/**
|
|
6399
|
+
* SSystemActionButton 설정.
|
|
6400
|
+
*
|
|
6401
|
+
* 토큰은 GNB system 패널 한 벌(`--cmp-gnb-system-*`)을 그대로 쓴다.
|
|
6402
|
+
* 행 공통(높이·라운드·아이콘 프레임·라벨) → --cmp-gnb-system-item-*
|
|
6403
|
+
* 색(color 축) light / dark / darker → --cmp-gnb-system-item-<color>-*
|
|
6404
|
+
* 우측 액션(패딩·간격·아이콘·텍스트색) → --cmp-gnb-system-actionButton-*
|
|
6405
|
+
*
|
|
6406
|
+
* 타이포그래피는 CSS 변수가 아니라 `.typo-*` 프리셋으로 나온다.
|
|
6407
|
+
* item.label → typo-body-sm-semibold (12/600/20)
|
|
6408
|
+
* actionButton.switch → typo-field-sm-default (12/400/20)
|
|
6409
|
+
* actionButton.selectData → typo-control-xs-medium (12/500/20)
|
|
6410
|
+
*/
|
|
6411
|
+
|
|
6412
|
+
/** 색상(표면). light = 흰 면, dark = 오션블루 면, darker = 네이비 면 */
|
|
6413
|
+
export const SYSTEM_ACTION_BUTTON_COLORS = ['light', 'dark', 'darker'] as const;
|
|
6414
|
+
```
|
|
6415
|
+
|
|
6416
|
+
## Dependencies
|
|
6417
|
+
|
|
6418
|
+
### Depends on
|
|
6419
|
+
|
|
6420
|
+
- [SIcon](../SIcon)
|
|
6421
|
+
- [STag](../STag)
|
|
6422
|
+
|
|
6423
|
+
### Graph
|
|
6424
|
+
|
|
6425
|
+
---
|
|
6426
|
+
|
|
6269
6427
|
# STable
|
|
6270
6428
|
|
|
6271
6429
|
> 자동 생성 문서 — `npm run docs:gen`. 소스: 각 컴포넌트의 Props/Handle 인터페이스 + import 의존성.
|
|
@@ -6277,6 +6435,7 @@ export const STEPPER_SIZES = ['sm', 'lg'] as const;
|
|
|
6277
6435
|
| Prop | Type | Default | Description |
|
|
6278
6436
|
|------|------|---------|-------------|
|
|
6279
6437
|
| `columns?` | `STableColumn[]` | `[]` | |
|
|
6438
|
+
| `headerGroups?` | `STableHeaderGroup[]` | — | 상위 그룹 헤더. 지정하면 기존 컬럼 헤더가 두 번째 행에 렌더링된다. |
|
|
6280
6439
|
| `rows?` | `SRow[]` | `[]` | |
|
|
6281
6440
|
| `rowKey?` | `string` | `'id'` | 행 식별 필드 |
|
|
6282
6441
|
| `selectable?` | `boolean` | `false` | 행 선택 체크박스 |
|
|
@@ -6346,6 +6505,21 @@ export type STableColumn = STableColumnBase &
|
|
|
6346
6505
|
);
|
|
6347
6506
|
```
|
|
6348
6507
|
|
|
6508
|
+
### STableHeaderGroup
|
|
6509
|
+
|
|
6510
|
+
```ts
|
|
6511
|
+
/** 2단 헤더의 상위 셀. columnNames는 visible 컬럼 기준으로 연속되어야 한다. */
|
|
6512
|
+
export interface STableHeaderGroup {
|
|
6513
|
+
label?: ReactNode;
|
|
6514
|
+
columnNames: string[];
|
|
6515
|
+
rowSpan?: 1 | 2;
|
|
6516
|
+
align?: 'left' | 'center' | 'right';
|
|
6517
|
+
className?: string;
|
|
6518
|
+
style?: CSSProperties;
|
|
6519
|
+
render?: () => ReactNode;
|
|
6520
|
+
}
|
|
6521
|
+
```
|
|
6522
|
+
|
|
6349
6523
|
### SRow
|
|
6350
6524
|
|
|
6351
6525
|
```ts
|
|
@@ -6550,6 +6724,7 @@ export const TAG_COLORS = [
|
|
|
6550
6724
|
- [SConfirmModal](../SConfirmModal)
|
|
6551
6725
|
- [SGhostButton](../SGhostButton)
|
|
6552
6726
|
- [SGnb](../SGnb)
|
|
6727
|
+
- [SSystemActionButton](../SSystemActionButton)
|
|
6553
6728
|
- [STabs](../STabs)
|
|
6554
6729
|
- [STextLink](../STextLink)
|
|
6555
6730
|
|
package/dist/llms.txt
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
| 분류 | 컴포넌트 |
|
|
37
37
|
| --- | --- |
|
|
38
|
-
| **버튼·링크** | `SButton` `SGhostButton` `SDropdownButton` `STextLink` `SSwitch` `SToggle` |
|
|
38
|
+
| **버튼·링크** | `SButton` `SGhostButton` `SDropdownButton` `SSystemActionButton` `STextLink` `SSwitch` `SToggle` |
|
|
39
39
|
| **입력 (폼)** | `SForm` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SChip` `SChipInput` `SBarcodeInput` `SFilePicker` |
|
|
40
40
|
| **날짜·시간** | `SCalendar` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` |
|
|
41
41
|
| **표·목록** | `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SListItem` `SExpansionList` `SDraggableList` `SDraggableItem` `STree` |
|
|
@@ -161,7 +161,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
161
161
|
| --- | --- | --- |
|
|
162
162
|
| **셸** | 앱 전체 뼈대. 페이지가 바뀌어도 남는다 | `SLayout` `SGnb` `SPage`(제목 영역은 `header` prop) |
|
|
163
163
|
| **블록** | `SPage` 의 직계 자식. 페이지를 세로로 쌓는 단위 | `SSectionHeaderCard` `SCard` `SForm` `SSplitter` `SScrollArea` `STable` `STableBar` `SChipFilter` `SKeyValueTable` `SList` `SExpansionList` `SDraggableList` `STree` `SCallout` `STabs` `SStepper` `SPagination` `SDivider` |
|
|
164
|
-
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SDropdownButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
164
|
+
| **요소** | 블록 **안에** 놓이는 컨트롤. 혼자 페이지에 서지 않는다 | `SButton` `SGhostButton` `SDropdownButton` `SSystemActionButton` `SField` `SInput` `SSearchInput` `SNumberInput` `STextarea` `SEditor` `SSelect` `SCheckbox` `SRadio` `SRadioGroup` `SRadioButton` `SSwitch` `SToggle` `SChipInput` `SBarcodeInput` `SFilePicker` `SDatePicker` `SDatePickerYearListbox` `SDatePickerMonthListbox` `SDateRangePicker` `STimePicker` `STimeRangePicker` `SCalendar` `SListItem` `SExpansionItem` `SDraggableItem` `SImage` `SLinearProgress` `SCircleProgress` |
|
|
165
165
|
| **인라인** | 텍스트 흐름·셀·라벨 안에 섞인다. 혼자 블록이 되지 않는다 | `STag` `SBadge` `SIcon` `STextLink` `SChip` |
|
|
166
166
|
| **레이어** | 문서 흐름 **밖**에 떠서 그려진다. 어느 층에서 띄우든 레이아웃에 영향이 없다 | `SModal` `SActionModal` `SConfirmModal` `SPopup` `SDrawer` `SPopover` `STooltip` `SPortal` `SToast` `SLoadingModal` `SLoadingContainer` `SGuide` |
|
|
167
167
|
|
|
@@ -532,6 +532,7 @@ Tailwind 유틸리티는 **토큰 스케일에 있는 값만** 사용한다.
|
|
|
532
532
|
| 라벨이 있는 일반 액션을 준다 | `SButton` | §3-5 |
|
|
533
533
|
| 아이콘 하나로 뜻이 통하는 부가 조작을 준다 | `SGhostButton` | §3-5-5 |
|
|
534
534
|
| 한 버튼에 여러 선택지를 매단다 | `SDropdownButton` | §3-5-4 |
|
|
535
|
+
| GNB system 패널에서 한 줄짜리 행 액션을 준다 | `SSystemActionButton` | §3-5-7 |
|
|
535
536
|
|
|
536
537
|
#### D. 화면을 담고 나눈다
|
|
537
538
|
|
|
@@ -1021,6 +1022,7 @@ const columns: STableColumn[] = [
|
|
|
1021
1022
|
| **아이콘 하나로 뜻이 통하는 부가 조작** | **`SGhostButton`** — 라벨이 없는 아이콘 전용 버튼 (아래 3-5-5) |
|
|
1022
1023
|
| 본문 속 이동 링크 | `STextLink` |
|
|
1023
1024
|
| 메인 액션 + 부가 메뉴 | `SDropdownButton` |
|
|
1025
|
+
| **GNB system 패널의 한 줄 액션** | **`SSystemActionButton`** — 행 전체가 버튼인 표면형 (아래 3-5-7) |
|
|
1024
1026
|
|
|
1025
1027
|
#### 3-5-1. 채움 버튼은 페이지당 개수 제한이 있다
|
|
1026
1028
|
|
|
@@ -1153,6 +1155,34 @@ const columns: STableColumn[] = [
|
|
|
1153
1155
|
</div>
|
|
1154
1156
|
```
|
|
1155
1157
|
|
|
1158
|
+
#### 3-5-7. `SSystemActionButton` — GNB system 패널의 한 줄 액션
|
|
1159
|
+
|
|
1160
|
+
**행 전체가 하나의 버튼**인 표면형 컨트롤이다. 아이콘 프레임 + 라벨 + 우측 액션이 한 줄에 붙고, hover 하면 표면색이 한 단계 바뀐다.
|
|
1161
|
+
|
|
1162
|
+
| 상황 | 사용 |
|
|
1163
|
+
| --- | --- |
|
|
1164
|
+
| 페이지·모달의 일반 액션 | `SButton` — 라벨 폭만큼만 차지한다 |
|
|
1165
|
+
| 목록에서 항목 하나를 고르게 한다 | `SListItem` · `STree` (§3-7-6·§3-7-7) |
|
|
1166
|
+
| 좌측 내비게이션의 메뉴 | `SGnb` 의 `menus` (§4-1) |
|
|
1167
|
+
| **GNB system 패널에서 설정·연결 상태를 한 줄씩 쌓고, 그 줄을 눌러 들어가게 한다** | **`SSystemActionButton`** |
|
|
1168
|
+
|
|
1169
|
+
**무엇이 그려지는지는 `type` 이 정한다.** 타입마다 다른 값만 `option` 으로 받으므로, 타입에 맞지 않는 `option` 은 타입 에러가 된다.
|
|
1170
|
+
|
|
1171
|
+
| `type` | 선행 아이콘 | 라벨 | 우측 | 언제 |
|
|
1172
|
+
| --- | --- | --- | --- | --- |
|
|
1173
|
+
| `account` | `user` 고정 | `label` | 없음 | 로그인한 계정을 보여주고 계정 화면으로 보낼 때 |
|
|
1174
|
+
| `select` | `option.icon` (필수) | `label` | 화살표 | 눌러서 하위 화면으로 들어갈 때 |
|
|
1175
|
+
| `switch` | `option.icon` (필수) | `label` | `option.text` + 새로고침 | 지금 붙어 있는 대상을 갈아 끼울 때 |
|
|
1176
|
+
| `subSelect` | `option.icon` (필수) | `label` | `option.text` + 화살표 | 지금 선택돼 있는 값을 함께 보여줄 때 |
|
|
1177
|
+
| `status` | 없음 | 상태 태그(`option.color`·`option.label`) | 화살표 | 라벨 대신 상태 자체가 제목일 때 |
|
|
1178
|
+
|
|
1179
|
+
- **`SPage` 본문에 직접 놓지 않는다.** 폭을 가득 채우는 행이라 페이지에 바로 놓으면 표처럼 보인다. GNB system 패널·`SDrawer`·`SPopover` 처럼 **좁은 폭이 정해진 자리**에 쌓는다. 행 사이 간격은 `--cmp-gnb-system-panel-gap` 이다.
|
|
1180
|
+
- **`color` 는 놓이는 표면을 따라간다** — 흰 면이면 `light`, 오션블루 면이면 `dark`, 네이비 면이면 `darker`. 배경과 다른 색을 고르면 버튼만 떠 보인다.
|
|
1181
|
+
- **상태는 default·hover 둘뿐이다.** 토큰에 selected 가 없으므로 "지금 열려 있는 항목"을 이 버튼으로 표시하지 않는다. 선택 상태가 필요한 자리면 `SGnb` 메뉴나 `SListItem`(§3-7-6) 이다.
|
|
1182
|
+
- **선행 아이콘이 비는 행은 없다.** `account` 는 `user` 고정, `status` 는 태그가 자리를 차지하고, 나머지는 `option.icon` 이 필수다.
|
|
1183
|
+
- **우측 아이콘은 `type` 이 정하므로 밖에서 바꾸지 않는다.** 화살표가 필요한데 문구가 없으면 `select`, 문구가 함께 필요하면 `subSelect` 다.
|
|
1184
|
+
- 높이·라운드·아이콘 크기·좌우 여백은 전부 토큰이 넣는다. 직접 주지 않는다.
|
|
1185
|
+
|
|
1156
1186
|
### 3-6. 영역 나누기 — SDivider vs SSplitter
|
|
1157
1187
|
|
|
1158
1188
|
| 상황 | 사용 |
|
|
@@ -2050,6 +2080,7 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
|
|
|
2050
2080
|
| typo-body-xs-default | 11px | 400 | 18px |
|
|
2051
2081
|
| typo-body-sm-default | 12px | 400 | 20px |
|
|
2052
2082
|
| typo-body-sm-medium | 12px | 500 | 20px |
|
|
2083
|
+
| typo-body-sm-semibold | 12px | 600 | 20px |
|
|
2053
2084
|
| typo-body-sm-bold | 12px | 700 | 20px |
|
|
2054
2085
|
| typo-body-md-default | 14px | 400 | 24px |
|
|
2055
2086
|
| typo-body-md-medium | 14px | 500 | 24px |
|
|
@@ -2172,8 +2203,9 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
|
|
|
2172
2203
|
--sys-color-lightblue-subtle
|
|
2173
2204
|
--sys-color-link-accent
|
|
2174
2205
|
--sys-color-navigation-gnb-bg-dark
|
|
2206
|
+
--sys-color-navigation-gnb-bg-system
|
|
2175
2207
|
|
|
2176
|
-
## 3. 컴포넌트 인덱스 (
|
|
2208
|
+
## 3. 컴포넌트 인덱스 (68종)
|
|
2177
2209
|
|
|
2178
2210
|
**Props 는 이 문서에 없다.** 쓸 컴포넌트를 정했으면 그 컴포넌트의 README 를 읽는다.
|
|
2179
2211
|
|
|
@@ -2182,4 +2214,4 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
|
|
|
2182
2214
|
예) SButton 을 쓴다면 `dist/components/SButton/README.md`.
|
|
2183
2215
|
prop 을 추측해서 쓰지 말고 반드시 README 로 확인한다 (분류별 용도는 §1 의 "전체 컴포넌트 인덱스" 참조).
|
|
2184
2216
|
|
|
2185
|
-
SActionModal · SBadge · SBarcodeInput · SButton · SCalendar · SCallout · SCard · SCheckbox · SChip · SChipFilter · SChipInput · SCircleProgress · SConfirmModal · SDatePicker · SDateRangePicker · SDivider · SDraggableItem · SDraggableList · SDrawer · SDropdownButton · SEditor · SExpansionItem · SExpansionList · SField · SFilePicker · SForm · SGhostButton · SGnb · SGuide · SIcon · SImage · SInput · SKeyValueTable · SLayout · SLinearProgress · SList · SListItem · SLoadingContainer · SLoadingModal · SModal · SNumberInput · SPage · SPagination · SPopover · SPopup · SPortal · SRadio · SRadioButton · SScrollArea · SSearchInput · SSectionHeaderCard · SSelect · SSplitter · SStepper · SSwitch · STable · STableBar · STabs · STag · STextLink · STextarea · STimePicker · STimeRangePicker · SToast · SToggle · STooltip · STree
|
|
2217
|
+
SActionModal · SBadge · SBarcodeInput · SButton · SCalendar · SCallout · SCard · SCheckbox · SChip · SChipFilter · SChipInput · SCircleProgress · SConfirmModal · SDatePicker · SDateRangePicker · SDivider · SDraggableItem · SDraggableList · SDrawer · SDropdownButton · SEditor · SExpansionItem · SExpansionList · SField · SFilePicker · SForm · SGhostButton · SGnb · SGuide · SIcon · SImage · SInput · SKeyValueTable · SLayout · SLinearProgress · SList · SListItem · SLoadingContainer · SLoadingModal · SModal · SNumberInput · SPage · SPagination · SPopover · SPopup · SPortal · SRadio · SRadioButton · SScrollArea · SSearchInput · SSectionHeaderCard · SSelect · SSplitter · SStepper · SSwitch · SSystemActionButton · STable · STableBar · STabs · STag · STextLink · STextarea · STimePicker · STimeRangePicker · SToast · SToggle · STooltip · STree
|
package/dist/styles.css
CHANGED
|
@@ -248,6 +248,7 @@
|
|
|
248
248
|
--color-field-icon-default: #888888;
|
|
249
249
|
--color-control-bg-inverseHover: #0075FF;
|
|
250
250
|
--color-navigation-gnb-bg-dark: #001B39;
|
|
251
|
+
--color-navigation-gnb-bg-system: #004177;
|
|
251
252
|
--color-primary-10: #EFF6FF;
|
|
252
253
|
--color-primary-20: #E6F1FF;
|
|
253
254
|
--color-primary-25: #D9EAFF;
|
|
@@ -1215,6 +1216,9 @@
|
|
|
1215
1216
|
.w-\[61px\] {
|
|
1216
1217
|
width: 61px;
|
|
1217
1218
|
}
|
|
1219
|
+
.w-\[176px\] {
|
|
1220
|
+
width: 176px;
|
|
1221
|
+
}
|
|
1218
1222
|
.w-\[200px\] {
|
|
1219
1223
|
width: 200px;
|
|
1220
1224
|
}
|
|
@@ -1575,6 +1579,9 @@
|
|
|
1575
1579
|
.gap-\(--cmp-field-addonLabel-gap\) {
|
|
1576
1580
|
gap: var(--cmp-field-addonLabel-gap);
|
|
1577
1581
|
}
|
|
1582
|
+
.gap-\(--cmp-gnb-system-panel-gap\) {
|
|
1583
|
+
gap: var(--cmp-gnb-system-panel-gap);
|
|
1584
|
+
}
|
|
1578
1585
|
.gap-\(--cmp-list-group-gap\) {
|
|
1579
1586
|
gap: var(--cmp-list-group-gap);
|
|
1580
1587
|
}
|
|
@@ -2091,6 +2098,10 @@
|
|
|
2091
2098
|
border-bottom-style: var(--tw-border-style);
|
|
2092
2099
|
border-bottom-width: 1px;
|
|
2093
2100
|
}
|
|
2101
|
+
.border-b-0 {
|
|
2102
|
+
border-bottom-style: var(--tw-border-style);
|
|
2103
|
+
border-bottom-width: 0px;
|
|
2104
|
+
}
|
|
2094
2105
|
.border-l {
|
|
2095
2106
|
border-left-style: var(--tw-border-style);
|
|
2096
2107
|
border-left-width: 1px;
|
|
@@ -2248,6 +2259,15 @@
|
|
|
2248
2259
|
.border-transparent {
|
|
2249
2260
|
border-color: transparent;
|
|
2250
2261
|
}
|
|
2262
|
+
.bg-\(--cmp-gnb-system-item-dark-bg-default\) {
|
|
2263
|
+
background-color: var(--cmp-gnb-system-item-dark-bg-default);
|
|
2264
|
+
}
|
|
2265
|
+
.bg-\(--cmp-gnb-system-item-darker-bg-default\) {
|
|
2266
|
+
background-color: var(--cmp-gnb-system-item-darker-bg-default);
|
|
2267
|
+
}
|
|
2268
|
+
.bg-\(--cmp-gnb-system-item-light-bg-default\) {
|
|
2269
|
+
background-color: var(--cmp-gnb-system-item-light-bg-default);
|
|
2270
|
+
}
|
|
2251
2271
|
.bg-\(--cmp-image-bg\) {
|
|
2252
2272
|
background-color: var(--cmp-image-bg);
|
|
2253
2273
|
}
|
|
@@ -2311,6 +2331,12 @@
|
|
|
2311
2331
|
.bg-\(--cmp-tree-item-bg-default\) {
|
|
2312
2332
|
background-color: var(--cmp-tree-item-bg-default);
|
|
2313
2333
|
}
|
|
2334
|
+
.bg-\(--sab-bg\) {
|
|
2335
|
+
background-color: var(--sab-bg);
|
|
2336
|
+
}
|
|
2337
|
+
.bg-\(--sab-icon-bg\) {
|
|
2338
|
+
background-color: var(--sab-icon-bg);
|
|
2339
|
+
}
|
|
2314
2340
|
.bg-\(--sys-color-bg-frame\) {
|
|
2315
2341
|
background-color: var(--sys-color-bg-frame);
|
|
2316
2342
|
}
|
|
@@ -2548,6 +2574,9 @@
|
|
|
2548
2574
|
background-color: color-mix(in oklab, var(--color-white) 60%, transparent);
|
|
2549
2575
|
}
|
|
2550
2576
|
}
|
|
2577
|
+
.p-\(--cmp-gnb-system-panel-gap\) {
|
|
2578
|
+
padding: var(--cmp-gnb-system-panel-gap);
|
|
2579
|
+
}
|
|
2551
2580
|
.p-\(--cmp-list-group-padding\) {
|
|
2552
2581
|
padding: var(--cmp-list-group-padding);
|
|
2553
2582
|
}
|
|
@@ -3207,6 +3236,18 @@
|
|
|
3207
3236
|
.text-\(--color-var\) {
|
|
3208
3237
|
color: var(--color-var);
|
|
3209
3238
|
}
|
|
3239
|
+
.text-\(--sab-action-icon\) {
|
|
3240
|
+
color: var(--sab-action-icon);
|
|
3241
|
+
}
|
|
3242
|
+
.text-\(--sab-action-text\) {
|
|
3243
|
+
color: var(--sab-action-text);
|
|
3244
|
+
}
|
|
3245
|
+
.text-\(--sab-icon-glyph\) {
|
|
3246
|
+
color: var(--sab-icon-glyph);
|
|
3247
|
+
}
|
|
3248
|
+
.text-\(--sab-text\) {
|
|
3249
|
+
color: var(--sab-text);
|
|
3250
|
+
}
|
|
3210
3251
|
.text-\(--sys-color-disabled-text\) {
|
|
3211
3252
|
color: var(--sys-color-disabled-text);
|
|
3212
3253
|
}
|
|
@@ -3656,6 +3697,13 @@
|
|
|
3656
3697
|
}
|
|
3657
3698
|
}
|
|
3658
3699
|
}
|
|
3700
|
+
.group-hover\:bg-\(--sab-icon-bg-hover\) {
|
|
3701
|
+
&:is(:where(.group):hover *) {
|
|
3702
|
+
@media (hover: hover) {
|
|
3703
|
+
background-color: var(--sab-icon-bg-hover);
|
|
3704
|
+
}
|
|
3705
|
+
}
|
|
3706
|
+
}
|
|
3659
3707
|
.group-hover\:font-bold {
|
|
3660
3708
|
&:is(:where(.group):hover *) {
|
|
3661
3709
|
@media (hover: hover) {
|
|
@@ -3664,6 +3712,13 @@
|
|
|
3664
3712
|
}
|
|
3665
3713
|
}
|
|
3666
3714
|
}
|
|
3715
|
+
.group-hover\:text-\(--sab-icon-glyph-hover\) {
|
|
3716
|
+
&:is(:where(.group):hover *) {
|
|
3717
|
+
@media (hover: hover) {
|
|
3718
|
+
color: var(--sab-icon-glyph-hover);
|
|
3719
|
+
}
|
|
3720
|
+
}
|
|
3721
|
+
}
|
|
3667
3722
|
.group-hover\/editor-tool\:opacity-5 {
|
|
3668
3723
|
&:is(:where(.group\/editor-tool):hover *) {
|
|
3669
3724
|
@media (hover: hover) {
|
|
@@ -4076,6 +4131,13 @@
|
|
|
4076
4131
|
}
|
|
4077
4132
|
}
|
|
4078
4133
|
}
|
|
4134
|
+
.hover\:bg-\(--sab-bg-hover\) {
|
|
4135
|
+
&:hover {
|
|
4136
|
+
@media (hover: hover) {
|
|
4137
|
+
background-color: var(--sab-bg-hover);
|
|
4138
|
+
}
|
|
4139
|
+
}
|
|
4140
|
+
}
|
|
4079
4141
|
.hover\:bg-\(--sys-color-bg-neutralBright\) {
|
|
4080
4142
|
&:hover {
|
|
4081
4143
|
@media (hover: hover) {
|
|
@@ -5506,6 +5568,7 @@
|
|
|
5506
5568
|
--sys-color-field-icon-default: #888888;
|
|
5507
5569
|
--sys-color-control-bg-inverseHover: #0075FF;
|
|
5508
5570
|
--sys-color-navigation-gnb-bg-dark: #001B39;
|
|
5571
|
+
--sys-color-navigation-gnb-bg-system: #004177;
|
|
5509
5572
|
--cmp-button-xs-height: 24px;
|
|
5510
5573
|
--cmp-button-xs-paddingX: 8px;
|
|
5511
5574
|
--cmp-button-xs-gap: 4px;
|
|
@@ -6161,7 +6224,7 @@
|
|
|
6161
6224
|
--cmp-guide-contents-typography-color: #222222;
|
|
6162
6225
|
--cmp-guide-contents-icon: #00973C;
|
|
6163
6226
|
--cmp-guide-contents-radius: 8px;
|
|
6164
|
-
--cmp-guide-contents-depth-paddingLeft:
|
|
6227
|
+
--cmp-guide-contents-depth-paddingLeft: 24px;
|
|
6165
6228
|
--cmp-progress-linear-height: 20px;
|
|
6166
6229
|
--cmp-progress-linear-radius: 9999px;
|
|
6167
6230
|
--cmp-progress-linear-gap: 12px;
|
|
@@ -6320,6 +6383,86 @@
|
|
|
6320
6383
|
--cmp-gnb-rail-item-radius: 8px;
|
|
6321
6384
|
--cmp-gnb-rail-item-icon: 24px;
|
|
6322
6385
|
--cmp-gnb-rail-item-width: 44px;
|
|
6386
|
+
--cmp-gnb-system-panel-light-bg: #FFFFFF;
|
|
6387
|
+
--cmp-gnb-system-panel-light-border: #E1E1E1;
|
|
6388
|
+
--cmp-gnb-system-panel-dark-bg: #004177;
|
|
6389
|
+
--cmp-gnb-system-panel-dark-border: #006AC1;
|
|
6390
|
+
--cmp-gnb-system-panel-gap: 8px;
|
|
6391
|
+
--cmp-gnb-system-panel-divider-color-light: #E1E1E1;
|
|
6392
|
+
--cmp-gnb-system-panel-divider-color-dark: #006AC1;
|
|
6393
|
+
--cmp-gnb-system-panel-divider-color-darker: #004290;
|
|
6394
|
+
--cmp-gnb-system-domainTag-paddingX: 12px;
|
|
6395
|
+
--cmp-gnb-system-domainTag-paddingY: 2px;
|
|
6396
|
+
--cmp-gnb-system-domainTag-radius: 6px;
|
|
6397
|
+
--cmp-gnb-system-domainTag-light-bg: #F6F6F6;
|
|
6398
|
+
--cmp-gnb-system-domainTag-light-text: #555555;
|
|
6399
|
+
--cmp-gnb-system-domainTag-dark-bg: #07284A;
|
|
6400
|
+
--cmp-gnb-system-domainTag-dark-text: #FFFFFF;
|
|
6401
|
+
--cmp-gnb-system-domainTag-darker-bg: #004177;
|
|
6402
|
+
--cmp-gnb-system-domainTag-darker-text: #FFFFFF;
|
|
6403
|
+
--cmp-gnb-system-item-height: 32px;
|
|
6404
|
+
--cmp-gnb-system-item-radius: 8px;
|
|
6405
|
+
--cmp-gnb-system-item-icon-frame: 24px;
|
|
6406
|
+
--cmp-gnb-system-item-icon-glyph: 20px;
|
|
6407
|
+
--cmp-gnb-system-item-icon-radius: 4px;
|
|
6408
|
+
--cmp-gnb-system-item-iconLabelGap: 8px;
|
|
6409
|
+
--cmp-gnb-system-item-light-bg-default: #FFFFFF;
|
|
6410
|
+
--cmp-gnb-system-item-light-bg-hover: #F6F6F6;
|
|
6411
|
+
--cmp-gnb-system-item-light-icon-bg: #FFFFFF;
|
|
6412
|
+
--cmp-gnb-system-item-light-icon-default: #888888;
|
|
6413
|
+
--cmp-gnb-system-item-light-text: #222222;
|
|
6414
|
+
--cmp-gnb-system-item-dark-bg-default: #004177;
|
|
6415
|
+
--cmp-gnb-system-item-dark-bg-hover: #025497;
|
|
6416
|
+
--cmp-gnb-system-item-dark-icon-bg-default: #004177;
|
|
6417
|
+
--cmp-gnb-system-item-dark-icon-bg-hover: #FFFFFF;
|
|
6418
|
+
--cmp-gnb-system-item-dark-text: #FFFFFF;
|
|
6419
|
+
--cmp-gnb-system-item-darker-bg-default: #001B39;
|
|
6420
|
+
--cmp-gnb-system-item-darker-bg-hover: #002B5E;
|
|
6421
|
+
--cmp-gnb-system-item-darker-icon-bg-default: #001B39;
|
|
6422
|
+
--cmp-gnb-system-item-darker-icon-bg-hover: #FFFFFF;
|
|
6423
|
+
--cmp-gnb-system-item-darker-text: #FFFFFF;
|
|
6424
|
+
--cmp-gnb-system-actionButton-paddingLeft: 4px;
|
|
6425
|
+
--cmp-gnb-system-actionButton-paddingRight: 6px;
|
|
6426
|
+
--cmp-gnb-system-actionButton-selectData-gap: 4px;
|
|
6427
|
+
--cmp-gnb-system-actionButton-selectData-icon: 16px;
|
|
6428
|
+
--cmp-gnb-system-actionButton-selectData-text-light: #005CC9;
|
|
6429
|
+
--cmp-gnb-system-actionButton-selectData-text-dark: #BBDAFF;
|
|
6430
|
+
--cmp-gnb-system-actionButton-switch-icon: 16px;
|
|
6431
|
+
--cmp-gnb-system-actionButton-switch-text-light: #555555;
|
|
6432
|
+
--cmp-gnb-system-actionButton-switch-text-dark: #FFFFFF;
|
|
6433
|
+
--cmp-gnb-system-actionButton-select-icon: 16px;
|
|
6434
|
+
--cmp-gnb-system-accountButton-paddingY: 4px;
|
|
6435
|
+
--cmp-gnb-system-accountButton-paddingX: 12px;
|
|
6436
|
+
--cmp-gnb-system-accountButton-gap: 8px;
|
|
6437
|
+
--cmp-gnb-system-accountButton-icon: 16px;
|
|
6438
|
+
--cmp-gnb-system-accountButton-bg-default: #FFFFFF;
|
|
6439
|
+
--cmp-gnb-system-accountButton-bg-hover: #F6F6F6;
|
|
6440
|
+
--cmp-gnb-system-accountButton-bg-negativeHover: #FCEFEF;
|
|
6441
|
+
--cmp-gnb-system-accountButton-content-default: #222222;
|
|
6442
|
+
--cmp-gnb-system-accountButton-content-negative: #E30000;
|
|
6443
|
+
--cmp-gnb-system-accountButton-selectData-gap: 4px;
|
|
6444
|
+
--cmp-gnb-system-accountButton-selectData-icon: 16px;
|
|
6445
|
+
--cmp-gnb-system-accountButton-selectData-text: #005CC9;
|
|
6446
|
+
--cmp-gnb-system-accountListBox-width: 240px;
|
|
6447
|
+
--cmp-gnb-system-accountListBox-bg: #FFFFFF;
|
|
6448
|
+
--cmp-gnb-system-accountListBox-radius: 4px;
|
|
6449
|
+
--cmp-gnb-system-accountListBox-userdata-bg: #F9F9F9;
|
|
6450
|
+
--cmp-gnb-system-accountListBox-userdata-paddingX: 12px;
|
|
6451
|
+
--cmp-gnb-system-accountListBox-userdata-paddingY: 8px;
|
|
6452
|
+
--cmp-gnb-system-accountListBox-userdata-email-color: #888888;
|
|
6453
|
+
--cmp-gnb-system-accountListBox-userdata-name-color: #555555;
|
|
6454
|
+
--cmp-gnb-system-accountListBox-userdata-role-color: #888888;
|
|
6455
|
+
--cmp-gnb-system-accountListBox-list-paddingY: 4px;
|
|
6456
|
+
--cmp-gnb-system-alertButton-paddingX: 4px;
|
|
6457
|
+
--cmp-gnb-system-alertButton-count-color-light: #0075FF;
|
|
6458
|
+
--cmp-gnb-system-alertButton-count-color-dark: #FFD643;
|
|
6459
|
+
--cmp-gnb-system-alertButton-bg-notificationHover-light: #EFF6FF;
|
|
6460
|
+
--cmp-gnb-system-alertButton-icon-color-notification-light: #64ABFF;
|
|
6461
|
+
--cmp-gnb-system-alertButton-icon-color-notification-dark: #FEE17C;
|
|
6462
|
+
--cmp-gnb-system-setting-paddingX: 4px;
|
|
6463
|
+
--cmp-gnb-system-min-padding: 8px;
|
|
6464
|
+
--cmp-gnb-system-project-gap: 8px;
|
|
6465
|
+
--cmp-gnb-system-project-padding: 8px;
|
|
6323
6466
|
--cmp-list-group-gap: 8px;
|
|
6324
6467
|
--cmp-list-group-padding: 16px;
|
|
6325
6468
|
--cmp-listItem-paddingX: 16px;
|
|
@@ -6555,6 +6698,12 @@
|
|
|
6555
6698
|
font-weight: 500;
|
|
6556
6699
|
line-height: 20px;
|
|
6557
6700
|
}
|
|
6701
|
+
.typo-body-sm-semibold {
|
|
6702
|
+
font-family: Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;
|
|
6703
|
+
font-size: 12px;
|
|
6704
|
+
font-weight: 600;
|
|
6705
|
+
line-height: 20px;
|
|
6706
|
+
}
|
|
6558
6707
|
.typo-body-sm-bold {
|
|
6559
6708
|
font-family: Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;
|
|
6560
6709
|
font-size: 12px;
|