maru_design2 2.31.1 → 3.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 (95) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/dist/components/atoms/badge/Badge.d.ts +40 -3
  3. package/dist/components/atoms/button/Button.d.ts +18 -0
  4. package/dist/components/atoms/checkbox/Checkbox.d.ts +6 -2
  5. package/dist/components/atoms/chip/Chip.d.ts +36 -3
  6. package/dist/components/atoms/code/Code.d.ts +2 -1
  7. package/dist/components/atoms/icon/Icon.d.ts +5 -3
  8. package/dist/components/atoms/icon/iconmap.d.ts +4 -0
  9. package/dist/components/atoms/input/Input.d.ts +10 -0
  10. package/dist/components/atoms/popover/Popover.d.ts +1 -1
  11. package/dist/components/atoms/radio/Radio.d.ts +9 -5
  12. package/dist/components/atoms/radio/index.d.ts +1 -0
  13. package/dist/components/atoms/skeleton/Contents.d.ts +2 -1
  14. package/dist/components/atoms/skeleton/Skeleton.d.ts +2 -1
  15. package/dist/components/atoms/slider/Slider.d.ts +3 -5
  16. package/dist/components/atoms/toggle/Toggle.d.ts +8 -23
  17. package/dist/components/atoms/toggle/index.d.ts +1 -0
  18. package/dist/components/atoms/tooltip/Tooltip.d.ts +1 -1
  19. package/dist/components/molecules/buttonGroup/ButtonGroup.d.ts +4 -4
  20. package/dist/components/molecules/calendar/Calendar.d.ts +40 -2
  21. package/dist/components/molecules/calendar/DatePickerHeader.d.ts +9 -1
  22. package/dist/components/molecules/calendar/DatePickerWrapper.d.ts +5 -6
  23. package/dist/components/molecules/calendar/calendar-utils.d.ts +11 -0
  24. package/dist/components/molecules/dropdown/Dropdown.d.ts +28 -3
  25. package/dist/components/molecules/dropdown/OverflowText.d.ts +5 -0
  26. package/dist/components/molecules/dropdown/index.d.ts +1 -0
  27. package/dist/components/molecules/dropdown/menu/MenuItem.d.ts +5 -7
  28. package/dist/components/molecules/dropdown/menu/index.d.ts +13 -8
  29. package/dist/components/molecules/dropdown/toggleButton/Arrow.d.ts +5 -8
  30. package/dist/components/molecules/dropdown/toggleButton/Clear.d.ts +4 -5
  31. package/dist/components/molecules/dropdown/toggleButton/index.d.ts +16 -2
  32. package/dist/components/molecules/dropdown/types.d.ts +28 -0
  33. package/dist/components/molecules/inputWithAction/InputWithAction.d.ts +14 -0
  34. package/dist/components/molecules/inputWithAction/index.d.ts +1 -0
  35. package/dist/components/molecules/modal/Modal.d.ts +20 -2
  36. package/dist/components/molecules/multiSelectDropdown/MultiSelectDropdown.d.ts +19 -2
  37. package/dist/components/molecules/multiSelectDropdown/menu/MenuItem.d.ts +2 -1
  38. package/dist/components/molecules/multiSelectDropdown/menu/index.d.ts +10 -3
  39. package/dist/components/molecules/multiSelectDropdown/toggleButton/Arrow.d.ts +2 -1
  40. package/dist/components/molecules/multiSelectDropdown/toggleButton/Clear.d.ts +3 -1
  41. package/dist/components/molecules/multiSelectDropdown/toggleButton/index.d.ts +10 -2
  42. package/dist/components/molecules/numberInput/NumberInput.d.ts +18 -0
  43. package/dist/components/molecules/numberInput/index.d.ts +1 -0
  44. package/dist/components/molecules/pagination/Pagination.d.ts +26 -15
  45. package/dist/components/molecules/searchInput/SearchInput.d.ts +1 -1
  46. package/dist/components/molecules/searchInput/filter/FilterPopover.d.ts +1 -1
  47. package/dist/components/molecules/searchInput/filter/index.d.ts +1 -1
  48. package/dist/components/molecules/table/Colgroup.d.ts +2 -1
  49. package/dist/components/molecules/table/Table.d.ts +2 -1
  50. package/dist/components/molecules/table/body/BinButtonTd.d.ts +2 -1
  51. package/dist/components/molecules/table/body/ChartButtonTd.d.ts +2 -1
  52. package/dist/components/molecules/table/body/CheckboxTd.d.ts +4 -1
  53. package/dist/components/molecules/table/body/EmptyTr.d.ts +1 -1
  54. package/dist/components/molecules/table/body/KebabMenuTd.d.ts +1 -1
  55. package/dist/components/molecules/table/body/RadioTd.d.ts +3 -1
  56. package/dist/components/molecules/table/body/Tr.d.ts +2 -1
  57. package/dist/components/molecules/table/body/index.d.ts +2 -1
  58. package/dist/components/molecules/table/header/FilterButtonsTh.d.ts +2 -1
  59. package/dist/components/molecules/table/header/FilterTh.d.ts +1 -1
  60. package/dist/components/molecules/table/header/SortableColumn.d.ts +2 -8
  61. package/dist/components/molecules/table/header/index.d.ts +3 -1
  62. package/dist/components/molecules/table/types.d.ts +15 -0
  63. package/dist/components/molecules/tabs/Tab.d.ts +12 -0
  64. package/dist/components/molecules/tabs/Tabs.d.ts +27 -0
  65. package/dist/components/molecules/tabs/TabsContext.d.ts +4 -0
  66. package/dist/components/molecules/tabs/index.d.ts +2 -0
  67. package/dist/components/molecules/tagInput/TagInput.d.ts +22 -0
  68. package/dist/components/molecules/tagInput/index.d.ts +2 -0
  69. package/dist/components/molecules/toast/Details.d.ts +3 -2
  70. package/dist/components/molecules/toast/DetailsItem.d.ts +6 -0
  71. package/dist/components/molecules/toast/Toast.d.ts +5 -21
  72. package/dist/components/molecules/toast/ToastContext.d.ts +2 -2
  73. package/dist/components/molecules/toast/ToastStyle.d.ts +4 -2
  74. package/dist/components/molecules/toast/index.d.ts +2 -0
  75. package/dist/components/molecules/toast/types.d.ts +1 -4
  76. package/dist/components/styleProvider/StyleProvider.d.ts +7 -3
  77. package/dist/constants/color.d.ts +676 -0
  78. package/dist/constants/figmaColor.d.ts +327 -0
  79. package/dist/constants/input.d.ts +2 -0
  80. package/dist/constants/toast.d.ts +2 -0
  81. package/dist/enums/color.d.ts +165 -6
  82. package/dist/enums/size.d.ts +6 -3
  83. package/dist/enums/variant.d.ts +7 -2
  84. package/dist/fonts.js +1 -1
  85. package/dist/hooks/useColor.d.ts +2 -1
  86. package/dist/index.d.ts +9 -0
  87. package/dist/index.js +4385 -1750
  88. package/dist/types/color.d.ts +4 -0
  89. package/dist/types/input.d.ts +7 -0
  90. package/dist/types/radio.d.ts +12 -0
  91. package/dist/types/tabs.d.ts +12 -0
  92. package/dist/types/toast.d.ts +29 -0
  93. package/dist/types/toggle.d.ts +5 -0
  94. package/package.json +37 -8
  95. package/mise.toml +0 -3
@@ -1,9 +1,28 @@
1
1
  import React from 'react';
2
+ import { DropdownItemOptions, DropdownVariant } from './types';
2
3
  import { TColor } from '../../../enums/color';
3
4
  import { TDropdownType } from '../../../enums/type';
4
5
  import { IconProps } from '../../atoms/icon';
5
6
  import './dropdown.scss';
6
- interface DropdownProps<T extends Record<string, any>> {
7
+ export interface DropdownProps<T extends Record<string, any>> {
8
+ /** Visual variant; independent of the existing search type. */
9
+ variant?: DropdownVariant;
10
+ startIcon?: IconProps;
11
+ customStartIcon?: React.ReactNode;
12
+ badge?: React.ReactNode;
13
+ helperText?: React.ReactNode;
14
+ actionContent?: React.ReactNode;
15
+ onAction?: () => void;
16
+ actionDisabled?: boolean;
17
+ actionAriaLabel?: string;
18
+ clearAriaLabel?: string;
19
+ searchAriaLabel?: string;
20
+ searchClearAriaLabel?: string;
21
+ getItemProps?: (item: T) => DropdownItemOptions;
22
+ /** Menu width, independent of the complete control width. */
23
+ menuWidth?: number;
24
+ /** Accessible name when no visible label is supplied. */
25
+ 'aria-label'?: string;
7
26
  data: T[];
8
27
  /**
9
28
  * 선택된 아이디
@@ -62,6 +81,11 @@ interface DropdownProps<T extends Record<string, any>> {
62
81
  * 메뉴 세로 크기(px) (@v1 menuPosition.height)
63
82
  */
64
83
  height?: number;
84
+ /**
85
+ * 텍스트와 화살표(아이콘) 사이 간격(px)
86
+ * @default 8
87
+ */
88
+ gap?: number;
65
89
  /**
66
90
  * 드롭다운 토글 버튼 사용자 정의 노드. (@v1 toggleChildren)
67
91
  */
@@ -77,6 +101,8 @@ interface DropdownProps<T extends Record<string, any>> {
77
101
  * 컴포넌트 위치의 기준이 될 엘리먼트 사용자 정의. (@v1 portalAnchor)
78
102
  */
79
103
  anchorEl?: HTMLElement | null;
104
+ /** 메뉴를 StyleProvider 루트로 분리합니다. 변형·스크롤이 있는 팝업 내부에서 사용합니다. 기본값 false */
105
+ portal?: boolean;
80
106
  /**
81
107
  * 메뉴 맨 밑에 버튼
82
108
  */
@@ -86,5 +112,4 @@ interface DropdownProps<T extends Record<string, any>> {
86
112
  onClick: () => void;
87
113
  };
88
114
  }
89
- export declare function Dropdown<T extends Record<string, any>>({ data, selectedId, onSelect, idKey, displayKey, className, placeholder, searchPlaceholder, disabled, color, stopPropagation, type, errorMessage, label, onClear, noDataMessage, noResultMessage, width, height, customButton, customMenuItem, anchorEl, menuBottomButton, }: DropdownProps<T>): import("react/jsx-runtime").JSX.Element;
90
- export {};
115
+ export declare function Dropdown<T extends Record<string, any>>({ data, selectedId, onSelect, idKey, displayKey, className, placeholder, searchPlaceholder, disabled, color, stopPropagation, type, variant, startIcon, customStartIcon, badge, helperText, actionContent, onAction, actionDisabled, actionAriaLabel, clearAriaLabel, searchAriaLabel, searchClearAriaLabel, getItemProps, menuWidth, 'aria-label': ariaLabel, errorMessage, label, onClear, noDataMessage, noResultMessage, width, height, gap, customButton, customMenuItem, anchorEl, portal, menuBottomButton, }: DropdownProps<T>): React.JSX.Element;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export declare function useOverflow(ref: React.RefObject<HTMLElement>, content: React.ReactNode): boolean;
3
+ export default function OverflowText({ children, }: {
4
+ children: React.ReactNode;
5
+ }): React.JSX.Element;
@@ -1 +1,2 @@
1
1
  export * from './Dropdown';
2
+ export type { DropdownVariant, DropdownItemVariant, DropdownItemOptions, } from './types';
@@ -1,16 +1,14 @@
1
1
  import React from 'react';
2
+ import { DropdownCustomMenuItem, DropdownItemOptions } from '../types';
2
3
  interface Props<T extends Record<string, any>> {
3
4
  item: T;
4
5
  selectedId: string | undefined;
5
6
  onSelect: (id?: string) => void;
6
7
  idKey: string;
7
8
  displayKey: string;
8
- width?: number;
9
- customMenuItem?: ({ children, rowId, }: {
10
- children: React.ReactNode;
11
- rowId: string | number;
12
- }) => JSX.Element;
9
+ customMenuItem?: DropdownCustomMenuItem;
10
+ options?: DropdownItemOptions;
13
11
  onClose: () => void;
14
12
  }
15
- declare function MenuItem<T extends Record<string, any>>({ item, selectedId, onSelect, idKey, displayKey, width, customMenuItem: CustomMenuItem, onClose, }: Props<T>): import("react/jsx-runtime").JSX.Element;
16
- export default MenuItem;
13
+ export default function MenuItem<T extends Record<string, any>>({ item, selectedId, onSelect, idKey, displayKey, customMenuItem: CustomMenuItem, options, onClose, }: Props<T>): React.JSX.Element;
14
+ export {};
@@ -1,7 +1,11 @@
1
1
  import React from 'react';
2
+ import { DropdownCustomMenuItem, DropdownItemOptions, DropdownItemVariant } from '../types';
2
3
  import { TColor } from '../../../../enums/color';
3
4
  import { IconProps } from '../../../atoms/icon';
4
5
  interface Props<T extends Record<string, any>> {
6
+ id: string;
7
+ labelledBy: string;
8
+ initialFocus: 'selected' | 'first' | 'last';
5
9
  data: T[];
6
10
  selectedId: string | undefined;
7
11
  onSelect: (id?: string) => void;
@@ -9,23 +13,24 @@ interface Props<T extends Record<string, any>> {
9
13
  displayKey: string;
10
14
  color?: TColor;
11
15
  searchPlaceholder?: string;
16
+ searchAriaLabel?: string;
17
+ searchClearAriaLabel?: string;
12
18
  noDataMessage?: string;
13
19
  noResultMessage?: string;
14
20
  width?: number;
15
21
  height?: number;
16
- customMenuItem?: ({ children, rowId, }: {
17
- children: React.ReactNode;
18
- rowId: string | number;
19
- }) => JSX.Element;
22
+ customMenuItem?: DropdownCustomMenuItem;
23
+ getItemProps?: (item: T) => DropdownItemOptions;
24
+ defaultItemVariant: DropdownItemVariant;
20
25
  isSearch: boolean;
21
26
  parent: HTMLElement;
22
- open: boolean;
23
- onClose: () => void;
27
+ alignEnd: boolean;
28
+ onClose: (restoreFocus?: boolean) => void;
24
29
  menuBottomButton?: {
25
30
  content: string;
26
31
  startIcon?: IconProps;
27
32
  onClick: () => void;
28
33
  };
29
34
  }
30
- declare function DropdownMenu<T extends Record<string, any>>({ data, selectedId, onSelect, idKey, displayKey, color, searchPlaceholder, noDataMessage, noResultMessage, width, height, customMenuItem, isSearch, parent, open, onClose, menuBottomButton, }: Props<T>): import("react/jsx-runtime").JSX.Element;
31
- export default DropdownMenu;
35
+ export default function DropdownMenu<T extends Record<string, any>>({ id, labelledBy, initialFocus, data, selectedId, onSelect, idKey, displayKey, color, searchPlaceholder, searchAriaLabel, searchClearAriaLabel, noDataMessage, noResultMessage, width, height, customMenuItem, getItemProps, defaultItemVariant, isSearch, parent, alignEnd, onClose, menuBottomButton, }: Props<T>): React.JSX.Element;
36
+ export {};
@@ -1,9 +1,6 @@
1
- import { TColor } from '../../../../enums/color';
2
- interface Props {
1
+ import React from 'react';
2
+ import { DropdownVariant } from '../types';
3
+ export default function Arrow({ open, variant, }: {
3
4
  open: boolean;
4
- focus: boolean;
5
- color: TColor;
6
- disabled?: boolean;
7
- }
8
- declare function Arrow({ open, focus, color, disabled }: Props): import("react/jsx-runtime").JSX.Element;
9
- export default Arrow;
5
+ variant: DropdownVariant;
6
+ }): React.JSX.Element;
@@ -1,6 +1,5 @@
1
- interface Props {
2
- focus: boolean;
1
+ import React from 'react';
2
+ export default function Clear({ onClear, ariaLabel, }: {
3
3
  onClear: () => void;
4
- }
5
- declare function Clear({ focus, onClear }: Props): import("react/jsx-runtime").JSX.Element;
6
- export default Clear;
4
+ ariaLabel?: string;
5
+ }): React.JSX.Element;
@@ -1,19 +1,33 @@
1
1
  import React from 'react';
2
+ import { DropdownVariant } from '../types';
2
3
  import { TColor } from '../../../../enums/color';
4
+ import { IconProps } from '../../../atoms/icon';
3
5
  interface Props<T extends Record<string, any>> {
6
+ id: string;
7
+ menuId: string;
8
+ triggerRef: React.RefObject<HTMLButtonElement>;
9
+ ariaLabel?: string;
10
+ describedBy?: string;
4
11
  displayKey: string;
5
12
  placeholder?: string;
6
13
  disabled?: boolean;
7
14
  color: TColor;
8
15
  stopPropagation?: boolean;
9
- width?: number;
16
+ gap: number;
10
17
  customButton?: React.ReactNode;
18
+ variant: DropdownVariant;
19
+ startIcon?: IconProps;
20
+ customStartIcon?: React.ReactNode;
21
+ badge?: React.ReactNode;
11
22
  open: boolean;
12
23
  selected: T | undefined;
13
24
  errored?: boolean;
14
25
  hasClearBtn: boolean;
26
+ clearAriaLabel?: string;
27
+ popupRole?: 'menu' | 'dialog';
15
28
  onClear: () => void;
16
29
  onClick: () => void;
30
+ onKeyDown: React.KeyboardEventHandler<HTMLButtonElement>;
17
31
  }
18
- declare function DropdownToggleButton<T extends Record<string, any>>({ displayKey, placeholder, disabled, color, stopPropagation, width, customButton, open, selected, errored, hasClearBtn, onClear, onClick, }: Props<T>): import("react/jsx-runtime").JSX.Element;
32
+ declare function DropdownToggleButton<T extends Record<string, any>>({ id, menuId, triggerRef, ariaLabel, describedBy, displayKey, placeholder, disabled, color, stopPropagation, gap, customButton, variant, startIcon, customStartIcon, badge, open, selected, errored, hasClearBtn, clearAriaLabel, popupRole, onClear, onClick, onKeyDown, }: Props<T>): React.JSX.Element;
19
33
  export default DropdownToggleButton;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { IconProps } from '../../atoms/icon';
3
+ export type DropdownVariant = 'default' | 'button' | 'button-tag' | 'borderless';
4
+ export type DropdownItemVariant = 'default' | 'model' | 'icon' | 'tag';
5
+ /** Presentation and optional actions for one item; data remains caller-owned. */
6
+ export interface DropdownItemOptions {
7
+ variant?: DropdownItemVariant;
8
+ startIcon?: IconProps;
9
+ customStartIcon?: React.ReactNode;
10
+ endIcon?: IconProps;
11
+ customEndIcon?: React.ReactNode;
12
+ supportingText?: React.ReactNode;
13
+ showDot?: boolean;
14
+ showSelectedCheck?: boolean;
15
+ disabled?: boolean;
16
+ action?: {
17
+ content: React.ReactNode;
18
+ ariaLabel: string;
19
+ onClick: () => void;
20
+ disabled?: boolean;
21
+ };
22
+ onRemove?: () => void;
23
+ removeAriaLabel?: string;
24
+ }
25
+ export type DropdownCustomMenuItem = (props: {
26
+ children: React.ReactNode;
27
+ rowId: string | number;
28
+ }) => JSX.Element;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { InputProps } from '../../atoms/input';
3
+ import './input-with-action.scss';
4
+ export interface InputWithActionProps extends InputProps {
5
+ /** 우측 액션 버튼 내용 */
6
+ actionContent: React.ReactNode;
7
+ /** 우측 액션 버튼 클릭 이벤트 */
8
+ onAction: () => void;
9
+ /** 액션 버튼만 별도로 비활성화할지 여부 */
10
+ actionDisabled?: boolean;
11
+ /** 액션 버튼의 접근성 이름 */
12
+ actionAriaLabel?: string;
13
+ }
14
+ export declare const InputWithAction: React.ForwardRefExoticComponent<InputWithActionProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1 @@
1
+ export * from './InputWithAction';
@@ -7,7 +7,12 @@ export interface ModalProps {
7
7
  onClose: () => void;
8
8
  open: boolean;
9
9
  /**
10
- * 배경 클릭 컴포넌트 닫히는지 여부. (@v1 backdropOff)
10
+ * 제목이 없는 모달의 접근성 이름
11
+ */
12
+ ariaLabel?: string;
13
+ /**
14
+ * 배경에서 누르고 뗄 때 컴포넌트 닫히는지 여부. (@v1 backdropOff)
15
+ * 모달 안에서 시작해 바깥에서 떼는 드래그는 닫히지 않습니다.
11
16
  */
12
17
  backdrop?: boolean;
13
18
  /**
@@ -18,14 +23,27 @@ export interface ModalProps {
18
23
  disabled?: boolean;
19
24
  };
20
25
  className?: string;
26
+ /**
27
+ * 닫기 아이콘 버튼의 접근성 이름
28
+ */
29
+ closeButtonAriaLabel?: string;
21
30
  /**
22
31
  * 엔터키 비활성화 여부. (@v1 disableEnterKeyDown)
23
32
  */
24
33
  disabledEnter?: boolean;
34
+ /**
35
+ * true면 푸터 버튼이 하단 너비를 반반 차지합니다. 기본은 우측 정렬입니다.
36
+ */
37
+ fullFooter?: boolean;
25
38
  /**
26
39
  * 모달 닫기 버튼 숨김 여부. (@v1 hasCloseButton)
27
40
  */
28
41
  hiddenCloseButton?: boolean;
42
+ /**
43
+ * 타이틀 위 아이콘. 없으면 타이틀이 최상단입니다.
44
+ * Modal은 테두리 박스와 내부 사이즈만 담당하고, 아이콘 노드는 소비자가 넘깁니다.
45
+ */
46
+ icon?: React.ReactNode;
29
47
  /**
30
48
  * 모달 확인버튼 설정 (@v1 confirmButton)
31
49
  */
@@ -45,4 +63,4 @@ export interface ModalProps {
45
63
  */
46
64
  subTitle?: React.ReactNode;
47
65
  }
48
- export declare function Modal({ children, onClose, open, backdrop, cancelButton, className, disabledEnter, hiddenCloseButton, okButton, size, title, subTitle, }: ModalProps): import("react/jsx-runtime").JSX.Element;
66
+ export declare function Modal({ children, onClose, open, ariaLabel, backdrop, cancelButton, className, closeButtonAriaLabel, disabledEnter, fullFooter, hiddenCloseButton, icon, okButton, size, title, subTitle, }: ModalProps): React.JSX.Element;
@@ -1,5 +1,8 @@
1
+ import React from 'react';
2
+ import { DropdownVariant } from '../dropdown/types';
1
3
  import { TColor } from '../../../enums/color';
2
4
  import { TDropdownType } from '../../../enums/type';
5
+ import '../dropdown/dropdown.scss';
3
6
  import './multi-select-dropdown.scss';
4
7
  export interface MultiSelectDropdownProps<T extends Record<string, any>> {
5
8
  data: T[];
@@ -19,7 +22,21 @@ export interface MultiSelectDropdownProps<T extends Record<string, any>> {
19
22
  /**
20
23
  * 드롭다운 버튼에 노출할 컨텐츠
21
24
  */
22
- content: string;
25
+ content?: React.ReactNode;
26
+ /** Optional visual variant; default preserves the existing control. */
27
+ variant?: DropdownVariant;
28
+ /** Called only for two or more selections. No built-in language or i18n dependency. */
29
+ formatSelectedCount?: (count: number) => React.ReactNode;
30
+ actionContent?: React.ReactNode;
31
+ onAction?: () => void;
32
+ actionDisabled?: boolean;
33
+ actionAriaLabel?: string;
34
+ clearAriaLabel?: string;
35
+ searchAriaLabel?: string;
36
+ searchClearAriaLabel?: string;
37
+ helperText?: React.ReactNode;
38
+ menuWidth?: number;
39
+ 'aria-label'?: string;
23
40
  className?: string;
24
41
  /**
25
42
  * 드롭다운 버튼의 placeholder
@@ -73,4 +90,4 @@ export interface MultiSelectDropdownProps<T extends Record<string, any>> {
73
90
  */
74
91
  anchorEl?: HTMLElement | null;
75
92
  }
76
- export declare function MultiSelectDropdown<T extends Record<string, any>>({ data, selectedIds, onSelect, idKey, displayKey, content, className, placeholder, searchPlaceholder, disabled, color, stopPropagation, type, errorMessage, label, allCheckLabel, onClear, noDataMessage, noResultMessage, width, height, anchorEl, }: MultiSelectDropdownProps<T>): import("react/jsx-runtime").JSX.Element;
93
+ export declare function MultiSelectDropdown<T extends Record<string, any>>({ data, selectedIds, onSelect, idKey, displayKey, content, className, placeholder, searchPlaceholder, disabled, color, stopPropagation, type, variant, formatSelectedCount, actionContent, onAction, actionDisabled, actionAriaLabel, clearAriaLabel, searchAriaLabel, searchClearAriaLabel, helperText, menuWidth, 'aria-label': ariaLabel, errorMessage, label, allCheckLabel, onClear, noDataMessage, noResultMessage, width, height, anchorEl, }: MultiSelectDropdownProps<T>): React.JSX.Element;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { TColor } from '../../../../enums/color';
2
3
  interface Props<T extends Record<string, any>> {
3
4
  item: T;
@@ -8,5 +9,5 @@ interface Props<T extends Record<string, any>> {
8
9
  color?: TColor;
9
10
  width?: number;
10
11
  }
11
- declare function MenuItem<T extends Record<string, any>>({ item, selectedIds, onSelect, idKey, displayKey, color, width, }: Props<T>): import("react/jsx-runtime").JSX.Element;
12
+ declare function MenuItem<T extends Record<string, any>>({ item, selectedIds, onSelect, idKey, displayKey, color, width, }: Props<T>): React.JSX.Element;
12
13
  export default MenuItem;
@@ -1,5 +1,13 @@
1
+ import React from 'react';
1
2
  import { TColor } from '../../../../enums/color';
2
3
  interface Props<T extends Record<string, any>> {
4
+ id: string;
5
+ labelledBy: string;
6
+ initialFocus: 'selected' | 'first' | 'last';
7
+ figmaVariant: boolean;
8
+ alignEnd: boolean;
9
+ searchAriaLabel?: string;
10
+ searchClearAriaLabel?: string;
3
11
  data: T[];
4
12
  selectedIds: string[];
5
13
  onSelect: (ids: string[]) => void;
@@ -14,8 +22,7 @@ interface Props<T extends Record<string, any>> {
14
22
  height?: number;
15
23
  isSearch: boolean;
16
24
  parent: HTMLElement;
17
- open: boolean;
18
- onClose: () => void;
25
+ onClose: (restoreFocus?: boolean) => void;
19
26
  }
20
- declare function DropdownMenu<T extends Record<string, any>>({ data, selectedIds, onSelect, idKey, displayKey, searchPlaceholder, allCheckLabel, color, noDataMessage, noResultMessage, width, height, isSearch, parent, open, onClose, }: Props<T>): import("react/jsx-runtime").JSX.Element;
27
+ declare function DropdownMenu<T extends Record<string, any>>({ id, labelledBy, initialFocus, figmaVariant, alignEnd, searchAriaLabel, searchClearAriaLabel, data, selectedIds, onSelect, idKey, displayKey, searchPlaceholder, allCheckLabel, color, noDataMessage, noResultMessage, width, height, isSearch, parent, onClose, }: Props<T>): React.JSX.Element;
21
28
  export default DropdownMenu;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { TColor } from '../../../../enums/color';
2
3
  interface Props {
3
4
  open: boolean;
@@ -5,5 +6,5 @@ interface Props {
5
6
  color: TColor;
6
7
  disabled?: boolean;
7
8
  }
8
- declare function Arrow({ open, focus, color, disabled }: Props): import("react/jsx-runtime").JSX.Element;
9
+ declare function Arrow({ open, focus, color, disabled }: Props): React.JSX.Element;
9
10
  export default Arrow;
@@ -1,6 +1,8 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  focus: boolean;
3
4
  onClear: () => void;
5
+ ariaLabel?: string;
4
6
  }
5
- declare function Clear({ focus, onClear }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function Clear({ focus, onClear, ariaLabel }: Props): React.JSX.Element;
6
8
  export default Clear;
@@ -1,6 +1,14 @@
1
+ import React from 'react';
1
2
  import { TColor } from '../../../../enums/color';
2
3
  interface Props {
3
- content: string;
4
+ content: React.ReactNode;
5
+ id: string;
6
+ menuId: string;
7
+ triggerRef: React.RefObject<HTMLButtonElement>;
8
+ ariaLabel?: string;
9
+ describedBy?: string;
10
+ clearAriaLabel?: string;
11
+ onKeyDown: React.KeyboardEventHandler<HTMLButtonElement>;
4
12
  placeholder?: string;
5
13
  disabled?: boolean;
6
14
  color: TColor;
@@ -13,5 +21,5 @@ interface Props {
13
21
  onClear: () => void;
14
22
  onClick: () => void;
15
23
  }
16
- declare function DropdownToggleButton({ content, placeholder, disabled, color, stopPropagation, width, open, selected, errored, hasClearBtn, onClear, onClick, }: Props): import("react/jsx-runtime").JSX.Element;
24
+ declare function DropdownToggleButton({ content, id, menuId, triggerRef, ariaLabel, describedBy, clearAriaLabel, onKeyDown, placeholder, disabled, color, stopPropagation, width, open, selected, errored, hasClearBtn, onClear, onClick, }: Props): React.JSX.Element;
17
25
  export default DropdownToggleButton;
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { InputProps } from '../../atoms/input';
3
+ import './number-input.scss';
4
+ export interface NumberInputProps extends Omit<InputProps, 'type' | 'value' | 'defaultValue' | 'onChange' | 'startNode' | 'endNode'> {
5
+ /** 제어할 숫자 문자열 */
6
+ value?: string;
7
+ /** 비제어 방식의 초기 숫자 문자열 */
8
+ defaultValue?: string;
9
+ /** 값이 변경될 때 호출되는 함수 */
10
+ onValueChange?: (value: string) => void;
11
+ /** 허용할 최솟값 */
12
+ min?: number;
13
+ /** 허용할 최댓값 */
14
+ max?: number;
15
+ /** 증감 단위 */
16
+ step?: number;
17
+ }
18
+ export declare const NumberInput: React.ForwardRefExoticComponent<NumberInputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1 @@
1
+ export * from './NumberInput';
@@ -1,22 +1,33 @@
1
+ import React from 'react';
1
2
  import './pagination.scss';
3
+ export type PaginationVariant = 'default' | 'simple' | 'number';
2
4
  export interface PaginationProps {
3
- /**
4
- * 현재 페이지. (@v1 page.curPage)
5
- */
5
+ /** 현재 페이지 (1부터 시작). */
6
6
  page: number;
7
- /**
8
- * 현재 페이지 설정 함수. (@v1 page.setPage)
9
- */
7
+ /** 페이지 이동 요청. 부모에서 page와 표시 데이터를 갱신합니다. */
10
8
  onPageChange: (page: number) => void;
11
- /**
12
- * 총 페이지
13
- */
9
+ /** 전체 페이지 수. 빈 목록은 0을 전달합니다. */
14
10
  totalPage: number;
15
- className?: string;
16
- /**
17
- * prev, next 버튼 공간 차지 여부
18
- */
11
+ /** 기본형 / 페이지 크기 선택형 / 번호형. @default 'default' */
12
+ variant?: PaginationVariant;
13
+ /** 기본형 왼쪽에 표시할 정확한 전체 항목 수. 생략하면 범위를 숨깁니다. */
14
+ totalCount?: number;
15
+ /** 페이지당 항목 수. simple에서는 부모가 관리하는 선택값입니다. @default 30 */
16
+ pageSize?: number;
17
+ /** simple의 페이지당 항목 수 선택지. @default [15, 30, 50, 100] */
18
+ pageSizeOptions?: number[];
19
+ /** simple의 개수 변경 요청. 부모에서 pageSize와 totalPage를 갱신하고 page를 1로 초기화하세요. */
20
+ onPageSizeChange?: (pageSize: number) => void;
21
+ /** 위쪽 구분선 표시. @default true */
22
+ divider?: boolean;
23
+ /** 전체 조작 비활성화. @default false */
24
+ disabled?: boolean;
25
+ /** visible: 경계의 이동 버튼을 비활성화해 표시. hidden: 공간을 남기고 숨김. */
19
26
  buttonVisibility?: 'visible' | 'hidden';
20
- label: string;
27
+ /** 전체 페이지 수 뒤에 붙는 문구. @default '페이지' */
28
+ label?: string;
29
+ /** 탐색 영역의 접근성 이름. @default '페이지네이션' */
30
+ 'aria-label'?: string;
31
+ className?: string;
21
32
  }
22
- export declare function Pagination({ page, onPageChange, totalPage, className, buttonVisibility, label, }: PaginationProps): import("react/jsx-runtime").JSX.Element;
33
+ export declare function Pagination({ page, onPageChange, totalPage, variant, totalCount, pageSize, pageSizeOptions, onPageSizeChange, divider, disabled, buttonVisibility, label, 'aria-label': ariaLabel, className, }: PaginationProps): React.JSX.Element;
@@ -31,4 +31,4 @@ export interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInp
31
31
  searchButtonContent?: string;
32
32
  };
33
33
  }
34
- export declare function SearchInput({ hiddenClearButton, className, filter, ...props }: SearchInputProps): import("react/jsx-runtime").JSX.Element;
34
+ export declare function SearchInput({ hiddenClearButton, className, filter, ...props }: SearchInputProps): React.JSX.Element;
@@ -12,5 +12,5 @@ interface Props {
12
12
  searchButtonContent?: string;
13
13
  onSearch: () => void;
14
14
  }
15
- declare function FilterPopover({ parent, onClose, formats, resetButtonContent, onReset, searchButtonContent, onSearch, }: Props): import("react/jsx-runtime").JSX.Element;
15
+ declare function FilterPopover({ parent, onClose, formats, resetButtonContent, onReset, searchButtonContent, onSearch, }: Props): React.JSX.Element;
16
16
  export default FilterPopover;
@@ -13,5 +13,5 @@ interface Props {
13
13
  onSearch: () => void;
14
14
  inputWrapperRef: React.RefObject<HTMLDivElement>;
15
15
  }
16
- declare function Filter({ on, formats, hoverContent, resetButtonContent, onReset, searchButtonContent, onSearch, inputWrapperRef, }: Props): import("react/jsx-runtime").JSX.Element;
16
+ declare function Filter({ on, formats, hoverContent, resetButtonContent, onReset, searchButtonContent, onSearch, inputWrapperRef, }: Props): React.JSX.Element;
17
17
  export default Filter;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { IColumnFormats } from './types';
2
3
  interface Props {
3
4
  hasCheckbox?: boolean;
@@ -5,5 +6,5 @@ interface Props {
5
6
  formats: IColumnFormats[];
6
7
  hasActionCol: boolean;
7
8
  }
8
- declare function Colgroup({ hasCheckbox, hasRadio, formats, hasActionCol }: Props): import("react/jsx-runtime").JSX.Element;
9
+ declare function Colgroup({ hasCheckbox, hasRadio, formats, hasActionCol }: Props): React.JSX.Element;
9
10
  export default Colgroup;
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import { TableProps } from './types';
2
3
  import './table.scss';
3
- export declare function Table({ rowIdKey, data, formats, maxHeight, sort, onSort, checkedIds, onCheck, radioCheckedId, onRadioCheck, filter, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, className, id, noData, loading, }: TableProps): import("react/jsx-runtime").JSX.Element;
4
+ export declare function Table({ rowIdKey, data, formats, maxHeight, sort, onSort, checkedIds, onCheck, getCheckboxStatus, radioCheckedId, onRadioCheck, filter, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, disabledRows, className, id, noData, loading, }: TableProps): React.JSX.Element;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  rowId: string;
3
4
  hovered: boolean;
4
5
  onClick: (rowId: string) => void;
5
6
  }
6
- declare function BinButtonTd({ rowId, hovered, onClick }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function BinButtonTd({ rowId, hovered, onClick }: Props): React.JSX.Element;
7
8
  export default BinButtonTd;
@@ -1,8 +1,9 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  rowId: string;
3
4
  hovered: boolean;
4
5
  selected?: boolean;
5
6
  onClick: (rowId: string) => void;
6
7
  }
7
- declare function ChartButtonTd({ rowId, hovered, selected, onClick }: Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function ChartButtonTd({ rowId, hovered, selected, onClick }: Props): React.JSX.Element;
8
9
  export default ChartButtonTd;
@@ -1,6 +1,9 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  checked: boolean;
4
+ disabled?: boolean;
5
+ hidden?: boolean;
3
6
  onCheck: (checked: boolean) => void;
4
7
  }
5
- declare function CheckboxTd({ checked, onCheck }: Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function CheckboxTd({ checked, disabled, hidden, onCheck }: Props): React.JSX.Element;
6
9
  export default CheckboxTd;
@@ -4,5 +4,5 @@ interface Props {
4
4
  loadingContent?: React.ReactNode;
5
5
  emptyBodyHeight: number;
6
6
  }
7
- declare function EmptyTr({ noDataMessage, loadingContent, emptyBodyHeight }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function EmptyTr({ noDataMessage, loadingContent, emptyBodyHeight }: Props): React.JSX.Element;
8
8
  export default EmptyTr;
@@ -3,5 +3,5 @@ interface Props {
3
3
  rowId: string;
4
4
  kebabContent?: (rowId: string, onClose: () => void) => React.ReactNode;
5
5
  }
6
- declare function KebabMenuTd({ rowId, kebabContent }: Props): import("react/jsx-runtime").JSX.Element | null;
6
+ declare function KebabMenuTd({ rowId, kebabContent }: Props): React.JSX.Element | null;
7
7
  export default KebabMenuTd;
@@ -1,6 +1,8 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  checked: boolean;
4
+ disabled?: boolean;
3
5
  onCheck: (checked: boolean) => void;
4
6
  }
5
- declare function RadioTd({ checked, onCheck }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function RadioTd({ checked, disabled, onCheck }: Props): React.JSX.Element;
6
8
  export default RadioTd;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  import { TableProps } from '../types';
2
3
  interface Props extends TableProps {
3
4
  row: Record<string, any>;
4
5
  hasActionCol: boolean;
5
6
  }
6
- declare function Tr({ row, rowIdKey, formats, checkedIds, onCheck, radioCheckedId, onRadioCheck, hasActionCol, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function Tr({ row, rowIdKey, formats, checkedIds, onCheck, getCheckboxStatus, radioCheckedId, onRadioCheck, hasActionCol, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, disabledRows, }: Props): React.JSX.Element;
7
8
  export default Tr;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  import { TableProps } from '../types';
2
3
  interface Props extends TableProps {
3
4
  hasActionCol: boolean;
4
5
  emptyBodyHeight: number;
5
6
  }
6
- declare function TBody({ rowIdKey, formats, data, checkedIds, onCheck, radioCheckedId, onRadioCheck, hasActionCol, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, noData, loading, emptyBodyHeight, }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function TBody({ rowIdKey, formats, data, checkedIds, onCheck, getCheckboxStatus, radioCheckedId, onRadioCheck, hasActionCol, kebabMenu, binButton, chartButton, onRowClick, selectedRow, highlightRows, disabledRows, noData, loading, emptyBodyHeight, }: Props): React.JSX.Element;
7
8
  export default TBody;
@@ -1,7 +1,8 @@
1
+ import React from 'react';
1
2
  interface Props {
2
3
  toggle: boolean;
3
4
  onToggle: () => void;
4
5
  onReset?: () => void;
5
6
  }
6
- declare function FilterButtonsTh({ toggle, onToggle, onReset }: Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function FilterButtonsTh({ toggle, onToggle, onReset }: Props): React.JSX.Element;
7
8
  export default FilterButtonsTh;