boottent-design 0.1.270 → 0.1.272

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.
Files changed (77) hide show
  1. package/README.md +9 -4
  2. package/bin/postinstall-sync.mjs +50 -0
  3. package/dist/components/lecturer-card.cjs.js +1 -1
  4. package/dist/components/lecturer-card.es.js +1 -1
  5. package/dist/components.cjs.js +1 -1
  6. package/dist/components.es.js +1 -1
  7. package/dist/design-system/components/article-asset-card.md +1 -1
  8. package/dist/design-system/components/blog-review-card.md +1 -1
  9. package/dist/design-system/components/boottent-event-card.md +1 -1
  10. package/dist/design-system/components/camp-card.md +1 -1
  11. package/dist/design-system/components/company-info-card.md +1 -1
  12. package/dist/design-system/components/dday-card.md +1 -1
  13. package/dist/design-system/components/environment-asset-photo.md +1 -1
  14. package/dist/design-system/components/event-asset-banner.md +1 -1
  15. package/dist/design-system/components/event-card.md +1 -1
  16. package/dist/design-system/components/lecturer-card.md +1 -1
  17. package/dist/design-system/components/main-banner-image.md +1 -1
  18. package/dist/design-system/components/mobile-camp-card.md +1 -1
  19. package/dist/design-system/components/partner-list-card.md +1 -1
  20. package/dist/design-system/components/portfolio-asset-card.md +1 -1
  21. package/dist/design-system/components/premium-card.md +1 -1
  22. package/dist/design-system/components/title-tag-card.md +1 -1
  23. package/dist/design-system/components/youtube-video-modal.md +1 -1
  24. package/dist/design-system/consumer-setup.md +45 -0
  25. package/dist/design-system/design-system.md +2 -1
  26. package/dist/design-system/tokens.md +1 -1
  27. package/dist/design-system/ui/accordion.md +1 -1
  28. package/dist/design-system/ui/alert-dialog.md +1 -1
  29. package/dist/design-system/ui/anchor.md +1 -1
  30. package/dist/design-system/ui/aspect-ratio.md +1 -1
  31. package/dist/design-system/ui/avatar.md +1 -1
  32. package/dist/design-system/ui/badge.md +1 -1
  33. package/dist/design-system/ui/button.md +1 -1
  34. package/dist/design-system/ui/calendar.md +1 -1
  35. package/dist/design-system/ui/callout.md +1 -1
  36. package/dist/design-system/ui/card-label.md +1 -1
  37. package/dist/design-system/ui/card.md +1 -1
  38. package/dist/design-system/ui/checkbox.md +1 -1
  39. package/dist/design-system/ui/circled-check-button.md +1 -1
  40. package/dist/design-system/ui/command.md +1 -1
  41. package/dist/design-system/ui/dialog.md +1 -1
  42. package/dist/design-system/ui/dropdown-menu.md +1 -1
  43. package/dist/design-system/ui/file-uploader.md +1 -1
  44. package/dist/design-system/ui/form.md +1 -1
  45. package/dist/design-system/ui/highlight-text.md +1 -1
  46. package/dist/design-system/ui/icons.md +1 -1
  47. package/dist/design-system/ui/image.md +1 -1
  48. package/dist/design-system/ui/input.md +1 -1
  49. package/dist/design-system/ui/label.md +1 -1
  50. package/dist/design-system/ui/month-picker.md +1 -1
  51. package/dist/design-system/ui/multi-select.md +1 -1
  52. package/dist/design-system/ui/navigation-menu.md +1 -1
  53. package/dist/design-system/ui/popover.md +1 -1
  54. package/dist/design-system/ui/portal.md +1 -1
  55. package/dist/design-system/ui/progress.md +1 -1
  56. package/dist/design-system/ui/radio-group.md +1 -1
  57. package/dist/design-system/ui/scroll-area.md +1 -1
  58. package/dist/design-system/ui/select.md +1 -1
  59. package/dist/design-system/ui/separator.md +1 -1
  60. package/dist/design-system/ui/simple-table.md +1 -1
  61. package/dist/design-system/ui/skeleton.md +1 -1
  62. package/dist/design-system/ui/slider.md +1 -1
  63. package/dist/design-system/ui/switch.md +1 -1
  64. package/dist/design-system/ui/symbols.md +1 -1
  65. package/dist/design-system/ui/tabs.md +1 -1
  66. package/dist/design-system/ui/tag.md +1 -1
  67. package/dist/design-system/ui/text.md +1 -1
  68. package/dist/design-system/ui/textarea.md +1 -1
  69. package/dist/design-system/ui/toast.md +1 -1
  70. package/dist/design-system/ui/toggle-group.md +1 -1
  71. package/dist/design-system/ui/toggle.md +1 -1
  72. package/dist/design-system/ui/tooltip.md +1 -1
  73. package/dist/design-system/usage.md +1 -1
  74. package/dist/design-system/when-to-use.md +1 -1
  75. package/dist/{lecturer-card-D4nR3tgq.cjs → lecturer-card-C0AeVE2l.cjs} +1 -1
  76. package/dist/{lecturer-card-DaAD77e-.js → lecturer-card-h44ZjbBL.js} +26 -26
  77. package/package.json +2 -1
package/README.md CHANGED
@@ -280,19 +280,23 @@ npm 인증 토큰은 레포 파일에 커밋하지 않고 환경변수로만 주
280
280
  | 결정 가이드 | `docs/design-system/when-to-use.md` | 어떤 상황에 어떤 컴포넌트를 쓰는가 |
