boottent-design 0.1.255 → 0.1.258
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 +50 -1
- package/bin/sync-docs.mjs +179 -0
- package/dist/article-asset-card-CGSemovn.cjs +1 -0
- package/dist/{article-asset-card-lw8aNjSM.js → article-asset-card-D1Ipe86b.js} +3 -2
- package/dist/camp-card-BRs3koNF.cjs +1 -0
- package/dist/{camp-card-7lzkmQep.js → camp-card-Bi7Li0p5.js} +3 -2
- package/dist/company-info-card-C00gMHAv.cjs +1 -0
- package/dist/{company-info-card-BVCaYbYN.js → company-info-card-D1U_poOk.js} +3 -2
- package/dist/components/article-asset-card.cjs.js +1 -1
- package/dist/components/article-asset-card.es.js +1 -1
- package/dist/components/camp-card.cjs.js +1 -1
- package/dist/components/camp-card.es.js +1 -1
- package/dist/components/company-info-card.cjs.js +1 -1
- package/dist/components/company-info-card.es.js +1 -1
- package/dist/components/event-card.cjs.js +1 -1
- package/dist/components/event-card.es.js +1 -1
- package/dist/components/lecturer-card.cjs.js +1 -1
- package/dist/components/lecturer-card.es.js +1 -1
- package/dist/components/main-banner-image.cjs.js +1 -1
- package/dist/components/main-banner-image.es.js +1 -1
- package/dist/components/mobile-camp-card.cjs.js +1 -1
- package/dist/components/mobile-camp-card.es.js +1 -1
- package/dist/components/portfolio-asset-card.cjs.js +1 -1
- package/dist/components/portfolio-asset-card.es.js +1 -1
- package/dist/components/premium-card.cjs.js +1 -1
- package/dist/components/premium-card.es.js +1 -1
- package/dist/components/title-tag-card.cjs.js +1 -1
- package/dist/components/title-tag-card.es.js +1 -1
- package/dist/components/youtube-video-modal.cjs.js +1 -1
- package/dist/components/youtube-video-modal.es.js +1 -1
- package/dist/components.cjs.js +1 -1
- package/dist/components.es.js +11 -11
- package/dist/design-system/components/article-asset-card.md +30 -0
- package/dist/design-system/components/blog-review-card.md +29 -0
- package/dist/design-system/components/camp-card.md +58 -0
- package/dist/design-system/components/company-info-card.md +31 -0
- package/dist/design-system/components/environment-asset-photo.md +31 -0
- package/dist/design-system/components/event-asset-banner.md +30 -0
- package/dist/design-system/components/event-card.md +39 -0
- package/dist/design-system/components/lecturer-card.md +37 -0
- package/dist/design-system/components/main-banner-image.md +40 -0
- package/dist/design-system/components/mobile-camp-card.md +60 -0
- package/dist/design-system/components/partner-list-card.md +31 -0
- package/dist/design-system/components/portfolio-asset-card.md +30 -0
- package/dist/design-system/components/premium-card.md +39 -0
- package/dist/design-system/components/title-tag-card.md +38 -0
- package/dist/design-system/components/youtube-video-modal.md +34 -0
- package/dist/design-system/design-system.md +138 -0
- package/dist/design-system/tokens.md +113 -0
- package/dist/design-system/ui/accordion.md +42 -0
- package/dist/design-system/ui/alert-dialog.md +53 -0
- package/dist/design-system/ui/anchor.md +48 -0
- package/dist/design-system/ui/aspect-ratio.md +36 -0
- package/dist/design-system/ui/avatar.md +35 -0
- package/dist/design-system/ui/badge.md +57 -0
- package/dist/design-system/ui/button.md +79 -0
- package/dist/design-system/ui/calendar.md +47 -0
- package/dist/design-system/ui/callout.md +42 -0
- package/dist/design-system/ui/card.md +41 -0
- package/dist/design-system/ui/checkbox.md +38 -0
- package/dist/design-system/ui/circled-check-button.md +33 -0
- package/dist/design-system/ui/command.md +50 -0
- package/dist/design-system/ui/dialog.md +44 -0
- package/dist/design-system/ui/dropdown-menu.md +44 -0
- package/dist/design-system/ui/file-uploader.md +49 -0
- package/dist/design-system/ui/form.md +52 -0
- package/dist/design-system/ui/highlight-text.md +30 -0
- package/dist/design-system/ui/icons.md +17 -0
- package/dist/design-system/ui/image.md +44 -0
- package/dist/design-system/ui/input.md +50 -0
- package/dist/design-system/ui/label.md +38 -0
- package/dist/design-system/ui/month-picker.md +44 -0
- package/dist/design-system/ui/multi-select.md +49 -0
- package/dist/design-system/ui/navigation-menu.md +42 -0
- package/dist/design-system/ui/popover.md +43 -0
- package/dist/design-system/ui/progress.md +45 -0
- package/dist/design-system/ui/radio-group.md +40 -0
- package/dist/design-system/ui/scroll-area.md +32 -0
- package/dist/design-system/ui/select.md +46 -0
- package/dist/design-system/ui/separator.md +32 -0
- package/dist/design-system/ui/simple-table.md +34 -0
- package/dist/design-system/ui/skeleton.md +43 -0
- package/dist/design-system/ui/slider.md +30 -0
- package/dist/design-system/ui/switch.md +30 -0
- package/dist/design-system/ui/symbols.md +17 -0
- package/dist/design-system/ui/tabs.md +44 -0
- package/dist/design-system/ui/tag.md +79 -0
- package/dist/design-system/ui/text.md +50 -0
- package/dist/design-system/ui/textarea.md +45 -0
- package/dist/design-system/ui/toast.md +66 -0
- package/dist/design-system/ui/toggle-group.md +50 -0
- package/dist/design-system/ui/toggle.md +68 -0
- package/dist/design-system/ui/tooltip.md +55 -0
- package/dist/design-system/usage.md +79 -0
- package/dist/design-system/when-to-use.md +127 -0
- package/dist/{event-card-DoePuHu8.js → event-card-C1mSACOR.js} +3 -2
- package/dist/event-card-DebLbRKd.cjs +1 -0
- package/dist/{lecturer-card-B80BJVu3.js → lecturer-card-BlzA-YP6.js} +3 -2
- package/dist/lecturer-card-CgSWLJ8r.cjs +1 -0
- package/dist/{main-banner-image-DoYpMy7T.js → main-banner-image-BRLhiQJZ.js} +8 -7
- package/dist/main-banner-image-Bh3AZqac.cjs +1 -0
- package/dist/mobile-camp-card-B4L0Eq0v.cjs +1 -0
- package/dist/{mobile-camp-card-BJi4yJLI.js → mobile-camp-card-B8rTQeTh.js} +25 -24
- package/dist/portfolio-asset-card-BdS7kkkT.cjs +1 -0
- package/dist/{portfolio-asset-card-C_opxeH0.js → portfolio-asset-card-DEMARh53.js} +5 -4
- package/dist/premium-card-1vtWPIUr.cjs +1 -0
- package/dist/{premium-card-BzFA2A5p.js → premium-card-CFQKDWqN.js} +14 -13
- package/dist/styles.css +1 -1
- package/dist/{title-tag-card-CEjHX43m.js → title-tag-card-Iowzns_v.js} +3 -2
- package/dist/title-tag-card-MFpE2-Nb.cjs +1 -0
- package/dist/types/progress.d.ts +13 -0
- package/dist/types/ui/progress.d.ts +2 -0
- package/dist/types/ui.d.ts +10 -0
- package/dist/ui/progress.cjs.js +1 -0
- package/dist/ui/progress.es.js +35 -0
- package/dist/ui.cjs.js +1 -1
- package/dist/ui.es.js +101 -99
- package/dist/{youtube-video-modal-CENnr9lf.js → youtube-video-modal-B_vy97Tt.js} +11 -10
- package/dist/youtube-video-modal-C4a0lovb.cjs +1 -0
- package/package.json +14 -4
- package/dist/DESIGN.md +0 -1963
- package/dist/article-asset-card-CM_WiHYI.cjs +0 -1
- package/dist/camp-card-Dr0h_TPh.cjs +0 -1
- package/dist/company-info-card-H1BDbRoL.cjs +0 -1
- package/dist/event-card-B7TYQ2do.cjs +0 -1
- package/dist/lecturer-card-CGPXVDdx.cjs +0 -1
- package/dist/main-banner-image-DdV4qseq.cjs +0 -1
- package/dist/mobile-camp-card-SBt5pHHv.cjs +0 -1
- package/dist/portfolio-asset-card-BlgNFtHc.cjs +0 -1
- package/dist/premium-card-Diea6qG_.cjs +0 -1
- package/dist/title-tag-card-Cn0V-8Ga.cjs +0 -1
- package/dist/youtube-video-modal-pooOcDO1.cjs +0 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# components/camp-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — camp-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## camp-card
|
|
11
|
+
|
|
12
|
+
> camp-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/camp-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type CampCardProps = ImageLoadingProps & {
|
|
25
|
+
brandName: string;
|
|
26
|
+
title: string;
|
|
27
|
+
batchName?: string;
|
|
28
|
+
imageUrl?: string | null;
|
|
29
|
+
imageAlt?: string;
|
|
30
|
+
tuitionText?: string;
|
|
31
|
+
locationText?: string;
|
|
32
|
+
scheduleText?: string;
|
|
33
|
+
startDate?: string | null;
|
|
34
|
+
endDate?: string | null;
|
|
35
|
+
period?: number | null;
|
|
36
|
+
tuition?: number | null;
|
|
37
|
+
earlyBirdTuition?: number | null;
|
|
38
|
+
earlyBirdEndDate?: string | null;
|
|
39
|
+
isFree?: boolean;
|
|
40
|
+
onoffText?: string | null;
|
|
41
|
+
cityLabels?: string[] | null;
|
|
42
|
+
offlineRequiredText?: string | null;
|
|
43
|
+
costOptionText?: string;
|
|
44
|
+
tags?: CampCardTag[];
|
|
45
|
+
statusBadge?: CampCardBadge;
|
|
46
|
+
adBadge?: CampCardBadge;
|
|
47
|
+
adTitle?: string;
|
|
48
|
+
isAd?: boolean;
|
|
49
|
+
className?: string;
|
|
50
|
+
style?: React.CSSProperties;
|
|
51
|
+
bookmarkSlot?: React.ReactNode;
|
|
52
|
+
latestBatchSlot?: React.ReactNode;
|
|
53
|
+
imageOverlaySlot?: React.ReactNode;
|
|
54
|
+
imageWrapper?: (image: React.ReactNode) => React.ReactNode;
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> 시각 예시는 Storybook(`camp-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# components/company-info-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — company-info-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## company-info-card
|
|
11
|
+
|
|
12
|
+
> company-info-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/company-info-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type CompanyInfoCardProps = ImageLoadingProps & {
|
|
25
|
+
intro: CompanyInfoCardData;
|
|
26
|
+
roleText?: string;
|
|
27
|
+
descriptionId?: string;
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
> 시각 예시는 Storybook(`company-info-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# components/environment-asset-photo.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — environment-asset-photo.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## environment-asset-photo
|
|
11
|
+
|
|
12
|
+
> environment-asset-photo 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/environment-asset-photo";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type EnvironmentAssetPhotoProps = ImageLoadingProps & {
|
|
25
|
+
imageUrl: string;
|
|
26
|
+
index: number;
|
|
27
|
+
onClick: () => void;
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
> 시각 예시는 Storybook(`environment-asset-photo.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# components/event-asset-banner.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — event-asset-banner.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## event-asset-banner
|
|
11
|
+
|
|
12
|
+
> event-asset-banner 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/event-asset-banner";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type EventAssetBannerProps = ImageLoadingProps & {
|
|
25
|
+
eventValue: EventAssetBannerData;
|
|
26
|
+
buttonClass?: string;
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
> 시각 예시는 Storybook(`event-asset-banner.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# components/event-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — event-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## event-card
|
|
11
|
+
|
|
12
|
+
> event-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: ads
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/event-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type EventCardProps = ImageLoadingProps & {
|
|
25
|
+
adProduct: string;
|
|
26
|
+
logo: string;
|
|
27
|
+
title: string;
|
|
28
|
+
batchName?: string;
|
|
29
|
+
adTitle: string;
|
|
30
|
+
isLoading?: boolean;
|
|
31
|
+
startDate: string;
|
|
32
|
+
tuition: number;
|
|
33
|
+
nbCardRequired: boolean;
|
|
34
|
+
regEndDate?: string;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
> 시각 예시는 Storybook(`event-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# components/lecturer-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — lecturer-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## lecturer-card
|
|
11
|
+
|
|
12
|
+
> lecturer-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/lecturer-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type LecturerCardProps = ImageLoadingProps & {
|
|
25
|
+
keyPrefix: string;
|
|
26
|
+
lecturer: LecturerAssetCardData;
|
|
27
|
+
roleLabel: string;
|
|
28
|
+
isMobile: boolean;
|
|
29
|
+
isExpanded: boolean;
|
|
30
|
+
onToggleExpand: (index: number) => void;
|
|
31
|
+
description: string[];
|
|
32
|
+
idx: number;
|
|
33
|
+
numberOfLecturers: number;
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
> 시각 예시는 Storybook(`lecturer-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# components/main-banner-image.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — main-banner-image.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## main-banner-image
|
|
11
|
+
|
|
12
|
+
> main-banner-image 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: ads
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/main-banner-image";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
type MainBannerImageProps = ImageLoadingProps & {
|
|
25
|
+
adKey: string;
|
|
26
|
+
filename: string;
|
|
27
|
+
title: string;
|
|
28
|
+
backgroundColor: string;
|
|
29
|
+
hideButton?: boolean;
|
|
30
|
+
buttonColors?: {
|
|
31
|
+
button: string;
|
|
32
|
+
buttonText: string;
|
|
33
|
+
};
|
|
34
|
+
linkType?: string;
|
|
35
|
+
isLoading?: boolean;
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> 시각 예시는 Storybook(`main-banner-image.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# components/mobile-camp-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — mobile-camp-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## mobile-camp-card
|
|
11
|
+
|
|
12
|
+
> mobile-camp-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/mobile-camp-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type MobileCampCardProps = ImageLoadingProps & {
|
|
25
|
+
brandName: string;
|
|
26
|
+
title: string;
|
|
27
|
+
batchName?: string;
|
|
28
|
+
imageUrl?: string | null;
|
|
29
|
+
imageAlt?: string;
|
|
30
|
+
tuitionText?: string;
|
|
31
|
+
locationText?: string;
|
|
32
|
+
scheduleText?: string;
|
|
33
|
+
startDate?: string | null;
|
|
34
|
+
endDate?: string | null;
|
|
35
|
+
period?: number | null;
|
|
36
|
+
tuition?: number | null;
|
|
37
|
+
earlyBirdTuition?: number | null;
|
|
38
|
+
earlyBirdEndDate?: string | null;
|
|
39
|
+
isFree?: boolean;
|
|
40
|
+
onoffText?: string | null;
|
|
41
|
+
cityLabels?: string[] | null;
|
|
42
|
+
offlineRequiredText?: string | null;
|
|
43
|
+
costOptionText?: string;
|
|
44
|
+
tags?: CampCardTag[];
|
|
45
|
+
statusBadge?: CampCardBadge;
|
|
46
|
+
adBadge?: CampCardBadge;
|
|
47
|
+
adTitle?: string;
|
|
48
|
+
isAd?: boolean;
|
|
49
|
+
isShowRegTag?: boolean;
|
|
50
|
+
earlyBirdText?: React.ReactNode;
|
|
51
|
+
afterTuitionText?: React.ReactNode;
|
|
52
|
+
govtCostText?: React.ReactNode;
|
|
53
|
+
height?: string | number;
|
|
54
|
+
className?: string;
|
|
55
|
+
bookmarkSlot?: React.ReactNode;
|
|
56
|
+
imageOverlaySlot?: React.ReactNode;
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
> 시각 예시는 Storybook(`mobile-camp-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# components/partner-list-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — partner-list-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## partner-list-card
|
|
11
|
+
|
|
12
|
+
> partner-list-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/partner-list-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type PartnerListCardProps = ImageLoadingProps & {
|
|
25
|
+
introductionData: PartnerListCardData;
|
|
26
|
+
updatedContents?: number;
|
|
27
|
+
openBatchs?: number;
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
> 시각 예시는 Storybook(`partner-list-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# components/portfolio-asset-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — portfolio-asset-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## portfolio-asset-card
|
|
11
|
+
|
|
12
|
+
> portfolio-asset-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/portfolio-asset-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type PortfolioAssetCardProps = ImageLoadingProps & {
|
|
25
|
+
portfolio: PortfolioAssetCardData;
|
|
26
|
+
isYoutube?: boolean;
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
> 시각 예시는 Storybook(`portfolio-asset-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# components/premium-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — premium-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## premium-card
|
|
11
|
+
|
|
12
|
+
> premium-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: ads
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/premium-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type PremiumCardProps = ImageLoadingProps & {
|
|
25
|
+
logo: string;
|
|
26
|
+
title: string;
|
|
27
|
+
subtitle: string;
|
|
28
|
+
thumbnail: string;
|
|
29
|
+
batchTitle: string;
|
|
30
|
+
batchName?: string;
|
|
31
|
+
brandName: string;
|
|
32
|
+
startDate: string;
|
|
33
|
+
tuition: number;
|
|
34
|
+
isLoading?: boolean;
|
|
35
|
+
className?: string;
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
> 시각 예시는 Storybook(`premium-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# components/title-tag-card.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — title-tag-card.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## title-tag-card
|
|
11
|
+
|
|
12
|
+
> title-tag-card 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: ads
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/title-tag-card";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type TitleTagCardProps = ImageLoadingProps & {
|
|
25
|
+
coverImage: string;
|
|
26
|
+
brandName: string;
|
|
27
|
+
title: string;
|
|
28
|
+
batchName?: string;
|
|
29
|
+
titleTagType?: string;
|
|
30
|
+
adTitle?: string;
|
|
31
|
+
changedAspect?: string;
|
|
32
|
+
tags?: string[];
|
|
33
|
+
isLoading?: boolean;
|
|
34
|
+
className?: string;
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
> 시각 예시는 Storybook(`title-tag-card.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# components/youtube-video-modal.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> 조합형 컴포넌트 — youtube-video-modal.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
[← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
|
|
9
|
+
|
|
10
|
+
## youtube-video-modal
|
|
11
|
+
|
|
12
|
+
> youtube-video-modal 조합형 컴포넌트입니다.
|
|
13
|
+
|
|
14
|
+
- **분류**: assets
|
|
15
|
+
- **성격**: presentational (내비게이션·모달 상태·DTO는 소비자가 소유 — [usage.md](../usage.md) §5)
|
|
16
|
+
|
|
17
|
+
### Import
|
|
18
|
+
```tsx
|
|
19
|
+
import { /* ... */ } from "boottent-design/components/youtube-video-modal";
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Props
|
|
23
|
+
```typescript
|
|
24
|
+
export type YoutubeVideoModalProps = {
|
|
25
|
+
open: boolean;
|
|
26
|
+
onOpenChange: (open: boolean) => void;
|
|
27
|
+
url?: string | null;
|
|
28
|
+
title?: string;
|
|
29
|
+
autoPlay?: boolean;
|
|
30
|
+
className?: string;
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
> 시각 예시는 Storybook(`youtube-video-modal.stories.tsx`)을 참고하세요.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# design-system.md — boottent-design
|
|
2
|
+
|
|
3
|
+
> [!WARNING]
|
|
4
|
+
> **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
|
|
5
|
+
> boottent-design 허브 — 먼저 이 문서를 읽고 필요한 스포크 문서로 이동하라.
|
|
6
|
+
> 버전: boottent-design v0.1.257 · 생성: 2026. 6. 11. 오후 4:37:12
|
|
7
|
+
|
|
8
|
+
## 0. 원칙 (먼저 읽어라)
|
|
9
|
+
|
|
10
|
+
boottent-design은 모든 소비 앱의 **단일 진실 원천(SSOT)** 이다. UI를 만들 때 다음을 지켜라.
|
|
11
|
+
|
|
12
|
+
1. **DS 우선**: 새 UI는 아래 [인벤토리](#4-인벤토리)에서 **먼저 찾아라.** DS에 있으면 그것을 쓰고, 없을 때만 조합/확장한다. 임의의 새 컴포넌트·라이브러리를 만들지 마라.
|
|
13
|
+
2. **토큰 우선**: 색·타이포·간격은 반드시 토큰(Tailwind 클래스: `text-main-500`, `bg-grey-100`, `text-semibold14`)을 쓴다. `#hex`·임의 px 값을 직접 쓰지 마라.
|
|
14
|
+
3. **variant 우선**: 커스텀 CSS를 작성하기 전에 컴포넌트의 `variant`/`size`/`theme` props로 해결되는지 확인하라. 클래스 조합은 `cn()`을 쓴다.
|
|
15
|
+
4. **deep import**: `boottent-design/ui/button`처럼 deep import를 쓴다(배럴 import 지양).
|
|
16
|
+
5. **헷갈리면**: 어떤 컴포넌트를 쓸지 모르겠으면 [when-to-use.md](./when-to-use.md)를 먼저 보라.
|
|
17
|
+
|
|
18
|
+
## 1. 이 라이브러리는 무엇인가
|
|
19
|
+
|
|
20
|
+
`boottent-design`은 [boottent.com](https://boottent.com)의 React 18 디자인 시스템 라이브러리다.
|
|
21
|
+
컴포넌트는 **presentational** 원칙을 따른다(앱 내비게이션·라우팅·데이터 fetching을 내장하지 않음 — [usage.md](./usage.md) 참조).
|
|
22
|
+
|
|
23
|
+
## 2. 네비게이션 가이드 — 무엇이 궁금한가 → 어디를 읽어라
|
|
24
|
+
|
|
25
|
+
| 궁금한 것 | 읽을 문서 |
|
|
26
|
+
|-----------|-----------|
|
|
27
|
+
| 뭘 쓸 수 있나 / import 경로 | (이 허브) [인벤토리](#4-인벤토리) |
|
|
28
|
+
| 어떤 상황에 뭘 쓰나 | [when-to-use.md](./when-to-use.md) |
|
|
29
|
+
| 특정 컴포넌트의 props·variants·예시 | `ui/<name>.md` · `components/<name>.md` |
|
|
30
|
+
| 색·타이포·간격 값 | [tokens.md](./tokens.md) |
|
|
31
|
+
| 설치 · CSS 모드 · 소비 규칙 | [usage.md](./usage.md) |
|
|
32
|
+
| 우리 앱 전용 디자인 확장 규칙 | (소비처) `../design.md` |
|
|
33
|
+
|
|
34
|
+
## 3. 레이어 구조
|
|
35
|
+
|
|
36
|
+
| 레이어 | 위치 | 설명 |
|
|
37
|
+
|--------|------|------|
|
|
38
|
+
| UI 프리미티브 | `boottent-design/ui/*` | shadcn/Radix 기반 기본 컴포넌트 |
|
|
39
|
+
| 조합형 컴포넌트 | `boottent-design/components/*` | 프로덕트 특화 카드/배너 (ads · assets) |
|
|
40
|
+
| 디자인 토큰 | `boottent-design/tokens` | colors · typography · ads · camps |
|
|
41
|
+
|
|
42
|
+
## 4. 인벤토리
|
|
43
|
+
|
|
44
|
+
### 4.1 UI 프리미티브 (44종)
|
|
45
|
+
|
|
46
|
+
| 컴포넌트 | 설명 | 문서 |
|
|
47
|
+
|----------|------|------|
|
|
48
|
+
| `accordion` | 콘텐츠를 접었다 펼 수 있게 하여 공간을 효율적으로 활용하는 아코디언 컴포넌트입니다. | [ui/accordion.md](./ui/accordion.md) |
|
|
49
|
+
| `alert-dialog` | 사용자의 확인이 반드시 필요한 중요한 정보를 전달하거나 결정을 요구할 때 사용하는 모달형 대화상자입니다. | [ui/alert-dialog.md](./ui/alert-dialog.md) |
|
|
50
|
+
| `anchor` | 텍스트나 이미지에 하이퍼링크를 적용하여 외부 웹사이트나 내부 페이지로 이동하게 하는 컴포넌트입니다. | [ui/anchor.md](./ui/anchor.md) |
|
|
51
|
+
| `aspect-ratio` | 콘텐츠(이미지, 비디오 등)의 가로세로 비율을 고정하여 레이아웃이 깨지지 않게 보장하는 컴포넌트입니다. | [ui/aspect-ratio.md](./ui/aspect-ratio.md) |
|
|
52
|
+
| `avatar` | 사용자의 프로필 이미지나 이니셜을 원형 또는 사각형 프레임 안에 보여주는 컴포넌트입니다. | [ui/avatar.md](./ui/avatar.md) |
|
|
53
|
+
| `badge` | 강조하고자 하는 상태, 카테고리, 태그 등을 표시하는 배지 컴포넌트입니다. | [ui/badge.md](./ui/badge.md) |
|
|
54
|
+
| `button` | 다양한 환경에서 사용자의 액션을 유도하는 핵심 버튼 컴포넌트입니다. | [ui/button.md](./ui/button.md) |
|
|
55
|
+
| `calendar` | 날짜를 시각적으로 보여주고 사용자가 특정 날짜 또는 날짜 범위를 선택할 수 있게 하는 달력 컴포넌트입니다. | [ui/calendar.md](./ui/calendar.md) |
|
|
56
|
+
| `callout` | 정보, 경고, 힌트 등 사용자에게 추가적인 맥락이나 주의사항을 전달할 때 사용하는 박스형 컴포넌트입니다. | [ui/callout.md](./ui/callout.md) |
|
|
57
|
+
| `card` | 관련 정보나 콘텐츠를 하나의 독립된 상자 형태로 묶어 보여주는 카드 컴포넌트입니다. | [ui/card.md](./ui/card.md) |
|
|
58
|
+
| `checkbox` | 사용자가 하나 이상의 옵션을 선택할 수 있게 하는 체크박스 컴포넌트입니다. | [ui/checkbox.md](./ui/checkbox.md) |
|
|
59
|
+
| `circled-check-button` | 이미지나 카드 위에 겹쳐서 표시하며, 선택 상태를 시각적으로 나타내는 원형 체크 버튼 컴포넌트입니다. | [ui/circled-check-button.md](./ui/circled-check-button.md) |
|
|
60
|
+
| `command` | 명령어 입력, 검색, 리스트 선택 등을 하나의 인터페이스에서 처리할 수 있는 강력한 커맨드 메뉴 컴포넌… | [ui/command.md](./ui/command.md) |
|
|
61
|
+
| `dialog` | 현재 페이지 위에 겹쳐서 나타나는 대화상자(모달) 컴포넌트입니다. | [ui/dialog.md](./ui/dialog.md) |
|
|
62
|
+
| `dropdown-menu` | 클릭이나 호버 시 사용자에게 액션 목록이나 하위 메뉴를 보여주는 드롭다운 컴포넌트입니다. | [ui/dropdown-menu.md](./ui/dropdown-menu.md) |
|
|
63
|
+
| `file-uploader` | 드래그 앤 드롭 또는 파일 선택 창을 통해 하나 이상의 파일을 업로드할 수 있게 하는 컴포넌트입니다. | [ui/file-uploader.md](./ui/file-uploader.md) |
|
|
64
|
+
| `form` | react-hook-form과 연동하여 입력 데이터의 유효성을 검증하고 에러를 표시하는 정밀한 폼 제어… | [ui/form.md](./ui/form.md) |
|
|
65
|
+
| `highlight-text` | 텍스트의 하단에 형광펜으로 칠한 듯한 하이라이트 효과를 주는 컴포넌트입니다. | [ui/highlight-text.md](./ui/highlight-text.md) |
|
|
66
|
+
| `icons` | — | [ui/icons.md](./ui/icons.md) |
|
|
67
|
+
| `image` | 기본적인 img 태그를 확장하여 레이지 로딩, 크기 제어, object-fit 등을 편리하게 관리하는 … | [ui/image.md](./ui/image.md) |
|
|
68
|
+
| `input` | 사용자로부터 텍스트 입력을 받는 기본적인 텍스트 필드 컴포넌트입니다. | [ui/input.md](./ui/input.md) |
|
|
69
|
+
| `label` | 폼 요소(Input, Checkbox 등)의 이름이나 설명을 나타내는 라벨 컴포넌트입니다. | [ui/label.md](./ui/label.md) |
|
|
70
|
+
| `month-picker` | 사용자가 특정 '연도-월' 단위를 편리하게 선택할 수 있게 하는 월 선택 컴포넌트입니다. | [ui/month-picker.md](./ui/month-picker.md) |
|
|
71
|
+
| `multi-select` | 여러 개의 옵션을 검색하고 칩(Badge) 형태로 다중 선택할 수 있는 컴포넌트입니다. | [ui/multi-select.md](./ui/multi-select.md) |
|
|
72
|
+
| `navigation-menu` | 웹사이트 전반에 걸친 상위 내비게이션 구조를 제공하며, 호버 시 하위 메뉴를 시각적으로 풍부하게 보여주… | [ui/navigation-menu.md](./ui/navigation-menu.md) |
|
|
73
|
+
| `popover` | 클릭이나 클릭 이외의 트리거로 인해 요소 근처에 부유하는 콘텐츠 박스를 보여주는 컴포넌트입니다. | [ui/popover.md](./ui/popover.md) |
|
|
74
|
+
| `progress` | 작업의 완료율이나 진행 상태를 시각적으로 보여주는 프로그레스 바 컴포넌트입니다. | [ui/progress.md](./ui/progress.md) |
|
|
75
|
+
| `radio-group` | 여러 옵션 중 하나만 선택할 수 있게 하는 라디오 버튼 그룹 컴포넌트입니다. | [ui/radio-group.md](./ui/radio-group.md) |
|
|
76
|
+
| `scroll-area` | 브라우저 기본 스크롤바 대신 커스터마이징 가능한 세련된 스크롤바를 제공하는 컴포넌트입니다. | [ui/scroll-area.md](./ui/scroll-area.md) |
|
|
77
|
+
| `select` | 사용자에게 여러 옵션 중 하나를 선택할 수 있는 드롭다운 메뉴를 제공하는 컴포넌트입니다. | [ui/select.md](./ui/select.md) |
|
|
78
|
+
| `separator` | 콘텐츠 사이의 경계를 시각적으로 구분하는 수평 또는 수직 구분선 컴포넌트입니다. | [ui/separator.md](./ui/separator.md) |
|
|
79
|
+
| `simple-table` | 데이터의 라벨(키)과 콘텐츠(값)를 1:1 대응하여 깔끔하게 보여주는 요약 표 컴포넌트입니다. | [ui/simple-table.md](./ui/simple-table.md) |
|
|
80
|
+
| `skeleton` | 실제 콘텐츠가 로드되기 전, 해당 영역의 형태를 미리 보여주어 사용자에게 로딩 중임을 시각적으로 알리는… | [ui/skeleton.md](./ui/skeleton.md) |
|
|
81
|
+
| `slider` | 사용자가 범위를 드래그하여 수치를 선택할 수 있게 하는 슬라이더 컴포넌트입니다. | [ui/slider.md](./ui/slider.md) |
|
|
82
|
+
| `switch` | 상태를 즉시 On/Off로 전환할 때 사용하는 스위치(토글) 컴포넌트입니다. | [ui/switch.md](./ui/switch.md) |
|
|
83
|
+
| `symbols` | — | [ui/symbols.md](./ui/symbols.md) |
|
|
84
|
+
| `tabs` | 한 공간 내에서 서로 연관된 여러 개의 콘텐츠를 탭으로 구분하여 보여주는 컴포넌트입니다. | [ui/tabs.md](./ui/tabs.md) |
|
|
85
|
+
| `tag` | 카테고리, 상태, 속성 등을 나타내는 작은 레이블 컴포넌트입니다. Badge보다 더 다양한 색상과 아이… | [ui/tag.md](./ui/tag.md) |
|
|
86
|
+
| `text` | 텍스트의 의미(강조, 보조, 에러 등)에 따라 스타일을 적용하는 타이포그래피 기반 유틸리티 컴포넌트입니다. | [ui/text.md](./ui/text.md) |
|
|
87
|
+
| `textarea` | 여러 줄의 텍스트를 입력받는 기본 텍스트에어리어 컴포넌트입니다. | [ui/textarea.md](./ui/textarea.md) |
|
|
88
|
+
| `toast` | 사용자에게 짧고 간결한 피드백 메시지를 제공하는 알림 컴포넌트입니다. | [ui/toast.md](./ui/toast.md) |
|
|
89
|
+
| `toggle` | 켜짐/꺼짐 두 가지 상태를 전환하는 단일 토글 버튼 컴포넌트입니다. | [ui/toggle.md](./ui/toggle.md) |
|
|
90
|
+
| `toggle-group` | 여러 개의 Toggle 버튼을 단일(single) 또는 다중(multiple) 선택 그룹으로 묶는 컴포… | [ui/toggle-group.md](./ui/toggle-group.md) |
|
|
91
|
+
| `tooltip` | 요소에 마우스를 올렸을 때 나타나는 툴팁 컴포넌트입니다. 방향·색상·크기·말풍선 꼬리를 지원합니다. | [ui/tooltip.md](./ui/tooltip.md) |
|
|
92
|
+
|
|
93
|
+
### 4.2 조합형 컴포넌트 (15종)
|
|
94
|
+
|
|
95
|
+
| 컴포넌트 | 분류 | 문서 |
|
|
96
|
+
|----------|------|------|
|
|
97
|
+
| `article-asset-card` | assets | [components/article-asset-card.md](./components/article-asset-card.md) |
|
|
98
|
+
| `blog-review-card` | assets | [components/blog-review-card.md](./components/blog-review-card.md) |
|
|
99
|
+
| `camp-card` | assets | [components/camp-card.md](./components/camp-card.md) |
|
|
100
|
+
| `company-info-card` | assets | [components/company-info-card.md](./components/company-info-card.md) |
|
|
101
|
+
| `environment-asset-photo` | assets | [components/environment-asset-photo.md](./components/environment-asset-photo.md) |
|
|
102
|
+
| `event-asset-banner` | assets | [components/event-asset-banner.md](./components/event-asset-banner.md) |
|
|
103
|
+
| `event-card` | ads | [components/event-card.md](./components/event-card.md) |
|
|
104
|
+
| `lecturer-card` | assets | [components/lecturer-card.md](./components/lecturer-card.md) |
|
|
105
|
+
| `main-banner-image` | ads | [components/main-banner-image.md](./components/main-banner-image.md) |
|
|
106
|
+
| `mobile-camp-card` | assets | [components/mobile-camp-card.md](./components/mobile-camp-card.md) |
|
|
107
|
+
| `partner-list-card` | assets | [components/partner-list-card.md](./components/partner-list-card.md) |
|
|
108
|
+
| `portfolio-asset-card` | assets | [components/portfolio-asset-card.md](./components/portfolio-asset-card.md) |
|
|
109
|
+
| `premium-card` | ads | [components/premium-card.md](./components/premium-card.md) |
|
|
110
|
+
| `title-tag-card` | ads | [components/title-tag-card.md](./components/title-tag-card.md) |
|
|
111
|
+
| `youtube-video-modal` | assets | [components/youtube-video-modal.md](./components/youtube-video-modal.md) |
|
|
112
|
+
|
|
113
|
+
### 4.3 디자인 토큰 (4개 도메인) → [tokens.md](./tokens.md)
|
|
114
|
+
|
|
115
|
+
| 도메인 | 주요 export |
|
|
116
|
+
|--------|-------------|
|
|
117
|
+
| `ads` | `adProducts`, `defaultBannerColor` |
|
|
118
|
+
| `camps` | `campCategoryColors` |
|
|
119
|
+
| `colors` | `colors` |
|
|
120
|
+
| `typography` | `typography`, `fontWeight`, `FontSize` |
|
|
121
|
+
|
|
122
|
+
## 5. import 경로 맵
|
|
123
|
+
|
|
124
|
+
```txt
|
|
125
|
+
# 배럴 (호환용 — 성능상 deep import 권장)
|
|
126
|
+
boottent-design/ui
|
|
127
|
+
boottent-design/components
|
|
128
|
+
boottent-design/tokens
|
|
129
|
+
|
|
130
|
+
# 스타일 / Tailwind 통합
|
|
131
|
+
boottent-design/styles.css
|
|
132
|
+
boottent-design/foundation.css
|
|
133
|
+
boottent-design/tailwind-preset
|
|
134
|
+
|
|
135
|
+
# deep import 예
|
|
136
|
+
boottent-design/ui/button
|
|
137
|
+
boottent-design/components/camp-card
|
|
138
|
+
```
|