@wishket/design-system 1.17.2 → 1.17.3
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/README.md +13 -0
- package/dist/Components/Base/TextWithIcons/TextWithIcons.d.ts +10 -0
- package/dist/Components/Base/TextWithIcons/TextWithIcons.js +2 -0
- package/dist/Components/Base/TextWithIcons/index.d.ts +1 -0
- package/dist/Components/DataDisplays/Accordion/Accordion.d.ts +33 -0
- package/dist/Components/DataDisplays/Accordion/Accordion.js +58 -0
- package/dist/Components/DataDisplays/Accordion/index.d.ts +1 -0
- package/dist/Components/DataDisplays/index.d.ts +1 -0
- package/dist/Components/Feedbacks/MessageBar/MessageBar.js +5 -5
- package/dist/Components/Feedbacks/MessageBox/MessageBox.js +6 -6
- package/dist/Components/Feedbacks/MessageBox/MessageBox.parts.js +2 -2
- package/dist/Components/Feedbacks/SnackBar/SnackBar.js +10 -10
- package/dist/Components/Inputs/AutoCompleteList/AutoCompleteList.js +3 -3
- package/dist/Components/Inputs/Autocomplete/Autocomplete.js +1 -1
- package/dist/Components/Inputs/Button/Button.parts.js +1 -1
- package/dist/Components/Inputs/Calendar/Calendar.js +6 -6
- package/dist/Components/Inputs/Calendar/Calendar.parts.js +1 -1
- package/dist/Components/Inputs/Checkbox/Checkbox.js +5 -5
- package/dist/Components/Inputs/Checkbox/Checkbox.parts.d.ts +1 -1
- package/dist/Components/Inputs/Checkbox/Checkbox.parts.js +2 -4
- package/dist/Components/Inputs/CheckboxCard/CheckboxCard.d.ts +2 -2
- package/dist/Components/Inputs/CheckboxCard/CheckboxCard.js +6 -6
- package/dist/Components/Inputs/CheckboxCard/CheckboxCard.parts.js +2 -2
- package/dist/Components/Inputs/ChoiceChip/ChoiceChip.js +3 -3
- package/dist/Components/Inputs/CommentArea/CommentArea.js +9 -9
- package/dist/Components/Inputs/FilterChip/FilterChip.js +5 -5
- package/dist/Components/Inputs/FilterList/FilterList.js +5 -5
- package/dist/Components/Inputs/IconButtonDropdown/IconButtonDropdown.js +3 -3
- package/dist/Components/Inputs/Input/LabelInput.d.ts +9 -0
- package/dist/Components/Inputs/Input/{LableInput.js → LabelInput.js} +4 -4
- package/dist/Components/Inputs/Input/PasswordInput.js +1 -1
- package/dist/Components/Inputs/Input/index.d.ts +2 -2
- package/dist/Components/Inputs/InputChip/InputChip.js +3 -3
- package/dist/Components/Inputs/List/List.js +4 -4
- package/dist/Components/Inputs/Radio/Radio.d.ts +14 -8
- package/dist/Components/Inputs/Radio/Radio.js +20 -14
- package/dist/Components/Inputs/Radio/index.d.ts +1 -1
- package/dist/Components/Inputs/Radio/types.d.ts +8 -0
- package/dist/Components/Inputs/RadioCard/RadioCard.js +6 -6
- package/dist/Components/Inputs/RadioCard/RadioCard.parts.d.ts +3 -3
- package/dist/Components/Inputs/RadioCard/RadioCard.parts.js +4 -4
- package/dist/Components/Inputs/RadioCard/RadioCard.types.d.ts +8 -8
- package/dist/Components/Inputs/RadioGroup/RadioGroup.d.ts +3 -3
- package/dist/Components/Inputs/RadioGroup/RadioGroup.js +2 -2
- package/dist/Components/Inputs/RadioList/RadioList.d.ts +2 -2
- package/dist/Components/Inputs/RadioList/RadioList.js +2 -2
- package/dist/Components/Inputs/RadioList/RadioList.types.d.ts +3 -2
- package/dist/Components/Inputs/RadioList/parts/RadioListItem.d.ts +4 -7
- package/dist/Components/Inputs/RadioList/parts/RadioListItem.js +3 -3
- package/dist/Components/Inputs/SearchField/SearchField.js +4 -4
- package/dist/Components/Inputs/TextButton/TextButton.js +3 -4
- package/dist/Components/Inputs/TextButtonDropdown/TextButtonDropdown.parts.js +1 -1
- package/dist/Components/Inputs/TextField/TextField.d.ts +6 -6
- package/dist/Components/Inputs/TextField/TextField.js +7 -7
- package/dist/Components/Inputs/TextFieldContainer/TextFieldContainer.js +1 -1
- package/dist/Components/Inputs/TextFieldDropdown/TextFieldDropdown.parts.js +3 -3
- package/dist/Components/Inputs/Textarea/Textarea.js +3 -3
- package/dist/Components/Navigations/GNBList/GNBList.parts.js +1 -1
- package/dist/Components/Navigations/Menu/Menu.js +3 -3
- package/dist/Components/Navigations/Pagination/Pagination.parts.js +1 -1
- package/dist/Components/Navigations/TextLink/TextLink.d.ts +66 -0
- package/dist/Components/Navigations/TextLink/TextLink.js +61 -0
- package/dist/Components/Navigations/TextLink/index.d.ts +1 -0
- package/dist/Components/Navigations/TextTab/TextTab.parts.js +5 -5
- package/dist/Components/Navigations/index.d.ts +1 -0
- package/dist/Components/Wrappers/WithBadge/WithBadge.js +2 -2
- package/dist/Components/Wrappers/WithRichTooltip/WithRichTooltip.js +3 -3
- package/dist/Components/Wrappers/WithSnackBar/WithSnackBar.js +1 -1
- package/dist/cjs/Components/Base/TextWithIcons/TextWithIcons.js +2 -0
- package/dist/cjs/Components/DataDisplays/Accordion/Accordion.js +58 -0
- package/dist/cjs/Components/Feedbacks/MessageBar/MessageBar.js +47 -5
- package/dist/cjs/Components/Feedbacks/MessageBox/MessageBox.js +38 -3
- package/dist/cjs/Components/Feedbacks/MessageBox/MessageBox.parts.js +1 -1
- package/dist/cjs/Components/Feedbacks/SnackBar/SnackBar.js +6 -6
- package/dist/cjs/Components/Inputs/AutoCompleteList/AutoCompleteList.js +1 -1
- package/dist/cjs/Components/Inputs/Autocomplete/Autocomplete.js +1 -1
- package/dist/cjs/Components/Inputs/Button/Button.parts.js +2 -2
- package/dist/cjs/Components/Inputs/Calendar/Calendar.js +5 -5
- package/dist/cjs/Components/Inputs/Calendar/Calendar.parts.js +1 -1
- package/dist/cjs/Components/Inputs/Checkbox/Checkbox.js +4 -4
- package/dist/cjs/Components/Inputs/Checkbox/Checkbox.parts.js +2 -4
- package/dist/cjs/Components/Inputs/CheckboxCard/CheckboxCard.js +4 -4
- package/dist/cjs/Components/Inputs/CheckboxCard/CheckboxCard.parts.js +4 -4
- package/dist/cjs/Components/Inputs/ChoiceChip/ChoiceChip.js +4 -4
- package/dist/cjs/Components/Inputs/CommentArea/CommentArea.js +8 -8
- package/dist/cjs/Components/Inputs/FilterChip/FilterChip.js +4 -3
- package/dist/cjs/Components/Inputs/FilterList/FilterList.js +1 -1
- package/dist/cjs/Components/Inputs/IconButtonDropdown/IconButtonDropdown.js +3 -3
- package/dist/cjs/Components/Inputs/Input/{LableInput.js → LabelInput.js} +4 -4
- package/dist/cjs/Components/Inputs/Input/PasswordInput.js +3 -3
- package/dist/cjs/Components/Inputs/InputChip/InputChip.js +2 -2
- package/dist/cjs/Components/Inputs/List/List.js +1 -1
- package/dist/cjs/Components/Inputs/Radio/Radio.js +21 -15
- package/dist/cjs/Components/Inputs/RadioCard/RadioCard.js +4 -4
- package/dist/cjs/Components/Inputs/RadioCard/RadioCard.parts.js +4 -4
- package/dist/cjs/Components/Inputs/RadioGroup/RadioGroup.js +3 -3
- package/dist/cjs/Components/Inputs/RadioList/RadioList.js +3 -3
- package/dist/cjs/Components/Inputs/RadioList/parts/RadioListItem.js +3 -3
- package/dist/cjs/Components/Inputs/SearchField/SearchField.js +4 -4
- package/dist/cjs/Components/Inputs/TextButton/TextButton.js +3 -4
- package/dist/cjs/Components/Inputs/TextButtonDropdown/TextButtonDropdown.parts.js +1 -1
- package/dist/cjs/Components/Inputs/TextField/TextField.js +7 -7
- package/dist/cjs/Components/Inputs/TextFieldContainer/TextFieldContainer.js +1 -1
- package/dist/cjs/Components/Inputs/TextFieldDropdown/TextFieldDropdown.parts.js +1 -1
- package/dist/cjs/Components/Inputs/Textarea/Textarea.js +5 -5
- package/dist/cjs/Components/Navigations/GNBList/GNBList.parts.js +1 -1
- package/dist/cjs/Components/Navigations/Menu/Menu.js +2 -2
- package/dist/cjs/Components/Navigations/Pagination/Pagination.parts.js +1 -1
- package/dist/cjs/Components/Navigations/TextLink/TextLink.js +61 -0
- package/dist/cjs/Components/Navigations/TextTab/TextTab.parts.js +3 -3
- package/dist/cjs/Components/Wrappers/WithBadge/WithBadge.js +1 -1
- package/dist/cjs/Components/Wrappers/WithRichTooltip/WithRichTooltip.js +2 -2
- package/dist/cjs/Components/Wrappers/WithSnackBar/WithSnackBar.js +2 -2
- package/dist/cjs/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/types/checkbox.types.d.ts +0 -2
- package/dist/types/index.d.ts +0 -1
- package/package.json +12 -12
- package/dist/Components/Inputs/Input/LableInput.d.ts +0 -9
- package/dist/Components/Inputs/Radio/Radio.types.d.ts +0 -8
- package/dist/types/radio.types.d.ts +0 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{twMerge as t}from"tailwind-merge";import{TextWithIcons as r}from"../../Base/TextWithIcons/TextWithIcons.js";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function i(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}
|
|
2
2
|
/**
|
|
3
3
|
* 텍스트 버튼 컴포넌트
|
|
4
4
|
*
|
|
@@ -23,6 +23,5 @@ import{jsxs as t,jsx as e}from"react/jsx-runtime";import{twMerge as r}from"tailw
|
|
|
23
23
|
* leadingIcon="search"
|
|
24
24
|
* trailingIcon="arrow-right"
|
|
25
25
|
* />
|
|
26
|
-
*/(t
|
|
27
|
-
return
|
|
28
|
-
/*#__PURE__*/e(i,{"data-testid":"design-system-text-button--text",className:"w-fit",children:/*#__PURE__*/e(o,{variant:y?"body2":"body1",className:"align-baseline font-medium text-primary-500",children:m})}),u&&/*#__PURE__*/e(i,{"data-testid":"design-system-text-button--icon--right",className:"w-fit",children:/*#__PURE__*/e(n,{name:u,className:"text-primary-500"})})]}))};export{l as TextButton};
|
|
26
|
+
*/(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const c=c=>{var{text:l,isTextSmall:a=!1,leadingIcon:s,trailingIcon:u}=c,f=i(c,["text","isTextSmall","leadingIcon","trailingIcon"]);/*#__PURE__*/
|
|
27
|
+
return e("button",o(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},o=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),o.forEach((function(t){n(e,t,r[t])}))}return e}({"data-testid":"design-system-text-button--container",className:t("flex min-h-6 w-fit items-center justify-center",a?"gap-x-0.5":"gap-x-1")},f),{children:/*#__PURE__*/e(r,{text:l,leadingIcon:s,trailingIcon:u,isTextSmall:a})}))};export{c as TextButton};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{twMerge as r,twJoin as n}from"tailwind-merge";import"react";import{SystemIcon as o}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as a}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const l=l=>{var{value:p,isListOpen:u,disabled:y,className:m}=l,b=c(l,["value","isListOpen","disabled","className"]);/*#__PURE__*/
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{twMerge as r,twJoin as n}from"tailwind-merge";import"react";import{SystemIcon as o}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as a}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/Accordion/Accordion.js";function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const l=l=>{var{value:p,isListOpen:u,disabled:y,className:m}=l,b=c(l,["value","isListOpen","disabled","className"]);/*#__PURE__*/
|
|
2
2
|
return e("button",i(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){s(e,t,r[t])}))}return e}({type:"button",className:r("flex items-center gap-2 outline-none",y?"cursor-not-allowed":"cursor-pointer",m),disabled:y},b),{children:[
|
|
3
3
|
/*#__PURE__*/t(a,{variant:"body1",className:r("text-w-gray-600",y&&"text-w-gray-300"),children:p}),
|
|
4
4
|
/*#__PURE__*/t("span",{className:n("transition-transform duration-300",u&&"rotate-180"),children:/*#__PURE__*/t(o,{name:"medium_arrow_down",className:r("text-w-gray-600",y&&"text-w-gray-300")})})]}))};export{l as TextButton};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef } from 'react';
|
|
2
2
|
import { MediumSystemIconName } from '../../DataDisplays/SystemIcon';
|
|
3
|
-
type variant = 'default' | '
|
|
3
|
+
type variant = 'default' | 'label';
|
|
4
4
|
export interface TextFieldProps extends ComponentPropsWithoutRef<'input'> {
|
|
5
5
|
variant?: variant;
|
|
6
|
-
|
|
6
|
+
label?: string;
|
|
7
7
|
isError?: boolean;
|
|
8
8
|
startIcon?: MediumSystemIconName;
|
|
9
9
|
endIcon?: MediumSystemIconName;
|
|
@@ -18,8 +18,8 @@ export interface TextFieldProps extends ComponentPropsWithoutRef<'input'> {
|
|
|
18
18
|
*
|
|
19
19
|
* @component
|
|
20
20
|
* @param {Object} props - 컴포넌트 props
|
|
21
|
-
* @param {'default' | '
|
|
22
|
-
* @param {string} [props.
|
|
21
|
+
* @param {'default' | 'label'} [props.variant='default'] - 텍스트 필드의 변형 타입
|
|
22
|
+
* @param {string} [props.label] - 입력 필드의 라벨
|
|
23
23
|
* @param {boolean} [props.isError] - 오류 상태 표시 여부
|
|
24
24
|
* @param {MediumSystemIconName} [props.startIcon] - 시작 부분에 표시될 아이콘
|
|
25
25
|
* @param {MediumSystemIconName} [props.endIcon] - 끝 부분에 표시될 아이콘
|
|
@@ -38,8 +38,8 @@ export interface TextFieldProps extends ComponentPropsWithoutRef<'input'> {
|
|
|
38
38
|
*
|
|
39
39
|
* // 라벨이 있는 텍스트 필드
|
|
40
40
|
* <TextField
|
|
41
|
-
* variant="
|
|
42
|
-
*
|
|
41
|
+
* variant="label"
|
|
42
|
+
* label="이름"
|
|
43
43
|
* placeholder="홍길동"
|
|
44
44
|
* startIcon="user"
|
|
45
45
|
* supportMessage="실명을 입력해주세요"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{forwardRef as t,useState as n,useEffect as o}from"react";import{twMerge as a}from"tailwind-merge";import{TextFieldContainer as i}from"../TextFieldContainer/TextFieldContainer.js";import{SupportTextContainer as s}from"../SupportTextContainer/SupportTextContainer.js";import"../Input/Input.js";import"../Input/PasswordInput.js";import{
|
|
1
|
+
"use client";import{jsxs as e,jsx as r}from"react/jsx-runtime";import{forwardRef as t,useState as n,useEffect as o}from"react";import{twMerge as a}from"tailwind-merge";import{TextFieldContainer as i}from"../TextFieldContainer/TextFieldContainer.js";import{SupportTextContainer as s}from"../SupportTextContainer/SupportTextContainer.js";import"../Input/Input.js";import"../Input/PasswordInput.js";import{LabelInput as l}from"../Input/LabelInput.js";import{InputTypeSelector as c}from"../Input/InputTypeSelector.js";function p(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function u(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),n.forEach((function(r){p(e,r,t[r])}))}return e}function b(e,r){return r=null!=r?r:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):function(e){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r.push.apply(r,t)}return r}(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})),e}function f(e,r){if(null==e)return{};var t,n,o=function(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||(o[t]=e[t]);return o}
|
|
2
2
|
/**
|
|
3
3
|
* 사용자 입력을 받을 수 있는 텍스트 필드 컴포넌트입니다.
|
|
4
4
|
*
|
|
5
5
|
* @component
|
|
6
6
|
* @param {Object} props - 컴포넌트 props
|
|
7
|
-
* @param {'default' | '
|
|
8
|
-
* @param {string} [props.
|
|
7
|
+
* @param {'default' | 'label'} [props.variant='default'] - 텍스트 필드의 변형 타입
|
|
8
|
+
* @param {string} [props.label] - 입력 필드의 라벨
|
|
9
9
|
* @param {boolean} [props.isError] - 오류 상태 표시 여부
|
|
10
10
|
* @param {MediumSystemIconName} [props.startIcon] - 시작 부분에 표시될 아이콘
|
|
11
11
|
* @param {MediumSystemIconName} [props.endIcon] - 끝 부분에 표시될 아이콘
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
*
|
|
25
25
|
* // 라벨이 있는 텍스트 필드
|
|
26
26
|
* <TextField
|
|
27
|
-
* variant="
|
|
28
|
-
*
|
|
27
|
+
* variant="label"
|
|
28
|
+
* label="이름"
|
|
29
29
|
* placeholder="홍길동"
|
|
30
30
|
* startIcon="user"
|
|
31
31
|
* supportMessage="실명을 입력해주세요"
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
* maxLength={50}
|
|
40
40
|
* isMaxLengthVisible={true}
|
|
41
41
|
* />
|
|
42
|
-
*/(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}const m=/*#__PURE__*/t(((t,p)=>{var{type:m,name:d,value:g,onChange:y,maxLength:O,disabled:j=!1,placeholder:h,
|
|
43
|
-
/*#__PURE__*/r("label",{role:"input-box",className:j?"cursor-not-allowed":"cursor-text",children:/*#__PURE__*/e(i,{leadingIcon:L,trailingIcon:P,measure:v,isFocused:N,isError:w,isDisabled:j,children:["
|
|
42
|
+
*/(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)t=a[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}const m=/*#__PURE__*/t(((t,p)=>{var{type:m,name:d,value:g,onChange:y,maxLength:O,disabled:j=!1,placeholder:h,label:x,testId:I,measure:v,isError:w,endIcon:P,startIcon:L,errorMessage:M,supportMessage:S,variant:C="default",isMaxLengthVisible:E=!1,className:F,onBlur:T}=t,D=f(t,["type","name","value","onChange","maxLength","disabled","placeholder","label","testId","measure","isError","endIcon","startIcon","errorMessage","supportMessage","variant","isMaxLengthVisible","className","onBlur"]);const[N,k]=n(!1),[B,V]=n(0),q=u({variant:C,type:m,name:d,value:g,placeholder:h,label:x,maxLength:O,onChange:y,isFocused:N,isError:w,onFocus:()=>{k(!0)},disabled:j,onBlur:e=>{k(!1),T&&T(e)}},D),z=w||S||E;return o((()=>{"string"==typeof g&&O&&V(g.length)}),[g,O]),/*#__PURE__*/e("div",{className:a("flex min-w-fit select-none flex-col gap-2 tracking-default",F),"data-testid":I,children:[
|
|
43
|
+
/*#__PURE__*/r("label",{role:"input-box",className:j?"cursor-not-allowed":"cursor-text",children:/*#__PURE__*/e(i,{leadingIcon:L,trailingIcon:P,measure:v,isFocused:N,isError:w,isDisabled:j,children:["label"===C&&/*#__PURE__*/r(l,b(u({isFixed:!!h},q),{ref:p})),"default"===C&&/*#__PURE__*/r(c,b(u({},q),{ref:p}))]})}),z&&/*#__PURE__*/r(s,{errorMessage:M,supportMessage:S,currentLength:B,maxLength:O,isMaxLengthVisible:E})]})}));m.displayName="TextField";export{m as TextField};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{twMerge as t}from"tailwind-merge";import{Typography as i}from"../../Base/Typography/Typography.js";import{Box as
|
|
1
|
+
import{jsxs as e,jsx as r}from"react/jsx-runtime";import{twMerge as t}from"tailwind-merge";import{Typography as i}from"../../Base/Typography/Typography.js";import{Box as o}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"react";import{SystemIcon as s}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import"../../DataDisplays/Accordion/Accordion.js";const a=({children:a,className:n,leadingIcon:l,trailingIcon:d,isLeadingIconSolid:m,isTrailingIconSolid:c,measure:y,isFocused:p,isDisabled:g,isError:x,onClick:w,isTextarea:f,isAutoComplete:u,testId:h})=>/*#__PURE__*/e(o,{className:t("group flex w-full items-center gap-3 overflow-hidden rounded-xl border px-4 py-[11px]",g?"border-w-gray-200":x?"border-w-red-500":p?"border-primary":"border-w-gray-200 hover:border-primary",g?"bg-w-gray-10":"bg-w-white",g&&"cursor-not-allowed",f&&"relative p-0",u&&"flex-wrap",n),"data-testid":h||"design-system--text-field-container",onClick:w,children:[l&&/*#__PURE__*/r(s,{name:l,solid:m,className:t("shrink-0 text-w-gray-600",g&&"text-w-gray-300"),testId:"design-system--text-field-container-leading-icon"}),a,y&&/*#__PURE__*/r(i,{variant:"body1",className:t("w-fit shrink-0 text-w-gray-400",g&&"text-w-gray-300"),children:y}),d&&/*#__PURE__*/r(s,{name:d,solid:c,className:t("shrink-0 text-w-gray-600",g&&"text-w-gray-300"),testId:"design-system--text-field-container-trailing-icon"})]});export{a as TextFieldContainer};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{jsxs as
|
|
2
|
-
/*#__PURE__*/
|
|
3
|
-
/*#__PURE__*/
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{twJoin as s}from"tailwind-merge";import"react";import{SystemIcon as a}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as o}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/Accordion/Accordion.js";import{TextFieldContainer as r}from"../TextFieldContainer/TextFieldContainer.js";const i=({placeholder:i,value:m="",isListOpen:l,disabled:n=!1,error:c,onClick:d,className:y})=>/*#__PURE__*/t(r,{isDisabled:n,isFocused:l,isError:c,testId:"design-system--selectBox",onClick:d,className:y,children:[
|
|
2
|
+
/*#__PURE__*/e(o,{"data-testid":"design-system--selectBox-text",variant:"body1",className:s(n&&m?"text-w-gray-300":n&&!m?"text-w-gray-200":m?"text-w-gray-600":"text-w-gray-300","w-full"),children:m||i}),
|
|
3
|
+
/*#__PURE__*/e("div",{className:s("transition-transform duration-300",l&&"rotate-180"),children:/*#__PURE__*/e(a,{name:"medium_arrow_down",className:n?"text-w-gray-300":"text-w-gray-600",testId:"design-system--selectBox-icon"})})]});export{i as SelectBox};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as r}from"react";import{twMerge as n,twJoin as o}from"tailwind-merge";import{Box as l}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import{SystemIcon as a}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{TextFieldContainer as i}from"../TextFieldContainer/TextFieldContainer.js";import{SupportTextContainer as s}from"../SupportTextContainer/SupportTextContainer.js";function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){u(e,t,r[t])}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}
|
|
1
|
+
"use client";import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as r}from"react";import{twMerge as n,twJoin as o}from"tailwind-merge";import{Box as l}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import{SystemIcon as a}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import"../../DataDisplays/Accordion/Accordion.js";import{TextFieldContainer as i}from"../TextFieldContainer/TextFieldContainer.js";import{SupportTextContainer as s}from"../SupportTextContainer/SupportTextContainer.js";function u(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){u(e,t,r[t])}))}return e}function c(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},l=Object.keys(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}
|
|
2
2
|
/**
|
|
3
3
|
* 사용자가 여러 줄의 텍스트를 입력할 수 있는 textarea 컴포넌트입니다.
|
|
4
4
|
*
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
* />
|
|
42
42
|
* </div>
|
|
43
43
|
* ```
|
|
44
|
-
*/(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const p=u=>{var{isError:p=!1,size:f="md",resize:
|
|
44
|
+
*/(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n<l.length;n++)r=l[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const p=u=>{var{isError:p=!1,size:f="md",resize:d=!1,isLengthVisible:g=!1,supportText:x,errorText:y,maxLength:h,value:b,disabled:j,name:O,onChange:v,onBlur:w}=u,S=c(u,["isError","size","resize","isLengthVisible","supportText","errorText","maxLength","value","disabled","name","onChange","onBlur"]);const[L,z]=r(!1),B=p||x||g;/*#__PURE__*/
|
|
45
45
|
return e(l,{"data-testid":"design-system-textarea",className:n("flex w-full flex-col gap-2","full"===f?"h-full":"h-fit"),children:[
|
|
46
46
|
/*#__PURE__*/e(i,{isDisabled:j,isError:p,isFocused:L,isTextarea:!0,className:o("full"===f&&"h-full"),children:[
|
|
47
|
-
/*#__PURE__*/t("textarea",m({"data-testid":"design-system-textarea--textarea",className:n("w-full overflow-y-scroll py-[11px] pl-4 font-[inherit] font-normal tracking-default text-w-gray-600 outline-none scrollbar-list placeholder:font-[inherit] placeholder:tracking-default placeholder:text-w-gray-300","sm"===f?"min-h-[118px]":"md"===f?"min-h-[238px]":"lg"===f?"min-h-[358px]":"full"===f?"min-h-full":void 0,
|
|
47
|
+
/*#__PURE__*/t("textarea",m({"data-testid":"design-system-textarea--textarea",className:n("w-full overflow-y-scroll py-[11px] pl-4 font-[inherit] font-normal tracking-default text-w-gray-600 outline-none scrollbar-list placeholder:font-[inherit] placeholder:tracking-default placeholder:text-w-gray-300","sm"===f?"min-h-[118px]":"md"===f?"min-h-[238px]":"lg"===f?"min-h-[358px]":"full"===f?"min-h-full":void 0,d?"resize-y":"resize-none",j&&"resize-none"),name:O,value:b,disabled:j,onChange:v,maxLength:h,onFocus:e=>{z(!0)},onBlur:e=>{z(!1),w&&w(e)}},S)),d&&/*#__PURE__*/t(a,{name:"small_resizer",className:"absolute bottom-[5px] right-[5px] text-w-gray-400",testId:"design-system-textarea--resize-icon"})]}),B&&/*#__PURE__*/t(s,{errorMessage:y,supportMessage:x,currentLength:(null==b?void 0:b.toString().length)||0,maxLength:h,isMaxLengthVisible:g})]})};export{p as Textarea};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useContext as r,createContext as s,Children as a,Fragment as l}from"react";import{twMerge as i}from"tailwind-merge";import{Avatar as n}from"../../DataDisplays/Avatar/Avatar.js";import{Typography as o}from"../../Base/Typography/Typography.js";import{Box as c}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{NewBadge as d}from"../../DataDisplays/NewBadge/NewBadge.js";import{Divider as m}from"../../DataDisplays/Divider/Divider.js";function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function y(e,t){if(null==e)return{};var r,s,a=function(e,t){if(null==e)return{};var r,s,a={},l=Object.keys(e);for(s=0;s<l.length;s++)r=l[s],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(s=0;s<l.length;s++)r=l[s],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}const f=/*#__PURE__*/s({type:""}),b=({type:r="main",children:s,className:n})=>{const o=a.map(s,((r,s)=>0===s?r:/*#__PURE__*/e(l,{children:[
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useContext as r,createContext as s,Children as a,Fragment as l}from"react";import{twMerge as i}from"tailwind-merge";import{Avatar as n}from"../../DataDisplays/Avatar/Avatar.js";import{Typography as o}from"../../Base/Typography/Typography.js";import{Box as c}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{NewBadge as d}from"../../DataDisplays/NewBadge/NewBadge.js";import{Divider as m}from"../../DataDisplays/Divider/Divider.js";import"../../DataDisplays/Accordion/Accordion.js";function p(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function u(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function y(e,t){if(null==e)return{};var r,s,a=function(e,t){if(null==e)return{};var r,s,a={},l=Object.keys(e);for(s=0;s<l.length;s++)r=l[s],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(s=0;s<l.length;s++)r=l[s],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}const f=/*#__PURE__*/s({type:""}),b=({type:r="main",children:s,className:n})=>{const o=a.map(s,((r,s)=>0===s?r:/*#__PURE__*/e(l,{children:[
|
|
2
2
|
/*#__PURE__*/t(m,{className:"my-2"}),r]})));/*#__PURE__*/
|
|
3
3
|
return e(f.Provider,{value:{type:r},children:["main"===r&&/*#__PURE__*/e(c,{className:i("absolute flex h-auto w-[200px] overflow-hidden rounded-xl bg-w-white shadow-graymedium",n),"data-testid":"design-system-gnb-list--root-main",children:[
|
|
4
4
|
/*#__PURE__*/t(c,{className:"m-0 h-auto w-2 bg-gradient-primary-45 p-0","data-testid":"design-system-gnb-list--root-main-sidebar"}),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as t,Fragment as e,jsx as o}from"react/jsx-runtime";import{twJoin as s,twMerge as i}from"tailwind-merge";import
|
|
1
|
+
import{jsxs as t,Fragment as e,jsx as o}from"react/jsx-runtime";import{twJoin as s,twMerge as i}from"tailwind-merge";import r from"next/link";import"react";import{SystemIcon as n}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as a}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import{CountBadge as p}from"../../DataDisplays/CountBadge/CountBadge.js";import"../../DataDisplays/Accordion/Accordion.js";import"@wishket/yogokit";import"../../Inputs/AutoCompleteList/AutoCompleteList.parts.js";import"../../Inputs/Input/Input.js";import"../../Inputs/Input/PasswordInput.js";import"../../Inputs/Input/LabelInput.js";import"../../Inputs/Input/InputTypeSelector.js";import"../../Inputs/Calendar/Calendar.utils.js";import"../../Inputs/Checkbox/Checkbox.js";import"../../Inputs/ChoiceChip/ChoiceChip.js";import{IconButton as m}from"../../Inputs/IconButton/IconButton.js";import"../../Inputs/Radio/Radio.js";import"../../Inputs/TextField/TextField.js";import"../../Inputs/CommentArea/CommentArea.js";import{IconButtonDropdown as l}from"../../Inputs/IconButtonDropdown/IconButtonDropdown.js";import"../../Inputs/FilterChip/FilterChip.js";
|
|
2
2
|
/**
|
|
3
3
|
* 메뉴 컴포넌트는 네비게이션에서 사용되는 클릭 가능한 항목을 표시합니다.
|
|
4
4
|
*
|
|
@@ -58,5 +58,5 @@ import{jsxs as t,Fragment as e,jsx as o}from"react/jsx-runtime";import{twJoin as
|
|
|
58
58
|
* href="/test"
|
|
59
59
|
* name="테스트 메뉴"
|
|
60
60
|
* />
|
|
61
|
-
*/const
|
|
62
|
-
/*#__PURE__*/o(a,{"data-testid":"design-system-menu-name",variant:"body1",className:"w-full select-none",children:d}),I&&/*#__PURE__*/o(
|
|
61
|
+
*/const c=({type:c="main",variant:u="white",name:d,isSelected:y=!1,badgeCount:I,leadingIcon:g,iconButtonName:h,onClick:C,onOptionClick:j,href:w,items:x,selectedItem:b,onItemClick:f})=>{const B=!!(h&&x&&f&&b),k=!!h&&!!j,D=(t,e,o)=>{const r="sub"===t?"pl-12":"",n={white:s("bg-w-white hover:bg-w-gray-50",o&&"bg-primary-10 text-primary hover:bg-primary-10"),gray:s("bg-w-gray-50 hover:bg-w-gray-100",o&&"bg-w-gray-100 hover:bg-w-gray-100")};return i("flex w-full cursor-pointer items-center gap-2 rounded-xl px-4 py-3 text-w-gray-900 text-left",r,n[e])},v=/*#__PURE__*/t(e,{children:[g&&/*#__PURE__*/o(n,{testId:"design-system-menu-leading-icon",name:g,className:s("white"===u&&y&&"text-primary")}),
|
|
62
|
+
/*#__PURE__*/o(a,{"data-testid":"design-system-menu-name",variant:"body1",className:"w-full select-none",children:d}),I&&/*#__PURE__*/o(p,{variant:((t,e)=>"white"!==t?"white_gray":e?"primary":"gray")(u,y),text:I,className:"relative",showZero:!0}),B&&/*#__PURE__*/o(l,{size:"sm",icon:h,items:x,selectedItem:b,onItemClick:f}),k&&/*#__PURE__*/o(m,{size:"sm",className:"shrink-0",onClick:t=>{t.stopPropagation(),j()},children:/*#__PURE__*/o(n,{name:h})})]});return w?/*#__PURE__*/o(r,{href:w,"data-testid":"design-system-menu",className:D(c,u,y),children:v}):/*#__PURE__*/o("button",{"data-testid":"design-system-menu",className:D(c,u,y),onClick:C,children:v})};export{c as Menu};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";import{twMerge as t}from"tailwind-merge";import"react";import{SystemIcon as r}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as n}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){o(e,t,r[t])}))}return e}function i(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const c=r=>{var{value:o,enabled:c}=r,l=s(r,["value","enabled"]);/*#__PURE__*/
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import{twMerge as t}from"tailwind-merge";import"react";import{SystemIcon as r}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Typography as n}from"../../Base/Typography/Typography.js";import"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/Accordion/Accordion.js";function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){o(e,t,r[t])}))}return e}function i(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}const c=r=>{var{value:o,enabled:c}=r,l=s(r,["value","enabled"]);/*#__PURE__*/
|
|
2
2
|
return e("button",i(a({className:t("flex size-10 justify-center rounded-xl p-2 text-w-gray-700",c?"bg-primary-50 text-primary":"hover:bg-w-gray-50")},l),{children:/*#__PURE__*/e(n,{variant:"body2",children:o})}))},l=t=>/*#__PURE__*/e("button",i(a({},t),{"data-testid":"design-system-pagination-left-arrow",children:/*#__PURE__*/e(r,{name:"medium_arrow_left",className:"text-w-gray-900"})})),y=t=>/*#__PURE__*/e("button",i(a({},t),{"data-testid":"design-system-pagination-right-arrow",children:/*#__PURE__*/e(r,{name:"medium_arrow_right",className:"text-w-gray-900"})}));export{l as LeftArrow,c as PaginationNumber,y as RightArrow};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import Link from 'next/link';
|
|
2
|
+
import { ComponentProps } from 'react';
|
|
3
|
+
import { TextWithIconsProps } from '../../Base/TextWithIcons/TextWithIcons';
|
|
4
|
+
interface TextLinkProps extends ComponentProps<typeof Link>, TextWithIconsProps {
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* 텍스트 기반의 링크 컴포넌트입니다.
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* TextButton과 동일한 스타일을 가지지만 `<a>` 태그 기반으로 페이지 네비게이션을 담당합니다.
|
|
11
|
+
* Next.js의 Link 컴포넌트를 기반으로 하여 클라이언트 사이드 라우팅을 지원합니다.
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
* @param {Object} props - TextLink 컴포넌트의 props
|
|
15
|
+
* @param {string} props.href - 링크 대상 URL (필수)
|
|
16
|
+
* @param {string} props.text - 표시할 텍스트 (필수)
|
|
17
|
+
* @param {SystemIconName} [props.leadingIcon] - 텍스트 앞에 표시할 아이콘
|
|
18
|
+
* @param {SystemIconName} [props.trailingIcon] - 텍스트 뒤에 표시할 아이콘
|
|
19
|
+
* @param {boolean} [props.isTextSmall=false] - 작은 텍스트 크기 사용 여부
|
|
20
|
+
* @param {boolean} [props.isGray=false] - 텍스트 색상을 회색으로 사용 여부
|
|
21
|
+
* @param {boolean} [props.isUnderline=false] - 텍스트에 밑줄 스타일 적용 여부
|
|
22
|
+
* @param {ComponentProps<typeof Link>} props - Next.js Link 컴포넌트의 모든 props 지원
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // 기본 사용법
|
|
26
|
+
* <TextLink href="/about" text="소개 페이지로 이동" />
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // 아이콘과 함께 사용
|
|
30
|
+
* <TextLink
|
|
31
|
+
* href="/detail"
|
|
32
|
+
* text="자세히 보기"
|
|
33
|
+
* trailingIcon="medium_arrow_right"
|
|
34
|
+
* />
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* // 외부 링크로 사용
|
|
38
|
+
* <TextLink
|
|
39
|
+
* href="https://example.com"
|
|
40
|
+
* text="외부 사이트 방문"
|
|
41
|
+
* target="_blank"
|
|
42
|
+
* rel="noopener noreferrer"
|
|
43
|
+
* />
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* // 작은 텍스트 크기로 사용
|
|
47
|
+
* <TextLink
|
|
48
|
+
* href="/help"
|
|
49
|
+
* text="도움말"
|
|
50
|
+
* isTextSmall
|
|
51
|
+
* leadingIcon="small_help"
|
|
52
|
+
* />
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // 프로그래매틱 네비게이션과 함께
|
|
56
|
+
* <TextLink
|
|
57
|
+
* href="/dashboard"
|
|
58
|
+
* text="대시보드"
|
|
59
|
+
* onClick={(e) => {
|
|
60
|
+
* // 추가 로직 실행 가능
|
|
61
|
+
* console.log('대시보드로 이동');
|
|
62
|
+
* }}
|
|
63
|
+
* />
|
|
64
|
+
*/
|
|
65
|
+
declare const TextLink: ({ href, text, leadingIcon, trailingIcon, isTextSmall, isGray, isUnderline, ...rest }: TextLinkProps) => import("react/jsx-runtime").JSX.Element;
|
|
66
|
+
export { TextLink };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import{jsx as e}from"react/jsx-runtime";import t from"next/link";import{twMerge as r}from"tailwind-merge";import{TextWithIcons as n}from"../../Base/TextWithIcons/TextWithIcons.js";function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}function c(e,t){if(null==e)return{};var r,n,i=function(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}
|
|
2
|
+
/**
|
|
3
|
+
* 텍스트 기반의 링크 컴포넌트입니다.
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* TextButton과 동일한 스타일을 가지지만 `<a>` 태그 기반으로 페이지 네비게이션을 담당합니다.
|
|
7
|
+
* Next.js의 Link 컴포넌트를 기반으로 하여 클라이언트 사이드 라우팅을 지원합니다.
|
|
8
|
+
*
|
|
9
|
+
* @component
|
|
10
|
+
* @param {Object} props - TextLink 컴포넌트의 props
|
|
11
|
+
* @param {string} props.href - 링크 대상 URL (필수)
|
|
12
|
+
* @param {string} props.text - 표시할 텍스트 (필수)
|
|
13
|
+
* @param {SystemIconName} [props.leadingIcon] - 텍스트 앞에 표시할 아이콘
|
|
14
|
+
* @param {SystemIconName} [props.trailingIcon] - 텍스트 뒤에 표시할 아이콘
|
|
15
|
+
* @param {boolean} [props.isTextSmall=false] - 작은 텍스트 크기 사용 여부
|
|
16
|
+
* @param {boolean} [props.isGray=false] - 텍스트 색상을 회색으로 사용 여부
|
|
17
|
+
* @param {boolean} [props.isUnderline=false] - 텍스트에 밑줄 스타일 적용 여부
|
|
18
|
+
* @param {ComponentProps<typeof Link>} props - Next.js Link 컴포넌트의 모든 props 지원
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // 기본 사용법
|
|
22
|
+
* <TextLink href="/about" text="소개 페이지로 이동" />
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* // 아이콘과 함께 사용
|
|
26
|
+
* <TextLink
|
|
27
|
+
* href="/detail"
|
|
28
|
+
* text="자세히 보기"
|
|
29
|
+
* trailingIcon="medium_arrow_right"
|
|
30
|
+
* />
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* // 외부 링크로 사용
|
|
34
|
+
* <TextLink
|
|
35
|
+
* href="https://example.com"
|
|
36
|
+
* text="외부 사이트 방문"
|
|
37
|
+
* target="_blank"
|
|
38
|
+
* rel="noopener noreferrer"
|
|
39
|
+
* />
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* // 작은 텍스트 크기로 사용
|
|
43
|
+
* <TextLink
|
|
44
|
+
* href="/help"
|
|
45
|
+
* text="도움말"
|
|
46
|
+
* isTextSmall
|
|
47
|
+
* leadingIcon="small_help"
|
|
48
|
+
* />
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // 프로그래매틱 네비게이션과 함께
|
|
52
|
+
* <TextLink
|
|
53
|
+
* href="/dashboard"
|
|
54
|
+
* text="대시보드"
|
|
55
|
+
* onClick={(e) => {
|
|
56
|
+
* // 추가 로직 실행 가능
|
|
57
|
+
* console.log('대시보드로 이동');
|
|
58
|
+
* }}
|
|
59
|
+
* />
|
|
60
|
+
*/(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}const l=l=>{var{href:a,text:f,leadingIcon:s,trailingIcon:p,isTextSmall:u=!1,isGray:O=!1,isUnderline:b=!1}=l,y=c(l,["href","text","leadingIcon","trailingIcon","isTextSmall","isGray","isUnderline"]);/*#__PURE__*/
|
|
61
|
+
return e(t,o(function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){i(e,t,r[t])}))}return e}({href:a,className:r("flex min-h-6 w-fit items-center justify-center",u?"gap-x-0.5":"gap-x-1")},y),{children:/*#__PURE__*/e(n,{text:f,leadingIcon:s,trailingIcon:p,isTextSmall:u,isUnderline:b,isGray:O})}))};export{l as TextLink};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TextLink } from './TextLink';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useContext as r,createContext as n,useRef as a,Children as o,useState as s,useEffect as i}from"react";import{twMerge as l,twJoin as c}from"tailwind-merge";import{Typography as u}from"../../Base/Typography/Typography.js";import{Box as d}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import{SystemIcon as m}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{CountBadge as f}from"../../DataDisplays/CountBadge/CountBadge.js";import{Divider as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useContext as r,createContext as n,useRef as a,Children as o,useState as s,useEffect as i}from"react";import{twMerge as l,twJoin as c}from"tailwind-merge";import{Typography as u}from"../../Base/Typography/Typography.js";import{Box as d}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import{SystemIcon as m}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{CountBadge as f}from"../../DataDisplays/CountBadge/CountBadge.js";import{Divider as p}from"../../DataDisplays/Divider/Divider.js";import"../../DataDisplays/Accordion/Accordion.js";function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable})))),n.forEach((function(t){b(e,t,r[t])}))}return e}function h(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t}(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})),e}const g=/*#__PURE__*/n({barColor:"bg-w-gray-900",activeTab:0,currentActiveTab:0,isFit:!0,hasPadding:!1,isFull:!1,handleTabClick:e=>{}}),x=({children:t,currentActiveTab:r=0,isFit:n=!0,hasPadding:a=!1,isFull:o=!1,barColor:l="bg-w-gray-900",onChange:c})=>{const[u,d]=s(r);return i((()=>{r!==u&&d(r);
|
|
2
2
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3
|
-
}),[r]),/*#__PURE__*/e(g.Provider,{value:{barColor:l,activeTab:u,currentActiveTab:r,isFit:n,hasPadding:a,handleTabClick:e=>{e!==u&&(null==c||c(e),d(e))},isFull:o},children:t})},w=({children:n,className:u})=>{const{activeTab:m,hasPadding:f,isFull:
|
|
4
|
-
/*#__PURE__*/e(d,{className:l("inline-flex w-max gap-10",
|
|
3
|
+
}),[r]),/*#__PURE__*/e(g.Provider,{value:{barColor:l,activeTab:u,currentActiveTab:r,isFit:n,hasPadding:a,handleTabClick:e=>{e!==u&&(null==c||c(e),d(e))},isFull:o},children:t})},w=({children:n,className:u})=>{const{activeTab:m,hasPadding:f,isFull:b,barColor:y}=r(g),h=a([]),x=a(null),w=a(null),v=o.toArray(n),[j,O]=s(!1),[T,D]=s(!1),[N,P]=s({x:0,scrollLeft:0});return i((()=>{if(!h.current[m]||!x.current)return;const e=h.current[m],t=x.current,r=w.current;if(e&&t&&r){const{offsetLeft:n,offsetWidth:a}=e,{scrollLeft:o,clientWidth:s}=r;t.style.width=`${a}px`,t.style.transform=`translateX(${n}px)`;if(!(o<=n&&o+s>=n+a)){const t=setTimeout((()=>{e.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})}),0);return()=>clearTimeout(t)}}}),[m]),i((()=>{const e=()=>{if(w.current){const e=w.current.scrollWidth>w.current.clientWidth;O(e)}};return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),i((()=>{if(w.current){const e=w.current.scrollWidth>w.current.clientWidth;O(e)}}),[n]),/*#__PURE__*/e(d,{ref:w,className:c("block w-full touch-pan-x items-start overflow-x-scroll scrollbar-hide",j&&"scrollbar-list",u),"data-testid":"design-system-textTab--container",onMouseDown:e=>{w.current&&(D(!0),P({x:e.pageX,scrollLeft:w.current.scrollLeft}))},onMouseMove:e=>{if(!T||!w.current)return;e.preventDefault();const t=e.pageX-N.x;w.current.scrollLeft=N.scrollLeft-t},onMouseUp:()=>{D(!1)},onMouseLeave:()=>{D(!1)},children:/*#__PURE__*/t(d,{className:l("relative w-full border-b border-w-gray-200",j&&"w-max",f&&"px-9"),"data-testid":"design-system-textTab--inner-container",children:[
|
|
4
|
+
/*#__PURE__*/e(d,{className:l("inline-flex w-max gap-10",b&&"w-full gap-0"),children:v.map(((t,r)=>/*#__PURE__*/e(d,{className:l(b&&"w-full"),ref:e=>{h.current[r]=e},children:t},r)))}),
|
|
5
5
|
/*#__PURE__*/e("span",{ref:x,"data-testid":`design-system-textTab--underbar-${m}`,className:c("absolute bottom-0 left-0 h-0.5 rounded-t-lg transition-all duration-300 ease-out",y)}),
|
|
6
|
-
/*#__PURE__*/e(
|
|
7
|
-
/*#__PURE__*/e(u,{variant:"body1",className:"relative",children:n}),void 0!==i&&/*#__PURE__*/e(f,{text:i,showZero:!0,className:"relative",variant:"gray"})]});return
|
|
6
|
+
/*#__PURE__*/e(p,{className:"absolute -bottom-px left-0 h-px"})]})})},v=({children:n,index:a,className:o,disabled:s=!1,badgeNumber:i,iconName:c,href:p})=>{const{isFit:b,handleTabClick:x,activeTab:w,isFull:v}=r(g),j=a===w,O={tabIndex:0,"data-testid":`design-system-textTab--item-${a}`,className:l("group flex w-max cursor-pointer items-center rounded-xl hover:font-medium",s&&"cursor-not-allowed",v&&"w-full",o),onClick:()=>{!s&&x(a)}},T=/*#__PURE__*/t(d,{className:l("relative flex w-full select-none flex-row items-center justify-center gap-2 py-4 font-normal text-w-gray-600 group-hover:text-w-gray-900",!b&&"px-[33.5px]",v&&"w-full px-0",j&&"font-medium text-w-gray-900"),children:[c&&/*#__PURE__*/e(d,{className:"flex size-4 flex-shrink-0 items-center justify-center",children:/*#__PURE__*/e(m,{name:c,className:l("size-4 text-w-gray-600 group-hover:text-w-gray-900",j&&"text-w-gray-900")})}),
|
|
7
|
+
/*#__PURE__*/e(u,{variant:"body1",className:"relative",children:n}),void 0!==i&&/*#__PURE__*/e(f,{text:i,showZero:!0,className:"relative",variant:"gray"})]});return p?/*#__PURE__*/e("a",h(y({href:p},O),{children:T})):/*#__PURE__*/e(d,h(y({},O),{children:T}))},j=({children:t,index:n})=>{const{activeTab:a}=r(g);return a===n&&/*#__PURE__*/e(d,{"data-testid":"design-system-textTab--content",children:t})};
|
|
8
8
|
/**
|
|
9
9
|
* TextTab의 Root 컴포넌트입니다.
|
|
10
10
|
* TextTab의 상태를 관리합니다.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as t,jsx as a}from"react/jsx-runtime";import{twMerge as
|
|
1
|
+
import{jsxs as t,jsx as a}from"react/jsx-runtime";import{twMerge as s}from"tailwind-merge";import{Box as e}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"react";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{CountBadge as r}from"../../DataDisplays/CountBadge/CountBadge.js";import{NewBadge as o}from"../../DataDisplays/NewBadge/NewBadge.js";import"../../DataDisplays/Accordion/Accordion.js";
|
|
2
2
|
/**
|
|
3
3
|
* 자식 요소의 우측 상단에 뱃지를 표시하는 래퍼 컴포넌트입니다.
|
|
4
4
|
*
|
|
@@ -19,4 +19,4 @@ import{jsxs as t,jsx as a}from"react/jsx-runtime";import{twMerge as e}from"tailw
|
|
|
19
19
|
* <WithBadge variant="new">
|
|
20
20
|
* <MenuItem>새로운 기능</MenuItem>
|
|
21
21
|
* </WithBadge>
|
|
22
|
-
*/const i=({text:i,children:m,className:l,variant:n="primary",showZero:p=!1})=>/*#__PURE__*/t(
|
|
22
|
+
*/const i=({text:i,children:m,className:l,variant:n="primary",showZero:p=!1})=>/*#__PURE__*/t(e,{className:s("relative w-fit",l),"data-testid":"with-badge",children:[m,"new"===n?/*#__PURE__*/a(o,{className:"absolute right-0 top-0 -translate-y-1/2 translate-x-1/2 transform"}):/*#__PURE__*/a(r,{text:i,variant:n,showZero:p,className:"absolute right-px top-px -translate-y-1/2 translate-x-1/2 transform"})]});export{i as WithBadge};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use client";import{jsxs as t,jsx as i}from"react/jsx-runtime";import{twMerge as e}from"tailwind-merge";import{useState as o}from"react";import{SystemIcon as s}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Box as r}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"@wishket/yogokit";import"react-dom";import{RichTooltip as a}from"../../Feedbacks/RichTooltip/RichTooltip.js";import"../../Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.js";
|
|
1
|
+
"use client";import{jsxs as t,jsx as i}from"react/jsx-runtime";import{twMerge as e}from"tailwind-merge";import{useState as o}from"react";import{SystemIcon as s}from"../../DataDisplays/SystemIcon/SystemIcon.js";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{Box as r}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"../../DataDisplays/Accordion/Accordion.js";import"@wishket/yogokit";import"react-dom";import{RichTooltip as a}from"../../Feedbacks/RichTooltip/RichTooltip.js";import"../../Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.js";
|
|
2
2
|
/**
|
|
3
3
|
* 정보 아이콘과 함께 리치 툴팁을 표시하는 래퍼 컴포넌트입니다.
|
|
4
4
|
*
|
|
@@ -27,6 +27,6 @@
|
|
|
27
27
|
* >
|
|
28
28
|
* <p>추가 배송 정보는 여기에 표시됩니다.</p>
|
|
29
29
|
* </WithRichTooltip>
|
|
30
|
-
*/const m=({size:m="md",variant:
|
|
30
|
+
*/const m=({size:m="md",variant:c="right",title:n,description:l,children:d,className:p})=>{const h="md"===m?"medium_information":"small_information",g="right"===c,f="down"===c,[y,u]=o(!1);/*#__PURE__*/
|
|
31
31
|
return t(r,{className:"relative h-fit w-fit","data-testid":"design-system-withRichTooltip",children:[
|
|
32
|
-
/*#__PURE__*/i(r,{"data-testid":"design-system-withRichTooltip--trigger",className:"flex h-fit w-fit shrink-0 items-center justify-center",onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),onClick:()=>u((t=>!t)),children:/*#__PURE__*/i(s,{name:h,className:"text-w-gray-400",testId:"md"===m?"design-system-withRichTooltip--trigger-icon-md":"design-system-withRichTooltip--trigger-icon-sm"})}),y&&/*#__PURE__*/i(a,{title:
|
|
32
|
+
/*#__PURE__*/i(r,{"data-testid":"design-system-withRichTooltip--trigger",className:"flex h-fit w-fit shrink-0 items-center justify-center",onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),onClick:()=>u((t=>!t)),children:/*#__PURE__*/i(s,{name:h,className:"text-w-gray-400",testId:"md"===m?"design-system-withRichTooltip--trigger-icon-md":"design-system-withRichTooltip--trigger-icon-sm"})}),y&&/*#__PURE__*/i(a,{title:n,description:l,className:e("absolute",g&&"left-[calc(100%_+_12px)] top-0",f&&"left-0 top-[calc(100%_+_12px)]",p),children:d})]})};export{m as WithRichTooltip};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsxs as e,jsx as a}from"react/jsx-runtime";import{twJoin as s}from"tailwind-merge";import{Box as t}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"react";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import{SnackBar as o}from"../../Feedbacks/SnackBar/SnackBar.js";import"@wishket/yogokit";import"react-dom";import"../../Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.js";
|
|
1
|
+
import{jsxs as e,jsx as a}from"react/jsx-runtime";import{twJoin as s}from"tailwind-merge";import{Box as t}from"../../Base/Layouts/Box/Box.js";import"../../Base/Layouts/FullBleed/FullBleed.js";import"react";import"../../DataDisplays/SystemIcon/SystemIcon.constants.js";import"../../DataDisplays/Accordion/Accordion.js";import{SnackBar as o}from"../../Feedbacks/SnackBar/SnackBar.js";import"@wishket/yogokit";import"react-dom";import"../../Feedbacks/GlobalLoadingIndicator/GlobalLoadingIndicator.js";
|
|
2
2
|
/**
|
|
3
3
|
* 스낵바를 포함하는 래퍼 컴포넌트입니다.
|
|
4
4
|
* 자식 컴포넌트 상단에 알림 메시지를 표시할 수 있습니다.
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("tailwind-merge");require("react");var s=require("../../DataDisplays/SystemIcon/SystemIcon.js");require("../../DataDisplays/SystemIcon/SystemIcon.constants.js");var i=require("../Typography/Typography.js"),a=require("../Layouts/Box/Box.js");require("../Layouts/FullBleed/FullBleed.js"),require("../../DataDisplays/Accordion/Accordion.js");exports.TextWithIcons=({text:r,leadingIcon:n,trailingIcon:o,isTextSmall:c=!1,isGray:l=!1,isUnderline:y=!1})=>/*#__PURE__*/e.jsxs(e.Fragment,{children:[n&&/*#__PURE__*/e.jsx(a.Box,{"data-testid":"design-system-text-with-icons--icon--left",className:"w-fit",children:/*#__PURE__*/e.jsx(s.SystemIcon,{name:n,className:t.twJoin(l?"text-w-gray-600":"text-primary-500")})}),
|
|
2
|
+
/*#__PURE__*/e.jsx(a.Box,{"data-testid":"design-system-text-with-icons--text",className:"w-fit",children:/*#__PURE__*/e.jsx(i.Typography,{variant:c?"body2":"body1",className:t.twJoin("align-baseline font-medium",l?"text-w-gray-600":"text-primary-500",y?"underline decoration-1 underline-offset-2":""),children:r})}),o&&/*#__PURE__*/e.jsx(a.Box,{"data-testid":"design-system-text-with-icons--icon--right",className:"w-fit",children:/*#__PURE__*/e.jsx(s.SystemIcon,{name:o,className:t.twJoin(l?"text-w-gray-600":"text-primary-500")})})]});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";"use strict";var e=require("react/jsx-runtime"),r=require("react"),t=require("tailwind-merge"),i=require("../../Base/Typography/Typography.js"),s=require("../../Base/Layouts/Box/Box.js");require("../../Base/Layouts/FullBleed/FullBleed.js");var n=require("../SystemIcon/SystemIcon.js");require("../SystemIcon/SystemIcon.constants.js"),require("@wishket/yogokit"),require("react-dom"),require("next/link"),require("../../Inputs/AutoCompleteList/AutoCompleteList.parts.js"),require("../../Inputs/Input/Input.js"),require("../../Inputs/Input/PasswordInput.js"),require("../../Inputs/Input/LabelInput.js"),require("../../Inputs/Input/InputTypeSelector.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/FilterChip/FilterChip.js");var o=require("../../Navigations/TextLink/TextLink.js");
|
|
2
|
+
/**
|
|
3
|
+
* 아코디언 컨테이너 컴포넌트
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* 여러 개의 접을 수 있는 콘텐츠 섹션을 관리하는 컨테이너입니다.
|
|
7
|
+
* Compound Component 패턴을 사용하여 Accordion.Item과 함께 사용합니다.
|
|
8
|
+
*
|
|
9
|
+
* @param {React.ReactNode} children - Accordion.Item 컴포넌트들
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <Accordion>
|
|
14
|
+
* <Accordion.Item title="첫 번째 섹션">
|
|
15
|
+
* <p>첫 번째 섹션의 내용</p>
|
|
16
|
+
* </Accordion.Item>
|
|
17
|
+
* <Accordion.Item title="두 번째 섹션">
|
|
18
|
+
* <p>두 번째 섹션의 내용</p>
|
|
19
|
+
* </Accordion.Item>
|
|
20
|
+
* </Accordion>
|
|
21
|
+
* ```
|
|
22
|
+
*/const a=({children:r})=>/*#__PURE__*/e.jsx(s.Box,{className:"flex w-full flex-col gap-6 p-6",children:r});
|
|
23
|
+
/**
|
|
24
|
+
* 아코디언의 개별 아이템 컴포넌트
|
|
25
|
+
*
|
|
26
|
+
* @description
|
|
27
|
+
* 클릭 가능한 제목과 접을 수 있는 콘텐츠 영역을 제공합니다.
|
|
28
|
+
* 선택적으로 하단에 링크를 추가할 수 있습니다.
|
|
29
|
+
*
|
|
30
|
+
* @param {string} title - 아코디언 아이템의 제목
|
|
31
|
+
* @param {string} href - 링크 대상 URL (linkText와 함께 사용)
|
|
32
|
+
* @param {string} linkText - 링크에 표시될 텍스트 (href와 함께 사용)
|
|
33
|
+
* @param {'_blank' | '_self'} linkTarget - 링크 타겟 설정 ('_blank' | '_self')
|
|
34
|
+
* @param {React.ReactNode} children - 아코디언 아이템의 콘텐츠
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* // 기본 사용법
|
|
39
|
+
* <Accordion.Item title="제목">
|
|
40
|
+
* <p>콘텐츠 내용</p>
|
|
41
|
+
* </Accordion.Item>
|
|
42
|
+
*
|
|
43
|
+
* // 링크가 포함된 아이템
|
|
44
|
+
* <Accordion.Item
|
|
45
|
+
* title="제목"
|
|
46
|
+
* href="/detail"
|
|
47
|
+
* linkText="자세히 보기"
|
|
48
|
+
* linkTarget="_blank"
|
|
49
|
+
* >
|
|
50
|
+
* <p>콘텐츠 내용</p>
|
|
51
|
+
* </Accordion.Item>
|
|
52
|
+
* ```
|
|
53
|
+
*/a.Item=({title:a,href:u,linkText:l,linkTarget:c="_blank",children:p})=>{const[d,x]=r.useState(!1),m=r.useId(),j=u&&l&&c;/*#__PURE__*/
|
|
54
|
+
return e.jsxs(s.Box,{className:"flex w-full flex-col border-b border-w-gray-200 pb-6 last:border-b-0 last:pb-0",children:[
|
|
55
|
+
/*#__PURE__*/e.jsxs("button",{type:"button",className:"box-border flex cursor-pointer items-center justify-between gap-6 text-left",onClick:()=>x(!d),"aria-expanded":d,"aria-controls":`accordionregion-${m}`,id:`accordionbutton-${m}`,children:[
|
|
56
|
+
/*#__PURE__*/e.jsx(i.Typography,{variant:"subTitle2",className:"w-full font-medium text-w-gray-900",children:a}),
|
|
57
|
+
/*#__PURE__*/e.jsx(s.Box,{className:t.twJoin("transition-transform duration-300 ease-in-out",d?"rotate-180":"rotate-0"),children:/*#__PURE__*/e.jsx(n.SystemIcon,{name:"medium_arrow_down"})})]}),
|
|
58
|
+
/*#__PURE__*/e.jsx(s.Box,{role:"region",id:`accordionregion-${m}`,"aria-labelledby":`accordionbutton-${m}`,className:t.twJoin("w-full overflow-hidden transition-all duration-300 ease-in-out",d?"max-h-screen":"max-h-0"),children:/*#__PURE__*/e.jsxs(s.Box,{className:"mt-4 flex flex-col gap-4",children:[p,j&&/*#__PURE__*/e.jsx(o.TextLink,{href:u,text:l,target:c,trailingIcon:"medium_arrow_right"})]})})]})},exports.Accordion=a;
|
|
@@ -1,5 +1,47 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),s=require("tailwind-merge"),
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),s=require("tailwind-merge"),a=require("../../Base/Typography/Typography.js"),r=require("../../Base/Layouts/Box/Box.js");require("../../Base/Layouts/FullBleed/FullBleed.js"),require("react"),require("../../DataDisplays/SystemIcon/SystemIcon.constants.js");var t=require("../../DataDisplays/ProductIcon/ProductIcon.js");require("../../DataDisplays/Accordion/Accordion.js");var i=require("../../Inputs/Button/Button.js");
|
|
2
|
+
/**
|
|
3
|
+
* 사용자에게 정보를 표시하는 메시지 바 컴포넌트입니다.
|
|
4
|
+
*
|
|
5
|
+
* @component
|
|
6
|
+
*
|
|
7
|
+
* @param {Object} props
|
|
8
|
+
* @param {'primary' | 'white'} props.variant - 메시지 바의 스타일 변형. 'primary' 또는 'white' 중 선택
|
|
9
|
+
* @param {(typeof MediumProductIconNames)[number]} props.icon - 메시지 바에 표시될 ProductIcon 이름
|
|
10
|
+
* ('person_smile', 'lock', 'logout', 'contract_pen', 'paper_pen', 'paper_hold' 등)
|
|
11
|
+
* @param {string} [props.title] - 메시지 바의 제목 (선택사항)
|
|
12
|
+
* @param {string} props.text - 메시지 바에 표시될 본문 텍스트
|
|
13
|
+
* @param {string} [props.buttonName] - 버튼에 표시될 텍스트 (선택사항)
|
|
14
|
+
* @param {() => void} [props.onClick] - 버튼 클릭 시 실행될 콜백 함수 (선택사항)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // 기본 사용 예시
|
|
18
|
+
* <MessageBar
|
|
19
|
+
* variant="primary"
|
|
20
|
+
* icon="person_smile"
|
|
21
|
+
* title="알림"
|
|
22
|
+
* text="새로운 메시지가 도착했습니다."
|
|
23
|
+
* buttonName="확인"
|
|
24
|
+
* onClick={() => console.log('버튼이 클릭되었습니다')}
|
|
25
|
+
* />
|
|
26
|
+
*
|
|
27
|
+
* // 제목과 버튼이 없는 간단한 메시지
|
|
28
|
+
* <MessageBar
|
|
29
|
+
* variant="white"
|
|
30
|
+
* icon="paper_pen"
|
|
31
|
+
* text="작업이 성공적으로 완료되었습니다."
|
|
32
|
+
* />
|
|
33
|
+
*
|
|
34
|
+
* // 보안 관련 메시지
|
|
35
|
+
* <MessageBar
|
|
36
|
+
* variant="primary"
|
|
37
|
+
* icon="lock"
|
|
38
|
+
* title="보안 알림"
|
|
39
|
+
* text="계정의 보안을 위해 비밀번호를 변경해주세요."
|
|
40
|
+
* buttonName="비밀번호 변경"
|
|
41
|
+
* onClick={() => handlePasswordChange()}
|
|
42
|
+
* />
|
|
43
|
+
*/exports.MessageBar=({variant:n="primary",icon:o,title:d,text:l,buttonName:c,onClick:u})=>{const m="primary"===n,y="white"===n;/*#__PURE__*/
|
|
44
|
+
return e.jsxs(r.Box,{"data-testid":"design-system-message-bar",className:s.twMerge("flex w-full items-center gap-5 rounded-2xl border px-8 py-5",m&&"border-primary-100 bg-primary-10",y&&"border-w-gray-200 bg-white"),children:[
|
|
45
|
+
/*#__PURE__*/e.jsx(r.Box,{className:"shrink-0","data-testid":"design-system-message-bar--icon",children:/*#__PURE__*/e.jsx(t.ProductIcon,{name:o,size:"medium"})}),
|
|
46
|
+
/*#__PURE__*/e.jsxs(r.Box,{className:"flex w-full flex-col gap-1",children:[d&&/*#__PURE__*/e.jsx(a.Typography,{variant:"subTitle2",className:"font-medium text-w-gray-900","data-testid":"design-system-message-bar--title",children:d}),
|
|
47
|
+
/*#__PURE__*/e.jsx(a.Typography,{variant:"body1",className:"text-w-gray-600","data-testid":"design-system-message-bar--text",children:l})]}),c&&u&&/*#__PURE__*/e.jsx(i.Button,{variant:"outlined",size:"sm",className:"shrink-0",onClick:u,"data-testid":"design-system-message-bar--button",children:c})]})};
|