281
281
  | 사용법 | `docs/design-system/usage.md` | 설치 · CSS 배포 모드 · presentational 소비 규칙 |
282
282
  | 토큰 | `docs/design-system/tokens.md` | 색상 · 타이포 · 기타 토큰 |
283
+ | 소비 레포 셋업 가이드 | `docs/design-system/consumer-setup.md` | 소비 레포가 이 문서 체계를 자기 레포에 세팅하는 방법(자동 동기화 포함) |
283
284
  | UI 스포크 | `docs/design-system/ui/<name>.md` | UI 프리미티브당 1파일 |
284
285
  | 조합형 스포크 | `docs/design-system/components/<name>.md` | 조합형 컴포넌트당 1파일 |
285
286
 
286
287
  **문서 sync 도구** (이 레포에서):
287
288
  - `yarn docs:gen` — 추적 문서 재생성 · `yarn docs:check` — 소스와 sync 검사(deep-entry·토큰·결정 매트릭스·freshness).
288
289
  - `/ds-docs-check` (slash) — 읽기전용 sync 리포트 · `/ds-docs-sync` (slash) — 재생성 + 누락 JSDoc·결정 엔트리 초안 작성.
290
+ - `/ds-release` (slash) — DS 변경사항 publish(버전 bump·빌드·docs 재생성·커밋·push·npm publish) + 소비 레포(boottent-frontend/boottent-partner/boottent-partner-frontend) 업그레이드 대상 확인 후 반영까지 자동화.
289
291
  - husky `pre-commit`이 커밋 시 문서를 자동 재생성·stage 한다.
290
292
 
291
- **소비 레포**는 동봉된 `boottent-design-docs` CLI로 dist 스탬프본을 자기 레포로 동기화한다.
293
+ **소비 레포는 별도 명령 없이 자동으로 동기화된다.** `boottent-design` 패키지 자체가 `postinstall` 훅을 갖고 있어서, `yarn add boottent-design` / `yarn install` / `yarn upgrade boottent-design`을 실행하는 즉시 소비 레포의 `docs/ds/`가 최신 dist 스탬프본으로 채워지고, `docs/design.md`가 없으면 시작 템플릿이 생긴다(이미 있으면 절대 덮어쓰지 않음). 이 훅은 실패해도 설치 자체를 막지 않는다. 자세한 안내는 npm에도 함께 배포되는 [docs/design-system/consumer-setup.md](docs/design-system/consumer-setup.md)(설치 후 `node_modules/boottent-design/dist/design-system/consumer-setup.md`에서 바로 열람 가능)를 보라.
294
+
295
+ 동봉된 `boottent-design-docs` CLI는 수동 재실행이나, 소비 레포 자신의 package.json에 `docs:ds`/`postinstall` 스크립트를 명시적으로 남기고 싶을 때 쓴다:
292
296
 
293
297
  ```sh
294
- # 소비 레포(boottent-frontend 등)에서
295
- yarn boottent-design-docs init --postinstall # docs/ds/ 초기화 + docs/design.md scaffold + install/update 자동 sync 설정
298
+ # 소비 레포(boottent-frontend 등)에서 — package.json에 스크립트도 남기고 싶을 때
299
+ yarn boottent-design-docs init --postinstall # docs/ds/ 초기화 + docs/design.md scaffold + install/update 자동 sync 스크립트 추가
296
300
 
297
301
  # boottent-design이 아직 설치 전이면
298
302
  yarn dlx -p boottent-design boottent-design-docs init --postinstall
@@ -303,8 +307,9 @@ npx -p boottent-design boottent-design-docs init --postinstall
303
307
  # 수동 동기화만 필요할 때
304
308
  boottent-design-docs sync # docs/ds/ 로 미러 복사 + docs/design.md scaffold(없을 때만)
305
309
  boottent-design-docs sync --out docs/design # 미러 경로 변경
310
+ boottent-design-docs sync --design-doc docs/design-guide.md # design.md 자리에 다른 문서가 이미 있을 때 경로 변경
306
311
  boottent-design-docs sync --no-scaffold # design.md 자동 생성 비활성화
307
312
  ```
308
313
 
