@dani-builder/strapi-client 0.1.0 → 0.3.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/AGENTS.md +121 -0
- package/LICENSE +21 -0
- package/README.md +50 -0
- package/dist/api/articles.d.ts +3 -0
- package/dist/api/articles.d.ts.map +1 -1
- package/dist/api/articles.js +8 -5
- package/dist/api/articles.js.map +1 -1
- package/dist/api/authors.d.ts +2 -0
- package/dist/api/authors.d.ts.map +1 -1
- package/dist/api/authors.js +5 -2
- package/dist/api/authors.js.map +1 -1
- package/dist/api/categories.d.ts +2 -0
- package/dist/api/categories.d.ts.map +1 -1
- package/dist/api/categories.js +4 -1
- package/dist/api/categories.js.map +1 -1
- package/dist/api/faqs.d.ts +2 -0
- package/dist/api/faqs.d.ts.map +1 -1
- package/dist/api/faqs.js +4 -1
- package/dist/api/faqs.js.map +1 -1
- package/dist/api/global.js +1 -1
- package/dist/api/global.js.map +1 -1
- package/dist/api/inquiry.js +1 -1
- package/dist/api/inquiry.js.map +1 -1
- package/dist/api/navigation.js +1 -1
- package/dist/api/navigation.js.map +1 -1
- package/dist/api/pages.d.ts +9 -1
- package/dist/api/pages.d.ts.map +1 -1
- package/dist/api/pages.js +26 -9
- package/dist/api/pages.js.map +1 -1
- package/dist/api/series.d.ts +2 -0
- package/dist/api/series.d.ts.map +1 -1
- package/dist/api/series.js +5 -2
- package/dist/api/series.js.map +1 -1
- package/dist/api/site-settings.js +1 -1
- package/dist/api/site-settings.js.map +1 -1
- package/dist/api/tags.d.ts +2 -0
- package/dist/api/tags.d.ts.map +1 -1
- package/dist/api/tags.js +4 -1
- package/dist/api/tags.js.map +1 -1
- package/dist/client/create-client.d.ts +7 -3
- package/dist/client/create-client.d.ts.map +1 -1
- package/dist/client/create-client.js +13 -5
- package/dist/client/create-client.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/populate/builders.d.ts +12 -0
- package/dist/populate/builders.d.ts.map +1 -1
- package/dist/populate/builders.js +10 -0
- package/dist/populate/builders.js.map +1 -1
- package/dist/populate/core-blocks.d.ts.map +1 -1
- package/dist/populate/core-blocks.js +15 -9
- package/dist/populate/core-blocks.js.map +1 -1
- package/dist/types/components/blocks.d.ts +12 -11
- package/dist/types/components/blocks.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/shared.d.ts +14 -3
- package/dist/types/components/shared.d.ts.map +1 -1
- package/dist/types/components/shared.js +1 -1
- package/dist/types/content-types/article.d.ts +3 -1
- package/dist/types/content-types/article.d.ts.map +1 -1
- package/dist/types/content-types/article.js +1 -1
- package/dist/types/content-types/article.js.map +1 -1
- package/dist/types/content-types/author.js +1 -1
- package/dist/types/content-types/author.js.map +1 -1
- package/dist/types/content-types/category.js +1 -1
- package/dist/types/content-types/category.js.map +1 -1
- package/dist/types/content-types/faq.js +1 -1
- package/dist/types/content-types/faq.js.map +1 -1
- package/dist/types/content-types/global.js +1 -1
- package/dist/types/content-types/global.js.map +1 -1
- package/dist/types/content-types/inquiry.js +1 -1
- package/dist/types/content-types/inquiry.js.map +1 -1
- package/dist/types/content-types/navigation.js +1 -1
- package/dist/types/content-types/navigation.js.map +1 -1
- package/dist/types/content-types/page.d.ts +12 -3
- package/dist/types/content-types/page.d.ts.map +1 -1
- package/dist/types/content-types/page.js +1 -1
- package/dist/types/content-types/page.js.map +1 -1
- package/dist/types/content-types/series.js +1 -1
- package/dist/types/content-types/series.js.map +1 -1
- package/dist/types/content-types/site-settings.js +1 -1
- package/dist/types/content-types/site-settings.js.map +1 -1
- package/dist/types/content-types/tag.js +1 -1
- package/dist/types/content-types/tag.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/strapi.d.ts +10 -0
- package/dist/types/strapi.d.ts.map +1 -1
- package/docs/api-guide.md +223 -0
- package/docs/block-reference.md +194 -0
- package/docs/components.md +234 -0
- package/docs/content-types.md +184 -0
- package/docs/elements.md +50 -0
- package/package.json +31 -12
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
status: current
|
|
4
|
+
generated: true
|
|
5
|
+
generator: .claude/skills/docs-steward/scripts/gen-reference.mjs
|
|
6
|
+
sources:
|
|
7
|
+
- packages/strapi-plugin-builder/server/src/components/blocks/*.json
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- DO NOT EDIT. Run `pnpm docs:gen` after changing the schemas. -->
|
|
11
|
+
|
|
12
|
+
# Blocks
|
|
13
|
+
|
|
14
|
+
Top-level components usable in the `Page.blocks` dynamic zone.
|
|
15
|
+
Every block object must carry `__component`. Heading and subheading text
|
|
16
|
+
lives inside the nested `section` component, not at the block root.
|
|
17
|
+
|
|
18
|
+
## Quick reference
|
|
19
|
+
|
|
20
|
+
| Component | `__component` | Variants |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| Bento Grid | `blocks.bento-grid` | — |
|
|
23
|
+
| Content | `blocks.content` | `prose`, `wide`, `full-width` |
|
|
24
|
+
| CTA | `blocks.cta` | `inline-spread`, `inline-centered`, `inline-stacked`, `card-stacked`, `card-centered`, `card-horizontal` |
|
|
25
|
+
| FAQ | `blocks.faq` | — |
|
|
26
|
+
| Features | `blocks.features` | `simple-grid`, `dual-column`, `media-aside`, `media-aside-compact` |
|
|
27
|
+
| Hero | `blocks.hero` | `side-by-side`, `media-extending`, `fullscreen-media`, `stacked-media` |
|
|
28
|
+
| Highlights | `blocks.highlights` | `dual-column`, `triple-column`, `alternating` |
|
|
29
|
+
| Inquiry Form | `blocks.inquiry-form` | — |
|
|
30
|
+
| Logo Cloud | `blocks.logo-cloud` | `inline`, `grid`, `split`, `marquee` |
|
|
31
|
+
| Pricing | `blocks.pricing` | `two-column`, `three-column`, `single`, `with-comparison` |
|
|
32
|
+
| Slider | `blocks.slider` | `cover-flow`, `card-slider` |
|
|
33
|
+
| Stats | `blocks.stats` | `simple`, `card-grid`, `split` |
|
|
34
|
+
| Team | `blocks.team` | `grid`, `large-image`, `compact` |
|
|
35
|
+
| Testimonials | `blocks.testimonials` | `centered`, `side-by-side`, `card-grid`, `subtle-grid` |
|
|
36
|
+
|
|
37
|
+
## Bento Grid
|
|
38
|
+
|
|
39
|
+
`blocks.bento-grid` — Asymmetric grid layout with per-item span control
|
|
40
|
+
|
|
41
|
+
| Attribute | Type | Required | Default | Notes |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| `name` | string | — | — | — |
|
|
44
|
+
| `section` | component `elements.section` | — | — | — |
|
|
45
|
+
| `columns` | integer | — | `3` | — |
|
|
46
|
+
| `items` | component `shared.bento-item` (repeatable) | — | — | — |
|
|
47
|
+
|
|
48
|
+
## Content
|
|
49
|
+
|
|
50
|
+
`blocks.content` — Rich text content block using Strapi Blocks editor
|
|
51
|
+
|
|
52
|
+
| Attribute | Type | Required | Default | Notes |
|
|
53
|
+
|---|---|---|---|---|
|
|
54
|
+
| `section` | component `elements.section` | — | — | — |
|
|
55
|
+
| `variant` | enumeration | — | — | `prose`, `wide`, `full-width` |
|
|
56
|
+
| `body` | blocks | yes | — | — |
|
|
57
|
+
|
|
58
|
+
## CTA
|
|
59
|
+
|
|
60
|
+
`blocks.cta` — Call-to-Action block with media and action links
|
|
61
|
+
|
|
62
|
+
| Attribute | Type | Required | Default | Notes |
|
|
63
|
+
|---|---|---|---|---|
|
|
64
|
+
| `section` | component `elements.section` | — | — | — |
|
|
65
|
+
| `variant` | enumeration | — | `inline-spread` | `inline-spread`, `inline-centered`, `inline-stacked`, `card-stacked`, `card-centered`, `card-horizontal` |
|
|
66
|
+
| `image` | component `shared.image` | — | — | — |
|
|
67
|
+
| `ctaText` | text | — | — | — |
|
|
68
|
+
| `ctaLink` | component `shared.link` | — | — | — |
|
|
69
|
+
| `secondaryLink` | component `shared.link` | — | — | — |
|
|
70
|
+
|
|
71
|
+
## FAQ
|
|
72
|
+
|
|
73
|
+
`blocks.faq` — FAQ list block linked to FAQ content type via relation
|
|
74
|
+
|
|
75
|
+
| Attribute | Type | Required | Default | Notes |
|
|
76
|
+
|---|---|---|---|---|
|
|
77
|
+
| `section` | component `elements.section` | — | — | — |
|
|
78
|
+
| `items` | relation `oneToMany` → `plugin::builder.faq` | — | — | — |
|
|
79
|
+
|
|
80
|
+
## Features
|
|
81
|
+
|
|
82
|
+
`blocks.features` — Feature/service showcase with icon+text items
|
|
83
|
+
|
|
84
|
+
| Attribute | Type | Required | Default | Notes |
|
|
85
|
+
|---|---|---|---|---|
|
|
86
|
+
| `name` | string | — | — | — |
|
|
87
|
+
| `variant` | enumeration | — | — | `simple-grid`, `dual-column`, `media-aside`, `media-aside-compact` |
|
|
88
|
+
| `section` | component `elements.section` | — | — | — |
|
|
89
|
+
| `image` | component `shared.image` | — | — | — |
|
|
90
|
+
| `items` | component `shared.feature-item` (repeatable) | — | — | — |
|
|
91
|
+
|
|
92
|
+
## Hero
|
|
93
|
+
|
|
94
|
+
`blocks.hero` — Hero banner with media, CTA links, and layout variants
|
|
95
|
+
|
|
96
|
+
| Attribute | Type | Required | Default | Notes |
|
|
97
|
+
|---|---|---|---|---|
|
|
98
|
+
| `variant` | enumeration | — | — | `side-by-side`, `media-extending`, `fullscreen-media`, `stacked-media` |
|
|
99
|
+
| `section` | component `elements.section` | — | — | — |
|
|
100
|
+
| `image` | component `shared.image` | — | — | — |
|
|
101
|
+
| `ctaText` | text | — | — | — |
|
|
102
|
+
| `ctaLink` | component `shared.link` | — | — | — |
|
|
103
|
+
| `secondaryLink` | component `shared.link` | — | — | — |
|
|
104
|
+
| `headerMode` | enumeration | — | `none` | `none`, `transparent-black`, `transparent-white` |
|
|
105
|
+
|
|
106
|
+
## Highlights
|
|
107
|
+
|
|
108
|
+
`blocks.highlights` — Highlight/feature showcase with media+text items
|
|
109
|
+
|
|
110
|
+
| Attribute | Type | Required | Default | Notes |
|
|
111
|
+
|---|---|---|---|---|
|
|
112
|
+
| `name` | string | — | — | — |
|
|
113
|
+
| `variant` | enumeration | — | — | `dual-column`, `triple-column`, `alternating` |
|
|
114
|
+
| `image` | component `shared.image` | — | — | — |
|
|
115
|
+
| `section` | component `elements.section` | — | — | — |
|
|
116
|
+
| `items` | component `shared.highlight-item` (repeatable) | — | — | — |
|
|
117
|
+
|
|
118
|
+
## Inquiry Form
|
|
119
|
+
|
|
120
|
+
`blocks.inquiry-form` — Contact form block that submits to Inquiry content type
|
|
121
|
+
|
|
122
|
+
| Attribute | Type | Required | Default | Notes |
|
|
123
|
+
|---|---|---|---|---|
|
|
124
|
+
| `section` | component `elements.section` | — | — | — |
|
|
125
|
+
| `successMessage` | text | — | — | — |
|
|
126
|
+
| `errorMessage` | text | — | — | — |
|
|
127
|
+
|
|
128
|
+
## Logo Cloud
|
|
129
|
+
|
|
130
|
+
`blocks.logo-cloud` — Client/partner logo showcase block
|
|
131
|
+
|
|
132
|
+
| Attribute | Type | Required | Default | Notes |
|
|
133
|
+
|---|---|---|---|---|
|
|
134
|
+
| `name` | string | — | — | — |
|
|
135
|
+
| `variant` | enumeration | — | — | `inline`, `grid`, `split`, `marquee` |
|
|
136
|
+
| `section` | component `elements.section` | — | — | — |
|
|
137
|
+
| `items` | component `shared.logo-item` (repeatable) | — | — | — |
|
|
138
|
+
|
|
139
|
+
## Pricing
|
|
140
|
+
|
|
141
|
+
`blocks.pricing` — Pricing plans/tiers comparison block
|
|
142
|
+
|
|
143
|
+
| Attribute | Type | Required | Default | Notes |
|
|
144
|
+
|---|---|---|---|---|
|
|
145
|
+
| `name` | string | — | — | — |
|
|
146
|
+
| `variant` | enumeration | — | — | `two-column`, `three-column`, `single`, `with-comparison` |
|
|
147
|
+
| `section` | component `elements.section` | — | — | — |
|
|
148
|
+
| `items` | component `shared.pricing-tier` (repeatable) | — | — | — |
|
|
149
|
+
|
|
150
|
+
## Slider
|
|
151
|
+
|
|
152
|
+
`blocks.slider` — Slider/carousel block with media+text items
|
|
153
|
+
|
|
154
|
+
| Attribute | Type | Required | Default | Notes |
|
|
155
|
+
|---|---|---|---|---|
|
|
156
|
+
| `name` | string | — | — | — |
|
|
157
|
+
| `variant` | enumeration | — | — | `cover-flow`, `card-slider` |
|
|
158
|
+
| `section` | component `elements.section` | — | — | — |
|
|
159
|
+
| `items` | component `shared.slider-item` (repeatable) | — | — | — |
|
|
160
|
+
|
|
161
|
+
## Stats
|
|
162
|
+
|
|
163
|
+
`blocks.stats` — Key metrics/numbers showcase block
|
|
164
|
+
|
|
165
|
+
| Attribute | Type | Required | Default | Notes |
|
|
166
|
+
|---|---|---|---|---|
|
|
167
|
+
| `name` | string | — | — | — |
|
|
168
|
+
| `variant` | enumeration | — | — | `simple`, `card-grid`, `split` |
|
|
169
|
+
| `section` | component `elements.section` | — | — | — |
|
|
170
|
+
| `image` | component `shared.image` | — | — | — |
|
|
171
|
+
| `items` | component `shared.stat-item` (repeatable) | — | — | — |
|
|
172
|
+
|
|
173
|
+
## Team
|
|
174
|
+
|
|
175
|
+
`blocks.team` — Team member showcase block
|
|
176
|
+
|
|
177
|
+
| Attribute | Type | Required | Default | Notes |
|
|
178
|
+
|---|---|---|---|---|
|
|
179
|
+
| `name` | string | — | — | — |
|
|
180
|
+
| `variant` | enumeration | — | — | `grid`, `large-image`, `compact` |
|
|
181
|
+
| `section` | component `elements.section` | — | — | — |
|
|
182
|
+
| `items` | component `shared.team-member` (repeatable) | — | — | — |
|
|
183
|
+
|
|
184
|
+
## Testimonials
|
|
185
|
+
|
|
186
|
+
`blocks.testimonials` — Customer testimonials/reviews block
|
|
187
|
+
|
|
188
|
+
| Attribute | Type | Required | Default | Notes |
|
|
189
|
+
|---|---|---|---|---|
|
|
190
|
+
| `name` | string | — | — | — |
|
|
191
|
+
| `variant` | enumeration | — | — | `centered`, `side-by-side`, `card-grid`, `subtle-grid` |
|
|
192
|
+
| `section` | component `elements.section` | — | — | — |
|
|
193
|
+
| `image` | component `shared.image` | — | — | — |
|
|
194
|
+
| `items` | component `shared.testimonial-item` (repeatable) | — | — | — |
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
status: current
|
|
4
|
+
generated: true
|
|
5
|
+
generator: .claude/skills/docs-steward/scripts/gen-reference.mjs
|
|
6
|
+
sources:
|
|
7
|
+
- packages/strapi-plugin-builder/server/src/components/shared/*.json
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- DO NOT EDIT. Run `pnpm docs:gen` after changing the schemas. -->
|
|
11
|
+
|
|
12
|
+
# Shared Components
|
|
13
|
+
|
|
14
|
+
Reusable sub-components referenced by blocks and content types.
|
|
15
|
+
|
|
16
|
+
## Quick reference
|
|
17
|
+
|
|
18
|
+
| Component | `__component` | Variants |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Analytics Setting | `shared.analytics-setting` | — |
|
|
21
|
+
| Bento Item | `shared.bento-item` | — |
|
|
22
|
+
| Brand Colors | `shared.brand-colors` | — |
|
|
23
|
+
| Chatbot Setting | `shared.chatbot-setting` | — |
|
|
24
|
+
| Feature Item | `shared.feature-item` | — |
|
|
25
|
+
| Highlight Item | `shared.highlight-item` | — |
|
|
26
|
+
| Image | `shared.image` | — |
|
|
27
|
+
| Link | `shared.link` | — |
|
|
28
|
+
| Logo Item | `shared.logo-item` | — |
|
|
29
|
+
| Navigation Group | `shared.navigation-group` | — |
|
|
30
|
+
| Pricing Tier | `shared.pricing-tier` | — |
|
|
31
|
+
| SEO | `shared.seo` | — |
|
|
32
|
+
| Site Verification | `shared.site-verification` | — |
|
|
33
|
+
| Slider Item | `shared.slider-item` | — |
|
|
34
|
+
| Stat Item | `shared.stat-item` | — |
|
|
35
|
+
| Team Member | `shared.team-member` | — |
|
|
36
|
+
| Testimonial Item | `shared.testimonial-item` | — |
|
|
37
|
+
|
|
38
|
+
## Analytics Setting
|
|
39
|
+
|
|
40
|
+
`shared.analytics-setting` — Web analytics tool configuration
|
|
41
|
+
|
|
42
|
+
| Attribute | Type | Required | Default | Notes |
|
|
43
|
+
|---|---|---|---|---|
|
|
44
|
+
| `provider` | enumeration | yes | — | `google-tag-manager`, `google-analytics`, `matomo` |
|
|
45
|
+
| `trackingId` | string | yes | — | — |
|
|
46
|
+
| `customDomain` | string | — | — | — |
|
|
47
|
+
| `enabled` | boolean | — | `true` | — |
|
|
48
|
+
|
|
49
|
+
## Bento Item
|
|
50
|
+
|
|
51
|
+
`shared.bento-item` — Bento grid item with span control and optional link
|
|
52
|
+
|
|
53
|
+
| Attribute | Type | Required | Default | Notes |
|
|
54
|
+
|---|---|---|---|---|
|
|
55
|
+
| `title` | string | — | — | — |
|
|
56
|
+
| `description` | text | — | — | — |
|
|
57
|
+
| `image` | component `shared.image` | — | — | — |
|
|
58
|
+
| `icon` | customField | — | — | custom field `plugin::icon-picker.icon` |
|
|
59
|
+
| `colSpan` | integer | — | `1` | — |
|
|
60
|
+
| `rowSpan` | integer | — | `1` | — |
|
|
61
|
+
| `link` | component `shared.link` | — | — | — |
|
|
62
|
+
|
|
63
|
+
## Brand Colors
|
|
64
|
+
|
|
65
|
+
`shared.brand-colors` — Brand color overrides for the site theme
|
|
66
|
+
|
|
67
|
+
| Attribute | Type | Required | Default | Notes |
|
|
68
|
+
|---|---|---|---|---|
|
|
69
|
+
| `primary` | string | — | — | custom field `plugin::color-picker.color` |
|
|
70
|
+
| `primaryLight` | string | — | — | custom field `plugin::color-picker.color` |
|
|
71
|
+
| `cta` | string | — | — | custom field `plugin::color-picker.color` |
|
|
72
|
+
| `ctaHover` | string | — | — | custom field `plugin::color-picker.color` |
|
|
73
|
+
| `background` | string | — | — | custom field `plugin::color-picker.color` |
|
|
74
|
+
| `text` | string | — | — | custom field `plugin::color-picker.color` |
|
|
75
|
+
| `textMuted` | string | — | — | custom field `plugin::color-picker.color` |
|
|
76
|
+
|
|
77
|
+
## Chatbot Setting
|
|
78
|
+
|
|
79
|
+
`shared.chatbot-setting` — Chatbot integration configuration
|
|
80
|
+
|
|
81
|
+
| Attribute | Type | Required | Default | Notes |
|
|
82
|
+
|---|---|---|---|---|
|
|
83
|
+
| `provider` | enumeration | yes | — | `channel-talk`, `zendesk`, `intercom` |
|
|
84
|
+
| `appId` | string | yes | — | — |
|
|
85
|
+
| `key` | string | — | — | — |
|
|
86
|
+
| `secret` | string | — | — | — |
|
|
87
|
+
|
|
88
|
+
## Feature Item
|
|
89
|
+
|
|
90
|
+
`shared.feature-item` — Feature item with icon, label, description, and link
|
|
91
|
+
|
|
92
|
+
| Attribute | Type | Required | Default | Notes |
|
|
93
|
+
|---|---|---|---|---|
|
|
94
|
+
| `label` | string | — | — | — |
|
|
95
|
+
| `description` | richtext | — | — | — |
|
|
96
|
+
| `icon` | customField | — | — | custom field `plugin::icon-picker.icon` |
|
|
97
|
+
| `infoText` | string | — | — | — |
|
|
98
|
+
| `link` | component `shared.link` | — | — | — |
|
|
99
|
+
|
|
100
|
+
## Highlight Item
|
|
101
|
+
|
|
102
|
+
`shared.highlight-item` — Highlight item with required media, label, description, and link
|
|
103
|
+
|
|
104
|
+
| Attribute | Type | Required | Default | Notes |
|
|
105
|
+
|---|---|---|---|---|
|
|
106
|
+
| `label` | string | — | — | — |
|
|
107
|
+
| `description` | richtext | — | — | — |
|
|
108
|
+
| `image` | component `shared.image` | yes | — | — |
|
|
109
|
+
| `link` | component `shared.link` | — | — | — |
|
|
110
|
+
|
|
111
|
+
## Image
|
|
112
|
+
|
|
113
|
+
`shared.image` — Informational image with per-usage fit control and localized alt override
|
|
114
|
+
|
|
115
|
+
| Attribute | Type | Required | Default | Notes |
|
|
116
|
+
|---|---|---|---|---|
|
|
117
|
+
| `media` | media (single) | yes | — | allowed: images, videos |
|
|
118
|
+
| `alt` | string | — | — | — |
|
|
119
|
+
| `fit` | enumeration | — | `auto` | `auto`, `cover`, `contain` |
|
|
120
|
+
|
|
121
|
+
## Link
|
|
122
|
+
|
|
123
|
+
`shared.link` — Link with label, URL, icon, and new window option
|
|
124
|
+
|
|
125
|
+
| Attribute | Type | Required | Default | Notes |
|
|
126
|
+
|---|---|---|---|---|
|
|
127
|
+
| `label` | string | yes | — | maxLength 80 |
|
|
128
|
+
| `href` | string | yes | — | — |
|
|
129
|
+
| `newWindow` | boolean | — | `false` | — |
|
|
130
|
+
| `icon` | customField | — | — | custom field `plugin::icon-picker.icon` |
|
|
131
|
+
|
|
132
|
+
## Logo Item
|
|
133
|
+
|
|
134
|
+
`shared.logo-item` — Company/partner logo with optional link
|
|
135
|
+
|
|
136
|
+
| Attribute | Type | Required | Default | Notes |
|
|
137
|
+
|---|---|---|---|---|
|
|
138
|
+
| `logo` | media (single) | yes | — | allowed: images |
|
|
139
|
+
| `companyName` | string | — | — | — |
|
|
140
|
+
| `link` | component `shared.link` | — | — | — |
|
|
141
|
+
|
|
142
|
+
## Navigation Group
|
|
143
|
+
|
|
144
|
+
`shared.navigation-group` — Navigation group with label and child links
|
|
145
|
+
|
|
146
|
+
| Attribute | Type | Required | Default | Notes |
|
|
147
|
+
|---|---|---|---|---|
|
|
148
|
+
| `label` | string | — | — | — |
|
|
149
|
+
| `href` | string | — | — | — |
|
|
150
|
+
| `links` | component `shared.link` (repeatable) | — | — | — |
|
|
151
|
+
|
|
152
|
+
## Pricing Tier
|
|
153
|
+
|
|
154
|
+
`shared.pricing-tier` — Pricing plan with name, price, features, and CTA
|
|
155
|
+
|
|
156
|
+
| Attribute | Type | Required | Default | Notes |
|
|
157
|
+
|---|---|---|---|---|
|
|
158
|
+
| `planName` | string | yes | — | — |
|
|
159
|
+
| `price` | string | yes | — | — |
|
|
160
|
+
| `billingPeriod` | string | — | — | — |
|
|
161
|
+
| `description` | text | — | — | — |
|
|
162
|
+
| `featureList` | richtext | — | — | — |
|
|
163
|
+
| `ctaLink` | component `shared.link` | — | — | — |
|
|
164
|
+
| `highlighted` | boolean | — | `false` | — |
|
|
165
|
+
|
|
166
|
+
## SEO
|
|
167
|
+
|
|
168
|
+
`shared.seo` — SEO meta tags and structured data
|
|
169
|
+
|
|
170
|
+
| Attribute | Type | Required | Default | Notes |
|
|
171
|
+
|---|---|---|---|---|
|
|
172
|
+
| `metaTitle` | string | — | — | maxLength 120 |
|
|
173
|
+
| `metaDescription` | text | — | — | — |
|
|
174
|
+
| `ogImage` | media (single) | — | — | allowed: images |
|
|
175
|
+
| `canonicalURL` | string | — | — | — |
|
|
176
|
+
| `noindex` | boolean | — | `false` | — |
|
|
177
|
+
| `nofollow` | boolean | — | `false` | — |
|
|
178
|
+
| `structuredData` | json | — | — | — |
|
|
179
|
+
|
|
180
|
+
## Site Verification
|
|
181
|
+
|
|
182
|
+
`shared.site-verification` — Search engine site verification
|
|
183
|
+
|
|
184
|
+
| Attribute | Type | Required | Default | Notes |
|
|
185
|
+
|---|---|---|---|---|
|
|
186
|
+
| `service` | enumeration | yes | — | `google`, `bing`, `naver`, `custom` |
|
|
187
|
+
| `name` | string | — | — | — |
|
|
188
|
+
| `content` | string | yes | — | — |
|
|
189
|
+
|
|
190
|
+
## Slider Item
|
|
191
|
+
|
|
192
|
+
`shared.slider-item` — Slider carousel item with required media, label, and link
|
|
193
|
+
|
|
194
|
+
| Attribute | Type | Required | Default | Notes |
|
|
195
|
+
|---|---|---|---|---|
|
|
196
|
+
| `label` | string | — | — | — |
|
|
197
|
+
| `description` | text | — | — | — |
|
|
198
|
+
| `link` | component `shared.link` | — | — | — |
|
|
199
|
+
| `image` | component `shared.image` | yes | — | — |
|
|
200
|
+
|
|
201
|
+
## Stat Item
|
|
202
|
+
|
|
203
|
+
`shared.stat-item` — Metric item with value, label, and description
|
|
204
|
+
|
|
205
|
+
| Attribute | Type | Required | Default | Notes |
|
|
206
|
+
|---|---|---|---|---|
|
|
207
|
+
| `value` | string | yes | — | — |
|
|
208
|
+
| `label` | string | — | — | — |
|
|
209
|
+
| `description` | text | — | — | — |
|
|
210
|
+
|
|
211
|
+
## Team Member
|
|
212
|
+
|
|
213
|
+
`shared.team-member` — Team member with name, role, bio, photo, and social links
|
|
214
|
+
|
|
215
|
+
| Attribute | Type | Required | Default | Notes |
|
|
216
|
+
|---|---|---|---|---|
|
|
217
|
+
| `memberName` | string | yes | — | — |
|
|
218
|
+
| `role` | string | — | — | — |
|
|
219
|
+
| `bio` | text | — | — | — |
|
|
220
|
+
| `photo` | media (single) | — | — | allowed: images |
|
|
221
|
+
| `socialLinks` | component `shared.link` (repeatable) | — | — | — |
|
|
222
|
+
|
|
223
|
+
## Testimonial Item
|
|
224
|
+
|
|
225
|
+
`shared.testimonial-item` — Testimonial with quote, author info, and optional rating
|
|
226
|
+
|
|
227
|
+
| Attribute | Type | Required | Default | Notes |
|
|
228
|
+
|---|---|---|---|---|
|
|
229
|
+
| `quote` | text | yes | — | — |
|
|
230
|
+
| `authorName` | string | — | — | — |
|
|
231
|
+
| `authorRole` | string | — | — | — |
|
|
232
|
+
| `avatar` | media (single) | — | — | allowed: images |
|
|
233
|
+
| `logo` | media (single) | — | — | allowed: images |
|
|
234
|
+
| `rating` | integer | — | — | — |
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
status: current
|
|
4
|
+
generated: true
|
|
5
|
+
generator: .claude/skills/docs-steward/scripts/gen-reference.mjs
|
|
6
|
+
sources:
|
|
7
|
+
- packages/strapi-plugin-builder/server/src/content-types/*/schema.json
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- DO NOT EDIT. Run `pnpm docs:gen` after changing the schemas. -->
|
|
11
|
+
|
|
12
|
+
# Content Types
|
|
13
|
+
|
|
14
|
+
Every content type provided by `@dani-builder/strapi-plugin-builder`.
|
|
15
|
+
REST endpoints use `singularName` for single types and `pluralName` for collection types.
|
|
16
|
+
Series' `pluralName` must differ from its `singularName`, hence `/api/builder/all-series`.
|
|
17
|
+
All routes are mounted under `/api/builder/` and use plugin-owned UIDs.
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
| Content Type | Kind | UID | Endpoint | i18n | draftAndPublish |
|
|
22
|
+
|---|---|---|---|---|---|
|
|
23
|
+
| Article | collection | `plugin::builder.article` | `api/builder/articles` | yes | yes |
|
|
24
|
+
| Author | collection | `plugin::builder.author` | `api/builder/authors` | — | — |
|
|
25
|
+
| Category | collection | `plugin::builder.category` | `api/builder/categories` | yes | — |
|
|
26
|
+
| FAQ | collection | `plugin::builder.faq` | `api/builder/faqs` | yes | yes |
|
|
27
|
+
| Global | single | `plugin::builder.global` | `api/builder/global` | yes | yes |
|
|
28
|
+
| Inquiry | collection | `plugin::builder.inquiry` | `api/builder/inquiries` | — | — |
|
|
29
|
+
| Navigation | single | `plugin::builder.navigation` | `api/builder/navigation` | yes | yes |
|
|
30
|
+
| Page | collection | `plugin::builder.page` | `api/builder/pages` | yes | yes |
|
|
31
|
+
| Series | collection | `plugin::builder.series` | `api/builder/all-series` | yes | — |
|
|
32
|
+
| Site Settings | single | `plugin::builder.site-setting` | `api/builder/site-setting` | — | — |
|
|
33
|
+
| Tag | collection | `plugin::builder.tag` | `api/builder/tags` | yes | — |
|
|
34
|
+
|
|
35
|
+
## Article
|
|
36
|
+
|
|
37
|
+
Blog/news post with rich text body and relations
|
|
38
|
+
|
|
39
|
+
| Attribute | Type | Required | Default | Notes |
|
|
40
|
+
|---|---|---|---|---|
|
|
41
|
+
| `title` | string | yes | — | — |
|
|
42
|
+
| `slug` | uid ← `title` | yes | — | — |
|
|
43
|
+
| `body` | blocks | yes | — | — |
|
|
44
|
+
| `summary` | text | — | — | — |
|
|
45
|
+
| `excerpt` | text | — | — | — |
|
|
46
|
+
| `cover` | media (single) | — | — | allowed: images |
|
|
47
|
+
| `gallery` | media (multiple) | — | — | allowed: images |
|
|
48
|
+
| `reading_time` | integer | — | `5` | — |
|
|
49
|
+
| `firstPublishedAt` | datetime | — | — | — |
|
|
50
|
+
| `seo` | component `shared.seo` | — | — | — |
|
|
51
|
+
| `categories` | relation `manyToMany` → `plugin::builder.category` | — | — | — |
|
|
52
|
+
| `tags` | relation `manyToMany` → `plugin::builder.tag` | — | — | — |
|
|
53
|
+
| `author` | relation `manyToOne` → `plugin::builder.author` | — | — | — |
|
|
54
|
+
| `series` | relation `manyToOne` → `plugin::builder.series` | — | — | — |
|
|
55
|
+
| `series_order` | integer | — | `1` | — |
|
|
56
|
+
| `related_posts` | relation `manyToMany` → `plugin::builder.article` | — | — | — |
|
|
57
|
+
|
|
58
|
+
## Author
|
|
59
|
+
|
|
60
|
+
Article author profile
|
|
61
|
+
|
|
62
|
+
| Attribute | Type | Required | Default | Notes |
|
|
63
|
+
|---|---|---|---|---|
|
|
64
|
+
| `name` | string | yes | — | — |
|
|
65
|
+
| `slug` | uid ← `name` | yes | — | — |
|
|
66
|
+
| `role` | string | — | — | — |
|
|
67
|
+
| `bio` | richtext | — | — | — |
|
|
68
|
+
| `avatar` | media (single) | — | — | allowed: images |
|
|
69
|
+
| `email` | email | — | — | — |
|
|
70
|
+
| `articles` | relation `oneToMany` → `plugin::builder.article` | — | — | — |
|
|
71
|
+
|
|
72
|
+
## Category
|
|
73
|
+
|
|
74
|
+
Unified category for articles and FAQs
|
|
75
|
+
|
|
76
|
+
| Attribute | Type | Required | Default | Notes |
|
|
77
|
+
|---|---|---|---|---|
|
|
78
|
+
| `name` | string | yes | — | — |
|
|
79
|
+
| `slug` | uid ← `name` | yes | — | — |
|
|
80
|
+
| `description` | text | — | — | — |
|
|
81
|
+
| `sortOrder` | integer | — | — | — |
|
|
82
|
+
| `articles` | relation `manyToMany` → `plugin::builder.article` | — | — | — |
|
|
83
|
+
|
|
84
|
+
## FAQ
|
|
85
|
+
|
|
86
|
+
Frequently asked question entry
|
|
87
|
+
|
|
88
|
+
| Attribute | Type | Required | Default | Notes |
|
|
89
|
+
|---|---|---|---|---|
|
|
90
|
+
| `question` | string | — | — | maxLength 255 |
|
|
91
|
+
| `answer` | blocks | — | — | — |
|
|
92
|
+
| `sortOrder` | integer | — | — | — |
|
|
93
|
+
| `category` | relation `oneToOne` → `plugin::builder.category` | — | — | — |
|
|
94
|
+
|
|
95
|
+
## Global
|
|
96
|
+
|
|
97
|
+
Site-wide content, theme settings, footer, and common blocks
|
|
98
|
+
|
|
99
|
+
| Attribute | Type | Required | Default | Notes |
|
|
100
|
+
|---|---|---|---|---|
|
|
101
|
+
| `sitename` | string | yes | — | — |
|
|
102
|
+
| `seo` | component `shared.seo` | — | — | — |
|
|
103
|
+
| `home` | relation `oneToOne` → `plugin::builder.page` | — | — | — |
|
|
104
|
+
| `footer` | component `elements.footer` | — | — | — |
|
|
105
|
+
| `siteWideBlocks` | dynamiczone | — | — | — |
|
|
106
|
+
| `darkModeEnabled` | boolean | — | `false` | — |
|
|
107
|
+
| `defaultTheme` | enumeration | — | — | `light`, `dark` |
|
|
108
|
+
| `favicon` | media (single) | — | — | allowed: images |
|
|
109
|
+
|
|
110
|
+
**`siteWideBlocks` accepts:** `blocks.slider`, `blocks.inquiry-form`, `blocks.hero`, `blocks.features`
|
|
111
|
+
|
|
112
|
+
## Inquiry
|
|
113
|
+
|
|
114
|
+
Contact form submission data
|
|
115
|
+
|
|
116
|
+
| Attribute | Type | Required | Default | Notes |
|
|
117
|
+
|---|---|---|---|---|
|
|
118
|
+
| `name` | string | yes | — | maxLength 120 |
|
|
119
|
+
| `email` | email | — | — | maxLength 254 |
|
|
120
|
+
| `phone` | string | — | — | maxLength 40 |
|
|
121
|
+
| `subject` | string | — | — | maxLength 200 |
|
|
122
|
+
| `message` | text | — | — | maxLength 5000 |
|
|
123
|
+
|
|
124
|
+
## Navigation
|
|
125
|
+
|
|
126
|
+
Global navigation with logo, menu groups, and CTA links
|
|
127
|
+
|
|
128
|
+
| Attribute | Type | Required | Default | Notes |
|
|
129
|
+
|---|---|---|---|---|
|
|
130
|
+
| `mainLogo` | media (single) | — | — | allowed: images |
|
|
131
|
+
| `darkLogo` | media (single) | — | — | allowed: images |
|
|
132
|
+
| `globalNavigation` | component `shared.navigation-group` (repeatable) | — | — | — |
|
|
133
|
+
| `primaryLink` | component `shared.link` | — | — | — |
|
|
134
|
+
| `secondaryLink` | component `shared.link` | — | — | — |
|
|
135
|
+
| `align` | enumeration | — | `left` | `left`, `center`, `right` |
|
|
136
|
+
|
|
137
|
+
## Page
|
|
138
|
+
|
|
139
|
+
Website page with dynamic zone block-based layout
|
|
140
|
+
|
|
141
|
+
| Attribute | Type | Required | Default | Notes |
|
|
142
|
+
|---|---|---|---|---|
|
|
143
|
+
| `title` | string | yes | — | — |
|
|
144
|
+
| `slug` | uid ← `title` | yes | — | — |
|
|
145
|
+
| `seo` | component `shared.seo` | — | — | — |
|
|
146
|
+
| `blocks` | dynamiczone | — | — | — |
|
|
147
|
+
| `headerMode` | enumeration | — | `offset` | `overlay`, `offset` |
|
|
148
|
+
|
|
149
|
+
**`blocks` accepts:** `elements.section`, `blocks.hero`, `blocks.features`, `blocks.cta`, `blocks.slider`, `blocks.inquiry-form`, `blocks.faq`, `blocks.highlights`, `blocks.bento-grid`, `blocks.testimonials`, `blocks.logo-cloud`, `blocks.stats`, `blocks.pricing`, `blocks.content`, `blocks.team`
|
|
150
|
+
|
|
151
|
+
## Series
|
|
152
|
+
|
|
153
|
+
Article series/serial publication
|
|
154
|
+
|
|
155
|
+
| Attribute | Type | Required | Default | Notes |
|
|
156
|
+
|---|---|---|---|---|
|
|
157
|
+
| `name` | string | yes | — | — |
|
|
158
|
+
| `slug` | uid ← `name` | yes | — | — |
|
|
159
|
+
| `description` | text | — | — | — |
|
|
160
|
+
| `cover` | media (single) | — | — | allowed: images |
|
|
161
|
+
| `articles` | relation `oneToMany` → `plugin::builder.article` | — | — | — |
|
|
162
|
+
|
|
163
|
+
## Site Settings
|
|
164
|
+
|
|
165
|
+
Operational settings for analytics, chatbot, and site verification
|
|
166
|
+
|
|
167
|
+
| Attribute | Type | Required | Default | Notes |
|
|
168
|
+
|---|---|---|---|---|
|
|
169
|
+
| `analyticsSettings` | component `shared.analytics-setting` (repeatable) | — | — | — |
|
|
170
|
+
| `chatbot` | component `shared.chatbot-setting` | — | — | — |
|
|
171
|
+
| `siteVerifications` | component `shared.site-verification` (repeatable) | — | — | — |
|
|
172
|
+
| `brandColors` | component `shared.brand-colors` | — | — | — |
|
|
173
|
+
|
|
174
|
+
## Tag
|
|
175
|
+
|
|
176
|
+
Article tag with optional color
|
|
177
|
+
|
|
178
|
+
| Attribute | Type | Required | Default | Notes |
|
|
179
|
+
|---|---|---|---|---|
|
|
180
|
+
| `name` | string | yes | — | — |
|
|
181
|
+
| `slug` | uid ← `name` | yes | — | — |
|
|
182
|
+
| `color` | customField | — | — | custom field `plugin::color-picker.color` |
|
|
183
|
+
| `description` | text | — | — | — |
|
|
184
|
+
| `articles` | relation `manyToMany` → `plugin::builder.article` | — | — | — |
|
package/docs/elements.md
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: reference
|
|
3
|
+
status: current
|
|
4
|
+
generated: true
|
|
5
|
+
generator: .claude/skills/docs-steward/scripts/gen-reference.mjs
|
|
6
|
+
sources:
|
|
7
|
+
- packages/strapi-plugin-builder/server/src/components/elements/*.json
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<!-- DO NOT EDIT. Run `pnpm docs:gen` after changing the schemas. -->
|
|
11
|
+
|
|
12
|
+
# Element Components
|
|
13
|
+
|
|
14
|
+
Structural wrappers. `elements.section` is the universal theming wrapper and is
|
|
15
|
+
kept flat (no sub-components) so the API does not require extra populate depth.
|
|
16
|
+
|
|
17
|
+
## Quick reference
|
|
18
|
+
|
|
19
|
+
| Component | `__component` | Variants |
|
|
20
|
+
|---|---|---|
|
|
21
|
+
| Footer | `elements.footer` | — |
|
|
22
|
+
| Section | `elements.section` | — |
|
|
23
|
+
|
|
24
|
+
## Footer
|
|
25
|
+
|
|
26
|
+
`elements.footer` — Footer layout with organization info, links, and sitemap
|
|
27
|
+
|
|
28
|
+
| Attribute | Type | Required | Default | Notes |
|
|
29
|
+
|---|---|---|---|---|
|
|
30
|
+
| `organization` | string | — | — | — |
|
|
31
|
+
| `businessInfo` | text | — | — | — |
|
|
32
|
+
| `socialLinks` | component `shared.link` (repeatable) | — | — | — |
|
|
33
|
+
| `otherLinks` | component `shared.link` (repeatable) | — | — | — |
|
|
34
|
+
| `sitemap` | component `shared.navigation-group` (repeatable) | — | — | — |
|
|
35
|
+
| `logo` | media (single) | — | — | allowed: images |
|
|
36
|
+
|
|
37
|
+
## Section
|
|
38
|
+
|
|
39
|
+
`elements.section` — Section wrapper with heading, theme, and background
|
|
40
|
+
|
|
41
|
+
| Attribute | Type | Required | Default | Notes |
|
|
42
|
+
|---|---|---|---|---|
|
|
43
|
+
| `heading` | text | — | — | — |
|
|
44
|
+
| `subheading` | text | — | — | — |
|
|
45
|
+
| `kickerText` | string | — | — | — |
|
|
46
|
+
| `anchorId` | string | — | — | — |
|
|
47
|
+
| `headerAlign` | enumeration | — | — | `auto`, `left`, `center`, `right` |
|
|
48
|
+
| `theme` | enumeration | — | `default` | `default`, `light`, `dark`, `accent`, `muted`, `contrast` |
|
|
49
|
+
| `backgroundImage` | media (single) | — | — | allowed: images |
|
|
50
|
+
| `backgroundImageOpacity` | decimal | — | — | — |
|