Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[기본 레이아웃 컴포넌트] 윤생(이윤성) 미션 제출합니다. #11

Merged
merged 26 commits into from
Sep 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
62f5704
chore: 프로젝트 세팅
2yunseong Sep 16, 2023
39d1ea9
feat: Container 요구사항 구현
2yunseong Sep 16, 2023
1dc1b7f
feat: Flex 요구사항 구현
2yunseong Sep 16, 2023
860364c
feat: Grid 요구사항 구현
2yunseong Sep 16, 2023
c553390
feat: 진입점 생성
2yunseong Sep 16, 2023
3d2d057
chore: 빌드 파일 업로드
2yunseong Sep 16, 2023
a0da78e
chore: 빌드 파일 업로드
2yunseong Sep 16, 2023
1158974
chore: 배포설정 변경
2yunseong Sep 16, 2023
54974f5
fix: Flex 타입 에러 수정
2yunseong Sep 16, 2023
62d447a
fix: import/export 방식 변경
2yunseong Sep 16, 2023
d7fd60f
1.0.1
2yunseong Sep 16, 2023
40880ac
chore: 불필요한 파일 삭제
2yunseong Sep 16, 2023
af8b190
chore: styled-components 설치
2yunseong Sep 16, 2023
cc853f0
refactor: css를 styled-components로 마이그레이션
2yunseong Sep 16, 2023
d387528
chore: 1.0.2버전
2yunseong Sep 16, 2023
9912c02
1.0.2
2yunseong Sep 16, 2023
27d3332
docs: README 수정
2yunseong Sep 17, 2023
25b0a02
feat: grid item 속성 추가
2yunseong Sep 17, 2023
152dd6d
1.1.0
2yunseong Sep 17, 2023
c3726b6
test: 스토리북 추가
2yunseong Sep 19, 2023
f3b21ac
chore: storybook 배포를 위한 chromatic 설치
2yunseong Sep 19, 2023
cd0e824
feat: background color 속성 추가
2yunseong Sep 19, 2023
903bf19
1.1.1
2yunseong Sep 19, 2023
b555175
feat: 새로운 빌드 버전
2yunseong Sep 20, 2023
8ae7936
1.1.2
2yunseong Sep 20, 2023
28c807a
fix: 에러가 나는 컴포넌트 props 네이밍 수정
2yunseong Sep 23, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .babelrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"sourceType": "unambiguous",
"presets": [
[
"@babel/preset-env",
{
"targets": {
guridaek marked this conversation as resolved.
Show resolved Hide resolved
"chrome": 100,
"safari": 15,
"firefox": 91
}
}
],
"@babel/preset-typescript",
"@babel/preset-react"
],
"plugins": []
}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules/
19 changes: 19 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { StorybookConfig } from '@storybook/react-webpack5';

const config: StorybookConfig = {
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
'@storybook/addon-onboarding',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/react-webpack5',
options: {},
},
docs: {
autodocs: 'tag',
},
};
export default config;
15 changes: 15 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { Preview } from "@storybook/react";

const preview: Preview = {
parameters: {
actions: { argTypesRegex: "^on[A-Z].*" },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/,
},
},
},
};

export default preview;
138 changes: 132 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,132 @@
<p align="middle" >
<img width="100px;" src="https://em-content.zobj.net/source/skype/289/straight-ruler_1f4cf.png"/>
</p>
<h2 align="middle">누구나 사용할 수 있는 레이아웃 컴포넌트</h2>
<p align="middle">재사용 가능한 레이아웃 컴포넌트 제작과 배포</p>
<br/>
# yunseong-layout-component

## 개요

react 프레임워크에서 사용할 수 있는 여러가지 layout 컴포넌트 라이브러리입니다.

## 설치

```
npm i yunseong-layout-component
```

## Container

### 설명

중앙에 배치하는 레이아웃입니다. 속성을 이용해 최대 너비와 최소 너비를 설정할 수 있습니다.

### 속성

기본적으로 너비는 `maxWidth`값을 따릅니다. 지정하지 않을 시, 뷰포트의 너비값을 가집니다.

`maxWidth?:number` : 픽셀단위의 최대 너비를 지정합니다. 지정하지 않을 시, 뷰포트의
너비로 지정됩니다.

`minWidth?` : 픽셀 단위의 최소 너비를 지정합니다. 지정하지 않으면, 최대 너비값으로 지정합니다.

### 사용 예시

```tsx
<Container minWidth={500} maxWidth={1440}>
<div>...</div>
</Container>
```

## Flex

### 설명

요소를 선형적으로 배치하기 위한 Flex 레이아웃 입니다. 너비와 높이는 부모 요소의 값을 상속합니다.

### 속성

`direction?:'row' | 'row-reverse' | 'column' | 'column-reverse'` : flex layout의 메인 축의 정렬 방향을 지정합니다. 기본 값은 row 입니다.

`justify: 'start' | 'center' | 'space-between' | 'space-around' | 'space-evenly'` : flex에 속하는 아이템의 메인 축에 따른 정렬 방식을 지정합니다. 기본값은 start 입니다.

`align: 'center' | 'start' | 'end'`: 메인 축과 교차하는 축의 정렬 방식을 지정합니다. 기본 값은 start입니다.

`gap:number`: 픽셀 단위의 간격을 지정합니다. 기본값은 0 입니다.

