Files
yakcloud-packages/packages/ui/src/index.ts
jungwoo choi e34a325b52 feat(ui,api-client): B4/B5 추출 — @yakcloud/ui + @yakcloud/api-client
@yakcloud/ui (15 모듈, react peer, ds-sdk type-only):
- globals.css 3분할(tokens/components/sheet.css; 680px→--sheet-body-max-height)
- icons·primitives·controls·states, LineChart 6색 CSS 토큰화(+peakColorToken)
- CardSheet/PanelSheets: apiGet 디커플(콘텐츠 prop 주입)·lockPageScroll(container?) 폴백
- decorators(statusMeta 등, ds-sdk enum 소비), getServiceMeta(type, logoBase) 로고 URL-only
- 수정: tsconfig jsx:react-jsx, @types/react(-dom), CSS exports 서브패스

@yakcloud/api-client (3 모듈, react peer, ds-sdk type-only):
- apiGet/apiSend/apiDownload + ApiClientError, usePoll(SWR·LRU·gen guard·401/403)
- /api/v1 고정 훅 제외, 서버코드 유입 0(ApiCode만 ds-sdk에서)

검증: DAG PASS(ui↛api-client, api-client↛서버), 디커플 PASS, tsc --noEmit 통과(양 패키지).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-25 11:41:00 +09:00

36 lines
1.4 KiB
TypeScript

// @yakcloud/ui — 공개 배럴.
// 디자인시스템·프리미티브: 토큰·인라인 SVG·CardSheet/PanelSheets·LineChart(토큰색)·getServiceMeta(logoBase).
// ⛔ api-client 참조 금지. ds-sdk 는 import type 만(런타임 의존 아님).
// CSS 는 서브패스(./tokens.css, ./components.css, ./sheet.css)로 개별 import.
// 상수
export { DEFAULT_SHEET_WIDTH } from "./constants";
// 아이콘 (자기완결 SVG)
export * from "./icons";
// 프리미티브 (프레젠테이션)
export { Badge, Gauge, Timeline, CodeBlock, C, LineChart } from "./primitives";
export type { TimelineItem, ChartSeries } from "./primitives";
// 컨트롤 (client)
export { PillRange, Stepper, Modal } from "./controls";
// 상태 컴포넌트 (client)
export { Skeleton, ErrorState, EmptyState } from "./states";
// 시트 (client)
export { CardSheet, SheetConfirmFooter, SheetHelpButton, lockPageScroll } from "./CardSheet";
export { PanelSheets } from "./PanelSheets";
export type { PanelSheetDef } from "./PanelSheets";
export { useSheet } from "./useSheet";
export { usePanelSheets } from "./usePanelSheets";
export type { PanelSheetsCtl, PanelSheetCurrent } from "./usePanelSheets";
// 데코레이터 (ds-sdk enum → BadgeKind)
export { statusMeta, deployStatusMeta, serviceStatusMeta } from "./decorators";
export type { BadgeKind } from "./decorators";
// 서비스 메타 (로고 URL·라벨)
export { getServiceMeta, getLogoFileName } from "./service-meta";