@reitwagen/design-components 0.3.1 → 0.6.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 (245) hide show
  1. package/dist/components/Button/Button.d.ts +6 -5
  2. package/dist/components/Button/Button.d.ts.map +1 -1
  3. package/dist/components/Button/Button.js +3 -2
  4. package/dist/components/Button/Button.stories.d.ts +1 -0
  5. package/dist/components/Button/Button.stories.d.ts.map +1 -1
  6. package/dist/components/Button/Button.stories.js +4 -0
  7. package/dist/components/Checkbox/Checkbox.d.ts +3 -5
  8. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  9. package/dist/components/Checkbox/Checkbox.js +1 -2
  10. package/dist/components/Checkbox/Checkbox.stories.d.ts +1 -0
  11. package/dist/components/Checkbox/Checkbox.stories.d.ts.map +1 -1
  12. package/dist/components/Checkbox/Checkbox.stories.js +5 -1
  13. package/dist/components/Chip/Chip.d.ts +2 -2
  14. package/dist/components/Chip/Chip.d.ts.map +1 -1
  15. package/dist/components/Chip/Chip.js +1 -0
  16. package/dist/components/Chip/Chip.stories.d.ts +1 -0
  17. package/dist/components/Chip/Chip.stories.d.ts.map +1 -1
  18. package/dist/components/Chip/Chip.stories.js +2 -0
  19. package/dist/components/Chip/index.d.ts.map +1 -1
  20. package/dist/components/FormControl/FormControl.d.ts +55 -0
  21. package/dist/components/FormControl/FormControl.d.ts.map +1 -0
  22. package/dist/components/FormControl/FormControl.js +79 -0
  23. package/dist/components/FormControl/FormControl.stories.d.ts +19 -0
  24. package/dist/components/FormControl/FormControl.stories.d.ts.map +1 -0
  25. package/dist/components/FormControl/FormControl.stories.js +75 -0
  26. package/dist/components/FormControl/FormControlLabel.d.ts +20 -0
  27. package/dist/components/FormControl/FormControlLabel.d.ts.map +1 -0
  28. package/dist/components/FormControl/FormControlLabel.js +32 -0
  29. package/dist/components/FormControl/FormControlValidation.d.ts +13 -0
  30. package/dist/components/FormControl/FormControlValidation.d.ts.map +1 -0
  31. package/dist/components/FormControl/FormControlValidation.js +22 -0
  32. package/dist/components/FormControl/index.d.ts +2 -0
  33. package/dist/components/FormControl/index.d.ts.map +1 -0
  34. package/dist/components/FormControl/index.js +5 -0
  35. package/dist/components/Icons/IconAlarmOff.d.ts.map +1 -1
  36. package/dist/components/Icons/IconAlarmOff.js +1 -0
  37. package/dist/components/Icons/IconAlarmOn.d.ts.map +1 -1
  38. package/dist/components/Icons/IconAlarmOn.js +1 -0
  39. package/dist/components/Icons/IconAppleDefault.d.ts.map +1 -1
  40. package/dist/components/Icons/IconAppleDefault.js +1 -0
  41. package/dist/components/Icons/IconArrowDown.d.ts.map +1 -1
  42. package/dist/components/Icons/IconArrowDown.js +1 -0
  43. package/dist/components/Icons/IconArrowLeft.d.ts.map +1 -1
  44. package/dist/components/Icons/IconArrowLeft.js +1 -0
  45. package/dist/components/Icons/IconArrowRight.d.ts.map +1 -1
  46. package/dist/components/Icons/IconArrowRight.js +1 -0
  47. package/dist/components/Icons/IconArrowUp.d.ts.map +1 -1
  48. package/dist/components/Icons/IconArrowUp.js +1 -0
  49. package/dist/components/Icons/IconBikeDefault.d.ts.map +1 -1
  50. package/dist/components/Icons/IconBikeDefault.js +1 -0
  51. package/dist/components/Icons/IconBookmarkOff.d.ts.map +1 -1
  52. package/dist/components/Icons/IconBookmarkOff.js +1 -0
  53. package/dist/components/Icons/IconBookmarkOn.d.ts.map +1 -1
  54. package/dist/components/Icons/IconBookmarkOn.js +1 -0
  55. package/dist/components/Icons/IconCafeDefault.d.ts.map +1 -1
  56. package/dist/components/Icons/IconCafeDefault.js +1 -0
  57. package/dist/components/Icons/IconCalendarDefault.d.ts.map +1 -1
  58. package/dist/components/Icons/IconCalendarDefault.js +1 -0
  59. package/dist/components/Icons/IconCallDefault.d.ts.map +1 -1
  60. package/dist/components/Icons/IconCallDefault.js +1 -0
  61. package/dist/components/Icons/IconCameraDefault.d.ts.map +1 -1
  62. package/dist/components/Icons/IconCameraDefault.js +1 -0
  63. package/dist/components/Icons/IconChatDefault.d.ts.map +1 -1
  64. package/dist/components/Icons/IconChatDefault.js +1 -0
  65. package/dist/components/Icons/IconCheckDefault.d.ts.map +1 -1
  66. package/dist/components/Icons/IconCheckDefault.js +1 -0
  67. package/dist/components/Icons/IconChevronDown.d.ts.map +1 -1
  68. package/dist/components/Icons/IconChevronDown.js +1 -0
  69. package/dist/components/Icons/IconChevronLeft.d.ts.map +1 -1
  70. package/dist/components/Icons/IconChevronLeft.js +1 -0
  71. package/dist/components/Icons/IconChevronRight.d.ts.map +1 -1
  72. package/dist/components/Icons/IconChevronRight.js +1 -0
  73. package/dist/components/Icons/IconChevronUp.d.ts.map +1 -1
  74. package/dist/components/Icons/IconChevronUp.js +1 -0
  75. package/dist/components/Icons/IconCloseCircle.d.ts.map +1 -1
  76. package/dist/components/Icons/IconCloseCircle.js +1 -0
  77. package/dist/components/Icons/IconCloseDefault.d.ts.map +1 -1
  78. package/dist/components/Icons/IconCloseDefault.js +1 -0
  79. package/dist/components/Icons/IconCloseSmall.d.ts.map +1 -1
  80. package/dist/components/Icons/IconCloseSmall.js +1 -0
  81. package/dist/components/Icons/IconCommentOff.d.ts.map +1 -1
  82. package/dist/components/Icons/IconCommentOff.js +1 -0
  83. package/dist/components/Icons/IconCommentOn.d.ts.map +1 -1
  84. package/dist/components/Icons/IconCommentOn.js +1 -0
  85. package/dist/components/Icons/IconCommunityDefault.d.ts.map +1 -1
  86. package/dist/components/Icons/IconCommunityDefault.js +1 -0
  87. package/dist/components/Icons/IconCopyDefault.d.ts.map +1 -1
  88. package/dist/components/Icons/IconCopyDefault.js +1 -0
  89. package/dist/components/Icons/IconCouponDefault.d.ts.map +1 -1
  90. package/dist/components/Icons/IconCouponDefault.js +1 -0
  91. package/dist/components/Icons/IconEditDefault.d.ts.map +1 -1
  92. package/dist/components/Icons/IconEditDefault.js +1 -0
  93. package/dist/components/Icons/IconEyeOff.d.ts.map +1 -1
  94. package/dist/components/Icons/IconEyeOff.js +1 -0
  95. package/dist/components/Icons/IconEyeOn.d.ts.map +1 -1
  96. package/dist/components/Icons/IconEyeOn.js +1 -0
  97. package/dist/components/Icons/IconFilterDefault.d.ts.map +1 -1
  98. package/dist/components/Icons/IconFilterDefault.js +1 -0
  99. package/dist/components/Icons/IconFireDefault.d.ts.map +1 -1
  100. package/dist/components/Icons/IconFireDefault.js +1 -0
  101. package/dist/components/Icons/IconFlagDefault.d.ts.map +1 -1
  102. package/dist/components/Icons/IconFlagDefault.js +1 -0
  103. package/dist/components/Icons/IconFunDefault.d.ts.map +1 -1
  104. package/dist/components/Icons/IconFunDefault.js +1 -0
  105. package/dist/components/Icons/IconHeartDefault.d.ts.map +1 -1
  106. package/dist/components/Icons/IconHeartDefault.js +1 -0
  107. package/dist/components/Icons/IconHeartOff.d.ts.map +1 -1
  108. package/dist/components/Icons/IconHeartOff.js +1 -0
  109. package/dist/components/Icons/IconHeartOn.d.ts.map +1 -1
  110. package/dist/components/Icons/IconHeartOn.js +1 -0
  111. package/dist/components/Icons/IconHelmetDefault.d.ts.map +1 -1
  112. package/dist/components/Icons/IconHelmetDefault.js +1 -0
  113. package/dist/components/Icons/IconHomeDefault.d.ts.map +1 -1
  114. package/dist/components/Icons/IconHomeDefault.js +1 -0
  115. package/dist/components/Icons/IconHomeLine.d.ts.map +1 -1
  116. package/dist/components/Icons/IconHomeLine.js +1 -0
  117. package/dist/components/Icons/IconImageDefault.d.ts.map +1 -1
  118. package/dist/components/Icons/IconImageDefault.js +1 -0
  119. package/dist/components/Icons/IconInfoDefault.d.ts.map +1 -1
  120. package/dist/components/Icons/IconInfoDefault.js +1 -0
  121. package/dist/components/Icons/IconInformationDefault.d.ts.map +1 -1
  122. package/dist/components/Icons/IconInformationDefault.js +1 -0
  123. package/dist/components/Icons/IconInstagramDefault.d.ts.map +1 -1
  124. package/dist/components/Icons/IconInstagramDefault.js +1 -0
  125. package/dist/components/Icons/IconKakaotalkDefault.d.ts.map +1 -1
  126. package/dist/components/Icons/IconKakaotalkDefault.js +1 -0
  127. package/dist/components/Icons/IconLike.d.ts.map +1 -1
  128. package/dist/components/Icons/IconLike.js +1 -0
  129. package/dist/components/Icons/IconLikeOff.d.ts.map +1 -1
  130. package/dist/components/Icons/IconLikeOff.js +1 -0
  131. package/dist/components/Icons/IconLikeOn.d.ts.map +1 -1
  132. package/dist/components/Icons/IconLikeOn.js +1 -0
  133. package/dist/components/Icons/IconLocateDefault.d.ts.map +1 -1
  134. package/dist/components/Icons/IconLocateDefault.js +1 -0
  135. package/dist/components/Icons/IconMYDefault.d.ts.map +1 -1
  136. package/dist/components/Icons/IconMYDefault.js +1 -0
  137. package/dist/components/Icons/IconMYLine.d.ts.map +1 -1
  138. package/dist/components/Icons/IconMYLine.js +1 -0
  139. package/dist/components/Icons/IconMedal.d.ts.map +1 -1
  140. package/dist/components/Icons/IconMedal.js +1 -0
  141. package/dist/components/Icons/IconMenuDefault.d.ts.map +1 -1
  142. package/dist/components/Icons/IconMenuDefault.js +1 -0
  143. package/dist/components/Icons/IconMessage.d.ts.map +1 -1
  144. package/dist/components/Icons/IconMessage.js +1 -0
  145. package/dist/components/Icons/IconMessageDefault.d.ts.map +1 -1
  146. package/dist/components/Icons/IconMessageDefault.js +1 -0
  147. package/dist/components/Icons/IconMinusDefault.d.ts.map +1 -1
  148. package/dist/components/Icons/IconMinusDefault.js +1 -0
  149. package/dist/components/Icons/IconMoreDefault.d.ts.map +1 -1
  150. package/dist/components/Icons/IconMoreDefault.js +1 -0
  151. package/dist/components/Icons/IconNaviDefault.d.ts.map +1 -1
  152. package/dist/components/Icons/IconNaviDefault.js +1 -0
  153. package/dist/components/Icons/IconNaviLine.d.ts.map +1 -1
  154. package/dist/components/Icons/IconNaviLine.js +1 -0
  155. package/dist/components/Icons/IconNull.d.ts.map +1 -1
  156. package/dist/components/Icons/IconNull.js +1 -0
  157. package/dist/components/Icons/IconOilDefault.d.ts.map +1 -1
  158. package/dist/components/Icons/IconOilDefault.js +1 -0
  159. package/dist/components/Icons/IconPlaceDefault.d.ts.map +1 -1
  160. package/dist/components/Icons/IconPlaceDefault.js +1 -0
  161. package/dist/components/Icons/IconPlaceLine.d.ts.map +1 -1
  162. package/dist/components/Icons/IconPlaceLine.js +2 -1
  163. package/dist/components/Icons/IconPlusDefault.d.ts.map +1 -1
  164. package/dist/components/Icons/IconPlusDefault.js +1 -0
  165. package/dist/components/Icons/IconReceiptDefault.d.ts.map +1 -1
  166. package/dist/components/Icons/IconReceiptDefault.js +1 -0
  167. package/dist/components/Icons/IconRepairDefault.d.ts.map +1 -1
  168. package/dist/components/Icons/IconRepairDefault.js +1 -0
  169. package/dist/components/Icons/IconResetDefault.d.ts.map +1 -1
  170. package/dist/components/Icons/IconResetDefault.js +1 -0
  171. package/dist/components/Icons/IconRevolvingLightDefault.d.ts.map +1 -1
  172. package/dist/components/Icons/IconRevolvingLightDefault.js +1 -0
  173. package/dist/components/Icons/IconSadDefault.d.ts.map +1 -1
  174. package/dist/components/Icons/IconSadDefault.js +1 -0
  175. package/dist/components/Icons/IconSafe.d.ts.map +1 -1
  176. package/dist/components/Icons/IconSafe.js +1 -0
  177. package/dist/components/Icons/IconSearchDefault.d.ts.map +1 -1
  178. package/dist/components/Icons/IconSearchDefault.js +1 -0
  179. package/dist/components/Icons/IconSettingDefault.d.ts.map +1 -1
  180. package/dist/components/Icons/IconSettingDefault.js +1 -0
  181. package/dist/components/Icons/IconShareDefault.d.ts.map +1 -1
  182. package/dist/components/Icons/IconShareDefault.js +1 -0
  183. package/dist/components/Icons/IconShopDefault.d.ts.map +1 -1
  184. package/dist/components/Icons/IconShopDefault.js +1 -0
  185. package/dist/components/Icons/IconSmileDefault.d.ts.map +1 -1
  186. package/dist/components/Icons/IconSmileDefault.js +1 -0
  187. package/dist/components/Icons/IconStarOff.d.ts.map +1 -1
  188. package/dist/components/Icons/IconStarOff.js +1 -0
  189. package/dist/components/Icons/IconStarOn.d.ts.map +1 -1
  190. package/dist/components/Icons/IconStarOn.js +1 -0
  191. package/dist/components/Icons/IconThumbDefault.d.ts.map +1 -1
  192. package/dist/components/Icons/IconThumbDefault.js +1 -0
  193. package/dist/components/Icons/IconThunder.d.ts.map +1 -1
  194. package/dist/components/Icons/IconThunder.js +1 -0
  195. package/dist/components/Icons/IconTimeDefault.d.ts.map +1 -1
  196. package/dist/components/Icons/IconTimeDefault.js +1 -0
  197. package/dist/components/Icons/IconVoteDefault.d.ts.map +1 -1
  198. package/dist/components/Icons/IconVoteDefault.js +1 -0
  199. package/dist/components/Icons/IconYoutubeDefault.d.ts.map +1 -1
  200. package/dist/components/Icons/IconYoutubeDefault.js +1 -0
  201. package/dist/components/Input/Input.d.ts +28 -0
  202. package/dist/components/Input/Input.d.ts.map +1 -0
  203. package/dist/components/Input/Input.js +30 -0
  204. package/dist/components/Input/Input.stories.d.ts +34 -0
  205. package/dist/components/Input/Input.stories.d.ts.map +1 -0
  206. package/dist/components/Input/Input.stories.js +81 -0
  207. package/dist/components/Input/Input.styles.d.ts +5 -0
  208. package/dist/components/Input/Input.styles.d.ts.map +1 -0
  209. package/dist/components/Input/Input.styles.js +20 -0
  210. package/dist/components/Input/index.d.ts +2 -0
  211. package/dist/components/Input/index.d.ts.map +1 -0
  212. package/dist/components/Input/index.js +5 -0
  213. package/dist/components/Radio/Radio.d.ts +34 -0
  214. package/dist/components/Radio/Radio.d.ts.map +1 -0
  215. package/dist/components/Radio/Radio.js +63 -0
  216. package/dist/components/Radio/Radio.stories.d.ts +34 -0
  217. package/dist/components/Radio/Radio.stories.d.ts.map +1 -0
  218. package/dist/components/Radio/Radio.stories.js +122 -0
  219. package/dist/components/Radio/Radio.styles.d.ts +9 -0
  220. package/dist/components/Radio/Radio.styles.d.ts.map +1 -0
  221. package/dist/components/Radio/Radio.styles.js +70 -0
  222. package/dist/components/Radio/index.d.ts +2 -0
  223. package/dist/components/Radio/index.d.ts.map +1 -0
  224. package/dist/components/Radio/index.js +5 -0
  225. package/dist/components/RadioGroup/RadioGroup.d.ts +55 -0
  226. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  227. package/dist/components/RadioGroup/RadioGroup.js +45 -0
  228. package/dist/components/RadioGroup/RadioGroup.stories.d.ts +40 -0
  229. package/dist/components/RadioGroup/RadioGroup.stories.d.ts.map +1 -0
  230. package/dist/components/RadioGroup/RadioGroup.stories.js +103 -0
  231. package/dist/components/RadioGroup/index.d.ts +2 -0
  232. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  233. package/dist/components/RadioGroup/index.js +5 -0
  234. package/dist/components/Toggle/Toggle.d.ts +8 -8
  235. package/dist/components/Toggle/Toggle.d.ts.map +1 -1
  236. package/dist/components/Toggle/Toggle.js +1 -4
  237. package/dist/components/Toggle/Toggle.stories.d.ts.map +1 -1
  238. package/dist/components/Toggle/index.d.ts.map +1 -1
  239. package/dist/index.css +101 -0
  240. package/dist/index.d.ts +4 -0
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.js +4 -0
  243. package/dist/types/props.d.ts +6 -2
  244. package/dist/types/props.d.ts.map +1 -1
  245. package/package.json +3 -3
