@monoharada/wcf-mcp 0.10.0 → 0.12.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/core.mjs CHANGED
@@ -21,8 +21,10 @@ export {
21
21
  PLUGIN_TOOL_NOTICE,
22
22
  CATEGORY_MAP,
23
23
  FIGMA_TO_WCF_PROMPT,
24
+ BUILD_PAGE_PROMPT,
24
25
  WCF_RESOURCE_URIS,
25
26
  IDE_SETUP_TEMPLATES,
27
+ buildServerInstructions,
26
28
  } from './core/constants.mjs';
27
29
 
28
30
  // --- core/response.mjs ---
@@ -103,7 +105,7 @@ export {
103
105
  import { normalizePlugins, buildPluginDataSourceMap } from './core/plugins.mjs';
104
106
  import { buildIndexes, extractPrefixFromIndexes, loadPatternRegistryShape, buildRelatedComponentMap, buildPatternFrequencyMap } from './core/cem.mjs';
105
107
  import { buildTokenSuggestionMap, buildComponentTokenReferencedBy } from './core/tokens.mjs';
106
- import { MAX_TOOL_RESULT_BYTES, PACKAGE_VERSION } from './core/constants.mjs';
108
+ import { MAX_TOOL_RESULT_BYTES, PACKAGE_VERSION, buildServerInstructions } from './core/constants.mjs';
107
109
 
108
110
  // ---------------------------------------------------------------------------
109
111
  // createMcpServer — builds the McpServer with all tools registered, but does
@@ -162,6 +164,10 @@ export async function createMcpServer(loadJsonData, loadValidator, options = {})
162
164
  detectNonLowercaseAttributes = () => [],
163
165
  detectCdnReferences = () => [],
164
166
  detectMissingRuntimeScaffold = () => [],
167
+ detectTableAuthoringMisuse = () => [],
168
+ detectResourceListAuthoringMisuse = () => [],
169
+ detectReplaceableNativePatterns = () => [],
170
+ detectReplaceableAnimationPatterns = () => [],
165
171
  } = await loadValidator();
166
172
  const canonicalCemIndex = collectCemCustomElements(manifest);
167
173
  const canonicalEnumMap = buildEnumAttributeMap(manifest);
@@ -202,10 +208,15 @@ export async function createMcpServer(loadJsonData, loadValidator, options = {})
202
208
  // component-selector-guide.json may not exist yet
203
209
  }
204
210
 
205
- const server = new McpServer({
206
- name: 'web-components-factory-design-system',
207
- version: PACKAGE_VERSION,
208
- });
211
+ const server = new McpServer(
212
+ {
213
+ name: 'web-components-factory-design-system',
214
+ version: PACKAGE_VERSION,
215
+ },
216
+ {
217
+ instructions: buildServerInstructions(detectedPrefix, installRegistry, patterns),
218
+ },
219
+ );
209
220
 
210
221
  // Delegate all tool / resource / prompt registration to register.mjs (DD-08)
211
222
  registerAll({
@@ -244,6 +255,10 @@ export async function createMcpServer(loadJsonData, loadValidator, options = {})
244
255
  detectNonLowercaseAttributes,
245
256
  detectCdnReferences,
246
257
  detectMissingRuntimeScaffold,
258
+ detectTableAuthoringMisuse,
259
+ detectResourceListAuthoringMisuse,
260
+ detectReplaceableNativePatterns,
261
+ detectReplaceableAnimationPatterns,
247
262
  }),
248
263
  selectorGuideData,
249
264
  maxToolResultBytes: MAX_TOOL_RESULT_BYTES,
