@simplysm/sd-claude 14.0.47 → 14.0.49

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.
Files changed (130) hide show
  1. package/{claude/references/sd-simplysm14/sd-claude/usage.md → README.md} +2 -2
  2. package/claude/rules/sd-claude-rules.md +25 -10
  3. package/claude/rules/sd-options.md +11 -6
  4. package/claude/sd-subagent-start.sh +6 -0
  5. package/claude/settings.json +1 -12
  6. package/claude/skills/sd-check/SKILL.md +43 -12
  7. package/claude/skills/sd-claude-docs/SKILL.md +30 -58
  8. package/claude/skills/sd-claude-docs/references/package-claudemd.md +12 -0
  9. package/claude/skills/sd-claude-docs/references/package-doc-gen.md +26 -13
  10. package/claude/skills/sd-commit/SKILL.md +1 -1
  11. package/claude/skills/sd-debug/SKILL.md +5 -3
  12. package/claude/skills/sd-deliverable/SKILL.md +1 -1
  13. package/claude/skills/sd-dev/SKILL.md +14 -9
  14. package/claude/skills/sd-doc-extract/SKILL.md +8 -10
  15. package/claude/skills/sd-doc-extract/_common.py +8 -1
  16. package/claude/skills/sd-doc-extract/_extract_docx.py +74 -34
  17. package/claude/skills/sd-doc-extract/_extract_pdf.py +12 -1
  18. package/claude/skills/sd-doc-extract/_extract_pptx.py +103 -23
  19. package/claude/skills/sd-doc-extract/_extract_xlsb.py +93 -4
  20. package/claude/skills/sd-doc-extract/_extract_xlsx.py +98 -36
  21. package/claude/skills/sd-doc-extract/extract.py +22 -3
  22. package/claude/skills/sd-inner-clarify/SKILL.md +78 -0
  23. package/claude/skills/sd-inner-debug/SKILL.md +1 -1
  24. package/claude/skills/sd-inner-review/SKILL.md +13 -0
  25. package/claude/skills/sd-issue/SKILL.md +1 -1
  26. package/claude/skills/sd-outlook/SKILL.md +1 -1
  27. package/claude/skills/sd-plan/SKILL.md +50 -17
  28. package/claude/skills/sd-prompt/SKILL.md +180 -178
  29. package/claude/skills/sd-prompt/references/eval-runner.md +5 -30
  30. package/claude/skills/sd-prompt/references/sd-eval-env-template.md +23 -0
  31. package/claude/skills/sd-refactor/SKILL.md +2 -2
  32. package/claude/skills/sd-tdd/SKILL.md +45 -16
  33. package/claude/skills/sd-use/SKILL.md +84 -80
  34. package/claude/skills/sd-wbs/SKILL.md +84 -27
  35. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/assets.md +2 -3
  36. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/hooks.md +7 -6
  37. package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/scripts.md +1 -9
  38. package/package.json +3 -2
  39. package/scripts/sync.mjs +4 -2
  40. package/claude/references/sd-simplysm14/angular/docs/bootstrap.md +0 -48
  41. package/claude/references/sd-simplysm14/angular/docs/directives.md +0 -236
  42. package/claude/references/sd-simplysm14/angular/docs/features.md +0 -379
  43. package/claude/references/sd-simplysm14/angular/docs/pipes.md +0 -32
  44. package/claude/references/sd-simplysm14/angular/docs/plugins.md +0 -37
  45. package/claude/references/sd-simplysm14/angular/docs/provider-types.md +0 -283
  46. package/claude/references/sd-simplysm14/angular/docs/providers.md +0 -379
  47. package/claude/references/sd-simplysm14/angular/docs/styling.md +0 -222
  48. package/claude/references/sd-simplysm14/angular/docs/type-utilities.md +0 -250
  49. package/claude/references/sd-simplysm14/angular/docs/ui-data.md +0 -275
  50. package/claude/references/sd-simplysm14/angular/docs/ui-form.md +0 -490
  51. package/claude/references/sd-simplysm14/angular/docs/ui-layout.md +0 -140
  52. package/claude/references/sd-simplysm14/angular/docs/ui-navigation.md +0 -273
  53. package/claude/references/sd-simplysm14/angular/docs/ui-overlay.md +0 -157
  54. package/claude/references/sd-simplysm14/angular/docs/ui-visual.md +0 -127
  55. package/claude/references/sd-simplysm14/angular/docs/utils.md +0 -295
  56. package/claude/references/sd-simplysm14/angular/usage.md +0 -489
  57. package/claude/references/sd-simplysm14/capacitor-plugin-auto-update/usage.md +0 -182
  58. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/file-operations.md +0 -154
  59. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/permissions.md +0 -84
  60. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/storage-paths.md +0 -107
  61. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/docs/types.md +0 -83
  62. package/claude/references/sd-simplysm14/capacitor-plugin-file-system/usage.md +0 -133
  63. package/claude/references/sd-simplysm14/capacitor-plugin-intent/usage.md +0 -203
  64. package/claude/references/sd-simplysm14/capacitor-plugin-usb-storage/usage.md +0 -258
  65. package/claude/references/sd-simplysm14/core-browser/usage.md +0 -306
  66. package/claude/references/sd-simplysm14/core-common/docs/errors.md +0 -82
  67. package/claude/references/sd-simplysm14/core-common/docs/extensions.md +0 -167
  68. package/claude/references/sd-simplysm14/core-common/docs/features.md +0 -136
  69. package/claude/references/sd-simplysm14/core-common/docs/types.md +0 -245
  70. package/claude/references/sd-simplysm14/core-common/docs/utils.md +0 -591
  71. package/claude/references/sd-simplysm14/core-common/usage.md +0 -255
  72. package/claude/references/sd-simplysm14/core-node/docs/child-process.md +0 -182
  73. package/claude/references/sd-simplysm14/core-node/docs/features.md +0 -214
  74. package/claude/references/sd-simplysm14/core-node/docs/file-system.md +0 -509
  75. package/claude/references/sd-simplysm14/core-node/docs/file-watching.md +0 -139
  76. package/claude/references/sd-simplysm14/core-node/docs/logging.md +0 -180
  77. package/claude/references/sd-simplysm14/core-node/docs/path.md +0 -176
  78. package/claude/references/sd-simplysm14/core-node/docs/utilities-cpx.md +0 -194
  79. package/claude/references/sd-simplysm14/core-node/docs/utilities-fsx.md +0 -469
  80. package/claude/references/sd-simplysm14/core-node/docs/utilities-pathx.md +0 -151
  81. package/claude/references/sd-simplysm14/core-node/docs/worker-threads.md +0 -334
  82. package/claude/references/sd-simplysm14/core-node/docs/worker.md +0 -205
  83. package/claude/references/sd-simplysm14/core-node/usage.md +0 -259
  84. package/claude/references/sd-simplysm14/excel/docs/core-classes.md +0 -453
  85. package/claude/references/sd-simplysm14/excel/docs/types.md +0 -459
  86. package/claude/references/sd-simplysm14/excel/docs/utilities.md +0 -194
  87. package/claude/references/sd-simplysm14/excel/docs/wrapper.md +0 -73
  88. package/claude/references/sd-simplysm14/excel/usage.md +0 -134
  89. package/claude/references/sd-simplysm14/lint/usage.md +0 -130
  90. package/claude/references/sd-simplysm14/orm-common/docs/core.md +0 -188
  91. package/claude/references/sd-simplysm14/orm-common/docs/expression.md +0 -190
  92. package/claude/references/sd-simplysm14/orm-common/docs/models.md +0 -17
  93. package/claude/references/sd-simplysm14/orm-common/docs/query-builder.md +0 -97
  94. package/claude/references/sd-simplysm14/orm-common/docs/queryable-executable.md +0 -250
  95. package/claude/references/sd-simplysm14/orm-common/docs/schema-builders.md +0 -364
  96. package/claude/references/sd-simplysm14/orm-common/docs/types.md +0 -522
  97. package/claude/references/sd-simplysm14/orm-common/usage.md +0 -229
  98. package/claude/references/sd-simplysm14/orm-node/docs/connections.md +0 -137
  99. package/claude/references/sd-simplysm14/orm-node/docs/core.md +0 -131
  100. package/claude/references/sd-simplysm14/orm-node/docs/types.md +0 -173
  101. package/claude/references/sd-simplysm14/orm-node/usage.md +0 -143
  102. package/claude/references/sd-simplysm14/sd-cli/usage.md +0 -782
  103. package/claude/references/sd-simplysm14/service-client/docs/features.md +0 -217
  104. package/claude/references/sd-simplysm14/service-client/docs/main.md +0 -148
  105. package/claude/references/sd-simplysm14/service-client/docs/protocol.md +0 -53
  106. package/claude/references/sd-simplysm14/service-client/docs/transport.md +0 -131
  107. package/claude/references/sd-simplysm14/service-client/docs/types.md +0 -129
  108. package/claude/references/sd-simplysm14/service-client/usage.md +0 -202
  109. package/claude/references/sd-simplysm14/service-common/docs/app-structure.md +0 -175
  110. package/claude/references/sd-simplysm14/service-common/docs/events.md +0 -64
  111. package/claude/references/sd-simplysm14/service-common/docs/protocol.md +0 -331
  112. package/claude/references/sd-simplysm14/service-common/docs/service-types.md +0 -90
  113. package/claude/references/sd-simplysm14/service-common/docs/types.md +0 -19
  114. package/claude/references/sd-simplysm14/service-common/usage.md +0 -154
  115. package/claude/references/sd-simplysm14/service-server/docs/auth.md +0 -64
  116. package/claude/references/sd-simplysm14/service-server/docs/core.md +0 -174
  117. package/claude/references/sd-simplysm14/service-server/docs/legacy.md +0 -25
  118. package/claude/references/sd-simplysm14/service-server/docs/main.md +0 -88
  119. package/claude/references/sd-simplysm14/service-server/docs/protocol.md +0 -33
  120. package/claude/references/sd-simplysm14/service-server/docs/services.md +0 -94
  121. package/claude/references/sd-simplysm14/service-server/docs/transport-http.md +0 -93
  122. package/claude/references/sd-simplysm14/service-server/docs/transport-socket.md +0 -119
  123. package/claude/references/sd-simplysm14/service-server/docs/types.md +0 -36
  124. package/claude/references/sd-simplysm14/service-server/docs/utils.md +0 -22
  125. package/claude/references/sd-simplysm14/service-server/usage.md +0 -171
  126. package/claude/references/sd-simplysm14/storage/usage.md +0 -301
  127. package/claude/references/sd-simplysm14.md +0 -35
  128. package/claude/rules/sd-clarify.md +0 -23
  129. package/claude/sd-session-start.sh +0 -10
  130. /package/{claude/references/sd-simplysm14/sd-claude/docs → docs}/cli.md +0 -0
