@electroplix/components 0.4.1 → 0.5.0-alpha.2
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 +66 -0
- package/LICENSE +21 -0
- package/README.md +88 -474
- package/SECURITY.md +19 -0
- package/cli.cjs +510 -485
- package/dist/config.d.ts +73 -0
- package/dist/config.esm.js +229 -0
- package/dist/index.esm.js +6531 -6668
- package/dist/package.json +97 -0
- package/dist/src/components/blog/index.d.ts +5 -5
- package/dist/src/components/blog/index.d.ts.map +1 -1
- package/dist/src/components/buttons/index.d.ts +38 -8
- package/dist/src/components/buttons/index.d.ts.map +1 -1
- package/dist/src/components/content/BlockquoteTestimonial.d.ts +1 -1
- package/dist/src/components/content/BlockquoteTestimonial.d.ts.map +1 -1
- package/dist/src/components/content/CalloutBox.d.ts +4 -3
- package/dist/src/components/content/CalloutBox.d.ts.map +1 -1
- package/dist/src/components/content/HeadingSection.d.ts +2 -2
- package/dist/src/components/content/HeadingSection.d.ts.map +1 -1
- package/dist/src/components/content/InlineCodeText.d.ts +4 -3
- package/dist/src/components/content/InlineCodeText.d.ts.map +1 -1
- package/dist/src/components/content/ParagraphBlock.d.ts +5 -4
- package/dist/src/components/content/ParagraphBlock.d.ts.map +1 -1
- package/dist/src/components/content/RichMarkdown.d.ts +4 -3
- package/dist/src/components/content/RichMarkdown.d.ts.map +1 -1
- package/dist/src/components/content/TeamGrid.d.ts.map +1 -1
- package/dist/src/components/content/index.d.ts +7 -7
- package/dist/src/components/content/index.d.ts.map +1 -1
- package/dist/src/components/data-display/Badge.d.ts +5 -4
- package/dist/src/components/data-display/Badge.d.ts.map +1 -1
- package/dist/src/components/data-display/BadgeGroup.d.ts +4 -3
- package/dist/src/components/data-display/BadgeGroup.d.ts.map +1 -1
- package/dist/src/components/data-display/BarChart.d.ts.map +1 -1
- package/dist/src/components/data-display/CalendarGrid.d.ts +1 -1
- package/dist/src/components/data-display/CalendarGrid.d.ts.map +1 -1
- package/dist/src/components/data-display/DataTable.d.ts +3 -3
- package/dist/src/components/data-display/DataTable.d.ts.map +1 -1
- package/dist/src/components/data-display/LineChart.d.ts.map +1 -1
- package/dist/src/components/data-display/PieChart.d.ts +1 -1
- package/dist/src/components/data-display/PieChart.d.ts.map +1 -1
- package/dist/src/components/data-display/ProgressBar.d.ts.map +1 -1
- package/dist/src/components/data-display/RatingStars.d.ts.map +1 -1
- package/dist/src/components/data-display/Sparkline.d.ts.map +1 -1
- package/dist/src/components/data-display/Timeline.d.ts +1 -1
- package/dist/src/components/data-display/Timeline.d.ts.map +1 -1
- package/dist/src/components/data-display/index.d.ts +11 -11
- package/dist/src/components/data-display/index.d.ts.map +1 -1
- package/dist/src/components/ecommerce/index.d.ts +8 -8
- package/dist/src/components/ecommerce/index.d.ts.map +1 -1
- package/dist/src/components/forms/AddressAutocomplete.d.ts +1 -1
- package/dist/src/components/forms/AddressAutocomplete.d.ts.map +1 -1
- package/dist/src/components/forms/Captcha.d.ts +2 -2
- package/dist/src/components/forms/Captcha.d.ts.map +1 -1
- package/dist/src/components/forms/ContactForm.d.ts +1 -1
- package/dist/src/components/forms/ContactForm.d.ts.map +1 -1
- package/dist/src/components/forms/DateTimePicker.d.ts +2 -2
- package/dist/src/components/forms/DateTimePicker.d.ts.map +1 -1
- package/dist/src/components/forms/FileUploader.d.ts +1 -1
- package/dist/src/components/forms/FileUploader.d.ts.map +1 -1
- package/dist/src/components/forms/FormShell.d.ts +1 -1
- package/dist/src/components/forms/FormShell.d.ts.map +1 -1
- package/dist/src/components/forms/InputField.d.ts +1 -1
- package/dist/src/components/forms/InputField.d.ts.map +1 -1
- package/dist/src/components/forms/MultiStepWizard.d.ts +1 -1
- package/dist/src/components/forms/MultiStepWizard.d.ts.map +1 -1
- package/dist/src/components/forms/NewsletterSignup.d.ts +1 -1
- package/dist/src/components/forms/NewsletterSignup.d.ts.map +1 -1
- package/dist/src/components/forms/RadioGroup.d.ts +1 -1
- package/dist/src/components/forms/RadioGroup.d.ts.map +1 -1
- package/dist/src/components/forms/SelectDropdown.d.ts +1 -1
- package/dist/src/components/forms/SelectDropdown.d.ts.map +1 -1
- package/dist/src/components/forms/TextAreaField.d.ts +1 -1
- package/dist/src/components/forms/TextAreaField.d.ts.map +1 -1
- package/dist/src/components/forms/ToggleSwitch.d.ts +1 -1
- package/dist/src/components/forms/ToggleSwitch.d.ts.map +1 -1
- package/dist/src/components/forms/ValidationWrapper.d.ts +1 -1
- package/dist/src/components/forms/ValidationWrapper.d.ts.map +1 -1
- package/dist/src/components/forms/index.d.ts +28 -28
- package/dist/src/components/forms/index.d.ts.map +1 -1
- package/dist/src/components/hero/CTAOverlayHero.d.ts +1 -1
- package/dist/src/components/hero/CTAOverlayHero.d.ts.map +1 -1
- package/dist/src/components/hero/CarouselHero.d.ts +1 -1
- package/dist/src/components/hero/CarouselHero.d.ts.map +1 -1
- package/dist/src/components/hero/HeroShell.d.ts +1 -1
- package/dist/src/components/hero/HeroShell.d.ts.map +1 -1
- package/dist/src/components/hero/PatternedHero.d.ts +2 -2
- package/dist/src/components/hero/PatternedHero.d.ts.map +1 -1
- package/dist/src/components/hero/SplitHero.d.ts +1 -1
- package/dist/src/components/hero/SplitHero.d.ts.map +1 -1
- package/dist/src/components/hero/StaticHero.d.ts +2 -2
- package/dist/src/components/hero/StaticHero.d.ts.map +1 -1
- package/dist/src/components/hero/VideoHeaderHero.d.ts +1 -1
- package/dist/src/components/hero/VideoHeaderHero.d.ts.map +1 -1
- package/dist/src/components/hero/index.d.ts +14 -14
- package/dist/src/components/hero/index.d.ts.map +1 -1
- package/dist/src/components/lists-cards/index.d.ts +7 -7
- package/dist/src/components/lists-cards/index.d.ts.map +1 -1
- package/dist/src/components/marketing/index.d.ts +5 -5
- package/dist/src/components/marketing/index.d.ts.map +1 -1
- package/dist/src/components/media/index.d.ts +7 -7
- package/dist/src/components/media/index.d.ts.map +1 -1
- package/dist/src/components/miscellaneous/index.d.ts +4 -4
- package/dist/src/components/miscellaneous/index.d.ts.map +1 -1
- package/dist/src/components/modals/index.d.ts +5 -5
- package/dist/src/components/modals/index.d.ts.map +1 -1
- package/dist/src/components/navigation/AnchorLinks.d.ts +2 -2
- package/dist/src/components/navigation/AnchorLinks.d.ts.map +1 -1
- package/dist/src/components/navigation/Breadcrumbs.d.ts +1 -1
- package/dist/src/components/navigation/Breadcrumbs.d.ts.map +1 -1
- package/dist/src/components/navigation/Footer.d.ts +1 -1
- package/dist/src/components/navigation/Footer.d.ts.map +1 -1
- package/dist/src/components/navigation/LanguageSelector.d.ts +1 -1
- package/dist/src/components/navigation/LanguageSelector.d.ts.map +1 -1
- package/dist/src/components/navigation/MegaMenu.d.ts +1 -1
- package/dist/src/components/navigation/MegaMenu.d.ts.map +1 -1
- package/dist/src/components/navigation/Pagination.d.ts.map +1 -1
- package/dist/src/components/navigation/PrimaryNav.d.ts.map +1 -1
- package/dist/src/components/navigation/SideDrawerNav.d.ts +2 -2
- package/dist/src/components/navigation/SideDrawerNav.d.ts.map +1 -1
- package/dist/src/components/navigation/SidebarMenu.d.ts +1 -1
- package/dist/src/components/navigation/SidebarMenu.d.ts.map +1 -1
- package/dist/src/components/navigation/Stepper.d.ts +1 -1
- package/dist/src/components/navigation/Stepper.d.ts.map +1 -1
- package/dist/src/components/navigation/Tabs.d.ts +2 -2
- package/dist/src/components/navigation/Tabs.d.ts.map +1 -1
- package/dist/src/components/navigation/index.d.ts +22 -22
- package/dist/src/components/navigation/index.d.ts.map +1 -1
- package/dist/src/components/onboarding/index.d.ts +7 -7
- package/dist/src/components/onboarding/index.d.ts.map +1 -1
- package/dist/src/components/search/index.d.ts +3 -3
- package/dist/src/components/search/index.d.ts.map +1 -1
- package/dist/src/components/site-identity/index.d.ts +5 -5
- package/dist/src/components/site-identity/index.d.ts.map +1 -1
- package/dist/src/components/social/index.d.ts +7 -7
- package/dist/src/components/social/index.d.ts.map +1 -1
- package/dist/src/components/user-accounts/index.d.ts +6 -6
- package/dist/src/components/user-accounts/index.d.ts.map +1 -1
- package/dist/src/core/config.d.ts +1 -1
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/icons.d.ts +1 -1
- package/dist/src/core/icons.d.ts.map +1 -1
- package/dist/src/core/index.d.ts +7 -7
- package/dist/src/core/index.d.ts.map +1 -1
- package/dist/src/core/provider.d.ts +20 -20
- package/dist/src/core/provider.d.ts.map +1 -1
- package/dist/src/core/types.d.ts +4 -4
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/core/utils.d.ts.map +1 -1
- package/dist/src/index.d.ts +19 -19
- package/dist/src/index.d.ts.map +1 -1
- package/metadata/blog.json +807 -0
- package/metadata/buttons.json +2186 -0
- package/metadata/content.json +1152 -0
- package/metadata/data-display.json +822 -0
- package/metadata/ecommerce.json +1059 -0
- package/metadata/forms.json +2637 -0
- package/metadata/hero.json +1401 -0
- package/metadata/lists-cards.json +848 -0
- package/metadata/marketing.json +1235 -0
- package/metadata/media.json +800 -0
- package/metadata/miscellaneous.json +778 -0
- package/metadata/modals.json +954 -0
- package/metadata/navigation.json +1348 -0
- package/metadata/onboarding.json +615 -0
- package/metadata/search.json +559 -0
- package/metadata/site-identity.json +555 -0
- package/metadata/social.json +654 -0
- package/metadata/user-accounts.json +727 -0
- package/package.json +18 -6
- package/dist/README.md +0 -35
- package/dist/src/__tests__/test-utils.d.ts +0 -8
- package/dist/src/__tests__/test-utils.d.ts.map +0 -1
|
@@ -0,0 +1,800 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "electroplix-component-metadata-v1",
|
|
3
|
+
"category": "media",
|
|
4
|
+
"label": "Media",
|
|
5
|
+
"description": "Components for images, video, audio, avatars, galleries, icons, and file uploads",
|
|
6
|
+
"themeKey": "media",
|
|
7
|
+
"icon": "image",
|
|
8
|
+
"sortOrder": 10,
|
|
9
|
+
"components": [
|
|
10
|
+
{
|
|
11
|
+
"id": "media.MediaShell",
|
|
12
|
+
"name": "MediaShell",
|
|
13
|
+
"description": "Container shell for media content. Provides consistent padding, background, and border-radius for any nested media component.",
|
|
14
|
+
"whenToUse": "Use as a wrapper around media components to ensure consistent spacing, background color, and border radius across different page layouts.",
|
|
15
|
+
"isShell": true,
|
|
16
|
+
"props": [
|
|
17
|
+
{
|
|
18
|
+
"name": "bgColor",
|
|
19
|
+
"type": "string",
|
|
20
|
+
"required": false,
|
|
21
|
+
"default": "theme",
|
|
22
|
+
"description": "Background color override"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "maxW",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": false,
|
|
28
|
+
"default": "900",
|
|
29
|
+
"description": "Maximum width of the shell in pixels"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "px",
|
|
33
|
+
"type": "number",
|
|
34
|
+
"required": false,
|
|
35
|
+
"default": "24",
|
|
36
|
+
"description": "Horizontal padding in pixels"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "py",
|
|
40
|
+
"type": "number",
|
|
41
|
+
"required": false,
|
|
42
|
+
"default": "24",
|
|
43
|
+
"description": "Vertical padding in pixels"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "radius",
|
|
47
|
+
"type": "number",
|
|
48
|
+
"required": false,
|
|
49
|
+
"default": "theme",
|
|
50
|
+
"description": "Border radius"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "style",
|
|
54
|
+
"type": "CSSProperties",
|
|
55
|
+
"required": false,
|
|
56
|
+
"default": null,
|
|
57
|
+
"description": "Custom inline styles"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "children",
|
|
61
|
+
"type": "ReactNode",
|
|
62
|
+
"required": false,
|
|
63
|
+
"default": null,
|
|
64
|
+
"description": "Child media components to render inside the shell"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"themeTokens": [
|
|
68
|
+
"bgColor",
|
|
69
|
+
"textColor",
|
|
70
|
+
"accentColor",
|
|
71
|
+
"borderColor",
|
|
72
|
+
"fontFamily",
|
|
73
|
+
"radius",
|
|
74
|
+
"spacing"
|
|
75
|
+
],
|
|
76
|
+
"aiHints": {
|
|
77
|
+
"pageTypes": [
|
|
78
|
+
"landing",
|
|
79
|
+
"marketing",
|
|
80
|
+
"dashboard",
|
|
81
|
+
"blog",
|
|
82
|
+
"ecommerce",
|
|
83
|
+
"portfolio",
|
|
84
|
+
"saas"
|
|
85
|
+
],
|
|
86
|
+
"placement": "body",
|
|
87
|
+
"priority": 3,
|
|
88
|
+
"sequenceOrder": 4,
|
|
89
|
+
"pairsWellWith": [
|
|
90
|
+
"media.ResponsiveVideo",
|
|
91
|
+
"media.ImageGallery",
|
|
92
|
+
"media.LightboxGallery",
|
|
93
|
+
"media.MasonryGrid"
|
|
94
|
+
],
|
|
95
|
+
"maxPerPage": 5,
|
|
96
|
+
"isContainer": true
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"id": "media.ResponsiveVideo",
|
|
101
|
+
"name": "ResponsiveVideo",
|
|
102
|
+
"description": "Responsive video player that maintains aspect ratio and adapts to container width. Supports autoplay, loop, and poster images.",
|
|
103
|
+
"whenToUse": "Use to embed video content on landing pages, marketing pages, portfolio showcases, or blog posts. Ideal for hero videos, product demos, and media-rich content.",
|
|
104
|
+
"isShell": false,
|
|
105
|
+
"props": [
|
|
106
|
+
{
|
|
107
|
+
"name": "src",
|
|
108
|
+
"type": "string",
|
|
109
|
+
"required": true,
|
|
110
|
+
"default": null,
|
|
111
|
+
"description": "Video source URL"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": "poster",
|
|
115
|
+
"type": "string",
|
|
116
|
+
"required": false,
|
|
117
|
+
"default": null,
|
|
118
|
+
"description": "Poster image URL shown before playback"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "aspectRatio",
|
|
122
|
+
"type": "string",
|
|
123
|
+
"required": false,
|
|
124
|
+
"default": "\"16/9\"",
|
|
125
|
+
"description": "Aspect ratio of the video container"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "autoPlay",
|
|
129
|
+
"type": "boolean",
|
|
130
|
+
"required": false,
|
|
131
|
+
"default": "false",
|
|
132
|
+
"description": "Whether the video autoplays on load"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "muted",
|
|
136
|
+
"type": "boolean",
|
|
137
|
+
"required": false,
|
|
138
|
+
"default": "true",
|
|
139
|
+
"description": "Whether the video is muted by default"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "loop",
|
|
143
|
+
"type": "boolean",
|
|
144
|
+
"required": false,
|
|
145
|
+
"default": "false",
|
|
146
|
+
"description": "Whether the video loops continuously"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "controls",
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"required": false,
|
|
152
|
+
"default": "true",
|
|
153
|
+
"description": "Whether to show playback controls"
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"themeTokens": [
|
|
157
|
+
"bgColor",
|
|
158
|
+
"textColor",
|
|
159
|
+
"accentColor",
|
|
160
|
+
"borderColor",
|
|
161
|
+
"fontFamily",
|
|
162
|
+
"radius",
|
|
163
|
+
"spacing"
|
|
164
|
+
],
|
|
165
|
+
"aiHints": {
|
|
166
|
+
"pageTypes": [
|
|
167
|
+
"landing",
|
|
168
|
+
"marketing",
|
|
169
|
+
"portfolio",
|
|
170
|
+
"blog",
|
|
171
|
+
"restaurant",
|
|
172
|
+
"event",
|
|
173
|
+
"fitness",
|
|
174
|
+
"education"
|
|
175
|
+
],
|
|
176
|
+
"placement": "body",
|
|
177
|
+
"priority": 7,
|
|
178
|
+
"sequenceOrder": 5,
|
|
179
|
+
"pairsWellWith": ["media.MediaShell", "content.HeadingSection", "hero.VideoHeaderHero"],
|
|
180
|
+
"maxPerPage": 3,
|
|
181
|
+
"isContainer": false
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "media.AudioEmbed",
|
|
186
|
+
"name": "AudioEmbed",
|
|
187
|
+
"description": "Audio player embed with optional title and waveform visualization. Supports standard audio formats.",
|
|
188
|
+
"whenToUse": "Use to embed audio content such as podcast episodes, music tracks, or audio samples on blog posts, portfolio pages, or dedicated podcast pages.",
|
|
189
|
+
"isShell": false,
|
|
190
|
+
"props": [
|
|
191
|
+
{
|
|
192
|
+
"name": "src",
|
|
193
|
+
"type": "string",
|
|
194
|
+
"required": true,
|
|
195
|
+
"default": null,
|
|
196
|
+
"description": "Audio source URL"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"name": "title",
|
|
200
|
+
"type": "string",
|
|
201
|
+
"required": false,
|
|
202
|
+
"default": null,
|
|
203
|
+
"description": "Title displayed above the audio player"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"name": "showWaveform",
|
|
207
|
+
"type": "boolean",
|
|
208
|
+
"required": false,
|
|
209
|
+
"default": null,
|
|
210
|
+
"description": "Whether to display an audio waveform visualization"
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"themeTokens": [
|
|
214
|
+
"bgColor",
|
|
215
|
+
"textColor",
|
|
216
|
+
"accentColor",
|
|
217
|
+
"borderColor",
|
|
218
|
+
"fontFamily",
|
|
219
|
+
"radius",
|
|
220
|
+
"spacing"
|
|
221
|
+
],
|
|
222
|
+
"aiHints": {
|
|
223
|
+
"pageTypes": ["blog", "portfolio", "podcast"],
|
|
224
|
+
"placement": "body",
|
|
225
|
+
"priority": 5,
|
|
226
|
+
"sequenceOrder": 5,
|
|
227
|
+
"pairsWellWith": ["media.MediaShell", "content.HeadingSection", "content.RichMarkdown"],
|
|
228
|
+
"maxPerPage": 5,
|
|
229
|
+
"isContainer": false
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
"id": "media.AvatarProfile",
|
|
234
|
+
"name": "AvatarProfile",
|
|
235
|
+
"description": "Circular avatar image with initials fallback and optional status badge. Automatically derives initials from the name when no image is provided.",
|
|
236
|
+
"whenToUse": "Use anywhere a user or profile avatar is needed — team sections, testimonials, comment threads, user profiles, and dashboard headers.",
|
|
237
|
+
"isShell": false,
|
|
238
|
+
"props": [
|
|
239
|
+
{
|
|
240
|
+
"name": "src",
|
|
241
|
+
"type": "string",
|
|
242
|
+
"required": false,
|
|
243
|
+
"default": null,
|
|
244
|
+
"description": "Avatar image source URL"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"name": "name",
|
|
248
|
+
"type": "string",
|
|
249
|
+
"required": true,
|
|
250
|
+
"default": null,
|
|
251
|
+
"description": "Full name used for alt text and initials fallback"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "initials",
|
|
255
|
+
"type": "string",
|
|
256
|
+
"required": false,
|
|
257
|
+
"default": "auto-derived",
|
|
258
|
+
"description": "Custom initials override; auto-derived from name if not provided"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"name": "size",
|
|
262
|
+
"type": "number",
|
|
263
|
+
"required": false,
|
|
264
|
+
"default": "48",
|
|
265
|
+
"description": "Avatar diameter in pixels"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "badge",
|
|
269
|
+
"type": "string",
|
|
270
|
+
"required": false,
|
|
271
|
+
"default": null,
|
|
272
|
+
"description": "Status badge text or indicator (e.g., 'online', 'away')"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"name": "borderColor",
|
|
276
|
+
"type": "string",
|
|
277
|
+
"required": false,
|
|
278
|
+
"default": "theme accent",
|
|
279
|
+
"description": "Border color around the avatar, defaults to theme accent"
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"themeTokens": [
|
|
283
|
+
"bgColor",
|
|
284
|
+
"textColor",
|
|
285
|
+
"accentColor",
|
|
286
|
+
"borderColor",
|
|
287
|
+
"fontFamily",
|
|
288
|
+
"radius",
|
|
289
|
+
"spacing"
|
|
290
|
+
],
|
|
291
|
+
"aiHints": {
|
|
292
|
+
"pageTypes": [
|
|
293
|
+
"landing",
|
|
294
|
+
"marketing",
|
|
295
|
+
"dashboard",
|
|
296
|
+
"blog",
|
|
297
|
+
"ecommerce",
|
|
298
|
+
"portfolio",
|
|
299
|
+
"saas",
|
|
300
|
+
"agency",
|
|
301
|
+
"education",
|
|
302
|
+
"fitness",
|
|
303
|
+
"restaurant",
|
|
304
|
+
"event",
|
|
305
|
+
"community"
|
|
306
|
+
],
|
|
307
|
+
"placement": "body",
|
|
308
|
+
"priority": 5,
|
|
309
|
+
"sequenceOrder": 5,
|
|
310
|
+
"pairsWellWith": [
|
|
311
|
+
"content.BlockquoteTestimonial",
|
|
312
|
+
"listsCards.ItemCardGrid",
|
|
313
|
+
"media.MediaShell"
|
|
314
|
+
],
|
|
315
|
+
"maxPerPage": 20,
|
|
316
|
+
"isContainer": false
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "media.IconGrid",
|
|
321
|
+
"name": "IconGrid",
|
|
322
|
+
"description": "Grid display of icons with optional labels. Renders a responsive grid of icon items for feature highlights, technology stacks, or partner logos.",
|
|
323
|
+
"whenToUse": "Use on landing pages to showcase features with icons, display technology stacks, or list partner/client logos in a clean grid layout.",
|
|
324
|
+
"isShell": false,
|
|
325
|
+
"props": [
|
|
326
|
+
{
|
|
327
|
+
"name": "icons",
|
|
328
|
+
"type": "IconGridItem[]",
|
|
329
|
+
"required": true,
|
|
330
|
+
"default": null,
|
|
331
|
+
"description": "Array of icon items: {name, label?}"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "columns",
|
|
335
|
+
"type": "number",
|
|
336
|
+
"required": false,
|
|
337
|
+
"default": "6",
|
|
338
|
+
"description": "Number of grid columns"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"name": "iconSize",
|
|
342
|
+
"type": "number",
|
|
343
|
+
"required": false,
|
|
344
|
+
"default": "24",
|
|
345
|
+
"description": "Size of each icon in pixels"
|
|
346
|
+
}
|
|
347
|
+
],
|
|
348
|
+
"themeTokens": [
|
|
349
|
+
"bgColor",
|
|
350
|
+
"textColor",
|
|
351
|
+
"accentColor",
|
|
352
|
+
"borderColor",
|
|
353
|
+
"fontFamily",
|
|
354
|
+
"radius",
|
|
355
|
+
"spacing"
|
|
356
|
+
],
|
|
357
|
+
"aiHints": {
|
|
358
|
+
"pageTypes": ["landing", "marketing", "documentation"],
|
|
359
|
+
"placement": "body",
|
|
360
|
+
"priority": 4,
|
|
361
|
+
"sequenceOrder": 5,
|
|
362
|
+
"pairsWellWith": ["content.HeadingSection", "media.MediaShell", "listsCards.FeatureGrid"],
|
|
363
|
+
"maxPerPage": 3,
|
|
364
|
+
"isContainer": false
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"id": "media.ImageGallery",
|
|
369
|
+
"name": "ImageGallery",
|
|
370
|
+
"description": "Grid image gallery with selection support. Displays images in a responsive grid with optional captions and click-to-select functionality.",
|
|
371
|
+
"whenToUse": "Use on portfolio pages to showcase work, ecommerce product image grids, or blog posts with multiple images. Supports selection callbacks for interactive galleries.",
|
|
372
|
+
"isShell": false,
|
|
373
|
+
"props": [
|
|
374
|
+
{
|
|
375
|
+
"name": "items",
|
|
376
|
+
"type": "GalleryItem[]",
|
|
377
|
+
"required": true,
|
|
378
|
+
"default": null,
|
|
379
|
+
"description": "Array of gallery items: {id, src, alt?, caption?, width?, height?}"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "columns",
|
|
383
|
+
"type": "number",
|
|
384
|
+
"required": false,
|
|
385
|
+
"default": "3",
|
|
386
|
+
"description": "Number of grid columns"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"name": "gap",
|
|
390
|
+
"type": "number",
|
|
391
|
+
"required": false,
|
|
392
|
+
"default": "8",
|
|
393
|
+
"description": "Gap between gallery items in pixels"
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
"name": "onSelect",
|
|
397
|
+
"type": "(item: GalleryItem) => void",
|
|
398
|
+
"required": false,
|
|
399
|
+
"default": null,
|
|
400
|
+
"description": "Callback fired when a gallery item is selected"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"themeTokens": [
|
|
404
|
+
"bgColor",
|
|
405
|
+
"textColor",
|
|
406
|
+
"accentColor",
|
|
407
|
+
"borderColor",
|
|
408
|
+
"fontFamily",
|
|
409
|
+
"radius",
|
|
410
|
+
"spacing"
|
|
411
|
+
],
|
|
412
|
+
"aiHints": {
|
|
413
|
+
"pageTypes": [
|
|
414
|
+
"portfolio",
|
|
415
|
+
"ecommerce",
|
|
416
|
+
"blog",
|
|
417
|
+
"restaurant",
|
|
418
|
+
"fitness",
|
|
419
|
+
"realestate",
|
|
420
|
+
"event",
|
|
421
|
+
"community",
|
|
422
|
+
"education"
|
|
423
|
+
],
|
|
424
|
+
"placement": "body",
|
|
425
|
+
"priority": 7,
|
|
426
|
+
"sequenceOrder": 5,
|
|
427
|
+
"pairsWellWith": ["media.MediaShell", "media.LightboxGallery", "content.HeadingSection"],
|
|
428
|
+
"maxPerPage": 3,
|
|
429
|
+
"isContainer": false
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"id": "media.LightboxGallery",
|
|
434
|
+
"name": "LightboxGallery",
|
|
435
|
+
"description": "Gallery with fullscreen lightbox overlay. Clicking an image opens it in a modal overlay with navigation between images.",
|
|
436
|
+
"whenToUse": "Use on portfolio pages or ecommerce product pages where users need to view images at full size. Provides a polished fullscreen viewing experience with next/prev navigation.",
|
|
437
|
+
"isShell": false,
|
|
438
|
+
"props": [
|
|
439
|
+
{
|
|
440
|
+
"name": "items",
|
|
441
|
+
"type": "GalleryItem[]",
|
|
442
|
+
"required": true,
|
|
443
|
+
"default": null,
|
|
444
|
+
"description": "Array of gallery items: {id, src, alt?, caption?, width?, height?}"
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
"name": "columns",
|
|
448
|
+
"type": "number",
|
|
449
|
+
"required": false,
|
|
450
|
+
"default": "3",
|
|
451
|
+
"description": "Number of grid columns in the thumbnail view"
|
|
452
|
+
}
|
|
453
|
+
],
|
|
454
|
+
"themeTokens": [
|
|
455
|
+
"bgColor",
|
|
456
|
+
"textColor",
|
|
457
|
+
"accentColor",
|
|
458
|
+
"borderColor",
|
|
459
|
+
"fontFamily",
|
|
460
|
+
"radius",
|
|
461
|
+
"spacing"
|
|
462
|
+
],
|
|
463
|
+
"aiHints": {
|
|
464
|
+
"pageTypes": ["portfolio", "ecommerce", "restaurant", "realestate", "event", "fitness"],
|
|
465
|
+
"placement": "body",
|
|
466
|
+
"priority": 7,
|
|
467
|
+
"sequenceOrder": 5,
|
|
468
|
+
"pairsWellWith": ["media.MediaShell", "media.ImageGallery", "content.HeadingSection"],
|
|
469
|
+
"maxPerPage": 2,
|
|
470
|
+
"isContainer": false
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"id": "media.MasonryGrid",
|
|
475
|
+
"name": "MasonryGrid",
|
|
476
|
+
"description": "Masonry-layout image grid that arranges items in an optimized variable-height layout. Images flow naturally based on their aspect ratios.",
|
|
477
|
+
"whenToUse": "Use on portfolio pages or blog photo posts where images have varying aspect ratios. Creates a visually dynamic, Pinterest-style layout.",
|
|
478
|
+
"isShell": false,
|
|
479
|
+
"props": [
|
|
480
|
+
{
|
|
481
|
+
"name": "items",
|
|
482
|
+
"type": "GalleryItem[]",
|
|
483
|
+
"required": true,
|
|
484
|
+
"default": null,
|
|
485
|
+
"description": "Array of gallery items: {id, src, alt?, caption?, width?, height?}"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"name": "columns",
|
|
489
|
+
"type": "number",
|
|
490
|
+
"required": false,
|
|
491
|
+
"default": "3",
|
|
492
|
+
"description": "Number of masonry columns"
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "gap",
|
|
496
|
+
"type": "number",
|
|
497
|
+
"required": false,
|
|
498
|
+
"default": "8",
|
|
499
|
+
"description": "Gap between items in pixels"
|
|
500
|
+
}
|
|
501
|
+
],
|
|
502
|
+
"themeTokens": [
|
|
503
|
+
"bgColor",
|
|
504
|
+
"textColor",
|
|
505
|
+
"accentColor",
|
|
506
|
+
"borderColor",
|
|
507
|
+
"fontFamily",
|
|
508
|
+
"radius",
|
|
509
|
+
"spacing"
|
|
510
|
+
],
|
|
511
|
+
"aiHints": {
|
|
512
|
+
"pageTypes": [
|
|
513
|
+
"portfolio",
|
|
514
|
+
"blog",
|
|
515
|
+
"ecommerce",
|
|
516
|
+
"gallery",
|
|
517
|
+
"restaurant",
|
|
518
|
+
"event",
|
|
519
|
+
"realestate"
|
|
520
|
+
],
|
|
521
|
+
"placement": "body",
|
|
522
|
+
"priority": 6,
|
|
523
|
+
"sequenceOrder": 5,
|
|
524
|
+
"pairsWellWith": ["media.MediaShell", "media.LightboxGallery", "content.HeadingSection"],
|
|
525
|
+
"maxPerPage": 2,
|
|
526
|
+
"isContainer": false
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"id": "media.PolaroidImage",
|
|
531
|
+
"name": "PolaroidImage",
|
|
532
|
+
"description": "Polaroid-style image frame with optional caption and rotation. Renders an image inside a white border frame with a drop shadow, mimicking a physical polaroid photo.",
|
|
533
|
+
"whenToUse": "Use on portfolio, blog, or about pages for a playful, retro-styled image presentation. Great for personal sites, team pages, or creative showcases.",
|
|
534
|
+
"isShell": false,
|
|
535
|
+
"props": [
|
|
536
|
+
{
|
|
537
|
+
"name": "src",
|
|
538
|
+
"type": "string",
|
|
539
|
+
"required": true,
|
|
540
|
+
"default": null,
|
|
541
|
+
"description": "Image source URL"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"name": "caption",
|
|
545
|
+
"type": "string",
|
|
546
|
+
"required": false,
|
|
547
|
+
"default": null,
|
|
548
|
+
"description": "Caption text displayed below the image"
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"name": "rotation",
|
|
552
|
+
"type": "number",
|
|
553
|
+
"required": false,
|
|
554
|
+
"default": "0",
|
|
555
|
+
"description": "Rotation angle in degrees"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"name": "width",
|
|
559
|
+
"type": "number",
|
|
560
|
+
"required": false,
|
|
561
|
+
"default": "260",
|
|
562
|
+
"description": "Width of the polaroid frame in pixels"
|
|
563
|
+
}
|
|
564
|
+
],
|
|
565
|
+
"themeTokens": [
|
|
566
|
+
"bgColor",
|
|
567
|
+
"textColor",
|
|
568
|
+
"accentColor",
|
|
569
|
+
"borderColor",
|
|
570
|
+
"fontFamily",
|
|
571
|
+
"radius",
|
|
572
|
+
"spacing"
|
|
573
|
+
],
|
|
574
|
+
"aiHints": {
|
|
575
|
+
"pageTypes": ["portfolio", "blog", "about"],
|
|
576
|
+
"placement": "body",
|
|
577
|
+
"priority": 4,
|
|
578
|
+
"sequenceOrder": 5,
|
|
579
|
+
"pairsWellWith": ["media.MediaShell", "content.HeadingSection", "media.ImageGallery"],
|
|
580
|
+
"maxPerPage": 6,
|
|
581
|
+
"isContainer": false
|
|
582
|
+
}
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"id": "media.LottieOrSVG",
|
|
586
|
+
"name": "LottieOrSVG",
|
|
587
|
+
"description": "Render an SVG illustration or a Lottie JSON animation. Supports both static vector graphics and animated Lottie files with configurable dimensions.",
|
|
588
|
+
"whenToUse": "Use on landing pages, marketing pages, or about pages to add visual interest with animated illustrations or crisp SVG graphics. Ideal for feature sections and empty states.",
|
|
589
|
+
"isShell": false,
|
|
590
|
+
"props": [
|
|
591
|
+
{
|
|
592
|
+
"name": "type",
|
|
593
|
+
"type": "\"svg\" | \"lottie\"",
|
|
594
|
+
"required": true,
|
|
595
|
+
"default": null,
|
|
596
|
+
"description": "Whether to render an SVG or a Lottie animation"
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"name": "src",
|
|
600
|
+
"type": "string",
|
|
601
|
+
"required": true,
|
|
602
|
+
"default": null,
|
|
603
|
+
"description": "Source URL for the SVG or Lottie JSON file"
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"name": "width",
|
|
607
|
+
"type": "number",
|
|
608
|
+
"required": false,
|
|
609
|
+
"default": "200",
|
|
610
|
+
"description": "Width of the rendered media in pixels"
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"name": "height",
|
|
614
|
+
"type": "number",
|
|
615
|
+
"required": false,
|
|
616
|
+
"default": "200",
|
|
617
|
+
"description": "Height of the rendered media in pixels"
|
|
618
|
+
},
|
|
619
|
+
{
|
|
620
|
+
"name": "alt",
|
|
621
|
+
"type": "string",
|
|
622
|
+
"required": false,
|
|
623
|
+
"default": null,
|
|
624
|
+
"description": "Accessible alt text for the media"
|
|
625
|
+
}
|
|
626
|
+
],
|
|
627
|
+
"themeTokens": [
|
|
628
|
+
"bgColor",
|
|
629
|
+
"textColor",
|
|
630
|
+
"accentColor",
|
|
631
|
+
"borderColor",
|
|
632
|
+
"fontFamily",
|
|
633
|
+
"radius",
|
|
634
|
+
"spacing"
|
|
635
|
+
],
|
|
636
|
+
"aiHints": {
|
|
637
|
+
"pageTypes": ["landing", "marketing", "about"],
|
|
638
|
+
"placement": "body",
|
|
639
|
+
"priority": 5,
|
|
640
|
+
"sequenceOrder": 5,
|
|
641
|
+
"pairsWellWith": ["media.MediaShell", "content.HeadingSection", "hero.StaticHero"],
|
|
642
|
+
"maxPerPage": 5,
|
|
643
|
+
"isContainer": false
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"id": "media.ImageCropperUploader",
|
|
648
|
+
"name": "ImageCropperUploader",
|
|
649
|
+
"description": "Image upload widget with built-in crop functionality. Allows users to select an image file, crop it interactively, and upload the result.",
|
|
650
|
+
"whenToUse": "Use in settings pages, profile edit forms, or any form where users need to upload and crop an image. Ideal for avatar uploads, cover photo editors, and content management.",
|
|
651
|
+
"isShell": false,
|
|
652
|
+
"props": [
|
|
653
|
+
{
|
|
654
|
+
"name": "onUpload",
|
|
655
|
+
"type": "(file: File) => void",
|
|
656
|
+
"required": false,
|
|
657
|
+
"default": null,
|
|
658
|
+
"description": "Callback fired with the cropped file when upload is confirmed"
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"name": "accept",
|
|
662
|
+
"type": "string",
|
|
663
|
+
"required": false,
|
|
664
|
+
"default": "\"image/*\"",
|
|
665
|
+
"description": "Accepted file types for the file input"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"name": "maxSizeMB",
|
|
669
|
+
"type": "number",
|
|
670
|
+
"required": false,
|
|
671
|
+
"default": "5",
|
|
672
|
+
"description": "Maximum allowed file size in megabytes"
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"name": "label",
|
|
676
|
+
"type": "string",
|
|
677
|
+
"required": false,
|
|
678
|
+
"default": "\"Upload Image\"",
|
|
679
|
+
"description": "Label text for the upload button"
|
|
680
|
+
}
|
|
681
|
+
],
|
|
682
|
+
"themeTokens": [
|
|
683
|
+
"bgColor",
|
|
684
|
+
"textColor",
|
|
685
|
+
"accentColor",
|
|
686
|
+
"borderColor",
|
|
687
|
+
"fontFamily",
|
|
688
|
+
"radius",
|
|
689
|
+
"spacing"
|
|
690
|
+
],
|
|
691
|
+
"aiHints": {
|
|
692
|
+
"pageTypes": ["settings", "profile", "forms"],
|
|
693
|
+
"placement": "body",
|
|
694
|
+
"priority": 4,
|
|
695
|
+
"sequenceOrder": 6,
|
|
696
|
+
"pairsWellWith": ["forms.FormShell", "media.AvatarProfile", "media.MediaShell"],
|
|
697
|
+
"maxPerPage": 2,
|
|
698
|
+
"isContainer": false
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
{
|
|
702
|
+
"id": "media.MapEmbed",
|
|
703
|
+
"name": "MapEmbed",
|
|
704
|
+
"description": "Embedded map display supporting Google Maps and OpenStreetMap providers. Renders a responsive iframe with configurable coordinates, address, and zoom level.",
|
|
705
|
+
"whenToUse": "Use on contact pages, restaurant locations, real estate listings, event venues, business directories, or any page that needs to display a physical location.",
|
|
706
|
+
"isShell": false,
|
|
707
|
+
"props": [
|
|
708
|
+
{
|
|
709
|
+
"name": "address",
|
|
710
|
+
"type": "string",
|
|
711
|
+
"required": false,
|
|
712
|
+
"default": null,
|
|
713
|
+
"description": "Physical address string for the map marker"
|
|
714
|
+
},
|
|
715
|
+
{
|
|
716
|
+
"name": "lat",
|
|
717
|
+
"type": "number",
|
|
718
|
+
"required": false,
|
|
719
|
+
"default": null,
|
|
720
|
+
"description": "Latitude coordinate for the map center"
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"name": "lng",
|
|
724
|
+
"type": "number",
|
|
725
|
+
"required": false,
|
|
726
|
+
"default": null,
|
|
727
|
+
"description": "Longitude coordinate for the map center"
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"name": "zoom",
|
|
731
|
+
"type": "number",
|
|
732
|
+
"required": false,
|
|
733
|
+
"default": "14",
|
|
734
|
+
"description": "Map zoom level"
|
|
735
|
+
},
|
|
736
|
+
{
|
|
737
|
+
"name": "height",
|
|
738
|
+
"type": "number",
|
|
739
|
+
"required": false,
|
|
740
|
+
"default": "400",
|
|
741
|
+
"description": "Map container height in pixels"
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
"name": "provider",
|
|
745
|
+
"type": "\"google\" | \"openstreetmap\"",
|
|
746
|
+
"required": false,
|
|
747
|
+
"default": "\"openstreetmap\"",
|
|
748
|
+
"description": "Map provider to use"
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"name": "title",
|
|
752
|
+
"type": "string",
|
|
753
|
+
"required": false,
|
|
754
|
+
"default": null,
|
|
755
|
+
"description": "Optional title displayed above the map"
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"name": "borderRadius",
|
|
759
|
+
"type": "number",
|
|
760
|
+
"required": false,
|
|
761
|
+
"default": "theme",
|
|
762
|
+
"description": "Border radius override for the map container"
|
|
763
|
+
}
|
|
764
|
+
],
|
|
765
|
+
"themeTokens": [
|
|
766
|
+
"bgColor",
|
|
767
|
+
"textColor",
|
|
768
|
+
"accentColor",
|
|
769
|
+
"borderColor",
|
|
770
|
+
"fontFamily",
|
|
771
|
+
"radius",
|
|
772
|
+
"spacing"
|
|
773
|
+
],
|
|
774
|
+
"aiHints": {
|
|
775
|
+
"pageTypes": [
|
|
776
|
+
"restaurant",
|
|
777
|
+
"realestate",
|
|
778
|
+
"event",
|
|
779
|
+
"fitness",
|
|
780
|
+
"health",
|
|
781
|
+
"community",
|
|
782
|
+
"agency",
|
|
783
|
+
"landing",
|
|
784
|
+
"contact",
|
|
785
|
+
"education"
|
|
786
|
+
],
|
|
787
|
+
"placement": "body",
|
|
788
|
+
"priority": 6,
|
|
789
|
+
"sequenceOrder": 7,
|
|
790
|
+
"pairsWellWith": [
|
|
791
|
+
"forms.ContactForm",
|
|
792
|
+
"onboarding.ContactSupportBlock",
|
|
793
|
+
"content.HeadingSection"
|
|
794
|
+
],
|
|
795
|
+
"maxPerPage": 1,
|
|
796
|
+
"isContainer": false
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
]
|
|
800
|
+
}
|