0.4.3 โ€ข Published 1 year ago

@fun-eat/design-system v0.4.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

๐Ÿฅ„ ํŽ€์ž‡ํŒ€ ๋””์ž์ธ์‹œ์Šคํ…œ ๐ŸŽจ

Install

npm

npm install @fun-eat/design-system

yarn

yarn add @fun-eat/design-system

FunEatProvider

@fun-eat/design-system ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” FunEatProvider๋กœ ๊ฐ์‹ธ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

//index.tsx

import FunEatProvider from '@fun-eat/design-system';

<FunEatProvider>
  <App />
</FunEatProvider>;

Components

Badge

์ž‘์€ ํฌ๊ธฐ์˜ ๋ฑƒ์ง€ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
elementp, span(default: span)Badge ์ปดํฌ๋„ŒํŠธ์˜ element ํƒ€์ž…์ž…๋‹ˆ๋‹ค.
colorCSSProperties'color'Badge ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
textColorCSSProperties'color'Badge ์ปดํฌ๋„ŒํŠธ์— ๋“ค์–ด๊ฐˆ ํ…์ŠคํŠธ์˜ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
size?xs, sm, md, lg, xl (default: sm)Badge ์ปดํฌ๋„ŒํŠธ์— ๋“ค์–ด๊ฐˆ ํ…์ŠคํŠธ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
css?CSSPropBadge ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Badge color="#000" textColor="#fff" size="md">๋ฑƒ์ง€</Badge>
<Badge color="#000" textColor="#fff">๋ฑƒ์ง€</Badge>

BottomSheet

์•„๋ž˜์—์„œ ์œ„๋กœ ์˜ฌ๋ผ์˜ค๋Š” ๋ฐ”ํ…€์‹œํŠธ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

@fun-eat/design-system์—์„œ ์ œ๊ณตํ•˜๋Š” useBottomSheet์™€ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Props

propsvaluedescription
maxWidth?stringBottomSheet ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ๋Œ€ ํญ์ž…๋‹ˆ๋‹ค.
isClosingbooleanBottomSheet ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ซํžˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
close()functionBottomSheet ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ซ๋Š” ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

Example

import { useBottomSheet } from '@fun-eat/design-system';

const Parent = () => {
  const { ref, isClosing, handleOpenBottomSheet, handleCloseBottomSheet } = useBottomSheet();

  return (
    <>
      <button type="button" onClick={handleOpenBottomSheet}>
        ๋ฐ”ํ…€์‹œํŠธ ์—ด๊ธฐ
      </button>
      <BottomSheet ref={ref} isClosing={isClosing} close={handleCloseBottomSheet}>
        <div>๋ฐ”ํ…€์‹œํŠธ ์ปดํฌ๋„ŒํŠธ</div>
      </BottomSheet>
    </>
  );
};

Button

๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
customWidth?string (default: 120px)Button ์ปดํฌ๋„ŒํŠธ์˜ ๋„“์ด์ž…๋‹ˆ๋‹ค.
customHeight?string (default: 40px)Button ์ปดํฌ๋„ŒํŠธ์˜ ๋†’์ด์ž…๋‹ˆ๋‹ค.
color?color (default: primary)Button ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
textColor?color (default: default)Button ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
size?xs, sm, md, lg, xl (default: md)Button ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
weight?light, regular, bold (default: bold)Button ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
variant?outlined, filled, transparent (default: filled)Button ์ปดํฌ๋„ŒํŠธ์˜ ์Šคํƒ€์ผ๋กœ ๋ฐฐ๊ฒฝ์ƒ‰ ์—†์ด ์•„์›ƒ๋ผ์ธ์ด ์žˆ๋Š”์ง€, ๋ฐฐ๊ฒฝ์ƒ‰์ด ์žˆ๊ณ  ์•„์›ƒ๋ผ์ธ์ด ์—†๋Š”์ง€, ํˆฌ๋ช… ๋ฐฐ๊ฒฝ์ธ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
css?CSSPropButton ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Button width="100%" height="20px" color="#000" textColor="#fff" size="sm" weight="regular" variant="filled">๋ฒ„ํŠผ</Button>
<Button>๋ฒ„ํŠผ</Button>

Carousel

์บ๋Ÿฌ์…€ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Example

