@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.
- package/dist/Components/Base/Layouts/Box/Box.d.ts +6 -0
- package/dist/Components/Base/Layouts/Column/Column.d.ts +10 -0
- package/dist/Components/Base/Layouts/FullBleed/FullBleed.d.ts +8 -0
- package/dist/Components/Base/Layouts/GridLayout/GridLayout.d.ts +16 -0
- package/dist/Components/Base/Typography/Typography.d.ts +8 -0
- package/dist/Components/DataDisplays/CountBadge/CountBadge.d.ts +20 -0
- package/dist/Components/DataDisplays/Divider/Divider.d.ts +18 -0
- package/dist/Components/DataDisplays/ImageLabel/ImageLabel.d.ts +18 -0
- package/dist/Components/DataDisplays/Label/Label.d.ts +30 -0
- package/dist/Components/DataDisplays/NewBadge/NewBadge.d.ts +19 -0
- package/dist/Components/DataDisplays/ProductIcon/ProductIcon.d.ts +9 -0
- package/dist/Components/DataDisplays/{ProcessIndicator/ProcessIndicator.d.ts → ProgressIndicator/ProgressIndicator.d.ts} +4 -4
- package/dist/Components/DataDisplays/ProgressIndicator/ProgressIndicator.js +1 -0
- package/dist/Components/DataDisplays/ProgressIndicator/index.d.ts +2 -0
- package/dist/Components/DataDisplays/ProgressIndicator/index.js +1 -0
- package/dist/Components/DataDisplays/ServiceLogo/ServiceLogo.d.ts +18 -0
- package/dist/Components/DataDisplays/SkillLabel/SkillLabel.d.ts +6 -0
- package/dist/Components/DataDisplays/SkillLabel/SkillLabel.parts.d.ts +19 -0
- package/dist/Components/DataDisplays/SystemIcon/SystemIcon.d.ts +29 -0
- package/dist/Components/DataDisplays/index.d.ts +1 -1
- package/dist/Components/Feedbacks/Dialog/Dialog.d.ts +14 -0
- package/dist/Components/Feedbacks/DialogBox/DialogBox.js +1 -1
- package/dist/Components/Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.d.ts +25 -0
- package/dist/Components/Feedbacks/LoadingIndicator/LoadingIndicator.d.ts +19 -0
- package/dist/Components/Feedbacks/MessageBar/MessageBar.d.ts +42 -0
- package/dist/Components/Feedbacks/MessageBar/MessageBar.js +1 -1
- package/dist/Components/Feedbacks/MessageBox/MessageBox.d.ts +35 -0
- package/dist/Components/Feedbacks/PlainTooltip/PlainTooltip.d.ts +36 -2
- package/dist/Components/Feedbacks/RichTooltip/RichTooltip.d.ts +26 -0
- package/dist/Components/Inputs/AutoCompleteList/AutoCompleteList.d.ts +23 -0
- package/dist/Components/Inputs/Autocomplete/Autocomplete.d.ts +39 -0
- package/dist/Components/Inputs/Button/Button.d.ts +47 -0
- package/dist/Components/Inputs/Button/Button.parts.js +1 -1
- package/dist/Components/Inputs/Calendar/Calendar.d.ts +36 -0
- package/dist/Components/Inputs/Checkbox/Checkbox.d.ts +29 -0
- package/dist/Components/Inputs/Checkbox/Checkbox.parts.js +1 -1
- package/dist/Components/Inputs/CheckboxCard/CheckboxCard.d.ts +45 -0
- package/dist/Components/Inputs/CheckboxList/CheckboxList.d.ts +24 -0
- package/dist/Components/Inputs/CheckboxList/CheckboxList.js +1 -1
- package/dist/Components/Inputs/CheckboxListItem/CheckboxListItem.d.ts +43 -0
- package/dist/Components/Inputs/CheckboxListItem/CheckboxListItem.js +1 -1
- package/dist/Components/Inputs/ChoiceChip/ChoiceChip.d.ts +38 -0
- package/dist/Components/Inputs/CommentArea/CommentArea.d.ts +15 -0
- package/dist/Components/Inputs/FilterChip/FilterChip.d.ts +57 -0
- package/dist/Components/Inputs/FilterChip/FilterChip.js +1 -0
- package/dist/Components/Inputs/FilterChip/index.d.ts +2 -0
- package/dist/Components/Inputs/FilterChip/index.js +1 -0
- package/dist/Components/Inputs/FilterList/FilterList.d.ts +47 -6
- package/dist/Components/Inputs/FilterList/index.d.ts +1 -0
- package/dist/Components/Inputs/IconButton/IconButton.d.ts +31 -0
- package/dist/Components/Inputs/IconButtonDropdown/IconButtonDropdown.d.ts +31 -0
- package/dist/Components/Inputs/IconButtonDropdown/IconButtonDropdown.js +1 -1
- package/dist/Components/Inputs/Input/Input.d.ts +25 -0
- package/dist/Components/Inputs/InputChip/InputChip.d.ts +25 -0
- package/dist/Components/Inputs/List/List.d.ts +30 -0
- package/dist/Components/Inputs/MultiColumnList/MultiColumnList.d.ts +28 -0
- package/dist/Components/Inputs/MultiColumnList/MultiColumnList.parts.d.ts +81 -0
- package/dist/Components/Inputs/Radio/Radio.d.ts +27 -0
- package/dist/Components/Inputs/RadioCard/RadioCard.d.ts +44 -0
- package/dist/Components/Inputs/RadioCard/RadioCard.js +1 -1
- package/dist/Components/Inputs/RadioCard/RadioCard.parts.js +1 -1
- package/dist/Components/Inputs/RadioGroup/RadioGroup.d.ts +37 -0
- package/dist/Components/Inputs/RadioList/RadioList.d.ts +29 -0
- package/dist/Components/Inputs/RadioList/RadioList.js +1 -1
- package/dist/Components/Inputs/RadioList/parts/RadioListContainer.d.ts +7 -0
- package/dist/Components/Inputs/RadioList/parts/RadioListContainer.js +1 -0
- package/dist/Components/Inputs/RadioList/{RadioListItem.d.ts → parts/RadioListItem.d.ts} +1 -1
- package/dist/Components/Inputs/RadioList/parts/RadioListItem.js +2 -0
- package/dist/Components/Inputs/RadioList/parts/index.d.ts +2 -0
- package/dist/Components/Inputs/RangeSlider/RangeSlider.d.ts +36 -0
- package/dist/Components/Inputs/SearchField/SearchField.d.ts +38 -2
- package/dist/Components/Inputs/SearchField/SearchField.js +1 -1
- package/dist/Components/Inputs/SegmentedControl/SegmentedControl.d.ts +28 -0
- package/dist/Components/Inputs/Switch/Switch.d.ts +20 -0
- package/dist/Components/Inputs/TextButton/TextButton.d.ts +25 -0
- package/dist/Components/Inputs/TextButtonDropdown/TextButtonDropdown.d.ts +30 -0
- package/dist/Components/Inputs/TextButtonDropdown/TextButtonDropdown.js +2 -0
- package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.parts.d.ts → TextButtonDropdown/TextButtonDropdown.parts.d.ts} +1 -1
- package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.parts.js → TextButtonDropdown/TextButtonDropdown.parts.js} +1 -1
- package/dist/Components/Inputs/{TextButtonsDropdown/TextButtonsDropdown.types.d.ts → TextButtonDropdown/TextButtonDropdown.types.d.ts} +1 -1
- package/dist/Components/Inputs/TextButtonDropdown/index.d.ts +2 -0
- package/dist/Components/Inputs/TextField/TextField.d.ts +41 -0
- package/dist/Components/Inputs/TextFieldDropdown/TextFieldDropdown.d.ts +32 -0
- package/dist/Components/Inputs/TextFieldDropdown/TextFieldDropdown.js +1 -1
- package/dist/Components/Inputs/Textarea/Textarea.d.ts +38 -0
- package/dist/Components/Inputs/index.d.ts +3 -2
- package/dist/Components/Navigations/BoxTab/BoxTab.d.ts +26 -0
- package/dist/Components/Navigations/BoxTab/BoxTab.parts.d.ts +69 -0
- package/dist/Components/Navigations/Drawer/Drawer.d.ts +27 -0
- package/dist/Components/Navigations/GNBList/GNBList.d.ts +48 -0
- package/dist/Components/Navigations/GNBList/GNBList.parts.d.ts +33 -0
- package/dist/Components/Navigations/Menu/Menu.d.ts +41 -0
- package/dist/Components/Navigations/Pagination/Pagination.d.ts +23 -0
- package/dist/Components/Navigations/TableOfContents/TableOfContents.d.ts +24 -0
- package/dist/Components/Navigations/TextTab/TextTab.d.ts +29 -0
- package/dist/Components/Navigations/TextTab/TextTab.parts.d.ts +69 -0
- package/dist/Components/Utils/Modal/Modal.d.ts +33 -0
- package/dist/Components/Wrappers/WithBadge/WithBadge.d.ts +21 -0
- package/dist/Components/Wrappers/WithRichTooltip/WithRichTooltip.d.ts +29 -0
- package/dist/Components/Wrappers/WithRichTooltip/WithRichTooltip.js +1 -1
- package/dist/Components/Wrappers/WithSnackBar/WithSnackBar.d.ts +23 -0
- package/dist/Components/Wrappers/WithSnackBar/WithSnackBar.js +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useDropdown.d.ts +21 -0
- package/dist/hooks/useDropdown.js +1 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/Components/DataDisplays/ProcessIndicator/ProcessIndicator.js +0 -1
- package/dist/Components/DataDisplays/ProcessIndicator/index.d.ts +0 -2
- package/dist/Components/DataDisplays/ProcessIndicator/index.js +0 -1
- package/dist/Components/Inputs/RadioList/RadioListItem.js +0 -2
- package/dist/Components/Inputs/TextButtonsDropdown/TextButtonsDropdown.d.ts +0 -3
- package/dist/Components/Inputs/TextButtonsDropdown/TextButtonsDropdown.js +0 -2
- package/dist/Components/Inputs/TextButtonsDropdown/index.d.ts +0 -2
|
@@ -2,5 +2,11 @@ import { ComponentPropsWithoutRef, ElementType, PropsWithChildren } from 'react'
|
|
|
2
2
|
interface BoxProps extends PropsWithChildren<ComponentPropsWithoutRef<'div'>> {
|
|
3
3
|
as?: ElementType;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* @param {Object} props
|
|
7
|
+
* @param {ReactNode} props.children - 박스 내부에 렌더링할 컨텐츠
|
|
8
|
+
* @param {ElementType} [props.as='div'] - 렌더링할 HTML 요소
|
|
9
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
10
|
+
*/
|
|
5
11
|
declare const Box: import("react").ForwardRefExoticComponent<BoxProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
12
|
export default Box;
|
|
@@ -5,5 +5,15 @@ export interface ColumnProps extends PropsWithChildren {
|
|
|
5
5
|
size?: ColumnSize;
|
|
6
6
|
className?: string;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* 그리드 시스템 기반의 컬럼 레이아웃 컴포넌트
|
|
10
|
+
* @param {Object} props
|
|
11
|
+
* @param {boolean} [props.container] - 컨테이너 여부
|
|
12
|
+
* @param {number} [props.size] - 컬럼 크기 (1-11)
|
|
13
|
+
* @param {number} [props.leftColumnSize] - 왼쪽 컬럼 크기
|
|
14
|
+
* @param {number} [props.centerColumnSize] - 가운데 컬럼 크기
|
|
15
|
+
* @param {number} [props.rightColumnSize] - 오른쪽 컬럼 크기
|
|
16
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
17
|
+
*/
|
|
8
18
|
declare const Column: ({ container, size, className, children, }: ColumnProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
19
|
export default Column;
|
|
@@ -4,5 +4,13 @@ interface FullBleedProps extends ComponentPropsWithRef<'div'> {
|
|
|
4
4
|
insideContainerClassName?: string;
|
|
5
5
|
maxWidth?: string;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* 화면 전체 너비를 활용하는 레이아웃 컴포넌트
|
|
9
|
+
* @param {Object} props
|
|
10
|
+
* @param {ReactNode} props.children - 내부 컨텐츠
|
|
11
|
+
* @param {string} [props.maxWidth] - 최대 너비 설정
|
|
12
|
+
* @param {string} [props.className] - 외부 컨테이너 클래스
|
|
13
|
+
* @param {string} [props.insideContainerClassName] - 내부 컨테이너 클래스
|
|
14
|
+
*/
|
|
7
15
|
declare const FullBleed: import("react").ForwardRefExoticComponent<Omit<FullBleedProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
16
|
export default FullBleed;
|
|
@@ -1,3 +1,19 @@
|
|
|
1
1
|
import { GridLayoutProps } from './GridLayout.types';
|
|
2
|
+
/**
|
|
3
|
+
* GridLayout 컴포넌트는 그리드 시스템을 구현하는 레이아웃 컴포넌트입니다.
|
|
4
|
+
* 반응형 디자인을 지원하며 모바일, 태블릿, 데스크톱 환경에 따라 다른 그리드 영역을 적용할 수 있습니다.
|
|
5
|
+
* tailwind.config에 정의된 그리드 영역을 사용할 수 있습니다.
|
|
6
|
+
*
|
|
7
|
+
* @component
|
|
8
|
+
* @param {Object} props
|
|
9
|
+
* @param {React.ReactNode} props.children - 그리드 레이아웃 내부에 렌더링될 자식 요소
|
|
10
|
+
* @param {string} [props.gridTemplateAreaClass] - 커스텀 그리드 템플릿 영역을 정의하는 CSS 클래스
|
|
11
|
+
* @param {string} [props.testId] - 테스트를 위한 데이터 테스트 ID
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* <GridLayout gridTemplateAreaClass="custom-grid-areas">
|
|
15
|
+
* <div>Content</div>
|
|
16
|
+
* </GridLayout>
|
|
17
|
+
*/
|
|
2
18
|
declare const GridLayout: ({ children, gridTemplateAreaClass, testId, }: GridLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
19
|
export default GridLayout;
|
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { TypographyProps } from './Typography.types';
|
|
2
|
+
/**
|
|
3
|
+
* Typography
|
|
4
|
+
* @param {Object} props
|
|
5
|
+
* @param {React.ReactNode} props.children - Typography 내부에 들어갈 컨텐츠
|
|
6
|
+
* @param {string} props.variant - 텍스트 스타일 variant ('title1' | 'title2' | 'title3' | 'subTitle1' | 'subTitle2' | 'contents1' | 'contents2' | 'body1' | 'body2' | 'body3' | 'caption1' | 'caption2')
|
|
7
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
8
|
+
* @param {keyof JSX.IntrinsicElements} [props.as='span'] - 렌더링할 HTML 요소
|
|
9
|
+
*/
|
|
2
10
|
declare const Typography: ({ children, variant, className, as, ...rest }: TypographyProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
11
|
export default Typography;
|
|
@@ -1,3 +1,23 @@
|
|
|
1
1
|
import { BadgeType as BadgeProps } from '../../../types/badge.types';
|
|
2
|
+
/**
|
|
3
|
+
* 숫자를 표시하는 뱃지 컴포넌트
|
|
4
|
+
*
|
|
5
|
+
* @component
|
|
6
|
+
* @param {object} props
|
|
7
|
+
* @param {string | number} props.text - 뱃지에 표시될 텍스트 또는 숫자, 0을 보여줄 때에는 String이어야 함
|
|
8
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
9
|
+
* @param {'primary' | 'white_primary' | 'white_gray' | 'gray'} [props.variant='primary'] - 뱃지의 스타일 변형
|
|
10
|
+
* @param {boolean} [props.showZero=false] - 값이 0일 때 뱃지를 표시할지 여부
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // 기본 사용법
|
|
14
|
+
* <CountBadge text="5" />
|
|
15
|
+
*
|
|
16
|
+
* // 0 표시하기
|
|
17
|
+
* <CountBadge text="0" showZero={true} />
|
|
18
|
+
*
|
|
19
|
+
* // 다른 스타일 변형 사용
|
|
20
|
+
* <CountBadge text="10" variant="white_primary" />
|
|
21
|
+
*/
|
|
2
22
|
declare const CountBadge: ({ text, className, variant, showZero, }: BadgeProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
23
|
export default CountBadge;
|
|
@@ -3,5 +3,23 @@ export interface DividerProps {
|
|
|
3
3
|
isSub?: boolean;
|
|
4
4
|
className?: string;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* 콘텐츠 사이에 시각적 구분선을 생성하는 컴포넌트
|
|
8
|
+
* @param {Object} props
|
|
9
|
+
* @param {boolean} [props.isVertical=false] - true일 경우 세로 구분선, false일 경우 가로 구분선
|
|
10
|
+
* @param {boolean} [props.isSub=false] - true일 경우 연한 회색, false일 경우 진한 회색 사용
|
|
11
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
12
|
+
* @returns {JSX.Element} 구분선 요소
|
|
13
|
+
* @example
|
|
14
|
+
* // 가로 구분선
|
|
15
|
+
* <Divider />
|
|
16
|
+
*
|
|
17
|
+
* // 세로 구분선
|
|
18
|
+
* <Divider isVertical />
|
|
19
|
+
*
|
|
20
|
+
* // 연한 회색의 구분선
|
|
21
|
+
* <Divider isSub />
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
6
24
|
declare const Divider: ({ isVertical, isSub, className, }: DividerProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
25
|
export default Divider;
|
|
@@ -2,5 +2,23 @@ export type ImageLabelType = 'new_circle' | 'new' | 'beta' | 'ai';
|
|
|
2
2
|
export interface ImageLabelProps {
|
|
3
3
|
type: ImageLabelType;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* 이미지에 오버레이되는 라벨을 표시하는 컴포넌트
|
|
7
|
+
* @param {('new_circle'|'new'|'beta'|'ai')} props.type - 표시할 라벨의 타입
|
|
8
|
+
* @returns {JSX.Element} 라벨 컴포넌트
|
|
9
|
+
* @example
|
|
10
|
+
* // NEW 원형 라벨
|
|
11
|
+
* <ImageLabel type="new_circle" />
|
|
12
|
+
*
|
|
13
|
+
* // NEW 라벨
|
|
14
|
+
* <ImageLabel type="new" />
|
|
15
|
+
*
|
|
16
|
+
* // BETA 라벨
|
|
17
|
+
* <ImageLabel type="beta" />
|
|
18
|
+
*
|
|
19
|
+
* // AI 라벨
|
|
20
|
+
* <ImageLabel type="ai" />
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
5
23
|
declare const ImageLabel: ({ type }: ImageLabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
24
|
export default ImageLabel;
|
|
@@ -9,6 +9,36 @@ export interface LabelRootProps extends ComponentProps<'div'> {
|
|
|
9
9
|
export interface LabelIconProps extends ComponentProps<'div'> {
|
|
10
10
|
icon?: SystemIconName;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* @module Label
|
|
14
|
+
* @description 레이블을 구성하는 컴포넌트들의 집합입니다.
|
|
15
|
+
* @property {Component} Root - 레이블의 컨테이너 컴포넌트
|
|
16
|
+
* @property {Component} Text - 레이블의 텍스트 컴포넌트
|
|
17
|
+
* @property {Component} Icon - 레이블의 아이콘 컴포넌트
|
|
18
|
+
* @example
|
|
19
|
+
* // 기본 텍스트 레이블
|
|
20
|
+
* <Label.Root>
|
|
21
|
+
* <Label.Text>Basic Label</Label.Text>
|
|
22
|
+
* </Label.Root>
|
|
23
|
+
*
|
|
24
|
+
* // 아이콘이 있는 primary filled 레이블
|
|
25
|
+
* <Label.Root type="filled" variant="primary">
|
|
26
|
+
* <Label.Icon icon="check" />
|
|
27
|
+
* <Label.Text>Status Complete</Label.Text>
|
|
28
|
+
* </Label.Root>
|
|
29
|
+
*
|
|
30
|
+
* // 작은 크기의 회색 outlined 레이블
|
|
31
|
+
* <Label.Root type="outlined" variant="gray" size="sm">
|
|
32
|
+
* <Label.Text>Draft</Label.Text>
|
|
33
|
+
* </Label.Root>
|
|
34
|
+
*
|
|
35
|
+
* // 호버 효과가 있는 양쪽 아이콘 레이블
|
|
36
|
+
* <Label.Root type="filled" canHover>
|
|
37
|
+
* <Label.Icon icon="calendar" />
|
|
38
|
+
* <Label.Text>Schedule</Label.Text>
|
|
39
|
+
* <Label.Icon icon="chevronDown" />
|
|
40
|
+
* </Label.Root>
|
|
41
|
+
*/
|
|
12
42
|
declare const Label: {
|
|
13
43
|
Root: ({ children, className, size, type, variant, ref, canHover, ...rest }: LabelRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
44
|
Text: ({ children, className }: ComponentProps<'div'>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { NewBadgeProps } from './NewBadge.types';
|
|
3
|
+
/**
|
|
4
|
+
* 새로운 기능이나 콘텐츠를 표시하기 위한 작은 원형 뱃지 컴포넌트입니다.
|
|
5
|
+
*
|
|
6
|
+
* @component
|
|
7
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
8
|
+
* @param {string} [props.className] - 컴포넌트에 적용할 추가 CSS 클래스명
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // 기본 사용법
|
|
12
|
+
* <NewBadge />
|
|
13
|
+
*
|
|
14
|
+
* // 커스텀 클래스와 함께 사용
|
|
15
|
+
* <NewBadge className="custom-badge" />
|
|
16
|
+
*
|
|
17
|
+
* // 텍스트와 함께 사용
|
|
18
|
+
* <div>
|
|
19
|
+
* 새로운 기능 <NewBadge />
|
|
20
|
+
* </div>
|
|
21
|
+
*/
|
|
3
22
|
declare const NewBadge: React.FC<NewBadgeProps>;
|
|
4
23
|
export default NewBadge;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { ProductIconProps } from './ProductIcon.types';
|
|
2
|
+
/**
|
|
3
|
+
* 제품 아이콘을 표시하는 컴포넌트입니다.
|
|
4
|
+
*
|
|
5
|
+
* @param {Object} props - 컴포넌트 속성
|
|
6
|
+
* @param {ProductIconName} props.name - 표시할 아이콘의 이름
|
|
7
|
+
* @param {boolean} [props.disabled=false] - 아이콘의 비활성화 상태 여부
|
|
8
|
+
* @param {'small' | 'medium' | 'large'} [props.size] - 아이콘의 크기. 지정하지 않으면 아이콘 이름에 따라 자동으로 결정됨
|
|
9
|
+
* @returns {JSX.Element} 제품 아이콘 컴포넌트
|
|
10
|
+
*/
|
|
2
11
|
declare const ProductIcon: ({ name, disabled, size }: ProductIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
12
|
export default ProductIcon;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export interface
|
|
1
|
+
export interface ProgressIndicatorProps {
|
|
2
2
|
className?: string;
|
|
3
3
|
progressClassName?: string;
|
|
4
4
|
value: number;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* ProgressIndicator
|
|
8
8
|
* @param {Object} props
|
|
9
9
|
* @param {string} [props.className] - 컨테이너의 추가 클래스명
|
|
10
10
|
* @param {string} [props.progressClassName] - 프로그레스 바의 추가 클래스명
|
|
11
11
|
* @param {number} props.value - 진행률 값 (0-100 사이의 숫자)
|
|
12
12
|
*/
|
|
13
|
-
declare const
|
|
14
|
-
export default
|
|
13
|
+
declare const ProgressIndicator: ({ className, progressClassName, value, }: ProgressIndicatorProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export default ProgressIndicator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var s=require("react/jsx-runtime"),r=require("tailwind-merge");module.exports=function(e){var a=e.className,t=e.progressClassName,e=e.value,e=Math.min(100,Math.max(0,e)),e={"--progress":"".concat(e-100,"%")};return s.jsx("div",{"data-testid":"design-system-progress-indicator",className:r.twMerge("h-1 w-full overflow-hidden rounded-full",a),children:s.jsx("div",{className:"h-full bg-w-gray-100","data-testid":"design-system-progress-indicator--background",children:s.jsx("div",{"data-testid":"design-system-progress-indicator--progress",className:r.twMerge("h-full translate-x-[var(--progress)] bg-primary transition-transform !duration-500",t),style:e})})})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var r=require("./ProgressIndicator.js");module.exports=r;
|
|
@@ -4,5 +4,23 @@ interface ServiceLogoProps {
|
|
|
4
4
|
className?: string;
|
|
5
5
|
variant?: 'default' | 'disabled' | 'bluegray' | 'white';
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* 서비스 로고를 표시하는 컴포넌트입니다.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} props
|
|
11
|
+
* @param {ServiceLogoNames} props.name - 표시할 서비스 로고의 이름
|
|
12
|
+
* @param {string} [props.className] - 로고에 적용할 추가 CSS 클래스
|
|
13
|
+
* @param {('default'|'disabled'|'bluegray'|'white')} [props.variant='default'] - 로고의 색상 변형 '_symbol' postfix를 가지는 name일 때에만 사용 가능 ('default'|'disabled'|'bluegray'|'white')
|
|
14
|
+
* @returns {JSX.Element|null} 서비스 로고 컴포넌트 또는 로고를 찾을 수 없는 경우 null
|
|
15
|
+
* @example
|
|
16
|
+
* // 기본 사용법
|
|
17
|
+
* <ServiceLogo name="wishket_symbol" />
|
|
18
|
+
*
|
|
19
|
+
* // 커스텀 클래스와 함께 사용
|
|
20
|
+
* <ServiceLogo name="wishket_symbol" className="custom-logo" />
|
|
21
|
+
*
|
|
22
|
+
* // 버튼 색상 변형 사용
|
|
23
|
+
* <ServiceLogo name="wishket_symbol" variant="bluegray" />
|
|
24
|
+
*/
|
|
7
25
|
declare const ServiceLogo: ({ name, className, variant, }: ServiceLogoProps) => import("react/jsx-runtime").JSX.Element | undefined;
|
|
8
26
|
export default ServiceLogo;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} SkillLabel
|
|
3
|
+
* @property {React.ComponentType} Root - 스킬 라벨의 루트 컨테이너 컴포넌트
|
|
4
|
+
* @property {React.ComponentType} Icon - 스킬 라벨에 표시되는 아이콘 컴포넌트
|
|
5
|
+
* @property {React.ComponentType} Text - 스킬 라벨의 텍스트 컴포넌트
|
|
6
|
+
*/
|
|
1
7
|
/// <reference types="react" />
|
|
2
8
|
declare const SkillLabel: {
|
|
3
9
|
Root: ({ children, className }: import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 스킬 라벨의 루트 컴포넌트입니다.
|
|
4
|
+
* 스킬 아이콘과 텍스트를 포함하는 컨테이너 역할을 합니다.
|
|
5
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
6
|
+
* @param {ReactNode} props.children - 자식 요소
|
|
7
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
8
|
+
*/
|
|
2
9
|
declare const Root: ({ children, className }: ComponentProps<'div'>) => import("react/jsx-runtime").JSX.Element;
|
|
3
10
|
export interface IconProps extends ComponentProps<'div'> {
|
|
4
11
|
iconUrl: string;
|
|
5
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 스킬 라벨에 표시되는 아이콘 컴포넌트입니다.
|
|
15
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
16
|
+
* @param {string} props.iconUrl - 아이콘 이미지의 URL
|
|
17
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
18
|
+
*/
|
|
6
19
|
declare const Icon: ({ className, iconUrl }: IconProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
/**
|
|
21
|
+
* 스킬 라벨에 표시되는 텍스트 컴포넌트입니다.
|
|
22
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
23
|
+
* @param {ReactNode} props.children - 표시할 텍스트 내용
|
|
24
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
25
|
+
*/
|
|
7
26
|
declare const Text: ({ children, className }: ComponentProps<'span'>) => import("react/jsx-runtime").JSX.Element;
|
|
8
27
|
export { Root, Icon, Text };
|
|
@@ -1,3 +1,32 @@
|
|
|
1
1
|
import { SystemIconProps } from './SystemIcon.types';
|
|
2
|
+
/**
|
|
3
|
+
* 시스템 아이콘을 표시하는 컴포넌트입니다.
|
|
4
|
+
* 크기별(small, medium, large) 및 소셜 아이콘을 지원합니다.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} props - 컴포넌트 속성
|
|
7
|
+
* @param {string} props.name - 아이콘의 이름 (예: 'small_close', 'medium_check', 'large_arrow')
|
|
8
|
+
* @param {string} [props.testId] - 테스트를 위한 ID
|
|
9
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스
|
|
10
|
+
* @param {boolean} [props.solid=false] - 아이콘을 실선으로 표시할지 여부
|
|
11
|
+
* @param {Function} [props.onClick] - 클릭 이벤트 핸들러
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // 기본 사용법
|
|
15
|
+
* <SystemIcon name="small_close" />
|
|
16
|
+
*
|
|
17
|
+
* // 커스텀 클래스와 함께 사용
|
|
18
|
+
* <SystemIcon
|
|
19
|
+
* name="medium_check"
|
|
20
|
+
* className="text-blue-500"
|
|
21
|
+
* solid={true}
|
|
22
|
+
* />
|
|
23
|
+
*
|
|
24
|
+
* // 클릭 이벤트와 함께 사용
|
|
25
|
+
* <SystemIcon
|
|
26
|
+
* name="large_arrow"
|
|
27
|
+
* onClick={() => console.log('아이콘 클릭됨')}
|
|
28
|
+
* testId="arrow-icon"
|
|
29
|
+
* />
|
|
30
|
+
*/
|
|
2
31
|
declare const SystemIcon: ({ name, testId, className, solid, onClick, }: SystemIconProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
32
|
export default SystemIcon;
|
|
@@ -9,4 +9,4 @@ export { default as SkillLabel } from './SkillLabel';
|
|
|
9
9
|
export { default as SystemIcon } from './SystemIcon';
|
|
10
10
|
export type { SystemIconName } from './SystemIcon';
|
|
11
11
|
export { default as Divider } from './Divider';
|
|
12
|
-
export { default as
|
|
12
|
+
export { default as ProgressIndicator } from './ProgressIndicator';
|
|
@@ -10,5 +10,19 @@ export interface DialogProps {
|
|
|
10
10
|
confirm?: string;
|
|
11
11
|
close?: string;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 다이얼로그 컴포넌트
|
|
15
|
+
* @param {Object} props
|
|
16
|
+
* @param {boolean} props.isOpen - 다이얼로그 표시 여부
|
|
17
|
+
* @param {string} [props.rootId] - 포털 루트 ID
|
|
18
|
+
* @param {string} props.title - 다이얼로그 제목
|
|
19
|
+
* @param {string} props.description - 다이얼로그 설명
|
|
20
|
+
* @param {'primary'|'caution'} [props.variant='primary'] - 다이얼로그 스타일
|
|
21
|
+
* @param {() => void} [props.onClose] - 닫기 핸들러
|
|
22
|
+
* @param {() => void} [props.onConfirm] - 확인 핸들러
|
|
23
|
+
* @param {string} [props.confirm] - 확인 버튼 텍스트
|
|
24
|
+
* @param {string} [props.close='닫기'] - 닫기 버튼 텍스트
|
|
25
|
+
* @param {boolean} [props.needCleanup=true] - 포털 정리 필요 여부
|
|
26
|
+
*/
|
|
13
27
|
declare const Dialog: ({ isOpen, rootId, title, description, variant, onClose, onConfirm, confirm, close, needCleanup, }: DialogProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
28
|
export default Dialog;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("tailwind-merge"),s=(require("../../../_virtual/_tslib.js"),require("react"),require("@wishket/yogokit"),require("../../DataDisplays/Avatar/Avatar.js"),require("../../Base/Typography/Typography.js")),t=require("../../Base/Layouts/Box/Box.js"),i=(require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../../DataDisplays/Label/Label.js"),require("../../DataDisplays/SystemIcon/Icons/Medium/MediumBell.js"),require("../../Inputs/AutoCompleteList/AutoCompleteList.parts.js"),require("../../Inputs/Input/Input.js"),require("../../Inputs/Input/PasswordInput.js"),require("../../Inputs/Input/LableInput.js"),require("../../Inputs/Input/InputTypeSelector.js"),require("../../Inputs/Button/Button.js"));require("../../Inputs/Calendar/Calendar.utils.js"),require("../../Inputs/Checkbox/Checkbox.js"),require("../../Inputs/ChoiceChip/ChoiceChip.js"),require("../../Inputs/Radio/Radio.js"),require("../../Inputs/TextField/TextField.js"),require("../../Inputs/CommentArea/CommentArea.js"),require("../../Inputs/MultiColumnList/MultiColumnList.parts.js"),module.exports=function(a){var u=a.title,l=a.description,o=a.variant,n=a.onClose,p=a.onConfirm,d=a.confirm,c=a.close,c=void 0===c?"닫기":c,a=a.testId,o="caution"===(void 0===o?"primary":o);return e.jsxs(t,{className:"flex h-fit flex-col items-center gap-8 rounded-3xl bg-w-white p-8 font-normal not-italic shadow-modal tablet:w-[400px]","data-testid":a||"design-system--dialog-box",children:[e.jsxs(t,{className:"flex w-full flex-col gap-6",children:[e.jsx(s,{variant:"subTitle2",className:"font-medium text-w-gray-900",children:u}),e.jsx(s,{variant:"body1",className:"whitespace-break-spaces text-w-gray-800",children:l})]}),e.jsxs(t,{className:"flex w-full items-center justify-end gap-4",children:[c&&e.jsx(i,{role:"close",onClick:n,variant:"solid",className:"border-w-bluegray-200 bg-w-bluegray-200 hover:border-w-bluegray-300 hover:bg-w-bluegray-300",children:c}),d&&e.jsx(i,{role:"confirm",onClick:p,variant:"solid",className:r.twJoin(o&&"border-w-orange-500 bg-w-orange-500 hover:border-w-orange-600 hover:bg-w-orange-600"),children:d})]})]})};
|
|
2
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("tailwind-merge"),s=(require("../../../_virtual/_tslib.js"),require("react"),require("@wishket/yogokit"),require("../../DataDisplays/Avatar/Avatar.js"),require("../../Base/Typography/Typography.js")),t=require("../../Base/Layouts/Box/Box.js"),i=(require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../../DataDisplays/Label/Label.js"),require("../../DataDisplays/SystemIcon/Icons/Medium/MediumBell.js"),require("../../Inputs/AutoCompleteList/AutoCompleteList.parts.js"),require("../../Inputs/Input/Input.js"),require("../../Inputs/Input/PasswordInput.js"),require("../../Inputs/Input/LableInput.js"),require("../../Inputs/Input/InputTypeSelector.js"),require("../../Inputs/Button/Button.js"));require("../../Inputs/Calendar/Calendar.utils.js"),require("../../Inputs/Checkbox/Checkbox.js"),require("../../Inputs/ChoiceChip/ChoiceChip.js"),require("../../Inputs/Radio/Radio.js"),require("../../Inputs/TextField/TextField.js"),require("../../Inputs/CommentArea/CommentArea.js"),require("../../Inputs/MultiColumnList/MultiColumnList.parts.js"),require("../../Inputs/FilterChip/FilterChip.js"),module.exports=function(a){var u=a.title,l=a.description,o=a.variant,n=a.onClose,p=a.onConfirm,d=a.confirm,c=a.close,c=void 0===c?"닫기":c,a=a.testId,o="caution"===(void 0===o?"primary":o);return e.jsxs(t,{className:"flex h-fit flex-col items-center gap-8 rounded-3xl bg-w-white p-8 font-normal not-italic shadow-modal tablet:w-[400px]","data-testid":a||"design-system--dialog-box",children:[e.jsxs(t,{className:"flex w-full flex-col gap-6",children:[e.jsx(s,{variant:"subTitle2",className:"font-medium text-w-gray-900",children:u}),e.jsx(s,{variant:"body1",className:"whitespace-break-spaces text-w-gray-800",children:l})]}),e.jsxs(t,{className:"flex w-full items-center justify-end gap-4",children:[c&&e.jsx(i,{role:"close",onClick:n,variant:"solid",className:"border-w-bluegray-200 bg-w-bluegray-200 hover:border-w-bluegray-300 hover:bg-w-bluegray-300",children:c}),d&&e.jsx(i,{role:"confirm",onClick:p,variant:"solid",className:r.twJoin(o&&"border-w-orange-500 bg-w-orange-500 hover:border-w-orange-600 hover:bg-w-orange-600"),children:d})]})]})};
|
|
@@ -10,5 +10,30 @@ export declare class LoadingManager {
|
|
|
10
10
|
unregister(id: string): void;
|
|
11
11
|
getIsLastIndex(id: string): boolean;
|
|
12
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* 전역 로딩 인디케이터 컴포넌트입니다.
|
|
15
|
+
* 화면 중앙에 로딩 스피너를 표시하며, 여러 개의 로딩 인디케이터가 동시에 존재할 경우
|
|
16
|
+
* 가장 마지막에 생성된 인디케이터만 표시됩니다.
|
|
17
|
+
*
|
|
18
|
+
* @component
|
|
19
|
+
* @param {GlobalLoadingIndicatorProps} props
|
|
20
|
+
* @param {string} [props.size='md'] - 로딩 인디케이터의 크기. 'sm' | 'md' | 'lg' 중 선택
|
|
21
|
+
* @param {string} [props.color='primary'] - 로딩 인디케이터의 색상. 'primary' | 'secondary' | 'white' 등 theme에 정의된 색상
|
|
22
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스명
|
|
23
|
+
* @param {string} [props.testId] - 테스트를 위한 ID
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* // 기본 사용법
|
|
27
|
+
* <GlobalLoadingIndicator />
|
|
28
|
+
*
|
|
29
|
+
* // 크기 지정
|
|
30
|
+
* <GlobalLoadingIndicator size="lg" />
|
|
31
|
+
*
|
|
32
|
+
* // 색상 지정
|
|
33
|
+
* <GlobalLoadingIndicator color="blue" />
|
|
34
|
+
*
|
|
35
|
+
* // 클래스명 추가
|
|
36
|
+
* <GlobalLoadingIndicator className="custom-class" />
|
|
37
|
+
*/
|
|
13
38
|
declare const GlobalLoadingIndicator: (props: GlobalLoadingIndicatorProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
14
39
|
export default GlobalLoadingIndicator;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { LoadingIndicatorProps } from './LoadingIndicator.types';
|
|
3
|
+
/**
|
|
4
|
+
* 로딩 상태를 표시하는 애니메이션 인디케이터 컴포넌트입니다.
|
|
5
|
+
* 세 개의 점이 순차적으로 페이드 인/아웃되는 애니메이션을 보여줍니다.
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
8
|
+
* @param {boolean} [props.isFixed=false] - true일 경우 position: fixed, false일 경우 position: absolute로 설정됩니다.
|
|
9
|
+
* @param {('sm'|'md'|'lg')} [props.size='md'] - 로딩 인디케이터의 크기를 설정합니다.
|
|
10
|
+
* @param {string} [props.className] - 추가적인 CSS 클래스를 적용할 수 있습니다.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // 기본 사용
|
|
14
|
+
* <LoadingIndicator />
|
|
15
|
+
*
|
|
16
|
+
* // 고정 위치에 큰 크기로 표시
|
|
17
|
+
* <LoadingIndicator isFixed size="lg" />
|
|
18
|
+
*
|
|
19
|
+
* // 커스텀 클래스 적용
|
|
20
|
+
* <LoadingIndicator className="text-blue-500" />
|
|
21
|
+
*/
|
|
3
22
|
declare const LoadingIndicator: React.FC<LoadingIndicatorProps>;
|
|
4
23
|
export default LoadingIndicator;
|
|
@@ -7,5 +7,47 @@ export interface MessageBarProps {
|
|
|
7
7
|
buttonName?: string;
|
|
8
8
|
onClick?: () => void;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* 사용자에게 정보를 표시하는 메시지 바 컴포넌트입니다.
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} props
|
|
16
|
+
* @param {'primary' | 'white'} props.variant - 메시지 바의 스타일 변형. 'primary' 또는 'white' 중 선택
|
|
17
|
+
* @param {(typeof MediumProductIconNames)[number]} props.icon - 메시지 바에 표시될 ProductIcon 이름
|
|
18
|
+
* ('person_smile', 'lock', 'logout', 'contract_pen', 'paper_pen', 'paper_hold' 등)
|
|
19
|
+
* @param {string} [props.title] - 메시지 바의 제목 (선택사항)
|
|
20
|
+
* @param {string} props.text - 메시지 바에 표시될 본문 텍스트
|
|
21
|
+
* @param {string} [props.buttonName] - 버튼에 표시될 텍스트 (선택사항)
|
|
22
|
+
* @param {() => void} [props.onClick] - 버튼 클릭 시 실행될 콜백 함수 (선택사항)
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // 기본 사용 예시
|
|
26
|
+
* <MessageBar
|
|
27
|
+
* variant="primary"
|
|
28
|
+
* icon="person_smile"
|
|
29
|
+
* title="알림"
|
|
30
|
+
* text="새로운 메시지가 도착했습니다."
|
|
31
|
+
* buttonName="확인"
|
|
32
|
+
* onClick={() => console.log('버튼이 클릭되었습니다')}
|
|
33
|
+
* />
|
|
34
|
+
*
|
|
35
|
+
* // 제목과 버튼이 없는 간단한 메시지
|
|
36
|
+
* <MessageBar
|
|
37
|
+
* variant="white"
|
|
38
|
+
* icon="paper_pen"
|
|
39
|
+
* text="작업이 성공적으로 완료되었습니다."
|
|
40
|
+
* />
|
|
41
|
+
*
|
|
42
|
+
* // 보안 관련 메시지
|
|
43
|
+
* <MessageBar
|
|
44
|
+
* variant="primary"
|
|
45
|
+
* icon="lock"
|
|
46
|
+
* title="보안 알림"
|
|
47
|
+
* text="계정의 보안을 위해 비밀번호를 변경해주세요."
|
|
48
|
+
* buttonName="비밀번호 변경"
|
|
49
|
+
* onClick={() => handlePasswordChange()}
|
|
50
|
+
* />
|
|
51
|
+
*/
|
|
10
52
|
declare const MessageBar: ({ variant, icon, title, text, buttonName, onClick, }: MessageBarProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
53
|
export default MessageBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),s=require("tailwind-merge"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),s=require("tailwind-merge"),r=require("../../Base/Typography/Typography.js"),t=require("../../Base/Layouts/Box/Box.js"),i=(require("../../Base/Layouts/FullBleed/FullBleed.js"),require("../../../_virtual/_tslib.js"),require("react"),require("@wishket/yogokit"),require("../../DataDisplays/Avatar/Avatar.js"),require("../../DataDisplays/Label/Label.js"),require("../../DataDisplays/ProductIcon/ProductIcon.js")),a=(require("../../DataDisplays/SystemIcon/Icons/Medium/MediumBell.js"),require("../../Inputs/AutoCompleteList/AutoCompleteList.parts.js"),require("../../Inputs/Input/Input.js"),require("../../Inputs/Input/PasswordInput.js"),require("../../Inputs/Input/LableInput.js"),require("../../Inputs/Input/InputTypeSelector.js"),require("../../Inputs/Button/Button.js"));require("../../Inputs/Calendar/Calendar.utils.js"),require("../../Inputs/Checkbox/Checkbox.js"),require("../../Inputs/ChoiceChip/ChoiceChip.js"),require("../../Inputs/Radio/Radio.js"),require("../../Inputs/TextField/TextField.js"),require("../../Inputs/CommentArea/CommentArea.js"),require("../../Inputs/MultiColumnList/MultiColumnList.parts.js"),require("../../Inputs/FilterChip/FilterChip.js"),module.exports=function(u){var n=u.variant,n=void 0===n?"primary":n,l=u.icon,o=u.title,p=u.text,d=u.buttonName,u=u.onClick;return e.jsxs(t,{"data-testid":"design-system-message-bar",className:s.twMerge("flex w-full items-center gap-5 rounded-2xl border px-8 py-5","primary"===n&&"border-primary-100 bg-primary-10","white"===n&&"border-w-gray-200 bg-white"),children:[e.jsx(t,{className:"shrink-0","data-testid":"design-system-message-bar--icon",children:e.jsx(i,{name:l,size:"medium"})}),e.jsxs(t,{className:"flex w-full flex-col gap-1",children:[o&&e.jsx(r,{variant:"subTitle2",className:"font-medium text-w-gray-900","data-testid":"design-system-message-bar--title",children:o}),e.jsx(r,{variant:"body2",className:"text-w-gray-600","data-testid":"design-system-message-bar--text",children:p})]}),d&&u&&e.jsx(a,{variant:"outlined",size:"sm",className:"shrink-0",onClick:u,"data-testid":"design-system-message-bar--button",children:d})]})};
|
|
@@ -7,5 +7,40 @@ interface MessageBoxProps extends PropsWithChildren {
|
|
|
7
7
|
description?: string;
|
|
8
8
|
links?: ExternalLink[];
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* 아이콘, 제목, 설명, 외부 링크 등을 포함할 수 있는 메시지 박스 컴포넌트입니다.
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
* @param {Object} props - 컴포넌트 프로퍼티
|
|
15
|
+
* @param {ProductIconName} [props.icon] - 메시지 박스 상단에 표시될 아이콘
|
|
16
|
+
* @param {string} [props.title] - 메시지 박스의 제목
|
|
17
|
+
* @param {string} [props.description] - 메시지 박스의 설명 텍스트
|
|
18
|
+
* @param {ExternalLink[]} [props.links] - 메시지 박스 하단에 표시될 외부 링크 목록
|
|
19
|
+
* @param {React.ReactNode} [props.children] - 메시지 박스 내부에 표시될 자식 컴포넌트
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // 기본 사용 예시
|
|
23
|
+
* <MessageBox
|
|
24
|
+
* icon="info"
|
|
25
|
+
* title="알림 메시지"
|
|
26
|
+
* description="중요한 안내사항입니다."
|
|
27
|
+
* />
|
|
28
|
+
*
|
|
29
|
+
* // 외부 링크가 포함된 예시
|
|
30
|
+
* <MessageBox
|
|
31
|
+
* icon="warning"
|
|
32
|
+
* title="주의사항"
|
|
33
|
+
* description="다음 링크를 확인해주세요."
|
|
34
|
+
* links={[
|
|
35
|
+
* {
|
|
36
|
+
* text: "자세히 보기",
|
|
37
|
+
* href: "https://example.com",
|
|
38
|
+
* external: true
|
|
39
|
+
* }
|
|
40
|
+
* ]}
|
|
41
|
+
* >
|
|
42
|
+
* <CustomContent />
|
|
43
|
+
* </MessageBox>
|
|
44
|
+
*/
|
|
10
45
|
declare const MessageBox: ({ icon, title, description, children, links, }: MessageBoxProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
46
|
export default MessageBox;
|
|
@@ -1,10 +1,44 @@
|
|
|
1
1
|
import { ComponentProps, ReactNode } from 'react';
|
|
2
|
-
export interface
|
|
2
|
+
export interface PlainTooltipProps extends ComponentProps<'div'> {
|
|
3
3
|
variant?: 'up' | 'down' | 'left' | 'right';
|
|
4
4
|
text?: string;
|
|
5
5
|
children?: ReactNode;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
tooltipClassName?: string;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* 마우스 호버 시 툴팁을 표시하는 컴포넌트입니다.
|
|
11
|
+
*
|
|
12
|
+
* @component
|
|
13
|
+
* @param {Object} props
|
|
14
|
+
* @param {'up' | 'down' | 'left' | 'right'} [props.variant='up'] - 툴팁이 표시될 방향
|
|
15
|
+
* @param {string} [props.text] - 툴팁에 표시될 텍스트
|
|
16
|
+
* @param {ReactNode} [props.children] - 툴팁을 표시할 대상 요소
|
|
17
|
+
* @param {string} [props.className] - 최상위 컨테이너에 적용할 추가 클래스
|
|
18
|
+
* @param {boolean} [props.disabled=false] - 툴팁 비활성화 여부
|
|
19
|
+
* @param {string} [props.tooltipClassName] - 툴팁 컨테이너에 적용할 추가 클래스
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // 기본 사용법
|
|
23
|
+
* <PlainTooltip text="도움말 내용">
|
|
24
|
+
* <button>마우스를 올려보세요</button>
|
|
25
|
+
* </PlainTooltip>
|
|
26
|
+
*
|
|
27
|
+
* // 방향 지정
|
|
28
|
+
* <PlainTooltip
|
|
29
|
+
* variant="right"
|
|
30
|
+
* text="오른쪽에 표시되는 툴팁"
|
|
31
|
+
* >
|
|
32
|
+
* <span>도움말</span>
|
|
33
|
+
* </PlainTooltip>
|
|
34
|
+
*
|
|
35
|
+
* // 비활성화
|
|
36
|
+
* <PlainTooltip
|
|
37
|
+
* text="이 툴팁은 표시되지 않습니다"
|
|
38
|
+
* disabled={true}
|
|
39
|
+
* >
|
|
40
|
+
* <div>비활성화된 툴팁</div>
|
|
41
|
+
* </PlainTooltip>
|
|
42
|
+
*/
|
|
43
|
+
declare const PlainTooltip: ({ variant, text, children, className, disabled, tooltipClassName, }: PlainTooltipProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
44
|
export default PlainTooltip;
|