309
- 소비처는 자체 `docs/design.md`(허브로 연결, 앱 전용 확장 기록)를 소유하고, `docs/ds/`는 sync가 덮어쓰는 SSOT 미러다. `init --postinstall`을 한 번 실행하면 이후 `yarn install` / `yarn upgrade boottent-design` 때 최신 DS 문서가 자동으로 다시 동기화된다.
314
+ 소비처는 자체 `docs/design.md`(허브로 연결, 앱 전용 확장 기록)를 소유하고, `docs/ds/`는 sync가 덮어쓰는 SSOT 미러다.
310
315
  자세한 연동/업그레이드 루프는 [docs/SSOT-INTEGRATION.md](docs/SSOT-INTEGRATION.md)를 참조하세요.
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * boottent-design 자체 설치 후 자동 실행되는 훅(package.json "postinstall").
4
+ *
5
+ * 소비 레포가 아무 명령도 실행하지 않아도 docs/ds/ 미러 + docs/design.md 스캐폴드가
6
+ * 생기도록 한다(bin/sync-docs.mjs의 "sync" 로직을 그대로 재사용, 수정하지 않는다).
7
+ *
8
+ * 반드시 지키는 것: 이 훅이 실패해도 소비처의 yarn/npm install 자체는 절대 막지 않는다.
9
+ * 전체를 try/catch로 감싸고 항상 exit(0)한다.
10
+ */
11
+ import { execFileSync } from "node:child_process";
12
+ import fs from "node:fs";
13
+ import path from "node:path";
14
+ import { fileURLToPath } from "node:url";
15
+
16
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
+ const PKG_ROOT = path.join(__dirname, "..");
18
+
19
+ function readJson(filePath) {
20
+ return JSON.parse(fs.readFileSync(filePath, "utf-8"));
21
+ }
22
+
23
+ try {
24
+ // npm/yarn이 install을 실행한 원래 위치(소비 레포 루트). 패키지 자신의
25
+ // node_modules/boottent-design 디렉터리가 아니다.
26
+ const targetRoot = process.env.INIT_CWD || process.cwd();
27
+ const targetPkgPath = path.join(targetRoot, "package.json");
28
+
29
+ if (!fs.existsSync(targetPkgPath)) {
30
+ process.exit(0); // 소비처 package.json을 찾을 수 없음 — 조용히 스킵
31
+ }
32
+
33
+ const targetPkg = readJson(targetPkgPath);
34
+ if (targetPkg.name === "boottent-design") {
35
+ process.exit(0); // 이 저장소 자체 개발 중(yarn install) — 자기 자신에 미러링하지 않음
36
+ }
37
+
38
+ const syncScript = path.join(PKG_ROOT, "bin", "sync-docs.mjs");
39
+ execFileSync(process.execPath, [syncScript, "sync"], {
40
+ cwd: targetRoot,
41
+ stdio: "inherit",
42
+ });
43
+ } catch (error) {
44
+ console.warn(
45
+ "boottent-design: 문서 자동 동기화를 건너뜁니다 (설치는 정상 진행됩니다). 수동 실행: npx boottent-design-docs sync",
46
+ );
47
+ console.warn(` (${error?.message ?? error})`);
48
+ }
49
+
50
+ process.exit(0);
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../lecturer-card-D4nR3tgq.cjs");exports.LecturerCard=e.LecturerCard;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../lecturer-card-C0AeVE2l.cjs");exports.LecturerCard=e.LecturerCard;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { L as t } from "../lecturer-card-DaAD77e-.js";
2
+ import { L as t } from "../lecturer-card-h44ZjbBL.js";
3
3
  export {
4
4
  t as LecturerCard
5
5
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./dday-card-D5SqIn0Y.cjs"),a=require("./event-card-D3wzSDI2.cjs"),o=require("./main-banner-image-By44s_XP.cjs"),n=require("./premium-card-CThRJYXd.cjs"),i=require("./title-tag-card-C-AvnXtC.cjs"),d=require("./article-asset-card-DRRl2BH8.cjs"),C=require("./blog-review-card-OX6KhSpS.cjs"),s=require("./boottent-event-card-Bx4iFf2w.cjs"),m=require("./camp-card-DM2V71SW.cjs"),e=require("./camp-card-format-rjZZu4G6.cjs"),u=require("./company-info-card-BXAempVI.cjs"),c=require("./environment-asset-photo-CXxtAAax.cjs"),l=require("./event-asset-banner-m607rLD9.cjs"),p=require("./lecturer-card-D4nR3tgq.cjs"),T=require("./partner-list-card-DL_omz4v.cjs"),f=require("./mobile-camp-card-D-5N6bex.cjs"),r=require("./portfolio-asset-card-8mBpumTp.cjs"),A=require("./youtube-video-modal-C2GWcF5u.cjs");exports.DdayCard=t.DdayCard;exports.EventCard=a.EventCard;exports.MainBannerImage=o.MainBannerImage;exports.PremiumCard=n.PremiumCard;exports.TitleTagCard=i.TitleTagCard;exports.ArticleAssetCard=d.ArticleAssetCard;exports.BlogReviewCard=C.BlogReviewCard;exports.BoottentEventCard=s.BoottentEventCard;exports.CampCard=m.CampCard;exports.formatCampCardDateText=e.formatCampCardDateText;exports.formatCampCardLocationText=e.formatCampCardLocationText;exports.formatCampCardPeriodText=e.formatCampCardPeriodText;exports.formatCampCardScheduleText=e.formatCampCardScheduleText;exports.formatCampCardTuitionText=e.formatCampCardTuitionText;exports.formatTuitionAmountText=e.formatTuitionAmountText;exports.isEarlyBirdApplied=e.isEarlyBirdApplied;exports.CompanyInfoCard=u.CompanyInfoCard;exports.EnvironmentAssetPhoto=c.EnvironmentAssetPhoto;exports.EventAssetBanner=l.EventAssetBanner;exports.LecturerCard=p.LecturerCard;exports.PartnerListCard=T.PartnerListCard;exports.MobileCampCard=f.MobileCampCard;exports.PortfolioAssetCard=r.PortfolioAssetCard;exports.PortfolioAssetFooter=r.PortfolioAssetFooter;exports.YoutubeVideoModal=A.YoutubeVideoModal;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./dday-card-D5SqIn0Y.cjs"),a=require("./event-card-D3wzSDI2.cjs"),o=require("./main-banner-image-By44s_XP.cjs"),n=require("./premium-card-CThRJYXd.cjs"),i=require("./title-tag-card-C-AvnXtC.cjs"),d=require("./article-asset-card-DRRl2BH8.cjs"),C=require("./blog-review-card-OX6KhSpS.cjs"),s=require("./boottent-event-card-Bx4iFf2w.cjs"),m=require("./camp-card-DM2V71SW.cjs"),e=require("./camp-card-format-rjZZu4G6.cjs"),u=require("./company-info-card-BXAempVI.cjs"),c=require("./environment-asset-photo-CXxtAAax.cjs"),l=require("./event-asset-banner-m607rLD9.cjs"),p=require("./lecturer-card-C0AeVE2l.cjs"),T=require("./partner-list-card-DL_omz4v.cjs"),f=require("./mobile-camp-card-D-5N6bex.cjs"),r=require("./portfolio-asset-card-8mBpumTp.cjs"),A=require("./youtube-video-modal-C2GWcF5u.cjs");exports.DdayCard=t.DdayCard;exports.EventCard=a.EventCard;exports.MainBannerImage=o.MainBannerImage;exports.PremiumCard=n.PremiumCard;exports.TitleTagCard=i.TitleTagCard;exports.ArticleAssetCard=d.ArticleAssetCard;exports.BlogReviewCard=C.BlogReviewCard;exports.BoottentEventCard=s.BoottentEventCard;exports.CampCard=m.CampCard;exports.formatCampCardDateText=e.formatCampCardDateText;exports.formatCampCardLocationText=e.formatCampCardLocationText;exports.formatCampCardPeriodText=e.formatCampCardPeriodText;exports.formatCampCardScheduleText=e.formatCampCardScheduleText;exports.formatCampCardTuitionText=e.formatCampCardTuitionText;exports.formatTuitionAmountText=e.formatTuitionAmountText;exports.isEarlyBirdApplied=e.isEarlyBirdApplied;exports.CompanyInfoCard=u.CompanyInfoCard;exports.EnvironmentAssetPhoto=c.EnvironmentAssetPhoto;exports.EventAssetBanner=l.EventAssetBanner;exports.LecturerCard=p.LecturerCard;exports.PartnerListCard=T.PartnerListCard;exports.MobileCampCard=f.MobileCampCard;exports.PortfolioAssetCard=r.PortfolioAssetCard;exports.PortfolioAssetFooter=r.PortfolioAssetFooter;exports.YoutubeVideoModal=A.YoutubeVideoModal;
@@ -12,7 +12,7 @@ import { f as B, a as c, b as v, c as M, d as L, e as b, i as g } from "./camp-c
12
12
  import { C as D } from "./company-info-card-DJTgItPu.js";
