moru-krds-react 0.1.0

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 (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +61 -0
  3. package/dist/accordion/index.d.ts +63 -0
  4. package/dist/accordion/index.d.ts.map +1 -0
  5. package/dist/accordion/index.js +145 -0
  6. package/dist/accordion/index.js.map +1 -0
  7. package/dist/alert/index.d.ts +44 -0
  8. package/dist/alert/index.d.ts.map +1 -0
  9. package/dist/alert/index.js +66 -0
  10. package/dist/alert/index.js.map +1 -0
  11. package/dist/avatar/index.d.ts +102 -0
  12. package/dist/avatar/index.d.ts.map +1 -0
  13. package/dist/avatar/index.js +146 -0
  14. package/dist/avatar/index.js.map +1 -0
  15. package/dist/badge/index.d.ts +49 -0
  16. package/dist/badge/index.d.ts.map +1 -0
  17. package/dist/badge/index.js +41 -0
  18. package/dist/badge/index.js.map +1 -0
  19. package/dist/breadcrumb/index.d.ts +43 -0
  20. package/dist/breadcrumb/index.d.ts.map +1 -0
  21. package/dist/breadcrumb/index.js +43 -0
  22. package/dist/breadcrumb/index.js.map +1 -0
  23. package/dist/button/index.d.ts +78 -0
  24. package/dist/button/index.d.ts.map +1 -0
  25. package/dist/button/index.js +83 -0
  26. package/dist/button/index.js.map +1 -0
  27. package/dist/checkbox/index.d.ts +97 -0
  28. package/dist/checkbox/index.d.ts.map +1 -0
  29. package/dist/checkbox/index.js +110 -0
  30. package/dist/checkbox/index.js.map +1 -0
  31. package/dist/combobox/index.d.ts +135 -0
  32. package/dist/combobox/index.d.ts.map +1 -0
  33. package/dist/combobox/index.js +416 -0
  34. package/dist/combobox/index.js.map +1 -0
  35. package/dist/context-menu/index.d.ts +94 -0
  36. package/dist/context-menu/index.d.ts.map +1 -0
  37. package/dist/context-menu/index.js +399 -0
  38. package/dist/context-menu/index.js.map +1 -0
  39. package/dist/critical-alert/index.d.ts +39 -0
  40. package/dist/critical-alert/index.d.ts.map +1 -0
  41. package/dist/critical-alert/index.js +50 -0
  42. package/dist/critical-alert/index.js.map +1 -0
  43. package/dist/data-table/index.d.ts +94 -0
  44. package/dist/data-table/index.d.ts.map +1 -0
  45. package/dist/data-table/index.js +128 -0
  46. package/dist/data-table/index.js.map +1 -0
  47. package/dist/disclosure/index.d.ts +35 -0
  48. package/dist/disclosure/index.d.ts.map +1 -0
  49. package/dist/disclosure/index.js +54 -0
  50. package/dist/disclosure/index.js.map +1 -0
  51. package/dist/drawer/index.d.ts +106 -0
  52. package/dist/drawer/index.d.ts.map +1 -0
  53. package/dist/drawer/index.js +352 -0
  54. package/dist/drawer/index.js.map +1 -0
  55. package/dist/empty-state/index.d.ts +86 -0
  56. package/dist/empty-state/index.d.ts.map +1 -0
  57. package/dist/empty-state/index.js +138 -0
  58. package/dist/empty-state/index.js.map +1 -0
  59. package/dist/env.d.js +1 -0
  60. package/dist/env.d.js.map +1 -0
  61. package/dist/field/index.d.ts +149 -0
  62. package/dist/field/index.d.ts.map +1 -0
  63. package/dist/field/index.js +121 -0
  64. package/dist/field/index.js.map +1 -0
  65. package/dist/file-upload/index.d.ts +140 -0
  66. package/dist/file-upload/index.d.ts.map +1 -0
  67. package/dist/file-upload/index.js +249 -0
  68. package/dist/file-upload/index.js.map +1 -0
  69. package/dist/footer/index.d.ts +155 -0
  70. package/dist/footer/index.d.ts.map +1 -0
  71. package/dist/footer/index.js +186 -0
  72. package/dist/footer/index.js.map +1 -0
  73. package/dist/header/index.d.ts +170 -0
  74. package/dist/header/index.d.ts.map +1 -0
  75. package/dist/header/index.js +258 -0
  76. package/dist/header/index.js.map +1 -0
  77. package/dist/identifier/index.d.ts +38 -0
  78. package/dist/identifier/index.d.ts.map +1 -0
  79. package/dist/identifier/index.js +55 -0
  80. package/dist/identifier/index.js.map +1 -0
  81. package/dist/in-page-navigation/index.d.ts +71 -0
  82. package/dist/in-page-navigation/index.d.ts.map +1 -0
  83. package/dist/in-page-navigation/index.js +137 -0
  84. package/dist/in-page-navigation/index.js.map +1 -0
  85. package/dist/index.d.ts +57 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +47 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/input-group/index.d.ts +66 -0
  90. package/dist/input-group/index.d.ts.map +1 -0
  91. package/dist/input-group/index.js +85 -0
  92. package/dist/input-group/index.js.map +1 -0
  93. package/dist/lib/krds.d.ts +45 -0
  94. package/dist/lib/krds.d.ts.map +1 -0
  95. package/dist/lib/krds.js +11 -0
  96. package/dist/lib/krds.js.map +1 -0
  97. package/dist/lib/link.d.ts +34 -0
  98. package/dist/lib/link.d.ts.map +1 -0
  99. package/dist/lib/link.js +8 -0
  100. package/dist/lib/link.js.map +1 -0
  101. package/dist/main-menu/index.d.ts +123 -0
  102. package/dist/main-menu/index.d.ts.map +1 -0
  103. package/dist/main-menu/index.js +613 -0
  104. package/dist/main-menu/index.js.map +1 -0
  105. package/dist/masthead/index.d.ts +25 -0
  106. package/dist/masthead/index.d.ts.map +1 -0
  107. package/dist/masthead/index.js +21 -0
  108. package/dist/masthead/index.js.map +1 -0
  109. package/dist/modal/index.d.ts +105 -0
  110. package/dist/modal/index.d.ts.map +1 -0
  111. package/dist/modal/index.js +285 -0
  112. package/dist/modal/index.js.map +1 -0
  113. package/dist/pagination/index.d.ts +58 -0
  114. package/dist/pagination/index.d.ts.map +1 -0
  115. package/dist/pagination/index.js +82 -0
  116. package/dist/pagination/index.js.map +1 -0
  117. package/dist/progress/index.d.ts +58 -0
  118. package/dist/progress/index.d.ts.map +1 -0
  119. package/dist/progress/index.js +125 -0
  120. package/dist/progress/index.js.map +1 -0
  121. package/dist/radio/index.d.ts +111 -0
  122. package/dist/radio/index.d.ts.map +1 -0
  123. package/dist/radio/index.js +136 -0
  124. package/dist/radio/index.js.map +1 -0
  125. package/dist/resize/index.d.ts +118 -0
  126. package/dist/resize/index.d.ts.map +1 -0
  127. package/dist/resize/index.js +342 -0
  128. package/dist/resize/index.js.map +1 -0
  129. package/dist/scroll-area/index.d.ts +40 -0
  130. package/dist/scroll-area/index.d.ts.map +1 -0
  131. package/dist/scroll-area/index.js +52 -0
  132. package/dist/scroll-area/index.js.map +1 -0
  133. package/dist/select/index.d.ts +67 -0
  134. package/dist/select/index.d.ts.map +1 -0
  135. package/dist/select/index.js +61 -0
  136. package/dist/select/index.js.map +1 -0
  137. package/dist/separator/index.d.ts +47 -0
  138. package/dist/separator/index.d.ts.map +1 -0
  139. package/dist/separator/index.js +61 -0
  140. package/dist/separator/index.js.map +1 -0
  141. package/dist/side-navigation/index.d.ts +78 -0
  142. package/dist/side-navigation/index.d.ts.map +1 -0
  143. package/dist/side-navigation/index.js +188 -0
  144. package/dist/side-navigation/index.js.map +1 -0
  145. package/dist/skeleton/index.d.ts +76 -0
  146. package/dist/skeleton/index.d.ts.map +1 -0
  147. package/dist/skeleton/index.js +78 -0
  148. package/dist/skeleton/index.js.map +1 -0
  149. package/dist/skip-link/index.d.ts +46 -0
  150. package/dist/skip-link/index.d.ts.map +1 -0
  151. package/dist/skip-link/index.js +37 -0
  152. package/dist/skip-link/index.js.map +1 -0
  153. package/dist/spinner/index.d.ts +58 -0
  154. package/dist/spinner/index.d.ts.map +1 -0
  155. package/dist/spinner/index.js +36 -0
  156. package/dist/spinner/index.js.map +1 -0
  157. package/dist/step-indicator/index.d.ts +41 -0
  158. package/dist/step-indicator/index.d.ts.map +1 -0
  159. package/dist/step-indicator/index.js +63 -0
  160. package/dist/step-indicator/index.js.map +1 -0
  161. package/dist/structured-list/index.d.ts +150 -0
  162. package/dist/structured-list/index.d.ts.map +1 -0
  163. package/dist/structured-list/index.js +194 -0
  164. package/dist/structured-list/index.js.map +1 -0
  165. package/dist/tab/index.d.ts +108 -0
  166. package/dist/tab/index.d.ts.map +1 -0
  167. package/dist/tab/index.js +198 -0
  168. package/dist/tab/index.js.map +1 -0
  169. package/dist/table/index.d.ts +75 -0
  170. package/dist/table/index.d.ts.map +1 -0
  171. package/dist/table/index.js +91 -0
  172. package/dist/table/index.js.map +1 -0
  173. package/dist/tag/index.d.ts +71 -0
  174. package/dist/tag/index.d.ts.map +1 -0
  175. package/dist/tag/index.js +45 -0
  176. package/dist/tag/index.js.map +1 -0
  177. package/dist/text-input/index.d.ts +69 -0
  178. package/dist/text-input/index.d.ts.map +1 -0
  179. package/dist/text-input/index.js +70 -0
  180. package/dist/text-input/index.js.map +1 -0
  181. package/dist/text-list/index.d.ts +71 -0
  182. package/dist/text-list/index.d.ts.map +1 -0
  183. package/dist/text-list/index.js +79 -0
  184. package/dist/text-list/index.js.map +1 -0
  185. package/dist/textarea/index.d.ts +29 -0
  186. package/dist/textarea/index.d.ts.map +1 -0
  187. package/dist/textarea/index.js +69 -0
  188. package/dist/textarea/index.js.map +1 -0
  189. package/dist/toast/index.d.ts +76 -0
  190. package/dist/toast/index.d.ts.map +1 -0
  191. package/dist/toast/index.js +183 -0
  192. package/dist/toast/index.js.map +1 -0
  193. package/dist/tooltip/index.d.ts +84 -0
  194. package/dist/tooltip/index.d.ts.map +1 -0
  195. package/dist/tooltip/index.js +329 -0
  196. package/dist/tooltip/index.js.map +1 -0
  197. package/package.json +57 -0
  198. package/src/accordion/index.tsx +251 -0
  199. package/src/alert/index.tsx +111 -0
  200. package/src/avatar/index.tsx +272 -0
  201. package/src/badge/index.tsx +91 -0
  202. package/src/breadcrumb/index.tsx +125 -0
  203. package/src/button/index.tsx +190 -0
  204. package/src/checkbox/index.tsx +247 -0
  205. package/src/combobox/index.tsx +700 -0
  206. package/src/context-menu/index.tsx +623 -0
  207. package/src/critical-alert/index.tsx +102 -0
  208. package/src/data-table/index.tsx +289 -0
  209. package/src/disclosure/index.tsx +87 -0
  210. package/src/drawer/index.tsx +516 -0
  211. package/src/empty-state/index.tsx +256 -0
  212. package/src/env.d.ts +10 -0
  213. package/src/field/index.tsx +307 -0
  214. package/src/file-upload/index.tsx +492 -0
  215. package/src/footer/index.tsx +393 -0
  216. package/src/header/index.tsx +498 -0
  217. package/src/identifier/index.tsx +96 -0
  218. package/src/in-page-navigation/index.tsx +258 -0
  219. package/src/index.ts +72 -0
  220. package/src/input-group/index.tsx +197 -0
  221. package/src/lib/krds.ts +75 -0
  222. package/src/lib/link.tsx +35 -0
  223. package/src/main-menu/index.tsx +912 -0
  224. package/src/masthead/index.tsx +50 -0
  225. package/src/modal/index.tsx +457 -0
  226. package/src/pagination/index.tsx +198 -0
  227. package/src/progress/index.tsx +198 -0
  228. package/src/radio/index.tsx +283 -0
  229. package/src/resize/index.tsx +541 -0
  230. package/src/scroll-area/index.tsx +96 -0
  231. package/src/select/index.tsx +136 -0
  232. package/src/separator/index.tsx +107 -0
  233. package/src/side-navigation/index.tsx +336 -0
  234. package/src/skeleton/index.tsx +172 -0
  235. package/src/skip-link/index.tsx +89 -0
  236. package/src/spinner/index.tsx +98 -0
  237. package/src/step-indicator/index.tsx +122 -0
  238. package/src/structured-list/index.tsx +395 -0
  239. package/src/tab/index.tsx +348 -0
  240. package/src/table/index.tsx +186 -0
  241. package/src/tag/index.tsx +127 -0
  242. package/src/text-input/index.tsx +156 -0
  243. package/src/text-list/index.tsx +177 -0
  244. package/src/textarea/index.tsx +113 -0
  245. package/src/toast/index.tsx +311 -0
  246. package/src/tooltip/index.tsx +496 -0
  247. package/styles/krds-tailwind.css +335 -0
@@ -0,0 +1,150 @@
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
+ import { type KrdsSize } from '../lib/krds';
3
+ /**
4
+ * ๊ตฌ์กฐํ™” ๋ชฉ๋ก โ€” KRDS `krds-structured-list`.
5
+ *
6
+ * ใ€Œ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ๋œ ์ฝ˜ํ…์ธ  ์ง‘ํ•ฉใ€์„ ์นด๋“œ๋กœ ๋Š˜์–ด๋†“๋Š”๋‹ค. ๋Œ€๋ถ€๋ถ„์€ {@link StructuredCard} ํ•œ ์ค„๋กœ ๋๋‚˜๊ณ ,
7
+ * ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ‚ท์— ์—†๋Š” ๊ฒƒ์„ ๋ผ์šธ ๋•Œ๋งŒ ์กฐ๊ฐ(`StructuredItem*`)์„ ์ง์ ‘ ์กฐ๋ฆฝํ•œ๋‹ค.
8
+ * ํ–‰ยท์—ด์ด ์žˆ๋Š” ์ž๋ฃŒ๋Š” ์นด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ `ui/table` ยท `ui/data-table` ์ด๋‹ค.
9
+ * `meta`(๋ถ€๊ฐ€ ์ •๋ณด ์ค„)๋Š” **์ „ํญ ๋ฐฐ์น˜ ์ „์šฉ**์ด๋‹ค โ€” `layout="grid"` ์—์„œ๋Š” ๊ตฌ๋ถ„์„ ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.
10
+ * ์นด๋“œ ์•ˆ ๋ฒ„ํŠผ์—๋Š” `title` ๋กœ ์–ด๋А ํ•ญ๋ชฉ์˜ ๊ฒƒ์ธ์ง€ ์•Œ๋ฆฐ๋‹ค(ใ€Œ์‹ ์ฒญํ•˜๊ธฐใ€๊ฐ€ 20๊ฐœ์ธ ๋ชฉ๋ก์„ ์ƒ๊ฐํ•˜๋ผ).
11
+ * ๋ชฉ๋ก์ด ๋น„๋ฉด `StructuredList` ๋Œ€์‹  {@link StructuredListEmpty} ๋ฅผ ๊ทธ๋ฆฐ๋‹ค.
12
+ *
13
+ * @example
14
+ * <StructuredListToolbar info={`์ „์ฒด ${total}๊ฑด`}>
15
+ * <SortSelect aria-label="์ •๋ ฌ๊ธฐ์ค€" options={sorts} />
16
+ * </StructuredListToolbar>
17
+ * <StructuredList layout="full">
18
+ * {rows.map((r) => (
19
+ * <StructuredCard
20
+ * key={r.id}
21
+ * href={`/board/notice/${r.id}`}
22
+ * title={r.title}
23
+ * summary={r.summary}
24
+ * dateLabel="๋“ฑ๋ก์ผ"
25
+ * dateValue={r.createdAt}
26
+ * badge={<Badge tone="primary">๊ณต์ง€</Badge>}
27
+ * tags={r.tags}
28
+ * />
29
+ * ))}
30
+ * </StructuredList>
31
+ *
32
+ * ์ž์„ธํžˆ: docs/krds/09-๋ถ€ํ’ˆ-๋…ธํŠธ.md#๊ตฌ์กฐํ™”๋ชฉ๋ก
33
+ */
34
+ /**
35
+ * ๋ฐฐ์น˜. `grid` 3์—ด ๊ฒฉ์ž(๊ธฐ๋ณธ) ยท `full` ํ•œ ์ค„์— ํ•œ ํ•ญ๋ชฉ(์ œ๋ชฉ์ด ์ปค์ง„๋‹ค) ยท `compact` ์ „ํญ์ด๋˜ ์ œ๋ชฉ์€ ๊ทธ๋Œ€๋กœ.
36
+ */
37
+ export type StructuredListLayout = 'grid' | 'full' | 'compact';
38
+ /**
39
+ * ํฌ๊ธฐ. ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ **ํ•ญ๋ชฉ ์•ˆ์ชฝ ์—ฌ๋ฐฑ**๊ณผ ์šฐ์ƒ๋‹จ ์•ก์…˜ ๋ฒ„ํŠผ ์œ„์น˜๋‹ค.
40
+ * `layout="full"` ๊ณผ ํ•จ๊ป˜ ์ฃผ๋ฉด ์ œ๋ชฉ ํฌ๊ธฐ๋Š” ๋ฐฐ์น˜ ์ชฝ์ด ์ด๊ฒจ ์—ฌ๋ฐฑ๋งŒ ์ค„์–ด๋“ ๋‹ค.
41
+ */
42
+ export type StructuredListSize = Extract<KrdsSize, 'small' | 'medium' | 'large'>;
43
+ export type StructuredListProps = ComponentPropsWithRef<'ul'> & {
44
+ /** ๋ฐฐ์น˜. ๊ธฐ๋ณธ `grid`. */
45
+ layout?: StructuredListLayout;
46
+ /** ํฌ๊ธฐ. ๊ธฐ๋ณธ `medium`. */
47
+ size?: StructuredListSize;
48
+ /** ํ•ญ๋ชฉ๋งˆ๋‹ค ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์ผ ๋‹ค โ€” ์ผœ์ง€ ์•Š์œผ๋ฉด ์ฒดํฌ๋ฐ•์Šค์™€ ์šฐ์ƒ๋‹จ ๋ฒ„ํŠผ์ด ๊ฒน์นœ๋‹ค. */
49
+ selectable?: boolean;
50
+ };
51
+ /** ๋ชฉ๋ก ๊ป๋ฐ๊ธฐ โ€” ํ‚ท `krds-structured-list`. ๋ชฉ๋ก ์ด๋ฆ„์ด ํ•„์š”ํ•˜๋ฉด `aria-label` ์„ ๋„˜๊ธด๋‹ค. */
52
+ export declare function StructuredList({ layout, size, selectable, className, children, ...rest }: StructuredListProps): import("react").JSX.Element;
53
+ export type StructuredItemProps = ComponentPropsWithRef<'li'> & {
54
+ /** ์„ ํƒ๋จ. ์ฒดํฌ๋ฐ•์Šค์˜ `checked` ์™€ **๋”ฐ๋กœ** ์ค€๋‹ค โ€” ํ‚ท CSS ๊ฐ€ `<li>` ํด๋ž˜์Šค๋งŒ ๋ณธ๋‹ค. */
55
+ selected?: boolean;
56
+ /** ํ•ญ๋ชฉ ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค. `<Checkbox>` ํ•˜๋‚˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋„˜๊ธด๋‹ค โ€” `<CheckArea>` ๋กœ ๊ฐ์‹ธ์ง€ ๋งˆ๋ผ. */
57
+ check?: ReactNode;
58
+ };
59
+ /** ํ•ญ๋ชฉ ํ•˜๋‚˜ โ€” ํ‚ท `structured-item`. ์•ˆ์ชฝ `<div class="in">` ์€ ๋ถ€ํ’ˆ์ด ์Šค์Šค๋กœ ๊ทธ๋ฆฐ๋‹ค. */
60
+ export declare function StructuredItem({ selected, check, className, children, ...rest }: StructuredItemProps): import("react").JSX.Element;
61
+ /** ํ•ญ๋ชฉ ๋จธ๋ฆฌ โ€” ํ‚ท `card-top`. ์ƒํƒœ ๋ฐฐ์ง€ ์ž๋ฆฌ๋‹ค. */
62
+ export declare function StructuredItemTop({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
63
+ /** ํ•ญ๋ชฉ ๋ณธ๋ฌธ โ€” ํ‚ท `card-body`. ํƒ์ƒ‰ ๋งํฌ์™€ CTA ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค(์ „ํญ ๋ฐฐ์น˜์—์„œ๋Š” ์ขŒ์šฐ๋กœ ๋ฒŒ์–ด์ง„๋‹ค). */
64
+ export declare function StructuredItemBody({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
65
+ /** ์ƒ์„ธ๋กœ ๊ฐ€๋Š” ํƒ์ƒ‰ ๋งํฌ โ€” ํ‚ท `c-text`. ์ œ๋ชฉยท์š”์•ฝยท๊ธฐ๊ฐ„์„ ํ†ต์งธ๋กœ ๊ฐ์‹ผ๋‹ค. */
66
+ export type StructuredItemLinkProps = ComponentPropsWithRef<'a'>;
67
+ export declare function StructuredItemLink({ className, children, target, title, ...rest }: StructuredItemLinkProps): import("react").JSX.Element;
68
+ /**
69
+ * ์ œ๋ชฉ โ€” ํ‚ท `c-tit`. **ํ•œ ์ค„๋กœ ์ž˜๋ฆฐ๋‹ค.** ์•ˆ์ชฝ `<span>` ๊ฐ์‹ธ๊ฐœ๋Š” ๋ถ€ํ’ˆ์ด ๊ทธ๋ฆฐ๋‹ค.
70
+ * ์˜ค๋ฅธ์ชฝ ํ™”์‚ดํ‘œ๋Š” ํ‚ท์ด ๊ทธ๋ฆฌ๋ฏ€๋กœ ์•„์ด์ฝ˜์„ ์ง์ ‘ ๋„ฃ์ง€ ๋งˆ๋ผ.
71
+ */
72
+ export declare function StructuredItemTitle({ className, children, ...rest }: ComponentPropsWithRef<'p'>): import("react").JSX.Element;
73
+ /** ์š”์•ฝ โ€” ํ‚ท `c-txt`. ๊ฒฉ์ž์—์„œ 3์ค„, ์ „ํญ์—์„œ 1์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */
74
+ export declare function StructuredItemSummary({ className, children, ...rest }: ComponentPropsWithRef<'p'>): import("react").JSX.Element;
75
+ export type StructuredItemDateProps = ComponentPropsWithRef<'p'> & {
76
+ /** ํ•ญ๋ชฉ ์ด๋ฆ„. ๊ตต๊ฒŒ ๊ทธ๋ ค์ง„๋‹ค. ์˜ˆ: ใ€Œ์‹ ์ฒญ ๊ธฐ๊ฐ„ใ€ */
77
+ label: ReactNode;
78
+ };
79
+ /** ๊ธฐ๊ฐ„ยท๋‚ ์งœ ํ•œ ์ค„ โ€” ํ‚ท `c-date`. ๊ฐ’์ด ๋น„๋ฉด ๊ทœ๊ฒฉ๋Œ€๋กœ ๋Œ€์‹œ(`-`)๋ฅผ ๋„ฃ๋Š”๋‹ค. */
80
+ export declare function StructuredItemDate({ label, className, children, ...rest }: StructuredItemDateProps): import("react").JSX.Element;
81
+ export type StructuredItemMetaProps = Omit<ComponentPropsWithRef<'ul'>, 'children'> & {
82
+ /** ํ•ญ๋ชฉ๋“ค. ์‚ฌ์ด์‚ฌ์ด์— ์„ธ๋กœ ๊ตฌ๋ถ„์„ ์ด ๊ทธ๋ ค์ง„๋‹ค. ๋นˆ ๊ฐ’์—๋Š” `-` ๋ฅผ ๋„ฃ์–ด ์ž๋ฆฌ๋ฅผ ์ง€ํ‚จ๋‹ค. */
83
+ items: ReactNode[];
84
+ };
85
+ /**
86
+ * ๋ถ€๊ฐ€ ์ •๋ณด ์ค„ โ€” ํ‚ท `c-txt-ul`. ใ€Œ๋ถ€์„œ ยท ๋“ฑ๋ก์ผ ยท ์กฐํšŒ์ˆ˜ใ€์ฒ˜๋Ÿผ ์งง์€ ๊ฐ’์„ ์„ธ๋กœ์„ ์œผ๋กœ ์ž‡๋Š”๋‹ค.
87
+ * **์ „ํญยทcompact ๋ฐฐ์น˜์˜ `card-body` ์•ˆ์—์„œ๋งŒ** ํ‚ท ๊ทœ์น™์ด ๊ฑธ๋ฆฐ๋‹ค.
88
+ */
89
+ export declare function StructuredItemMeta({ items, className, ...rest }: StructuredItemMetaProps): import("react").JSX.Element;
90
+ /**
91
+ * CTA ์ž๋ฆฌ โ€” ํ‚ท `c-btn`. ํ•ญ๋ชฉ๊ณผ ๊ด€๋ จ๋œ **๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ–‰๋™ ํ•˜๋‚˜**๋งŒ ๋„ฃ๋Š”๋‹ค(๊ฐ€์ด๋“œ ๊ทœ์ •).
92
+ * ์–ด๋А ํ•ญ๋ชฉ์˜ ๋ฒ„ํŠผ์ธ์ง€ ์•Œ๋„๋ก `title` ์— ํ•ญ๋ชฉ ์ œ๋ชฉ์„ ์ค€๋‹ค.
93
+ */
94
+ export declare function StructuredItemCta({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
95
+ /** ํƒœ๊ทธ ์ค„ โ€” ํ‚ท `card-btm`. ์œ„์ชฝ ๊ตฌ๋ถ„์„ ์€ ํ‚ท์ด ๊ทธ๋ฆฐ๋‹ค. */
96
+ export declare function StructuredItemTags({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
97
+ /** ํƒœ๊ทธ ํ•˜๋‚˜ โ€” ํ‚ท `tag`. **๊ธ€์ž ์•ž์˜ `#` ๋Š” ํ‚ท์ด ๋ถ™์ธ๋‹ค** โ€” ์ง์ ‘ ์“ฐ๋ฉด `##` ์ด ๋œ๋‹ค. */
98
+ export declare function StructuredItemTag({ className, children, ...rest }: ComponentPropsWithRef<'span'>): import("react").JSX.Element;
99
+ /**
100
+ * ์•ก์…˜ ๋ฒ„ํŠผ ๋ฌถ์Œ โ€” ํ‚ท `card-btn`. ํ•ญ๋ชฉ ์šฐ์ƒ๋‹จ์— ๋†“์ด๋Š” ๋ณด์กฐ ๊ธฐ๋Šฅ(๊ณต์œ ยท์ฐœํ•˜๊ธฐ) ์ž๋ฆฌ๋‹ค.
101
+ * ์•ˆ์—๋Š” `krds-btn medium text` ๋ฅผ ์“ด๋‹ค(ํ‚ท์ด ๋†’์ด๋ฅผ ๊ณ ์ •ํ•œ๋‹ค).
102
+ */
103
+ export declare function StructuredItemActions({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
104
+ export type StructuredCardProps = Omit<StructuredItemProps, 'title'> & {
105
+ /** ์ œ๋ชฉ. ํ•œ ์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */
106
+ title: ReactNode;
107
+ /** ์ƒ์„ธ ์ฃผ์†Œ. ์ œ๋ชฉยท์š”์•ฝยท๊ธฐ๊ฐ„ ์ „์ฒด๊ฐ€ ์ด ๋งํฌ๊ฐ€ ๋œ๋‹ค. */
108
+ href: string;
109
+ /** `_blank` ๋ฉด ใ€Œ์ƒˆ ์ฐฝ ์—ด๋ฆผใ€์„ `title` ๋กœ ์•Œ๋ฆฐ๋‹ค. */
110
+ target?: string;
111
+ /** ์š”์•ฝ. ๊ฒฉ์ž 3์ค„ ยท ์ „ํญ 1์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */
112
+ summary?: ReactNode;
113
+ /** ๊ธฐ๊ฐ„ ์ค„์˜ ์ด๋ฆ„. ์˜ˆ: ใ€Œ์‹ ์ฒญ ๊ธฐ๊ฐ„ใ€ */
114
+ dateLabel?: ReactNode;
115
+ /** ๊ธฐ๊ฐ„ ์ค„์˜ ๊ฐ’. ๋น„๋ฉด `-` ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. */
116
+ dateValue?: ReactNode;
117
+ /** ๋ถ€๊ฐ€ ์ •๋ณด(์„ธ๋กœ์„  ๊ตฌ๋ถ„). **์ „ํญยทcompact ๋ชฉ๋ก์—์„œ๋งŒ** ํ‚ท ๊ทœ์น™์ด ๊ฑธ๋ฆฐ๋‹ค. */
118
+ meta?: ReactNode[];
119
+ /** ์ƒํƒœ ๋ฐฐ์ง€. `<Badge>` ๋ฅผ ๋„ฃ๋Š”๋‹ค. */
120
+ badge?: ReactNode;
121
+ /** ํƒœ๊ทธ. `#` ์€ ํ‚ท์ด ๋ถ™์ด๋ฏ€๋กœ ๊ธ€์ž๋งŒ ๋„ฃ๋Š”๋‹ค. */
122
+ tags?: ReactNode[];
123
+ /** ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ–‰๋™ ํ•˜๋‚˜. `title` ์— ํ•ญ๋ชฉ ์ œ๋ชฉ์„ ์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ๋ผ. */
124
+ cta?: ReactNode;
125
+ /** ์šฐ์ƒ๋‹จ ๋ณด์กฐ ๊ธฐ๋Šฅ(๊ณต์œ ยท์ฐœํ•˜๊ธฐ ๋“ฑ). */
126
+ actions?: ReactNode;
127
+ };
128
+ /**
129
+ * ์นด๋“œ ํ•œ ์žฅ์„ ํ†ต์งธ๋กœ โ€” ์กฐ๊ฐ๋“ค์„ ํ‚ท ์ƒ˜ํ”Œ ์ˆœ์„œ๋Œ€๋กœ ์กฐ๋ฆฝํ•œ๋‹ค.
130
+ * ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ‚ท์— ์—†๋Š” ๊ฒƒ์„ ๋ผ์›Œ์•ผ ํ•  ๋•Œ๋งŒ ์กฐ๊ฐ์„ ์ง์ ‘ ์“ด๋‹ค.
131
+ */
132
+ export declare function StructuredCard({ title, href, target, summary, dateLabel, dateValue, meta, badge, tags, cta, actions, children, ...rest }: StructuredCardProps): import("react").JSX.Element;
133
+ /**
134
+ * ์ž๋ฃŒ ์—†์Œ โ€” ํ‚ท์— ๋นˆ ๋ชฉ๋ก ๊ทœ์น™์ด ์—†์–ด ๋ณด์ถฉํ–ˆ๋‹ค(ํ‘œ์˜ `TableEmpty` ์™€ ๊ฐ™์€ ๋ชจ์–‘).
135
+ * ๋ชฉ๋ก์ด ๋น„๋ฉด `StructuredList` ๋ฅผ ๊ทธ๋ฆฌ์ง€ ๋ง๊ณ  ์ด๊ฒƒ์„ ๊ทธ๋ฆฐ๋‹ค.
136
+ * ๋Œ€์•ˆ ํ–‰๋™๊นŒ์ง€ ๊ณ๋“ค์ด๋ ค๋ฉด `ui/empty-state` ์˜ `EmptyState` ๋ฅผ ์“ด๋‹ค.
137
+ */
138
+ export declare function StructuredListEmpty({ className, children, ...rest }: ComponentPropsWithRef<'p'>): import("react").JSX.Element;
139
+ export type StructuredListToolbarProps = ComponentPropsWithRef<'div'> & {
140
+ /** ์™ผ์ชฝ โ€” ๊ฒฐ๊ณผ ๊ฑด์ˆ˜ยท์ „์ฒด ์„ ํƒ ๋“ฑ. `aria-live="polite"` ๋กœ ๊ฐ์‹ธ ๋ฐ”๋€ ๊ฑด์ˆ˜๋ฅผ ์ฝ์–ด ์ค€๋‹ค. */
141
+ info?: ReactNode;
142
+ };
143
+ /**
144
+ * ๋ชฉ๋ก ์œ„ ๋„๊ตฌ ๋ง‰๋Œ€ โ€” ํ‚ท์— ํด๋ž˜์Šค๊ฐ€ ์—†์–ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ๊ทธ๋ฆฐ ๋ณด์ถฉ ๋ถ€ํ’ˆ์ด๋‹ค.
145
+ *
146
+ * ์™ผ์ชฝ์— ๊ฒฐ๊ณผ ๊ฑด์ˆ˜, ์˜ค๋ฅธ์ชฝ์— ์ •๋ ฌยท๊ฐœ์ˆ˜ ๋„๊ตฌ๋ฅผ ๋‘”๋‹ค. ๊ทœ๊ฒฉ: **๋ชจ๋“  ํ™”๋ฉด์—์„œ ๊ฐ™์€ ์ž๋ฆฌ์— ๊ฐ™์€ ์ˆœ์„œ๋กœ.**
147
+ * ์ •๋ ฌ์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๋ชฉ๋ก๋งŒ ๊ฐˆ์•„ ๋ผ์šด๋‹ค โ€” ์ดˆ์ ์„ ์˜ฎ๊ธฐ์ง€ ๋งˆ๋ผ.
148
+ */
149
+ export declare function StructuredListToolbar({ info, className, children, ...rest }: StructuredListToolbarProps): import("react").JSX.Element;
150
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/structured-list/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,194 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Children, isValidElement } from "react";
3
+ import { cx } from "../lib/krds.js";
4
+ const LAYOUT_CLASS = {
5
+ grid: void 0,
6
+ full: "type-full",
7
+ compact: "type2"
8
+ };
9
+ const SIZE_CLASS = {
10
+ small: "sm",
11
+ medium: "md",
12
+ large: "lg"
13
+ };
14
+ function StructuredList({
15
+ layout = "grid",
16
+ size = "medium",
17
+ selectable,
18
+ className,
19
+ children,
20
+ ...rest
21
+ }) {
22
+ if (process.env.NODE_ENV !== "production" && layout === "grid") {
23
+ const withMeta = Children.toArray(children).some(
24
+ (child) => isValidElement(child) && child.props.meta != null
25
+ );
26
+ if (withMeta) {
27
+ console.warn(
28
+ '[krds-react StructuredList] layout="grid" \uC5D0 meta \uB97C \uC900 \uCE74\uB4DC\uAC00 \uC788\uB2E4 \u2014 \uD0B7\uC758 `.c-txt-ul` \uADDC\uCE59\uC740 `.type-full`\xB7`.type2` \uC548\uC5D0\uB9CC \uC788\uC5B4 \uAD6C\uBD84\uC120\uB3C4 \uC0C9\uB3C4 \uAC78\uB9AC\uC9C0 \uC54A\uC740 \uB9E8 \uBAA9\uB85D\uC774 \uB098\uC628\uB2E4. layout="full" \uC774\uB098 "compact" \uB85C \uB450\uAC70\uB098 meta \uB97C \uBE7C\uB77C.'
29
+ );
30
+ }
31
+ }
32
+ return /* @__PURE__ */ jsx(
33
+ "ul",
34
+ {
35
+ className: cx(
36
+ "krds-structured-list",
37
+ LAYOUT_CLASS[layout],
38
+ SIZE_CLASS[size],
39
+ selectable && "type-check",
40
+ className
41
+ ),
42
+ ...rest,
43
+ children
44
+ }
45
+ );
46
+ }
47
+ function StructuredItem({
48
+ selected,
49
+ check,
50
+ className,
51
+ children,
52
+ ...rest
53
+ }) {
54
+ return /* @__PURE__ */ jsx("li", { className: cx("structured-item", selected && "is-check", className), ...rest, children: /* @__PURE__ */ jsxs("div", { className: "in", children: [
55
+ check != null && /* @__PURE__ */ jsx("div", { className: "krds-check-area", children: check }),
56
+ children
57
+ ] }) });
58
+ }
59
+ function StructuredItemTop({ className, children, ...rest }) {
60
+ return /* @__PURE__ */ jsx("div", { className: cx("card-top", className), ...rest, children });
61
+ }
62
+ function StructuredItemBody({ className, children, ...rest }) {
63
+ return /* @__PURE__ */ jsx("div", { className: cx("card-body", className), ...rest, children });
64
+ }
65
+ function StructuredItemLink({
66
+ className,
67
+ children,
68
+ target,
69
+ title,
70
+ ...rest
71
+ }) {
72
+ return /* @__PURE__ */ jsx(
73
+ "a",
74
+ {
75
+ className: cx("c-text", className),
76
+ target,
77
+ title: title ?? (target === "_blank" ? "\uC0C8 \uCC3D \uC5F4\uB9BC" : void 0),
78
+ ...rest,
79
+ children
80
+ }
81
+ );
82
+ }
83
+ function StructuredItemTitle({ className, children, ...rest }) {
84
+ return /* @__PURE__ */ jsx("p", { className: cx("c-tit", className), ...rest, children: /* @__PURE__ */ jsx("span", { className: "span", children }) });
85
+ }
86
+ function StructuredItemSummary({ className, children, ...rest }) {
87
+ return /* @__PURE__ */ jsx("p", { className: cx("c-txt", className), ...rest, children });
88
+ }
89
+ function StructuredItemDate({
90
+ label,
91
+ className,
92
+ children,
93
+ ...rest
94
+ }) {
95
+ const value = children == null || children === "" ? "-" : children;
96
+ return /* @__PURE__ */ jsxs("p", { className: cx("c-date", className), ...rest, children: [
97
+ /* @__PURE__ */ jsx("strong", { className: "key", children: label }),
98
+ /* @__PURE__ */ jsx("span", { className: "value", children: value })
99
+ ] });
100
+ }
101
+ function StructuredItemMeta({ items, className, ...rest }) {
102
+ return /* @__PURE__ */ jsx("ul", { className: cx("c-txt-ul", className), ...rest, children: items.map((item, i) => /* @__PURE__ */ jsx("li", { children: item }, i)) });
103
+ }
104
+ function StructuredItemCta({ className, children, ...rest }) {
105
+ return /* @__PURE__ */ jsx("div", { className: cx("c-btn", className), ...rest, children });
106
+ }
107
+ function StructuredItemTags({ className, children, ...rest }) {
108
+ return /* @__PURE__ */ jsx("div", { className: cx("card-btm", className), ...rest, children });
109
+ }
110
+ function StructuredItemTag({ className, children, ...rest }) {
111
+ return /* @__PURE__ */ jsx("span", { className: cx("tag", className), ...rest, children });
112
+ }
113
+ function StructuredItemActions({
114
+ className,
115
+ children,
116
+ ...rest
117
+ }) {
118
+ return /* @__PURE__ */ jsx("div", { className: cx("card-btn", className), ...rest, children });
119
+ }
120
+ function StructuredCard({
121
+ title,
122
+ href,
123
+ target,
124
+ summary,
125
+ dateLabel,
126
+ dateValue,
127
+ meta,
128
+ badge,
129
+ tags,
130
+ cta,
131
+ actions,
132
+ children,
133
+ ...rest
134
+ }) {
135
+ return /* @__PURE__ */ jsxs(StructuredItem, { ...rest, children: [
136
+ badge != null && /* @__PURE__ */ jsx(StructuredItemTop, { children: badge }),
137
+ /* @__PURE__ */ jsxs(StructuredItemBody, { children: [
138
+ /* @__PURE__ */ jsxs(StructuredItemLink, { href, target, children: [
139
+ /* @__PURE__ */ jsx(StructuredItemTitle, { children: title }),
140
+ summary != null && /* @__PURE__ */ jsx(StructuredItemSummary, { children: summary }),
141
+ meta != null && meta.length > 0 && /* @__PURE__ */ jsx(StructuredItemMeta, { items: meta }),
142
+ dateLabel != null && /* @__PURE__ */ jsx(StructuredItemDate, { label: dateLabel, children: dateValue })
143
+ ] }),
144
+ cta != null && /* @__PURE__ */ jsx(StructuredItemCta, { children: cta })
145
+ ] }),
146
+ tags != null && tags.length > 0 && /* @__PURE__ */ jsx(StructuredItemTags, { children: tags.map((tag, i) => /* @__PURE__ */ jsx(StructuredItemTag, { children: tag }, i)) }),
147
+ actions != null && /* @__PURE__ */ jsx(StructuredItemActions, { children: actions }),
148
+ children
149
+ ] });
150
+ }
151
+ function StructuredListEmpty({
152
+ className,
153
+ children = "\uB4F1\uB85D\uB41C \uC790\uB8CC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.",
154
+ ...rest
155
+ }) {
156
+ return /* @__PURE__ */ jsx("p", { className: cx("py-14 text-center text-fg-subtle", className), ...rest, children });
157
+ }
158
+ function StructuredListToolbar({
159
+ info,
160
+ className,
161
+ children,
162
+ ...rest
163
+ }) {
164
+ return /* @__PURE__ */ jsxs(
165
+ "div",
166
+ {
167
+ className: cx("flex flex-wrap items-center justify-between gap-3 pb-5", className),
168
+ ...rest,
169
+ children: [
170
+ info != null ? /* @__PURE__ */ jsx("div", { "aria-live": "polite", children: info }) : /* @__PURE__ */ jsx("div", {}),
171
+ /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-3", children })
172
+ ]
173
+ }
174
+ );
175
+ }
176
+ export {
177
+ StructuredCard,
178
+ StructuredItem,
179
+ StructuredItemActions,
180
+ StructuredItemBody,
181
+ StructuredItemCta,
182
+ StructuredItemDate,
183
+ StructuredItemLink,
184
+ StructuredItemMeta,
185
+ StructuredItemSummary,
186
+ StructuredItemTag,
187
+ StructuredItemTags,
188
+ StructuredItemTitle,
189
+ StructuredItemTop,
190
+ StructuredList,
191
+ StructuredListEmpty,
192
+ StructuredListToolbar
193
+ };
194
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/structured-list/index.tsx"],"sourcesContent":["import { Children, isValidElement, type ComponentPropsWithRef, type ReactNode } from 'react';\nimport { cx, type KrdsSize } from '../lib/krds';\n\n/**\n * ๊ตฌ์กฐํ™” ๋ชฉ๋ก โ€” KRDS `krds-structured-list`.\n *\n * ใ€Œ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ๋œ ์ฝ˜ํ…์ธ  ์ง‘ํ•ฉใ€์„ ์นด๋“œ๋กœ ๋Š˜์–ด๋†“๋Š”๋‹ค. ๋Œ€๋ถ€๋ถ„์€ {@link StructuredCard} ํ•œ ์ค„๋กœ ๋๋‚˜๊ณ ,\n * ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ‚ท์— ์—†๋Š” ๊ฒƒ์„ ๋ผ์šธ ๋•Œ๋งŒ ์กฐ๊ฐ(`StructuredItem*`)์„ ์ง์ ‘ ์กฐ๋ฆฝํ•œ๋‹ค.\n * ํ–‰ยท์—ด์ด ์žˆ๋Š” ์ž๋ฃŒ๋Š” ์นด๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ `ui/table` ยท `ui/data-table` ์ด๋‹ค.\n * `meta`(๋ถ€๊ฐ€ ์ •๋ณด ์ค„)๋Š” **์ „ํญ ๋ฐฐ์น˜ ์ „์šฉ**์ด๋‹ค โ€” `layout=\"grid\"` ์—์„œ๋Š” ๊ตฌ๋ถ„์„ ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค.\n * ์นด๋“œ ์•ˆ ๋ฒ„ํŠผ์—๋Š” `title` ๋กœ ์–ด๋А ํ•ญ๋ชฉ์˜ ๊ฒƒ์ธ์ง€ ์•Œ๋ฆฐ๋‹ค(ใ€Œ์‹ ์ฒญํ•˜๊ธฐใ€๊ฐ€ 20๊ฐœ์ธ ๋ชฉ๋ก์„ ์ƒ๊ฐํ•˜๋ผ).\n * ๋ชฉ๋ก์ด ๋น„๋ฉด `StructuredList` ๋Œ€์‹  {@link StructuredListEmpty} ๋ฅผ ๊ทธ๋ฆฐ๋‹ค.\n *\n * @example\n * <StructuredListToolbar info={`์ „์ฒด ${total}๊ฑด`}>\n * <SortSelect aria-label=\"์ •๋ ฌ๊ธฐ์ค€\" options={sorts} />\n * </StructuredListToolbar>\n * <StructuredList layout=\"full\">\n * {rows.map((r) => (\n * <StructuredCard\n * key={r.id}\n * href={`/board/notice/${r.id}`}\n * title={r.title}\n * summary={r.summary}\n * dateLabel=\"๋“ฑ๋ก์ผ\"\n * dateValue={r.createdAt}\n * badge={<Badge tone=\"primary\">๊ณต์ง€</Badge>}\n * tags={r.tags}\n * />\n * ))}\n * </StructuredList>\n *\n * ์ž์„ธํžˆ: docs/krds/09-๋ถ€ํ’ˆ-๋…ธํŠธ.md#๊ตฌ์กฐํ™”๋ชฉ๋ก\n */\n\n/**\n * ๋ฐฐ์น˜. `grid` 3์—ด ๊ฒฉ์ž(๊ธฐ๋ณธ) ยท `full` ํ•œ ์ค„์— ํ•œ ํ•ญ๋ชฉ(์ œ๋ชฉ์ด ์ปค์ง„๋‹ค) ยท `compact` ์ „ํญ์ด๋˜ ์ œ๋ชฉ์€ ๊ทธ๋Œ€๋กœ.\n */\nexport type StructuredListLayout = 'grid' | 'full' | 'compact';\n\n/**\n * ํฌ๊ธฐ. ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ **ํ•ญ๋ชฉ ์•ˆ์ชฝ ์—ฌ๋ฐฑ**๊ณผ ์šฐ์ƒ๋‹จ ์•ก์…˜ ๋ฒ„ํŠผ ์œ„์น˜๋‹ค.\n * `layout=\"full\"` ๊ณผ ํ•จ๊ป˜ ์ฃผ๋ฉด ์ œ๋ชฉ ํฌ๊ธฐ๋Š” ๋ฐฐ์น˜ ์ชฝ์ด ์ด๊ฒจ ์—ฌ๋ฐฑ๋งŒ ์ค„์–ด๋“ ๋‹ค.\n */\nexport type StructuredListSize = Extract<KrdsSize, 'small' | 'medium' | 'large'>;\n\nconst LAYOUT_CLASS: Record<StructuredListLayout, string | undefined> = {\n grid: undefined,\n full: 'type-full',\n compact: 'type2',\n};\n\nconst SIZE_CLASS: Record<StructuredListSize, string> = {\n small: 'sm',\n medium: 'md',\n large: 'lg',\n};\n\nexport type StructuredListProps = ComponentPropsWithRef<'ul'> & {\n /** ๋ฐฐ์น˜. ๊ธฐ๋ณธ `grid`. */\n layout?: StructuredListLayout;\n /** ํฌ๊ธฐ. ๊ธฐ๋ณธ `medium`. */\n size?: StructuredListSize;\n /** ํ•ญ๋ชฉ๋งˆ๋‹ค ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์žˆ์„ ๋•Œ ์ผ ๋‹ค โ€” ์ผœ์ง€ ์•Š์œผ๋ฉด ์ฒดํฌ๋ฐ•์Šค์™€ ์šฐ์ƒ๋‹จ ๋ฒ„ํŠผ์ด ๊ฒน์นœ๋‹ค. */\n selectable?: boolean;\n};\n\n/** ๋ชฉ๋ก ๊ป๋ฐ๊ธฐ โ€” ํ‚ท `krds-structured-list`. ๋ชฉ๋ก ์ด๋ฆ„์ด ํ•„์š”ํ•˜๋ฉด `aria-label` ์„ ๋„˜๊ธด๋‹ค. */\nexport function StructuredList({\n layout = 'grid',\n size = 'medium',\n selectable,\n className,\n children,\n ...rest\n}: StructuredListProps) {\n if (process.env.NODE_ENV !== 'production' && layout === 'grid') {\n // `meta` ์˜ ํ‚ท ๊ทœ์น™์€ ์ „ํญ ๋ฐฐ์น˜ ์•ˆ์—๋งŒ ์žˆ์–ด ๊ฒฉ์ž์—์„œ๋Š” ์กฐ์šฉํžˆ ๋งจ ๋ชฉ๋ก์ด ๋œ๋‹ค.\n // ๋ฐฐ์น˜๋ฅผ ์•„๋Š” ๊ฒƒ์€ ๋ชฉ๋ก๋ฟ์ด๋ผ ์—ฌ๊ธฐ์„œ ์ž์‹์˜ `meta` ๋ฅผ ๋ณธ๋‹ค(์ง์ ‘ ์กฐ๋ฆฝํ•œ ๊ฒƒ์€ ๋ชป ์žก๋Š”๋‹ค).\n const withMeta = Children.toArray(children).some(\n (child) => isValidElement<{ meta?: unknown }>(child) && child.props.meta != null,\n );\n if (withMeta) {\n console.warn(\n '[krds-react StructuredList] layout=\"grid\" ์— meta ๋ฅผ ์ค€ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค โ€” ํ‚ท์˜ `.c-txt-ul` ๊ทœ์น™์€ ' +\n '`.type-full`ยท`.type2` ์•ˆ์—๋งŒ ์žˆ์–ด ๊ตฌ๋ถ„์„ ๋„ ์ƒ‰๋„ ๊ฑธ๋ฆฌ์ง€ ์•Š์€ ๋งจ ๋ชฉ๋ก์ด ๋‚˜์˜จ๋‹ค. ' +\n 'layout=\"full\" ์ด๋‚˜ \"compact\" ๋กœ ๋‘๊ฑฐ๋‚˜ meta ๋ฅผ ๋นผ๋ผ.',\n );\n }\n }\n\n return (\n <ul\n className={cx(\n 'krds-structured-list',\n LAYOUT_CLASS[layout],\n SIZE_CLASS[size],\n selectable && 'type-check',\n className,\n )}\n {...rest}\n >\n {children}\n </ul>\n );\n}\n\nexport type StructuredItemProps = ComponentPropsWithRef<'li'> & {\n /** ์„ ํƒ๋จ. ์ฒดํฌ๋ฐ•์Šค์˜ `checked` ์™€ **๋”ฐ๋กœ** ์ค€๋‹ค โ€” ํ‚ท CSS ๊ฐ€ `<li>` ํด๋ž˜์Šค๋งŒ ๋ณธ๋‹ค. */\n selected?: boolean;\n /** ํ•ญ๋ชฉ ์„ ํƒ ์ฒดํฌ๋ฐ•์Šค. `<Checkbox>` ํ•˜๋‚˜๋ฅผ ๊ทธ๋Œ€๋กœ ๋„˜๊ธด๋‹ค โ€” `<CheckArea>` ๋กœ ๊ฐ์‹ธ์ง€ ๋งˆ๋ผ. */\n check?: ReactNode;\n};\n\n/** ํ•ญ๋ชฉ ํ•˜๋‚˜ โ€” ํ‚ท `structured-item`. ์•ˆ์ชฝ `<div class=\"in\">` ์€ ๋ถ€ํ’ˆ์ด ์Šค์Šค๋กœ ๊ทธ๋ฆฐ๋‹ค. */\nexport function StructuredItem({\n selected,\n check,\n className,\n children,\n ...rest\n}: StructuredItemProps) {\n return (\n <li className={cx('structured-item', selected && 'is-check', className)} {...rest}>\n <div className=\"in\">\n {check != null && <div className=\"krds-check-area\">{check}</div>}\n {children}\n </div>\n </li>\n );\n}\n\n/** ํ•ญ๋ชฉ ๋จธ๋ฆฌ โ€” ํ‚ท `card-top`. ์ƒํƒœ ๋ฐฐ์ง€ ์ž๋ฆฌ๋‹ค. */\nexport function StructuredItemTop({ className, children, ...rest }: ComponentPropsWithRef<'div'>) {\n return (\n <div className={cx('card-top', className)} {...rest}>\n {children}\n </div>\n );\n}\n\n/** ํ•ญ๋ชฉ ๋ณธ๋ฌธ โ€” ํ‚ท `card-body`. ํƒ์ƒ‰ ๋งํฌ์™€ CTA ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค(์ „ํญ ๋ฐฐ์น˜์—์„œ๋Š” ์ขŒ์šฐ๋กœ ๋ฒŒ์–ด์ง„๋‹ค). */\nexport function StructuredItemBody({ className, children, ...rest }: ComponentPropsWithRef<'div'>) {\n return (\n <div className={cx('card-body', className)} {...rest}>\n {children}\n </div>\n );\n}\n\n/** ์ƒ์„ธ๋กœ ๊ฐ€๋Š” ํƒ์ƒ‰ ๋งํฌ โ€” ํ‚ท `c-text`. ์ œ๋ชฉยท์š”์•ฝยท๊ธฐ๊ฐ„์„ ํ†ต์งธ๋กœ ๊ฐ์‹ผ๋‹ค. */\nexport type StructuredItemLinkProps = ComponentPropsWithRef<'a'>;\n\nexport function StructuredItemLink({\n className,\n children,\n target,\n title,\n ...rest\n}: StructuredItemLinkProps) {\n return (\n <a\n className={cx('c-text', className)}\n target={target}\n // ์ƒˆ ์ฐฝ์œผ๋กœ ์—ด๋ฆฌ๋ฉด ๋ฏธ๋ฆฌ ์•Œ๋ฆฐ๋‹ค โ€” KRDS ์ ‘๊ทผ์„ฑ ์š”๊ตฌ(ใ€Œ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹คใ€).\n title={title ?? (target === '_blank' ? '์ƒˆ ์ฐฝ ์—ด๋ฆผ' : undefined)}\n {...rest}\n >\n {children}\n </a>\n );\n}\n\n/**\n * ์ œ๋ชฉ โ€” ํ‚ท `c-tit`. **ํ•œ ์ค„๋กœ ์ž˜๋ฆฐ๋‹ค.** ์•ˆ์ชฝ `<span>` ๊ฐ์‹ธ๊ฐœ๋Š” ๋ถ€ํ’ˆ์ด ๊ทธ๋ฆฐ๋‹ค.\n * ์˜ค๋ฅธ์ชฝ ํ™”์‚ดํ‘œ๋Š” ํ‚ท์ด ๊ทธ๋ฆฌ๋ฏ€๋กœ ์•„์ด์ฝ˜์„ ์ง์ ‘ ๋„ฃ์ง€ ๋งˆ๋ผ.\n */\nexport function StructuredItemTitle({ className, children, ...rest }: ComponentPropsWithRef<'p'>) {\n return (\n <p className={cx('c-tit', className)} {...rest}>\n <span className=\"span\">{children}</span>\n </p>\n );\n}\n\n/** ์š”์•ฝ โ€” ํ‚ท `c-txt`. ๊ฒฉ์ž์—์„œ 3์ค„, ์ „ํญ์—์„œ 1์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */\nexport function StructuredItemSummary({ className, children, ...rest }: ComponentPropsWithRef<'p'>) {\n return (\n <p className={cx('c-txt', className)} {...rest}>\n {children}\n </p>\n );\n}\n\nexport type StructuredItemDateProps = ComponentPropsWithRef<'p'> & {\n /** ํ•ญ๋ชฉ ์ด๋ฆ„. ๊ตต๊ฒŒ ๊ทธ๋ ค์ง„๋‹ค. ์˜ˆ: ใ€Œ์‹ ์ฒญ ๊ธฐ๊ฐ„ใ€ */\n label: ReactNode;\n};\n\n/** ๊ธฐ๊ฐ„ยท๋‚ ์งœ ํ•œ ์ค„ โ€” ํ‚ท `c-date`. ๊ฐ’์ด ๋น„๋ฉด ๊ทœ๊ฒฉ๋Œ€๋กœ ๋Œ€์‹œ(`-`)๋ฅผ ๋„ฃ๋Š”๋‹ค. */\nexport function StructuredItemDate({\n label,\n className,\n children,\n ...rest\n}: StructuredItemDateProps) {\n const value = children == null || children === '' ? '-' : children;\n return (\n <p className={cx('c-date', className)} {...rest}>\n <strong className=\"key\">{label}</strong>\n <span className=\"value\">{value}</span>\n </p>\n );\n}\n\nexport type StructuredItemMetaProps = Omit<ComponentPropsWithRef<'ul'>, 'children'> & {\n /** ํ•ญ๋ชฉ๋“ค. ์‚ฌ์ด์‚ฌ์ด์— ์„ธ๋กœ ๊ตฌ๋ถ„์„ ์ด ๊ทธ๋ ค์ง„๋‹ค. ๋นˆ ๊ฐ’์—๋Š” `-` ๋ฅผ ๋„ฃ์–ด ์ž๋ฆฌ๋ฅผ ์ง€ํ‚จ๋‹ค. */\n items: ReactNode[];\n};\n\n/**\n * ๋ถ€๊ฐ€ ์ •๋ณด ์ค„ โ€” ํ‚ท `c-txt-ul`. ใ€Œ๋ถ€์„œ ยท ๋“ฑ๋ก์ผ ยท ์กฐํšŒ์ˆ˜ใ€์ฒ˜๋Ÿผ ์งง์€ ๊ฐ’์„ ์„ธ๋กœ์„ ์œผ๋กœ ์ž‡๋Š”๋‹ค.\n * **์ „ํญยทcompact ๋ฐฐ์น˜์˜ `card-body` ์•ˆ์—์„œ๋งŒ** ํ‚ท ๊ทœ์น™์ด ๊ฑธ๋ฆฐ๋‹ค.\n */\nexport function StructuredItemMeta({ items, className, ...rest }: StructuredItemMetaProps) {\n return (\n <ul className={cx('c-txt-ul', className)} {...rest}>\n {items.map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n );\n}\n\n/**\n * CTA ์ž๋ฆฌ โ€” ํ‚ท `c-btn`. ํ•ญ๋ชฉ๊ณผ ๊ด€๋ จ๋œ **๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ–‰๋™ ํ•˜๋‚˜**๋งŒ ๋„ฃ๋Š”๋‹ค(๊ฐ€์ด๋“œ ๊ทœ์ •).\n * ์–ด๋А ํ•ญ๋ชฉ์˜ ๋ฒ„ํŠผ์ธ์ง€ ์•Œ๋„๋ก `title` ์— ํ•ญ๋ชฉ ์ œ๋ชฉ์„ ์ค€๋‹ค.\n */\nexport function StructuredItemCta({ className, children, ...rest }: ComponentPropsWithRef<'div'>) {\n return (\n <div className={cx('c-btn', className)} {...rest}>\n {children}\n </div>\n );\n}\n\n/** ํƒœ๊ทธ ์ค„ โ€” ํ‚ท `card-btm`. ์œ„์ชฝ ๊ตฌ๋ถ„์„ ์€ ํ‚ท์ด ๊ทธ๋ฆฐ๋‹ค. */\nexport function StructuredItemTags({ className, children, ...rest }: ComponentPropsWithRef<'div'>) {\n return (\n <div className={cx('card-btm', className)} {...rest}>\n {children}\n </div>\n );\n}\n\n/** ํƒœ๊ทธ ํ•˜๋‚˜ โ€” ํ‚ท `tag`. **๊ธ€์ž ์•ž์˜ `#` ๋Š” ํ‚ท์ด ๋ถ™์ธ๋‹ค** โ€” ์ง์ ‘ ์“ฐ๋ฉด `##` ์ด ๋œ๋‹ค. */\nexport function StructuredItemTag({ className, children, ...rest }: ComponentPropsWithRef<'span'>) {\n return (\n <span className={cx('tag', className)} {...rest}>\n {children}\n </span>\n );\n}\n\n/**\n * ์•ก์…˜ ๋ฒ„ํŠผ ๋ฌถ์Œ โ€” ํ‚ท `card-btn`. ํ•ญ๋ชฉ ์šฐ์ƒ๋‹จ์— ๋†“์ด๋Š” ๋ณด์กฐ ๊ธฐ๋Šฅ(๊ณต์œ ยท์ฐœํ•˜๊ธฐ) ์ž๋ฆฌ๋‹ค.\n * ์•ˆ์—๋Š” `krds-btn medium text` ๋ฅผ ์“ด๋‹ค(ํ‚ท์ด ๋†’์ด๋ฅผ ๊ณ ์ •ํ•œ๋‹ค).\n */\nexport function StructuredItemActions({\n className,\n children,\n ...rest\n}: ComponentPropsWithRef<'div'>) {\n return (\n <div className={cx('card-btn', className)} {...rest}>\n {children}\n </div>\n );\n}\n\nexport type StructuredCardProps = Omit<StructuredItemProps, 'title'> & {\n /** ์ œ๋ชฉ. ํ•œ ์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */\n title: ReactNode;\n /** ์ƒ์„ธ ์ฃผ์†Œ. ์ œ๋ชฉยท์š”์•ฝยท๊ธฐ๊ฐ„ ์ „์ฒด๊ฐ€ ์ด ๋งํฌ๊ฐ€ ๋œ๋‹ค. */\n href: string;\n /** `_blank` ๋ฉด ใ€Œ์ƒˆ ์ฐฝ ์—ด๋ฆผใ€์„ `title` ๋กœ ์•Œ๋ฆฐ๋‹ค. */\n target?: string;\n /** ์š”์•ฝ. ๊ฒฉ์ž 3์ค„ ยท ์ „ํญ 1์ค„๋กœ ์ž˜๋ฆฐ๋‹ค. */\n summary?: ReactNode;\n /** ๊ธฐ๊ฐ„ ์ค„์˜ ์ด๋ฆ„. ์˜ˆ: ใ€Œ์‹ ์ฒญ ๊ธฐ๊ฐ„ใ€ */\n dateLabel?: ReactNode;\n /** ๊ธฐ๊ฐ„ ์ค„์˜ ๊ฐ’. ๋น„๋ฉด `-` ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. */\n dateValue?: ReactNode;\n /** ๋ถ€๊ฐ€ ์ •๋ณด(์„ธ๋กœ์„  ๊ตฌ๋ถ„). **์ „ํญยทcompact ๋ชฉ๋ก์—์„œ๋งŒ** ํ‚ท ๊ทœ์น™์ด ๊ฑธ๋ฆฐ๋‹ค. */\n meta?: ReactNode[];\n /** ์ƒํƒœ ๋ฐฐ์ง€. `<Badge>` ๋ฅผ ๋„ฃ๋Š”๋‹ค. */\n badge?: ReactNode;\n /** ํƒœ๊ทธ. `#` ์€ ํ‚ท์ด ๋ถ™์ด๋ฏ€๋กœ ๊ธ€์ž๋งŒ ๋„ฃ๋Š”๋‹ค. */\n tags?: ReactNode[];\n /** ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ–‰๋™ ํ•˜๋‚˜. `title` ์— ํ•ญ๋ชฉ ์ œ๋ชฉ์„ ์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ๋ผ. */\n cta?: ReactNode;\n /** ์šฐ์ƒ๋‹จ ๋ณด์กฐ ๊ธฐ๋Šฅ(๊ณต์œ ยท์ฐœํ•˜๊ธฐ ๋“ฑ). */\n actions?: ReactNode;\n};\n\n/**\n * ์นด๋“œ ํ•œ ์žฅ์„ ํ†ต์งธ๋กœ โ€” ์กฐ๊ฐ๋“ค์„ ํ‚ท ์ƒ˜ํ”Œ ์ˆœ์„œ๋Œ€๋กœ ์กฐ๋ฆฝํ•œ๋‹ค.\n * ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ํ‚ท์— ์—†๋Š” ๊ฒƒ์„ ๋ผ์›Œ์•ผ ํ•  ๋•Œ๋งŒ ์กฐ๊ฐ์„ ์ง์ ‘ ์“ด๋‹ค.\n */\nexport function StructuredCard({\n title,\n href,\n target,\n summary,\n dateLabel,\n dateValue,\n meta,\n badge,\n tags,\n cta,\n actions,\n children,\n ...rest\n}: StructuredCardProps) {\n return (\n <StructuredItem {...rest}>\n {badge != null && <StructuredItemTop>{badge}</StructuredItemTop>}\n <StructuredItemBody>\n <StructuredItemLink href={href} target={target}>\n <StructuredItemTitle>{title}</StructuredItemTitle>\n {summary != null && <StructuredItemSummary>{summary}</StructuredItemSummary>}\n {meta != null && meta.length > 0 && <StructuredItemMeta items={meta} />}\n {dateLabel != null && (\n <StructuredItemDate label={dateLabel}>{dateValue}</StructuredItemDate>\n )}\n </StructuredItemLink>\n {cta != null && <StructuredItemCta>{cta}</StructuredItemCta>}\n </StructuredItemBody>\n {tags != null && tags.length > 0 && (\n <StructuredItemTags>\n {tags.map((tag, i) => (\n <StructuredItemTag key={i}>{tag}</StructuredItemTag>\n ))}\n </StructuredItemTags>\n )}\n {actions != null && <StructuredItemActions>{actions}</StructuredItemActions>}\n {children}\n </StructuredItem>\n );\n}\n\n/**\n * ์ž๋ฃŒ ์—†์Œ โ€” ํ‚ท์— ๋นˆ ๋ชฉ๋ก ๊ทœ์น™์ด ์—†์–ด ๋ณด์ถฉํ–ˆ๋‹ค(ํ‘œ์˜ `TableEmpty` ์™€ ๊ฐ™์€ ๋ชจ์–‘).\n * ๋ชฉ๋ก์ด ๋น„๋ฉด `StructuredList` ๋ฅผ ๊ทธ๋ฆฌ์ง€ ๋ง๊ณ  ์ด๊ฒƒ์„ ๊ทธ๋ฆฐ๋‹ค.\n * ๋Œ€์•ˆ ํ–‰๋™๊นŒ์ง€ ๊ณ๋“ค์ด๋ ค๋ฉด `ui/empty-state` ์˜ `EmptyState` ๋ฅผ ์“ด๋‹ค.\n */\nexport function StructuredListEmpty({\n className,\n children = '๋“ฑ๋ก๋œ ์ž๋ฃŒ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.',\n ...rest\n}: ComponentPropsWithRef<'p'>) {\n return (\n <p className={cx('py-14 text-center text-fg-subtle', className)} {...rest}>\n {children}\n </p>\n );\n}\n\nexport type StructuredListToolbarProps = ComponentPropsWithRef<'div'> & {\n /** ์™ผ์ชฝ โ€” ๊ฒฐ๊ณผ ๊ฑด์ˆ˜ยท์ „์ฒด ์„ ํƒ ๋“ฑ. `aria-live=\"polite\"` ๋กœ ๊ฐ์‹ธ ๋ฐ”๋€ ๊ฑด์ˆ˜๋ฅผ ์ฝ์–ด ์ค€๋‹ค. */\n info?: ReactNode;\n};\n\n/**\n * ๋ชฉ๋ก ์œ„ ๋„๊ตฌ ๋ง‰๋Œ€ โ€” ํ‚ท์— ํด๋ž˜์Šค๊ฐ€ ์—†์–ด ์œ ํ‹ธ๋ฆฌํ‹ฐ๋กœ ๊ทธ๋ฆฐ ๋ณด์ถฉ ๋ถ€ํ’ˆ์ด๋‹ค.\n *\n * ์™ผ์ชฝ์— ๊ฒฐ๊ณผ ๊ฑด์ˆ˜, ์˜ค๋ฅธ์ชฝ์— ์ •๋ ฌยท๊ฐœ์ˆ˜ ๋„๊ตฌ๋ฅผ ๋‘”๋‹ค. ๊ทœ๊ฒฉ: **๋ชจ๋“  ํ™”๋ฉด์—์„œ ๊ฐ™์€ ์ž๋ฆฌ์— ๊ฐ™์€ ์ˆœ์„œ๋กœ.**\n * ์ •๋ ฌ์„ ๋ฐ”๊ฟ€ ๋•Œ๋Š” ๋ชฉ๋ก๋งŒ ๊ฐˆ์•„ ๋ผ์šด๋‹ค โ€” ์ดˆ์ ์„ ์˜ฎ๊ธฐ์ง€ ๋งˆ๋ผ.\n */\nexport function StructuredListToolbar({\n info,\n className,\n children,\n ...rest\n}: StructuredListToolbarProps) {\n return (\n <div\n className={cx('flex flex-wrap items-center justify-between gap-3 pb-5', className)}\n {...rest}\n >\n {info != null ? <div aria-live=\"polite\">{info}</div> : <div />}\n <div className=\"flex flex-wrap items-center gap-3\">{children}</div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,108 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ /**
3
+ * ํƒญ โ€” KRDS `krds-tab-area`.
4
+ *
5
+ * ๊ฐ™์€ ์ž๋ฆฌ์—์„œ ๋‚ด์šฉ์„ ๊ฐˆ์•„ ๋ผ์šด๋‹ค. ์ ‘์—ˆ๋‹ค ํŽด๋Š” ๋ชฉ๋ก์€ `ui/accordion` ์ด๋‹ค.
6
+ * `Tab.Trigger` ์™€ `Tab.Panel` ์„ ๊ฐ™์€ `value` ๋กœ ์ง์ง€์šด๋‹ค.
7
+ * **ํƒญ์— ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ƒํƒœ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค**(๊ทœ๊ฒฉ) โ€” ๋‚ด์šฉ์ด ์—†์œผ๋ฉด ํƒญ์„ ์ง€์šฐ๊ฑฐ๋‚˜ ํŒจ๋„์—์„œ ์„ค๋ช…ํ•œ๋‹ค.
8
+ * ํƒญ์ด 6๊ฐœ๋ฅผ ๋„˜์œผ๋ฉด ํ‚ท์ด ๊ฐ€๋กœ ์Šคํฌ๋กค๋งŒ ์‹œํ‚ค๋ฏ€๋กœ ๋„˜๊ธฐ์ง€ ์•Š๋Š” ํŽธ์ด ๋งž๋‹ค. ์„ธ๋กœ ํƒญ์€ ํ‚ท์— ์—†๋‹ค.
9
+ * ๋น„์ œ์–ด๋กœ ์“ธ ๋•Œ `defaultValue` ๋ฅผ ์ƒ๋žตํ•˜๋ฉด ์„œ๋ฒ„ ๋ Œ๋” ๊ฒฐ๊ณผ์— ์—ด๋ฆฐ ํŒจ๋„์ด ์—†๋‹ค โ€” ๋˜๋„๋ก ๋ช…์‹œํ•œ๋‹ค.
10
+ *
11
+ * @example
12
+ * <Tab.Root defaultValue="online">
13
+ * <Tab.List label="์ฒญ๊ตฌ ๋ฐฉ๋ฒ•" variant="line">
14
+ * <Tab.Trigger value="online">์˜จ๋ผ์ธ</Tab.Trigger>
15
+ * <Tab.Trigger value="post">์šฐํŽธยทํŒฉ์Šค</Tab.Trigger>
16
+ * </Tab.List>
17
+ * <Tab.Panels>
18
+ * <Tab.Panel value="online">โ€ฆ</Tab.Panel>
19
+ * <Tab.Panel value="post">โ€ฆ</Tab.Panel>
20
+ * </Tab.Panels>
21
+ * </Tab.Root>
22
+ *
23
+ * ์ž์„ธํžˆ: docs/krds/09-๋ถ€ํ’ˆ-๋…ธํŠธ.md#ํƒญ
24
+ */
25
+ /** ํƒญ ๋ง‰๋Œ€ ๋ชจ์–‘. `line` ๋ฐ‘์ค„ํ˜•(๊ธฐ๋ณธ) ยท `fill` ๋ฒ„ํŠผํ˜•. */
26
+ export type TabVariant = 'line' | 'fill';
27
+ /**
28
+ * ํ™”์‚ดํ‘œ๋กœ ์ดˆ์ ์„ ์˜ฎ๊ธธ ๋•Œ ๊ณง๋ฐ”๋กœ ์„ ํƒํ•  ๊ฒƒ์ธ๊ฐ€.
29
+ * `manual`(๊ธฐ๋ณธ)์ด KRDS ๊ฐ€์ด๋“œ์˜ ๋™์ž‘์ด๊ณ , `auto` ๋Š” ํŒจ๋„์ด ๊ฐ€๋ฒผ์šธ ๋•Œ๋งŒ ์“ด๋‹ค.
30
+ */
31
+ export type TabActivation = 'manual' | 'auto';
32
+ export type TabRootProps = Omit<ComponentPropsWithRef<'div'>, 'onChange'> & {
33
+ /** ์ œ์–ด ๋ชจ๋“œ. ์ฃผ๋ฉด ์ƒํƒœ๋ฅผ ๋ฐ”๊นฅ์ด ๊ฐ–๋Š”๋‹ค. */
34
+ value?: string;
35
+ /** ๋น„์ œ์–ด ๋ชจ๋“œ์˜ ์ฒซ ์„ ํƒ๊ฐ’. **์ƒ๋žตํ•˜๋ฉด ์„œ๋ฒ„ ๋ Œ๋” ๊ฒฐ๊ณผ์— ์—ด๋ฆฐ ํŒจ๋„์ด ์—†๋‹ค** โ€” ๋˜๋„๋ก ๋ช…์‹œํ•œ๋‹ค. */
36
+ defaultValue?: string;
37
+ /** ์„ ํƒ์ด ๋ฐ”๋€” ๋•Œ. */
38
+ onValueChange?: (value: string) => void;
39
+ /** ํ™”์‚ดํ‘œ ์ด๋™์ด ๊ณง๋ฐ”๋กœ ์„ ํƒํ• ์ง€. ๊ธฐ๋ณธ `manual`. */
40
+ activation?: TabActivation;
41
+ };
42
+ /** ํƒญ ๋ฐ”๊นฅํ‹€ โ€” ํ‚ท `krds-tab-area`. ์•ˆ์— `Tab.List` ์™€ `Tab.Panels` ๋ฅผ ๋‘”๋‹ค. */
43
+ export declare function TabRoot({ value, defaultValue, onValueChange, activation, className, children, ...rest }: TabRootProps): import("react").JSX.Element;
44
+ export type TabListProps = ComponentPropsWithRef<'div'> & {
45
+ /** ํƒญ ๋ง‰๋Œ€ ๋ชจ์–‘. ๊ธฐ๋ณธ `line` โ€” ์ƒ๋žตํ•  ์ˆ˜ ์—†๋‹ค(๋‘˜ ๋‹ค ์—†์œผ๋ฉด ํ™œ์„ฑ ํ‘œ์‹œ๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค). */
46
+ variant?: TabVariant;
47
+ /** ํƒญ์ด ๊ฐ€๋กœ๋ฅผ ๊ฝ‰ ์ฑ„์šด๋‹ค. ๊ธฐ๋ณธ true โ€” false ๋ฉด `line` ์ด ๋ฐ‘์ค„ ๋Œ€์‹  ํ…Œ๋‘๋ฆฌ ์ƒ์ž๋กœ ๊ทธ๋ ค์ง„๋‹ค. */
48
+ full?: boolean;
49
+ /** ํƒญ ๋ง‰๋Œ€์˜ ์ด๋ฆ„(`aria-label`). */
50
+ label?: string;
51
+ /** `<ul role="tablist">` ์— ์–น์„ ํด๋ž˜์Šค. */
52
+ listClassName?: string;
53
+ };
54
+ /**
55
+ * ํƒญ ๋ง‰๋Œ€ โ€” ํ‚ท `.tab.line.full > ul[role=tablist]`.
56
+ *
57
+ * โ†โ†’ ๋กœ ์ดˆ์ ์„ ์˜ฎ๊ธฐ๊ณ  Home/End ๋กœ ์–‘ ๋์œผ๋กœ ๊ฐ„๋‹ค(์ˆœํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค).
58
+ * **๋ชจ๋“  ํƒญ์ด Tab ์ˆœ์„œ์— ๋‚จ๋Š”๋‹ค** โ€” KRDS ๊ฐ€ ใ€ŒTab/Shift+Tab ์œผ๋กœ ์ ‘๊ทผใ€์„ ๋ชป๋ฐ•์•„ ๋กœ๋น™ tabindex ๋ฅผ
59
+ * ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
60
+ */
61
+ export declare function TabList({ variant, full, label, listClassName, className, children, onKeyDown, ...rest }: TabListProps): import("react").JSX.Element;
62
+ export type TabTriggerProps = Omit<ComponentPropsWithRef<'button'>, 'value'> & {
63
+ /** ์ด ํƒญ์ด ์—ฌ๋Š” ํŒจ๋„์˜ ๊ฐ’. ๊ฐ™์€ ๊ฐ’์„ `Tab.Panel` ์— ์ค€๋‹ค. */
64
+ value: string;
65
+ /** `<li>` ์— ์–น์„ ํด๋ž˜์Šค. `.active` ๊ฐ€ ๋ถ™๋Š” ์š”์†Œ๋„ ๋ฒ„ํŠผ์ด ์•„๋‹ˆ๋ผ ์ด `<li>` ๋‹ค. */
66
+ itemClassName?: string;
67
+ };
68
+ /**
69
+ * ํƒญ ํ•˜๋‚˜ โ€” ํ‚ท ๋งˆํฌ์—…์€ `<li>` + `button.btn-tab` ์ด๊ณ , **`role="tab"` ์€ ๋ฒ„ํŠผ์— ๋ถ™์ธ๋‹ค.**
70
+ *
71
+ * ํ‚ท ์›๋ฌธ์€ `role="tab"` ๊ณผ ARIA ์†์„ฑ์„ `<li>` ์— ์–น๊ณ  ๊ทธ ์•ˆ์— ๋ฒ„ํŠผ์„ ๋„ฃ๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด
72
+ * ใ€Œ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ์•ˆ์— ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒใ€์ด ๋˜์–ด axe `nested-interactive`(serious)๋กœ ๊ฑธ๋ฆฐ๋‹ค
73
+ * โ€” ์‹ค์ œ๋กœ ํ‘œ์ค€์‚ฌ์ „ ํ™”๋ฉด์—์„œ 3๊ฑด ์žกํ˜”๋‹ค. ARIA ๊ทœ๊ฒฉ(APG Tabs)๋„ ์ดˆ์ ์„ ๋ฐ›๋Š” ์š”์†Œ๊ฐ€ ๊ณง `role="tab"` ์ด๋‹ค.
74
+ * ๊ทธ๋ž˜์„œ ์—ญํ• ยท์ƒํƒœ๋Š” ๋ฒ„ํŠผ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ , `<li>` ๋Š” `role="none"` ์œผ๋กœ ๋‘”๋‹ค.
75
+ * ๋ชจ์–‘์€ ๊ทธ๋Œ€๋กœ๋‹ค โ€” ํ‚ท CSS ๊ฐ€ ๋ณด๋Š” `.active` ๋Š” ์—ฌ์ „ํžˆ `<li>` ์— ๋ถ™๋Š”๋‹ค.
76
+ *
77
+ * ์ดˆ์ ์€ ๊ตด๋Ÿฌ๋‹ค๋‹Œ๋‹ค(roving tabindex) โ€” ์„ ํƒ๋œ ํƒญ๋งŒ Tab ํ‚ค๋กœ ๋“ค์–ด์˜ค๊ณ , ์ขŒ์šฐ ํ™”์‚ดํ‘œ๋กœ ์˜ฎ๊ธด๋‹ค(APG).
78
+ * ์„ ํƒ๋œ ํƒญ์—๋Š” ใ€Œ์„ ํƒ๋จใ€ ๋ฌธ๊ตฌ๊ฐ€ ์†Œ๋ฆฌ๋กœ ํ•จ๊ป˜ ๋‚˜๊ฐ„๋‹ค(์ง์ ‘ ์งค ๋•Œ ๊ฐ€์žฅ ์ž์ฃผ ๋น ๋œจ๋ฆฌ๋Š” ๊ณณ์ด๋‹ค).
79
+ */
80
+ export declare function TabTrigger({ value, itemClassName, className, children, onClick, type, ...rest }: TabTriggerProps): import("react").JSX.Element;
81
+ /** ํŒจ๋„ ๋ฌถ์Œ โ€” ํ‚ท `tab-conts-wrap`. **๋นผ๋ฉด ํŒจ๋„ ํญ์ด ์ค„์–ด๋“ ๋‹ค.** */
82
+ export declare function TabPanels({ className, children, ...rest }: ComponentPropsWithRef<'div'>): import("react").JSX.Element;
83
+ export type TabPanelProps = ComponentPropsWithRef<'section'> & {
84
+ /** ์ง์ด ๋˜๋Š” `Tab.Trigger` ์˜ ๊ฐ’. */
85
+ value: string;
86
+ /** ์ œ๋ชฉ ์ด๋™(H ํ‚ค)์—๋งŒ ์žกํžˆ๋Š” ์ˆจ์€ ํŒจ๋„ ์ œ๋ชฉ. ํƒญ ๊ธ€์ž์™€ ๋‹ค๋ฅธ ์„ค๋ช…์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ์ค€๋‹ค. */
87
+ srHeading?: string;
88
+ /** `srHeading` ์˜ ์ œ๋ชฉ ๋‹จ๊ณ„. ๊ธฐ๋ณธ 3. */
89
+ srHeadingLevel?: 2 | 3 | 4 | 5 | 6;
90
+ /**
91
+ * ์•ˆ ๋ณด์ด๋Š” ํŒจ๋„๋„ DOM ์— ๋‚จ๊ธธ ๊ฒƒ์ธ๊ฐ€. ๊ธฐ๋ณธ true ๊ฐ€ ํ‚ท ๋™์ž‘์ด๋‹ค(ํผ ์ž…๋ ฅ๊ฐ’์ด ์‚ด์•„ ์žˆ๋‹ค).
92
+ * false ๋Š” ๋ฌด๊ฑฐ์šด ๋ชฉ๋ก์ด๋‚˜ ์—ด ๋•Œ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š” ํผ์— ์“ด๋‹ค.
93
+ */
94
+ keepMounted?: boolean;
95
+ };
96
+ /**
97
+ * ํƒญ ํŒจ๋„ โ€” ํ‚ท `section.tab-conts`. ์ž์‹์„ ์—ฌ๋Ÿฟ ๋„ฃ์œผ๋ฉด 24px ๊ฐ„๊ฒฉ์ด ์ž๋™์œผ๋กœ ๋ถ™๋Š”๋‹ค.
98
+ */
99
+ export declare function TabPanel({ value, srHeading, srHeadingLevel, keepMounted, className, children, ...rest }: TabPanelProps): import("react").JSX.Element | null;
100
+ /** ํ•ฉ์„ฑ์šฉ ๋ฌถ์Œ. `Root` ยท `List` ยท `Trigger` ยท `Panels` ยท `Panel`. */
101
+ export declare const Tab: {
102
+ Root: typeof TabRoot;
103
+ List: typeof TabList;
104
+ Trigger: typeof TabTrigger;
105
+ Panels: typeof TabPanels;
106
+ Panel: typeof TabPanel;
107
+ };
108
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tab/index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,qBAAqB,EAE3B,MAAM,OAAO,CAAC;AAGf;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,4CAA4C;AAC5C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;AAyB9C,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAC1E,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB;IAChB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qCAAqC;IACrC,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,UAAqB,EACrB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,YAAY,+BA4Cd;AAED,MAAM,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG;IACxD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,mEAAmE;IACnE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAgB,EAChB,IAAW,EACX,KAAK,EACL,aAAa,EACb,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,YAAY,+BAuDd;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG;IAC7E,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,aAAa,EACb,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAe,EACf,GAAG,IAAI,EACR,EAAE,eAAe,+BAgCjB;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,qBAAqB,CAAC,KAAK,CAAC,+BAMvF;AAED,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG;IAC7D,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAS,EACT,cAAkB,EAClB,WAAkB,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,aAAa,sCAsBf;AAED,gEAAgE;AAChE,eAAO,MAAM,GAAG;;;;;;CAMf,CAAC"}