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 @@
1
+ {"version":3,"sources":["../../src/lib/krds.ts"],"sourcesContent":["/**\n * KRDS 공통 타입과 도우미.\n *\n * 여기 있는 값은 전부 킷(`public/krds/krds.min.css`)에서 실측한 것이다. 지어낸 값이 없다.\n */\n\n/**\n * 크기.\n *\n * ★ 버튼과 입력칸이 **같은 이름에 같은 높이**다. 실측(1rem = 10px):\n *\n * | 이름 | 높이 | 버튼 | 입력·셀렉트 |\n * |---------|-----|------|------------|\n * | xsmall | 32 | ○ | — |\n * | small | 40 | ○ | ○ |\n * | medium | 48 | ○ | ○ |\n * | large | 56 | ○ | ○ |\n * | xlarge | 64 | ○ | 80(예외) |\n *\n * 그래서 한 줄에 놓을 버튼과 입력칸에는 **같은 size 를 준다.**\n * 예전에 입력칸에 크기를 안 줘서 킷 기본값 large(56)로 렌더되고 옆 버튼은 small(40)이라\n * 16px 이 어긋났다 — 부품에서 기본값을 명시해 이 실수를 구조적으로 막는다.\n */\nexport type KrdsSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';\n\n/** 폼 요소가 실제로 지원하는 크기(킷에 xsmall 규칙이 없다). */\nexport type KrdsFieldSize = Exclude<KrdsSize, 'xsmall'>;\n\n/**\n * 의미 색상. 킷의 배지·태그·알림이 공통으로 쓰는 이름이다.\n */\nexport type KrdsTone =\n | 'primary'\n | 'secondary'\n | 'gray'\n | 'point'\n | 'danger'\n | 'warning'\n | 'success'\n | 'information';\n\n/** 폼 필드 상태. 킷 클래스는 `.is-error` · `.is-success` · `.is-information`. */\nexport type KrdsFieldState = 'error' | 'success' | 'information';\n\n/**\n * 킷이 제공하는 아이콘 이름(`ico-` 접두사를 뺀 것).\n * `<i className=\"svg-icon ico-sch\" />` 처럼 쓴다.\n *\n * 킷의 아이콘 파일은 `public/krds/img/component/icon/ico_*.svg` 에 있고 CSS 가 mask 로 물린다.\n * **여기 없는 이름을 쓰면 검은 네모가 나온다** — 그래서 타입으로 좁혀 둔다.\n * 아래 목록은 킷 CSS 에서 `\\\\.ico-([a-z0-9-]+)` 로 뽑은 68종 전부다. 킷을 올릴 때 다시 뽑는다.\n */\nexport type KrdsIcon =\n | 'all' | 'angle' | 'blog' | 'bread-home' | 'cal-move' | 'calendar'\n | 'call' | 'checkbox' | 'complete-fill' | 'del' | 'delete-fill' | 'down'\n | 'ellipsis' | 'email' | 'error-fill' | 'facebook' | 'faq' | 'file'\n | 'filter' | 'flag' | 'fold' | 'func' | 'global' | 'go'\n | 'go-top' | 'help' | 'information-fill' | 'instagram' | 'invalid' | 'join'\n | 'like' | 'link' | 'log' | 'login-go' | 'login-type01' | 'login-type02'\n | 'login-type03' | 'login-type04' | 'login-type05' | 'login-type06' | 'logout' | 'modal-close'\n | 'more' | 'my' | 'page-next' | 'plus' | 'popup-close' | 'print'\n | 'pw-visible' | 'pw-visible-on' | 'refresh' | 'reset' | 'sch' | 'sch-plus'\n | 'scrap' | 'search' | 'setting' | 'share' | 'sns-x' | 'success-fill'\n | 'swiper-play' | 'swiper-stop' | 'toggle' | 'tooltip' | 'upload' | 'urgent-danger'\n | 'view-mode' | 'youtube';\n\n/** 클래스 이름을 합친다. falsy 는 버린다. */\nexport function cx(...parts: Array<string | false | null | undefined>): string {\n return parts.filter(Boolean).join(' ');\n}\n\n/** 상태 → 킷 클래스. */\nexport function stateClass(state?: KrdsFieldState): string | undefined {\n return state && `is-${state}`;\n}\n"],"mappings":"AAmEO,SAAS,MAAM,OAAyD;AAC7E,SAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AACvC;AAGO,SAAS,WAAW,OAA4C;AACrE,SAAO,SAAS,MAAM,KAAK;AAC7B;","names":[]}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * 링크 구현 — **이 묶음이 프레임워크에 닿는 유일한 자리다.**
3
+ *
4
+ * 부품 안에서 화면 이동이 필요할 때는 프레임워크의 링크를 직접 부르지 않고 여기 `UiLink` 를 쓴다.
5
+ * 그래서 Next·React Router·순수 React 어디에 올리든 **고칠 파일이 이 하나**다.
6
+ *
7
+ * 기본값은 맨 `<a>` 다 — 아무 프레임워크에도 묶이지 않는다.
8
+ * 클라이언트 라우팅을 쓰고 있다면 아래처럼 이 파일만 바꾼다.
9
+ *
10
+ * ```tsx
11
+ * // Next.js (App Router · Pages Router 공통)
12
+ * import NextLink from 'next/link';
13
+ * export function UiLink({ href, ...rest }: UiLinkProps) {
14
+ * return <NextLink href={href} {...rest} />;
15
+ * }
16
+ *
17
+ * // React Router
18
+ * import { Link } from 'react-router';
19
+ * export function UiLink({ href, ...rest }: UiLinkProps) {
20
+ * return <Link to={href} {...rest} />;
21
+ * }
22
+ * ```
23
+ *
24
+ * 왜 context 나 전역 등록이 아닌가 — 부품 중 절반이 서버 컴포넌트로도 쓰인다.
25
+ * React context 는 서버 컴포넌트에서 못 쓰고, 모듈 전역 등록은 서버와 클라이언트의
26
+ * 모듈 그래프가 갈라져 있어 한쪽만 설정되는 함정이 있다. 그냥 import 를 한 곳에 모으는 것이
27
+ * 가장 단순하고 양쪽에서 똑같이 동작한다.
28
+ */
29
+ import type { ComponentPropsWithRef } from 'react';
30
+ export type UiLinkProps = ComponentPropsWithRef<'a'> & {
31
+ href: string;
32
+ };
33
+ export declare function UiLink({ href, ...rest }: UiLinkProps): import("react").JSX.Element;
34
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/lib/link.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,+BAEpD"}
@@ -0,0 +1,8 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ function UiLink({ href, ...rest }) {
3
+ return /* @__PURE__ */ jsx("a", { href, ...rest });
4
+ }
5
+ export {
6
+ UiLink
7
+ };
8
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/link.tsx"],"sourcesContent":["/**\n * 링크 구현 — **이 묶음이 프레임워크에 닿는 유일한 자리다.**\n *\n * 부품 안에서 화면 이동이 필요할 때는 프레임워크의 링크를 직접 부르지 않고 여기 `UiLink` 를 쓴다.\n * 그래서 Next·React Router·순수 React 어디에 올리든 **고칠 파일이 이 하나**다.\n *\n * 기본값은 맨 `<a>` 다 — 아무 프레임워크에도 묶이지 않는다.\n * 클라이언트 라우팅을 쓰고 있다면 아래처럼 이 파일만 바꾼다.\n *\n * ```tsx\n * // Next.js (App Router · Pages Router 공통)\n * import NextLink from 'next/link';\n * export function UiLink({ href, ...rest }: UiLinkProps) {\n * return <NextLink href={href} {...rest} />;\n * }\n *\n * // React Router\n * import { Link } from 'react-router';\n * export function UiLink({ href, ...rest }: UiLinkProps) {\n * return <Link to={href} {...rest} />;\n * }\n * ```\n *\n * 왜 context 나 전역 등록이 아닌가 — 부품 중 절반이 서버 컴포넌트로도 쓰인다.\n * React context 는 서버 컴포넌트에서 못 쓰고, 모듈 전역 등록은 서버와 클라이언트의\n * 모듈 그래프가 갈라져 있어 한쪽만 설정되는 함정이 있다. 그냥 import 를 한 곳에 모으는 것이\n * 가장 단순하고 양쪽에서 똑같이 동작한다.\n */\nimport type { ComponentPropsWithRef } from 'react';\n\nexport type UiLinkProps = ComponentPropsWithRef<'a'> & { href: string };\n\nexport function UiLink({ href, ...rest }: UiLinkProps) {\n return <a href={href} {...rest} />;\n}\n"],"mappings":"AAiCS;AADF,SAAS,OAAO,EAAE,MAAM,GAAG,KAAK,GAAgB;AACrD,SAAO,oBAAC,OAAE,MAAa,GAAG,MAAM;AAClC;","names":[]}
@@ -0,0 +1,123 @@
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
+ /** 마지막 단(3뎁스) 항목. 여기서 트리가 끝난다 — 규격의 「최대 3수준」을 타입으로 막은 자리다. */
3
+ export type MainMenuLink = {
4
+ /** React key. 없으면 차례를 쓴다. */
5
+ id?: string;
6
+ /** 메뉴 이름. */
7
+ label: ReactNode;
8
+ /** 이동 주소. 없으면 버튼이 된다. */
9
+ href?: string;
10
+ /** 새 창으로 연다. 외부 링크면 화살표 아이콘이 함께 붙는다. */
11
+ newWindow?: boolean;
12
+ /** 지금 보고 있는 화면. `aria-current="page"` 가 붙는다. */
13
+ current?: boolean;
14
+ /** 메뉴 설명. 한 목록에 하나라도 있으면 그 목록 전체가 킷의 설명형으로 바뀐다. */
15
+ description?: string;
16
+ /** 눌렀을 때. */
17
+ onSelect?: () => void;
18
+ };
19
+ /** 드롭다운 오른쪽(또는 아래)의 신규 서비스 배너 — 킷 `gnb-sub-banner`. */
20
+ export type MainMenuBanner = {
21
+ /** 배지 글자. 배지는 대화형이 아니므로 글자만 넣는다. */
22
+ badge?: ReactNode;
23
+ /** 배너 글자. */
24
+ label: ReactNode;
25
+ /** 이동 주소. */
26
+ href?: string;
27
+ /** 새 창으로 연다. */
28
+ newWindow?: boolean;
29
+ /** 배너를 오른쪽 칸에 세운다. 기본은 목록 아래. */
30
+ side?: boolean;
31
+ /** 눌렀을 때. */
32
+ onSelect?: () => void;
33
+ };
34
+ /** 2뎁스. `items` 가 없으면 왼쪽 칸에 링크 한 줄로만 놓인다. */
35
+ export type MainMenuGroup = {
36
+ /** React key. 없으면 차례를 쓴다. */
37
+ id?: string;
38
+ /** 메뉴 이름. */
39
+ label: ReactNode;
40
+ /** 이동 주소. `items` 가 없을 때 쓰인다. */
41
+ href?: string;
42
+ /** 새 창으로 연다. */
43
+ newWindow?: boolean;
44
+ /** 지금 보고 있는 화면. */
45
+ current?: boolean;
46
+ /** 드롭다운 제목. 생략하면 `label` 을 쓴다 — 제목 없는 드롭다운은 만들 수 없다. */
47
+ title?: ReactNode;
48
+ /** 제목 옆 「바로가기」 링크. */
49
+ shortcut?: {
50
+ href: string;
51
+ label?: ReactNode;
52
+ newWindow?: boolean;
53
+ };
54
+ /** 신규 서비스 배너. */
55
+ banner?: MainMenuBanner;
56
+ /** 3뎁스 항목. */
57
+ items?: MainMenuLink[];
58
+ /** 눌렀을 때. */
59
+ onSelect?: () => void;
60
+ };
61
+ /** 1뎁스. `items` 가 없으면 드롭다운 없는 단순 링크다. */
62
+ export type MainMenuTop = {
63
+ /** React key. 없으면 차례를 쓴다. */
64
+ id?: string;
65
+ /** 메뉴 이름. */
66
+ label: ReactNode;
67
+ /** 이동 주소. `items` 가 없을 때 쓰인다. */
68
+ href?: string;
69
+ /** 새 창으로 연다. */
70
+ newWindow?: boolean;
71
+ /** 지금 보고 있는 화면. */
72
+ current?: boolean;
73
+ /** 2뎁스 항목. */
74
+ items?: MainMenuGroup[];
75
+ /** 눌렀을 때. */
76
+ onSelect?: () => void;
77
+ };
78
+ /** 드롭다운 제목의 헤딩 단계. 화면의 제목 위계에 맞춘다. */
79
+ export type MainMenuTitleLevel = 2 | 3 | 4 | 5 | 6;
80
+ export type MainMenuProps = Omit<ComponentPropsWithRef<'nav'>, 'children'> & {
81
+ /** 메뉴 트리(최대 3수준). */
82
+ items: MainMenuTop[];
83
+ /** `<nav>` 의 이름. 규격 권장 문구가 「메인 메뉴」다. */
84
+ label?: string;
85
+ /** 드롭다운 제목의 헤딩 단계. 기본 2. */
86
+ titleLevel?: MainMenuTitleLevel;
87
+ /** 딤을 깔고 본문 스크롤을 잠근다. 기본 켬 — 헤더 안 좁은 드롭다운으로 쓸 때만 끈다. */
88
+ backdrop?: boolean;
89
+ };
90
+ /**
91
+ * 주메뉴(PC) — 킷 `krds-main-menu`. **1023px 이하에서는 킷이 이 요소를 숨긴다** —
92
+ * 좁은 화면은 {@link MainMenuMobile} 이 맡는다.
93
+ */
94
+ export declare function MainMenu({ items, label, titleLevel, backdrop, className, onKeyDown, onBlur, ref, ...rest }: MainMenuProps): import("react").JSX.Element;
95
+ export type MainMenuMobileProps = Omit<ComponentPropsWithRef<'div'>, 'children' | 'id'> & {
96
+ /** 메뉴 트리. PC 주메뉴와 같은 값을 넘긴다. */
97
+ items: MainMenuTop[];
98
+ /** 열림 여부. 상태는 화면 쪽이 쥔다. */
99
+ open: boolean;
100
+ /** 닫아 달라는 요청 — Esc·닫기 단추·PC 폭으로 넓어질 때 온다. */
101
+ onClose: () => void;
102
+ /** 서랍의 id. 여는 단추의 `aria-controls` 와 짝이다. **한 화면에 하나만 둔다.** */
103
+ id?: string;
104
+ /** 서랍의 이름(`aria-label`). 기본 「전체 메뉴」. */
105
+ label?: string;
106
+ /** 닫기 단추의 이름. */
107
+ closeLabel?: string;
108
+ /** 판 제목의 헤딩 단계. 기본 2. */
109
+ titleLevel?: MainMenuTitleLevel;
110
+ /** 서랍 머리 자리 — 유틸 링크·로그인·검색칸. */
111
+ header?: ReactNode;
112
+ /** 서랍 바닥 자리 — 정책 링크 등. */
113
+ bottom?: ReactNode;
114
+ };
115
+ /**
116
+ * 전체메뉴(모바일) — 킷 `krds-main-menu-mobile`. 초점을 가두는 대화상자다.
117
+ *
118
+ * 왼쪽 1뎁스는 탭이 아니라 **앵커**다 — 누르면 오른쪽이 그 자리로 스크롤하고 선택 표시가 따라간다.
119
+ * **1024px 이상에서는 킷이 이 요소를 숨긴다** — PC 는 {@link MainMenu} 가 맡는다.
120
+ * 화면이 PC 폭으로 넓어지면 스스로 닫는다(그대로 두면 닫을 길이 사라진다).
121
+ */
122
+ export declare function MainMenuMobile({ items, open, onClose, id, label, closeLabel, titleLevel, header, bottom, className, style, onKeyDown, ...rest }: MainMenuMobileProps): import("react").JSX.Element;
123
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main-menu/index.tsx"],"names":[],"mappings":"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"}