13
13
  import { E as I } from "./environment-asset-photo-BCR9v2we.js";
14
14
  import { E as w } from "./event-asset-banner-BW6nZaJq.js";
15
- import { L as R } from "./lecturer-card-DaAD77e-.js";
15
+ import { L as R } from "./lecturer-card-h44ZjbBL.js";
16
16
  import { P as V } from "./partner-list-card-Bx-UZxGG.js";
17
17
  import { M as k } from "./mobile-camp-card-1dxI-BCc.js";
18
18
  import { P as z, a as G } from "./portfolio-asset-card-mAkXH6Qc.js";
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — article-asset-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — blog-review-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — boottent-event-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — camp-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — company-info-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — dday-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — environment-asset-photo.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — event-asset-banner.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — event-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — lecturer-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — main-banner-image.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — mobile-camp-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — partner-list-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — portfolio-asset-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — premium-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — title-tag-card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 조합형 컴포넌트 — youtube-video-modal.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -0,0 +1,45 @@
1
+ # consumer-setup.md — boottent-design
2
+
3
+ > [!WARNING]
4
+ > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
+ > 소비 레포(boottent-frontend, boottent-partner 등)가 이 문서 체계를 자기 레포에 세팅하는 방법.
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
+
8
+ [← 디자인 시스템 허브](./design-system.md)
9
+
10
+ > 이 문서는 **소비 레포**용이다. `boottent-design` 저장소 자체에는 적용하지 않는다.
11
+
12
+ ## 자동 동기화 (별도 명령 불필요)
13
+
14
+ `boottent-design`은 패키지 자체 `postinstall` 훅을 갖고 있다. `yarn add boottent-design` / `yarn install` / `yarn upgrade boottent-design`을 실행하면 그때마다 자동으로:
15
+
16
+ - 소비 레포 루트에 `docs/ds/`를 만들고(이미 있으면 최신 내용으로 덮어씀),
17
+ - `docs/design.md`가 없으면 시작 템플릿을 만든다(이미 있으면 **절대 덮어쓰지 않음**).
18
+
19
+ **아무 명령도 실행할 필요가 없다** — 설치/업그레이드만 하면 된다. 이 훅은 실패해도(권한 문제 등) 설치 자체를 막지 않고 콘솔에 경고만 남긴다.
20
+
21
+ ## (선택) 소비 레포 package.json에 스크립트로도 남기기
22
+
23
+ `docs:ds`/`postinstall` 스크립트를 소비 레포 자신의 package.json에도 명시적으로 남기고 싶다면(가시성·수동 재실행 편의):
24
+
25
+ ```sh
26
+ yarn boottent-design-docs init --postinstall
27
+ ```
28
+
29
+ 이미 `docs/design.md`가 있으면 건드리지 않고, `docs/ds/`만 다시 미러링한다.
30
+
31
+ ## 파일명이 이미 쓰이고 있다면
32
+
33
+ `docs/design.md` 자리에 이미 다른 문서가 있다면(대소문자만 다른 경우도 포함 — macOS는 기본적으로 대소문자를 구분하지 않는 파일시스템이라 `docs/DESIGN.md`와 `docs/design.md`는 같은 파일로 취급된다) `--design-doc`으로 다른 경로를 지정한다:
34
+
35
+ ```sh
36
+ yarn boottent-design-docs init --design-doc docs/design-guide.md --postinstall
37
+ ```
38
+
39
+ ## 커밋 정책
40
+
41
+ `docs/ds/`와 `docs/design.md`는 **커밋한다.** PR/리뷰에서 어떤 DS 버전 기준인지 드러나고, 업그레이드 시 diff로 변경이 보인다. `docs/ds/`는 매번 전체가 덮어써지는 미러이므로 손으로 편집하지 않는다.
42
+
43
+ ## 더 자세히
44
+
45
+ 전체 CLI 옵션·업그레이드 루프·로컬 `file:` 링크 개발 시나리오는 저장소의 `docs/SSOT-INTEGRATION.md`(GitHub)를 참고하라.
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > boottent-design 허브 — 먼저 이 문서를 읽고 필요한 스포크 문서로 이동하라.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  ## 0. 원칙 (먼저 읽어라)
9
9
 