const carouselList = [0, 1, 2].map((index) => ({
  id: index,
  children: <div>{index}</div>,
}));

<Carousel carouselList={carouselList} />;

Checkbox

์ฒดํฌ๋ฐ•์Šค ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
size?xs, sm, md, lg, xl (default: md)Checkbox ์ปดํฌ๋„ŒํŠธ์˜ ์ฒดํฌ๋ฐ•์Šค ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
fontSize?xs, sm, md, lg, xl (default: md)Checkbox ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
weight?light, regular, bold (default: bold)Checkbox ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
tabIndex?-1,ย 0,ย 1Checkbox ์ปดํฌ๋„ŒํŠธ์˜ tabIndex์ž…๋‹ˆ๋‹ค.

Example

<Checkbox />
<Checkbox size="xs">์žฌ๊ตฌ๋งค ์˜์‚ฌ๊ฐ€ ์žˆ์œผ์‹ ๊ฐ€์š”?</Checkbox>
<Checkbox size="xl" fontSize="xl" weight="bold">์žฌ๊ตฌ๋งค ์˜์‚ฌ๊ฐ€ ์žˆ์œผ์‹ ๊ฐ€์š”?</Checkbox>

Divider

ํ™”๋ฉด ๊ตฌ์—ญ์„ ๋‚˜๋ˆ„๋Š” ์„  ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
variant?default , strong , disabled (default: default)Divider ์ปดํฌ๋„ŒํŠธ์˜ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. ๊ฐ•์กฐ์˜ ์ •๋„ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
customWidth?string (default: 100%)Divider ์ปดํฌ๋„ŒํŠธ์˜ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.
customHeight?string (default: 1px)Divider ์ปดํฌ๋„ŒํŠธ์˜ ๋‘๊ป˜์ž…๋‹ˆ๋‹ค.
css?CSSPropDivider ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Divider variant="strong" customWidth="50%" customHeight='4px' />
<Divider />

Heading

HTML heading ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
children?ReactNodeHeading ์ปดํฌ๋„ŒํŠธ์˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.
as?h1 ,h2, h3(default: h1)Heading ์ปดํฌ๋„ŒํŠธ์˜ HTML ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.
size?xs,ย sm,ย md,ย lg,ย xlHeading ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
weight?light,ย regular,ย boldHeading ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
css?CSSPropHeading ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Heading>๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Heading>
<Heading as="h2">๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Heading>
<Heading as="h3" size="xl" weight='regular'>๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Heading>
<Heading as="h3" css='color: red;'>๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Heading>

Input

์ธํ’‹ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
customWidth?stringInput ์ปดํฌ๋„ŒํŠธ์˜ ๋„ˆ๋น„๊ฐ’์ž…๋‹ˆ๋‹ค.
minWidth?stringInput ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์†Œ ๋„ˆ๋น„๊ฐ’์ž…๋‹ˆ๋‹ค.
isError?booleanInput value์— ์—๋Ÿฌ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
rightIcon?ReactNodeInput ์ปดํฌ๋„ŒํŠธ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•  ์•„์ด์ฝ˜์ž…๋‹ˆ๋‹ค.
errorMessage?stringisError๊ฐ€ true์ผ ๋•Œ ๋ณด์—ฌ์ค„ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

Example

<Input
  customWidth="100%"
  onChange={modifyNickname}
/>
<Input
	customWidth="100%"
	rightIcon={
	  <Button customHeight="36px" color="white">
	    <SvgIcon variant="search" />
	  </Button>
	}
/>

Link

๋‹ค๋ฅธ URL๋กœ ์—ฐ๊ฒฐํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.ย react-router-dom๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Props

propsvaluedescription
as?a, Link(react-router-dom์˜ Link),ย NavLink(react-router-dom์˜ NavLink) (default:ย a)Link ์ปดํฌ๋„ŒํŠธ๋กœ ์‚ฌ์šฉํ•  HTML ํƒœ๊ทธ ๋˜๋Š” ์™ธ๋ถ€ ๋งํฌ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.
isExternal?boolean (default: false)Link ์ปดํฌ๋„ŒํŠธ์˜ ๋งํฌ ํด๋ฆญ ์‹œ ์ƒˆ๋กœ์šด ํƒญ์œผ๋กœ ์—ด๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
blockboolean (default: false)Link ์ปดํฌ๋„ŒํŠธ์˜ ๋””์Šคํ”Œ๋ ˆ์ด ์†์„ฑ์ด block์ธ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
css?CSSPropLink ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Link href='#'>๋งํฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.</Link>
<Link href='#' isExternal></Link>
<Link href='#' isExternal block>๋งํฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.</Link>