@@ -1,23 +1,165 @@
1
1
  {
2
- "schemaVersion": 1,
2
+ "schemaVersion": 2,
3
+ "componentPatternMap": [
4
+ {
5
+ "pattern": "タブ切替 / tablist",
6
+ "componentIds": ["tab"],
7
+ "usage": "<dads-tab><div data-tab-label=\"概要\">内容</div><div data-tab-label=\"詳細\">内容</div></dads-tab>",
8
+ "note": "role=\"tablist\" の独自実装は不要です。",
9
+ "keywords": ["tab", "tabs", "tablist", "tab panel", "タブ", "タブ切替", "セクション切替"]
10
+ },
11
+ {
12
+ "pattern": "モーダルダイアログ",
13
+ "componentIds": ["dialog"],
14
+ "note": "フォーカストラップと Escape 閉じを自動提供します。",
15
+ "keywords": ["dialog", "modal", "ダイアログ", "モーダル", "確認ダイアログ"]
16
+ },
17
+ {
18
+ "pattern": "ドロワー / サイドパネル",
19
+ "componentIds": ["drawer"],
20
+ "note": "フィルターパネルや補助導線のオーバーレイ表示に使います。",
21
+ "keywords": ["drawer", "side panel", "ドロワー", "サイドパネル", "フィルターパネル"]
22
+ },
23
+ {
24
+ "pattern": "アコーディオン / 折りたたみ",
25
+ "componentIds": ["accordion-details", "accordion-item-details"],
26
+ "note": "FAQ や設定グループ向けです。",
27
+ "keywords": ["accordion", "collapsible", "アコーディオン", "折りたたみ"]
28
+ },
29
+ {
30
+ "pattern": "単一の折りたたみ",
31
+ "componentIds": ["disclosure"],
32
+ "note": "詳細表示の開閉に使います。",
33
+ "keywords": ["disclosure", "details", "expand", "ディスクロージャー"]
34
+ },
35
+ {
36
+ "pattern": "ステップナビゲーション / ウィザード",
37
+ "componentIds": ["step-navigation"],
38
+ "note": "multi-step フォームの進捗表示です。",
39
+ "keywords": ["step", "wizard", "multi-step", "stepper", "ステップ", "ウィザード"]
40
+ },
41
+ {
42
+ "pattern": "ファイルアップロード / ドラッグ&ドロップ",
43
+ "componentIds": ["file-upload"],
44
+ "note": "ネイティブ file input を置き換える標準候補です。",
45
+ "keywords": ["file upload", "drag drop", "file input", "アップロード", "ドラッグ&ドロップ"]
46
+ },
47
+ {
48
+ "pattern": "ローディング / スピナー",
49
+ "componentIds": ["spinner", "progress-bar"],
50
+ "note": "indeterminate は spinner、determinate は progress-bar を使います。",
51
+ "keywords": ["spinner", "loading", "progress", "progress bar", "ローディング", "スピナー", "進捗"]
52
+ },
53
+ {
54
+ "pattern": "ローディングアイコン(静的)",
55
+ "componentIds": ["loading-icon"],
56
+ "note": "アニメーションなしの読み込みアイコンです。",
57
+ "keywords": ["loading icon", "static loading", "読み込みアイコン", "砂時計"]
58
+ },
59
+ {
60
+ "pattern": "パンくずリスト",
61
+ "componentIds": ["breadcrumb"],
62
+ "note": "階層ナビゲーションを表します。",
63
+ "keywords": ["breadcrumb", "パンくず", "現在位置"]
64
+ },
65
+ {
66
+ "pattern": "リソースリスト / ファイルDL一覧",
67
+ "componentIds": ["resource-list"],
68
+ "usage": "<dads-resource-list href=\"/files/guide.pdf\" download data-interaction=\"whole\" data-style=\"frame\"><span slot=\"title\">申請ガイド</span></dads-resource-list>",
69
+ "note": "独自の .doc-item カードリストを置き換える候補です。",
70
+ "keywords": ["resource list", "file list", "download list", "download", "リソースリスト", "ファイル一覧", "ダウンロード"]
71
+ },
72
+ {
73
+ "pattern": "説明リスト / dt+dd",
74
+ "componentIds": ["description-list"],
75
+ "note": "独自の dl + CSS grid を置き換える候補です。",
76
+ "keywords": ["description list", "definition list", "dl", "説明リスト", "詳細情報"]
77
+ },
78
+ {
79
+ "pattern": "ステータスバッジ / ラベル",
80
+ "componentIds": ["chip-label"],
81
+ "note": "badge 風 UI は chip-label の color + variant を使います。",
82
+ "keywords": ["badge", "status badge", "label", "tag", "ステータスバッジ", "チップ"]
83
+ },
84
+ {
85
+ "pattern": "タグ / フィルタートークン",
86
+ "componentIds": ["chip-tag"],
87
+ "note": "remove/filter 可能なタグです。",
88
+ "keywords": ["tag", "filter token", "chip", "タグ", "フィルター"]
89
+ },
90
+ {
91
+ "pattern": "通知バナー",
92
+ "componentIds": ["notification-banner"],
93
+ "note": "info / warning / error の通知表示に使います。",
94
+ "keywords": ["notification", "alert banner", "info banner", "通知", "お知らせ"]
95
+ },
96
+ {
97
+ "pattern": "緊急バナー",
98
+ "componentIds": ["emergency-banner"],
99
+ "note": "障害・緊急告知用です。",
100
+ "keywords": ["emergency", "urgent", "critical alert", "緊急", "障害通知"]
101
+ },
102
+ {
103
+ "pattern": "ページナビゲーション / ページ送り",
104
+ "componentIds": ["page-navigation"],
105
+ "note": "URL 連携は as=\"link\"、JS 連携は as=\"button\" を使います。",
106
+ "keywords": ["pagination", "page navigation", "ページ送り", "ページネーション"]
107
+ },
108
+ {
109
+ "pattern": "検索ボックス",
110
+ "componentIds": ["search-box"],
111
+ "note": "独自の input[type=search] + button を置き換える候補です。",
112
+ "keywords": ["search", "search box", "検索", "検索ボックス"]
113
+ },
114
+ {
115
+ "pattern": "グローバルメニュー",
116
+ "componentIds": ["global-menu"],
117
+ "note": "サイト全体のグローバルナビゲーションです。",
118
+ "keywords": ["global menu", "site navigation", "グローバルメニュー"]
119
+ },
120
+ {
121
+ "pattern": "メニューリスト / サイドナビ",
122
+ "componentIds": ["menu-list"],
123
+ "note": "サイドバー内のナビゲーションリストです。",
124
+ "keywords": ["menu", "side nav", "navigation list", "メニュー", "サイドナビ"]
125
+ },
126
+ {
127
+ "pattern": "日付入力",
128
+ "componentIds": ["date-picker", "calendar"],
129
+ "note": "日付入力は date-picker、カレンダー単体は calendar を使います。",
130
+ "keywords": ["date picker", "calendar", "日付選択", "カレンダー"]
131
+ },
132
+ {
133
+ "pattern": "コンボボックス / オートコンプリート",
134
+ "componentIds": ["combobox"],
135
+ "note": "検索可能なセレクトです。",
136
+ "keywords": ["combobox", "autocomplete", "typeahead", "コンボボックス", "オートコンプリート"]
137
+ },
138
+ {
139
+ "pattern": "スイッチ / トグル",
140
+ "componentIds": ["switch"],
141
+ "note": "ON/OFF 切替向けです。",
142
+ "keywords": ["switch", "toggle", "スイッチ", "トグル", "on/off"]
143
+ }
144
+ ],
3
145
  "categories": [
4
146
  {
5
147
  "key": "Form",
6
148
  "label": "フォーム入力",
7
149
  "description": "User input, selection, and form control components",
8
150
  "components": [
9
- { "id": "input-text", "tagName": "dads-input-text", "useCase": "Single-line text input (name, email, phone, etc.)" },
10
- { "id": "textarea", "tagName": "dads-textarea", "useCase": "Multi-line text input (comments, descriptions, notes)" },
11
- { "id": "select", "tagName": "dads-select", "useCase": "Dropdown selection from predefined options" },
12
- { "id": "checkbox", "tagName": "dads-checkbox", "useCase": "Boolean toggle or multi-select checkboxes" },
13
- { "id": "radio", "tagName": "dads-radio", "useCase": "Single selection from mutually exclusive options" },
14
- { "id": "switch", "tagName": "dads-switch", "useCase": "On/off toggle for settings or preferences" },
15
- { "id": "combobox", "tagName": "dads-combobox", "useCase": "Text input with autocomplete/suggestion dropdown" },
16
- { "id": "date-picker", "tagName": "dads-date-picker", "useCase": "Date selection with calendar interface" },
17
- { "id": "file-upload", "tagName": "dads-file-upload", "useCase": "File attachment and upload" },
18
- { "id": "fieldset", "tagName": "dads-fieldset", "useCase": "Group related form fields with legend" },
19
- { "id": "search-box", "tagName": "dads-search-box", "useCase": "Search input with clear/submit actions" },
20
- { "id": "calendar", "tagName": "dads-calendar", "useCase": "Calendar date picker component" }
151
+ { "id": "input-text", "tagName": "dads-input-text", "useCase": "Single-line text input (name, email, phone, etc.)", "keywords": ["text input", "name", "email", "phone", "入力"] },
152
+ { "id": "textarea", "tagName": "dads-textarea", "useCase": "Multi-line text input (comments, descriptions, notes)", "keywords": ["textarea", "multiline", "comments", "notes", "複数行入力"] },
153
+ { "id": "select", "tagName": "dads-select", "useCase": "Dropdown selection from predefined options", "keywords": ["select", "dropdown", "選択"] },
154
+ { "id": "checkbox", "tagName": "dads-checkbox", "useCase": "Boolean toggle or multi-select checkboxes", "keywords": ["checkbox", "multi-select", "チェックボックス"] },
155
+ { "id": "radio", "tagName": "dads-radio", "useCase": "Single selection from mutually exclusive options", "keywords": ["radio", "single choice", "ラジオ"] },
156
+ { "id": "switch", "tagName": "dads-switch", "useCase": "On/off toggle for settings or preferences", "keywords": ["switch", "toggle", "スイッチ", "トグル", "on/off"] },
157
+ { "id": "combobox", "tagName": "dads-combobox", "useCase": "Text input with autocomplete/suggestion dropdown", "keywords": ["combobox", "autocomplete", "typeahead", "コンボボックス", "オートコンプリート"] },
158
+ { "id": "date-picker", "tagName": "dads-date-picker", "useCase": "Date selection with calendar interface", "keywords": ["date picker", "calendar", "日付選択", "カレンダー"] },
159
+ { "id": "file-upload", "tagName": "dads-file-upload", "useCase": "File attachment and upload", "keywords": ["file upload", "drag drop", "file input", "アップロード", "ドラッグ&ドロップ"] },
160
+ { "id": "fieldset", "tagName": "dads-fieldset", "useCase": "Group related form fields with legend", "keywords": ["fieldset", "group", "legend", "フォームグループ"] },
161
+ { "id": "search-box", "tagName": "dads-search-box", "useCase": "Search input with clear/submit actions", "keywords": ["search", "search box", "検索", "検索ボックス"] },
162
+ { "id": "calendar", "tagName": "dads-calendar", "useCase": "Calendar date picker component", "keywords": ["calendar", "日付", "カレンダー"] }
21
163
  ]
22
164
  },
23
165
  {
@@ -25,12 +167,12 @@
25
167
  "label": "アクション",
26
168
  "description": "Interactive elements that trigger actions or reveal content",
27
169
  "components": [
28
- { "id": "button", "tagName": "dads-button", "useCase": "Primary action trigger (submit, save, cancel, delete)" },
29
- { "id": "dialog", "tagName": "dads-dialog", "useCase": "Modal dialog for confirmations, alerts, or focused tasks" },
30
- { "id": "drawer", "tagName": "dads-drawer", "useCase": "Slide-out panel for secondary content or navigation" },
31
- { "id": "disclosure", "tagName": "dads-disclosure", "useCase": "Expandable content section (show/hide)" },
32
- { "id": "accordion-details", "tagName": "dads-accordion-details", "useCase": "Accordion container for collapsible FAQ or grouped content" },
33
- { "id": "accordion-item-details", "tagName": "dads-accordion-item-details", "useCase": "Individual accordion item within an accordion group" }
170
+ { "id": "button", "tagName": "dads-button", "useCase": "Primary action trigger (submit, save, cancel, delete)", "keywords": ["button", "action", "ボタン"] },
171
+ { "id": "dialog", "tagName": "dads-dialog", "useCase": "Modal dialog for confirmations, alerts, or focused tasks", "keywords": ["dialog", "modal", "confirm", "ダイアログ", "モーダル"] },
172
+ { "id": "drawer", "tagName": "dads-drawer", "useCase": "Slide-out panel for secondary content or navigation", "keywords": ["drawer", "side panel", "ドロワー", "サイドパネル"] },
173
+ { "id": "disclosure", "tagName": "dads-disclosure", "useCase": "Expandable content section (show/hide)", "keywords": ["disclosure", "details", "expand", "折りたたみ"] },
174
+ { "id": "accordion-details", "tagName": "dads-accordion-details", "useCase": "Accordion container for collapsible FAQ or grouped content", "keywords": ["accordion", "faq", "collapsible", "アコーディオン"] },
175
+ { "id": "accordion-item-details", "tagName": "dads-accordion-item-details", "useCase": "Individual accordion item within an accordion group", "keywords": ["accordion item", "faq item", "アコーディオン項目"] }
34
176
  ]
35
177
  },
36
178
  {
@@ -38,16 +180,16 @@
38
180
  "label": "ナビゲーション",
39
181
  "description": "Page navigation, breadcrumbs, tabs, and menu components",
40
182
  "components": [
41
- { "id": "breadcrumb", "tagName": "dads-breadcrumb", "useCase": "Hierarchical page location indicator" },
42
- { "id": "page-navigation", "tagName": "dads-page-navigation", "useCase": "Pagination for multi-page content (tables, search results)" },
43
- { "id": "step-navigation", "tagName": "dads-step-navigation", "useCase": "Step-by-step wizard progress indicator" },
44
- { "id": "menu-list", "tagName": "dads-menu-list", "useCase": "Vertical navigation menu list" },
45
- { "id": "tab", "tagName": "dads-tab", "useCase": "Tab interface for switching between related content panels" },
46
- { "id": "global-menu", "tagName": "dads-global-menu", "useCase": "Site-wide header navigation menu" },
47
- { "id": "language-selector", "tagName": "dads-language-selector", "useCase": "Language/locale switcher" },
48
- { "id": "hamburger-menu-button", "tagName": "dads-hamburger-menu-button", "useCase": "Mobile menu toggle button" },
49
- { "id": "utility-link", "tagName": "dads-utility-link", "useCase": "Utility navigation link (login, settings, help)" },
50
- { "id": "mobile-menu", "tagName": "dads-mobile-menu", "useCase": "Mobile-optimized navigation menu" }
183
+ { "id": "breadcrumb", "tagName": "dads-breadcrumb", "useCase": "Hierarchical page location indicator", "keywords": ["breadcrumb", "パンくず", "現在位置"] },
184
+ { "id": "page-navigation", "tagName": "dads-page-navigation", "useCase": "Pagination for multi-page content (tables, search results)", "keywords": ["pagination", "page navigation", "ページ送り", "ページネーション"] },
185
+ { "id": "step-navigation", "tagName": "dads-step-navigation", "useCase": "Step-by-step wizard progress indicator", "keywords": ["step", "wizard", "multi-step", "stepper", "ステップ", "ウィザード"] },
186
+ { "id": "menu-list", "tagName": "dads-menu-list", "useCase": "Vertical navigation menu list", "keywords": ["menu", "side nav", "navigation list", "メニュー", "サイドナビ"] },
187
+ { "id": "tab", "tagName": "dads-tab", "useCase": "Tab interface for switching between related content panels", "keywords": ["tab", "tabs", "tablist", "tab panel", "タブ", "タブ切替"] },
188
+ { "id": "global-menu", "tagName": "dads-global-menu", "useCase": "Site-wide header navigation menu", "keywords": ["global menu", "site navigation", "グローバルメニュー"] },
189
+ { "id": "language-selector", "tagName": "dads-language-selector", "useCase": "Language/locale switcher", "keywords": ["language", "locale", "言語切替"] },
190
+ { "id": "hamburger-menu-button", "tagName": "dads-hamburger-menu-button", "useCase": "Mobile menu toggle button", "keywords": ["hamburger", "mobile menu", "ハンバーガー"] },
191
+ { "id": "utility-link", "tagName": "dads-utility-link", "useCase": "Utility navigation link (login, settings, help)", "keywords": ["utility link", "login", "settings", "help", "補助リンク"] },
192
+ { "id": "mobile-menu", "tagName": "dads-mobile-menu", "useCase": "Mobile-optimized navigation menu", "keywords": ["mobile menu", "drawer menu", "モバイルメニュー"] }
51
193
  ]
52
194
  },
53
195
  {
@@ -55,17 +197,17 @@
55
197
  "label": "コンテンツ表示",
56
198
  "description": "Text, list, table, and structured content display",
57
199
  "components": [
58
- { "id": "card", "tagName": "dads-card", "useCase": "Contained content block (article preview, info card)" },
59
- { "id": "heading", "tagName": "dads-heading", "useCase": "Section heading with proper hierarchy (h1-h6)" },
60
- { "id": "text", "tagName": "dads-text", "useCase": "Styled text block with typography tokens" },
61
- { "id": "blockquote", "tagName": "dads-blockquote", "useCase": "Quoted text or citation block" },
62
- { "id": "code-block", "tagName": "dads-code-block", "useCase": "Code snippet display with syntax styling" },
63
- { "id": "divider", "tagName": "dads-divider", "useCase": "Visual separator between content sections" },
64
- { "id": "list", "tagName": "dads-list", "useCase": "Ordered or unordered list" },
65
- { "id": "description-list", "tagName": "dads-description-list", "useCase": "Key-value pair list (terms and definitions)" },
66
- { "id": "resource-list", "tagName": "dads-resource-list", "useCase": "List of downloadable resources or links" },
67
- { "id": "table", "tagName": "dads-table", "useCase": "Data table with sortable columns" },
68
- { "id": "table-control", "tagName": "dads-table-control", "useCase": "Table toolbar with filters and actions" }
200
+ { "id": "card", "tagName": "dads-card", "useCase": "Contained content block (article preview, info card)", "keywords": ["card", "info card", "カード"] },
201
+ { "id": "heading", "tagName": "dads-heading", "useCase": "Section heading with proper hierarchy (h1-h6)", "keywords": ["heading", "title", "見出し"] },
202
+ { "id": "text", "tagName": "dads-text", "useCase": "Styled text block with typography tokens", "keywords": ["text", "typography", "本文"] },
203
+ { "id": "blockquote", "tagName": "dads-blockquote", "useCase": "Quoted text or citation block", "keywords": ["blockquote", "quote", "引用"] },
204
+ { "id": "code-block", "tagName": "dads-code-block", "useCase": "Code snippet display with syntax styling", "keywords": ["code block", "snippet", "コード"] },
205
+ { "id": "divider", "tagName": "dads-divider", "useCase": "Visual separator between content sections", "keywords": ["divider", "separator", "区切り"] },
206
+ { "id": "list", "tagName": "dads-list", "useCase": "Ordered or unordered list", "keywords": ["list", "ul", "ol", "リスト"] },
207
+ { "id": "description-list", "tagName": "dads-description-list", "useCase": "Key-value pair list (terms and definitions)", "keywords": ["description list", "definition list", "dl", "説明リスト", "詳細情報"] },
208
+ { "id": "resource-list", "tagName": "dads-resource-list", "useCase": "List of downloadable resources or links", "keywords": ["resource list", "file list", "download list", "download", "リソースリスト", "ファイル一覧", "ダウンロード"] },
209
+ { "id": "table", "tagName": "dads-table", "useCase": "Data table with sortable columns", "keywords": ["table", "data table", "sortable table", "テーブル"] },
210
+ { "id": "table-control", "tagName": "dads-table-control", "useCase": "Table toolbar with filters and actions", "keywords": ["table toolbar", "filter bar", "テーブル操作"] }
69
211
  ]
70
212
  },
71
213
  {
@@ -73,18 +215,18 @@
73
215
  "label": "表示・フィードバック",
74
216
  "description": "Visual indicators, status displays, and feedback elements",
75
217
  "components": [
76
- { "id": "avatar", "tagName": "dads-avatar", "useCase": "User profile image or initials" },
77
- { "id": "icon", "tagName": "dads-icon", "useCase": "SVG icon display" },
78
- { "id": "chip-label", "tagName": "dads-chip-label", "useCase": "Label chip for categories or tags" },
79
- { "id": "chip-tag", "tagName": "dads-chip-tag", "useCase": "Interactive tag chip (filterable, removable)" },
80
- { "id": "notification-banner", "tagName": "dads-notification-banner", "useCase": "Page-level notification or info banner" },
81
- { "id": "emergency-banner", "tagName": "dads-emergency-banner", "useCase": "Critical alert banner (system-wide)" },
82
- { "id": "carousel", "tagName": "dads-carousel", "useCase": "Image or content carousel/slider" },
83
- { "id": "device-mock", "tagName": "dads-device-mock", "useCase": "Device frame mockup for previews" },
84
- { "id": "progress-indicator", "tagName": "dads-progress-indicator", "useCase": "Progress display (determinate or indeterminate)" },
85
- { "id": "spinner", "tagName": "dads-spinner", "useCase": "Loading spinner for async operations" },
86
- { "id": "progress-bar", "tagName": "dads-progress-bar", "useCase": "Linear progress bar" },
87
- { "id": "loading-icon", "tagName": "dads-loading-icon", "useCase": "Inline loading indicator" }
218
+ { "id": "avatar", "tagName": "dads-avatar", "useCase": "User profile image or initials", "keywords": ["avatar", "profile", "アバター"] },
219
+ { "id": "icon", "tagName": "dads-icon", "useCase": "SVG icon display", "keywords": ["icon", "svg", "アイコン"] },
220
+ { "id": "chip-label", "tagName": "dads-chip-label", "useCase": "Label chip for categories or tags", "keywords": ["badge", "status badge", "label", "tag", "ステータスバッジ", "チップ"] },
221
+ { "id": "chip-tag", "tagName": "dads-chip-tag", "useCase": "Interactive tag chip (filterable, removable)", "keywords": ["chip tag", "filter tag", "タグ", "フィルタートークン"] },
222
+ { "id": "notification-banner", "tagName": "dads-notification-banner", "useCase": "Page-level notification or info banner", "keywords": ["notification", "alert banner", "info banner", "通知", "お知らせ"] },
223
+ { "id": "emergency-banner", "tagName": "dads-emergency-banner", "useCase": "Critical alert banner (system-wide)", "keywords": ["emergency", "urgent", "critical alert", "緊急", "障害通知"] },
224
+ { "id": "carousel", "tagName": "dads-carousel", "useCase": "Image or content carousel/slider", "keywords": ["carousel", "slider", "カルーセル"] },
225
+ { "id": "device-mock", "tagName": "dads-device-mock", "useCase": "Device frame mockup for previews", "keywords": ["device mock", "preview frame", "モック"] },
226
+ { "id": "progress-indicator", "tagName": "dads-progress-indicator", "useCase": "Progress display (determinate or indeterminate)", "keywords": ["progress indicator", "進捗インジケーター"] },
227
+ { "id": "spinner", "tagName": "dads-spinner", "useCase": "Loading spinner for async operations", "keywords": ["spinner", "loading", "処理中", "送信中", "読み込み中", "スピナー"] },
228
+ { "id": "progress-bar", "tagName": "dads-progress-bar", "useCase": "Linear progress bar", "keywords": ["progress", "progress bar", "進捗", "プログレスバー"] },
229
+ { "id": "loading-icon", "tagName": "dads-loading-icon", "useCase": "Inline loading indicator", "keywords": ["loading icon", "static loading", "読み込みアイコン", "砂時計"] }
88
230
  ]
89
231
  },
90
232
  {
@@ -92,10 +234,10 @@
92
234
  "label": "レイアウト",
93
235
  "description": "Page layout containers and structural components",
94
236
  "components": [
95
- { "id": "layout-shell", "tagName": "dads-layout-shell", "useCase": "Page-level layout container (website, app-shell, master-detail)" },
96
- { "id": "layout-sidebar", "tagName": "dads-layout-sidebar", "useCase": "Sidebar navigation panel for app layouts" },
97
- { "id": "layout-aside", "tagName": "dads-layout-aside", "useCase": "Aside panel for detail/supplementary content" },
98
- { "id": "header-container", "tagName": "dads-header-container", "useCase": "Header area container with slots" }
237
+ { "id": "layout-shell", "tagName": "dads-layout-shell", "useCase": "Page-level layout container (website, app-shell, master-detail)", "keywords": ["layout shell", "app shell", "website layout", "レイアウト"] },
238
+ { "id": "layout-sidebar", "tagName": "dads-layout-sidebar", "useCase": "Sidebar navigation panel for app layouts", "keywords": ["sidebar", "サイドバー"] },
239
+ { "id": "layout-aside", "tagName": "dads-layout-aside", "useCase": "Aside panel for detail/supplementary content", "keywords": ["aside", "detail pane", "補助パネル"] },
240
+ { "id": "header-container", "tagName": "dads-header-container", "useCase": "Header area container with slots", "keywords": ["header container", "ヘッダー"] }
99
241
  ]
100
242
  }
101
243
  ]