@@ -29,6 +29,7 @@ boottent-design은 모든 소비 앱의 **단일 진실 원천(SSOT)** 이다. U
29
29
  | 특정 컴포넌트의 props·variants·예시 | `ui/<name>.md` · `components/<name>.md` |
30
30
  | 색·타이포·간격 값 | [tokens.md](./tokens.md) |
31
31
  | 설치 · CSS 모드 · 소비 규칙 | [usage.md](./usage.md) |
32
+ | 소비 레포에 이 문서 체계를 어떻게 셋업하나 | [consumer-setup.md](./consumer-setup.md) |
32
33
  | 우리 앱 전용 디자인 확장 규칙 | (소비처) `../design.md` |
33
34
 
34
35
  ## 3. 레이어 구조
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 디자인 토큰 — 색상 · 타이포그래피 · 기타.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 디자인 시스템 허브](./design-system.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — accordion.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — alert-dialog.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — anchor.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — aspect-ratio.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — avatar.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — badge.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — button.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — calendar.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — callout.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — card-label.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — card.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — checkbox.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — circled-check-button.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — command.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — dialog.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — dropdown-menu.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — file-uploader.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — form.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — highlight-text.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — icons.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — image.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — input.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — label.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — month-picker.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — multi-select.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — navigation-menu.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — popover.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — portal.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — progress.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — radio-group.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — scroll-area.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — select.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — separator.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — simple-table.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — skeleton.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — slider.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — switch.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — symbols.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — tabs.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — tag.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — text.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — textarea.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — toast.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — toggle-group.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — toggle.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > UI 프리미티브 — tooltip.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 허브](../design-system.md) · [언제 무엇을 쓰나](../when-to-use.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 설치 · CSS 배포 모드 · 소비 규칙의 기계 생성 정본.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 디자인 시스템 허브](./design-system.md)
9
9
 
@@ -3,7 +3,7 @@
3
3
  > [!WARNING]
4
4
  > **자동 생성된 파일 — 직접 수정 금지** (`yarn docs:gen` 으로 재생성)
5
5
  > 어떤 상황에 어떤 컴포넌트를 쓰는가 — 결정 가이드.
6
- > 버전: boottent-design v0.1.270 · 생성: 2026. 7. 13. 오후 6:10:02
6
+ > 버전: boottent-design v0.1.272 · 생성: 2026. 7. 15. 오전 10:40:04
7
7
 
8
8
  [← 디자인 시스템 허브](./design-system.md)
9
9
 
