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
2026-08-25 11:03:37 +09:00

yakcloud-packages

YakCloud 데이터소스 웹 클라이언트 공용 패키지 모노레포(오픈소스, Apache-2.0). 설계·판정 근거: private-cluster docs/clients/{datasource-web-clients-design,phase-0-plan,scaffold-input,open-items-decisions}.md.

패키지 의존 DAG (단방향 강제)

ds-sdk (리프: zod·DTO·BIND_ENV SSOT·ApiCode)
  ▲ type-only
  ├── api-client   (fetch·usePoll; ⛔ 서버코드 유입 금지)
  └── ui           (react peer; ⛔ api-client 참조 금지)
        ▲
        └── client-shell (신규: 9종 데이터소스 웹 클라 셸)
auth-adapter (next-auth peer)
  ▲
bff-kit (ds-sdk + auth-adapter; respond/session/serialize/ratelimit; ⛔ api-client 참조 금지)
backup-core (zod; 신규 전체)

역의존 금지 3규칙: ①ds-sdk 절대 리프(serialize는 bff-kit) ②respond=bff-kit 전용(공유는 ApiCode 리터럴만 ds-sdk) ③ui→콘솔 금지(help-sheets 분리).

상태

B1 스캐폴드 스켈레톤(빈 골격). 실제 추출(B3~B6)·MinIO(Phase1)·백업(M5)은 후속.

Description
YakCloud 데이터소스 웹 클라이언트 공용 패키지 모노레포 (Apache-2.0)
Readme 131 KiB
Languages
TypeScript 92.7%
CSS 6.5%
JavaScript 0.8%