├── .changeset ├── README.md └── config.json ├── .cursor └── rules │ └── rules.mdc ├── .github ├── CODEOWNERS ├── PULL_REQUEST_TEMPLATE.md └── workflows │ ├── auto-assign.yml │ ├── release.yml │ └── vitest.yml ├── .gitignore ├── .npmrc ├── .prettierrc.js ├── .vscode ├── settings.json └── tasks.json ├── README.md ├── apps └── docs │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .storybook │ ├── main.ts │ └── preview.ts │ ├── CHANGELOG.md │ ├── README.md │ ├── index.html │ ├── package.json │ ├── public │ ├── next.svg │ ├── turborepo.svg │ ├── vercel.svg │ └── vite.svg │ ├── src │ ├── App.css │ ├── App.tsx │ ├── assets │ │ └── react.svg │ ├── index.css │ ├── main.tsx │ ├── stories │ │ ├── Button.stories.tsx │ │ ├── Callout.stories.tsx │ │ ├── CheckBox.stories.tsx │ │ ├── Chip.stories.tsx │ │ ├── Colors.stories.tsx │ │ ├── Configure.mdx │ │ ├── Dialog.stories.tsx │ │ ├── FieldBox.stories.tsx │ │ ├── Fonts.stories.tsx │ │ ├── Header.stories.ts │ │ ├── Header.tsx │ │ ├── Icons.stories.tsx │ │ ├── Page.stories.ts │ │ ├── Page.tsx │ │ ├── Radio.stories.tsx │ │ ├── SearchField.stories.tsx │ │ ├── Select.stories.tsx │ │ ├── SelectV2NoTriggerContent.stories.tsx │ │ ├── SelectV2WithTriggerContent.stories.tsx │ │ ├── Skeleton.stories.tsx │ │ ├── Tab.stories.tsx │ │ ├── Tag.stories.tsx │ │ ├── TextArea.stories.tsx │ │ ├── TextField.stories.tsx │ │ ├── Toast.stories.tsx │ │ ├── Toggle.stories.tsx │ │ ├── UserMention.stories.tsx │ │ ├── header.css │ │ └── page.css │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts ├── package.json ├── packages ├── colors │ ├── CHANGELOG.md │ ├── index.ts │ ├── package.json │ ├── src │ │ └── colors.ts │ └── tsconfig.json ├── eslint-config-custom │ ├── README.md │ ├── library.js │ ├── next.js │ ├── package.json │ └── react-internal.js ├── fonts │ ├── CHANGELOG.md │ ├── index.ts │ ├── package.json │ ├── src │ │ └── fonts.ts │ └── tsconfig.json ├── icons │ ├── CHANGELOG.md │ ├── README.md │ ├── index.ts │ ├── package.json │ ├── src │ │ ├── Communication │ │ │ ├── ic-archive.tsx │ │ │ ├── ic-birthday-primary.tsx │ │ │ ├── ic-birthday-secondary.tsx │ │ │ ├── ic-bookmark.tsx │ │ │ ├── ic-edit.tsx │ │ │ ├── ic-eye-off.tsx │ │ │ ├── ic-eye.tsx │ │ │ ├── ic-location-filled.tsx │ │ │ ├── ic-location.tsx │ │ │ ├── ic-mail.tsx │ │ │ ├── ic-mento.tsx │ │ │ ├── ic-message-alert.tsx │ │ │ ├── ic-message-chat.tsx │ │ │ ├── ic-message-check.tsx │ │ │ ├── ic-message-dots.tsx │ │ │ ├── ic-message-plus.tsx │ │ │ ├── ic-message-question.tsx │ │ │ ├── ic-message-square.tsx │ │ │ ├── ic-message-text.tsx │ │ │ ├── ic-message-x.tsx │ │ │ ├── ic-phone.tsx │ │ │ ├── ic-pin.tsx │ │ │ ├── ic-send.tsx │ │ │ └── index.ts │ │ ├── Editor │ │ │ ├── ic-align-center.tsx │ │ │ ├── ic-align-justify.tsx │ │ │ ├── ic-align-left.tsx │ │ │ ├── ic-align-right.tsx │ │ │ ├── ic-attachment.tsx │ │ │ ├── ic-bold.tsx │ │ │ ├── ic-code.tsx │ │ │ ├── ic-delete.tsx │ │ │ ├── ic-dotpoints.tsx │ │ │ ├── ic-italic.tsx │ │ │ ├── ic-left-indent.tsx │ │ │ ├── ic-letter-spacing.tsx │ │ │ ├── ic-line-height.tsx │ │ │ ├── ic-paragraph-spacing.tsx │ │ │ ├── ic-paragraph-wrap.tsx │ │ │ ├── ic-right-indent.tsx │ │ │ ├── ic-type-strikethrough.tsx │ │ │ ├── ic-type.tsx │ │ │ ├── ic-underline.tsx │ │ │ ├── ic-write.tsx │ │ │ ├── ic-zoom-in.tsx │ │ │ ├── ic-zoom-out.tsx │ │ │ └── index.ts │ │ ├── Feedback │ │ │ ├── ic-alert-circle.tsx │ │ │ ├── ic-alert-triangle.tsx │ │ │ ├── ic-bell-active.tsx │ │ │ ├── ic-bell-off.tsx │ │ │ ├── ic-bell.tsx │ │ │ ├── ic-help-circle.tsx │ │ │ ├── ic-info-circle.tsx │ │ │ ├── ic-thumbs-down.tsx │ │ │ ├── ic-thumbs-up.tsx │ │ │ └── index.ts │ │ ├── Files │ │ │ ├── ic-file-check.tsx │ │ │ ├── ic-file-download.tsx │ │ │ ├── ic-file-minus.tsx │ │ │ ├── ic-file-plus.tsx │ │ │ ├── ic-file-search.tsx │ │ │ ├── ic-file-text.tsx │ │ │ ├── ic-file-x.tsx │ │ │ ├── ic-file.tsx │ │ │ ├── ic-folder-check.tsx │ │ │ ├── ic-folder-download.tsx │ │ │ ├── ic-folder.tsx │ │ │ └── index.ts │ │ ├── General │ │ │ ├── ic-copy.tsx │ │ │ ├── ic-dots-vertical.tsx │ │ │ ├── ic-download-cloud.tsx │ │ │ ├── ic-home.tsx │ │ │ ├── ic-link.tsx │ │ │ ├── ic-lock.tsx │ │ │ ├── ic-log-in.tsx │ │ │ ├── ic-log-out.tsx │ │ │ ├── ic-menu.tsx │ │ │ ├── ic-search.tsx │ │ │ ├── ic-settings.tsx │ │ │ ├── ic-share.tsx │ │ │ ├── ic-sliders.tsx │ │ │ ├── ic-trash.tsx │ │ │ ├── ic-unlocked.tsx │ │ │ ├── ic-upload-cloud.tsx │ │ │ └── index.ts │ │ ├── Interaction │ │ │ ├── ic-arrow-down-left.tsx │ │ │ ├── ic-arrow-down-right.tsx │ │ │ ├── ic-arrow-down.tsx │ │ │ ├── ic-arrow-left.tsx │ │ │ ├── ic-arrow-right.tsx │ │ │ ├── ic-arrow-up-left.tsx │ │ │ ├── ic-arrow-up-right.tsx │ │ │ ├── ic-arrow-up.tsx │ │ │ ├── ic-check-circle.tsx │ │ │ ├── ic-check-square.tsx │ │ │ ├── ic-check.tsx │ │ │ ├── ic-chevron-down.tsx │ │ │ ├── ic-chevron-left.tsx │ │ │ ├── ic-chevron-right.tsx │ │ │ ├── ic-chevron-up.tsx │ │ │ ├── ic-flip-backward.tsx │ │ │ ├── ic-flip-forward.tsx │ │ │ ├── ic-heart.tsx │ │ │ ├── ic-plus-circle.tsx │ │ │ ├── ic-plus-square.tsx │ │ │ ├── ic-plus.tsx │ │ │ ├── ic-refresh.tsx │ │ │ ├── ic-switch-horizontal.tsx │ │ │ ├── ic-switch-vertical.tsx │ │ │ ├── ic-x-circle.tsx │ │ │ ├── ic-x-close.tsx │ │ │ └── index.ts │ │ ├── Logo │ │ │ ├── ic-apple.tsx │ │ │ ├── ic-behance.tsx │ │ │ ├── ic-facebook.tsx │ │ │ ├── ic-github.tsx │ │ │ ├── ic-google-color.tsx │ │ │ ├── ic-google-mono.tsx │ │ │ ├── ic-instagram.tsx │ │ │ ├── ic-kakao.tsx │ │ │ ├── ic-linkedin.tsx │ │ │ ├── ic-playstore.tsx │ │ │ └── index.ts │ │ ├── Media │ │ │ ├── ic-camera-off.tsx │ │ │ ├── ic-camera-plus.tsx │ │ │ ├── ic-camera.tsx │ │ │ ├── ic-image-check.tsx │ │ │ ├── ic-image-down.tsx │ │ │ ├── ic-image-left.tsx │ │ │ ├── ic-image-plus.tsx │ │ │ ├── ic-image-right.tsx │ │ │ ├── ic-image-up.tsx │ │ │ ├── ic-image.tsx │ │ │ ├── ic-power.tsx │ │ │ ├── ic-repeat.tsx │ │ │ ├── ic-video-off.tsx │ │ │ ├── ic-video.tsx │ │ │ └── index.ts │ │ ├── Time │ │ │ ├── ic-alarm-clock-check.tsx │ │ │ ├── ic-alarm-clock-minus.tsx │ │ │ ├── ic-alarm-clock-off.tsx │ │ │ ├── ic-alarm-clock-plus.tsx │ │ │ ├── ic-alarm-clock.tsx │ │ │ ├── ic-calendar-check.tsx │ │ │ ├── ic-calendar-date.tsx │ │ │ ├── ic-calendar-plus.tsx │ │ │ ├── ic-calendar.tsx │ │ │ ├── ic-clock-check.tsx │ │ │ ├── ic-clock-plus.tsx │ │ │ ├── ic-clock-snooze.tsx │ │ │ ├── ic-clock.tsx │ │ │ └── index.ts │ │ └── Users │ │ │ ├── ic-user-check.tsx │ │ │ ├── ic-user-edit.tsx │ │ │ ├── ic-user-minus.tsx │ │ │ ├── ic-user-plus.tsx │ │ │ ├── ic-user-x.tsx │ │ │ ├── ic-user.tsx │ │ │ ├── ic-users-check.tsx │ │ │ ├── ic-users-minus.tsx │ │ │ ├── ic-users-plus.tsx │ │ │ ├── ic-users-x.tsx │ │ │ ├── ic-users.tsx │ │ │ └── index.ts │ └── tsconfig.json ├── tsconfig │ ├── base.json │ ├── nextjs.json │ ├── package.json │ └── react-library.json └── ui │ ├── .eslintrc.js │ ├── .gitignore │ ├── .npmignore │ ├── Button │ ├── Button.tsx │ ├── constants.ts │ ├── index.tsx │ ├── style.css.ts │ ├── test │ │ └── Button.test.tsx │ ├── types.ts │ └── utils.ts │ ├── CHANGELOG.md │ ├── Callout │ ├── Callout.tsx │ ├── constants.ts │ ├── index.tsx │ ├── style.css.ts │ └── types.ts │ ├── Chip │ ├── Chip.tsx │ ├── constants.ts │ ├── index.tsx │ ├── style.css.ts │ └── types.ts │ ├── Control │ ├── CheckBox.tsx │ ├── Radio.tsx │ ├── Toggle.tsx │ ├── index.ts │ ├── style.css.ts │ └── test │ │ ├── Checkbox.test.tsx │ │ ├── Radio.test.tsx │ │ └── Toggle.test.tsx │ ├── Dialog │ ├── Dialog.tsx │ ├── DialogComponent.tsx │ ├── DialogProvider.tsx │ ├── components │ │ ├── index.tsx │ │ └── style.css.ts │ ├── index.tsx │ ├── style.css.ts │ ├── types.ts │ └── useDialog.tsx │ ├── FieldBox │ ├── FieldBox.tsx │ ├── components │ │ ├── BottomAddon.tsx │ │ ├── ErrorMessage.tsx │ │ ├── Label.tsx │ │ ├── TopAddon.tsx │ │ └── index.ts │ ├── index.ts │ └── style.css.ts │ ├── Input │ ├── SearchField.tsx │ ├── Select.tsx │ ├── TextArea.tsx │ ├── TextField.tsx │ ├── UserMention.tsx │ ├── deprecated │ │ └── Select.tsx │ ├── icons │ │ ├── AlertCircleIcon.tsx │ │ ├── SearchIcon.tsx │ │ ├── SendIcon.tsx │ │ └── XCircleIcon.tsx │ ├── index.tsx │ └── style.css.ts │ ├── Skeleton │ ├── Skeleton.tsx │ ├── constants.ts │ ├── index.ts │ ├── style.css.ts │ ├── types.ts │ └── utils.ts │ ├── Tab │ ├── Tab.tsx │ ├── constants.ts │ ├── index.tsx │ ├── style.css.ts │ ├── test │ │ └── Tab.test.tsx │ └── utils.ts │ ├── Tag │ ├── Tag.tsx │ ├── constants.ts │ ├── index.tsx │ ├── style.css.ts │ ├── types.ts │ └── utils.ts │ ├── Test │ ├── Test.test.tsx │ ├── Test.tsx │ ├── index.tsx │ └── style.css.ts │ ├── Toast │ ├── Toast.tsx │ ├── ToastProvider.tsx │ ├── icons │ │ ├── alert.tsx │ │ ├── error.tsx │ │ ├── index.ts │ │ └── success.tsx │ ├── index.tsx │ ├── parts │ │ ├── index.tsx │ │ └── style.css.ts │ ├── types.ts │ └── useToast.tsx │ ├── cssVariables.ts │ ├── index.ts │ ├── package.json │ ├── scripts │ └── buildCssModules.js │ ├── theme.css.ts │ ├── tsconfig.json │ ├── tsup.config.ts │ ├── turbo │ └── generators │ │ ├── config.ts │ │ └── templates │ │ ├── component.hbs │ │ └── style.hbs │ ├── vitest.config.mjs │ └── vitest.setup.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── scripts └── vscode.sh ├── tsconfig.json └── turbo.json /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json", 3 | "changelog": "@changesets/cli/changelog", 4 | "commit": false, 5 | "fixed": [], 6 | "linked": [], 7 | "access": "public", 8 | "baseBranch": "main", 9 | "updateInternalDependencies": "patch", 10 | "ignore": [] 11 | } 12 | -------------------------------------------------------------------------------- /.cursor/rules/rules.mdc: -------------------------------------------------------------------------------- 1 | --- 2 | description: 3 | globs: 4 | alwaysApply: true 5 | --- 6 | You are an expert in TypeScript,React and Vanilla Extract. 7 | 8 | we are managing all packages by pnpm package manager and turborepo. 9 | 10 | ## Ground rules 11 | - 대답은 될 수 있으면 한국어로 할 것. 12 | 13 | ## Tech Stack 14 | - Turborepo를 통해서 모노레포 체계를 사용 중. 15 | - apps/docs: UI component 들의 스토리북 패키지 16 | - packages: Makers라는 사내 조직에서 이용 가능한 디자인 시스템 패키지들 17 | 18 | - pacakges 내 주요 패키지들 19 | - packages/ui: ui 컴포넌트들을 관리하는 패키지 20 | - packages/colors: 디자인 시스템 칼러들을 관리하는 패키지 21 | - packages/fonts: 디자인 시스템 폰트들을 관리하는 패키지 22 | - packages/icons: 디자인 시스템 아이콘들을 관리하는 패키지 23 | 24 | - 메인 기술 스택 25 | - react, turborepo, vanilla-extract, radix-ui, vitest, changeset, tsup 26 | 27 | ## Coding Rules 28 | - Prefer functional components over class components. Avoid using class components. 29 | - Use interfaces to define the props types for components. 30 | - Prefer writing CSS styles for a specific component within the same file. However, it's acceptable to separate the styles if they grow too large. 31 | - Scalability and reusability are the top priorities when designing components. 32 | - Use descriptive variable names with auxiliary verbs (e.g., isLoading, hasError). 33 | - Prefer a co-located structure. Group related concerns together in the same place. 34 | - Prefer iteration and modularization over code duplication. 35 | - Always use absolute path. 36 | 37 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | @suwonthugger @wuzoo -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## 변경사항 2 | 3 | 4 | 5 | ## 링크 6 | 7 | 8 | 9 | ## 시급한 정도 10 | 11 | 🏃♂️ 보통 : 최대한 빠르게 리뷰 부탁드립니다. 12 | 13 | 14 | 15 | 16 | ## 기타 사항 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.github/workflows/auto-assign.yml: -------------------------------------------------------------------------------- 1 | name: Auto Assign PR Author 2 | 3 | on: 4 | pull_request: 5 | types: [opened] 6 | 7 | jobs: 8 | auto-assign: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v3 14 | 15 | - name: Install GitHub CLI 16 | run: | 17 | sudo apt-get update 18 | sudo apt-get install -y gh 19 | 20 | - name: Auto-assign PR author 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | run: | 24 | gh auth setup-git 25 | gh pr edit ${{ github.event.pull_request.number }} --add-assignee ${{ github.event.pull_request.user.login }} 26 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | concurrency: ${{ github.workflow }}-${{ github.ref }} 9 | 10 | jobs: 11 | release: 12 | name: Release 13 | runs-on: ubuntu-latest 14 | steps: 15 | - name: Checkout Repo 16 | uses: actions/checkout@v3 17 | 18 | - name: Setup pnpm 19 | uses: pnpm/action-setup@v2 20 | with: 21 | version: 9 22 | 23 | - name: Setup Node.js 18 24 | uses: actions/setup-node@v3 25 | with: 26 | node-version: 18 27 | cache: 'pnpm' 28 | 29 | - name: Install Dependencies 30 | run: pnpm install 31 | 32 | - name: Configure npm 33 | run: | 34 | cat << EOF > "$HOME/.npmrc" 35 | auto-install-peers = true 36 | //registry.npmjs.org/:_authToken=$NPM_TOKEN 37 | EOF 38 | env: 39 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 40 | 41 | - name: Create Release Pull Request or Publish to npm 42 | id: changesets 43 | uses: changesets/action@v1 44 | with: 45 | version: pnpm changeset version 46 | publish: pnpm publish-packages 47 | env: 48 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 49 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 50 | -------------------------------------------------------------------------------- /.github/workflows/vitest.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | pull_request: 5 | branches: [main] 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout Repo 13 | uses: actions/checkout@v3 14 | 15 | - name: Setup Node.js 18 16 | uses: actions/setup-node@v3 17 | with: 18 | node-version: '18' 19 | 20 | - name: Setup pnpm 21 | uses: pnpm/action-setup@v2 22 | with: 23 | version: 9 24 | 25 | - name: Install Dependencies 26 | run: pnpm install 27 | 28 | - name: Build Packages 29 | run: pnpm build 30 | 31 | - name: Run Vitest Tests 32 | run: pnpm test 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # testing 9 | coverage 10 | 11 | # next.js 12 | .next/ 13 | out/ 14 | build 15 | 16 | # misc 17 | .DS_Store 18 | *.pem 19 | 20 | # debug 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | pnpm-debug.log* 25 | 26 | # local env files 27 | .env 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # turbo 34 | .turbo 35 | 36 | # vercel 37 | .vercel 38 | 39 | dist/ 40 | .idea 41 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | manage-package-manager-versions=true -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | /** @type {import("prettier").Options} */ 2 | const config = { 3 | arrowParens: "always", 4 | endOfLine: "lf", 5 | jsxSingleQuote: true, 6 | printWidth: 120, 7 | quoteProps: "consistent", 8 | singleQuote: true, 9 | tabWidth: 2, 10 | trailingComma: "all", 11 | }; 12 | 13 | module.exports = config; 14 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib", 3 | "editor.formatOnSave": true, 4 | "editor.defaultFormatter": "esbenp.prettier-vscode", 5 | "terminal.integrated.profiles.osx": { 6 | "zsh": { 7 | "path": "/bin/zsh", 8 | "args": ["-l", "-i"] 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Dev start", 6 | "type": "shell", 7 | "command": "./scripts/vscode.sh", 8 | "group": { 9 | "kind": "build", 10 | "isDefault": true 11 | }, 12 | "problemMatcher": [], 13 | "runOptions": { 14 | "runOn": "folderOpen" 15 | } 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /apps/docs/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:react-hooks/recommended', 8 | 'plugin:storybook/recommended', 9 | ], 10 | ignorePatterns: ['dist', '.eslintrc.cjs'], 11 | parser: '@typescript-eslint/parser', 12 | plugins: ['react-refresh'], 13 | rules: { 14 | 'react-refresh/only-export-components': ['warn', { allowConstantExport: true }], 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /apps/docs/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | 26 | storybook-static 27 | -------------------------------------------------------------------------------- /apps/docs/.storybook/main.ts: -------------------------------------------------------------------------------- 1 | import type { StorybookConfig } from "@storybook/react-vite"; 2 | 3 | import { join, dirname } from "path"; 4 | 5 | /** 6 | * This function is used to resolve the absolute path of a package. 7 | * It is needed in projects that use Yarn PnP or are set up within a monorepo. 8 | */ 9 | function getAbsolutePath(value: string): any { 10 | return dirname(require.resolve(join(value, "package.json"))); 11 | } 12 | const config: StorybookConfig = { 13 | stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], 14 | addons: [ 15 | getAbsolutePath("@storybook/addon-links"), 16 | getAbsolutePath("@storybook/addon-essentials"), 17 | getAbsolutePath("@storybook/addon-onboarding"), 18 | getAbsolutePath("@storybook/addon-interactions"), 19 | ], 20 | framework: { 21 | name: getAbsolutePath("@storybook/react-vite"), 22 | options: {}, 23 | }, 24 | docs: { 25 | autodocs: "tag", 26 | }, 27 | async viteFinal(config) { 28 | const { mergeConfig } = await import('vite'); 29 | 30 | return mergeConfig(config, { 31 | optimizeDeps: ['@sopt-makers/icons'] 32 | }); 33 | }, 34 | }; 35 | export default config; -------------------------------------------------------------------------------- /apps/docs/.storybook/preview.ts: -------------------------------------------------------------------------------- 1 | import type { Preview } from "@storybook/react"; 2 | 3 | import "../src/index.css"; 4 | import "@sopt-makers/ui/dist/index.css"; 5 | 6 | const preview: Preview = { 7 | parameters: { 8 | actions: { argTypesRegex: "^on[A-Z].*" }, 9 | controls: { 10 | matchers: { 11 | color: /(background|color)$/i, 12 | date: /Date$/i, 13 | }, 14 | }, 15 | layout: "centered", 16 | backgrounds: { 17 | default: "dark", // 기본 배경을 'dark'로 설정 18 | values: [ 19 | { name: "dark", value: "#0F1012" }, // 'dark' 배경의 색상을 검정색으로 지정 20 | { name: "white", value: "#ffffff" }, 21 | ], 22 | }, 23 | }, 24 | }; 25 | 26 | export default preview; 27 | -------------------------------------------------------------------------------- /apps/docs/README.md: -------------------------------------------------------------------------------- 1 | # React + TypeScript + Vite 2 | 3 | This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. 4 | 5 | Currently, two official plugins are available: 6 | 7 | - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh 8 | - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh 9 | 10 | ## Expanding the ESLint configuration 11 | 12 | If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: 13 | 14 | - Configure the top-level `parserOptions` property like this: 15 | 16 | ```js 17 | export default { 18 | // other rules... 19 | parserOptions: { 20 | ecmaVersion: 'latest', 21 | sourceType: 'module', 22 | project: ['./tsconfig.json', './tsconfig.node.json'], 23 | tsconfigRootDir: __dirname, 24 | }, 25 | } 26 | ``` 27 | 28 | - Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` 29 | - Optionally add `plugin:@typescript-eslint/stylistic-type-checked` 30 | - Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list 31 | -------------------------------------------------------------------------------- /apps/docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |{message}
16 |{text}
16 | {children} 17 | = P & Children;
4 |
5 | export type DefaultIconType = "success" | "alert" | "error";
6 |
7 | export type ActionType = {
8 | name: string;
9 | } & React.ButtonHTMLAttributes