// react-router-dom์„ ์‚ฌ์šฉํ•œ ์˜ˆ์‹œ
import {Link as RouterLink, NavLink} from 'react-router-dom'

<Link as={RouterLink} to='/'>๋งํฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.</Link>
<Link as={NavLink} to='/' isExternal>๋งํฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.</Link>

Skeleton

๋กœ๋”ฉ ์ƒํƒœ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
width?string , numberSkeleton ์ปดํฌ๋„ŒํŠธ์˜ ๋„ˆ๋น„๊ฐ’์ž…๋‹ˆ๋‹ค.
height?string , numberSkeleton ์ปดํฌ๋„ŒํŠธ์˜ ๋†’์ด๊ฐ’์ž…๋‹ˆ๋‹ค.

Example

<Skeleton width={90} height={90} />

Spacing

ํ™”๋ฉด ๊ตฌ์—ญ์„ ๋‚˜๋ˆ„๋Š” ์—ฌ๋ฐฑ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
direction?vertical, horizontal (default: vertical)Spacing ์ปดํฌ๋„ŒํŠธ์˜ ๋ฐฉํ–ฅ์ž…๋‹ˆ๋‹ค.
sizenumberSpacing ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

Example

<Spacing size={10} />
<Spacing direction="horizontal" size={10} />

Text

ํ…์ŠคํŠธ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
children?ReactNodeText ์ปดํฌ๋„ŒํŠธ์˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.
as?p, span (default: p)Text ์ปดํฌ๋„ŒํŠธ์˜ HTML ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.
size?xs, sm, md, lg, xl (default: md)Text ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค.
weight?light, regular, bold(default: regular)Text ์ปดํฌ๋„ŒํŠธ์˜ ํฐํŠธ ๊ฐ€์ค‘์น˜์ž…๋‹ˆ๋‹ค.
lineHeight?xs, sm, md, lg, xl(default: md)Text ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ๋†’์ด์ž…๋‹ˆ๋‹ค.
color?CSSProperties'color' (default: โ€˜#232527โ€™)Text ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ์ƒ‰์ƒ์ž…๋‹ˆ๋‹ค.
align?left, center, right (default: left)Text ์ปดํฌ๋„ŒํŠธ์˜ ํ…์ŠคํŠธ ์ •๋ ฌ์ž…๋‹ˆ๋‹ค.
css?CSSPropText ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉํ•  CSS ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค.

Example

<Text>๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Text>
<Text as="span">๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Text>
<Text weight="bold" size="xl">๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Text>
<Text css="color: red;">๋กœ๋ง์˜ค์šฐํƒ€ํ•ดํ™ฉ</Text>

Textarea

๋ฉ€ํ‹ฐ๋ผ์ธ ํ…์ŠคํŠธ ์ž…๋ ฅ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Props

propsvaluedescription
resize?both,ย horizontal,ย vertical,ย none (default:ย both)Textarea ์ปดํฌ๋„ŒํŠธ์˜ ํฌ๊ธฐ ์žฌ์กฐ์ • ๋ฐฉํ–ฅ ์„ค์ •์ž…๋‹ˆ๋‹ค.
errorMessage?stringTextarea ์ปดํฌ๋„ŒํŠธ์˜ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

Example

<Textarea />
<Textarea resize="vertical" rows={10} placeholder="๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”."/>

Toast

์•Œ๋žŒ์„ ๋„์šฐ๋Š” ํ† ์ŠคํŠธ ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

Example

const { toast } = useToastActionContext();

toast.success('์„ฑ๊ณต');
toast.error('์‹คํŒจ');
0.4.3

1 year ago

0.4.2

2 years ago

0.4.1

2 years ago

0.4.0

2 years ago

0.3.18

2 years ago

0.3.17

2 years ago

0.3.16

2 years ago

0.3.15

2 years ago

0.3.14

2 years ago

0.3.13

2 years ago

0.3.12

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.3.9

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago