@krds.ui/vue 0.0.18 → 0.0.20

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 CHANGED
@@ -12,7 +12,7 @@ KRDS Vue는 공공 웹서비스에서 반복되는 폼, 내비게이션, 레이
12
12
 
13
13
  ## 링크
14
14
 
15
- - [Storybook 문서](https://krds.initializer.org/) - 컴포넌트 예제, Controls, API 문서
15
+ - [문서 사이트](https://krds.initializer.org/) - 컴포넌트 예제, 코드, API(props·events·slots) 문서
16
16
  - [npm 패키지](https://www.npmjs.com/package/@krds.ui/vue)
17
17
  - [GitHub 저장소](https://github.com/Initializer-org/krds-vue)
18
18
  - [KRDS 공식 홈페이지](https://www.krds.go.kr/html/site/index.html)
@@ -69,6 +69,16 @@ app.use(KrdsVue, {
69
69
  })
70
70
  ```
71
71
 
72
+ 전역 등록한 컴포넌트의 템플릿 타입 검사·자동완성(Volar/vue-tsc)을 쓰려면 `tsconfig.json`에 전역 타입을 추가합니다. 전체 컴포넌트와 `v-sr-only`, `$krds`가 전역으로 선언되므로 일부만 등록했다면 등록하지 않은 컴포넌트 사용에 주의하세요.
73
+
74
+ ```json
75
+ {
76
+ "compilerOptions": {
77
+ "types": ["@krds.ui/vue/global"]
78
+ }
79
+ }
80
+ ```
81
+
72
82
  ### 3. 개별 컴포넌트 import
73
83
 
74
84
  전역 등록이 필요 없다면 필요한 컴포넌트만 가져옵니다.
@@ -91,6 +101,33 @@ app.use(KrdsVue, {
91
101
  </template>
92
102
  ```
93
103
 
104
+ ### 4. Nuxt
105
+
106
+ 서버 렌더링을 지원합니다. 스타일은 `nuxt.config.ts`에 추가하고, 플러그인에서 등록합니다.
107
+
108
+ ```ts
109
+ // nuxt.config.ts
110
+ export default defineNuxtConfig({
111
+ css: ['@krds.ui/vue/style']
112
+ })
113
+ ```
114
+
115
+ ```ts
116
+ // plugins/krds.ts (Nuxt 4 기본 구조에서는 app/plugins/krds.ts)
117
+ import KrdsVue from '@krds.ui/vue'
118
+
119
+ export default defineNuxtPlugin(nuxtApp => {
120
+ nuxtApp.vueApp.use(KrdsVue)
121
+ })
122
+ ```
123
+
124
+ Nuxt는 tsconfig를 자동 생성하므로, 전역 타입은 프로젝트의 `.d.ts` 파일에 참조를 추가합니다.
125
+
126
+ ```ts
127
+ // types/krds.d.ts
128
+ /// <reference types="@krds.ui/vue/global" />
129
+ ```
130
+
94
131
  ## TypeScript
95
132
 
96
133
  컴포넌트 props와 공통 타입을 패키지 루트에서 가져올 수 있습니다.
@@ -137,7 +174,7 @@ document.documentElement.setAttribute('data-krds-mode', 'high-contrast')
137
174
 
138
175
  ## 컴포넌트 범위
139
176
 
140
- [KRDS 공식 컴포넌트 목록](https://www.krds.go.kr/html/site/component/component_summary.html) 55종 기준 대응 현황입니다. 각 컴포넌트의 props/events는 [Storybook 문서](https://krds.initializer.org/)에서 확인하세요.
177
+ [KRDS 공식 컴포넌트 목록](https://www.krds.go.kr/html/site/component/component_summary.html) 55종 기준 대응 현황입니다. 각 컴포넌트의 예제와 props/events는 [문서 사이트](https://krds.initializer.org/)에서 확인하세요.
141
178
 
142
179
  | 분류 | 공식 컴포넌트 → 제공 컴포넌트 |
143
180
  | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -158,8 +195,8 @@ document.documentElement.setAttribute('data-krds-mode', 'high-contrast')
158
195
 
159
196
  아래 항목은 KRDS 원본 저장소가 구현(HTML/SCSS)을 제공하지 않아 포팅 대상이 아닙니다.
160
197
 
161
- - **플로팅 버튼(FAB), 이미지**: 이미지는 Storybook에 안내 문서만 제공합니다.
162
- - **모바일 계열**(범위슬라이드, 뒤로가기 버튼, 바텀시트, 수량 토글, 토스트, 스낵바, 탭바, 스플래시 스크린): 모바일 앱 전용 항목입니다. 탭바·스플래시 스크린은 Storybook에 안내 문서만 제공합니다.
198
+ - **플로팅 버튼(FAB), 이미지**: 이미지는 문서 사이트에 안내 문서만 제공합니다.
199
+ - **모바일 계열**(범위슬라이드, 뒤로가기 버튼, 바텀시트, 수량 토글, 토스트, 스낵바, 탭바, 스플래시 스크린): 모바일 앱 전용 항목입니다. 탭바·스플래시 스크린은 문서 사이트에 안내 문서만 제공합니다.
163
200
  - **파비콘, 접근 가능한 미디어**: 컴포넌트가 아닌 가이드 항목입니다.
164
201
 
165
202
  ### 원본 동기화 기준
@@ -171,8 +208,8 @@ document.documentElement.setAttribute('data-krds-mode', 'high-contrast')
171
208
  ## 접근성
172
209
 
173
210
  - 컴포넌트는 원본 KRDS 마크업 구조와 ARIA 속성, 키보드 인터랙션을 따라 구현합니다.
174
- - 모든 스토리에 대해 axe-core 기반 자동 접근성 검사(`@storybook/addon-a11y`)를 실행하며, 위반이 있으면 CI가 실패합니다(`test: 'error'`).
175
- - 원본 KRDS 마크업에서 비롯된 위반(탭의 `li[role=tab] > button` 중첩, 정렬 셀렉트의 `title` 전용 레이블, 페이지네이션 비활성 버튼 대비)은 원본을 따르기 위해 해당 스토리에서 요소 단위로만 검사를 제외합니다.
211
+ - 모든 컴포넌트 테스트(`src/components/*/__tests__`)는 렌더한 화면에 axe-core 접근성 검사를 실행하며, 위반이 있으면 CI가 실패합니다.
212
+ - 원본 KRDS 마크업에서 비롯된 위반(탭의 `li[role=tab] > button` 중첩, 정렬 셀렉트의 `title` 전용 레이블, 페이지네이션 비활성 버튼 대비, 사이드 메뉴 팝업의 `role=menu` 하위 구조)은 원본을 따르기 위해 해당 테스트에서 요소 단위로만 검사를 제외합니다.
176
213
  - 고대비 모드(`data-krds-mode="high-contrast"`)를 지원합니다.
177
214
 
178
215
  라이브러리 차원의 자동 검사는 KWCAG/WCAG 적합성 평가를 대체하지 않습니다. 서비스 전체의 접근성 준수는 사용처에서 별도 검증이 필요합니다.
@@ -214,11 +251,12 @@ git clone https://github.com/Initializer-org/krds-vue.git
214
251
  cd krds-vue
215
252
 
216
253
  pnpm install
217
- pnpm storybook # Storybook 개발 서버 실행
254
+ pnpm docs:dev # 문서 사이트 개발 서버 실행
218
255
  pnpm test # Vitest 실행 (Playwright 브라우저 모드)
219
- pnpm lint # ESLint 검사 및 자동 수정
256
+ pnpm lint # oxlint 검사 (--fix로 자동 수정)
257
+ pnpm format # oxfmt 포매팅
220
258
  pnpm build # 타입 검사와 라이브러리 빌드
221
- pnpm build-storybook # 정적 Storybook 빌드
259
+ pnpm docs:build # 문서 사이트 빌드
222
260
  ```
223
261
 
224
262
  커밋 메시지는 Conventional Commits(`feat:`, `fix:`, `docs:` 등)를 따릅니다. 커밋 타입과 내용이 체인지로그와 버전 산정에 그대로 반영됩니다.
@@ -227,10 +265,11 @@ pnpm build-storybook # 정적 Storybook 빌드
227
265
 
228
266
  `npm pack --dry-run` 기준으로 패키지에는 다음 산출물이 포함됩니다.
229
267
 
230
- - `dist/krds-vue.es.js`
268
+ - `dist/krds-vue.es.js` (+ 소스맵 `dist/krds-vue.es.js.map`)
231
269
  - `dist/style.css`
232
- - `dist/types/index.d.ts`
270
+ - `dist/types/index.d.ts`, `global.d.ts` (전역 컴포넌트 타입)
233
271
  - `dist/img/component/icon/*.svg`
272
+ - `dist/fonts/*.woff2` (Pretendard GOV)
234
273
 
235
274
  ## 라이선스
236
275