### 사용 예시

```tsx
<Flex direction='column' justify='center' align='center' gap={4}>
<FlexItem>1</FlexItem>
<FlexItem>2</FlexItem>
<FlexItem>3</FlexItem>
</Flex>
```

## FlexItem

### 설명

Flex 레이아웃의 개별 요소를 배치시킬 수 있는 레이아웃 입니다.

### 속성

`align: 'auto' | 'stretch' | 'flex-start' | 'flex-end' | 'center' | 'baseline'`: 개별 요소에 지정되는 정렬 기준입니다. 기본 값은 auto이며, 부모의 정렬 기준(align-items)을 상속합니다.

### 사용 예시

```tsx
<Flex direction='column' justify='center' align='center' gap={4}>
<FlexItem align='end'>1</FlexItem>
<FlexItem>2</FlexItem>
<FlexItem>3</FlexItem>
</Flex>
```

## Grid

### 설명

격자형 레이아웃입니다. 행과 열을 지정할 수 있습니다. 기본 행과 열 값은 10행 10열입니다. 너비는 부모값을 상속 받습니다.

### 속성

`columns: number` : 열의 갯수를 지정합니다. 크기는 기준 너비를 동일한 비율로 가져갑니다. 기본 값은 10입니다.

`rows: number` : 행의 갯수를 지정합니다. 기본값은 10입니다.

`gap: number` : 픽셀 단위의 간격을 지정합니다. 기본값은 0입니다.

### 사용 예시

```tsx
<Grid columns={3}>
<GridItem>A</GridItem>
<GridItem>B</GridItem>
<GridItem>C</GridItem>
<GridItem>D</GridItem>
<GridItem>E</GridItem>
</Grid>
```

## GridItem

### 설명

Grid 컴포넌트에 속하는 아이템입니다. 각 요소가 그리드에서 얼마나 차지할 지 비율을 조절할 수 있습니다.

### 속성

기본 grid-row, grid column 속성을 따릅니다. grid-direction-start, end 의 단축 속성만 사용합니다.

`gridRow: ${number}/${number} | 'auto'` : 단축 속성을 사용합니다. 숫자는 정수만 유효합니다. 기본값은 auto 입니다.

`gridCol: ${number}/${number} | 'auto'` : 단축 속성을 사용합니다. 숫자는 정수만 유효합니다. 기본값은 auto 입니다.

### 사용 예시

```tsx
<Grid columns={3}>
<GridItem gridRow='1/3'>A</GridItem>
<GridItem>B</GridItem>
<GridItem>C</GridItem>
<GridItem>D</GridItem>
<GridItem>E</GridItem>
</Grid>
```
7 changes: 7 additions & 0 deletions dist/cjs/components/Container/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { PropsWithChildren } from 'react';
interface ContainerProps extends PropsWithChildren {
maxWidth?: number;
minWidth?: number;
}
declare const Container: ({ minWidth, maxWidth, children, }: Partial<ContainerProps>) => import("react/jsx-runtime").JSX.Element;
export default Container;
27 changes: 27 additions & 0 deletions dist/cjs/components/Container/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/cjs/components/Container/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions dist/cjs/components/Flex/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { PropsWithChildren } from 'react';
interface FlexProps extends PropsWithChildren {
direction: 'row' | 'row-reverse' | 'column' | 'column-reverse';
justify: 'start' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
align: 'center' | 'start' | 'end';
gap: number;
}
declare const Flex: ({ direction, justify, align, gap, children, }: Partial<FlexProps>) => import("react/jsx-runtime").JSX.Element;
export default Flex;
31 changes: 31 additions & 0 deletions dist/cjs/components/Flex/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/cjs/components/Flex/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions dist/cjs/components/FlexItem/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { PropsWithChildren } from 'react';
interface FlexItemProps extends PropsWithChildren {
align: 'auto' | 'stretch' | 'flex-start' | 'flex-end' | 'center' | 'baseline';
}
declare const FlexItem: ({ align, children }: Partial<FlexItemProps>) => import("react/jsx-runtime").JSX.Element;
export default FlexItem;
22 changes: 22 additions & 0 deletions dist/cjs/components/FlexItem/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/cjs/components/FlexItem/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions dist/cjs/components/Grid/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { PropsWithChildren } from 'react';
interface GridProps extends PropsWithChildren {
rows: number;
columns: number;
gap: number;
}
declare const Grid: ({ children, rows, columns, gap, }: Partial<GridProps>) => import("react/jsx-runtime").JSX.Element;
export default Grid;
28 changes: 28 additions & 0 deletions dist/cjs/components/Grid/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/cjs/components/Grid/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions dist/cjs/components/GridItem/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { PropsWithChildren } from 'react';
interface GridItemProps extends PropsWithChildren {
}
declare const GridItem: ({ children }: GridItemProps) => import("react/jsx-runtime").JSX.Element;
export default GridItem;
19 changes: 19 additions & 0 deletions dist/cjs/components/GridItem/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dist/cjs/components/GridItem/index.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions dist/cjs/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import Container from './components/Container';
import Grid from './components/Grid';
import GridItem from './components/GridItem';
import Flex from './components/Flex';
import FlexItem from './components/FlexItem';
export { Container };
export { Grid };
export { GridItem };
export { Flex };
export { FlexItem };
Loading