@wishket/design-system 1.5.0 → 1.5.2

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 (114) hide show
  1. package/dist/Components/Base/Layouts/Box/Box.d.ts +6 -0
  2. package/dist/Components/Base/Layouts/Column/Column.d.ts +10 -0
  3. package/dist/Components/Base/Layouts/FullBleed/FullBleed.d.ts +8 -0
  4. package/dist/Components/Base/Layouts/GridLayout/GridLayout.d.ts +16 -0
  5. package/dist/Components/Base/Typography/Typography.d.ts +8 -0
  6. package/dist/Components/DataDisplays/CountBadge/CountBadge.d.ts +20 -0
  7. package/dist/Components/DataDisplays/Divider/Divider.d.ts +18 -0
  8. package/dist/Components/DataDisplays/ImageLabel/ImageLabel.d.ts +18 -0
  9. package/dist/Components/DataDisplays/Label/Label.d.ts +30 -0
  10. package/dist/Components/DataDisplays/NewBadge/NewBadge.d.ts +19 -0
  11. package/dist/Components/DataDisplays/ProductIcon/ProductIcon.d.ts +9 -0
  12. package/dist/Components/DataDisplays/{ProcessIndicator/ProcessIndicator.d.ts → ProgressIndicator/ProgressIndicator.d.ts} +4 -4
  13. package/dist/Components/DataDisplays/ProgressIndicator/ProgressIndicator.js +1 -0
  14. package/dist/Components/DataDisplays/ProgressIndicator/index.d.ts +2 -0
  15. package/dist/Components/DataDisplays/ProgressIndicator/index.js +1 -0
  16. package/dist/Components/DataDisplays/ServiceLogo/ServiceLogo.d.ts +18 -0
  17. package/dist/Components/DataDisplays/SkillLabel/SkillLabel.d.ts +6 -0
  18. package/dist/Components/DataDisplays/SkillLabel/SkillLabel.parts.d.ts +19 -0
  19. package/dist/Components/DataDisplays/SystemIcon/SystemIcon.d.ts +29 -0
  20. package/dist/Components/DataDisplays/index.d.ts +1 -1
  21. package/dist/Components/Feedbacks/Dialog/Dialog.d.ts +14 -0
  22. package/dist/Components/Feedbacks/DialogBox/DialogBox.js +1 -1
  23. package/dist/Components/Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.d.ts +25 -0
  24. package/dist/Components/Feedbacks/LoadingIndicator/LoadingIndicator.d.ts +19 -0
  25. package/dist/Components/Feedbacks/MessageBar/MessageBar.d.ts +42 -0
  26. package/dist/Components/Feedbacks/MessageBar/MessageBar.js +1 -1
  27. package/dist/Components/Feedbacks/MessageBox/MessageBox.d.ts +35 -0
  28. package/dist/Components/Feedbacks/PlainTooltip/PlainTooltip.d.ts +36 -2
  29. package/dist/Components/Feedbacks/RichTooltip/RichTooltip.d.ts +26 -0
  30. package/dist/Components/Inputs/AutoCompleteList/AutoCompleteList.d.ts +23 -0
  31. package/dist/Components/Inputs/Autocomplete/Autocomplete.d.ts +39 -0
  32. package/dist/Components/Inputs/Button/Button.d.ts +47 -0
  33. package/dist/Components/Inputs/Button/Button.parts.js +1 -1
  34. package/dist/Components/Inputs/Calendar/Calendar.d.ts +36 -0
  35. package/dist/Components/Inputs/Checkbox/Checkbox.d.ts +29 -0
  36. package/dist/Components/Inputs/Checkbox/Checkbox.parts.js +1 -1
  37. package/dist/Components/Inputs/CheckboxCard/CheckboxCard.d.ts +45 -0
  38. package/dist/Components/Inputs/CheckboxList/CheckboxList.d.ts +24 -0
  39. package/dist/Components/Inputs/CheckboxList/CheckboxList.js +1 -1
  40. package/dist/Components/Inputs/CheckboxListItem/CheckboxListItem.d.ts +43 -0
  41. package/dist/Components/Inputs/CheckboxListItem/CheckboxListItem.js +1 -1
  42. package/dist/Components/Inputs/ChoiceChip/ChoiceChip.d.ts +38 -0
  43. package/dist/Components/Inputs/CommentArea/CommentArea.d.ts +15 -0
  44. package/dist/Components/Inputs/FilterChip/FilterChip.d.ts +57 -0
  45. package/dist/Components/Inputs/FilterChip/FilterChip.js +1 -0
  46. package/dist/Components/Inputs/FilterChip/index.d.ts +2 -0
  47. package/dist/Components/Inputs/FilterChip/index.js +1 -0
  48. package/dist/Components/Inputs/FilterList/FilterList.d.ts +47 -6
  49. package/dist/Components/Inputs/FilterList/index.d.ts +1 -0
  50. package/dist/Components/Inputs/IconButton/IconButton.d.ts +31 -0
  51. package/dist/Components/Inputs/IconButtonDropdown/IconButtonDropdown.d.ts +31 -0
  52. package/dist/Components/Inputs/IconButtonDropdown/IconButtonDropdown.js +1 -1
  53. package/dist/Components/Inputs/Input/Input.d.ts +25 -0
  54. package/dist/Components/Inputs/InputChip/InputChip.d.ts +25 -0
  55. package/dist/Components/Inputs/List/List.d.ts +30 -0
  56. package/dist/Components/Inputs/MultiColumnList/MultiColumnList.d.ts +28 -0
  57. package/dist/Components/Inputs/MultiColumnList/MultiColumnList.parts.d.ts +81 -0
  58. package/dist/Components/Inputs/Radio/Radio.d.ts +27 -0
  59. package/dist/Components/Inputs/RadioCard/RadioCard.d.ts +44 -0
  60. package/dist/Components/Inputs/RadioCard/RadioCard.js +1 -1
  61. package/dist/Components/Inputs/RadioCard/RadioCard.parts.js +1 -1
  62. package/dist/Components/Inputs/RadioGroup/RadioGroup.d.ts +37 -0
  63. package/dist/Components/Inputs/RadioList/RadioList.d.ts +29 -0
  64. package/dist/Components/Inputs/RadioList/RadioList.js +1 -1
  65. package/dist/Components/Inputs/RadioList/parts/RadioListContainer.d.ts +7 -0
  66. package/dist/Components/Inputs/RadioList/parts/RadioListContainer.js +1 -0
  67. package/dist/Components/Inputs/RadioList/{RadioListItem.d.ts → parts/RadioListItem.d.ts} +1 -1
  68. package/dist/Components/Inputs/RadioList/parts/RadioListItem.js +2 -0
  69. package/dist/Components/Inputs/RadioList/parts/index.d.ts +2 -0
  70. package/dist/Components/Inputs/RangeSlider/RangeSlider.d.ts +36 -0
  71. package/dist/Components/Inputs/SearchField/SearchField.d.ts +38 -2
  72. package/dist/Components/Inputs/SearchField/SearchField.js +1 -1
  73. package/dist/Components/Inputs/SegmentedControl/SegmentedControl.d.ts +28 -0
  74. package/dist/Components/Inputs/Switch/Switch.d.ts +20 -0
  75. package/dist/Components/Inputs/TextButton/TextButton.d.ts +25 -0
  76. package/dist/Components/Inputs/TextButtonDropdown/TextButtonDropdown.d.ts +30 -0
  77. package/dist/Components/Inputs/TextButtonDropdown/TextButtonDropdown.js +2 -0
  78. package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.parts.d.ts → TextButtonDropdown/TextButtonDropdown.parts.d.ts} +1 -1
  79. package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.parts.js → TextButtonDropdown/TextButtonDropdown.parts.js} +1 -1
  80. package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.types.d.ts → TextButtonDropdown/TextButtonDropdown.types.d.ts} +1 -1
  81. package/dist/Components/Inputs/TextButtonDropdown/index.d.ts +2 -0
  82. package/dist/Components/Inputs/TextField/TextField.d.ts +41 -0
  83. package/dist/Components/Inputs/TextFieldDropdown/TextFieldDropdown.d.ts +32 -0
  84. package/dist/Components/Inputs/TextFieldDropdown/TextFieldDropdown.js +1 -1
  85. package/dist/Components/Inputs/Textarea/Textarea.d.ts +38 -0
  86. package/dist/Components/Inputs/index.d.ts +3 -2
  87. package/dist/Components/Navigations/BoxTab/BoxTab.d.ts +26 -0
  88. package/dist/Components/Navigations/BoxTab/BoxTab.parts.d.ts +69 -0
  89. package/dist/Components/Navigations/Drawer/Drawer.d.ts +27 -0
  90. package/dist/Components/Navigations/GNBList/GNBList.d.ts +48 -0
  91. package/dist/Components/Navigations/GNBList/GNBList.parts.d.ts +33 -0
  92. package/dist/Components/Navigations/Menu/Menu.d.ts +41 -0
  93. package/dist/Components/Navigations/Pagination/Pagination.d.ts +23 -0
  94. package/dist/Components/Navigations/TableOfContents/TableOfContents.d.ts +24 -0
  95. package/dist/Components/Navigations/TextTab/TextTab.d.ts +29 -0
  96. package/dist/Components/Navigations/TextTab/TextTab.parts.d.ts +69 -0
  97. package/dist/Components/Utils/Modal/Modal.d.ts +33 -0
  98. package/dist/Components/Wrappers/WithBadge/WithBadge.d.ts +21 -0
  99. package/dist/Components/Wrappers/WithRichTooltip/WithRichTooltip.d.ts +29 -0
  100. package/dist/Components/Wrappers/WithRichTooltip/WithRichTooltip.js +1 -1
  101. package/dist/Components/Wrappers/WithSnackBar/WithSnackBar.d.ts +23 -0
  102. package/dist/Components/Wrappers/WithSnackBar/WithSnackBar.js +1 -1
  103. package/dist/hooks/index.d.ts +1 -0
  104. package/dist/hooks/useDropdown.d.ts +21 -0
  105. package/dist/hooks/useDropdown.js +1 -0
  106. package/dist/index.js +1 -1
  107. package/package.json +1 -1
  108. package/dist/Components/DataDisplays/ProcessIndicator/ProcessIndicator.js +0 -1
  109. package/dist/Components/DataDisplays/ProcessIndicator/index.d.ts +0 -2
  110. package/dist/Components/DataDisplays/ProcessIndicator/index.js +0 -1
  111. package/dist/Components/Inputs/RadioList/RadioListItem.js +0 -2
  112. package/dist/Components/Inputs/TextButtonsDropdown/TextButtonsDropdown.d.ts +0 -3
  113. package/dist/Components/Inputs/TextButtonsDropdown/TextButtonsDropdown.js +0 -2
  114. package/dist/Components/Inputs/TextButtonsDropdown/index.d.ts +0 -2
@@ -7,5 +7,33 @@ interface SegmentedControlProps {
7
7
  name?: string;
8
8
  onChange: (value: string) => void;
9
9
  }
10
+ /**
11
+ * 여러 옵션 중 하나를 선택할 수 있는 세그먼트 컨트롤 컴포넌트입니다.
12
+ *
13
+ * @param {Object} props
14
+ * @param {Array<{key: string, name: string}>} props.valueList - 선택 가능한 옵션들의 배열 ({key, name}[])
15
+ * @param {string} props.selectedValue - 현재 선택된 옵션의 key 값
16
+ * @param {string} [props.name='segmented-control'] - 라디오 그룹의 name 속성
17
+ * @param {(value: string) => void} props.onChange - 선택 값이 변경될 때 호출되는 콜백 함수
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const options = [
22
+ * { key: 'daily', name: '일간' },
23
+ * { key: 'weekly', name: '주간' },
24
+ * { key: 'monthly', name: '월간' }
25
+ * ];
26
+ *
27
+ * const [selected, setSelected] = useState('daily');
28
+ *
29
+ * return (
30
+ * <SegmentedControl
31
+ * valueList={options}
32
+ * selectedValue={selected}
33
+ * onChange={setSelected}
34
+ * />
35
+ * );
36
+ * ```
37
+ */
10
38
  declare const SegmentedControl: ({ valueList, selectedValue, name, onChange, }: SegmentedControlProps) => import("react/jsx-runtime").JSX.Element;
11
39
  export default SegmentedControl;
@@ -2,5 +2,25 @@ import { ComponentPropsWithoutRef } from 'react';
2
2
  export interface SwitchProps extends ComponentPropsWithoutRef<'input'> {
3
3
  className?: string;
4
4
  }
5
+ /**
6
+ * 토글 스위치 컴포넌트입니다.
7
+ *
8
+ * @component
9
+ * @param {Object} props - 컴포넌트 props
10
+ * @param {string} [props.className] - 추가적인 CSS 클래스
11
+ * @param {boolean} [props.checked] - 스위치의 체크 상태
12
+ * @param {boolean} [props.disabled] - 스위치의 비활성화 상태
13
+ * @extends {ComponentPropsWithoutRef<'input'>} - input 요소의 기본 props를 상속받습니다
14
+ *
15
+ * @example
16
+ * // 기본 사용법
17
+ * <Switch checked={isOn} onChange={handleChange} />
18
+ *
19
+ * // 비활성화된 스위치
20
+ * <Switch checked={true} disabled={true} />
21
+ *
22
+ * // 커스텀 클래스 적용
23
+ * <Switch className="custom-switch" checked={isOn} />
24
+ */
5
25
  declare const Switch: ({ className, checked, disabled, ...rest }: SwitchProps) => import("react/jsx-runtime").JSX.Element;
6
26
  export default Switch;
@@ -1,3 +1,28 @@
1
1
  import { TextButtonProps } from './TextButton.types';
2
+ /**
3
+ * 텍스트 버튼 컴포넌트
4
+ *
5
+ * @description
6
+ * 텍스트로만 구성된 버튼 컴포넌트입니다. 선택적으로 앞이나 뒤에 아이콘을 배치할 수 있습니다.
7
+ * 텍스트의 크기는 기본 크기와 작은 크기 중 선택할 수 있습니다.
8
+ *
9
+ * @param {object} props
10
+ * @param {string} props.text - 버튼에 표시될 텍스트
11
+ * @param {boolean} [props.isTextSmall=false] - 텍스트 크기를 작게 설정 (기본값: false)
12
+ * @param {string} [props.leadingIcon] - 텍스트 앞에 표시될 SystemIcon의 이름
13
+ * @param {string} [props.trailingIcon] - 텍스트 뒤에 표시될 SystemIcon의 이름
14
+ *
15
+ * @example
16
+ * // 기본 텍스트 버튼
17
+ * <TextButton text="버튼 텍스트" />
18
+ *
19
+ * // 작은 텍스트와 앞뒤 아이콘이 있는 버튼
20
+ * <TextButton
21
+ * text="버튼 텍스트"
22
+ * isTextSmall={true}
23
+ * leadingIcon="search"
24
+ * trailingIcon="arrow-right"
25
+ * />
26
+ */
2
27
  declare const TextButton: ({ text, isTextSmall, leadingIcon, trailingIcon, ...rest }: TextButtonProps) => import("react/jsx-runtime").JSX.Element;
3
28
  export default TextButton;
@@ -0,0 +1,30 @@
1
+ import { TextButtonDropdownProps } from './TextButtonDropdown.types';
2
+ /**
3
+ * 텍스트 버튼 형태의 드롭다운 컴포넌트입니다.
4
+ *
5
+ * @param {Object} props
6
+ * @param {Array<{key: string, value: string, leadingIcon?: React.ReactNode}>} props.items - 드롭다운에 표시될 항목들의 배열
7
+ * @param {{key: string, value: string, leadingIcon?: React.ReactNode}} props.selectedItem - 현재 선택된 항목 ({key, value, leadingIcon}[])
8
+ * @param {(item: {key: string, value: string, leadingIcon?: React.ReactNode}) => void} props.onItemClick - 항목 클릭 시 실행될 콜백 함수 (item: {key, value, leadingIcon} => void)
9
+ * @param {boolean} [props.alignRight=false] - 드롭다운 메뉴를 오른쪽 정렬할지 여부
10
+ *
11
+ * @example
12
+ * const items = [
13
+ * { key: '1', value: '옵션 1' },
14
+ * { key: '2', value: '옵션 2', leadingIcon: <Icon /> },
15
+ * { key: '3', value: '옵션 3' }
16
+ * ];
17
+ *
18
+ * const [selected, setSelected] = useState(items[0]);
19
+ *
20
+ * return (
21
+ * <TextButtonDropdown
22
+ * items={items}
23
+ * selectedItem={selected}
24
+ * onItemClick={setSelected}
25
+ * alignRight={false}
26
+ * />
27
+ * );
28
+ */
29
+ declare const TextButtonDropdown: ({ items, selectedItem, onItemClick, alignRight, }: TextButtonDropdownProps) => import("react/jsx-runtime").JSX.Element;
30
+ export default TextButtonDropdown;
@@ -0,0 +1,2 @@
1
+ 'use client';
2
+ "use strict";var e=require("react/jsx-runtime"),t=require("tailwind-merge"),n=require("../List/List.js"),i=require("../../../hooks/useDropdown.js"),s=require("./TextButtonDropdown.parts.js");module.exports=function(o){var l=o.items,r=o.selectedItem,a=o.onItemClick,o=o.alignRight,o=void 0!==o&&o,a=i({items:l,onItemClick:a}),d=a.isListOpen,u=a.ref,c=a.focusedIndex,m=a.handleItemClick,x=a.toggleListOpen,a=a.handleKeyDown;return e.jsxs("div",{"data-testid":"design-system-text-button-dropdown",className:"relative flex w-fit flex-col gap-1 outline-none",ref:u,onKeyDown:a,tabIndex:0,children:[e.jsx(s.TextButton,{value:r.value,"data-testid":"design-system-text-button-dropdown--textButton",isListOpen:d,onClick:x}),d&&e.jsx("div",{className:t.twJoin("absolute -bottom-2 z-40 translate-y-full transform transition-all",o?"right-0":"left-0 "),children:e.jsx(n.Root,{className:"max-h-full min-w-40 overflow-y-visible",children:l.map(function(t,i){return e.jsx(n.Item,{text:t.value,leadingIcon:t.leadingIcon,onClick:function(){return m(t)},selected:t.key===(null==r?void 0:r.key),isFocused:i===c},t.key)})})})]})};
@@ -1,5 +1,5 @@
1
1
  import { ComponentProps } from 'react';
2
- import { Item } from './TextButtonsDropdown.types';
2
+ import { Item } from './TextButtonDropdown.types';
3
3
  interface TextButtonProps extends ComponentProps<'button'> {
4
4
  value: Item['value'];
5
5
  isListOpen: boolean;
@@ -1 +1 @@
1
- "use strict";var e=require("../../../_virtual/_tslib.js"),a=require("react/jsx-runtime"),r=require("tailwind-merge"),s=(require("../../DataDisplays/Avatar/Avatar.js"),require("../../Base/Typography/Typography.js")),t=(require("../../Base/Layouts/Box/Box.js"),require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../../DataDisplays/Label/Label.js"),require("../../DataDisplays/SystemIcon/SystemIcon.js"));exports.TextButton=function(i){var n=i.value,u=i.isListOpen,i=e.__rest(i,["value","isListOpen"]);return a.jsxs("button",e.__assign({type:"button",className:"flex items-center gap-2"},i,{children:[a.jsx(s,{variant:"body1",className:"text-w-gray-600",children:n}),a.jsx("span",{className:r.twJoin("transition-transform duration-300",u&&"rotate-180"),children:a.jsx(t,{name:"medium_arrow_down",className:"text-w-gray-600"})})]}))};
1
+ "use strict";var e=require("../../../_virtual/_tslib.js"),a=require("react/jsx-runtime"),r=require("tailwind-merge"),s=(require("../../DataDisplays/Avatar/Avatar.js"),require("../../Base/Typography/Typography.js")),t=(require("../../Base/Layouts/Box/Box.js"),require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../../DataDisplays/Label/Label.js"),require("../../DataDisplays/SystemIcon/SystemIcon.js"));exports.TextButton=function(i){var n=i.value,u=i.isListOpen,i=e.__rest(i,["value","isListOpen"]);return a.jsxs("button",e.__assign({type:"button",className:"flex items-center gap-2 outline-none"},i,{children:[a.jsx(s,{variant:"body1",className:"text-w-gray-600",children:n}),a.jsx("span",{className:r.twJoin("transition-transform duration-300",u&&"rotate-180"),children:a.jsx(t,{name:"medium_arrow_down",className:"text-w-gray-600"})})]}))};
@@ -4,7 +4,7 @@ export type Item = {
4
4
  value: string;
5
5
  leadingIcon?: SystemIconName;
6
6
  };
7
- export interface TextButtonsDropdownProps {
7
+ export interface TextButtonDropdownProps {
8
8
  items: Item[];
9
9
  selectedItem: Item;
10
10
  onItemClick: (item: Item) => void;
@@ -0,0 +1,2 @@
1
+ export { default as TextButtonDropdown } from './TextButtonDropdown';
2
+ export type { TextButtonDropdownProps } from './TextButtonDropdown.types';
@@ -13,5 +13,46 @@ export interface TextFieldProps extends ComponentPropsWithoutRef<'input'> {
13
13
  testId?: string;
14
14
  isMaxLengthVisible?: boolean;
15
15
  }
16
+ /**
17
+ * 사용자 입력을 받을 수 있는 텍스트 필드 컴포넌트입니다.
18
+ *
19
+ * @component
20
+ * @param {Object} props - 컴포넌트 props
21
+ * @param {'default' | 'lable'} [props.variant='default'] - 텍스트 필드의 변형 타입
22
+ * @param {string} [props.lable] - 입력 필드의 라벨
23
+ * @param {boolean} [props.isError] - 오류 상태 표시 여부
24
+ * @param {MediumSystemIconName} [props.startIcon] - 시작 부분에 표시될 아이콘
25
+ * @param {MediumSystemIconName} [props.endIcon] - 끝 부분에 표시될 아이콘
26
+ * @param {string} [props.supportMessage] - 도움말 메시지
27
+ * @param {string} [props.measure] - 측정 단위
28
+ * @param {string} [props.errorMessage] - 오류 메시지
29
+ * @param {string} [props.testId] - 테스트용 ID
30
+ * @param {boolean} [props.isMaxLengthVisible=false] - 최대 길이 표시 여부
31
+ *
32
+ * @example
33
+ * // 기본 텍스트 필드
34
+ * <TextField
35
+ * placeholder="이름을 입력하세요"
36
+ * onChange={(e) => handleChange(e)}
37
+ * />
38
+ *
39
+ * // 라벨이 있는 텍스트 필드
40
+ * <TextField
41
+ * variant="lable"
42
+ * lable="이름"
43
+ * placeholder="홍길동"
44
+ * startIcon="user"
45
+ * supportMessage="실명을 입력해주세요"
46
+ * />
47
+ *
48
+ * // 에러 상태의 텍스트 필드
49
+ * <TextField
50
+ * variant="default"
51
+ * isError={true}
52
+ * errorMessage="필수 입력 항목입니다"
53
+ * maxLength={50}
54
+ * isMaxLengthVisible={true}
55
+ * />
56
+ */
16
57
  declare const TextField: import("react").ForwardRefExoticComponent<TextFieldProps & import("react").RefAttributes<HTMLInputElement>>;
17
58
  export default TextField;
@@ -15,5 +15,37 @@ export interface TextFieldDropdownProps {
15
15
  className?: string;
16
16
  isError?: boolean;
17
17
  }
18
+ /**
19
+ * 드롭다운 형태의 텍스트 필드 컴포넌트입니다.
20
+ *
21
+ * @component
22
+ *
23
+ * @param {Object} props
24
+ * @param {Item[]} props.items - 드롭다운에 표시될 아이템 배열 ({key, value, leadingIcon}[])
25
+ * @param {string} props.placeholder - 선택되지 않은 상태에서 표시될 안내 텍스트
26
+ * @param {(item: Item) => void} props.onItemClick - 아이템 선택 시 호출되는 콜백 함수
27
+ * @param {Item} [props.selectedItem] - 현재 선택된 아이템
28
+ * @param {boolean} [props.disabled] - 비활성화 여부
29
+ * @param {string} [props.supportMessage] - 입력 필드 아래에 표시될 도움말 메시지
30
+ * @param {string} [props.errorMessage] - 오류 발생 시 표시될 메시지
31
+ * @param {string} [props.className] - 추가적인 CSS 클래스명
32
+ * @param {boolean} [props.isError] - 오류 상태 여부
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * const items = [
37
+ * { key: 1, value: '옵션 1', leadingIcon: 'home' },
38
+ * { key: 2, value: '옵션 2', leadingIcon: 'settings' }
39
+ * ];
40
+ *
41
+ * <TextFieldDropdown
42
+ * items={items}
43
+ * placeholder="옵션을 선택하세요"
44
+ * onItemClick={(item) => console.log('선택된 아이템:', item)}
45
+ * selectedItem={items[0]}
46
+ * supportMessage="추가 설명이 필요한 경우 이곳에 표시됩니다"
47
+ * />
48
+ * ```
49
+ */
18
50
  declare const TextFieldDropdown: ({ selectedItem, items, onItemClick, placeholder, disabled, isError, errorMessage, supportMessage, }: TextFieldDropdownProps) => import("react/jsx-runtime").JSX.Element;
19
51
  export default TextFieldDropdown;
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("@wishket/yogokit"),l=(require("../../../_virtual/_tslib.js"),require("tailwind-merge"),require("../../Base/Layouts/Box/Box.js")),n=(require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../List/List.js")),s=require("../SupportTextContainer/SupportTextContainer.js"),i=require("./TextFieldDropdown.parts.js");module.exports=function(o){function u(){j&&w(!1)}function a(e){p(e),u()}var c=o.selectedItem,d=o.items,p=o.onItemClick,f=o.placeholder,x=o.disabled,v=o.isError,k=o.errorMessage,o=o.supportMessage,g=r.useState(!1),j=g[0],w=g[1],g=r.useState(-1),q=g[0],m=g[1],y=r.useRef(null),g=!!o||!!k;t.useClickOutside(y,u);return e.jsxs("div",{"data-testid":"design-system--textFieldDropdown",ref:y,className:"relative flex w-full flex-col gap-2 outline-none",onKeyDown:function(e){if(j)switch(e.key){case"ArrowDown":e.preventDefault(),m(function(e){var e=e<d.length-1?e+1:e,r=y.current;return r&&null!=(r=r.querySelectorAll("li")[e])&&r.scrollIntoView({block:"nearest"}),e});break;case"ArrowUp":e.preventDefault(),m(function(e){var e=0<e?e-1:e,r=y.current;return r&&null!=(r=r.querySelectorAll("li")[e])&&r.scrollIntoView({block:"nearest"}),e});break;case"Enter":e.preventDefault(),0<=q&&a(d[q]);break;case"Escape":e.preventDefault(),u()}},tabIndex:0,children:[e.jsx(i.SelectBox,{placeholder:f,value:null==c?void 0:c.value,leadingIcon:null==c?void 0:c.leadingIcon,disabled:x,isListOpen:j,onClick:function(){x||w(!j)},error:v}),g&&e.jsx(s,{errorMessage:k,supportMessage:o}),j&&e.jsx(l,{className:"absolute top-[54px] z-40 w-full",children:e.jsx(n.Root,{children:d.map(function(r,t){return e.jsx(n.Item,{text:r.value,leadingIcon:r.leadingIcon,onClick:function(){return a(r)},selected:r.key===(null==c?void 0:c.key),isFocused:t===q},r.key)})})})]})};
2
+ "use strict";var e=require("react/jsx-runtime"),r=(require("../../../_virtual/_tslib.js"),require("tailwind-merge"),require("../../Base/Layouts/Box/Box.js")),s=(require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../List/List.js")),l=require("../SupportTextContainer/SupportTextContainer.js"),i=require("../../../hooks/useDropdown.js"),t=require("./TextFieldDropdown.parts.js");module.exports=function(o){var n=o.selectedItem,a=o.items,u=o.onItemClick,d=o.placeholder,c=o.disabled,p=o.isError,x=o.errorMessage,o=o.supportMessage,u=i({items:a,onItemClick:u,disabled:c}),j=u.isListOpen,m=u.focusedIndex,g=u.ref,v=u.handleItemClick,I=u.toggleListOpen,u=u.handleKeyDown,f=!!o||!!x;return e.jsxs("div",{"data-testid":"design-system--textFieldDropdown",ref:g,className:"relative flex w-full flex-col gap-2 outline-none",onKeyDown:u,tabIndex:0,children:[e.jsx(t.SelectBox,{placeholder:d,value:null==n?void 0:n.value,leadingIcon:null==n?void 0:n.leadingIcon,disabled:c,isListOpen:j,onClick:I,error:p}),f&&e.jsx(l,{errorMessage:x,supportMessage:o}),j&&e.jsx(r,{className:"absolute top-[54px] z-40 w-full",children:e.jsx(s.Root,{children:a.map(function(r,l){return e.jsx(s.Item,{text:r.value,leadingIcon:r.leadingIcon,onClick:function(){return v(r)},selected:r.key===(null==n?void 0:n.key),isFocused:l===m},r.key)})})})]})};
@@ -1,4 +1,7 @@
1
1
  import { ComponentProps } from 'react';
2
+ /**
3
+ * Textarea 컴포넌트에서 사용되는 Props 타입을 정의합니다.
4
+ */
2
5
  export interface TextareaProps extends ComponentProps<'textarea'> {
3
6
  isError?: boolean;
4
7
  size?: 'sm' | 'md' | 'lg';
@@ -7,5 +10,40 @@ export interface TextareaProps extends ComponentProps<'textarea'> {
7
10
  errorText?: string;
8
11
  isLengthVisible?: boolean;
9
12
  }
13
+ /**
14
+ * 사용자가 여러 줄의 텍스트를 입력할 수 있는 textarea 컴포넌트입니다.
15
+ *
16
+ * @param {Object} props
17
+ * @param {boolean} [props.isError] - 에러 상태를 표시합니다
18
+ * @param {('sm'|'md'|'lg')} [props.size='md'] - textarea의 크기를 지정합니다
19
+ * @param {boolean} [props.resize=false] - 크기 조절 가능 여부를 설정합니다
20
+ * @param {string} [props.supportText] - 도움말 텍스트를 표시합니다
21
+ * @param {string} [props.errorText] - 에러 메시지를 표시합니다
22
+ * @param {boolean} [props.isLengthVisible=false] - 글자 수 표시 여부를 설정합니다
23
+ * @param {React.ComponentProps<'textarea'>} props.textareaProps - textarea 엘리먼트의 기본 속성들
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * // 기본 사용
28
+ * <Textarea
29
+ * placeholder="내용을 입력하세요"
30
+ * onChange={(e) => console.log(e.target.value)}
31
+ * />
32
+ *
33
+ * // 에러 상태와 에러 메시지
34
+ * <Textarea
35
+ * isError={true}
36
+ * errorText="필수 입력 항목입니다"
37
+ * />
38
+ *
39
+ * // 크기 조절 가능하고 글자 수 제한이 있는 경우
40
+ * <Textarea
41
+ * resize={true}
42
+ * maxLength={1000}
43
+ * isLengthVisible={true}
44
+ * supportText="최대 1000자까지 입력 가능합니다"
45
+ * />
46
+ * ```
47
+ */
10
48
  declare const Textarea: ({ isError, size, resize, isLengthVisible, supportText, errorText, maxLength, value, disabled, name, onChange, ...rest }: TextareaProps) => import("react/jsx-runtime").JSX.Element;
11
49
  export default Textarea;
@@ -21,9 +21,10 @@ export { default as TextButton } from './TextButton';
21
21
  export { default as TextField } from './TextField';
22
22
  export { default as List } from './List';
23
23
  export { default as TextFieldDropdown } from './TextFieldDropdown';
24
- export { TextButtonsDropdown } from './TextButtonsDropdown';
24
+ export { TextButtonDropdown } from './TextButtonDropdown';
25
+ export type { TextButtonDropdownProps } from './TextButtonDropdown';
25
26
  export type { SkillItem, LegacySkillItem } from './Autocomplete';
26
- export type { TextButtonsDropdownProps } from './TextButtonsDropdown';
27
27
  export { default as CommentArea } from './CommentArea';
28
28
  export { default as IconButtonDropdown } from './IconButtonDropdown';
29
29
  export { default as MultiColumnList } from './MultiColumnList';
30
+ export { default as FilterChip } from './FilterChip';
@@ -1,4 +1,30 @@
1
1
  /// <reference types="react" />
2
+ /**
3
+ * BoxTab 컴포넌트
4
+ * @module BoxTab
5
+ * @description 탭 기반 네비게이션을 구현하는 컴포넌트입니다.
6
+ * @property {Component} Root - 탭 컨테이너
7
+ * @property {Component} Tabs - 탭 목록
8
+ * @property {Component} Tab - 탭
9
+ * @property {Component} Panel - 탭 패널
10
+ * @example
11
+ * ```tsx
12
+ * import BoxTab from './BoxTab';
13
+ *
14
+ * function Example() {
15
+ * return (
16
+ * <BoxTab.Root>
17
+ * <BoxTab.Tabs>
18
+ * <BoxTab.Tab index={0}>첫 번째 탭</BoxTab.Tab>
19
+ * <BoxTab.Tab index={1}>두 번째 탭</BoxTab.Tab>
20
+ * </BoxTab.Tabs>
21
+ * <BoxTab.Panel index={0}>첫 번째 패널 내용</BoxTab.Panel>
22
+ * <BoxTab.Panel index={1}>두 번째 패널 내용</BoxTab.Panel>
23
+ * </BoxTab.Root>
24
+ * );
25
+ * }
26
+ * ```
27
+ */
2
28
  declare const BoxTab: {
3
29
  Root: ({ children, currentActiveTab, onChange }: import("./BoxTab.types").RootProps) => import("react/jsx-runtime").JSX.Element;
4
30
  Tabs: ({ children, className }: import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,76 @@
1
1
  import { ComponentProps } from 'react';
2
2
  import { PanelProps, RootProps, TabProps } from './BoxTab.types';
3
+ /**
4
+ * BoxTab의 최상위 컴포넌트입니다.
5
+ * 탭의 상태를 관리하고 하위 컴포넌트에 Context를 제공합니다.
6
+ *
7
+ * @param {RootProps} props
8
+ * @param {ReactNode} props.children - 하위 컴포넌트
9
+ * @param {number} [props.currentActiveTab=0] - 현재 활성화된 탭의 인덱스
10
+ * @param {(index: number) => void} [props.onChange] - 탭 변경 시 호출되는 콜백 함수
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * <BoxTab.Root currentActiveTab={0} onChange={(index) => console.log(index)}>
15
+ * <BoxTab.Tabs>
16
+ * <BoxTab.Tab index={0}>탭 1</BoxTab.Tab>
17
+ * <BoxTab.Tab index={1}>탭 2</BoxTab.Tab>
18
+ * </BoxTab.Tabs>
19
+ * <BoxTab.Panel index={0}>패널 1 내용</BoxTab.Panel>
20
+ * <BoxTab.Panel index={1}>패널 2 내용</BoxTab.Panel>
21
+ * </BoxTab.Root>
22
+ * ```
23
+ */
3
24
  declare const Root: ({ children, currentActiveTab, onChange }: RootProps) => import("react/jsx-runtime").JSX.Element;
25
+ /**
26
+ * 탭 버튼들을 감싸는 컨테이너 컴포넌트입니다.
27
+ *
28
+ * @param {ComponentProps<'div'>} props
29
+ * @param {ReactNode} props.children - Tab 컴포넌트들
30
+ * @param {string} [props.className] - 추가 스타일 클래스
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * <BoxTab.Tabs className="my-4">
35
+ * <BoxTab.Tab index={0}>탭 1</BoxTab.Tab>
36
+ * <BoxTab.Tab index={1}>탭 2</BoxTab.Tab>
37
+ * </BoxTab.Tabs>
38
+ * ```
39
+ */
4
40
  declare const Tabs: ({ children, className }: ComponentProps<'div'>) => import("react/jsx-runtime").JSX.Element;
41
+ /**
42
+ * 개별 탭 버튼 컴포넌트입니다.
43
+ *
44
+ * @param {TabProps} props
45
+ * @param {ReactNode} props.children - 탭 내용
46
+ * @param {number} props.index - 탭의 인덱스
47
+ * @param {string} [props.className] - 추가 스타일 클래스
48
+ * @param {boolean} [props.isFirst] - 첫 번째 탭 여부 (내부적으로 자동 설정)
49
+ * @param {boolean} [props.isLast] - 마지막 탭 여부 (내부적으로 자동 설정)
50
+ * @param {boolean} [props.disabled] - 비활성화 여부
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * <BoxTab.Tab index={0} disabled={false}>
55
+ * 탭 1
56
+ * </BoxTab.Tab>
57
+ * ```
58
+ */
5
59
  declare const Tab: ({ children, index, className, isFirst, isLast, disabled, }: TabProps) => import("react/jsx-runtime").JSX.Element;
60
+ /**
61
+ * 탭 패널 컴포넌트입니다.
62
+ * 해당 인덱스의 탭이 선택되었을 때만 내용을 표시합니다.
63
+ *
64
+ * @param {PanelProps} props
65
+ * @param {ReactNode} props.children - 패널 내용
66
+ * @param {number} props.index - 패널의 인덱스 (연결된 탭의 인덱스와 일치해야 함)
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * <BoxTab.Panel index={0}>
71
+ * 첫 번째 탭의 내용입니다.
72
+ * </BoxTab.Panel>
73
+ * ```
74
+ */
6
75
  declare const Panel: ({ children, index }: PanelProps) => false | import("react/jsx-runtime").JSX.Element;
7
76
  export { Root, Tabs, Tab, Panel };
@@ -6,5 +6,32 @@ export interface DrawerProps {
6
6
  size?: 'full' | 'half' | 'third' | 'quarter';
7
7
  className?: string;
8
8
  }
9
+ /**
10
+ * 화면의 가장자리에서 슬라이딩되어 나타나는 서랍형 컴포넌트입니다.
11
+ *
12
+ * @param {Object} props
13
+ * @param {boolean} props.isOpen - 서랍이 열려있는지 여부를 결정합니다
14
+ * @param {() => void} props.onClose - 서랍을 닫을 때 실행되는 콜백 함수입니다
15
+ * @param {'left' | 'right' | 'top' | 'bottom'} [props.direction='right'] - 서랍이 나타날 방향을 지정합니다
16
+ * @param {'full' | 'half' | 'third' | 'quarter'} [props.size='quarter'] - 서랍의 크기를 지정합니다
17
+ * @param {string} [props.className] - 추가적인 CSS 클래스를 지정할 수 있습니다
18
+ * @param {React.ReactNode} props.children - 서랍 내부에 표시될 컨텐츠입니다
19
+ *
20
+ * @example
21
+ * // 기본 사용법
22
+ * <Drawer isOpen={isOpen} onClose={() => setIsOpen(false)}>
23
+ * <div>서랍 내용</div>
24
+ * </Drawer>
25
+ *
26
+ * // 왼쪽에서 나타나는 절반 크기의 서랍
27
+ * <Drawer
28
+ * isOpen={isOpen}
29
+ * onClose={() => setIsOpen(false)}
30
+ * direction="left"
31
+ * size="half"
32
+ * >
33
+ * <div>서랍 내용</div>
34
+ * </Drawer>
35
+ */
9
36
  declare const Drawer: ({ isOpen, onClose, direction, size, className, children, }: PropsWithChildren<DrawerProps>) => import("react/jsx-runtime").JSX.Element;
10
37
  export default Drawer;
@@ -1,4 +1,52 @@
1
1
  /// <reference types="react" />
2
+ /**
3
+ * GNB(Global Navigation Bar) 리스트 컴포넌트
4
+ * @module GNBList
5
+ * @property {Component} Root - GNB 리스트 컨테이너
6
+ * @property {Component} UserInfo - 사용자 정보 컴포넌트
7
+ * @property {Component} List - 메뉴 리스트 컴포넌트
8
+ * @property {Component} SubList - 서브 메뉴 리스트 컴포넌트
9
+ * @property {Component} Item - 메뉴 아이템 컴포넌트
10
+ *
11
+ * @example
12
+ * // 기본 메뉴 리스트
13
+ * <GNBList.Root type="main">
14
+ * <GNBList.List>
15
+ * <GNBList.Item>메뉴 1</GNBList.Item>
16
+ * <GNBList.Item>메뉴 2</GNBList.Item>
17
+ * </GNBList.List>
18
+ * </GNBList.Root>
19
+ *
20
+ * @example
21
+ * // 사용자 정보가 포함된 메뉴 리스트
22
+ * <GNBList.Root type="user">
23
+ * <GNBList.UserInfo
24
+ * userId="사용자명"
25
+ * email="user@example.com"
26
+ * imgUrl="/profile.jpg"
27
+ * >
28
+ * <Button>프로필 수정</Button>
29
+ * </GNBList.UserInfo>
30
+ * <GNBList.List>
31
+ * <GNBList.Item>계정 설정</GNBList.Item>
32
+ * <GNBList.Item>알림 설정</GNBList.Item>
33
+ * </GNBList.List>
34
+ * <GNBList.SubList>
35
+ * <GNBList.Item>로그아웃</GNBList.Item>
36
+ * </GNBList.SubList>
37
+ * </GNBList.Root>
38
+ *
39
+ * @example
40
+ * // 선택 상태가 있는 메뉴 리스트
41
+ * <GNBList.Root type="main">
42
+ * <GNBList.List>
43
+ * <GNBList.Item isSelected>현재 메뉴</GNBList.Item>
44
+ * <GNBList.Item onClick={() => handleNavigation('/other')}>
45
+ * 다른 메뉴
46
+ * </GNBList.Item>
47
+ * </GNBList.List>
48
+ * </GNBList.Root>
49
+ */
2
50
  declare const GNBList: {
3
51
  Root: ({ type, children, className }: import("./GNBList.types").RootProps) => import("react/jsx-runtime").JSX.Element;
4
52
  UserInfo: ({ imgUrl, userId, email, children, onClick, }: import("./GNBList.types").UserInfoProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,41 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { RootProps, ItemProps, UserInfoProps } from './GNBList.types';
3
+ /**
4
+ * GNB 리스트의 루트 컴포넌트
5
+ * @param {Object} props
6
+ * @param {'main'|'sub'|'user'} [props.type] - 리스트 타입 (main, sub, user)
7
+ * @param {string} [props.className] - 추가적인 CSS 클래스
8
+ * @param {ReactNode} props.children - 리스트 아이템들
9
+ */
3
10
  declare const Root: ({ type, children, className }: RootProps) => import("react/jsx-runtime").JSX.Element;
11
+ /**
12
+ * GNB 리스트의 기본 리스트 컴포넌트
13
+ * @param {Object} props
14
+ * @param {ReactNode} props.children - 리스트 아이템들
15
+ * @param {string} [props.className] - 추가적인 CSS 클래스
16
+ */
4
17
  declare const UserInfo: ({ imgUrl, userId, email, children, onClick, }: UserInfoProps) => import("react/jsx-runtime").JSX.Element;
18
+ /**
19
+ * GNB 리스트의 기본 리스트 컴포넌트
20
+ * @param {Object} props
21
+ * @param {ReactNode} props.children - 리스트 아이템들
22
+ * @param {string} [props.className] - 추가적인 CSS 클래스
23
+ */
5
24
  declare const List: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
25
+ /**
26
+ * GNB 리스트의 서브 리스트 컴포넌트
27
+ * @param {Object} props
28
+ * @param {ReactNode} props.children - 서브 리스트 아이템들
29
+ * @param {string} [props.className] - 추가적인 CSS 클래스
30
+ */
6
31
  declare const SubList: ({ children }: PropsWithChildren) => import("react/jsx-runtime").JSX.Element;
32
+ /**
33
+ * GNB 리스트의 아이템 컴포넌트
34
+ * @param {Object} props
35
+ * @param {ReactNode} props.children - 아이템 컨텐츠
36
+ * @param {string} [props.className] - 추가적인 CSS 클래스
37
+ * @param {() => void} [props.onClick] - 클릭 핸들러
38
+ * @param {boolean} [props.isSelected] - 선택 상태 여부
39
+ */
7
40
  declare const Item: ({ hasNew, children, className, ...rest }: ItemProps) => import("react/jsx-runtime").JSX.Element;
8
41
  export { Root, UserInfo, List, SubList, Item };
@@ -12,5 +12,46 @@ export interface MenuProps {
12
12
  onOptionClick?: () => void;
13
13
  children?: ReactNode;
14
14
  }
15
+ /**
16
+ * 메뉴 컴포넌트는 네비게이션에서 사용되는 클릭 가능한 항목을 표시합니다.
17
+ *
18
+ * @param {Object} props
19
+ * @param {'main' | 'sub'} [props.type='main'] - 메뉴 타입 ('main', 'sub')
20
+ * @param {'white' | 'gray'} [props.variant='white'] - 메뉴 스타일 변형 ('white', 'gray')
21
+ * @param {string} props.name - 메뉴에 표시될 텍스트
22
+ * @param {string} [props.badgeCount] - 메뉴 항목에 표시될 뱃지 숫자
23
+ * @param {boolean} [props.isSelected=false] - 메뉴 선택 상태
24
+ * @param {SystemIconName} [props.leadingIcon] - 메뉴 앞쪽에 표시될 아이콘
25
+ * @param {SystemIconName} [props.trailingIcon] - 메뉴 뒤쪽에 표시될 아이콘
26
+ * @param {() => void} props.onClick - 메뉴 클릭 시 실행될 함수
27
+ * @param {() => void} [props.onOptionClick] - 후행 아이콘 클릭 시 실행될 함수
28
+ * @param {ReactNode} [props.children] - 메뉴 내부에 표시될 자식 요소
29
+ *
30
+ * @example
31
+ * // 기본 메뉴
32
+ * <Menu
33
+ * name="메뉴 항목"
34
+ * onClick={() => console.log('메뉴 클릭')}
35
+ * />
36
+ *
37
+ * // 아이콘과 뱃지가 있는 서브 메뉴
38
+ * <Menu
39
+ * type="sub"
40
+ * name="서브 메뉴"
41
+ * leadingIcon="home"
42
+ * badgeCount="5"
43
+ * onClick={() => console.log('서브 메뉴 클릭')}
44
+ * />
45
+ *
46
+ * // 선택된 상태의 옵션 메뉴
47
+ * <Menu
48
+ * variant="gray"
49
+ * name="옵션 메뉴"
50
+ * isSelected={true}
51
+ * trailingIcon="more"
52
+ * onClick={() => console.log('메뉴 클릭')}
53
+ * onOptionClick={() => console.log('옵션 클릭')}
54
+ * />
55
+ */
15
56
  declare const Menu: ({ type, variant, name, isSelected, badgeCount, leadingIcon, trailingIcon, children, onClick, onOptionClick, }: MenuProps) => import("react/jsx-runtime").JSX.Element;
16
57
  export default Menu;
@@ -4,5 +4,28 @@ export interface PaginationProps {
4
4
  page: number;
5
5
  onChange: (page: number) => void;
6
6
  }
7
+ /**
8
+ * 페이지네이션 컴포넌트
9
+ *
10
+ * @description
11
+ * 여러 페이지로 구성된 콘텐츠를 탐색할 수 있는 페이지네이션 컴포넌트입니다.
12
+ * 좌우 화살표와 페이지 번호 버튼으로 구성되어 있으며, 현재 페이지가 강조 표시됩니다.
13
+ *
14
+ * @param {Object} props
15
+ * @param {number} props.maxPage - 전체 페이지 수
16
+ * @param {number} [props.pageCount=10] - 한 번에 표시할 페이지 버튼의 개수 (기본값: 10)
17
+ * @param {number} props.page - 현재 페이지 번호
18
+ * @param {(page: number) => void} props.onChange - 페이지 변경 시 호출되는 콜백 함수
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * <Pagination
23
+ * maxPage={100}
24
+ * pageCount={5}
25
+ * page={1}
26
+ * onChange={(page) => setCurrentPage(page)}
27
+ * />
28
+ * ```
29
+ */
7
30
  declare const Pagination: ({ maxPage, pageCount, page, onChange, }: PaginationProps) => import("react/jsx-runtime").JSX.Element;
8
31
  export default Pagination;