@@ -1 +1 @@
1
- "use strict";const e=require("react/jsx-runtime"),t=require("react"),g=require("framer-motion"),x=require("./common-DeneXo5X.cjs");require("./ui/accordion.cjs.js");require("./ui/alert-dialog.cjs.js");require("@radix-ui/react-aspect-ratio");require("./ui/avatar.cjs.js");require("./ui/badge.cjs.js");require("./ui/button.cjs.js");require("./ui/calendar.cjs.js");require("./ui/callout.cjs.js");require("./ui/card.cjs.js");require("./ui/card-label.cjs.js");require("./ui/checkbox.cjs.js");require("lucide-react");require("./ui/command.cjs.js");require("./ui/dialog.cjs.js");require("./ui/dropdown-menu.cjs.js");require("./ui/file-uploader.cjs.js");require("./ui/form.cjs.js");const h=require("./ui/icons.cjs.js");require("./ui/input.cjs.js");require("./ui/label.cjs.js");require("./ui/month-picker.cjs.js");require("./ui/multi-select.cjs.js");require("./ui/navigation-menu.cjs.js");require("./ui/popover.cjs.js");require("./ui/progress.cjs.js");require("./ui/radio-group.cjs.js");require("./ui/scroll-area.cjs.js");require("./ui/select.cjs.js");require("./ui/separator.cjs.js");require("@radix-ui/react-slider");require("./ui/switch.cjs.js");require("./ui/tabs.cjs.js");const H=require("./ui/tag.cjs.js");require("./ui/text.cjs.js");require("./ui/textarea.cjs.js");require("./ui/toast.cjs.js");require("./ui/toggle.cjs.js");require("./ui/toggle-group.cjs.js");require("./ui/tooltip.cjs.js");const T=require("./image-loading-DZFBFoVv.cjs"),u=80;function O({keyPrefix:o,lecturer:s,roleLabel:b,description:l,numberOfLecturers:p,imagePriority:j,imageLoading:N,imageFetchPriority:v,imageDecoding:w}){const c=`${o}-name`,d=`${o}-srdesc`,m=`${o}-content`,q=t.useRef(null),[i,y]=t.useState(!1),[a,L]=t.useState(!1),[C,I]=t.useState(u),A=g.useReducedMotion();t.useLayoutEffect(()=>{const r=q.current;if(!r)return;const n=()=>{I(r.scrollHeight),L(r.scrollHeight>u+1)};n();const f=new ResizeObserver(n);return f.observe(r),()=>f.disconnect()},[l]);const R=T.getImageLoadingAttributes({imagePriority:j,imageLoading:N,imageFetchPriority:v,imageDecoding:w});return e.jsxs("article",{"aria-labelledby":c,className:x.cn("bt-ds-surface bt-ds-radius-10 flex h-full w-full items-start gap-5 rounded-[10px] border border-grey-200 bg-background px-[30px] py-5",p===1&&"col-span-2"),children:[e.jsx("div",{className:"shrink-0",children:s.imageUrl?e.jsx("div",{className:"bt-ds-surface bt-ds-radius-full relative flex aspect-square w-[60px] items-center justify-center overflow-hidden rounded-full border border-grey-200",children:e.jsx("img",{src:s.imageUrl,alt:`${s.lecturerName} 프로필 이미지`,className:"h-full w-full object-cover",...R})}):e.jsx("div",{className:"relative flex aspect-square w-[60px] items-center justify-center overflow-hidden rounded-full bg-grey-100","aria-label":`${s.lecturerName} 프로필 이미지 없음`,children:e.jsx(h.Icon.Profile,{size:"32",fill:"#A2A3A4","aria-hidden":"true"})})}),e.jsxs("div",{className:"flex w-full flex-col gap-2 text-regular14 text-grey-800",children:[e.jsxs("header",{className:"flex items-center gap-2 text-semibold16",children:[e.jsx("span",{id:c,children:s.lecturerName}),e.jsx(H.Tag,{variant:"solid-secondary-100",size:"sm",className:"px-1 py-0.5",children:b})]}),e.jsx("span",{className:"sr-only",id:d,children:"강사 소개를 목록으로 안내한다."}),e.jsxs(g.motion.div,{initial:!1,animate:{height:a?i?C:u:"auto"},transition:{duration:A?0:.35,ease:[.4,0,.2,1]},className:"relative overflow-hidden",children:[e.jsx("ul",{ref:q,id:m,"aria-describedby":d,"aria-expanded":a?i:void 0,className:"flex w-full flex-col whitespace-pre-wrap break-keep text-grey-600",children:l.map((r,n)=>e.jsx("li",{children:r},n))}),a&&!i&&e.jsx("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 h-8 bg-gradient-to-t from-white to-transparent"})]}),a&&e.jsxs("button",{type:"button",onClick:()=>y(r=>!r),"aria-expanded":i,"aria-controls":m,className:"flex items-center gap-0.5 self-end text-main-600",children:[i?"정보 숨기기":"정보 더보기",e.jsx(h.Icon.ArrowDown2,{size:"16",fill:"currentColor","aria-hidden":"true",className:x.cn("shrink-0 transition-transform duration-200",i&&"rotate-180")})]})]})]})}exports.LecturerCard=O;
1
+ "use strict";const e=require("react/jsx-runtime"),t=require("react"),g=require("framer-motion"),x=require("./common-DeneXo5X.cjs");require("./ui/accordion.cjs.js");require("./ui/alert-dialog.cjs.js");require("@radix-ui/react-aspect-ratio");require("./ui/avatar.cjs.js");require("./ui/badge.cjs.js");require("./ui/button.cjs.js");require("./ui/calendar.cjs.js");require("./ui/callout.cjs.js");require("./ui/card.cjs.js");require("./ui/card-label.cjs.js");require("./ui/checkbox.cjs.js");require("lucide-react");require("./ui/command.cjs.js");require("./ui/dialog.cjs.js");require("./ui/dropdown-menu.cjs.js");require("./ui/file-uploader.cjs.js");require("./ui/form.cjs.js");const h=require("./ui/icons.cjs.js");require("./ui/input.cjs.js");require("./ui/label.cjs.js");require("./ui/month-picker.cjs.js");require("./ui/multi-select.cjs.js");require("./ui/navigation-menu.cjs.js");require("./ui/popover.cjs.js");require("./ui/progress.cjs.js");require("./ui/radio-group.cjs.js");require("./ui/scroll-area.cjs.js");require("./ui/select.cjs.js");require("./ui/separator.cjs.js");require("@radix-ui/react-slider");require("./ui/switch.cjs.js");require("./ui/tabs.cjs.js");const H=require("./ui/tag.cjs.js");require("./ui/text.cjs.js");require("./ui/textarea.cjs.js");require("./ui/toast.cjs.js");require("./ui/toggle.cjs.js");require("./ui/toggle-group.cjs.js");require("./ui/tooltip.cjs.js");const T=require("./image-loading-DZFBFoVv.cjs"),u=80;function k({keyPrefix:o,lecturer:s,roleLabel:b,description:l,numberOfLecturers:p,imagePriority:j,imageLoading:w,imageFetchPriority:N,imageDecoding:v}){const c=`${o}-name`,d=`${o}-srdesc`,m=`${o}-content`,q=t.useRef(null),[i,y]=t.useState(!1),[a,L]=t.useState(!1),[C,I]=t.useState(u),A=g.useReducedMotion();t.useLayoutEffect(()=>{const r=q.current;if(!r)return;const n=()=>{I(r.scrollHeight),L(r.scrollHeight>u+1)};n();const f=new ResizeObserver(n);return f.observe(r),()=>f.disconnect()},[l]);const R=T.getImageLoadingAttributes({imagePriority:j,imageLoading:w,imageFetchPriority:N,imageDecoding:v});return e.jsxs("article",{"aria-labelledby":c,className:x.cn("bt-ds-surface bt-ds-radius-10 flex h-full w-full items-start gap-5 rounded-[10px] border border-grey-200 bg-background px-[30px] py-5",p===1&&"col-span-2"),children:[e.jsx("div",{className:"shrink-0",children:s.imageUrl?e.jsx("div",{className:"bt-ds-surface bt-ds-radius-full relative flex aspect-square w-[60px] items-center justify-center overflow-hidden rounded-full border border-grey-200",children:e.jsx("img",{src:s.imageUrl,alt:`${s.lecturerName} 프로필 이미지`,className:"h-full w-full object-cover",...R})}):e.jsx("div",{className:"relative flex aspect-square w-[60px] items-center justify-center overflow-hidden rounded-full bg-grey-100","aria-label":`${s.lecturerName} 프로필 이미지 없음`,children:e.jsx(h.Icon.Profile,{size:"32",fill:"#A2A3A4","aria-hidden":"true"})})}),e.jsxs("div",{className:"flex w-full min-w-0 flex-col gap-2 text-regular14 text-grey-800",children:[e.jsxs("header",{className:"flex items-center gap-2 text-semibold16",children:[e.jsx("span",{id:c,children:s.lecturerName}),e.jsx(H.Tag,{variant:"solid-secondary-100",size:"sm",className:"px-1 py-0.5",children:b})]}),e.jsx("span",{className:"sr-only",id:d,children:"강사 소개를 목록으로 안내한다."}),e.jsxs(g.motion.div,{initial:!1,animate:{height:a?i?C:u:"auto"},transition:{duration:A?0:.35,ease:[.4,0,.2,1]},className:"relative min-w-0 overflow-hidden",children:[e.jsx("ul",{ref:q,id:m,"aria-describedby":d,"aria-expanded":a?i:void 0,className:"flex w-full min-w-0 flex-col whitespace-pre-wrap break-words break-keep text-grey-600",children:l.map((r,n)=>e.jsx("li",{children:r},n))}),a&&!i&&e.jsx("span",{"aria-hidden":"true",className:"pointer-events-none absolute inset-x-0 bottom-0 h-8 bg-gradient-to-t from-white to-transparent"})]}),a&&e.jsxs("button",{type:"button",onClick:()=>y(r=>!r),"aria-expanded":i,"aria-controls":m,className:"flex items-center gap-0.5 self-end text-main-600",children:[i?"정보 숨기기":"정보 더보기",e.jsx(h.Icon.ArrowDown2,{size:"16",fill:"currentColor","aria-hidden":"true",className:x.cn("shrink-0 transition-transform duration-200",i&&"rotate-180")})]})]})]})}exports.LecturerCard=k;
@@ -1,6 +1,6 @@
1
1
  import { jsxs as o, jsx as e } from "react/jsx-runtime";