@@ -1,11 +1,12 @@
1
- import { ButtonHTMLAttributes, ReactNode } from "react";
1
+ import { ElementType, ReactNode } from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
- import { ChildrenProps } from "../../types/props";
3
+ import { ChildrenProps, PolymorphicComponentWithRef } from "../../types/props";
4
4
  import { buttonVariants } from "./Button.styles";
5
- interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "disabled" | "color">, ChildrenProps, VariantProps<typeof buttonVariants> {
5
+ type ButtonOwnProps = VariantProps<typeof buttonVariants> & ChildrenProps & {
6
6
  leftContent?: ReactNode;
7
7
  rightContent?: ReactNode;
8
- }
8
+ };
9
+ type ButtonProps<C extends ElementType> = PolymorphicComponentWithRef<C, ButtonOwnProps>;
9
10
  /**
10
11
  * `Button`: 버튼의 스타일을 변경하려면 variant, color, size 속성을 사용하세요. Button이 부모 요소의 전체 너비를 차지하게 하려면 full 속성을 지정하세요.
11
12
  * @see [RDS Storybook: Button](https://main--691ac7d6da1eb0c0acb5f3e2.chromatic.com/?path=/docs/components-button--docs)
@@ -15,7 +16,7 @@ interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "dis
15
16
  * <Button variant="outlined" size="large" full>Button Text</Button>
16
17
  * ```
17
18
  */