@@ -1,273 +0,0 @@
1
- # UI - Navigation
2
-
3
- ## Collapse
4
-
5
- ### `SdCollapse`
6
-
7
- 접기/펼치기 패널 컴포넌트.
8
-
9
- ```typescript
10
- @Component({ selector: "sd-collapse" })
11
- class SdCollapse {
12
- open = input(false, { transform: booleanAttribute });
13
- }
14
- ```
15
-
16
- | Input | Type | Default | Description |
17
- |-------|------|---------|-------------|
18
- | `open` | `boolean` | `false` | 펼침 상태 |
19
-
20
- ### `SdCollapseIcon`
21
-
22
- 접기/펼치기 아이콘 컴포넌트. 화살표 회전 애니메이션.
23
-
24
- ```typescript
25
- @Component({ selector: "sd-collapse-icon" })
26
- class SdCollapseIcon {
27
- open = input(false, { transform: booleanAttribute });
28
- openRotate = input(90, { transform: numberAttribute });
29
- }
30
- ```
31
-
32
- | Input | Type | Default | Description |
33
- |-------|------|---------|-------------|
34
- | `open` | `boolean` | `false` | 펼침 상태 |
35
- | `openRotate` | `number` | `90` | 열림 시 회전 각도 |
36
-
37
- ## Tab
38
-
39
- > **CRITICAL — 역할 범위**
40
- > `sd-tab`/`sd-tab-item`은 **상단의 탭 선택 UI만** 담당한다. 내부 뷰(패널) 전환 기능은 **없다**.
41
- > `sd-tab-item`의 `<ng-content>`는 **탭 라벨 전용**이다. 이 안에 시트/폼/상세 등 뷰 콘텐츠를 넣지 않는다.
42
- > 뷰 콘텐츠는 `sd-tab` **바깥**에서 선택된 `value`를 기준으로 `@if` / `@switch`로 제어한다.
43
-
44
- ### `SdTab`
45
-
46
- 탭 컨테이너 컴포넌트. 선택된 값을 `value` model로 보관한다.
47
-
48
- ```typescript
49
- @Component({ selector: "sd-tab" })
50
- class SdTab<T> {
51
- value = model<T>();
52
- }
53
- ```
54
-
55
- ### `SdTabItem`
56
-
57
- 탭 항목 컴포넌트. 자신의 `value`가 부모 `SdTab.value`와 같으면 선택 상태가 된다. 클릭 시 부모 `value`를 자신의 `value`로 세팅한다.
58
-
59
- ```typescript
60
- @Component({ selector: "sd-tab-item" })
61
- class SdTabItem<T> {
62
- value = input.required<T>();
63
- }
64
- ```
65
-
66
- ### 사용 예시
67
-
68
- ```html
69
- <!-- ✅ 올바른 사용: 탭은 선택 UI, 뷰는 @if로 제어 -->
70
- <sd-tab [(value)]="tab">
71
- <sd-tab-item [value]="'list'">목록</sd-tab-item>
72
- <sd-tab-item [value]="'detail'">상세</sd-tab-item>
73
- </sd-tab>
74
-
75
- @if (tab() === "list") {
76
- <sd-sheet ...></sd-sheet>
77
- }
78
- @if (tab() === "detail") {
79
- <app-detail ...></app-detail>
80
- }
81
- ```
82
-
83
- ```html
84
- <!-- ❌ 잘못된 사용: sd-tab-item 안에 뷰 콘텐츠를 넣음 -->
85
- <sd-tab [(value)]="tab">
86
- <sd-tab-item [value]="'list'">
87
- 목록
88
- <sd-sheet ...></sd-sheet> <!-- 금지: 라벨 영역에 뷰를 넣지 않는다 -->
89
- </sd-tab-item>
90
- </sd-tab>
91
- ```
92
-
93
- ## Pagination
94
-
95
- ### `SdPagination`
96
-
97
- 페이지네이션 컴포넌트.
98
-
99
- ```typescript
100
- @Component({ selector: "sd-pagination" })
101
- class SdPagination {
102
- currentPage = model(0);
103
- totalPageCount = input(0, { transform: numberAttribute });
104
- visiblePageCount = input(10, { transform: numberAttribute });
105
- }
106
- ```
107
-
108
- | Input | Type | Default | Description |
109
- |-------|------|---------|-------------|
110
- | `currentPage` | `number` | `0` | 현재 페이지 (0-based, two-way) |
111
- | `totalPageCount` | `number` | `0` | 총 페이지 수 |
112
- | `visiblePageCount` | `number` | `10` | 한 번에 표시할 페이지 수 |
113
-
114
- ## Sidebar
115
-
116
- ### `SdSidebarContainer`
117
-
118
- 사이드바 컨테이너.
119
-
120
- ```typescript
121
- @Component({ selector: "sd-sidebar-container" })
122
- class SdSidebarContainer { }
123
- ```
124
-
125
- ### `SdSidebar`
126
-
127
- 사이드바 컴포넌트.
128
-
129
- ```typescript
130
- @Component({ selector: "sd-sidebar" })
131
- class SdSidebar { }
132
- ```
133
-
134
- ### `SdSidebarMenu`
135
-
136
- 사이드바 메뉴 항목. 재귀적 트리 구조 지원.
137
-
138
- ```typescript
139
- @Component({ selector: "sd-sidebar-menu" })
140
- class SdSidebarMenu {
141
- menus = input<SdMenu[]>([]);
142
- layout = input<"accordion" | "flat">();
143
- getMenuIsSelectedFn = input<(menu: SdMenu) => boolean>();
144
- }
145
- ```
146
-
147
- | Input | Type | Default | Description |
148
- |-------|------|---------|-------------|
149
- | `menus` | `SdMenu[]` | `[]` | 메뉴 항목 |
150
- | `layout` | `"accordion" \| "flat" \| undefined` | `undefined` | 레이아웃 모드 |
151
- | `getMenuIsSelectedFn` | `((menu) => boolean) \| undefined` | `undefined` | 커스텀 메뉴 선택 여부 함수 |
152
-
153
- ### `SdSidebarUser`
154
-
155
- 사이드바 사용자 영역 컴포넌트.
156
-
157
- ```typescript
158
- @Component({ selector: "sd-sidebar-user" })
159
- class SdSidebarUser {
160
- userMenu = input<SdSidebarUserMenu>();
161
- }
162
- ```
163
-
164
- ### `SdSidebarUserMenu`
165
-
166
- ```typescript
167
- interface SdSidebarUserMenu {
168
- title: string;
169
- menus: {
170
- title: string;
171
- onClick: () => void;
172
- }[];
173
- }
174
- ```
175
-
176
- | Field | Type | Description |
177
- |-------|------|-------------|
178
- | `title` | `string` | 사용자 메뉴 제목 |
179
- | `menus` | `{ title: string; onClick: () => void }[]` | 하위 메뉴 항목 배열 |
180
-
181
- ## Topbar
182
-
183
- ### `SdTopbarContainer`
184
-
185
- 탑바 컨테이너.
186
-
187
- ```typescript
188
- @Component({ selector: "sd-topbar-container" })
189
- class SdTopbarContainer { }
190
- ```
191
-
192
- ### `SdTopbar`
193
-
194
- 탑바 컴포넌트.
195
-
196
- ```typescript
197
- @Component({ selector: "sd-topbar" })
198
- class SdTopbar { }
199
- ```
200
-
201
- ### `SdTopbarMenu`
202
-
203
- 탑바 메뉴 항목.
204
-
205
- ```typescript
206
- @Component({ selector: "sd-topbar-menu" })
207
- class SdTopbarMenu {
208
- menus = input<SdMenu[]>([]);
209
- getMenuIsSelectedFn = input<(menu: SdMenu) => boolean>();
210
- }
211
- ```
212
-
213
- | Input | Type | Default | Description |
214
- |-------|------|---------|-------------|
215
- | `menus` | `SdMenu[]` | `[]` | 메뉴 항목 |
216
- | `getMenuIsSelectedFn` | `((menu) => boolean) \| undefined` | `undefined` | 커스텀 메뉴 선택 여부 함수 |
217
-
218
- ### `SdTopbarUser`
219
-
220
- 탑바 사용자 영역 컴포넌트.
221
-
222
- ```typescript
223
- @Component({ selector: "sd-topbar-user" })
224
- class SdTopbarUser {
225
- menus = input.required<SdTopbarUserMenu[]>();
226
- }
227
- ```
228
-
229
- ### `SdTopbarUserMenu`
230
-
231
- ```typescript
232
- interface SdTopbarUserMenu {
233
- title: string;
234
- onClick: () => void;
235
- }
236
- ```
237
-
238
- | Field | Type | Description |
239
- |-------|------|-------------|
240
- | `title` | `string` | 메뉴 제목 |
241
- | `onClick` | `() => void` | 클릭 핸들러 |
242
-
243
- ## Menu Utilities
244
-
245
- ### `getMenuRouterLinkOption`
246
-
247
- 메뉴에서 라우터 링크 옵션을 추출한다. children이 있거나 url이 있는 메뉴는 undefined 반환.
248
-
249
- ```typescript
250
- function getMenuRouterLinkOption(
251
- menu: SdMenu,
252
- ): { link: string; queryParams: Record<string, string> | undefined } | undefined
253
- ```
254
-
255
- 반환값: `{ link: "/home/{codeChain}", queryParams }` 또는 `undefined`
256
-
257
- ### `getIsMenuSelected`
258
-
259
- 메뉴가 현재 선택된 상태인지 확인한다.
260
-
261
- ```typescript
262
- function getIsMenuSelected(
263
- menu: SdMenu,
264
- fullPageCode: string | undefined,
265
- customFn?: (menu: SdMenu) => boolean,
266
- ): boolean
267
- ```
268
-
269
- | Parameter | Type | Description |
270
- |-----------|------|-------------|
271
- | `menu` | `SdMenu` | 메뉴 항목 |
272
- | `fullPageCode` | `string \| undefined` | 현재 페이지 코드 |
273
- | `customFn` | `((menu) => boolean) \| undefined` | 커스텀 비교 함수 |
@@ -1,157 +0,0 @@
1
- # UI - Overlay
2
-
3
- ## Dropdown
4
-
5
- ### `SdDropdown`
6
-
7
- 드롭다운 트리거 컴포넌트. `SdDropdownPopup`과 함께 사용한다.
8
-
9
- ```typescript
10
- @Component({ selector: "sd-dropdown" })
11
- class SdDropdown {
12
- open = model(false);
13
- disabled = input(false, { transform: booleanAttribute });
14
- }
15
- ```
16
-
17
- | Input | Type | Default | Description |
18
- |-------|------|---------|-------------|
19
- | `open` | `boolean` | `false` | 드롭다운 열림 상태 (two-way) |
20
- | `disabled` | `boolean` | `false` | 비활성화 |
21
-
22
- ### `SdDropdownPopup`
23
-
24
- 드롭다운 팝업 컨텐츠 컴포넌트.
25
-
26
- ```typescript
27
- @Component({ selector: "sd-dropdown-popup" })
28
- class SdDropdownPopup { }
29
- ```
30
-
31
- ## Modal
32
-
33
- ### `SdModal`
34
-
35
- 모달 래퍼 컴포넌트. 보통 `SdModalProvider.showAsync()`로 생성되며 직접 사용하지 않는다.
36
-
37
- ```typescript
38
- @Component({ selector: "sd-modal" })
39
- class SdModal {
40
- open = model(false);
41
- key = input<string | undefined>(undefined);
42
- title = input("");
43
- hideHeader = input(false);
44
- hideCloseButton = input(false);
45
- headerStyle = input<string | undefined>(undefined);
46
- useCloseByBackdrop = input(true);
47
- useCloseByEscapeKey = input(true);
48
- float = input(false);
49
- fill = input(false);
50
- resizable = input(false);
51
- movable = input(false);
52
- position = input<"bottom-right" | "top-right" | undefined>(undefined);
53
- minHeightPx = input<number | undefined>(undefined);
54
- minWidthPx = input<number | undefined>(undefined);
55
- heightPx = input<number | undefined>(undefined);
56
- widthPx = input<number | undefined>(undefined);
57
- actionTplRef = input<TemplateRef<any> | undefined>(undefined);
58
-
59
- closeRequest = output<void>();
60
- }
61
- ```
62
-
63
- | Input | Type | Default | Description |
64
- |-------|------|---------|-------------|
65
- | `open` | `boolean` | `false` | 열림 상태 (two-way) |
66
- | `title` | `string` | `""` | 모달 제목 |
67
- | `hideHeader` | `boolean` | `false` | 헤더 숨김 |
68
- | `hideCloseButton` | `boolean` | `false` | 닫기 버튼 숨김 |
69
- | `useCloseByBackdrop` | `boolean` | `true` | 배경 클릭으로 닫기 |
70
- | `useCloseByEscapeKey` | `boolean` | `true` | ESC 키로 닫기 |
71
- | `float` | `boolean` | `false` | 플로팅 모달 |
72
- | `fill` | `boolean` | `false` | 전체 화면 채우기 |
73
- | `resizable` | `boolean` | `false` | 크기 조절 가능 |
74
- | `movable` | `boolean` | `false` | 이동 가능 |
75
- | `position` | `"bottom-right" \| "top-right"` | - | 위치 프리셋 |
76
- | `actionTplRef` | `TemplateRef<any> \| undefined` | `undefined` | 헤더 액션 영역 템플릿 (SdModalProvider에서 설정) |
77
-
78
- | Output | Type | Description |
79
- |--------|------|-------------|
80
- | `closeRequest` | `void` | 배경 클릭, ESC 키, 닫기 버튼으로 닫기 요청 시 발생 |
81
-
82
- ### `SdPromptModal`
83
-
84
- 프롬프트 입력 모달. 텍스트 입력을 받아 반환한다.
85
-
86
- ```typescript
87
- @Component({ selector: "sd-prompt-modal" })
88
- class SdPromptModal implements SdModalContentDef<string> {
89
- message = input.required<string>();
90
- close = output<string>();
91
- initialized = signal(true);
92
- }
93
- ```
94
-
95
- ### `SdConfirmModal`
96
-
97
- 확인/취소 모달.
98
-
99
- ```typescript
100
- @Component({ selector: "sd-confirm-modal" })
101
- class SdConfirmModal implements SdModalContentDef<boolean> {
102
- message = input.required<string>();
103
- close = output<boolean>();
104
- initialized = signal(true);
105
- }
106
- ```
107
-
108
- ## Toast
109
-
110
- ### `SdToast`
111
-
112
- 토스트 개별 항목 컴포넌트. `SdToastProvider`에서 내부적으로 생성한다.
113
-
114
- ```typescript
115
- @Component({ selector: "sd-toast" })
116
- class SdToast {
117
- open = model(false);
118
- useProgress = input(false, { transform: booleanAttribute });
119
- theme = input<SdToastTheme>("info");
120
- progress = model(0);
121
- message = model<string | undefined>(undefined);
122
- }
123
- ```
124
-
125
- ### `SdToastContainer`
126
-
127
- 토스트 컨테이너 컴포넌트. `SdToastProvider`에서 내부적으로 생성하여 body에 부착한다.
128
-
129
- ```typescript
130
- @Component({ selector: "sd-toast-container" })
131
- class SdToastContainer {
132
- overlap = input(false, { transform: booleanAttribute });
133
- }
134
- ```
135
-
136
- ## Busy
137
-
138
- ### `SdBusyContainer`
139
-
140
- busy 표시 컨테이너 컴포넌트. spinner/bar/cube 3가지 타입을 지원한다.
141
-
142
- ```typescript
143
- @Component({ selector: "sd-busy-container" })
144
- class SdBusyContainer {
145
- busy = input(false, { transform: booleanAttribute });
146
- message = input<string | undefined>(undefined);
147
- type = input<SdBusyType | undefined>(undefined);
148
- progressPercent = input<number | undefined>(undefined);
149
- }
150
- ```
151
-
152
- | Input | Type | Default | Description |
153
- |-------|------|---------|-------------|
154
- | `busy` | `boolean` | `false` | busy 상태 |
155
- | `message` | `string \| undefined` | `undefined` | busy 메시지 |
156
- | `type` | `SdBusyType \| undefined` | `undefined` | 표시 유형 (spinner, bar, cube). undefined이면 부모의 SdBusyProvider.type 사용 |
157
- | `progressPercent` | `number \| undefined` | `undefined` | 진행률 (0-100). 설정 시 progress bar로 표시 |
@@ -1,127 +0,0 @@
1
- # UI - Visual
2
-
3
- ## `SdLabel`
4
-
5
- 라벨 컴포넌트. 테마 색상과 클릭 가능 여부를 지원한다.
6
-
7
- ```typescript
8
- @Component({ selector: "sd-label" })
9
- class SdLabel {
10
- theme = input<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
11
- color = input<string>();
12
- clickable = input(false, { transform: booleanAttribute });
13
- }
14
- ```
15
-
16
- | Input | Type | Default | Description |
17
- |-------|------|---------|-------------|
18
- | `theme` | `string \| undefined` | `undefined` | 테마 색상 |
19
- | `color` | `string \| undefined` | `undefined` | 커스텀 CSS 색상 |
20
- | `clickable` | `boolean` | `false` | 클릭 가능 여부 |
21
-
22
- 호스트 속성: `data-sd-theme`
23
-
24
- ## `SdNote`
25
-
26
- 노트/알림 메시지 컴포넌트.
27
-
28
- ```typescript
29
- @Component({ selector: "sd-note" })
30
- class SdNote {
31
- theme = input<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
32
- size = input<"sm" | "lg">();
33
- inset = input(false, { transform: booleanAttribute });
34
- }
35
- ```
36
-
37
- | Input | Type | Default | Description |
38
- |-------|------|---------|-------------|
39
- | `theme` | `string \| undefined` | `undefined` | 테마 색상 |
40
- | `size` | `"sm" \| "lg" \| undefined` | `undefined` | 크기 |
41
- | `inset` | `boolean` | `false` | 삽입 스타일 (테두리 없음) |
42
-
43
- 호스트 속성: `data-sd-theme`
44
-
45
- ## `SdProgress`
46
-
47
- 진행률 바 컴포넌트.
48
-
49
- ```typescript
50
- @Component({ selector: "sd-progress" })
51
- class SdProgress {
52
- inset = input(false, { transform: booleanAttribute });
53
- size = input<"sm" | "lg">();
54
- theme = input.required<"primary" | "secondary" | "info" | "success" | "warning" | "danger" | "gray" | "blue-gray">();
55
- value = input.required<number>();
56
- }
57
- ```
58
-
59
- | Input | Type | Default | Description |
60
- |-------|------|---------|-------------|
61
- | `inset` | `boolean` | `false` | 삽입 스타일 |
62
- | `size` | `"sm" \| "lg" \| undefined` | `undefined` | 크기 |
63
- | `theme` | `string` | required | 테마 색상 |
64
- | `value` | `number` | required | 진행률 (0-100) |
65
-
66
- ## `SdCalendar`
67
-
68
- 캘린더 컴포넌트. 항목을 날짜별로 배치한다.
69
-
70
- ```typescript
71
- @Component({ selector: "sd-calendar" })
72
- class SdCalendar<T> {
73
- items = input.required<T[]>();
74
- getItemDateFn = input.required<(item: T, index: number) => DateOnly>();
75
- yearMonth = input(new DateOnly().setDay(1));
76
- weekStartDay = input(0);
77
- minDaysInFirstWeek = input(1);
78
- }
79
- ```
80
-
81
- | Input | Type | Default | Description |
82
- |-------|------|---------|-------------|
83
- | `items` | `T[]` | required | 표시할 항목 |
84
- | `getItemDateFn` | `(item, index) => DateOnly` | required | 항목에서 날짜 추출 함수 |
85
- | `yearMonth` | `DateOnly` | 이번 달 1일 | 표시할 연월 |
86
- | `weekStartDay` | `number` | `0` | 주 시작 요일 (0=일요일) |
87
- | `minDaysInFirstWeek` | `number` | `1` | 첫째 주 최소 일수 |
88
-
89
- ## `SdBarcode`
90
-
91
- 바코드 생성 컴포넌트. bwip-js 라이브러리를 사용한다.
92
-
93
- ```typescript
94
- @Component({ selector: "sd-barcode" })
95
- class SdBarcode {
96
- type = input.required<BarcodeType>();
97
- value = input<string>();
98
- }
99
- ```
100
-
101
- | Input | Type | Default | Description |
102
- |-------|------|---------|-------------|
103
- | `type` | `BarcodeType` | required | 바코드 타입 |
104
- | `value` | `string \| undefined` | `undefined` | 바코드 값. 빈 문자열이거나 undefined이면 빈 출력 |
105
-
106
- ### `BarcodeType`
107
-
108
- bwip-js에서 지원하는 바코드 타입 문자열. 예: `"qrcode"`, `"code128"`, `"ean13"` 등.
109
-
110
- ## `SdEcharts`
111
-
112
- ECharts 차트 래퍼 컴포넌트.
113
-
114
- ```typescript
115
- @Component({ selector: "sd-echarts" })
116
- class SdEcharts {
117
- option = input.required<echarts.EChartsOption>();
118
- notMerge = input(false);
119
- loading = input(false);
120
- }
121
- ```
122
-
123
- | Input | Type | Default | Description |
124
- |-------|------|---------|-------------|
125
- | `option` | `echarts.EChartsOption` | required | ECharts 옵션 |
126
- | `notMerge` | `boolean` | `false` | 옵션 업데이트 시 병합하지 않고 교체 |
127
- | `loading` | `boolean` | `false` | 로딩 표시 |