@electroplix/components 0.4.1 → 0.5.0-alpha.11

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.
Files changed (185) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/LICENSE +21 -0
  3. package/README.md +88 -474
  4. package/SECURITY.md +19 -0
  5. package/cli.cjs +544 -485
  6. package/dist/config.d.ts +73 -0
  7. package/dist/config.esm.js +229 -0
  8. package/dist/index.esm.js +10195 -8528
  9. package/dist/package.json +100 -0
  10. package/dist/src/components/blog/index.d.ts +21 -21
  11. package/dist/src/components/blog/index.d.ts.map +1 -1
  12. package/dist/src/components/buttons/index.d.ts +41 -16
  13. package/dist/src/components/buttons/index.d.ts.map +1 -1
  14. package/dist/src/components/content/BlockquoteTestimonial.d.ts +3 -5
  15. package/dist/src/components/content/BlockquoteTestimonial.d.ts.map +1 -1
  16. package/dist/src/components/content/CalloutBox.d.ts +4 -6
  17. package/dist/src/components/content/CalloutBox.d.ts.map +1 -1
  18. package/dist/src/components/content/HeadingSection.d.ts +4 -6
  19. package/dist/src/components/content/HeadingSection.d.ts.map +1 -1
  20. package/dist/src/components/content/InlineCodeText.d.ts +5 -6
  21. package/dist/src/components/content/InlineCodeText.d.ts.map +1 -1
  22. package/dist/src/components/content/ParagraphBlock.d.ts +5 -7
  23. package/dist/src/components/content/ParagraphBlock.d.ts.map +1 -1
  24. package/dist/src/components/content/RichMarkdown.d.ts +5 -6
  25. package/dist/src/components/content/RichMarkdown.d.ts.map +1 -1
  26. package/dist/src/components/content/TeamGrid.d.ts +3 -2
  27. package/dist/src/components/content/TeamGrid.d.ts.map +1 -1
  28. package/dist/src/components/content/index.d.ts +7 -7
  29. package/dist/src/components/content/index.d.ts.map +1 -1
  30. package/dist/src/components/data-display/Badge.d.ts +6 -5
  31. package/dist/src/components/data-display/Badge.d.ts.map +1 -1
  32. package/dist/src/components/data-display/BadgeGroup.d.ts +6 -4
  33. package/dist/src/components/data-display/BadgeGroup.d.ts.map +1 -1
  34. package/dist/src/components/data-display/BarChart.d.ts +3 -2
  35. package/dist/src/components/data-display/BarChart.d.ts.map +1 -1
  36. package/dist/src/components/data-display/CalendarGrid.d.ts +4 -3
  37. package/dist/src/components/data-display/CalendarGrid.d.ts.map +1 -1
  38. package/dist/src/components/data-display/DataTable.d.ts +5 -5
  39. package/dist/src/components/data-display/DataTable.d.ts.map +1 -1
  40. package/dist/src/components/data-display/LineChart.d.ts +3 -2
  41. package/dist/src/components/data-display/LineChart.d.ts.map +1 -1
  42. package/dist/src/components/data-display/PieChart.d.ts +3 -2
  43. package/dist/src/components/data-display/PieChart.d.ts.map +1 -1
  44. package/dist/src/components/data-display/ProgressBar.d.ts +3 -2
  45. package/dist/src/components/data-display/ProgressBar.d.ts.map +1 -1
  46. package/dist/src/components/data-display/RatingStars.d.ts +3 -2
  47. package/dist/src/components/data-display/RatingStars.d.ts.map +1 -1
  48. package/dist/src/components/data-display/Sparkline.d.ts +3 -2
  49. package/dist/src/components/data-display/Sparkline.d.ts.map +1 -1
  50. package/dist/src/components/data-display/Timeline.d.ts +4 -3
  51. package/dist/src/components/data-display/Timeline.d.ts.map +1 -1
  52. package/dist/src/components/data-display/index.d.ts +11 -11
  53. package/dist/src/components/data-display/index.d.ts.map +1 -1
  54. package/dist/src/components/ecommerce/index.d.ts +24 -21
  55. package/dist/src/components/ecommerce/index.d.ts.map +1 -1
  56. package/dist/src/components/forms/AddressAutocomplete.d.ts +2 -4
  57. package/dist/src/components/forms/AddressAutocomplete.d.ts.map +1 -1
  58. package/dist/src/components/forms/Captcha.d.ts +3 -5
  59. package/dist/src/components/forms/Captcha.d.ts.map +1 -1
  60. package/dist/src/components/forms/ContactForm.d.ts +2 -4
  61. package/dist/src/components/forms/ContactForm.d.ts.map +1 -1
  62. package/dist/src/components/forms/DateTimePicker.d.ts +3 -5
  63. package/dist/src/components/forms/DateTimePicker.d.ts.map +1 -1
  64. package/dist/src/components/forms/FileUploader.d.ts +2 -4
  65. package/dist/src/components/forms/FileUploader.d.ts.map +1 -1
  66. package/dist/src/components/forms/FormShell.d.ts +2 -5
  67. package/dist/src/components/forms/FormShell.d.ts.map +1 -1
  68. package/dist/src/components/forms/InputField.d.ts +2 -4
  69. package/dist/src/components/forms/InputField.d.ts.map +1 -1
  70. package/dist/src/components/forms/MultiStepWizard.d.ts +2 -4
  71. package/dist/src/components/forms/MultiStepWizard.d.ts.map +1 -1
  72. package/dist/src/components/forms/NewsletterSignup.d.ts +2 -4
  73. package/dist/src/components/forms/NewsletterSignup.d.ts.map +1 -1
  74. package/dist/src/components/forms/RadioGroup.d.ts +2 -4
  75. package/dist/src/components/forms/RadioGroup.d.ts.map +1 -1
  76. package/dist/src/components/forms/SelectDropdown.d.ts +2 -4
  77. package/dist/src/components/forms/SelectDropdown.d.ts.map +1 -1
  78. package/dist/src/components/forms/TextAreaField.d.ts +2 -4
  79. package/dist/src/components/forms/TextAreaField.d.ts.map +1 -1
  80. package/dist/src/components/forms/ToggleSwitch.d.ts +2 -4
  81. package/dist/src/components/forms/ToggleSwitch.d.ts.map +1 -1
  82. package/dist/src/components/forms/ValidationWrapper.d.ts +2 -4
  83. package/dist/src/components/forms/ValidationWrapper.d.ts.map +1 -1
  84. package/dist/src/components/forms/index.d.ts +28 -28
  85. package/dist/src/components/forms/index.d.ts.map +1 -1
  86. package/dist/src/components/hero/CTAOverlayHero.d.ts +2 -4
  87. package/dist/src/components/hero/CTAOverlayHero.d.ts.map +1 -1
  88. package/dist/src/components/hero/CarouselHero.d.ts +2 -4
  89. package/dist/src/components/hero/CarouselHero.d.ts.map +1 -1
  90. package/dist/src/components/hero/HeroShell.d.ts +2 -5
  91. package/dist/src/components/hero/HeroShell.d.ts.map +1 -1
  92. package/dist/src/components/hero/ImageHero.d.ts +35 -0
  93. package/dist/src/components/hero/ImageHero.d.ts.map +1 -0
  94. package/dist/src/components/hero/PatternedHero.d.ts +3 -5
  95. package/dist/src/components/hero/PatternedHero.d.ts.map +1 -1
  96. package/dist/src/components/hero/SplitHero.d.ts +2 -4
  97. package/dist/src/components/hero/SplitHero.d.ts.map +1 -1
  98. package/dist/src/components/hero/StaticHero.d.ts +3 -5
  99. package/dist/src/components/hero/StaticHero.d.ts.map +1 -1
  100. package/dist/src/components/hero/VideoHeaderHero.d.ts +2 -4
  101. package/dist/src/components/hero/VideoHeaderHero.d.ts.map +1 -1
  102. package/dist/src/components/hero/index.d.ts +16 -14
  103. package/dist/src/components/hero/index.d.ts.map +1 -1
  104. package/dist/src/components/lists-cards/index.d.ts +17 -20
  105. package/dist/src/components/lists-cards/index.d.ts.map +1 -1
  106. package/dist/src/components/marketing/index.d.ts +22 -22
  107. package/dist/src/components/marketing/index.d.ts.map +1 -1
  108. package/dist/src/components/media/index.d.ts +27 -29
  109. package/dist/src/components/media/index.d.ts.map +1 -1
  110. package/dist/src/components/miscellaneous/index.d.ts +18 -17
  111. package/dist/src/components/miscellaneous/index.d.ts.map +1 -1
  112. package/dist/src/components/modals/index.d.ts +23 -34
  113. package/dist/src/components/modals/index.d.ts.map +1 -1
  114. package/dist/src/components/navigation/AnchorLinks.d.ts +4 -6
  115. package/dist/src/components/navigation/AnchorLinks.d.ts.map +1 -1
  116. package/dist/src/components/navigation/Breadcrumbs.d.ts +3 -5
  117. package/dist/src/components/navigation/Breadcrumbs.d.ts.map +1 -1
  118. package/dist/src/components/navigation/Footer.d.ts +3 -4
  119. package/dist/src/components/navigation/Footer.d.ts.map +1 -1
  120. package/dist/src/components/navigation/LanguageSelector.d.ts +3 -5
  121. package/dist/src/components/navigation/LanguageSelector.d.ts.map +1 -1
  122. package/dist/src/components/navigation/MegaMenu.d.ts +3 -5
  123. package/dist/src/components/navigation/MegaMenu.d.ts.map +1 -1
  124. package/dist/src/components/navigation/Pagination.d.ts +3 -2
  125. package/dist/src/components/navigation/Pagination.d.ts.map +1 -1
  126. package/dist/src/components/navigation/PrimaryNav.d.ts +3 -2
  127. package/dist/src/components/navigation/PrimaryNav.d.ts.map +1 -1
  128. package/dist/src/components/navigation/SideDrawerNav.d.ts +5 -4
  129. package/dist/src/components/navigation/SideDrawerNav.d.ts.map +1 -1
  130. package/dist/src/components/navigation/SidebarMenu.d.ts +4 -3
  131. package/dist/src/components/navigation/SidebarMenu.d.ts.map +1 -1
  132. package/dist/src/components/navigation/Stepper.d.ts +4 -3
  133. package/dist/src/components/navigation/Stepper.d.ts.map +1 -1
  134. package/dist/src/components/navigation/Tabs.d.ts +5 -4
  135. package/dist/src/components/navigation/Tabs.d.ts.map +1 -1
  136. package/dist/src/components/navigation/index.d.ts +22 -22
  137. package/dist/src/components/navigation/index.d.ts.map +1 -1
  138. package/dist/src/components/onboarding/index.d.ts +17 -17
  139. package/dist/src/components/onboarding/index.d.ts.map +1 -1
  140. package/dist/src/components/search/index.d.ts +13 -12
  141. package/dist/src/components/search/index.d.ts.map +1 -1
  142. package/dist/src/components/site-identity/index.d.ts +13 -14
  143. package/dist/src/components/site-identity/index.d.ts.map +1 -1
  144. package/dist/src/components/social/index.d.ts +19 -18
  145. package/dist/src/components/social/index.d.ts.map +1 -1
  146. package/dist/src/components/user-accounts/index.d.ts +17 -17
  147. package/dist/src/components/user-accounts/index.d.ts.map +1 -1
  148. package/dist/src/core/config.d.ts +1 -1
  149. package/dist/src/core/config.d.ts.map +1 -1
  150. package/dist/src/core/icons.d.ts +1 -1
  151. package/dist/src/core/icons.d.ts.map +1 -1
  152. package/dist/src/core/index.d.ts +7 -7
  153. package/dist/src/core/index.d.ts.map +1 -1
  154. package/dist/src/core/provider.d.ts +20 -20
  155. package/dist/src/core/provider.d.ts.map +1 -1
  156. package/dist/src/core/styles.d.ts +2 -0
  157. package/dist/src/core/styles.d.ts.map +1 -0
  158. package/dist/src/core/types.d.ts +4 -4
  159. package/dist/src/core/types.d.ts.map +1 -1
  160. package/dist/src/core/utils.d.ts +1 -1
  161. package/dist/src/core/utils.d.ts.map +1 -1
  162. package/dist/src/index.d.ts +19 -19
  163. package/dist/src/index.d.ts.map +1 -1
  164. package/metadata/blog.json +807 -0
  165. package/metadata/buttons.json +2186 -0
  166. package/metadata/content.json +1152 -0
  167. package/metadata/data-display.json +822 -0
  168. package/metadata/ecommerce.json +1059 -0
  169. package/metadata/forms.json +2637 -0
  170. package/metadata/hero.json +1401 -0
  171. package/metadata/lists-cards.json +848 -0
  172. package/metadata/marketing.json +1235 -0
  173. package/metadata/media.json +800 -0
  174. package/metadata/miscellaneous.json +778 -0
  175. package/metadata/modals.json +954 -0
  176. package/metadata/navigation.json +1348 -0
  177. package/metadata/onboarding.json +615 -0
  178. package/metadata/search.json +559 -0
  179. package/metadata/site-identity.json +555 -0
  180. package/metadata/social.json +654 -0
  181. package/metadata/user-accounts.json +727 -0
  182. package/package.json +22 -7
  183. package/dist/README.md +0 -35
  184. package/dist/src/__tests__/test-utils.d.ts +0 -8
  185. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