18
- export declare function Button({ className, variant, color, size, disabled, children, leftContent, rightContent, full, ...props }: ButtonProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function Button<C extends ElementType = "button">({ className, as, variant, color, size, disabled, children, leftContent, rightContent, full, ...props }: ButtonProps<C>): import("react/jsx-runtime").JSX.Element;
19
20
  export declare namespace Button {
20
21
  var displayName: string;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,UAAU,WACR,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,EACzE,aAAa,EACb,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED;;;;;;;;GAQG;AAEH,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,WAAW,2CAqBb;yBAhCe,MAAM"}
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,KAAK,cAAc,GAAG,YAAY,CAAC,OAAO,cAAc,CAAC,GACvD,aAAa,GAAG;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEJ,KAAK,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI,2BAA2B,CACnE,CAAC,EACD,cAAc,CACf,CAAC;AAEF;;;;;;;;GAQG;AAEH,wBAAgB,MAAM,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,EAAE,EACvD,SAAS,EACT,EAAE,EACF,OAAO,EACP,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,WAAW,CAAC,CAAC,CAAC,2CAuBhB;yBAnCe,MAAM"}
@@ -14,8 +14,9 @@ const Button_styles_1 = require("./Button.styles");
14
14
  * <Button variant="outlined" size="large" full>Button Text</Button>
15
15
  * ```
16
16
  */
17
- function Button({ className, variant, color, size, disabled, children, leftContent, rightContent, full, ...props }) {
18
- return ((0, jsx_runtime_1.jsxs)("button", { className: (0, style_1.cn)((0, Button_styles_1.buttonVariants)({
17
+ function Button({ className, as, variant, color, size, disabled, children, leftContent, rightContent, full, ...props }) {
18
+ const Component = as || "button";
19
+ return ((0, jsx_runtime_1.jsxs)(Component, { className: (0, style_1.cn)((0, Button_styles_1.buttonVariants)({
19
20
  variant,
20
21
  color,
21
22
  size,
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: typeof Button;
6
6
  tags: string[];
7
7
  parameters: {
8
+ layout: string;
8
9
  docs: {
9
10
  description: {
10
11
  component: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDqB,CAAC;AAEhC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KA6BtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAgCpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KA+BnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAcnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAoBtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAoBlB,CAAC"}
1
+ {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Button/Button.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDqB,CAAC;AAEhC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KA8BtB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAiCpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAgCnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAcnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAoBtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAoBlB,CAAC"}
@@ -8,6 +8,7 @@ const meta = {
8
8
  component: Button_1.Button,
9
9
  tags: ["autodocs"],
10
10
  parameters: {
11
+ layout: "centered",
11
12
  docs: {
12
13
  description: {
13
14
  component: `
@@ -56,6 +57,7 @@ const meta = {
56
57
  exports.default = meta;
57
58
  exports.Variants = {
58
59
  parameters: {
60
+ layout: "centered",
59
61
  docs: {
60
62
  description: {
61
63
  story: `
@@ -74,6 +76,7 @@ exports.Variants = {
74
76
  };
75
77
  exports.Colors = {
76
78
  parameters: {
79
+ layout: "centered",
77
80
  docs: {
78
81
  description: {
79
82
  story: `
@@ -92,6 +95,7 @@ exports.Colors = {
92
95
  };
93
96
  exports.Sizes = {
94
97
  parameters: {
98
+ layout: "centered",
95
99
  docs: {
96
100
  description: {
97
101
  story: `
@@ -1,13 +1,13 @@
1
- import { ButtonHTMLAttributes } from "react";
1
+ import { ComponentPropsWithRef } from "react";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import { ChildrenProps } from "../../types/props";
4
4
  import { checkboxVariants } from "./Checkbox.styles";
5
- export interface CheckboxProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "disabled" | "color">, ChildrenProps, VariantProps<typeof checkboxVariants> {
5
+ export type CheckboxProps = ComponentPropsWithRef<"button"> & ChildrenProps & VariantProps<typeof checkboxVariants> & {
6
6
  /**
7
7
  * 체크박스의 체크 상태가 변경될 때 호출되는 이벤트 핸들러
8
8
  */
9
9
  onCheckedChange?: (checked: boolean) => void;
10
- }
10
+ };
11
11
  /**
12
12
  * `Checkbox`: 다중 선택이 가능한 요소로, 선택/비선택 상태를 나타냅니다. 라벨과 함께 사용하거나 단독으로 사용할 수 있습니다.
13
13
  * @see [RDS Storybook: Checkbox](https://main--691ac7d6da1eb0c0acb5f3e2.chromatic.com/?path=/docs/components-checkbox--docs)
@@ -34,8 +34,6 @@ export interface CheckboxProps extends Omit<ButtonHTMLAttributes<HTMLButtonEleme
34
34
  * Action Text
35
35
  * </Checkbox>
36
36
  * ```
37
- *
38
- *
39
37
  */
40
38
  export declare function Checkbox({ id: idProp, checked: controlledChecked, defaultChecked, disabled, className, onCheckedChange, children, ...props }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
41
39
  export declare namespace Checkbox {
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAmB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAqB,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,EACzE,aAAa,EACb,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,wBAAgB,QAAQ,CAAC,EACvB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,iBAAiB,EAC1B,cAAc,EACd,QAAQ,EACR,SAAS,EACT,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,aAAa,2CAgEf;yBAzEe,QAAQ"}
1
+ {"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAmB,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAqB,MAAM,mBAAmB,CAAC;AAExE,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,GACzD,aAAa,GACb,YAAY,CAAC,OAAO,gBAAgB,CAAC,GAAG;IACtC;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,QAAQ,CAAC,EACvB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,iBAAiB,EAC1B,cAAc,EACd,QAAQ,EACR,SAAS,EACT,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,aAAa,2CAgEf;yBAzEe,QAAQ"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Checkbox = Checkbox;
@@ -32,8 +33,6 @@ const Checkbox_styles_1 = require("./Checkbox.styles");
32
33
  * Action Text
33
34
  * </Checkbox>
34
35
  * ```
35
- *
36
- *
37
36
  */
38
37
  function Checkbox({ id: idProp, checked: controlledChecked, defaultChecked, disabled, className, onCheckedChange, children, ...props }) {
39
38
  const [uncontrolledChecked, setUncontrolledChecked] = (0, react_1.useState)(defaultChecked);
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: typeof Checkbox;
6
6
  tags: string[];
7
7
  parameters: {
8
+ layout: string;
8
9
  docs: {
9
10
  description: {
10
11
  component: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAGrD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;CAuBuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAgBnC,eAAO,MAAM,UAAU,EAAE,KA8CxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA0CjC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KA2B1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAqBnC,CAAC"}
1
+ {"version":3,"file":"Checkbox.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/Checkbox.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAGrD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBuB,CAAC;AAElC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAgBnC,eAAO,MAAM,UAAU,EAAE,KA+CxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA2CjC,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KA4B1B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAqBnC,CAAC"}
@@ -10,6 +10,7 @@ const meta = {
10
10
  component: Checkbox_1.Checkbox,
11
11
  tags: ["autodocs"],
12
12
  parameters: {
13
+ layout: "centered",
13
14
  docs: {
14
15
  description: {
15
16
  component: `
@@ -36,6 +37,7 @@ function CheckboxWithControlled(props) {
36
37
  }
37
38
  exports.Controlled = {
38
39
  parameters: {
40
+ layout: "centered",
39
41
  docs: {
40
42
  description: {
41
43
  story: `
@@ -60,7 +62,7 @@ function Controlled() {
60
62
  },
61
63
  },
62
64
  },
63
- render: (props) => (0, jsx_runtime_1.jsx)(Checkbox_1.Checkbox, { ...props }),
65
+ render: (props) => (0, jsx_runtime_1.jsx)(CheckboxWithControlled, { ...props }),
64
66
  args: {
65
67
  checked: true,
66
68
  disabled: false,
@@ -83,6 +85,7 @@ function Controlled() {
83
85
  };
84
86
  exports.ControlledWithLabel = {
85
87
  parameters: {
88
+ layout: "centered",
86
89
  docs: {
87
90
  source: {
88
91
  code: `
@@ -126,6 +129,7 @@ function Controlled() {
126
129
  };
127
130
  exports.UnControlled = {
128
131
  parameters: {
132
+ layout: "centered",
129
133
  docs: {
130
134
  description: {
131
135
  story: `
@@ -1,12 +1,12 @@
1
1
  import { ElementType, ReactNode } from "react";
2
2
  import { VariantProps } from "class-variance-authority";
3
- import { ChildrenProps, PolymorphicComponentProps } from "../../types/props";
3
+ import { ChildrenProps, PolymorphicComponentWithRef } from "../../types/props";
4
4
  import { chipVariants } from "./Chip.styles";
5
5
  type ChipOwnProps = VariantProps<typeof chipVariants> & ChildrenProps & {
6
6
  leftContent?: ReactNode;
7
7
  rightContent?: ReactNode;
8
8
  };
9
- type ChipProps<C extends ElementType> = PolymorphicComponentProps<C, ChipOwnProps>;
9
+ type ChipProps<C extends ElementType> = PolymorphicComponentWithRef<C, ChipOwnProps>;
10
10
  /**
11
11
  * `Chip`: 정보 요약과 화면의 복잡성을 줄이는 데 사용되며, 카테고리를 분류해 특정 정보를 시각적으로 표현합니다.
12
12
  * @see [RDS Storybook: Chip](https://main--691ac7d6da1eb0c0acb5f3e2.chromatic.com/?path=/docs/components-chip--docs)
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,GACnD,aAAa,GAAG;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEJ,KAAK,SAAS,CAAC,CAAC,SAAS,WAAW,IAAI,yBAAyB,CAC/D,CAAC,EACD,YAAY,CACb,CAAC;AAEF;;;;;;;;;GASG;AAEH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,EAAE,EACrD,SAAS,EACT,EAAE,EACF,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,CAAC,CAAC,2CAuBd;yBAnCe,IAAI"}
1
+ {"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,GACnD,aAAa,GAAG;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEJ,KAAK,SAAS,CAAC,CAAC,SAAS,WAAW,IAAI,2BAA2B,CACjE,CAAC,EACD,YAAY,CACb,CAAC;AAEF;;;;;;;;;GASG;AAEH,wBAAgB,IAAI,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,EAAE,EACrD,SAAS,EACT,EAAE,EACF,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,CAAC,CAAC,2CAuBd;yBAnCe,IAAI"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  "use strict";
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.Chip = Chip;
@@ -5,6 +5,7 @@ declare const meta: {
5
5
  component: typeof Chip;
6
6
  tags: string[];
7
7
  parameters: {
8
+ layout: string;
8
9
  docs: {
9
10
  description: {
10
11
  component: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Chip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/Chip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAqCtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAmBlB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAkBlB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAmBlB,CAAC"}
1
+ {"version":3,"file":"Chip.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/Chip.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAsCtB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAmBlB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAkBlB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAmBlB,CAAC"}
@@ -8,6 +8,7 @@ const meta = {
8
8
  component: Chip_1.Chip,
9
9
  tags: ["autodocs"],
10
10
  parameters: {
11
+ layout: "centered",
11
12
  docs: {
12
13
  description: {
13
14
  component: `
@@ -46,6 +47,7 @@ const meta = {
46
47
  exports.default = meta;
47
48
  exports.Variants = {
48
49
  parameters: {
50
+ layout: "centered",
49
51
  docs: {
50
52
  description: {
51
53
  story: `
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Chip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { ChildrenProps } from "../../types/props";
4
+ import { FormControlLabel } from "./FormControlLabel";
5
+ import { FormControlValidation } from "./FormControlValidation";
6
+ type FormControlContextValue = {
7
+ id: string;
8
+ disabled?: boolean;
9
+ required?: boolean;
10
+ error?: boolean;
11
+ labelId: string;
12
+ validationId?: string;
13
+ };
14
+ export declare const useFormControl: () => FormControlContextValue;
15
+ declare const formControlVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
16
+ export type FormControlBaseProps = ComponentPropsWithRef<"div"> & ChildrenProps & VariantProps<typeof formControlVariants> & {
17
+ /**
18
+ * 입력 필드의 고유 ID
19
+ */
20
+ id?: string;
21
+ /**
22
+ * 필수 입력 여부
23
+ */
24
+ required?: boolean;
25
+ /**
26
+ * 비활성화 여부
27
+ */
28
+ disabled?: boolean;
29
+ /**
30
+ * 에러 상태 여부
31
+ */
32
+ error?: boolean;
33
+ };
34
+ /**
35
+ * `FormControl`: Input 컴포넌트에 Label, Validation 등을 제공하는 래퍼 컴포넌트입니다.
36
+ * @see [RDS Storybook: FormControl](https://main--691ac7d6da1eb0c0acb5f3e2.chromatic.com/?path=/docs/components-formcontrol--docs)
37
+ * @example
38
+ * ```tsx
39
+ * <FormControl required error>
40
+ * <FormControl.Label>이메일</FormControl.Label>
41
+ * <Input type="email" placeholder="example@baree.net" />
42
+ * <FormControl.Validation>올바른 이메일 형식이 아닙니다</FormControl.Validation>
43
+ * </FormControl>
44
+ * ```
45
+ */
46
+ declare function FormControlBase({ id: idProp, required, disabled, error, className, children, ...props }: FormControlBaseProps): import("react/jsx-runtime").JSX.Element;
47
+ declare namespace FormControlBase {
48
+ var displayName: string;
49
+ }
50
+ export declare const FormControl: typeof FormControlBase & {
51
+ Label: typeof FormControlLabel;
52
+ Validation: typeof FormControlValidation;
53
+ };
54
+ export {};
55
+ //# sourceMappingURL=FormControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormControl.d.ts","sourceRoot":"","sources":["../../../src/components/FormControl/FormControl.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EAQtB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,YAAY,EAAO,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,KAAK,uBAAuB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,eAAO,MAAM,cAAc,+BAS1B,CAAC;AAEF,QAAA,MAAM,mBAAmB,oFAAwC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAC7D,aAAa,GACb,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACzC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEJ;;;;;;;;;;;GAWG;AACH,iBAAS,eAAe,CAAC,EACvB,EAAE,EAAE,MAAM,EACV,QAAgB,EAChB,QAAgB,EAChB,KAAa,EACb,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,2CAyDtB;kBAjEQ,eAAe;;;AAqExB,eAAO,MAAM,WAAW;;;CAGtB,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FormControl = exports.useFormControl = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const class_variance_authority_1 = require("class-variance-authority");
8
+ const style_1 = require("../../utils/style");
9
+ const Input_1 = require("../Input");
10
+ const FormControlLabel_1 = require("./FormControlLabel");
11
+ const FormControlValidation_1 = require("./FormControlValidation");
12
+ const FormControlContext = (0, react_1.createContext)(null);
13
+ const useFormControl = () => {
14
+ const context = (0, react_1.use)(FormControlContext);
15
+ if (!context) {
16
+ throw new Error("FormControl compound components must be used within FormControl");
17
+ }
18
+ return context;
19
+ };
20
+ exports.useFormControl = useFormControl;
21
+ const formControlVariants = (0, class_variance_authority_1.cva)("ui:flex ui:flex-col ui:gap-1.5");
22
+ /**
23
+ * `FormControl`: Input 컴포넌트에 Label, Validation 등을 제공하는 래퍼 컴포넌트입니다.
24
+ * @see [RDS Storybook: FormControl](https://main--691ac7d6da1eb0c0acb5f3e2.chromatic.com/?path=/docs/components-formcontrol--docs)
25
+ * @example
26
+ * ```tsx
27
+ * <FormControl required error>
28
+ * <FormControl.Label>이메일</FormControl.Label>
29
+ * <Input type="email" placeholder="example@baree.net" />
30
+ * <FormControl.Validation>올바른 이메일 형식이 아닙니다</FormControl.Validation>
31
+ * </FormControl>
32
+ * ```
33
+ */
34
+ function FormControlBase({ id: idProp, required = false, disabled = false, error = false, className, children, ...props }) {
35
+ const uniqId = (0, react_1.useId)();
36
+ const id = idProp || uniqId;
37
+ const labelId = `${id}-label`;
38
+ const validationId = `${id}-validation`;
39
+ let labelSlot = null;
40
+ let inputSlot = null;
41
+ let validationSlot = null;
42
+ const childArray = Array.isArray(children) ? children : [children];
43
+ childArray.forEach((child) => {
44
+ if (!(0, react_1.isValidElement)(child)) {
45
+ return;
46
+ }
47
+ switch (child.type) {
48
+ case FormControlLabel_1.FormControlLabel:
49
+ labelSlot = child;
50
+ break;
51
+ case Input_1.Input: {
52
+ const inputChild = child;
53
+ inputSlot = (0, react_1.cloneElement)(inputChild, {
54
+ id,
55
+ disabled: disabled || inputChild.props.disabled,
56
+ required: required || inputChild.props.required,
57
+ variant: error ? "error" : inputChild.props.variant,
58
+ });
59
+ break;
60
+ }
61
+ case FormControlValidation_1.FormControlValidation:
62
+ validationSlot = child;
63
+ break;
64
+ }
65
+ });
66
+ return ((0, jsx_runtime_1.jsx)(FormControlContext, { value: {
67
+ id,
68
+ disabled,
69
+ required,
70
+ error,
71
+ labelId,
72
+ validationId,
73
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: (0, style_1.cn)(formControlVariants({ className })), ...props, children: [labelSlot, (0, jsx_runtime_1.jsxs)("div", { className: "ui:flex ui:flex-col ui:gap-1", children: [inputSlot, validationSlot] })] }) }));
74
+ }
75
+ FormControlBase.displayName = "FormControlBase";
76
+ exports.FormControl = Object.assign(FormControlBase, {
77
+ Label: FormControlLabel_1.FormControlLabel,
78
+ Validation: FormControlValidation_1.FormControlValidation,
79
+ });
@@ -0,0 +1,19 @@
1
+ import type { Meta, StoryObj } from "@storybook/react";
2
+ import { FormControlBaseProps } from "./FormControl";
3
+ declare const meta: Meta<FormControlBaseProps>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Default: Story;
7
+ export declare const Required: Story;
8
+ export declare const Disabled: Story;
9
+ export declare const WithError: Story;
10
+ /**
11
+ * 필수 입력이면서 에러 상태인 필드입니다.
12
+ */
13
+ export declare const RequiredWithError: Story;
14
+ /**
15
+ * 시각적으로 숨겨진 라벨입니다. 접근성은 유지됩니다.
16
+ */
17
+ export declare const VisuallyHiddenLabel: Story;
18
+ export declare const MultipleInputTypes: Story;
19
+ //# sourceMappingURL=FormControl.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormControl.stories.d.ts","sourceRoot":"","sources":["../../../src/components/FormControl/FormControl.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAe,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGlE,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAwCC,CAAC;AAEvC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAYvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAY/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,KASjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAwBhC,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultipleInputTypes = exports.VisuallyHiddenLabel = exports.RequiredWithError = exports.WithError = exports.Disabled = exports.Required = exports.Default = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const FormControl_1 = require("./FormControl");
6
+ const Input_1 = require("../Input");
7
+ const meta = {
8
+ title: "Components/FormControl",
9
+ component: FormControl_1.FormControl,
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ description: {
14
+ component: `
15
+ Input 컴포넌트에 Label, Validation 등을 제공하는 래퍼 컴포넌트입니다.
16
+ `,
17
+ },
18
+ },
19
+ },
20
+ tags: ["autodocs"],
21
+ argTypes: {
22
+ required: {
23
+ control: "boolean",
24
+ options: ["true", "false"],
25
+ description: "필수 입력 여부",
26
+ },
27
+ disabled: {
28
+ control: "boolean",
29
+ options: ["true", "false"],
30
+ description: "비활성화 여부",
31
+ },
32
+ error: {
33
+ control: "boolean",
34
+ options: ["true", "false"],
35
+ description: "에러 상태 여부",
36
+ },
37
+ id: {
38
+ control: "text",
39
+ description: "입력 필드의 고유 ID",
40
+ },
41
+ children: {
42
+ table: {
43
+ disable: true,
44
+ },
45
+ },
46
+ },
47
+ };
48
+ exports.default = meta;
49
+ exports.Default = {
50
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC774\uBA54\uC77C" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "email", placeholder: "example@baree.net" })] }) })),
51
+ };
52
+ exports.Required = {
53
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { required: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC774\uBA54\uC77C" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "email", placeholder: "example@baree.net" })] }) })),
54
+ };
55
+ exports.Disabled = {
56
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { disabled: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC774\uBA54\uC77C" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "email", placeholder: "example@baree.net" })] }) })),
57
+ };
58
+ exports.WithError = {
59
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { error: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC774\uBA54\uC77C" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "email", placeholder: "example@baree.net" }), (0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Validation, { children: "\uC62C\uBC14\uB978 \uC774\uBA54\uC77C \uD615\uC2DD\uC774 \uC544\uB2D9\uB2C8\uB2E4" })] }) })),
60
+ };
61
+ /**
62
+ * 필수 입력이면서 에러 상태인 필드입니다.
63
+ */
64
+ exports.RequiredWithError = {
65
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { required: true, error: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uBE44\uBC00\uBC88\uD638" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "password", placeholder: "8\uC790 \uC774\uC0C1 \uC785\uB825" }), (0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Validation, { children: "\uBE44\uBC00\uBC88\uD638\uB294 \uCD5C\uC18C 8\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4" })] }) })),
66
+ };
67
+ /**
68
+ * 시각적으로 숨겨진 라벨입니다. 접근성은 유지됩니다.
69
+ */
70
+ exports.VisuallyHiddenLabel = {
71
+ render: (props) => ((0, jsx_runtime_1.jsx)("div", { className: "ui:w-80", children: (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { visuallyHidden: true, children: "\uAC80\uC0C9" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "search", placeholder: "\uAC80\uC0C9\uC5B4\uB97C \uC785\uB825\uD558\uC138\uC694" })] }) })),
72
+ };
73
+ exports.MultipleInputTypes = {
74
+ render: (props) => ((0, jsx_runtime_1.jsxs)("div", { className: "ui:space-y-6 ui:w-80", children: [(0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { required: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC774\uBA54\uC77C" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "email", placeholder: "example@baree.net" })] }), (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { required: true, ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uBE44\uBC00\uBC88\uD638" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "password", placeholder: "8\uC790 \uC774\uC0C1 \uC785\uB825" })] }), (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uC804\uD654\uBC88\uD638" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "tel", placeholder: "010-1234-5678" })] }), (0, jsx_runtime_1.jsxs)(FormControl_1.FormControl, { ...props, children: [(0, jsx_runtime_1.jsx)(FormControl_1.FormControl.Label, { children: "\uB0A0\uC9DC" }), (0, jsx_runtime_1.jsx)(Input_1.Input, { type: "date" })] })] })),
75
+ };
@@ -0,0 +1,20 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import { ChildrenProps } from "../../types/props";
3
+ import { VariantProps } from "class-variance-authority";
4
+ declare const labelVariants: (props?: ({
5
+ required?: boolean | null | undefined;
6
+ error?: boolean | null | undefined;
7
+ disabled?: boolean | null | undefined;
8
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
9
+ type FormControlLabelProps = ComponentPropsWithRef<"label"> & ChildrenProps & VariantProps<typeof labelVariants> & {
10
+ /**
11
+ * 시각적으로 숨김 처리 (접근성 유지)
12
+ */
13
+ visuallyHidden?: boolean;
14
+ };
15
+ export declare function FormControlLabel({ visuallyHidden, className, children, ...props }: FormControlLabelProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare namespace FormControlLabel {
17
+ var displayName: string;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=FormControlLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormControlLabel.d.ts","sourceRoot":"","sources":["../../../src/components/FormControl/FormControlLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAO,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7D,QAAA,MAAM,aAAa;;;;8EAmBjB,CAAC;AAEH,KAAK,qBAAqB,GAAG,qBAAqB,CAAC,OAAO,CAAC,GACzD,aAAa,GACb,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IACnC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEJ,wBAAgB,gBAAgB,CAAC,EAC/B,cAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAgBvB;yBArBe,gBAAgB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormControlLabel = FormControlLabel;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const class_variance_authority_1 = require("class-variance-authority");
6
+ const FormControl_1 = require("./FormControl");
7
+ const style_1 = require("../../utils/style");
8
+ const labelVariants = (0, class_variance_authority_1.cva)("ui:text-body6", {
9
+ variants: {
10
+ required: {
11
+ true: "after:ui:content-['*'] after:ui:ml-0.5 after:ui:text-red-500",
12
+ },
13
+ error: {
14
+ true: "ui:text-red-500",
15
+ false: "",
16
+ },
17
+ disabled: {
18
+ true: "ui:text-gray-300",
19
+ false: "",
20
+ },
21
+ },
22
+ defaultVariants: {
23
+ required: false,
24
+ disabled: false,
25
+ error: false,
26
+ },
27
+ });
28
+ function FormControlLabel({ visuallyHidden, className, children, ...props }) {
29
+ const { id, required, disabled, labelId, error } = (0, FormControl_1.useFormControl)();
30
+ return ((0, jsx_runtime_1.jsx)("label", { id: labelId, htmlFor: id, className: (0, style_1.cn)(labelVariants({ required, disabled, error, className }), visuallyHidden && "ui:sr-only"), ...props, children: children }));
31
+ }
32
+ FormControlLabel.displayName = "FormControl.Label";
@@ -0,0 +1,13 @@
1
+ import { ComponentPropsWithRef } from "react";
2
+ import { ChildrenProps } from "../../types/props";
3
+ import { VariantProps } from "class-variance-authority";
4
+ declare const validationVariants: (props?: ({
5
+ variant?: "error" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ type FormControlValidationProps = ComponentPropsWithRef<"div"> & ChildrenProps & VariantProps<typeof validationVariants>;
8
+ export declare function FormControlValidation({ variant, className, children, ...props }: FormControlValidationProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace FormControlValidation {
10
+ var displayName: string;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=FormControlValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormControlValidation.d.ts","sourceRoot":"","sources":["../../../src/components/FormControl/FormControlValidation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAO,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAI7D,QAAA,MAAM,kBAAkB;;8EAYvB,CAAC;AACF,KAAK,0BAA0B,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAC5D,aAAa,GACb,YAAY,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE1C,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAa5B;yBAlBe,qBAAqB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormControlValidation = FormControlValidation;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const class_variance_authority_1 = require("class-variance-authority");
6
+ const FormControl_1 = require("./FormControl");
7
+ const style_1 = require("../../utils/style");
8
+ const validationVariants = (0, class_variance_authority_1.cva)("ui:text-caption1 ui:flex ui:items-center ui:gap-1", {
9
+ variants: {
10
+ variant: {
11
+ error: "ui:text-red-500",
12
+ },
13
+ },
14
+ defaultVariants: {
15
+ variant: "error",
16
+ },
17
+ });
18
+ function FormControlValidation({ variant, className, children, ...props }) {
19
+ const { validationId } = (0, FormControl_1.useFormControl)();
20
+ return ((0, jsx_runtime_1.jsx)("div", { id: validationId, role: "alert", className: (0, style_1.cn)(validationVariants({ variant, className })), ...props, children: children }));
21
+ }
22
+ FormControlValidation.displayName = "FormControl.Validation";
@@ -0,0 +1,2 @@
1
+ export { FormControl } from "./FormControl";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FormControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormControl = void 0;
4
+ var FormControl_1 = require("./FormControl");
5
+ Object.defineProperty(exports, "FormControl", { enumerable: true, get: function () { return FormControl_1.FormControl; } });
@@ -1 +1 @@
1
- {"version":3,"file":"IconAlarmOff.d.ts","sourceRoot":"","sources":["../../../src/components/Icons/IconAlarmOff.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,UAAU,KAAM,SAAQ,QAAQ,CAAC,aAAa,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,KAAU,EAAE,MAAW,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CA0B5E;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"IconAlarmOff.d.ts","sourceRoot":"","sources":["../../../src/components/Icons/IconAlarmOff.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,UAAU,KAAM,SAAQ,QAAQ,CAAC,aAAa,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,KAAU,EAAE,MAAW,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,2CA0B5E;AAED,eAAe,YAAY,CAAC"}