배경
PR #85에서 .storybook/story-token-map.ts가 lvis-app plugin-token-map.ts의 전체 복사본으로 추가됨.
현재 동일한 토큰 테이블이 3곳에 존재:
lvis-app/src/ui/renderer/theme/plugin-token-map.ts — host SoT
lvis-plugin-sdk/src/ui/tokens/lvis-tokens.css :root — dark fallback
lvis-plugin-sdk/.storybook/story-token-map.ts — Storybook 전용
권장 구조
Option B (권장): resolveStoryTokens를 src/ui/tokens/resolver.ts로 이동, Storybook이 SDK 자신을 import.
src/ui/tokens/resolver.ts (신규)
→ export function resolvePluginTokens(theme, chatTheme): Record<string, string>
→ Storybook preview.tsx 와 외부 소비자 모두 사용 가능
.storybook/preview.tsx
→ import { resolvePluginTokens } from "../src/ui/tokens/resolver.js"
@internal JSDoc 태그 또는 별도 export path (@lvis/plugin-sdk/resolver)로 격리
- "Keep in sync with lvis-app" 주석 제거 가능
선행 조건
- lvis-app
plugin-token-map.ts의 값과 정렬 확인
배경
PR #85에서
.storybook/story-token-map.ts가 lvis-appplugin-token-map.ts의 전체 복사본으로 추가됨.현재 동일한 토큰 테이블이 3곳에 존재:
lvis-app/src/ui/renderer/theme/plugin-token-map.ts— host SoTlvis-plugin-sdk/src/ui/tokens/lvis-tokens.css :root— dark fallbacklvis-plugin-sdk/.storybook/story-token-map.ts— Storybook 전용권장 구조
Option B (권장):
resolveStoryTokens를src/ui/tokens/resolver.ts로 이동, Storybook이 SDK 자신을 import.@internalJSDoc 태그 또는 별도 export path (@lvis/plugin-sdk/resolver)로 격리선행 조건
plugin-token-map.ts의 값과 정렬 확인