@designbasekorea/ui-wc 0.13.0 → 0.15.0
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/CHANGELOG.md +16 -0
- package/LICENSE +21 -0
- package/README.en.md +45 -0
- package/README.md +13 -5
- package/THIRD-PARTY-NOTICES.md +5 -0
- package/dist/esm/components/db-ad-banner.d.ts +6 -0
- package/dist/esm/components/db-ad-banner.js +1 -1
- package/dist/esm/components/db-animation-background.d.ts +7 -0
- package/dist/esm/components/db-animation-background.js +1 -1
- package/dist/esm/components/db-avatar.d.ts +2 -0
- package/dist/esm/components/db-avatar.js +1 -1
- package/dist/esm/components/db-banner.d.ts +2 -0
- package/dist/esm/components/db-banner.js +1 -1
- package/dist/esm/components/db-bottom-navigation.d.ts +2 -0
- package/dist/esm/components/db-bottom-navigation.js +1 -1
- package/dist/esm/components/db-card.d.ts +2 -0
- package/dist/esm/components/db-card.js +1 -1
- package/dist/esm/components/db-carousel.d.ts +2 -0
- package/dist/esm/components/db-carousel.js +1 -1
- package/dist/esm/components/db-code-block.d.ts +3 -0
- package/dist/esm/components/db-code-block.js +1 -1
- package/dist/esm/components/db-color-picker.d.ts +5 -0
- package/dist/esm/components/db-color-picker.js +1 -1
- package/dist/esm/components/db-color-swatch.d.ts +2 -0
- package/dist/esm/components/db-color-swatch.js +1 -1
- package/dist/esm/components/db-confirm.d.ts +2 -0
- package/dist/esm/components/db-confirm.js +1 -1
- package/dist/esm/components/db-context-menu.d.ts +6 -2
- package/dist/esm/components/db-context-menu.js +1 -1
- package/dist/esm/components/db-cookie-banner.d.ts +2 -0
- package/dist/esm/components/db-cookie-banner.js +1 -1
- package/dist/esm/components/db-drawer.d.ts +2 -0
- package/dist/esm/components/db-drawer.js +1 -1
- package/dist/esm/components/db-dropdown.d.ts +2 -0
- package/dist/esm/components/db-dropdown.js +1 -1
- package/dist/esm/components/db-easing-editor.d.ts +5 -0
- package/dist/esm/components/db-empty-state.d.ts +2 -0
- package/dist/esm/components/db-empty-state.js +1 -1
- package/dist/esm/components/db-file-uploader.d.ts +4 -0
- package/dist/esm/components/db-file-uploader.js +1 -1
- package/dist/esm/components/db-footer.d.ts +2 -0
- package/dist/esm/components/db-footer.js +1 -1
- package/dist/esm/components/db-gantt.d.ts +2 -0
- package/dist/esm/components/db-gantt.js +1 -1
- package/dist/esm/components/db-image-list.d.ts +3 -0
- package/dist/esm/components/db-image-list.js +1 -1
- package/dist/esm/components/db-keyframe-editor.d.ts +5 -0
- package/dist/esm/components/db-layer-list.d.ts +71 -0
- package/dist/esm/components/db-layer-list.js +1 -0
- package/dist/esm/components/db-lightbox.d.ts +4 -0
- package/dist/esm/components/db-lightbox.js +1 -1
- package/dist/esm/components/db-list.d.ts +2 -0
- package/dist/esm/components/db-list.js +1 -1
- package/dist/esm/components/db-menu-item.d.ts +2 -0
- package/dist/esm/components/db-menu-item.js +1 -1
- package/dist/esm/components/db-modal.d.ts +3 -0
- package/dist/esm/components/db-modal.js +1 -1
- package/dist/esm/components/db-navbar.d.ts +5 -0
- package/dist/esm/components/db-navbar.js +1 -1
- package/dist/esm/components/db-onboarding-modal.d.ts +3 -0
- package/dist/esm/components/db-onboarding-modal.js +1 -1
- package/dist/esm/components/db-page-header.d.ts +3 -0
- package/dist/esm/components/db-page-header.js +1 -1
- package/dist/esm/components/db-pagination.d.ts +2 -0
- package/dist/esm/components/db-pagination.js +1 -1
- package/dist/esm/components/db-popover.d.ts +2 -0
- package/dist/esm/components/db-popover.js +1 -1
- package/dist/esm/components/db-search-bar.d.ts +3 -0
- package/dist/esm/components/db-search-bar.js +1 -1
- package/dist/esm/components/db-section-app-download.d.ts +2 -0
- package/dist/esm/components/db-section-app-download.js +1 -1
- package/dist/esm/components/db-section-contact.d.ts +2 -0
- package/dist/esm/components/db-section-contact.js +1 -1
- package/dist/esm/components/db-section-cta.d.ts +3 -0
- package/dist/esm/components/db-section-cta.js +1 -1
- package/dist/esm/components/db-section-faq.d.ts +2 -0
- package/dist/esm/components/db-section-faq.js +1 -1
- package/dist/esm/components/db-section-feature.d.ts +3 -0
- package/dist/esm/components/db-section-feature.js +1 -1
- package/dist/esm/components/db-section-hero.d.ts +2 -0
- package/dist/esm/components/db-section-hero.js +1 -1
- package/dist/esm/components/db-section-logo-cloud.d.ts +2 -0
- package/dist/esm/components/db-section-logo-cloud.js +1 -1
- package/dist/esm/components/db-section-pricing.d.ts +3 -0
- package/dist/esm/components/db-section-pricing.js +1 -1
- package/dist/esm/components/db-section-stats.d.ts +2 -0
- package/dist/esm/components/db-section-stats.js +1 -1
- package/dist/esm/components/db-section-testimonials.d.ts +4 -0
- package/dist/esm/components/db-section-testimonials.js +1 -1
- package/dist/esm/components/db-section.d.ts +2 -0
- package/dist/esm/components/db-section.js +1 -1
- package/dist/esm/components/db-share.d.ts +5 -0
- package/dist/esm/components/db-share.js +1 -1
- package/dist/esm/components/db-sidebar.d.ts +7 -0
- package/dist/esm/components/db-sidebar.js +1 -1
- package/dist/esm/components/db-stat.d.ts +2 -0
- package/dist/esm/components/db-stat.js +1 -1
- package/dist/esm/components/db-table.d.ts +5 -0
- package/dist/esm/components/db-table.js +1 -1
- package/dist/esm/components/db-testimonial.d.ts +3 -0
- package/dist/esm/components/db-testimonial.js +1 -1
- package/dist/esm/components/db-time-picker.d.ts +1 -0
- package/dist/esm/components/db-time-picker.js +1 -1
- package/dist/esm/components/db-top-banner.d.ts +3 -0
- package/dist/esm/components/db-top-banner.js +1 -1
- package/dist/esm/components/db-tutorial.d.ts +3 -0
- package/dist/esm/components/db-tutorial.js +1 -1
- package/dist/esm/components/db-video-timeline.d.ts +34 -2
- package/dist/esm/components/db-video-timeline.js +1 -1
- package/dist/esm/components/db-world-map.d.ts +5 -0
- package/dist/esm/components/media-editor-model.d.ts +10 -1
- package/dist/esm/core/i18n-en.js +1 -1
- package/dist/esm/core/i18n.d.ts +11 -0
- package/dist/esm/core/i18n.js +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +619 -486
- package/dist/index.esm.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +47 -3
- package/dist/react/index.esm.js +1 -1
- package/docs/ACCORDION.md +17 -0
- package/docs/ACHIEVEMENTS.md +15 -0
- package/docs/AI-ELEMENTS.md +86 -0
- package/docs/APP-UPDATE.md +60 -0
- package/docs/ATTACHMENTS.md +32 -0
- package/docs/BUTTON.md +17 -0
- package/docs/CDN-GUIDE.md +82 -0
- package/docs/COMPONENT-CHECKLIST.md +98 -0
- package/docs/CONTEXT-MENU.md +22 -0
- package/docs/CREDIT-AI.md +136 -0
- package/docs/CREDIT-CARD.md +52 -0
- package/docs/CROSS_PLATFORM_COMPONENT_STRATEGY.md +81 -0
- package/docs/EASING-EDITOR.md +42 -0
- package/docs/EFFECT-KEYFRAMES.md +60 -0
- package/docs/LAYER-LIST.md +31 -0
- package/docs/MEDIA-EDITORS.md +63 -0
- package/docs/MODULE-REUSE.md +43 -0
- package/docs/MULTI-PLATFORM-GUIDE.md +246 -0
- package/docs/NOTIFICATIONS.md +23 -0
- package/docs/PAPER-CARDS.md +61 -0
- package/docs/QUALITY-GUIDELINES.md +196 -0
- package/docs/RANGE-SLIDER.md +29 -0
- package/docs/REACT-WC-INTEGRATION.md +96 -0
- package/docs/RECENT-COMPONENTS-QUALITY.md +96 -0
- package/docs/SELECT.md +26 -0
- package/docs/SELECTION-CONTROLS.md +33 -0
- package/docs/SITE-SHELL.md +37 -0
- package/docs/STYLING.md +60 -0
- package/docs/SUPPORT.md +39 -0
- package/docs/TABS.md +19 -0
- package/docs/TEXT-FIELDS.md +28 -0
- package/docs/TIME-PICKER-DEVELOPMENT.md +115 -0
- package/docs/TOGGLE.md +40 -0
- package/docs/TRAVEL.md +30 -0
- package/docs/UI-NATIVE.md +90 -0
- package/docs/VIDEO-EXPORT.md +12 -0
- package/docs/VOICE-INPUT.md +24 -0
- package/docs/VUE-ANGULAR-INTEGRATION.md +197 -0
- package/docs/WORDPRESS-INTEGRATION.md +250 -0
- package/docs/WORKSPACE.md +27 -0
- package/docs/quality/AXE-REPORT.md +35 -0
- package/docs/quality/CREDIT-AI-RELEASE-2026-10-18.md +34 -0
- package/docs/quality/ENUM-MIGRATION-WORKSHEET.md +288 -0
- package/docs/quality/SCORECARD.md +389 -0
- package/package.json +136 -130
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
# enum 계약 이관 검토 워크시트
|
|
2
|
+
|
|
3
|
+
> ⚠️ **자동 생성 파일** — `node scripts/audit-wc-quality.mjs` 로 갱신되지 않는 일회성 산출물이다.
|
|
4
|
+
> 값 확정 후 `packages/ui-contracts/src/components.ts` 로 옮기고 이 파일은 지운다.
|
|
5
|
+
|
|
6
|
+
## 왜 이 문서가 필요한가
|
|
7
|
+
|
|
8
|
+
아래 컴포넌트들은 `variant` · `size` 같은 enum 성격의 속성을 갖지만,
|
|
9
|
+
**허용 값 집합이 코드 어디에도 선언돼 있지 않다.** 값은 SCSS 수식어 클래스에만 암묵적으로 존재한다.
|
|
10
|
+
|
|
11
|
+
자동 도출을 시도했으나 신뢰할 수 없었다 — SCSS 수식어에는 enum 값과 상태 클래스
|
|
12
|
+
(`--dragging`, `--first`), 다른 축의 값(`--padding-l`, `--theme-dark`)이 뒤섞여 있다.
|
|
13
|
+
잘못 도출한 집합으로 `coerceToContract()` 를 적용하면 **유효한 값이 조용히 기본값으로 바뀌는 회귀**가 된다.
|
|
14
|
+
그래서 자동 적용하지 않고, 사람이 확정할 수 있도록 후보만 정리했다.
|
|
15
|
+
|
|
16
|
+
## 사용법
|
|
17
|
+
|
|
18
|
+
1. 각 컴포넌트의 후보에서 실제 enum 값만 골라낸다 (상태 클래스·다른 축은 제외)
|
|
19
|
+
2. `packages/ui-contracts/src/components.ts` 에 `<COMPONENT>_<ATTR>S` 로 추가
|
|
20
|
+
3. 컴포넌트에서 import 하고 getter 를 `coerceToContract()` 로 감싼다
|
|
21
|
+
4. `npm run audit:quality` 로 `STD-CONTRACT` · `STD-COERCE` 해소 확인
|
|
22
|
+
|
|
23
|
+
레퍼런스 구현: `db-button` · `db-select` · `db-tabs`
|
|
24
|
+
|
|
25
|
+
## 대상 45개
|
|
26
|
+
|
|
27
|
+
### `db-accordion`
|
|
28
|
+
|
|
29
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
30
|
+
- 후보 값: `bordered`, `contained`, `default`, `l`, `m`, `s`, `separated`
|
|
31
|
+
- 제외된 상태 클래스: `disabled`, `expanded`
|
|
32
|
+
|
|
33
|
+
### `db-ad-banner`
|
|
34
|
+
|
|
35
|
+
- enum 속성: `variant` (기본값 `primary`), `size` (기본값 `m`)
|
|
36
|
+
- 후보 값: `bg-animation`, `bg-gradient`, `bg-grid`, `size-l`, `size-m`, `size-s`, `type-card`, `type-floating`, `type-hero`, `type-topbar`, `variant-error`, `variant-primary`, `variant-secondary`, `variant-success`, `variant-warning`
|
|
37
|
+
- 제외된 상태 클래스: `with-gradient`
|
|
38
|
+
|
|
39
|
+
### `db-alert`
|
|
40
|
+
|
|
41
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
42
|
+
- 후보 값: `danger`, `default`, `info`, `inverse`, `l`, `m`, `s`, `success`, `warning`
|
|
43
|
+
- 제외된 상태 클래스: `closable`, `with-icon`
|
|
44
|
+
|
|
45
|
+
### `db-animation-text`
|
|
46
|
+
|
|
47
|
+
- enum 속성: `size` (기본값 `m`), `align` (기본값 `left`)
|
|
48
|
+
- 후보 값: `2xl`, `3xl`, `bold`, `bounce`, `center`, `custom`, `decode`, `down`, `error`, `extrabold`, `fade`, `flip`, `glow`, `gradient`, `info`, `justify`, `l`, `left`, `light`, `m`, `medium`, `normal`, `primary`, `reveal`, `right`, `roll`, `s`, `scale`, `scroll-fill`, `secondary`, `semibold`, `shake`, `slide`, `success`, `text-rotate`, `up`, `warning`, `wave`, `xl`, `xs`
|
|
49
|
+
- 제외된 상태 클래스: `clickable`, `disabled`, `typing`
|
|
50
|
+
|
|
51
|
+
### `db-app-badge`
|
|
52
|
+
|
|
53
|
+
- enum 속성: `size` (기본값 `m`)
|
|
54
|
+
- 후보 값: `dark`, `l`, `light`, `s`
|
|
55
|
+
|
|
56
|
+
### `db-audio-player`
|
|
57
|
+
|
|
58
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
59
|
+
- 후보 값: `repeat-all`, `repeat-none`, `repeat-one`, `size-l`, `size-m`, `size-s`, `size-xl`
|
|
60
|
+
- 제외된 상태 클래스: `active`, `error`, `loading`, `muted`, `paused`, `playing`, `shuffle`
|
|
61
|
+
|
|
62
|
+
### `db-banner`
|
|
63
|
+
|
|
64
|
+
- enum 속성: `variant` (기본값 `primary`), `size` (기본값 `m`)
|
|
65
|
+
- 후보 값: `image`, `l`, `m`, `outline`, `primary`, `s`, `secondary`, `tertiary`
|
|
66
|
+
- 제외된 상태 클래스: `clickable`
|
|
67
|
+
|
|
68
|
+
### `db-breadcrumbs`
|
|
69
|
+
|
|
70
|
+
- enum 속성: `variant`, `size` (기본값 `m`)
|
|
71
|
+
- 후보 값: `contained`, `default`, `l`, `m`, `s`, `underlined`
|
|
72
|
+
- 제외된 상태 클래스: `active`, `collapsed`, `disabled`
|
|
73
|
+
|
|
74
|
+
### `db-carousel`
|
|
75
|
+
|
|
76
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
77
|
+
- 후보 값: `dragging`, `first`, `fullscreen`, `indicator-dots`, `indicator-lines`, `indicator-numbers`, `indicator-thumbnails`, `last`, `like`, `size-l`, `size-m`, `size-s`, `size-xl`, `theme-dark`, `theme-light`, `transition-cube`, `transition-fade`, `transition-flip`, `transition-slide`, `transition-zoom`, `transitioning`, `variant-cards`, `variant-default`, `variant-gallery`, `variant-hero`, `variant-testimonial`
|
|
78
|
+
- 제외된 상태 클래스: `active`, `disabled`, `next`, `prev`, `readonly`
|
|
79
|
+
|
|
80
|
+
### `db-color-picker`
|
|
81
|
+
|
|
82
|
+
- enum 속성: `size`, `position`
|
|
83
|
+
- 후보 값: `bottom-end`, `bottom-start`, `l`, `m`, `s`, `top-end`, `top-start`, `trigger-swatch`
|
|
84
|
+
- 제외된 상태 클래스: `alpha`, `disabled`, `full-width`, `hue`, `no-input`, `readonly`
|
|
85
|
+
|
|
86
|
+
### `db-color-swatch`
|
|
87
|
+
|
|
88
|
+
- enum 속성: `size`
|
|
89
|
+
- 후보 값: `circle`, `l`, `m`, `s`
|
|
90
|
+
- 제외된 상태 클래스: `disabled`
|
|
91
|
+
|
|
92
|
+
### `db-confirm`
|
|
93
|
+
|
|
94
|
+
- enum 속성: `variant` (기본값 `info`), `size` (기본값 `s`)
|
|
95
|
+
- 후보 값: `l`, `m`, `s`
|
|
96
|
+
- 제외된 상태 클래스: `no-icon`
|
|
97
|
+
|
|
98
|
+
### `db-countdown`
|
|
99
|
+
|
|
100
|
+
- enum 속성: `variant`, `size`
|
|
101
|
+
- 후보 값: `compact`, `default`, `l`, `minimal`, `s`
|
|
102
|
+
- 제외된 상태 클래스: `expired`, `with-labels`
|
|
103
|
+
|
|
104
|
+
### `db-empty-state`
|
|
105
|
+
|
|
106
|
+
- enum 속성: `variant` (기본값 `no-data`), `size` (기본값 `m`)
|
|
107
|
+
- 후보 값: `error`, `l`, `m`, `no-access`, `no-data`, `no-results`, `onboarding`, `s`
|
|
108
|
+
|
|
109
|
+
### `db-gradient`
|
|
110
|
+
|
|
111
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
112
|
+
- 후보 값: `direction-radial`, `direction-to-bottom`, `direction-to-bottom-left`, `direction-to-bottom-right`, `direction-to-left`, `direction-to-right`, `direction-to-top`, `direction-to-top-left`, `direction-to-top-right`, `size-full`, `size-l`, `size-m`, `size-s`, `size-xl`, `variant-animated`, `variant-default`, `variant-mesh`
|
|
113
|
+
- 제외된 상태 클래스: `full-height`, `full-width`
|
|
114
|
+
|
|
115
|
+
### `db-grid-background`
|
|
116
|
+
|
|
117
|
+
- enum 속성: `size`
|
|
118
|
+
- 후보 값: —
|
|
119
|
+
|
|
120
|
+
### `db-kanban`
|
|
121
|
+
|
|
122
|
+
- enum 속성: `size`
|
|
123
|
+
- 후보 값: `danger`, `high`, `info`, `l`, `low`, `m`, `medium`, `neutral`, `primary`, `success`, `urgent`, `warning`
|
|
124
|
+
- 제외된 상태 클래스: `disabled`, `drag-over`, `dragged`, `dragging`, `full-width`, `over-limit`
|
|
125
|
+
|
|
126
|
+
### `db-label`
|
|
127
|
+
|
|
128
|
+
- enum 속성: `size` (기본값 `s`)
|
|
129
|
+
- 후보 값: `l`, `m`, `s`
|
|
130
|
+
- 제외된 상태 클래스: `disabled`, `error`
|
|
131
|
+
|
|
132
|
+
### `db-list`
|
|
133
|
+
|
|
134
|
+
- enum 속성: `variant` (기본값 `navigation`), `size` (기본값 `m`)
|
|
135
|
+
- 후보 값: `alignment-center`, `alignment-end`, `alignment-start`, `alignment-stretch`, `draggable`, `dragging`, `layout-horizontal`, `size-l`, `size-m`, `size-s`, `spacing-l`, `spacing-m`, `spacing-none`, `spacing-s`, `variant-bordered`, `variant-card`, `variant-default`, `variant-minimal`, `variant-navigation`
|
|
136
|
+
- 제외된 상태 클래스: `clickable`, `disabled`, `loading`, `selectable`, `selected`
|
|
137
|
+
|
|
138
|
+
### `db-logo`
|
|
139
|
+
|
|
140
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
141
|
+
- 후보 값: `dark`, `default`, `l`, `light`, `m`, `original`, `primary`, `s`, `secondary`, `white`, `xl`, `xs`
|
|
142
|
+
- 제외된 상태 클래스: `clickable`, `full-width`, `svg`
|
|
143
|
+
|
|
144
|
+
### `db-markdown-editor`
|
|
145
|
+
|
|
146
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
147
|
+
- 후보 값: `mode-code`, `mode-edit`, `mode-preview`, `mode-split`, `size-l`, `size-m`, `size-s`, `theme-dark`, `theme-light`, `variant-default`, `variant-filled`, `variant-outlined`
|
|
148
|
+
- 제외된 상태 클래스: `active`, `disabled`, `focused`, `readonly`
|
|
149
|
+
|
|
150
|
+
### `db-marquee`
|
|
151
|
+
|
|
152
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
153
|
+
- 후보 값: `size-l`, `size-m`, `size-s`, `variant-default`, `variant-filled`, `variant-outlined`
|
|
154
|
+
- 제외된 상태 클래스: `bordered`, `fade-edges`
|
|
155
|
+
|
|
156
|
+
### `db-menu-item`
|
|
157
|
+
|
|
158
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
159
|
+
- 후보 값: `block`, `danger`, `default`, `depth-1`, `depth-2`, `depth-3`, `dropdown`, `info`, `inline`, `l`, `m`, `primary`, `s`, `success`, `warning`
|
|
160
|
+
- 제외된 상태 클래스: `accordion`, `active`, `clickable`, `disabled`, `expanded`
|
|
161
|
+
|
|
162
|
+
### `db-pagination`
|
|
163
|
+
|
|
164
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
165
|
+
- 후보 값: `center`, `l`, `left`, `m`, `minimal`, `next`, `outlined`, `right`, `s`
|
|
166
|
+
- 제외된 상태 클래스: `active`, `disabled`, `full-width`
|
|
167
|
+
|
|
168
|
+
### `db-progress-step`
|
|
169
|
+
|
|
170
|
+
- enum 속성: `size` (기본값 `m`)
|
|
171
|
+
- 후보 값: `active`, `completed`, `error`, `horizontal`, `l`, `m`, `pending`, `s`, `vertical`
|
|
172
|
+
- 제외된 상태 클래스: `clickable`, `disabled`, `full-width`
|
|
173
|
+
|
|
174
|
+
### `db-random-gradient`
|
|
175
|
+
|
|
176
|
+
- enum 속성: `tone` (기본값 `vivid`)
|
|
177
|
+
- 후보 값: —
|
|
178
|
+
- 제외된 상태 클래스: `animated`
|
|
179
|
+
|
|
180
|
+
### `db-rating`
|
|
181
|
+
|
|
182
|
+
- enum 속성: `variant`, `size`
|
|
183
|
+
- 후보 값: `color-error`, `color-primary`, `color-secondary`, `color-success`, `color-warning`, `display-detailed`, `size-l`, `size-m`, `size-s`, `variant-card`, `variant-inline`, `variant-large`, `variant-minimal`
|
|
184
|
+
- 제외된 상태 클래스: `clickable`, `disabled`, `empty`, `hover-preview`
|
|
185
|
+
|
|
186
|
+
### `db-reorder`
|
|
187
|
+
|
|
188
|
+
- enum 속성: `variant`, `size`
|
|
189
|
+
- 후보 값: `bordered`, `default`, `filled`, `horizontal`, `l`, `m`, `minimal`, `s`
|
|
190
|
+
- 제외된 상태 클래스: `disabled`, `drag-over`, `dragged`, `dragging`, `full-width`, `selectable`, `selected`
|
|
191
|
+
|
|
192
|
+
### `db-section-app-download`
|
|
193
|
+
|
|
194
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
195
|
+
- 후보 값: —
|
|
196
|
+
|
|
197
|
+
### `db-section-contact`
|
|
198
|
+
|
|
199
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
200
|
+
- 후보 값: `padding-l`, `padding-m`, `padding-s`
|
|
201
|
+
- 제외된 상태 클래스: `accent`
|
|
202
|
+
|
|
203
|
+
### `db-section-cta`
|
|
204
|
+
|
|
205
|
+
- enum 속성: `variant` (기본값 `default`), `size`, `align` (기본값 `center`)
|
|
206
|
+
- 후보 값: `dark`, `gradient`, `light`, `padding-l`, `padding-m`, `padding-s`, `tinted`
|
|
207
|
+
|
|
208
|
+
### `db-section-faq`
|
|
209
|
+
|
|
210
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
211
|
+
- 후보 값: `padding-l`, `padding-m`, `padding-s`
|
|
212
|
+
|
|
213
|
+
### `db-section-feature`
|
|
214
|
+
|
|
215
|
+
- enum 속성: `size`
|
|
216
|
+
- 후보 값: `padding-l`, `padding-m`, `padding-s`
|
|
217
|
+
- 제외된 상태 클래스: `tinted`
|
|
218
|
+
|
|
219
|
+
### `db-section-feature-grid`
|
|
220
|
+
|
|
221
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
222
|
+
- 후보 값: `full-height`, `overflow-visible`, `padding-l`, `padding-m`, `padding-s`
|
|
223
|
+
- 제외된 상태 클래스: `tinted`
|
|
224
|
+
|
|
225
|
+
### `db-section-hero`
|
|
226
|
+
|
|
227
|
+
- enum 속성: `variant` (기본값 `default`)
|
|
228
|
+
- 후보 값: `alignment-center`, `alignment-left`, `alignment-right`, `theme-dark`, `theme-gradient`, `theme-image`, `theme-light`, `variant-centered`, `variant-overlay`
|
|
229
|
+
- 제외된 상태 클래스: `animated`, `full-height`, `on-media`
|
|
230
|
+
|
|
231
|
+
### `db-section-logo-cloud`
|
|
232
|
+
|
|
233
|
+
- enum 속성: `variant` (기본값 `grid`), `size`, `align` (기본값 `center`)
|
|
234
|
+
- 후보 값: `padding-l`, `padding-m`, `padding-s`
|
|
235
|
+
|
|
236
|
+
### `db-section-pricing`
|
|
237
|
+
|
|
238
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
239
|
+
- 후보 값: `full-height`, `overflow-visible`, `padding-l`, `padding-m`, `padding-s`
|
|
240
|
+
- 제외된 상태 클래스: `highlighted`
|
|
241
|
+
|
|
242
|
+
### `db-section-stats`
|
|
243
|
+
|
|
244
|
+
- enum 속성: `size`, `align` (기본값 `center`)
|
|
245
|
+
- 후보 값: `padding-l`, `padding-m`, `padding-s`
|
|
246
|
+
- 제외된 상태 클래스: `tinted`
|
|
247
|
+
|
|
248
|
+
### `db-section-testimonials`
|
|
249
|
+
|
|
250
|
+
- enum 속성: `variant` (기본값 `grid`), `size`, `align` (기본값 `center`)
|
|
251
|
+
- 후보 값: `full-height`, `overflow-visible`, `padding-l`, `padding-m`, `padding-s`
|
|
252
|
+
- 제외된 상태 클래스: `next`, `prev`
|
|
253
|
+
|
|
254
|
+
### `db-share`
|
|
255
|
+
|
|
256
|
+
- enum 속성: `variant` (기본값 `button`), `size` (기본값 `m`), `position` (기본값 `bottom`)
|
|
257
|
+
- 후보 값: `dropdown`, `email`, `facebook`, `inline`, `instagram`, `l`, `link`, `linkedin`, `modal`, `pinterest`, `qr`, `s`, `telegram`, `twitter`, `whatsapp`
|
|
258
|
+
|
|
259
|
+
### `db-signature`
|
|
260
|
+
|
|
261
|
+
- enum 속성: `variant`
|
|
262
|
+
- 후보 값: `dashed`, `outlined`
|
|
263
|
+
- 제외된 상태 클래스: `disabled`
|
|
264
|
+
|
|
265
|
+
### `db-timeline`
|
|
266
|
+
|
|
267
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
268
|
+
- 후보 값: `active`, `alternate`, `completed`, `default`, `error`, `filled`, `info`, `l`, `left`, `m`, `outlined`, `pending`, `primary`, `right`, `s`, `secondary`, `success`, `warning`
|
|
269
|
+
- 제외된 상태 클래스: `clickable`, `disabled`, `full-width`, `with-icon`, `with-number`
|
|
270
|
+
|
|
271
|
+
### `db-toolbar`
|
|
272
|
+
|
|
273
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`), `position` (기본값 `top`)
|
|
274
|
+
- 후보 값: `custom`, `dropdown`, `open`, `position-bottom`, `position-floating`, `position-left`, `position-right`, `position-top`, `selected`, `size-l`, `size-m`, `size-s`, `variant-default`, `variant-filled`, `variant-ghost`, `variant-outlined`
|
|
275
|
+
- 제외된 상태 클래스: `active`, `button`, `disabled`, `fixed`, `full-width`, `rounded`, `separator`, `shadow`
|
|
276
|
+
|
|
277
|
+
### `db-video-player`
|
|
278
|
+
|
|
279
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
280
|
+
- 후보 값: `size-l`, `size-m`, `size-s`, `size-xl`, `theme-auto`, `theme-dark`, `theme-light`
|
|
281
|
+
- 제외된 상태 클래스: `error`, `fullscreen`, `loading`, `muted`, `paused`, `playing`, `show-controls`
|
|
282
|
+
|
|
283
|
+
### `db-youtube-player`
|
|
284
|
+
|
|
285
|
+
- enum 속성: `variant` (기본값 `default`), `size` (기본값 `m`)
|
|
286
|
+
- 후보 값: `auto`, `dark`, `default`, `error`, `full`, `l`, `light`, `m`, `minimal`, `muted`, `picture-in-picture`, `s`, `theater`, `xl`
|
|
287
|
+
- 제외된 상태 클래스: `fullscreen`
|
|
288
|
+
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# ui-wc 품질 스코어카드
|
|
2
|
+
|
|
3
|
+
> ⚠️ **자동 생성 파일 — 직접 수정하지 마세요.**
|
|
4
|
+
> `npm run audit:quality` 로 재생성됩니다. 규칙 정의는 [QUALITY-GUIDELINES.md](../QUALITY-GUIDELINES.md).
|
|
5
|
+
|
|
6
|
+
생성일: 2026-10-29 · 대상 컴포넌트: **185개** · 평균 점수: **98점 (A)** · P0 무결점: **185/185**
|
|
7
|
+
|
|
8
|
+
## 축별 요약
|
|
9
|
+
|
|
10
|
+
| 축 | 평균 | P0 위반 건수 | P1 위반 건수 |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| 접근성 (A11Y) | 100점 | 0 | 3 |
|
|
13
|
+
| 웹표준 (STD) | 100점 | 0 | 3 |
|
|
14
|
+
| 성능 (PERF) | 100점 | 0 | 6 |
|
|
15
|
+
| DX (DX) | 88점 | 0 | 112 |
|
|
16
|
+
|
|
17
|
+
## 규칙별 위반 현황
|
|
18
|
+
|
|
19
|
+
| 규칙 | 등급 | 위반 | 해당 | 위반율 |
|
|
20
|
+
|---|---|---|---|---|
|
|
21
|
+
| `DX-I18N` | P1 | 86 | 185 | 46% |
|
|
22
|
+
| `PERF-RAF` | P1 | 6 | 26 | 23% |
|
|
23
|
+
| `DX-STORY` | P1 | 26 | 185 | 14% |
|
|
24
|
+
| `A11Y-ESCAPE` | P1 | 3 | 22 | 14% |
|
|
25
|
+
| `STD-LIGHT-DOM` | P1 | 3 | 158 | 2% |
|
|
26
|
+
| `A11Y-FOCUS-RING` | P0 | 0 | 156 | 0% |
|
|
27
|
+
| `A11Y-NAME` | P0 | 0 | 55 | 0% |
|
|
28
|
+
| `A11Y-TRAP` | P0 | 0 | 7 | 0% |
|
|
29
|
+
| `A11Y-DIALOG` | P0 | 0 | 18 | 0% |
|
|
30
|
+
| `A11Y-DECORATIVE` | P0 | 0 | 4 | 0% |
|
|
31
|
+
| `A11Y-STATE` | P0 | 0 | 107 | 0% |
|
|
32
|
+
| `A11Y-KEYBOARD` | P0 | 0 | 17 | 0% |
|
|
33
|
+
| `A11Y-REDUCED-MOTION` | P1 | 0 | 42 | 0% |
|
|
34
|
+
| `STD-DEFINE` | P0 | 0 | 185 | 0% |
|
|
35
|
+
| `STD-EVENT` | P0 | 0 | 98 | 0% |
|
|
36
|
+
| `STD-CONTRACT` | P0 | 0 | 120 | 0% |
|
|
37
|
+
| `STD-COERCE` | P0 | 0 | 120 | 0% |
|
|
38
|
+
| `STD-FORM` | P0 | 0 | 8 | 0% |
|
|
39
|
+
| `STD-NO-INNERHTML` | P0 | 0 | 185 | 0% |
|
|
40
|
+
| `STD-SSR` | P1 | 0 | 185 | 0% |
|
|
41
|
+
| `PERF-CLEANUP` | P0 | 0 | 185 | 0% |
|
|
42
|
+
| `PERF-GLOBAL-STATE` | P0 | 0 | 185 | 0% |
|
|
43
|
+
| `PERF-RECONCILE` | P1 | 0 | 185 | 0% |
|
|
44
|
+
| `PERF-LAZY` | P1 | 0 | 0 | 0% |
|
|
45
|
+
| `DX-UID` | P0 | 0 | 185 | 0% |
|
|
46
|
+
|
|
47
|
+
## 위반 상세
|
|
48
|
+
|
|
49
|
+
### `DX-I18N` (P1) — 86/185
|
|
50
|
+
|
|
51
|
+
> 사용자에게 노출되는 모든 문자열(aria-label 포함)은 오버라이드 가능해야 한다. 소스에 한국어 리터럴을 박지 말고 `core/i18n.ts` 의 `t()` 경유
|
|
52
|
+
|
|
53
|
+
- `db-accordion` — 하드코딩 한국어 1건 (예: "아코디언")
|
|
54
|
+
- `db-achievement-list` — 하드코딩 한국어 12건 (예: "뱃지 목록")
|
|
55
|
+
- `db-achievement-modal` — 하드코딩 한국어 10건 (예: "모달 닫기")
|
|
56
|
+
- `db-activity-heatmap` — 하드코딩 한국어 4건 (예: "적음")
|
|
57
|
+
- `db-ad-banner` — 하드코딩 한국어 15건 (예: "지금 바로 시작하세요")
|
|
58
|
+
- `db-ai-chat` — 하드코딩 한국어 5건 (예: "아티팩트 닫기")
|
|
59
|
+
- `db-ai-chat-list` — 하드코딩 한국어 2건 (예: "새 대화")
|
|
60
|
+
- `db-alert` — 하드코딩 한국어 1건 (예: "알림 닫기")
|
|
61
|
+
- `db-animation-background` — 하드코딩 한국어 4건 (예: "컨트롤 열기")
|
|
62
|
+
- `db-app-badge` — 하드코딩 한국어 2건 (예: "다운로드")
|
|
63
|
+
- `db-audio-player` — 하드코딩 한국어 9건 (예: "오디오를 재생할 수 없습니")
|
|
64
|
+
- `db-avatar` — 하드코딩 한국어 1건 (예: "아바타 이미지")
|
|
65
|
+
- `db-boarding-pass` — 하드코딩 한국어 12건 (예: "출발")
|
|
66
|
+
- `db-bottom-navigation` — 하드코딩 한국어 1건 (예: "하단 네비게이션")
|
|
67
|
+
- `db-bottom-sheet` — 하드코딩 한국어 1건 (예: "닫기")
|
|
68
|
+
- `db-breadcrumbs` — 하드코딩 한국어 1건 (예: "브레드크럼 네비게이션")
|
|
69
|
+
- `db-calendar` — 하드코딩 한국어 38건 (예: "회의")
|
|
70
|
+
- `db-card` — 하드코딩 한국어 1건 (예: "카드 선택")
|
|
71
|
+
- `db-chat-composer` — 하드코딩 한국어 3건 (예: "사진·이미지")
|
|
72
|
+
- `db-chat-message` — 하드코딩 한국어 5건 (예: "복사")
|
|
73
|
+
- `db-chat-room` — 하드코딩 한국어 8건 (예: "파일을 놓으면 첨부됩니다")
|
|
74
|
+
- `db-chat-typing` — 하드코딩 한국어 1건 (예: "AI가 응답을 생성하고 있")
|
|
75
|
+
- `db-chat-widget` — 하드코딩 한국어 75건 (예: "제품·정책 알아보기")
|
|
76
|
+
- `db-chip` — 하드코딩 한국어 1건 (예: "{0} 삭제")
|
|
77
|
+
- `db-code-block` — 하드코딩 한국어 3건 (예: "복사됨")
|
|
78
|
+
- `db-color-picker` — 하드코딩 한국어 3건 (예: "색상 선택")
|
|
79
|
+
- `db-context-bar` — 하드코딩 한국어 1건 (예: "선택 요소 작업")
|
|
80
|
+
- `db-cookie-banner` — 하드코딩 한국어 6건 (예: "쿠키 사용 안내")
|
|
81
|
+
- `db-countdown` — 하드코딩 한국어 4건 (예: "일")
|
|
82
|
+
- `db-date-picker` — 하드코딩 한국어 17건 (예: "날짜 선택 열기")
|
|
83
|
+
- `db-design-canvas` — 하드코딩 한국어 67건 (예: "요소")
|
|
84
|
+
- `db-design-toolbar` — 하드코딩 한국어 3건 (예: "디자인 도구")
|
|
85
|
+
- `db-download-progress` — 하드코딩 한국어 22건 (예: "다운로드 중")
|
|
86
|
+
- `db-drawer` — 하드코딩 한국어 1건 (예: "닫기")
|
|
87
|
+
- `db-dropdown` — 하드코딩 한국어 1건 (예: "메뉴")
|
|
88
|
+
- `db-email-verify` — 하드코딩 한국어 23건 (예: "남은 시간 {0}분 {1}")
|
|
89
|
+
- `db-flight-status` — 하드코딩 한국어 6건 (예: "출발 예정")
|
|
90
|
+
- `db-footer` — 하드코딩 한국어 3건 (예: "법적 고지")
|
|
91
|
+
- `db-form` — 하드코딩 한국어 3건 (예: "제출")
|
|
92
|
+
- `db-gantt` — 하드코딩 한국어 12건 (예: "일")
|
|
93
|
+
- `db-image` — 하드코딩 한국어 1건 (예: "이미지를 불러올 수 없습니")
|
|
94
|
+
- `db-image-list` — 하드코딩 한국어 1건 (예: "이미지 목록")
|
|
95
|
+
- `db-indicator` — 하드코딩 한국어 1건 (예: "{0}단계")
|
|
96
|
+
- `db-input` — 하드코딩 한국어 1건 (예: "비밀번호 강도")
|
|
97
|
+
- `db-kanban` — 하드코딩 한국어 8건 (예: "낮음")
|
|
98
|
+
- `db-lightbox` — 하드코딩 한국어 7건 (예: "이미지 갤러리")
|
|
99
|
+
- `db-list` — 하드코딩 한국어 1건 (예: "항목이 없습니다.")
|
|
100
|
+
- `db-markdown-editor` — 하드코딩 한국어 25건 (예: "마크다운을 입력하세요...")
|
|
101
|
+
- `db-navbar` — 하드코딩 한국어 8건 (예: "메인 네비게이션")
|
|
102
|
+
- `db-node` — 하드코딩 한국어 21건 (예: "일반")
|
|
103
|
+
- `db-onboarding-modal` — 하드코딩 한국어 8건 (예: "닫기")
|
|
104
|
+
- `db-otp-input` — 하드코딩 한국어 4건 (예: "인증 코드")
|
|
105
|
+
- `db-page-header` — 하드코딩 한국어 2건 (예: "뒤로가기")
|
|
106
|
+
- `db-pagination` — 하드코딩 한국어 8건 (예: "페이지 네비게이션")
|
|
107
|
+
- `db-phone-verify` — 하드코딩 한국어 21건 (예: "알뜰폰")
|
|
108
|
+
- `db-popover` — 하드코딩 한국어 1건 (예: "팝오버 닫기")
|
|
109
|
+
- `db-progress-step` — 하드코딩 한국어 1건 (예: "{0} 단계로 이동")
|
|
110
|
+
- `db-rating` — 하드코딩 한국어 3건 (예: "매우 좋음")
|
|
111
|
+
- `db-receipt` — 하드코딩 한국어 8건 (예: "수량")
|
|
112
|
+
- `db-resizable-panels` — 하드코딩 한국어 5건 (예: "크기 조절")
|
|
113
|
+
- `db-search-bar` — 하드코딩 한국어 9건 (예: "검색...")
|
|
114
|
+
- `db-section-app-download` — 하드코딩 한국어 2건 (예: "지금 바로 시작하세요")
|
|
115
|
+
- `db-section-contact` — 하드코딩 한국어 2건 (예: "문의하기")
|
|
116
|
+
- `db-section-faq` — 하드코딩 한국어 1건 (예: "자주 묻는 질문")
|
|
117
|
+
- `db-section-feature-grid` — 하드코딩 한국어 1건 (예: "주요 기능")
|
|
118
|
+
- `db-section-logo-cloud` — 하드코딩 한국어 1건 (예: "함께하는 파트너")
|
|
119
|
+
- `db-section-pricing` — 하드코딩 한국어 1건 (예: "요금제")
|
|
120
|
+
- `db-section-testimonials` — 하드코딩 한국어 4건 (예: "고객 후기")
|
|
121
|
+
- `db-segment-control` — 하드코딩 한국어 1건 (예: "세그먼트 컨트롤")
|
|
122
|
+
- `db-select` — 하드코딩 한국어 1건 (예: "{0} 제거")
|
|
123
|
+
- `db-share` — 하드코딩 한국어 14건 (예: "Instagram에 직접 ")
|
|
124
|
+
- `db-sidebar` — 하드코딩 한국어 14건 (예: "프로젝트 관리")
|
|
125
|
+
- `db-signature` — 하드코딩 한국어 2건 (예: "서명 입력 영역")
|
|
126
|
+
- `db-spinner` — 하드코딩 한국어 1건 (예: "로딩 중...")
|
|
127
|
+
- `db-split-view` — 하드코딩 한국어 1건 (예: "패널 너비 조정")
|
|
128
|
+
- `db-stepper` — 하드코딩 한국어 7건 (예: "감소")
|
|
129
|
+
- `db-table` — 하드코딩 한국어 3건 (예: "데이터가 없습니다.")
|
|
130
|
+
- `db-testimonial` — 하드코딩 한국어 1건 (예: "{0} 프로필 이미지")
|
|
131
|
+
- `db-ticket` — 하드코딩 한국어 1건 (예: "티켓")
|
|
132
|
+
- `db-time-picker` — 하드코딩 한국어 17건 (예: "시간 선택 열기")
|
|
133
|
+
- `db-tool-button` — 하드코딩 한국어 3건 (예: "도구")
|
|
134
|
+
- `db-top-banner` — 하드코딩 한국어 1건 (예: "닫기")
|
|
135
|
+
- `db-tutorial` — 하드코딩 한국어 4건 (예: "튜토리얼 종료")
|
|
136
|
+
- `db-two-factor` — 하드코딩 한국어 27건 (예: "인증 앱")
|
|
137
|
+
- `db-video-player` — 하드코딩 한국어 5건 (예: "10초 되감기")
|
|
138
|
+
- `db-youtube-player` — 하드코딩 한국어 1건 (예: "동영상을 불러올 수 없습니")
|
|
139
|
+
|
|
140
|
+
### `PERF-RAF` (P1) — 6/26
|
|
141
|
+
|
|
142
|
+
> `scroll` / `resize` / `pointermove` 핸들러는 `requestAnimationFrame` 으로 병합하고, 스크롤 리스너는 `{ passive: true }`
|
|
143
|
+
|
|
144
|
+
- `db-design-canvas` — rAF 병합 없음
|
|
145
|
+
- `db-design-toolbar` — rAF 병합 없음
|
|
146
|
+
- `db-floating-action-button` — rAF 병합 없음
|
|
147
|
+
- `db-node` — rAF 병합 없음
|
|
148
|
+
- `db-page-header` — scroll 리스너에 passive 명시 없음
|
|
149
|
+
- `db-signature` — rAF 병합 없음
|
|
150
|
+
|
|
151
|
+
### `DX-STORY` (P1) — 26/185
|
|
152
|
+
|
|
153
|
+
> 컴포넌트당 Storybook 스토리 1개 이상
|
|
154
|
+
|
|
155
|
+
- `db-ai-chain-of-thought` — Storybook 스토리 없음
|
|
156
|
+
- `db-ai-checkpoint` — Storybook 스토리 없음
|
|
157
|
+
- `db-ai-confirmation` — Storybook 스토리 없음
|
|
158
|
+
- `db-ai-context` — Storybook 스토리 없음
|
|
159
|
+
- `db-ai-conversation` — Storybook 스토리 없음
|
|
160
|
+
- `db-ai-file-tree` — Storybook 스토리 없음
|
|
161
|
+
- `db-ai-inline-citation` — Storybook 스토리 없음
|
|
162
|
+
- `db-ai-message` — Storybook 스토리 없음
|
|
163
|
+
- `db-ai-plan` — Storybook 스토리 없음
|
|
164
|
+
- `db-ai-queue` — Storybook 스토리 없음
|
|
165
|
+
- `db-ai-reasoning` — Storybook 스토리 없음
|
|
166
|
+
- `db-ai-sources` — Storybook 스토리 없음
|
|
167
|
+
- `db-ai-stack-trace` — Storybook 스토리 없음
|
|
168
|
+
- `db-ai-subagent` — Storybook 스토리 없음
|
|
169
|
+
- `db-ai-task` — Storybook 스토리 없음
|
|
170
|
+
- `db-ai-terminal` — Storybook 스토리 없음
|
|
171
|
+
- `db-ai-test-results` — Storybook 스토리 없음
|
|
172
|
+
- `db-ai-tool` — Storybook 스토리 없음
|
|
173
|
+
- `db-browser-mockup` — Storybook 스토리 없음
|
|
174
|
+
- `db-context-bar` — Storybook 스토리 없음
|
|
175
|
+
- `db-design-canvas` — Storybook 스토리 없음
|
|
176
|
+
- `db-design-toolbar` — Storybook 스토리 없음
|
|
177
|
+
- `db-filter-bar` — Storybook 스토리 없음
|
|
178
|
+
- `db-node` — Storybook 스토리 없음
|
|
179
|
+
- `db-tool-button` — Storybook 스토리 없음
|
|
180
|
+
- `db-voice-control` — Storybook 스토리 없음
|
|
181
|
+
|
|
182
|
+
### `A11Y-ESCAPE` (P1) — 3/22
|
|
183
|
+
|
|
184
|
+
> 닫을 수 있는 오버레이/팝업은 Escape 로 닫힌다
|
|
185
|
+
|
|
186
|
+
- `db-achievement-modal` — Escape 로 닫을 수 없음
|
|
187
|
+
- `db-credit-dropdown` — Escape 로 닫을 수 없음
|
|
188
|
+
- `db-notification-dropdown` — Escape 로 닫을 수 없음
|
|
189
|
+
|
|
190
|
+
### `STD-LIGHT-DOM` (P1) — 3/158
|
|
191
|
+
|
|
192
|
+
> Light DOM 을 유지한다(→ STYLING.md). 따라서 모든 클래스는 `designbase-wc-` 접두사 필수 — 전역 CSS 충돌 방어의 유일한 수단
|
|
193
|
+
|
|
194
|
+
- `db-browser-mockup` — attachShadow 사용 (Light DOM 규약 위반)
|
|
195
|
+
- `db-credit-card` — 비접두사 전역 클래스: db-credit-card
|
|
196
|
+
- `db-node` — attachShadow 사용 (Light DOM 규약 위반)
|
|
197
|
+
|
|
198
|
+
## 컴포넌트별 점수
|
|
199
|
+
|
|
200
|
+
낮은 점수부터. 개선 우선순위로 사용합니다.
|
|
201
|
+
|
|
202
|
+
| 컴포넌트 | 아키타입 | 점수 | 등급 | P0 위반 | P1 위반 |
|
|
203
|
+
|---|---|---|---|---|---|
|
|
204
|
+
| `db-node` | display | 87 | B | — | `STD-LIGHT-DOM` `PERF-RAF` `DX-I18N` `DX-STORY` |
|
|
205
|
+
| `db-context-bar` | display | 89 | B | — | `DX-I18N` `DX-STORY` |
|
|
206
|
+
| `db-design-canvas` | composite | 90 | B | — | `PERF-RAF` `DX-I18N` `DX-STORY` |
|
|
207
|
+
| `db-achievement-modal` | overlay | 91 | B | — | `A11Y-ESCAPE` `DX-I18N` |
|
|
208
|
+
| `db-browser-mockup` | display | 92 | B | — | `STD-LIGHT-DOM` `DX-STORY` |
|
|
209
|
+
| `db-design-toolbar` | composite | 92 | B | — | `PERF-RAF` `DX-I18N` `DX-STORY` |
|
|
210
|
+
| `db-page-header` | display | 94 | B | — | `PERF-RAF` `DX-I18N` |
|
|
211
|
+
| `db-tool-button` | overlay, composite | 94 | B | — | `DX-I18N` `DX-STORY` |
|
|
212
|
+
| `db-ai-checkpoint` | display | 95 | A | — | `DX-STORY` |
|
|
213
|
+
| `db-ai-confirmation` | display | 95 | A | — | `DX-STORY` |
|
|
214
|
+
| `db-ai-context` | display | 95 | A | — | `DX-STORY` |
|
|
215
|
+
| `db-ai-conversation` | display | 95 | A | — | `DX-STORY` |
|
|
216
|
+
| `db-ai-file-tree` | display | 95 | A | — | `DX-STORY` |
|
|
217
|
+
| `db-ai-inline-citation` | display | 95 | A | — | `DX-STORY` |
|
|
218
|
+
| `db-ai-message` | display | 95 | A | — | `DX-STORY` |
|
|
219
|
+
| `db-ai-queue` | display | 95 | A | — | `DX-STORY` |
|
|
220
|
+
| `db-ai-sources` | display | 95 | A | — | `DX-STORY` |
|
|
221
|
+
| `db-ai-stack-trace` | display | 95 | A | — | `DX-STORY` |
|
|
222
|
+
| `db-boarding-pass` | display | 95 | A | — | `DX-I18N` |
|
|
223
|
+
| `db-signature` | display | 95 | A | — | `PERF-RAF` `DX-I18N` |
|
|
224
|
+
| `db-ticket` | display | 95 | A | — | `DX-I18N` |
|
|
225
|
+
| `db-achievement-list` | display | 96 | A | — | `DX-I18N` |
|
|
226
|
+
| `db-ai-chain-of-thought` | display | 96 | A | — | `DX-STORY` |
|
|
227
|
+
| `db-ai-plan` | display | 96 | A | — | `DX-STORY` |
|
|
228
|
+
| `db-ai-reasoning` | display | 96 | A | — | `DX-STORY` |
|
|
229
|
+
| `db-ai-subagent` | display | 96 | A | — | `DX-STORY` |
|
|
230
|
+
| `db-ai-task` | display | 96 | A | — | `DX-STORY` |
|
|
231
|
+
| `db-ai-terminal` | display | 96 | A | — | `DX-STORY` |
|
|
232
|
+
| `db-ai-test-results` | display | 96 | A | — | `DX-STORY` |
|
|
233
|
+
| `db-ai-tool` | display | 96 | A | — | `DX-STORY` |
|
|
234
|
+
| `db-chat-typing` | display | 96 | A | — | `DX-I18N` |
|
|
235
|
+
| `db-credit-dropdown` | overlay, composite | 96 | A | — | `A11Y-ESCAPE` |
|
|
236
|
+
| `db-flight-status` | display | 96 | A | — | `DX-I18N` |
|
|
237
|
+
| `db-floating-action-button` | display | 96 | A | — | `PERF-RAF` |
|
|
238
|
+
| `db-notification-dropdown` | overlay, composite | 96 | A | — | `A11Y-ESCAPE` |
|
|
239
|
+
| `db-receipt` | display | 96 | A | — | `DX-I18N` |
|
|
240
|
+
| `db-resizable-panels` | display | 96 | A | — | `DX-I18N` |
|
|
241
|
+
| `db-voice-control` | display | 96 | A | — | `DX-STORY` |
|
|
242
|
+
| `db-accordion` | composite | 97 | A | — | `DX-I18N` |
|
|
243
|
+
| `db-activity-heatmap` | display | 97 | A | — | `DX-I18N` |
|
|
244
|
+
| `db-ad-banner` | display | 97 | A | — | `DX-I18N` |
|
|
245
|
+
| `db-ai-chat` | display | 97 | A | — | `DX-I18N` |
|
|
246
|
+
| `db-ai-chat-list` | display | 97 | A | — | `DX-I18N` |
|
|
247
|
+
| `db-alert` | display | 97 | A | — | `DX-I18N` |
|
|
248
|
+
| `db-animation-background` | overlay | 97 | A | — | `DX-I18N` |
|
|
249
|
+
| `db-app-badge` | display | 97 | A | — | `DX-I18N` |
|
|
250
|
+
| `db-audio-player` | composite | 97 | A | — | `DX-I18N` |
|
|
251
|
+
| `db-avatar` | display | 97 | A | — | `DX-I18N` |
|
|
252
|
+
| `db-bottom-navigation` | display | 97 | A | — | `DX-I18N` |
|
|
253
|
+
| `db-breadcrumbs` | display | 97 | A | — | `DX-I18N` |
|
|
254
|
+
| `db-calendar` | display | 97 | A | — | `DX-I18N` |
|
|
255
|
+
| `db-card` | display | 97 | A | — | `DX-I18N` |
|
|
256
|
+
| `db-chat-composer` | display | 97 | A | — | `DX-I18N` |
|
|
257
|
+
| `db-chat-message` | display | 97 | A | — | `DX-I18N` |
|
|
258
|
+
| `db-chat-room` | display | 97 | A | — | `DX-I18N` |
|
|
259
|
+
| `db-chat-widget` | overlay | 97 | A | — | `DX-I18N` |
|
|
260
|
+
| `db-chip` | display | 97 | A | — | `DX-I18N` |
|
|
261
|
+
| `db-code-block` | display | 97 | A | — | `DX-I18N` |
|
|
262
|
+
| `db-color-picker` | display | 97 | A | — | `DX-I18N` |
|
|
263
|
+
| `db-cookie-banner` | overlay | 97 | A | — | `DX-I18N` |
|
|
264
|
+
| `db-countdown` | display | 97 | A | — | `DX-I18N` |
|
|
265
|
+
| `db-credit-card` | display | 97 | A | — | `STD-LIGHT-DOM` |
|
|
266
|
+
| `db-download-progress` | display | 97 | A | — | `DX-I18N` |
|
|
267
|
+
| `db-email-verify` | display | 97 | A | — | `DX-I18N` |
|
|
268
|
+
| `db-filter-bar` | display | 97 | A | — | `DX-STORY` |
|
|
269
|
+
| `db-footer` | display | 97 | A | — | `DX-I18N` |
|
|
270
|
+
| `db-form` | display | 97 | A | — | `DX-I18N` |
|
|
271
|
+
| `db-gantt` | display | 97 | A | — | `DX-I18N` |
|
|
272
|
+
| `db-image` | display | 97 | A | — | `DX-I18N` |
|
|
273
|
+
| `db-image-list` | display | 97 | A | — | `DX-I18N` |
|
|
274
|
+
| `db-indicator` | display | 97 | A | — | `DX-I18N` |
|
|
275
|
+
| `db-kanban` | display | 97 | A | — | `DX-I18N` |
|
|
276
|
+
| `db-list` | display | 97 | A | — | `DX-I18N` |
|
|
277
|
+
| `db-markdown-editor` | display | 97 | A | — | `DX-I18N` |
|
|
278
|
+
| `db-navbar` | display | 97 | A | — | `DX-I18N` |
|
|
279
|
+
| `db-otp-input` | form, composite | 97 | A | — | `DX-I18N` |
|
|
280
|
+
| `db-pagination` | display | 97 | A | — | `DX-I18N` |
|
|
281
|
+
| `db-phone-verify` | display | 97 | A | — | `DX-I18N` |
|
|
282
|
+
| `db-progress-step` | display | 97 | A | — | `DX-I18N` |
|
|
283
|
+
| `db-rating` | display | 97 | A | — | `DX-I18N` |
|
|
284
|
+
| `db-search-bar` | display | 97 | A | — | `DX-I18N` |
|
|
285
|
+
| `db-section-app-download` | section | 97 | A | — | `DX-I18N` |
|
|
286
|
+
| `db-section-contact` | section | 97 | A | — | `DX-I18N` |
|
|
287
|
+
| `db-section-faq` | section | 97 | A | — | `DX-I18N` |
|
|
288
|
+
| `db-section-feature-grid` | section | 97 | A | — | `DX-I18N` |
|
|
289
|
+
| `db-section-logo-cloud` | section | 97 | A | — | `DX-I18N` |
|
|
290
|
+
| `db-section-pricing` | section | 97 | A | — | `DX-I18N` |
|
|
291
|
+
| `db-section-testimonials` | section | 97 | A | — | `DX-I18N` |
|
|
292
|
+
| `db-segment-control` | composite | 97 | A | — | `DX-I18N` |
|
|
293
|
+
| `db-share` | display | 97 | A | — | `DX-I18N` |
|
|
294
|
+
| `db-spinner` | display | 97 | A | — | `DX-I18N` |
|
|
295
|
+
| `db-split-view` | composite | 97 | A | — | `DX-I18N` |
|
|
296
|
+
| `db-stepper` | composite | 97 | A | — | `DX-I18N` |
|
|
297
|
+
| `db-table` | display | 97 | A | — | `DX-I18N` |
|
|
298
|
+
| `db-testimonial` | display | 97 | A | — | `DX-I18N` |
|
|
299
|
+
| `db-top-banner` | display | 97 | A | — | `DX-I18N` |
|
|
300
|
+
| `db-two-factor` | display | 97 | A | — | `DX-I18N` |
|
|
301
|
+
| `db-video-player` | display | 97 | A | — | `DX-I18N` |
|
|
302
|
+
| `db-youtube-player` | display | 97 | A | — | `DX-I18N` |
|
|
303
|
+
| `db-bottom-sheet` | overlay | 98 | A | — | `DX-I18N` |
|
|
304
|
+
| `db-date-picker` | overlay | 98 | A | — | `DX-I18N` |
|
|
305
|
+
| `db-drawer` | overlay | 98 | A | — | `DX-I18N` |
|
|
306
|
+
| `db-dropdown` | overlay, composite | 98 | A | — | `DX-I18N` |
|
|
307
|
+
| `db-input` | form | 98 | A | — | `DX-I18N` |
|
|
308
|
+
| `db-lightbox` | overlay, composite | 98 | A | — | `DX-I18N` |
|
|
309
|
+
| `db-onboarding-modal` | overlay, composite | 98 | A | — | `DX-I18N` |
|
|
310
|
+
| `db-popover` | overlay | 98 | A | — | `DX-I18N` |
|
|
311
|
+
| `db-select` | form, composite | 98 | A | — | `DX-I18N` |
|
|
312
|
+
| `db-sidebar` | display | 98 | A | — | `DX-I18N` |
|
|
313
|
+
| `db-time-picker` | overlay | 98 | A | — | `DX-I18N` |
|
|
314
|
+
| `db-tutorial` | overlay, composite | 98 | A | — | `DX-I18N` |
|
|
315
|
+
| `db-ai-execution-quote` | display | 100 | A | — | — |
|
|
316
|
+
| `db-ai-glow` | display | 100 | A | — | — |
|
|
317
|
+
| `db-ai-model-select` | display | 100 | A | — | — |
|
|
318
|
+
| `db-ai-task-status` | display | 100 | A | — | — |
|
|
319
|
+
| `db-animation-text` | display | 100 | A | — | — |
|
|
320
|
+
| `db-attachment-list` | display | 100 | A | — | — |
|
|
321
|
+
| `db-backdrop` | overlay | 100 | A | — | — |
|
|
322
|
+
| `db-badge` | display | 100 | A | — | — |
|
|
323
|
+
| `db-banner` | display | 100 | A | — | — |
|
|
324
|
+
| `db-bento-card` | display | 100 | A | — | — |
|
|
325
|
+
| `db-bento-grid` | display | 100 | A | — | — |
|
|
326
|
+
| `db-boarding-pass-stack` | composite | 100 | A | — | — |
|
|
327
|
+
| `db-border-beam` | display | 100 | A | — | — |
|
|
328
|
+
| `db-button` | form | 100 | A | — | — |
|
|
329
|
+
| `db-carousel` | display | 100 | A | — | — |
|
|
330
|
+
| `db-chat-list` | display | 100 | A | — | — |
|
|
331
|
+
| `db-chat-orb` | display | 100 | A | — | — |
|
|
332
|
+
| `db-chat-suggestions` | display | 100 | A | — | — |
|
|
333
|
+
| `db-chat-welcome` | display | 100 | A | — | — |
|
|
334
|
+
| `db-checkbox` | form | 100 | A | — | — |
|
|
335
|
+
| `db-color-swatch` | display | 100 | A | — | — |
|
|
336
|
+
| `db-confetti` | display | 100 | A | — | — |
|
|
337
|
+
| `db-confirm` | overlay | 100 | A | — | — |
|
|
338
|
+
| `db-container` | display | 100 | A | — | — |
|
|
339
|
+
| `db-context-menu` | overlay | 100 | A | — | — |
|
|
340
|
+
| `db-credit-balance` | display | 100 | A | — | — |
|
|
341
|
+
| `db-credit-history` | display | 100 | A | — | — |
|
|
342
|
+
| `db-credit-recharge` | display | 100 | A | — | — |
|
|
343
|
+
| `db-credit-recharge-modal` | display | 100 | A | — | — |
|
|
344
|
+
| `db-cursor-follower` | display | 100 | A | — | — |
|
|
345
|
+
| `db-divider` | display | 100 | A | — | — |
|
|
346
|
+
| `db-dropzone` | display | 100 | A | — | — |
|
|
347
|
+
| `db-empty-state` | display | 100 | A | — | — |
|
|
348
|
+
| `db-file-uploader` | display | 100 | A | — | — |
|
|
349
|
+
| `db-glyph-matrix` | display | 100 | A | — | — |
|
|
350
|
+
| `db-gradient` | display | 100 | A | — | — |
|
|
351
|
+
| `db-grid` | display | 100 | A | — | — |
|
|
352
|
+
| `db-grid-background` | display | 100 | A | — | — |
|
|
353
|
+
| `db-image-placeholder` | display | 100 | A | — | — |
|
|
354
|
+
| `db-label` | display | 100 | A | — | — |
|
|
355
|
+
| `db-logo` | display | 100 | A | — | — |
|
|
356
|
+
| `db-marquee` | display | 100 | A | — | — |
|
|
357
|
+
| `db-masonry` | display | 100 | A | — | — |
|
|
358
|
+
| `db-menu-item` | composite | 100 | A | — | — |
|
|
359
|
+
| `db-modal` | overlay | 100 | A | — | — |
|
|
360
|
+
| `db-navigation-rail` | display | 100 | A | — | — |
|
|
361
|
+
| `db-notification-inbox` | display | 100 | A | — | — |
|
|
362
|
+
| `db-plan-overview` | display | 100 | A | — | — |
|
|
363
|
+
| `db-progress` | display | 100 | A | — | — |
|
|
364
|
+
| `db-progressbar` | display | 100 | A | — | — |
|
|
365
|
+
| `db-progressive-blur` | display | 100 | A | — | — |
|
|
366
|
+
| `db-radio` | form, composite | 100 | A | — | — |
|
|
367
|
+
| `db-random-gradient` | display | 100 | A | — | — |
|
|
368
|
+
| `db-range-slider` | composite | 100 | A | — | — |
|
|
369
|
+
| `db-reorder` | display | 100 | A | — | — |
|
|
370
|
+
| `db-scroll-area` | display | 100 | A | — | — |
|
|
371
|
+
| `db-section` | display | 100 | A | — | — |
|
|
372
|
+
| `db-section-cta` | section | 100 | A | — | — |
|
|
373
|
+
| `db-section-feature` | section | 100 | A | — | — |
|
|
374
|
+
| `db-section-hero` | section | 100 | A | — | — |
|
|
375
|
+
| `db-section-stats` | section | 100 | A | — | — |
|
|
376
|
+
| `db-skeleton` | display | 100 | A | — | — |
|
|
377
|
+
| `db-stack` | display | 100 | A | — | — |
|
|
378
|
+
| `db-stat` | display | 100 | A | — | — |
|
|
379
|
+
| `db-tabs` | composite | 100 | A | — | — |
|
|
380
|
+
| `db-textarea` | form | 100 | A | — | — |
|
|
381
|
+
| `db-timeline` | display | 100 | A | — | — |
|
|
382
|
+
| `db-toast` | display | 100 | A | — | — |
|
|
383
|
+
| `db-toggle` | form | 100 | A | — | — |
|
|
384
|
+
| `db-toolbar` | display | 100 | A | — | — |
|
|
385
|
+
| `db-tooltip` | display | 100 | A | — | — |
|
|
386
|
+
| `db-tweet-card` | display | 100 | A | — | — |
|
|
387
|
+
| `db-workspace-invite-modal` | display | 100 | A | — | — |
|
|
388
|
+
| `db-workspace-members` | display | 100 | A | — | — |
|
|
389
|
+
|