2
- import { useRef as O, useState as l, useLayoutEffect as R } from "react";
3
- import { useReducedMotion as $, motion as k } from "framer-motion";
2
+ import { useRef as k, useState as l, useLayoutEffect as O } from "react";
3
+ import { useReducedMotion as R, motion as $ } from "framer-motion";
4
4
  import { c as h } from "./common-zQ5XY0UN.js";
5
5
  import "./ui/accordion.es.js";
6
6
  import "./ui/alert-dialog.es.js";
@@ -48,26 +48,26 @@ function Le({
48
48
  lecturer: i,
49
49
  roleLabel: x,
50
50
  description: c,
51
- numberOfLecturers: N,
52
- imagePriority: v,
53
- imageLoading: w,
51
+ numberOfLecturers: w,
52
+ imagePriority: N,
53
+ imageLoading: v,
54
54
  imageFetchPriority: y,
55
55
  imageDecoding: A
56
56
  }) {
57
- const d = `${n}-name`, p = `${n}-srdesc`, u = `${n}-content`, f = O(null), [r, C] = l(!1), [a, I] = l(!1), [L, H] = l(m), T = $();
58
- R(() => {
59
- const t = f.current;
60
- if (!t) return;
57
+ const d = `${n}-name`, p = `${n}-srdesc`, u = `${n}-content`, f = k(null), [t, C] = l(!1), [a, I] = l(!1), [L, H] = l(m), T = R();
58
+ O(() => {
59
+ const r = f.current;
60
+ if (!r) return;
61
61
  const s = () => {
62
- H(t.scrollHeight), I(t.scrollHeight > m + 1);
62
+ H(r.scrollHeight), I(r.scrollHeight > m + 1);
63
63
  };
64
64
  s();
65
65
  const g = new ResizeObserver(s);
66
- return g.observe(t), () => g.disconnect();
66
+ return g.observe(r), () => g.disconnect();
67
67
  }, [c]);
68
68
  const j = E({
69
- imagePriority: v,
70
- imageLoading: w,
69
+ imagePriority: N,
70
+ imageLoading: v,
71
71
  imageFetchPriority: y,
72
72
  imageDecoding: A
73
73
  });
@@ -77,7 +77,7 @@ function Le({
77
77
  "aria-labelledby": d,
78
78
  className: h(
79
79
  "bt-ds-surface bt-ds-radius-10 flex h-full w-full items-start gap-5 rounded-[10px] border border-grey-200 bg-background px-[30px] py-5",
80
- N === 1 && "col-span-2"
80
+ w === 1 && "col-span-2"
81
81
  ),
82
82
  children: [
83
83
  /* @__PURE__ */ e("div", { className: "shrink-0", children: i.imageUrl ? /* @__PURE__ */ e("div", { className: "bt-ds-surface bt-ds-radius-full relative flex aspect-square w-[60px] items-center justify-center overflow-hidden rounded-full border border-grey-200", children: /* @__PURE__ */ e(
@@ -96,19 +96,19 @@ function Le({
96
96
  children: /* @__PURE__ */ e(b.Profile, { size: "32", fill: "#A2A3A4", "aria-hidden": "true" })
97
97
  }
98
98
  ) }),
99
- /* @__PURE__ */ o("div", { className: "flex w-full flex-col gap-2 text-regular14 text-grey-800", children: [
99
+ /* @__PURE__ */ o("div", { className: "flex w-full min-w-0 flex-col gap-2 text-regular14 text-grey-800", children: [
100
100
  /* @__PURE__ */ o("header", { className: "flex items-center gap-2 text-semibold16", children: [
101
101
  /* @__PURE__ */ e("span", { id: d, children: i.lecturerName }),
102
102
  /* @__PURE__ */ e(z, { variant: "solid-secondary-100", size: "sm", className: "px-1 py-0.5", children: x })
103
103
  ] }),
104
104
  /* @__PURE__ */ e("span", { className: "sr-only", id: p, children: "강사 소개를 목록으로 안내한다." }),
105
105
  /* @__PURE__ */ o(
106
- k.div,
106
+ $.div,
107
107
  {
108
108
  initial: !1,
109
- animate: { height: a ? r ? L : m : "auto" },
109
+ animate: { height: a ? t ? L : m : "auto" },
110
110
  transition: { duration: T ? 0 : 0.35, ease: [0.4, 0, 0.2, 1] },
111
- className: "relative overflow-hidden",
111
+ className: "relative min-w-0 overflow-hidden",
112
112
  children: [
113
113
  /* @__PURE__ */ e(
114
114
  "ul",
@@ -116,12 +116,12 @@ function Le({
116
116
  ref: f,
117
117
  id: u,
118
118
  "aria-describedby": p,
119
- "aria-expanded": a ? r : void 0,
120
- className: "flex w-full flex-col whitespace-pre-wrap break-keep text-grey-600",
121
- children: c.map((t, s) => /* @__PURE__ */ e("li", { children: t }, s))
119
+ "aria-expanded": a ? t : void 0,
120
+ className: "flex w-full min-w-0 flex-col whitespace-pre-wrap break-words break-keep text-grey-600",
121
+ children: c.map((r, s) => /* @__PURE__ */ e("li", { children: r }, s))
122
122
  }
123
123
  ),
124
- a && !r && /* @__PURE__ */ e(
124
+ a && !t && /* @__PURE__ */ e(
125
125
  "span",
126
126
  {
127
127
  "aria-hidden": "true",
@@ -135,19 +135,19 @@ function Le({
135
135
  "button",
136
136
  {
137
137
  type: "button",
138
- onClick: () => C((t) => !t),
139
- "aria-expanded": r,
138
+ onClick: () => C((r) => !r),
139
+ "aria-expanded": t,
140
140
  "aria-controls": u,
141
141
  className: "flex items-center gap-0.5 self-end text-main-600",
142
142
  children: [
143
- r ? "정보 숨기기" : "정보 더보기",
143
+ t ? "정보 숨기기" : "정보 더보기",
144
144
  /* @__PURE__ */ e(
145
145
  b.ArrowDown2,
146
146
  {
147
147
  size: "16",
148
148
  fill: "currentColor",
149
149
  "aria-hidden": "true",
150
- className: h("shrink-0 transition-transform duration-200", r && "rotate-180")
150
+ className: h("shrink-0 transition-transform duration-200", t && "rotate-180")
151
151
  }
152
152
  )
153
153
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "boottent-design",
3
- "version": "0.1.270",
3
+ "version": "0.1.272",
4
4
  "description": "부트텐트 디자인시스템 라이브러리",
5
5
  "repository": {
6
6
  "type": "git",
@@ -83,6 +83,7 @@
83
83
  "storybook:test": "storybook test --url http://localhost:6006",
84
84
  "stories:check": "node scripts/check-story-coverage.mjs",
85
85
  "preview": "vite preview",
86
+ "postinstall": "node ./bin/postinstall-sync.mjs",
86
87
  "prepare": "husky",
87
88
  "prepublishOnly": "yarn run build",
88
89
  "chromatic": "npx chromatic --only-changed --project-token=$CHROMATIC_PROJECT_TOKEN --storybook-build-dir=.cache/storybook-static",