@@ -0,0 +1,559 @@
1
+ {
2
+ "$schema": "electroplix-component-metadata-v1",
3
+ "category": "search",
4
+ "label": "Search",
5
+ "description": "Search interface components including search bars, autocomplete, faceted filters, and result displays",
6
+ "themeKey": "search",
7
+ "icon": "search",
8
+ "sortOrder": 14,
9
+ "components": [
10
+ {
11
+ "id": "search.SiteSearchBar",
12
+ "name": "SiteSearchBar",
13
+ "description": "Main search input bar with customizable placeholder, optional auto-focus, and submit callback. Designed for prominent site-wide search placement.",
14
+ "whenToUse": "Use as the primary search entry point on any page. Ideal for landing pages, ecommerce storefronts, blog archives, documentation portals, and dashboard headers.",
15
+ "isShell": false,
16
+ "props": [
17
+ {
18
+ "name": "placeholder",
19
+ "type": "string",
20
+ "required": false,
21
+ "default": "\"Search...\"",
22
+ "description": "Placeholder text displayed inside the search input"
23
+ },
24
+ {
25
+ "name": "onSearch",
26
+ "type": "(query: string) => void",
27
+ "required": true,
28
+ "default": null,
29
+ "description": "Callback fired when the user submits a search query"
30
+ },
31
+ {
32
+ "name": "defaultValue",
33
+ "type": "string",
34
+ "required": false,
35
+ "default": "\"\"",
36
+ "description": "Initial value pre-filled in the search input"
37
+ },
38
+ {
39
+ "name": "autoFocus",
40
+ "type": "boolean",
41
+ "required": false,
42
+ "default": "false",
43
+ "description": "Whether the search input should be focused on mount"
44
+ },
45
+ {
46
+ "name": "bgColor",
47
+ "type": "string",
48
+ "required": false,
49
+ "default": "theme",
50
+ "description": "Background color override"
51
+ },
52
+ {
53
+ "name": "textColor",
54
+ "type": "string",
55
+ "required": false,
56
+ "default": "theme",
57
+ "description": "Text color override"
58
+ },
59
+ {
60
+ "name": "accentColor",
61
+ "type": "string",
62
+ "required": false,
63
+ "default": "theme",
64
+ "description": "Accent color override"
65
+ },
66
+ {
67
+ "name": "borderColor",
68
+ "type": "string",
69
+ "required": false,
70
+ "default": "theme",
71
+ "description": "Border color override"
72
+ },
73
+ {
74
+ "name": "fontFamily",
75
+ "type": "string",
76
+ "required": false,
77
+ "default": "theme",
78
+ "description": "Font family override"
79
+ }
80
+ ],
81
+ "themeTokens": [
82
+ "bgColor",
83
+ "textColor",
84
+ "accentColor",
85
+ "borderColor",
86
+ "fontFamily",
87
+ "radius",
88
+ "spacing",
89
+ "cardBg",
90
+ "cardRadius",
91
+ "cardBorder"
92
+ ],
93
+ "aiHints": {
94
+ "pageTypes": [
95
+ "landing",
96
+ "ecommerce",
97
+ "blog",
98
+ "documentation",
99
+ "dashboard",
100
+ "marketplace",
101
+ "restaurant",
102
+ "education",
103
+ "community"
104
+ ],
105
+ "placement": "header",
106
+ "priority": 8,
107
+ "sequenceOrder": 2,
108
+ "pairsWellWith": ["search.SearchResults", "search.AutoSuggest"],
109
+ "maxPerPage": 1,
110
+ "isContainer": false
111
+ }
112
+ },
113
+ {
114
+ "id": "search.AutoSuggest",
115
+ "name": "AutoSuggest",
116
+ "description": "Search input with a dropdown list of suggestions that updates as the user types. Supports selection callbacks and real-time query change tracking.",
117
+ "whenToUse": "Use when you want to provide type-ahead suggestions to help users find content faster. Great for ecommerce product search, documentation search, and any search-heavy interface.",
118
+ "isShell": false,
119
+ "props": [
120
+ {
121
+ "name": "suggestions",
122
+ "type": "string[]",
123
+ "required": true,
124
+ "default": null,
125
+ "description": "Array of suggestion strings to display in the dropdown"
126
+ },
127
+ {
128
+ "name": "onSelect",
129
+ "type": "(value: string) => void",
130
+ "required": true,
131
+ "default": null,
132
+ "description": "Callback fired when a suggestion is selected"
133
+ },
134
+ {
135
+ "name": "placeholder",
136
+ "type": "string",
137
+ "required": false,
138
+ "default": "\"Type to search...\"",
139
+ "description": "Placeholder text displayed inside the input"
140
+ },
141
+ {
142
+ "name": "onQueryChange",
143
+ "type": "(query: string) => void",
144
+ "required": false,
145
+ "default": null,
146
+ "description": "Callback fired on every input change for real-time query tracking"
147
+ },
148
+ {
149
+ "name": "bgColor",
150
+ "type": "string",
151
+ "required": false,
152
+ "default": "theme",
153
+ "description": "Background color override"
154
+ },
155
+ {
156
+ "name": "textColor",
157
+ "type": "string",
158
+ "required": false,
159
+ "default": "theme",
160
+ "description": "Text color override"
161
+ },
162
+ {
163
+ "name": "accentColor",
164
+ "type": "string",
165
+ "required": false,
166
+ "default": "theme",
167
+ "description": "Accent color override"
168
+ },
169
+ {
170
+ "name": "borderColor",
171
+ "type": "string",
172
+ "required": false,
173
+ "default": "theme",
174
+ "description": "Border color override"
175
+ },
176
+ {
177
+ "name": "fontFamily",
178
+ "type": "string",
179
+ "required": false,
180
+ "default": "theme",
181
+ "description": "Font family override"
182
+ }
183
+ ],
184
+ "themeTokens": [
185
+ "bgColor",
186
+ "textColor",
187
+ "accentColor",
188
+ "borderColor",
189
+ "fontFamily",
190
+ "radius",
191
+ "spacing",
192
+ "cardBg",
193
+ "cardRadius",
194
+ "cardBorder"
195
+ ],
196
+ "aiHints": {
197
+ "pageTypes": ["ecommerce", "documentation", "search"],
198
+ "placement": "body",
199
+ "priority": 7,
200
+ "sequenceOrder": 3,
201
+ "pairsWellWith": ["search.SiteSearchBar", "search.SearchResults", "search.FacetFilters"],
202
+ "maxPerPage": 1,
203
+ "isContainer": false
204
+ }
205
+ },
206
+ {
207
+ "id": "search.FacetFilters",
208
+ "name": "FacetFilters",
209
+ "description": "Faceted filter panel for refining search results. Displays grouped filter options with optional counts and tracks multi-select state per facet.",
210
+ "whenToUse": "Use alongside search results to let users narrow down results by category, price range, brand, or other attributes. Essential for ecommerce catalogs, documentation, and any filterable dataset.",
211
+ "isShell": false,
212
+ "props": [
213
+ {
214
+ "name": "facets",
215
+ "type": "Facet[]",
216
+ "required": true,
217
+ "default": null,
218
+ "description": "Array of facet groups: {id, name, options: FacetOption[]{id, label, count?}}"
219
+ },
220
+ {
221
+ "name": "selected",
222
+ "type": "Record<string, Set<string>>",
223
+ "required": false,
224
+ "default": "{}",
225
+ "description": "Map of selected option IDs keyed by facet ID"
226
+ },
227
+ {
228
+ "name": "onChange",
229
+ "type": "(facetId: string, optionId: string, checked: boolean) => void",
230
+ "required": true,
231
+ "default": null,
232
+ "description": "Callback fired when a filter option is toggled"
233
+ },
234
+ {
235
+ "name": "bgColor",
236
+ "type": "string",
237
+ "required": false,
238
+ "default": "theme",
239
+ "description": "Background color override"
240
+ },
241
+ {
242
+ "name": "textColor",
243
+ "type": "string",
244
+ "required": false,
245
+ "default": "theme",
246
+ "description": "Text color override"
247
+ },
248
+ {
249
+ "name": "accentColor",
250
+ "type": "string",
251
+ "required": false,
252
+ "default": "theme",
253
+ "description": "Accent color override"
254
+ },
255
+ {
256
+ "name": "borderColor",
257
+ "type": "string",
258
+ "required": false,
259
+ "default": "theme",
260
+ "description": "Border color override"
261
+ },
262
+ {
263
+ "name": "fontFamily",
264
+ "type": "string",
265
+ "required": false,
266
+ "default": "theme",
267
+ "description": "Font family override"
268
+ }
269
+ ],
270
+ "themeTokens": [
271
+ "bgColor",
272
+ "textColor",
273
+ "accentColor",
274
+ "borderColor",
275
+ "fontFamily",
276
+ "radius",
277
+ "spacing",
278
+ "cardBg",
279
+ "cardRadius",
280
+ "cardBorder"
281
+ ],
282
+ "aiHints": {
283
+ "pageTypes": [
284
+ "ecommerce",
285
+ "search",
286
+ "documentation",
287
+ "marketplace",
288
+ "realestate",
289
+ "directory",
290
+ "recruitment"
291
+ ],
292
+ "placement": "body",
293
+ "priority": 7,
294
+ "sequenceOrder": 4,
295
+ "pairsWellWith": ["search.SearchResults"],
296
+ "maxPerPage": 1,
297
+ "isContainer": false
298
+ }
299
+ },
300
+ {
301
+ "id": "search.SearchResultCard",
302
+ "name": "SearchResultCard",
303
+ "description": "Single search result item card displaying a title, optional description, image, badge, and metadata. Supports click interaction for navigation.",
304
+ "whenToUse": "Use as an individual result entry within a search results list. Suitable for search pages, ecommerce product results, and blog article listings.",
305
+ "isShell": false,
306
+ "props": [
307
+ {
308
+ "name": "item",
309
+ "type": "SearchItem",
310
+ "required": true,
311
+ "default": null,
312
+ "description": "Search result data: {id, title, description?, url?, image?, badge?, meta?}"
313
+ },
314
+ {
315
+ "name": "onClick",
316
+ "type": "(item: SearchItem) => void",
317
+ "required": false,
318
+ "default": null,
319
+ "description": "Callback fired when the result card is clicked"
320
+ },
321
+ {
322
+ "name": "bgColor",
323
+ "type": "string",
324
+ "required": false,
325
+ "default": "theme",
326
+ "description": "Background color override"
327
+ },
328
+ {
329
+ "name": "textColor",
330
+ "type": "string",
331
+ "required": false,
332
+ "default": "theme",
333
+ "description": "Text color override"
334
+ },
335
+ {
336
+ "name": "accentColor",
337
+ "type": "string",
338
+ "required": false,
339
+ "default": "theme",
340
+ "description": "Accent color override"
341
+ },
342
+ {
343
+ "name": "borderColor",
344
+ "type": "string",
345
+ "required": false,
346
+ "default": "theme",
347
+ "description": "Border color override"
348
+ },
349
+ {
350
+ "name": "fontFamily",
351
+ "type": "string",
352
+ "required": false,
353
+ "default": "theme",
354
+ "description": "Font family override"
355
+ }
356
+ ],
357
+ "themeTokens": [
358
+ "bgColor",
359
+ "textColor",
360
+ "accentColor",
361
+ "borderColor",
362
+ "fontFamily",
363
+ "radius",
364
+ "spacing",
365
+ "cardBg",
366
+ "cardRadius",
367
+ "cardBorder"
368
+ ],
369
+ "aiHints": {
370
+ "pageTypes": ["search", "ecommerce", "blog"],
371
+ "placement": "body",
372
+ "priority": 6,
373
+ "sequenceOrder": 5,
374
+ "pairsWellWith": ["search.SearchResults"],
375
+ "maxPerPage": 20,
376
+ "isContainer": false
377
+ }
378
+ },
379
+ {
380
+ "id": "search.SearchResults",
381
+ "name": "SearchResults",
382
+ "description": "Full search results list with query context, loading state, and item click handling. Renders a collection of result items with optional loading indicator.",
383
+ "whenToUse": "Use as the main search results container on dedicated search pages. Pairs with facet filters for refined browsing and pagination for large result sets.",
384
+ "isShell": false,
385
+ "props": [
386
+ {
387
+ "name": "items",
388
+ "type": "SearchItem[]",
389
+ "required": true,
390
+ "default": null,
391
+ "description": "Array of search result items: SearchItem{id, title, description?, url?, image?, badge?, meta?}"
392
+ },
393
+ {
394
+ "name": "query",
395
+ "type": "string",
396
+ "required": false,
397
+ "default": "\"\"",
398
+ "description": "The current search query string for display context"
399
+ },
400
+ {
401
+ "name": "onItemClick",
402
+ "type": "(item: SearchItem) => void",
403
+ "required": false,
404
+ "default": null,
405
+ "description": "Callback fired when a result item is clicked"
406
+ },
407
+ {
408
+ "name": "loading",
409
+ "type": "boolean",
410
+ "required": false,
411
+ "default": "false",
412
+ "description": "Whether the results are currently loading"
413
+ },
414
+ {
415
+ "name": "bgColor",
416
+ "type": "string",
417
+ "required": false,
418
+ "default": "theme",
419
+ "description": "Background color override"
420
+ },
421
+ {
422
+ "name": "textColor",
423
+ "type": "string",
424
+ "required": false,
425
+ "default": "theme",
426
+ "description": "Text color override"
427
+ },
428
+ {
429
+ "name": "accentColor",
430
+ "type": "string",
431
+ "required": false,
432
+ "default": "theme",
433
+ "description": "Accent color override"
434
+ },
435
+ {
436
+ "name": "borderColor",
437
+ "type": "string",
438
+ "required": false,
439
+ "default": "theme",
440
+ "description": "Border color override"
441
+ },
442
+ {
443
+ "name": "fontFamily",
444
+ "type": "string",
445
+ "required": false,
446
+ "default": "theme",
447
+ "description": "Font family override"
448
+ }
449
+ ],
450
+ "themeTokens": [
451
+ "bgColor",
452
+ "textColor",
453
+ "accentColor",
454
+ "borderColor",
455
+ "fontFamily",
456
+ "radius",
457
+ "spacing",
458
+ "cardBg",
459
+ "cardRadius",
460
+ "cardBorder"
461
+ ],
462
+ "aiHints": {
463
+ "pageTypes": ["search", "ecommerce", "blog"],
464
+ "placement": "body",
465
+ "priority": 8,
466
+ "sequenceOrder": 5,
467
+ "pairsWellWith": ["search.FacetFilters", "navigation.Pagination"],
468
+ "maxPerPage": 1,
469
+ "isContainer": true
470
+ }
471
+ },
472
+ {
473
+ "id": "search.SearchEmptyState",
474
+ "name": "SearchEmptyState",
475
+ "description": "Empty state display shown when a search returns no results. Provides a friendly message with the original query and customizable title and description.",
476
+ "whenToUse": "Use inside search results containers when the result set is empty. Helps guide users to refine their query or explore alternative content.",
477
+ "isShell": false,
478
+ "props": [
479
+ {
480
+ "name": "query",
481
+ "type": "string",
482
+ "required": false,
483
+ "default": "\"\"",
484
+ "description": "The search query that produced no results"
485
+ },
486
+ {
487
+ "name": "title",
488
+ "type": "string",
489
+ "required": false,
490
+ "default": "auto",
491
+ "description": "Heading text for the empty state (auto-generated from query if not provided)"
492
+ },
493
+ {
494
+ "name": "description",
495
+ "type": "string",
496
+ "required": false,
497
+ "default": "auto",
498
+ "description": "Descriptive text with suggestions (auto-generated if not provided)"
499
+ },
500
+ {
501
+ "name": "bgColor",
502
+ "type": "string",
503
+ "required": false,
504
+ "default": "theme",
505
+ "description": "Background color override"
506
+ },
507
+ {
508
+ "name": "textColor",
509
+ "type": "string",
510
+ "required": false,
511
+ "default": "theme",
512
+ "description": "Text color override"
513
+ },
514
+ {
515
+ "name": "accentColor",
516
+ "type": "string",
517
+ "required": false,
518
+ "default": "theme",
519
+ "description": "Accent color override"
520
+ },
521
+ {
522
+ "name": "borderColor",
523
+ "type": "string",
524
+ "required": false,
525
+ "default": "theme",
526
+ "description": "Border color override"
527
+ },
528
+ {
529
+ "name": "fontFamily",
530
+ "type": "string",
531
+ "required": false,
532
+ "default": "theme",
533
+ "description": "Font family override"
534
+ }
535
+ ],
536
+ "themeTokens": [
537
+ "bgColor",
538
+ "textColor",
539
+ "accentColor",
540
+ "borderColor",
541
+ "fontFamily",
542
+ "radius",
543
+ "spacing",
544
+ "cardBg",
545
+ "cardRadius",
546
+ "cardBorder"
547
+ ],
548
+ "aiHints": {
549
+ "pageTypes": ["search"],
550
+ "placement": "body",
551
+ "priority": 4,
552
+ "sequenceOrder": 5,
553
+ "pairsWellWith": ["search.SiteSearchBar", "search.SearchResults"],
554
+ "maxPerPage": 1,
555
+ "isContainer": false
556
+ }
557
+ }
558
+ ]
559
+ }